Richard Stallman in Beijing

自由软件届的精神领袖和教父,Richard Stallman今天下午在清华科技园就进行了一场演讲。应该说,对RMS所倡导的自由软件思想有了更深入的了解。其中有几点印象深刻,free is for freedom, freedom has different levels, opensource != free software, commercial software != proprietary software, most linux distribution is not entirely free anymore。不过RMS在演讲中,提及了敏感的西藏话题,令人颇感意外和不悦。在演讲后的提问时段中,RMS简单带过了有与会者的疑问,只是表示说我们应该去看看那些我们看不到的东西。不知道RMS本人是否去西藏亲身体验和考察过。看来西方人普遍对西藏问题持有“成见”。另一个小插曲是,有位与会者和RMS就学校教育使用专有软件进行了“激烈”的讨论,且在教主面前痛陈中国教育专制、公民不自由甚至不能讨论自由,其论偏悖,众皆哗然,更令许多观众齐声喝止之。

拍了些照片:

Build stardict-3.0.1 on OpenSolaris 2008.05

Before you start the build, make sure you have setup your build environment, you may refer to my blog "Setup Indiana as Developer Desktop for Gnu/Gnome".

Download the source tar file from stardict.sf.net, and apply the patch,


$ patch -p1 < stardict-3.0.1-on-ss12-patch.diff
$ ./autogen.sh --prefix=/usr --disable-festival --disable-espeak; make
# make install

The major problem of this porting, is related to my last entry, "Function Pointer as Template Parameter in SunStudio C++".

Function Pointer as Template Parameter in SunStudio C++

//extern "C" void foo (void*);
extern void foo (void*);

template <typename T, void(*cb)(T*)> class Test {};
typedef Test<void, foo> TestVoid;

SunStudio C++ compiler will fail if I try to use the 1st prototype, and reports:

line 5: Error: Template parameter cb requires an expression of type void(*)(void*).
1 Error(s) detected.

No idea why this happens... 

SunPinyin for Mac 数据安装包发布

酷本社区的坛主HeaTeR同学今天发布了SunPinyin for Mac的数据安装包(分别适用于Intel和PPC架构),同时也提供了输入法引擎安装包的镜像下载,详见http://koben.cn/...。对不便访问境外服务器的用户,以及希望用软件包而非手工的方式来安装数据文件的用户,提供了很大的方便。

而且HeaTeR同学一直热心地帮助我们进行测试,常常是我刚有更新,就立刻收到他的许多bug反馈。记得上周末下午,在一两个钟头内,我就fix & repackage & upload了好几次,而HeaTeR也一直频繁而耐心的re-login了好几次。不仅如此,HeaTeR同学对用户体验提出了很多精妙的见解,对我们在下个release中改善用户体验帮助甚多!SunPinyin for Mac的移植逐步达到可用的程度,有赖于HeaTeR和Hongguang同学、以及各位的大力支持,非常感谢!

iVanilla for iPhone and iPod Touch

lukhnos大侠今天发布了在iPhone/iPod Touch上开发输入法的经验,“iVanilla: 一個已經停止的 OpenVanilla 實驗”,这是目前唯一可以见到的关于在iPhone上开发输入法的资料,在此之前一直都是不传之秘。零星地听Huajun说过,有反汇编高人协助他得出接口,且在每次iPhone固件升级之后,都要重新反汇编来找寻接口上的变更。

不知道将来是否有机会和精力,把SunPinyin porting到iPhone上。而且由于iPhone使用的触摸屏软键盘容易造成误输入,如果能支持拼音的自动校正(可以用editing distance,如果有误输入的统计数据就更好了),还是很有必要的。反而长句的输入并不是那么迫切。

Eco-black for mourning the victims in SiChuan Earthquake

Just for the bloggers who are using the eco theme. Refer to my customized css file here (you may not want to directly use my version, since I have other modifications), and search the string 'SICHUAN' to find out the changes. You may also need a black header image file, ecoctat1atop-black.gif.

For IE, you only need one css instruction, and it also affects figures, though it does not work for Firefox or Safari:

 

html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }

 

SunPinyin for Mac Leopard Updated (4)

此次更新的主要内容包括:

  1. 提供了Universal Binary的安装包
  2. 支持用CapsLock切换中英文(可配置)
  3. 加入了切换中英标点的菜单项(快捷键为ctrl+.)
  4. 加入切换全半角的菜单项(快捷键为shift+space)
  5. 修改了几个小的bug

另外发现一个问题,虽然我在interface builder中指定“全角符号”菜单项的等效键为Shift+Space,但是重新将XIB文件读取进来,或者把编译生成的NIB文件实际部署之后,快捷键的显示信息就没了。我试了用 替换,结果只能看到Shift的符号(因为空格看不出来)。

大家可以从这里下载最新的安装包。在安装完成之后,请到http://src.opensolaris.org/.../sunpinyin/ime/data下载lm_sc.t3g.i386以及pydict_sc.bin.i386(如果是PowerPC请下载后缀为'.sparc'的对应文件),将'.i386'(或'.sparc')的后缀去掉,并拷贝到/Library/Input Methods/SunPinyin.app/Contents/Resources目录下。

SunPinyin for Mac Leopard (Intel) Updated (2)

这次更新的主要内容是在首选项中加入了自定义候选个数、字体、颜色等。

实现对颜色和字体的支持时,还颇费了些周折。在preferences.nib中加入一个NSColorWell,部署之后,点击这个控件就是无法将颜色选择对话框给显示出来。四处求教外加自己探索,发现要将这些Window的“Hides On Deactivate”属性设置为NO,原因是输入法是一个始终在后台运行的程序。

随后感觉到,要响应字体设置的动作,还是需要由自己来显示preferences对话框。一个有趣的地方是,虽然我在Interface Builder中将首选项菜单项的响应方法指定为Delegation类的showPrefPanel:方法,但是实际上IMKServer试图在InputController中寻找并调用这个方法。所以我在InputController中定义了一个同名的方法,然后将调用转发给Delegation类的方法。