笔记与流年

2006/10/30

墙终究是会倒下的

Blogspot和Wikipedia在经历了短暂的解封后,又被我们伟大的防火长城再次封锁!

只想说一句:墙终究是会倒下的

标签: ,

两个Ruby的Blog

进入Ruby的领地不到两个月,作了一个小例子,众多的Blog帮了我不少忙。推荐两个论述颇为深入的Blog。

他们的文章都很值得一读。

标签: ,

2006/10/23

Squeak Smalltalk中文化

终于有人迈出这一步了,Squeak Smalltalk开始了中文化的工作。中文区的孩子有了一个新的选择,可以亲身体会来自大师们的作品了。
Squeak已经帮助了世界上众多国家的孩子和成年人,他们通过Squeak学习,创作,游戏。Squeak社区已经覆盖英语国家,德国,西班牙,日本,韩国和尼泊尔。然而在中国却非常缺乏相关的资料,很少有人知道甚至听说过Squeak。

我一直在留心Smalltalk的新闻,也下载过Squeak,摆弄过一段时间。很敬佩Alan Kay和整个PARC中心的创新能力。是他们七十年代的工作改变了现今的世界—以太网、鼠标、个人计算、面向对象和图形式交互界面。尤其难能可贵的是Alan Kay一直关心孩子、关心教育,这在大师中间也是非常少见的。

在这里忠心祝愿这项中文化计划成功。我亦会参与此项计划的。

标签: , , ,

2006/10/22

每周一字:死

“死”,从歺从人,“歺”即“歹”,意为残骨。查到的解释有两种:人躬身凭吊死者;人魂魄与形体的分离。“死”字本意即生命之终止。

《论语》有夫子“未知生,焉知死?”的对答,也有“死生有命,富贵在天”的说法。《孟子》有“舍生取义”的大段论述。《庄子》论述死生颇多,最表明他观点的恐怕是“庄子妻死……则方箕踞鼓盆而歌……”一段。

如果生只是物质偶然的组合,死则自然地消散于无际的宇宙之中,那么生的意义何在呢?立德、立功、立言真的可以不朽吗?千年前,高僧大德在寺院里讲授种种精深的理论,如今这些理论只为少数专家理解,甚至可以设想它们终究变得无人知晓。“不朽”是否只是活着的人一种心理的假象呢?那么“真理”呢?

标签:

2006/10/18

鲁迅先生的忌日

明日是鲁迅先生逝世70周年。虽然对他有种种的说法,但我依然喜爱他的一些作品。北京、上海的鲁迅纪念馆我都去过,右图是在上海鲁迅纪念馆时拍摄的。

据说今年的鲁迅先生逝世纪念有些特别的规定。可见先生文章的生命力一直持续到今日。

标签: ,

无常

今天中午忙着去办护照的手续,路上得到消息:读研究生期间一个很好的同学得胃癌去世了。

想想以前还经常在一起吃饭、说笑,不由得感叹人生的无常。

好好珍惜我们已经拥有的吧。

标签:

2006/10/14

每周一字:智

月底赴希腊,去这个“爱智”之国,且查一下“智”在汉语里的意思。

“智”,由“知”和“日”构成。“知”是“矢”、“口”,意思是对于知悉的事物可以象箭一样脱口而出。“日”起什么作用,没有查到。“智”,古文作“𥏼”。

  • 老子反智,除“知人者智”一句外,“智”字在《老子》中都以否定形式出现。
  • 《论语》、《庄子》中皆无“智”字。
  • 孟子有“仁义礼智”之说,“智”在《孟子》中是常见字。

标签:

2006/10/08

基于PicoContainer的插件体系

PicoContainer是支持IoC的轻量级容器。它可以把原本复杂的组件间的组合关系委托给容器来管理,从而降低了软件开发的复杂程度。我们完全可以利用PicoContainer的组件装配功能,来开发一个轻量级的插件体系。我在大角星软件的试验中就做了这种尝试。

一个插件框架,其主程序的生命周期,应该包括如下几个阶段:
  • 加载阶段:加载共享类库,根据依赖关系依次加载插件;
  • 注册阶段:注册插件的扩展点和扩展;
  • 装配阶段:把插件装配起来;
  • 运行阶段:运行各个插件。
由于有了PicoContainer的支持,注册、装配与运行都变得极为简单,主要的工作在加载阶段。参考jEdit的加载机制,我开发了自己的插件加载程序。

目前,大角星软件的开发处于停滞状态,但我不会放弃这个插件体系,我还会继续提炼、精简这个框架。

标签: , , , , ,

2006/10/06

每周一字:秋

中秋之夜,无缘得与远方的亲人团聚,在办公室凑为此文,且学一下“秋”字的来历。

“秋”字,在最古老的甲骨文中仅是一个蟋蟀形,或许是秋日的鸣虫触发了造字者的灵感吧;后在蟋蟀形下加“火”,以示秋天“禾谷熟,似火灼”;籀文中又加“禾”字旁。字的本义是成熟的庄稼。

