<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>" Shutup. "</title>
	<atom:link href="http://tremblefrog.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://tremblefrog.org/blog</link>
	<description>thoughts in silence.</description>
	<pubDate>Thu, 20 May 2010 06:27:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Revive &amp; Death.</title>
		<link>http://tremblefrog.org/blog/2010/05/20/revive-and-death/</link>
		<comments>http://tremblefrog.org/blog/2010/05/20/revive-and-death/#comments</comments>
		<pubDate>Thu, 20 May 2010 06:23:07 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Gossip]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=672</guid>
		<description><![CDATA[两周前接到小六电话, 说我的域名需要备案.
还在琢磨着买VPS迁移, 209就以一种琢磨不透的方式挂掉了.
把209从机柜上拖下来, 打开机箱, 拆下来电源.
尽管事后我才想起, 当天测电压输出的时候, 竟然愚蠢的没有短接4脚和5脚, 但总归事实是这块电源再也无法点亮209的主板了.
于是207被短暂的停止工作, 剥皮掏内脏, 24pin接口被插到209上, 以测试这台积满了灰尘的白色1U服务器, 是否已经彻底的死掉了.
除了一个主板上看起来微微有些凸起的电容不让人怎么放心外, 总归207的电源还是成功的让209启动起来, 通过了自检.
接着的问题, 就是一个经典的, &#8220;我们图省事买了一台高度定制化和充满了非标准化接口的设备, 现在这玩意儿坏了, 我们怎么办&#8221;的困境. 现在我们有一个挂掉的OEM 1U电源, 只有一个24pin的接口, 和一个8pin, 给SCSI板供电的接口.
万能的淘宝上貌似找不到这样的电源. 偶尔瞥见有的电源带8pin接口输出, 都无一例外是+12v给CPU供电的.
于是我和万能的科学帝Aw讨论了很久,如何改造一个标准电源的问题.
山寨如电工胶布把剪下来的8pin头和砍头的两个IDE头拼接的方案,到最后的,转换头的方案.
然后我们手里就有了,嗯,8pin和IDE头子的塑料件,导线,和金属接头.
接下来是焊接和拼装工作,直到出现了一个看起来有些诡异的转接头.
再接下来,209被成功的点亮.一堆臃肿的电源线故被鼓囊囊地塞进狭小的机箱,新电源狭长的尺寸使得它没法像OEM电源那样被固定,甚至它使得机箱壳子都没法合拢&#8212;&#8212;不过, 让这台轰鸣的机器重新复工, 又还能奢求什么呢.
关于209重新复活的故事,我最喜欢的部分,就是这个转接头的地线.
该死的,那天我们竟然没有找到愿意开零卖给我们黑线的奸商.
于是,四根粗硕的紫线,让这个转接头,充满了山寨的色彩.
当209重新点亮的那一刻,
我满脑子的思绪立刻回到了两周前.
因为莫名其妙的被死亡而不了了之的备案和blog迁移的事情, 又变得现实起来.
所以,最终,又回到了这个博客死亡的话题上了.
]]></description>
			<content:encoded><![CDATA[<p>两周前接到小六电话, 说我的域名需要备案.<br />
还在琢磨着买VPS迁移, 209就以一种琢磨不透的方式挂掉了.</p>
<p>把209从机柜上拖下来, 打开机箱, 拆下来电源.<br />
尽管事后我才想起, 当天测电压输出的时候, 竟然愚蠢的没有短接4脚和5脚, 但总归事实是这块电源再也无法点亮209的主板了.<br />
于是207被短暂的停止工作, 剥皮掏内脏, 24pin接口被插到209上, 以测试这台积满了灰尘的白色1U服务器, 是否已经彻底的死掉了.</p>
<p>除了一个主板上看起来微微有些凸起的电容不让人怎么放心外, 总归207的电源还是成功的让209启动起来, 通过了自检.<br />
接着的问题, 就是一个经典的, &#8220;我们图省事买了一台高度定制化和充满了非标准化接口的设备, 现在这玩意儿坏了, 我们怎么办&#8221;的困境. 现在我们有一个挂掉的OEM 1U电源, 只有一个24pin的接口, 和一个8pin, 给SCSI板供电的接口.</p>
<p>万能的淘宝上貌似找不到这样的电源. 偶尔瞥见有的电源带8pin接口输出, 都无一例外是+12v给CPU供电的.<br />
于是我和万能的科学帝Aw讨论了很久,如何改造一个标准电源的问题.<br />
山寨如电工胶布把剪下来的8pin头和砍头的两个IDE头拼接的方案,到最后的,转换头的方案.</p>
<p>然后我们手里就有了,嗯,8pin和IDE头子的塑料件,导线,和金属接头.<br />
接下来是焊接和拼装工作,直到出现了一个看起来有些诡异的转接头.<br />
再接下来,209被成功的点亮.一堆臃肿的电源线故被鼓囊囊地塞进狭小的机箱,新电源狭长的尺寸使得它没法像OEM电源那样被固定,甚至它使得机箱壳子都没法合拢&#8212;&#8212;不过, 让这台轰鸣的机器重新复工, 又还能奢求什么呢.</p>
<p>关于209重新复活的故事,我最喜欢的部分,就是这个转接头的地线.<br />
该死的,那天我们竟然没有找到愿意开零卖给我们黑线的奸商.<br />
于是,四根粗硕的紫线,让这个转接头,充满了山寨的色彩.</p>
<p>当209重新点亮的那一刻,<br />
我满脑子的思绪立刻回到了两周前.<br />
因为莫名其妙的被死亡而不了了之的备案和blog迁移的事情, 又变得现实起来.</p>
<p>所以,最终,又回到了这个博客死亡的话题上了.</p>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2010/05/20/revive-and-death/feed/</wfw:commentRss>
		</item>
		<item>
		<title>该换雨刷器了, 该换&#8230;.</title>
		<link>http://tremblefrog.org/blog/2010/03/14/time_to_change_something/</link>
		<comments>http://tremblefrog.org/blog/2010/03/14/time_to_change_something/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 14:58:27 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Gossip]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=663</guid>
		<description><![CDATA[大雨敲的车窗满是光影和节律, 雨刮器嗞嗞刮过, 留下一道让人眩晕密布的轨迹.
从12月27日不眠的夜晚, 到3月13日, 待着日出, 把早餐小心翼翼的放在盘子里的清晨,
开过了1428公里, 假期和暖冬, 伴着不规律的睡眠, 晚餐, 浑浑噩噩的思考.
有一只黄色长毛的猫, 游荡在这个寂静的公寓里.
有一些泛蓝泛黄的灯, 开开关关, 忘了时间的点亮, 熄灭.
有一次次的带着寒意日出的入眠.
有狼藉的厨房, 随处摆放的杯盘, 琐碎的冰箱.
带着异样的期盼, 对未知的惶恐, 对寂寞的习惯过完整个寒假,
偶尔走在熙攘的从学校宿舍到学校的小路上, 惊讶的感到陌生.
世界在雨滴和刮花的窗玻璃中模糊, 只剩下些许的轮廓和大片的色彩.
几丝寒风中清冷的黄昏, 不知道重复了多少次相同的一天的场景.
守着蓝色墙壁的卧室, 开开关关的灯,
哼着歌曲的音箱, 惨白的屏幕, 咕噜咕噜的鱼缸, 两面看着头发长了又长, 张牙舞爪的镜子.
一只悠闲的猫, 总是在黑夜里感到不安, 一路点亮灯泡, 整夜忘了关掉的我.
有的时候, 我真的很恨孤单.
自言自语先生你好, 该换雨刮器了.
你的世界在这个雨水开始降临的季节里, 总会时不时的这样, 变得一切模糊.
于是你就迷失在某个城市的角落里.
关掉雨刮器, 滴滴答答, 直到红灯变绿, 你的生活开始继续.
自言自语先生你好, 很感谢你每天都陪我聊天.
还有, 我们的面包吃完了.
]]></description>
			<content:encoded><![CDATA[<p>大雨敲的车窗满是光影和节律, 雨刮器嗞嗞刮过, 留下一道让人眩晕密布的轨迹.</p>
<p>从12月27日不眠的夜晚, 到3月13日, 待着日出, 把早餐小心翼翼的放在盘子里的清晨,<br />
开过了1428公里, 假期和暖冬, 伴着不规律的睡眠, 晚餐, 浑浑噩噩的思考.</p>
<p>有一只黄色长毛的猫, 游荡在这个寂静的公寓里.<br />
有一些泛蓝泛黄的灯, 开开关关, 忘了时间的点亮, 熄灭.<br />
有一次次的带着寒意日出的入眠.<br />
有狼藉的厨房, 随处摆放的杯盘, 琐碎的冰箱.</p>
<p>带着异样的期盼, 对未知的惶恐, 对寂寞的习惯过完整个寒假,<br />
偶尔走在熙攘的从学校宿舍到学校的小路上, 惊讶的感到陌生.</p>
<p>世界在雨滴和刮花的窗玻璃中模糊, 只剩下些许的轮廓和大片的色彩.<br />
几丝寒风中清冷的黄昏, 不知道重复了多少次相同的一天的场景.</p>
<p>守着蓝色墙壁的卧室, 开开关关的灯,<br />
哼着歌曲的音箱, 惨白的屏幕, 咕噜咕噜的鱼缸, 两面看着头发长了又长, 张牙舞爪的镜子.<br />
一只悠闲的猫, 总是在黑夜里感到不安, 一路点亮灯泡, 整夜忘了关掉的我.</p>
<p>有的时候, 我真的很恨孤单.<br />
自言自语先生你好, 该换雨刮器了.<br />
你的世界在这个雨水开始降临的季节里, 总会时不时的这样, 变得一切模糊.<br />
于是你就迷失在某个城市的角落里.<br />
关掉雨刮器, 滴滴答答, 直到红灯变绿, 你的生活开始继续.</p>
<p>自言自语先生你好, 很感谢你每天都陪我聊天.<br />
还有, 我们的面包吃完了.</p>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2010/03/14/time_to_change_something/feed/</wfw:commentRss>
		</item>
		<item>
		<title>实现Github的代码仓库权限控制.</title>
		<link>http://tremblefrog.org/blog/2010/01/30/a_repository_permission_control_approach_like_github/</link>
		<comments>http://tremblefrog.org/blog/2010/01/30/a_repository_permission_control_approach_like_github/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 13:24:09 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Program]]></category>

		<category><![CDATA[Tech]]></category>

		<category><![CDATA[git]]></category>

		<category><![CDATA[github]]></category>

		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=655</guid>
		<description><![CDATA[Github这个social coding的代码托管网站风骚得总有让人push, 攒蓝条的冲动.
以上是题外话.
最近回头去, 把以前断断续续没写完的Project gitar(web端的多用户仓库管理界面)继续拾起来开发,
也遇到了些问题: 比如, 如何实现github那样的, 对用户的公共仓库进行权限控制,
今天仔细翻了翻sshd和git的文档, 终于找到了一个解决方法.
[1] 修改sshd_config, 将PermitUserEnvironment设置为yes, 以保证能够在authorized_keys文件中, 对环境变量进行设置.
[2] 对于每个用户提交的RSA公钥, 在其
ssh-rsa AA&#8230;.== foo@bar
的前面, 加上
environment=&#8221;GITAR_USER=username&#8221;
这样用户通过了公钥认证后, 当前的session的环境变量中, 即保存了用户的gitar用户名.
[3] 使用git hooks, 匹配环境变量 $GIT_DIR 路径中所包含的用户名信息, 和$GITAR_USER 中的当前用户名,
用户名不匹配时, 即通过产生不为0的exit code, 终止远端的push操作.
[4] 当然Github中还可以添加collaborators, 也可以对特定仓库添加public keys, 可以通过扩充用户session的环境变量来实现目的.
或者, 也可以使用shell脚本调用一个python脚本, 将 $GITAR_USER 的值与数据库中的collaborators进行比对.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.org">Github</a>这个social coding的代码托管网站风骚得总有让人push, 攒蓝条的冲动.<br />
以上是题外话.</p>
<p>最近回头去, 把以前断断续续没写完的Project gitar(web端的多用户仓库管理界面)继续拾起来开发,<br />
也遇到了些问题: 比如, 如何实现github那样的, 对用户的公共仓库进行权限控制,<br />
今天仔细翻了翻sshd和git的文档, 终于找到了一个解决方法.</p>
<p>[1] 修改sshd_config, 将PermitUserEnvironment设置为yes, 以保证能够在authorized_keys文件中, 对环境变量进行设置.</p>
<p>[2] 对于每个用户提交的RSA公钥, 在其</p>
<blockquote><p><em>ssh-rsa AA&#8230;.== foo@bar</em></p></blockquote>
<p>的前面, 加上</p>
<blockquote><p>environment=&#8221;GITAR_USER=username&#8221;</p></blockquote>
<p>这样用户通过了公钥认证后, 当前的session的环境变量中, 即保存了用户的gitar用户名.</p>
<p>[3] 使用git hooks, 匹配环境变量 <em>$GIT_DIR </em>路径中所包含的用户名信息, 和<em>$GITAR_USER </em>中的当前用户名,<br />
用户名不匹配时, 即通过产生不为0的exit code, 终止远端的push操作.</p>
<p>[4] 当然Github中还可以添加collaborators, 也可以对特定仓库添加public keys, 可以通过扩充用户session的环境变量来实现目的.<br />
或者, 也可以使用shell脚本调用一个python脚本, 将 <em>$GITAR_USER </em>的值与数据库中的collaborators进行比对.</p>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2010/01/30/a_repository_permission_control_approach_like_github/feed/</wfw:commentRss>
		</item>
		<item>
		<title>X-Accel-Redirect的一点教训.</title>
		<link>http://tremblefrog.org/blog/2010/01/28/a_lesson_on_using_x-accel_redirect/</link>
		<comments>http://tremblefrog.org/blog/2010/01/28/a_lesson_on_using_x-accel_redirect/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 16:10:06 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Program]]></category>

		<category><![CDATA[nginx]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[wpmu]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=651</guid>
		<description><![CDATA[栋力博客使用的是wpmu, 不过版本比较低了, 因此wp-content/blogs.php中还没有用X-Sendfile或者X-Accel-Redirect头来处理静态文件的代码.
于是乎, 很久以前做了一个基于nginx和X-Accel-Redirect的hack,  不过今天bluef提醒我说静态文件的Content-Type有问题,
回头去看了下NginxXSendfile模块的文档, 才发现里面提到:
You should also know that the following headers aren&#8217;t modified by nginx:
Content-Type
Content-Disposition
Accept-Ranges
Set-Cookie
Cache-Control
Expires
于是把wpmu原来的处理mimetype的函数加了回去.
当然, wpmu 2.9.1.1的这个blogs.php已经很完善了, 可以直接通过配置, 支持X-Sendfile, X-Accel-Redirect头的同时, 也有了较好的缓存控制.
改天有空可以考虑把栋力博客迁移到新版本上去, 最担心的还是栋力博客启用的大量自定义插件的兼容性问题.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.dormforce.net">栋力博客</a>使用的是<a href="http://mu.wordpress.org/">wpmu</a>, 不过版本比较低了, 因此wp-content/blogs.php中还没有用X-Sendfile或者X-Accel-Redirect头来处理静态文件的代码.<br />
于是乎, 很久以前做了一个<a href="http://blog.dormforce.net/killkeeper/2009/04/03/a_hack_on_wpmu_based_on_nginx_to_leave_static_files_for_nginx/">基于nginx和X-Accel-Redirect的hack</a>,  不过今天<a href="http://bluef.org">bluef</a>提醒我说静态文件的Content-Type有问题,<br />
回头去看了下<a href="http://wiki.nginx.org/NginxXSendfile">NginxXSendfile模块的文档</a>, 才发现里面提到:</p>
<p>You should also know that the following headers aren&#8217;t modified by nginx:</p>
<blockquote><p>Content-Type<br />
Content-Disposition<br />
Accept-Ranges<br />
Set-Cookie<br />
Cache-Control<br />
Expires</p></blockquote>
<p>于是把wpmu原来的处理mimetype的函数加了回去.</p>
<p>当然, wpmu 2.9.1.1的这个blogs.php已经很完善了, 可以直接通过配置, 支持X-Sendfile, X-Accel-Redirect头的同时, 也有了较好的缓存控制.<br />
改天有空可以考虑把栋力博客迁移到新版本上去, 最担心的还是栋力博客启用的大量自定义插件的兼容性问题.</p>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2010/01/28/a_lesson_on_using_x-accel_redirect/feed/</wfw:commentRss>
		</item>
		<item>
		<title>土鳖国真是个自卑的畸形国家.</title>
		<link>http://tremblefrog.org/blog/2010/01/23/a_country_with_inferiority/</link>
		<comments>http://tremblefrog.org/blog/2010/01/23/a_country_with_inferiority/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 13:54:59 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Gossip]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=649</guid>
		<description><![CDATA[中国互联网是开放的，中国也是互联网发展最活跃的国家，到去年底，中国网民达3.84亿，网站达368万个，博客1.8亿。中国宪法保护公民的言论自由，推动互联网的发展是我们的一贯政策。中国有自己的国情和文化传统，中国对互联网坚持依法管理，符合世界通行做法。
【该评论已关闭】
]]></description>
			<content:encoded><![CDATA[<blockquote><p>中国互联网是开放的，中国也是互联网发展最活跃的国家，到去年底，中国网民达3.84亿，网站达368万个，博客1.8亿。中国宪法保护公民的言论自由，推动互联网的发展是我们的一贯政策。中国有自己的国情和文化传统，中国对互联网坚持依法管理，符合世界通行做法。</p></blockquote>
<p><strong>【该评论已关闭】</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2010/01/23/a_country_with_inferiority/feed/</wfw:commentRss>
		</item>
		<item>
		<title>公交路线&#8211;&gt;KML</title>
		<link>http://tremblefrog.org/blog/2010/01/12/bus_lane_to_kml/</link>
		<comments>http://tremblefrog.org/blog/2010/01/12/bus_lane_to_kml/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 14:29:06 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Program]]></category>

		<category><![CDATA[GIS]]></category>

		<category><![CDATA[Google Maps]]></category>

		<category><![CDATA[KML]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=641</guid>
		<description><![CDATA[下午坐82路回家, 看到一站&#8221;新南门&#8221;, 但是实在难以揣测这个站点是在府南河的哪一头, 为了避免少走弯路, 提前在滨江路下车了.
车还在浆洗街的时候, 摸出手机, 打开Google Maps看了看, 最后发现无法显示具体的公交线路图, 作罢.
回家后有点无聊, 就动手自己写了一个.
这个API的一个示例: http://tremblefrog.org/bus.php?lane=56
56是公交线路编号, 嗯, 这个URL里面没有城市.
设计得比较山寨, 只能支持成都的公交查询.
打算明天扩充一下功能, 顺便加一个URL Rewrite.
关于这个API怎么用:
你可以直接在(手机)浏览器中访问这个地址, 即会得到一个生成好的KML文件.
与KML关联的程序(Google Maps, Google Earth)可以直接打开.
你也可以在手机版的Google Maps中使用&#8221;搜索&#8221;功能, 搜索这个URL, 不一会儿就会看到结果显示了.
已知的bug: 地图漂移. TG的这个政策太恶心了.
你要知道, 我做这个web service的初衷是因为不知道公交站具体位置在哪里,
现在漂移了一条街, 这个破玩意儿还有毛用.
*UPDATE*
感谢来自dongmeng110的研究, 现在已经加入了偏移补偿, 可以正常显示了 
(maps.google.com的卫星图显示因为本身没有偏移, 补偿后反而会有偏移 -.-) 

关于实现:
其实是hack的8684.cn和mapbar的API.
囧.
]]></description>
			<content:encoded><![CDATA[<div id="attachment_642" class="wp-caption alignnone" style="width: 330px"><a href="http://tremblefrog.org/blog/wp-content/uploads/2010/01/screen001.png"><img class="size-full wp-image-642" title="KML displayed in Google Maps Mobile" src="http://tremblefrog.org/blog/wp-content/uploads/2010/01/screen001.png" alt="如图, TG的漂移立功了..." width="320" height="320" /></a><p class="wp-caption-text">如图, TG的漂移立功了...</p></div>
<p>下午坐82路回家, 看到一站&#8221;新南门&#8221;, 但是实在难以揣测这个站点是在府南河的哪一头, 为了避免少走弯路, 提前在滨江路下车了.<br />
车还在浆洗街的时候, 摸出手机, 打开Google Maps看了看, 最后发现无法显示具体的公交线路图, 作罢.<br />
回家后有点无聊, 就动手自己写了一个.</p>
<p>这个API的一个示例: <a href="http://tremblefrog.org/bus.php?lane=56">http://tremblefrog.org/bus.php?lane=56</a></p>
<p>56是公交线路编号, 嗯, 这个URL里面没有城市.<br />
设计得比较山寨, 只能支持成都的公交查询.<br />
打算明天扩充一下功能, 顺便加一个URL Rewrite.</p>
<p>关于这个API怎么用:<br />
你可以直接在(手机)浏览器中访问这个地址, 即会得到一个生成好的KML文件.<br />
与KML关联的程序(Google Maps, Google Earth)可以直接打开.<br />
你也可以在手机版的Google Maps中使用&#8221;搜索&#8221;功能, 搜索这个URL, 不一会儿就会看到结果显示了.</p>
<blockquote><p><del datetime="2010-01-12T18:15:40+00:00">已知的bug: 地图漂移. TG的这个政策太恶心了.<br />
你要知道, 我做这个web service的初衷是因为不知道公交站具体位置在哪里,<br />
现在漂移了一条街, 这个破玩意儿还有毛用.</del></p></blockquote>
<p><strong>*UPDATE*<br />
感谢来自<a href="http://blog.csdn.net/dongmeng110/archive/2009/10/31/4750380.aspx">dongmeng110的研究</a>, 现在已经加入了偏移补偿, 可以正常显示了 <img src='http://tremblefrog.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
(maps.google.com的卫星图显示因为本身没有偏移, 补偿后反而会有偏移 -.-) </strong></p>
<p><span id="more-641"></span></p>
<p>关于实现:<br />
其实是hack的<a href="http://8684.cn">8684.cn</a>和<a href="http://mapbar.com">mapbar</a>的API.</p>
<p>囧.</p>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2010/01/12/bus_lane_to_kml/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TODO List.</title>
		<link>http://tremblefrog.org/blog/2010/01/10/todo-list/</link>
		<comments>http://tremblefrog.org/blog/2010/01/10/todo-list/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 16:35:20 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Gossip]]></category>

		<category><![CDATA[Bioinformatics]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=639</guid>
		<description><![CDATA[寒假的一些简短计划, 写在这里好了:

钻研Biopython和numpy, 用Biopython和numpy重写procadj, 完成后续的最小生成树部分的.
额, 多看看Computational genomics, System biology, Functional genomics, Comparative genomics的paper.
完成S. cereviase 基因预测的项目, 包括manuscript, 以及可能的annotation的尝试?
分子生物学, 生物信息学, 数据挖掘, 算法设计的教材再认真的看看.
Random Forest, HMM.
Metagenomics的了解, 包括数据获取, 基本研究方法等等.
准备生物医学信号处理的缓考考试 -.-#

]]></description>
			<content:encoded><![CDATA[<p>寒假的一些简短计划, 写在这里好了:</p>
<ul>
<li>钻研Biopython和numpy, 用Biopython和numpy重写procadj, 完成后续的最小生成树部分的.</li>
<li>额, 多看看Computational genomics, System biology, Functional genomics, Comparative genomics的paper.</li>
<li>完成<em>S. cereviase </em>基因预测的项目, 包括manuscript, 以及可能的annotation的尝试?</li>
<li>分子生物学, 生物信息学, 数据挖掘, 算法设计的教材再认真的看看.</li>
<li>Random Forest, HMM.</li>
<li>Metagenomics的了解, 包括数据获取, 基本研究方法等等.</li>
<li>准备生物医学信号处理的缓考考试 -.-#</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2010/01/10/todo-list/feed/</wfw:commentRss>
		</item>
		<item>
		<title>郫县豆瓣.mobile</title>
		<link>http://tremblefrog.org/blog/2010/01/03/pixian_doubanmobile/</link>
		<comments>http://tremblefrog.org/blog/2010/01/03/pixian_doubanmobile/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 08:57:39 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Gossip]]></category>

		<category><![CDATA[douban]]></category>

		<category><![CDATA[GAE]]></category>

		<category><![CDATA[github]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=633</guid>
		<description><![CDATA[很久以前做了个豆瓣-电子科大图书馆馆藏查询的Bookmarklet/Greasemonkey Script,
在图书馆借书的时候才发现手持设备根本没法查馆藏信息, 悲剧啊!
最近一直在看Google App Engine的文档, 就打算写个App来体验下.
于是就有了这个项目: 郫县豆瓣.mobile.
名字来源于电子科大幼儿园郫县金凤村附属电子高专，和豆瓣.
功能很简单, 就是利用豆瓣的API查询图书, 然后同时查询图书的馆藏状态.
把服务跑在GAE而不是栋力的服务器上的坏处是:

 电子科大的DNS经常抽风, 外网访问图书馆系统不稳定
访问延迟偏高

昨天最开始测试的时候, urlfetch不停的超时, 最后不得已, 还是在209上搭了个桥, 囧.
稍微修改了下原来用PHP写的Web Services, 支持多个请求合并, 这样可以减少urlfetch的调用数目.
不过既然做了个网站, 就打算把原来只停留在TODO list上的features全部实现了,
包括:

用户借书清单, 对我这种很久去一次图书馆借一堆书的人省得用纸笔了
图书自动续借, 懒人专用
图书借阅信息双向同步(比如借了本书就在豆瓣上标记为&#8221;在读&#8221;, 归还后标记为&#8221;读过&#8221;), 懒人专用
归还通知, XMPP的也好, 邮件的也好, 甚至Twitter的也好, 看有没有精力折腾吧.

比较落后于时代, 在郫县豆瓣.mobile里也是第一次用Google Analytics,
不得不说Google Analytics和Google App Engine的确是简单好用到极致了.
最后, 郫县豆瓣.mobile项目是开源的, 基于Apache License 2.0发布,
代码托管在Github, 地址: http://github.com/killkeeper/Douban-UESTC-Library-Mashup-Mobile
  

]]></description>
			<content:encoded><![CDATA[<p>很久以前做了个<a href="http://tremblefrog.org/libdb/">豆瓣-电子科大图书馆馆藏查询</a>的Bookmarklet/Greasemonkey Script,<br />
在图书馆借书的时候才发现手持设备根本没法查馆藏信息, 悲剧啊!</p>
<p>最近一直在看<a href="http://code.google.com/appengine">Google App Engine</a>的文档, 就打算写个App来体验下.<br />
于是就有了这个项目: <a href="http://dbutils.appspot.com"><strong>郫县豆瓣.mobile</strong></a>.</p>
<p>名字来源于<a href="http://www.uestc.edu.cn">电子科大幼儿园</a><strong><a href="http://www.uestc.edu.cn">郫县</a></strong><a href="http://www.uestc.edu.cn">金凤村附属电子高专</a>，和<strong><a href="http://www.douban.com">豆瓣</a></strong>.</p>
<p>功能很简单, 就是利用豆瓣的API查询图书, 然后同时查询图书的馆藏状态.<br />
把服务跑在GAE而不是<a href="http://www.dormforce.net">栋力</a>的服务器上的坏处是:</p>
<ol>
<li> 电子科大的DNS经常抽风, 外网访问图书馆系统不稳定</li>
<li>访问延迟偏高</li>
</ol>
<p>昨天最开始测试的时候, urlfetch不停的超时, 最后不得已, 还是在209上搭了个桥, 囧.<br />
稍微修改了下原来用PHP写的Web Services, 支持多个请求合并, 这样可以减少urlfetch的调用数目.</p>
<p>不过既然做了个网站, 就打算把原来只停留在TODO list上的features全部实现了,<br />
包括:</p>
<ul>
<li>用户借书清单, 对我这种很久去一次图书馆借一堆书的人省得用纸笔了</li>
<li>图书自动续借, 懒人专用</li>
<li>图书借阅信息双向同步(比如借了本书就在豆瓣上标记为&#8221;在读&#8221;, 归还后标记为&#8221;读过&#8221;), 懒人专用</li>
<li>归还通知, XMPP的也好, 邮件的也好, 甚至Twitter的也好, 看有没有精力折腾吧.</li>
</ul>
<p>比较落后于时代, 在<a href="http://dbutils.appspot.com">郫县豆瓣.mobile</a>里也是第一次用Google Analytics,<br />
不得不说Google Analytics和Google App Engine的确是简单好用到极致了.</p>
<p>最后, <a href="http://dbutils.appspot.com">郫县豆瓣.mobile</a>项目是开源的, 基于<a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a>发布,<br />
代码托管在Github, 地址: <a href="http://github.com/killkeeper/Douban-UESTC-Library-Mashup-Mobile">http://github.com/killkeeper/Douban-UESTC-Library-Mashup-Mobile</a></p>
<p><a href="http://github.com/killkeeper/Douban-UESTC-Library-Mashup-Mobile"></a> <img src='http://tremblefrog.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://tremblefrog.org/blog/wp-content/uploads/2010/01/pixiandouban.jpg"><img class="alignnone size-full wp-image-637" title="郫县豆瓣.mobile" src="http://tremblefrog.org/blog/wp-content/uploads/2010/01/pixiandouban.jpg" alt="郫县豆瓣.mobile" width="500" height="682" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2010/01/03/pixian_doubanmobile/feed/</wfw:commentRss>
		</item>
		<item>
		<title>2010.</title>
		<link>http://tremblefrog.org/blog/2009/12/31/2010/</link>
		<comments>http://tremblefrog.org/blog/2009/12/31/2010/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 10:33:05 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Gossip]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=630</guid>
		<description><![CDATA[咳咳, 我就这么期盼下.

]]></description>
			<content:encoded><![CDATA[<p>咳咳, 我就这么期盼下.</p>
<p><a href="http://tremblefrog.org/blog/wp-content/uploads/2009/12/2005116222232371.jpg"><img class="alignnone size-full wp-image-631" title="-.-" src="http://tremblefrog.org/blog/wp-content/uploads/2009/12/2005116222232371.jpg" alt="-.-" width="419" height="467" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2009/12/31/2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>把Nodebox的Graph库移植到了Shoebot</title>
		<link>http://tremblefrog.org/blog/2009/12/16/ported_graph_library_for_nodebox_to_shoebot/</link>
		<comments>http://tremblefrog.org/blog/2009/12/16/ported_graph_library_for_nodebox_to_shoebot/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 12:31:21 +0000</pubDate>
		<dc:creator>killkeeper</dc:creator>
		
		<category><![CDATA[Program]]></category>

		<category><![CDATA[Nodebox]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[shoebot]]></category>

		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://tremblefrog.org/blog/?p=624</guid>
		<description><![CDATA[Nodebox强大之处在于, 有无数第三方的扩展库, 可以快速的实现数据处理和可视化.
Graph就是一个很方便的用于图论可视化的扩展库.
不过Nodebox是Mac-only的(基于Cocoa), Shoebot是其基于GTK+和Cairo的移植.
断断续续花了两天时间把graph库移植到了shoebot下, 一些诡异的细节问题折磨了我n久.
经过了对原graph库的一些hack, 现在基本上可以正常的跑起来了.
除去对graph库的hack外, 我也改了不少shoebot的源码,
一方面是使得shoebot的命令调用更兼容Nodebox, 一方面是移植了部分Nodebox更新后, shoebot还没有移植的功能.
先放一张example图, 改天把源码再仔细检查下, 就放到github上去.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://nodebox.net">Nodebox</a>强大之处在于, 有无数第三方的扩展库, 可以快速的实现数据处理和可视化.<br />
<a href="http://nodebox.net/code/index.php/Graph">Graph</a>就是一个很方便的用于图论可视化的扩展库.</p>
<p>不过Nodebox是Mac-only的(基于Cocoa), <a href="http://tinkerhouse.net/shoebot/">Shoebot</a>是其基于GTK+和Cairo的移植.<br />
断断续续花了两天时间把graph库移植到了shoebot下, 一些诡异的细节问题折磨了我n久.</p>
<p>经过了对原graph库的一些hack, 现在基本上可以正常的跑起来了.<br />
除去对graph库的hack外, 我也改了不少shoebot的源码,<br />
一方面是使得shoebot的命令调用更兼容Nodebox, 一方面是移植了部分Nodebox更新后, shoebot还没有移植的功能.</p>
<p>先放一张example图, 改天把源码再仔细检查下, 就放到github上去.<a href="http://tremblefrog.org/blog/wp-content/uploads/2009/12/graph_ex1.png"><img class="alignnone size-full wp-image-625" title="graph_ex1" src="http://tremblefrog.org/blog/wp-content/uploads/2009/12/graph_ex1.png" alt="graph_ex1" width="500" height="500" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tremblefrog.org/blog/2009/12/16/ported_graph_library_for_nodebox_to_shoebot/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
