2011-01-20

人所不欲,勿施于人

谁说博客也要像论文一样结构清晰、有条理?!

软件卸载

昨天整理自己的本本,卸载了 VMware 7.0 + 深度XP,MS Office 2007 以及 Visual Basic 6.0。我承认这些都是盗版软件,不过剩下的应用程序都是自由软件(freeware)或免费软件(freeware),这下我的计算机“干净”了。闲来无事,我就细数了一下当初装这些软件的原因:

  1. VMware + XP:当初刚买本本的时候,正好在上软件工程实践,紧遵老师的教导“将自己的开发环境随身携带”,自然第一款软件就是装了虚拟机(学校机房里是肆无忌惮地用盗版 VMware),另外上课指定使用 Visio 作图,那也只好一起装了;当然,也有部分原因是因为某些人的计算机装的是 XP,我这边有个 XP 环境也是为了方便问题重现(我的本本预装了 Vista)。
  2. MS Office 2007:在毕设期间,我也还是用 Open Office 和 WPS 2010,但现在公司用的却是 Office 2007(正版)。我这次卸载这款办公软件其实也是在提醒自己:工作的事情要在工作时间里完成!
  3. VB 6:你可能无法想象在我们科班的毕业设计中有多少是 VB6 项目,从大二开始,每逢毕业将至,总会有人来找我帮忙看那些不晓得从哪儿搜罗来的 VB6 代码,经不住软磨硬泡,我总会帮着改改;另一个原因在我自己,我一直下不了决心去学 MFC 等,所以但凡要做 GUI 程序,我都是拿 VB6 来画界面,再调用由 C 语言开发的 DLL 库,不过现在改用 QT,于是 VB6 可以功成身退了。

己所不欲,勿施于人

有些人就喜欢把自己的事全盘交托给别人来做,我一直不明白他们既然有精力去说服别人,为什么就没耐心自己去完成(所以我下面说人和人之间是无法理解的)。既然自己都认为这是无聊的事情,为什么偏偏又假设其他人会愿意无偿地帮你来完成呢?

两千多年前,孔老夫子提出“己所不欲,勿施于人”的观点,但到了今天,我听到关于这句话时的语境普遍是,A说:“那个XX东西你也不要了(或要了也没用),不如就让给我吧?”,B就义正言辞地反对:“那怎么可以!己所不欲,勿施于人嘛。”

己所甚欲,勿施于人

易中天老师在《百家讲坛》讲解诸子百家时提到庄子的思想比起“己所不欲,勿施于人”更进一步:“己所甚欲,勿施于人。”

如果你对此还不甚了解,建议去看看《武林外传》第五十八回:小师妹现身七侠镇,大师姐难解心头愤。故事大意就是小师妹南宫残花是个极端的素食主义者,不顾及营养均衡,一味地强调、推广素食,要求每个人都做到所谓的“天人合一”。一旦有人心存不满,就有如唐僧附体一般地给众人施加压力。这种人就像装在套子里的人——别里科夫一样,固执己见,食古不化,还要将自己的想法强加给别人,不认同这个世界的多元性。也许这种人活在黑白的世界里是最适合的。

现实中将自己喜爱的事物强加给别人的例子比比皆是。中国传统的“子承父业”,有多少人是满心欢喜地从父辈手里接过担子的(就中国这十几亿人口来说,即使是一万分之一那也很大,所以不要真去讨论数量)?父母教育孩子的时候,普遍会将自己年轻时候无法实现的理想强加于孩子身上。

人所不欲,勿施于人

虽然孔老夫子和庄老夫子所言都有道理,但我很奇怪作为大师的他们为什么都只臆断他人的想法。既然问题的关键在于“是否施于人”,那理所当然要考虑他人是否接受了,而两位老先生却一个说“己所不欲”另一个谈“己所甚欲”,都是将自己的想法强加给他人。尤其是庄老夫子自己也会说“子非我,安知我不知鱼之乐?”(《庄子——庄子与惠子游于濠梁之上》),那他也晓得人与人是不一样的,又怎会拿自己的喜恶无衡量他人的想法。

因此我信奉的是“人所不欲,勿施于人”。

