29 Aug 2006

Google Code Project Hosting

Google Code Project HositingFAQ engtech) 是 Greg Stein 主推的项目,Greg Stein 是 Apache 项目的现任负责人。Google 这个新产品的特点是: simple, fast, reliable and scalable。这非常符合我的口味 :-)

一些特性:

1) 简单的成员控制;
2)使用 Subversion 进行版本控制;
3)问题追踪,就是 Bug 跟踪系统,可定制性相当强;
4)Google Groups 提供的邮件列表;
5)Subversion 有 100MB 配额限制,但据说主要是为了防止滥用,不够用了可以向 Google 要 :-)

相比于 sourceforage.net,最吸引我的还是"简单",sf.net 实在太复杂了,看到就有点后怕 :P 但和 Project Hosting 相比, sf.net 有它的优势:

1)提供项目主页空间;
2)下载功能;目前 Project Hosting 除了从 svn checkout,没有别的办法。

当然,也有人对 Google Code Project Hosting 提出了疑问:这东西非但没有增强开源社区,反而在搞分裂?

Any way,这是一个 sf.net 之外的又一个选择,而且更简单。

[血汗工厂]富士康、媒体、政府、工人

富士康血汗工厂黑幕:被机器罚站12小时
ipod 承包商富士康起訴第一財經日報記者和編輯[摘自香港InMedia]

艰难的时刻,谢谢各位同仁的支持(翁宝)
三言二拍:富士康杀鸡儆猴(Keso)
众志成城,我们可以用声音和声援对抗阴暗的势力(zheng)

没想过去富士康,离它最近的一次是毕业的招聘会,他们急需光电方面的人,但光电并不是我最喜欢的方向。不过,我们班还是有 3 个人签了富士康,去了深圳。

在苏州呆了一年了,在这个号称"世界工厂",台商云集的地方,我感觉到了看似风光的背后,是一群来自外地的、步履艰难的工人,大部分的都是女工。这个暑假,我妹和一帮同学来苏州华硕,干的就是这种工作。这让我更进一步地了解了这些流着血汗的工人。(并不是狠心把自己的妹妹扔在华硕,我想短暂的吃吃这些苦头,可以让她了解一下现实社会,更加珍惜学校里的美好时光。)

富士康/台资继续败坏自己本来就很臭的名声;媒体/记者继续维护自己的权利和尊严;政府继续对外资的不作为,对台资的放任;工人依旧忙碌着,以为这就是她们的命运。

"生产线上没凳子,除少数员工外,一般操作工都必须连续12个小时站立着干活,不得说话。在公司流传的一种说法是,假设在车间里设凳子并允许说话,将会影响员工的工作效率。" (我妹在华硕,做主板测试,被机器罚站 12 个小时,而且是夜班;似乎她们没有"不得说话"的禁令。)

"员工晕倒实际上是因为他们本身的身体素质差。"她说,"富士康包吃包住,又买保险等,很多人都想挤破头进入富士康。" (同意。工厂都一样,富士康外和富士康内差别应该不太大,长期在这种低劣的工作环境下,体质差简直是必然的;现在工作机会少,不进去干活,等着挨饿吗?)

"每天下班,无论有没有货车经过,工人们必须进入厂区的"人行道"走回宿舍,不能乱窜;下班后谁忘记拔掉计算机插头,罚款1000元;如果因工作需要调换部门,职员的电脑将被拆开三次,检查机型内外的编码是否匹配。"(台资一向如此"纪律严明",规模越大越是如此。)

"公司的大部分会议都在休息时间召开,如周末或者晚上下班,有时一开就是3到4个小时,如果不去一律按照旷工处理。"(跑题,说说离职。我妹还在试用期,但是很难拿到《离职申请单》;工人辞掉一份工作最简单的办法就是旷工三天,然后"按规定扣工资"。)

一位不愿透露姓名的富士康员工如此形容他们的生活:"干得比驴累,吃得比猪差,起得比鸡早,下班比小姐晚,装得比孙子乖,看上去比谁都好,五年后比谁都老。" (这是血汗工厂中工人的共同特征。)

"一位保安在iPod shuffle生产线旁边告诉《星期日邮报》的记者,为什么招纳的都是女工,因为女工比男工更老实。" (我也是这样解释女工如此之多的。)

"苹果公司只是众多在中国设厂,利用中国的人力、设施进行生产的企业之一。低水平工资、较长工作时间,良好的生产保密性,这都对国外企业产生了巨大吸引力,同时由于不断增长的竞争压力以及消费期待,也不得不迫使企业提供更有价格竞争力的产品。"(这就是世界工厂的定位。)

"我们现在走的是司法程序,司法是最公正的。如果说富士康采用了什么高压手段,除非说司法是不公正的。"(小子,你忘了法律有漏洞这回事了? 法律有漏洞,就像软件有 bug,是不能避免的;只是,中国的软件 bug 特别多。)

"看了这几天的报道,我在思考一个问题,那就是富士康这种现象是少数吗?! 首先,这种的原来我们所遵循的社会主义国家制度,所不齿和要干净杀绝的剥削,而目前这种残酷的剥削,事实上很多资本主义国家也不太存在的,甚至于通过很多法案所禁止的,但现在号称社会主义大国的土地上,居然能发扬光大! 其次,类似富士康之类的企业,为何青睐大陆,无非是劳动力便宜,但劳动力便宜的背后是什么?就是对劳动者的减少保障甚至没有保障,这是我们需要的吗?从世界范围来看,从资本流动来看,中国是最适合这种野蛮剥削的地方,因为什么呢?因为我们国家在保护吸血的资本! 其三,这次的事件,说根本点,那就是郭士铭之流在测试中国保护剥削的底线! 希望以上的言语是狂人日记!!!!!!劳工真的会如此静默吗?"

"从来就没有什么救世主,也不靠神仙皇帝!要创造人类的幸福,全靠我们自己!"(越来越觉得国际歌好了……)

Sep 4, 2006:……

28 Aug 2006

Wow,山东鲁能!


是一个不常在 Blog 中出现的话题,但可能是我持续关注时间最长的对象。

昨天山东鲁能历史性的提前六轮将冠军收入自己囊中。之前的一次是 7 年前的 1999 年。7 年,Blogger.com ,1 human year = 7 dog year,所以 Blogger.com生日 Logo 是盛装的 Dog。

我是从 1999 开始关注鲁能泰山的。那年我在鄄城一中读高二,鲁能泰山良好的战绩激动着我们班的球迷。我忍不住热闹场面的吸引,偶尔看看他们看过的《齐鲁晚报》。我现在还能想起鲁能将士捧起奖杯的那个有雪映窗的冬天,12 月 7 号吧,但不知道记忆是否准确。让我彻底倒向鲁能泰山的当然是那年的双冠霸业 :-)

2001 年 9 月,我远走西安,远离山东,也远离鲁能。消息少了,但我时刻把心面向群山以东,以及那群活跃在大江南北的鲁能球员。

2005 年 7 月,以山东为圆心,以山东到西安的距离为半径,我画了四分之一个圆,来到了苏州。我的心依然为江北河南的那片地方跳动,那群鲁能球员依然为自己的梦想忙于奔波神州……

7 年了,我不知道是因为山东而鲁能,还是因为足球而鲁能;但我知道,我会既山东又鲁能,永远。

你又赢得了冠军,我也没有站在原地 :-)

让许巍自然的来吧

许巍终于自然的走进了我的 blog。

直到 Carolina 注册了豆瓣之后,我才知道原来她是 听许巍的。想来也是,她和许巍一样,也是离自然很近的人。

直到 Carolina 在 blog 中写了"从许巍到许巍",我才知道,原来她在几年前就听许巍了。

