Richard Stallman 的时代何时结束? Eric Raymond 的时代何时到来?

July 6th, 2009 / 2 Comments » / by SteamedFish

先讲三件事情

—-
还记得两年前的时候,在一次课堂上,老师向我们说,他的妻子是个女权主义者。所有的人都愣了一下,然后一片哄笑,然后纷纷对老师表示同情。

我从来没有亲眼见过一个女权主义者,而那次是我唯一一次听说这个世界上有真实的女权主义者。女权主义者,现在已经成了稀有动物。而且在人们的眼中,它俨然已经变成了一个贬义词,和理想主义者,苦行僧,偏执狂,极端分子等联系在一起。

而如果放在50年前,我相信,老师的妻子根本就不会被认为是一个女权主义者。因为,她结婚了。在50年前,结婚绝对是对女权主义的巨大背叛,是会遭到唾骂的。

50年前根本就不会被认为是女权主义的人在现在被认为是女权主义的极端分子,伴随着这一改变,妇女解放运动获得了巨大的成功。

—-
还记得更早的时候,我在班里推广 Firefox. 我说, Firefox 是个不错的浏览器。大家的回应一般都是一个“哦”,然后继续埋头打他们的魔兽。我不得不给 Firefox 套上一堆高帽子,什么自由,快速,安全…… 才能吸引到大家的注意,让大家行动起来,尝试着去装一个 Firefox, 来发现 Firefox 尽管没有我吹嘘的那么好,但我的吹嘘毕竟不算是空穴来风。而 IE 则被我上纲上线,使用 IE 简直就被我视为是邪恶的行为。

但我已经早已不做 Firefox 的传教者了。这年月,连大部分完全电脑白痴的女生都安装了 Firefox, 说不定还设置成了默认浏览器,我甚至听到一个稍微懂点电脑的40岁大叔告诉我 Firefox 比 IE 好用。这个时候,我就和一个普通人一样,一边抱怨着自己所用的浏览器的种种问题,一边继续用它,并且对别人用任何浏览器都无动于衷,爱用啥用啥。

—-
不久之前,认识了一个美国人,他自称使用计算机超过30年。跟他的交流是愉快的,毕竟一般人到中年,都多多少少变得温文尔雅宽容大度,直到我谈到我用 Linux. 他突然变得像个20出头的小愤青,激动地大谈 Linux 的种种不足,以及为什么要用 UNIX 而不是 Linux, Linux 爱好者都如何如何如何,全然不顾我的感受。事实上我内心里面承认他的话多多少少是有些道理的,然而我仍然继续使用 Linux, 因为他更好用。

然后开始正题

当你发现你自己没有话语权的时候,想争夺话语权的唯一武器就是极端主义。这就是为什么历史上所有的运动,都是以绝对的极端主义来开头的,女权主义,黑人民权运动,资本主义,共产主义,纳粹主义,无不是如此。当没有人知道你说出去的那个名词的含义,或者就算罕有地知道含义但是也不当回事的时候,你必须用极端主义来吸引别人的注意,取得话语权,试图吸引理想主义者替你宣传。不管理性主义者如何鄙视,没有那些极端分子,这些运动根本就无从开始,更别提成功。

但极端主义不能持久,因为他毕竟是极端主义。死守极端主义,只能落到纳粹或者红色高棉那样的下场。当运动已经成功,理性主义必将回归。

前几天跟 modestoften 聊天。他是属于那种这年月典型的青年男性大学生知识分子:出于好奇在电脑里面装了个 Ubuntu, 但是主要还是在用 Windows. 听说过 Linus Torvalds 的大名但完全不知道他的思想,而比较熟悉和佩服 Richard Stallman, 从未听说过 Eric Raymond 的大名。

而 Richad Stallman 就是典型的极端主义者,苦行僧,偏执狂。相对于他, Eric Raymond 和 Linus Torvalds 则可以代表理性主义,虽然他俩受到话语权缺失的限制多多少少也会有那么一点愤青。Eric Raymond 一直在从理性主义的角度分析为什么开源运动所描述的前景并非像共产主义那样是一个纯粹的乌托邦,而是一个可以到达的,不那么美好但是比现在美好的世界。但是,没人听说过他的名字。