不过追根究底,上面两句话也都不是他们两位老人家自己说的:“己所不欲,勿施于人”出自《论语》,而《论语》是由孔子的弟子及其再传弟子编撰而成。其中多少话真的是子曰过的,咱也无从考证了;而“己所甚欲,勿施于人”更是出自当代的易中天老师之口,正是一千个观众眼中有一千个哈姆雷特,这句话是否切中庄子的想法就不讨论了,但终究不是庄子自己说的。

人与人之间无法理解

猫舒服的时候会发出呼噜呼噜的声音,而这种声音在狗看来是威胁对方的一种信号;狗高兴时爱摇尾巴,而猫认为这样做是讨厌什么东西的标志。所以猫和狗一见面就会打架,因为它们相互不能理解对方的好意。而人与人之间又何尝不是这样?就像我爸爸不懂我为什么会学计算机,我也无法想象整天背书的日子有多好玩。

前段时间重温了一下卡通《幽游白书》,小时候光看着他们打来打去,现在才多少有点理解。让我最有感触的人是“仙水 忍”,仙水的个性非常单纯,但天生拥有强大的灵气,最后甚至有圣光气围绕全身(对人类而言,全身被金光包围的就是天使)。他从小斩妖除魔、以保卫人类为己任,直到后来,在一次执行任务的过程中,发现那些富豪们虐待和屠杀小妖来取乐,仙水无法接受自己舍命保护的人类反而比妖怪更加凶残;后来他去偷看了灵界的禁物——黑之章(上面记录了人类所有的恶行),更是分裂出七种人格,从此在矛盾中活下去。

在《千秋英烈传——刺秦》中,荆轲在燕国看到的是哀鸿遍野,满街都是乞丐,百姓生活朝不保夕。而燕太子丹将此归咎于秦王野心勃勃,欲将各国吞并,导致民不聊生,并且施计让荆轲答应去刺秦。等到荆轲来到秦都咸阳,见识到秦王英明神武,百姓生活富裕,街上更是连一个乞丐也没有,荆轲对大秦的升平景象充满赞叹,但势成骑虎,荆轲也只能无奈。

这些故事都是虚构的,但我们的现实生活又何尝不是如此呢:比如我看日本人就像《幽游白书》里人类看到妖怪一样的厌恶,非除之而后快;而那些小日本看我们中国人不也像妖怪看见人类一样觉得是异类?我前些天还傻乎乎地跑去问去过美国的同事:“美国大街上是不是也有乞丐?”好在据同事所言,那儿不仅有乞丐,而且比中国的乞丐嚣张多了。于是我又想起那句话——中国这只绝对不会(周星驰的《国产凌凌漆》)。

严以律己,宽以待人

我从小喜欢看武侠,而老爸要看“领导很忙、中国人民很幸福、外国人民生活水深火热”的新闻联播,他觉得这些古装剧听着就头疼,所以每次都会拿遥控器去换频道。因此我从小就渴望着独立、能有自己的空间,也不晓得是不是经济发展了,总感觉现在父母与子女的关系也是赤裸裸的商业交易:我把你养大,你花我的钱,你就得听我的,我让你好好学习,你就不会辜负我的期望。当然,这些话从来没有哪个父母说过,但周围的环境总让我有意无意地感受到这种压力。所以我要工作,自己养活自己(以后能力强了就回过去养父母),这样就不会有“寄人篱下”的感觉,我的地盘也可以我做主。

如果物质条件真的非常优越,《老子》的小国寡民政策也挺不错,因为大家都能自我满足,彼此不必太相互依赖:我在我的个人空间里可以尽情地看我喜欢的电视节目,永远不必当心老爸过来换台,呵呵。但目前而言,显然无法做到全世界每个人人手一台电脑、一台电视、一间房子……更何况老聃所处的时代,所以老子委曲求全,希望通过降低人民对物质生活的欲望,来实现这个理想,这就有点舍本求末了。

我们目前能实现的就是共享资源(全家人看一台电视),这点倒是很像我们开发并行程序:如果多进程或多线程之间没有任何资源共享(小国寡民,老死不相往来),那编程还算简单的,但往往是需要共享内存等等,就会有同步、脏读等一系列问题。程序上的事情由算法解决,现实生活中的事情,我崇尚“严以律己,宽以待人”。

