2012年1月23日星期一

阮一峰的网络日志

阮一峰的网络日志


现代医学200年

Posted: 23 Jan 2012 04:35 AM PST

今年是世界最有影响力的医学杂志《新英格兰医学杂志》(The New England Journal of Medicine, NEJM)创刊200周年

为了这个纪念日,该杂志制作了一个专题,回顾了创刊以来的医学发展,从中可以看到现代医学取得的巨大进步。

下面是我根据whyes的中译做的一个摘录。

===========================================================

现代医学200年

原载《新英格兰医学杂志》

whyes 译

1816年

René Laennec发明听诊器。在此之前,医生只能用手按在病人胸膛,了解病人体内状况。

1837年3月8日

J. Warren Mason描述了美国第一例鼻整形手术。这个手术是现代整形术的基础之一。

1846年11月18日

波士顿的外科医生Henry Jacob Bigelow,让病人吸入乙醚进行麻醉。这个技术后来运用到各种手术中,从拔牙到截肢。

1847年

匈牙利的医生Ignaz Semmelweis发现,在对手进行消毒后,新生儿败血症的发生率显著下降。他认为,用漂白粉洗手可以减少产妇热。这种看法遭到了同行的强烈反对,但今天已经成为常识。

1855年5月3日

第一例子宫切除术被报道。患者是一名34岁的子宫肌瘤患者,在每次月经来临时都会有致命性的出血。作者称子宫切除手术是"最后的办法"(a last resort)。

1867年

英国外科医生Joseph Lister倡导手术操作时要消毒。他注意到接生婆接生的新生儿的死亡率比外科医生接生的要低,他将这点归功于接生婆比外科医生洗手更频繁。他提出外科医生不仅需要用石炭酸洗手,还要消毒手术器械。这些是微生物理论提出的起源。

1869年4月29日

Beard引入电疗,治疗"神经衰弱"(neurasthenia),并沿用至今。

1872年10月17日

C.E. Brown-Sequard提出了革命性的脑功能理论,认为一侧大脑半球可以影响两侧的躯体。

1882年

有"现代外科学之父"美誉的William Stewart Halsted开展根治性乳房切除术,这种方法作为标准手术方式使用了近一个世纪,直到20世纪70年度中期。

1887年

美国的国立卫生研究院(NIH)的前身"卫生实验室",在纽约Staten岛的Marine医院成立,当时只有一个房间,专门研究霍乱等传染病。这个机构后来成为全世界最重要的医学研究机构。

1889年2月21日

Reginald Fitz第一次完整的描述了胰腺炎,从最初的典型临床表现到死后的病理诊断。直到今天,胰腺炎依然是一个让人望而生畏的疾病。

1890年

Robert Koch提出了特定微生物引起特定疾病的诊断要点,后来被称作"科赫法则(Koch's postulates)",经过一些修订,传染病教科书中至今还介绍这个法则。

1890年12月4日

日本医生Shibasaburo Kitasato和德国生理学家Emil Adolf von Behring发现白喉杆菌的免疫方法。他们让兔子对破伤风杆菌免疫,获得血液,将血清注射到小鼠体内,再将小鼠与破伤风梭菌接触,发现小鼠可以表现为对常规毒素作用的免疫力。他们的研究论文提出了术语"抗毒素"(antitoxin)。一周之后,Behring发表了动物对白喉免疫的研究的论文,并因此获得了1901年的诺贝尔奖。

1895年12月1日

德国物理学家Wilhelm Roentgen(伦琴)发线了x射线。在发现x射线后的两周左右,伦琴给他的妻子的手拍了张照片,当她的妻子看到了自己的骨骼,惊呼"我看到了自己的死亡"。

1897年8月10日

为了减轻父亲的关节炎疼痛,药剂师Felix Hoffmann将稳定的乙酰化水杨酸与乙酸混合,获得了阿司匹林。在成功地完成了数个大规模临床试验后,Hoffmann所就职的公司----拜耳公司----开始在全球市场上销售这个药物。尽管阿司匹林的治疗适应证发生了很多变化,但它的发现依然是医学和药理学史上的里程碑式事件。

1898年

居里夫妇发现了元素镭和钋,并发明了术语"放射性"(radioactivity)。该发现让他们获得了1903年的诺贝尔物理学奖。这些放射线元素后来在医学上获得巨大应用。

1899年

弗洛伊德(Freud)发表《梦的解析》,开创了心理分析学。

1901年

第一个诺贝尔医学奖授予了Emil Adolf von Behring,他发明了治疗白喉的"血清疗法",使白喉的死亡率得到了极大的下降。最终,白喉在世界范围内绝迹。

1906年

Priscilla Wald在《传染病》(Contagious)一书中描述了传染病的"超级传染源",并举了一个"伤寒玛丽"(Typhoid Mary)的例子。在1900至1907间的七年,玛丽将伤寒传染给了53人,而自己却无症状,被认为是第一个"健康的"伤寒携带者。这种形象化称呼后来被用于艾滋病大流行和SARS的爆发,它更容易被大众所接受,引导大众参与传染病的防治。

1906年6月7日

James Homer Wright报道了骨髓染色的方法,并描述了巨核细胞和血小板。

1907年

生物学家Karl Landsteiner于1901年第一次描述了血液之间的相容性和排斥性,并提出了ABO血型的系统。正是得益于这个理论,1907年第一次成功的输血得以实施。Landsteiner在1930年获得了诺贝尔医学奖。

1911年3月16日

Joel E. Goldthwait详细描述了一例背痛病例,在手术过程中没有发现明显异常。他怀疑是腰骶关节与椎间隙产生移位和椎间盘的脱出,后者压迫神经根和脊髓。他认为,治疗这个疾病必须把腰椎间盘部分或全部切除。

1911年

一篇论文描述用salvarsan(胂凡钠明)治疗"慢性天胞疮",salvarsan是第一个抗微生物药物。用药两天之后,疾病消失了。不久,Paul Ehrlich同样使用这个"神奇的子弹"(magic bullet)治疗了一名患梅毒的士兵。这个药物是Ehrlich尝试过的第606个化合物,所以又名"606"。因为副作用巨大,606很快被青霉素淘汰,但依然是重大的科学突破。

1918年

西班牙流感大流行,导致2100万至5000万人死亡,这是历史上死亡人数最多的一次,并且死亡人口多数是年轻人。这可能因为第一次世界大战期间的士兵的密切接触而传播,并导致了全球的大流行。

1925年6月28日

一个12岁女孩接受了心脏二尖瓣狭窄治疗手术。尽管现在二尖瓣置换很常见,但是那个年代,只能在她狭窄的瓣膜上划一刀以缓解症状。

1927年

Drinker和Shaw发明了"铁肺(iron lung)"以治疗脊髓灰质炎引起的呼吸肌麻痹。他们的做法是,把病人除了颈部和脑袋外,均放在一个密封的容器内,通过改变容器内的压力以带动患者的呼吸机活动,帮助吸气和呼气。在1923年,Drinker描述了一个"房间大小的呼吸机",这个装置可以同时帮助数名病人进行呼吸。

1928年

Alexander Fleming(弗莱明)发现了盘尼西林,就是著名的青霉素。这可能是历史上最偶然的科学发现。在研究各型葡萄球菌时,弗莱明将一些培养皿置于实验台上以用于日后观察。几天后,他发现培养物被霉菌孢子所污染,但惊奇地发现,在霉菌孢子生长的区域,葡萄球菌被击退了。尽管弗拉明已经发现了青霉素,但是正式的临床应用却在十年以后,因为制造青霉素很难,并且青霉素对其它细菌性感染的治疗作用还没有被认可。1940年代,德国开始侵犯欧洲,牛津的一群科学家的工作使大规模生产青霉素称为可能,并且最终认识到了青霉素的强大疗效。

1948年6月3日

Sidney Farber报道了治疗儿童早期白血病的发现。根据传统认识,如果白血病儿童给予叶酸的话,他们的急性白血病会恶化,根据这个理论,Farber给予儿童一个叶酸抑制剂,就是氨嘌呤,16名儿童中的10个获得了明显的疗效。尽管还存在很多问题,例如副作用和只是临时缓解,但这毕竟是一个开始。