知道 2006 年 6、7 月间的时候,我才开始听许巍。开始于一网络小说中提到《蓝莲花》,开始于豆瓣的许巍小组。然后,就像和一个女子一见倾心,fall in love 一样,我不再按照以前的轨迹听音乐,我有点手忙脚乱,不知所以,但我从音乐中感受到了背后的人,那么真实。

真正的震撼绝不是湖心的小石子,而是瞬间即至的龙卷风,让你感到荒乱,感到一股不可抗拒的力量。

听许巍,好像并不是在听,而是在读一段并不一帆风顺,有时也很迷茫,至于无奈,却从来不曾放弃的人生;因为无奈,多了份淡定,多了份自然。他放过了自己,他获得了自由。

我主动听的音乐并不多,关注到这种程度的只有许巍。

(一个没有提到的细节: 大学时看到一个高中同学的 QQ 签名是"喜欢许巍"。一个很特别的女生,我想许巍也一定很特别,于是记下了这个名字。)

我为什么使用 Blogger.com?

我在比较 wordpress 和 Blogger.com 的时候其实已经提到了原因,但是却淹没在大段的文字中。那时候刚开始,我还不知道如何更好的组织文字,起码不如现在 :-)

1) 支持 EMail 发帖。我几乎 100% 用 Gmail 发帖,只有修改时才用 Blogger.com。(关键是 Blogger.com 不支持 Gmail 修改,不然我当然用 Gmail :-)

2) 完全可定制的模板。Blogger.com 让你控制模板的一切,包括 <head> 标签里的东西!

3) 和 Google 其他服务接合的潜力。总有一天,Google 会将他的产品连成线,形成面的。

4) 一个帐号多个 blog,避免将 blog 搞的一团糟 :-)

5) FTP 发布到其他的站点。

6) Team blog,和志同道合者一起维护一个 blog。

和比较那次还是有不同的感受。最显著的是关于 Trackback 的。

Blogger.com 没有 Trackback,这反而是一种解脱,不用每次都去到处寻找 Trackback 的 URL 了。记得上年的时候有 blogger 说 Trackback 已死,或者 Blogger.com 的 links 是更好的方法?

另外,切换到 blogger.com 后,好好像又找到了 Blogging 的感觉,从 8 月 12 日到现在,发了近 30 个帖子了 :-)

[Tue Dec 12 19:12:31 UTC 2006] Blogger Beta 越来越成熟了,迁移过去也为时不远。Blogger Beta 比较吸引我的功能有:

1) 私人 blog,可以根据 Email 限制访问者。
2) Label 支持。Gmail 还不支持,用起来不是很方便。
3) 所见即所得的模版编辑。现在比较懒,根本不想动模版。

(顺便对原有内容进行了一些调整,还是有点罗嗦。)

我为什么不用 Opera 写 Blog?

Opera 是我最喜欢的浏览器,但是我现在却不能用它在我同样喜欢的 Blogger.com 写 blog。因为:

1) Opera 不能很好的支持 Blogger.com 的"写作"模式,不能复制内容到编辑框;而 Blogger.com 的 HTML 模式又是一团糟,根本没法看。

2) 我近似 100% 使用 Gmail 发帖,只有修改的时候才在 Blogger.com 进行。但 Opera 同样不能很好的支持 Gmail HTML 发信模式,也是不能复制内容到编辑框; 而 Gmail 的 Pain text 又不支持 HTML 代码,根本没法用。

3) 我有个专门转载的 blog──Digest of Jick。但是 Opera 只是复制文本,忽略 HTML ,使文章失去了原来的格式,这是没办法忍受的。

刚刚看到 Firefox 的一个插件── OperaView ,大概可以为我在 Opera 和 Firefox 间切换提供方便。

Tue Sep 19: Opera 9.02RC1 发布了,改进了 live.com,Gmails Spellcheck,Yahoo mail beta 运行效果。Unix 方面说在 Gmail 中复制/粘贴正常了(很奇怪,这个问题仅仅影响 Unix?)。这样,上面提到的问题 2) 已经解决了。

ps,OperaView 只能在当前 Tab 中打开,不支持新 Tab,这点不太好。

[推荐]人生意义

Heng Ying 的文章:
http://hengying.blogspot.com/2006/08/blog-post_115525928213584042.html

很认真的思考了人生的意义,值得一看!

27 Aug 2006

Happy birthday, Linux!

前面提到过,今年是 Linux 的第 15 年; 前些天,redherring.com 也对 Linus 进行了简单的采访。那么,Linux 究竟是在哪一天为世人所知呢? 1991 年 8 月 25 日。

Alex 转了下面 Linus 的邮件,这封邮件被几乎所有介绍 Linux 书收录,不难看到,但我仍然愿意在这里再帖一下:
Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)

PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.

Linus Benedict Torvalds, Aug 25 1991
1991 年 8 月 25 日,我刚刚开始上小学二年级,在我家乡的凤凰完小;11 年之后的 2002 年 10 月,我开始看 Linux 方面的书; 14 年后的 2005 年 7 月,我进入现在这家公司,做嵌入式 Linux 开发; 15 年后的 2006 年 8 月,我决定为 Linux 做点什么。

我也谨慎支持360safe

詹膑谨慎支持 360safe,我也是同样的态度。

和詹膑一样,我也向几个朋友推荐了 360safe。推荐的理由也和他不谋而合: 抛开一切,首先这个东西好用,有效。当然,推荐的同时我也往往提醒一下: 密切注意,在 360safe 有流氓化苗头时干掉它。

[Weekend]Software Development(May, 2006)

上周看 DDJ 的时候看到里面提到了 《Software Development》,本周看的杂志就是《Software Development》的 May, 2006 ,比上周的 DDJ 还早一个月 :-)

主编 Jon Erickson 宣布这是《Software Development》的最后一期,我第一次看这个杂志,看来也是最后一次了 :-) Jon 提到 《Software Development》的前身是《Computer Language》,成立于 1984 年。今后他和几名作者将加盟 DDJ,在那里开始新的工作。我在上周看 DDJ 的时候确实又见到了 Jon,DDJ 还放出了他的一张照片 :-)

我比较感兴趣的篇目如下:

1) True Desktop Search 。都是些介绍性的,不深入。Linux 下的桌面搜索比较有名的是 Beagle,这是基于 C# 的,用 C# 版本的 lucene 做索引。.Net 不是 Linux 的 Native 方式,不是我喜欢的;我对 Java 有类似的看法。

2)Content Management Systems, CMSs。介绍了许多商业 CMS 系统。开源的提到了 PHP 的 Mambo 和 Python 的 Plone,没提到 Drupal,很奇怪: Drupal 在国内应用很多。

3) Emergeney Exit Books。就是问别人最有价值的三本书,其中提到的还是很经典的:Pragmatic Programmer,Good to Great, Peopleware。我只大概看过 Peopleware。

25 Aug 2006

我用豆瓣做什么?

豆瓣不是酱菜,是一个 Web 2.0 站点。

2005 年 11 月 14 日,我在豆瓣添加了第一本我读的书。之后,豆瓣慢慢走进了我的生活,成为不可缺少的一部分。

几个月前,我已经将"向朋友推荐豆瓣"写进 Todo List 了,可是直到现在才写这个帖子。之前我还以为,如果朋友们喜欢一个东西,自己会发现、使用的,不需我去多嘴。这是一种有些消极的想法,大概是因为我当时太崇尚自然了 :-)

