Ubuntu Feisty下的中文字体表现

2007年04月30日 22:08

上次谈到了Linux桌面的问题,这次趁着重装升级,稍微的配了一下中文字体,只下载安装了文泉驿0.8字体并安装,没有作其他配置。感觉虽然不够眩,起码可以称的上中规中矩吧。跟Windows下的感觉也不会差太多。

文泉驿是个不错的字体,嘿嘿。

Ubuntu Feisty的中文字体表现

郁闷

2007年04月30日 21:40

今天突然发现Feisty下面不能刻录DVD-R。(以前因为文件数量不多,没有在Dapper和Edgy下试过)
幸亏DVD+RW和DVD+R没有问题,不然真是要郁闷死了。

BTW:服务器差不多连续开了一个月了。今天终于还是把它重启了一下。其实也没有什么特别的理由,只是觉得重启一下,系统应该会清爽一些吧。

读书

2007年04月28日 10:57

今天看到木木提到《吕著中国通史》。这本书我也曾经翻过几页,它的编排很有特点,不按编年,而是按典章制度通述。这种编排方法,虽然不免显得论多据少,但是对于通盘掌握历史的脉络,的确有不小的好处。可惜翻看几页之后,没有机会继续读下去,也就没有见识到全书的风采了。

其实读史,究竟是读史实还是读史论,是很值得思考的。大多数人读史,还是以史论为主,中国历史悠久,大小史实不胜枚举,一般人实在难有精力件件考证。了解一些大事件,配以鸿儒之论,就差不多了。但是这样不免有个缺点,就是你得到的结论,实际上是你所看的书的作者一家之言,因为没有史实支撑,你无法得出自己的结论,只好别人说什么便是什么。而作者虽然学识渊博,毕竟是一家之言,如此不免走了偏门。

比较好的做法就是多读一些书,从不同人那里获得不同的结论。甚至跟现有认知完全相反的结论,只要他有理有据,能够自圆其说,也要拿来看看。这样一来,虽然仍然没有史实为据,根据不同人对同一事件的不同看法,倒也可以略窥一二,有些自己的想法了。自然,要看到不同的想法,还应该去看一些三四十年代的史学家的著作,后来的史书,因为某些需要都被统一了口径,要想看到不同人的想法,是颇为不容易的了。

书分三等,第一等的书,有自己的独到见解,且不论这见解是对是错,它是有理有据,能够自圆其说的。这些书是十分应该去读一读的。比如我读过的钱穆先生的《国史大纲》,其中对佛教、中国历史演变原因等等都有独到见解,相当值得一读。另外,还有现代吴思先生的《血酬定律》,虽然我觉得见解稍显片面而且有破无立,但毕竟也是有一个较为系统的理论。另外像《皇帝新脑》、《时间简史》,虽然属于科普书籍,但因为作者本身的学识,对于一些学界尚未确定的问题提出了自己的见解,也可以归到第一等中。

第二等的书,没有自己的见解,只是重复他人的理论,只不过用更能为大众接受的话重新表述出来,可以说起到一个“科普”的作用。这种书可看可不看,但是闲暇时打发时光,倒也没有什么害处。比如《上帝掷筛子吗?——量子物理简史》、《明朝那些事儿》、《易中天品三国》之类。

第三等的书,提出的理论无根无据,甚至自相矛盾。这种书读之就有害了。比如法X功的《转XX》。

我曾经劝阻别人,不要去读于丹的《论语心得》。为什么呢?倒不是因为它里面的结论跟我已有的认知搭不上边,实在是因为这本书虽然号称“《论语》心得”,却几乎没有一个结论是根据论语得出的。完全是拿论语做了个幌子,谈些自己的想法。你要是叫《心灵鸡汤中国版》倒也罢了,偏偏要牵强附会带上论语的名头,读完不免会对论语产生误解。虽然这书不至于沦落到第三等,但也称不上是一本好书。

不过这也只是我一家之言,如何挑书选书,如何读书,还是要看自己的喜好了。

摄影技术帖——红外摄影和透视照片

2007年04月26日 09:04

注意:本文部分结论系由推断所得,未经实际验证


一切都是从这篇新闻开始的。

有人说模特所谓的“黑色滤镜”实际上应该是偏光镜。因为我没有使用滤镜的经验,为了确证,还是去找了一些资料。这样也有好处,对相机的知识,又多了解了一些。

红外线实际上并不是什么神秘的东西,它也是一种光,也能通过相机的镜头进入。但是在胶片机上,红外线并不能引起普通胶片感光,所以红外线对拍摄结果是没有影响的。如果胶片机要进行红外摄影,必须用一种专用的红外感光胶片。但是数码相机不同,它的CCD或者CMOS,是可以感应到红外线的!因此如果不把额外的红外线过滤掉,红外线就会在CCD上引起感光,造成拍摄结果跟人眼看到的不一样,影响拍摄结果。因此数码相机必须要加装ICF(红外截止)滤镜,将红外线屏蔽掉。一般的数码相机上都是装有这种滤镜的。绝大多数的数码相机,这种滤镜是安装在CCD的前面,无法取下来的,因此这种相机就完全无法进行红外摄影。除非像这个帖子一样,自己动手拆除ICF。但是当年Sony著名的F717,就可以选择关闭ICF功能,因此才得了一个“透视相机”的称号。

仅仅是取下ICF还是不够的,因为这时可见光和红外光会同时进入,而在明亮的地方,可见光强度会比红外光强的多,因此红外光造成的感光只是会起到一些模糊的干扰作用,而不能起到主导作用。因此,要完成真正的红外摄影,一般需要加装红外滤镜,过滤掉除了红外线之外的其他光线。因为滤镜的作用是屏蔽可见光,所以这个滤镜的确应该是黑的,不透光的。不过CPL偏光镜在合适的角度看过去也应该是相同的效果应该是深红色的(可以参考家里的红外线遥控器窗口)