1951年

John Gibbon在1935年已经开始了人工循环的尝试,那时候已经能成功给一只猫维持循环达半个小时之久,但因为Gibbon在二战中参加了陆军医疗队而中断。退伍回来之后,他使用体外循环装置成功给一只狗施行了模拟心脏手术。1954年Gibbon给一名先心病的女病人施行了第一例开放心脏手术。体外循环装置现在是心脏外科手术的标准配置。

1952年11月13日

Paul Zoll给一组心脏骤停的病人安装了一个新型的体外起搏装置,避免了痛苦的开胸心脏按摩。

1954年12月23日

Joseph Murray和David Hume在波士顿的Peter Bent Brigham Hospital施行了第一例成功的人类肾脏移植手术。尽管当时没有抗排斥药物,但幸运的是,接受肾移植的小伙子的供肾来自于同卵双生的双胞胎兄弟,他幸运的再活了8年。

1955年4月12日

这一天见证了Jonas Salk发明的脊髓灰质炎灭活疫苗的巨大成功。180万的儿童参与了这个灭活疫苗的试验,这个疫苗最终被证实是安全、有效且强大的。

1955年

第一个口服避孕药得以在1955年的一个内分泌会议上亮相。1957年,避孕药可以在市场上销售,不过只用于治疗严重的月经症状。一直到了1960年才得以批准用于避孕。早期的避孕药的主要成分是雄激素,副作用很多,直到1980年才得以减量。

1956年

此前,急性心肌梗塞的诊断依赖于心电图,这导致很多病人被漏诊了。血清标志物,例如白细胞计数和红细胞沉降率等指标也在使用,但都不够特异。S.J. Adelstein和同事发现急性心梗患者锌浓度下降,乳酸脱氢酶和苹果酸脱氢酶的浓度上升。其中乳酸脱氢酶的表现尤为突出,这使得血清标志物诊断急性心梗成为可能,加速了临床诊断并且使诊断更加精确。

1957年9月12日

E. Donnall Thomas等报道了第一例人类的静脉骨髓移植。

1960年7月28日

1958年,麻疹还是个让人生畏的儿童传染病。在美国,这一年导致了552名儿童死亡。相比较而言,脊髓灰质炎的致死人数为255人。在这天发表的系列文章中,麻疹减毒活疫苗的临床试验表现出重大成功,并且副作用很小。在这之后的1963年,麻疹减毒活疫苗被批准注册,此后,麻疹的发病率急剧下降。

1963年6月13日

那个年代,为了避免机体对移植肾的排斥反应,通常会联合全身放疗、局部放疗以及药物治疗。Brigham Hospital的医生们试图只用药物控制排斥反应,以避免放疗带来的副作用。这个涉及5例患者的病例报告的结果让人振奋。如今,免疫抑制药物已经成为了器官移植的基准。

1968年

哈佛大学医学院的一个特别委员会建议修改死亡的定义,这促使遭受毁灭性神经损伤的病人可能成为器官移植的供体。这个脑死亡的概念成为了无数的器官捐献和移植在法律上和伦理上的依据。

1969年2月13日

尽管帕金森病早在1817年就有报道,那时候被称作是"震颤麻痹",但是一个多世纪过去了,还没有有效地治疗方法。到了1950年代,终于出现了转机。研究者发现帕金森病患者的脑中多巴胺的含量偏低。这篇文章发现了一个叫做左旋多巴的多巴胺的前体物质可以部分控制患者的帕金森病症状。后来又加入了卡比多巴以缓和左旋多巴的副作用。两者的联合尽管还不完美,但却成为了如今多帕金森病治疗的基石。

1971年2月25日

Baruch Blumberg于1965年在黄疸的澳大利亚土著居民体内分离出了"肝炎相关澳大利亚抗原"(HAA),被我们简称"澳抗"。后来澳抗与急性肝炎之间的关系被确认了。但是,澳抗是否与自身免疫性疾病有关,为什么某些肝炎病人澳抗持续存在,这样的问题还没有答案。澳抗后来成为了众所周知的乙肝表面抗原,这个抗原的发现也成为了筛查乙肝病毒感染者的重要步骤,并最终帮助乙肝疫苗的发明。

1973年2月15日

第一次报道在筛查中使用结肠镜切除结肠息肉,从而降低结肠癌发病率。

1974年3月28日

Lindner和他的同事注意到接受长期透析治疗的患者中的数例患上了心绞痛、心肌梗塞和卒中。这组病例的报告使人们得以关注长期血透的副作用,并且促使人们去研究动脉粥样硬化形成的病理生理机制。

1974年12月5日

Parrish和同事第一次提出"光化学疗法"的术语,他们用这种新的治疗方法治疗银屑病(牛皮癣)。这种方法先口服光敏感化药物8-甲氧基补骨脂素,再将皮肤暴露于长波的紫外线A光下治疗。尽管后来的研究担心长时间的光疗可能引起肿瘤,但该疗法却成为了控制广泛银屑病的方法。

1980年5月1日

第33届世界卫生大会上,世界卫生组织官方确认天花在全球范围内已经灭绝。这是历史上人类主动消灭的第一种疾病。天花大约在公元前1万年前就被发现,造成了成千上万死亡,这个高度传染性和致死性的疾病最终被灭绝了,可以算是20世纪最大的医学成就。根除天花之后引发了一个争论,那就是是否继续保留这个病毒以用于进一步研究。因为现在儿童并不常规的接受天花疫苗接种,如再次感染天花,后果将不堪设想(例如被生物恐怖主义者利用)。最终,一些活的天花病毒现在被严格的保护了起来。

1980年8月7日

一篇报道最早描述了使用植入式自动除颤器治疗顽固性药物治疗不敏感的室性心律失常。现在这被称为"植入式心律复律器和除颤仪"(ICD),它可以识别并逆转潜在的室性心律失常,如今ICD已经成为了治疗致死性心律失常的重要选择。

1980年10月9日

Szmuness及同事开展的临床对照试验显示,在接受乙肝疫苗一次注射后,96%的患者可以获得高水平的乙肝表面抗体,并且可以极大程度的降低高危患者的肝炎发生率。尽管这不是如今使用的疫苗的形式,但这却是迈向免疫保护这个严重的疾病的一大步。

1980年12月25日

根据自身患癌症的经验,NEJM的编辑兼胃肠病专家Franz Ingelfinger提出:医生应着力建设与患者之间独裁且家长制的关系。这跟目前教科书教导的理念相互抵触。在这篇文章中,Ingelfinger主张医生应当对患者负起责任,而不是把决策的重任交付到患者的肩上。

1981年7月2日

这是肿瘤外科学上里程碑式的事件。一直以来乳腺癌患者都需要接受根治性的乳癌根治术,这种传统的手术方式一直追溯到1882年Halsted的贡献,但手术创伤很大,副作用很多。在这一年的随机对照试验中,小于2 cm且淋巴结阴性的乳腺癌患者,研切除肿块所在的1/4象限乳房加上淋巴结清扫和放疗可以获得与乳腺癌根治术同等的疗效。肿瘤外科自此开始由巨创走向低创,而不是盲目扩大切除范围,开始重视了肿瘤生物学。

1981年12月10日

一组关于同性恋男性的病例报告成为了最早描述HIV病程的报告,故而算是里程碑性的。它报道了4个既往健康的同性恋男性受卡氏肺孢子虫感染、广泛粘膜念珠菌感染和多种病毒感染。4人中的3名长期未明原因发热,所有病人均对病原无抵抗力且淋巴结肿大。

1982年5月27日

如果面临肺癌的诊断,患者是倾向于选择手术还是放疗。在以往的一个报道里,患者倾向于放疗,但是在这个研究中,当患者被告知两种疗法的预期生存数据时,患者会倾向于选择手术。此外患者的选择也与他们以前对各种疗法的了解有关。故而,作者认为,医生和患者需要预先知道疗效的差别,从而减少偏倚,提高医疗决策的质量。

1982年12月2日

