2009年6月7日星期日

公历农历互转的Ruby实现

网上只能找到公历转换到农历的程序,反过来的Ruby实现似乎没有,所以就自己写了个,取名rbCCal。程序采用查表法,大约能实现公元1900年至2100年间200年的公历和农历互转。

数据部分出自Zhuo Meng的CCAL,该程序用GPL发布,所以rbCCal也用GPL发布。

代码放在Github。其实觉得Google Code会更靠谱些,个人用SVN和Git也不会有太大区别。可这个站是Ruby写的,而且还很漂亮。

另,因为Github只支持ASCII和UTF-8,为了能在网站上显示中文,我只好将代码存成了UTF-8,这样在Windows里直接用就会有问题。需要的话请将代码保存为GBK,或者重载LunarDate类。

下载请往这边走:https://github.com/oTnTh/ccal

require 'ccal'

l = Time.now.to_lunar()
puts l.lyear, l.lmonth, l.lday
puts Time.from_lunar(l.lyear, l.lmonth, l.lday)

l = Date.new(2009, 6, 4).to_lunar()
puts l.to_s()
puts Date.from_lunar(l.lyear, l.lmonth, l.lday)

2009年6月4日星期四

Mobile Over The Cloud

Apple MobileMe和Microsoft MyPhone都只支持特定平台,所以我的手机没法用,features倒是看起来很诱人。

Nokia Ovi用的是SyncML协议,理论上应该很多手机平台都支持。不过同步使用的密码需要以OTA的方式获得,非塞班手机能不能用没试过。支持同步通讯录、日历和记事本,貌似不错,可是服务器经常停机,频繁到影响使用的程度。

Google Sync则SyncML和ActiveSync两种协议都支持,S60上自然是用SyncML。有Google帐户就可以直接使用,能同步通讯录和日历。

因为我还没有忙到需要用计算机管理日程的程度,所以比较关注的只有通讯录一项。Ovi既然是Nokia出的,似乎应该对自家手机支持比较好才对,事实上也不尽然。

我先试了Google Sync,发现其不支持生日和备注字段。接着再试Ovi,生日备注是支持了,可是“手机(家庭)”字段却不会被同步。两家对vCard的支持只是半斤八两,都不算好。

Web端方面,Ovi差Google太多。Ovi的网站虽然比较华丽,但是速度太慢,经常停机,并且功能薄弱——连批量编辑和删除联系人的功能都没有。

个人信息中心这类东西,Google的优势应该比Nokia大很多。毕竟Google有Gmail、Gtalk,除了已经支持的Contacts和Calendar,还有Bookmark、Notebook,有心想做都是现成的。而且用Google,不必担心换了非Nokia非WinMo的手机就没法用。

在Google Sync进一步完善前(或许有得等),跟Ovi搭配着一起用或许是个不错的主意。

另,SyncML协议可以同步的东西其实很多,比如彩信和短信。不过我找了很久,都没有找到一家真正提供彩信同步功能的网站。国内有一家MyTT虽然号称可以支持,但实际上也不行。可以同步短信的倒是有好些,我试过之后发现也就O-Sync尚算可用。可是这家也不支持导出备份,总有一点点担心长期运营的问题。