<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.7.1" -->
<rss version="0.92">
<channel>
	<title>" Shutup. "</title>
	<link>http://tremblefrog.org/blog</link>
	<description>thoughts in silence.</description>
	<lastBuildDate>Sat, 30 Jan 2010 14:33:14 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>实现Github的代码仓库权限控制.</title>
		<description>Github这个social coding的代码托管网站风骚得总有让人push, 攒蓝条的冲动.
以上是题外话.

最近回头去, 把以前断断续续没写完的Project gitar(web端的多用户仓库管理界面)继续拾起来开发,
也遇到了些问题: 比如, 如何实现github那样的, 对用户的公共仓库进行权限控制,
今天仔细翻了翻sshd和git的文档, 终于找到了一个解决方法.

[1] 修改sshd_config, 将PermitUserEnvironment设置为yes, 以保证能够在authorized_keys文件中, 对环境变量进行设置.

[2] 对于每个用户提交的RSA公钥, 在其
ssh-rsa AA....== foo@bar
的前面, 加上
environment="GITAR_USER=username"
这样用户通过了公钥认证后, 当前的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>
		<link>http://tremblefrog.org/blog/2010/01/30/a_repository_permission_control_approach_like_github/</link>
			</item>
	<item>
		<title>X-Accel-Redirect的一点教训.</title>
		<description>栋力博客使用的是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'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>
		<link>http://tremblefrog.org/blog/2010/01/28/a_lesson_on_using_x-accel_redirect/</link>
			</item>
	<item>
		<title>土鳖国真是个自卑的畸形国家.</title>
		<description>中国互联网是开放的，中国也是互联网发展最活跃的国家，到去年底，中国网民达3.84亿，网站达368万个，博客1.8亿。中国宪法保护公民的言论自由，推动互联网的发展是我们的一贯政策。中国有自己的国情和文化传统，中国对互联网坚持依法管理，符合世界通行做法。
【该评论已关闭】 </description>
		<link>http://tremblefrog.org/blog/2010/01/23/a_country_with_inferiority/</link>
			</item>
	<item>
		<title>公交路线&#8211;&gt;KML</title>
		<description>[caption id="attachment_642" align="alignnone" width="320" caption="如图, TG的漂移立功了..."][/caption]

下午坐82路回家, 看到一站"新南门", 但是实在难以揣测这个站点是在府南河的哪一头, 为了避免少走弯路, 提前在滨江路下车了.
车还在浆洗街的时候, 摸出手机, 打开Google Maps看了看, 最后发现无法显示具体的公交线路图, 作罢.
回家后有点无聊, 就动手自己写了一个.

这个API的一个示例: http://tremblefrog.org/bus.php?lane=56

56是公交线路编号, 嗯, 这个URL里面没有城市.
设计得比较山寨, 只能支持成都的公交查询.
打算明天扩充一下功能, 顺便加一个URL Rewrite.

关于这个API怎么用:
你可以直接在(手机)浏览器中访问这个地址, 即会得到一个生成好的KML文件.
与KML关联的程序(Google Maps, Google Earth)可以直接打开.
你也可以在手机版的Google Maps中使用"搜索"功能, 搜索这个URL, 不一会儿就会看到结果显示了.

已知的bug: 地图漂移. TG的这个政策太恶心了.
你要知道, 我做这个web service的初衷是因为不知道公交站具体位置在哪里,
现在漂移了一条街, 这个破玩意儿还有毛用.

*UPDATE*
感谢来自dongmeng110的研究, 现在已经加入了偏移补偿, 可以正常显示了 :)
(maps.google.com的卫星图显示因为本身没有偏移, 补偿后反而会有偏移 -.-) 



关于实现:
其实是hack的8684.cn和mapbar的API.

囧. </description>
		<link>http://tremblefrog.org/blog/2010/01/12/bus_lane_to_kml/</link>
			</item>
	<item>
		<title>TODO List.</title>
		<description>寒假的一些简短计划, 写在这里好了:

	钻研Biopython和numpy, 用Biopython和numpy重写procadj, 完成后续的最小生成树部分的.
	额, 多看看Computational genomics, System biology, Functional genomics, Comparative genomics的paper.
	完成S. cereviase 基因预测的项目, 包括manuscript, 以及可能的annotation的尝试?
	分子生物学, 生物信息学, 数据挖掘, 算法设计的教材再认真的看看.
	Random Forest, HMM.
	Metagenomics的了解, 包括数据获取, 基本研究方法等等.
	准备生物医学信号处理的缓考考试 -.-#
 </description>
		<link>http://tremblefrog.org/blog/2010/01/10/todo-list/</link>
			</item>
	<item>
		<title>郫县豆瓣.mobile</title>
		<description>很久以前做了个豆瓣-电子科大图书馆馆藏查询的Bookmarklet/Greasemonkey Script,
在图书馆借书的时候才发现手持设备根本没法查馆藏信息, 悲剧啊!

最近一直在看Google App Engine的文档, 就打算写个App来体验下.
于是就有了这个项目: 郫县豆瓣.mobile.

名字来源于电子科大幼儿园郫县金凤村附属电子高专，和豆瓣.

功能很简单, 就是利用豆瓣的API查询图书, 然后同时查询图书的馆藏状态.
把服务跑在GAE而不是栋力的服务器上的坏处是:

	 电子科大的DNS经常抽风, 外网访问图书馆系统不稳定
	访问延迟偏高

昨天最开始测试的时候, urlfetch不停的超时, 最后不得已, 还是在209上搭了个桥, 囧.
稍微修改了下原来用PHP写的Web Services, 支持多个请求合并, 这样可以减少urlfetch的调用数目.

