序
这周四是高考,作为一个过来人,我发现我已经不会写作文了。T_T 所以这篇就试试找回以前写议论文的感觉吧,四段论,比初中生的三段论高级吧。
前因
Google Reader曾经是我最喜欢甚至觉得「就是它了」的rss阅读器,然而看看GR的官方blog就会发现,从2010年年底开始GR就没有什么大的更新了,反而删除了不少功能,尤其是在2011年取消了笔记和分享这两个可以说是核心的功能。也许是因为GR不能盈利,或者是和某些媒体天天鼓吹的「RSS已死论」有关(话说一些媒体天天这个已死那个已死,它自己怎么不去屎一屎),总之GR由「最好用」变成了「不那么好用」。而这个「不那么好用」在google全面实行「小清新化」以后达到了顶峰。打开GR入眼就是一片白,除了最顶上一条黑,分不清已读和未读条目,两个条目之间宽的跟银河分隔牛郎织女一样,顶上和侧边的留白占掉大块的空间,总之一句话,这货不是给人用的。虽然后来google做了一些小小的改进,但也只是由「不是给人用的」进化到了「能满足基本要求」而已。这再次证明了我的猜想,google的员工是不用google自家的产品的。从那时候起,我就开始企图逃离,然而因为做RSS阅读器的公司真的很少,一直未能得逞。
发展
我的习惯是,早上出门坐在车上用手机看看昨晚更新的新闻,晚上回家对着电脑再看看今天白天更新的新闻,就跟早报晚报差不多吧。其实要求很简单,1)有手机客户端。这个很简单,因为现在是人是鬼都有android iOS版,PC版倒是未必了。2)有电脑客户端。真的不能理解那么多公司忽视PC的市场,不是所有人都喜欢把大屏幕不需要用手端着的电脑丢到一边,反而费劲拿着平板看着那个小小的屏幕的。3)在线的,至少是各个客户端能同步阅读记录的。我不想早上看一遍的东西晚上还要再来一遍。
但是就这么三个要求始终得不到解决,Flipboard,Pulse之流华丽是华丽,但都是典型的没有PC端的,甚至连个web界面都没有,让我有电脑的时候还要对着手机/平板,对不起,我没自虐倾向,你做的再华丽都跟我无关。Opera自带的rss阅读器,可惜在手机上没有,而且无法一段时间后自动删除过期的条目,会全部存在电脑里。
前段时间一次偶然的机会知道了Tiny Tiny RSS这个项目,看介绍它能完全满足我所有的需求,web界面,在PC上用浏览器就能看,还有个android客户端,于是在VPS上装上了。
高潮
安装过程有点曲折,先是tt-rss默认的是不允许php使用open_basedir设置的,幸好这里有个补丁,文件名output.diff,arch用户用这个PKGBUILD就行,http://pastebin.com/GWfa6Ad0
然后php 5.4有个bug,在第一次使用libxml_use_internal_errors以后不会reset,于是第二次使用的时候就会导致segfault,然后tt-rss就会提示 "Could not update headlines (invalid object received - see error console for details)", 所以php也得打补丁。给arch打了个包,https://www.box.com/s/cd63272323c2c2aad1fa,只是在官方的PKGBUILD里加上了那个libxml的补丁而已。makepkg之后会生成很多个包,然后选择安装自己要的。比如我的本身安装了php,php-fpm,php-gd,php-mcrypt,所以我就只需要安装这四个打了补丁的包,至于其他的什么php-apache之类的就不需要了。
接下来就很简单了,新建数据库,对于mysql数据库,把 /usr/share/webapps/tt-rss/schema/ttrss_schema_mysql.sql 导入进去
mysql -u $username -p $databasename < /usr/share/webapps/tt-rss/schema/ttrss_schema_mysql.sql
再把 conf.php-dist 复制为 conf.php,修改一下数据库用户名,密码,数据库名,记得修改conf.php的权限,因为里面有数据库密码,所以最好是除了运行php服务的用户,其他人都没有读写权限。最后
sudo rc.d start tt-rss-updated
开启更新feed的daemon。这个daemon会每隔一定时间更新feed,时间间隔可以在web页面的preference里面修改。
还有一点需要修改的是 /usr/share/webapps/tt-rss/js/tt-rss.js 文件。因为默认是打开了web界面以后会每10秒查询一次,确认数据库里有没有新的未读条目,但是这个查询是执行一个backend.php的文件,所以频率太高的话对服务器的压力很大,如果是自己用的话完全不需要每10秒查询,而且后台的tt-rss-updated也不会每10秒更新。在tt-rss.js中找到
last_scheduled_update < 10
把10修改成需要的数字,单位是「秒」,比如我要半小时更新一次,就改成1800。其实这个文件也是快捷键的设置,可以针对自己的习惯修改这个文件里快捷键的设置,在 function hotkey_handler 中。记得备份这个文件,因为每次更新tt-rss都会覆盖掉。
尾声
试用tt-rss发现,确实是个替代GR的绝佳软件。rss feed订阅,导入导出,条目加星,再分享,条目保存,加星条目和保存条目导出,使用bookmarklet随时订阅,标题和内容的搜索等。和GR相比,tt-rss有优点也有缺点,还有些自己的特色。
优点1:界面。界面实在是好太多了,尤其是在小屏幕的上网本上。
GR
TT-RSS
可以看到显示的内容实在是多了很多,而且tt-rss左侧的侧边栏宽度是可以调节的,而gr是固定的。
优点2:enclosure。有些feed的图片不是以html tag的方式插入的,而是以类似附件的形式。对于这类feed,GR就无能为力了。比如我订阅的台湾的无名小站的美女图片
GR
TT-RSS
优点3:自定义更新时间。这里说的是feed的更新时间,也就是服务器隔多久去抓取一次feed,而不是web界面的更新时间。GR的更新是「智能」的,根据订阅量,订阅多的1小时一次,订阅少的,3小时一次。我有个feed,是自己写的脚本,抓取一个不支持rss的网站的内容,然后生成的feed。但这个feed是只有我自己订阅的,废话嘛,我自己写给自己用的。于是GR智能的判断这个feed不是很重要,所以3小时更新一次。事实上这个网站的更新是很频繁的,为了避免GR来抓取的时候稍微早前一些的条目已经被覆盖掉了,我不得不把feed文件做的很大,来保存更多的条目,等着GR来抓取,于是服务器每次处理这个脚本的时候总是很费力。而tt-rss是可以自己设定的,最短每15分钟就更新一次,最长一周更新一次,而且可以每个feed设置不同的更新频率。比如我自己的那个feed,我可以半小时更新一次,而上面那个无名小站的美女图片一天更新一次,这样就能既减小对服务器的压力,又不会漏掉条目。
特色1:feed状况检查。
这个实在没法对比,因为gr完全没有这功能。也就是转到tt-rss以后,通过这功能我才发现我订阅的很多blog都失效了,不是不更新了,而是根本不存在了。也有些blog换了地址,原先的feed失效了,要重新订阅其他的地址。可怜我还死守着gr默默的等着更新,实际上人家换了个地址更新的欢着呢。
特色2:笔记功能,分享功能。这些已经被gr抛弃了,但tt-rss还有。笔记功能不用多说了,添加notes。分享有三种,第一种直接share条目,然后会给出一个url,同个这个url,任何人都能访问到这个条目。第二种是publish条目,publish的条目会在一个专门的rss feed中显示出来,任何人都能订阅这个feed,来查看你publish的条目。第三种是在tt-rss之间的,你能连接到另一个tt-rss,然后在那个tt-rss中的popular item会显示出来,你也可以让别人连接你的tt-rss,那么同样你的polular item对方也能看到,只是我还弄不明白这个polular item怎么弄,毕竟我只运行了一个tt-rss。当然,什么share to twitter, email post之类的少不了,read it later也没问题。
特色3:自定义css。还记得小清新gr刚出来的时候网上有一堆一堆的自定义css来改善界面,然而这些css是需要在浏览器中设置的,gr本身不支持自定义css。tt-rss提供了这个功能,能够很方便的自己修改web端的样式。
特色4:邮件digest。把每天的未读条目作为digest发送到指定邮箱。而且可以选择发送了的条目自动标记为已读。发送时间也可以指定。
特色5:filter功能。类似gmail的filter。从标题,内容,时间等等中匹配关键词,然后可以选择是打分还是加tag,加label,加星,标记已读,删除条目等,filter可以是作用于所有feed或者指定feed。可以是匹配关键词,或者是剔除关键词。
特色6:条目中的图片可以选择是显示还是隐藏。
特色7:profile。一个账号会在不同电脑登陆,有的电脑是普通屏幕,有的是宽屏,或者有的比较快,有的比较慢,所以可以设立几个profile,每个profile有不同的设置,比如说一个是显示图片,另一个是隐藏图片,每次登陆的时候选择profile就行。
特色8:ssl证书登陆。类似ssh,就是不需要密码了,自己签个证书,验证一下,就能自动登陆了。这个功能在手机的客户端上也是支持的。
特色9:合并同类项。重复的条目会合并起来。有时候订阅很多同一类型的feed的时候特别有用,免得一条新闻看n次,都变旧闻了还在不断冒出来,就比较讨厌了。
缺点1:需要在自己的电脑上安装。可以是服务器,也可以是自己的个人电脑,只是个人电脑的话关机了就没法自动更新了。更新feed是需要读写数据库的,如果feed很多,条目很多,往往会对服务器的压力比较大,数据库文件在时间久了以后也会比较庞大,进一步拖累服务器的速度,虽然是有自动purge过期条目的功能,但是有时候需要查询一些以前看到的文章,所以purge的周期会比较久,而purge周期越久,数据库就越大了,这还是看个人的选择了。
缺点2:web端的速度稍微有点慢。web端大量运用了php和js,在我的上网本上还是有点压力的,但也只限于上网本而已,普通笔记本还是没问题。
缺点3:android客户端不如gr的好看。
后记
突然发现我最近替换了几个google的服务,上次把google analytics换成了piwik,这次是gr换tt-rss。其实google有些东西做的还不错,至少我没想着用baidu,虽然其实对google search也有些不爽,比如越来越多的广告,比如把所有链接替换成了google自己的链接导致无法直接copy link address,但不管怎样google search暂时还是最好用的。但除了google search,gmail,picasaweb外,其他的服务真的对我没有吸引力了。blogspot也算是蛮好,但照着这个趋势下去,总有一天也会被google放弃,feedburner实质上已经被放弃了,api都关了。google现在是一门心思绕在gplus上,但是对于g+,我能说脏话吗?
Update: 2012-06-15
php升级到5.4.4,bug依然在,新的打过补丁的arch包地址:https://www.box.com/s/16d4bee7ab9ec6a6a741 也有x86版编译好了的包
Update: 2012-07-20
php版本5.4.5,这个bug还是没修复,同样,打补丁的arch包和x86二进制包都在 https://www.box.com/s/16d4bee7ab9ec6a6a741
Update: 2012-08-17
php版本5.4.6,https://www.box.com/s/16d4bee7ab9ec6a6a741 话说这是要一个月一次吗?
Update: 2012-09-14
php版本5.4.7,https://www.box.com/s/ek1f8abx6mz74b9rnih9
Update: 2012-10-21
php 5.4.8 https://www.box.com/s/k0qi4jb2yjb0l0aknlr0
Update: 2015-08-21
php的bug已经修复很久了,所以把所有打过补丁的php arch包删除
怎麼我會有這個error 呢?
http://istockpicking.com/news
Could not update headlines (invalid object received - see error console for details)
我的phpinfo
http://istockpicking.com/news/test20130215.php
能找出我的問題所在嗎?
@istockpicking.com: 试试php升级到5.4.11?我没用过5.3.x的,但是我5.4.x升级后没有这个问题了
"Update daemon is not running."
要照这篇跑update程序
http://tt-rss.org/redmine/projects/tt-rss/wiki/UpdatingFeeds
我在google有很多加星标的文章,请问如何将星标导入到Tiny Tiny RSS?
@hifiu: 有个自带的扩展,googlereaderimport,启用以后就可以导入
Tiny Tiny RSS + Google Reader UI就可以让GR复活啦:http://reader.marboo.biz
根据ID自动获取评论者头像,cool。获取的github的吗?另外发现博主是Opera控。。。
那些煤体鼓吹的「RSS已死论」, 真tmd, 这些煤体就该死。rss永远不会消失。我猜无非是想灭了rss, 让普通用户从商家的入口进入互联网,有利可图吧。rss做信息整合本就是革命性的东西。