在这个帖子之前,我推荐过可以自由访问网络的 Tor 和 Privoxy、访问 Wikipedia 这个重要知识库的 方法、基于 FreeBSD 的开源 NAS 系统——FreeNAS、Google 的 RSS 阅读工具——Google Reader、网络书签 del.icio.us、Google 的日历——Calendar、Google 的桌面搜索工具──Google Desktop及其 小部、Google 的图片管理和处理工具 Picasa 的 Linux 版本、个人最爱的 Web 浏览器——Opera、一些好用的网络相册、中文版的 PuTTY—— Pietty、Goolge 的 Email 服务——Gmail ……

好大一串!雪藏了这么久,我自己都感到不好意思了 :-) 在这些推荐中,虽然都是发个帖子完事,不邮件通知好友,但是我依然感到了分享的快乐。我在网络间寻找着好玩、有趣、实用的东西,我希望我身边的朋友也能享受他们!因此,我决定在现实中好好努力一番,给朋友送去先进的 AK47。朋友们,扔掉你们手中的匕首吧 :-)

(随便说一句,遍历了我在梦南录的帖子,发现我重新开始 Blog 是 2005 年 8 月 23 日 ,前几天刚刚周年 :-) 而我发在 Blog 的第一篇是 2004 年 9 月 24 日。)

废话说完了,进入正题。前面说过,豆瓣成了我生活中不可缺少的一部分,那我都用豆瓣做些什么呢? ( 我在豆瓣的帐号

1) 我用豆瓣记录我做过的,在做的,和想做的事情。这些事情包括:我读过的书在读的书 想读的书;我看过的电影想看的电影;我听过的音乐 在听的音乐想听的音乐;我去过的地方、想去的地方。 (豆瓣的"我去"还在测试中,非注册用户还看不到链结。)

2)我用豆瓣寻找想看的书、想看的电影、想听的音乐、想去的地方。23+万豆瓣用户可以对每一本书、每一部电影、每一张专辑、每一个地方发表自己的任何看法。从这些评论中我能发现一本书、一部电影、一张专辑、一个地方的好坏,从而决定要不要买、要不要看、要不要听、要不要去。

3) 我用豆瓣查看我的好友看过、在看、想看哪些书;看过、想看哪些电影;听过、在听、想听哪些音乐;去过、想去哪些地方。同时,我也用豆瓣发现谁和我看一样的书、看一样的电影、听一样的音乐、去一样的地方。

4) 看到上面 3),你也知道了我做 1) 的另一个理由:我的朋友可以知道我做过的,在做的,和想做的事情;新的朋友会发现和他喜欢同样东西的人中有我 :-)

5) 我用 豆瓣小组和跟我兴趣相同的,或者生活在同一个地方的人交流感受、心得。找到一群兴趣相同的人,并能够一起交流,是一件很惬意的事情。另外,豆瓣的小组是我最新欢的社区氛围,这里只有简单、使用的功能。

6) 我用豆瓣决定是在哪家网上书店买书。当当,还是卓越?我不知道,豆瓣比价系统知道。豆瓣对每一本书都给出常用网上书店的价格,要去哪家一目了然!

还要说明的是,豆瓣没有下面这些东西,免得有人投诉我骗人 :-)

1) 豆瓣没有电子书,没有可供下载的电影,没有可供下载的 MP3;国内互联网从来不缺这些。在豆瓣,分享的是文字和图片。

2) 豆瓣没有华丽的界面,没有飘来飘去的广告,甚至没有图片形式的广告。豆瓣以简洁、实用、用户需要为原则。

最后是豆瓣本身了。作为一个企业,商业社会的一员,豆瓣可以这样描述:

1) 豆瓣是 Web 2.0 的国内先行者,领导着一种风尚。

2) 在豆瓣所在的产业链,有如下环节:作者/译者/编者->出版社/批发商->零售商->读者。豆瓣从"读者"开始,有可能同时吸引"作者/译者/编者",将和"零售商"、"出版社/批发商"创造蓝海。

3) 豆瓣的准则:离畅销榜不太远;豆瓣相信:规模决定影响力。

(想了解更多,可以看官方的 关于豆瓣常见问题。)

有人说,现代都市人最主要的生活习性是电影、书籍、音乐、旅游;豆瓣恰好抓住了这些。我希望每一个使用豆瓣的朋友都能在豆瓣发现新鲜、有趣、实用的东西。

24 Aug 2006

Linux AES programming with OpenSSL

Advanced Encryption Standard(AES), aka Rijndael, 是作为加密标准被美国政府采用的一种 block 加密算法。2000 年左右,US 为了寻找日渐落后的 DES 的继承者,组织了以此加密算法大比武,经过两轮混战,2001 年 11 月,Rijndael 被接纳为正式标准,这一过程 Wikipedia 有详细介绍。

Block ciphers 是一种对称密钥算法,这种算法使用一种不变的算法处理固定长度的 bits(被称为 blocks),我听说过的有: AES, Blowfish, DES, Twofish。AES 的 block size 固定为 128 bits;生成的密钥长度可以为 128, 192, 256。

对称密钥算法使用同一个密钥进行加密、解密。相对应的有非对称密钥算法,拥有公钥和私钥。

Wikipedia 对 AES 有图文并茂的介绍,相当出色,配合这个 javascript 演示界面,理解起来更加容易。

和前辈 DES 相比,AES 具有更好的安全性和速度,并且被美国政府作为标准推广,其应用日益普遍。但 AES 是一种足够安全的算法吗?目前还没有 AES 的重大过失出现,不过这里提出了挑战。

OK,看看在 Linux 下怎么使用 OpenSSL 进行 AES 加密/解密:
/*
* aes.c - AES encrypt and decrypt examples, using OpenSSL.
* by Jick Nan @ Aug-24, 2006
*
* Process:
* 1) Get INTERFACE's MAC Address (last 3 bytes);
* 2) Padding it to 16 bytes(key16);
* 3) Generate key used to encrypt, using key16 by AES-way;
* 4) AES encrypt, using key16 as message(out);
* 5) Generate key used to decrypt, using key16;
* 4) AES decypt, using out as message(key16).
*
* Compile:
* gcc -Wall aes.c -o aes -lcrypto
*/

#include <stdio.h>
#include <stdlib.h >
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <openssl/aes.h>

#define INTERFACE "eth0"
#define PAD_SIZE 32

int main(void)
{
int skfd;
int i, ret, j;
struct ifreq ifr;
unsigned char pmac[34] = { 0 }; // MAC Address (last 3 bytes)
unsigned char tmp[128] = { 0 };
unsigned char key16[16] = { 0 };// Message to encrypt.
// *CAREFUL* this also used as AES key!
unsigned char out[16] = { 0 }; // Message after encrypted.
unsigned char sout[34] = { 0 }; // String style, rather than HEX
AES_KEY key; // key in AES way

// get MAC address (last three bytes)
skfd = socket(AF_INET, SOCK_STREAM, 0);
if (skfd == -1) {
printf("L%d: Open socket error!\n", __LINE__);
return -1;
}

strcpy(ifr.ifr_name, INTERFACE);
ret = ioctl(skfd, SIOCGIFHWADDR, &ifr);
if (ret < 0) {
printf("L%d: ioctl error!\n", __LINE__);
return -1;
}
sprintf(pmac, "%02X%02X%02X", (ifr.ifr_hwaddr.sa_data[3] & 0377),
(ifr.ifr_hwaddr.sa_data[4] & 0377),
(ifr.ifr_hwaddr.sa_data[5] & 0377));

printf("pmac(%d)\t\t=\t%s(STR)\n", strlen(pmac), pmac);

// padding to PAD_SIZE bytes
printf("\n>>Padding...\n");
for (i = PAD_SIZE/6; i >= 0; i--) {
strcat(tmp, pmac);
}
strncpy(pmac, tmp, PAD_SIZE);
printf(" tmp(%d)\t=\t%s(STR)\npmac(%d)\t=\t%s(STR)\n",
strlen(tmp), tmp, strlen(pmac), pmac);
// convert string to hex.
for (i = 0, j = 0; i < 32; i+=2, j++) {
tmp[0]='\0';
strncat(tmp, (const char *)(pmac+i), 2);
key16[j] = strtol(tmp, NULL, 16);
}
printf("key16[16]\t=\t");
for (i = 0; i < 16; i++){
printf("%02X", key16[i]);
}
printf("(HEX)\n");

// AES encryption
printf("\n>>AES encryption...\n");
ret = AES_set_encrypt_key((const unsigned char *)key16, 128, &key);
if (ret < 0 ) {
printf("L%d: AES_set_encrypt_key error!\n", __LINE__);
return -1;
}
AES_encrypt((const unsigned char *)key16, (unsigned char *)out, &key);
printf(" out[16]\t=\t");
for (i = 0; i < 16; i++) {
printf("%02X", out[i]);
}
printf("(HEX)\n");
// convert Hex. to string
for (i = 0; i < 16; i++) {
tmp[0] = '\0';
sprintf(tmp, "%02X", out[i]);
strcat(sout, tmp);
}
printf("sout(%d)\t=\t%s(STR)\n", strlen(sout), sout);

// AES decryption
printf("\n>>AES decryption...\n");
ret = AES_set_decrypt_key((const char *)key16, 128, &key);
if (ret < 0 ) {
printf("L%d: AES_set_decrypt_key error!\n", __LINE__);
return -1;
}
key16[0] = '\0'; // Init it as we used it for decryption.
AES_decrypt((const unsigned char *)out, (unsigned char *)key16, &key);
printf("key16[16]\t=\t");
for (i = 0; i < 16; i++){
printf("%02X", key16[i]);
}
printf("(HEX)\n");

return 0;
}

/*
* vim:foldmethod=marker:shiftwidth=8:tabstop=8:filetype=c:norl:
*/

Happy birthday, Blogger.com!

呵呵,刚刚 Cindy Liu 生日快乐,又发现 Blogger.com 生日了!

昨天,Ken 提到 Blogger.com 换 Logo 的事,还在怀疑是不是 Blogger.com 的生日到了呢。

今天 Keso 挖出了谜底,果然是 Blogger.com 的上线日。1999 年 8 月 23 日,Evan Williams 宣布 Blogger.com 上线。 这里还保存着 Blogger.com 当时的页面。2003 年 2 月,被 Google 收购。200x 年 x 月,GFWed。2006 年 8 月,被 GFW 释放了。2006 年 8 月 14 日,推出 Beta.blogger.com

1999 年 8 月 23 日,我开始了高二之旅,不知电脑,无论网络。2003 年 2 月,大二下学期的疯狂岁月刚刚开始。200x 年 x 月,不知道在干什么。2006 年 8 月,仔细对比了 wordpress 和 blogger.com 之后,决定移居此地。

一起欣赏一下 Blogger.com 的图标吧!
旧的,几乎成了 Blog 的标志:(From Gseeker.com)

New Blogger Logo

新的

newbloggerlogolikeadog.gif

小一点的,也是新的 :-)

newbloggerlogolikeadog2.gif

Blogger.com 竟然把形象设计成了狗!他们怎么知道今年是狗年?他们又怎么知道我属狗? :-)

23 Aug 2006

Linux MD5 programming in C Language

MD5(Message Digest, Unoffical Homepage, Wikipedia, rfc1321) 是 Ronald L. Rivest 教授发明的不可逆加密算法,广泛应用于检查数据的完整性。任意长度的输入(IV)经 MD5 处理后都产生 128-bit/16-byte 的 Hash 值。Slackware 就使用 md5 保证软件的完整性。

不过,在 2004 年 8 月,当时在山大的王小云教授及其合作者发现了 MD5 的 弱点。迄今为止,SHA-0, SHA-1, MD4, MD5, HAVAL-128 和 RIPEMD 等加密算法都被证明存在弱点。

这里是一个 MD5 数据库,可以进行双向查询。

看到一个有意思的 说法
"人生就是个MD5算法,它不可逆,而每个人也都是一个自变量,因此每个人的MD5值都不一样。目前MD5可以解密了,想要解密人生,也不是不可以。"

来点实在的,在 Linux 调用 openssl 的 libcrypto.so* 库加密字符串:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md5.h>

int main(int argc, char *argv[])
{
char password[68] = {0};
MD5_CTX x;
int i = 0, len;
char *out = NULL;
unsigned char d[16];
unsigned char tmp[128] = { 0 };

if (argc != 2) {
printf("Usage: %s <message>\n", argv[0]);
return -1;
}

strcpy(password, argv[1]);

MD5_Init(&x);
MD5_Update (&x, (char *) password, strlen(password));
MD5_Final(d, &x);
out = malloc(35);
memset(out, 0x00, 35);
strcpy(out, "$1$");
printf ("MD5(\"%s\") = ", password);
for (i = 0; i < 16; i++) {
sprintf (out + (i*2), "%02X", d[i]);
}
out[32] = 0;
printf ("%s\n", out);

return 0;
}
编译的时候记得调用 libcrypt.so :
gcc -Wall -o md5 md5.c -lcrypto

[Blog*Spot]我是如何添加 mp3 播放器的?

这是我目前用的方法:

1) 调用播放用到的 javascript,在 <head> 标签内添加如下代码:
  <script type="text/javascript" src=" http://jick.nan.googlepages.com/player.js"></script>
这段 javascript 代码取自 del.icio.us 书签支持在线播放 mp3 的服务。

2) 添加代码之后,所有链结到 mp3 文件的链结都将在左边显示一个绿色的播放按钮,比如:
完美生活

当然还有别的方法。Ken 提到可以在 mp3 文件的 url 地址之前加上 Gmail 的代码,完整代码如下:

 <embed id="AudioPlayback" src="http://mail.google.com/mail/html/audio.swf?audioUrl=http://www.freelamp.net/prefect_life.mp3" style="width:400px; height:27px;" type="application/x-shockwave-flash"> </embed>

22 Aug 2006

Happy birthday, Cindy!

Cindy Liu 明天是她的 22 周岁阴历生日(7/30),这个周六(8/26)是阳历生日。今年闰 7 月,看来下个月还有个生日,真幸福!

不知道送什么礼物,你知道,我是个不会送礼物的人,碰到这些事就不知所措。近来在听许巍的歌,其中有首歌就叫"礼物",遂献上:

许巍: 礼物

by the way,可以在线听哦!

Opera 浏览器的一些数据

Opera 是我的主要浏览器。在 Opera Watch 看到一些 Opera 的数据

桌面浏览器
  • 目前 Opera 9 的下载量是 1000 万。
  • 使用最多的市场:德国、美国、中国(Yee!)、俄罗斯和日本。
Opera 移动浏览器
  • Opera 移动浏览器随 4000 万手机发布。
  • 50 个不同型号的手机使用了 Opera 移动浏览器。
  • 目前为止,今年 Opera 移动浏览器被下载超过 250 万次。
Opera Mini
  • Opera Mini 拥有 500 多万活跃用户。
  • 在这款浏览器发布的 7 个月来,Opera Mini 浏览器用户访问量超过 10 亿个页面。

Blogger 之歌

I started a blog which nobody read.. When I went to work, I blogged there instead..I started a blog which nobody view..

I started a blog but nobody came; no issues were raised, no comments were made;

I started a blog which nobody read.. all I did wasn't that great but you must know here's what is said..

I started a blog; I sent you the link; I wanted you the world to know what I think..

I started a blog but when I read yours; it made me forget what I had started my for..
 
http://www.catbirdseat.org/catbirdseat/aug06/blog.mp3

yee说过,原始连接是这个,链结来自幻灭,颇有感触。