编程的时候,每个人都会有自己的编码风格(花括号的布置、变量的声明、TAB的大小等),看到别人编写的风格混乱的代码时,就用包容的心去对待即可(尤其是代码格式化工具如此昌盛的时代),只要自己编码的时候坚持使用统一的风格即可。软件的一个好处就是只要你拥有一片属于自己的可用的磁盘空间,就可以将代码 check 下来,然后格式化成你喜欢的风格,而且通常情况下获得一片属于自己的磁盘空间花费会比获取一片属于自己的土地空间要便宜。因此,在计算机的世界里,你能按照自己喜欢的方式生活。

以前有人问我:“你学习为了什么?”我猜问的人也不会答应我很矫情地学周总理说“为了中华崛起而读书”,我的答案是:“学知识是为了让自己生活得更美好!”


Pig 更新: 发布 0.7 版本

关于 Pig

Pig 是一款文件格式化工具,它可以将“金山词霸”生词本软件导出的格式混乱的文件整理成网页格式,方便大家打印。更多内容可以参考以前的文章《和 Pig 一起学英语》

Pig 距离上一次更新有快两年的时间了,期间发生了很多事。其中一个原因是我后来对自己电脑上的软件进行了正版化清理:诸如 Visual Basic 6.0 精简版、VMWare 等盗版软件都被我卸载了,而 Pig 之前的版本都是用 VB6 精简版 + Dev-C++ 开发的。

姗姗来迟的新版本

事隔这么久,期间也有几位热心网友发邮箱报告程序 Bug,并对程序新功能提出了展望。可惜这次的更新不仅没添加任何新功能,反而还砍掉了一些比较鸡肋的功能。

Pig v0.7.0

程序界面如右图所示,与以前的界面相比变化不大(这正是我想要的)。不过本质区别是:以前的 Pig 是一个独立的可执行程序调用一堆动态链接库来完成任务;如今的 Pig 只是一张网页,通过执行 JScript 和极少量的 VBScript 来实现功能。

新版本解决的问题有:

  1. 这次的开发编辑器用的是 Emacs,语言选的是 JavaScript 和 HTML。开发环境方面没有版权问题。
  2. 随着金山词霸本身的升级,生词本导出文件的格式出现了调整。有网友反映 Pig 不能处理这些新文件。这次更新也增强了这方面功能,现在 Pig 能处理到目前为止的所有版本生词本导出的文件。
  3. Pig 之前的版本是用 VB 和 C 语言写的,源代码并没有随程序一起发布。这回简单了,JavaScript 和 VBScript 天生具有开源性质,源代码就是程序,你想怎么改都行。
  4. 更新了帮助文档。

砍掉的功能有:

  1. 合并“指定输出路径”和“生成单个文件”两个功能;
  2. 删除“输出卡片风格”(这功能真的没人用),统一用“列表”形式;
  3. 删除“图片格式”(当初有这个功能是因为 IE6 不能显示 Unicode 编码的音标,哪知我是费力不讨好:大家背单词并不关心音标);
  4. 删除“PDF格式”(也是费力不讨好的活);
  5. 删除“字段排序”功能(目前还没人把音标或解释放到单词前面来打印)。

下一步预期:

  1. 我自己的系统是 Vista,必须找台 XP 的电脑测试一下(毕竟目前的用户都是用 XP 的);(Done @ 2011-01-03)
  2. 生成 Excel 格式的文件;
  3. 在已安装了金山词霸的电脑上能自动分析生词本数据库,用户无需导出成文本文件;
  4. 去支持其他词典软件,比如有道、灵格斯等。

版权问题

和我的其他玩具一样:源代码都给你了,那还不是想怎么样就怎么样了?

说真的,其实我懒得搭理这种事情。我认识的人都知道这玩意儿是我为他们开发的,其他人怎么想我就不在乎了。

先睡觉,醒来我会把程序发布到 Google Code 上,到时再更新链接。

后记

今天白天在 XP + IE6 下做了简单的测试,并升级到 v0.7.1 版本,不过在 IE6 里选项卡之间切换时会出现一片空白(如下图),是 jQuery 的插件 jdMenu 的问题,它并不影响功能,所以暂时不去修复了。

Bug for Pig in IE6

程序已经发布到 Google Code 上,下载地址是:http://code.google.com/p/pig-formatter/downloads/list