Ibus 输入法

Ibus 输入法

由于种种历史遗留问题,本人惯用的汉字输入习惯和大多数人不一样:双拼输入法,并且是智能 ABC 风格的。这也就决定了我选择输入法的时候首先看它是不是支持我习惯的风格。以前 Google 推出中文输入法的时候,我的反应就很慢,因为不确定它是否支持双拼,后来发现它对智能 ABC 风格的双拼支持的很好,我在 Win 下的输入法就换成了 Google 的。

听说 Linux 下的 Ibus 输入法已经很久了,也是因为同样的原因没去尝试。搜索 “Ibus 双拼”,往往得不到有用的信息。今天在 Ubuntu 中文社区看到一张,发现已经有双拼支持,才让我下定决心尝试一下。

Ibus 已经被打包到了 ubuntu-cn 的源里(注意,不是 ubuntu),可以直接 apt-get install ibus-pinyin。由于我的 locale 是 en_US.UTF-8,所以 im-switch 不好用,只好将输入法选择写到 ~/.profile 里:

XIM=ibus
XIM_PROGRAM=/usr/bin/ibus
XIM_ARGS=""
GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
DEPENDS="ibus"

然后 re-login。网上有各种配置方法,其实我也不知道该怎么写才对,但输入法的启动不就是 X 启动时运行一个脚本嘛,从 /etc/X11/xinit/xinput.d/ibus 拷贝出来的东西总该没错。

第一次启动输入法需要选择 engine,这一点要比 scim 好,scim 默认就把乱七八糟的 engine 都给你配置上,还需要一个个去删除。然后再找配置双拼的地方,开始怎么也找不到,为什么不在 preferences 里呀?最后才想起来去看看那个输入法的语言条,才发现和 Google 拼音一样,启动配置在语言条的最后一个图标。

然后就开始码字,使用感觉是相当的爽的,界面比 scim 好看,用户词库的记忆效果貌似也比 scim 好。而且 scim 在处理双拼时候一直有一个问题:只显示键字母而不显示拼音。就比如“将”这个字用 ABC 双拼打是“jt”,在 scim 里拼音栏只会显示“jt”,而不是把“t”转换成“iang”,ibus 就没有这个问题。

目前来讲,ibus 最大的问题是反应有一点点慢,当打字速度快的时候,可能最后一个键没有记录上就把前面的输出了。比如打“将”时,jt空格,如果空格敲得太快,可能出现的是“就t”,大概也跟我使用的机器比较慢有点儿关系。这篇文章就是用 ibus 敲的,速度还可以忍受。

我把 scim 给删掉了,准备使用 ibus 一段时间,看看它是不是会引起一些程序的工作不正常。对 scim 引起的 KDE 程序崩溃和输入法不可用的毛病我已经容忍很久了,早就祈祷着到 Google 工作的 suzhe 能够继 scim 之后推出 Google 拼音的 Linux 版,目前看来 ibus 大概可以满足一下我的大部分需求。

文献管理软件 JabRef 快速入门

摘要:这篇博客主要介绍文献管理软件 JabRef 及其使用方法,适用对象为 LaTeX 用户、非 Windows 操作系统用户和用不起 EndNote 的 Windows 用户。

我曾经非常愚蠢地认为手工维护自己的参考文献库就可以了,但随着看过论文的增加,文献的管理成为一件痛苦的差事。最近才领略到使用文献管理软件的方便。 JabRef 的中文教程比较少而不全,所以就写了这篇博客,简要介绍一下这个软件的使用方法。

JabRef 图例

目录
1. 软件介绍
2. 建立数据库
3. 导入文献条目
4. 管理文献条目
5. 与 vim 结合使用
6. 其它应用
7. 结语

1. 软件介绍

JabRef 是一个开源的参考文献管理软件,使用 Java 语言编写,所以天生具有跨平台特性,通用于安装有 Java 支持的 Windows, Linux 和 Mac,软件主页在:http://jabref.sourceforge.net/。它可以很方便地管理下载到本机的文献,生成 BibTeX 文献数据库,供 LaTeX 或其它软件使用,可以与 Kile, Emacs, Vim, WinEdt 等多种软件结合使用。

JabRef 适合什么人使用?总的来说 JabRef 最大的特点就是使用 BibTeX 格式的数据库,所以它最适合 LaTeX 用户使用;如果仅仅使用它的管理功能,也可以用于本地电子书的管理;对于使用 M$ Office 写论文的用户来说,EndNote 是最好的选择,它能集成到 M$ Word 中,所以不推荐使用 JabRef。

JabRef 当前最新版本是 2.4.1,如果你发现自己的 JabRef 不支持某些特性,最好检查一下版本信息。本文使用 Linux 下的 JabRef 演示,其它系统下应该没有什么不同。

2. 建立数据库

JabRef 的文献数据库是纯文本的 bib 文件,可以将该数据库文件放在该主题文献的目录下。比如要建立一个 p2p 方向相关文献的数据库,只需建立一个 p2p 目录,在 JabRef 中选择 File->New Database,然后 Ctrl-s,将该数据库起名 p2p.bib,保存在 p2p 目录下。然后将 File->Database properties 中的 Database Encoding 设置为 UTF-8(这是因为论文的作者可能是法国人和我们会经常用中文写些注释,所以最好用国际化的字符集), Directory 都设置成点号 .(表示当前目录,这样你就可以将整个目录打个包,扔到另一台 Linux/Win/Mac 机器上照常使用)。

3. 导入文献条目

文献数据库的内容自然是一篇一篇的论文,每篇论文在数据库中占一条记录。那么如何添加论文呢?自然不必全部手工添加,几乎所有的数据库在提供论文下载的同时都有该论文 citation 信息的下载,下面这张图上是计算机科学类常用数据库网站的 citation 下载链接示例。也许你以前不知道它们是做什么用的,但你总能在文章下载页面的某个地方找到它们。

Citation 下载链接

聪明如你,肯定知道该怎么做吧。点开 citation 的链接,将内容保存为相应的文件名。比如 BibTeX 格式的 citation 信息,将其保存到名为 xxx.bib 的纯文本文件中,然后到 JabRef 里选择 File->Import into current database,将该文件导入当前数据库,你就会发现数据库中多了一条记录。当然,JabRef 支持很多 citation 信息格式,但是既然 JabRef 采用 BibTeX 格式管理数据库,我们还是尽量下载 BibTeX 格式的 citation。

每次只导入一条记录未免太麻烦了些,由于很多参考文献信息都是纯文本格式的,那么我们可以将很多条记录分段拷贝到 xxx.bib(或者 xxx.ris 等) 里,然后集中导入。

