2005年12月27日星期二

John Rocke: I can't do this alone


Lost (unofficial fansite) ,在Episode 3, Season II的最后, 他们在资料影片上看到必须每108分钟重置那个按钮, 而不按的后果具体是什么也不清楚,原来的“维护人员”Desmond也跑掉了...

Jack认为这只是一个谎言,走了出去,关上门,离开。Rocke一力想要做点什么,但一抬手,乒乒乓乓,不知什么吊到地上去了,只得有些绝望地抱头: Why is this happening like this? What am I supposed to do?!

Sayid修好了电脑,Jack回来时,只剩几分钟了,Rocke大叔想让Jack跟他共同承担起这个“工作”,Jack坚决不愿意不愿意。Rocke几 乎有些崩溃了: I can't do this alone, Jack. I don't want to. It's a leap of faith, Jack.

当时Rocke大叔脸上是什么表情呢?是想说服Jack相信?是企盼他相信?我觉得那只是他自己恐惧情绪的流露。尽管下肢瘫痪了好几年的他在岛上又能站起 来了,尽管第一次陷身未知怪物的包围其他人都认为他已遇难的情况下他能够拖着一头野猪重新出现,尽管Sayid说如果这个岛上还有什么希望的话也就是 Rocke了,但这一次,他害怕了。有这种恐惧,是因为他对于自己力量不再有信心,是因为他对于未来不再感到有把握。

我们心中的恐惧又来源于何处?

2005年12月26日星期一

闲话UI: 最小化...到任务栏?

对,我是个linux的fans。对于gnome/kde,我有一个很大的不满: 为什么要去学Windows的任务栏风格?

我认为比较好的方式是什么呢? 是WindowMaker的"最小化为图标"。



在最小化为图标的方式下,你可以将图标自行组织,也不局限于一行。但在M$的风格里面,你被限定在这一排上了。而且在XP下,你还可以得到两个更“高级”的选项: 一个是变成几行,你可以上下来回切换,总会让你有点事情做;另外一个特性就是“分组”...

当 然,缩小为图标的时候,其他窗口最大化可能会覆盖这个窗口,这是个问题。但这个问题至少在WindowMaker上可以很容易地解决:在WPrefs里面 Window Handling Options(第二个图标)将When maximizing...do not cover icons选上就可以了。

最开始玩Windows 3.1的时候,最小化都是缩为一个图标的。后来知道Windows早期很多东西都是从X Window System上学的,OpenLook和CDE也都是缩小为一个图标。然后玩WindowMaker,也是这样。可惜现在GNOME和KDE也都学M$的 风格(好在还有一个Roll Up/Down,聊胜于无吧)......

P.S 前几天在一个论坛上看见一个M$ Windows的扩展: Desktop Mate,可以让你的窗口最小化为一个浮动图标:

Usage: right click on minimizes window to floating icon:

2005年12月25日星期日

如何从ISO安装Debian

前两天转了一篇“如何用ISO从硬盘安装Mandrake",就有网友问如何从ISO安装Debian。其实在Debian的安装手册中已经有说明:

4.5 为从硬盘引导准备文件

5.1.2. 使用 LILOGRUB引导 Linux

6.3.1.5 寻找 Debian 安装程序 ISO 映像

这里唯一没有说明的是如果你现在系统上没有lilo或者grub怎么引导安装程序,方法很多: syslinux, loadlin, grub for dos, 以grub作boot loader的floppy或者cdrom。只要搞清楚怎么传给它一个kernel和initrd,都很简单了。孔子说:举一隅而不以三隅反,则不复也。呵呵。

[@more@]

简单地说吧,很多网友对windows比较熟悉一点,机器上也有windows或者dos,比较简单的方法就是找一个grub for dos

  1. 将grub for dos解压到C:\,保持grldr和boot目录在根目录;
  2. 修改C:\boot.ini,添加一行"C:\grldr=Grub for DOS
  3. 这里下载vmlinuz, initrd.gz(如果要2.6的内核,进入2.6子目录),放到C:\boot\debinst
  4. 用notepad编辑c:bootgrubmenu.lst,添加如下内容
    title Install Debian from ISO images

    kernel (hd0,0)/boot/debinst/vmlinuz root=/dev/ram0 ramdisk_size=128000

    initrd (hd0,0)/boot/debinst/initrd.gz
  5. 建议: 将你的Debian ISO文件放在某个分区的根目录
  6. 退出Windows,重启,选择grub for dos

2005年12月23日星期五

Whick Superhero are you?

Your results:
You are Spider-Man
Spider-Man
80%
Superman
70%
Robin
69%
Iron Man
65%
Supergirl
62%
Green Lantern
60%
Batman
60%
Hulk
55%
The Flash
45%
Catwoman
35%
Wonder Woman
27%
You are intelligent, witty,
a bit geeky and have great
power and responsibility.
Click here to take the "Which Superhero are you?" quiz..

2005年12月18日星期日

转: 如何用iso从硬盘安装Mandrake

一个朋友问起这个,最后帮忙在linuxsir的mandriva版的"常见问题及解决"里找到了:

  1. 把Mandriva 2006几个iso文件放在fat32根分区。
  2. 把第一个iso文件中找到vmlinuz和all.rdz(好像是在..alt0里面的),解压跟iso文件放在一起。
  3. 然后启动到纯dos,然后运行dos版的grub。
  4. grub>find /vmlinuz (回车)就会提示你vmlinuz在哪个分区里,比如(hd0,5)
  5. grub>kernel (hd0,5)/vmlinuz ramdisk_size=256000 root=/dev/ram3 automatic=method:disk acpi=ht vga=791
  6. grub>initrd (hd0,5)/all.rdz
  7. grub>boot

My Cygwin Repository Updated

Updated: xfce4-4.2.3.2(except for xffm and xfce-icon-themes)

Updated: sylpheed-claws-gtk2-1.9.100-1t (testing)

Updated: gtkpod-0.99.2 (and libgpod-0.3.0)

2005年12月9日星期五

用bogofilter过滤垃圾邮件

原来用thunderbird的时候对它的反垃圾邮件功能印象挺深,就是经过一段的时间的训练之后,它识别垃圾邮件的能力就很不错了。

