全文RSS输出程序

这个全文RSS程序我已经断断续续写了差不多一个月了,期间为了其他事而耽搁了一下。一开始写这个程序主要是我一直不习惯Google Reader中某些不输出全文的RSS,非得你再点一下鼠标不可,我等懒人怎能容忍。

一开始上网搜索全文RSS程序,只搜索到阮先生的这篇,大致看了这个PHP写的FiveFilter还算简单,决定用Python在服务器上实现一个。

期间慢慢看了一些RSS标准、Python RSS库之类的东西,大致框架如下:

  1. 前端照搬FiveFilter的Web界面。
  2. 后端用Python实现,包括RSS读取、内容全文解析、RSS保存等等。

一开始因为RSS中的每个网页都要用urllib去读一遍再解析一遍比较耗时,所以打算在后台搞个daemon进行更新。后来改进了方案,直接用Python的多线程进行读取和解析,解决了时间问题。Python的线程库threading是个神器,搞数据挖掘的用这个应该很方便:)。

接下来参考FiveFilter的PHP代码和这篇神作feedcache搞定各种Python库:

最后我自己写了个RSS输出类搞定一切。

其他的细节太多了,比如如何确定RSS要保持多少时间才去更新。我大致看了一下Google Reader的抓包数据,发现Google Reader大致一小时抓一次,所以我把RSS的更新时间也设置成一小时。

[23/May/2012:19:34:46 +0800] "GET /index.cgi/feed/ HTTP/1.1" 200 6272 "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 
[23/May/2012:20:44:46 +0800] "GET /index.cgi/feed/ HTTP/1.1" 200 6272 "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 
[23/May/2012:21:39:26 +0800] "GET /index.cgi/feed/ HTTP/1.1" 200 6272 "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 
[23/May/2012:22:46:56 +0800] "GET /index.cgi/feed/ HTTP/1.1" 200 6272 "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 

还有为了提高效率,每次读RSS源都用HTTP的条件判断(ETage and Last-Modified), 减少读取次数等等。

最后晒一下成果,项目源码在这里。我在服务器上搭建的网站程序在这里(已经移除),最后发张效果图。

参考

feedcache

RSS标准

Conditional HTTP GET

Google Feedfetcher文档

Ubuntu 12.04搭建双显示器工作环境

我最近花了点银子上Dell官网买了Dell inspiron 14笔记本,话说Dell直销系统不咋样,过了一周才到货,不过服务到不错:),而且性价比很高。

终于告别用了6年的破Dell台式机,以前一直在台式机上用卡的要死的Ubuntu 10.10,所以对最新的Ubuntu 12.04和体验Unity桌面环境期待已久啊!

废话不多说,马上搭好环境,使用了下还可以,基本符合我等口味:

安装Ubuntu 12.04就不多说了,按老套路搞个USB启动盘就可以安装了。试用了Dash和HUD等特性,感觉尽管Unity已经很努力了,但还不是很完美,程序崩溃时有发生,而且Dash这种交互形式也过于超前了吧!

吐槽完毕,讲一下遇到的问题:

显卡驱动

由于笔记本是A卡独显,默认安装的是开源的Radeon驱动,用起来还过的去。但是笔记本散热不好,开独显发热严重,于是考虑进行双显卡切换,刚刚AMD也相当厚道的发布了闭源的Catalyst 12.6驱动,按照官方指南顺利安装成功。

这里吐槽一下,一开始从附加驱动的官方源安装,但死活不成功,点Catalyst控制中心老是提示错误。逼的我从官网下安装程序一步步安装,但还是不行。最后一通乱搜索,发现了窍门:把 /etc/modprobe.d/blacklist-local.conf 中去掉blacklist fglrx 就可以了,也不知道为什么要设置这个黑名单。

Catalyst的双显卡切换模式,我把独显关了, 风扇声音一下子小下去了:

双屏幕切换

我把台式机的显示器作为外接显示器,组成双显示器。幸亏Ubuntu 12.04对双显示器支持不错,可以方便的用鼠标来回切换。我把左边的高分辨率笔记本显示器用来看电影、上网和收邮件;右边的显示器分辨率低,用来写代码。

如果想体验一下的话,Ubuntu官方有个在线模拟体验中心,模拟Ubuntu 12.04,很好玩:)。