20101223

我所恐惧的

我所恐惧的

罗素的<西方的智慧>,前几天看到莱布尼兹时代.这位就是与牛顿分别创造了微积
分的那位,他也是位哲学家,历史阴谋主义还认为他创造了类似达芬奇密码里的那
种兄弟会.

其实似乎没有.

不过,他的思想,比创造兄弟会还令人震撼得多.

以前第一次从别的书上读到的时候,也没有多么注意;这次就觉得心有所感,又说不
清楚是什么,就把一段抄在了白板上.

大意是: 整个世界的实体间是相互无关的, 事件之前也没有因果关系.

你感觉到的因果关系,或者关系,是一种错觉. 打个比喻, 你的手表在走,我的手表
也在走,它们每秒钟都走一秒那么多,完全一致.

这并非由于两只手表有任何机械的连接,而是因为它们属于同一个宇宙,受限于同
一种法则;或者说,由于他们是宇宙的一部分,所以表现出了全部宇宙的特征.

后面说得就玄了.如果你了解了宇宙的法则--因为你也是宇宙的一部分,当然具
有这样的可能--你就理解了上帝.是不是会成为上帝,我忘了.

我以为,我的心有所感就是以上这些.感觉沾沾自喜,想是不是能用这个编个故事唔
的.

然后几天以后,我在凌晨刚刚睡下的时候,开始做梦.

我很少做噩梦,即使做了噩梦也能在里面解决那些问题,即使解决不了,也能第一时
间醒过来.

我知道,它们终归是假的,伤害不了我一分一毫.

可是,这个梦里,我大声叫喊,愤怒而恐惧,却无法醒过来.甚至我醒过来的时候,也
没有意识到刚刚那是梦境.

梦里, 整个世界是一块酥饼, 看似完整, 表面却满是龟裂, 随时都可以碎裂为很
多块, 彼此毫不相连.

小时候,因为吃这类东西掉碴被批过,所以从此不喜欢.此刻,却不仅仅是喜欢与否,而
是盯着手上的东西,颤抖.

如果这个世界的每个部分彼此永不相连...

如果这个世界上,你做的每一件事都可以不计后果,...

我们的未来, 我们, 还有什么希望.

我拼命试图修复这个世界, 在梦里, 可笑地一次次把酥饼拼起来, 然后看它变得
更加破碎.碎末掉了一地.

我大声号叫. 完全醒过来以后, 也许几天后的此刻, 才意识到, 真正的孤独是每
一个人都在人群之中,却彼此永不相见; 真正的绝望, 还不是没有未来, 而是你现
在所做的, 对未来没有一丝影响.

未来一秒的,就是另一个你.

而此刻的这一个你, 深情的, 害怕的, 哭泣的, 努力的, 从此消失, 永不再来.

我才知道, 对于活在当下, 我不仅是厌恶,而是恐惧.

如果我们是没有未来的原子,彼此孤立,还有什么努力和自由意识是有意义的.

周遭的一切,转瞬即逝;彼此的关连,尽是虚幻;没有未来,没有义气.

------------

世界,不会是那样的.我们并非生活在这一刻, 而是生活在未来.

只不过,是日,全身过敏. 只不过,12月21日冬至.

20101222

生熟关系与城乡差别 zz

生熟关系与城乡差别 zz
[http://www.gaozz.cn/blog/space.php?uid=68&do=blog&id=39725
]
传统的中国是个熟人社会,越在乡村,熟人的味道就越浓厚。熟人越多,一个人的社会活动范围也就越大。可以说,熟人圈实际上就是传统乡民社会的社交圈。在他们眼中,圈子里面的人总是比圈子外边的人来得自然和亲切。
相对而言,城市是一个由陌生人组成的文化空间。这个空间中的陌生人越多,一个人的熟人圈子就会越小。不过,由于一个人的活动空间总是相对稳定,这种相对固化的城市空间就为陌生人转化为熟人提供了温床。因此,城市并非完全的陌生人社会,而是一个生熟夹杂伴生的社会。共同的目的、利益、兴趣、爱好等等,都可以促成陌生社会向熟人社会的转变。只不过,城市空间越大,流动人口越多,陌生人就会越多,而个人的熟人社会却不一定会随着城市空间的扩张而拓展,而是相对稳定。这是由一个人的社会活动状况所决定的。
今天上午,我在自己居住的街区中的中国工商银行支行办理现金支票对公业务的过程中,亲身感受了这种生熟关系的影响。当时,等待办理业务的客户有五六十人,除了部分客户自己是VIP外,大多是一般的客户。取号排队等候办理本是常事,但该支行里有几位职员不时拿自己的银行卡刷卡取号给刚进来的客人,那些人似乎并不是银行职员的亲戚,而更像熟人。但是,银行职员给予他们熟人少排队先办业务的优惠或特权,却造成了先排队却久未轮到办理业务的社会不公。见微知著,城市中的熟人圈子一旦泛滥起来,它所造成的危害比传统乡村社会更大,也更可怕。原因很简单,城市人除了会考虑熟人圈子内的面子和感受之外,面对陌生人时已经不知道害臊了,也更麻木不仁了……

20101221

Emacs设置默认字体 图

昨天的附图.

Emacs设置默认字体

Emacs设置默认字体

有的时候戴框架眼镜,希望字体大些;
有的时候戴隐形眼镜,希望能同时看到更多东西.
默认字体,是Emacs每次启动时使用的字体.
希望在长久的将来,两种场景仍能有交集.

方案2 中英文使用不同字体

* 第1步 设置当前字体

shift 鼠标左键,选择一个字体(字体,大小,字型).

* 第2步 查看字体名

M-x describe-fontset RET RET

* 第3步 设置默认字体