现在用的是sylpheed-claws,已经自带了SpamAssassin插件,但我觉得SA用起来似乎不是很方便,也不是很有效。这两天在sylpheed-claws邮件列表中有人问如何用bogofilter来检查垃圾邮件,按照回复也试了一下,感觉不错。

  • mutt的设置方法
  • sylpheed-claws的设置方法
  • 2005年12月7日星期三

    冯小刚的革命道路

    对于自己的认识,冯小刚在书里引用了张建亚的评论:

    韩三平(北影厂厂长)和朱永德(上影厂厂长)是抬担架的;

    张艺谋和陈凯歌是“二四方面军”,一个要往这边走,一个要往那边去,最后两个人都犯了分裂红军的严重错误;

    田壮壮是因为抢渡大渡河,攻急了,留在当地的老乡家里养伤,每天都在给老乡的闺女讲革命胜利以后会是什么样子的神话;

    何平和孙周是躲在上海租界里,喝着咖啡吃着面包,心和红军在一起的左翼联盟,长征就不参加了,但时不时也得发一封电报给红军,说你们是中国的希望,等革命胜利了再去北京;

    冯小刚原本是占山为王的土匪,正好红军途经此地,遂起了当红军的愿望,加入了韩三平的担架队,没走多远正赶上肃反,拉出去就给毙了,结果枪法不准没打死,大雨一浇又醒了,痴心不改,又爬起来追上了过草地的红军。

    ――摘自《三联生活周刊》的上期金鸡奖专题“成王败寇”中的《扶冯小刚一程的那些人

    2005年12月5日星期一

    没有“逗留”,哪来文化?

    没有“逗留”,哪来文化》,在上期《南方周末》上看见的一篇文章。其实深圳更甚,更不如。

    我还发现,香港人永远在赶时间。如果他们在餐厅、咖啡馆或者酒吧里会面,也只是为了在行事日历上面打个勾,表示事情做完了。这个约会还在进行,心里已经在盘算下一个约会的地点跟交通路线。......

    我有时很想问走在路上赶赶赶的香港人:你最近一次跟朋友坐下来喝一杯很慢、很长的咖啡,而且后面没有行程,是什么时候?

    搞不好很多人会说:唉呀,不记得了。

    人跟人之间愿意花时间交流,坐下来为了喝咖啡而喝咖啡,为了聊天而聊天,......

    2005年12月4日星期日

    To Ubuntu or not to Ubuntu

    原来听说Ubuntu免费派送CD,就定了5张,没想到还真来了。

    跑了一下Live CD,我的无线网卡什么都不用配置直接就上网了,挺爽。只是没有中文输入法,而且Ubuntu缺省的暗红色theme我不怎么喜欢。至于GNOME 2.12,倒也没怎么留意跟2.10的差别在哪些地方。

    我又要不要把我的Debian换成Ubuntu呢?CD都已经送上门了,如果完全闲置了,有点对不住吧?

    好的方法是先不覆盖目前用的还不错的Debian, 另外新装一个试用一段。但我现在本本上没有那么多空间啊。

    头疼。

    2005年11月29日星期二

    vim-cream的tear-off menu

    vim的菜单是支持tear-off的(gtk, motif 1.2或者win32版本), 但装了cream(debian package)之后,菜单就不再能够拆下来了。

    vim的文档里面说可以用":tearoff 菜单名"这个命令来手工将一个菜单拆下来。

    注意: 1. 对于已经翻译过的菜单,直接使用翻译过的名字,比如简体中文环境可以用":tearoff 编辑(E)";

    2. vim是采用'.'来分隔多级菜单的,比如用":tearoff 设置(S).色彩主题(C)"就可以拆下cream的color scheme菜单,然后我们就可以一个个地试验那个颜色比较养眼了。

    当然,如果你想主菜单创建的时候就有那个用于拆卸的分隔条,也是可以办到的: set guioptions+=t,但我看见cream/cream- settings.vim里面特意关闭了这个选项,不知道是不是有什么特殊的原因。

    链接:

    Tear-off menu 有什么不好
    vim -cream的菜单国际化(i18n)支持

    2005年11月25日星期五

    搞定无线上网

    现在又有了宽带用,于是把原来商家送的无线路由器翻了出来,开始玩无线上网。

    在网上翻了半天,好像很多无线网卡得用ndiswrapper来调用windows的驱动。幸运的是我的本本上的无线网卡是Intel PRO/Wireless 2200BG,intel提供了ipw2200驱动

    安装步骤大致如下:

    modprobe ipw2200
    iwconfig eth1 essid YOURID
    ifconfig eth1 up
    dhclient eth1

    当然有些细节还得说说:

    1. 首先,你得先看看你的内核有没有ipw2200内核模块: find /lib/module/kernel-${kernel_version} -name 'ipw2200*',我的kernel是ubuntu的,自带这个,Mandrake的也带。如果没有的话,就得自己编译了。

    2. modprobe ipw2200之后,用dmesg | grep ipw2200看看是否成功。最可能碰到的一个问题是没有相应的firmware, 需要先下载放到/usr/lib/hotplug/firmware/或者/lib/firmware/(具体位置请查看 /etc/hotplug/firmware.agent里的配置)。然后重新加载ipw2200模块: rmmod ipw2200; modprobe 2200

    3.modprobe ipw2200成功后,可以从iwconfig看到对应的网络接口名(network interface),我这里是eth1。

    2005年11月24日星期四

    感恩节

    1960年4月16日下午3点前的一分钟,我们做了朋友,因为你,我会永远记住这一分钟的。――《阿飞正传》

    2005年11月22日星期二

    Tear-off menu有什么不好?

    半年前写过一篇tear-off menu,里面提到gnome2缺省没有打开这个功能,但可以通过一个gconf设置项打开。

    但这并不适用与“开始”菜单,因为上述设置只影响gnome_menu_new()创建的菜单(由libgnomeui里面提供),而开始菜单gnome-panel是直接用gtk_menu_new()创建的。

    对于这个功能的缺失我一直有点耿耿于怀。 今天下载源代码看了看,发现要加这个并不难,效果图见右,尤其是Debian菜单现在用起来方便多了。

    但我不明白的是,当初为什么要删除这个功能?

    --- gnome-panel/menu.c.orig     2005-06-07 03:08:56.000000000 +0800
    +++ gnome-panel/menu.c 2005-11-23 00:07:22.000000000 +0800
    @@ -257,6 +257,7 @@ GtkWidget *
    panel_create_menu (void)
    {
    GtkWidget *retval;
    + GtkWidget *tearoff;
    static gboolean registered_icon_theme_changer = FALSE;

    if (!registered_icon_theme_changer) {
    @@ -267,7 +268,11 @@ panel_create_menu (void)
    }

    retval = gtk_menu_new ();

    + tearoff = gtk_tearoff_menu_item_new();
    + gtk_widget_show(tearoff);
    + gtk_menu_prepend(retval, tearoff);
    +
    panel_gconf_notify_add_while_alive ("/desktop/gnome/interface/menus_have_icons",
    (GConfClientNotifyFunc) menus_have_icons_changed,
    G_OBJECT (retval));

    昨天升级后发现debian菜单没有了

    今天发现GNOME的debian菜单没有了,昨天刚做过apt-get upgrade,估计是它带来的。

    解决方法: apt-get install menu-xdg

    (好在这两天不是特别忙,可以抽空翻翻邮件列表。debian-gtk-gnome邮件列表上前几天也有其他人提出这个问题。)

    2005年11月18日星期五

    Cygwin Ports

    早在cygwin的主页上看见了Cygwin Ports的公告,说是提供了近700个包,还包括GNOME 2和xfce4!

    但原来一直访问不畅,所以也没有特别注意。

    昨天又试了一下,发现不仅有GNOME 2.10,而且pygtk2, python-gnome2以及很多应用程序(比如devhelp, gnochm, stardict, gaphor, sodipodi, bmp)都有。爽啊!

    xorg的15:9分辨率问题

    对Debian做了一次整体升级,X也从XFree86也升级到了X.org,但原来的1280x768分辨率不见了。

    [@more@]

    Google跟我说这是xorg的一个bug, 对i855的显卡出不了1280x768的选项。但仔细看下来,这个问题已经解决了啊。

    还是回头先看看错误输出吧,查看/var/log/Xorg.log,发现这么一段:

    (WW) I810(0): config file hsync range 30-60kHz not within DDC hsync ranges.
    (WW) I810(0): config file vrefresh range 50-75Hz not within DDC vrefresh ranges.
    (II) I810(0): Generic Monitor: Using hsync range of 30.00-60.00 kHz
    (II) I810(0): Generic Monitor: Using vrefresh range of 50.00-75.00 Hz
    (II) I810(0): Not using mode "1280x960" (no mode of this name)
    (II) I810(0): Not using built-in mode "1280x768" (width too large for virtual size)
    (--) I810(0): Virtual size is 1024x768 (pitch 1024)
    (**) I810(0): *Built-in mode "1024x768"
    (**) I810(0): *Built-in mode "800x600"

    看来是virtual设置在捣乱, xorg.conf的手册页上说比virtual设置大的分辨率都会被喀喳掉。看了一下我的xorg.conf,没有设置这个啊,这个1024x768的设置哪里跑来的?

    不理它,参照man xorg.conf的说明自己设一个。然后在GNOME的“屏幕分辨率”里面就看见1280x768的选项了。搞定。

    2005年11月17日星期四

    gdm: 如何禁用不需要的会话(session)名

    一不留神,成了公司论坛上的"Linux"版的专家。昨天收到一个问题问如何禁用gdm中的某些会话(session)名称。

    记得以前装xfce4时也碰到过类似的问题,只是当时想在上面添加一项xfce4。但当时看遍了/etc/X11/gdm下的文件也没看出怎么设置,只好等到后来debian自己提供了这个条目。

    怎么解决呢?

    [@more@]
    拉下gdm的源代码翻了一下,发现它似乎是这样的: 寻找/usr/share/xsession/下的.desktop文件,如果里面Hidden为false(这也是缺省值)就显示它,否则就不显示。

    好在debian提供了包文件搜索,我可以进一步验证哪些包提供了这个目录下的文件: 搜索usr/share/xession即可看出,众多的wm也提供了这个目录下的文件,而gdm提供的文件中只有两个.desktop文件,另外一个明显不是。基本可以确认了。找个闲着的机器试验一下就可以正式确认。

    P.S 比较奇怪的是xfce4的这个文件是由xfce4-utils提供的,而不是xfce4-session.

    2005年11月8日星期二

    Python and XUL

    Daily Python-URL上看见的:

    Sidnei da Silva: Python and XUL: The Screenshot [«Mark Hammond just shown me a screenshot of Python and XUL. That's right, Python used as scripting language on our most beloved browser to create XUL interfaces.»]

    比较完整的说明在这里。上面说估计在Mozilla 1.9上可以看到这个东西。

    本来我对XUL还是有兴趣的(近来的工作也存在一个如何快速制作业务界面(数量多但大都比较简单)的问题),只是一直懒得去学javascript了。

    2005年11月5日星期六

    Porting simple Delphi application to Lazarus

    You should read the following docs first:

    Now I'm porting unwebcompiler(see also) to lazarus. The Windows version now works fine. but the linux one would thraw exceptions on LH5 decompressing.

    The debugger refuse to work on my Linux box, I have to fall back on gdb.

    Another problem is the executable created by Lazarus is too big(as for the unwebcompiler, it is about 6M). :-(

    2005年10月28日星期五

    xp? sawfish?

    这个窗口边框的装饰是不是有点象sawfish?



    来自deviantART的winxp theme: Opus,至少可以让你的Windows XP的窗口边框小很多,节省不少空间(反正这之前我的xp都是设置为传统样式,而不用XP的缺省风格――我就不明白,M$新增了theme功能,怎么就不能提供一个好一点的缺省theme?)

    2005年10月25日星期二

    gnochm: show me the icons

    去年我把Inside the X网站上提供的所有The X Files的对白都弄了下来,然后打包成了一个CHM文件

    最近在重看《X档案》的主线部分,就是有关黑油、外星殖民、超级战士的,在Inside the X主页上有星号标记的。为了方便,当初我做CHM时也将目录树中的节点用了特殊的图标。

    现在的问题是我在Debian上一边看碟,一边用gnochm看剧本,gnochm的目录树没有图标,从目录里面却根本看不出来哪些是阴谋论部分的。

    毛主席说:自己动手,丰衣足食。于是又来改gnochm。本以为要加个图标会比较麻烦,没想到非常简单。效果如下,补丁已经提交给upstream.

    2005年10月21日星期五

    iPod惹谁了 :-)

    (I) 反对iPod的网站

    InternetWired News Blog上面写到,iPod所产生的效应越来越大,反对的声浪也越来越汹涌,甚至还有人专门架设了一个反对iPod的网站,口号是iPods Suck!里面给出了不少极端却不乏趣味性的海报,甚至在贩卖印有iPods Suck的T恤和茶杯。关于衣服和茶杯,制作者说这是用来散播仇恨的----用合适的价格卖给你这些东西帮你在憎恨iPod的路上走的一帆风顺。

    (II) smashmyipod.com - You donate, we smash!

    This has got to be the funniest cause someone has ever requested donations for:

    After we collect $400 in donations, we will take that money to a local Apple Store. We will purchase the iPod, open it right inside the store, and destroy it right on the spot. The whole thing will be shot on film, and displayed on this site. This is only a social experiment, for the entertainment of the donors, and visitors of this site.

    The $400 are raised, so expect the video anytime soon...

    2005年10月18日星期二

    regex compilation in Perl

    昨天写一个简单的perl脚本处理一个比较大的文本文件时,觉得速度不太理想。想到regular expression多次匹配也许会有一些影响,记得不会变化的reg.ex.是可以编译的,编译后的执行速度应该会快一些,python里面的re模块 就提供compile函数。但对于perl,却不记得有这么个东西,在perl的帮助里面找了半天也没有找到。

    最后还是用了google查到(也许应该先问它才是),很简单,在表达式后面添加一个修饰符(modifiier):

    o - Compile a regular expression once
    If you ever end up with a really long regular expression, you can use this modifier to compile it before it's used. This means that long and complicated expressions don't have to be compiled each time they're used.

    The only thing you must remember is that if you use this modifier, you are promising Perl that you won't attempt to change it while the script is running. If you do, it won't be taken into account. There won't be an example of how to use this modifier, since if you're able to write regular expression this long and complicated, you're way ahead of anything I could tell you in this article!

    仿iTunes的rhythmbox

    原来一直用gtkpod管理ipod, 用beep-media-player放音乐,对于GNOME自带的rhythmbox反倒几乎没有用过。但如今才发现它也有读取ipod播放列表的功能,而且略微留意一下就会发现,它原来是在仿iTunes。

    rhythmbox

    2005年10月12日星期三

    这年头,什么spam都有

    这年头,什么spam都有。我这里被comment spam折腾得不敢再开comment功能(看来我得考虑换一个地方写blog了),刚才看新的一期 Debian Weekly News,上面说Debian Wiki也正在被Wiki spam骚扰。

    2005年10月11日星期二

    Tilda and FPS

    Tilda is a Linux terminal taking after the likeness of many classic terminals from first person shooter games, Quake, Doom and Half-Life to name a few, where the terminal has no border and is hidden from the desktop till a key or keys is hit.

    让我回忆起当初奋战Quake 3的快乐时光:-).

    My Cygwin Repository Updated

    Updated: sylpheed-claws-gtk2-1.9.15

    Now split into stable(1.9.15-1 this time) and testing(1.9.15-1t this time). At present, the testing version has gnomeprint support, some cygwin specific modifications and my undelete patch.

    Note you need to update your libetpan to 0.39.

    New: tilda-0.09.1

    Tilda is a Linux terminal taking after the likeness of many classic terminals from first person shooter games, Quake, Doom and Half-Life to name a few, where the terminal has no border and is hidden from the desktop till a key or keys is hit.

    New: xfdiff-4.3.4

    xfdiff was a component of xffm, but now returns as an independant tool.

    2005年9月30日星期五

    BMPx

    XMMS2总让我感觉怪怪的,又是SCons又是Python, 还要SQLite, 还分server和client,不管它设计怎么样,我是没有找到以前XMMS(或者更以前的winamp)的感觉,而且到现在连个GUI都没有看到。

    所以在freshmeat上看到BMPx这个项目,看来还是有人也这么想(并且会动手去做:-)。

    2005年9月23日星期五

    Windows也可用gaim同时登录MSN, QQ和Gtalk

    下载了最新的GaimOpenQ的Windows版本, 安装很顺利, OpenQ跟gaim之间也没有版本兼容性问题。跑起来gtk也不象原来那么容易崩溃了(至少dia的windows版本很是让人不爽)。这下Windows也可以顺当地同时使用MSN, QQ和Gtalk了。

    2005年9月17日星期六

    iTunes 5的歌词功能

    升级到iTunes 5,发现apple已经添加了编辑歌词的功能,帮助文件里面语焉不详地说“以便在某些型号的iPod上显示歌词”。

    另外我比较好奇的是,它把歌词文件存在什么地方? 以前给歌曲添加“媒体资料”(我只知道可以添加图片)时就没有搞清楚它存放的位置。

    2005年9月15日星期四

    Super Cow Powers

    摘自 超级牛力 / Super Cow Powers

    超级牛力是 Debian 系统中一股神秘的力量。講白了是設計師的娛樂,也就是復活節彩蛋程式(Easter Eggs)。

    $ apt-get -h
    apt 0.5.24 for linux i386 compiled on Mar 16 2004 22:49:26
    Usage: apt-get [options] command
    apt-get [options] install|remove pkg1 [pkg2 ...]
    apt-get [options] source pkg1 [pkg2 ...]

    [snip...]

    See the apt-get(8), sources.list(5) and apt.conf(5) manual
    pages for more information and options.

    This APT has Super Cow Powers.
    $ apt-get moo
    (__)
    (oo)
    /------\/
    / | ||
    * /\---/
    ~~ ~~
    ...."Have you mooed today?"...

    $ apt-build -v
    apt-build version 0.9.2.1
    $ apt-build moo
    (__) ~
    (oo) /
    _____\/___/
    / /\ / /
    ~ / * /
    / ___/
    *----/\
    / \
    / /
    ~ ~
    ..."Have you danced today ? Discow !"...


    [@more@]
    $ aptitude --help aptitude 0.2.14.1 用法: aptitude [-s 檔案名] [-u|-i]        aptitude [選項] <動作> ...   動作 (如果未指定,aptitude 將進入交互模式):   [snip...]                    這個 aptitude 無超級牛力。 $ aptitude moo 此軟體沒有復活節彩蛋程式。 $ aptitude -v moo 此軟體真的沒有復活節彩蛋程式。 $ aptitude -vv moo 我不是已經告訴你這個軟體真的沒有復活節彩蛋程式了嗎? $ aptitude -vvv moo 停啦! $ aptitude -vvvv moo 好啦,好啦,如果我給你復活節彩蛋,你是不是就閃人? $ aptitude -vvvvv moo 好啦,你贏了。                                  /----\                        -------/      \                       /               \                      /                |    -----------------/                  --------\    ----------------------------------------------   爽了嗎? $ aptitude -vvvvvv moo 這是什麼? 這當然是一隻大象被一隻蛇吞掉。 你有沒點常識? $ aptitude -vvvvvvv moo 走開啦,我正試著專心。   

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

    Mandrake:
    urpmi drakcowsay
    Gentoo:
    emerge moo
    这里看到的。

    Ubuntu的休眠

    我的Debian用的是Ubuntu的基本系统,但gnome的shutdown界面上就没有休眠(Hibernate,也即suspend to disk)这个选项了。想看看它到底是调用的哪个命令,但用find搜索了一遍,也没有看见与suspend相关的东西。

    最后总算在Ubuntu的论坛上问到了:

    sudo sh -c "echo 4 > /proc/acpi/sleep"

    2005年9月10日星期六

    xfree86 removed from Debian (stepping towards xorg-x11)

    From Debian Weekly News 37:

    Removed Packages. 17 packages have been removed from the Debian archive during the past week:

    • xfree86 -- XFree86 X server.
      Bug#326839: Request of maintainer, superseded by xorg-x11

    Search 'libx11-6' from http://packages.debian.org, you can even find that now 6.8.99.900 is already in 'experimental'.

    Xnest的问题

    前日才说在Xnest里面玩WindowMaker+GNUstep,只是过了一天之后,不知道哪里出了问题,这个菜单项就再也不能工作了。查看了gdmflexiserver和Xnest的帮助,也没有找到解决问题的方法。

    想自己手工启动Xnest,但却不知道怎么让它跑一个X客户程序,从外面设置了DISPLAY后启动应用(比如xterm)时老是报告没有权限――问题是这个Xnest 里面连个xterm也没有,我也没办法xhost +啊。选项-audit 0在Debian上好使,但编译GNUstep又出了问题,跑的时候会崩溃;Mandrive上GNUstep编译很顺利,Xnest又老是无权访问,而且只能全屏,郁闷。

    Cygwin下面的Xnest倒是根本不用权限认证,也不知道是哪个配置不一样。

    [@more@]

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

    0911补充:

    终于找到gdmflexiserver无法启动的原因了: 是因为系统没有配置任何网络界面(network interface)。

    今天运行totem来播放DVD的时候它抱怨没有network interface,检查才发现果然连loopback都没有了,ifup lo也根本无法起来,说是/etc/network/interfaces语法错误。然后检查该文件,发现里面有些垃圾,估计是那天我用network-admin配置了ppp时搞乱的,看来不能太信任GUI配置工具。

    决得gdmflexiserver也应该是这个问题,network interface搞好之后再试了一下,果然就好了。让人哭笑不得的是原来它报告的错误一直是"X没有配置好,无法启动...",这简直就是M$的风格,根本让人无法定位问题出在哪里。:-(

    2005年9月8日星期四

    玩玩GNUstep

    感觉Gnome做得越来越象Windows, 时间长了有些烦它;而一直又觉得NextStep风格的WindowMaker不错,于是开始玩GNUstep。费劲编译了ProjectCenter, GSCommander等应用程序,但结果发现自己不怎么习惯它们的操作风格,观感(look & fee)也似乎有些单调。估计我真是受M$的荼毒太深了。叶公好龙?

    不过这次在GNOME菜单里面发现了有个“嵌入式登录”,居然可以在桌面上再开一个X server,从GDM里面再登录一个会话,在这里玩玩WindowMaker+GNUstep也不错。(这项功能要拜Xnest所赐)

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

    2005年7月30日星期六

    glib2,gtk2,pygtk2 reference in CHM format

    I modified devhelp2chm a little, to workaround a problem I found when using gnochm to read the CHM files generated by it.

    And updated two CHM files generated by it:
    glib2/gtk2 gtk-2.6.8, glib-2.6.5, including FAQ and tutorial
    (source: package libgtk2.0-doc, libglib2.0-doc)
    pygtk2 reference pygtk2ref 2.6.0, and GtkSourceView, GtkSpell, GnomePrint, GnomePrintUI, GtkMozembed
    (source: pygtk2 website)


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

    How to build:

    gtk2.chm:

    apt-get install libglib2.0-doc libgtk2.0-doc
    cd /usr/share/gtk-doc/html/
    DIRS="gtk/ gdk/ gdk-pixbuf/ gtk-faq/ gtk-tutorial/ glib/ gobject/"
    find $DIRS -name '*.devhelp.gz' | xargs gunzip
    for d in $DIRS; do
    (cd $d;
    echo $d
    for f in *.html; do
    sed 's#/usr/share/gtk-doc/html/#../#' $f > $f.tmp
    mv $f.tmp $f
    done)
    done
    find $DIRS -name '*.devhelp | xargs ~/bin/devhelp2chm-v2.sh
    -p gtk2 -T "GTK+ Reference Manual" -t gtk/index.html

    ...Then use HtmlHelp Workshop to build it.

    pygtk2ref.chm

    wget http://www.pygtk.org/dist/pygtk2reference.tbz2
    tar jxf pygtk2reference.tbz2
    find . -name '*.devhelp' | xargs ~/bin/devhelp2chm-v2.sh
    -p pygtk2ref -T "PyGTK2 Reference" -t pygtk2reference/index.html

    2005年7月29日星期五

    报复

    不知道是在哪里看见这么一句话:“幸福地活下去是最大的报复”。

    应该是这两天看到的。


    2005年7月28日星期四

    Salut d'amour

    多听两遍,发觉其实这首Elgar的Salut d'amour很不错。

    这首曲子据说是“爱尔加题赠给新婚妻子的一首小品,音乐绮丽婉转、甜蜜温馨,旋律优美动人极富歌唱性”(Salut d'amour = Hello of Love),但我听来怎么就感觉到有一丝哀伤。

    也 许是跟演奏者用的乐器有关(大提琴? 俺也不知道是不是),因为我听的是《麦兜II》里面的版本。电影里面它出现于片尾,菠萝油王子的故事讲完之后,马友友与麦兜的同台表演之前。画面上是城市 上方黑云压顶的天空,只有贴近地平线的地方有一点亮光,一辆出租车在画面下方穿梭着前进。

    2005年7月26日星期二

    几个画UML图的工具

    Dia

    前两天工作时需要画UML图,所以折腾了一下dia。功能比较少,其实它只是一个画图工具,不过也可以画UML图。这个东西倒是满简单的。另外还有一个dia2code,可以把dia画出的UML图转换成C/C++/Java/Python/SQL/C#代码框架。

    Gaphor

    这个东西是用Python+Gnome写的,说是比较适合Gnome环境。功能也不太多,但似乎UML2.0里面的大部分都支持了。另外也提供了Windows版本。

    TCM

    自己折腾了半天将dia移植到了cygwin,回头才留意到cygwin原来早收录了一个建模工具tcm。这个工具是用Motif库写的,界面难看一点。具体功能怎么样,还不太清楚。

    Umbrello

    这是一个KDE上的建模工具,风格上做得跟Rational Rose比较接近(我觉得KDE下的仿Windows商业软件的东西比较多,这样习惯了Windows下一些软件的人迁移过来就容易一些。而gnome在这方面就做得比较差,一个例子就是Gnome OfficeKOffice, 前者这么久了就只有AbiWord和Gnumeric,没有做幻灯片的,没有画流程图的... )。手头没有KDE环境,还没试过。

    BTW: Debian里面收录了一个软件包uml-utilities,不要误会,这个东西跟这里说的UML没有什么关系,而是User Mode Linux的意思。

    2005年7月25日星期一

    apt-get (should be) everywhere

    Planet Debian TW上看见yungyucapt (should be) everywhere一文中说:

    portage 和 arch 也都??真很好用,不咿有便利的 apt,?L??新事物的?恿φ媸谴蟠??p低了。

    还真是。我的laptop上装的是Mandrake,在Debian社区看见很多新东西都只能看看,不能尝试了。(也许我应该多去Mandrake的社区逛?似乎没有几个啊。)

    还是什么时候有空在上面搞定debian,直接安装不行的话,就试试原来在Planet Debian上看见有人用过的sidegrade方法(嘿,这算个新词,就是先装Ubuntu,它的内核对laptop支持似乎问题少些,然后再apt-get改为debian)。

    2005年7月23日星期六

    试试quilt

    作为一个偶尔的hacker,维护一个软件包的一堆patch是非常痛苦的事情,尤其是有的patch对另外一些有依赖时。一个例子是原来对 dillo感兴趣时搜集了第三方patch,另一个例子是目前在维护的sylpheed-claws的cygwin移植版本。结果是:1. 我放弃了对dillo-enhanced的cygwin版本的维护; 2. sylpheed-claws的cygwin我现在也只提供一个all-in-one的补丁,不再提供各个改动分开的patch了 :-(

    看见Debian Planet上有DD说已经在用quilt来维护一个软件包的补丁,说是很不错。于是找来玩了一下。

    quilt就是为了解决前面那一类问题诞生的。它基于原来Andrew Morton为维护内核补丁而制作的一堆脚本(想想维护1000个补丁是什么感觉?)


    我按照文档试用了一下,感觉这个东西大致是这样工作的
    首先,quilt只需要一个源代码树, 其次,quilt的工作对象是patch
    quilt new foobar1.diff 开始一个新的patch,然后你就应该在这个patch上工作
    quilt edit some/file.c指定要对some/file.c做一些修改,quilt会自动备份这个文件
    如果你后面还要修改some/file.c,可以直接用vi some/file.c,不一定要再quilt edit some/file.c
    quilt refresh 完成当前的patch工作,生成输出foobar1.diff
    当然,在你开始一个新的patch之前,你还是可以继续修改,然后用refresh重新生成补丁
    quilt add foobar2.diff 如果你要在foobar1.diff的基础上开始一个新的patch,就用这个命令
    quilt pop 抛出当前的patch,如果当前栈内只有一个,那么原来树就复原了
    quilt push 将series中下一个补丁压入栈,就是apply那个补丁
    quilt import some-patch.diff 从一个patch文件中导入一个补丁

    举个例子,某个源代码包我通过quilt维护了1.diff, 2.diff, 3.diff三个补丁,但现在新的upstream release来了
    quilt push 应用第一个补丁
    quilt push 应用第二个补丁,
    但这个补丁应用失败,怎么办? 用quilt push -f强制补丁,然后编辑源代码,修复被拒绝的文件,然后
    quilt refresh 刷新第二个补丁
    然后
    quilt push 应用第三个补

    2005年7月22日星期五

    My Cygwin Repository Updated

    New:

    • vim-gtk2-6.3.071
    • dia-0.94 Dia is a gtk+ based diagram creation program (screenshots)
    Updated:
    • leafpad-0.8.2
    • notecase-0.9.3
    • gtkpod-0.94.0


    2005年7月21日星期四

    Which Fantasy/SciFi Character Are You?

    也凑个热闹。这是我的结果,

    Which Fantasy/SciFi Character Are You?

    A naturally skilled companion to those around you, you earnestly use your prowess out of concern to those you care about.

    This forest is old. Very old. Full of memory... and anger.

    Legolas is a character from the Middle-Earth universe. A biography is available at TheOneRing.net.

    2005年7月18日星期一

    高版本pkg-config的问题

    Briefly, on my cygwin, `pkg-config --libs gtk+-2.0' would output:

    0.17: -Wl,--export-dynamic -lgtk-x11-2.0

    0.15: -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv

    I think the latter is right. Perhaps cygwin port forgot to specify '--enable-indirect-deps' option while building.




    这 几日在公司做设计,需要划UML图,于是就想用dia,装了个windows版本,谁知道老崩溃,于是想念起cygwin版本来。原来在cygnome2 已经做过移植,但跟现在cygwin自己的gtk2用了不同的prefix,就重新编译一下吧。 因为在公司空闲时间不多,于是就在家里先搞好了build script和cygwin patch打算然后重新在公司直接编译一遍。

    谁 知道在家里弄好的patch到了公司就不用了,configure的时候报告gtk+-2.0不存在,检查config.log,发现是测试gtk+- 2.0时没有g_xxx等函数的定义,也就是说缺少-lglib-2.0。手工添加了一把,到了生成lib/libdia.la时还是出错,这回说是没有 gdk_xxx的定义。

    觉得有问题,回头再查看config.log, 看到pkgconfig --libs gtk+-2.0的时候就只输出了-Wl,--export-dynamic -lgtk-x11-2.0. 怎么回事?gtk+-2.0依赖于gdk,glib等,它应该自动将它们的libs也提取出来啊,总不能让我在应用程序中自己来调用吧(比如我怎么知道该 添加gdk-x11还是gdk-win32,我怎么知道它有没有使用libintl?)

    回到家一试验,果然家里的pkgconfig输出的 是正确的(有-lpango-1.0 -lglib-2.0.....)。但pkgconfig是个小程序,好像没有什么配置上的不同导致这个问题啊?难道是版本问题?一检查,家里用的还是 0.15版本,而公司里用的是较新的0.17。奇怪,老版本居然没问题,而新版本有。

    2005年7月14日星期四

    如果当年郑和征服了西洋,世界将会怎样?

    7.11 中国航海日

    郑和, 600年前

    西洋》,刘慈欣,震撼,悲哀

    搞笑: iPod Flea

    跳蚤大小的iPod?

    也算是把苹果给狠狠揶揄了一把

    quilt

    quilt is a tool for managing a series of patches by keeping track of the changes each patch makes. Patches can be applied, un-applied, refreshed, etc.

    gquilt is a PyGTK GUI wrapper for quilt.

    See also: meld

    Unfortunately, quilt could be successfully built on cygwin :-(

    2005年7月12日星期二

    拉格朗日点

    新闻: 占领拉格朗日点(english)

    拉格朗日坟场》,王晋康:

    姚 云其恍然大悟道:“噢,我知道了,那个地方应该叫作拉格朗日点。一位天文学家拉格朗日发现,距地球和月亮各38万公里,与地球和月亮成等边三角形的两处空 间,由于受到地球和月亮引力的双重约束,此处的天体处于稳态平衡,它们只会绕着这个点振荡而不会飞离。天文学家发现,这儿聚集了一些太空微粒,在阳光下显 得比别处明亮。太阳系中还有更典型的例子,像太阳和木星系统中就有阿基里斯卫星和普特洛克勒斯卫星处于这种稳态平衡。”

    “飞船向那儿运什么?”

    姚 云其奇怪地问:“这一点都不了解吗?你父亲就是靠这种运输业发家的。自21世纪初,人类就把地球处理的核废料送到那儿作永久保存地,因为在那儿不怕它飞 走。当然,它们对过往飞船有一定的危险,因此也有人称它为拉格朗日坟场。能把核废料直接投入太阳熔炉才是最保险的,但那样费用太高,航行也太危险。不过, 温室效应造成文明衰退后,这个行业也几乎衰亡了,人类只顾口腹,已经顾不上什么环境保护了。

    2005年7月8日星期五

    自己写个PodLyrics?

    最近听歌听腻了,想用iPod来听英语了,然后就把《新概念英语》塞了进去,不过有时想听不明白时看看文字。想起原来试过PodLyrics, 它生成歌词文件时上方有mp3文件的链接,可以点击开始播放 (链接是这样的: 播放 A HREF="ipod:music?song=lesson 07&NowPlaying=true", 停止 A HREF="ipod:music?song=Tears in Heaven&NowPlaying=false")。

    但PodLyrics的问题在于对CJK支持很差。所以我想自己写一个了,iTunesDB的读取代码在gtkpod里面有,移起来应该比较容易(gtkpod刚刚在0.93里面对iTunesDB的读写代码做了重写,说现在是completely self-contained,方便其他项目使用)。或者干脆在gtkpod上做。还有一个想法就是不做UI,用命令行来,当然用我喜欢的Python, 反正iTunes借口也都有(1, 2)。

    不过麻烦的是找一个歌词网站,以便可以下载歌词(当然,允许自己输入歌词肯定是必要的,因为哪个网站上也不会把《新概念英语》的课文作为歌词放着。)

    Links:
    Apple iPod on Linux

    GNOME图标主题: 太极脚

    GNOME中国站上翻到一个极具中国特色的GNOME图标主题: 太极脚

    里面用的是围棋子、算盘、算珠、包袱、葫芦、中国结......




    可惜作者没有开发完成(这半年多也没有见新的版本发布),可能很多东西要找个对应的传统物件还是比较困难。至少"目录"的图片就很难看,似乎根本不是一类。

    2005年7月5日星期二

    Help! 怎么批量转换svg图片到其他格式?

    我现在想把一个GNOME的Icon theme里面的图片在其他地方借用一个,但svg格式的支持比较少,所以得转换到其他格式(png, gif什么的)。

    我试过ImageMagick:
    for f in *.svg; do
    f2=`basename $f .svg`
    convert -resize 24x24 $f $f2.png
    done
    但有些图片转换后右方和下方的一些象素会丢失,比如gartoon主题里面一个gtk-stock图片
    gnome-stock-export icon in gartoon theme
    转换后就变成这样了
    gnome-stock-export icon in gartoon theme, bad ouput

    用GIMP试了一下,转换结果倒是很正常,只是因为要转换的文件比较多,用GUI一个个操作是不太现实的。
    (或许可以用Script-Fu? 只是我还不知道这个东西怎么用:-( )

    2005年6月30日星期四

    Ain't No Sunshine

    上周看《神探阿蒙》(Monk),里面那个大大咧咧的警长在LA喝醉了酒,第二天回头追查一个案子线索时一个胖女人非说他头晚在酒吧间唱歌唱得很不错,不仅深情,而且还有声情并茂的舞蹈动作,非要他再唱一遍才肯告知破案线索。居然就是这首Ain't No Sunshine, 笑死我了。

    P.S 怎么我喜欢的英文歌大都是70年代的?

    Ain't No Sunshine

    Ain't no sunshine when she's gone
    It's not warm when she's away
    Ain't no sunshine when she's gone
    And she's always gone too long
    Anytime she goes away

    Wonder this time where she's gone
    Wonder if she's gone to stay
    Ain't no sunshine when she's gone
    And this house just ain't no home
    Anytime she goes away

    And I know, I know...
    Hey, I ought to leave the young thing alone,

    Ain't no sunshine when she's gone
    Ain't no sunshine when she's gone
    Only darkness everyday
    Ain't no sunshine when she's gone
    And this house just ain't no home
    Anytime she goes away
    Ain't no sunshine
    Ain't no sun Ain't no sun
    Ain't no sunshine when she's gone
    Anytime she goes away
    Ain't no sun
    she's always gone too long

    2005年6月25日星期六

    在iPod上跑的Linux

    看见Linux公社的一篇"新软推荐"iPod Linux,开始还以为是类似于那可以装在USB存储器上的微型Linux,无非是可以做得小一点(其实iPod有20G/40G,容量也根本不是问题)罢了。看下面评论才发现这是在iPod上跑的μcLinux!

    有了这个东西,我们可以

    嘿嘿,我发现我的第三代iPod是目前支持得最好的。

    相关链接:

    Debian Reference CHM version (link?)

    Created from Debian Reference 06/22/05.

    English 简体中文版 繁体中文版

    I wrote a simple script to create the HtmlHelp project files.

    2005年6月22日星期三

    神奇的format.com!

    有奖竞猜:
    启动到DOS,执行format /q E:,会发生什么结果?

    我不知道在别人那里是不是这样,反正在我的机器上是: 用dir可以看出,E盘被格式化了,但C盘也被格式化了。然后重启,发现原来E盘没有被格式化,C盘倒是确实被格式化了。

    今天在公司重装机器时就这样被M$捅了一刀,C盘的东西都没有来得及备份,本来是想把E盘格了将C盘ghost过去的,结果... 试了MS-DOS 6.22和Norton 8.0的unformat,都无力回天,只好看着它们离我远去...

    然 后format /?看见它说它的命令格式是format drive: [/Q]...还怀疑是应该将选项/q放在最后面才行,它没有在/q前看见盘符就以为是格式化C盘了(以M$软件一向羸弱的命令行支持,我相信这也是有可 能的)。没想到实验换过来还是不对,还是开始好像两个盘都被格式化了,重启后发现要格式化的盘完好,C盘确被搞定了。

    我用的是Windows 98的启动盘里面的format.com。

    2005年6月21日星期二

    Ian Murdock: Where we should go from here

    Sarge刚发布不久,就在Planet Debian上看见了Ian Murdock的这篇Where we should go from here (原标题为Where should we go from here?,两相对比,有点意思)。但因为有点长,对于英文的东西我还是有点怵,当时就没仔细看,但毕竟是"Debian之父"写的,应该有价值,所以今天找时间读了一遍。

    其大意是说,sarge发布了,我们得想想以后的路怎么走,他认为:
    a. 还是应该保持定期发布(12-18个月的周期比较合适);
    b. 更加专注于核心功能,让各个衍生版本可以联合起来。

    作者认为,之所以提出这两点,是Debian的几个特点决定的:
    1. Debian是非商业化的,完全由社区开发;
    2. 相对RedHat, SuSE而言,Debian不太象一个操作系统,而是一堆兼容软件的集合,这里的兼容性非常重要,一方面它使得各个衍生版本(LinSpire, ZenLinux, Knoppix等)可以"站在巨人的肩膀上"诞生,另一方面,它们相互之间又是兼容的(而从RedHat派生出来的Caldera, SuSE, Mandriave, TurboLinux却做不到)。

    所以Debian目前应该发挥这两个优势(1,2),打好一个通用、兼容的核心(比如, 进一步跟LSB靠拢)一方面可以让商业有一个基础,另外一方面有了明确清晰的路线图也可以避免再出现象Ubuntu这样的分化(补充)。

    关于发布周期,服务器用户和桌面用户总是有不同的标准,所以这个问题也总是在吵,也常常会有人认为应该分一支Debian Desktop出来。我小兵,个人使用,一直用testing,挺好。

    2005年6月20日星期一

    周末看了几部片子

    最近工作比较忙,也就没有多少闲暇时间来玩自由软件。也不知道是不是暴风雨前的寂静,这个周末居然没有什么事情,于是周五晚到周六就一直在家里看电视和碟子,捡到什么看什么。

    人?鬼?情
    在中央六台看的,大意是将一个艺术家的成长:一个叫秋芸的女孩儿想演戏,并且是演武生,最终的目标是演钟馗,但为着这个目标,她经历了很多,付出了很多。刚才搜到在女权中国网站上有这部电影的一篇详细解析《<人?鬼?情>――一个女人的困境》 ,说是“某种意义上说,它是迄今为止中国第一部、也是唯一一部‘女性电影’”.

    寻找梦幻岛(Finding Neverland)
    对于小飞侠彼得?潘的故事,我一点概念也没有,小时候熟悉的是《西游记》、《封神榜》、《钟馗传》等,工作了有个朋友被其他朋友给了个小飞侠的外号才知道有这么个觉得。看这部片子我是冲着Johnny Depp去的,五一期间看了他的另一部片子剪刀手爱德华》(Edward Scissorhands)(中央六台原来在“佳片有约”栏目放过,可惜只看到一半);Kate Winslet原本是以为有些花瓶的嫌疑的(不好意思,还是从Titanic得来的),但去年的《暖暖内含光》(Eternal Sunshine of the Spotless Mind)和现在这部让我再次认为还是不能太想当然了.

    一个陌生女人的来信
    Beauty向我推荐了好久了,但一直也没能坐下来看。
    茨威格的原著我虽然没看过,但也从各种外国名著介绍知道一二,有次跟yoyo聊起来,她还给我讲过大致情节(她总是让我意外,看的居然常常是我觉得挺晦涩的东西,《生命中不能承受之轻》什么的;我喜欢的都是《达芬奇密码》《死亡区域》之类神神怪怪情节离奇的故事:-)。我想故事情节就在那里,徐静蕾也不可能做出什么新意来。看完之后,发现自己又错了,她根本就不需要做什么新意,只是诠释她自己对这个故事的理解就够了。

    对 于剧中的女主角,如果说片子主旨在于“我爱你,但与你无关”,这显然是不能自圆其说的,女主角显然一直在渴望着得到男主角的“承认”。从一开始,她就在渴 望。那么风流的一个人(对于有才华的人,就叫做风流,对于一般的,就是流氓了),旁边的女人换来换去,怎么自己就没有吸引力呢?当老管家认出她的时候,她 已经很难控制自己的情绪了。――不管怎样,即时的确是她一直想证明自己,也不能不说是爱的表现吧。――反正女人都搞不懂。

    魔幻厨房
    也是电视上看的,只看到后半截。原来一直以为也是一部嘻嘻哈哈的搞笑片,没想到居然会要仔细讨论一下感情的问题。

    晚上还在《火星人玩转地球》(Mars Attacks)《宾虚》(Bin-Hur)这两部老片子间两边来回切换,都有一搭没一搭的。

    其实我最想看的还是中央10台的一些栏目,《见证》、《讲述》,《
    探索?发现《大家》什么的,可惜我这里无法收到。

    不刻盘运行Knoppix的终极方法?

    似 乎没有必要讲ISO的内容完全解开,Knoppix早就支持直接使用硬盘上的ISO文件,只需要在grub的menu.lst或者lilo的 lilo.conf里面kernel行添加如下一个参数就可以了(关于如何从grub for dos或者lilo调用Knoppix的kernel和initrd, 参见我前面的帖子)

    bootfrom=/dev/hda1/*.iso

    这是刚才Easthero告诉我的,我还没有来试验。

    english translation:

    Ultimate way to boot knoppix without burning a CD?

    It seems that knoppix already support this. No need to unpack the ISO, just use one magic word in grub's menu.lst or lilo.conf (add as a parameter to the 'kernel' line):

    bootfrom=/dev/hda1/*.iso

    (see my old post for how to boot with knoppix's kernel and initrd from grub for dos)

    Easthero told me just now. I haven't tested it yet.

    2005年6月18日星期六

    总结: CHM viewers

    最近又发现了几个,索性就来总结一下吧。(Nearly all are based on chmlib.)

    ViewerRequiresCJK supportProject DescriptionComments
    xchmwxWidget,chmlib fair"xCHM is a .chmviewer for UNIX (Linux, *BSD, Solaris). Success stories of xCHM on Mac OS X have also been received, and apparently xCHM even works if compiled under the Cygwin environment in Windows."
    gnochmGNOME,python-gnomegood
    "GnoCHM is a CHM file viewer for Gnome2. It uses PyCHM, a set of Python wrappers around the C library libchm."
    chmseegtk2,gnome-vfs2, gtkhtml3"只支持简体和英文编码"" ChmSee是一个浏览CHM文件的程序,但只支持简体和英文编码的CHM文件,其它编码暂不支持."国人开发(作者忘了在主页上留自己的名字了:0)
    arCHMagechmlib,pythongood

    Actually it is not a real viewer. It is a HTTP server. You need a web browser to view the pages.

    kio_chmKDE3,chmlibgood

    kio_chm is a plugin for KDevelop, but when installed, you can view CHM files in konquorer.

    kchmchmlib, KDevelop3(kio_chm), Qt3 ?"KCHM provides access to MS .chm files (help files) using Chmlib and Qt and KDE libraries. You can read your favourite ebooks on your Linux box!"Just a UI front-end for kio_chm. UI written in Qt3.
    kchmnewKDE ?

    "This is a chm file viewer + corresponding kpart and kio slave for KDE. It based on libchm and libchm++."


    kchmviewerchmlib, Qt3good"kchmviewer is a CHM (Winhelp) files viewer written on Qt/KDE. It can be build as a standalone Qt-based application, or a KDE application. The main point of kchmviewer is compatibility with non-English chm files, including most international charsets."
    chmviewerwxGTK, libmspack Dead project? Seems no longer active
    chm_viewer ?

    Another chmviewer. Dead project?

    I prefer to gnochm, as the UI fits better in the GNOME desktop. As a minimalist, and taken CJK support into account, xchm and kchmviewer seems to be a good choice. If you don't care the UI, then choose archmage.

    Where to download CHM books for GNU tools:

    How to:

    2005年6月11日星期六

    Cygwin rxvt here

    I added a context menu item 'Cygwin shell here' for Windows' Explorer.

    --- e:/cygwin/rxvt-here.reg --- 8< ------
    [HKEY_CLASSES_ROOT/Drive/shell/bashHere]
    @="Shell: Cygwin shell here"

    [HKEY_CLASSES_ROOT/Drive/shell/bashHere/command]
    @="E://Cygwin//rxvt-here.bat /"%1/""

    [HKEY_CLASSES_ROOT/Directory/shell/bash/Here]
    @="Shell: Cygwin shell here"

    [HKEY_CLASSES_ROOT/Directory/shell/bash/Here/command]
    @="E://Cygwin//rxvt-here.bat /"%1/""

    -------------------------------- >8 -------
    (注: 上述斜线均应该为反斜线,这里的blog不支持反斜线,只好这样了)

    --- e:/cygwin/rxvt-here.bat ---- 8< -----
    @echo off
    E:
    chdir /cygwin/bin
    echo.exe -n "cd " > cygwin/tmp/cygwin_here.rc
    cygpath -u %1 >> cygwin/tmp/cygwin_here.rc

    start rxvt -bg black -fg white -sr -sl 3000 -fn Courier-12 -geometry 100x400 -e /bin/bash -login
    -------------------------------- >8 -------
    (注: 上述斜线除最后的/bin/bash外均应该为反斜线,这里的blog不支持反斜线,只好这样了)

    --- ~/.bash_profile ------- 8< -----
    ...[snip]


    [ -r /tmp/cygwin_here.rc ] && . /tmp/cygwin_here.rc && rm -f /tmp/cygwin_here.rc
    --------------------------- >8 -----------

    2005年6月7日星期二

    Debian Sarge终于发布了(又一篇)

    翻翻Planet Debian,几乎都是在说这件事情,一片欢腾之声。

    还看见一幅漫画,转一下(希望没有侵权:-):
    里面有不少隐喻,也不知道自己是否都看懂了。


    2005年6月6日星期一

    Debian Sarge终于发布了

    对于今天Sarge的发布,可以说是“天上一轮才捧出,人间万姓仰头看”(前天看刘心武讲《红楼梦》揭密,说到帝孙的隐喻,跟着学会了这么一句,没想到今日就用上了,嘿嘿)。黄嘴企鹅论坛上都有网友在对已知遗留bug数进行倒数记时,没想到不用等这个数归零,大家还是看见sarge的安装盘悄悄地出来了。是啊,不能再跳票了,大家都等得望眼欲穿了。

    个人觉得作为个人桌面使用,还是盯住testing就行了,有没有新的stable倒也不是太重要。对于服务器或者没条件、不愿意隔几天就apt-get update一下的系统来说,有个新的稳定版本倒是很关键。

    一个朋友见我对于debian新版本发布这么高兴,问:“这新版本都有什么新功能?”看了发布说明后又问"怎么还在用xfree86 4.3, gnome 2.8?" 怎么跟他说呢?用上xorg, gnome-2.10比整个系统的稳定、完美配合重要么?我这段时间在用Mandriva, 对我的laptop支持不错,也的确很漂亮,中文基本上不用配置,系统管理工具mcc也不错,但我还是那么地想念debian。我一直在想“为什么”,这 几日总结了几条

    • 庞大的软件库。Debian收录的软件是最多的,几乎什么都有――除了一些因为版权问题没收录的
    • apt-get的方便性。不多说了。
    • 用户“众生平等”,不会将用户分成三六九等,普通用户只能使用什么,会员又使用什么...
    • http://packages.debian.org这个站点,搜索软件相当方便,依赖关系、源代码一应俱全,甚至可按一个文件名查 找对应的包。rpmfind.net的问题是: 当我看见依赖关系是libfoo.so,但就是不知道它属于那个包;而Mandrake站点提供的SRPMS目 录每次打开时列举文件都要老半天,找一个包累死了,有时还要在official,devel,contrib里面跳来跳去。

    2005年6月4日星期六

    头一次买了份共享软件

    今天想试试我的银行卡的网上支付能力,就拿“资料收藏大师”做了一下实验,买了一份license。

    这个软件跟ScrapBook的 功能有些类似,但它是一个Windows上的独立应用程序。方便之处在于可以方便地摘录网页上的部分内容,选中了拖过去就行了,格式什么的基本不会乱掉, 对IE和Firefox都支持(我估计是Firefox实现了IDragSource等接口),还可以将书库生成为一个CHM或者PDF文件。

    这个软件以前名字叫“电子书库”,开始还是开放源代码的,后来.....

    我以前的共享软件除了Total CommanderWhereIsIt是靠写插件换来的license,其他的都是用的破解后的D版 :-)。

    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