一个周末,一本杂志

"问渠哪得清如许,为有源头活水来。" 忽然发现自己以前得的读书方法不行了,要改变一下。

我以前的读书方法是:所谓"书不在多,读好就行",读一本书,好好消化,不怕反复读,然后在多下一本。

这个方法从大学的时候开始形成,大概是多一些技术方面的书,所以比较注重读懂。但是这样有个缺点,我读的书越来越少,结果感觉自己相当无趣!

其实我觉得本质上我是一个有趣的人,因为看到好玩的东西我经常会心一笑;但生活中我却相当的无趣。更可悲的是,我并不知道自己是如此的无趣,直到开始看 linky 留下的王小波小说集。

后来,我终于想通了:我的读书方法有缺陷,我在精读,但没有泛读。我想以后我会做出改变的。

这个周末在看一本技术杂志《Dr. Dobb's Journal》。虽然是 June 2006,但我没看过,对我来说是新的。看下来其实发现自己感兴趣的也就那没一两篇,其他要么过于高深,要么不是自己喜欢的领域。

1) 封面主打:Ruby On Rails, Java's Successor? 是对 RoR 的介绍。Ruby 现在很火,RoR 在 Ajax 开发上据说有很高的效率,但是我没有用过 Ruby,以后可能要的学吧。GTD 工具 Track 是基于 RoR 的。

2) DDJ 的一个 Tip 引起了我的兴趣:"Mobile Phones Get Smaller, Software Builds Get Bigger",说得是现在移动设备越来越小,发布周期越来越短,但是软件规模却越来越大,编译的时间也越来越长。其中举例说,有一间全球无线通信设备领导厂商的软件系统由超过 100 不同的软件组成,在两年中编译时间由 20 分钟增长到 2 个小时以上。为了解决这个问题,公司采用了并行编译技术,使用了由几百个 CPUs 组成的集群系统。我以前 考虑过怎么高效简洁的组织源代码,但是还没有想到编译时间的问题。

3)2006 Jolt Awards. 比较喜欢两本书:《Innovation Happens Elsewhere: Open Source as Business Stratogy》(Ron Goldman)、《Producing Open Source Software: How to Run a Successful Free Software Project》(Karl Fogel, O"Reilly)

4) Sofware management basic: What makes a good software manager? 文章很好,保存在了临渊羡鱼

[Podcast]菠萝网印象

前面写了我对 Podcast 的感觉,以及我听哪些 Podcast,这个帖子也是由 Hopesome  和 Jack 的 Skypecast 引起的。

1)菠萝网是做 Podcast 聚合的,可以通过 RSS 引入新的频道,而不是提供 Podcast 托管。我想这首先是解决听 Podcast 的问题。

2)我很喜欢菠萝网的 RSS 聚合,让我有一个集中管理自己喜欢的 Podcast 的地方。要知道,以前我都是用 Google Reader 直接订阅 Podcast 节目,自己手动下载的,很麻烦。

3)我把 IFW  Daily、LQ Radio、Linux Action Show 引入了菠萝网,并且订阅了以前就用的 ESLPodcast,然后从 Google Reader 中删除了这些 RSS Feeds。

4)我用菠萝伴侣(Podmate,菠萝密 :-)自动下载在菠萝网订阅的频道,然后用它同步到 PL188,很方便。

5)Jack 超瘦,我也是; Jack 对某些技术领域很着迷,我想我也是; Jack 说不善社交,我想我更是; Jack 有完美主义倾向,我也在追求完美: Jack 是 Nerd/Geek;我觉得我也是 :-)

6) 完美主义者对自己要求很高,容易用要求自己的标准要求别人;这样久了,自己会很累,别人也会感到很累;累自己没关系,让别人和自己一起受累,总觉得有些不忍。

7)我也关注过 Internet,以及 Internet 上的创业,我有朋友在做 PHP 内容管理系统 ── PHPCMS,他通过卖系统赚钱;但是我不知道菠萝网都靠什么赚钱。

8)菠萝网要以 Internet 的方式赢利,要围绕 Podcast 做增值业务,要做电子商务,要卖 mp3/4,要买/卖片子。

9) 我喜欢菠萝网,我支持菠萝网,所以我买了菠萝网的 MP3/4,而且是两个,虽然我知道有更便宜的渠道。

10)菠萝网坚持发布中国播客发展报告,我觉得这是一种行业责任。我很敬重这一作法。

[Podcast]我用 PL188 听哪些 Podcast?

我说过,我喜欢听 Podcast,而且很喜欢。我在菠萝网订阅了如下频道:(具体连接请看我的菠萝页面: http://podlook.com/user/jick%20nan

1)英语类: English as a Sencond Language Podcast (ESLPOdcast)、EnglishPod。我主要听前一个,也早就想给朋友们推荐它了,我觉得这个是最好的,Thx the host Jeff!EnglishPod 是我在菠萝网上看到很流行才订的,其实还没有听过。

2)Linux/IT 咨询类:InfoWorld Daily Podcast、The Linux Action Show!Podcast、LQ Radio、德国之声中文广播(刚加上,还没听过)、跟上.com 、客齐集播客;

3)能够带来快乐/知识类:有一说二、反波、锵锵三人行、播客思听中文有声书摘、央视播客、Jack's Podcast。

[Podcast]Podcast 之于我

仔细听了 Hopesome 对 Jack 的 Skypecast,想写点我对 Podcast 的感觉。

因为有 PL188 的关系,我对 Podcast 从看的阶段上升到了听的阶段。但也仅限于听,我从来没想过自己去做 Podcast。这一方面是 Podcast 有门槛,更重要的原因是我找不到 Podcast 的动力。我知道自己 为什么 Blogging ,但是不知道我为什么要 Podcasting 。

 Podcast  和 Blog 不一样,或者如 Hopesome 所说,Podcast 更接近艺人这个职业,Blog 则更文人一点。如果非在这两者做出选择的话,我想我更愿意混迹于文人 :-)

虽然我不会 Podcasting,但是我很喜欢听 Podcast。尤其是有了 PL188 之后,我可以将想听的节目用 Podmate 同步到 PL188,下班后回家听。下次我将说说我都听那些节目。

我为什么写 Blog?

我做事情总是喜欢有充足的理由;没有理由的事情,我不会去做。那么我为什么 blogging 呢?
 
 1)写给自己。有些事情我记不住,不如写下来;有些事情我不能很好的把握,我想通过写来理清头绪;有些事情我觉得想通了,我想总结一下,供以后推翻;……
 
 2)写给朋友。朋友就在我身边,他们总是很关心的想知道我的近况,看我是不是快乐的生活着,看我是不是走在正确的道路上,看我是不是有疑惑需要他们帮助。
 
 3) 写给能够看到的朋友们。只要能够看到,我的文字就是为你写的 :-) 如果你有所感触,顺便留个言、发个信,和我交流一下。

19 Aug 2006

快速的 egosurf: Blogger.com 的好处

经过一周时间的实用,发现 Blog*Spot 的文章会很快(< 1 分钟)被 Google Blog Search 收录,这样就可以更快的满足自己 egosurf 的欲望了。

比如,当我提到 Feng 添加了一个 egosurf 界面时,我的这个帖子应该会很快出现在他的本地 egosurf 页。 ;-)

原来,google blogsearch主要依靠pingserver来获取数据更新,所以时效性比较理想。而我的 Blog*Spot 会 ping weblog 这个 server。 另外,Google Blogsearch 和 Blogger.com 之间也应该存在"秘密通道"吧?

什么是 egosurf?看看 Feng 怎么说

“临渊羡鱼”和“退而结网”

古语云:"临渊羡鱼,不如退而结网。"