另外,一般物体发出的红外光其实并不是很强,因此使用红外滤镜拍摄,需要较长的曝光时间。另外红外线并不能穿透棉质的和较厚的衣物。因此想在大庭广众之下偷拍到透视照片,技术难度还是相当大的。

谈谈Linux桌面问题

2007年04月24日 22:47

看Solidot居然看到一篇终于放弃使用Linux作为开发桌面了,其实我觉得Solidot不应该出现主观性如此明显的文章,因为它毕竟是一个新闻站点,而不是一个大众论坛。
不过既然发了,我就顺便看了看里面提到的那个链接。我对X环境其实也不算特别了解,因此不敢说同意或者反对他的观点。我只说说我自己的感受好了。
中文字体确实是个问题。不过这个问题的关键,在于现在开源世界里没有特别好的字体可以用,这应该还是中文世界的人对开源项目参与不多造成的。如果不顾版权的问题去使用商业字体,当然是可以配置得很舒服的,我自己虽然不太在意这个,不过在网上看到很多人的桌面截图,绝不会在Windows之下。为什么发行版不做这些配置呢?我认为还是版权的问题。为了版权Linux发行版连MP3解码器都不能默认带上,更何况是版权问题更加明显的商业字体。不过也许以后有发行公司谈妥版权问题之后出一个中文美化良好的版本也不一定,这就看以后的发展了,如果有利可图的话,一定会有人这么干的。其实我这样对美化不在意的,用Ubuntu安装一个上海宋一个楷体,起码在功能方面没有发现有什么问题,也不需要做什么设置。
说到控件大的问题,因为我自己没有这样的感觉,所以不知道从何说起。不过Gimp这个,因为我用得比较多,还是知道一点的。Gimp之所以做成多窗口界面(Multi Windows Interface)而不是多文档界面(Multi Documets Interface),是因为Gimp遵循的是UNIX的简单哲学,将窗口管理的事情交给窗口管理器去做,而不是自己重新实现一套。我想在Windows下作过MDI的人都应该知道它增加了多少编程的复杂程度。说到这里我想说句题外话,我一直认为MDI的界面很难用。以前用Delphi、BCB的时候,就感觉比VB、VC6好很多。直到后来界面风格演变成Tab切换的多文档界面,感觉才稍稍好了一点。不过在Linux下,选择一个好的WindowManager也是很重要的,好的WindowManager可以成倍的提高界面友好程度和界面可操作性。
我现在的感觉,X环境本身并不差,但是X环境下优秀的应用程序太少。很多在Windows下很方便做的工作,在Linux下不容易找到同样方便的工具(当然,商业性的产品我一般是不考虑的)。比如作者说的输入法,我自己常用的Gimp,另外我一直想找一个好的视频制作工具,还有一个可以制作Flash幻灯的工具,都没有找到。
所以我的结论是Xwindow属于万事俱备,只欠东风。呵呵。

呓语集

2007年04月24日 17:53

* 昨天发现连续开了近一个月的服务器噪音变大了,不知道原因。也许是时候让它歇歇了。
* 明天是一个时间点,今天焦头烂额的忙了一整天,晚上还得加班。很久没有碰到这样赶进度的情况了,看来工作安排上还是有些失误。
* Jessie终于回上海了,五一的时候应该有模特可以拍了吧。这件事还得计划一下。
* 发现大家都不喜欢Flash幻灯,还是喜欢单张的照片。可我觉得幻灯的可创作性更高些。有的时候想更好的控制,我还需要一个可以在Linux下用的功能较强的幻灯编辑工具。
* 得写一个HTML to UBB 的转换工具,方便把Blog转帖到论坛。网上找了一些现成的都不好用。
* 王开源的举动让开源再一次成为热点话题。可惜对开源的误解仍然很多,而他的举动甚至让这种误解更加严重了。这是真的“热爱开源”吗?
* 17-85的85和85/1.8的85不是一回事,应该要培养区分他们的能力。

以上。

07上海车展

2007年04月23日 21:24

周末跟猛禽去了07上海车展。天气不好,阴沉沉的随时要下雨。虽然号称是专业场,可是人仍然多得吓人,我跟猛禽一开始根本找不到入口在哪,就随便的往人堆里一站,希望能够随大流走到入口处。
谁知道一进去我们就发现上当了,我们俩被密集的人流拥来搡去,根本没办法站稳,我一直担心这样挤会出事故,幸好没有。而且后来我们发现我们一开始站的地方离入口居然还有相当的距离 -_-,早知道就从外面走到入口附近再进来了。
推推搡搡骂骂咧咧的总算进了第一个入口,人流松动了很多,但是离场馆入口还有不少的距离,偏不巧的是这时下起雨来了,大家都加快了脚步,可狭窄的通道使得原本好不容易松动一点的人流又开始拥挤起来。
折腾了近一个小时终于进了场,因为场馆多地方大,开头的几个展馆并不像外面那样拥挤了。可是当我们一路逛到最有可看性的W5馆的时候,发现那里的人真是多得吓死人。本来想近距离看看Fararri、Porsche、Benz这些大厂作品的,结果因为人多根本挤不进去,只好作罢。这可以称得上是这次最大的遗憾了。
小偷也没有放过这么热闹的地方,同去的猛禽就险些被偷。幸亏发现得早,一支长焦镜头才幸免于难。只可惜还是被该死的小偷丢到了地上,砸坏了天光镜。

牢骚就发这么多,下面说说拍照。