William DeVries医生第一次尝试植入人工心脏,病人是一名61岁的充血性心力衰竭的患者。尽管手术本身很成功,但是术后的处理却异常困难,以至于在1990年,该型号的人工心脏被停用。因为人工心脏可以缓解心脏移植供体的不足,故而对其的研发从未中断。许多年之后,这个1982年的研究的价值才被发觉。

1988年1月7日

尽管"放弃抢救"(do-not-resuscitate, DNR)法令备受争议,但Tom Tomlinson和Howard Brody却提出了3点理由支持DNR。他们描述了在不同的环境下医生影响和患者及家属决策的适用性。根据作者的意见,医生在认为抢救肯定无效时,可以给出停止复苏的医嘱,但是如果以复苏前后的生活质量作为主要考虑的因素,患者及家属的价值观及医院必须纳入考虑。

1988年1月28日

有研究发现,325 mg阿司匹林的隔天使用可以大幅度(近1/2)降低致死性/非致死性心肌梗塞的发病率。

1991年10月17日

两个开创性的研究发现了幽门螺杆菌与胃癌之间的强烈联系。其中Haenszel等的研究发现日裔美国人在最初数十年的胃癌发病主要决定于环境因素;而Parsonnet等的研究发现幽门螺杆菌感染与胃腺癌风险增加有关,从而推测幽门螺杆菌可能是癌变的辅助因素。基于这两个研究,可以部分的认为,胃癌其实也算是一个感染性疾病。

1997年4月17日

发现饮食疗法可以干预高血压。将患者分为(1)典型的美国饮食,(2)低糖且水果蔬菜丰富的食物和(3)联合水果蔬菜丰富且低脂少肉的饮食。后两种饮食方式均可以降低血压,这就是DASH饮食的来源。如今,DASH饮食和运动一起,已经成为了抵抗高血压的一线治疗方式。

1997年9月11日

Gulick的研究发现使用茚地那韦、齐多夫定和拉米夫定3种不同机制药物的联合,可以显著并持续抑制HIV的复制。这就是革命性的艾滋病鸡尾酒疗法的诞生。

2001年2月1日

Nature和Science两家杂志都报道了人类基因组的测序和分析。

2002年11月12日

Koutsky和同事长达20年的探索发现了人类乳头瘤病毒(HPV)与宫颈癌之间的关系。这个双盲的随机对照试验发现,HPV疫苗接种完后的1.5年左右,HPV-16相关的宫颈癌几乎绝迹。仅仅4年后,FDA批准了四价HPV疫苗,用于预防宫颈、外阴和阴道肿瘤。尽管还有很多细节问题需要商榷,但HPV疫苗的出现也许意味着宫颈癌的末日。

2003年3月

SARS爆发,最终在29个国家出现了8100个病例,至少导致774人死亡。

2004年4月8日

急性冠脉综合征患者接受阿伐他汀的治疗可以显著降低低密度脂蛋白(LDL)胆固醇、减少心血管病风险和提高生存率。此后,阿伐他汀成为了这种类型患者的标准辅助治疗,而不管他们的基础LDL水平如何。

(完)

文档信息

理查德·斯托曼一直是对的

Posted: 19 Jan 2012 04:29 AM PST

所有反对SOPA的文章之中,有一篇的题目是《理查德·斯托曼一直是对的》,我印象最深。

它指出,最近几个月,美国的公民自由严重倒退。先是《国防授权法案》(NDAA)允许政府可以不经任何程序,无限期拘捕具有恐怖活动嫌疑的人;接着是参与"占领华尔街"运动的民众被污蔑成"恐怖分子";现在又是SOPA,它企图通过控制传播渠道,来抑制信息的流通。

这些对公民自由的侵犯,不禁让人联想到,30年前的1983年,有一个叫做理查德·斯托曼的程序员,声称"软件的自由,关系到人类的自由"。这个观点当时被认为荒唐偏激,但是现在来看,他担心的事情正在变成现实,他其实是对的。

很多人不赞成理查德·斯托曼,一部分原因是觉得他过于极端,是一个狂热的偏执症患者。比如,他仅有的个人电脑是一台龙芯上网本,因为这是世界唯一的全部使用自由软件(Bios、硬件驱动、操作系统、应用软件)的电脑;他拒绝使用手机,因为手机的硬件和软件太封闭,使用某个品牌的手机,几乎等同于接受某家公司的控制;甚至他的头发、他的胡子、他的服装,都让人们觉得这是一个怪人,大可不必理会他的观点。

他创立的自由软件基金会的主页上这样写道

"我们的社会正越来越依赖计算机,我们使用的软件对保证未来社会的自由至关重要。自由软件使我们能够控制我们使用的技术,让技术造福个人和社会,而不是让技术被商业公司或政府控制,用来限制或监视我们。"

(As our society grows more dependent on computers, the software we run is of critical importance to securing the future of a free society. Free software is about having control over the technology we use in our homes, schools and businesses, where computers work for our individual and communal benefit, not for proprietary software companies or governments who might seek to restrict and monitor us.)

很长时间内,我也认为理查德·斯托曼太极端,对他说的"软件=自由"根本没有感觉,只是觉得自由软件可以免费使用,这点很不错。我从没想过,软件与大公司的垄断、政府的独裁有什么关系,言论自由、公民权力,这些问题怎么会涉及到编程呢?任何时候,只要自由软件能让我不花钱就用上新功能,我就心满意足了。

但是近几年来,随着《爱国者法案》、国家防火墙、实名制、SOPA这样的事情越来越多,我逐渐意识到,我是错的,理查德·斯托曼是对的。如今,政府控制人民不再需要警察和军队了,他们只需要控制软件和硬件就行了。

电脑和网络技术,在现代社会中占据了至关重要的位置。控制了它们,就可以监视人们的一举一动、一言一行,等同于控制言论、思想、真理和权力。你或许会说,面对面的交谈,就可以免受控制。错!想一想我们怎么安排见面?再想一想,我们身上的每一台设备都与网络相连,这意味着什么?

假设一个邪恶的政府与大资本家联手,企图剥夺人民的自由。只要自由软件存在,他们就不可能完全成功,因为代码和技术细节都是开放的,他们无法掩人耳目,自由软件将是人民反抗的武器。反过来,如果没有自由软件,代码、协议、操作系统、硬件驱动、文件格式都是保密的,请问你怎么反抗呢?你拿什么反抗呢?根本不需要SOPA,你的自由早就在他人的控制之下了。

这就是斯托曼一直重复的警告,可惜大多数人都忽视了他的话,只从经济角度看待代码。直到有一天,代码与我们的自由紧密相关的时候,我们才开始醒悟。自由软件是抵抗邪恶政府、捍卫自由的武器。源码包含着力量,我们必须保证,它控制在自由的人们手里。

最终来说,自由软件与商业无关,它只关系到人类的自由。GPL许可证从来不反对用软件挣钱,它只反对你通过限制他人的自由来挣钱。在理查德·斯托曼看来,专有软件剥夺用户的自由,最终将导致灾难性的后果,高度依赖计算机的社会尤其如此。

如果你想推广你的代码,让更多的人使用,那么BSD许可证效果更好。但是,如果你想保证自由从此再不会消失、而是像雪球那样越滚越大,那么GPL许可证是最好的选择。

理查德·斯托曼在30年前,就意识到这一点。他忍受各种艰难困苦,绝不妥协,到处鼓吹自由软件的合理性和必要性。今天我们已经看清楚了,30年了,他一直是对的!

必须让大家明白,软件代码不仅仅是商业产品,更重要的,它是人类自由的一部分。如果我们要保卫自由,就必须支持自由软件。你可以使用闭源软件,但是你应该支持自由软件,因为没有它,就没有我们的自由,不仅未来如此,而且现在已经如此了。

(完)

文档信息

SOPA为什么是一部恶法

Posted: 17 Jan 2012 12:27 AM PST

最近,美国互联网界最热门的话题,非SOPA莫属。

SOPA是《禁止网络盗版法案》(Stop Online Piracy Act)的缩写。该法案目前正在美国国会审议,引起了大量争议。