我"临渊羡鱼"已经很久了:订阅了许多 Embedded Linux、Opensource 的 RSS Feeds,整天看别人捕鱼。 Motorola 的 A1200 采用了 Linux 系统; Montavista 新组织了 Mobilinux 联盟;DataStorage 新出了面向 ODM 的 NAS 系统;…… 看久了,不免想捕自己的鱼,首先当然是"退而结网"。

可是我觉得仍然有"临渊羡鱼"的必要。因为只有看到别人捕到的鱼,才知道自己结的网是否合适;当自已捕到鱼时,也可以和别人的鱼一较高低 :-) 但我总觉得缺点什么,虽然临渊羡鱼了,但是我却没有把这些成功的案例记录在案,如浦松龄写聊斋般,也如 Jack 的" 菠萝论坛"般。

但是我不能把这些转载的东西放到我主要的 Blog ,不管是完美生活还是梦南录(以前转了 N 多鲁迅的文章,也是迫于无奈才搞的大杂烩)。如果在 MyDonews ,我只有郁闷至死了;但是现在我在 Blogger.com 了,如前所述,我可以再开一个 Blog ,作为自己的转载基地。

这个新的基地组织,就是── 临渊羡鱼

补记:有同学反映“不知所云”,其实我也不知道自己在说什么。据考证,这好像不是人类的语言,请人类忽略之 :-)

18 Aug 2006

Feedburner 真的可以合烧 Feeds?

Feedburner 平时比较少用,初始设置之后基本没动过,选项很多,感觉很复杂。

现在有同时有了两个 blog (梦南录完美生活),想把它们放在一起,这样比较方便朋友们订阅。一直觉得 Feedburner 是可以合烧 Feeds 的,但是今天花了很多时间,把 Feedburner 的选项过了一遍,还是没找到如何合烧;在 Google 中搜一把,找到的却都是失败的经历──关键是成功的人觉得简单,没说怎么搞 :-)

其实我知道 Google Reader 可以搞定,但是担心会被 GFW 搞的半死不活……

最后我又创建了一个 Feed 项,作为过度。现在有了两个 Feeds :

* 新的:http://feeds.feedburner.com/jicknan (只有“完美生活”的内容)
* 旧的:http://feeds.feedburner.com/jnan (含有“梦南录”、del.icio.us、flickr 的内容)

我比较想用 jicknan 作为统一帐号,因此比较倾向于新的,以后也会慢慢过度到这个。

其实我也觉得这样比较折腾,但我同时也觉得这是一次值得的调整 :-)

Sat Sep 9: 看到 hung 的文章才知道,Feedburner 只能集成一些已经支持的 Feeds,如 del.icio.us, Flickr 不能合烧。还发现现在的 Feedsky 也不能合烧 Feeds。

其实心理上对 Feedburner 的依赖变小了,Blog*Spot 也提供自己的 RSS url 为什么一定要再麻烦 Feedburner,多一道手续呢? 当然,Feedburner 对一些被 GFWed 的 RSS 还是有帮助的,不过我用 Google Reader :-)

Slackware 上的 Tor 和 Privoxy

重新安装了 tor+privoxy,不然 Google GFWed 不断,简直无法使用网络。

安装过程按照 Windrose 的 Slackware穿墙术 的介绍。

17 Aug 2006

Wordpress, or Blogger.com ?

Blog*Spot 解封了,Blogger.com 升级了;我动了心思:用了那么多的 Google 服务,要不要把 Blog 从 MyDonews 的 Wordpress 搬到 Google 去?

在我看来,一个 blog 程序/服务需要有这些基本的功能:

1) 方便的发布。需要登陆 Web 界面才可以发布吗?可以 Email 发布吗?可以用手持设备发布吗?…… 一句话,我需要无处不在的发布!
2) 好用的 Web 编辑器。虽然发布方式可以有很多,但是一个好用的 Web 编辑器还是很重要。 WYSIWYG 一般都会有,但是哪个更好用些?HTML 编辑方式也不可少,可是哪个更好用些?编辑器生成的代码干净吗?HTML 编辑器会保留换行,以使代码更好看吗?能设置帖子的时间戳吗?能设置帖子的文件名吗?能设置 Trackback 地址吗?能设置文件状态吗?
3) 方便、灵活的访问。支持灵活的 RSS Feed 吗?可以只让一部分人看到某个帖子吗?
4) 方便的反馈。Blog 的看客们可以匿名留言吗?有某个帖子引发的话题可以 Trackback 吗?如何应付 Spam 留言?
5) 丰富、灵活的模版。模版够多吗?可以任意编辑模版吗?
6) 分类/Tag 的支持。虽然这不是必须的功能,但我仍然喜欢有之。

我为什么这么喜欢用 Wordpress,以致于 wordpress.com 被 GFW 后跑到了 MyDonews 而不是 MyOpera 呢?

1) 我太喜欢 Wordpress 的编辑器,尤其是 HTML 代码模式了:可以根据回车换行;可以在下次编辑时保持写作时的格式。要知道,很多 HTML 编辑器都不能保持写作时的格局,而是将所有的行都混为一坛浆糊,包括 blogger.com。
2) Wordpress 有很多的模版。虽然我喜欢简单的模版,并且不喜欢更换,但我仍然喜欢有之。

那么,我为什么现在又要离开 MyDonews 的 Wordpress,跑到 Blogger.com 了?或者问:Blogger.com 有什么吸引我的地方?

1) 想发就发。MyDonews 只能 Web 发布,顶多在加上第三方发布客户端;但是我喜欢 Blogger.com 的 Email 发布,以及未来可能的手持设备发布。
2) 完全可定制的模版。虽然 MyDonews 已经为 wordpress 安装了 Sidebar 插件,但是可编辑的仍然很有限;但是 Blogger.com 可以让我掌控模版的一切。
3) Blogger.com 一个帐号可以创建多个 blog。我未来可能创建另一个 blog,也可能和臭味相同的朋友共同开始 Team blogging。
4) Blogger.com 可以和 Google 其他服务互通有无。我用了许多 Google 的服务,因此如果它们可是协作后,将是很美好的事情。Blogger.com 目前可以和 Gmail、AdSense、Picassa 协作。

Blogger.com 完全符合我的要求?没有完美的东西,Blogger.com 也是这样。我至少在如下方面不喜欢 Blogger.com :

1) 编辑器不如 Wordpress 合胃口,原因上面说过了。
2) 发表留言需要再开启一个页面。我不喜欢给我的朋友增加一丝不便,尤其是想给我留言的朋友 :-)
3) 首页不能方便的显示最新评论,虽然有很多 Hack 的方法,但不如官方来的直接。
4) 不支持 Trackback,而且在新版本中好要也还没有。不过 Blogger.com 有自己的方式:links。打开了 links 功能后,当网络上有人引用你的文章,并被 Google Blog Search 收录后,那个人的那个文章就会显示在帖子的 links 区域中。
5) 不支持分类/Tags。但是再新版本中有了 labels。总所周知,Google 的 .bash_profile 中有这么一条:alias labels='tags'。

可是,我不担心 Blog*Spot 再次被 GFW 掉吗?

1) 是的,我确实很担心 Blog*Spot 再次被 GFW。但是我还有后路:Blogger.com 可以通过 FTP/SFTP 发布到别的地方,而且我也有一块支持 FTP 的空间。不过,在新版的 Blogger.com 中,将采用动态的方式,到时候 FTP 是否支持还是个疑问,所以当我知道体验 Beta 是个不可撤销的操作时,我决定还是用原来的系统。当然,Blogger.com 应当想办法支持 FTP 发布,因为有太多 Blogger 使用了这一功能。

提到 Blogger.com 的新版本。新版还有哪些我比较感兴趣的变化?