不过既然做了个网站, 就打算把原来只停留在TODO list上的features全部实现了,
包括:

	用户借书清单, 对我这种很久去一次图书馆借一堆书的人省得用纸笔了
	图书自动续借, 懒人专用
	图书借阅信息双向同步(比如借了本书就在豆瓣上标记为"在读", 归还后标记为"读过"), 懒人专用
	归还通知, 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>
		<link>http://tremblefrog.org/blog/2010/01/03/pixian_doubanmobile/</link>
			</item>
	<item>
		<title>2010.</title>
		<description>咳咳, 我就这么期盼下.

 </description>
		<link>http://tremblefrog.org/blog/2009/12/31/2010/</link>
			</item>
	<item>
		<title>把Nodebox的Graph库移植到了Shoebot</title>
		<description>Nodebox强大之处在于, 有无数第三方的扩展库, 可以快速的实现数据处理和可视化.
Graph就是一个很方便的用于图论可视化的扩展库.

不过Nodebox是Mac-only的(基于Cocoa), Shoebot是其基于GTK+和Cairo的移植.
断断续续花了两天时间把graph库移植到了shoebot下, 一些诡异的细节问题折磨了我n久.

经过了对原graph库的一些hack, 现在基本上可以正常的跑起来了.
除去对graph库的hack外, 我也改了不少shoebot的源码,
一方面是使得shoebot的命令调用更兼容Nodebox, 一方面是移植了部分Nodebox更新后, shoebot还没有移植的功能.

先放一张example图, 改天把源码再仔细检查下, 就放到github上去. </description>
		<link>http://tremblefrog.org/blog/2009/12/16/ported_graph_library_for_nodebox_to_shoebot/</link>
			</item>
	<item>
		<title>keywords visualization.</title>
		<description>忘了最早哪儿看到的了, 去年用AS3写了一个,
不过我的AS3实在是烂.

今天est大神提到了这个, 我就顺便用shoebot重写了一次.
分词使用的pymmseg, 不过缺点是分词后不会有词性, 这样就无法通过词性筛掉一部分出现频率高但是实际上重要性不大的词.


如图是胡core在十七大上的讲话, 当然太长了, 我只用了新华社稿子的前两页.
(社会主义果然无比强大啊!)

几点总结:
1. shoebot的确很好用, 或者应该说nodebox真的很好用 -__-!
2. 关于文字排布, 最简单的方法往往是最简单的.

接下来准备把这个东西继续完善下,
1. 做一个HTTP的服务, 免得只能在本机跑很无趣.
2. 做一点语义元素上的挖掘, 我倒是想看看单词在给定距离下的邻接性会不会有什么有趣的东西... 比如根据单词的邻接图绘制最小生成树?
3. 有空了打算做个cluster, 说不定也是一个有趣的结果. </description>
		<link>http://tremblefrog.org/blog/2009/12/13/keywords-visualization/</link>
			</item>
	<item>
		<title>Burden.</title>
		<description>Carleton College有个field investigation, 调查四川的农业现状, 我蹩脚的跟去做志愿者.
打了几天酱油, 今天是第一天去实际的农场.

实地去了解中国这个农业大国的农业现状, 才发现宅得太深, 人都变得无比浮浅而无知了.
守着一亩三分田地, 望天吃饭, 面对着严重水土流失, 沙质土壤的人们, 突然鲜活的出现在眼前, 除了震撼, 还是震撼.
成都平原富饶的土地一点一点被房地产开发吞噬的时候, 这些丘陵地区的农业还在一步一步的摸索.

拜访的那家农户有12亩土地, 3亩水稻田, 3亩果园, 4亩已经退耕还林, 剩下2亩耕作西瓜, 花生等作物.
土地重新分配后, 考虑到不同的光照, 降水, 地理位置等条件, 每户农家的土地都是散布在整个村落里一块块.
丘陵地区的灌溉条件太差, 基本只靠雨水作为唯一的水源, 水稻田在冬季基本都是休耕蓄水.
主人说, 08年柑橘蛆虫事件爆发后, 柑橘价格一路走低, 因此没什么利润, 果园也基本疏于打理了.
坡地上的4亩土地过去种玉米, 现在已经改成了柏树, 只因为水土流失实在太过严重, 整个山脊上全是土壤流失的沟壑和痕迹.
每年冬季, 农民会在山脚用人力把冲刷下的土壤重新回填到山坡上.

跟着我们同去的农科院专家讲解了很多当地的现状, 也真正第一次让我了解到了这些在田地里工作和科研的科学家的努力,
一切的耕作中需要关注的细节都铺陈在面前的时候, 才意识到自己对农业有着太多的误解和无知.
人口结构的失衡, 土壤结构的薄弱, 农村教育水平的落后, 资金的缺乏, 农民-专家沟通网络的缺失, 都使得这种纯粹靠天吃饭的农业看起来像是这个农业大国肩上过重的负担.
无论是现场实地实验田里的反差, 还是幻灯片里的图表, 都可以看到田地间实验缓慢的结果积累的背后, 无数人的艰辛和汗水.

向这些平凡而伟大的农业工作者致敬.
尽管用科技推动农业生产的路还很漫长, 尽管这个国家农业的重担还是这么的沉重,
不过就像那些仍然用双肩挑起着丰收希望的人努力那样,
我们总归还是要去面对的.

主人说, 村子里像他这样的壮年男子还在种地的不多了,
为了挣钱, 许多人随着农民工大潮在城市里打拼生活.
他之所以留下, 是因为热爱这份耕作的自由, 以及对"一份土地, 孕育万物"的大自然魅力的热爱.
他的儿子现在在学校有相当不错的成绩, ...</description>
		<link>http://tremblefrog.org/blog/2009/12/09/burden/</link>
			</item>
</channel>
</rss>