SOPA的主要内容是,采取更严厉的措施打击互联网盗版。具体来说,就是以下四条:

  (1)美国政府在得到法院禁令后,可以命令"网络广告提供商"(比如doubleclick)和"在线支付提供商"(比如PayPal)停止向侵权网站提供服务。

  (2)美国政府还可以命令搜索引擎(比如Google)不得显示侵权网站的内容,以及命令电信服务商屏蔽侵权网站。

  (3)在六个月内获取(包括转贴和上传)盗版材料累计10次者,最高可判处5年有期徒刑。

  (4)如果互联网服务提供商事先采取防盗版措施,可免除侵权责任;如果明知有人利用该服务进行盗版活动,却不加以制止,将加重惩罚。

可以看到,以上四条措施,都不是通过打击盗版者来防止盗版,而是通过扩大连带责任来防止盗版。

这种"责任扩大化"的后果,可以归结为以下几点:

A. 一旦这个法案通过,整个互联网产业都将受到牵连。任何公司只要提供互联网服务,就必须为服务对象的行为负责,这会影响公司的运作模式,大大提高成本。

B. 该法案还会影响到互联网的技术架构。因为网络代理服务(Proxy)和域名解析(DNS)也属于该法案禁止向盗版者提供的服务,如果Proxy和DNS都部署实时监控,互联网架构将变得复杂,效率也会降低。

C. 该法案实际上将"互联网审查"(internet censorship)合法化。它规定任何公司如果没有"事先采取防盗版的措施",就是连带责任人。这等于命令各家公司必须自行审查用户提交的内容,"言论自由"将不复存在。维基百科、Youtube、Flickr这一类用户直接贡献内容的网站,也没法生存下去了。

D. 该法案还废除了《数字千禧年版权法》(DMCA)规定的"安全港"(safe harbor)原则。所谓"安全港",指只要服务商在接到侵权通知后的规定时间,采取相应措施,就可免除责任。而SOPA要求服务商设法自行鉴别出侵权内容,否则就要承担责任。

总之,这个法案将加重所有人的责任,改变互联网的运行模式,提高成本,阻碍创新,剥夺人民的言论自由,却无法真正地消灭盗版。

现在的形势是,电影公司和唱片公司是这个法案最主要的支持者,而互联网业者普遍持反对态度。Google和Facebook已经发表声明,批评该法案;维基百科Reddit 明天(2012年1月18日)将全站变黑,以示抗议。

如果你想知道,什么叫"全站变黑"(blackout),可以看看SOPAblackout.org,它寓意如果SOPA通过,互联网世界将一片黑暗。

就连白宫也反对国会通过这个法案。奥巴马政府的技术主管,虽然盗版问题必须得到解决,但是

"我们不支持那些影响言论自由、增加网络风险、阻碍创新的立法。......任何法案不应该破坏互联网的技术架构。"

(We will not support legislation that reduces freedom of expression, increases cybersecurity risk or undermines the dynamic, innovative global Internet.... [any proposed legislation] must not tamper with the technical architecture of the Internet.)

这个月,美国国会将第三次讨论SOPA。太平洋对岸的整个互联网界都已经动员起来了,越来越多的人开始采取行动反对SOPA,让我们拭目以待这部恶法的结局。

【预告】

我的下一篇文章将继续评论SOPA,题目为《理查德·斯托曼一直是对的》

(完)

文档信息

王实味的《野百合花》

Posted: 14 Jan 2012 08:56 AM PST

1.

去年12月26日,南京大学历史系高华教授患肝癌去世,享年57岁。

他是中共党史专家,我读过他的许多文章(比如"做饭技术革新运动")。听到他去世的消息,我很难过,决定好好读一遍他的代表作《红太阳是怎样升起的----延安整风的来龙去脉》

此书是目前国内唯一的系统研究"延安整风运动"的学术著作,具有很高的学术价值。但是,因为与官方观点截然相反,只能在香港出版。我认为,如果想要真正理解中国共产党和毛泽东,此书是必读的。

(插一句,网上还有高华教授的一些讲座录音,可下载。请自行搜索关键词"高华"+"有关红军长征研究的若干问题"、"谈谈抗战历史的几个问题"、"国民党在1949年失败的原因"、"毛泽东何以发动文革"、"再探林彪事件"。)

2.

"延安整风运动"为什么值得研究,并且极其重要?

高华教授这样写道:

"延安整风运动是毛泽东运用其政治优势,彻底改组中共上层机构,重建以毛为绝对主宰的上层权力再分配的过程。同时,延安整风运动又是毛泽东以自己的理念和思想,彻底转换中共的"俄化"气质,将中共改造成为毛泽东的中共的过程。

毛泽东在整风中运用他所创造的思想改造和审干、肃反两种手段,沉重打击了党内存留的五四自由民主思想的影响和对苏俄盲目崇拜的气氛,不仅完成了党的全盘毛泽东化的基础工程,而且还建立起一整套烙有毛泽东鲜明个人印记的中共新传统,其一系列概念与范式相沿成习,在1949年后改变了几亿中国人的生活和命运。"

这就是说,1949年后,直到现在,我们所处的政治制度,我们接受的革命教育,我们习惯的思维模式,很大程度上都源自"延安整风运动"。

一个证据就是王实味的《野百合花》事件。它反映了一个理想主义倾向的知识分子在延安的遭遇,揭示了1949年后,整个中国自由主义知识阶层的命运。同时,这个事件还能让我们看到,历史上真正的延安是一个怎样的地方。

下面是我根据《红太阳是怎样升起的》一书整理的。

3.

王实味,作家,1906年生于河南省潢川县。

1926年,他在北京大学读书期间,加入中国共产党。不久以后,因为追求党内女同学,他与支部书记发生矛盾,被说成"小资情调浓厚,革命意志和组织观念十分淡薄,入党动机卑鄙"。北大支部最后决定,将其开除出党。

1937年10月,31岁的王实味来到延安,进入鲁迅艺术学院的马列学院编译室,参与翻译马克思主义经典著作。他个性耿直狷介,看不惯顶头上司陈伯达种种谋上压下的表现,导致与领导关系紧张。

1941年9月,马列研究院改名为中央研究院,王实味转入中国文艺研究室作特别研究员,不再翻译外文著作,有了一定的创作自由,开始写文章了。

1942年3月,他将自己对延安生活的感受,写成了5000多字的杂文《野百合花》,发表在中共中央机关报《解放日报》的文艺副刊。这篇文章为他惹来杀身大祸。

4.

《野百合花》的开头,王实味写道,国民党统治区的爱国青年怀着抗日热情来到延安,却发现延安中央大礼堂的舞会在通宵达旦地举行,一派"歌啭玉堂春、舞回金莲步的升平气象"。

他说,在路上听到两个延安女青年的对话。

"(某领导)动不动,就说人家小资产阶级平均主义,其实,他自己倒真有点特殊主义。事事都只顾自己特殊化。对下面同志,身体好也罢,坏也罢,病也罢,死也罢,差不多漠不关心!"

"哼,到处乌鸦一般黑,我们底××同志还不也是这样!"

"说得好听!阶级友爱呀,什么呀----屁!好象连人对人的同情心都没有!平常见人装得笑嘻嘻,其实是皮笑肉不笑,肉笑心不笑,稍不如意,就瞪起眼睛,摆出首长架子来训人。 "

"大头子是这样,小头子也是这样。我们的科长,对上是毕恭毕敬的,对我们,却是神气活现,好几次同志病了,他连看都不伸头看一下。可是一次老鹰抓了他一只小鸡,你看他多么关心这件大事呀!以后每次看见老鹰飞来,他都嚎嚎的叫,扔土块去打它----自私自利的家伙!"

"我两年来换了三四个工作机关,那些首长以及科长、主任之类,真正关心干部爱护干部的,实在太少了。"

通过这段对话,王实味说出了,延安青年知识分子中普遍存在的失望和激愤。

然后,他进一步指出,延安存在一些不合理的现象,比如"害病的同志喝不到一口曲汤,青年学生一天只得到两餐稀粥"、"颇为健康的'大人物'作非常不必要不合理的'享受'"、"食分五等,衣着三色"......

