2005年8月31日星期三

porting xffm-4.3 to cygwin


GnomeFiles上看见了xffm-4.3.3的出现,我对xfce4的印象还不错,尤其在Cygwin上没有其他桌面环境(DE)可以用的情况下,于是拉下来编译。

xffm4的名声似乎一直不太好,所以也是后来xfce4开发小组一直说要重点改进的。这个4.3是个测试版本,相对前一版本而言,增加了不少功能,比如新增了iconview和deskview(就是windows那样放在桌面的应用程序启动程序),一个applicatios模块(支持标准的.desktop文件)。

我对xffm的功能齐全还是比较满意,这么点大的程序有书签、查找、垃圾筒、文件比较、fstab、recent各项功能。只是界面却越来越显得混乱,原来只有treeview模式还好一点,但现在4.3又添加了deskview、iconview并且将这二者改为缺省了,进来就觉得有些乱,而一个文件夹从iconview转到detailed view时居然还需要另外打开一个窗口。另外有些地方(比如Goto, Run的输入条)明显是rox的风格,但rox用起来明显简洁多了。

虽然xffm的代码结构经过大幅调整,在Cygwin编译它仍然是一个恶梦,因为xffm对于应用程序、静态库、动态库、插件根本没有一个明确的划分,按原来的编译方式得有大约12个库文件生成到/usr/lib下。我不得不大幅更改Makefile.am, 将libs下的所有库编译到一个libxffm.la的动态库中去,其他的再链接到这个库。附带的一个收获是增加了对automake的了解 :-)。(过两天整理一下放上来)

jserv: 综观X Window System新发展

「綜觀 X Window System 新發展」簡報上線

好文!

2005年8月30日星期二

XML module for Jython 2.2

When writing a simple program to test the SOAP interface of our product, I found that the xml modules provided in Jython 2.1 was too buggy.

Although I know that after Jim Hugunin left, the development of jython became very stagnant, I still checked Jython's homepage and found that Jython 2.2alpha1 were out quietly in last month.

But after upgrading, I found that the XML modules now even totally removed in this release!