这说明,开源运动,经过25年,仍然需要靠着极端主义来吸引注意力,仍然未能成功。

当然,人们永远可以寄希望于下一代,希望年轻人能够接受新的思想,而老人则纷纷老去。 UNIX 就是这样被 Linux 打败的。但是,像我或者 modestoften 的人,在下一代之中的比例并不大。与此同时, Richard Stallman, Eric Raymond, Linus_Torvalds, 都在老去。

(发现正题比开篇的那三段话短)

苏州园林卡

July 5th, 2009 / 3 Comments » / by SteamedFish

办了苏州园林卡。一年之内有效。可以去以下地方。
持续更新中。

师惠坊的交通明显比东港新村方便啊。。。

虎丘:
在 东港新村 坐 40路/800路/89路/9路 到 苏大北校区/相门 换乘 146路 到 虎丘
从师惠坊坐146路到虎丘

拙政园,狮子林:
在 东港新村 坐 10路/142路/156路/158路/162路/219路/26路/78路/800路/818路/89路/9路 到 苏安新村 换乘 313路 到 拙政园
在 东港新村 坐 10路/142路/219路/26路/56路 到 官渎里立交桥 换乘 262路/923路 到 苏州博物馆(拙政园、狮子林)
在 东港新村 坐 40路 到 北园新村
在 师惠坊 坐 518路(约9站) 到 苏州博物馆(拙政园、狮子林) 下

留园:
在 东港新村 坐 40路 到 西园路东 然后步行或者换 933路
在东港新村 步行到日规路 坐 70路(约15站) 到 留园路 下
在 师惠坊 坐 47路 到 三元坊 换乘 933路 到 留园

网师园:
在 东港新村 坐 10路/3路/56路/78路 到 苏大东校区 换乘 47路 到 网师园
在 师惠坊 坐 47路(约9站) 到 网师园 下

沧浪亭:
在 东港新村 坐 40路 到 双塔 换乘 309路 到 工人文化宫
在 师惠坊 坐 47路 到 三元坊 换乘 102路/1路/308路/309路/933路/游2路 到 工人文化宫

艺圃,五峰园:
在 东港新村 坐 10路/219路/26路/56路/812路 到 齐门北 换乘 31路/54路 到 阊门横街
在 师惠坊 坐 518路 到 醋坊桥观前街东 换乘 501路 到 阊门横街

藕园,东园,动物园:
在 东港新村 坐 40路 到 娄门 步行或者 换乘 301路/305路 到 东园
在 师惠坊 坐 146路 到 景德路 换乘 305路 到 东园

怡园:
在 东港新村 坐 800路(约6站)/9路(约6站) 到 乐桥 下
在 师惠坊 坐 146路(约11站) 到 乐桥 下

天平山:
在 东港新村 坐 10路/3路/56路 到 机场路西/杨枝塘东 换乘 4路 到 天平山
在 师惠坊北 坐 4路(约34站) 到 天平山 下

枫桥:
在 东港新村 坐 10路(约15站)/9路(约15站)/40路(约20站) 到 来凤桥 下
在 师惠坊 坐 146路 到 市一中/乐桥/养育巷 换乘 9路 到 来凤桥

余庄(地图上找不到,怀疑是天镜阁),石佛寺,楞伽塔,上方山:
在 东港新村 坐 40路/89路 到 会议中心 换乘 318路/602路 到 湖畔佳苑
在 师惠坊 坐 47路 到 苏州卫生学校北 步行
在 师惠坊 坐 47路 到 学府花苑 换乘 306路/318路/505路/602路 到 湖畔佳苑

GeekCook and HelloTee

June 28th, 2009 / 9 Comments » / by SteamedFish

好吧,这是一篇软文。不喜欢软文者请自觉退散。(其实,这篇文章写得很有罪恶感。唉。。。)

虽然说个性T恤这个东西其实已经流行到大家都已经腻了的程度,我也算是见过不少,但是给我留下深刻印象的并不多。但是 Hello, Tee!GeekCook 这两家让我眼前一亮,少有的让我产生了购买的冲动,而且每件都想买(从来没有发现我这么贪婪过)(今天又发现了一个 Da Code 也还不错)。

至于我为什么我要为他们写软文,这当然是为了钱了(废话,哪有软文不是为了钱的)。这两家都提供这样的服务:如果你在博客中为他们写软文,他们将免去运费。具体详情请看这里这里。只用写一篇文章就可以省下十几块钱,而且这个文章还不算违心而写,这可比当五毛划算多了。

相对来说, Hello, Tee! 的T恤比较感性,而 GookCook 的T恤比较理性。作为一个感性的人,我喜欢 Hello, Tee! 的T恤更多一点。不过 Hello, Tee! 的人大概是感性过头了,理性稍微缺了一点,竟然要我的软文写成”买 Tee 感言“。 OMG, 难道我必须先付那运费把 Tee 买了,才能写出买 Tee 感言,然后他们再想方设法把我的运费给我退回来?我觉得他们应该不是这个意思,如果他们还没有疯的话。

可惜的是,这两家店都是开在淘宝上的。作为一个已经23岁的老人,我已经落伍了,跟不上时代了,从来没有用过淘宝。今天在好友的帮助之下花了整整一个小时研究淘宝怎么用,总算是稍微入了一点门。然后又花了半个小时研究支付宝怎么用,发现想要激活支付宝帐号必须提供身份证号。 OMG, 我不过买件T恤竟然还得向我不信任的阿里巴巴提供身份证号?我决定不干,于是支付宝激活失败。现在正在研究如何在支付宝没有激活的状态下买东西中。

另外,听说支付宝需要和网上银行配合使用?我现在用的中国银行的网上银行貌似不支持 Linux, 而我根本就没有 Windows. 难道为了买件T恤去办张浦发银行的银行卡?

发现我的买 Tee 计划的面前有着无数障碍啊。说不定,我这篇软文就只有白写了。

Anyway, 按照软文要求,贴图先。

Break the GFW

Break the GFW

Blue is Not My Color

Blue is Not My Color

TITANIC sank inside me

TITANIC sank inside me

爱钱,但讨厌五毛

爱钱,但讨厌五毛

林肯

林肯

自然对数

自然对数

熬夜

June 27th, 2009 / No Comments » / by SteamedFish

最近一阵子,实在是糟糕的日子,事事不顺。工作上被一堆事情搞得心烦意乱,一个简单到不能再简单的项目被我一拖再拖,让我很有挫败感。心理上最近被几个大脑中的逻辑炸弹所困扰(发现我的公理系统不是自恰的,而引发了悖论。而修改其中的任何一条公理,例如我的某某好友不会骗我,都绝对是痛苦的),费劲心机终于部分解决了(苦思几天之后,对我的公理系统做了一处细微的还算可以接受的调整,似乎解决了矛盾,不过还需要进一步论证)。生活上,今天(噢,应该是昨天了)由于心烦意乱,决心把我的房子好好收拾一遍,于是在拖地的时候不留神扭了左膝,又在修我的桌子的时候不慎磕伤了右腿,好在都不严重,但是严重干扰了我去办苏州园林卡的计划。

现在,我又被迫熬夜。我已经不记得我上次熬夜是什么时候了。

作为曾经的夜猫子,我现在讨厌熬夜。原因很简单,在大学的时候我可以做到每天白天睡觉晚上活动,但是工作之后上班上白班,熬夜会带来严重的时差问题,而我并不愿意上班的时候迷迷糊糊哈欠连天,因为这种状态下我基本上没有办法工作。

所以,我现在的熬夜绝对是无奈之举。