因为以前拍过车展(当然没这个规模大了),所以打算拍些不一样的。车展一般大家最喜欢拍的就是美女车模了,我再去凑这个热闹就没太大意思了。所以这次主要还是把重点放在车和其他一些东西上。无奈对车的了解并不多,所以很难表现车的魅力。勉强拍了一些,好不好只有让大家去看了。车模当然也是要拍的,完全不拍也是说不过去的,不过这次主要是利用拍车模注意了一下测光的问题,为以后拍摄模特打一些基础。所以这次拍摄主要就是在折腾曝光补偿(没有带闪光灯,否则可以试验些闪光方面的情况)。

雪铁龙
IMG_5074

宾利
IMG_5138

奥迪
IMG_5149

本田F1
IMG_5327

车模
IMG_5236

IMG_5393

IMG_5415

其他
IMG_5336

IMG_5405

IMG_5161


更多车展照片请看这里

Intel开发培训简要笔记

2007年04月21日 10:51

昨天参加了Intel的开发培训。我参加这个培训的主要目的是为了了解一些多核开发的技术。而这次培训主要的目的当然还是介绍Intel自己的一些开发产品,包括编译器、性能检测工具、并行调试工具和一些利用充分利用并行技术的计算函数库。不过到底还是介绍了一些我想了解的东西,下面就简要的记录一下。

一、多核开发需要达到什么样的目标
正如以前的程序,在使用更高主频的CPU之后无需更改代码甚至重新编译就可以得到更快的运行速度一样。一个好的多核优化的应用程序,应该是可以自动充分利用多核的能力,自动根据内核数切分线程,在未来系统中内核数量增加的时候,无需改动代码甚至重新编译就可以利用更多内核增加并行数量得到更快的运行速度。

二、如何达到这个目标
并行开发有两种类型,一种是基于任务的并行,比如一个线程用于接受输入,一个线程用于拼写检查,一个线程用于定时保存,等等;另一种是基于数据的并行,比如用一个for循环求一个长度为1000的数组中所有数字的和,就可以被切分成0-499和500-999两段同时并行计算,最终将两段的结果相加得到最终结果。
基于任务的并行,因为任务是应用相关的,所以很难灵活调控它的数量;而基于数据的并行,是一个对用户透明的操作,可以根据实际情况灵活调整它的并发数量,具有很好的可扩展性。因此,对于多核的优化,主要是对基于数据的并行进行。在实际的开发中,往往采取两者混合的模型。
并行化的几个关键点:
  • 找到可以并行化的部分,将其分割成合理数量的并行任务
  • 合理的分配这些任务
  • 建立对公共资源的私有拷贝
  • 对确实无法私有化的资源做好同步工作


