2005年5月28日星期六

My Cygwin Repository近期更新

我的Cygwin Repository有些日子没有更新了(除了上个月应一些朋友的要求提供了xfce-4.2.1.1),总算更新了一把:

  • sylpheed-claws更新到了1.0.4a(gtk1)和1.9.9(gtk2)
  • 新提供了scite-1.62, 包括gtk1和gtk2版本
  • 新提供了gtk-theme-switch-2.0.3, gtk-chtheme-0.3.1
  • 新提供了bluefish-1.0

  • 上月更新: gqview-2.1.0, gtkpod-0.88.2, leafpad-0.7.9

gtk1的东西还是基于cygnome的, 毕竟cygwin官方包里的gtk缺乏支撑包,而cygnome又比较稳定。(原来在release/目录下提供过一个用cygwin net release的gtk-1.2的包编译的sylpheed-claws,现在已经删除了。)近期如果有空的话,还打算针对cygnome做一次更新,主 要解决python-gnome-1.x的问题。

gtk2的东西倒是都基于cygwin提供的gtk2了。目前还在折腾的是notecase, 而rox, bmp, gwhere等上游也都有新版本等待更新(gaim是不打算维护了,反正它自己也有win32版本,倒是有可能继续搞搞openq的win32版本)。

Robert Patrick


晚上搭车,车上在放Terminator II: The Judgement Day, 又看见了Robert Patrick。记得当初看这部片子时很不喜欢这个液态金属人: 尖尖的下巴和耳朵,随时罩个小圆墨镜,一点表情没有,一看就是个冷血的东西。(那时喜欢的当然是Arnold Schwarzenegger, 在这部片子里面酷毙了)。

后来看The X Files, 第七季之后David Duchovny突然不演了,换上了T2里面这个液态金属人,本来以为这下没有什么可看的,没想到第八季,还不觉得太差,也许部分是因为对于前面Mulder和Scully这个组合看多了有些生腻,正好换换口味。

到了第九季,开始喜欢上Doggett这个人物了。尤其在John Doe那 一集,那个墨西哥老头吸走他的记忆,后来也很替Doggett感到痛苦,因为他发现Doggett的心里有so much pain,他问道: "Why would you want to struggle, so long, and hard, to get that pain back?" 但Doggett坚持要找回自己的记忆,"Because it's mine". 如果说其他几集让Duchovny来演或者Patrick来演都行的话,至少这几集换作Duchovny就没法看了,感觉Duchovny还是接近一个偶 像派,象Doggett这个经历过沧桑的角色他没法演出来。

其实我后来比较喜欢Robert Patrick也部分因为他一直只是一个"小人物"。《看电影》上介绍说,他25岁后才决定开始从影,事业开始得非常艰难,到现在为止参与了60来部电 影,大部分都是配角,他似乎从来无法成为好莱坞的大明星,除了T2和TXF,似乎并没有太出名的片子了。但他仍然在努力。在这里我可以看到一个人“打 拼”,这是让我所在意的一种精神。因为这个原因,我喜欢(原来的)王杰,因为这个原因,我喜欢伍佰的歌。

2005年5月27日星期五

星战前传的前传?

早上翻Slashdot,看见上面一则"Another Star Wars Prequel?"说George Lucas又构思了《魅影危机》(The Phantom Menace)之前的一些故事,就是讲Anakin Skywalker诞生前80多年前绝地武士们如何从黑首领手上赢得控制权的,Yoda在里面当然是重要角色。

消息一出来,说什么的都有,一天之内就有了600多条留言(不知道算不算slashdot之最?),可见吵得有多热闹。

后面还有一句: "但是,已经60岁的卢卡斯说即使真要做,他也不会亲自来做。"

2005年5月25日星期三

Disk Catalog类软件

我这人是个三脚猫,什么都喜欢玩一玩,GTK/GNOME, Cygwin, Delphi, Python...时间长了,也就搜集了不少东西,所以隔一段时间就把自己近期搜集的东西刻录成一张盘。但刻的盘多了,找东西就费劲了。这时就需要 Disk Catalog类软件。

在Windows下我觉得比较好用的这类软件是Where Is It。它可以支持多种方式提取文件描述:

- 从文件中提取描述信息信息,比如HTML文件的标题,MP3文件的歌名、演唱者、专辑名称,PDF的标题、主题和书签,M$ Office文档的标题
- 从files.bbs, 00index.txt, descript.ion等文件提取文件描述信息
- 从CDDB服务器提取CD里面歌曲的名称
- 从图片提取缩略图(thumbnails)
- 从压缩包类提取文件列表

另外它还提供了插件接口,网站上提供了不少扩展插件,用户也可以自己用Desc API来编写插件(还是Delphi写的!),我自己就写了用于CSDN index和Debian Package的插件。

在GNU/Linux上,也试用过一些(基本上只用过基于Gtk/Gnome的),觉得功能比较强一点的也就是gtktalog了。 gtktalog可以做到上面的功能1、4。对于功能1,它可以根据MIME类型调用一个命令行来获取文件的描述信息,而GNU/Linux下有丰富的命令行程序来做这个,比如对于rpm文件可以用rpm -qpi %s提取包的描述,这要比Where Is It的编程接口方便多了。

(不过gtktalog的MIME判断有点问题,比如对于Debian Package包,通过设置界面添加时,它根据.deb的后缀猜测(guess)出"application/x-deb",我配上对应的命令行 "dpkg-deb --info "之后却根本提取不到包的描述信息,调试之后发现MIME类型应该是"application/x-dpkg",并且在gtktalog设置界面上还不让你添加(说是MIME类型不合法),只能自己修改配置文件~/.gtktalog/gtktalog.cf搞定) 。

另外GWhere有时也用,虽然功能比较弱,但因为它只需要Gtk2,不需要Gnome库,所以在Windows和Cygwin上都可以编译成功,也就可以跨平台使用。

Disk Catalog类软件(II)

还有另外一类Disk Catalog软件,就是象Total Commander的DiskDir, CatalogMaker等插件一样,生成的是一个简单的catalog,其实是文本格式的,但可以在Total Commander里面象查看普通目录一样逐层进入。这种文本格式的好处就是也可以用文本编辑器打开查看、查找,不必非得有一个特定的软件。

在GNU/Linux下呢?非常简单,用ls -lR /mnt/cdrom > sarge-20050506.lslR就可以生成了!(其实以前带宽都比较小的时候,很多ftp服务器上都有一个lslR.gz文件,用来表明本服务器上都有一些什么东西。)

那又怎么查看呢?用Midnight Commander(想不到吧)! 在mc的命令行上敲cd sarge-20050506.lslR#lslR就可以象普通目录一样查看这个文件里面的内容了!如果你的extension file(~/.mc/bindings)里针对lslR配置好了Open动作的话,按Enter就可以进入了。

如果你想要其他格式的支持的话,MC的extfs功能允许你编写一个脚本来扩展这个功能,参考一下/usr/lib/mc/extfs下的脚本吧。[@

2005年5月24日星期二

Gtk2 patch for gnome-commander-1.1.6

As Debian doesn't have the gnome2 version of gnome-commander, I have to build it by self.

But the problem is a function called _gtk_clist_create_cell_layout is used by the gnome2 version gnome-commander. The symbols started with an '_' are private symbols of gtk2, they should not be used by applications (in old days, these symbols are also exported by gtk2 on some distributions, but not debian).

I just found Mandrake provides this version of gcmd, thus I download the SRPM, and found the patch from it.

===================================================================
RCS file: /cvs/gnome/gnome-commander/src/gnome-cmd-clist.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- gnome-commander/src/gnome-cmd-clist.c 2004/01/08 20:11:28 1.3
+++ gnome-commander/src/gnome-cmd-clist.c 2004/05/03 18:20:18 1.4
@@ -226,6 +226,46 @@
}