1) 从静态 HTML 文件到动态及时方式。以前 Blogger.com 都是采用的静态 HTML 发布,这减轻了 Blog*Spot 的负载,也保证了 FTP 发布;但是每次改动都需要重新发布,很费时间,也很不现代。新版采用了动态方式,不需要再重新发布了,但是运行 Blog*Spot 需要特定的服务器支持。目前不知道是否还能 FTP 发布。
2) 和 Google Accounts 整合了,现在可以使用 Gmail 登陆了。
3) WYSIWYG 的模版编辑。用鼠标就可以修改模版,不需要再面对一堆 HTML、CSS 代码了。不过我更喜欢更本质的代码模式,希望有选项可以回到代码模式。
4) 上面提到过,新版支持 labels,也就是 Tags。
5) 访问控制。可以根据 Gmail 地址进行访问控制了,或许还有其他的方式吧?还不太清楚。
6) 更多的 Feeds,留言也有 Feeds 了。

16 Aug 2006

Slackware 上的 Screen

Slackware 有 screen,可以不用自己编译。但是 Slackware 没有 screen 需要的 ~/.bashrc 配置文件,导致运行 screen 后,shell 的设置无法生效,因此需要自己创建一个 ~/.bashrc:

#~/.bash_profile
    [ -f /etc/profile ] && . /etc/profile


默认 screen 中也不能用鼠标滚动屏幕,在 ~/.screenrc 中添加如下两行就可以了:(Thx arrow!)

termcapinfo xterm 'ti@:te@'
termcapinfo rxvt 'ti@:te@'



15 Aug 2006

重新安装 Slackware

金鸡湖是金鸡湖,阳澄湖是阳澄湖,此境一也;
金鸡湖是湖,阳澄湖也是湖,此境二也;
金鸡湖还是金鸡湖,阳澄湖还是阳澄湖,此境三也。
——无名氏,苏州

三月份时,我选择了 slackware,这个简单、稳定加安全的 Linux 发行版。第一次使用 Slackware,完全不熟悉它的规则,很容易乱改一起,结果搞的一团糟。

比较 Debian 和 Slackware 的时候,我提到自己的一个愿望:

尽量把时间和精力用在那些超越各个发行版的东西上,不被某个发行版的“方言”束缚。


这是在我看到了在不同发行版中隐藏的共同的东西,我在为找到这些共同的东西努力。现在,我有另一种感觉:Linux 是相同的,各个发行版能提供哪些不同?发行版靠什么吸引用户?发行版能给我们提供什么便利?

Linux 系统是由许多独立的开源软件包组成的,各个发行版需要解决的一个重要问题是:如何有效、方便的组织这些项目(源代码、二进制文件)?如何用一个源码池支持多种硬件平台?

在源代码的组织上,我能想到的主要有 RPM 系、DEB 系、TGZ 系、SRC 系。RPM 系(Redhat, Fordra Core)主要的问题是依赖性,现在 FC 有了 yum,这个问题已经不是太严重了;DEB 系(Debian, Ubuntu)以解决包的依赖性和支持多种硬件平台著称,apt-get 确实很好用;TGZ 系则保持着 KISS(Keep It Simple, Stupid)原则,简单、稳定;SRC 系(Gentoo,LFS)接触不深,不好评价 :-(

我以为:Debian 方便;Ubuntu 易用;Slackware 简单。我为 Debian 的方便惊叹不已,但我更把 Slackware 的简单引为知己;我以为“易用”对于每个人的定义都不一样,一个程序员眼中的“易用”和一个工程设计员眼中的“易用”肯定有天壤之别,因此,Ubuntu 的易用对我没什么吸引力,我用 Fvwm 构筑了适合自己的操作界面 :-)

扯远了,其实真正的高手不在乎使用什么样的发行版。从这一点上说,我还不是什么高手 :-) 还是回到自己重装 Slackware 上来吧。

为什么重装呢?因为要玩一个游戏,就要按照人家的游戏规则玩;但是我第一次玩 Slackware,完全是按照自己的规则,结果给更新系统带了了很大的不便。

这次安装有什么特别的?根据 安装一个精简的 Slackware 的提示,并按照默认的 tagfile 形成了自己的一套 tagfile,以后再重装就方便多了 :-) root 目录用了 XFS 文件系统;Kernel 用了 Slackware testing 的 2.6.17;Fvwm 从稳定版的 2.4.19 升级到开发版 2.5.17;...

安装之后还要干些什么?使用 Ineternet:tor+privoxy;浏览器:Opera;X 终端:rxvt-unicode;中文字体:文泉驿;中文输入法:scim+fcim;中文字典:stardict;...

一个比较棘手的问题:不知道怎么回事,X window 分辨率成了固定的 "1280x1024",在 /etc/X11/xorg.conf 中设置成 "1024x768" 也不作用,很奇怪。哪位知道如何解决?

解决了,在 /etc/X11/xorg.conf 的 SubSection "Display" 中加入 Modes "1024x768" 就可以了。So 简单!

SubSection "Display"
Viewport 1024 768
Modes "1024x768"
Depth 24
EndSubSection

Technorati 向左,豆瓣向右;Souyo 去哪里?

Souyo 推出了新版(http://s41a.souyo.com),目前正在进行封闭测试。Souyo 的 Neso 发 Email 邀请我测试一下,并在 Blog 中写写感受。Souyo 是我最喜欢的国内 blog 搜索,为它写篇帖子也是应当的 :-)

我以为,所有的搜索都有这么两个问题:

- 搜集足够多的信息;
- 最大化利用所搜集的信息,准确定位结果。

Souyo 以前的关注点是前一个问题,Souyo 的新版似乎更关注于后一个问题。这可以从 Neso 开出的新功能列表看出来:

- 你现在可以从搜索结果中收藏你所喜欢的博客和日志;
- 通过基于Ajax的在线阅读器(my.souyo.com/yourname),你可以访问你所收藏的所有博客的最近更新聚合,并订阅RSS及OPML列表;
- 你可以通过新的方式添加以及绑定你的博客至Souyo,并即时被Souyo索引;
- 你可以通过Souyo发现与你有相同兴趣的其他Souyo客,并浏览他们的收藏,从中选择自己的喜好;
- 你现在可以为自己设立头像和个人标签, 当你的博客绑定后,头像会出现在搜索结果里你的文章之前;
- Souyo现在可以自动识别及转换来自UTF-8以及GB2312编码的搜索关键词请求。

可以看到, Souyo 开始关心它的用户(被称为"Souyo 客")如何从搜索结果中收集、分享自己感兴趣的东西了,也就是更关心"用户"了——那谁不是说了:Web 2.0 的中心是用户!

聚集了用户,并收集了用户的喜好之后,Souyo 怎么办?

- 按照用户的期望,关注 blog 搜索技术,做中国的 Technorati),关注中文世界的 blog 搜索;如果是这条路,Souyo 的搜索结果或者会根据其用户群体或者进行搜索的某个用户的喜好重新排序,而不单像现在,只是单纯按时间排序,在 Google Blog Search 中,这个叫"相关性";如果是这条路,Souyo 或者允许用户在自己收藏的 blog 中进行搜索。
- 按照 Souyo 的期望(瞎猜,存疑:-),关注搜索的主体——用户,向社区型的豆瓣靠拢;如果是这条路,Souyo
大概在推出抓虾的 RSS 阅读功能之后,还要像抓虾一样推出豆瓣的"小组"。

好像现在国内的 web 2.0 应用集体到了迷茫期。旗手豆瓣离开核心书的共享做了"我去",或许它找到了新的核心;抓虾离开核心 RSS 阅读做了豆瓣的"小组";新版的 Souyo 离开核心 Blog 搜索做了抓虾的 RSS 阅读,当然 Souyo 可能有自己的想法,为我所不知;……

但是,Technorati 向左,豆瓣向右;Souyo 到底去哪里?这个问题不是我能回答的,也不是像我一样的 Souyo 用户能回答的。解决这个问题的应该是 Souyo —— Neso 和他的团队。

抛开上面一番胡扯,我用 Souyo 搜索的期望是:

- 找到足够多的信息。我觉得现在 Souyo 还没有收录足够多的 blog,时常找不到自己想要的。
- 准确的找到想要的信息。信息不够不行,信息泛滥也不行,我怎么样才能通过 Souyo 准确的找到自己想要的呢?

另外,我最关注的变化其实是"Souyo现在可以自动识别及转换来自UTF-8以及GB2312编码的搜索关键词请求"这个小的改变,因为我一般是通过自己的搜索集合访问 Souyo 的,但是 Souyo 之前却只能识别 GB2312 的请求。

12 Aug 2006

菠萝 PL188 印象

Jack 在 Podlook blog 中宣布菠萝推出了自己品牌的 MP3/4 播放器。我近来一直有给妹妹买个 mp3 的想法(当然也有给自己买的想法 :-),因此看到 Jack 一说,我就决定买一个。我认定菠萝网的东西要比市场上的质量好些,有保证一些。这大概是出于对自己一直关注的 blogger 的信任,Jack 说是精挑细选的结果嘛!

其实我之前虽然透过 Google Reader 订阅的 Podlook blog播客宝典对 Podcasting 有些了解,但是对 mp3/mp4 一直也没关注,虽然 iPod 火的不能再火了。根据 Jack 的提示,我了解了下 mp3/mp4 的市场,知道了提供大量芯片的也就珠海炬力和 SigmaTel 。珠海炬力占有全球市场的 50% 以上,用户中有钮曼、爱国者等众多一线品牌。最近,又看到 Samsung 取代原来的 Portal Player 为下一代 iPod 提供芯片。

Jack PL188 使用的是珠海炬力的芯片,我估计是 ATJ 2085 或者 ATJ 2097。这两款芯片都是 8-bit 的 Z80 + 24-bit 的 DSP。iPod 使用的是 32-bit 的 ARM + DSP。从这个意义上说,这是一款 mp3 + 视频播放器。

我买 PL188 的过程大概是这样的:Jack 的宣传 blog 写在本月 2 号/上周三,我在 3 号/上周四留言,原想先给妹妹买,因此要了个粉红的,不知道 Podlook 的各位大侠会不会误会我有某种嗜好 :-) 4 号/上周五 Ricky 通知说要快递给我了,估计明天到。明天是周末,所以我 7 号/周一拿到了期待中的 PL188。

初次试用效果并不好,Kylin 在录音之后长时间出现等待界面;而且反应很慢。恶梦还在后头,用 Podmate 同步节目,提示完成后,拔下 USB 连接线,PL188 长期停留在等待界面,死掉了,而且 mp3 文件没有复制过去。

将情况报告给 Jack/Ricky 后,觉得这个产品有问题,答应立即帮我换一个。呵呵,我中奖了,运气不错! Jack 还关切的向我推荐白色的,我也考虑换个中性的,于是就欣然同意了。我是这样想的:如果 PL188 太差就自己用,再给妹妹买个好用的;如果上次只是撞大运,女孩子用白色的也不错。

你应该猜到了,这次中奖真的对我打击不小,老大 Shearer 以为我太幼稚,在网上买东西,结果上当了。我当然不觉得会上当,但是对 Jack 给出的等式“ iPod Shuffle = podlook MP3/4 Player”却打了个小小的问号。虽然没用过 iPod Shuffle,但想想也不是这样子的吧?

这样一折腾,我在 9 号早上拿到了第二个 PL188,白色的。马上复制 mp3 试试,用 Podmate 和自己动手都没问题。我暗想这一次我没有再次中奖 :-)

呵呵,听着 PL188 说说它的优缺点吧!优点:1) 超级服务。因为中奖了,所以接触 Podlook 的各位大侠比较多,因此也享受了超级的服务,我以为这是初创公司才有的周到服务 :-) 2) 1.8" CSTN 彩屏。虽然不是 TFT ,换个角度就会变色;但是当我看到 Jeans 上周六买的爱国者的月光宝盒的小屏幕后,感觉还是蛮幸福的;(上周不知道他要买 mp3 ,不然就给介绍 PL188 给他了:-( 3) Podmate 同步。PL188 号称“一般 mp3 的价格,iPod 的享受”,就是说的和 Podmate 结合了;4) 1G Flash 空间、FM 收音机、USB 锂电、双耳机、...

缺点:1) 硬开机速度慢,大约要 5-10 s 的样子;2) 耳机线太短,只有大约 60 cm,很不方便;3) 按钮容易损坏,尤其是大大的 M 键。这个 Ricky 已经提示过我了,一定会注意的。4) 不支持 ogg、rm,支持起来也比较困难,还好可以转化格式; 5) 和 OEM 产品整合不够,包装、说明书都没有 Podlook 的旗号。btw,说明书感觉比较挫... 6) Podmate 虽然号称个头只有 200k,但是吃起内存来却是一点都不客气,工作中的 Podmate 动辄膨胀到 20、30MB 的样子。

不能忍受的是:1) PL188 Flash 上带有病毒,卡巴斯基提示 "Data System.exe" 为 Email-Worm.Win32.Brontok.q,这也可能是 Jack/Ricky 测试用的电脑有病毒,感染了 PL188,;2)PL188 驱动光盘上有病毒,卡巴斯基提示"x:\MTV-AMV转换工具\AMV转换-MP3set3_68" 含有 Trojan.Win32.DelAll.q,这估计不是 Jack 测试用的电脑能感染的 :-)

病毒这个问题已经报给给 Ricky 了。

后记:用 PL 188 有一周了,感觉还不错,只是没用过 iPod Shuffle,我还是不知道 Jack 的等式(iPod Shuffle = podlook MP3/4) 是否成立 :-)

[2006/8/31] 说说两个病毒,因为以这个为关键词到这个页面的很多。

Trojan.Win32.DelAll.qGoogle 中对这个资料很少,而且很少英文,中文只有我提到了 :-( 这个病毒是深圳炬力的 MP3 驱动带来的,没有发作的记录,也不知道有什么危害。估计正因为如此资料才比较少吧。不过卡巴斯基将它干掉后,原来残缺的程序无法运行,也不能重新安装,大概只有重装 Windows Xp 才行了;不知道是程序烂,还是 Windows XP 烂。

Email-Worm.Win32.Brontok.q: 卡巴斯基杀掉后就没有出现,新的 PL188 上面也没有了这个病毒。

Tue Sep 12: 从 Email-Worm.Win32.Brontok.q 进入本文的朋友突然多了起来,Google 了一下发现,这个病毒扩散开了。还好当时卡巴斯基将它搞定了 :-)

同时提供一种删除病毒文件的方法(via 蜀狂): 开机时按 F8 进入安全模式,然后删除 C:\Documents and Settings\当前用户名\Local Settings\Application Data\ 中的winlogon.exe。

(果真和登陆程序有关我虽然杀掉了病毒,但是登陆程序却变回了番茄花园。)

btw, 当时的 Log 显示:

已删除: 病毒 Email-Worm.Win32.Brontok.q 文件: C:\Documents and Settings\NetworkService\Local Settings\Application Data\winlogon.exe
请注意文件地址不同。

Test Email Post


Hi, All:
        This is from Lotus Notes :-)

Best Regards

Jick Nan

每一个不曾起舞的日子都是对生命的辜负…

CPU-NAS, Sercomm SDC
Tel: 86-512-67612332 Ext.1643