三、开发工具
对于基于C++的开发,主要有这样一些工具。
  • OpenMP。这是一个工业化的标准,主要用于数据并行化,也可以用于任务并行化。它是平台无关的,对代码的改动尽可能的小。(实际上,它只是使用#pragma插入一些附加指令,对C代码本身原则上不需要改动)
  • Intel Threading Building Blocks。这是Intel开发的一个基于模板技术的C++并行化库,它需要改动代码,但也是对任务的并行化做一些描述,而不需要在代码中显式创建线程。
  • 显式线程。就是我们比较熟悉的Win32线程和Posix线程,他们主要是基于函数的,用在任务并行化上比较方便。

昨天的课上主要介绍的还是OpenMP。它是基于一个fork-join模型的,平时是一个主线程在跑,只有在必要的时候,才会fork出并行化的线程,然后主线程会等待他们都运行结束后继续往下走。OpenMp的用法实际上就是插入一些#pragma附加指令,比如#pragma omp parallel for之类,用来指示将特定的代码做并行化处理。并行化的工作是在运行期做的,所以它可以根据你的CPU实际情况开出合适的线程数量,充分利用多核的能力。

四、其他
昨天课上还介绍了对于并发程序的优化和调试。我对Intel自家的那个调试工具并不是十分感兴趣,不过我也意识到,并发程序的调试的确需要新的工具,以前的调试工具对于并发调试而言的确是太麻烦了。另外还有调优的工作,其实就是如何把工作充分并行化的问题。另外还有一些调优手段,涉及到CPU的工作模式,比如针对超线程CPU的分支预测所做的优化等等,这些我个人的感觉是太过了,非万不得已不会去用。

不说话

2007年04月19日 15:43

辽宁初定清河特钢厂死难者赔偿标准 每人先赔1万
新华网辽宁省铁岭4月18日电(记者 杨成军)辽宁省铁岭市人民政府18日中午举行新闻发布会宣布,清河特殊钢有限公司发生的钢包脱落事件已被证实32人死亡,另有2人受轻伤。


美国发生历史上最惨重校园枪击案专题
新华网美国布莱克斯堡4月16日电(记者潘云召)美国弗吉尼亚州弗吉尼亚工学院16日上午发生枪击事件,包括凶手在内的33人死亡,20多人受伤

也谈开源

2007年04月18日 13:34

一个号称永远免费的Mac中文输入法的作者,写了一篇关于开源的问题。解释了他为什么不开源。
本来一个软件作者开不开源他自己的作品,是他个人的事情,我没有什么理由去说三道四的。不过既然他自己有一个解释,而我又觉得这个解释不大能够令人信服,就打算说两句了。

我写了一个软件,觉得这个软件写得还不错,想让大家都知道了,我就选择把代码公开出来,这就是开源了。由此可见,开源也并不是什么了不起的,神圣的,庄严的事情,他不过就是软件作者对待自己的代码的一个个人态度而已。
那为什么需要GPL这样的复杂的精确的协议呢?那只不过是为了防止有人滥用你的代码从而引发法律上的纷争而已。如果你不在乎别人随意使用,完全可以放弃版权,那也是开源的一种形式(只不过这时候,这个代码不能在法律角度被称之为“开源”而已)。

开源根本不是一种事业,也无关乎“中国的软件的成功”,它只是个人的一种兴趣爱好而已。所以开源其实是件很单纯的事情,就是一帮志同道合者在一起玩。但是在中国,开源这个词被媒体和一些别有用心的人误解了,觉得开源是很了不起的,很庄重的,是需要大家鼓掌叫好的。甚至有些人,拿着开源做幌子,希望别人来充当他的免费劳工,这种思想是要不得的。

中国的开源是不是很失败?我觉得是的。但我认为并不是因为开源才失败,而是因为开源的项目太少了所以失败。只有开源的项目足够多,各个水平各个层次的人才有可能找到合适自己的项目去参与,开源事业才会兴旺发达。现在数来数去只有这几个,要么不是我感兴趣的,要么超出了我的能力,我怎么去参与?

让我们轻松快乐的开源起来吧。

小虫近照

2007年04月18日 10:18

很久没有发小虫的照片了,最近总算把这个网站差不多搞完了。昨天做了一个幻灯。
点这里观看

生命和政治无关

2007年04月17日 17:11

美国再次发生校园枪击案,33人死亡。
南桥说,应该限制持枪。结果有人跳出来说"在生死攸关的问题上,民权算得了什么?",这话恰恰体现了中国人的价值观中从来没有人权的悲哀奴性.

我不想多说什么,只想说,如果一个制度连公民的生命都保护不了,我们辛辛苦苦建立这种制度,又是为了什么呢?

一个项目引发的联想

2007年04月16日 15:19

今天老鼠在群里发了一个网址:http://www.kangaroo-egg.com/,是一个Java-based的开源web server。
我对Java和这个Web Server并不是很感兴趣,不过还是被它下载页面里的说明所吸引了:

源代码说明
kangaroo-egg是一个完全拥有自主知识产权的web服务器,完全是从零开发,所以没有采用和参考任何其它开源项目,因此有可能在下一版本不进行开源。

我由此引发了一些不厚道的联想:
  1. 中国的高手还真是多啊,动不动就是"从零开发,没有采用和参考任何其他开源项目"。牛死了。
  2. 一个有趣的问题:这个人声称它的软件是以GPL的形式发放的,而他的下个版本应该很显然是基于当前这个版本的。那么,如果他新的版本不再开源了,他自己有没有违反GPL协议呢?

小人物的历史

2007年04月16日 10:29

有一阵子,我很喜欢玩Google Earth,其实住在中国的我,倒从来不曾真正从Google Earth中得到什么实质性的好处,但是它从远远的只看得到大陆骨架,慢慢或者快速的拉近,拉近,再拉近,到一座具体的建筑物呈现在你的眼前,那种由远而近,从大局到细节的变化,是很令人神往的。
昨天又把《鹿鼎记》看完了。尽管已经不是第一次“看完”这本书,但每次读的时候仍然是津津有味。这本书和金庸的其他作品风格颇为不同,其他作品,至多不过把历史作为点缀,星星点点嵌入书中,甚至有一些,根本就不提具体历史。而《鹿鼎记》一书,则是历史贯穿全书,甚至可以说,很多重大历史事件,都是由韦小宝这个虚拟的主人公创造的。看着自己熟悉的一个个重大事件如何被一个小人物在各种因缘际会下创造出来,实在是一件妙趣横生的事情。
说句实在话,对于清朝这一段历史,我并不是很熟悉,平常所见,也是各种“传说”、“秘史”、“疑案”为多,系统解读的相对较少。我只知道钱穆和金庸,对待这个朝代有两个截然不同的态度。钱穆认为这个朝代缺乏制度,是大大的糟糕;而金庸认为这个朝代盛产明主,起码比明朝是好的多了。
不过金庸毕竟有小说可以看,占了一点先天优势。小说里那些在历史课本上被符号化了的人物,一个个都鲜活了起来。其实在历史里谁对谁错,谁又能说得清?满清先前屠城,但后来也弄得国泰民安,跟汉人自己的昏庸皇帝相比,谁更好谁更坏?施琅先降郑后降清,但他全家被郑成功斩杀在先,他的所作所为是非对错,又如何界定?每个小人物当时都有自己的想法,在当时的环境中,你又怎么能说他们打算错了呢?
其实所有的历史,都是由无数这样的小人物所创造的,他们心中当时怎么打算,现在我们再也无从得知。我们所能做的,只是根据发生的事情,反推一些所谓的“规律”,然后再尝试将它们套用到其他的历史之上。殊不知物似人非,创造其他历史的小人物,已经不是先前的那一些了,他们的想法也不相同。以此之心度彼之意,总是有些不伦不类。

研究历史的人,不关心小人物,又有什么用呢?

数据备份很重要

2007年04月13日 18:30

今天TR老大买了个Vista安装了,结果Blog的数据全没了
这个教训告诉我们,备份真的很重要哪……,重装之前的准备工作也要足够充分才行。

回家写备份脚本去……

博弈游戏

2007年04月12日 11:14

TR老大最近在读中国通史,还能写出心得,我是很敬佩的。我也看过一些历史的东西,但并不是十分系统。买了一本钱穆的《国史大纲》,看了大半,也因为各种原因一直耽搁了没有继续下去。
今天看到TR写的分分合合,也是颇有一些想法,不吐不快。
中国历史上分者又合,合者再分的现象,一向为各大史学名家关注。钱穆年少时就曾说过要找到一个杜绝此类现象的方法,然而年纪大了,对历史研究深了,反而觉得中国历史十分复杂,那方法之事,再也不提。
我历史所知不多,倒是可以胡扯两句。至于对错,反正我也不是名家大腕,说过的话也不是甚么金玉之言,以后知道的多了,发现说错了,改口就是。
我觉得凡是政治云云,实际上就是一个博弈。吴思有著《血酬定律》说道,百姓其实知道自己占弱,因此官家来欺,但还能活命,也只好忍了;然而若是逼得他不能活了,百姓无可奈何,只好以血相拼。这就是TR所谓的底线了。政治博弈,无不是在这根底线周围,来来回回。官家百姓,一下子东风压倒了西风,一下子又西风压倒了东风。因此朝代更替,绵绵不绝。当然中国历史也不全是自家人在闹,五胡乱华,蒙古入侵,满清入关,那又不同了。所以说历史实际上很复杂。不过我们既然胡说,就只好把这些不合论点之事,暂且略过不提。
但凡这个政治博弈,古今中外,无不使然。为什么古代西方,如罗马之强盛,竟至亡国,而现代西方,又大多强盛;反观中国,古代多灾多难,倒也能一脉相承,近代和谐,却不及西方发达。我以为,问题还是在这博弈二字上。
罗马之时,一味以武力征服,战败者沦为奴隶,永世不得翻身,就好比博弈时一味强攻,丝毫不给自己留退路,自己占优时倒还感觉披荆斩棘战无不胜,一旦对方抓住机会,就会发现自己处处受制,退无可退。因此一旦失败,就土崩瓦解灰飞烟灭。因此玩博弈游戏,且不可一味冒进,要给自己留退路,压榨百姓越甚,将来自己越受其害。中国就不然,早在春秋时期,有不少圣人就已经提出很多治国之法,虽然简陋,但是毕竟是系统理论。自汉朝开始,儒家学说昌盛,虽然命运多舛,倒还能一脉相承,直至今日。儒学的思想,就是要和谐,要仁政,不要赶尽杀绝,要给人留后路。也因此中国才能延续至今不致灭亡。
然而儒学虽然强调仁政,但却没有一个明确的标线,于是刚拿下江山的皇帝,知道百姓以何为仁,往往能够哄得百姓安居乐业,国泰民安。然而过一段时间之后,太平日子久了,大家便忘了这个线到底在哪里了。于是为了自身油水,往往向百姓加压,压来压去压到百姓没有生路,就只好起来造反,这时只要有一个可以答应百姓过好日子的人站出来,往往大家就一心拥他为帝,一个轮回,便又开始上演。而现代西方则不然,受资本主义思想的启蒙,欧洲很多国家走的是一条民主法制的道路,皇帝大臣,王子百姓,都要遵守法律。法律这个东西是死的,是明确的,即使改朝换代,法律却不可立变。再加上法律制定也要百姓(代表)参与,一部法律人人服气,自然这博弈,就显得平衡了。问题也就少多了。

所以说找一个明确的博弈规则,让大家一起来玩游戏,应该可以解决很多的问题。

关于“输入法事件”的一点看法

2007年04月11日 09:28

自从google拼音诞生日起,我就看到了有关抄袭搜狗词库的消息。
我们群里有人一直在关注这个事情。我也在第一天就在群里表达了我的个人看法。但是这么多天下来,这个风波非但没有平息,反而有愈演愈烈之势,再加上最近技术blog写得太多,应该写些别的东西了,就拿这个事情说两句好了。

早在第一天看到这个消息的时候,我就说,如果词库有版权,那么搜狗应该去告google,而不只是在blog上喊冤;如果词库没有版权,那么这个事情也就不会是什么大事。后来嚷嚷了很多天,也没见搜狗有什么实质上的行动,我就想,应该是没有什么版权问题,搜狗只是得理不让人,逞一时的口舌之快而已。

没想到在Google发表道歉声明之后,搜狗仍然咬住这个事件不放,甚至扬言要告上法庭。我看了之后不禁莞尔。无论从公关角度,从打击对手的角度,从博得公众同情的角度,都是一击致命比较好,要是能告的话,早就可以告了,何必要弄得公众都失去耐心了才跳出来说要告呢?从现在的反馈来看,果然有很多人已经开始反感搜狗的做法了 ()、()、(),这又何苦来哉。

其实在Google输入法之前,我正是用的搜狗拼音。不客气的说,现在的Google拼音离搜狗拼音还是有不小的距离的,不论是可定制性还是功能。但是Google拼音的起点的确不低,而且有几项功能确实是我很喜欢而且搜狗没有的。因此我不厚道的猜测,搜狗此举是为了给Google造成负面影响,在对手没有成长之前打击对手。但凡事应该适可而止,做过了头,就变成泼妇骂街,不能引起别人的同情心了。

其实这次谷歌的公关做得也不甚成功,留下了很多漏洞给对方攻击。但遗憾的是搜狗没有能够抓住,反而用相当不恰当的手段把自己推到了不利的一面。我们不谈道德,只谈商业,起码在商业公关方面,搜狗还是有很多东西需要学习的了。

增加分类统计功能

2007年04月10日 12:59

昨天刚刚搞定分类,TR就留言说应该要有一个分类统计的功能。想想也是,每个分类后面加上blog的数目的确清楚得多。
Pivot 模板标记文档查了一圈,没有发现能够实现这个功能的,只找到一个 [[livearchive_list]] 标签可以列出所有的分类。
看来只能自己写了。去论坛看了一圈,发现Pivot支持一种叫做snippet的东西,可以定制所需的标签。大概的看了一下,规范并不十分复杂。我所理解的规范如下:

  1. 文件放在extension/snippets目录下

  2. 文件以snippet_开头,后面加上你希望的标签名

  3. 文件里需要公开的函数也以snippet_开头,后面加上标签名,然后可以设定参数,参数在模板中以类似[[标签名:参数:参数]]这样的格式传递


看了一些实例后,我决定自己写一个 livearchive_list 的增强版,就是后面跟着blog数的版本。
最简单当然就是从livearchive_list的代码改了。grep了一下,找到了livearchive_list的代码,在modules/module_snippets.php里。
于是把那段代码复制出来,新建一个自己的snippet,就叫livearchive_list_ex吧。
这是代码,蓝色部分就是我增加的。

<?
//----------------------------------------------------------------------
//FILENAME: snippet_livearchive_live_ex.php
//
// Just like [[livearchive_live]], just add the count of entries of each category
// Usage: [[livearchive_live_ex]]
// Author: ch.linghu
//----------------------------------------------------------------------
function snippet_livearchive_list_ex ($filename="", $format="", $weblog="", $template="") {
global $Weblogs, $Current_weblog, $Cfg, $Paths, $allcats;

if ($filename == "") { $filename = $Paths['pivot_url']."archive.php"; }

if ($format == "") {
$format = "<a href='%file%?c=%catid%&w=%weblogid%&t=%template%'>%cat% (%entriescount%)</a><br />";
}

$allcats = cfg_cats();

if ($weblog == "current") {
$cats = find_cats_in_weblog($Current_weblog);
$weblog = $Current_weblog;
} else if ( ($weblog != "") && (isset($Weblogs[$weblog])) ) {
$cats = find_cats_in_weblog($weblog);
} else {
// use all cats..
$cats = cfg_getarray('cats');
}

#---------------by ch.linghu: Count the entries in category
$myDb = new db();
$entries_array = $myDb->getlist_range("0000-00-00-00-00", "2099-01-01-00-00","","", FALSE);
#---------------


usort($cats, "category_simplesort");

foreach ($cats as $cat) {

// skip cat if it's 'not-public'.
if ($allcats[$cat]['hidden'] == 1) { continue; }

// skip if name is empty
if ($cat == "") { continue; }

// skip cat if it doesn't exist anymore
if (!isset($allcats[$cat])) { continue; }

#----------------by ch.linghu: Count the entries in category
$entries_count=0;
$temp="";
foreach($entries_array as $entry)
{
// Only list published entries, not timed posts or held entreis
if (strcmp($entry['status'], 'publish') != 0)
continue; // skip to next entry

// Only consider entries posted to the requested category
if (in_array($cat, $entry['category']))
$entries_count++;
}
#------------------


$my_output = $format;
$my_output = str_replace('%file%', $filename, $my_output);
$my_output = str_replace('%catid%', para_category($cat), $my_output);
$my_output = str_replace('%cat%', encode_text($cat), $my_output);
$my_output = str_replace('%weblogid%', para_weblog($weblog), $my_output);
$my_output = str_replace('%weblog%', $Weblogs[$weblog]['name'], $my_output);
$my_output = str_replace('%template%', $template, $my_output);
$my_output = str_replace('%entriescount%', $entries_count, $my_output);
$output .= $my_output;
}

return $output;

}

?>


源代码在此下载,右键另存为,将后缀的txt去掉即可。

搞定了blog的分类

2007年04月09日 16:15

终于把blog的分类搞定了,原来分类使用的是Weblogs的Extra template模板,原先不知道这个做什么用,随便设置了一下设成了entrypage_template,所以参数都匹配不上了。
改成frontpage_template就好了。汗。
BTW: 现在感觉Pivot的后台的确BT,设置被分裂到N多的地方,又没有一个特别好的文档,真是够晕的。

终于重装了Linux

2007年04月09日 09:51

不知道是不是受了在公司安装Ubuntu Fiesty的影响,周末心血来潮突然想升级了。于是驾轻就熟的更改sources.list,apt-get update,apt-get dist-upgrade,但是——重启之后机器起不来了,挂在了加载统一CD-ROM驱动(Unify CD-ROM driver)的地方。当时因为考虑到我迁移系统之后出现了一些小的问题,以为是迁移系统之后升级导致的。但是后来上网去查,发现不是,这是Ubuntu Feisty Beta的一个bug,如果从硬盘升级,会造成启动顺序方面的问题而导致系统进不去。因为这已经涉及到启动级别了,我自觉目前我的能力还不足以解决。又想以前的系统因为不熟悉乱装了很多乱七八糟的程序,也是时候清理一下了,于是决定重装。
这次重装,我选择的是Ubuntu Edgy Server版本,因为我不想从6.06版再起步了,而我恰好有Edgy Server的光盘。另外,我觉得Server不默认安装Gnome和X,正好可以有一个自己组建的机会。于是开始安装。前面的安装没有什么好说的,一个基本系统而已,因为之前有仔细的分区,这次重装只格式化了/、/usr和/var三个分区,将/home、Photo和movie的数据保留(这些可是原始数据啊)。装完之后第一步开始安装X,我装了一个最最基本的x-window-system-core,然后我选择了一个我觉得是最最轻量级的Window Manager——IceWM。(xfce4安装需要10多M,而IceWM只有1M多),基本的系统安装没有什么问题,只是这样装完不能显示中文,于是我又装了ttf-arphic-uming字体,装上之后就可以显示中文了,这次只装了这样一个中文字体,虽然不太好看,但是自己用用觉得也够了,不想再像以前那样折腾字体和美化的问题了。然后安装输入法,我仍然选择fcitx,然后在/etc/X11/Xsession.d里创建一个95xinput文件,写上

export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE="fcitx"
fcitx

就可以在启动X的时候启动启动fcitx了。
然后就是显卡驱动,先装了xorg-driver-fglrx,发现启动后显卡并没有加载,而且日志显示初始化错误。奇怪之余上网查了一下资料,发现原来少装了对应内核的linux-restricted-modules。汗,还是基础知识不够牢固。于是又apt-get install linux-restricted-modules-$(uname -r),竟然提示说没有对应的包。检查了一下,原来Ubuntu Server使用的内核是2.6.17-10-server,但是restricted-module只有2.6.17-10-generic,原来server版的内核不支持restricted-module -_-。手工指定安装linux-restricted-modules-2.6.17-10-generic,它会根据依赖关系自动装上对应的generic内核。安装完之后修改/boot/grub/menu.lst,将hiddenmenu去掉,将启动选择界面显示出来,然后手工去掉server内核的启动项。reboot,终于可以加载上fglrx驱动了。然后开始配置xorg.conf,这次没有像以前那样去网上找接近的文件来改,而是直接使用aticonfig --initial=dual-monitor;aticonfig -ovt=Xv来自动生成xorg.conf,然后再手工稍微改一下就行了。这里特别要提到刷新率的问题。开始在网上找了N多的解决方案,都没有用。最后看到一个说,只要在分辨率后面加上诸如“_85”这样的就可以了,抱着试试看的心情,将两个monitor的分辨率分别指定为“1024x768_85”和“800x600_60”,重启,果然可以了。汗,比我想象的还要简单。
IceWM只是一个纯粹的Window Manager,自身并没有任何组件,所以比如文件管理之类的还是需要单独安装。文件管理器我还是用了nautilus,虽然它有一个“用GVim打开”的bug,但是其他的方面我已经比较熟悉了,不想换了。然后为了以前我写的一些脚本能够正常使用,还装了一些必要的库,包括zenity,这个程序会显示一个对话框(可以指定类型,比如文件打开对话框、下拉选择框、日期选择框之类)。为了U盘能够即插即用,我还装了gnome-volume-manager,然后在~/.icewm/startup里写上

#加载桌面
nautilus --no-default-window &
#U盘即插即用
gnome-volume-manager &

然后chmod +x ~/.icewm/startup
这里有一点要注意,Ubuntu默认安装的时候,在~/.icewm里会放上一个preferences文件,但是这个文件有些bug,会导致startup文件无法加载。删除这个文件,有什么选项的改变用prefoverride文件代替,就可以了。
接下来就是配置IceWM,这个东东有很多选项,反正慢慢配就是了。这里就不多说了。然后还有就是安装软件,基本上就是要什么装什么,已经跟以前一样了。

想想第一次装Ubuntu的时候差不多折腾了一个星期,中间还格掉重装了好几次。现在只要1天的时间就可以将系统做到差不多完全恢复的程度,真是感慨万千。

QQ的键盘保护导致蓝屏

2007年04月06日 18:07

今天终于把公司机器上Linux操作系统里的VirutalBox虚拟机比较完美的安装好了,在找资料的过程中知道了Guest Additions这个好东西。想起来我的Windows下也有一个VirtualBox虚拟机,今天打算也拿出来晒晒,把Guest Additions装上。
结果可不得了,我刚点完界面上的Install Guest Additions菜单项,XP系统立刻蓝屏了。报npkcusb.sys错误。于是重新开机,没料到这次更糟,我刚打开VirtualBox窗口还没有做任何操作(包括启动虚拟机)就再次蓝屏了。我头上立刻冒出了豆大的汗珠——不会是机器出了问题吧……。再启动一次,仍然是一打开VirtualBox就蓝屏。我想,一定是VirtualBox出问题了,于是准备卸载。然后在卸载之前,我习惯性的把npkcusb.sys输到Firefox的google搜索框里搜索了一下,结果一看……幸亏下手没这么快,原来问题根本不是出在VirtualBox上。
我看到了一篇关于用USB外接键盘蓝屏问题的解决,才知道原来是QQ搞的鬼,因为我正好因为中午想玩游戏而接上了外接USB键盘,虽然后来没有用,但是一直没有拔下来。我因为觉得QQ太花哨而没有装QQ,只装了相对比较清爽的TM,因此我先尝试搜索了一下npkcusb.sys文件,发现有两个结果,果然都是跟腾讯有关。于是按照帖子里的方法把几个驱动删除,又去注册表搜索了一遍,发现我运气比较好,注册表并没有相关的项目,也就不用删了。再次重启,打开VirtualBox,果然就没有问题了。
腾讯为了防止木马截获键盘输入,制造了一样一个键盘保护机制,本意倒是好的。然而动不动就涉及底层,是比较危险的一件事情。没有经过充分测试,是很容易出问题的,而且这种问题会比用户层的问题严重得多。好在我蓝屏的时候没有写代码或者做别的什么有价值的事情,不然的话真是要欲哭无泪了。
其实腾讯倒是可以思考这样一个问题,微软也有IM、Yahoo也有IM、现在Google也有IM,为什么针对QQ的安全事件就特别多?有的时候,问题是更深层的,不从根本上解决,而只是兵来将挡水来土掩,不是个很好的解决办法。

Google输入法

2007年04月04日 10:39

Google终于推出中文输入法了,下载试用中……

Updated:
今天稍微试用了一下,也看了网上的一些评论,褒贬不一。
不过对我来说,因为用的是全拼,而且按照向来的习惯以词组方式输入(我一直无法习惯整句输入),并没有碰到什么大的Bug。总体使用感受跟紫光和搜狗差不多。

我个人比较喜欢的小特性有:
1、u功能(笔画输入功能)不错,对付生僻字很有用。
2、v功能(英文拼写建议功能)算是独创的,很有用。
3、自动同步功能对我来说很有用。如果推出Linux版本,这个功能对我而言将会更加有用。
4、中文状态下输入网址,还是比较方便的。

个人觉得比较不爽的地方有:
1、没有了紫光拼音的以词选字功能,不过考虑到Linux下的fictx也没有,倒让我觉得心理平衡点,哇咔咔。
2、搜索在我看来有点鸡肋,现在的搜索只能搜第一个备选词,意义不大,反而经常容易搞错,还不如不要,界面清爽点。
3、输入法的状态条太大的,又占地方又难看。不要跟我说简化模式,我不是想让它的长度减小,而是希望它的高度能够减小,瘦一点会比较好看。
4、跟Google Talk一样喜欢自作主张的升级,不给用户选择的能力。不过强啊强的大家就都顺从了,只要别自动升级升出问题,也就随他去了。(想到当年Ubuntu自动升级导致X进不去,我对自动升级其实还是有点敏感的)
5、个头太大,不知道里面都有些什么,怎么就10M了呢?我还是希望Google的产品都能像最初的Google Talk那样只有1M,多轻巧啊。

不过不管怎么说,G拼音已经是我公司电脑上的唯一输入法了,好坏不论,先用着吧。反正哪天觉得不爽了再换就是了,一个输入法还不至于绑住我。

照片幻灯展示 DEMO

2007年04月03日 22:23

自己有服务器自然就想更好的展示自己的作品(如果称得上作品的话-_-)。想做得灵活一些但又不想搞得太复杂,更不想被某个相册系统或幻灯系统绑定,于是上网找了一个最简单的:monoslideshow
这个程序只有一个Flash文件,它通过读取一个XML文件来获得照片,并且以幻灯形式播放。支持背景音乐。
我写了一个后台脚本,将照片上传到服务器之后,运行一下这个后台脚本,就能自动生成对应的XML,并将这个swf复制一份到指定文件夹,然后就可以使用这个Flash进行幻灯展示了。
下面是一个Demo,没有新的照片,仅做展示用。
幻灯展示DEMO

[随手一记]DNS出问题了?

2007年04月03日 16:21

今天似乎taobao色影无忌都不能访问,表现为DNS无法解析。
新网的DNS服务器ns1.dns.com.cn也ping不通。不知道是不是一个事故。

重庆“最牛钉子户”事件告一段落

2007年04月03日 09:56

政府出面协商,最终房屋被拆除。没有流血、没有冲突,很和谐。
独立报道该事件的zola blog被定点封锁。没有流血、没有冲突,很和谐。

“最牛钉子户”会成为一个难得的个案,还是会像孙志刚一样导致一系列潜规则变动?我说不准。
独立报道的blog会成为一个难得的个案,还是会演变成一个悄然而至的变革?我也不知道。

反正就这件事而言,已经画上了一个句号。我无意探究这个句号是不是画得圆满,这已经不重要了。我希望的是以后能出现更多这样的事情,并且能够画上一个哪怕不那么圆满的句号。

切换IP地址的批处理脚本

2007年04月02日 13:39

家里的服务器做了路由之后笔记本不需要自己拨号了,只需要设置网关即可。因为家里的IP地址和公司的设定不一样,我就在连接的TCP/IP属性设定里增加了两个IP地址,同时设置了2个网关。但是我发现这样不行,设定2个IP地址没有什么问题,可以连到我的局域网电脑;但是设定2个网关就会出问题,一开始是可以正常访问外部网络的,使用一段时间之后就不行了,访问外部网络会time out。
解决方法当然就是到家里改成家里的IP地址,到公司改成公司的IP地址了。但是在那个属性设定的对话框里填写也太麻烦了,所以我上网找找看Windows是不是有类似Linux的ifconfig命令可以直接命令行设置的。
还好是有这个命令的,叫做netsh,这样事情就简单了。
写两个批处理,分别设定IP地址为公司的和家里的,到什么地方就执行一下对应的批处理就可以了。
批处理类似于下面这样:

netsh interface ip set address name="本地连接" static 172.16.1.77 255.255.0.0 172.16.0.3 1
rem 查看设定之后的结果
ipconfig /all
pause

注意netsh命令最后的那个1,应该是设定跃点数的,这个参数很不起眼但一定要设,开始我就是因为这个1漏写,造成执行不成功。

愚人节

2007年04月01日 21:29

今天又是愚人节。
2000年的愚人节,我被当时的女友一通电话从家里赶到杭州,并且经历了一系列的“阴差阳错”之后,被告知“You're fooled”。这是我被耍得最严重的一个愚人节,当天我放弃了同家人在一起的时间,浪费了差不多4个小时的时间,仅仅得到了一句“跟你开个玩笑”。而被利用的,正是我最为看重的感情。
2003年的愚人节,无数人在惊愕、怀疑、痛苦、悲伤后得知,张国荣跳楼自杀了。在一个本该充满玩笑和假新闻的日子里,偏偏得到了一个大家都希望是假的,可偏偏是真的悲剧新闻。凡事后知后觉的我,从那时起才算真正认识了张国荣。
2004年的愚人节,Gmail正式发布。在那个大家都认为免费邮箱已经没有前途的日子里,Google反其道而行,并且成功改变了免费邮箱的概念。从那时起,免费邮箱再也不是可有可无的玩具。到今天,我的Gmail使用频率,甚至已经超过了公司邮箱。也是从那时起,我开始慢慢记住了Google这个名字。

从2005年开始,我发现原来我每天都生活在愚人节里。4月1日,其实已经没那么重要了。
2年过去了,每天愚人节的日子仍然在继续,不过越来越理性的我,似乎看到了一点变好的迹象。
不知道什么时候,我们可以真正的感受到愚人节的那份惊喜?
Design downloaded from free website templates.