做 IT 的人,很容易对某样东西上瘾,最常见的就是熬夜瘾和烟瘾。我算是比较好的一个:我不抽烟,工作之后戒掉了熬夜瘾,戒掉了咖啡瘾,目前又准备开始戒我对冰可乐的瘾。戒的原因自然是不喜欢,我从来就没有觉得咖啡或者冰可乐好喝过,我也就是觉得它们不是难以下咽而已。这些所有的瘾的作用,一般都不是为了物质上的愉悦,而是为了能够集中注意力。

如果一个做 IT 的人告诉你他无法集中注意力,那么他的语调一定是悲伤的,大概就和一个歌手说他嗓子哑了,或者一个 NBA 球员说他伤了膝盖:他无法工作了。为了防止这种恐怖糟糕的事情的发生,歌手们要多吃金嗓子喉宝, NBA 球员要多冰敷,而 IT 民工就只好多犯犯自己的瘾了。

IT 是这样的一种工作,它并不需要你有一个非常强劲的 CPU (我的 CPU 很烂,平均水平以下,竟然还能搞得动 IT ),也不需要有一个强劲的硬盘,却需要有大量的内存来存储中间状态。由于它占用的内存实在太多,对于像我这样的内存不够多的普通人,不但保存中间状态对进程进行时间分片过于不现实,导致 CPU 完全没有多任务并行处理能力,而且甚至连维护一个额外的堆栈来存储 todo list 都是一件过于奢侈的事情。于是乎,由于被其他需要占用内存的事情打断造成堆栈溢出导致大脑 segmentation fault, 成了经常需要面对的问题。这就是为什么通常搞 IT 的人都非常需要集中注意力,不能受到任何干扰的原因。

不过搞 IT 的人,在注意力方面经验都非常的丰富。在我发现我无法集中注意力的时候,可以立刻禁止新进程的创建,同时比较迅速的在大脑中进行内存优化, kill 掉不重要的进程以节省资源,将部分内存移入硬盘,等等。可是最近几天,我甚至连大脑中跟美女打交道的进程都被我直接 kill 掉了(这个进程开了 N 多子进程,占了我无数内存和 CPU, 我发 SIGTERM 竟然不管用, hang 在那里了,一怒之下发了 SIGKILL, 没保存任何中间状态 ),竟然还是不管用,大脑天天 segmentation fault 到快要死机了。那就只能引入终极杀招:熬夜了。

为什么说熬夜是终极杀招呢?因为集中注意力的三大要素:黑,静,冷,熬夜占了两条。在苏州的夏天,冷实在是太过奢侈的一件东西,所以能达成另外两条已经可以说是近乎完美的了。

现在我需要做的一件事情,就是 kill 掉我写 blog 的进程,然后,好好工作^_^。

关于中国某些地区仍然无法连接 google 的分析

June 25th, 2009 / 2 Comments » / by SteamedFish

叫全国几个地区的朋友帮我做了测试,其结果是类似的,那就是 dig www.l.google.com 的结果和 dig +trace www.l.google.com 的结果不一样,前者得到的 IP 被 GFW 而后者得到的 IP 可以访问。

现在我倾向于认为,在 google 发现自己的 IP 被 GFW 之后更换了 IP 地址,但是其 DNS 的更改没有在第一时间 fully propagate, 导致部分地区可上而部分地区不能。

解决方法:
1. 换用 opendns
2. 等待 DNS 的 fully propagate

有任何新的发现我将第一时间更新。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[^_^:~]dig www.google.com                                                                                                 
 
; < <>> DiG 9.6.0-P1 < <>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 44827
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 7, ADDITIONAL: 1
 
;; QUESTION SECTION:
;www.google.com.                        IN      A
 
;; ANSWER SECTION:
www.google.com.         599685  IN      CNAME   www.l.google.com.
www.l.google.com.       36775   IN      A       216.234.179.13
 
;; AUTHORITY SECTION:
l.google.com.           5579    IN      NS      a.l.google.com.
l.google.com.           5579    IN      NS      b.l.google.com.
l.google.com.           5579    IN      NS      d.l.google.com.
l.google.com.           5579    IN      NS      e.l.google.com.
l.google.com.           5579    IN      NS      c.l.google.com.
l.google.com.           5579    IN      NS      g.l.google.com.
l.google.com.           5579    IN      NS      f.l.google.com.
 