如果你已经下载到了论文的 pdf 文件,知道论文的标题名和数据库名,那么你就不用再去网站下载 citation 信息,可以直接在 JabRef 中用标题名搜索该论文。比如你知道论文标题叫做 A Survey of xxxxxxx,可以从 IEEEXplore 数据库中获得,那么你可以直接在 JabRef 中选择 Web search->Search IEEEXplore,然后用标题名搜索,点 Fetch,就可以直接得到 citation 信息(但搜索可能出现错误,那么你就需要用 Google Scholar 并且到论文网站上下载了)。

4. 管理文献条目

文献数据库的条目建立起来了,但是这只是一些 citation 和 abstract 信息,那么如何将下载下来的论文 pdf/ps 文件和它们对应的条目关联起来呢?

只需要将下载下来论文的文件名保存成特定的格式,一种方法是文件名中包含 BibTeXkey,如果是 A. Yao 在 2005 年发表的文章,文件名就起为 xxx-Yao2005-yyy.pdf;一种方法是文件名包含论文名。然后修改匹配规则:Options->Preferences->External Programs->Use Regular Expression Search 文本框,比如在当前目录下匹配包含 BibTeXkey 的文件:“./.*[bibtexkey].*\\.[extension]”,在当前目录下匹配包含论文名的文件:“./.*[title].*\\.[extension]”,在子目录中匹配包含 BibTeXkek 的文件:“**/.*[bibtexkey].*\\.[extension]”。如果我们把文献数据库 bib 文件和 pdf 文件放在同一目录下,只需要使用在当前目录下匹配即可。

文件名和匹配关系修改好了,那么我们就可以将论文记录关联到文件了。如果是一次导入很多文献,可以使用批量处理:Tools->Scan database->Sychronize file links,但是同步的时候不要选择 Check existing file links,那样会很慢;处理单一记录的方法是:双击某论文条目,或者选中后按 Ctrl-e,就可以编辑该条目。进入 General 选项卡,在 File 条目后面点 Auto,JabRef 就会按照匹配规则搜索匹配的文件,关联到该条目。如果能搜索到 pdf 文件,关联后该条目的前面会出现一个 pdf 图标,点击该图标,就可以直接打开该论文的 pdf 文件。除了自动匹配以外,也可以使用 Auto 旁边的 + 号手动添加文件。

当然了,文献条目的其它信息我们也可以编辑。比如 ACM 的 BibTeX 中往往不包含摘要信息,我们可以在 Ctrl-e 以后的 Abstract 选项卡中添加对应论文的摘要信息;Springer 的 ris 信息往往过于简单,我们也可以通过网页信息添加一些条目;如果你对某篇文献有深刻印象或者想记一下笔记,可以在 Review 选项卡中记录下自己的想法。

在一个文献数据库中,文献还可以分组。View->Toggle groups interface,可以新建、修改分组,这样有一个好处是可以将该数据库所属大方向的很多小方向分组浏览,对初期准备了解研究方向大致轮廓的研究人员很有帮助。

5. 与 vim 结合使用

前面说过,JabRef 可以和很多软件结合使用,但是有一些软件我并不熟悉,所以这里仅仅介绍一下 JabRef 和 vim 关联使用的技巧。

JabRef 是使用 vim server 和 vim 通信的,所以这要求双方使用同样的 vim server 名。在 JabRef 一端,Options->Preferences->External Programs->Vim Server Name 文本框中就是 vim server 名,你可以使用默认的 vim 服务器名 vim,也可以修改成任意名字,比如 solrexvim;在 vim 一端,编辑 LaTeX 文件时不要使用通常的命令启动 vim,要加上 vim 服务器名,比如 vim --servername solrexvim --remote-silent xxx.tex,这条命令的意思是:使用 vim 连接到服务器 solrexvim 修改 xxx.tex 文件,如果该服务器不存在,就创建它。

等 JabRef 和 Vim 都启动了以后,如果在编辑 tex 文件的时候想加入某条文献的引用,只需要在 JabRef 上方的工具栏中先选择出 Vim,然后再点击该图标,vim 光标所在位置就会自动加入该文献的引用。

6. 其它应用

总的来说,JabRef 的作用主要是参考文献管理工具,但是也可以使用它来做一些其它的工作,比如个人数字图书馆。每个人电脑里可能都有一些电子书,有的人特别多。为了查阅方便,一般都会把电子书分门别类放到一个目录树中,每次找文件都要进到很深的目录下;有时候为了系统兼容性,避免使用中文文件名,理解一个文件对应哪本电子书成为一件痛苦的事。如果使用 JabRef 作为文件管理工具,就可以根据作者,书名排序或者直接检索,会方便很多。

7. 结语

本文简要介绍了 JabRef 的基本使用方法。我也是刚刚接触这个软件,对其体会并不深刻,可能 JabRef 还有很多特性可以加以发掘,就留给大家一起探索吧。

2009年6月6日添加:JabRef 在 2.5beta 版之后已经可以支持中文,中文界面是由我翻译的

A Chance For Linux and Freeware

连着忙了几天,今天闲话几句。

关于微软正版验证

我家希希说:“我要被黑屏了,怎么办呀?我要学 Linux!”

我说:“没关系,你把自动更新服务关掉就行了。”

我家希希说:“我还是想学 Linux!”

微软准备在 2008 年 10 月 20 日对中国用户启动的 WGA 计划这几天被吵得沸沸扬扬,搞得几乎人人自危,生怕被黑屏了。本人的评论如下:

  • 对此措施,我持欢迎态度。这件事起码给中国的盗版用户提了个醒:软件是有知识产权的!用盗版的操作系统很开心,用盗版的应用软件也很开心,到最后是中国整个落后的软件产业不开心,软件民工们也不开心。

  • 对于效果,我持保留态度。我相信中国盗版产业中广大劳动人民的智慧!

  • 对于影响,我持乐观态度。这是一个 Linux 和免费软件的机遇。此次 WGA 计划一出,势必会督促那些已经有学习其它操作系统愿望的用户真正动起手来,也会使那些使惯了盗版 Office 的人考虑一下免费的优秀国产软件 WPS Office,进而认识到许多优秀的免费软件并不比收费软件差

最后友情提醒一下,WPS Office 2007 目前已更新到支持 M$ Office 2007 文件格式( .docx, .xlsx, .pptx ),永中也于本月 13 号推出了免费的永中 Office 2009 个人版,支持 Windows 和 Linux 平台;免费的国产软件 Foxmail 和"进口软件" Thunderbird 都可以替代 Outlook ; Ubuntu 8.10 Linux 操作系统还有 14 天就发布了。

关于看论文

最近被老师逼着快速浏览了大量论文,发现自己以前看论文的效率还是太低。眼高手低的毛病总是改不了,做研究还是要潜心进去。

关于看书