“秋”是最能激发作家写作欲望的字之一了,历来颇多诗句与文章。这里引我最近看到的一篇散文—《三联生活周刊》主编朱伟先生的《秋声夺人》。摘抄我喜欢的其中两段于下。

但如果将秋作为一个过程,秋的美丽其实不在这种清朗与逐渐的清静、清瘦与清寥,我不喜欢这过程中的秋风生哀、花落悲心。我喜欢夺人的秋声在早秋那种清高与清锐中的秋声浩荡。贾岛有诗句“一点新萤报秋信”,意思是说,秋天是随萤火虫出现而始。萤火虫三月出幼虫,没有翅膀的幼虫要经六蜕成蛹,雄虫蛹羽化后才漫天飞舞。按《汲冢周书》的说法,“大暑之日腐草化为萤”,我却一直以为秋实际是从夏至就开始了——夏至阴阳会聚,阳气盛到至极,阴气就开始产生。秋是阴气开始逐渐弥漫的季节,又是秋虫们用歌声一点点呼唤再一点点送走的季节。《诗经·七月》中有“五月鸣蜩”、“五月斯螽动股”,蝉就是蜩,斯螽就是螽斯。《诗经·周南》中专有一首有名的《螽斯》:“螽斯羽,诜诜兮”,这个“斯”在最早使用中我怀疑是助词,后来才与“螽”合成一个名词。大自然的事情处处耐人寻味——夏至后蝉在高处树干上歌颂夏天,螽斯则在低处草浪中呼唤秋天。夏至后过一个月才是大暑。

这种阴阳的变换、四季的流转最能引发人们的想象力了。然而我喜欢的却是文字里透出来的那种气息,颇有点这里说的“那种清高与清锐中的秋声浩荡”的模样。

我喜欢立秋前旷野里那种浩荡着的秋声夺人。童年中郊外的夏夜是晴透得中间没有一丝阻隔,黑成那样纯厚的透,萤火虫在那样纯正的夜幕中真可谓“飞光千点”。古人说萤火虫是因腐草与竹根间本身的光感湿热之气变成,所以那漫天的忽明忽暗给人一种清袅,也可谓清气入肌。但各种各样螽斯在这清袅里清舒、清晶、清亮、清越的鸣又组合成一种极强劲生命的力,反过来将那漫天本来阴气氤氲的荧光装饰得那样壮丽。那时身在旷野中,这鸣声真构成一种向你撞来的声浪,千错万织无边无沿,千百万鸣声集在一起好像都在争着一个清高,使你不由自主就会被这庄严感动——千百万的虫一次次地蜕,历尽艰辛羽化后就为通过这声光召唤传种接代。萤火虫雌虫不飞行,雄虫漫天飞舞地呼唤它们,找到伴侣后它们会有淋漓尽致到数小时的交尾,然后雄虫使命完成,过一两天就死了。雌虫找到合适的土缝、石缝产卵,目的也为迎接勇敢的死。雄螽斯同样用鸣声呼唤雌螽斯,不断急促的鸣声是为不断获得新伙伴—— 因此它只要还有气力,就希望有尽量多的伴侣、尽量多的子孙,这种古人称为的“螽斯之德”后来被喻为后妃妻妾间互不嫉妒的妇德。雄螽斯们是明知自己用多了气力会加速死亡,也要穷尽自己生命之力欢乐地歌唱与交尾,等它们力气用尽,它们也就死了。

写得这样有趣!

标签: ,

2006/10/02

关于ActiveRecord中的has_many

这两天工作之余在研究RubyOnRails,作了个小例子,感觉还不错。有个错误,简单记一下。

ActiveRecord中has_many关系用finder_sql来定义时需要注意一点,不能用子查询,否则会出错。例如下面的代码是错误的:

has_many :superiors, :class_name => "DAG", :finder_sql =>
'SELECT * FROM dag_nodes ' +
'WHERE id in (' +
'SELECT superior_id FROM dag_node_relations ' +
'WHERE inferior_id=#{id} )'

原因在于active_record/associations/has_many_association.rb中construct_sql方法是如下处理的:

@reflection.options[:counter_sql] =
@reflection.options[:finder_sql].sub(/SELECT (\/\*.*?\*\/ )?(.*)\bFROM\b/im)
{ "SELECT #{$1}COUNT(*) FROM" }

这个正则表达式替换不能正确处理包含子查询的情况。

标签: , , ,

每周一字:無

“無”,会意字:人持把而舞。金文中“無”与“舞”同字,本义:乐舞。

《老子》有言:“天下万物生于有,有生于无”。万物并非从来就有,而有一个生发的过程。在人类的认知领域考察这一点特别有趣。

比如四个方位概念(东、西、南、北)渗入到日常生活的方方面面,确定方向、盖房、修路、城市规划等等。可是认真想一下四方的概念,其实一点都不简单。它们的建立需要对太阳、星辰的运行有充分的认识。一旦当这些符号创造出来,就会影响人们以后的生活,并且人们也开始习惯与之为伴并渐渐忘却了它们的创造史。

标签: