历史是无辜的

今天到吴山去了,回来的时候经过西湖。在六公园看到一个纪念沪淞会战的国民党军队的雕塑。两个士兵手握钢枪,准备战斗,四周是日军轰炸的炸弹。
看了简介,才知道这个雕像原建于30年代,后来于60年代被毁,最近才复原。看到这里,我心中又有所思了。

在我的记忆中,似乎很多东西都毁于那个动乱的年代。文物、古迹、建筑乃至法律、良心、知识和道德,似乎在一夜之间都被强奸了。孔子被称作孔老二,师长称为臭老九,执法者称为走资派,传统美德称为封建糟粕,而文化古迹则是封建制度的罪证!
于是新时期的“焚书坑儒”轰轰烈烈的开始了,想想当时秦始皇、希特勒扼杀文明的手段,形式上也不过如此:消灭一些异端的声音,肉体上和精神上的。只不过比那种直接用刀枪解决问题的方式文明了很多。称这场文化浩劫为“文化大革命”,的确蕴含着不少讽刺的意味。
我在想,中华民族能在五千年(其实更长,至少良褚文化是七千年)屹立于世界,最重要的原因是什么?中华民族的文明没有像埃及、巴比伦、希腊文明那样走向衰亡,反而能延续下来,并且发扬光大,分析其中原因,我认为最重要的是在于它的博大精深,在于它的兼收并蓄。

海纳百川,有容乃大。
试想中国历史上经历过多少次外族入侵?到头来,不是外族被赶回去,就是被吸收为中华民族的一部分。前者如匈奴、突厥,后者如女真满族、辽、蒙古,以及数不清的南蛮北。一个民族被征服,那么它应该从文化上被征服,一个民族被灭亡,那么它的文化应该被灭亡。从这点上看,可以说,中华民族从来没有真正的被征服过,它绝不会被灭亡。

中华民族的包容性是惊人的。各种思想、各种流派、各种宗教都可以在这里生存发展。春秋战国时期百家争鸣那般繁荣自不用提,且说中国的宗教,那也应该说是世界一绝。世界上大部分地区,信仰不同的宗教的人通常被称为异教徒,也就是敌人。看看世界简史,有多少战争是宗教引发的!不说历史上的基督教和伊斯兰教的十字军战争,基督教内部的清教与英国国教的斗争(复活节的起源就是与那些被迫害的清教徒有关),就说现在的印度、巴基斯坦分离就是因为信仰不同宗教的人的原因,而最HOT的反恐战争就是那些伊斯兰极端组织引起。
而反观中国,由于不同宗教引起的冲突很少,相反,到处可以看见不同宗教共存的现象。最有意思的是,前几天我到无锡的鼋头渚去,大陆的山上上有一座广福古寺,到太湖仙岛上去,又发现一个黄色道院玉皇宫,贡着玉皇大帝,而下面却是一座巨大的卧佛,这种道观和佛寺共存的现象并不鲜见。而基督教传入中国的时候,中国人也给予很宽容的态度,后来甚至还出现了拜上帝教!
正是这种包容世间万物的思想,使中华民族的文化兼收并蓄,不断吸收异族的精华。上下午千年,最盛之时应属汉唐。犯强汉者,虽远必伐。但是正是汉朝从西域引进了先进的冶金技术和良种马匹,才升级了汉军了装备,打败了匈奴。而唐宗时更不用说,从李白的诗中就能看出长安有多少胡人,而玄奘取经,也是明证。
相反到明清,这种思想愈见其衰。八股文造成的“士而优则仕”,清朝更是大兴文字狱。于是人的思想愈发讲话,到鸦片战争时还认为自己是天朝,称英国为英蛮,可见当时中国人的思想和见识多么肤浅!
从这点来说,我很赞成李敖称赞北约军阀,那时候至少还容许发出不同的声音,容许学生们举行游行抗议,容许不同政见的人管理北京大学。这是这样的气氛,我们才能讨论什么样的政体适合中国,什么样的思想适合中国,怎样才能救中国。这段时间,马克思主义、无政府主义,西方的各种学说各种主义都涌入中国,无论是学术还是实践,都开始活跃起来。如果不考虑政治斗争的你死我活,也许这些思想又可以在中国共存。谁说唯心论不可以在社会主义社会中存在?只要有人和人性,宗教和唯心论不可能消亡。谁说唯物论不可以在资本主义社会存在?只要有科学,就需要用唯物论解释。毕竟,哲学和政治是两件不同的事情。马克思最大的失误就是将马克思主义哲学、马克思主义经济学和马克思主义政治理论捆绑起来了。
历史上说延安整风运动团结了党内的同志,同一了党内的思想,很好,很成功。但从现在看,真的这么好吗?不见得。大家以前是从马克思经典著作中找语句作为自己说话作文的引证,现在却从毛泽东全集中找。红卫兵都带着“红本本”,报纸书籍上的文章必定有一段是出自《毛泽东全集》毛主席教育我们的黑体字,即使是纯科学的书籍也不例外,看看现在的朝鲜就能找到当时的影子。那个时候,大家的思想是高度统一,即便是稍有偏差,或是于大家不同,就会扣上各种不同的帽子,游街批斗关牛棚。也许在有些人看来,这的确是一场“文化大革命”,是思想的大统一,为社会主义建设创造了有利的条件。但是,君不见,中国几乎所有其他的思想都不见了吗?自己的儒教、佛教和道教都被称作封建主义的糟粕,西方的思想不称作资本主义糟粕,于是所有的宗教、所有的思想、所有的主义都销声匿迹了,剩下的只有马克思主义。
结果呢?有谁真正懂马克思主义,真正相信的马克思主义的人又有多少?少,太少了!现在中国有多少人是没有信仰,没有理想的?多,太多了!
即使是现在,改革了,开放了,但是这种包容的思想似乎还没有被当权者接受。就举今天我遇到这个事情来说,中共对于半个世纪前的那场战争还是不敢正视。有国外的学者说,这场抗日战争应该更名为“卫国战争”!但是,当局现在还不敢,应为这个“国”,是当时是国民党的国,而不是共产党的国。卫国战争的主力是国民党,而不是共产党。国民党牺牲的将军达数十人,而共产党只有一人,而此人也是在逃跑的时候被日军炸死的。面对这一切,我无语,中共也无语。至今,它也没有为这些同样是为了中华民族牺牲的将士做些什么。难道,左权是为抗日牺牲的,他们就不是?为什么要毁坏那座雕塑,难道那些淞沪会战阵亡的英灵就不值得人们景仰?

没有必要对国民党执政那段历史有什么避讳,议前朝之得失,纳其贤举,警其败处。正所谓,见贤思齐,见不贤而内自省焉。一个人,一个政党,乃至一个国家,只有懂得正视历史,才能够发展。希望中共和日本都认识到这一点。

包容中西文化,汲世界之精华,融世界之奇术,必定再现中华文化之璀璨。

包容那段历史,还历史以清白,还历史以真实,千万不要强奸我们判断力。

独自等待

今天看了《独自等待》,本来看到夏雨追李冰冰的情景,以为会是有情人终成眷属的结局,当看到他听说龚蓓苾暗恋他,心里就猜到冰冰姐姐就Game Over了,结果果然如此。但是没有想到的是夏雨并没有去追龚蓓苾。
这样的电影,说实话不是很好看。内容中选了好几个oooooooold的笑话,包括夏雨脱衣服的那场戏。而且剧情也与《将爱情进行到底》雷同。
说到《将爱情进行到底》,这的确可以说是一部很好的片子,至少是给我感动最多的电视剧。特别是徐静蕾演的文惠,清纯、可爱、高贵,太完美了,简直就是梦中情人啊。至于李亚鹏,这部戏可以说是他唯一没有被人诟病的戏了吧。
记得当时每看一集,都是感动一回,不知道为什么,可能是心有所触吧。也许是对文惠有好感,又或许是羡慕文惠那段爱情,总之我希望记忆永远停留在那个地方、那一秒。或许是因为当时感触太深了,我又是一个害怕伤情的人,所以再给我一次机会,我也许就不会看第二遍了。
当时我唯一不理解的是,为什么文惠不留下来,如果她能留下来,那该是多么美好的结局啊。现在我明白了,好的女孩总是想更好的发展,她们在伤害人或是被人伤害后,都会想到外面去,散心也好,逃避也好,追求真理也好,总之银幕上、现实中,她们的归宿往往就是国外的某所大学,然后加上遥不可期的约定或是根本没有什么约定。这也是我为什么更郁闷以及更深刻理解这电视剧的原因。
最后,和杨铮在一起的竟然是若彤,在当时的我看来是绝对不可理喻的,觉得导演和编剧在这一点上绝对是败笔。时至今日,我觉得自己真是少不经事。多年之后,发现哥们竟是爱自己的人;而她,竟然能将这份感情藏在心里,默默的付出!在这快餐爱情的今天,太难得了。最喜欢细细炖来的汤,炖得越长越好喝,而KFC和McDonald都是垃圾食品。
爱亦如此,爱如菜肴。浪漫如盛宴,而平淡如家常,一个人不可能一生都是山珍海味,也不会都是粗茶淡饭。懂得调节,才能活得更好,不是这么吗?

白堤

今天去西湖白堤了。武林门这个地方真的很好,位于市中心,而且离西湖只有两条街道远。从姐姐家出发,只过了十分钟就看到了开阔的湖面。
接下只需顺着白堤走就可以了。一路过去,风景倒是不少:断桥、平湖秋月、西冷印社,艺术馆和博物馆,都是免费的。不过除了三潭印月,它是在一个湖心的小岛上。需要坐船过去,船票加门票好几十块钱,抱着就是不付钱气死你的思想,我就没上去。反正以前已经去过一次,而且加上每次看到人民币一元的反面的那个三潭印月,应该不少于几十次了:)
这不禁想起了我用网络软件。平时我用这些软件的思想就是不花钱又好用。我用QQ聊天,因为它免费,我不用QQ秀、Q币,因为它要花钱;我开始时用卡巴,因为它不花钱,但是后来用金山,因为金山送了一套,而卡巴却又不免费了。幸好还有Linux,总算不用这么折腾了;至于网游,除了浩方的CS,其他都不玩,一是感兴趣,而是浩方Free的。所以至今除了交网费,我还没有在网络软件上花过钱!真佩服自己。
话说回来,不花钱游西湖还是挺有意思的,这两天的西湖总是沉着一层雾,远处的山也只能看到一个大概。站在白堤,放眼望去,好似一副巨大的宽卷国画。
画卷的右边,那是绝佳的传统山水画,正是艺术馆中正在展出的黄宾虹的山水画那种味道。看完他的画展,只感叹国画还能这么画,不少画中都用了浓墨、密墨,近看是一团黑点,远看起来却是一幅十分大气的山水,真的是另一种情趣。其中有些画还是他在九十岁的高龄,患有白内障的情况下,挥墨而成的!
山水画的另一边,却是另一幅画面。这幅画面下方是湖色涟涟,而往上则是高楼林立,一切在淡淡的雾色中祛了三分本色,只存了一层黑白的水墨。我纳闷,怎么没有一个山水画家画出这一切美景?在杭州,难道楼厦、山色和湖光的结合不是绝美的风景吗?
一个人游玩,跟随着的是自己的心情和思绪,而不是别人的脚步,所以每次都会有一些新的发现。今天,我找到了仅在地图上曾经看到过而没有亲历的地方。意外的,我在白堤的尽头找到了苏小小的墓,那是在西泠桥西北侧桥脚边一座六角攒尖亭——慕才亭内,里面就是苏小小墓。

苏小小者,南齐时钱塘名妓也。貌绝青楼,才空士类,当时莫不艳称。以年少早卒,葬于西泠之坞。芳魂不殁,往往花间出现。

妾乘油壁车,郎骑青骢马。何处结同心,西泠松柏下。
这首诗描绘了当时小小与书生阮郁有着刻骨铭心的爱情,实在让人羡慕。
可惜天妒红颜,一年之后,小小因等郎君,犯了风寒,病情日见沉重,卧床不起。相传临终前,她向身边侍候的人嘱咐道:“我生于西冷,死于西冷, 埋骨于西冷,庶不负我苏小小山水之痛。”说毕,奄然而逝。人们遵照苏小小“埋骨西冷”的遗愿,在西岸桥畔择地造墓,墓前立一石碑,上题“钱唐苏小小之墓”。后人又在墓上建亭,亭名“慕才亭”。
此墓几经破坏和复修尽管没有她的芳骨,但是见到那在亭子里的冢,以及在亭外桥下围着的人群,还有亭柱上刻着国内十余位著名书法家书写的12副楹联,不难看出在人们的心里还是存着对这位江南名妓怜爱和叹息。
也许是西子湖太吸引人了,每个人来过这里,都有一种想寄体付山水的冲动。岳飞、武松、秋瑾、于谦、章太炎、张苍水、盖叫天的墓都在此地。真是青山有幸埋忠骨,白铁无辜铸佞臣。

Debian的字体

有时候心血来潮什么事情都可能做。好好的系统,说重装就重装了。原因我也说不清。可能是因为最近心情比较放松,也比较无聊吧。
但是事实证明我是错的,Debian的testing真的没有stable好用。反复装了三次,系统终于搞定了。

当然今天也不全是令人沮丧的事,至少我把Debian的字体搞定了。我在没有预装任何中文字体的前提下,安装Windows的字体。具体参照: 如何使用xp带的字体来进行中文美化?
BTW,Ubuntu的中文化这个页面十分值得一看。毕竟他和Debian同出一家,有很多都互通的。http://www.ubuntu.org.cn/support/documentation/zhfaq

看看我的Debian,效果怎么样?

Debian Chineselization

桐乡,已不是那个桐乡了……

在回家的车上就听说了桐乡又开了两家大的超市,而且是在离市中心很远的地方。我不禁问,开得这么远,顾客怎么回来呢?其实,后来我才知道,桐乡已经不再是那个“碗口梧桐镇”了,已经扩大了十倍以上,所以那几个超市的客源应该不会差。

每次回家,我都在想,这是我去年住的那个小镇吗?似乎还有一些往日的痕迹,但是新的元素到处都是,似乎至少一半的楼房是新建的,一般的街道是新修的。

这几年回家总觉得有点怪怪的 ,经过反复观察和反省,终于明白了——原来是大家说的话。在我在桐乡的十几年中,周围的人的口音都是一致的。江南的方言就是这样:每一个镇,每一个乡,甚至每一个村都带有不同的口音,你和一个人交谈三句话,就能判断这个人是乌镇的,还是崇福的,还是梧桐镇的,更不用说是什么杭州或上海了。我本人对这些倒不怎么感冒,爷爷有一口浓浓的山东口音,奶奶有淡淡的濮院口音,我就是在这种环境中生长的。但是,这个环境似乎这几年突然变大了。第一,只觉得街上的桐乡话似乎相当边缘化了,许多是桐乡其他地方的口音,似乎有一点不习惯,但是慢慢的会好起来的。我在北大不是也遇到超过60%的非北京人吗?第二,大家似乎都说起普通话来了。超市是最明显的,买食物的服务员、看门的门卫,都说普通话,尽管我听起来听别扭(江南的话里常常带有“的来”,“的呀”什么结语词,我听起来是在受不了)。
结果问题是,我不想先和别人说话,因为我不知道他会哪门语言。今天我去菜市场,到处都是方言,很熟悉,但是听起来耳朵很“痒”,那种感觉真的很有意思。

桐乡地方大了,楼房高了,人也多了。对于它,我也似乎更陌生了,抑或,更熟悉了?

好好笑啊

同学在群里发的,这么好笑的不能这么丢了!
1。下雨了,别忘了打伞,湿身是小事,淋病就麻烦大了!
2。丑,但是丑的特别,也就是特别的丑。
3.天使之所以会飞,是因为她们把自己看得很轻~~~
4.兔子急了也口交人。
5.我:我的第一个问题是,对於我第二个和第三个问题,你可不可以只用‘能’和‘不能’来回答?mm:可以啊!
我:我的第二个问题是,如果我的第三个问题是你能不能做我的女朋友,那麽你对於我的第三个问题的答案能不能和第二个问题的答案一样?mm:·#¥%……―*()
6.把你小弟弟砍了数年轮。
7.人生没有彩排,每天都是现场直播!
8.不要以为把JJ插到地上就以为在强*整个地球!
9.如果只有300W,大家说是买奔驰好还是法拉利好呀.回:最好买300辆二手奥托,再雇300个司机,让他们跟在你后面开,一会排成S,一会排成B
10.给我一部A片,我可以翘起三个地球.
11.我终身奋斗的最低革命纲领:农妇――山泉――有点儿田。
12.这个世界,除了猪,谁还在快乐着?(此地严禁大小便,违者没收工具–我***唾你一脸**爱――不是想出来的,爱――是做出来的!!
13.再过二十年,我们来相会,送到火葬场,全部烧成灰,你一堆,我一堆,谁也不认识谁,全部送到农村做化肥。啊亲爱的朋友们,到底谁先被烧成灰?先烧你,先烧我?反正都是不齿人类的**堆!!!
14.一个消化不良的病人向医生抱怨:我近来很不正常,吃什么拉什么,吃黄瓜拉黄瓜,吃西瓜拉西瓜,怎样才能恢复正常呢?医生沉默片刻,那你只能吃屎了。
15.昨天梦见上帝他说可以满足我一个愿望,我拿出地球仪说要世界和平,他说太难了换一个吧,我拿出你的照片说要这人变漂亮。他沉思了一下说拿地球仪我再看看.
16.老鼠:我现在正和蝙蝠谈恋爱,以后孩子们就生活在空中,不怕你们猫了。猫冷笑一声,指着树上的猫头鹰说:看见没有,她已经怀上我的孩子了!
17.“服务员,请把这块石头从我碗里抬出去,好吗?“
18.瞎子骑车带结巴,结巴看路,忽见深沟,结巴惊呼:沟沟沟!!!瞎子回唱道:“噢勒噢勒噢勒!“于是二人坠入沟中
19.站在高楼下,内心一阵悲凉,脸上也湿润了,有点咸咸的味道,是雨水还是泪水?抬头望天空……**,谁在楼上撒尿!
20.春天,我把老公埋在地底下,秋天,我就有好多老公……

PHP的编码转换的问题

今天准备将IP Search添加到Blog中,结果发现一个问题:纯真数据库使用了gb2312编码,而wordpress用的是utf-8编码。页面显示的是乱码,所以需要找到一个办法在PHP中实现两种编码的互转。

看看PHP Manual,似乎PHP没有像.Net那样专门提供一个Encoding的类,所以只能用其他方法了。网上的方法有两种:

第一种是使用iconv 函数。例如, 下面的例子是利用php将”全”这中编码转换为gb2312.:

[coolcode lang=”php”]
$str = “TTL全天候自动聚焦”;
$str = preg_replace(“|&#([0-9]{1,5});|”, “”.u2utf82gb(\1).””, $str);
$str = “$str=”$str”;”;

eval($str);
echo $str;

function u2utf82gb($c){
$str=””;
if ($c < 0x80) {
$str.=$c;
} else if ($c < 0x800) {
$str.=chr(0xC0 | $c>>6);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x10000) {
$str.=chr(0xE0 | $c>>12);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x200000) {
$str.=chr(0xF0 | $c>>18);
$str.=chr(0x80 | $c>>12 & 0x3F);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
}
return iconv(‘UTF-8’, ‘GB2312’, $str);
}
?>
[/coolcode]
第二种是使用JavaScript实现的,例如:

[coolcode lang=”javascript”]
string utfinfo = “document.write(“alert(‘aa你好么??’);”);”;
string gb2312info = string.Empty;
Encoding utf8 = Encoding.UTF8;
Encoding gb2312 = Encoding.GetEncoding(“gb2312”);
// Convert the string into a byte[].
byte[] unicodeBytes = utf8.GetBytes(utfinfo);
// Perform the conversion from one encoding to the other.
byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);
// Convert the new byte[] into a char[] and then into a string.
// This is a slightly different approach to converting to illustrate
// the use of GetCharCount/GetChars.
char[] asciiChars = new char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
gb2312info = new string(asciiChars);
[/coolcode]

但是上面两种方法的缺点就是太繁了, 其实我们可以使用autogb来完成转化的工作。由于它是对于文件进行操作的,所以我们需要两个临时文件。代码如下:
[coolcode lang=”php”]
$fd=fopen(“/tmp/.marvel01″,”w”);
fwrite($fd, $gbstring);
fclose($fd);
`autogb -i gb -o utf8 /tmp/.marvel02`;
$fd=fopen(“/tmp/.marvel02″,”r”);
echo fgets($fd, 1024);
fclose($fd);
[/coolcode]

这样,我们就能将一个gb2312的字符串转化为utf-8的字符串。这里最需要注意的是程序的安全性,不要给别人任何bug可以利用的。当然 ,你还需要下载autogb这个工具。

满满长夜

火车上的第二天,理论上我已经忍了17个小时了,超过了整个行程的一半,更重要的是,我已经熬过了最难熬的时刻——晚上。漫漫长夜,无心睡眠,内心的悸动加上外界的喧闹,睡觉已经成为了一种奢望。我从晚上十点,尝试了各种不同的睡姿,比较各种姿势的优缺点,最后发现在这该死的火车上,根本就没有所谓的最好的睡姿。所以最后我就睡了大约两个小时低质量的觉。
现在已经是凌晨五点多了,外面还是漆黑一片,冬天的太阳总是那样怠工。写到这里,先给一个中断信号,买早餐的阿姨看见我正在写blog(首先,我个人认为她并不知道什么叫blog,但是不出意外的话应该知道日记,其实概念上两者是等价的;其次,她应该是看到我用的纸才停下的——我的纸是上次在北大买的,有很醒目的“北京大学”的logo)。我问我复旦、上交、浙大和同济的排名,说实话,我对这种排名并不感兴趣,前几天还出炉了一个什么最受尊敬的大学排名,结果Top10中有七个是北京的,还有一个是兰大。不是我的偏见,但正如评论说的那样,鬼知道这种排名背后的东西!但至于阿姨的问题,我回答,如果你能去这几所大学的话,唯一要考虑的几句是专业了,的确是这样,在一所大学中(北大清华除外),好专业和烂专业有天壤之别,这在找工作的时候尤为明显,人家就招专业对口的,毕竟宝洁这种重视自身素质的公司还是少数。
说道这个阿姨,还真是K58上的一道风景,每次来回卖盒饭的时候,总是吆喝:好吃的盒饭,贼好吃的盒饭;小姑娘,你看车外多冷,吃完盒饭出去多好!最后一趟,菜往死里打!……搞的我们在背地里抓狂。
中断返回,一眨眼,火车已经停在了德州,当然不是德克萨斯:)而是盛产烧鸡的中国德州。提到烧鸡,现在我应该是很饿——饿到极点也就不觉得饿了——但是好像没有什么胃口。今晚,会有一顿美餐等着我,这也是为什么回家的重要原因之一。尽管我告诉妈妈搞简单一点,不想让她今天太忙了,但是直觉告诉我,老妈必然会准备我的最爱——可能有些东西我也不知道什么时候成了我的最爱了——比如说是小肥羊。
这里说明三点,第一,其实我当时想的是红烧肉,事实证明老妈果然带了红烧肉!第二,小肥羊是我在哈尔滨fall in love的,但是没有想到后来我竟然发现桐乡开了至少两家小肥羊。第三,在打这篇文章的准确时间是8 Jan 8:15pm,这个时候正是我吃完牛肉煲之后的一个小时左右,在一个小时以前,我正式地喜欢上了牛肉煲这种东西。实在是很好吃:)

此党非彼党

列车始终在颠簸,尽管在夜间还是如此,我的心也有点颠簸了。下午,老童打电话过来,这种事情没有先例,所以即使是长途加漫游也忍了。但是他的话还是没有听懂,好象是关于宋老师的,说是明天QQ上再聊;祸不单行,我的按摩器也忘了带回来了,郁闷中……
在火车上的时光总是异常无聊的,以至无聊地让你不知道该做什么事,因为做任意一件事的后果还是无聊。实在无聊了,就去注意平时都不会注意的东西,刚才听到乘警介绍,注意到一句话:我们一定会忠于党,忠于国家,忠于人民,忠于法律。听到这句话,心里便有一丝涟漪。
最近看了一些西方的电影,发现他们的价值观就是自由,其他的民主、国家、人民还有法律都是基于自由构建的。美国独立战争是为了是十三个殖民地获得自由,美国的Cival War是为了几百万黑奴的自由,而我更忘不了华莱士的那一声“Freedom……”的呐喊。似乎对于西方人,自由也是他们的基本生存权力。
而所谓的“党”,在我看来,只不过是一种制度,或者说是一种国家机器。在中国,“忠于党,忠于人民”已经成为了一种习惯用语,习惯地如果没有人会将两者颠倒一下。在西方一个人可以随意的加入任何一个政党,对于他们,自然不会理解为什么党比人民重要。前几天刚刚听了何清涟的“三个代表”论,的确给人一种震撼。她说,为什么搞三个代表?为什么代表先进生产力,为什么代表先进文化,为什么代表最广大人民的根本利益?因为最广大人民的利益是党一直提的,重要的前两者,人民是不能代表先进生产力和先进文化的,代表它们的只能是政治和经济上的精英,换句话说,就是统治阶级和有钱人。那么忠于党,忠于人民就成了忠于统治阶级,忠于人民了,which makes sense。
相比于君主们,党是聪明的,因为他们发明了“党”这个东西。君主们要维护自己的统治,就要管住百姓的大脑。于是他们想各种办法,最简单的就是愚民政策,焚书坑儒,文字狱,让自己的臣民成为只会说话的机器。但是人毕竟不是机器,这种手段的效果在现在已经大大减小了。还有的君主借用了某种学说,废黜百家,独尊儒教是一种,五斗米道教,拜上帝教也算一种(我从不认为洪秀全是什么农民起义者,他也只不过是一个梦想作皇帝的人而已,中国的思想程度不可能使他变成民主斗士),但是他们都失败了,因为这些学说都不是为他们量身定做的。其中最好的算是儒教,但是那也是因为朱熹将儒教改编之后,让所有人学习他的八股文,这样才满足统治者的要求。所以在中国出现了,对于广大的庶民,基本上是文盲,而对于士大夫,有全部苦心钻研八股。即使这两部分实现了分而治之,但是出现了两种价值观、两种国家观和两种法律观。大夫认为,国家兴亡,匹夫有责;匹夫认为,谁给我饭吃,谁就是我的皇帝。大夫认为,礼不下庶人,刑不及大夫;庶人认为,皇子犯法,于庶民同罪。对于大夫来说,最重要的是道、是皇帝;对于庶民来说,最重要的是米、是生活。正因为这样,清军入关后,士大夫组织了义军,因为北蛮犯境,国家在危难之中;而后来,当清朝要求汉人剃发,这就引起了汉族不同平民的起义,导致了骇人听闻的“嘉定三屠”和“扬州十日”,因为满族人改变了他们的生活习惯,宁可落头也不落发。这就是两种价值观的体现,这也是中国的不安定的因素。在民国,一方面,外侮之下,精英们准备实业报国、军事报国,而另一方面,百姓们入不敷出,于是开始造反,所以有了“攘外必先安内”的政策。
在这方面,党就英明神武多了,他自我定位于全民的党。于是在共产主义的简体中文版中,上述的bug似乎完美地解决了,全民共享一个马克思主义。更重要的是,党将这种思想融入到他的日常活动,甚至是国家决策中,这就是我为什么说党是一中制度的原因。党大会总比全国代表大会重要。从这点上说,中国有点想政教合一的伊朗、梵蒂冈,马克思主义何尝不是一种宗教呢?共产主义和天堂有什么本质的区别吗?它们都是遥不可及。马恩毛列与上帝有什么区别吗?红卫兵对毛的虔诚连基督徒都自叹不如;人们开玩笑说自己死就是去见马克思。马克思全集和圣经有什么区别吗?党的理论学家对全集经典的熟悉和“创新”连神学院的教授也未必能及。
所以,永远不要和外国人谈党,因为你们在说两个风马牛不相及的东西。

Compile Linux Module

在学习内核的时候总是有一种在学习理论的感觉。应该很多东西都实验不了。比如说内核的寄存器、全局变量等等。像内核空间的地址在正常的用户空间就根本接触不到。

但是当我看到了Linux的模块的时候,我发现这个问题解决了!我们完全可以通过插入一个自定义的模块来了解内核态的情况。

于是,今天依样画葫芦写了一个helloworld的模块。代码如下:

hello.c

[coolcode lang=”cpp”]
#include “linux/init.h”
#include “linux/module.h”
MODULE_LICENSE(“GPL”);
static int hello_init(void)
{
printk(“Hello,world!n”);
return 0;
}
static void hello_exit(void)
{
printk(“Good Bye!Exit!n”);
}
module_init(hello_init);
module_exit(hello_exit);
[/coolcode]

Makefile:
[coolcode]
obj-m += hello.o
default:
make -C /usr/src/linux SUBDIRS=$(PWD) modules
clean:
rm -f .*.cmd *.mod.c *.o *.ko -r .tmp*
[/coolcode]
很奇怪的Makefile,不是吗?当然,这个是2.6内核专用的。
更奇怪的是,我make的时候出了好多错:

make -C /lib/modules/2.6.8-2-686-smp/build/ SUBDIRS=/home/marvel/programming/module modules
make[1]: Entering directory `/usr/src/kernel-source-2.6.8′
CC [M] /home/marvel/programming/module/hello.o
In file included from include/linux/init.h:4,
from /home/marvel/programming/module/hello.c:1:
include/linux/config.h:4:28: error: linux/autoconf.h: 没有那个文件或目录
In file included from include/linux/module.h:10,
from /home/marvel/programming/module/hello.c:2:

没有找到autoconf.h,这个可是源码包,怎么会少文件呢?郁闷……

尝试直接gcc -c hello.c,错误更多:

In file included from /usr/include/linux/sched.h:12,
from /usr/include/linux/module.h:10,
from hello.c:2:
/usr/include/linux/jiffies.h:84: error: syntax error before ‘jiffies_64’
/usr/include/linux/jiffies.h:88: error: syntax error before ‘get_jiffies_64’
/usr/include/linux/jiffies.h: In function ‘timespec_to_jiffies’:
/usr/include/linux/jiffies.h:320: error: called object ‘u64’ is not a function
/usr/include/linux/jiffies.h:320: error: called object ‘u64’ is not a function
/usr/include/linux/jiffies.h:320: error: ‘NSEC_PER_SEC’ undeclared (first use in this function)
/usr/include/linux/jiffies.h:320: error: (Each undeclared identifier is reported only once
/usr/include/linux/jiffies.h:320: error: for each function it appears in.)
/usr/include/linux/jiffies.h:321: error: called object ‘u64’ is not a function
/usr/include/linux/jiffies.h:321: error: called object ‘u64’ is not a function

Linuxsir上寻找帮助无果,只能自己动手。先从/usr/include/linux/下复制一个autoconf.h文件过来,然后将asm-i386建立一个asm的链接(其实那一堆错误还有没有找到asm/下的文件)。这样似乎大体可以了,但是最后说什么缺少script/basic/下的一个可执行文件。很明显了,这个文件需要在编译内核的时候生成。

不管怎么样,先重新编译一个内核试一试。没想到编译到一半,make居然成功了。 :)

后来分析了一下 ,我认为原因是这样的。#include的init.h文件就在/usr/src/linux/include/linux目录下,但是这个目录开始的时候没有autoconf.h这个文件,它应该是在编译之前自动生成的,而asm也是自动建立的。至于那个可执行文件,当然是编译中间生成的啦。

事实上,这些文件是在make  [menu|x]config 的时候生成的。理论上内核2.6有结构树,所以不需要编译整个内核,当然你可以试一试编译内核,之后make-kpkg clean就可以了。