;; ADDITIONAL SECTION:
a.l.google.com.         84457   IN      A       74.125.53.9
 
;; Query time: 37 msec
;; SERVER: 61.135.255.144#53(61.135.255.144)
;; WHEN: Thu Jun 25 11:03:24 2009
;; MSG SIZE  rcvd: 196
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[^_^:~]dig +trace www.l.google.com                  
 
; < <>> DiG 9.6.0-P1 < <>> +trace www.l.google.com
;; global options: +cmd                         
.                       518273  IN      NS      B.ROOT-SERVERS.NET.
.                       518273  IN      NS      E.ROOT-SERVERS.NET.
.                       518273  IN      NS      G.ROOT-SERVERS.NET.
.                       518273  IN      NS      M.ROOT-SERVERS.NET.
.                       518273  IN      NS      H.ROOT-SERVERS.NET.
.                       518273  IN      NS      K.ROOT-SERVERS.NET.
.                       518273  IN      NS      I.ROOT-SERVERS.NET.
.                       518273  IN      NS      L.ROOT-SERVERS.NET.
.                       518273  IN      NS      F.ROOT-SERVERS.NET.
.                       518273  IN      NS      A.ROOT-SERVERS.NET.
.                       518273  IN      NS      J.ROOT-SERVERS.NET.
.                       518273  IN      NS      D.ROOT-SERVERS.NET.
.                       518273  IN      NS      C.ROOT-SERVERS.NET.
;; Received 492 bytes from 61.135.255.144#53(61.135.255.144) in 38 ms
 
com.                    172800  IN      NS      K.GTLD-SERVERS.NET.
com.                    172800  IN      NS      I.GTLD-SERVERS.NET.
com.                    172800  IN      NS      G.GTLD-SERVERS.NET.
com.                    172800  IN      NS      A.GTLD-SERVERS.NET.
com.                    172800  IN      NS      M.GTLD-SERVERS.NET.
com.                    172800  IN      NS      E.GTLD-SERVERS.NET.
com.                    172800  IN      NS      J.GTLD-SERVERS.NET.
com.                    172800  IN      NS      L.GTLD-SERVERS.NET.
com.                    172800  IN      NS      H.GTLD-SERVERS.NET.
com.                    172800  IN      NS      B.GTLD-SERVERS.NET.
com.                    172800  IN      NS      D.GTLD-SERVERS.NET.
com.                    172800  IN      NS      C.GTLD-SERVERS.NET.
com.                    172800  IN      NS      F.GTLD-SERVERS.NET.
;; Received 494 bytes from 192.112.36.4#53(G.ROOT-SERVERS.NET) in 66 ms
 
google.com.             172800  IN      NS      ns1.google.com.
google.com.             172800  IN      NS      ns2.google.com.
google.com.             172800  IN      NS      ns3.google.com.
google.com.             172800  IN      NS      ns4.google.com.
;; Received 170 bytes from 192.43.172.30#53(I.GTLD-SERVERS.NET) in 169 ms
 
l.google.com.           86400   IN      NS      e.l.google.com.
l.google.com.           86400   IN      NS      d.l.google.com.
l.google.com.           86400   IN      NS      g.l.google.com.
l.google.com.           86400   IN      NS      a.l.google.com.
l.google.com.           86400   IN      NS      b.l.google.com.
l.google.com.           86400   IN      NS      c.l.google.com.
l.google.com.           86400   IN      NS      f.l.google.com.
;; Received 258 bytes from 216.239.34.10#53(ns2.google.com) in 201 ms
 
www.l.google.com.       300     IN      A       64.233.189.104
www.l.google.com.       300     IN      A       64.233.189.147
www.l.google.com.       300     IN      A       64.233.189.99
;; Received 82 bytes from 74.125.53.9#53(a.l.google.com) in 174 ms
Page 7 of 16« First...56789...Last »