2009年8月15日星期六

Tumblr vs Publr

现在才写似乎有些Out了,不过我的确是最近才开始用类似的东西。因为就是用来贴图而已,所以我只关注了这两家网站关于贴图的相关功能。

因为墙的关系,最先开始用的是Publr。本以为作为Tumblr的后来者,功能方面应该较弱才对,结果用了一段时间发现事实并非如此。Publr可以自定义Theme,网站提供的三款也都是设计优良的作品。发布照片的界面也很好用,能够一次选择多张图片,并且在上传的时候去写文字内容。基本上我介意的核心功能,Publr都能很好地提供。

要说缺点,不能设置Post发布时间算一个,无法调整Photoset顺序也算一个,不过都还可以忍受就是。真正让我起意尝试其他相似服务的原因并不在于功能,而是出于对数据安全性的担心。

Tumblelog,看名字就知道,这一类网站Tumblr肯定才是老大,Publr是否能找到自己的位置?上线有一年了吧,我只用了月余就抓出了三个Bug,用户少到没人发现?API至今还很不完整,站方想要添加的SNS功能也进展缓慢,种种迹象让我觉得至少要找个备份的地方才算保险。

于是我慕名翻墙来到了Tumblr,可是却有那么点失望。Tumblr的功能的确较Publr丰富,创建多个Blog、SNS,等等等等。可是我看了官方网站才知道,发布Photoset的功能七月才上线,无论可用性还是易用性都有不小的缺陷。

Tumblr将单张的Photo和多张的Photoset分成了两种不同的Content类型,假如第一次发布时只选择了一张照片,Post类型即为Photo,以后修改也不能再添加照片并转化为Photoset了。呈现方面,如浏览器安装了Flash插件则Photoset会被显示为一个Flash相册,否则就是所有大图的堆叠,相比Publr点击略所图用Javascript放大的方式差了不少。另外Tumblr的Photoset还有最多十张的限制,上传时必须逐张进行选择,用起来实在有些不太舒服。

综合来看,仍然是Publr更为契合我的需求。至于备份,写了一个Ruby脚本将Photo类型的Content从Publr同步至Tumblr,而Photoset就只能手工处理了。

2009年8月6日星期四

利用GAE实现Twitter短信通知

简介

随着国内Twitter Clone集体被自杀,利用叽歪绑定飞信,通过手机短信获取Twitter更新的法子就失效了,于是我再一次开始折腾。

这次用到的东西包括cocobear写的PyFetion、Yahoo Pipes和Google App Engine。基本思路就是利用GAE的Cron功能定时检查Yahoo Pipes抓取的RSS,如果有新的东西就用PyFetion给自己的手机发短信。

除了Twitter,这个程序可以用来做的事情挺多,比如接收实时天气预报之类,各位可以自由发挥。

安装及使用说明

由于PyFetion、FeedParser等第三方库都采用GPL许可证发布,所以我的代码也使用GPL v2许可证,使用及再发布请留意相关限制。

代码放到Github上了,下载请走这里,点击download即可获得最新源文件的压缩包。

我并没有为本程序单独建立一个代码仓库,目前还整合了杜晓刚GAppProxy等其他程序。用得上的话就不用为本程序单独建立一个GAE了,不然的话放在那里也成,并不影响使用。

下载及解压后需要修改的文件有两个。app.yaml中第一行“application: ogaeo”,将ogaeo改为你的GAE项目名称。另外则是Conf.py中RSS2Fetion的相关配置信息。

默认的RSS只抓取Twitte的replies和direct messages,应该不至于太烦人。据说用飞信给自己发短信有每天600条、每月1000条的限制,如需要自定义抓取来源请留意。

我将Cron任务设置为每5分钟执行一次,实际延迟约在5到10分钟的样子。如需要更改,请查阅cron.yaml文件。

需要GAE申请及上传帮助,请查阅GAppProxy帮助文档。使用中出现问题,请在本页留言。

使用本程序会造成飞信PC及手机客户端掉线,如果你经常使用飞信聊天并且只有一个移动的号码,本程序并不适合你。

如果希望临时关闭本程序,可以采用短信修改飞信密码的办法来实现。编辑短信,内容为新密码,发送至12520050。详情请查阅飞信帮助说明

更新历史

Update 22:36 2009-8-11:

本想偷懒直接用memcache,可是发现memcache无法提供长时间的缓存,所以还是得用数据库。

另外还发现GAE一个问题,pickle反序列化似乎得这样用:pickle.loads(str(dbcache.txt))。

Update 23:56 2009-8-13:

用pickle序列化数据并保存至数据库仍然会有重复发送的问题,而且两次重复发送都在凌晨6点多。找不到问题出在哪里,于是再次修改缓存机制,将RSS永久保存在数据库中。

一定要记住两件事:一、TextProperty不可查询,只能用StringProperty;二、看文档需要仔细些,再仔细些……

Update 14:43 2009-8-17

经过上次修改后没有再出现重复发送短信的情况,问题应该是解决了吧,只是出错的原因还不太确定。

嫌疑集中在Model(Query、GqlQuery)类的get方法上。按照文档的说法,query.get()应该返回数据库中符合查询条件的第一条纪录,没有则返回None。可是用query.get() == None进行条件判断时就会出现重复发送的情况,改用query.count() == 0时则不会。初步判断,有可能是get方法在发生错误(如超时)时,并没有抛出异常所致。

Update 22:57 2009-8-20

上次将get()修改为count()后忘记上传代码了,汗。

Update 23:15 2009-8-30

有人说希望可以用父母的手机申请飞信并给自己的手机发短信,这样就不影响飞信使用。貌似的确会有这样的需求,所以加上。

Update 21:46 2009-9-17

某人提意见,去掉replay里[@自己的用户名]看起来会怪怪的。想想也是,反正省不了几个字符,于是小改一下默认的Pipe。

2009年7月1日星期三

N78印象

在刚发布的时候,Nokia N78就吸引到了我的注意力,只是手上的SE K750一直都没坏,所以就一直都没换。月前花了1600大洋将其捧回,就这一段时间的使用感受来说,印象其实不太好。

2008年5月N78上市时要价3500以上,一年间跌去2000,入手时间应该说没什么问题。尺寸方面虽然比K750大了很多圈,不过放牛仔裤兜里也还好。长条形按键适应良好,没我想象中的难用。价格和外观我都基本满意。

(这篇写得我相当没兴趣,连一个我非常在意的缺点都忘记说了:手汗重的同学谨慎考虑指纹机,很恶很麻烦。)

最不爽的是续航时间。我的电话非常少,如果不用其他功能,N78也就能撑两天多。要是开了WIFI上网,半天时间就可以把电池耗光。而K750即使偶尔听听广播,一次充电差不多也可以用一周。N78如此表现,实在有点差强人意。

另一个很不爽的地方是WIFI的兼容性。我的无线路由是当年也很便宜的腾达TWL542R,虽然功能和信号很一般,不过配合过的网卡也不少了,只有在使用N78的时候出过问题。表现为可以搜到AP,但连接后有时会提示“无网关回应”或“系统错误”,必须重启路由器才行。

系统方面,N78用的是Symbian v9.3 S60 v3.2 FP2,看着就很复杂了吧。由于塞班有太多版本,再加上分辨率、键盘等硬件方面的差异,导致塞班系统上的软件很容易出现兼容性问题。譬如按键偶尔失灵(点讯、Jbak TaskMan嫌疑比较大),找不到可用的闪光灯常亮软件等。

虽不至于让我觉得买了后悔,不过我的下一支手机大概也不会是Nokia的了。