+PangoLayout *
+my_gtk_clist_create_cell_layout (GtkCList *clist,
+ GtkCListRow *clist_row,
+ gint column)
+{
+ PangoLayout *layout;
+ GtkStyle *style;
+ GtkCell *cell;
+ gchar *text;
+
+ get_cell_style (clist, clist_row, GTK_STATE_NORMAL, column, &style,
+ NULL, NULL);
+
+
+ cell = &clist_row->cell[column];
+ switch (cell->type)
+ {
+ case GTK_CELL_TEXT:
+ case GTK_CELL_PIXTEXT:
+ text = ((cell->type == GTK_CELL_PIXTEXT) ?
+ GTK_CELL_PIXTEXT (*cell)->text :
+ GTK_CELL_TEXT (*cell)->text);
+
+ if (!text)
+ return NULL;
+
+ layout = gtk_widget_create_pango_layout (GTK_WIDGET (clist),
+ ((cell->type == GTK_CELL_PIXTEXT) ?
+ GTK_CELL_PIXTEXT (*cell)->text :
+ GTK_CELL_TEXT (*cell)->text));
+ pango_layout_set_font_description (layout, style->font_desc);
+
+ return layout;
+
+ default:
+ return NULL;
+ }
+}
+
+
static void
draw_row (GtkCList *clist,
GdkRectangle *area,
@@ -389,7 +429,7 @@

/* calculate real width for column justification */

- layout = _gtk_clist_create_cell_layout (clist, clist_row, i);
+ layout = my_gtk_clist_create_cell_layout (clist, clist_row, i);
if (layout)
{
pango_layout_get_pixel_extents (layout, NULL, &logical_rect);

2005年5月23日星期一

Star Wars III: Revenge of the Sith

昨日去看了《星球大战III: 西斯的复仇》(香港翻译的片名叫《黑帝君临》),觉得还是值回票价。

这集里面最酷的是看见Yoda出手了!而Obi-Wan这个在我小时就崇拜至及的人物也没有让我失望(虽然小时只是看过小说,里面只有电影的几幅图片,当然里面有Obi-Wan跟Vader最后的战斗场面)。

只是感觉Anakin投向黑暗面的理由太乏力了一些,从一些介绍来看,他母亲的死对他的影响很大,所以他才那么担心(或者说恐惧)他妻子Padme的死亡。也许是第二集Attack of the Clones我没认真看,体会不到这个。

到底是因为他恐惧于他妻子Padme的死亡而投向了黑暗,还是他的投向黑暗导致了Padme的死亡,这是个难于回答的问题。套用一句中国的老话来说,这就是命。

不过本来晚上打算去理发的,但一时间兴致上来了,就想着赶回家接着看Pearl台正在放的Episode IV: The New Hope。不过1977年的特技还真是差啊,就那两个太阳的效果都是差了十万八千里。当然,三十年前的空战能做到那个程度也相当不容易了。

Ubuntu + testing?

我新买的laptop装不上Debian(安装基本系统后重启时死在加载usb-uhci模块这个地方),为此苦恼了好久。在网上查过,没看见这个 型号的成功案例,一些类似的型号说是要先在BIOS里面禁用对legacy USB device的支持,我打开BIOS,只有时间、启动顺序这几个选项,其他的都没有。也试过用expert模式安装,或者用Knoppix光盘启动后修改 modules.conf等文件禁用usb-uhci等模块,都不好使。:-(

五一期间下载了一套Mandriva LE2005来用,安装、配置什么的也都挺顺利(尤其中文什么的不用自己动手),mcc这个系统管理工具也做得不错,suspend to disk也可用,也跟着linuxsir上的方法学会了urpmi的用法,但总是有些不爽: 安装盘里面devhelp, anjuta, xfce4, zhcon都没有; 带了mplayer却根本没法用; 装盘里所有的RPM都仍在一个目录下(后来下了DVD,用mcc配置urpmi时点了一下Browse,就死在那个目录了); 用户还分等级,普通用户先没有ISO下... 其实也都不是太大的事情,只是有些东西自己不太习惯而已。还是想念Debian。

晚上在QQ上网友Cedric说可以试试Ubuntu。也 不是没有想过这个,我在本本上试过Ubuntu的Live CD,感觉相当不错。但我担心它的软件少,我是懒得什么东西都来自己编译(本来KDE是可以不用的,但最近发现刻录光盘gnomebaker还是不如 k3b稳定)。而且原来在slashdot上看见一篇Is Ubuntu a Compatibility Nightmare for Debian,也就认定它跟Debian还是不怎么兼容,没有再去试。Cedric倒是说debian的源都可以用,看来还是要试试。

2005年5月19日星期四

News: Anjuta 2.0 Released

刚刚看见新闻Anjuta发布了2.0。

Anjuta是一个基于GTK/GNOME 的 C/C++ IDE,上一版本1.2.2好像都发布了一年了。前两天才推出了1.x的一个新版本1.2.3.

Release Notes来看,这次2.0增加了不少功能,比较明显的的是从screenshots可以看到的新集成了glade ui degisnerdevhelp help system. 另外从Road Map上可以看到后面一个重点是增加对Ant的支持。

不过这还是个alpha & unstable版本,还不适合开发产品,不过作者鼓励大家试用以便帮忙发现并解决一些bug。

链接:
Step by step build instructions for Anjuta2 on Debian

2005年5月17日星期二

lazarus: Delphi for Linux

今天看见新闻Free Pascal发布了2.0,恰好这几日正在玩Lazarus(最近因为工作上要做界面原型,我申请了一份BCB来做,一时间对Delphi(BCB跟Delphi差不多是一回事)的兴趣又回来了,于是回家后又跑到lazarus网站下载了最新版本,安装到我的laptop上),

运行起来后发现控件又多了很多,整体界面也不像原来那么粗糙了,看来前面一段时间一直想写的几个界面小工具可以用这个写了。

注意到这个东西应该是在2001年,Borland正在做Kylix 1.0的时候,在一个linux网站上看见有人提到这个,当时拉下来试过,但功能太少,几乎不能用(当然只作为一个freepascal的IDE是没有问题的,但我这种浅薄之人一向喜欢RAD),所以也就是看了看,转头就放在那里了。

Lazarus IDE screenshot (small)

后来又下载过两次新版本,感觉这个东西是在往Delphi的方向上靠,整体界面的布局,库文件的名称、内容,类的功能几乎都是Delphi的方式(其实Free Pascal的语法也是这样在往上面靠,上面的新闻对应的讨论里面有人说: "The later Object Pascal versions of the language is actually very nice to use in most respects. There are features in OP7 from Borland that I would die for in C++ or Java (methods attached transparently for property get/set). ")

对做GUI而言,跟Kylix不同的是, 它的界面库底层采用的是标准的gtk-1.2,并不象Kylix那样做出来的软件还必须附带一堆由Borland修改过的QT库。

不 过UNIX下还是C/C++的天下,其他的语言总是无法进入聚光灯(这里是可生成native程序的语言,不包括脚本语言),Borland最后只好对 Kylix偃旗息鼓,跟这点似乎也有些关系。相对C++的繁琐而言,我跟喜欢Pascal的严谨、条理清楚,即使是Borland的版本自己加了不少语法 和特性也比C++要简洁(毕竟没有多个厂家都来添加特性搞得乱七八糟)。

不过free pascal和Lazarus却似乎不管外面的世界多么喧嚣、浮躁,自己在不紧不慢地前进着,据说1.0到2.0就用了5年,LCL, SynEdit, Indy...

P.S: 如果你想在lazarus上用上gtk2,也是可以的: gtk2forpascal
P.P.S: lazarus也有win32版本,不过界面相对Linux下显得粗糙一些。

2005年5月15日星期日

Knoppix, 强! (不刻盘运行Knoppix又一法)

摘要: 手边只有Windows以及一个Knoppix的ISO,如何在将Knoppix跑起来;如何不刻盘运行Knoppix

我把原来用的台式机留给了我妹妹她们,但里面120G的硬盘上还保存有不少东西,今早我想把原来下载的电子书刻录到光盘上带走,问题就来了。

他们的Windows XP升级到了SP2,而原来随刻录机赠送的Nero OEM用不了,报告“与此版本的Windows不兼容”,我记得在我的laptop上的XP SP2上跑过这个Nero OEM,确实有问题。于是到Nero的网站找升级,结果失望地发现似乎对于OEM版本不提供免费升级,倒是可以优惠升级到Nero 6 Reloaded.

舍不得50多马克,只好用XP自己的刻录功能,先将文件拖放到刻录机所在盘符,也不知道XP搞些什么,慢慢吞吞“拷贝”了老半天――只是需要建立一个索引嘛,难道还要拷贝一个临时备份?
然后找了一阵,在刻录机所在盘符的右键菜单里面找到了"将这些文件写入CD",系统又折腾了一阵,然后还没开始刻录就报错了,说什么失败,还说这张碟可能不能再用。
看来对它自己的刻录功能是寡妇死了儿子――没多大指望了。

想起我原来在硬盘上还放有一个Knoppix 3.7的ISO,能不能用Knoppix里面的k3b来刻盘? 但现在没法将Knoppix刻盘,又怎么启动Knoppix呢?


[@more@]1. 从网上拉下一个grub for dos,解压到C: (boot目录直接在根目录), 编辑C:/boot.ini,添加一行:
C:\GRLDR="Start GRUB"

2. 用Total CommanderISO插件将KNOPPIX_V3.7 -2004-12-08-EN.iso解开,KNOPPIX目录都解压到某个驱动器的根目录(比如E:), boot/isolinux目录里面的文件随便放到什么地方(为了方便可以解压到C:/boot/knoppix或者E:/Knoppix/boot,这 里用后者,在grub里面表示为hd(0,5)/knoppix/boot/);

3. 编辑c:/boot/grub/menu.lst, 添加"Knoppix from E:"这样一条,kernel参数是将KNOPPIX.ISO里boot/isolinux/isolinux.cfg里面的参数拷贝过来,再加上 fromhd=/dev/hd6(就是刚才解压KNOPPIX目录的)
title Knoppix running from E:, kernel 2.4.27
kernel (hd0,5)/knoppix/boot/linux24 ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 nomce quiet BOOT_IMAGE=knoppix BOOT_IMAGE=linux24 fromhd=/dev/hdc6 myconfig=/dev/hdc6 home=/dev/hdc6
initrd (hd0,5)/knoppix/boot/minirt24.gz

4. 重启动,选择Start GRUB,然后选择"Knoppix running from E:",嘿嘿, Knoppix起来了。然后祭起k3b,刻盘,顺利搞定!

P.S 您也许注意到我还加了myconfig=/dev/hdc6 home=/dev/hdc6 这两个参数,这是后来添加的。
用mkpersisthome可以创建一个HOME映像盘,这样下次启动时添加home=/dev/hda?就有足够大的/home/knoppix空间 了,可以用knx-live-inst安装一些附加软件(当然手工安装也行);用saveconfig可以将对/etc下的配置文件所做的修改保存下来, 下次启动时添加myconfig=/dev/hda?后Knoppix就会自己去加载他们了。我昨天帖的"Knoppix中文扩展"主要就用了这两个功能。

又: Comparison Review: NeroLinux vs. K3b

鼹鼠的故事

电骡网站VeryCD上居然看到了《鼹鼠的故事》(RMVB, DVDRip)。

这 可是整整伴随了我们一代人成长的动画片啊。记得《三联生活周刊》前面某一期在将讲《丁丁历险记》对一代人人影响,尤其是欧洲一些地方还有“高层人士”组建 的“丁丁俱乐部”,常常为了具体一个道具争论不已。但对我,《丁丁历险记》更多地是看过连环画,没有一个鲜活的记忆,反而是《鼹鼠的故事》印象更深一些。 《鼹鼠的故事》每集都挺短的,可能也正因为如此,80年代中央电视台常常在节目间歇中播放《鼹鼠的故事》,用来调节节目时间。我们也在天天见面中熟识了起 来。

《鼹鼠的故事》跟迪斯尼那种闹腾的风格完全不一样,宁静的画面,柔和的音乐,“跟我们中国早期的一些优秀动画片十分相似:不事张扬,宁静致远,余音袅袅,富有节制”。
虽然它几乎从来不说话(偶尔会听到几声Hello),但从来不会让你觉得闷。

2005年5月14日星期六

发布Knoppix 3.7 中文扩展(演示版)

这个扩展只需要原版本的Knoppix,不需要等remaster过的中文版本。

基本原理就是利用Knoppix可以保存并加载用户的HOME, 而采用一些特殊的方法(当然是说不自己编译的前提下)可以使得一些东西安装在HOME上就可以用。如果要了解详细情况,可以翻翻我以前贴的相关内容

只所以叫“演示版”,是因为这个映像只提供了kde-i18n, ttf-arphic-gbsn00lp, fcitx三个包,只是为了证明这种可能性(其实去年中期就在琢磨这个,但今年初看见从knx-live-inst这个包上学到不少东西,使之变得更加容 易),因为带宽关系没法提供自己做的完全版本。不过这个映像本身是128M的,可以自己再加装东西。


下载
http://www.oliwen.com/bamanzi/linux/knx-clx/knoppix.img.bz2
(该目录内有简单的安装说明和制作说明)

安装方法

1. copy knoppix.img to the root of one of your partition (say, /dev/hda6) ( if you got a bzip2 image, unpack it first, (it should be knoppix.img)

2. boot with your Knoppix CD, adding 'home=/dev/hda6' in the boot parameters
e.g
knoppix home=/dev/hda6

3. when booted, use 'mount' to check whether this image already mounted to /home/knoppix.
Now switch to root account(if you don't know how, just type Ctrl+Alt+F1), and patch the knoppix's xsession init script
$ cd /
$ patch -p0 -b /home/bamanzi/45xsession.patch
$ /etc/init.d/xsession restart

Now everything should be OK.

To make your changes persistent, you should do some extra steps:
4. In Konsole(you need to this as user 'knoppix'), call 'saveconfig' to store your changes to system configuration (/etc/....) to the root of one of your partitions (say, /dev/hda5). As the result, you will see two files on that drive: config.tbz and knoppix.sh.

5. Next time when you boot with your Knoppix CD, add an extra parameter as this:
knoppix home=/dev/hda6 myconfig=/dev/hda1
then you don't need to repeat step 2-4 for the next boot

2005年5月5日星期四

2005年5月3日星期二

Wink将获得诺贝尔奖?

早上照例打开slashdot,一条新闻差点让我把茶水喷出来,Wink要获得诺贝尔和平奖? 难道国际青年节也要改名为愚人节了?
讨论里面也都是"The what prize?," "There's no way this is true," "Oh, spam on slashdot?"这样的标题

仔细一看,原来是李逵和李鬼的故事: 这个奖是叫Noble, 而那个最有名的奖是叫Nobel。

不过Wink这个软件还真是不错(这个软件可以录制屏幕操作,可以存为Shockware Flash (.swf)格式——如果你还不知道它的用途的话)。
上次一个美眉那里win98玩不了The Incredible Toon Machine, 我觉得它的动画很滑稽,恰好Linux公社上有人介绍这个东西,就用这个东西录制了一段flash发过去。
(记得原来用SnagIt录制成avi,一分钟就近100M了,用RAR压缩一下后才1M多,可以画面重复量是很大的,完全可以精简。)

2005年5月1日星期日

UI杂谈: Tear-off Menu

在公司论坛上前两天一堆人在捧scite,忍不住弄下来试了一下。在cygwin下编译了gtk1和gtk2的版本(在这里放 了一份gtk2的版本),发现除了Edit->Copy As RTF这个功能和option菜单下的项目布局(windows版本里没有Edit Properties这个子菜单,造成options菜单老长)这两点不同之外,Windows版本还缺少一个tear-off menu的功能。



个人认为tear-off menu是可用性(usabilities)上比较重要的一个小功能(FYI: [Apple], [HP], [usablitiyfirst), 因为对于常用的一个菜单可以更方便快捷地点击其项目,对于一个三级菜单更是如此。我甚至猜测WindowMaker成为最受欢迎的WM ,GNUstep成为一些Hacker的梦想环境,这个方便的小功能也有贡献。

从控件集这个层次上看,gtk是有这个特性的(vim是常见的例子,而且它的windows版本也有这个特性——虽然不是用gtk作界面; 另外这里有个gnumeric的贴图), Qt也有(不过我找不到一个应用程序的例子,只有示例), 而Motif(DEC, HP), GNUstep(看WindowMaker就知道样子了), OpenLook(桌面全图)无一不有。

可惜后来GUI程序大都跟Windows学,不用这个功能或者丢掉了这个功能。比如GNOME, 这个特性在GNOME-1.x的Start Menu上还能见到,但到了GNOME-2.x就缺省关闭了。如果你想打开它,需要自己在gconf-editor里面找找 (/desktop/gnome/interface/menus_have_tearoff 示意图) , 或者试试gTweakUI这个小工具 (BTW: 关于GNOME是否应该自己为这些设置提供界面,而gTweakUI提供这个是否又违反了GNOME HIG这个问题,FootNotes上展开过一段辩论,不妨一看)。