May 20, 2010 at 2:23 pm · Filed under Gossip
两周前接到小六电话, 说我的域名需要备案.
还在琢磨着买VPS迁移, 209就以一种琢磨不透的方式挂掉了.
把209从机柜上拖下来, 打开机箱, 拆下来电源.
尽管事后我才想起, 当天测电压输出的时候, 竟然愚蠢的没有短接4脚和5脚, 但总归事实是这块电源再也无法点亮209的主板了.
于是207被短暂的停止工作, 剥皮掏内脏, 24pin接口被插到209上, 以测试这台积满了灰尘的白色1U服务器, 是否已经彻底的死掉了.
除了一个主板上看起来微微有些凸起的电容不让人怎么放心外, 总归207的电源还是成功的让209启动起来, 通过了自检.
接着的问题, 就是一个经典的, “我们图省事买了一台高度定制化和充满了非标准化接口的设备, 现在这玩意儿坏了, 我们怎么办”的困境. 现在我们有一个挂掉的OEM 1U电源, 只有一个24pin的接口, 和一个8pin, 给SCSI板供电的接口.
万能的淘宝上貌似找不到这样的电源. 偶尔瞥见有的电源带8pin接口输出, 都无一例外是+12v给CPU供电的.
于是我和万能的科学帝Aw讨论了很久,如何改造一个标准电源的问题.
山寨如电工胶布把剪下来的8pin头和砍头的两个IDE头拼接的方案,到最后的,转换头的方案.
然后我们手里就有了,嗯,8pin和IDE头子的塑料件,导线,和金属接头.
接下来是焊接和拼装工作,直到出现了一个看起来有些诡异的转接头.
再接下来,209被成功的点亮.一堆臃肿的电源线故被鼓囊囊地塞进狭小的机箱,新电源狭长的尺寸使得它没法像OEM电源那样被固定,甚至它使得机箱壳子都没法合拢——不过, 让这台轰鸣的机器重新复工, 又还能奢求什么呢.
关于209重新复活的故事,我最喜欢的部分,就是这个转接头的地线.
该死的,那天我们竟然没有找到愿意开零卖给我们黑线的奸商.
于是,四根粗硕的紫线,让这个转接头,充满了山寨的色彩.
当209重新点亮的那一刻,
我满脑子的思绪立刻回到了两周前.
因为莫名其妙的被死亡而不了了之的备案和blog迁移的事情, 又变得现实起来.
所以,最终,又回到了这个博客死亡的话题上了.
March 14, 2010 at 10:58 pm · Filed under Gossip
大雨敲的车窗满是光影和节律, 雨刮器嗞嗞刮过, 留下一道让人眩晕密布的轨迹.
从12月27日不眠的夜晚, 到3月13日, 待着日出, 把早餐小心翼翼的放在盘子里的清晨,
开过了1428公里, 假期和暖冬, 伴着不规律的睡眠, 晚餐, 浑浑噩噩的思考.
有一只黄色长毛的猫, 游荡在这个寂静的公寓里.
有一些泛蓝泛黄的灯, 开开关关, 忘了时间的点亮, 熄灭.
有一次次的带着寒意日出的入眠.
有狼藉的厨房, 随处摆放的杯盘, 琐碎的冰箱.
带着异样的期盼, 对未知的惶恐, 对寂寞的习惯过完整个寒假,
偶尔走在熙攘的从学校宿舍到学校的小路上, 惊讶的感到陌生.
世界在雨滴和刮花的窗玻璃中模糊, 只剩下些许的轮廓和大片的色彩.
几丝寒风中清冷的黄昏, 不知道重复了多少次相同的一天的场景.
守着蓝色墙壁的卧室, 开开关关的灯,
哼着歌曲的音箱, 惨白的屏幕, 咕噜咕噜的鱼缸, 两面看着头发长了又长, 张牙舞爪的镜子.
一只悠闲的猫, 总是在黑夜里感到不安, 一路点亮灯泡, 整夜忘了关掉的我.
有的时候, 我真的很恨孤单.
自言自语先生你好, 该换雨刮器了.
你的世界在这个雨水开始降临的季节里, 总会时不时的这样, 变得一切模糊.
于是你就迷失在某个城市的角落里.
关掉雨刮器, 滴滴答答, 直到红灯变绿, 你的生活开始继续.
自言自语先生你好, 很感谢你每天都陪我聊天.
还有, 我们的面包吃完了.
January 30, 2010 at 9:24 pm · Filed under Program, Tech
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进行比对.
·· Tags: git·github·Linux
January 28, 2010 at 12:10 am · Filed under Program
栋力博客使用的是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头的同时, 也有了较好的缓存控制.
改天有空可以考虑把栋力博客迁移到新版本上去, 最担心的还是栋力博客启用的大量自定义插件的兼容性问题.
·· Tags: nginx·php·wordpress·wpmu
January 23, 2010 at 9:54 pm · Filed under Gossip
中国互联网是开放的,中国也是互联网发展最活跃的国家,到去年底,中国网民达3.84亿,网站达368万个,博客1.8亿。中国宪法保护公民的言论自由,推动互联网的发展是我们的一贯政策。中国有自己的国情和文化传统,中国对互联网坚持依法管理,符合世界通行做法。
【该评论已关闭】
January 12, 2010 at 10:29 pm · Filed under Program

如图, TG的漂移立功了...
下午坐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的卫星图显示因为本身没有偏移, 补偿后反而会有偏移 -.-)
Read the rest of this entry »
·· Tags: GIS·Google Maps·KML·php
January 10, 2010 at 12:35 am · Filed under Gossip
寒假的一些简短计划, 写在这里好了:
- 钻研Biopython和numpy, 用Biopython和numpy重写procadj, 完成后续的最小生成树部分的.
- 额, 多看看Computational genomics, System biology, Functional genomics, Comparative genomics的paper.
- 完成S. cereviase 基因预测的项目, 包括manuscript, 以及可能的annotation的尝试?
- 分子生物学, 生物信息学, 数据挖掘, 算法设计的教材再认真的看看.
- Random Forest, HMM.
- Metagenomics的了解, 包括数据获取, 基本研究方法等等.
- 准备生物医学信号处理的缓考考试 -.-#
·· Tags: Bioinformatics
January 3, 2010 at 4:57 pm · Filed under Gossip
很久以前做了个豆瓣-电子科大图书馆馆藏查询的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

·· Tags: douban·GAE·github·Google·Python
December 31, 2009 at 6:33 pm · Filed under Gossip
咳咳, 我就这么期盼下.

December 16, 2009 at 8:31 pm · Filed under Program
Nodebox强大之处在于, 有无数第三方的扩展库, 可以快速的实现数据处理和可视化.
Graph就是一个很方便的用于图论可视化的扩展库.
不过Nodebox是Mac-only的(基于Cocoa), Shoebot是其基于GTK+和Cairo的移植.
断断续续花了两天时间把graph库移植到了shoebot下, 一些诡异的细节问题折磨了我n久.
经过了对原graph库的一些hack, 现在基本上可以正常的跑起来了.
除去对graph库的hack外, 我也改了不少shoebot的源码,
一方面是使得shoebot的命令调用更兼容Nodebox, 一方面是移植了部分Nodebox更新后, shoebot还没有移植的功能.
先放一张example图, 改天把源码再仔细检查下, 就放到github上去.
·· Tags: Nodebox·Python·shoebot·visualization
Next entries »