每天睡前逼着自己看一会儿书效率挺高的。豆瓣上我在读的书已经超过二十本了,平日很难分出大块时间看,目前已经利用睡前十分钟解决了两本。躺床上用台灯看书的感觉蛮惬意的,置身于黑暗中的一小片光明,仿佛又回到了中学时代。当然这也得益于现在宿舍的环境布置,床头就是写字桌,要是像以前在中关村时住上铺的话,势必就会影响室友的睡眠了。

关于 writeos

九月份更新了两次,十一假期无暇写字,第三章到现在还没写完,我希望十月底能完成发布第二个版本。上个星期一个墨西哥的小伙子加我 Gtalk,问这本书的问题,开始我还以为是华裔,后来知道人家根本不懂中文,没办法只好推荐他去看代码注释。也许等我再完成两章之后,会和某些朋友合作开始将它翻译成英文。

2008年10月之黄金周

十一黄金周长假结束几天了,但回来之后时间一直安排得很满,没空更新博客。今天北京下了点小雨,羽毛球打不成,轮滑也玩不了,就写几个字吧。

继买火车票不顺之后,我再次经历了凄惨的火车旅途。9 月 28 号那天赶到北京火车站的时间有点儿晚,T65 已经开始检票很长时间了,当我赶到站台上时,发现车厢门口仍然挤着一些人。我本以为人还没有上完,谁知道走近一看却发现是挤不上去,整个车厢跟上班高峰期的北京地铁似的。懊恼迟到之余,总得往上挤呀,于是开始一点一点往里蹭,整整蹭了半个小时,只蹭进去一米!还好蹭进去了一米,关车门的时候没把我关在外面,T65 的乘务员太厉害了,愣是把那么多人给劝下来,准时关上了车门,按点开出了北京站。

发车之后乘务员打开车厢内厕所门,我和另外两个人就躲进了厕所里,期间被上厕所的人赶出去几次,但最后还是在里面呆了七个小时。自从我五岁以后,就再也没坐过那么挤的火车,车厢里站的地方都没有,相比而言还是厕所里舒服一些。但随之而来就有一个问题,困了怎么办?因为厕所里有三个人,只能站着睡觉,那个痛苦呀!我只能用手吊在窗户的栏杆上打瞌睡,稍微一深睡,腿马上支撑不住,膝盖一弯就要往下掉。当时我真的羡慕那些四条腿的马啊牛啊,它们真厉害,能站着睡觉。

这种情况一直持续到第一个停车站,徐州。站了七个多小时到凌晨五点,我腿疼得实在受不了了,就趁在徐州停车时人刚下完,而上车的人还没进来之时,冲到车厢中部,找了一个相对大一点儿的位置,打开我带的小马扎,坐了下来。好歹算是相对舒服地趴在自己腿上睡了两个小时,这时候坐得屁股又开始疼了。于是站站坐坐,坚持到九点到南京,总算能解放了,当时那个心情舒坦啊!

在南京的生活倒是很轻松啦,无非是陪女友逛逛街、吃吃饭,没什么好说的,也不太好说 :)

回京的 T66 车票女友早已帮我买好,所以旅途还算顺利。托曹磊同学的福,咱拿的硬座车票也能混进软座候车室候车,所以上车时候没遇到什么困难,车厢里人也远不如来程时多。曹磊和我没有买到同一节车厢,一夜无事,坐着睡到天亮。只是到天津以后他旁边的人下车,我们才坐一起聊了聊天。

下车后出北京站时,居然偶遇胡昊(就是小百合 BBS 上的 phoenixinter 啦),此人可是我仰慕已久的南大计算机的算法牛人呀!(baosheng 不要觉得不爽哈)他在港科读 PhD,目前在 MSRA 实习,做一些搜索引擎的研究课题。排队等安检和乘地铁时聊了几句,算是认识了一下久仰的名 ID 真人。

10 月 6 号早上到的北京,赶到实验室坐了一会儿,下午还是没坚持住,在宿舍睡到近 5 点,把整个下午的班都给逃了。我的黄金周就在无比安逸的睡眠中结束了!

Drown in Papers

实验室的 DNS 服务器挂了,没办法上网,顿时觉得挺没意思,就骑车回宿舍了。最近几天的效率挺低的,看不进去文章。汲汲地妄想早点找出点问题来做,却总是不得其门而入。偶尔稍微想得远那么一点儿,就发现别人早已写过文章。上天那,给我点儿灵感吧!

这几天北京的气温骤降,已经到了着长袖长裤的时候了。晚上打羽毛球时,好不容易热出点汗,被冷风一吹,鸡皮疙瘩都要起来。但心境却不能因天气而冷却下来,杂杂呀!

前天烦躁时看了篇我大学导师写的武侠小说《龙飞凤舞》,也是该先生闲暇时所作。身为数学系副教授,拥有数学博士和计算机硕士头衔的他,今年却又考取了历史系的博士,真是颇觉意外。不知道人生这路,到底还能有几个新起点?

其实浮躁的另一个原因也来自于“十一”假期的临近。无论在公司或是学校,一个长假总是会影响成员的效率。谁也不想在长假前给自己留一个未完成的状态,所以总是盼望着能在长假前结束已有的工作且不愿开启新工作。

不管如何,长假要开始了,我要回南京散散心,暂时忘掉这些事情吧。

维度:数学漫步

开放数学电影《维度:数学漫步》(Dimensions: a walk through mathematics)是一部两小时长的 CG 科普电影,共分 9 个章节,讲述了许多深奥的数学知识,如 4 维空间中的正多胞体、复数、分形(fractals)、纤维化理论(fibrations)等等。这部电影以创作共用 署名-非商业用途-禁止演绎 3.0许可证发布,你可以自由下载和复制但不允许修改或商业使用。————援引 Solidot

这部电影我已经下载下来好长时间了,今天才想起来看一点儿,发现有点儿意思。请看这部电影开篇的话:

My name is Hipparchus. I lived in the second century before the birth of Christ, and I don't think I'd be bragging if I told you that I am the father of the sciences of Geography and Astronomy. You know, I wrote more than 14 books but unfortunately they have almost all been lost in the mists of time. I was responsible for the first catalogue of the stars, founded the field of mathematics called trigonometry and even invented the astrolabe. Fortunately, my brilliant successor Ptolemy, three centuries after my time inspired by my work, took up where I left off, and nowadays historians sometimes can't determine what was my contribution and what was his.

我叫喜帕恰斯,生活在耶稣诞生两个世纪之前。如果我说我是地理与天文学之父,请不要觉得我很狂妄。你知道的,我至少写了 14 本书。但不幸的是,它们几乎都遗失了,我曾为星星编写了第一本目录,开创了数学中的三角学,还发明了星盘。不过幸运的是,我杰出的后继者托勒密,三个世纪以后在我的工作启发之下,接手了我剩下的活计。如今,史学家们都无法确定,究竟哪些是我的贡献,哪些是他的。