编辑.emacs文件,加入以下内容.
;------------------------------
(create-fontset-from-fontset-spec
"-outline-Consolas-normal-r-normal-normal-16-120-96-96-c-*-iso8859-1,
ascii:-outline-Consolas-normal-r-normal-normal-16-120-96-96-c-*-iso8859-1,
chinese-gbk:-outline-宋体_方正超大字符集-normal-r-normal-normal-16-120-96-96-c-*-gb2312*-*,
chinese-gb2312:-outline-宋体_方正超大字符集-normal-r-normal-normal-16-120-96-96-c-*-gb2312*-*")

(set-default-font
"-outline-Consolas-normal-r-normal-normal-16-120-96-96-c-*-iso8859-1")
;------------------------------
详情参见 create-fontset-from-fontset-spec 和
[http://www.gnu.org/software/emacs/manual/html_node/emacs/Defining-Fontsets.html].


方案1 英文字体

* 第1步 设置当前字体

shift 鼠标左键,选择一个字体(字体,大小,字型).

* 第2步 查看字体名

M-x describe-font RET RET

* 第3步 设置默认字体
编辑.emacs文件,加入以下内容.

;------------------------------
(set-default-font
"-outline-Consolas-normal-r-normal-normal-16-120-96-96-c-*-iso8859-1")
;------------------------------

其中类似
"-outline-Consolas-normal-r-normal-normal-16-120-96-96-c-*-iso8859-1"的
,就是第2步中看到的字体名.

每一行,冒号以前的,是字符集,冒号以后的,是上述字体名.


以上,在 windows mingw32下通过.

20101219

Fwd: 神秘常量复出!用0x077CB531计算末尾0的个数


 
 

Sent to you by Young via Google Reader:

 
 

via Matrix67: My Blog on 12/15/10

    大家或许还记得 Quake III 里面的一段有如天书般的代码,其中用到的神秘常量 0x5F3759DF 究竟是怎么一回事,着实让不少人伤透了脑筋。今天,我见到了一段同样诡异的代码。
    下面这个位运算小技巧可以迅速给出一个数的二进制表达中末尾有多少个 0 。比如, 123 456 的二进制表达是 1 11100010 01000000 ,因此这个程序给出的结果就是 6 。

unsigned int v;  // find the number of trailing zeros in 32-bit v
int r;           // result goes here
static const int MultiplyDeBruijnBitPosition[32] =
{
  0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
  31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
};
r = MultiplyDeBruijnBitPosition[((uint32_t)((v & -v) * 0x077CB531U)) >> 27];

    熟悉位运算的朋友们可以认出, v & -v 的作用就是取出右起连续的 0 以及首次出现的 1 。当 v = 123 456 时, v & -v 就等于 64 ,即二进制的 1000000 。怪就怪在,这个 0x077CB531 是怎么回事?数组 MultiplyDeBruijnBitPosition 又是什么玩意儿呢?


    这还得从 0x077CB531 本身的一个性质开始说起。把这个常数写成 32 位二进制,可以得到

00000111011111001011010100110001

    这个 01 串有一个无比牛 B 的地方:如果把它看作是循环的,它正好包含了全部 32 种可能的 5 位 01 串,既无重复,又无遗漏!其实,这样的 01 串并不稀奇,因为构造这样的 01 串完全等价于寻找一个有向图中的 Euler 回路。如下图,构造一个包含 16 个顶点的图,顶点分别命名为 0000, 0001, 0010, …, 1111 。如果某个点的后 3 位,正好等于另一个点的前 3 位,就画一条从前者出发指向后者的箭头。也就是说,只要两个顶点上的数满足 abcd 和 bcde 的关系( a 、 b 、 c 、 d 、 e 可能代表相同的数字),就从 abcd 出发,连一条到 bcde 的路,这条路就记作 abcde 。注意,有些点之间是可以相互到达的(比如 1010 和 0101 ),有些点甚至有一条到达自己的路(比如 0000 )。

  

    构造一个字符串使其包含所有可能的 5 位 01 子串,其实就相当于沿着箭头在上图中游走的过程。不妨假设字符串以 0000 开头。如果下一个数字是 1 ,那么 00001 这个子串就被包含了,同时最新的 4 位数就变成了 0001 ;但若下一个数字还是 0 ,那么 00000 就被包含了进来,最新的 4 个数仍然是 0000 。从图上看,这无非是一个从 0000 点出发走了哪条路的问题:你是选择了沿 00001 这条路走到了 0001 这个点,还是沿着 00000 这条路走回了 0000 这个点。同理,每添加一个数字,就相当于沿着某条路走到了一个新的点,路上所写的 5 位数就是刚被考虑到的 5 位数。我们的目的便是既无重复又无遗漏地遍历所有的路。显然图中的每个顶点入度和出度都是 2 ,因此这个图一定存在 Euler 回路,我们便能轻易构造出一个满足要求的 01 串了。这样的 01 串就叫做 De Bruijn 序列。

    De Bruijn 序列在这里究竟有什么用呢?它的用途其实很简单,就是为 32 种不同的情况提供了一个唯一索引。比方说, 1000000 后面有 6 个 0 ,将 1000000 乘以 0x077CB531 ,就得到

   00000111011111001011010100110001
-> 11011111001011010100110001000000

    相当于把 De Bruijn 序列左移了 6 位。再把这个数右移 27 位,就相当于提取出了这个数的头 5 位:

   11011111001011010100110001000000
->                            11011

    由于 De Bruijn 序列的性质,因此当输入数字的末尾 0 个数不同时,最后得到的这个 5 位数也不同。而数组 MultiplyDeBruijnBitPosition 则相当于一个字典的功能。 11011 转回十进制是 27 ,于是我们查一查 MultiplyDeBruijnBitPosition[27] ,程序即返回 6 。
    注意到当输入数字的末尾 0 个数超过 27 个时,程序也是正确的,因为左移时低位正好是用 0 填充的。

    这段神一般的代码取自 http://graphics.stanford.edu/~seander/bithacks.html ,欢迎大家前去围观。


 
 

Things you can do from here:

 
 

20101218

黑客之路始于手指下

黑客之路始于手指下

有个数字电子技术课程的学生来信问,如何学习计算机网络安全.以下是答复,也供
其他同好参考.

因为不知道你的技术现状, 所以只能泛泛而谈入门一定需要的基础,没啥针对性.

1. 计算机网络

建议阅读
- Andrew S. Tanenbaum 计算机网络 清华大学出版社 黑皮
- Douglas E. Comer 计算机网络与因特网
再深的
- W.Richard Stevens TCP/IP详解 第一卷

2. UNIX
-UNIX/LINUX命令行的熟练使用
-建议阅读 Advanced Programming in the UNIX Environment

4. 编程
-C
-bash
-php/asp...

3. 各种攻击手段

4. 大量实践, 包括实验和真实的项目

以上.

朱铁英老师的研究方向是网络安全.

20101213

中国成人大学生的儿童式道德教育

中国成人大学生的儿童式道德教育
via 徐贲的BLOG by 徐贲 on 12/11/10

中国成人大学生的儿童式道德教育

徐 贲

据报道,西安一名叫药家鑫的大学生,日前开车撞人后将受伤的被害人连捅8刀致死,"此案件极大地败坏了陕西高校和大学生的声誉,
陕西省委教育工委、省教育厅3日晚下发了《关于以药家鑫事件为反面教材在全省大学生中集中开展法律法规学习和思想道德教育的紧急通知》,要求全省大学生集
中一个月时间开展法律法规学习和思想道德专项教育"。这种以坏人坏事的"反面教材"来进行的"道德教育",就算是收到了最高的效果,对大学生又会有多大的道德认知提高呢?
对道德教育认知,美国心理学家柯尔伯格(L.Kohlberg,1927-1987)曾提出过著名的"道德发展阶段"理论,在美国和国际心理学界、教育界产生了很大的影响。柯尔伯格提出,人的道德认知发展,可分为3个层次,而每个层次又各有2个阶段。这3个层次与一个人的成长年龄有关,但有的成人因道德认知发展滞塞,年龄再大,也还是停留在幼童层次。
第一个层次是"前道德成规期"(Pre-Conventional
Level)。这是一个以"我"为中心的阶段,大约在学前至小学低中年龄的时期。其中有2个阶段:1.
"我"因害怕惩罚或"不想惹麻烦"而服从,2.
因为对"我"有好处而服从。在这个道德认知层次上,人定义对错的观点是依据威权者所说的对错,依据行为结果会带来惩罚或是奖赏。任何一位父母都可以证明这一点。问一个四五岁的孩子,
为什么偷窃是不对的?绝大多数的回应都是"因为爸爸妈妈说这是不对的",或"偷东西会挨打"。有些人终其一生都停留在这个阶段,持续地以听威权者的话、害怕惩罚,以如何避免痛苦后果或取得奖赏来定义是非对错。
以药家鑫恶行为戒的"道德教育"中,对不道德行为的认知是非常功利的,它局限于对"我"的不利后果。报道说,"如果当初药家鑫撞了人,能及时送到医院治疗,按照警方对被害人伤情的勘验,整个花费也就个万把块钱,而他却因为害怕负责动了杀念。从万元治疗费到百万赔偿费"。至于他对别人的伤害,那只不过是附带提上一句而已("也"):"药家鑫迈出了罪恶的一步,葬送了自己的人生,也毁掉了两个原本幸福的家庭"。药家鑫事件所连带造成的"不良后果"考量:"极大地败坏了陕西高校和大学生的声誉",同样也是非常功利的,只不过是把"我"放大了一些而已。
道德认知发展的第二个层次是"道德成规期"(Conventional
Level),大约从小学高年级至青年早期。其中也包括2个阶段:1.做"好孩子";2.服从权威或社会规范。"好好学习,天天向上"是做好孩子,"学习雷锋"也是做好孩子,这也是一种家长式的教育。"学习工农兵",今天学这个英雄,明天学那个模范,不仅是青少年,许多大人也是这么学的。如果你问一个青少年:"为何有些事情是错的,而有些事情是对的?"他们大多会回答:是"学校规定的",或者"某某领导人教导的"。许多人一辈子都停滞在这个"青少年"层次,在并无道德自觉的情况下,成为"一个高尚的人,一个纯粹的人,一个有道德的人,一个脱离了低级趣味的人,一个有益于人民的人。"
这种道德教育虽然层次不高,但却也还能以"好人好事"而不是"坏人坏事"来做榜样。这也是中国童蒙道德教育的基本方式,如"孔融让梨"、"徐湛之出行"、"二十四孝"。尽管只是刻板灌输、盲目顺从、机械模仿,但至少还可以有好样学好样,虽不一定有思想和智慧,但至少不至于堕落和邪恶。如果这个层次可以算作是2.0版本的道德教育,那么,以药家鑫为戒的"道德教育"则尚未达到这个层次,只能算是1.0版本的。
按道理来说,大学生是有文化、有知识的"精英"或"后备精英",在道德认知发展上应当处在高于2.0版本的"青少年"的层次。教育者应该告诉他们,还有一个比2.0更高的3.0版本,并按这个更高的标准来要求和教育他们。然而,令人遗憾的是,"以药家鑫事件为反面教材"的"思想道德专项教育"却是采取了幼儿教育的1.0版本。
3.0版本的道德认知教育,在柯尔伯格那里就是第三个层次的"道德自律期",或"后成规"(Post-Conventional
Level)层次,其中包括2个阶段:1.服从并遵守体现为公正法治的社会契约;2.把某些普世伦理原则看得比任何法律更为优先。这二者都高于任何党派意识形态所规定的"道德要求"。在这个层次上,人们不再以对团体、集团的忠诚,或以它们的局部规范来定义对错,而是以普遍的伦理原则和观点来判断是非。在道德自律期,人们的道德原则诉诸于每个人的理性思考,因为他们总是能在尽可能普遍的范围内,考虑所有人的利害和利益。如果你问一个在后常规期的人,为何某件事是对的或错的,他会试着以这件事是否能促进普遍的正义、人权、或人类福祉来判断。
这是一个在道德认知上成熟的个人和社会应当达到,或者至少应当去努力达到的层次。以此来做为对大学生的道德教育目标,应当是符合他们知识和思考能力水准的恰当要求。常言道:取法乎上,得乎其中,取法乎中,得乎其下,如果从一开始就把大学生道德教育的标准定在1.0的版本上,就算能收到十全十美的效果,那也不过是幼童的水准而已。

20101212

雪后

使用 esmtp 实现用命令行 发送邮件

使用 esmtp 实现用命令行 发送邮件

1. 配置
注意:password

young@ubuntu:~$ cat esmtprc
# Config file for ESMTP sendmail
identity=gift.young@gmail.com
hostname=smtp.gmail.com:587
username="gift.young@gmail.com"
password="my password"
starttls=required

# The SMTP host and service (port)
#hostname=localdomain:25

# The user name
#username=

# The password
#password=

# Whether to use Starttls
#starttls=disabled

# The certificate passphrase
#certificate_passphrase=

# The Mail Delivery Agent
#mda=""
young@ubuntu:~$

2. 邮件正文
注意 "To:"和 邮件正文最后的两个回车.

young@ubuntu:~$ cat mailbody.txt
Subject: test
To: gift.young@gmail.com
hello, world!


3. 命令行
注意:后台执行

young@ubuntu:~$ esmtp -C ./esmtprc -v -X log < mailbody.txt &
[2] 4303
young@ubuntu:~$ Connected to MTA
StartTLS OK (128 bits)
young@ubuntu:~$ From gift.young@gmail.com: 250 OK y42sm7182444wfd.10
To gift.young.1@gmail.com: 250 OK y42sm7182444wfd.10
To gift.young@gmail.com: 250 OK y42sm7182444wfd.10
Message data: .
Message sent: 250 OK 1292153405 y42sm7182444wfd.10
Disconnected to MTA

[2]- Done esmtp -t gift.young.1@gmail.com -C
./esmtprc -v -X log < mailbody.txt
young@ubuntu:~$

4. 收到的邮件

Return-Path: <gift.young@gmail.com>
Received: from ubuntu ([124.235.241.225])
by mx.google.com with ESMTPS id b11sm7188528wff.9.2010.12.12.03.34.00
(version=TLSv1/SSLv3 cipher=RC4-MD5);
Sun, 12 Dec 2010 03:34:02 -0800 (PST)
Message-ID: <4d04b32a.0bb38e0a.696d.5f19@mx.google.com>
Date: Sun, 12 Dec 2010 03:34:02 -0800 (PST)
From: gift.young@gmail.com
Subject: test
To: gift.young@gmail.com
hello, world!
Date: Sun, 12 Dec 2010 19:34:01 +0800
From: gift.young@gmail.com
Message-Id: <1292153641.270233.4347@ubuntu>

20101207

一次也无法原谅

一次也无法原谅

 

有图有真相,见我的相册。我破坏了学校的公物,锯了一截铁管。

 

"有安全隐患,请解决。图书馆后面,田家炳楼与生命广场之间,校友认领的树

木标牌,其中有一个牌子掉了,留下的铁棍有向上的斜茬。地面结冰路滑,一旦

有人摔在那里,非常危险。已经电话过保卫处,未见解决。"

 

这封邮件已经发出半月。说实话,我也不知道这应该由哪个部门负责。

 

我知道的是,如果有人被扎了。我会内疚。

 

大哥提到CCTV报道,一个母亲因为儿子从通往湖的阶梯上滑下淹死,四处找"相

关"部门加强水库安全,结果都是无关的部门。在这个过程中,她得知,她的儿

子并非第一个。

 

也许面对这位母亲时,很多人很认为她是偏执吧。

 

上海的大火,如果有偏执的人存在,死活都要制止施工,如果有偏执的人,在质

量不合格的时候一定不签字,也许,就可以挽救那些生命。

 

但是我们一般会说,"大家都不容易。"会说,"差不多就得了。"

 

去年冬天,我把邻居放在走廊里的纸箱子扔到了外面。可能,很多人会认为我太

XX。

 

如果,大火之时,纸箱子挡住了你的路呢?

 

于是,万分之一或百分之一的可能,不断发生。我们本以为那些都是小概率事件。

本以为那些都与我们无关。

 

你占用了公共资源么?你用大家的绿地种菜了么。你把自行车放在走廊上了么。

 

我妈说:东西是公家的,就算烂在那里,也不能拿回自己家。

 

 

 

不久,吉林大学一位即将毕业的研究生在南岭校区门口被撞身亡。报纸提到,司

机说,灯太亮晃眼,没看到人。

 

可是,出事的地点,正有一条人行横道。中华人民共和国的交通规则说,"机动

车行经人行横道时,应当减速行驶;遇行人正在通过人行横道,应当停车让行。"

 

小学语文告诉我们,"动车行经人行横道时,应当减速行驶"的意思中并无包括

人行横道上是否有行人这一条件。也就是说,无论人行横道是否有行人,无论司

机是否看到行人,都必须减速。

 

而"遇行人正在通过人行横道,应当停车让行"的意思是,并非司机看到行人才

减速,而是看到行人后要停下来。

 

如此简单的文字,我们说,"可是……"

 

每一个人都要赶时间,都要爱护自己的车,都要显示自己的力量。只是,我们应

该在一定规则之下。

 

 

 

这是一个越来越迅速和发达的时代。

 

计算机的基本事实告诉我们,当速度越快的时候,各部件遵守时钟就越发必要。

 

如果我们生活在中世纪,生活在缓慢的古代,当然可以凡事模楞两可,大家和谐。

 

但是,如果凡事无所谓事非曲直,都要协调,都双方三方四方都有一定的道理,

我们就继续生活在中世纪吧。

 

有如一个乐队,由许多声部许多乐器组成。如果每个人的节奏都是错的――不是

错得一致,而是各行其是,各有道理――那么,我们休想奏出快速的曲子。甚至

慢速的曲子,也只是其中的糊涂虫听不出来,以为和谐优美。

 

这个时候,我们需要纠正那些错误的节奏,而不是纵容。

 

有人跟我说过,"为什么要难为AABB呢?"

 

因为,他说他想要准确快速那种生活的结果。

 

其实,田园牧歌似的生活也无不可――只是,我们不要在别人取得好成绩的时候

自己难受。

 

 

天冷路滑,一截斜削带尖的铁管。也许,我们每个人都没有被串在上面。

 

但是,如果串在上面的是你呢?如果,是你的兄弟姐妹、女友男友呢?谁应该为

此负责。

 

让我们做认为对的事情,并为之承担后果。如果有关部门找我索赔公物,我至少

能够知道是谁应该对这根尖刺负责。

 

鲁迅先生说,"一个都不宽恕。"我愿追随,"一次也无法原谅"。与诸君共勉。


20101205

做白板

做白板

想做白板很久,终于完成。

之前贴了满墙,都是要完成的任务,写了或者画在纸上的。用三英寸软盘的标签
纸贴在墙上,反正也不考虑揭下来了。

Randy Pausch说,如果你的孩子满墙乱画,不要阻止他。等你卖房子的时候,不
会因为这个减价的。

对成年人,这也是适用的吧。

不过,我感觉用白板更方便一些。因为用磁铁吸住那些纸条,比粘贴更有灵活性,
可以移来移去,如果需要的话,还可以在纸之间画上线条。不需要的时候可以全
揭下或擦掉。

于是决定安装白板。这计划该有一年多了。这一年里,计划修改了N次,实际行动
只打听了白铁片可以买到,李记者提出应该用铁皮覆盖玻璃。

前两天我哥来了,让我下了决心,"哥,你帮我把白板装上吧。"

所谓"帮",就是他自己安装。

我指挥。

考虑了好多种方案,在采购材料的过程中,也有修改。

先是准备白铁皮钉墙上,上面喷白漆。担心漆不平整。

白铁皮上覆盖宝丽板。宝丽板太厚,磁铁可能容易掉下来。

用木条做个框架……

去买木条的时候,哥指着一块白板说,"你看这个行不行,高分子。"

这东西的名字跟应化所的一个实验室一个名字。所谓高分子,某种塑料是也。这
种高分子,白色的,一大张,2.4米X1.2米。买了两张,圈了拿回去。

我去忙。等回来的时候,哥已经把线划好,什么该订在哪里计划完毕。

把高分子和铁皮固定在一起的时候,我们计划用透明胶带。胶带绕手指转一圈,
粘起来成一个环,当作双面胶。结果发现很多地方,高分子和铁皮有间隙,这导
致磁铁不稳。

决定换成胶。这是午夜。

第二天中午的时候,哥已经在墙上安好一张白板了。墙上一层胶,铁皮粘上;铁
皮上再一层胶,高分子粘上。如果不是胶在培上而是用架子支持,占在面积要大
很多。

当然做起来没有说起来这么容易。是我妈帮着扶住粘到墙上的。因为要等胶的强
度足够高才能粘,不然会掉下来,而那个时候只要铁皮和高分子一挨上,就万难
拿下来,所以必须保证对齐,然后一次成型。

好在,只有风险,没有失败。

揭下高分子上的薄膜,我着实高兴了一阵,把原来的那些任务都用磁铁固定在白
板。心里面,背着手踱着步来回走了几趟。

然后发现磁铁不够给力啊。从文具用品那儿买的磁铁,样子倒是好,像个大号的
围棋子,可是中看不中用,经常吸不住。

哥前一天替我从四个大喇叭上拆下的磁铁起了作用。这些家伙每个都直径一掌宽,
可以隔着好几层纸吸在白板上,纺丝不动,给人足够的安全感。

相形之下,文具磁铁不过奶油小生之书僮而已。

又去买白板笔。有的好使,有的太好使――写上就擦不下来。按下不表。真彩牌
的黑色白板笔最适合。别的颜色不行,蓝色的笑脸在我实验以后永远在白板上留
下了痕迹。油性的MARK笔,不行。

买了白板擦。后面的经验告诉我们,这个没用。暂且不提。

继续找磁铁。更多的,更好的。先是哥又替我拆了一幅耳机。

然后,我去找包师弟的时候问,"你有废耳机么?"

答,"要干啥?"

"bla bla bla"

亮点来了。包师弟从元器件盒里拿出几个亮闪闪的小东西,"各种尺寸。"

大的比筷子略细,小的跟圆珠笔芯一样粗,都是半指节长。这些磁铁捏在一起,
可以随便揉成各种形状,绝不脱开。甚至可以甩来甩去。

这东西,叫强力磁铁。包师弟说是做机械加工啥啥的。几块钱一个。

很好很强大。距白板一拳远掉下,会粘在白板上。形体小,钉住纸以后,不挡视
线。干活不吱声,我喜欢。

拖拽这些纸条在白板上移来移去,就像面对一大块屏幕。开阔,敞亮。

白板之上,当然还可以作画。没几天,我就画满了两板。

擦,引发了问题。注:擦,是动词,不是语气词。

有几个地方的笔迹放置了几天,擦除有些困难。酒精是有机溶剂,我以为一定适
合这事。

结果,是的,酒精是有机溶剂,也适合溶解笔迹。

同时,酒精也适合溶解高分子。白板的表面,凡是被酒精擦过的部分,都不再像
原来那么光滑,笔触能感觉到粗糙,擦除新的笔迹也非常困难。

后来发现,最适合这一场合的,是水油两亲的肥皂水。且容易制备,造价也低。

尾声是我在墙角钉了两个可乐瓶底,用来放白板笔;上方插个废眼镜,用来搁黑板擦。

此黑板擦纯是装饰,为了显得专业。其实最适合白板擦除的,是沾上肥皂水――
如上所述――的抹布。

很多材料,都是普通的,甚至卑微的,就像我等草芥。不过,岳飞说,兵法之妙,
存乎一心。相信在伟大而正确的思想的指导下,我们会被正确地应用在某此岗位
上,发挥重要的作用。

所谓发明,就是用常见的东西制造从未有过的神奇。

不过,如前所述,咱们最适合的位置可能就是下岗。你还别不信。

20101204

标 题: 浙江大学“教授下课”:近三成教师转岗社会服务zz

标 题: 浙江大学"教授下课":近三成教师转岗社会服务zz


发信人: hayou (出乎意料), 信区: QingJiao
标 题: 浙江大学"教授下课":近三成教师转岗社会服务zz
发信站: 水木社区 (Fri Dec 3 12:38:54 2010), 站内

【 以下文字转载自 TsinghuaCent 讨论区 】
发信人: EagleGend (传鹰), 信区: TsinghuaCent
标 题: 浙江大学"教授下课":近三成教师转岗社会服务zz
发信站: 水木社区 (Fri Dec 3 12:04:49 2010), 站内

浙江大学"教授下课":近三成教师转岗社会服务

http://www.enorth.com.cn   2010-12-03 10:13

  内容提要:在浙江大学任教逾20年,王虎和他的同事兼好友赵欣之间,最大的差别
或许就是头衔:王虎是教授,赵欣是副教授。虽然两人所属学院不同,研究方向不同,
但日子过得一样"滋润":有学生带,有课题做,工作稳定,衣食不愁。然而,浙江大
学正在推行的一场人事改革:王虎还是王虎教授,但赵欣却要"下课"了——他将离开
讲台,不再与学生和学术打交道。

  在浙江大学任教逾20年,王虎和他的同事兼好友赵欣之间,最大的差别或许就是头
衔:王虎是教授,赵欣是副教授。虽然两人所属学院不同,研究方向不同,但日子过得
一样"滋润":有学生带,有课题做,工作稳定,衣食不愁。

  然而,浙江大学正在推行的一场人事改革,却让两位大学老师的职业生涯出现了拐
点:王虎还是王虎教授,但赵欣却要"下课"了——他将离开讲台,不再与学生和学术
打交道。

  刚刚过去的11月,浙江大学推行的一项名为"教师岗位分类管理"的人事改革,终
于到了收尾阶段。从今年暑假以来的几个月,学校里有些人心惶惶。因为按照这项新的
人事改革方案,有一定比例的老师将不再续聘原先的教研岗位。未来不久,他们将走向
全新的社会服务类岗位。  不站讲台、不做科研,那还算是大学老师吗?在这场改革
面前,浙大的老师们不仅面临着一次身份认同危机,也预感到一丝紧张——大学教授,
未来不再是一个铁饭碗。


【30%教师转岗社会服务】

  按照大学科研、教学和社会服务的三大功能,浙大的教师岗位被分为5大类。改革方
案的最初设想是:各学院内大约30%的教师将被"分流"到社会服务类岗位,告别学生和
学术。

  王虎是浙大的一位文科教授,填写学院下发的2010年岗位聘任表,他感到有些吃力
。今年的教师聘任办法,和以往截然不同。

  按照《浙江大学教师岗位分类管理实施意见(试行)的通知》(下称《实施意见》),
在浙大今年的教师聘任中,学校将按照大学科研、教学和社会服务的三大功能,把教师
岗位分为5大类,分别是"教学科研并重岗","研究为主岗","教学为主岗","社
会服务与技术推广岗"和"团队科研/教学岗"。

  王虎填报的是"教学科研并重岗",凭借多年来在学院里的"江湖地位",他认为
自己"上岗"不成问题。

  浙大的多数老师,不论是文科还是理工科,都把"教学科研并重岗"列为首选。老
师们私底下议论,这是一个最稳妥的岗位,"科研和教学都沾了,以后日子照过,跟过
去没什么差别。"

  相比之下,全新的社会服务类岗位,则被认为是"前途未卜"。按照《实施意见》
,走向这一岗位的老师,身份还是浙大教师,享受同样的津贴待遇,但今后的工作重点
主要是从事社会服务、技术推广、成果转化、科学研究以及教育培训、咨询等工作,学
校将通过业绩对其进行考核。

  由于浙大在推进岗位分类管理时,对五大岗位分别设置了聘任要求和比例。按照改
革方案的最初设计,各学院聘任岗位中,属于第三类岗位的社会服务类岗位,比例大约
为30%。

  当惯了传道授业解惑的大学老师,突然之间要去"为社会服务"了?文科院系的老
师首先感到迷茫。"理工科,还有可能从事应用类的技术推广,搞人文科学和基础研究
的,怎么到社会上去混?"王虎不由为赵欣的前途捏把汗。

  赵欣早年硕士毕业留在杭州大学任教(1998年杭大合并入浙江大学),当时也算是"
临危授命"——系里要求年轻教师勇挑教学重担。赵欣讲台一站,20年过去了,期间因
为种种原因,错过了好几次深造机会。所以,如今反观赵欣的履历,有一块明显的学历
短板:没有博士学位。"这次,他们学院里排座次,没有教研岗位留给他。"王虎认为
,正因为没有博士学位,赵欣才会在今年的聘任中失利。

  在理工科院系,即便是有条件从事"社会服务"的教师,大多也不愿意去应聘。按
照《实施意见》,教师岗位分类实行动态管理,即聘任期满后,教师来年如果要回归教
研岗位,可以重新申报。但老师们顾虑甚多。"出去容易进来难,万一以后政策变了或
者领导换人了,教职不就丢了?"

  在校内,绝大多数教师都不看好新设立的社会服务类岗位。也正因此,"教师岗位
分类"顿时演变成了教师"分流"。

  【"分流"指标难以完成】

  为了建设一流大学,师资要"换血"。不少学院里被"分流"的教师,年龄基本在
45岁至55岁间。正是这一点,让很多教师耿耿于怀甚至心寒。

  浙大的人事改革酝酿于2008年,直到今年下半年才进入实质性推进阶段。学校对外
一直很低调,但还是引来了外围很多双"眼睛"。

  "浙江大学正在做一件国内很多大学想做、但又觉得没法做的事情。"一位沪上名
牌高校的副校长在接受记者采访时认为,浙大明显是想通过人事改革,改良学校的师资
。和很多985、211高校一样,浙大提升师资队伍质量的愿望,异常迫切。校方在解释这
种 "迫切"心情时,往往提及一张时间表——从1998年老浙大、杭州大学等四校合并成
新浙大后,如今的浙大计划于2017年建成世界一流大学。届时,浙大将建设一支7000人
左右的教学、科研、社会服务队伍,即3500人左右的创新师资队伍和3500人左右的创新
创业队伍。

  浙大校方并不讳谈此次人事改革与师资建设之间的关联。今年9月17日,《浙江大学
报》刊登了一篇名为"浙大教师岗位分类管理领导小组办公室有关负责人答校报记者问
"的长文。在解释启动人事改革的根本原因时,校方的阐述十分直白:"对照学校建设
一流大学的目标,学校教师队伍建设还有很大差距。"其中,拔尖优秀青年教师人才规
模偏小、学术领军人物等高端人才的数量与学校的队伍规模不相称、师资队伍的国际化
程度偏低,以及教师教学热情与教学水平有待提高等问题,都被浙大认为是抑制学校发
展的瓶颈。

  为了建设一流大学,师资要"换血";而"换血"带来的人事变动,必然动了一部
分基层教师的"奶酪",引发一部分教师的抵触情绪。

  到目前为止,对于学校原本计划的30%的"分流"指标,浙大的各大学院几乎都完成
不了。以浙大人文学院为例,此次聘任共提供5大类共计160个岗位,但后来该学院设置
的"科研并重岗"比例就占据八成,填报"科研为主岗"和"教学为主岗"的教师也极
少,最终只有个别从事艺术教育的老师填报了社会服务岗,"分流"比例不足5%。

  不管是否被"分流",社会服务岗的出现,让教师队伍中出现了"身份认同"危机
。有位几年后就要退休的老教授,在此次聘任中执意要填报"科研教学并重岗",尽管
按照学院里更多老师的看法,这个"挑大梁"的岗位应该让给年富力强的青年教师。但
老教授丝毫不松口,他的理由是:"教了一辈子书,不能到了退休后连个'老师'都算
不上。"

  在王虎的学院,最终离开教研岗位、分至社会服务类岗位的比例不到20%。"有些老
师开的是名车,住的是别墅,如果一夜之间没了教师身份,面子上挂不住,肯定接受不
了。"据王虎观察,不少学院里被"分流"的教师,年龄基本在45岁至55岁之间,"可
能是觉得他们在学术科研上基本'定型'了,没有潜力可挖了。"而正是这一点,让很
多教师耿耿于怀甚至心寒。

  "大学,大师之谓也。像浙大这样没有人情味的改革和考核方案,估计永远留不住
像霍金这样的大师。"有教师谈及此次改革时如此感叹。

  【"老土鳖"不敌"新海归"】

  "不做岗位分类,没有人流出,就无法引进人才。"对学校来说,年轻海归带来的
不仅是"新知识",还有老教授们难以企及的"新气息"。

  老师们心照不宣但又备受争议的一点是:教师岗位分类管理,从某种意义上说,就
是让学校里的"老土鳖"给"新海归"腾岗位。

  "不做岗位分类,没有人流出,就无法引进人才。"浙大某理科学院的院长表示,
尽管承受了来自教师中的压力,但内心仍然支持这项改革。"如果不是学校要改革,有
些'混混'根本请不出去。你一撵他,他会说你排除异己。"

  这位院长告诉记者,一些新兴学科尤其是交叉学科的发展,确实亟需引进一批年轻
的领军人才。但他个人看重引进"海归",还不光光因为"海归"带来的"新知识",
更重要的是年轻"海归"身上,有着老教授们难以企及的"新气息"。

  "有些事情放不上台面,一说就会伤了一批教师的自尊。"院长以教师给学生上课
为例。他印象中的一些资深老教授,走进教室时的形象总有点"酸":左手拿个大水壶
,右手提着一个拉链都拉不上的破旧公文包。"有时穿件衬衫,里面背心上的破洞都看
得见。"讲课讲到新的研究方向时,老教授时常话锋一转,扯到自己当年的发明、研究
上去,在课堂上夸夸其谈地 "想当年";而新来的海归学者呢?他们给学生讲课,多数
穿戴整齐,有人甚至大夏天也会西装笔挺地站讲台;讲课时,他们基本用的是双语,会
随时补充国外同行研究的新进展,传递一流大学学者做学问的方式,有时甚至会还原诺
奖学者在国外大学里给学生上课、讨论的情形。

  "老学究和新学者,两厢一比较,你说谁更适合站在讲台上、谁更适合做科研?"
在这位院长看来,教师岗位分类管理,为年轻的学术骨干提供了更大的发展空间。由于
考核的方式也随着岗位变了,一些年轻老师立刻感到,自己多劳多得——增收了。"年
轻的海归,可能是这次人事改革的最大受益者。"

  推进人事改革的同时,浙大也试图改变"重科研、轻教学"的顽疾——老师站讲台
的门槛明显提高。一方面,学校拿出一定比例的"教学岗"引进人才,为善于上课的良
师给予等同于长江学者的待遇,对教学效果不好的教师实行"一票否决"制;另一方面
,新留任的讲师不再讲课。浙大规定,年轻讲师的主要精力用于科研,并同时通过担任
助教工作,观摩学习名师教学经验,等其晋升为副教授以后,再承担本科生和研究生课
程教学。

  作为一项涉及全校教师的人事改革,浙大的教师岗位分类能否助推学校跨越式发展
?浙大之内,有的老师很悲观,认为此次改革必将成为中国高校改革的反面教材。"急
功近利的改革,留给后人的是一个待解剖的失败案例。"但包括上述浙大某理科学院院
长在内,校内校外看好这次改革的也大有人在。"只要浙大在三五年内呈现明显的学术
进阶,那么国内和浙大排名靠近的重点高校,到时候都会坐不住。"

20101130

长见识

长见识

柳校长讲话,讲教育。
我坐第一排,困的时候看刘老师在那儿批C语言学生的报告。
一向对计算机系学生的报告心存偏见,就拿来看。

声明一:柳校长的讲话重要而啥啥。我困的原因可能是病理性的,只要不是我讲,
五分钟准睡着,不可控。

本着挑刺的心态读实验报告,当然不会放过每个暇疵。
实验目的、实验步骤、实验结果一如既往的缺少。
不过我挑的是另一个毛病,代码里,函数的声明放在了main函数之中。

我指出。
刘老师说,这是允许的。并补充道:这是声明,不是定义。

是的,C函数中不允许嵌套定义,但是我没有想到可以放个声明。
以前见的代码都是声明在最前,或者干脆定义也在最前。

我回家做了个实验,如下:

--------------------------
int main()
{
int foobar();
foobar();
return 0;
}

int foobar()
{
printf("test");
}

--------------------------

结果真的编译通过了。
长见识了。

我一想,然后我把
int foobar();
放在了
foobar();
之后。

即调用在先,声明在后。

结果也通过了。

这说明:不必声明?
我注释了
int foobar();

变成了这样:
--------------------------
int main()
{
foobar();
return 0;
}

int foobar()
{
printf("test");
}
--------------------------

结果依然能编译通过!

这说明:不必声明?

我就把这事放下了。

事前查了下,非官方的手册,在函数内的声明是允许的。其益处在于,可以局部
的声明函数,避免污染symbol空间。

今天坐校车,又见到了刘老师。
请教。

刘老师说:只有函数类型(返回值类型)是int型的,才可以不声明直接调用。

替换法告诉我们,一次只换一个部件。
当然……偶而也有同时出现两个知识点都不知道的时候啊。

又长见识了一次。

总结。

见识1. 函数可以在函数内声明。作用域在函数内。

见识2. int型函数可以不声明直接调用。

不过,作为代码规范,反对以上两条见识应用在项目中。

20101129

git pull all shell (故障定位经验)

git pull all shell (故障定位技术)
** git pull all shell
CLOCK: [2010-11-29 周一 00:00]--[2010-11-29 周一 01:12] => 1:12
*** 问题:更换了tortoisegit的key文件,命令行失败,要求口令。
*** 命令行报告需要口令。这说明privatekey错误。但是 git config -l 显示一切正常。
*** home目录下的key文件错误。以下是诊断的依据。git命令行使用了ssh,而tortoiesgit使用了putty
: $ ssh -v git@222.168.37.231
: OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
: ... 省略 ...
: debug1: Trying private key: /c/Users/ibm/.ssh/identity
: debug1: Offering public key: /c/Users/ibm/.ssh/id_rsa
: debug1: Authentications that can continue: publickey,gssapi-with-mic,password
: debug1: Trying private key: /c/Users/ibm/.ssh/id_dsa
: debug1: Next authentication method: password
: git@222.168.37.231's password:
*** 解决
**** 找到HOME目录
: $ echo $HOME
: /c/Users/ibm
**** 更换 id_rsa, id_rsa.pub 文件
***** puttygen -> Load an existing private key file -> Load,
读入tortoiesgit用的putty格式私钥
***** conversions -> Export OpenSSH key,保存到HOME目录下,名为id_rsa。
**** 9月4日,因为同一原因花了不少时间,且写了日志。唉。

20101125

老猫去看病

老猫去看病

老猫的名字就叫老猫,还在他吃幼猫猫粮的时候就是这个名字。如今九岁了,考
虑到野猫的平均寿命是三岁,已经成为货真价实的老猫了。

老猫前一段时间病了。屁股出血,涂在腿上的毛和地板上,很是恐怖。而且渐渐
开始绝食,后来滴水不进了。

我考虑到了各种可能。

吃了什么利器?家里没有。食物中毒?除了猫粮,他什么也不吃。虽然最近换了
新的猫粮,但又买了他喜欢的换回来。肠子出毛病了?……

我想起来几年前的小龟比尔・盖茨。它跟随我很多年,最后水污染埋在了大树下
面,还给它点了根香纪念。现在想想也许是因为蓝藻也说不定。

老猫毕竟是很大年龄了,要考虑各种可能性。接受建议去医院。

准备行动的那在上午老猫病得更重了,眼睛也很无神,屁股一碰就尖叫。必须得
去医院了。

其时,二猫正生着病,反复发烧,一直咳嗽。其时,妈下午的火车到达。其时,
单位下午召开所有教师必须参加的会议。

但是,我决定还是老猫重要。

查医院地址,电话咨询,准备纸盒子,打车出发。中午出发前我睡了一会,准备
迎接各种可能。猫妈准备了两三千元,说"应该够了"。我强开玩笑,"如果两
三千还不行,就不治啦。他也值不了那么多钱。"

老猫是2001年20元买的。而且也不是我花的钱,只是寄存在我这里。当时我百般
不乐意,规定猫不许上床,不能进卧室睡觉等等诸多条款。

最后,所有的禁止性条款都废除了,而且,我拒绝归还这只脾气很差的猫。从此,
我们开始了不懈地斗争。其间互有胜负。

下出租车的时候,我又开玩笑,"又一只猫钱出去了。"二十五元车费。如果算
上返回,那么,又多出一只猫。

如果算上他每个月的消费,已经可以买很多只猫了。各种很乖的,听话的,会爬
裤腿的,会蹭人的。甚至,能带出去溜的猫也能买得起了。

上楼。等医生上班。挂号。听一个女生絮絮叨叨讲她家的狗怎么着了凉。交费,
差点踩一只藏獒的尾巴上,它阴沉地看着我,被主人拽到一个角落里呜呜地示威。

医生开始检查老猫。

这家伙在家里很威风的,不仅这几天不让碰屁股,平时那也是难得允许抱一下,
百般挣扎和反抗才得亲近。在医院里,老猫完全呆住一样,摸屁股就摸屁股,掀
尾巴就掀尾巴,捅肚子就捅肚子。估计如果穿衣服的话,一定会配合地撩起来。

我想说"老猫,你不是挺有能耐的么",但是似乎一个字也没有说。

终于,医生说:"好象是屁股旁边有伤口。"

老大夫很瘦,一直抽烟,整个屋子里都弥漫着旱烟那种非常强烈的味。不过此刻,
他的皱纹看着也有几分可爱。

"也没有锋利的地方啊,从高处掉下来摔的?"

"老猫啊,你岁数大了,可不能再DESE了啊。"

洗肠,因为几天不排便了,猫还算老实。洗伤口,把烂了的腔打开引流,这家伙
在某个瞬间咬了我三四口,一排浅口子。然后被戴了伊里莎白圈,一直以为是防
舔伤口,没想到还能防咬人。我终于有机会说,"老猫,你不是挺有能耐的么。
你怎么不咬啊。"

后来又一次试图咬我,咔嚓一声咬在圈上。哈哈。

几天以后,老猫开始慢慢有了精神。每天上药、头几天打针,都可以开始顽抗了。

老猫,你又开始抢肝吃了,又开始到处散布猫毛让我鼻子不舒服了。所以我又开
始想你价值二十元,想那些没有买到的更可爱更听话的小猫们。

即使你那么便宜,即使能用你换很多听话可爱的小猫,可是,它们又怎么能让我
气愤让我与之不停地斗争。那些,又怎么能比上你的万分之一。

老猫,请永远活下去吧,陪伴我――我们还有很多事没有分出高下呢。

20101117

调度的力量zz

调度的力量zz

Magicloud 写道 "200+行的内核补丁被Linus Torvalds称赞为"a killer feature"。
补丁的作者是Mike Galbrai,他刚刚发布了第三个修正版。该补丁为内核的调度器加入了224行代码,同时去除9行代码,起作用的代码总共233行。补丁的用途是设计自动为每个TTY创建任务组,降低延迟改进桌面交互性能。Mike完成的测试发现,最大延迟下降10倍以上,桌面的平均延迟下降60倍。Phoronix的测试显示,在Core
i7 970机器上编译内核时,同时播放的1080p《大雄兔》视频仍然很流畅。该补丁预计将合并到Linux 2.6.38中。
视频演示:一,二(YouTube)

20101115

学习就是一件要耐的住寂寞放的下欲望舍的得享乐的事 zz

学习就是一件要耐的住寂寞放的下欲望舍的得享乐的事 zz

2010-09-24 21:44:20
寂寞。
一个人早起晚睡不难,但在一群晚起早睡的人中早起晚睡不简单。
没人陪你占座,没人陪你背书,没人陪你写作。学习就是孤独的。
食堂,寝室,教室,你就只能去这三个地方

厕所你都要算好时间再去

没人经常短信你,没人经常鼓励你,没人一直关注你
不管是打雷下雨下雹子还是刀子。都要早起前行去学习,你的伙伴会贪睡不去,但不可以是你。

你的同桌室友饭友学友各种友都可以中途打断他们的计划,你不可以!你要学习
你一个人背着书包跑来跑去,你以为很傻很土很幼稚吗?

别人笑,是羡慕,你笑,是自信。


欲望。
想睡懒觉,想看电影,想吃大餐。但是他们都是花时间的事,占用学习时间的事。
可以放假,可以休息。
可要是每天多睡2小时,一年就多睡掉30.4天,一个月没了。每天看两集电视,又是一个月没了。
你还惭愧啊?

享乐。
她去看演唱会了,他去唱K了,他们去开房了。
都和我无关,因为我要学习。

他们打游戏,他们蜜月旅游,

都和我无关,因为我要学习。
钟南山也坚持运动打篮球,每天都跑步。但是人家大年三十上午还在搞研究。
没资本还不学习,

没背景还不学习,

智商不够还不学习

你好意思一把年纪了还吃爸妈的么。你有touch nano shuffle iPhone macbook,是你挣的么?

你穿Burberry喷Dior拎Prada,你儿子用什么?
你爸给你买房买车,你付得起物管,付得起年检么?

你穿什么,用什么,开什么,住什么,什么都不算

你读什么,看什么,想什么,做什么,什么都重要

教室前排的姐姐在你来之前就在那GRE,你走了,从寝室出来打水,她还在GRE。她GRE她GRE她GRE,你连六级的 分都刷不高

周末你多睡一个小时,到教室,自己的位子都被人占了,你还好意思说,同学,对不起,这是我的位子?

为了多睡一下,你丢掉了自己的位子,值吗?


你智商不高,情商不高,各种商不高;你背景不够,资本不够,各种不够;你还不学习?

你高中傻乎乎的把自己家的全套钥匙送给女朋友,你以为很浪漫很抒情很温柔很韩剧?

你不学习,你连一个钥匙串都买不起

你追求加内特詹姆斯科比麦蒂邓肯霍华德......

你不学习,连一张季前赛门票都买不起

你想去荷兰,想去普林斯顿,想去各种地方

你不学习,你就继续想吧.

你想去美国念研究生,欲在一个新的起点新的高度开始自己新的人生

你不学习,你连资格都没有

你羡慕周围同学拿到几千的奖学金

你不学习,你永远与领奖台无缘

别人花言巧语追女朋友,别人周末上街大包小包,别人假期飞来飞去

都不关我事,我要学习

别人逃课,兼职,游戏,

都不关我的事,我要学习

你说我没智商,没背景,没资本

没关系,我要学习

你说我固执,老套,OUT

没关系,我要学习


所以,学习就是一件要耐的住寂寞放的下欲望舍的得享乐的事。
你好意思那么懒那么不守时那么吃那么玩那么�哩叭嗦不看书么!!!
你好意思穿着各种签名在校园里面游荡,你好意思整天插U盾上淘宝?

你要学习,你要学习,你要学习!

(摘自网络,拿来自勉。)

20101109

Emacs补全利器:auto-complete+gccsense zz

 Emacs补全利器:auto-complete+gccsense zz

看起来很美,可是"UNIX-like system that can build GCC is required. Currently Windows is not supported, but in the future, it will be supported by combining with MinGW."

 

via Emacs中文网 by ahei on 11/7/10

作者: Menglong Tan

1 前言

搜索引擎上关于emacs代码补全的文章一大堆,大多讲的是cedet、semantic、ctags之类的。我自己也尝试过一些"主流"的组合,奈何都不来感啊。用得最长的也就auto-complete了,但是用的也仅仅是它自带的buffer内内容的补全,基本不涉及语义的补全。偶然发现了gccsense这个东西,简单配置了下,比较满意。有图有真相

Emacs gccsense


我绑定的补全键到M+/,这样,遇到要补全的地方,按下M+/就出现了补全菜单,旁边是提示。

2 简介

auto-complete提供一个补全的前端,通过不同的后端,支持ctags等。
gccsense是补全的后端,能提供符合语义的补全。因为它是直接利用gcc的代码,使用了编译器内在的分析器。它是一个独立的程序,目前通过插件可以被用到emacs和vim的补全上。因为是用的gcc的代码,理论上可以补全所有gcc支持的语言。
auto-complete和gccsense是一家出的。

3 安装

3.1 配置auto-complete

下载:http://cx4a.org/software/auto-complete/
配置.emacs,我的auto-complete在/mydoc/lib/emacs-plugins/下

; auto complete (add-to-list 'load-path "/mydoc/lib/emacs-plugins/auto-complete")   (require 'auto-complete-config)   (add-to-list 'ac-dictionary-directories "/mydoc/lib/emacs-plugins/auto-complete/ac-dict")   (ac-config-default)

3.2 配置gcc-code-assist

gcc-code-assist就是在gcc代码基础上改的,主要用来从代码中提取补全信息

  1. 下载:http://cx4a.org/software/gccsense/#Downloads
    编译安装之前,准备好环境,debian系统如下:
    sudo apt-get install build-essential libgmp3-dev libmpfr-dev flex ruby rubygems libsqlite3-ruby

    其它系统,如freebsd、macos请自行参考用户手册。

  2. 配置安装:
    $ tar xvjf gcc-code-assist-*.tar.bz2   $ cd gcc-code-assist-*   $ ./configure --program-suffix=-code-assist --enable-languages=c,c++ --disable-bootstrap --disable-multilib   $ make # -j2   $ sudo make install

    安装成功之后执行下,如果有正常输出,就说明安装成功:

    $ gcc-code-assist --version   $ g++-code-assist --version

3.3 安装配置gccsense

gccsense这个包包含一些辅助函数,以及编辑器的插件

  1. 解压缩之后,执行:
    $ cd gccsense-* $ sudo cp bin/* /usr/local/bin/
  2. 执行一下命令,确保安装成功:
    $ gccrec --version  $ autopch --version
  3. emacs的插件文件为etc/gccsense.el,放到插件目录然后,在.emacs里面加入
    (require 'gccsense)

    即可。
    由于我的gccsense.el放到了。/mydoc/lib/emacs-plugins/c下,并且把auto-complete的补全命令绑定到了M+/上,所以这部分配置如下:

    (add-to-list 'load-path "/mydoc/lib/emacs-plugins/c")   (require 'gccsense)   (global-set-key "\257" (quote ac-complete-gccsense))

    ok,搞定。

4 主要模块介绍

在介绍使用前,简单介绍下几个主要模块的作用

  • gcc-code-assist
    gcc4.4代码基础上改的那位,用来从被补全代码中分析出补全信息
  • gccrec
    编译一个文件,往往要加上编译参数的,比如自定义的include地址。但是编辑器在补全的时候,是不知道这些的,硬生生地调用gcc-code-assist来"模拟编译",参数补全造成的错误会扰乱补全信息的获取。
    gccrec就是为了解决这个问题,在使用编辑器补全之前,需要执行一次gccrec,它会将编译参数信息存到~/.gccrec这个sqlite3的数据库中。具体用法参见下一节的示例。
  • autopch
    用来启用预编译头,来提高速度。
    autopch的相关部分请各位看官自行参考用户手册吧,后面的示例代码简单,不需要这个东西。

5 实例

  1. 准备一个测试cpp文件,test.cpp:
    #include <string>   using namespace std;   int main()   {       string s; }
  2. 使用gccrec记录编译命令
    gccrec g++-code-assist test.cpp

    这里可以认为g++-code-assist就是g++,参数一样的,比如-I -l之类的。

  3. 用emacs打开test.cpp,享受补全吧
    在string s;后面接着输入s.,然后按M-x ac-complete-gccsense,就可以利用auto-complete和它的gccsense后端来补全了。

6 附录

这里贴上我的emacs相关部分的配置文件。
我把补全的命令绑定到了M-/上面,
gccsense.el放到了/mydoc/lib/emacs-plugins/c/下面,所以这样写:

(add-to-list 'load-path "/mydoc/lib/emacs-plugins/c")   (require 'gccsense)   (global-set-key "\257" (quote ac-complete-gccsense))

7 参考

分享家:Addthis中国

 
 

Things you can do from here:

 
 



--
Sincerely,
YANG Guifu
School of Computer Science and Information Technology
Northeast Normal University
Changchun, P.R.China
----
杨贵福
无不大工。

20101108

引体向上

引体向上

记得当年引体向上一直优秀来着,最近又试了一次。

大半夜的,给隐形眼镜去蛋白质的时候,发现没有生理盐水了。去买。

回到家楼下发现,没带钥匙和手机。

话说N年前的时候,一个门洞的邻居们要装楼下的防盗门。一楼的老太太说,要装
就装没有对讲的,不然不交钱。有对讲的对她没用,嫌贵。我住五楼,态度是要
么就装带对讲的,要么不交钱。

而且我想好了,如果装了防盗门没我的钥匙,我一定会把门砸了。

结果没装成。相信不是因为我的意见,而是因为大家都与老太太的意见相左。

这次暖房子工程,说是政府出一部分钱。结果防盗门关的时候特别重不说,没有
对讲,只对讲的位置上有个方形缺口。

根本没人征求我的意见,除了收钱和补收钱的时候。

本来以为没事,没想到出来匆忙,穿了没有腰带的裤子,没带钥匙。

更可怕的是没带电话。

午夜,砸门是不合适的。尽管一楼住的还是那位老太太。

中间找超市的小姑娘借了个电话打,她很担心的样子。此处略去不表,反正是失
败的尝试。

说到正题了。我准备爬雨达从一楼半进去。

雨达,就是一楼的门上面的那个部位,探出来一块。不知谁家在上面晾了些大葱。

眯着眼睛――因为戴的框架眼镜,视力有限――换各种角度看来半天,在楼道灯
光的映衬下,确定雨达上的窗户里面没插,有条缝。

第一次尝试。尽力踮脚,手尖刚能碰到。跳起抠住边缘,引体向上。探头看了看,
没有玻璃叉子啥的致命异物。有大葱若干,影响不大。

准备第二次的时候,先引体,然后这么蹬下墙,或者那么在墙边蹭一下,然后右
小臂上去,然后左小臂,或者腹部……

第二次尝试。前面都顺利,右小臂上去以后,左侧刚用力,发现坏了。

我忘了前一天受了伤。也是大半夜,心情郁闷,出去暴走伊通河岸。看中了一块
假山,就冲上去爬。石头又凉,屋檐的设计也……算了,我承认是我老了不中用,
或者年轻太冲动。反正最后把左肋骨在石头上磕了一下,当时听到咔嚓一声。好
在没断。

不过引体向上时一用力,感觉到有点疼。心想,下次吧,下次做些准备。

第三次,先让自己激动起来,心PENGPENG跳。然后起跳,引体。完了。这是所有
以后失败尝试的开始。从那以后,小臂都没有上得了平台。

后来我搬了台自行车。但是发现也没啥用。它能帮助前半段步骤,但是我需要帮
助的恰是身体悬空以后,那时已经踩不到车子了。而且向下一看,吓我一身冷汗。
如果一悠的时候失了手,可就被自行车接着了,那家伙张牙舞爪的。好不容易才
又安全踩在车横梁上,松了一口气。

然后车子搬到门的另一侧,想借助排水管……

后来我悲哀地发现,此前一直把电影和网上跑酷的视频当了现实,把自己投射上
去了。原来这么一蹬那么一踩如此之难。更加之前一天伤了肋骨,决定以后只用
静力不敢使冲劲了。

只好一边尝试各种爬法,一边感觉到汗水开始干下去,在夜里挺冷的贴在身上。

当看到楼道里的灯依次从上向下亮起,最后楼门洞开,我知道,得救了。

后记是当天就发现两腕酸疼,原来需要锻炼的是腕力。第二天第三天下腹部至上
腹部肌肉紧张酸疼(注:我续连一百个仰卧起坐的时候,第二天也没有这么明显
的感觉),腹肌也要用这么多,可是万万没有想到。

这个故事告诉我们:

一、要坚持原则,没有对讲系统的防盗门坚决不能同意安装;

二、要永远穿有腰带的裤子,这样可以随时把钥匙带在身上;

三、手机很重要,不仅要24小时开机,更重要的是随身携带;

四、岁数大了,少扯淡。

20101103

无IP的打印服务器解决方案 zz

无IP的打印服务器解决方案 zz

刘香玉的日志

刘香玉的主页 » TA的所有日志 » 查看日志
打印机服务器不能上外网,可以实现局域网内打印机共享吗?

已有 5 次阅读 17小时前
今天试验了一下,可以。
具体情形是这样的:
校园里每台电脑都需要在iNode软件上输入自己的帐号、密码,自动获取IP上网。但是,办公室里几个同事都只有一个帐号供自己用,没有多余的帐号供给装打印机的电脑(暂称打印机服务器),所以打印机服务器不能上网浏览校内外的主页。
虽然这些电脑都连着同一个路由器,构成一个小局域网,但是由于iNode软件的限制,不能给每台电脑分配192.168.X.X这样的固定IP,必须保持网络属性中IP地址是空白。所以,传统的用IP查找电脑、实现打印机共享的办法也用不了。

那么最终怎么实现打印机服务器不能上网浏览网页,却能让其他电脑共享它的打印机呢?
呵呵,其实挺简单,用工作组就可以了。
就是说,这些连在一个路由器或者HUB上的电脑,都在一个工作组上,通过网上邻居"查看工作组计算机"能找到彼此,就可以了。

设为同一工作组的具体步骤:
首先,确保这些连在一个路由器或Hub上的电脑的工作组名称都和打印机服务器的一致。(我的电脑>属性>计算机名>工作组>更改,重启)
第二,所有电脑都在"本地链接"属性那里安装了两个协议:"网络的文件和打印机共享"、"NWLink IPX/SPX/NetBIOS
Compatible Transpor..."。
第三,所有电脑开机,在网上邻居里点"查看工作组计算机",等一会儿就应该可以看到各机。至此同一工作组设置完毕。
然后把打印机服务器上的打印机属性设为共享,当别的电脑在工作组中看到服务器时,点开双击打印机图标即可。

不知遇到类似情形的朋友有多少,先记下来供参考吧。。

20101027

城市就是大农村

城市就是大农村

又是很久没有博客了。

其实,最近过着混乱而忙碌的日子,不仅博客,连日志都停了。所有一切每日计
划都受到影响。都在等着紧急任务完成,然后一切恢复正常。

好象,这是世界末日前最紧张的时刻,过了这一会儿,就会全都恢复正常。

也许会,也许不会。

周一,下午与建一、包师弟、王伟分别讨论。跟建一写程序以前,打起精神戴上
隐形眼镜,为了看清屏幕。我以为所有的感觉就会回来,然后一切如新。

但是,我最后离开的时候,忘了取回框架眼镜。

天有些冷,糟糕的是风挟着沙子往眼睛里灌。我只好一会儿用左眼,一会儿用右
眼,眯着另一只,等眼泪冲洗干净眼镜。

29分钟,从计算机面前赶到公共汽车站,再加上等车的时候。

黑暗里,大家在车灯里抻着头望向左方,像一排企鹅。

后来决定步行。依然一会儿左眼,一会儿右眼。摆开胳膊,弓箭步,就像十多年
前我依然年轻的时候一样。

回到家,发现框架眼镜丢了。因为眼睛进了沙了,摘了隐形,在一片模糊的屋子
里走来走去。

我不喜欢这个颉颃。从来也没有。

记得大学的时候,我就说:长春的雪太少了,而且,往远处看,居然没有山。

后来,一年的时候,长春感觉就像瞬间一样,变成了一个大都市。打车和公交都
非常困难。以前从来也没有想过,半小时的路程,会变成二个小时。

有一次,丁老师对出租司机生气,因为他把我们拉到师大对面而不是按事先要求
的到门口。我说:哥哥啊,现在有车拉你就不错啦。现在出租拼车都不经你同意
啦。同时,我就没见过哪个司机师傅抽烟经过乘客同意的。

暖房子和暖气改造都是没有预约的,要求留人在家――甚至连这个也不通知。城
市,不过一个大农村。

这样的一个时代,这样的一个城市,我充满绝望。

这时,就想起当年赵元良老师教导我的话。

在我大四快毕业,或者快毕不了业的时候,我坐在机房里发愁,感叹四年啥也没
学着。赵老师说:孩子,以后你就知道了,这些都只是人生中的一些小小的磨难。

我不能清楚地记得原文了。也许他在这句话之前或者之后叹了口气?也许,他还
补充说,更苦的还在后头?时间让这些都模糊了。但是,这些话一直一直都鼓励
或者说帮助着我。

反正更苦的还在后头,眼前的这些,都算不了什么。

不过,十多年来,我从未想过:如果后面的更苦,我们还有什么希望。

就希望问题,当年问过李树杰老师,如果工程师要一直学习新的技术,那还有什
么希望。

李老师回答:工程师这个职业就是这样的。

虽然很多年以后我认识到,技术的训练需要时间,而且除非训练本身,没有替代
的方法可以获得。但是,这也彻底粉碎了少年的梦想,如何如何以后,就可以过
上幸福无忧的日子了。大学之前,老师们都是这样欺骗我们的(似乎除了高一班
主任宋老师),上了大学这些谎言不攻自破。不过,愚钝如我,没有悟出,世事
都是这样的道理。

因为暖气改造,所有的旧东西都翻了出来。一件件地扔掉,或者重新包装起来。
时光重新回到十五年前、十二年前、十年前、五年前、两年前、一年前。

老师们的叮嘱言尤在耳。如果那是一道作业题,不知道老师们面对我现在潦草的
答案,会是怎么样的叹息。


其实很多时候写博客读博客,不过是博得一笑。人生就像是小丑,掩在面具下做
出各种有深意的表情。如果看得懂的,不妨一哭,看不懂的,只有能逗乐的才是
好文章。

无奈今天实在是没有情绪。各位看官,你就当是听到小丑自己哭了出来吧。

或者,这也是今天这出折子戏的一节。所以,别忘记叫好。

20101025

西方的智慧 笔记 意图与原因

西方的智慧 笔记 意图与原因

西方的智慧

罗素
亚北 译
中国妇女出版社
2004年1月
---------------------------------------
2010-10-25 02:08:01

pp.111
关于物质因和形式因,这里没什么可补充的。我们不再把它们当作原因,它们只是因果情况中的必要条件,因为任何事情要发生,都必须在某个地方存在着某种条件。至于动力因和目的因,这两项都值得我们花点时间来探讨。现代术语简单地把动力因称为原因。因此,一块石头从台阶上掉下来,是因为某人或某物推了它一下。在物理学中,这是被人们认识到的惟一因果关系,科学的总体趋势就是试图用动力因来进行各种解释。今天的物理学没有吸纳目的因概念,尽管它的词汇里还保留着目的论的痕迹。吸引、排斥、向心之类的词都是目的论概念的残余,它提醒我们,直到大约350年前,才有人对亚里士多德的因果论提出质疑。目的因果论带来的不利影响与潜在性概念(前文讨论过)带来的麻烦极为相信。说石头掉下来是因为它有掉落的趋势,这实际上等于没有作任何解释。但在某些时候,目的术语又的确能起到某种合理的作用。比如,在伦理学领域里,把某个目标作为一定行为或行动的原因并非没有意义。总的说来,人类的活动也是如此,对未来事物的当前期望就是我们采取行动的动机。动物也是这样,有时候人们甚至还有可能认为这种说法同样也适用于植物,因此很显然,当然们考虑生物和社会问题时,目的性并不总是微不足道的。亚里士多德正是出于他的生物学兴趣,才提出了目的因概念。由此看来,潜在性与目的性显然结合在了一起,生物学家面临的是一粒种子怎样长成大权树,一个卵子怎样发育成动物的问题。亚里士多德会认为,橡果潜在地包含着橡树,至于长成大树,则是因为有实现自我的倾向,当然,这种说法是运用这些概念的一个浅显的例子。更通俗地说,随着科学的发展,目的因解释将被动力因解释所取代,甚至心理学也在顺应这一趋势,精神分析学(不管它有什么样的优点和缺点)就是在试图根据以前发生的情况,而不是即将发生的情况来解释人的行为。

目的论观点最终从下述事实上获得了自身的力量:我们周围的自然环境似乎展示出了某种秩序,与动力因有关的因果必然性似乎是一种盲目的力量,因为其运作无法解释这种秩序。另一方面,目的论却仿佛很有预见性,生物学的秩序在此很可能又让人们认同目的论观点。但不管怎样,亚里士多德认识到了必然性和目的性的效力。在这样的基础上,自然科学显然是不会繁荣起来的,尤其是物理学遭到了严重阻碍,直到伽利略时代,人们在方法上回归到柏拉图那里之前,这种状况都未见好转。由于数学家不大容易像生物学家那样想到目的性概念,因此柏拉图没有像亚里士多德那样考虑到这一点也就不奇怪了。目的论最终因其拟人特性或神学特性而出了差错,因为只有人才会具有意图,才会追求目的,即使假设它们似乎有目的,也没有什么好处。但是,我们完全可以适当谨慎地使用趋向概念,就像我们有可能用到潜在性概念。

说一块石头具有坠落的趋向,也就是说如果给定某种条件,它就会掉下来。然后亚里士多德却不这样想。他认为目的性与意图有关,他是从秩序的存在中推断出这一点的,秩序在他看亚秩序就象征着规划。遵循这样的原则,物理学研究显然不可能繁荣起来。因为,如果探索者的未知欲为虚假的解释所满足,那么自然现象的真实解释就无从获取。亚里士多德对科学,尤其是天文学的发展,造成了严重的阻碍。目的性理论给万事万物都分配了适当的位置,这使得他把尘世和尘世以外的领域区分开来,并主伙这两部队分受到不同原则的支配。如果和阿卡德米先进的天文学相比,这种纯粹的妄想简直就等于精神错乱,然后真正的危害还来自于那些不敢对亚里士多德持批判态度的人,他们全盘接受,连糟粕也不肯放弃,从而使得亚里士多德在各个领域都留下了坏名声。

20101024

omnet的一些资料

omnet的一些资料


在计算机网络的理论研究中,设计一个新型的网络协议,需要对该协议的性能进行合理的评价。可以进行这种评价的方法大致有以下三种:
 
数学分析的方法。这一种方法有数学理论基础的支持,因此可以得出精确而合理的结果。但是另一方面,进行数学分析前需要首先建立一个合理的数学模型来对网络状况进行合理的描述。而这种模型的建立,往往又是无法全面兼顾各种情况的。因此,对网络协议的数学分析之余,需要还有具体的实践来证实这样的分析的有效性。
 
网络模拟器。这是一种将一些网络环境量化后,通过计算机来进行模拟的方法。实践证明这种方法是行之有效的,因为它可以利用软件模拟硬件环境,节省了开销,也节省了网络协议性能评价的代价。GloMoSim[1][2][3]就是现在比较流行的模拟器之一,其他比较著名的网络性能模拟器还有:NS2(Network Simulator Version 2)、OPNET(事实上是NS2的商业版)、QualNet(GloMoSim的商业版)。
 
试验台(Test bed)。这种方式就是把需要的试验做到硬件上,利用现实的环境,进行确实的测验。这种方式一般在网络模拟器性能估价比较完备的基础上进行。当然,现在有很多设备都支持对该设备进行编程(比如可以将软件在Palm上运行),现在利用这种方式进行实验的代价也已经大大降低。
 
对于大多数网络理论的研究者来说,除了从数学分析上对所做的协议进行评估以外,使用网络模拟器是一种快速而有效的方法。


hhOmnet仿真分为科研版和商业版。

目前使用的是科研版。(2010.3.15)

下载与安装:

1.到http://www.omnetpp.org/上下载http://www.omnetpp.org/omnetpp/doc_details/2199-omnet-40-win32-source--ide--mingw-zip,该版本为windows下的版本,最新版本为4.0.该版本只有源代码版,没有exe直接安装的版本。

2.下载jdk-7-ea-bin-b57-windows-i586-30_apr_2009.zip,因为omnet的运行需要JRE(java运行库)。安装JDK。

2.解压后(路径中不能包含中文和空格!),根据omnetpp-4.0-src-windows\omnetpp-4.0\doc\Readme-MinGW.txt的介绍:先执行mingwenv.cmd,然后./configure,然后make,然后输入omnetpp即可运行(或者直接双击运行omnetpp-4.0-src-windows\omnetpp-4.0\ide\omnetpp.exe)



Simulation with OMNeT++
用OMNeT++进行仿真的大致流程如下:

一个OMNeT++模型是用通过交换信息来通讯的组件(模块)来构建的。模块可以嵌套,也就是说,几个模块可以组成一个复合模块。在创建模型时,你需要将系统映射到一个相互通讯的模块体系中。
用NED语言定义模型的结构。你可以在OMNet++提供的IDE中以文本或图形化方式来编辑NED文件。
模型的活动组件(简单模块)需要用C++来编程,当中要使用仿真内核及类库。
提供一个拥有配置和参数的omnetpp.ini文件给模型,一个配置文件可以用不同的参数来描述若干个仿真过程。
构建仿真程序并运行它。你可以将代码链接到OMNet++的仿真内核及其提供的一个用户接口:命令行和交互式接口或图形化接口。
仿真结果将写入输出向量和输出标量文件中。你可以使用IDE中提供的分析工具来进行可视化。结果文件是普通的文本,所以你能用R,Matlab或其它工具来进行绘图。

OMNet++ 10 分钟教程



OMNet++ 中的 NED 语言学习

20101019

梦与现实

梦与现实

今天晚上,上校车前请司机在东岭停一下,然后睡着了。我醒过来的时候,发现
他叫了我好几声。


还有哪一天的中午做梦,两条大蛇张着雪盆大口扑面而来。第二条完全挡住视线
的时候,持续不断地警报声,花了好一会才醒过来认识到是闹表。


更早一些。梦到我在上课,学生都不好好听。我怒不可遏,拉住其中一个,扔到
门外。然后看到一些老外,从课堂中穿过。我大喊:你们谁负责,这是我的课堂,
都出去。监督着着他们往外走,一个老外贴近我,我捉摸着,来个过肩摔?然后
醒了。

今天上午上课睡着了,实在是挺不住。最后几节全是蒲老师翻译的。

现实是如下的对话,和芬兰教授之间的。
今天一早。
你上厕所看书啊。
是啊。
我最近在厕所看 西方的智慧。
罗素的。
恩纳。中文的。
还是看英文的吧。

感叹一下。

20101015

如何摆脱强烈的情绪? zz

如何摆脱强烈的情绪? zz

by 李笑来

每个人都有过这样的经验:各种情绪诸如喜怒哀乐强烈到一定程度的时候,大脑几乎处于空白状态,各种知觉几乎都临近失灵……

脑科学家的解释通俗地讲是这样的:

大脑可以这样由里到外分为三层,第一层负责"反射",第二层负责"情绪",第三层负责"理智"。我们的身体对大脑来说,就好像是个大电池,要为大脑提供足够的能量。可问题在于,无论如何,那能量是有限的。所以,当我们感受到强烈情绪之时,大脑的第二层就占用了大量的能量,进而使得负责理智的最外层因缺乏足够的能量而进入休眠状态……

情绪是很难控制的──因为它本身就处于"更底层"(相对于理智来说)。并不像大家想象得那样,把情绪压制下去就没事儿了──更可能的结果是,那情绪越是压制越是强烈。

事实上,更为有效的建议是:关键不在于压制情绪,而是在于唤醒理智。按照脑科学家的研究结果来看,由于能量是有限的,所以,一旦唤醒理智,情绪将自然而然地被削弱,甚至只能休眠。

那又如何唤醒理智呢?也不是很难。

第一种手段是,先了解以上的道理之后,将来感受到强烈情绪的时候,对自己用语言描述自己正在经历的感受──或者在心里对自己说,或者用笔写下来,或者向别人说这种方式并不推荐,但它是基督教吸引人的重要原因之一,因为有什么事都可以跟神父说……)。这种手段看似平常,但有着神奇的功效。原理是当我们使用语言的时候,必须启动负责理智的第三层,否则我们没办法使用语言去描述任何事情。一旦第三层开始启动了,它就会渐渐占用更多能量。

第二种手段是,启用即时感受。这是个新的概念。当我们感知周遭事物的时候,实际上我们有两种方式:模式认知,即时感受。使用模式认知的时候,信息交由第二层处理,然后再返回第三层;使用即时感受的时候,信息直接由第三层处理。什么事即时感受呢?就是你能听到身边的声音,看到眼前的景象,体会到风吹过皮肤的感觉……

所以,当你已经意识到自己被强烈情绪影响之时,先用第一种手段(对自己用语言描述感受)启动第三层,然后再运用即时感受(关注一下可以听到的声音,可以看到的景象,可以闻到的气味,可以感受的触觉等等)强化第三层的运转,让它能够占用更多的能量,恢复正常地运转能力。

一旦负责理智的第三层重新被启动,并且能够正常运转之时,你对第二层所能够体会到的情绪将有"被更新"的描述,即,所谓的"理智地对待情绪"。

很多人由于不懂这样的道理,所以,他们是被反方向牵引的。当他们突然被强大的情绪所影响之时,第三层休眠掉,而后又受不了第二层过于活跃,于是他们下意识地启动负责反射的第一层──吃和睡就由这一层管理)。日常生活中经常看到女生失恋之后就变胖了,大抵上就是为了使第二层休眠所以不顾一切地启动第一层才造成的。

参考阅读:《是我们的反应,还是鳄鱼的反应?》

20101013

博大家一笑

博大家一笑

脑袋完全不行了。
看到封邮件,是EC-SPR协议,想包师弟手看快,
看了大半天,越看越觉得是我写的,
想,啊,应该是在我原来的文档基础上改的;
后来就觉得包师弟太偷懒了,
协议也没怎么改啊;
一直看到最后。
看信的结尾,然后看开头,
我发给我自己的。
博大家一笑。
请各位注意休息。

六天不悟,七天就能悟么?意思意思得了 zz

六天不悟,七天就能悟么?意思意思得了

【皆是虚妄,为何不能交媾?】【有本事自己寻缘。】【万法皆空,为何不能食肉?】【庙里没有闲钱。】【梦幻泡影,为何不能蓄发?】【你师娘摸不习惯。】

【师傅,一切如梦幻泡影,可在梦里我还有哭有笑,甚至还有了一头长发,梦幻泡影虽易逝,也比这循环往复的无聊强太多了。】【你睡醒了再跟我说话。】

如是我闻:时,佛见须菩提静坐莲台吃面,佛问,须菩提,何不就蒜?须菩提白佛言:世尊,我念经已经够臭了。

如是我闻:须菩提庆生,佛告曰,此是一世,前有无穷世,后有无穷世,所谓生日只是来日,所谓死日只是去日,来去如烟,何必庆祝,你就别跟我要蛋糕了,乖,Happy
birthday to you 。须菩提白佛言:Are you fucking kidding me ?

【师傅,你知道我在想谁么?】【昨天那个女施主。】【你怎么知道。】【我也在想。】【那你怎么睡得着?】【那是大方丈的闺女,想也白想。】

【师傅,想必我在庙里呆不久了,我怕我控制不住自己。】【还想她呢?】【嗯。】【那就别控制了,为师传你一套迷魂经。】【你怎么不用?】【此经一生一念,一念一缘,我已经有你师娘了。】【我靠,那我还是等等看还有没有更合适的吧。】【操,没用,都会腻的。】

【小和尚,听说你喜欢我?】【不好说喜欢,只是看见你会乱】【听说你还想娶我?】【不好说想娶,只是想永远和你在一起。】【妈逼,油嘴滑舌,你丫天秤座的吧?】【阿弥陀佛,心直口快,女施主别不是天蝎的吧?咱俩正合】【合你大爷,你们佛门弟子还信这个?我爹怎么带的队伍。】

【师傅,为什么咱早上要敲钟啊?】【因为我们没养鸡。】

【师傅,你什么时候教我武功?】【佛门中人,慈悲为怀,大方丈有令,我们这种清净小庙,不可学少林喊打喊杀。为师传你诸般经义,读懂念通,内心强大,见着那些花拳绣腿的,舌灿莲花,灭他们跟玩儿似的。】【师傅,我懂了,知识就是力量。】

【咦?你怎么肿成了这个样子?又去调戏小北了?】【不是,少林的人打的。】【为什么?】【我跟他们舌灿莲花来着。】【唉,我说什么你都信,真可爱。】

【师傅,《易筋经》听起来很牛逼啊,我想学。】【那是通过刺激经脉给自己带来快感的土办法,都是买不起大麻追不上姑娘的和尚才练的。】【我好像就是....】【可我不是,所以不会,哦耶。】

【师傅,今天晚上我能不住庙里么?】【别装了,出去冻一夜回来和师兄弟们吹牛逼的事儿我也干过,想开点儿吧,色即是空。】

【师傅,和尚有自杀的么?】【有,但各寺都封锁消息,佛门已是逃避现世之地,你来了还死,传出去这不显得我们不专业么?此世不乐,来世就乐么?这些人真痴。】【那来世就一定不乐么?】【嗬,跟我抬杠?那你死去吧。】【你看你,辩经嘛,小心眼儿样儿。】

【师傅,那你相信西方极乐么?】【那都是骗施主们的。】

【为师现赐你法号澈丹,取清清澈澈,圆润如丹之意。】【师傅,我又怎么着你了.....】【你知足吧,你师兄宨丹都没说啥。】

【师傅,你法名为什么叫空舟?】【大方丈说我度不了人,也难自度,所以赐名空舟,由我自横。】【那我还跟着你干嘛....】【你执念太重,跟着谁也到不了彼岸,不如索性和我负负得正。】【为什么啊?】【你看,你总问为什么。】

【师傅,其实我应该叫你师父才对吧?】【没事儿,输入法怎么默认的就怎么叫吧,随缘。】

【师父,你师父是谁?】【大方丈。】【他的呢?】【他师父就是咱庙的创始人,据说当年是混的,后来路上捡了本儿经,就拉了一票弟兄,占山为王,广结善缘,干起了这普度众生的勾当。】【咱庙还有这背景?】【不然你以为为什么我们还没被少林吞并?】

【师父,小北和她娘为什么不住庙里啊?】【大方丈怕影响不好。】【那我师娘为什么就能住庙里?】【我一个出家人,还在乎什么影响。】

【一切如梦幻泡面,有蒜就蒜,没蒜就算,观自在,望远山,一切有为法,当做如是观】【师父,我爱吃米饭。】【.....好了,今天的早餐,啊不,早课就上到这里吧。】

【撤丹,听说你偷鸡被人撞见了?大白天就去偷鸡,你可真有创意。】【师父,没事儿,我说我是少林的。】【嗯,好孩子,鸡呢?赶紧给你师娘送去,出家人不能杀生。】【再说咱也不会炖啊。】【阿弥陀佛,这孩子,真可爱。】

【师父,人家别的寺都叫方丈,为什么咱们得叫大方丈?】【这不显得咱大气么。】【那我以后就管你叫大师父吧?】【嗬,你在这儿等着我呢!】

都看的很明白,都活得很不明白————空舟禅师与诸君共勉。

【师父,咱庙为什么叫遗寺啊?】【说来话长。本来叫义寺,就大方丈那黑社会师父取的,后来他死了,大方丈说这名儿太不禅了,就叫了疑寺。谁知那年起了瘟疫,正该是香火旺的时候,结果百姓都不来咱庙,就改成遗寺了。还有人提议叫逸寺,让大方丈否了,他说,蒙谁啊,你真那么逸还出什么家?】

【小和尚,你到底喜欢我吗?】【喜欢】【出家人不打诳语?】【出家人连肉都不吃连姑娘都不泡,他们的话你也敢信?我师父说,出家人的话都是诳语。小北,这话不是出家人说的,这是我说的,我喜欢你。】

【师父,今天怎么哪儿哪儿都这么黑啊?】【澈丹,我们佛门中人,不要学人家针砭时弊。晨鸡报晓,昏鸦鼓噪,都在红尘里闹,你以为黑白的红尘就不是红尘了?活着的人就不是死人了?唉,去叫你师娘吃饭。】

【师父,其实那迷魂经你没给师娘念过吧?】【你怎么知道?】【我昨天听见师娘让你跪搓衣板儿来着】【...那是我们夫妻间的小游戏】【你怎么不念啊,念了师娘不就全听你的了么?】【这些伪科学的东西怎么能信,再说,她要是全听我的了,我们在一起还有什么意思。】

【师父】【嗯?】【那你为什么让我给小北念迷魂经?】【反正你也追不上人家,死经当活经念呗。万一成功了,证了这经,那得造福多少比丘僧啊,你这可是大功德。】【师父,要不是打不过你我就跟你拼了】

【师父啊,可是爱情本身不就是伪科学吗?】【谁说不是了,你看这些香客,求签,问八字,配星座,凡俗中人,贪恋的不就是这些个伪科学吗?他们要是都科学了我佛就没饭吃了。】

【师父,那什么是科学?】【这孩子,我要懂我还跟这儿呆着?闹什么闹。不过据说大方丈是懂的,他说,科学就是一花一世界,就是无限的轮回无限的远,就是谁也说不清楚的东西,就是比伪科学还伪科学的东西。咱们还是别想这个了,省得一不小心再真给顿悟了。】

【师父,好大风雨。】【澈丹,少做感慨。】

【师父,澈丹公然追求大方丈之女,枉顾清规戒律,破坏寺内安定团结,请师父予以管教。】【行了吧,看你们这没出息的样儿,还学会给人扣大帽子了?还学会正义凛然了?还有没有一点儿出家人的样子!】

【澈丹,和师兄弟们打架了?】【是。】【所为何事?】【他们说我不应该追小北,其实他们是嫉妒。】【嗯,既已看破是嫉妒,又何必跟他们争呢?】【我没争,他们争。】【唉,力的作用是相互的,你真的没争么?你还是执念太重啊。算了,来,为师传你一套女子防身术,省得你老吃亏。】

【师父,我从小就在庙里,我的亲爹亲娘呢?】【你怎么问这么俗套的问题?难道为师要告诉你我其实就是你爹吗?】【师父,咱们出家人,可不许玩儿伦理哏。】【你还跟我玩儿八点档狗血剧呢。】

【师父,你说大方丈知道我和小北的事儿吗?】【大方丈什么不知道。】【那他怎么不管?难道他看我还行?】【别臭美了,大方丈那是对自己的女儿有信心。】

【澈丹,此番云游,有何感想?那儿好玩儿么?】【师父,你竟然也会问这种问题,用你的话说,这红尘里哪有什么好玩儿不好玩儿。】【唉,主要是你师娘想把蜜月补上。】

【师父,寺里好安静啊。】【那你还说什么话。】

【师父,我心里乱。】【去墙根蹭蹭去,没看我这儿入定呐嘛,别烦我。】【师父,你干嘛要入定?】【我心里乱。】

【空舟!你那徒弟,叫什么撤丹的,怎么老不见影儿,是不是出去云游了?怎么也不跟我爹请假!好放肆!】【哈哈哈,小北,你动凡心了。】

【师父,你说,我和小北,我是不是自作多情?】【自作虽苦,但看你这个贱兮兮很享受的样子,多情想必是快乐的,你还抱怨什么?】【别跟我打哈哈,我知道今天小北来找过我,她说什么了?】【别问,万一不是好话呢?】

【小北,我觉得少林的素菜做的还不错啊,我请你去吃好么?】【不吃,就爱吃肉。】【小北,我觉得十里坡那个戏班子的青衣唱的还可以,我请你去听好么?】【不听,没我嗓子好。】【小北,你生我气了?】【不生.....哎?生!】

【完了,小北,我们有分歧了,肯定是我错了,我决定听你的!】【真的?】【真的】【那我可唱了】【..........】

【小北,你唱的真好,能教教我么?】【得了吧,你念经都跑调。】

佛法不二,佛不分是非,不分喜悲,佛见有缘的教他度化,见无缘的教他轮回。后来佛见你了,佛二了,佛更不分是非了,你是便喜,你非便悲,从此你就是佛法了,佛不普度众生了,佛颓了,佛被你普度了,但是佛欢喜了。————空舟禅师当年的情书,引来给你。

【澈丹,为师是为了让你哄小北才给你看我的情书,你自己用心研究就好了,干嘛到处嚷嚷啊?】【师父,你还挺不好意思。】【不是,那当年不是给你师娘写的.....】【我说你怎么有点儿肿.....】

我师父和师娘早睡了,我师兄和师弟们也睡了,小北,你也已经睡了吧?我和想你也该睡了。

【师父,你好久没给我讲经了。】【你不是最烦听经么?】【我觉得将来要和小北生活在一起,还是得有一技傍身,你看,你不就是靠经念得好才能留住师娘,才能做得禅师的吗?】【这孩子,这话别跟别人说,来,为师给你讲一段儿楞严,这活我熟。】

【澈丹啊,念经只是基本功,做好和尚还得会解签,趋妖,看风水,做慈善,心理辅导,编造彼岸,装看得开,装悲天悯人,装笑口常开。佛法无涯,你慢慢学吧。】【师父,做和尚好难,要不咱们出家吧?】

【这诸般经义,确实是安身立命之技,练到能随口占偈,指点迷津,越指越迷也就行了。但我就怕你动机太纯,一心执念,将来小北转身一走,水打飘萍,你别真的陷进经里,那就神佛难救了。】【没事儿,小北走我就跟着呗。】【得,这就已经没救了。】

【澈丹,你喝酒了?】【嗯。】【啤的白的?】【要不我吐出来你尝尝?】

【傻孩子,能吐出来的就不是酒了。】 【师父,你说我是不醉了?】【这你得问小北。】 【小北不理我。】【嗯,你没醉。】

【师父,这次中原辩经大会咱庙派得你去吧?】【不是,当然是派你空响师叔。】【他?他念经还不如我呢吧?】【但他嗓门儿大啊,大会上好几百和尚,辩到最后,还能喊出来不破音儿的就算胜利。】

【师父,我能跟去么?】【想见见世面?】【嗯】【算了吧,年年辩经大会都得打伤几个和尚,庙里今年派你空手道,啊不,空道师叔陪同保护。咳,上回要不是少林不要脸竟然带了家伙去,咱庙去年就是第一了,他们哪是空道的对手。】

【咱庙得过第一么?】【建寺第一年,大方丈的师父为了闯名头想了个狠招,辩经当天故意迟到,待群僧辩至酣处,一脚踢碎大门,注意,是踢碎,立在大厅就喊了一句:大音希声。那帮和尚都傻了,没傻的看着那一地木头渣儿也都装傻了,第一就是咱的了。】

【这招好,再用啊。】【别提了,后来确实有人模仿,同样动作,喊完正等鼓掌呢,那评委老和尚气得哆哆嗦嗦地骂,你们这行为艺术还有完没了?踢坏门不赔也就算了,还老拿《道德经》里的词儿冒充佛法,以后我们还能跟道士见面儿么!给我滚出去!】【哈哈哈这倒霉蛋是谁啊。】【咱们大方丈。】

【大方丈还干过这事儿?】【谁没年轻过啊,回来痛定思痛,觉得脚疼不如嗓子疼,辩经还得拼硬功夫,就苦练声乐了。小北唱歌儿好听吧?遗传他爹的。你空响师叔就是那会儿进的庙,学的就是这本事。】

【那大方丈后来还去辩过经么?】【去过几次再也不去了,自从他有了小北,就成了现在这副大彻大悟的样子,还给自己改了法名,叫南无,翻译过来好像就是皈依的意思。】

【那大方站以前叫什么?】【南子,他那黑社会师父给起的,说是听着霸气。后来大方丈才知道他看过《论语》,起这名儿其实是糟践大方丈长的不够霸气。】【哈哈哈,就怕流氓有文化。】

【师父,我怎么每次午觉醒来都觉着头沉啊?】【你执念太重。】【那怎么办啊。】【....以后就别午睡了吧。】

【师父,咱们和尚又不干正经事,怎么还那么多人能当和尚啊。】【本朝尊佛,会念个阿弥陀佛就饿不死。再说,干正经事的人总要把钱花在这些不正经的事上,都是应运而生,你不用过意不去。】

【那万一哪天本朝不尊佛了呢?】【出家人,不要学人家深谋远虑,深谋远虑,最后都净剩下虑了。当一日和尚撞一日钟,到时候实在不行咱就转型当道士呗,不就买个假发套的事儿嘛。】

【师娘!快快,小北让我陪她去逛街,快给我找件儿干净好看的僧衣。】【傻孩子,这大热天儿,你还得拿那么多东西,穿什么僧衣啊,你师父上次陪我逛街就是臭美,还拿了禅杖,回来就中暑了。】【师父...】【澈丹,锻炼身体,磨砺耐性,也算修行,去吧去吧,唉,中午多吃点儿饭啊。】

【师父,空响师叔回来了?怎么没见空道师叔?】【空响连辩三天三夜,直至群僧哑口无言,就听他一人儿喊了,当然第一。但是少林的辩手不服气,哑着嗓子指你空道师叔的头发,意思留发的不是佛门弟子,一大厅的哑巴和尚都盯着空道呜呜喊,空道顾全大局,当场剃度。回来就一直躲屋里哭,不见人】

【对啊,空道师叔为什么能留头发?】【说来话长,空道是从日本偷渡来我中原求佛法的,结果这个笨蛋还赶时髦信儒家,身体发肤不损,这不倒霉催的么,哪个庙都不要他。大方丈看他一身武艺,性情朴质,就留下了,顺便学日语。】【大方丈还会日语?】【哈依。】

【不行了,你空道师叔是咽不下这口气了,为师得跟他去趟少林。】【好!讨回公道!】【小点儿声,喊什么,讨什么公道,哪来那么多公道,佛门中人,不可争强好胜,能不声不响的给那个输了不服气的孙子来一闷棍就好。】

【师娘,我师父呢?】【闭关七日,潜心佛法。】【那我修行怎么办?】【我教你呗。】【你?】【怎么着?不就普度众生那套嘛,别说普度众生了,大彻大悟咱也会啊。】

【师娘,你还是教我点儿正经的吧,怎么才能讨姑娘喜欢啊?怎么才能让小北待见我?】【讨姑娘喜欢的道理我可以教你很多,但这就像你师父教你的那些大道理一样,具体到人和事上,道理都是没有用的。小北是一劫,凡是劫,都要自己去度。】【咳,我也不知道要你们两口子干嘛用。】

【师父,你怎么出关了?悟道了么?】【没有。】【那你怎么六天就出关了,不是要闭关七日吗?】【六天不悟,七天就能悟么?意思意思得了。】

【澈丹啊,你应该也闭闭关,减肥,美白,增加忧郁感和神秘感,还能变得沉默少言。哎呀,这么一说,真该让你师娘也闭闭关。】【你敢跟师娘说么?】【不敢。】

【师父,小北彻底不理我了,怎么办啊。】【你问我我问谁。】【那那些施主有了烦恼,怎么都来问你。】【那不是问我,是问我佛。】【那我也问我佛。】【问我佛是要收费的。】

【师父,今儿是佛诞日啊。】【那你孵去吧。】

【师父,你这大不敬,今天是佛祖诞辰,佛祖生日!】【嗯。】【你嗯什么啊,咱们不表示表示?】【你跟佛祖熟吗?佛祖用的着你表示吗?为师过生日你表示了吗?师娘过生日你表示了吗?你们啊,就整这些虚的来劲。】

小北,今天天气晴好,但过一会儿可能会下雨,我现在在想你,但过一会儿可能会更想。我师父说,世上其实并没有比天气更难测的东西。我觉得他说的对,他总是说的对,小北,不管下不下雨,过一会儿我都会更想你。

【师父,刚那洋人来干嘛的?】【来传教的,说让咱们别信佛祖了,信耶稣,真可爱,好像咱们本来信佛祖似的。】

【怎么不让人家进来啊?】【你can speak English
吗?为师也就是勉强能听懂,大方丈倒是会说,但是这些传教士都一根筋,你大方丈懒得费工夫开悟他,打他又不合适,就撵走了。】

【不是一根筋吗?怎么能撵走?】【大方丈说,我中原大乘正宗佛法皆出自少林,少林如若改信耶稣,我等小庙没有不信之理。那洋人一听有道理,就去少林了。】【大方丈这是借刀杀人吗?】【呦,你还看上兵法了?心里明白就得了。】

【空舟!你们遗寺太过分了,这传教的打也打不得,劝又劝不走,弄我们少林来让我们如何是好?】【阿弥陀佛,吵吵什么,你们不是爱接待外宾吗?拿出中原第一大寺的排场来,好生款待他,说不准哪天被感化了,就回西洋替我们传佛法了。】

【师父,最近咱怎么不做早课净跑步啊?】【出家人,太胖不合适,影响信誉。保持身材,眼神空灵,头顶锃亮,僧袍整洁,都算职业道德。】

【师父,今日山上好大雾啊,望不出去。】【没雾你就能望出去吗?瞎望什么,留神脚下。】

【师父,昨夜雷声好大啊。】【嗯,也不光是雷,你空响师叔跟丫对着喊来着。】【喊什么啊?】【"你小点儿声!你小点儿声!"大概就这句吧。】

【后来雨停了,雷歇了,你空响师叔就笑了,说了句阿弥陀都服,你不服?哦耶了一下儿,就睡了。】【我说他今儿怎么看谁都笑,得意洋洋的。】【那是嗓子喊哑了,要不早显摆上了。】

【澈丹啊,你这心里老挂着小北,已成执迷不悟之势,长此以往,怕是影响修行。】【那怎么办啊?】【你还是得找小北求解脱。】【.....我要这么求,她非打死我。】

【师父,空言道何以弘道?我得跟空道师叔学学空手道。】【嗯,这上联儿不错,你自己能对出下联儿来我就让你去学。】【靠!】

【靠什么靠,你空道师叔倾心儒学,虽是武艺超群,但一身文人毛病,就爱对个对子,你早晚都得学】【佛理实相中,本来一切空,
无生无死无去无来,哪有个相对?师父,你竟然让我学这等有悖佛理的小技。】【哪儿那么些废话,让你学你就学,过年写写春联儿也能挣点儿零花钱】

20101004

Emacs开发VC程序 zz

[http://emacser.com/dev-vc.htm]

Emacs开发VC程序


背景
前些日子,微软宣布Visual studio 2010的EMACS扩展。此前,Visual studio 2005
6.01已然引入了Emacs的键盘模拟,这次又将Visual studio
的Emacs化更进一步,这种事发生在Microsoft这样无利不起早的企业,原因呢,你懂得。
话说,武功再高,也怕菜刀。Emacs玩的再溜,也保不齐哪天你要去开发Visual studio
程序。习惯了Emacs的高效,使用Visual studio
就是一个杯具1。这种情况,一般一颗红心,两手准备。一颗红心:cosplay,两手准备:1.Visual studio 扮Emacs
2Emacs扮Visual studio 。

VC扮EMACS

非官方扩展式visEMACS
官方的Emacs扩展2
不过,我对这种方式的经验总结:享受不到Emacs的周到体贴,却净受VS的大小姐脾气了。不给力啊,不给力。不过,作为出差旅行,远程登陆,客户服务时,没有Emacs可用时,让Visual
studio 模拟一把Emacs,也不失为一种没有办法的好办法了。

这个方法不是本文的重点,所以不深入。

EMACS扮VC

配置EMACS为IDE
一个基本的IDE,必备功能:编辑,编译,调试。

编辑

应该很多人都很眼红Visual studio的销魂的插件visual assist
x吧。实时语法检查,快速打开文件,h,cpp文件,回到刚才编辑的地方,函数跳转,自动补全,插入模板。

可以号称操作系统的Emacs怎么可能没有这些功能呢?尽管这些不在本文范围,但是稍稍提及功能在Emacs中的对应,有兴趣想深入的请Google,
Duckduckgo, Wikipedia.

VXA功能 EMACS对应功能
实时语法检查 Flymake 3
快速打开文件 ECB, 快速打开文件
h,cpp跳转 CEDET 4
回到刚才编辑的地方 Recent-jump5
函数跳转 CEDET 4
自动补全 Auto-complete 6
插入模板 Yasnippet 7
快速打开文件
至于快速打开文件一项,我感觉ECB做的并不是特别好,如果C++程序的头文件和实现文件没有在一个文件夹,很难找到。所以我用了一个比较笨的方法,生成文件的列表到一个文件,使用Emacs的查找功能和打开当前光标下文件的功能
find-file-at-point,我把它编定到了C-c
C-f。这个过程还有两个副产物供cscope和etags用。确认你的机器上有cscope, find,
etags8,将以下代码成为uptags.bat,放到系统的pathz中的某个文件夹下。
%1
cd %2
rm TAGS
rm cscope.files
rm filelist.txt
rm cscope.in.out
rm cscope.out
rm cscope.po.out
if "%3" EQU "java" set PARAM=-name "*.java" -print
if "%3" EQU "c++" set PARAM=-name "*.cpp" -print -o -name "*.r" -print
-o -name "*.[hcrHs]" -print -o -name "*.hpp" -print -o -name "*.lua"
-print
echo %PARAM%
find . %PARAM% > cscope.files
less cscope.files | xargs etags -aR
cscope -bkq -i cscope.files
cp cscope.files filelist.txt
find . -name "*.txt" -print >> filelist.txt
假设我们的C++工程在d:\mydocuments\workspace\cpp\,那么调用方法9为:

uptags d: d:\mydocuments\workspace\cpp\ c++
java工程在d:\mydocuments\workspace\java\, 那么调用方法为:

uptags d: d:\mydocuments\workspace\java\ java
那么打开文件helloworld.cpp的操作就是:C-x b filelist.txt , C-s helloworld.cpp, C-c
C-f, RET。确实,稍显复杂,期待有更好的方法。

编译

编译的话基本上还是要靠Visual studio 自带的工具:nmake10,msdev。本文主要介绍msdev。

使用msdev.exe
msdev.exe位于安装路径下的bin目录,如我本机使用Visual studio 6.0,目录为"C:\Program
Files\Microsoft Visual Studio\VC98\bin"。 直接调用msdev.exe,即启动Visual
studio的UI界面,同时msdev.exe也接受命令行调用。我们看其帮助。
msdev /?
Usage:
MSDEV [myprj.dsp|mywksp.dsw] - load project/workspace
[<filename>] - load source file
/? - display usage information
/EX <macroname> - execute a VBScript macro
/OUT <filename> - redirect command line output to a file
/USEENV - ignore tools.options.directories settings
/MAKE [<target>] [...] - build specified target(s)
[<project> - <platform> <configname>]
[[<project>|ALL] - [DEBUG|RELEASE|ALL]]
/CLEAN - delete intermediate files but don't build
/REBUILD - clean and build
/NORECURSE - don't build dependent projects
假设我们有这么一个工程,路径为d:\Mydocuments\workbench\,工程目录结构,Configuration如下图


可以通过命令msdev.exe来编译工程test211。
C:\Program Files\Microsoft Visual Studio\VC98\bin\msdev.exe test2.dsw
/Make "test2 - Win32 Debug" /NORECURSE
同样,使用clean,rebuild可以清除、重编译该工程。将test2 改为test21,test23,即改变编译对象。
总这样写也很麻烦,而且为了在Emacs中调用 ,我们将其写成一个批处理。

d:
cd d:\Mydocuments\workbench\
set project=%1
set target=%2
if "%1" == "" set project=test2
if "%2" == "no" set target=/NORECURSE
msdev test2.dsw /Make "%project% - Win32 Debug" %target%
保存为makTest2.bat。调用方式为:

makeTest2 [工程 [目标]]
默认为编译test2 的 /NORECURSE。如果要编译test23的rebuild,调用方式为:

makeTest2 test23 /REBUILD
调试

实际上,如果有了编辑,编译,那么调试就不需要了。因为调试器是一切罪恶他妈12。

哈哈,当然是开玩笑的了。作为一个有思想的程序员,要认清楚,编译器,调试器都只是恶魔,程序员本身,也就是我们,才是恶魔他妈(当然大部分是他爹^_^ )。

哈哈,那么作为恶魔的产生者,我们当然要丰富自己的技能,而调试就是一个必杀技。我杀,bug闪……..

cdb-gud
要用Emacs调试Visual studio 的程序,首先需要一个el – cdb-gud.el
。cdb-gud使用Microsoft的命令行调试器cdb来调试程序。
cdb-gud.el只需下载,然后在.emacs中使用下面语句,cdb-gud就随时待命了。
;;+cdb [[http://msdn.microsoft.com/en-us/vstudio/default.aspx][Visual studio ]]
(when (eq system-type 'windows-nt)
(load-file "~/.emacs.d/lisp/cdb-gud.el")
)
调用cdb-gud: M-x cdb RET。

Microsoft命令行调试器cdb.exe
如果你是一个Windows程序员,Windbg听说过吗?如果没有听说过,我建议你去看看《软件调试》,这本书讲的非常的透彻。
注意,这是一本厚度为1000页的砖头书。如果你没有耐心去读这么厚的书,那么还有一个选择,《Windows用户态程序高效排错》,
内容236页,内容写的不多,但是书内提供的资源。
两本书排名不分先后。那么cdb就在Windbg的安装目录下。Windbg是Windows下的能用户态调试核心态调试的强大的图形界面的调试器。那么,简而言之,尽管不太准确13,cdb就是非图形界面的调试用户态程序的windbg。
简要介绍一下cdb:cdb就是一个命令行的调试器,over。

深入探讨一学cdb: 我想很深入的探讨一下cdb,但是实在是没有如此深厚的内功,但是我可以推荐一些内容供有兴趣的去深入。

WINDBG安装目录内的debugger.chm
windbg info
MSDN的帮助
强烈推荐将windbg info 打印出来在手边供不时查阅之需。

现在,来启动cdb-gud吧:M-x cdb RET

Showtime14!

例子
建立一个Visual studio 的console典型的Hello world工程(比如刚才的test2),源代码如下15:
#include "stdafx.h"
#include <string.h>
void assign (int a[], int n)
{
for (int i = 0; i < n; ++i)
{
if (a[i] == 0)
{
a[i] = i;
}
}
}

int main(int argc, char* argv[])
{

int a[100];
assign(a, 100);
for (int i = 0; i < 100; ++i)
{
printf("%d\t", a[i]);
}

return 0;
}
通过上边程序,我们期待打出所有0-99的数,每个数是间隔一个制表符,每十个数打出一个换行。

我们编译运行代码,得到结果:

-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460
有点奇怪,为什么没有得到我们需要的东西呢??

从代码中貌似看不到直接的证据证明我们的代码逻辑的错误。我们就祭出cdb。

M-x cdb RET

minibuffer: cdb d:\Mydocuments\workbench\test2\debug\test2.exe 会有以下界面提示。

Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.

CommandLine: d:/Mydocuments/workbench/tmp/VCTest/test2/test/Debug/test.exe
Symbol search path is:
C:\symbolsXpSp3;d:/Mydocuments/workbench/via/helios/coyote/Bin/MULTIMEDIA_PRO_240x320_Debug
Executable search path is:
*** WARNING: Unable to verify checksum for test.exe
ModLoad: 00400000 0042c000 test.exe
ModLoad: 7c900000 7c9b2000 ntdll.dll
ModLoad: 7c800000 7c8f6000 C:\WINDOWS\system32\kernel32.dll
(a90.1eb8): Break instruction exception - code 80000003 (first chance)
eax=00241eb4 ebx=7ffd9000 ecx=00000000 edx=00000001 esi=00241f48 edi=00241eb4
eip=7c90120e esp=0012fb20 ebp=0012fc94 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
ntdll!DbgBreakPoint:
7c90120e cc int 3
0:000> cdb: Reading initial command 'l+*;l-s'
Source options are ffffffff:
1/t - Step/trace by source line
2/l - List source line at prompt
4/s - List source code at prompt
8/o - Only show source code at prompt
Source options are fffffffb:
1/t - Step/trace by source line
2/l - List source line at prompt
8/o - Only show source code at prompt
0:000>
0:000> bp main
bp 表示打断点,断点的方式有几种:函数名,文件行数,内存地址。

但是我最喜欢的还是:当调试过程已经在运行,*在Emacs中打开文件,走到需要打断点的行,C-x space*,断点就打到该行,很给力啊。

0:000> g
Breakpoint 0 hit
test!main:
0040d880 55 push ebp
0:000> p
test!main+0x1e:
0040d89e 6a64 push 64h
0:000> t
test!ILT+15(?assignYAXQAHHZ):
00401014 e907c80000 jmp test!assign (0040d820)
0:000> p
test!assign:
0040d820 55 push ebp
0:000> p
test!assign+0x18:
0040d838 c745fc00000000 mov dword ptr [ebp-4],0 ss:0023:0012fd8c=cccccccc
g==go,所以表示开始运行程序。

p 单步跟踪,不进入子函数。

t 单步跟踪,但是进入子函数。

不出意外,当你使用p或者t跟踪程序的时候,源代码窗口已经打开,同时随着跟踪,相应的代码行也会高亮。

0:000> dv
a = 0x0012fdf0
n = 100
i = -858993460
0:000> p
test!assign+0x32:
0040d852 8b55fc mov edx,dword ptr [ebp-4] ss:0023:0012fd8c=00000000
0:000> dv
a = 0x0012fdf0
n = 100
i = 0
0:000> dt a[0]
Local var @ 0x12fd98 Type a[ 100]
[0] 0x0012fdf0
-> -858993460
0:000> dt a[1]
Local var @ 0x12fd98 Type a[0]
[1] 0x0012fdf0
-> -858993460
0:000> dt a[i]
Local var @ 0x12fd98 Type a[1]
[0] 0x0012fdf0
-> -858993460
dv:显示当前的局部变量。

dt: 显示指定的变量。

当前发现为什么a数组的值怎么是负数,不是期待的0呢?

0:000> k
ChildEBP RetAddr
0012fd90 0040d8ac test!assign+0x32
[D:\Mydocuments\workbench\tmp\VCTest\test2\test\test.cpp @ 10]
0012ff80 00401209 test!main+0x2c
[D:\Mydocuments\workbench\tmp\VCTest\test2\test\test.cpp @ 21]
0012ffc0 7c817077 test!mainCRTStartup+0xe9 [crt0.c @ 206]
WARNING: Stack unwind information not available. Following frames may be wrong.
0012fff0 00000000 kernel32!RegisterWaitForInputIdle+0x49
0:000> .frame 1
01 0012ff80 00401209 test!main+0x2c
[D:\Mydocuments\workbench\tmp\VCTest\test2\test\test.cpp @ 21]
0:000> dv
argc = 1
i = -858993460
Type information missing error for a
0:000>
k:打印出当前的栈内容

.frame:跳转到栈中的第几帧,当前为第0帧。

在.frame 1后,我们注意到以下代码:

int a[100];
assign(a, 100);
貌似a[ 100]没有初始化吧。

0:000> q
然后修改代码后

#include "stdafx.h"
#include <string.h>
void assign (int a[], int n)
{
for (int i = 0; i < n; ++i)
{
if (a[i] == 0)
{
a[i] = i;
}
}
}

int main(int argc, char* argv[])
{

int a[100]={0};
assign(a, 100);
for (int i = 0; i < 100; ++i)
{
if (0 == (i % 10))
{
printf("\n");
}
printf("%d\t", a[i]);
}

return 0;
}
编译运行,结果:

test\debug\test.exe

0 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 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
那么cdb简单使用就介绍完了。

然而,其实很多cdb的强大功能都没有介绍到:

可以调试程序崩溃时留下的内存转储文件dump,调出其堆栈休息。
可以附挂到一个正在运行的程序。
远程调试
显示,执行代码
处理断点(支持复杂的条件断点)
读写内存地址
反汇编
多线程调试
Windows符号文件
对于一般的console程序,可能这样就够了。但是在调试广大的Windows程序时,哪能不接触Windows的API啊,调试这些个玩意儿,才是让人头痛的东西呢,没有源代码!!cdb的一个机制可以让你没有源代码的情况下看到很多Windows的公开数据结构。
首先,先查看自己的系统的版本,在我的电脑->右键->属性,我可以看到我的系统是Microsoft Windos XP
Professional Service Pace 3, 那么我就来这里下载Windows的相应的符号文件。

将其安装到本机,比如:C:\symbolsXpSp3。添加环境变量:_NT_ALT_SYMBOL_PATH,设其值为安装目录。

经此设置,cdb在调试时就可以看到Windows API的符号文件。更多内容,还请参考帮助文档或者我推荐的两本书。

Footnotes:
1 @木鱼指出 6.0中的Epsilon即为emacs模式。 可查到资料中最早的是2005, 来源猛击我。 但是有可能更早,如果有资料,麻烦请留言告之.

2 此处没有贬低Visual studio 的意思,只是我中Emacs的毒已太深,用其它什么都不爽:)

3 下载链接Visual studio Emacs emulation addon

4 flymake配置见http://marcelotoledo.com/2007/07/11/emacs-flymake/

5 CEDET配置见http://emacser.com/c-cedet.htm

6 recent-jump 配置见http://liuminzhao.com/emacs/recent-jump-el-for-emacs/

7 auto-complete 配置见http://emacser.com/auto-complete.htm

8 yasnippet主页http://code.google.com/p/yasnippet/

9 cygwin, mingw, msys, unixutils

10 好吧,我承认这个调用方法很蛋疼,如果你的工程比较少的话,其实可以将路径,程序类型什么的写到文件里,多整几个文件即可。upCppProject1Tags.bat,
upCppProject2Tags.bat,upJavaPro1Tags.bat,upJavaPro2Tags.bat。

11 此文 介绍了如何使用nmake,但是恕我直言,我在Visual studio 的安装目录里没有找到nmake。

12 如果不成功,请注意检查大小写和空格。

13 调试器,恶魔之母 http://stackoverflow.com/questions/602138/is-a-debugger-the-mother-of-all-evil

14 其实,用户态的windbg是图形界面的cdb。

15 谨以此名纪念我经历的一个软件项目:Showtime 0.7。

16 请注意,这是实验代码,所以请忽略魔幻数,程序是否有意义等话题。

15 请注意,这是实验代码,所以请忽略魔幻数,程序是否有意义等话题。

20100929

方舟子继续遭受网络暴民袭击 zz

方舟子继续遭受网络暴民袭击 zz

http://www.tianya.cn/publicforum/content/no01/1/422937.shtml


方舟子先生躲过锤击之后,近日继续遭受网络暴民的围剿。

谁是暴民呢?我在这里不是指某个"坏人",最坏的人可能也有偶尔和善的时候。我是说,你的某种情绪可能促使你在某个时候做出了一件非常错误的事。我下面要把暴民分成几种,我相信是他们内心的某种倾向性使他们失去了公正,我要对他们内心的倾向性予以猜测,并做适当的分类。符合这些猜测的网友,请您反思一下,你是否不自觉地受到了这些倾向性的影响,而在最近对方舟子先生做出了一些不那么理性也并非基于事实的指责。

思想在某些方面具有某种倾向性,这不是过错,相反,那很可能是自然的。但批评性言论本身有个公正性的问题。如果你批评某个人,这个人在某些方面具有与你不同的倾向性,你可以通过事先表明自己的这种倾向性来显得文质彬彬,这可能有助于你避免做出不公正的判断。我们中国人有句话,叫做"攻其恶,无攻人之恶",意思是说:因为这样做是错的,所以我才反对,而不是因为这是我所不喜欢的某个人做的,所以我才反对。这是我们的祖先为我们指出的君子之道。

当然,无论你的内心有何种倾向,言论就是言论,只要你的指责基于事实,你的推理可以被接受,你的评判准则被大家所认可,那么,你的批评性意见肯定会被很多人尊重。相反,如果您对于什么是事实并不是很清楚,您对此也并不感兴趣,但您仍然要出言诋毁方舟子这个人,我认为,您需要看一看自己是否受到了内心如下一些倾向性的影响。我认为,无须承担责任的、受到群体行为暗示的、情绪化的、缺乏事实依据的、不公正的指责,是一种错误的行为,这些行为看起来像一群暴民所为。

本文所针对的读者,完全排除那些为了经济利益而愿意发表任何言论的人,当然也不包括任何通过造假谋取利益的人。适合与他们谈论是非善恶的,应该是他们的妈妈,而不是其他人。以下是我归纳的思想倾向:

倾向一:神创论者、设计论者,他们反对人类自己创造新的生命形式。

这些人以前的说法是,世界是在七天之内被一个人格神所创造的,信这个神,可以得到拯救,不信这个神的异教徒,都会在末日审判中被区别对待。现在,这些人显得比较科学,毕竟科学太强大,他们现在只说这个世界是被创造或者被设计的,而做这件事的主体则被省略。最有趣的,他们说他们的理论应该与进化论一样,在(公立)学校中教授。虽然他们已经不怎么公开谈论创世的主体,但是,他们仍然认为,只有这个主体,才有创造生命的资格,任何改变基因、控制胚胎发育的行为,都是人类对这个创世主体的权力的僭越,这是由人类自己在创造新的生命形式,因此是不可接受的。

他们显然是对未知的世界比较悲观、比较恐惧的一部分人。因为方舟子先生被某些人塑造成了转基因食品的著名支持者,因此,这些神创论者或者设计论者,或者秉承某种原教旨主义的教徒,也就把他当成了著名的敌人。当然,方舟子先生可能确实也不喜欢某种西方的一神教。对于有此种思想倾向的网友,我认为您先亮出自己的宗教信仰,然后再参与讨论,更容易避免不公。

至于说对于转基因食品的立法,这是一个政治问题,我希望大家能够和平地予以讨论。我个人认为,按照是否支持对转基因食品施加某种法律限制,包括必须在包装上予以标注,这并不足于区分好人和坏人,大家不必因此而敌对。我们完全可以心平气和地讨论转基因食品的意义及其风险。即使你认为这挑战了你的教义,你可能仍然需要尊重他人的观点。

我个人还没有看到转基因食品可能对人类构成伤害的证据,这可能需要长期的实验。因此,我认为,在是否立法对转基因食品予以必要限制这个议题上,只能反映大家对未来的感受,这不大可能是一种理性的选择,这只能反应一个人更悲观或者更乐观的性格特点,这种观点上的差别不是一个严重的问题。至于有人说方舟子先生是转基因食品生产商的顾问,因此,他的结论可能是带有倾向性的,说这种话的人,您需要给出证据。


倾向二:相信某种超自然力量或者玄秘理论,但无法容忍别人说这"不科学"或"不够科学"的人。

汉语经常对"科学"一词有些古怪的用法,这些古怪用法的一个严重结果是,"科学"一词经常让人联想到"正确",而"不科学"则意味着"错误"、"落后",甚至"迷信"。某些愿意相信某种超自然力量或者玄秘理论的人,他们当然不愿意被人说成是"错误"、"落后"或者"迷信"的。因此,如果他们觉得方舟子先生是保卫"科学"、声讨"不科学"的一位"斗士",那么,方舟子先生也就成了他们的一个重要敌人。

其实,从较为狭义的角度说,科学只是一些得到知识、组织知识的系统性方法,这种方法最显著的特点是基于数学推理或者可控制、可重复的实验。一种理论被称为科学的,通常是这种理论的陈述符合科学家共同体对于什么是"科学方法"的认识,而一种理论被认为不那么"科学",这通常意味着这种理论的陈述很难满足科学家共同体对于"科学方法"的认识。举个例子,你可能觉得,"某人一发功,就治好了眼前这个人的病",这是很科学的。但科学家可能并不这么认为,他们需要知道,经过怎样一个可操作的、可重复的程序,就能以一定的概率治好某个病人,如果他们没法从"一发功"这个特殊现象研究出某种可操作、可重复、可检验的程序,他们就会认为自己一无所获,他们就没法承认"一发功就能治病"是个"科学"的理论。当然,这并不意味着他们打算否定什么,科学家们不知道的事情,肯定比他们知道的事情来得多。

我相信,无论您相信什么样的超自然力量或者玄秘理论,只要您不坚持要科学家共同体承认您的理论是"科学"的,您就不大可能与他们发生冲突。当然,据说也有人用魔术冒充"神功",这是另一回事,这可能涉及到法律问题,比如诈骗。如果这并不是魔术表演,而是一种牟利行为,甚至可能伤害他人的健康,这种行为值得戳穿。


倾向三:民科,但不希望别人指出这一点。

其实我也是民科。很多民科不知道的是,"教科书"与"学术界"是两码事,如果你念过大学本科,你肯定对教科书里的内容不陌生,但那通常不是"研究",而只是"结论"。打个比方,你可能读到过一本叫做《历史》的书,但《历史》不是"历史学",一个"历史学"的学者,他要发表"学术"著作,不能只写下几条结论、给出几个故事,他必须而且主要需要阐明的,是他所得到的结论的意义,以及得到这些结论的过程是否"科学"。因此,如果你只读过一本叫做《历史》的书,你很可能不知道什么是"历史学",你仿照这本书写下的东西,是不大可能被历史学家们所接受的。类似地,你读过几本叫做《数学》的书,也不意味着你了解什么是数学研究,因此,你对于哥德巴赫猜想的见解,数学家们可能只想把它扔进垃圾篓。

事实上,学者们确实生活于一个似乎隐秘的世界里,没有一本教科书能真正让你了解什么是"研究",你只能在很多年的时间里,通过阅读其他研究者的论文来逐渐"摸索"什么是"研究的方法",更重要的,尝试找到合适的研究问题,普通大众并不知道这个世界到底是什么样子,就如同很多人没有去过饭店的厨房,他们能看到的,只是厨师做好的菜。

我本人并不觉得方舟子先生以取笑民科为乐,虽然这样的人可能很多,当然,也许有些人不这样认为,他们觉得自己的自尊心受到了伤害。我觉得,民科们完全可以自得其乐,没必要去烦扰学术界。一个更自由、更有责任感的学术界,也应该关注与其他社会成员的交流,让他们尽可能多地了解学者们正在做什么。他们正在做什么?:-)


倾向四:自惭形秽的文科生,他们内心里认为"人文"并不是如同自然科学一样的"科学",没有那样显赫的地位,因此,谁在那大声谈论"科学",谁就是伤害了他们的感情。

可能普通大众不知道,写小说,不是"科学","研究"别人写的小说,才是"科学"。莎士比亚和曹雪芹都不是科学家,"研究"莎士比亚和曹雪芹的人才是各大学文学系的"科学家",而他们得到研究成果的过程,必须是满足科学家共同体对于"科学方法"的认识。因此,一个人成为某个大学文学系的教授,领到一份工资,这是因为他在"研究"和教学,至于他自己写小说,那完全是他的私人生活,与这份工资无关。类似地,哲学系的教授不是发明哲学的,而是研究别人发明的哲学的,历史系的教授不是记录今天历史的,而是研究他人在历史上留下的蛛丝马迹的。因此,"人文"确实不是科学,"研究人文"才是科学。创造"人文"是不可能在大学里领到工资的,研究并教授"人文"才能在大学里领到工资。文科生们应该再反思一下科学的概念。


倾向四:宣扬伪科学的科学共同体成员,他们曾经与方舟子一边的科学共同体成员直接论战。

有一些人,已经是科学共同体的成员,但可能有一些特殊的经历,比如曾经被训练来教授某种十九世纪的哲学,但他们必须得把这种哲学说成是科学之母。现在他们只能是哲学系的教师,但是,在习惯上,他们并不研究"别人"发明的哲学,而是向他人灌输某种哲学,这就是当初训练他们的人所要达到的目的。现在,他们当中的某些人,很想把"科学"里塞进一些他们自己喜欢的东西。他们相当有文化,因此,可以写出一些似是而非的东西,试图动摇传统上"科学"的概念。

他们是文化人,可能还自诩为哲学家,因此,我想,他们大概既不会参与铁锤事件,也不会为此叫好。但他们可能有一定的影响力。比如,他们给方舟子这边的人按上了一个"科学主义"的帽子,据说持有这种观点的人认为科学能够解释一切以及解决一切,而且只能由科学来解释和解决。但是,就像人们所嘲笑的,除了他们自己(他们当中的某些人说自己曾经是"科学主义"者),尚未在世界上发现持有如此愚蠢观点的人。


倾向五:认为方舟子打假不够专业的专业人士。

对于这些人,我不想多说,谁说方舟子不够专业,你专业?你专业你来打!总不至于说学术界没有假可打吧?其实,方舟子在学术界能打的假,都是一些最不入流的,比如,明显抄袭论文的,招摇撞骗过分生猛的,等等。这根本不是今天学术界的主要问题,这是一台机器都能判断的不端行为。至于那些需要高度专业知识和崇高职业道德才能做出的判断,你根本听不到,没本事的都在琢磨着怎么应付论文数量的要求,有本事的都在琢磨着怎么申请经费、花掉经费,最有本事的自己立项、自己拿。而在这些人背后,是一些终于认识到提高知识分子待遇的好处的人,利出于一孔之后,上下同钱同德:-)


倾向六:认为方舟子代表了要消灭中医的力量。

我不知道方舟子先生是否真的这样认为。但是,"中医"与"西医"这种并列方式,肯定遮蔽了问题的实质。问题是,什么是"现代"的、可以接受的医学?我们是否需要立法规定任何人要取得行医执照,都必须满足同样的、"现代"的训练标准?而诊断和治疗的过程,是否也要满足某种必需的标准?无论你怎样看待中医,你不可能禁止别人提出这样的问题,哪怕你觉得他们仅仅是出于一种文化上的自卑感,因此要竭力消灭"祖国的传统文化"。

理论上说,医学是实践性很强的学科,西医并不足以否定中医,但是,如果要所有学生接受相同强度的西医训练,而学习中医的学生还要额外接受中医训练,这可能在事实上导致没有人去学中医了。当然这只是猜测。没准事实相反,中西医两个学位会让你更受欢迎,既接受过相同强度的现代西医训练,又懂得"祖国传统文化",你可能看起病来更有"文化底蕴"?:-)
没准中医院因此很火?:-) 结果,"祖国的传统文化"被你更好地发扬光大了。


倾向七:其他认为科学或者严谨的理性是他的绊脚石的人。


至此,以上七种倾向分析完毕。我认为,每一种倾向都不应该导致铁锤或者为铁锤叫好,指责他人应该基于事实,而且保持公正。现在我们讨论一下什么是一个好的社会?

首先,我相信,你会承认,普遍的诚实对于我们这个社会的意义。一个互相撒谎的社会不可能是一个好的社会,在这样的社会里,好人没有机会,只有那些最寡廉鲜耻的人才能如鱼得水。你不可能认为,普遍的欺诈能导致一个好的社会。因此,你肯定会认为,保卫诚实、反对欺诈对于我们的社会意义重大。

其次,科学是人类有史以来最伟大的发明之一,它在今天直接给我们带来利益。科学的存在和发展依赖于科学家,而自由和诚实是科学家之所以能够成为科学家的前提。一群被包养的不诚实的精英对于科学的发展是零价值的,他们创造不了任何东西,他们甚至学不会别人的东西。如果一个国家的科学界已经堕落到只会点数经费,那么,哪怕是一点批评性的意见,即使这种意见只能针对那些最不入流的造假者,这也是非常珍贵的。这是为在这个国家中保卫人类最有价值的精神财产而战。有些不了解科学界的人士可能觉得自己也被归为造假者的行列,我认为,如果你没有伤害任何人,你不必感到可耻,当然,如果你指望"科学"这个概念能够变得像你希望的那样,你也可能会遭到批评。

最后,法律对于我们来说很重要,如果没有法律,你可能一天也活不过去。我们必须明白,雇凶杀人或者伤人,这是一个非常严重的法律问题。这种行为,不会仅仅伤害一个你所不喜欢的人,也会伤害你赖以生存的法律,就如同伤害你周围的空气。如果抽走我们身边的空气,不是只有方舟子会窒息而死,我们也无法生存。你作为这个社会的一员,你有义务在必要的时候重申法律对于我们的意义,而不是相反,对于极其恶劣的谋杀行为幸灾乐祸,如果你这样做了,你只是在伤害你自己,那不是任何其他人的耻辱,那只是你自己的耻辱。

你内心怎样看待方舟子,这不重要。我也很多年没有去过方舟子的网站了,我的浏览器总是告诉我他的网站无法连接,可能受到防火墙的阻挡,要我与网络管理员联系。我一般没有与网络管理员联系的勇气。更重要的问题是,你怎样看待上面的几个问题?我们需要保卫诚实吗?我们需要爱护和保卫科学吗?我们需要保卫法律吗?如果你的回答是:是!那很好,我相信,你与你观点不同的人会因此达成很多共识。

因此,我建议,在最近一段时间,讨论与方舟子有关的问题时,大家都来表明自己的观点,告诉大家,你知道诚实很珍贵,你认为科学应该被爱护、被保卫,你认为法律必须得到尊重。我相信,有了这些表达,很多分歧容易解决。方舟子没有做到的,你可以去做到,他没有做好的,你可以做得更好。你也可以做一名"打假斗士":-)
而且更货真价实。但你肯定不是希望这个世界一片黑暗,方舟子作为一个"打假斗士"的符号,很可能是这个黑暗世界上的最后一盏灯,或许你不这样认为,或许你认为你不需要光明,但是,如果你想熄灭他,我还是希望你能慎重考虑,你真的能把你的理由在下面写清楚吗?

实际上,你可以选择,你可以说:"这个世界是我们的"。你也可以觉得自己就是一个过客,一个每天被人操纵的人,因此你愤世嫉俗,有一种要做暴民的冲动,拿出你指尖的小铁锤,用言词砸烂任何听起来比你更勇敢的故事,好让自己相信,你自己平凡而怯懦的人生,已经是这个黑暗世界里最光荣、最勇敢的人生了。但你其实什么也没有改变!

写给我的暴民同胞们:-)

2010-09-27

20100917

谜语答案

谜语答案

1. Invoking heap(20) in heap(int *a,int size), at line 2,
an instance of heap is created
(which can be a local variant to be referenced) without being named as
an variant.
Let's call it heap_drop.

2. root[i] in heap(int *a,int size), at line 5, is a member of the instance that
will be created by heap(int *a,int size), just this constructor
itself.
root[i] in heap(int *a,int size) is NOT a member of heap_drop mentioned above,
therefore it has not been allocated memory yet.


1 heap(int *a,int size){
2 heap(20);
3 cout<<"hhh";
4 for(int i = 0;i<size;i++){
5 root[i] = a[i];
6 }
7 heapSize = size;
8 build_Heap();
9 }
10 heap(int maxSize){
11 root = new int [maxSize];
12 }

典典一句话评论:
heap(20) 不是调用构造函数初始化当前对象,而是分配了一个临时对象然后立刻销毁。

感谢某用功同学提供代码示例。

20100916

猜谜活动

猜谜活动。

人生艰难,听来个谜语给大家讲讲,娱乐一下。

话说某同学整了以下C++代码,运行就崩溃。

问:为啥?

等级考试以后公布答案。

#include<iostream>

using namespace std;

struct heap{

private:

int *root;

int heapSize;

int maxSize;

void build_Heap(){

int n = (heapSize+1)/2 -1;

for(int i = n;i>=0;i--){

max_Heapify(i);

}

}

public:

heap(int *a,int size){

heap(20);

cout<<"hhh";

for(int i = 0;i<size;i++){

root[i] = a[i];

}

heapSize = size;

build_Heap();

}

heap(int maxSize){

root = new int [maxSize];

}

heap(){

root = new int [20];

}

void copyBuild(int *a,int size){

cout<<"hhh";

for(int i = 0;i<size;i++){

root[i] = a[i];

}

heapSize = size;

build_Heap();

}

void max_Heapify(int i){

int leftChild = i*2+1;

int rightChild = i*2+2;

int max = root[i];

int maxLoc = i;

if(leftChild<heapSize&&root[leftChild]>max){

max = root[leftChild];

maxLoc = leftChild;

}

if(rightChild<heapSize&&root[rightChild]>max){

max = root[rightChild];

maxLoc = rightChild;

}

if(maxLoc!=i){

root[maxLoc] = root[i];

root[i] = max;

max_Heapify(maxLoc);

}

}

int pop_top(){

if(0==heapSize){

cout<<"error!!! this is an empty heap\n";

return -9999999;

}

if(1==heapSize){

heapSize = heapSize-1;

return root[0];

}

else {

int max = root[0];

root[0] = root[--heapSize];

max_Heapify(0);

return max;

}

}

void output(){

for(int i = 0;i<heapSize;i++){

cout<<root[i]<<" ";

if((i+1)%10==0) cout<<endl;

}

cout<<endl;

}

};

int main(){

int *a = new int [20];

for(int i = 0;i<9;i++){

a[i] = i;

cout<<a[i]<<" ";

}

int ss = 9;

heap *p = new heap(a,9);

cout<<"build heap\n";

p->output();

cout<<"pop_top "<<p->pop_top()<<endl;

}

20100915

通往奴役之路 笔记

通往奴役之路 笔记

2010-09-15 21:53:26

补录以前的,估计是2年前的

pp.73 法治

最能清楚地将一个自由国家的状态和一个在专制政府统治下的国家的状况区分开的,莫过于前者遵循着被称为法治的这一伟大原则。撇开所有技术细节不论,法治的意思就是指政府在一切行动中都受到事前规定并宣布的规则的约束--这种规则使得一个人有可能十分肯定地预见到当局在某一情况中会怎样使用它的强制权力,和根据对此的了解计划它自己的个人事务。虽然因为文法者以及那些受委托执行法律的人都是不可能不犯错误的凡人,从而这个理想也永远不可能达到尽美善尽美的地步,但是法治的基本点是清楚的:即留给执掌强制权力的执行机构的行动自由,应当减少到最低限度。虽则每一条法律,通过变动人们可能用以追求其目的的手段而在一定程度上限制了个人自由,但是在法治之下,却防止了政府采取特别的行动来破坏个人的努力。在已知的竞赛规则之内,个人可以自由地追求他人私人的目的和愿望,肯定不会有人有意识地利用政府权力来阻挠他的行动。

pp.77 道德

第二个方面,即道行的或政治方面的论证,与我们现在所要讨论的问题有更直接的关系。如果政府要精确地预见到其行动的影响,那就意味着它可以不让受影响的人有任何选择的任地。凡是当政府能够精确地预见其各种可能的行动对某种人的影响时,也恰恰是政府能够对各种目标进行选择。如果我们要创造新的对一切人都开放的机会,要给人们提供他们能随意加以利用的机会牟话,那么其精确的结果就是难以预见的。因此,普遍性的规则,有别于具体命令的真正法律,必须意在适用于不能预见其详情的情况,因而它对某一特定目标,某一特定个人的影响事前是无法知道的。只是在这种意义上,立法者才可能说得上是不偏不倚的。所谓不偏不倚的意思,就是指对一定的问题没有答案--如果我们一定要解决这类问题的话,就只能靠抛掷硬硬币来决定。在一个每一件事都能精确预见到的社会中,政府很难做一件事而仍然保持不偏不倚。只要政府政策对某种人的精确的影响是已知的,只要政府的直接目的是要达到那些特定影响,它就不能不了解这些影响,因而也就不能做到不偏不倚。它必定有所偏袒,把它的评价强加于人民,并且,不是帮助他们实现自己的目标,而是为他们选择目标。只要当制定法律的时候就已预见到这些特定影响,那提出,法律就不再仅仅是一个供人民使用的工具,反而成为立法者为了他的目的而影响人民的工具。政府不再是一个旨在帮助个人充分发展其个性的实用的机构,而成为一个"道德的"机构--这里的"道德的"一词不是作为"不道德的"反义词来使用的,而是指这样一种机构,它把它对一切道德问题的观点都强加于其成员,而不管这种观点是道德的或非常不道德的。在这种意义上,纳粹或其它任何集体主义的国家都是"道德的",而自由主义国家则不是。

pp.85 法治限制政府行为