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包提供。