这不是一部常规意义上的电影,而是用数码图形手段制作的动画。里面并没有什么主人公,制作者通过动画图形来阐述对数学维度的理解。这个电影的网站是:http://www.dimensions-math.org/,网站上提供有下载链接。另外,中国科学院数学研究所的 FTP 也提供该影片英语和法语版本的下载,详情请点击:http://www.math.ac.cn/Dimensions.htm

关于播放

有很多人在播放这部电影时候遇到问题,暴风影音是没办法播放这部电影的,Windows 媒体播放器可以播放但无法加载字幕。这里我推荐两款非常优秀的开源播放器,SMplayerVLC,它们都有 Linux 和 Windows 版本。他们都能播放这部电影,但是由于本片中文字幕使用 UTF-8 编码,字幕加载可能有一些小问题。下面是使这两款播放器能够正常显示本片中文字幕的设置(它们的菜单项在 Windows 下和 Linux 下几乎没有任何不同)。

SMplayer:
Options->Subtitles->Default subtitle encoding: UTF-8
如果是 Windows 系统,可能还需要在 Options->Subtitles->Font 中选择一下系统字体。

VLC Player:
Settings->Preferences->Video->Subtitles/OSD->Text renderer->Font:
Linux(Ubuntu) 下找到:/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf(可以换成系统中其它的中文字体)
Windows 下找到:C:\WINDOWS\Fonts\simsun.ttc
Settings->Preferences->Input/Codecs->Other codecs->Subtitles->Subtitles text encoding: UTF-8

PS: 特别推荐一下 SMplayer

我在 Linux 下和 Windows 下现在都是使用 SMplayer 播放器(不用提醒我它和 mplayer 关系)。除了它的界面在两个系统下保持一致,完美支持 GBK 编码字幕之外,在播放上还有几个好处让我觉得特别顺手(可以说是我原来用暴风影音时候梦寐以求的特性):

一,支持三种速度的快进,分别用左右,上下方向键,上下翻页键。这样想跳过序幕时很方便;
二,支持以行为单位上下翻动字幕,当字幕快了慢了只需要按两个键就能调整过来;
三,自动纪录最后播放位置,再打开时自动跳到上次播放中止处;
四,normalize声音很方便,当视频声音太小时,normalize一下就舒服多了。不是其它播放器没这个功能,只是太难找到,比如暴风用这个功能要过几层菜单。

用 Linux 命令行工具自动追踪车票信息

前一篇博客中说到我买票失败的经历,也充分表达了我想买一张二手座票的意愿。怎么办呢?只好到网上各二手火车票信息平台去找了。心肠不好的人肯定幸灾了祸地在想:“哈哈,这个倒霉的小伙儿该对着浏览器不停地按 F5 了!” 你才 F5 呢,你们全家都 F5。那是典型的 Windows 用户的想法,不要以为 Linux User 跟你一样傻。

前面都是玩笑话 :),本文只是想介绍一下在 Linux 下有什么更方便的方法来追踪网页发布的信息,以展示 Linux 的命令行工具有多强大(也响应一下 Eric 师兄的文章:完全用键盘工作-3:常用的命令行工具)。

我们就拿火车网为例,通常情况下 Windows 用户为了在火车网上找一张二手火车票信息,会不断地到查询页面刷新,看有没有自己需要的车票。而一个 Linux 用户的做法会有何不同呢?一般来讲他会用工具来做这件事情,而不是在那傻刷,浪费时间。

怎么做呢?有很多种方法,我这里来介绍一种比较好玩的方法,用脚本自动跟踪信息,如果有结果就发送一个 Gtalk 消息给自己。

首先,写一个命令行发送 Gtalk 消息的 Python 脚本。其实我本打算用 freetalk 来做这件事的,奈何咱学识浅薄,不懂 freetalk 脚本该怎么写,也不知道 scheme 语言为何物。没办法,只好用 Python 来做了。下面内容就是用 Python 发送 gtalk 消息的脚本(需要 Linux 上装有 python-xmpp):

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Usage: gtsent.py "SOMEBODY@gmail.com" "Message"

import xmpp
import sys

login = 'USERNAME' # without @gmail.com
pwd   = 'PASSWORD'

cnx = xmpp.Client('gmail.com', debug=[])
cnx.connect( server=('talk.google.com', 5223) )
cnx.auth(login, pwd, 'python')

cnx.send(xmpp.Message(sys.argv[1], sys.argv[2]))

将以上内容保存为 gtsend.py 文件,chmod u+x gtsend.py,修改 USERNAME 和 PASSWORD 为你的另一个非[常用] gmail 帐户名和密码。这样执行 ./gtsend.py SOMEBODY@gmail.com "Message" 就可以给 SOMEBODY@gmail.com 发送消息了(当然了,前提是 SOMEBODY@gmail.com 好友列表中有 USERNAME@gmail.com,请注意这里大写只是为了方便阅读)。

其次,写一个 Shell 脚本,用来追踪网页,过滤信息并发送 gtalk 消息。这个就更简单了,使用火车网提供的查询表单接口,用 wget 抓下来,再 grep 一下即可,bash 脚本如下:

#!/bin/bash
URL="http://www.huoche.com.cn/piao/2piaoserach.asp?ICheci=T65&type=0"
RESULT=`wget -O - $URL | iconv -f gbk -t utf8 | grep -i -e "t65.*南京.*硬座\
.*2008-9-28"`
if [ $(echo $RESULT | wc -c) -ge 5 ]
then
  /home/solrex/gtsend.py "YOURSELF@gmail.com" "$RESULT $URL"
fi

将该脚本保存为 get_tickt.sh,chmod u+x get_tickt.sh。这个脚本的工作流程是:wget 以 GET 方式提交对 T65 转让车票的查询,得到的结果输出到标准输出,然后将 GBK 编码转换为 UTF8 编码,再 grep 看是否含有“T65 南京 硬座 2008-9-28“关键词。如果有的话,用 gtsend.py 发送一个提醒消息给自己 gtalk 帐户;如果没有结果,什么都不做。

最后,将上面脚本加入 cron 列表每 10 分钟定时执行一次。 执行 crontab -e,添加下面一行即可(注意需要修改到该脚本的路径):

*/10 * * * * /home/solrex/get_ticket.sh