写到这里,王实味已经从表达年轻人的不满,转为批评延安的政治制度了。他得出结论:中国专制主义的旧传统已严重侵蚀了中共的肌体,即使在延安,"旧中国的肮脏污秽也沾染了我们自己,散布细菌,传染疾病"。

仿佛还嫌这样说不过瘾,他笔锋一转,将批评的矛头直指毛泽东独创的名言"天塌不下来"论。

"有一种民族形式的理论,叫做'天塌不下来'。

是的,天是不会塌下来的。可是,我们的工作和事业,是否因为'天塌不下来'就不受损失呢?这一层,'大师'们的脑子绝少想到甚至从未想到。"

高华教授解释了,为什么这段话闯了大祸:从四十年代初开始,毛泽东就愈来愈喜欢讲"天塌不下来",在形势紧张,中共面临困境时,毛爱谈"天塌不下来";在闻知党内外有不满意见时,毛更爱说这句话:"有意见,你让人家讲吗,天又不会塌下来!","有话就说,有屁就放,天塌不下来!","我劝同志们硬着头皮顶住,地球照转,天塌不下来!"

王实味完全没有意识到这样直接批评的后果,继续满腔热血地慷慨陈辞:

"我们须要以战斗的布尔什维克能动性,去防止黑暗的产生,削减黑暗的滋长......要想在今天,把我们的阵营里一切黑暗消灭净尽,这是不可能的;但把黑暗消灭至最小限度,却不但可能,而且必要。

如果让这样发展下去,则天----革命事业的天----是'必然'要塌下来的。别那么安心罢。"

最后,他还书生气十足地声明,自己放言直谏绝非为争个人利益,甚至对延安的等级制度表现出善意的理解,认为"对那些健康上需特殊优待的重要负责者,予以特殊的优待是合理的而且是必要的。一般负轻重要责任者,也可略予优待"。只是处在当前"艰难困苦的革命过程中","许多人都失去最可宝贵的健康的时期",为了"产生真正铁一般的团结","负责任更大的人,倒更应该表现与下层同甘共苦(这倒是真正应该发扬的民族美德的精神)。"

5.

《野百合花》发表后,在延安引起轰动。

各学校、机关纷纷仿效,办起自己的内部刊物,说出人们真实的感想。王实味的工作单位中央研究院,95%的工作人员同情、支持王实味的观点,研究院领导成为大家批评的目标。延安大学也出现了民主"一边倒"的局势。在3月26日全体党员大会上,与会者控诉了"个别领导同志,以主观武断的态度处理问题,缺少民主精神,以'尊重组织'、'尊重领导人的威信'等为借口变相地压制民主,以致造成一部分同志不敢讲话和不愿讲话的现象",会议"打破了过去大家畏缩不敢发言的空气,充分发扬了民主",有人甚至提议,应以清算的方式,明确责任问题,"是非属谁。责任属谁,根究到底,必须得出正确的结论"。

已经奉命停课,或即将停课转入整风的各学校,和已转入整风检查阶段的各机关,都不同程度地出现了动荡的局面,青年知识分子普遍要求"揭盖子"和割领导的"尾巴"......

一时之间,延安的宣传阵地有失控的迹象。

6.

毛泽东对《野百合花》是什么态度呢?

据胡乔木回忆,毛泽东读完《野百会花》后,气愤地"猛拍办公桌上的报纸",厉声问道,"这是王实味挂帅,还是马克思挂帅"?毛当即给《解放日报》打电话,要求作出深刻检查。他感到情况不妙,担心运动将失去控制,迅速改变原先制定的利用"自由主义"打击"教条主义"的策略,决定抛出王实味作为靶子,先行将"自由化"打压下去。

1942年3月31日,《野百合花》发表后一个星期,毛泽东在《解放日报》改版座谈会上,抓住"立场"、"绝对平均观念"和"冷嘲暗箭"三个问题,向延安青年知识分子发出严厉警告:

"有些人是从不正确的立场说话的,这就是绝对平均的观念和冷嘲暗箭的办法。近来颇有些求绝对平均,但这是一种幻想,不能实现的。我们工作制度中确有许多缺点,应加改革,但如果要求绝对平均,则不但现在,将来也是办不到的。小资产阶级的空想社会主义思想,我们应该拒绝。......冷嘲暗箭,则是一种销蚀剂,是对团结不利的。"

毛泽东的上述警告赫然刊登在4月2日《解放日报》的头版。

第二天,1942年4月3日,中宣部正式发出有名的"四三决定"(即《关于在延安讨论中央决定及毛泽东同志整顿三风报告的决定》)。这个决定是"在毛泽东直接领导下",针对中研院整风出现的"自由化"倾向,特为"纠偏"而制定的。《决定》明确申明:整风必须在各部门的领导机关负责人领导下进行,不得以群众选举的方式,组织领导整风的检查委员会;在检查工作时,不仅只检查领导方面的,而且要检查下面的和各个侧面的;每人都必须反省自己的全部历史。"四三决定"的颁布不仅结束了短暂的延安之春,而且标志着自1941年10月就秘密酝酿的干部审查运动即将拉开帷幕(当时成立了以康生为首的"党与非党干部审查委员会"),整风不久将转入严酷的审干肃反阶段。

1942年4月5日,《解放日报》刊登胡乔木起草的《整顿三风必须正确进行》的社论,指斥整风已出现了"不正确的方法",再次重复毛泽东3月31日发出的警告,不指名地抨击王实味是"从不正确的立场来说话",谴责王实味等的"错误的观念,错误的办法,不但对于整顿三风毫无补益,而且是有害的"。

至此,局势完全转变,暴风雨即将来临。

7.

1942年4月7日,中央研究院开始整顿内部,有条不紊地部署反王实味斗争。很快,院内原先支持、同情王实味的干部,被骤然降临的风暴吓得不知所措,随即为求自保,纷纷反戈一击,或痛哭流涕检讨自己立场不稳,上当受骗;或义愤填膺,控诉王实味一贯"反党"、"反领导"。一些人甚至作出与王实味"势不两立"的模样,要求组织上严惩王实味。

王实味被控的罪名也不断升级,先后戴上了三项"帽子":反党分子(不久又升格为"反党集团头目")、托匪、国民党特务(又称"国民党探子")。他抵抗了几天,先是称病缺席,后被抬着担架至会场接受批斗。

1942年6月4日,在持续的精神恐惧中,王实味的书呆子气再一次发作,宣布褪出中共(来到延安前,他已经重新入党),以为就此可以摆脱一切。但是,他太天真了,党组织这个时候绝不会给他这种自由,而是要将其开除出党。

1942年6月6日,他被定为托派分子,并与延安中央研究院、中央政治研究室的其他4人,一起被打成"五人反党集团",被开除出党。即使他痛哭流悌,收回褪党声明,承认自己的言论犯了弥天大罪,跪在中央组织部磕头求饶,也丝毫无济于事。

1943年4月,康生下令逮捕王实味。关押期间,又查出王实味1927年在国民党中央党部当过3个月文书。于是,王实味头上除"反革命托派奸细分子"、"反党五人集团成员"外,又加戴一顶黑帽子:"暗藏的国民党特务"。

1946年,王实味的审查结论公布,他被定为"反革命托派奸细分子"。

1947年3月,胡宗南进攻延安。王实味作为在押犯,随同大队撤离延安,来到山西省兴县,关押在晋绥公安总局的一个看守所。

1947年6月,兴县遭国民党飞机轰炸,晋绥公安总局请求处决王实味,得到康生的批准。

1947年7月1日晚上,王实味被砍头,尸体扔进一眼枯井,时年41岁。

8.

1962年1月30日,毛泽东《在扩大的中央工作会议上的讲话》中说,王实味是个"暗藏的国民党探子","他当特务,写文章骂我们,又死不肯改"。

1991年2月7日,中华人民共和国公安部在经过长期取证后,作出《关于对王实味同志托派问题的复查决定》,指出:

"经复查,王实味同志1930年在沪期间与原北大同学王凡西、陈清晨(均系托派分子)的来往中,接受和同情他们的某些托派观点,帮助翻译过托派的文章。在现有王实味的交代材料中,王对参加托派组织一事反反复复。在复查中没有查出王实味同志参加托派组织的材料。因此,1946年定为'反革命托派奸细分子'的结论予以纠正,王在战争环境中被错误处决给于平凡昭雪。"

(完)

文档信息

处理Apache日志的Bash脚本

Posted: 05 Jan 2012 09:32 PM PST

去年一年,我写了将近100篇网络日志。

现在这一年结束了,我要统计"访问量排名",看看哪些文章最受欢迎。(隆重预告:本文结尾处将揭晓前5名。)

以往,我用的是AWStats日志分析软件。它可以生成很详细的报表,但是不太容易定制,得不到某些想要的信息。所以,我就决定自己写一个Bash脚本,统计服务器的日志,顺便温习一下脚本知识。

事实证明,这件事比我预想的难。虽然最终脚本只有20多行,但花了我整整一天,反复查看手册,确认用法和合适的参数。下面就是我的日志分析脚本,虽然它还不是通用的,但是我相信里面用到的命令,足以满足一般的日志分析需求,同时也是很好的学习Bash的实例。如果下面的每一个命令你都知道,我觉得可以堪称熟练使用Bash了。

一、操作环境

在介绍脚本之前,先讲一下我的服务器环境。

我的网络服务器软件是Apache,它会对每一个http请求留下记录,就像下面这一条:

  203.218.148.99 - - [01/Feb/2011:00:02:09 +0800] "GET /blog/2009/11/an_autobiography_of_yang_xianyi.html HTTP/1.1" 200 84058 "http://www.ruanyifeng.com/blog/2009/11/freenomics.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"

它的意思是2011年2月1日,IP地址为203.218.148.99的访问者,向服务器请求访问网址/blog/2009/11/an_autobiography_of_yang_xianyi.html。

当天所有的访问记录,组成一个日志。过去一年,一共生成了365个日志文件。它们存放在12个目录中,每一个目录表示一个月(2011-01、2011-02、......2011-12),里面的日志文件依次为www-01.log、www-02.log、......www-31.log(假定该月有31天)。

在不压缩的情况下,365个日志文件加起来,要占掉10GB空间。我的目标就是分析这10GB日志,最后得到一个如下形式的访问量排名:

  访问量 网址1
  访问量 网址2
  访问量 网址3
  ...... ......

二、为什么要用Bash

很多计算机语言,都可以用来完成这个任务。但是,如果只是简单的日志分析,我觉得Bash脚本是最合适的工具。

主要原因有两个:一是"开发快",Bash脚本是各种Linux命令的组合,只要知道这些命令怎么用,就可以写脚本,基本上不用学习新的语法,而且它不用编译,直接运行,可以边写边试,对开发非常友好。二是"功能强",Bash脚本的设计目的,就是为了处理输入和输出,尤其是单行的文本,所以非常合适处理日志文件,各种现成的参数加上管道机制,威力无穷。

前面已经说过,最终的脚本我只用了20多行,处理10GB的日志,20秒左右就得到了结果。考虑到排序的巨大计算量,这样的结果非常令人满意,充分证明了Bash的威力。

三、总体思路

我的总体处理思路是这样的:

  第一步,处理单个日志。统计每一天各篇文章的访问量。

  第二步,生成月度排名。将每一天的统计结果汇总,得到月度访问量。

  第三步,生成年度排名。将12个月的统计结果汇总,进行年度访问量的排序。

四、处理单个日志

以2011年1月1日的日志为例,它在目录2011-01之中,文件名是www-01.log,里面有10万条如下格式的记录:

  203.218.148.99 - - [01/Feb/2011:00:02:09 +0800] "GET /blog/2009/11/an_autobiography_of_yang_xianyi.html HTTP/1.1" 200 84058 "http://www.ruanyifeng.com/blog/2009/11/freenomics.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"

处理这个日志,我只用了一行代码:

  awk '$9 == 200 {print $7}' www-01.log | grep -i '^/blog/2011/.*\.html$' | sort | uniq -c | sed 's/^ *//g' > www-01.log.result

它用管道连接了5个命令,每一个都很简单,我们依次来看:

(1) awk '$9 == 200 {print $7}' www-01.log

awk命令默认用空格,将每一行文本分割成若干个字段。仔细数一下,我们需要的只是第7个字段,即http请求的网址,{print $7}表示将第7个字段输出,结果就是:

  /blog/2009/11/an_autobiography_of_yang_xianyi.html

考虑到我们只统计成功的请求,因此再加一个限制条件,服务器的状态代码必须是200(表示成功),写成"$9 == 200",即第9个字段必须是200,否则不输出第7个字段。

更精细的统计,还应该区分网络蜘蛛和真实访问者,由于我想不出简单的分辨方法,这里只好忽略了。

(2)grep -i '^/blog/2011/.*\.html$'

在输出的所有记录的第7个字段之中,并不是每一条记录都需要统计的。根据我的文章的命名特点,它们的网址应该都以"/blog/2011/"开头,以".html"结尾。所以,我用一个正则表达式"^/blog/2011/.*\.html$",找出这些记录。参数i表示不区分大小写。

(3)sort

这时,所有需要统计的记录应该都列出来了,但是它们的次序是杂乱的。接着,使用sort命令,不过目的不是为了排序,而是把相同的网址排列在一起,为后面使用uniq命令创造条件。

(4)uniq -c

uniq的作用是过滤重复的记录,只保留一行。c参数的作用,是在每行的开头添加该记录的出现次数。处理之后的输出应该是这样的:

  32 /blog/2011/01/guidelines_for_english_translations_in_public_places.html
  32 /blog/2011/01/api_for_google_s_url_shortener.html
  30 /blog/2011/01/brief_history_of_arm.html

它表示以上三篇文章,在1月1日的日志中,分别有32条、32条、30条的访问记录(即访问次数)。

(5)sed 's/^ *//g' > www-01.log.result

上一步uniq命令添加的访问次数,是有前导空格的。也就是说,在上例的32、32、30之前有一连串空格,为了后续操作的方便,这里把前导空格删去。sed命令是一个处理行文本的编辑器,'s/^ *//g'是一个正则表达式(^和*之间有一个空格),表示将行首的连续空格替换为空(即删除)。接着,将排序结果重定向到文件www-01.result。单个日志分析就完成了。

五、月度汇总排名

经过上一步之后,1月份的31个日志文件,生成了31个对应的分析结果文件。为了汇总整个月的情况,必须把这31个结果文件合并。

(6)合并分析结果

  for i in www-*.log.result
  do
    cat $i >> log.result
  done

这是一个循环结构,把所有www-01.log.result形式的文件,都写进log.result文件。

然后,我用一行语句,计算月度排名。

  sort -k2 log.result | uniq -f1 --all-repeated=separate |./log.awk |sort -rn > final.log.result

这行语句由3个命令和1个awk脚本组成:

(7)sort -k2 log.result

由于是31个文件汇总,log.result文件里面的记录是无序的,必须用sort命令,将相同网址的记录归类在一起。但是此时,访问次数是第一个字段,网址是第二个字段,因此参数k2表示根据第二个字段进行排序。

(8)uniq -f1 --all-repeated=separate

uniq的作用是过滤重复的记录,参数f1表示忽略第一个字段(访问次数),只考虑后面的字段(网址);参数表示all-repeated=separate,表示过滤掉所有只出现一次的记录,保留所有重复的记录,并且每一组之间用一个空行分隔。这一步完成以后,输出结果变成如下的形式:

  617 /blog/2011/01/guidelines_for_english_translations_in_public_places.html
  455 /blog/2011/01/guidelines_for_english_translations_in_public_places.html

  223 /blog/2011/01/2010_my_blogging_summary.html
  253 /blog/2011/01/2010_my_blogging_summary.html

相同网址都归在一组,组间用空行分割。为了简洁,上面的例子每一组只包含两条记录,实际上每一组都包含31条记录(分别代表当月每天的访问次数)。

(9)log.awk脚本

为了将31天的访问次数加总,我动了很多脑筋。最后发现,唯一的方法就是用awk命令,而且必须另写一个awk脚本。

  #!/usr/bin/awk -f

  BEGIN {
    RS="" #将多行记录的分隔符定为一个空行
  }

  {
    sum=0 #定义一个表示总和的变量,初值为0
    for(i=1;i<=NF;i++){ #遍历所有字段
      if((i%2)!=0){ #判断是否为奇数字段
        sum += $i #如果是的话,累加这些字段的值
      }
    }
    print sum,$2 #输出总和,后面跟上对应的网址
  }

我已经对上面这个log.awk脚本加了详细注释。这里再说明几点:首先,默认情况下,awk将"\n"作为记录的分隔符,设置RS=""表示改为将空行作为分隔符,因此形成了一个多行记录;其次,NF是一个awk的内置变量,表示当前行的字段总数。由于输入文件之中,每一行都包含两个字段,第一个是访问数,第二个是网址,所以这里做一个条件判断,只要是奇数字段就累加,偶数字段则一律跳过。最后,每个记录输出一个累加值和网址,它们之间用空格分割。

(10)sort -rn > final.log.result

对awk脚本的处理结果进行排序,sort默认使用第一个字段,参数r表示逆序,从大往小排;参数n表示以数值形式排序,不以默认的字典形式排序,否则会出现10小于2的结果。排序结果重定向到final.log.result。至此,月度排名完成。

六、脚本文件

用一个脚本,包含上面两节所有的内容。

  #!/bin/bash

  if ls ./*.result &> /dev/null #判断当前目录中是否有后缀名为result的文件存在
  then
    rm *.result #如果有的话,删除这些文件
  fi

  touch log.result #创建一个空文件

  for i in www-*.log #遍历当前目录中所有log文件
  do
    echo $i ... #输出一行字,表示开始处理当前文件
    awk '$9 == 200 {print $7}' $i|grep -i '^/blog/2011/.*\.html$'|sort|uniq -c|sed 's/^ *//g' > $i.result #生成当前日志的处理结果
    cat $i.result >> log.result #将处理结果追加到log.result文件
    echo $i.result finished #输出一行字,表示结束处理当前文件
  done

  echo final.log.result ... #输出一行字,表示最终统计开始

  sort -k2 log.result | uniq -f1 --all-repeated=separate |./log.awk |sort -rn > final.log.result #生成最终的结果文件final.log.result

  echo final.log.result finished #输出一行字,表示最终统计结束

这就是月度排名的最终脚本。编写的时候,我假定这个脚本和log.awk脚本与日志文件在同一个目录中,而且这两个脚本都具有执行权限。

年度排名的处理与此类似,就不再赘述了。

=================================================================

关于脚本介绍,就到此为止。

接下来,揭晓2011年度访问量最大的我的5篇文章。

第五名、《我的Google Adsense帐户被关》

我真想问问Google Adsense中国小组的成员:"难道你们都是机器人吗?难道你们看不出来哪些是流氓网站,哪些是正派网站吗?你们是否真的尽职工作了,还是在不负责任地草菅人命?"

第四名、《乔布斯的告别》

斯蒂夫·乔布斯活着的时候,对病情讳莫如深,外界对他的身体状态毫不知情。现在他去世了,根据各方面透露的信息,我们终于可以还原他的病历,了解像他这样伟人怎样对待生与死。

第三名、《Dan计划:重新定义人生的10000个小时》

在此之前,他几乎没有打过高尔夫球,甚至对这项运动都没有太大兴趣。他的计划是,辞职以后,每天练习6个小时,一周练习6天,坚持6年,总计超过10000个小时,然后成为职业选手。他把这称为"Dan计划"。

第二名、《保持简单----纪念丹尼斯•里奇(Dennis Ritchie)》

13岁的丹尼斯•里奇(Dennis Ritchie),就这样随着父亲一起来到新泽西。那时,谁也没有想到,这个文静的少年将在这里待上一辈子,并且创造出改变世界的发明。

第一名、《人生只有900个月》

你可以画一个30x30的表格,一张A4纸就够了。每过一个月,就在一个格子里打钩。你全部的人生就在这张纸上。你会因此有一个清晰的概念:你的人生是如何蹉跎的。

(完)

文档信息

2011年的两首歌

Posted: 31 Dec 2011 08:27 AM PST

去年(再过一个小时,就是前年)的12月14日,迈克尔·杰克逊的遗作专辑发行了。

其中一首歌叫做《握我的手》(Hold my hand),我非常喜欢。后面的整个一月份,反反复复,都在听它。

歌中唱到:

  This life don't last forever (hold my hand)
  人生有尽头

  So tell me what we're waitin for (hold my hand)
  告诉我,你还在等什么

  Better off being together (hold my hand)
  我们在一起

  Than being miserable alone (hold my hand)
  胜过痛苦的孤单

  

今天,2011年的最后一天,我又听到了另一首相似的歌,Mat Kearney的《或迟或早》(Sooner or later),也很喜欢。

歌中唱到:

  We're all standing with our backs against the wall, Sooner or later
  或迟或早,退到无路可退

  Waiting on a phone that never calls, at all
  或迟或早,等一个永远不会来的电话

  Heartbreak comes, rollin' in like a storm, Sooner or later
  或迟或早,那样伤心,仿佛承受着风暴

  Trying to swim but you're sinking like a stone, alone
  或迟或早,想要游泳,却像石头一样沉下去

  And I can feel fire in the night waiting here
  黑夜中,等在这里,我感到内心在燃烧

  Baby it's like we're walking on a wire through the fear
  宝贝,我们的生活好像走钢丝,令人恐惧

  Take my hand, we'll get there
  那么,握着我的手,一切终会过去

  

这首歌是Google公司制作的视频《2011热点回顾》(Zeitgeist 2011)的背景曲。视频非常非常棒,推荐去Youtube观看原版。(上面优酷的版本有剪接。)

回顾2011年的世界大事:阿拉伯之春、本拉登之死、占领华尔街、伊拉克战争结束......有些人感到,这是最坏的一年,暴民走上街头,世界乱糟糟;但是另一些人感到,这是最好的一年,人民在觉醒,旧秩序被打破,世界向着更自由的方向迈出了一大步。

Google毫无保留地站在后者的立场,歌颂世界进步力量的胜利。这就是我爱它的原因:永远地支持变革。

(图片说明:2011年7月9日,南苏丹正式宣布独立,成为世界上最年轻的国家。)

那么就这样,怀着热情,憧憬着自由,付出汗水和真心,让我们期待一个更美好、更丰硕的2012年。

(完)

文档信息

iDaily的诞生

Posted: 27 Dec 2011 05:49 AM PST

1.

我知道沈一鸣(网名"且听枫吟"、lancelot23),是因为他的网站"Leica中文摄影杂志"。那时是2006年。

后来,我们有一些通信,才发现居然是校友。我的母校是财经类高校,以培养会计师和财税官吏而闻名,能遇到做互联网的校友,真是让人吃惊。

2.

(说明:本文公开之后,当天晚上就收到了一鸣的邮件。他表示不愿意宣传个人,只愿意以团队名义做介绍。

我的本意其实是展示一个媒体人的成长、新媒体发展的动态,以及推荐他们的作品。既然一鸣不愿意多曝光,我只能对下面的原文进行修改,删除了一些涉及他个人的内容,所有的介绍都针对他们整个团队。)

进校的第一个月,他就觉得崇尚实利的校园气氛,与自己的理想格格不入。从大一下学期开始,他就决定放弃大学学业,寻找自己的道路。

开始的时候,他靠给新闻媒体写稿子挣钱。在这个过程中,慢慢意识到新媒体的潜力。2008年,他所在的团队负责推出了现代传播集团旗下的网络杂志《良品杂志》。这个项目的口碑相当好,广告效益也不错,从此奠定了专做都市白领阅读市场的方向。

2010年,他们团队又制作了iPhone平台的新闻类App《周末画报·iWeekly》。这个项目以精美的制作、大幅的彩照、时尚的文章,一炮走红。一鸣说,本来预计2010年底的用户数为10万,结果上线第一个月,用户数就到了20万,年底的时候冲到了200万。与用户数一起上升的,还有良好的广告收入。正是这个项目的成功,坚定了他们专做iOS平台的决心。

2011年9月,因为与投资方发生矛盾,整个团队脱离了原公司,开始了自己创业。我今天想讲的故事,就从这里开始,因为上周三晚上,我和一鸣见了面,聊了很长时间,有一些东西值得分享。

3.

他们的创业从零开始,必须尽快拿出自己的产品,创造收入。那么,三个多月过去了,他们拿出了什么产品?

9月,新版的《中文摄影杂志》发布。

9月,新版的《iMoney·全球汇率转换》发布。

10月,《每日星座运程·NowNow 闹闹的女巫店》发布。

10月,新版的《倒数日》发布。

12月,《每日壁纸杂志》发布。

12月,《iDaily·每日环球视野》发布。

这就是他们在100天内取得的成果。所有产品,全部进入中国区免费App排行榜前10名,其中好几个到过榜首。据他们统计,累计用户数已经达到500万,明年年中有望冲击1000万。

我非常惊叹他们的执行力。一鸣说,目前的开发速度是,每个月推一个App,争取明年年中进行整合。他向我展示了几个正在开发中的项目。

4.

见面的那一天,正赶上他们的新项目iDaily在应用商店上架。一鸣对这个项目寄予厚望,希望把它打造成一个新媒体平台。目前,iDaily每天会提供1到2张新闻图片,每张的尺寸是前所未有的3000像素,所有的细节一览无遗,可以提供震撼性的看图体验。配合每张照片还会有若干篇新闻背景资料和Google地图,基本上就是,我们想象中的网络时代读新闻的方式。

它的商业模式是这样的:所有应用一律免费,依靠优秀的内容争取大量的装机用户,然后通过出售广告盈利。比如,iDaily的新闻照片,都是从美联社和法新社买来的,每一张都价格不菲,一个月下来,购买图片就要花掉一大笔钱,但是这样保证了读者可以看到别处看不到的照片,尤其对白领和高端读者会有吸引力,从而提升了广告价值,保证广告可以精确到达它的目标受众。

我觉得,这种商业模式的探索,比他的那些App软件意义更大。如果这种模式行得通,整个新媒体的生态都将被改变。好消息是,目前他们已经做到收支平衡了,而且还有重量级的国际摄影器材厂商决定在《中文摄影杂志》上面投放广告。

5.

那天晚上,一鸣还带着我参观了他们的公司Clover.ly(四叶新媒体)。那是建国中路的一幢高层商住楼,房间很小,整个团队七八个人,对着墙一坐,就没有多少空间剩下了。虽然拥挤,但是房间布置得非常简洁、精致、温馨,很有家的感觉。书架上堆满了设计类书籍和摄影图册,墙上的白板贴着新产品的界面构思图,给我感觉是一个非常团结、有朝气、决心和战斗力的创业团队。

告别以后,走在回家路上,我心情很不平静。一鸣是85年出生的,他的年龄与他的老成完全不相符;他们整个团队都是这个年龄段,还有90后合伙人,从他们已经取得的成绩和正在做的事情来看,将来还有巨大的提升空间,可能会成为中文互联网界的重量级开发公司。另一方面,他们的经历也说明了,互联网时代可以为我们带来多少机会!只要你做了,拿出产品,这个时代就会为你敞开。

(完)

文档信息

SSH原理与运用(二):远程操作与端口转发

Posted: 23 Dec 2011 04:21 AM PST

接着前一次的文章,继续介绍SSH的用法。

=======================================

SSH原理与运用(二):远程操作与端口转发

作者:阮一峰

(Image credit: Tony Narlock

七、远程操作

SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作。

上一节的操作,就是一个例子:

  $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

单引号中间的部分,表示在远程主机上执行的操作;后面的输入重定向,表示数据通过SSH传向远程主机。

这就是说,SSH可以在用户和远程主机之间,建立命令和数据的传输通道,因此很多事情都可以通过SSH来完成。

下面看几个例子。

【例1】

将$HOME/src/目录下面的所有文件,复制到远程主机的$HOME/src/目录。

  $ cd && tar czv src | ssh user@host 'tar xz'

【例2】

将远程主机$HOME/src/目录下面的所有文件,复制到用户的当前目录。

  $ ssh user@host 'tar cz src' | tar xzv

【例3】

查看远程主机是否运行进程httpd。

  $ ssh user@host 'ps ax | grep [h]ttpd'

八、绑定本地端口

既然SSH可以传送数据,那么我们可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性。

假定我们要让8080端口的数据,都通过SSH传向远程主机,命令就这样写:

  $ ssh -D 8080 user@host

SSH会建立一个socket,去监听本地的8080端口。一旦有数据传向那个端口,就自动把它转移到SSH连接上面,发往远程主机。可以想象,如果8080端口原来是一个不加密端口,现在将变成一个加密端口。

九、本地端口转发

有时,绑定本地端口还不够,还必须指定数据传送的目标主机,从而形成点对点的"端口转发"。为了区别后文的"远程端口转发",我们把这种情况称为"本地端口转发"(Local forwarding)。

假定host1是本地主机,host2是远程主机。由于种种原因,这两台主机之间无法连通。但是,另外还有一台host3,可以同时连通前面两台主机。因此,很自然的想法就是,通过host3,将host1连上host2。

我们在host1执行下面的命令:

  $ ssh -L 2121:host2:21 host3

命令中的L参数一共接受三个值,分别是"本地端口:目标主机:目标主机端口",它们之间用冒号分隔。这条命令的意思,就是指定SSH绑定本地端口2121,然后指定host3将所有的数据,转发到目标主机host2的21端口(假定host2运行FTP,默认端口为21)。

这样一来,我们只要连接host1的2121端口,就等于连上了host2的21端口。

  $ ftp localhost:2121

"本地端口转发"使得host1和host3之间仿佛形成一个数据传输的秘密隧道,因此又被称为"SSH隧道"。

十、远程端口转发

既然"本地端口转发"是指绑定本地端口的转发,那么"远程端口转发"(remote forwarding)当然是指绑定远程端口的转发。

还是接着看上面那个例子,host1与host2之间无法连通,必须借助host3转发。但是,特殊情况出现了,host3是一台内网机器,它可以连接外网的host1,但是反过来就不行,外网的host1连不上内网的host3。这时,"本地端口转发"就不能用了,怎么办?

解决办法是,既然host3可以连host1,那么就从host3上建立与host1的SSH连接,然后在host1上使用这条连接就可以了。

我们在host3执行下面的命令:

  $ ssh -R 2121:host2:21 host1

R参数也是接受三个值,分别是"远程主机端口:目标主机:目标主机端口"。这条命令的意思,就是让host1监听它自己的2121端口,然后将所有数据经由host3,转发到host2的21端口。由于对于host3来说,host1是远程主机,所以这种情况就被称为"远程端口绑定"。

绑定之后,我们在host1就可以连接host2了:

  $ ftp localhost:2121

这里必须指出,"远程端口转发"的前提条件是,host1和host3两台主机都有sshD和ssh客户端。

十一、SSH的其他参数

SSH还有一些别的参数,也值得介绍。

N参数,表示只连接远程主机,不打开远程shell;T参数,表示不为这个连接分配TTY。这个两个参数可以放在一起用,代表这个SSH连接只用来传数据,不执行远程操作。

  $ ssh -NT -D 8080 host

f参数,表示SSH连接成功后,转入后台运行。这样一来,你就可以在不中断SSH连接的情况下,在本地shell中执行其他操作。

  $ ssh -f -D 8080 host

要关闭这个后台连接,就只有用kill命令去杀掉进程。

十二、参考文献

  * SSH, The Secure Shell: The Definitive Guide: 2.4. Authentication by Cryptographic Key, O'reilly

  * SSH, The Secure Shell: The Definitive Guide: 9.2. Port Forwarding, O'reilly

  * Shebang: Tips for Remote Unix Work (SSH, screen, and VNC)

  * brihatch: SSH Host Key Protection

  * brihatch: SSH User Identities

  * IBM developerWorks: 实战 SSH 端口转发

  * Jianing YANG:ssh隧道技术简介

  * WikiBooks: Internet Technologies/SSH

(完)

文档信息