Fortunately enough on the jython-user mailing list , someone had just asked the same question, and David Hume said that he had written an implementation of the xml.dom API which acts as a thin wrapper for the Java libraries, which could be downloaded from here. It works very, even with Chinese characters (even CPython < 2.4 doesn't handle this well).

2005年8月29日星期一

《便衣警察》

最近工作比较忙,所以周末也就更觉得无聊(不知道这个逻辑是不是有点奇怪:-)。周六逛Walmart看见书架上有《便衣警察》,翻了一下,正是八十年代那部电视剧的剧本。让我吃了一惊的是,这本书居然也是海言写的(怕重名,所以还特别留意了一下,但这显然就是那位,因为旁边放着《玉观音》、《拿什么来拯救你我的爱人》,是海言的剧本全集)。不管对海言有什么印象,八十年代的人对于《便衣警察》这部电视剧都有着深刻而特殊的记忆。我只是没想到那么他出名那么早(这样算起来,不是比王朔还早?)

这部电视剧过去那么久之后,我对它还残留的印象一是“几度风月,几度春秋...”这首歌,再就是记得故事的开始跟七六年清明节群众祭奠周总理有关。相信大家至今还是对总理有着深厚的感情,这也是我对这个故事还有兴趣的原因。

周六看了一晚,周日早上醒来接着看,一直看完了才起床。果然是海言的风格,那时就是爱情+侦破的结构,虽然反特的故事跟现在的生活环境接不上茬了,但仅仅作为一个老故事重温一下亦无不可。

2005年8月26日星期五

XMMS2

无意当中看到Linux伊甸园的软件下载里面出现了"XMMS2"字样,看来这个东西终于有点眉目了。我对xmms的偏执也许更多地来自于原来对winamp的喜爱,估计对其他很多人也是。原来gtk1的xmms我是懒得去配中文字体了,还不如直接用Rhythmbox。而名躁一时的beep-media-player也早没了声息。

通过Google搜到了XMMS2的主页,LWN上还有一篇比较详细的介绍。至少现在"XMMS"不再代表X MultiMedia System了,而是X(cross) platform Music Multiplexing System的意思。而且现在采用了server/client架构,也就是说,除了仍然会有的gtk2的UI之外,你也可以写一个简单的python或ruby脚本来播放音乐(xmms也有python插件,但仍然需要xmms的界面)。

2005年8月25日星期四

抛弃MSN, 改用Google Talk

http://www.google.com/talk/

正好我对MSN现在越来越多的花哨功能感到厌烦,尤其讨厌它的广告窗口。

Google Talk用的是Jabber协议(XMPP),所以也可以用其他实现了xmpp协议的IM软件跟Gtalk互通了,甚至是文本模式下的。GUI下我的首选应该是gaim.

相关信息:

Google Talk正式上线
Google的开放通讯
Gtalk的互操作能否实现
如何用gaim跟其他Gtalk用户通信
一些尚未公布的小技巧!
搜索Debian软件包: jabber, xmpp



2005年8月23日星期二

Ridley: libgnome must die

The GTK+ developers have announced a new initiative called "Project Ridley." The idea is to get rid of a number of the small libraries which follow GNOME applications around, merging their functionality into the core GTK+ toolkit. The end result will likely be the GTK+-3.0 release. More information can be found in the announcement (click below) or on the Project Ridley wiki page.

希望这个项目的诞生可以减轻编译gnome平台的麻烦程度。

2005年8月22日星期一

sidegrade: from Ubuntu to Sarge

到底还是想念debian,我安装了Ubuntu,然后`sidegrade'到sarge了。

因为现在上网不方便,在朋友那里下载了一张sarge的DVD。同时,因为不太甘心,又试了一下,直接安装后重启就挂了。

然后换Ubuntu,原来打算用它的X.org和GNOME-2.10的(而且休眠也工作得很好!),但最后发现这样再装sarge的软件的话包依赖的问题几乎没法解决。只得重新来过,只装base system,然后换上sarge的DVD, aptitude install -r x-window-system gnome。启动X,GNOME出现,感觉不错。

当然包的兼容性会有不少问题),aptitude install常常会无法通过(比如安装gnome就需要synapitc,而synapic依赖于libapt-pkg-libc.....,后者是基本系统提供的,在ubuntu提供的基本系统中根本不是这个名字,就只好硬来了 从Knoppix邮件列表上学到三板斧(新手请勿乱用!):

1. aptitude -f install

2. 直接修改/var/lib/dpkg/status下的文件,反正dpkg安装新软件时总是先解压(unpack),然后检查依赖性后configure,直接修改包依赖关系后dpkg --configure --pending。

3. dpkg将deb包解开,修改control文件里面的包依赖,然后重新打包,再用dpkg安装

---------------------
而且如今我终于明白,对于我而言,选择哪个Linux版本最重要的因素是什么,那就是“可获得性”(availability),发行版要很容易地获得,众多软件要很容易地获得,开发过程中的进展、大家的心得、讨论,亦应如此。对懒人而言,这一点应该是第一位的。

2005年8月15日星期一

PuttyCYG

Carlos Liu的blog上贴了一篇用 PuTTYcyg 替代 Windows 命令行窗口,这里做个书签。

这个小工具确实不错,比用rxvt 好的是可以即时修改一些设置,比如字体、颜色什么的,还可以全屏。

2005年8月13日星期六

来深圳这六年...

六年前的8月13号,我身背一个大牛仔包,脚踩一双打满了补丁的双星球鞋,揣着一颗“奔腾”的心,来到这个火热的南方城市。那时,我正厌倦了杭州慢悠悠的生活节奏,在这里看见的是宽敞的马路、高大的建筑、郁郁葱葱的绿化带以及步履匆匆的行人。

六年之后呢?对于这里的治安、交通、文化氛围、生活气息,我都逐渐有些失望了;我也明白地认识到这里每个人都是浮躁和急功近利的。唯一还让我留恋的是这里你可以我行我素,谁也不会管你,不过也许它的黑暗面就是刚才说的“缺乏生活气息”。

我用忙碌(或者说假装的忙碌)来逃避着应该有的反思,不管是对生活的,对工作的,或者是对感情的,以为自己也能用一句“吃茶去”或者“庭前柏子熟”来回答所有问题。

但总还是要前行的。
几年下来,至少我了解到,自己不爱自己,那就没有人会爱你。不可以自己消沉,不可以“无声无息地踏入黑夜”。
“不可以一朝风月,而昧却万古长空。不可以万古常用,而不明一朝风月。”
应该如此。

(本想用“鹏城六周年祭”做标题的,但最终因为“祭”字而没有使用。我没有取得“成功”,但我也不肯承认我失败了。总之它们还没有逝去,还没有被“摆脱”并成为“不堪回首”的过去。)

[@more@]

------------

也许我曾经最喜欢的一些音乐可以说明我这六年的状态:


2000 高晓松 《高晓松自选集》
还是像个学生 :-)

2001 迪克牛仔《三万英尺》, Sting 10年精选
那两年没听什么歌(也觉得似乎没什么歌听),工作也比较忙

2002 许巍和Enya
都是老歌,但我以前没有听过。他们陪伴了度过失恋后的大部分无聊时间――如果我没有在实验室埋头于技术的话。

2003 Nirvana - Unplugged in New York
那段时间非常喜欢这张专辑,Kurt Cobain 的嗓音似乎把一个人心底的绝望、失落都表达出来了。很久之后,我才意识到这种音乐对情绪的破坏力之大,于是将所有买到的Nirvana专辑放在一边。

2004 Nick Drake
他仅有的三张半专辑我都喜欢,如果非要选一张,就选后来唱片公司出的精选集Way to Blue吧

2005 空缺
一年前买了一个iPod,里面塞了3000来首歌曲,古典、流行、轻音乐、Soundtrack,什么都有,还常换, 但反倒选不出最喜欢的了。印象比较深的是几张演唱会,比如孙燕姿的2000台北演唱会、张学友的《爱与交响曲》(应该很老了)、伍佰的“伍佰力”,另外还 有叶蓓的《幸福深处》也不错。

另: 感谢The X Files,我看了近三年才看完这部长达9季、200多集的电视剧集。在最无聊的那段时间,它让我的生活不至于更无聊。

2005年8月10日星期三

Perl这种语言...

/.cn上看见一则<全球编程语言流行程度列表>,让我没有想到的是Perl居然排第四,只居于Java, C和C++之后。

恰好两周以前公司里面我原来所在的部门跟BT(Britian Telecom, 可不是BitTorrent)有个项目是用Perl开发的,偌大一个部门居然没有人会,我以前的主管打电话给我让我过去支援两周。

对 于Perl 4我倒是比较熟悉,但对Perl 5以后的包、引用等的了解就少一点。考虑到很久没怎么用了(后来投身到Python去了),于是赶紧找了两本电子书(一本Advanced Perl Programming, 一本Perl Cookbook)来翻。由于我还是更喜欢纸做的书,周末还打算去书店淘两本,谁知道跑了两家大书店,两家小书店,都没有几本Perl的书(仅看见 O'Reilly的Learning Perl, 还有一本Perl for C++ Programmer, 好像还有一本CGI Programming with Perl)。china-pub当当也没什么好的。记得以前还常常看到一些的啊,怎么...也怪不得他们没多少人会了。

回头说说Perl这门语言,这个东西约定的东西太多了,到处都是约定、特殊变量、特殊语法。举个例子,Advanced Perl Programming第一章讲引用(reference):

$s = \('a', 'b', 'c');      # WARNING: probably not what you think

$s指向什么?指向('a', 'b', 'c')这样一个list么?嘿嘿,可不是:

As it happens, this is identical to

$s = ('a', 'b', 'c');    # List of references to scalars

An enumerated list always yields the last element in a scalar context (as in C), which means that $s contains a reference to the constant string c.

用Perl写东西,有些时候写起来还挺顺,但调起来就够费劲的,而且先不多写点注释的话回头就看不懂了。至少后来很多小玩意儿改用Python来做就易写易读了。

--------

BTW: 看见Delphi/Pascal的流行程度不断下降,很有些难过。前两日看见Bob Swart(Dr. Bob)在他的网站上打出了Forever Loyal to Delphi的标语,觉得都到了这个地步了,更是黯然。

2005年8月9日星期二

一花一世界,一叶一佛陀

院子里的茉莉花开了,上下班的时候都能感受到它们的芳香。

又: 庄子说,始乎适而未觉不适者,忘适之适也。

2005年8月2日星期二

gnochm问题的定位

在网友duh的激励下,对昨天发现的gnochm的索引问题进行了定位。

索引的排序问题很好解决,只要将index那个TreeView的model换成一个可以排序的就可以了。补丁如后面所示。

索引不全的问题其实并不能怪gnochm,而是有些关键字当中有非法字符导致了HTML解析失败
chm文件中的topic和index都是sitemap格式,以HTML格式为载体的






gnochm 采用python编写,很自然地用了HTMLParser这个类来解析这个文件,但碰到上面的非法标识(The "link-selected" signal,注意这里引号是不合法的),后面的就都无法读取出来了,所以会丢掉很多关键字。而xchm就会忽略这个继续往下分析。

不能跳到archor的问题明天再来琢磨,也不知道是不是gtkhtml2的问题。



--------- 8< ---------------------

[bamanzi@saynomdk ~]$ diff -Nurp /usr/bin/gnochm gnochm
--- /usr/bin/gnochm 2005-03-18 09:27:00.000000000 +0800
+++ gnochm 2005-08-02 23:23:35.000000000 +0800
@@ -811,11 +811,13 @@ class MainApp:
# Index
self.imodel = gtk.TreeStore(gobject.TYPE_STRING,
gobject.TYPE_STRING)
+ self.isortmodel = gtk.TreeModelSort(self.imodel)
self.indexview = self.xml.get_widget('IndexTView')
- self.indexview.set_model(self.imodel)
+ self.indexview.set_model(self.isortmodel)
cell2 = gtk.CellRendererText()
column2 = gtk.TreeViewColumn('Index', cell2, text=0)
self.indexview.append_column(column2)
+ self.isortmodel.set_sort_column_id(0, gtk.SORT_ASCENDING)
# Search
self.smodel = gtk.ListStore(gobject.TYPE_STRING,
gobject.TYPE_STRING)



Comments for post
HTMLParser
nick | 03/08/2005, 13:54

Use SGMLParser then. More fault tolerant.

test with sgml
nick | 03/08/2005, 13:59

$ python /usr/lib/python2.3/sgmllib.py sitemap.html

Shows that no big deal for sgml.

sorted list
nick | 03/08/2005, 14:02

For sorted list, I'd rather sort the list before feeding to the treemodel. Should be faster for big list. Treeview is already slow in itself.

But let the treemodel do the sorting is simpler.

Re: SGMLParser
bamanzi | 03/08/2005, 17:41

Really, SGMLParser works!

Thanks!

2005年8月1日星期一

还是xchm强 (was Re: CHM viewers总结)

前不久对现有的CHM viewers做了一下总结, 因为我对GNOME的喜爱,所以将look and feel一致的gnochm作为了我的首选。因为一直用来看电子书,倒也感觉挺好,没有什么问题。但这两天因为想写点代码,需要查gtk2perl的API库,才注意到gnochm有着不少问题:

1. index功能做的很差,一方面是不能显示所有的关键字(上述glib2+pango+atk+gtk2合一的帮助文件就只能显示glib的一些函数,还 不知道是否完整),另外一方面是没有提供一个输入框供匹配(本来可以指望gtk2自己对列表控件提供的快捷匹配功能,但gnochm对关键字甚至没有排 序);

2. 对于hyperlink的archor很差,比如转到GtkTextView的页面,试图从顶部的函数、事件列表跳到gtk_text_view_get_buffer的详细说明去,居然跳不过去,每次都只能定位到文件,而不能到达具体的anchor。
回头装了个xchm,一切都搞定!

P.S.
1. 本来gnome平台的API文档查看工具是devhelp,但mandrake里面的惯例是对于正式发行版本以外的软件包一点质量保证都没有,反正我装了之后跑不起来。
2. perldoc是个不错的工具,还是学习一下用法比较好,毕竟随perl包提供。