然后呢,你就可以高枕无忧,开着 Gtalk 等消息吧。当然,不一定能等得到 :(,唉,对我们来说, No news is BAD news!

当然,根据不同情况,你可以把追踪的信息换成别的东西。比如追女孩子的时候,可以用上面方法来实时跟踪她的最新博客,实时跟踪她在 BBS 上的留言,永远保持自己沙发的地位,说不定人家就感受到了你的关心,然后...具体方法我就不教了哈...

为了一张到南京的火车票

今天北京开始预售 9 月 28 号的火车票,然后我做了三个愚蠢的决定:

1. 4 点半到售票点,占到第一个位置却没有坚守。被售票点的人忽悠了一下,说他们那网速慢,想买到南京的票不太容易,不过硬座的话还有可能买到。然后我就犹豫了,决定还是坐地铁到北京站买票。

2. 地铁 1 号线转 2 号线坐错方向。1 号线转 2 号线时,正好两边都有车停,我也不记得怎么看的方向指示盘了,糊里糊涂地就坐上到阜成门方向的车,上车即发现不对,只好在阜成门下,到对面坐车。

3. 在北京站选择了一个错误的窗口排队。5 点多到北京站,其实人还是蛮少的,于是选择了一条短的队。但是,在我排了一个小时,已经进入前十位以后,万恶的北京站将该窗口关闭。后面可是有七八十号人啊,说关就关了。不得不重新选择一条,这时候已经 6 点半了,距放票时间 7 点只有半个小时,而这时我的前面至少有五六十人。(话说也奇怪呀,这两年我排队净排要关窗口的队了,在家,在南京,在徐州,在北京,怎么着得有五六次碰到这种情况,天那,难道 rp 真的有问题?)

结果显而易见,没买到自己想要的票,不过还好落了张站票。哪位兄弟姐妹买到了北京到南京 28 号 T65 的座票,计划变更时一定要想着我!!!

在北京,过节时想买张票真难啊!

PS:为了让大家快速阅读流水帐文章,我决定以后对此类文章的关键语句加黑,以免浪费大家时间。

丛林法则

今天白银给我说,他的某室友跟他感叹了一句话:“要是我有你那么用功,我一年半就能毕业了。”我给他说,碰到这种人,你只能一笑了之。

没想到很现的是,晚上我也让人给整了一把。大家一起下去打球,有两个人加我们,一个老外,一个 30 岁左右的中国人,配双打。他们两个貌似比较熟,他们两个打的确实也蛮好的,我和那中国人配对,打了两局,输了两局。大概和我配对那大哥觉得输了很不爽,就开始指责我,我不小心丢了一个球,他就讽刺这么好的球都没接到,我说手腕有伤使不上劲,他就开始唠唠叨叨说不是手腕的问题。然后接着我一个接发球被球场旁的灯晃到了眼睛,我说晃到眼了,他那面就来劲了:“为什么总是你晃到眼,为什么不晃别人?”我实在无语了,大家都是来打球的,配对不说尽力合作却老指责别人。郁闷地不行,就发飙了一下,对着他吼了几句,然后下场不打了。(我唯一后悔的是,这是我们占的球场啊,为啥我没赶他走自己下场去了?看来愤怒的时候真的很难保持理智 ^_^)

我后来想了想,这种事情怨别人没礼貌也没用。之所以会发生这类事情,关键还是在于咱打的不够好,在运动场上仍然是遵循丛林法则,谁能赢球谁就说了算。假如我在球场上能老得分,怕是没人会埋怨我。

每次到火车站买票或者坐车,“丛林法则”这个词总会浮现在我脑海里。在黑压压的一群人中拥着往前挤,跟一群动物抢吃食有什么区别?你只有自己努力去争、去抢,变得更强,才能得到想要的。其实引申到学校里也一样,不要想着和导师有什么公平的交流。除非你能成为导师项目中的关键人物或者能发牛 paper,否则和老师做对等的交流就是奢望,他能不鄙视你就已经足够 nice 了,所以想获得心理上的平衡,还是努力去证明自己吧。

男人是在鄙视目光的激励下变强的!

豆瓣好友地图

想知道您的豆瓣好友都分布在地球的哪个角落吗?想把这些家伙都揪出来标记在一张地图上吗?也许您想尝试一下这个东东:豆瓣好友地图。(本文最下面就是 solrex 的豆瓣好友地图) 这是一个完全以兴趣为引导的小项目,欢迎您提出您的宝贵建议来帮助完善它,当然了,如果您能顺便在博客里进行一下推广就更感谢了!

LionGG 是我的一个好朋友,他和 Classicning 共同开发了这个豆瓣好友地图。很遗憾那,我很久以前就有了这个想法,而且曾经眉飞色舞地向室友描述了这个应用,只是苦于时间和知识的局限没有实现,否则这个页面就会 host 在 solrex.cn 下了 :)

豆瓣好友地图的开发基于豆瓣、Google Map、Google Chart 和 HeatMap 提供的 API 接口。如果您是 GIS 的爱好者,或者有足够的好奇心,您也可以把这个页面的 js 脚本下载下来看个究竟,没准会找到对您有用的东西。

它的作者 LionGG 毕业于南京大学地理信息科学系,目前在中科院地理所攻读博士学位。此公平常有事儿没事儿爱写一些有关地理信息系统(GIS)的文章,也是一个积极的“社会观察者”,他的博客在这里,感兴趣的话就去逛逛吧!

豆瓣好友地图

一个对 Tor 的新型重放攻击方法

Tor 是一个旨在抵御流量分析的匿名网络访问服务,它也可以被用为穿透网络 censorship 的工具,它的官方网站为:http://torproject.org (很可惜的是,大陆用户已经无法正常访问这个站点了)。

由于 Tor 在中国的使用还算比较广泛,我的朋友中也有不少使用它作为穿墙工具的,我想关于它的安全问题应该有人感兴趣。这篇博客将简要介绍 ICC(International Conference on Communications, 世界通信大会) 2008 的一篇论文 A New Replay Attack Against Anonymous Communication Networks 中描述的对 Tor 匿名性的一个很有效的攻击方法,这篇论文荣获了 ICC 2008 Best Paper Award(好好好好羡慕啊~~~)。

Tor 网络是由洋葱路由器(下简称路由器)、目录服务器和洋葱代理服务器(下简称代理服务器)组成的。所谓洋葱路由,就是用户发出的消息会被多层加密,每到一个路由节点,路由器解密一层来获得下一跳信息,就像剥洋葱一样一层一层解密,到最后一层才是用户的原始消息。

Tor 的工作方式是经过多次转发消息来保护原始地址不被侦知。其进行一次通信的流程是:用户在 PC 机上安装洋葱 socks 代理服务器,设置浏览器或应用程序通过本机的代理服务器访问网络;代理服务器从目录服务器得到可用的路由器列表,在用户发起 TCP 请求时,本机代理服务器选择中间通过哪些路由器转发消息,然后将用户的 TCP 包多层加密后发送出去;转发路径上经过的路由器对消息逐层解密转发,最后一跳的路由器(出口路由器)和目的主机进行正常的 TCP 通信,然后将返回的消息按照原始路径发送给用户。

这样入口路由器知道通信的发起者却不知道接收者,中间路由器只管转发,而出口洋葱路由器知道通信的接收者却不知道发起者,这就保证了用户访问网络的匿名性。

A 文中采取的攻击方法是:假定攻击者可以控制入口路由器和出口路由器,由于 Tor 采用计数器模式的 AES 加密算法(能否解密和包的顺序有关),那么在入口路由器处重放已经发送过的消息(包的顺序被打乱),就会造成出口路由器解密失败,收到错误的数据包。由于攻击者控制了入口和出口路由器,那么通过将入口路由器重放消息的时间和出口路由器检测到错误的时间联系起来,就能确定这次通信的源和目的地,破坏了网络访问的匿名性。

更坏的是如果消息的重放发生在用户通信的末尾,在用户结束通信后和 TCP 连接断开之间,用户甚至都不知道他的网络行为已经被发现。

虽然假定攻击者可以控制入口和出口路由器看起来是一个很强的条件,但 A 文中通过实验验证了拥有洋葱路由网络的路由器并成为入口并不算很难(Tor 网络本身就是由许多志愿者的主机组成的),再加上一个修改过的代理服务器软件,完全可以实现对使用该软件的用户的路由选择策略的控制。如果攻击者拥有足够的资源(比如某些强力部门),使用足够多的主机加入 Tor 网络,根据 Tor 的路径选择策略优化这些路由器的分布,我觉得也有可能实现上述条件。

总的来说,相比与其它一些对匿名网络流量进行监控的攻击方法,A 文的攻击是相当简单直接并且高效的。我简单查看了 Tor 软件的 ChangeLog,没有发现它对这一攻击进行有针对性的修改(也许是我看的不认真)。

所以呢,对中国用户来说,通过 Tor 来穿墙是可以的,但是过于相信 Tor 的匿名性并且用其去发布敏感信息或者进行其它不法行为是要三思而后行的,这也就是为什么 Tor 软件自己也说:
This is experimental software. Do not rely on it for strong anonymity.

Google 词典和 Gtalk 翻译机器人

由于我工作的机器配置实在太低,1.8GHz CPU, 256M 内存,40G 硬盘,跑一个 Ubuntu 也是非常吃力,我平常只敢开三四个程序,这样每次切换程序还要等个十几秒,唉!

虽然我 Ubuntu 里也装了 Stardict 星际译王,但我轻易不敢再开一个程序,太慢了!现在我发现一个非常有意思的东西解决了我的困扰,Gtalk 翻译机器人。其实这是我在尝试另一项服务 Google 词典时无意中发现的,很奇怪的是,我记得曾经看到一个 Google 官方的关于 Gtalk 翻译机器人的页面,怎么再也找不到了?只搜索到一个 Gtalk 开发组的博客上的新闻链接

添加 Gtalk 翻译机器人很简单,就是选择添加好友,好友 email 为:语言缩写2语言缩写@bot.talk.google.com。比如汉英翻译的机器人名字是:zh2en@bot.talk.google.com,英汉翻译的机器人名字是:en2zh@bot.talk.google.com。当然了,还有更多,点上面的新闻链接可以查看。

用这个机器人有什么好处呢?一是方便,直接在聊天软件里就可以查词。就像我用那么落后的机器,打开一个词典软件能让它假死半分钟,而 IM 软件总是会开着的,打开一个聊天窗口显然方便和快很多;还有一个好处是 Google 将你的聊天内容记录到 Gmail 里,那么过一段时间整理一下聊天记录就是一个非常好的生词表 :)。查找聊天记录很简单,只需要在 Gmail 上方的搜索栏中输入:from: en2zh@bot.talk.google.com 再点搜索即可。

Goolge 词典也是非常好用的,但不知道为什么在 Google 首页上点 Language Tools 进去以后却没有词典的链接,只有到 more->even more 中找 Translate 才有。

新校区,新宿舍

我的新宿舍

今天早上被同学短信吵醒,一看手机九点多,就爬起来刷牙洗脸。完了打开电脑,咦,怎么电脑显示才六点二十几?才发现自己起了个大早!

都起来了,也不好再躺下了,正好趁早去青年公寓把自行车骑过来。现在新搬来的地方距离实验室和食堂都太远,没车挺难受的。于是从 619 路正数第二站玉泉路口北坐到倒数第二站保福寺桥南。

过了一个暑假,自行车的状态倒还挺好,不过车带都没气了,链条也锈得差不多了。还到前室友那把我的吊兰拿了回来,吊兰又抽出了不少茎。于是乎我就开始载着吊兰往回骑,骑啊骑,骑过了联想桥,骑过了北理工,骑过了外国语,骑过了首师大,骑过了五棵松,一个小时以后总算骑到了新宿舍。至此,我的搬家工程彻底完成。

回家前没能来得及收拾新宿舍,这次回来后才开始拾掇了一番。总的来说我对新宿舍还是比较满意的,因为有大落地窗户,低低的舒服的床铺,虽然是三人间,但要比原来二人间空间大很多。上面照片里就是新宿舍里我的一角。唯一美中不足的是洗手间没有热水用,甚至连淋浴头都给换成了水龙头(不知道物业怎么想出来的这馊主意)...

马上就正式进入实验室了,用行话说就是正式加入科研队伍。对将做的事情有一些迷茫,因为事实上对本专业的科研领域和进展还没有一个深入的了解,对自己将会投入的课题也不甚清楚。不过,想也没用,总之是要开始做了。

2008年8月-徐州

我现在徐州火车站附近的一个网吧写这篇博客。上午从泗阳坐了两个多小时车到徐州,本打算买两点多的火车回家,票没了,只好等六点多的一趟。坐火车我可以直接到家门口,而汽车可能还要再倒车。

现在火车安检果然很严格,进售票厅都有人查身份证,如果带着水壶,会被要求喝一口里面的水。

前天开幕式看了,总的来说感觉不错,特别是点火方式!就是觉得那主题曲有点儿恶,随便哪个不比那个好听啊!

我的身体越来越不耐热了,这种天气呆在室外总觉得煎熬,无论在我家还是女友家,都是大门不出二门不迈。保持和世界同步的方式就靠电视和手机了,我最近非常 enjoy 用手机上 wap 版 Gmail 和 Google Reader,可以随时随地地看。虽然现在手持终端的功能还很弱,但我相信就像20年前的 PC 一样,它们会有很广阔的发展前景的。

等待回家

上一篇 blog 牢骚了很多,现在搬家的日期定下来了,7 月 22 号,我也打算同一天晚上离开北京。

怎么说呢,一方面因为是非之地不宜久留,另一方面就算留下我也没什么重要的事情可做。前面说过实习的事算是没戏,又没有正式进入实验室,我老板也没有什么项目需要我做。虽然我提前知会了离开日期,貌似面谈时我老板还是有点儿心有不甘,觉得我走的有点儿早。不过既然没有工作,他也没说什么,很爽快地给签了离校申请,从 7 月 22 日到 8 月 28 日,只是塞给了我一本书让回家看。

下周二就要从中关村的青年公寓搬到中科院研究生院玉泉路本部了,虽然在这只住了一年,收拾东西时还是吃了一惊,积累下来的东西真不少。尤其是书,又散又沉,痛苦啊!

回家就没有稳定的网络连接了,虽然用手机也能上上网,但毕竟 wap 流量很贵,更新 blog 就不会那么频繁了。

祝大家都有一个愉快轻松的暑假(or 暑期 ^_^)!

没有计算机的日子

前几天我的 Dell D630 坏了,诡异的故障。先是死机,整个屏都给锁住了一点儿都动不了,直接长按电源键重启,启动之后除了电源灯点亮之外没有任何反应,屏幕也不亮。刚开始多重启两次就可以了,但晚上总算死翘翘了。

第二天打电话给 Dell 客服,你说北京网通怎么那么讨厌呢,用 201 电话和 IC 卡电话都无法打 800 和 400 热线,从这一点说真不如南京电信。用室友电脑上网和 Dell 在线客服聊了一会儿,要来了他们在 Xiamen 的电话号码,才能用 201 卡打通。

报修了,那面同意第二天派工程师来看了。谁知道,晚上极其无聊了开一次机,居然能点亮了,一切貌似 OK。不放心多重启了几次,又出现那故障。心想,还好没让人家白跑一趟。

第三天 Dell 售后工程师来了,因为我晃动电脑时有声音,我觉得可能是什么东西掉了,就和他说给我拆机看一下。拆开以后发现,原来那响的东西是一粒小石头,晕!后来他说,应该是显卡的原因,因为这个季节 Dell 的笔记本都是出这故障,显卡太热。然后人家就直接问:“要不要换主板?”我想,反正这电脑也用了大半年了,换就换呗,然后就换了块主板,然后呢,至少五六天过去了,貌似没出现什么问题。

总之呢,从使用上来看,Dell 的笔记本散热的确有问题,如果温度高一点,CPU 能很容易地飙到 65 度以上,而独立显卡芯片和 CPU 用同一个金属臂连接到一个散热铜片阵列上,可能会影响到显卡芯片的散热。从售后上,Dell 的售后服务做的相当好,任何服务只需要提供笔记本底部的快速服务编号就能准确获得,在这点上就比其它一些厂商好很多,除了电话,还可以用在线聊天和 Email 与客服联系,至少我这种被电信服务商欺负的人感觉到了多一种联系方式的方便。

在没电脑可用的两天里,我发现日子无聊许多,但是也轻松许多。很多事情不能做,比如查 Email、逛 BBS、看电影;很多事情可以做,比如连续几个小时地看书。其实,偶尔将电脑锁起来几天也不错...:)

=============== 我是跑题的分割线 ===============

北京的七月真的很难忍受,尤其是大太阳的天气,我女友是既怕下雨又怕热,结果就是不想出门。我是不想老待宿舍看电影上网的,但稍微走两步就汗如雨下,算了,还是宿舍里凉快。

回家这个问题纠结我很久了,现在的北京我是一天都不想呆,各个部门都为了展示自己对奥本海默运的积极参与出台各种变*态的规定:比如中国科学院研究生院出台规定,为了奥本海默运原本随便乘坐的校车开始使用乘车证,无证不许乘车;比如铁道部出台规定,20 号以后的火车票预售期从 10 天调整为 4 天;比如卫生局,比如交通部,比如...

北京现在是一个到处可以见到 police的城市。四环上的奥本海默运大厦就在我们宿舍北面,不仅进出的人要进行安检,大厦外面的四环上还驻停着好几辆警车,大厦附近的人行天桥、十字路口,都经常可以看到 police 出没;王府井大街、Tian Anmen 广场...都有很多 police 的哨卡,看到可疑人物就会盘问和检查行李。

北京的饭店们早就响应国家号召,就拿烤鸭来说,我总共吃过三个地方的烤鸭:郭林家常菜的烤鸭从 48 涨到了 68 ;科技大学东门北金鸭皇的烤鸭从 58 涨到了 78;皇宫烤鸭店的烤鸭从 58 涨到了 72。我不清楚这是不是奥本海默运惹的祸,但是既然鸡肉都没有涨多少,为什么鸭子就变那么贵了呢?除了饭店,还有酒店宾馆、租房业...

我发现北京这个城市在奥本海默运之下变得如此之不适宜居住,一天都不想呆下去了。可是感谢中国科学院研究生院的英明领导们,他们出台规定要 7 月 18-22 日一年级清空宿舍搬到新寝室,还要退各种卡,但是我们这些要回到玉泉路本部的学生到现在都不知道该搬到哪里,什么时候搬。打电话给分管的学院领导,一致回答都是不知道!我真怕我们也出现某所的情况:7 月 20 号到 8 月 20 号为放假时间,本所不提供 07 级新生的住宿,需留京实验的请自行解决住宿。

香港免费 VPN HOWTO

香港网站 Prairie Dog 提供了免费的 VPN 帐户,不要问我这个帐号能干嘛,自己去看。

申请免费 VPN 帐号地址:http://www.pdog-vpn.com/freeaccount.php(一个IP只能申请一个,多账号会被封)。

我不得不感叹中国网民的行动速度,我上午才申请的 pdog 的帐号,下午发文时就无法注册了。不过还有许多好心人收集这些免费 VPN 的信息,请点击 http://blog.119797.com/article/free-vpn/

Windows HOWTO:
http://www.pdog-vpn.com/setup.php

由于它没有 Linux HOWTO,这里我就提供一个

Ubuntu HOWTO:

安装 VPN 软件:
$ sudo apt-get install pptp-linux network-manager-pptp network-manager-vpnc

使用 VPN:
1. 点击 Ubuntu 系统通知栏中的网络连接图标,选择 VPN Connections->Configure VPN。
2. 点 Add 出来对话框之后,点 Forward 进入第二步,Connect to: 选择 PPTP Tunnel,再 Forward。
3. Connection 标签中 Connection Name 填个随便什么名字,我这里就用 pdog,Gateway 填 Prairie Dog 发给您的邮件中的主机名 xxx.pdog-vpn.com,然后 Forward, Apply,Close。
4. 点击网络连接图标,然后 VPN Connections->pdog,弹出窗口,输入用户名密码。然后,网络连接图标就会出来一个金黄色的小锁。
5. 然后访问某些可以查看 IP 地址的网站,比如 www.ip138.com,就会发现自己的 IP 地址变成了来自“香港特别行政区”。

这样,您就可以访问那些由于某些原因无法正常访问的网站了。

PS:我刚刚发现我域名下所有子域名都被我的域名服务商删除,而且无法添加,难道又是因为奥本海默运?

PSS:给域名服务商打了个电话,一个小时后看来已经部分恢复了,也可以添加子域名了。接线员给我的回复是 DNS 设置少了一个,所以系统更新时被当作错误信息删除掉了,看来我过于敏感了。

解决了一个 Linux 版飞信 GUI 的一个重要 Bug

江苏移动一直有飞信答奥运题奖话费的活动,所以我女友每天都有登录飞信答题的习惯。Libfetion 是针对飞信协议开发的第三方程序库,在此基础上有 Linux 和 Mac 版 GUI 软件(GUI 是开源的,但库不是),虽然不算好用吧,但总比没有强。前两天我将 Libfetion 从 0.2.1 升级到 0.2.2 版,忽然发现不能用了,没法在 Linux 下答飞信题,在女友面前很没面子。

于是今天晚上就找了点儿时间将源代码下载下来,加 -g 编译,调试了一下。虽然没有文档帮助,找 bug 的过程还是相当之顺利,用 gdb 跑了三遍就定位到了问题所在,把问题解决,将 patch 提交给了 Libfetion 开发组

自从 0.2.2 更新之后, libfetion 在登录后就会直接退出,我调试了一下,发现其原因在于错误的先 delete 掉 longinWin 对象。下面是 patch:

$ diff -urN fxmain.cpp new_fxmain.cpp
--- fxmain.cpp        2008-07-05 22:48:22.000000000 +0800
+++ new_fxmain.cpp        2008-07-07 20:01:58.000000000 +0800
@@ -66,7 +66,7 @@
        isLoginIn = true;
        mainWin = new FxMainWindow(0);
        loginWin->hide();
-        delete loginWin;
        mainWin->show();
+        delete loginWin;
}

之所以提这件事情就是想说明一点开源软件的优越性:由于所有人都能得到源代码,遇到问题不必非得等官方的补丁,自己动手就可以解决;由于平台或工具的原因,有时候开发者未必意识到的错误,反而可以被某一特定用户解决。在这一点上,闭源软件要差很多,这也是我喜欢开源运动的原因之一。

在 Ubuntu Linux 8.04 上安装永中 Office 2007

这篇文章介绍了在 Ubuntu Linux 8.04上安装永中 Office 2007 遇到的问题以及解决的办法。由于其主要问题在于 Java 虚拟机,其它 Linux 平台如果遇到同样情况也可以借鉴这里的方法。

永中 Office 2007 Linux

目录

1. 介绍
2. 下载
3. 安装问题
4. 运行问题

1. 介绍

用 OpenOffice 总会遇到这样那样的中文问题,有时候怎么也搞不定,很令人沮丧。听说永中 Office 虽然只放出试用版,但在 Linux 下超过试用期后只会提示超期而不会禁止使用,就尝试着装了一下永中 Office。

2. 下载

从官方下载地址:http://www.evermoresw.com.cn/webch/download/downEIOffice.jsp 下载永中 Office 2007 Linux 安装包。

安装之后才知道 Ubuntu 中文源中有打包好的 deb 文件,要从源中直接安装就方便许多了。比如用 CN99 源的话,将:

deb http://ubuntu.cn99.com/ubuntu-cn hardy main restricted universe multiverse

加入 /etc/apt/sources.list 中,然后:

$ sudo apt-get install eio

即可。我没有尝试这一方法,从源直接安装显然不会出现下面的"3. 安装问题",但不知道会不会出现下面讨论的"4. 运行问题"。

3. 安装问题

下载好官方的 Office 2007 Linux 安装包之后,先解压:

$ tar -xzvf EIO2007BetaZH_Lin.tar.gz

然后,进入安装目录,执行安装脚本:

$ cd 4.3.1210.101ZH.L1/
$ sudo sh setup.sh

将会出现下面错误,而且安装窗口显示为空白(窗口空白可能是由于 Beryl 引起的 Java Swing 界面问题):

Decompression in Progress,Please Wait.
Locking assertion failure. Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0xb2a66767]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb2a668b1]
...

这个问题可能因为永中 Office 使用自带的 JRE 和系统的某些库不匹配导致的,所以我们只需更改安装脚本,让它使用系统的 JRE。用编辑器(如 vim)打开 setup.sh,按照下面的方法注释掉解压和使用自带 JRE 的两行,添加一行使用系统 JRE 的命令。(注意:使用 gcj 的 jre 也会出现错误,最好使用 Sun 官方的 jre,Ubuntu 下使用 sudo apt-get install sun-java6-jre 安装。)

$ vim setup.sh
#unzip $progdir/Jre.zip -d /tmp/EIOffice/ &> /dev/null
#/tmp/EIOffice/Jre/bin/java -jar $progdir/dispose.jar $1
/usr/lib/jvm/java-6-sun/jre/bin/java -jar $progdir/dispose.jar $1

然后再执行 sudo sh setup.sh 命令,就能出现正常的安装窗口了。下面的安装步骤和 Windows 下软件的安装步骤颇为相似,只是选择安装路径那一项最好将 /usr/local 改成 /opt,因为永中 Office 不是开源软件。

4. 运行问题

安装完成后,运行永中 Office:
$ eio
Locking assertion failure. Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0xb7d37767]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb7d378b1]
...

和刚开始安装时一样,出现下面错误,主窗口中也是空白。如前面所说,窗口空白可能是由于使用了 Beryl 窗口管理器引起的 Java Swing 界面问题,可以通过修改永中 Office 的启动文件解决,在 /usr/bin/eio 中正式代码前添加 export AWT_TOOLKIT=MToolkit 一行:

$ sudo vim /usr/bin/eio
#!/bin/bash
export AWT_TOOLKIT=MToolkit
exec 4<&0 0

GF in Beijing Now

好久没更新了,当然了,原因是很多的,标题是最重要的一个。

我们家 xixi 24号考完放假就来北京啦,在学校周围给她租了个床位(没办法,北京租房太贵了),正好在这陪我上小学期。

暑期实习的事情算是没戏了,不是别人看不上咱,就是咱时间不够。也好,准备放假就回家,带着女友 ^_^

北京这几天太讨厌,天天傍晚对流雨,还没见过那么潮的天气呢?出去玩已经被淋了三次了~~~快点儿放晴吧,不然都不敢走远了。

昨天参加了一个 Java 移动开发者大会,Sun 挺大方的,每个报名的人送了几张光盘和一本《NetBeans权威指南》,定价75块呢。可惜等不及下午一点的免费午餐,早早就撤了。下午怕下雨,也没去观摩一下抽奖活动,索爱手机啊~~~