超's profile一只特立独行的老鼠PhotosBlogLists Tools Help

Blog


    March 22

    吃吃饭,骂骂人

    1.
    科社课(学名科学社会主义)是我最不喜欢的课程之一,对其厌恶程度直追自辨(学名自然辩证法)和计算机图形学(学名计算机图形学)。但是由于这是Z大,估计也是所有国内的又红又专只红不专只专不红不红不专学校的必修课,所以我不得不每个周二春光灿烂猪八戒中去教九一边沐浴在扯淡中一边背GRE词汇。D老师是我们Z大有名的又红又专的教师之一,他给我们提出了这样一个命题:中国需要强权。
    我不说他是在怎样的上下文背景中提出的这个说法,虽然估计也想得到,我只对此作出如下回应:
    中国当然需要他妈的强权,美国,缅甸,伊拉克,每一个民主的专制的号称自己民主的不承认自己专制的国家都他妈的需要强权,至少保证社会表面上的安定,但是但是但是,这个强权到底他妈的是维护什么的,是维护浑蛋政党的专制统治的,还是保证民众利益的?当这个强权他妈的听命于一个特权阶级,沦为一个镇压迫害普通民众的工具的时候,谁他妈的想在这样的浑蛋国家生活?一个流氓要耍流氓必然要拿着刀,但是这个流氓公然对被耍流氓的人说我们他妈的拿着刀是很合理的,你是不是特想抢过他的刀来捅死他?
    当然作为一个受过高等教育,对自己的语言文字有要求的人,我不得不把上面的话修改为以上这个样子:
    中国当然需要强权,美国,缅甸,伊拉克,每一个民主的专制的号称自己民主的不承认自己专制的国家都需要强权,至少保证社会表面上的安定,但是但是但是,这个强权到底是维护什么的,是维护政党的专制统治的,还是保证民众利益的?当这个强权听命于一个特权阶级,沦为一个镇压迫害普通民众的工具的时候,谁想在这样的国家生活?(下删61个字)

    2.
    如果你喜欢把所有日本人叫做鬼子,把韩国人叫做高丽棒子,把印度人叫做阿三,把非洲人叫做黑鬼,这是你的自由,虽然我发自内心的觉得这样做很傻很天真,但是我尊重你很傻很天真而且自认为自己不傻不天真的权利,但是,如果你这样称呼他们,下次听到有人叫你支那人,有人又侮辱了你们山东人北京人四川人上海人,有人又伤害了你脆弱的民族和地域感情的时候,求求你,就别出来得瑟了。

    3.
    学校论坛的好处是,你可以多快好省的看到各种弱智傻x言论,虽然我对此已经有了四年的经验,但是最近还是被88上琳琅满目的弱智傻x言论深深刺激了。一个受过几年高等教育的人,除了前面尽了九年义务的洗脑教育,后面你可以从各种途径见到读到不那么弱智的言论,但你还咬定傻x不撒口,哪来的这么大的毅力?
    求求你们了,CNN等报道失实是他们傻x,但是但是但是,与我们天朝的XXTV和新X社的与我国政府形影不离疑似断背不同的是,在堕落的西方社会,一个电视台一个报纸的观点就只是这个电视台这个报纸的观点,它没有资格代表堕落西方的落后生产力代表西方的堕落的文化前进方向代表广大西方无耻人群的根本利益,所以你骂这些个电视台报纸,我理解,你非要说西方社会就“亡我之心不死”,那经济学家这样比较挺我们的观点是不是在“为中华之崛起读书”?后来看了XXTV的所谓真相,都十九年了,咋水平也不与时俱进呢? 想想西方社会的一小撮人也挺可怜,成天闲着没事干,就整天“亡我之心不死”,从早上睁眼到晚上洗脚睡觉,一天醒着16小时包括吃饭喝水上厕所QQ上钓mm的时候还全心全意全情关注兢兢业业前赴后继的“心不死”了几十年,还一下就让你识破了...我们阿根廷人就是不信。

    4.
    昨天和宿舍的一哥们干了一架,原因是我晚上在宿舍用笔记本写东西他不让认为我按键盘的声音完全超出了他的能力承受范围然后让我关掉我不管然后他说你怎么不体谅我我说我凭什么体谅你他说你怎么不讲理我说我还能怎么样灯也给你关了电脑连耳机我都不开就是打打键盘的声音而且我这还是笔记本的软键盘腻者都受不了我也没办法了他说你不是不喜欢住在这个宿舍吗我说我喜不喜欢管你p事然后他说那你小声点吧然后甩门出去再摔门回来。
    事后平静了想想,也没什么好说的,我没觉得我做错了什么就像他也跟定觉得自己很委屈一样,反正以后大不了就相见视若不见就是了。
    但是想想,键盘这点声音都能影响到你合理合法的正常睡眠,地球太危险了,赶紧回火星吧。

     
    March 21

    科社作业

    竟然还要上科学社会主义,竟然还要写作业。随便吧,反正我不会为了一个分数跟着喊口号:
     
     

    所谓的“渐进式”改革,是指在不改变社会主义宪法,不改变共产主义政党领导的基础上(即所谓的四项基本原则),在经济领域进行的一系列改革,如对外开放,允许私营个体企业等等。与之相对的是前苏联及东欧实行的所谓的“休克疗法”,从根本上否定社会主义,引入西方的民主宪政,从而在社会的各个领域里的全面的改革。

    在这个意义上讲,包括英国的“光荣革命”,法国大革命等都可以被认为是“休克疗法”,因为它们都是从根本上改变了旧的政治制度,建立起了新的社会制度。中国实行的所谓的“渐进式”改革,本质是为了缓解共产主义革命在世界范围内的危机而实行的自适应调整,从而挽救巩固自身的统治地位。这就使得这样的改革不可避免的存在着巨大的弊端。单纯的进行经济改革,虽然在很大程度上提高了人民的生活水平,但是在其他的方面并没有任何实质性的改变,普通公民在参与政治生活的层面是仍然处于被统治被代表的地位,没有参政议政的有效途径,从而在社会财富分配这样的关键问题上仍然没有决策权。这就导致了经济改革带来的巨大效益被不公平不公正的分配,“蛋糕”做大了,但是少数特权阶层分得了大部分,而大多的公民只是得到了很少的提高,但是,做大“蛋糕”的资源却是理论上属于全体公民的,在这一点上实际上和前苏联的所谓的“休克疗法”没有太大区别,都是在改革的名义下一少部分人利用国家的政治权利疯狂敛财。

    当然必须承认,改革确实为普通公民该来的一定的利益,尤其是在改革开放的初期。但是随着改革的深入继续,当能够利于全民的措施(比如开放国门为全民带来的机遇)继续,对于社会资源的不公平占用从而导致社会财富的不公正分配成为了社会矛盾的主体。这跟是哪一个具体政党执政没有绝对关系,无论统治者是名叫民主党,共和党,人民党,或者共产党都没有关系,只要这个对政党没有有效的监督弹劾制度,必然会导致分配不公的问题。在没有一个公平公正的政治环境下的经济改革,无论初衷是怎样的,最终必然成为了特权阶级敛财的合法保证。

    每一场改革都会有阵痛,尤其是当改革涉及到政治制度的时候。正如我上面所说,在没有一个公平公正的政治环境下的改革,即使是要改革这个政治环境本身,也会沦为特权阶级的工具,俄罗斯就是很好的例子。同时,当特权阶级本身就是统治阶级的时候,如何遵守“程序正义”的基础上限制这个特权阶级看来是无法可想的。在中国并不缺少法律,即便是一个没有合法性的宪法也是看来冠冕堂皇的,关键是即使我们我承认这个宪法以及在此之上建立的法律结构,我们也缺乏有一个能够严格监督这套法律执行的结构,因为立法者就是执法者同时也是司法者,这使得法律也成了统治的工具而不是控制统治的工具。在这个意义上讲,无论这个“渐进式”改革在前期表现多大的前期优势,当社会财富的创造主体(广大公民)长期无法公平的分到财富的情况下,一场更大更激烈的“休克疗法”必然会到来,而且很有可能就此无法摆脱“休克”。所以,如何在政治上真正的“渐进”改革,以最小的社会震荡而改变政治基石,远比如何证明现在的“渐进式”改革的前期优势,更加有意义。

    March 15

    几首歌

    电脑上Music文件夹已经超过20G了,歌多到估计到毕业也听不完。其实听来听去的不就是这么几首?干嘛收集这么多来?...不好意思,我装b了。
    写乐评这种事情是装b犯女装b犯文学青年女文学青年干的事,所以只罗列一下供大家写乐评以自证。其实有几个看的到来呢?...不好意思,我又装b了。

    PS:
    Akon--Don't Matter
    Mario--How Do I Breathe
    Craig David--Don't Love You No More
    Shakira--Underneath Your Clothes
    The Police--Don't Stand So Close To Me
    Hoobastank--The Reason
    Alison Krauss--When You Say Nothing At ALl
    Fergie--London Bridge
    Linkin Park--What I've Done
    Babyface--Grown & Sexy
    Air Supply--Making Love Out Of Nothing At All
    Carrie Underwood--Wasted
    Boyz II Men--Human II
    Sarah Connor--Every Moment Of My Life
    Cara Dillon--Craigie Hill
    Radiohead--15 Step
    Carried Away--Black & White
    Christopher Cross--Swept Away
    Daughtry--It's Not Over
    Destiny's Child--Stand Up For Love
    Fergie--Fergalicous
    Rihanna--Umbrella
    U2--Walk On
    Westlife--Home
     
    PS2:以上排名略分先后,其中Akon,Mario,Shakira,Craig David四位老师的歌最近听得最多,另外推荐几张专辑,有新有旧:
    Akon-Konvicted
    张学友-Black & White
    Alison Krauss-Now That I've Found You
    Babyface-Grown and Sexy
    Boyz II Men-Evolution
    Fergie-THE DUTCHESS
    Craig David-The Story Goes
    U2-All That You Can't Leave Behind
    February 28

    留点注释

    /*
    1984年,几个自我感觉良好的大学生写了个标语:XX您好,挤在人群里去天安门招摇,龙颜大喜,于是几个大学生成了无数牛b定语的后缀名词。当然,许多年后,谁也不记得他们是谁。那一年,我刚刚出生。落地时身形硕大,胎毛浓重。几个月黑毛褪去,始现人形。
    */
    ...
    /*
    1989年,又一群自我感觉良好的大学生写了无数个标语,挤在人群里去天安门招摇,龙颜巨怒,于是这一群大学生成了更多牛b定语的后缀名词,结果是一部分人成了Nobody被遗忘了,一部分人成了Body被掩埋了。许多年后,谁也不承认自己记得他们是谁。那一年我5岁,患有严重表演癖和演说癖,背得下全本的葫芦娃和森林王国失窃案,讨厌吃课间餐和各种家庭作业。
    */
    ...
    /*
    1994年,那年我11岁,第一次搬家。年龄太小以至于没学会留恋,年龄太小以至于不需要适应。那一年,我不记得这个世界发生过什么。
    */
    ...
    /*
    1997年,XX也成为了历史,于是所有人悲痛或者表演悲痛。那年我13岁,努力扮演或者假装扮演一个好孩子,迷恋或者假装迷恋罗马假日的安娜公主,习惯表现或者假装表现成熟。
    */
    ...
    /*
    2001年,当大洋彼岸的两座楼倒塌的时候,分明听到了身边的欢呼身,第一次在非语文课上联想到了鲁迅所说的在日本看中国人杀头的纪录片的景象。那年刚刚17岁,除了文思如泉涌以外一无是处,写过7页的古体长诗,写过完全符合折韵平仄的词,写过肉麻到令人发指的煽情散文,写过从未被寄出的情书,写过《家》的仿写小说,写过痛骂班主任的讽喻寓言。
    */
    ...
    /*
    2004年,那年刚刚20岁,不想知道这个世界发生过什么。喜欢靠着暖气很专注的吃花生,夏天穿背心短裤打篮球然后冲凉吃盖饭喝啤酒,冬天穿背心短裤打篮球然后不冲凉直接吃盖饭喝啤酒,鼓励恋爱的同志们,抚慰失恋的同志们,怨憎会,爱别离,求不得。
    */
    ...
    /*
    2008年,整个世界被抽象成了五个奇傻无比的很GAY的小矮人,还都在头上顶着一坨一坨神态各异的大便。我,24岁,依然留恋过去,开始憧憬未来,上帝总算为我打开了一扇小窗户,但总担心自己钻不出去。
    */
    February 20

    于是我们连废话也不说

    1.
    和同学一起在小南门外边的小饭馆吃饭,点了一个香辣牛肉。估计厨子是在景德镇专门训练过的,端出来的牛肉片片薄如纱轻如纸,远比我嫂子带回来的灯
    影牛肉叹为观止许多。在纠缠牛肉片的厚度和现在猪牛羊肉价格的问题时老板娘说了一句更让我叹为观止的话:
    现在物价高得都活不下去了,你们学生干吗不再造反一次,反正你们8九年不是造过一次反吗。
    虽然我现在明白那一年的那些事件未必像传说中的那么崇高,虽然以我的经历我也可以先想象当时的更多的大学生未必真的是在为“民主”而挣扎,虽然已经不再为国人的冷漠和瞬间集体遗忘的能力而感到惊讶,但是,从一个普通的略带市侩的中年人口中听到这样的话,以及她背后的更多的普通的略带市侩的中年人们的一张张冷漠的嘴脸,我突然想起了鲁迅在日本看到的中国人看中国人被杀的录像,只不过这次,被杀的中国人是在为看客们争取些什么,却连一个血馒头也未曾留下。
    这些人凭什么值得他们去为之奋斗?
    这些人凭什么值得我们再去为之奋斗?

    2.
    达尔富尔。
    虽然我不觉得应该把奥林匹克捆绑上政治问题,即使我发自肺腑的反对北京奥运,但是想一想:一个能够拍出《辛德勒名单》的犹太导演,对于实行种族屠杀的政府以及变相支持种族屠杀的政府作出非暴力不合作的行为,我们的批评怎么就这么理直气壮?不过想想,三年大饥馑的时候平白被饿死的三千万人,那一年平白被屠戮的无辜的学生,这个政府又有人为他们说过做过些什么。一个可以向自己国民开枪的政府,有怎么会关心别的政府向他们的国民开枪;一个连自己身边人被迫害都漠然的国民,有怎么会同情地球另一端的被迫害的其他国民?

    3.
    逃亡——米沃什
    当我们离开那燃烧中的城市时,
    在第一条野径上,掉头回顾,
    我说∶"让野草覆盖我们的脚印吧。
    让无情的先知在火中沉默,
    且让死者告诉生者所发生的事。
    我们注定要生出一个新的、勇猛的种族,
    免于在那儿昏睡的罪恶与快乐。
    我们走吧 "于是一把火剑为我们劈开大地。
     
    4.
    难得跟人谈论类似的问题,结果旁边的学长说:说这个有什么用,都是废话!
    没错,在这样地一个环境下所有对于身边事的谈论都是废话,因为我们没有可能去改变什么,没有希望去改变什么。
    于是,我们连废话也不说了。这是好事吗?
    January 06

    GetYourXXDC()

     

    CWnd::GetDC

    CDC* GetDC( );

    Return Value

    Identifies the device context for the CWnd client area if successful; otherwise, the return value is NULL. The pointer may be temporary and should not be stored for later use.

    Remarks

    Retrieves a pointer to a common, class, or private device context for the client area depending on the class style specified for the CWnd. For common device contexts, GetDC assigns default attributes to the context each time it is retrieved. For class and private contexts, GetDC leaves the previously assigned attributes unchanged. The device context can be used in subsequent graphics device interface (GDI) functions to draw in the client area.

    Unless the device context belongs to a window class, the ReleaseDC member function must be called to release the context after painting. Since only five common device contexts are available at any given time, failure to release a device context can prevent other applications from accessing a device context.

    A device context belonging to the CWnd class is returned by the GetDC member function if CS_CLASSDC, CS_OWNDC, or CS_PARENTDC was specified as a style in the WNDCLASS structure when the class was registered.

    CWnd OverviewClass MembersHierarchy Chart

    See Also   CWnd::GetDCEx, CWnd::ReleaseDC, CWnd::GetWindowDC, ::GetDC, CClientDC

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

    释放资源有多难?

    GetDC的倒霉名字让人误以为她会优雅的传回一个指针,一夜柔情后轻轻的她走了不占用任何资源,不需负任何责任。实际上不但独占了特定设备的Context,而且无明白的要兴建一个新的对象。所以所有忘了ReleaseDC的同志只能安心等待5分钟后系统不堪重负整个瘫痪,十个月后瓜熟落地,人命官司。为保证下次不犯同样错误,在编程环境上加上一个template,仿照“奥你XX运”的格式加入一个GetYourXXDC()方法,自己封装成对的GetDC和ReleaseDC。同理可以构建NewYourXXObject以将new和delete对应封装,整个世界清静了。

     

    January 05

    2007

    2007年 奥运进入倒数,
    人民日报称百姓生活继续幸福。
     
    一颗嫦娥上了天,万千矿工入了土;
    半夜提税拦不住,全民疯狂炒股;
    肉价从8块涨到十五,它不是一头猪;
    不要给房奴任何机会,不能让所有人都有房住;
     
    深圳点火把外地民工房烧成焦土;
    京城私家车不要给外国友人添堵;
    重庆感谢三峡让大家感受夏日42度;
    杭州县长脱光衣服还在车里谈公务;
     
    山西砖窑济南银座辽宁钢水包,外交部说我们的人权等于美国*5;
    太湖蓝藻洞庭老鼠北京沙尘暴,厦门人民为了PX组织上街大散步;
    纸箱肉包“严打中国”鸭蛋苏丹红,吴仪说我们的食品基本没有毒;
    嘲讽布什力挺缅甸冷眼伊拉克,小水说美国无权公审处死萨达姆;
     
    胡总说人民要有知情权,
    所以十7大成了敏感词上不了google百度;
    牛博YouTube都成了404错误;
    环球时报怎么听怎么像杨二车娜姆;
     
    姚明继续首轮就被屠,小易其实不想去雄鹿;
    对中国男足来说每次抽签都是死亡组;
    易中天讲三国王立群讲史记纪连海讲和绅,
    于丹说只要心态好被强奸也可以觉得很满足;
     
    李阳可以让学生下跪让弟子剃秃;
    孔庆东时时面朝大海向金二祝福;
    老罗和方舟子终于开始公然掐架;
    神棍丁小平率弟子大闹一席一虎;
     
    中医,儒教,龙图腾,中国式民主,
    北京六月雪,南京徐老太,陕西华南虎...
    神奇的土地上的神奇的故事,
    相信人民,相信政府。
    November 04

    未来

    总有人相信从未发生过的历史;
    总有人习惯性的抢占道德制高点,自我感觉良好的指责无辜者;
    总有人标榜政治上正确,貌似公允的做一个立场中立的审判者;
    总有人喜欢扮演一个冷静的思考者,为每一个非合理的事实找到背后的辩证解释;
    总有人处处为统治者着想,规劝别人对所受的委屈以大局为重;
    总有人生活的很猥琐于是觉得世界就是猥琐的;
    总有人认为有希望,总有人认为不需要希望;
    总有人2,总有人反对别人2,总有人反对别人反对别人2;
    ......
    习惯性不说不辩不解释。
    我也希望能够像李白那样,说一句:中国这点破事关我屁事,然后该干忙什么忙什么去。
    我只想做一个正常人,可以理直气壮地过正常人的生活,我不想关心政治关心时局关心左派右派关心和不和谐带几个表,我只想看我想看的书说我想说的话做我想做的事,想笑的时候笑想感动的时候感动想不屑的时候不屑想抱怨的时候抱怨。然而,谁让我不幸生在这呢。
    我不想说服自己,也没法改变别人。现在看来,似乎只有一条道路了。
     
     
     

     
    October 22

    我也可以很几米的

    1.
    我们标榜自己成熟的自白开头总是:小时候看电影,总是喜欢问谁是好人谁是坏蛋,现在长大才明白......
    长大之后,一切的好与坏就显得模糊不清,每一个人每一件事都有了自圆其说的可能,但是,
    我始终觉得,大多数好人依然是好人,坏蛋依然是坏蛋,这个世界总还是有是非的。
     
    2.
    我们希望能全面的看待问题;我们希望能全面的考虑可能的情况;我们希望能......
    最后我们的希望都成了我们选择放弃的理由。
    有时候,我们责备别人冲动,只是因为我们嫉妒他们的勇气。
    我们老了...
    我们老了...
     
    3.
    如果明天就是世界末日,今天你要怎么度过?
    如果后天就是世界末日,今天你要怎么度过?
    如果下个礼拜日就是世界末日,今天你要怎么度过?
    ......
    我们不肯问下去,也许是因为我们没勇气回答。
     
    4.
    有一天,月亮很圆,我对着月亮微笑;
    有一天,月亮很暗,我对着月亮哭泣;
    有一天,月亮很淡,我对着月亮伤感;
    有一天,月亮很亮,我对着月亮诅咒;
    其实,月亮不过是我们快乐或者痛苦的借口。
     
    5.
    跑步的意义在于关注前方,朋友的意义在于远离寂寞;
    寂寞的意义在于体味回忆,回忆的意义在于证明曾经存在......
    我们总是为所有事情都贴上标签,最后就连标签也有了意义。
    标签的意义在于拒绝思考。
     
    6.
    很多年前的日记上写着:我永远不会忘记她。
    是隔壁班上的芬妮?还是坐在右前方的丽莎?或者在路上遇见的说不上名字的白连衣裙女生?或者是...
    没有什么永远不会忘记,没有什么永远不会改变,没有什么永远。
     
    7.
    我们总希望,在错过了许多人之后,还能斜着嘴微笑,最后在落幕时的熙攘人群中,突然看到一直寻找的人。
    所以我们总是为相遇设计种种剧本,然后倔强的等着,等着。
     
    8.
    拥有的时候就不安,失去的时候就缅怀。
    为什么我们一直羡慕楼下的流浪猫活的那么简单?
     
    9.
    我们想去西藏;
    我们想去巴黎;
    我们想去纽约;
    我们想去普罗旺斯;
    其实我们只是喜欢自己这么说的时候的感觉。
     
    10.
    梦里梦见了谁,真的有意义吗?
    October 11

    最新的SP

    Biggest Crap In This Year.
    最后把艾美奖直接插在Crap上。无敌了。
    October 08

    影评&书评

    电影:

    《太阳照常升起》
           姜文说:只能说没看懂,不能说没看见。实际上,我既没有看懂要看懂的,也没看见想看见的。房祖名还照常是房祖名,陈冲还照常是陈冲,姜文无论演什么都照常是姜文,太阳照常升起。看了两个小时唯一一次眼前一亮是看到字幕,才发现原著小说我竟然看过。

     

    《成为简奥斯汀》
           在电影中见到熟人总是很欣欣然的,无论是《穿普拉达女王》中的小公主还是《末代独裁》里的傻大夫,或者是简奥斯汀本人。很少看爱情片不拖着看的,至少这算一部。

     

    《末代独裁》
           基本符合同类型电影的一般套路,一个内心孤独恐惧的独裁者,西方人总是喜欢YY这些独裁者的内心感情,就像我们每一个皇帝戏里的皇阿玛都是忧国忧民的。女大夫在大家庆祝阿敏上台说的话,想想我们在文革开始和文革结束的同样地欢天喜地。

     

    《超市夜未眠》
           古灵精怪的和天使爱美丽又一拼。好片,很值得一看,说这么多就够了。

     

    《阳光小美女》
           简单明了,最喜欢的电影类型。想了很长时间才想起男一号是《冒牌天神》里的摩西,男二号是F6里的Baby   It's U,小男生长得好像梅西。
           U do what U like , And F*** the rest.

     

    《哈5》
           除了还是哈里波特以外,没有任何看点。

     

    《变形金刚》
           完全可以当成动画片或者MVT看的。SP里的Kyle说:世界上还有战争,Cartman继承了100万,Micheal Bay还在拍电影,证明世界上根本没有上帝。

     

    《日本沉没》 
          只能是无论从可看性和人文内涵,都让我们的张陈冯们灰头土脸,败下阵来。

     

    《密会》
           不喜欢这种风格的电影,不过依然觉得不错。想起之前听徐静蕾在一个类似拍摄手法的电影里同样扯了半天淡,至少,这个电影还在讲故事。

     

    《洛丽塔》
           在和原著将同样的故事,仅此而已。

     

    书:


    《追风筝的人》
           情节上的刻意设置和感情上的过分阐释使这本书更像是一个煽情电影剧本。如果说作者想试图表象一个病态国家的样貌的话,和米兰昆德拉还是有差距的。

     

    《四法则》
           完全上当,本来冲着丹布朗的名号去的,显然和他没有任何关系。

     

    《洛丽塔》
           在嘈杂的火车上依然看的入迷。那个仙女岛的比喻实在让我心痒痒的,难道每个人心中都有一个洛丽塔?

     

    《在路上》
           蹩脚的翻译几乎让我放弃这本书,加上作者本身的写作手法,几乎更像随身日记而不是小说。不过奇怪的是,无论读的时候多少次扔到一边,但不仅看完了,而且还想再读一遍,更想去体验书中的生活方式。
           封面上写的“垮掉的一代”实在只是我们的意识形态的鼓吹。

     

    《哈7》
           铁三角没死,斯内卜是好人,伏地魔被哈杀了。其实这本书只用这三句就够了。
           继上一本读到哈和金的“心心相印无须赘言”之后想起金庸,这一本的“19 Years Later ”让我实在怀疑JKR姐姐是不是也看过琼瑶.

    October 06

    上溯大学四年

    来了杭州两个半月,加上大四下半学期疯狂的Hanging out的半年,加上复习考研的半年,加上之前一直在判断思考的一年,加上学技术的一年,加上庸人自扰的自我惩罚的半年,加上毫无目的疯玩的半年,上一次自己认真地写点东西而不是刻意讨好或者肆意评价可以追溯到高中的惨痛回忆(如果高考作文不算)。当然还有来杭州之后穷极无聊写的只有开头的模仿王小波小说的小说。很难想象当年还肆无忌惮的做过一回文学青年,“往事不堪回首月明中”。
    上溯大学四年中最难忘的时刻:
    1.去上学的时候感觉好像要离家很远一样,其实只有8公里;
    2.FaiGe上床的笑话;
    3.军训时膝盖挺不住的时候;
    4.唯一一次认真地做线代作业;
    5.看LW同志开始艰辛的追求团支书的经历;
    6.宿舍去千佛山,FG“漂漂亮亮”的笑话;
    7.第一次在大学踢球,两个助攻一个进球,至今是平生最好的一场比赛;
    8.开始看Movie以为踢球会很猛;
    9.FG去看病的往东走的笑话;
    10.知道李白长大的秘密;
    11.和同学出去喝酒,还要充大人学酒场上的乱七八糟;
    12.复习考试时连续一个星期和LW,FG,Movie一起连神话时代,大学最美好的回忆;
    13.之后连续一个星期和LW,FG,Movie一起看天龙八部;
    14.FG关于阿亚米达的笑话;
    15.春联第一次失恋后哭得不成人样;
    16.搞社团,傻到极致;
    17.什么都不懂就去和人谈“合作业务”;傻到极极致;
    18.和FG讨论倒售MP3能挣大钱;
    19.LW一拳把酒瓶k碎,牛;
    20.接了一条很恶的短信,说是夕阳很美,结果真的就去看,居然还把自己感动了,居然还试图去感动别人;
    21.Movie建论坛,专门记录FG的笑话;
    22.FG关于俄罗斯外星人的笑话;
    23.买了手机开始狂发短信;
    24.莫名其妙买了只猫;
    25.傻到极致的表白,居然是在省体看比赛的时候;
    26.很装13的一个人在阳台抽烟,把自己呛够呛还要装做深沉;
    27.FG的第一个女朋友;
    28.关于暖气片烤地瓜和我家开银行的玩笑;
    29.和LW,Movie,春联设计耍FG,还让他一直以为之后Movie是好人;
    30.报了Java班居然坚持上下来了;
    31.搜集小熊维尼的图片,竟然以为自己也喜欢;
    32.白天复习考试,晚上上Java课,每天睡眠不足6小时,连续通宵两天,大学最累的时候;
    33.电脑装上Linux,总共登陆不足5次;
    34.听博导讲课被触动,决定考研;
    35.买钱包,买项链,明明穷的要死还装做很大方;
    36.统一舍服,觉得525的蜡笔小新装很傻,结果宿舍买手链,很GAY;
    37.三对三赢了,投中最后一球;
    38.Movie居然踩在马路牙子上崴了脚,LW居然打乒乓伤了眼,LW居然运球脱了臼,部长居然上厕所撞上了头,奇了怪了;
    39.买了两张音乐会的票,结果谁也没去;
    40.第一次觉得中学同学相聚时很假,还要装的很亲热;
    41.骑车被撞,谁也没告诉;
    42.突然觉得自己很傻所以决定不要再傻下去;
    43.FG第二个女朋友;
    44.FG第三个女朋友;
    45.波波娃开始发飚,女友时常不一样;
    46.决定考浙大,没原因;
    47.班里去红叶谷,不明白在那里打扑克和在宿舍打有什么不一样;
    48.下山时打赌大久哥的新恋情能维持多久,我猜的最短,一个月,居然还不足一个礼拜;
    49.去杭州上课,一个人逛西湖四个小时,发现这个城市还是不错地;
    50.听新东方老师扯淡,FG和女友,教皇和女教皇;
    51.复习考研的每一天;
    52.一个叫做HP的校领导说我们考不上,向她伸中指N次;
    53.Friends看到第四遍后发现South Park,爱到极致;
    54.系统的学习反动知识;
    55.回宿舍玩魔兽,看dota,打实况,就是不学习;
    56.波波娃保送后很不爽;
    57.考试前夜,不紧张,不失眠,没有任何感觉;
    58.考完英语说很简单,被前面的女生怒目;
    59.考完数学想放弃,但想想专业课简单就去了,结果发现不会的更多;
    60.李白诡异的恋爱经历;
    61.梦见数学考了17分;
    62.没感觉的就去复试了,莫名其妙的回答了许多问题,然后回济南,然后又莫名其妙去复试,然后就考上了;
    63.LW开始找工作,FG也考上了,大腚公务员了,波波娃去北京,新历在KFC,Movie要出国,李白去米国,老龟依然失踪中;
    64.开始喝酒,K歌,瞎玩杀人游戏;
    65.喝酒出现后遗症,每天都晕;
    66.去南外环卖书,波波娃的新女友;
    67.就是不收拾东西,结果走的时候落下一双足球鞋,低价出售了N多本书;
    68.毕业的时候又下雨,就像报道时候一样;
    69.FG走的时候忍住不哭;
    70.我走的时候没什么机会哭;
    71.没有几天大家就一起出去玩,显得当时的眼泪挺傻的;然而从威海回来大家就都走了,这一次才是真正的分开:大哥大姐们,谁
    也没哭啊!
    72.李白要走了,同床共枕了最后一夜;
    73.再去上学离家1000多公里,没感觉;
    February 02

    (转)java runtime.exec() 的编写

    那就首先说点Runtime类吧,他是一个与JVM运行时环境有关的类,这个类是Singleton的。我说几个自己觉得重要的地方。

    1、Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法。

    2、Runtime上其他大部分的方法都是实例方法,也就是说每次进行运行时调用时都要用到getRuntime方法。

    3、Runtime中的exit方法是退出当前JVM的方法,估计也是唯一的一个吧,因为我看到System类中的exit实际上也是通过调用Runtime.exit()来退出JVM的,这里说明一下Java对Runtime返回值的一般规则(后边也提到了),0代表正常退出,非0代表异常中止,这只是Java的规则,在各个操作系统中总会发生一些小的混淆。

    4、Runtime.addShutdownHook()方法可以注册一个hook在JVM执行shutdown的过程中,方法的参数只要是一个初始化过但是没有执行的Thread实例就可以。(注意,Java中的Thread都是执行过了就不值钱的哦)

    5、说到addShutdownHook这个方法就要说一下JVM运行环境是在什么情况下shutdown或者abort的。文档上是这样写的,当最后一个非精灵进程退出或者收到了一个用户中断信号、用户登出、系统shutdown、Runtime的exit方法被调用时JVM会启动shutdown的过程,在这个过程开始后,他会并行启动所有登记的shutdown hook(注意是并行启动,这就需要线程安全和防止死锁)。当shutdown过程启动后,只有通过调用halt方法才能中止shutdown的过程并退出JVM。

    那什么时候JVM会abort退出那?首先说明一下,abort退出时JVM就是停止运行但并不一定进行shutdown。这只有JVM在遇到SIGKILL信号或者windows中止进程的信号、本地方法发生类似于访问非法地址一类的内部错误时会出现。这种情况下并不能保证shutdown hook是否被执行。


    现在开始看这篇文章,呵呵。


    首先讲的是Runtime.exec()方法的所有重载。这里要注意的有一点,就是public Process exec(String [] cmdArray, String [] envp);这个方法中cmdArray是一个执行的命令和参数的字符串数组,数组的第一个元素是要执行的命令往后依次都是命令的参数,envp我个人感觉应该和C中的execve中的环境变量是一样的,envp中使用的是name=value的方式。


    <!--[if !supportLists]-->1、 <!--[endif]-->一个很糟糕的调用程序,代码如下,这个程序用exec调用了一个外部命令之后马上使用exitValue就对其返回值进行检查,让我们看看会出现什么问题。


    import java.util.*;
    import java.io.*;

    public class BadExecJavac
    {
    public static void main(String args[])
    {
    try

    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("javac");
    int exitVal = proc.exitValue();
    System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t)
    {
    t.printStackTrace();
    }
    }
    }

    A run of BadExecJavac produces: 


    E:classescomjavaworldjpitfallsarticle2>java BadExecJavac
    java.lang.IllegalThreadStateException: process has not exited
    at java.lang.Win32Process.exitValue(Native Method)
    at BadExecJavac.main(BadExecJavac.java:13)


    这里看原文就可以了解,这里主要的问题就是错误的调用了exitValue来取得外部命令的返回值(呵呵,这个错误我也曾经犯过),因为exitValue这个方法是不阻塞的,程序在调用这个方法时外部命令并没有返回所以造成了异常的出现,这里是由另外的方法来等待外部命令执行完毕的,就是waitFor方法,这个方法会一直阻塞直到外部命令执行结束,然后返回外部命令执行的结果,作者在这里一顿批评设计者的思路有问题,呵呵,反正我是无所谓阿,能用就可以拉。但是作者在这里有一个说明,就是exitValue也是有好多用途的。因为当你在一个Process上调用waitFor方法时,当前线程是阻塞的,如果外部命令无法执行结束,那么你的线程就会一直阻塞下去,这种意外会影响我们程序的执行。所以在我们不能判断外部命令什么时候执行完毕而我们的程序还需要继续执行的情况下,我们就应该循环的使用exitValue来取得外部命令的返回状态,并在外部命令返回时作出相应的处理。


    2、对exitValue处改进了的程序

    import java.util.*;
    import java.io.*;

    public class BadExecJavac2
    {
    public static void main(String args[])
    {
    try

    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("javac");
    int exitVal = proc.waitFor();
    System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t)
    {
    t.printStackTrace();
    }
    }
    }

    不幸的是,这个程序也无法执行完成,它没有输出但却一直悬在那里,这是为什么那?


    JDK文档中对此有如此的解释:因为本地的系统对标准输入和输出所提供的缓冲池有效,所以错误的对标准输出快速的写入和从标准输入快速的读入都有可能造成子进程的锁,甚至死锁。


    文档引述完了,作者又开始批评了,他说JDK仅仅说明为什么问题会发生,却并没有说明这个问题怎么解决,这的确是个问题哈。紧接着作者说出自己的做法,就是在执行完外部命令后我们要控制好Process的所有输入和输出(视情况而定),在这个例子里边因为调用的是Javac,而他在没有参数的情况下会将提示信息输出到标准出错,所以在下面的程序中我们要对此进行处理。


    import java.util.*;
    import java.io.*;

    public class MediocreExecJavac
    {
    public static void main(String args[])
    {
    try

    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("javac");
    InputStream stderr = proc.getErrorStream();
    InputStreamReader isr = new InputStreamReader(stderr);
    BufferedReader br = new BufferedReader(isr);
    String line = null;
    System.out.println("<ERROR>");
    while ( (line = br.readLine()) != null)
    System.out.println(line);
    System.out.println("</ERROR>");
    int exitVal = proc.waitFor();
    System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t)
    {
    t.printStackTrace();
    }
    }
    }


    程序的运行结果为

    E:classescomjavaworldjpitfallsarticle2>java MediocreExecJavac
    <ERROR>
    Usage: javac <options> <source files>

    where <options> includes:
    -g Generate all debugging info
    -g:none Generate no debugging info
    -g:{lines,vars,source} Generate only some debugging info
    -O Optimize; may hinder debugging or enlarge class files
    -nowarn Generate no warnings
    -verbose Output messages about what the compiler is doing
    -deprecation Output source locations where deprecated APIs are used
    -classpath <path> Specify where to find user class files
    -sourcepath <path> Specify where to find input source files
    -bootclasspath <path> Override location of bootstrap class files
    -extdirs <dirs> Override location of installed extensions
    -d <directory> Specify where to place generated class files
    -encoding <encoding> Specify character encoding used by source files
    -target <release> Generate class files for specific VM version
    </ERROR>
    Process exitValue: 2


    哎,不管怎么说还是出来了结果,作者作了一下总结,就是说,为了处理好外部命令大量输出的情况,你要确保你的程序处理好外部命令所需要的输入或者输出。


    下一个题目,当我们调用一个我们认为是可执行程序的时候容易发生的错误(今天晚上我刚刚犯这个错误,没事做这个练习时候发生的)

    import java.util.*;
    import java.io.*;

    public class BadExecWinDir
    {
    public static void main(String args[])
    {
    try

    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("dir");
    InputStream stdin = proc.getInputStream();
    InputStreamReader isr = new InputStreamReader(stdin);
    BufferedReader br = new BufferedReader(isr);
    String line = null;
    System.out.println("<OUTPUT>");
    while ( (line = br.readLine()) != null)
    System.out.println(line);
    System.out.println("</OUTPUT>");
    int exitVal = proc.waitFor(); 
    System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t)
    {
    t.printStackTrace();
    }
    }
    }

    A run of BadExecWinDir produces: 


    E:classescomjavaworldjpitfallsarticle2>java BadExecWinDir
    java.io.IOException: CreateProcess: dir error=2
    at java.lang.Win32Process.create(Native Method)
    at java.lang.Win32Process.<init>(Unknown Source)
    at java.lang.Runtime.execInternal(Native Method)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at BadExecWinDir.main(BadExecWinDir.java:12)


    说实在的,这个错误还真是让我摸不着头脑,我觉得在windows中返回2应该是没有找到这个文件的缘故,可能windows 2000中只有cmd命令,dir命令不是当前环境变量能够解释的吧。我也不知道了,慢慢往下看吧。

    嘿,果然和作者想的一样,就是因为dir命令是由windows中的解释器解释的,直接执行dir时无法找到dir.exe这个命令,所以会出现文件未找到这个2的错误。如果我们要执行这样的命令,就要先根据操作系统的不同执行不同的解释程序command.com 或者cmd.exe。

    作者对上边的程序进行了修改

    import java.util.*;
    import java.io.*;

    class StreamGobbler extends Thread
    {
    InputStream is;
    String type;

    StreamGobbler(InputStream is, String type)
    {
    this.is = is;
    this.type = type;
    }

    public void run()
    {
    try
    {
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line=null;
    while ( (line = br.readLine()) != null)
    System.out.println(type + ">" + line); 
    } catch (IOException ioe)
    {
    ioe.printStackTrace(); 
    }
    }
    }

    public class GoodWindowsExec
    {
    public static void main(String args[])
    {
    if (args.length < 1)
    {
    System.out.println("USAGE: java GoodWindowsExec <cmd>");
    System.exit(1);
    }

    try

    String osName = System.getProperty("os.name" );
    String[] cmd = new String[3];

    if( osName.equals( "Windows NT" ) )
    {
    cmd[0] = "cmd.exe" ;
    cmd[1] = "/C" ;
    cmd[2] = args[0];
    }
    else if( osName.equals( "Windows 95" ) )
    {
    cmd[0] = "command.com" ;
    cmd[1] = "/C" ;
    cmd[2] = args[0];
    }

    Runtime rt = Runtime.getRuntime();
    System.out.println("Execing " + cmd[0] + " " + cmd[1] 
    + " " + cmd[2]);
    Process proc = rt.exec(cmd);
    // any error message?
    StreamGobbler errorGobbler = new 
    StreamGobbler(proc.getErrorStream(), "ERROR"); 

    // any output?
    StreamGobbler outputGobbler = new 
    StreamGobbler(proc.getInputStream(), "OUTPUT");

    // kick them off
    errorGobbler.start();
    outputGobbler.start();

    // any error???
    int exitVal = proc.waitFor();
    System.out.println("ExitValue: " + exitVal); 
    } catch (Throwable t)
    {
    t.printStackTrace();
    }
    }
    }

    Running GoodWindowsExec with the dir command generates: 


    E:classescomjavaworldjpitfallsarticle2>java GoodWindowsExec "dir *.java"
    Execing cmd.exe /C dir *.java
    OUTPUT> Volume in drive E has no label.
    OUTPUT> Volume Serial Number is 5C5F-0CC9
    OUTPUT>
    OUTPUT> Directory of E:classescomjavaworldjpitfallsarticle2
    OUTPUT>
    OUTPUT>10/23/00 09:01p 805 BadExecBrowser.java
    OUTPUT>10/22/00 09:35a 770 BadExecBrowser1.java
    OUTPUT>10/24/00 08:45p 488 BadExecJavac.java
    OUTPUT>10/24/00 08:46p 519 BadExecJavac2.java
    OUTPUT>10/24/00 09:13p 930 BadExecWinDir.java
    OUTPUT>10/22/00 09:21a 2,282 BadURLPost.java
    OUTPUT>10/22/00 09:20a 2,273 BadURLPost1.java
    ... (some output omitted for brevity)
    OUTPUT>10/12/00 09:29p 151 SuperFrame.java
    OUTPUT>10/24/00 09:23p 1,814 TestExec.java
    OUTPUT>10/09/00 05:47p 23,543 TestStringReplace.java
    OUTPUT>10/12/00 08:55p 228 TopLevel.java
    OUTPUT> 22 File(s) 46,661 bytes
    OUTPUT> 19,678,420,992 bytes free
    ExitValue: 0

    这里作者教了一个windows中很有用的方法,呵呵,至少我是不知道的,就是cmd.exe /C +一个windows中注册了后缀的文档名,windows会自动地调用相关的程序来打开这个文档,我试了一下,的确很好用,但是好像文件路径中有空格的话就有点问题,我加上引号也无法解决。

    这里作者强调了一下,不要假设你执行的程序是可执行的程序,要清楚自己的程序是单独可执行的还是被解释的,本章的结束作者会介绍一个命令行工具来帮助我们分析。

    这里还有一点,就是得到process的输出的方式是getInputStream,这是因为我们要从Java 程序的角度来看,外部程序的输出对于Java来说就是输入,反之亦然。


    最后的一个漏洞的地方就是错误的认为exec方法会接受所有你在命令行或者Shell中输入并接受的字符串。这些错误主要出现在命令作为参数的情况下,程序员错误的将所有命令行中可以输入的参数命令加入到exec中(这段翻译的不好,凑合看吧)。下面的例子中就是一个程序员想重定向一个命令的输出。


    import java.util.*;
    import java.io.*;

    // StreamGobbler omitted for brevity

    public class BadWinRedirect
    {
    public static void main(String args[])
    {
    try

    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("java jecho 'Hello World' > test.txt");
    // any error message?
    StreamGobbler errorGobbler = new 
    StreamGobbler(proc.getErrorStream(), "ERROR"); 

    // any output?
    StreamGobbler outputGobbler = new 
    StreamGobbler(proc.getInputStream(), "OUTPUT");

    // kick them off
    errorGobbler.start();
    outputGobbler.start();

    // any error???
    int exitVal = proc.waitFor();
    System.out.println("ExitValue: " + exitVal); 
    } catch (Throwable t)
    {
    t.printStackTrace();
    }
    }
    }

    Running BadWinRedirect produces: 


    E:classescomjavaworldjpitfallsarticle2>java BadWinRedirect
    OUTPUT>'Hello World' > test.txt
    ExitValue: 0

    程序员的本意是将Hello World这个输入重订向到一个文本文件中,但是这个文件并没有生成,jecho仅仅是将命令行中的参数输出到标准输出中,用户觉得可以像dos中重定向一样将输出重定向到一个文件中,但这并不能实现,用户错误的将exec认为是一个shell解释器,但它并不是,如果你想将一个程序的输出重定向到其他的程序中,你必须用程序来实现他。可用java.io中的包。


    import java.util.*;
    import java.io.*;

    class StreamGobbler extends Thread
    {
    InputStream is;
    String type;
    OutputStream os;

    StreamGobbler(InputStream is, String type)
    {
    this(is, type, null);
    }

    StreamGobbler(InputStream is, String type, OutputStream redirect)
    {
    this.is = is;
    this.type = type;
    this.os = redirect;
    }

    public void run()
    {
    try
    {
    PrintWriter pw = null;
    if (os != null)
    pw = new PrintWriter(os);

    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line=null;
    while ( (line = br.readLine()) != null)
    {
    if (pw != null)
    pw.println(line);
    System.out.println(type + ">" + line); 
    }
    if (pw != null)
    pw.flush();
    } catch (IOException ioe)
    {
    ioe.printStackTrace(); 
    }
    }
    }

    public class GoodWinRedirect
    {
    public static void main(String args[])
    {
    if (args.length < 1)
    {
    System.out.println("USAGE java GoodWinRedirect <outputfile>");
    System.exit(1);
    }

    try

    FileOutputStream fos = new FileOutputStream(args[0]);
    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("java jecho 'Hello World'");
    // any error message?
    StreamGobbler errorGobbler = new 
    StreamGobbler(proc.getErrorStream(), "ERROR"); 

    // any output?
    StreamGobbler outputGobbler = new 
    StreamGobbler(proc.getInputStream(), "OUTPUT", fos);

    // kick them off
    errorGobbler.start();
    outputGobbler.start();

    // any error???
    int exitVal = proc.waitFor();
    System.out.println("ExitValue: " + exitVal);
    fos.flush();
    fos.close(); 
    } catch (Throwable t)
    {
    t.printStackTrace();
    }
    }
    }

    Running GoodWinRedirect produces: 


    E:classescomjavaworldjpitfallsarticle2>java GoodWinRedirect test.txt
    OUTPUT>'Hello World'
    ExitValue: 0

    这里就不多说了,看看就明白,紧接着作者给出了一个监测命令的小程序

    import java.util.*;
    import java.io.*;

    // class StreamGobbler omitted for brevity

    public class TestExec
    {
    public static void main(String args[])
    {
    if (args.length < 1)
    {
    System.out.println("USAGE: java TestExec "cmd"");
    System.exit(1);
    }

    try
    {
    String cmd = args[0];
    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec(cmd);

    // any error message?
    StreamGobbler errorGobbler = new 
    StreamGobbler(proc.getErrorStream(), "ERR"); 

    // any output?
    StreamGobbler outputGobbler = new 
    StreamGobbler(proc.getInputStream(), "OUT");

    // kick them off
    errorGobbler.start();
    outputGobbler.start();

    // any error???
    int exitVal = proc.waitFor();
    System.out.println("ExitValue: " + exitVal);
    } catch (Throwable t)
    {
    t.printStackTrace();
    }
    }
    }

    对这个程序进行运行: 
    E:classescomjavaworldjpitfallsarticle2>java TestExec "e:javadocsindex.html"
    java.io.IOException: CreateProcess: e:javadocsindex.html error=193
    at java.lang.Win32Process.create(Native Method)
    at java.lang.Win32Process.<init>(Unknown Source)
    at java.lang.Runtime.execInternal(Native Method)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at TestExec.main(TestExec.java:45)

    193在windows中是说这不是一个win32程序,这说明路径中找不到这个网页的关联程序,下面作者决定用一个绝对路径来试一下。

    E:classescomjavaworldjpitfallsarticle2>java TestExec 
    "e:program filesnetscapeprogramnetscape.exe e:javadocsindex.html"
    ExitValue: 0


    好用了,这个我也试了一下,用的是IE。


    最后,作者总结了几条规则,防止我们在进行Runtime.exec()调用时出现错误。


    <!--[if !supportLists]-->1、 <!--[endif]-->在一个外部进程执行完之前你不能得到他的退出状态

    <!--[if !supportLists]-->2、 <!--[endif]-->在你的外部程序开始执行的时候你必须马上控制输入、输出、出错这些流。

    <!--[if !supportLists]-->3、 <!--[endif]-->你必须用Runtime.exec()去执行程序

    <!--[if !supportLists]-->4、 <!--[endif]-->你不能象命令行一样使用Runtime.exec()。

     

    转自:http://hi.baidu.com/linnianda/blog/item/0f384a900fd1138da877a469.html

    February 01

    中国式骂人

    最近经常潜水于猫眼上看一大群自称的“左派”和“右派”之间相互攻击,相互诋毁。虽然主观上我比较倾向于那些所谓的“自由斗士”,但还是觉得双方对骂是在没有什么技术含量,往往某个楼主莫名其妙的一顿以偏概全的观点论述后,后边的跟贴不超过3(包括3)条就成了赤裸裸的对对方家人的激烈问候了。所以除了看点热闹外,实在难以得到许多的实际意义。不过看的多了,也发现我们骂人的方式,实在不怎么高明。

           我们传统上总是认为,一个人的人格有问题,则他的所有话语都是有问题的。所以在反驳对方时,并不是就事论事,总要先在人格上否定对方,所以就认定对方的观点的不正确。简单地说就是:你是混蛋,所以你的话都是混蛋话,所以我的话就都是正确的。简单的人身攻击成为了观点论述的核心部分,实在缺少一些技术含量。而且对于对方人格的侮辱,我们的方法也不外乎两种:

    一.              无限上纲上线.比如说我,就经常被人以以下的推理攻击:你说中国人人性的缺陷,〈=〉你侮辱中国人〈=〉你是汉奸卖国贼〈=〉你根本就不是一个中国人〈=〉你没有资格评论中国人〈=〉中国人是没有任何缺点的无限完美的终极物种,推理完毕。实在说不清是文革培养了这种思考方式,还是这种固有的思考方式决定了文革。想想在那十年中,任何一个细小的玩笑都有可能被无限理解为对伟大领袖的背叛,从而背离了人民,成了人民公敌而被“专政”掉。而且在中国人的眼中,似乎“汉奸卖国贼”就是最终极的罪行,只要你能够想方设法把对手的言论归结到这一点上,就战无不胜了。

    二.              人格细节侮辱. 《笑傲江湖》中任我行杀了东方不败,出来聆听到日月教徒的歌颂,这群人就开始疯狂攻击东方,首要大罪当然是背叛教主,谋朝篡位了,后边就是对于这个人的攻击,生活腐化,草菅人命就算了,还生生的给一个自宫练武的人加上种种淫贱的罪行,无怪令狐冲要哈哈大笑了。在总的问题没有什么大的毛病,或者在总的方向问题之外,我们一定要找到他生活细节上弱点。某年某月某日提过寡妇门之类的都可以成为肆意攻击的武器。人总是犯过错的,就是找不到也可以编一个,所以这一招几乎是无往不利的。

    我见过的将这些手法用的最好的,就是陈光成的案件。把一个目盲的农民说成里通外国,泄露国家机密;两个律师一个被告偷钱包,一个被告骚扰妇女,两种手段完美结合,实在是“代表”了广大民群众智慧的结晶.

    (转)章诒和的抗议引发的杂思——文军

        出差深圳,商务活动之余,抽空也上了网,阅读各种文章。禁书问题看来余波未尽,国家出版总署那位邬书林先生“因人废书”之议论看来已经引起众怒,他显然忽视了民意之主流表达平台,忘记了网络之存在。很多人感觉奇怪,这位邬副署长何以敢于宣布剥夺章诒和的出版权利?他显然可以做到“闷杀”,即不必说明原委就封掉章氏等人出书的权利,半个多世纪以来,不明不白扼杀掉的作品数不胜数。故,在以权谋为处事之本的官场里,这位邬君一定不是称职之官员。然而他那种傲慢,又确确实实体现了几千年来的官场气势,这个气势源自藐视一切法律制约的习惯。又有当事人出面澄清,说邬先生根本没有说过那样的话,只是并不影响章老太抗议的意义。

        毛曾经说:“无法无天”,那只是对他本人而言;对下边的官员,则需“无法有天”。所谓“天”,即自上而下的指令。有人抱怨我们对伟大领袖毛主席不够尊重,这项指责无疑是准确的,我们也曾经无限信仰、无限崇拜毛主席。但历史证明我们错了,国家、民族都蒙受了前所未有的灾难。我们愿意忘记这一切,只当所有的灾难都没有发生过,就像邓公说的,“一切朝前看。”儿子当初曾经讥笑过我:“老爸,你们当初怎么会那么傻?”确实无颜以对,不如忘记更好。

        然而人家不依不饶,连篇累牍地编造所谓过去的辉煌,继续大张旗鼓地宣扬谎言。这就不是过去的问题了,是现在的谎言。难道只许厚颜无耻的谎言充斥传媒,就不许别人哼一两句真话?鲁迅在《我要骗人》里说:“中国的人民,是常用自己的血,去洗权力者的手,使他又变成洁净的人物的。”鲁迅这话之主体不确,不是人民用自己的血去洗权力者的手,而是那些奴才文人用人民的血去洗权力者的手,顺便赚一点俸禄和润笔。又不错,“毛主席领导咱打江山”,而且大获全胜。只不过自“秦王扫六合”开始,历朝历代总有人打得下江山,唐宗宋祖成吉思汗,朱元璋努尔哈赤,都曾经是胜利者。莫文骅将军曾经鼓励家乡的市长大胆干,说:“那时候红军艰难得很,毛主席就瞎搞,七搞八搞,咦,还真的给他搞成了!”张闻天也称:“老毛谙熟旧社会那一套”,使用的是“非布尔什维克手段”。都可算“无法无天”之注脚。

    然而中国要进步,靠这种“七搞八搞”是不行的。郎咸平曾经抨击中国官方发言人信誓旦旦说人民币不会升值,没几天就升值5%。郎咸平说,这是政府自己“以破坏政府信用为背书条件”,罪责是“缺乏信托责任”。不过郎教授精通经济或许不假,但他对于历史则纯属一派胡言。自打毛政府建立以来,信用从来如同厕纸,是随揩随扔的。试想,毛主席从来以权谋闻名天下,树立起至高无上的权力地位之后,更是肆无忌惮地指鹿为马信口雌黄。毛主席的形象继续光辉下去,中国社会必将毫无诚信可言,法律的尊严也只是一句空话。只要这个信仰仍被维护,掌控这个政府的人不可能具有公信力。于是,邬副署长及其所代表的权力机构无视《宪法》的决定与表态也就毫不奇怪。

        自古以来,中国从来不缺“依法治国”,且不论春秋战国就有“法家”,唐宋元明清,各有各的律法,甚至还传出“王子犯法与庶民同罪”之美谈。只是中国历来只有王法而无约法,王法就是朝廷制定、官府执行、百姓遵守的法律,可以朝令夕改的,只要对朝廷有利。而约法则不然,它自下而上,必须经过严格的民意表达程序始得以制定或修改,且必须严格执法。王法维系统治的权力,约法制约统治的权力,二者针锋相对,不可同日而语。《宪法》即是美国佬发明的约法,它肇始于《五月花号公约》,沿袭的却是英国古老的议会制度。说二十世纪是美国世纪,一个标识就是全世界都玩起《宪法》来了,就连王法也不得不用《宪法》时装来包装自己。当然不会玩真格的,那样会有“哈美”之嫌。

        无论怎样看待章诒和本人,她的抗议信都博得一片喝彩,因为她讨要的不光是《宪法》赋予的权利,而且争取《宪法》自身的尊严。记得1982年《宪法》草案付诸讨论之时,我们厂里干部学习讨论,工人出身的机修车间支部书记提出一个问题:“宪法大还是红头文件大?”惹来与会干部们一片笑声,厂总支书记笑得眼泪水都出来了:“我说老伍啊,你是真糊涂还是假糊涂?这不是明摆着嘛,来一个红头文件,宪法就废掉重改了,不是红头文件大难道还是宪法大?”那时,俺还吃着皇粮,绝无如今这份闲情逸致去与书记大人争辩。何况,书记说的是大实话,既然强调“一元化”领导,我也不知道“依法治国”将依据王法还是宪法。

        孟子.藤文公上》云:“民之为道也,有恒产者有恒心,无恒产者无恒心。苟无恒心,放僻邪侈,无不为已。”当“公有制”即列宁所定义的“国家垄断资本主义”剥夺了全体公民的一切,“放僻邪侈”就无可避免,不仅文革暴行的演绎可以证明,亚非拉那些“民无恒产”的国家可以证明,就连欧美那些发达国家上世纪前二三十年的历史同样也可以证明。法律在“无恒产”面前是苍白的。我下乡受到贫下中农的教育之一就是:“偷公家的不谓偷。”本生产队长决心发展集体经济,养了六七十只小鸡。到这些鸡长成快下蛋的时候,这群鸡迅速被盗,除队长会计外全队的老社员都偷。队长天天骂,鸡天天少,直至剩下七只时,队长干脆以14元的价格全卖给我了。还是在那个鸡舍,那七只鸡天天为我产蛋,却再也没被偷过。

        也许是意识到孟子的教导,邓公改革开放开了一个口子,老百姓或曰人民的开始被准许有一些“恒产”,例如房子、车子。尽管那房子还只有“产权”,这个具有中国特色的“产权”其实还只是使用权,不是所有权,因为房子脚下的土地只是借用五十年或七十年罢了,所谓“皮之不存毛将焉附?”且乡下农民的“土地承包权”也只是三十年而已。届时土地使用权满期,附于其上的房子便不知所以。尽管如此,百姓购房热情不减,弄得房价飞涨,买不起房的便怨声载道,“恒产”之魅力可见一斑。跟民意抱怨各类权利缺失相呼应,章老太对于权力自爽其约提出抗议,我想,这种维权行动应当是正义的。可是当初,岂止是书被禁,就连人被囚,章诒和有过提抗议的念头吗?

        法制是民主的需求,二者相辅相成,缺一不可。民主不是东西,而是百姓的政治权利。它当然不可能“是东西”如波音飞机那样从美国买回来。那些“不能照搬西方民主模式”之类说道,如果不是愚蠢到家的呓语就一定是聪明到顶的蛊惑。当老百姓期盼或感恩着“大救星”之时,民主只是天方夜谭;当老百姓为自己的权利呐喊甚至抗争时,民主进程便开始了。即便美国也不例外,那里的平头百姓两百多年来从未间断过为自己的权利呐喊、抗争,至今仍在进行中。这个进程才能唤作“美国式民主”,而不是一个有形的“民主馅饼”。因此,根本不存在什么可以“照搬”的“模式”。

        2007年,开门见山就迎来些热闹,除了禁书这件事以及章诒和提出抗议之外,还有报道说,已经禁了对于那次“引蛇出洞”五十周年的纪念。又是一个不许明白的举措。五十多年以来的历史,始终是一笔糊涂账。郑板桥那个条幅:“难得糊涂”,据说上个十年中国的处长以上干部大抵愿意压在玻璃板下面,以为座右铭或训诫,又据说现在已经不那么时髦了。现在似乎应该换一幅“难得明白”才是。毛时代,谁的书要是被禁了,不但饭碗要打破,还得连带批斗乃至殃及亲友的。即便象章诒和老父那样留作样板的高官,也只能唯唯诺诺谢皇恩浩荡。不管怎么说,章诒和至少比她爹那代人自在许多,敢提抗议了,谁说不是一种进步呢?

     

                                                                        作者: 文军 2007年01月30日, 星期二 21:54

    http://publishblog.blogdriver.com/blog/tb.b?diaryID=1260440

    January 31

    在接见首都JY部队军以上干部时的讲话

    在接见首都JY部队军以上干部时的讲话
    (一九年六月九日)
    邓小平

    同志们辛苦了!
    首先,我对在这场斗争中英勇牺牲的解放军指战员、武警指战员和公安干警的同志们表示沉痛的哀悼!对在这场斗争中负伤的几千名解放军指战员、武警指战员和公安干警的同志们表示亲切的慰问!对所有参加这场斗争的解放军指战员、武警指战员和公安干警的同志们致以亲切的问候!
    我提议,大家起立,为死难的烈士们默哀!
    利用这个机会,我讲几句话。
    这场风波迟早要来。这是国际的大气候和中国自己的小气候所决定了的,是一定要来的,是不以人们的意志为转移的,只不过是迟早的问题,大小的问题。而现在来,对我们比较有利。最有利的是,我们有一大批老同志健在,他们经历的风波多,懂得事情的利害关系,他们是支持对暴乱采取坚决行动的。虽然有一些同志一时还不理解,但最终是会理解的,会支持中央这个决定的。
    《人民日报》四月二十六日社论,把问题的性质定为动乱。“动乱”这两个字恰如其分,一些人反对的就是这两个字,要修改的也是这两个字。实践证明,这个判断是准确的。后来事态进一步发展到反革命暴乱,也是必然的。我们有一批老同志健在,包括军队,也有一批各个时期参加革命的骨干还在,因此,事情现在爆发,处理起来比较容易。处理这一事件的主要难点在于,我们从来没有遇到过这种情况,一小撮坏人混杂在那么多青年学生和围观的群众中间,阵线一时分不清楚,使我们许多应该采取的行动难以出手。如果没有我们党这么多老同志支持,甚至连事件的性质都难以确定。一些同志不了解问题的性质,认为这只是单纯的对待群众的问题,实际上,对方不只是一些是非不分的群众,还有一批造反派和大量的社会渣滓。他们是要颠覆我们的国家,颠覆我们的党,这是问题的实质。不懂得这个根本问题,就是性质不清楚。我相信,经过认真做工作,能取得党内绝大多数同志对定性和处理的拥护。
    事情一爆发出来,就很明确。他们的根本口号主要是两个,一是要推翻共产党,一是要推翻社会主义制度。他们的目的是要建立一个完全西方附庸化的资产阶级共和国。人民要求反腐败,我们当然接受。那些别有用心的人提出的所谓反腐败的口号,我们也要当好话来接受。当然,这个口号仅仅是他们的一个陪衬,而其核心是推翻共产党,推翻社会主义制度。
    这次平息暴乱中,我们那么多同志负了伤,甚至牺牲了,武器也被抢去了,这是为什么?也是因为好人坏人混杂在一起,使我们有些应该采取的断然措施难于出手。处理这件事对我们军队是一次很严峻的政治考验,实践证明,我们的解放军考试合格。如果用坦克压过去,就会在全国造成是非不清。所以,我要感谢解放军指战员用这种态度来对待暴乱事件。尽管损失是令人痛心的,但可以赢得人民,使是非不明的人改变观点。让大家看看,解放军究竟是什么人,有没有血洗天安门,流血的到底是谁。这个问题清楚了,就使我们取得了主动。虽然牺牲了许多同志非常令人痛心,但客观地分析事件的过程,人们就不得不承认,解放军是人民的子弟兵。这也有助于人民理解在这场斗争中我们所采取的方法,今后解放军遇到问题,采取措施,就都可以得到人民的支持了。这里顺便说一下,以后再不能让人把武器夺去了。总之,这是一个考验,考试是合格的。虽然军队里老同志不是很多了,战士们大都是十岁、二十岁出头的娃娃,但他们仍然是真正的人民子弟兵。在生命危险面前,他们没有忘记人民,没有忘记党的教导,没有忘记国家利益,面对死亡毫不含糊。慷慨赴死,从容就义,他们当之无愧。我讲考试合格,就是指军队仍然是人民子弟兵,这个性质合格。这个军队还是我们的老红军的传统。这次过的是真正的政治关、生死关,不容易呀!这表明,人民子弟兵真正是党和国家的钢铁长城。这表明,不管我们受到多么大的损失,不管如何更新换代,我们这个军队永远是党领导下的军队,永远是国家的捍卫者,永远是社会主义的捍卫者,永远是人民利益的捍卫者,是最可爱的人!同时,我们永远也不要忘记,我们的敌人是多么凶残,对他们,连百分之一的原谅都不应有
    这次事件爆发出来,很值得我们思索,促使我们很冷静地考虑一下过去,也考虑一下未来。也许这件坏事会使我们改革开放的步子迈得更稳、更好,甚至于更快,使我们的失误纠正得更快,使我们的长处发扬得更好。今天我不可能展开来讲,只是提出课题。
    第一个问题,党的十一届三中全会制定的路线、方针、政策,包括我们发展战略的“三部曲”,正确不正确?是不是因为发生了这次动乱,我们制定的路线、方针、政策的正确性就发生问题?我们的目标是不是一个“左”的目标?是否还要继续用它作为我们今后奋斗的目标?这些大的问题,必须作出明确、肯定的回答。我第一个翻一番的目标已经完成了,第二个翻一番的目标计划用十二年完成,再往后五十年,达到一个中等发达国家的水平。这就是我们的战略目标。对此,我想我们做出的不是一个“左”的判断,制定的也不是一个过急的目标。因此,对第一个问题的回答,应当说,我们所制定的战略目标,现在至少不能说是失败的。在六十一年后,一个十五亿人口的国家,达到中等发达国家的水平,是了不起的事情。实现这样一个目标,应该是能够做到的。不能因为这次事件的发生,就说我们的战略目标错了。
    第二个问题,党的十三大概括的“一个中心、两个基本点”对不对?两个基本点,即四个坚持和改革开放,是不是错了?我最近总在想这个问题。我们没有错。四个坚持本身没有错,如果说有错误的话,就是坚持四项基本原则还不够一贯,没有把它作为基本思想来教育人民,教育学生,教育全体干部和共 产党员。这次事件的性质,就是资产阶级自由化和四个坚持的对立。四个坚持、思想政治工作、反对资产阶级自由化、反对精神污染,我们不是没有讲,而是缺乏一贯性,没有行动,甚至讲得都很少。不是错在四个坚持本身,而是错在坚持得不够一贯,教育和思想政治工作太差。一九八○年元旦,我在政协讲话,讲了“四个保证”,其中有一条叫“艰苦奋斗的创业精神”。艰苦奋斗是我们的传统,艰苦朴素的教育今后要抓紧,一直要抓六十至七十年。我们的国家越发展,越要抓艰苦创业。提倡艰苦创业精神,也有助于克服腐败现象。建国以来我们一直在讲艰苦创业,后来日子稍微好一点,就提倡高消费,于是,各方面的浪费现象蔓延,加上思想政治工作薄弱、法制不健全,什么违法乱纪和腐败现象等等,都出来了。我对外国人讲,十年最大的失误是教育这里我主要是讲思想政治教育,不单纯是对学校、青年学生,是泛指对人民的教育。对于艰苦创业,对于中国是个什么样的国家,将要变成一个什么样的国家,这种教育都很少,这是我们很大的失误。
    改革开放这个基本点错了没有?没有错。没有改革开放,怎么会有今天?这十年人民生活水平有较大提高,应该说我们上了一个台阶,尽管出现了通货膨胀等问题,但十年改革开放的成绩要充分估计够。当然,改革开放必然会有西方的许多坏的影响进来,对此,我们从来没有估计不足。八十年代初建立经济特区时,我与广东同志谈,要两手抓,一手要抓改革开放,一手要抓严厉打击经济犯罪,包括抓思想政治工作。就是两点论。但今天回头来看,出现了明显的不足,一手比较硬,一手比较软。一硬一软不相称,配合得不好。讲这点,可能对我们以后制定方针政策有好处。还有,我们要继续坚持计划经济与市场调节相结合,这个不能改。实际工作中,在调整时期,我们可以加强或者多一点计划性,而在另一个时候多一点市场调节,搞得更灵活一些。以后还是计划经济与市场调节相结合。重要的是,切不要把中国搞成一个关闭性的国家。实行关闭政策的做法对我们极为不利,连信息都不灵通。现在不是讲信息重要吗?确实很重要。做管理工作的人没有信息,就是鼻子不通,耳目不灵。再是绝不能重复回到过去那样,把经济搞得死死的。我提出的这个建议,请常委研究。这也是个比较急迫的问题,总要接触的问题。
    这是总结我们过去十年。我们的一些基本提法,从发展战略到方针政策,包括改革开放,都是对的。要说不够,就是改革开放得还不够。我们在改革中遇到的难题比在开放中遇到的难题要多。在政治体制改革方面有一点可以肯定,就是我们要坚持实行人民代表大会的制度,而不是美国式的三权鼎立制度。实际上,西方国家也并不都是实行三权鼎立式的制度。美国骂我们镇压学生,他们处理国内□□和骚乱,还不是出动了警察和军队,还不是抓人、流血?他们是镇压学生和人民,而我们则是平息反革命暴乱。他们有什么资格批评我们!今后,在处理这类问题的时候,倒是要注意,一个动态出现,不要使它蔓延。
    以后我们怎么办?我说,我们原来制定的基本路线、方针、政策,照样干下去,坚定不移地干下去。除了个别语言有的需要变动一下,基本路线和基本方针、政策都不变。这个问题已经提出来了,请大家认真考虑一下。至于一些做法,如投资方向、资金使用方向等,我赞成加强基础工业和农业。基础工业,无非是原材料工业、交通、能源等,要加强这方面的投资,要坚持十到二十年,宁肯欠债,也要加强。这也是开放,在这方面,胆子要大一些,不会有大的失误。多搞一点电,多搞一点铁路、公路、航运,能办很多事情。钢,外国人判断我们将来需要一亿二千万吨,现在我们接近六千万吨,还差一半。如果在现有企业的基础上加以改造,增加两千万吨,就可少进口钢材。借点外债用在这些方面,也叫改革开放。现在的问题不是改革开放政策对不对,搞不搞,而是如何搞,开哪方面,关哪方面。
    要坚定不移地执行党的十一届三中全会以来制定的一系列路线、方针、政策,要认真总结经验,对的要继续坚持,失误的要纠正,不足的要加点劲。总之,要总结现在,看到未来。
    利用这个机会,我就讲这一点。
     

    Java实现的硬盘文件搜索

    用了多线程,似乎没必要;
    设了内隐类,好像用不着。

    import java.io.*;
    import java.util.*;
    public class FileSearcherImple {
     
     public static File[] rootDir;
     String fileName;
     int searchMode;
     Vector result;
     boolean[] finished;
     FilenameFilter fnf;
     
     public class RootSearcher extends Thread{
      File root;
      int rootNo;
      
      public RootSearcher(File root,int rootNo){
       this.root=root;
       this.rootNo=rootNo;
      }
      
      public void run(){
       try{
        if(root.canRead())
         searchDir(root);
        finished[rootNo]=true;
       }
       catch(Exception e){
        System.err.println("Threads Err:"+e.toString());
       }
      }
      
      private void searchDir(File f){
       File[] subResult=f.listFiles(fnf);
       for(int j=0;j<subResult.length;j++){
        addResult(subResult[j]);
        if(subResult[j].isDirectory()){
         searchDir(subResult[j]);
        }
       }
      }
      
      private synchronized void addResult(File file){
       try{
        result.addElement((Object)file);
       }
       catch(Exception e){
        System.err.println("Synchronized Error:"+e.toString());
       }
      }
     }
     
     public FileSearcherImple() {
      rootDir=File.listRoots();
      finished=new boolean[rootDir.length];
      for(int i=0;i<rootDir.length;i++){
       finished[i]=false;
      }
     }
      
     public Vector searchFile(String fileName,int searchMode){
      this.fileName=fileName;
      this.searchMode=searchMode;
      if(searchMode==0){
       fnf=new PreciseFileFilter(fileName);
      }
      result=new Vector();
      
      RootSearcher rootSearchers[]=new RootSearcher[rootDir.length];
      for(int i=0;i<rootDir.length;i++){
       rootSearchers[i]=new RootSearcher(rootDir[i],i);
       rootSearchers[i].start();
      }
      
      for(int j=0;j<rootDir.length;j++)
       while(finished[j]==false);
      return result;
     }
     }
     
    Blog上不懂缩进!!难看~
     
    import java.io.*;
    public class PreciseFileFilter implements FilenameFilter{
     String fn;
     public PreciseFileFilter(String fn){
      this.fn=fn;
     }
     
     public boolean accept(File dir,String n){
      String fileName=new File(n).getName();
      return fileName.indexOf(fn)!=-1;
     }
    }

    历史是否是可还原的?

    历史是否是可还原的?也许这个问法并不能表达我的本意,或者说:历史是否是可确定的?也许思考这个问题比回答它更加困难。

    读《一九八四》时感到最大的恐怖,并不是“老大哥”随处可见的变态的画像,而是大范围的任意的对于历史的修改。历史可以根据现在人的需要任意的改写,一切的时间,人物,事件都可以是虚构的,与历史相反的。一个人在历史中的意义也就不存在了:所有你做的事情,都可能被掩盖,修改,删除,这使得你任何所做的任何的试图改变这一制度的努力都显得如此的苍白和可笑。

    乔治·奥威尔并不是在凭空虚构:这一点任何一个中国人都更加的深有感触,虽然《一九八四》在创作时,并没有以中国为描摹的对象。在经历过一段非常长的畸形的历史后,我们开始认识到以前对于一些习以为常的历史常识的了解也许并不那么可靠。当然,也只是刚刚开始认识到而已。中国的近代史被修改的一塌糊涂,甚至都无法自圆其说,许多匪夷所思的谬论堂而皇之书写在我们的教科书上,以至于一个稍微有点自主思考意思的中学生就可以看出其中自相矛盾。对于更早一点的历史,因为有过多的史料流传下来,简单的修改似乎无能为力,所以,强行用一种有利于统治的方式解释点评这些广为人知的事与人,取得了甚至更好的效果。所以在我们的观念中,秦始皇吞并六国成了为“和平”而战,成吉思汗一路西侵屠城无数也只是“只识弯弓射大雕”,梁山泊也成了替天行道,义和团也作了把民族英雄……

    这不由得我对于历史的可还原性产生了莫大的怀疑。中国历来的观点是“成王败寇”,连《达芬奇密码》里,倒霉的提彬爵士也说过:历史总是胜利者书写的,看来对于历史真相的肆意修改是全世界的流行。那么我们读到的“历史”,究竟有多少是真实的可信的?这一个问题一再纠缠着我:它使得我以前对于历史的津津乐道显得如此幼稚可笑。《史记》中明明白白的写着高祖斩白蛇起义中的“白帝赤帝”的故事,如此类似于《聊斋志异》的描写一直就被吹捧为中国史家的气节,不由得我们对于事件本身和其他故事的可信性打个问号。我认识很多人总用历史的局限性来解释这一点,然而对于事实的详尽真实的记录并不涉及太多先进的思想,而只是作为一个史官的职业操守。如果连《史记》这一部也许最接近历史的著作也不免有非历史的成分的话,那么其他如《清史稿》这些更近于为皇家服务的正史,又有多少的真实性。

    比我们对于正史的迷信更加可怕的,则是我们对于“口碑”的迷信。我们总是一厢情愿的认定在老百姓中间流行的历史可以如实地反映历史。然而,遗憾的是,这种形式的历史比之正史往往更加的不可信,至少在中国如此。因为中国百姓中流行的故事本身就不是来自于百姓,更多是统治者精心策划的所谓的“真相”的故事,和某些阶层(大多是知识分子)编造的利于其自身的骗局。譬如雍正的严刑酷法伤害了大批所谓的读书人,所以直到今天广大人群仍然相信“传位于四子”和“传位十四子”故事;而作为一个简单的历史常识,满清的诏书是以满文为准。

    然而比历史真实性问题更加可怕的,是我们现在人对于历史的看法,我身边许多人,他们开始接触到一些对于历史记录的不同版本,也开始认识到那些从小被灌输的历史存在着可疑的地方,然而他们往往努力说服自己,相信本来一贯相信的事情,用尽一切可能的诡异辩解试图说服别人(尤其是我),也说服自己相信所谓的历史,相信我们一直团结善良,爱好和平,相信我们现在身处盛事,享尽太平。也有些人,对于历史的真相是漠视的:什么是真正的历史,关我屁事!对于此我总是无从辩驳的。美好的谎言和残酷的真相,涉及到太多超出我理解范畴的命题,“铁屋子”的问题我根本无法回答,只是隐隐感觉,我们从来就没有什么是非观念。

    历史对于我们是否真的重要?有人对我说:比如“64”,其实我们都知道是怎么会事,但是一定要说出来也没有什么意义。所以至今我们也记得当时只是和平劝解,无人伤亡。我只是想辩驳:历史对那些死去的亡魂是有意义的,更重要的是,如果不能去在历史中找到先烈,我们也可能终将成为一段不存在的历史,被人强行遗忘,而遗忘者也将被抹去,只留下一个千年古国的美好神话。不过最后还是没有反驳。值得反驳吗?

    鲁迅——呐喊自序

    我在年青时候也曾经做过许多梦,后来大半忘却了,但自己也并不以为可惜。所谓回忆者,虽说可以使人欢欣,有时也不免使人寂寞,使精神的丝缕还牵着己逝的寂寞的时光,又有什么意味呢,而我偏苦于不能全忘却,这不能全忘的一部分,到现在便成了《呐喊》的来由。

    我有四年多,曾经常常,——几乎是每天,出入于质铺和药店里,年纪可是忘却了,总之是药店的柜台正和我一样高,质铺的是比我高一倍,我从一倍高的柜台外送上衣服或首饰去,在侮蔑里接了钱,再到一样高的柜台上给我久病的父亲去买药。回家之后,又须忙别的事了,因为开方的医生是最有名的,以此所用的药引也奇特:冬天的芦根,经霜三年的甘蔗,蟋蟀要原对的,结子的平地木,……多不是容易办到的东西。然而我的父亲终于日重一日的亡故了。

    有谁从小康人家而坠入困顿的么,我以为在这途路中,大概可以看见世人的真面目;我要到N进K学堂去了①,仿佛是想走异路,逃异地,去寻求别样的人们。我的母亲没有法,办了八元的川资,说是由我的自便;然而伊哭了,这正是情理中的事,因为那时读书应试是正路,所谓学洋务,社会上便以为是一种走投无路的人,只得将灵魂卖给鬼子,要加倍的奚落而且排斥的,而况伊又看不见自己的儿子了。然而我也顾不得这些事,终于到N去进了K学堂了,在这学堂里,我才知道世上还有所谓格致,算学,地理,历史,绘图和体操。生理学并不教,但我们却看到些木版的《全体新论》和《化学卫生论》之类了。我还记得先前的医生的议论和方药,和现在所知道的比较起来,便渐渐的悟得中医不过是一种有意的或无意的骗子②,同时又很起了对于被骗的病人和他的家族的同情;而且从译出的历史上,又知道了日本维新是大半发端于西方医学的事实。

    因为这些幼稚的知识,后来便使我的学籍列在日本一个乡间的医学专门学校里了。我的梦很美满,预备卒业回来,救治象我父亲似的被误的病人的疾苦,战争时候便去当军医,一面又促进了国人对于维新的信仰。我已不知道教授微生物学的方法,现在又有了怎样的进步了,总之那时是用了电影,来显示微生物的形状的,因此有时讲义的一段落已完,而时间还没有到,教师便映些风景或时事的画片给学生看,以用去这多余的光阴。其时正当日俄战争的时候,关于战事的画片自然也就比较的多了,我在这一个讲堂中,便须常常随喜我那同学们的拍手和喝采。有一回,我竟在画片上忽然会见我久违的许多中国人了,一个绑在中间,许多站在左右,一样是强壮的体格,而显出麻木的神情。据解说,则绑着的是替俄国做了军事上的侦探,正要被日军砍下头颅来示众,而围着的便是来赏鉴这示众的盛举的人们。

    这一学年没有完毕,我已经到了东京了,因为从那一回以后,我便觉得医学并非一件紧要事,凡是愚弱的国民,即使体格如何健全,如何茁壮,也只能做毫无意义的示众的材料和看客,病死多少是不必以为不幸的。所以我们的第一要著,是在改变他们的精神,而善于改变精神的是,我那时以为当然要推文艺,于是想提倡文艺运动了。在东京的留学生很有学法政理化以至警察工业的,但没有人治文学和美术;可是在冷淡的空气中,也幸而寻到几个同志了,此外又邀集了必须的几个人,商量之后,第一步当然是出杂志,名目是取“新的生命”的意思,因为我们那时大抵带些复古的倾向,所以只谓之《新生》。

    《新生》的出版之期接近了,但最先就隐去了若干担当文字的人,接着又逃走了资本,结果只剩下不名一钱的三个人。创始时候既己背时,失败时候当然无可告语,而其后却连这三个人也都为各自的运命所驱策,不能在一处纵谈将来的好梦了,这就是我们的并未产生的《新生》的结局。

    我感到未尝经验的无聊,是自此以后的事。我当初是不知其所以然的;后来想,凡有一人的主张,得了赞和,是促其前进的,得了反对,是促其奋斗的,独有叫喊于生人中,而生人并无反应,既非赞同,也无反对,如置身毫无边际的荒原,无可措手的了,这是怎样的悲哀呵,我于是以我所感到者为寂寞。

    这寂寞又一天一天的长大起来,如大毒蛇,缠住了我的灵魂了。

    然而我虽然自有无端的悲哀,却也并不愤懑,因为这经验使我反省,看见自己了:就是我决不是一个振臂一呼应者云集的英雄。

    只是我自己的寂寞是不可不驱除的,因为这于我太痛苦。我于是用了种种法,来麻醉自己的灵魂,使我沉入于国民中,使我回到古代去,后来也亲历或旁观过几样更寂寞更悲哀的事,都为我所不愿追怀,甘心使他们和我的脑一同消灭在泥土里的,但我的麻醉法却也似乎已经奏了功,再没有青年时候的慷慨激昂的意思了。

    S会馆③里有三间屋,相传是往昔曾在院子里的槐树上缢死过一个女人的,现在槐树已经高不可攀了,而这屋还没有人住;许多年,我便寓在这屋里钞古碑④。客中少有人来,古碑中也遇不到什么问题和主义,而我的生命却居然暗暗的消去了,这也就是我惟一的愿望。夏夜,蚊子多了,便摇着蒲扇坐在槐树下,从密叶缝里看那一点一点的青天,晚出的槐蚕又每每冰冷的落在头颈上。

    那时偶或来谈的是一个老朋友金心异⑤,将手提的大皮夹放在破桌上,脱下长衫,对面坐下了,因为怕狗,似乎心房还在怦怦的跳动。

    “你钞了这些有什么用?”有一夜,他翻着我那古碑的钞本,发了研究的质问了。

    “没有什么用。”

    “那么,你钞他是什么意思呢?”

    “没有什么意思。”

    “我想,你可以做点文章……”

    我懂得他的意思了,他们正办《新青年》,然而那时仿佛不特没有人来赞同,并且也还没有人来反对,我想,他们许是感到寂寞了,但是说:

    “假如一间铁屋子,是绝无窗户而万难破毁的,里面有许多熟睡的人们,不久都要闷死了,然而是从昏睡入死灭,并不感到就死的悲哀。现在你大嚷起来,惊起了较为清醒的几个人,使这不幸的少数者来受无可挽救的临终的苦楚,你倒以为对得起他们么?”

    “然而几个人既然起来,你不能说决没有毁坏这铁屋的希望。”

    是的,我虽然自有我的确信,然而说到希望,却是不能抹杀的,因为希望是在于将来,决不能以我之必无的证明,来折服了他之所谓可有,于是我终于答应他也做文章了,这便是最初的一篇《狂人日记》。从此以后,便一发而不可收,每写些小说模样的文章,以敷衍朋友们的嘱托,积久了就有了十余篇。

    在我自己,本以为现在是已经并非一个切迫而不能已于言的人了,但或者也还未能忘怀于当日自己的寂寞的悲哀罢,所以有时候仍不免呐喊几声,聊以慰藉那在寂寞里奔驰的猛士,使他不惮于前驱。至于我的喊声是勇猛或是悲哀,是可憎或是可笑,那倒是不暇顾及的;但既然是呐喊,则当然须听将令的了,所以我往往不恤用了曲笔,在《药》的瑜儿的坟上平空添上一个花环,在《明天》里也不叙单四嫂子竟没有做到看见儿子的梦,因为那时的主将是不主张消极的。至于自己,却也并不愿将自以为苦的寂寞,再来传染给也如我那年青时候似的正做着好梦的青年。

    这样说来,我的小说和艺术的距离之远,也就可想而知了,然而到今日还能蒙着小说的名,甚而至于且有成集的机会,无论如何总不能不说是一件侥幸的事,但侥幸虽使我不安于心,而悬揣人间暂时还有读者,则究竟也仍然是高兴的。

    所以我竟将我的短篇小说结集起来,而且付印了,又因为上面所说的缘由,便称之为《呐喊》。

    一九二二年十二月三日,鲁迅记于北京。

    胡适——自由主义

    胡适:自由主义

      孙中山先生曾引一句外国成语:“社會主義有五十七种,不知哪一种是真的。”其实“自由主义”也可以有种种说法,人人都可以说他的说法是真的,今天我说的“自由主义”,当然只是我的看法,请大家指教。
      自由主义最浅显的意思是强调的尊重自由,现在有些人否认自由的价值,同时又自称是自由主义者。自由主义里没有自由,那就好像长坂坡里没有赵子龙,空城计里没有诸葛亮,总有点叫不顺口罢!据我的拙见,自由主义就是人类历史上那个提倡自由,崇拜自由,争取自由,充实并推广自由的大运动。“自由”在中国古文里的意思是:“由于自己”,就是不由于外力,是从外力裁制之下解放出来,才能“自己作主”。在中国古代思想里,“自由”就等于自然,“自然”是“自己如此”,“自由”是“由于自己”,都有不由于外力拘束的意思,陶渊明的诗“久在樊笼里,复得返自然”,这里“自然”二字可以说是完全同“自由”一样。王安石的诗:“风吹瓦堕屋,正打破我头……我终不嗔渠,此瓦不自由。”这就是说,这片瓦的行动是被风吹动的,不是由于自己的力量,中国古人太看重“自己”,“自然”的“自”字,所以往往看轻外面的拘束力量,故意回向自己内心去求安慰,求自由。这种回向自己求内心的自由,有几种方式,一种是隐遁的生活逃避外力的压迫,一种是梦想神仙的生活行动自由,变化自由正如庄子说,列子御风而行,还是“有待”,“有待”还不是真自由,最高的生活是事人无待于外,道教的神仙,佛教的西天净土,都含有由自己内心去寻求最高的自由的意义。我们现在讲的“自由”,不是那种内心境界,我们现在说的“自由”,是不受外力拘束压迫的权利,是在某一方面的生活不受外力限制束缚的权利。
      在宗教信仰方面不受外力限制,就是宗教信仰自由。在思想方面就是思想自由,在著作出版方面,就是言论自由,出版自由。这些自由都不是天生的,不是上帝赐给我们的。是一些先进民族用长期的奋斗努力争出来的。
      人类历史上那个自由主义大运动实在是一大串解放的努力。宗教信仰自由只是解除某个宗教威权的束缚,自相矛盾自由只是解除某派某派思想威权的束缚。在这些方面……在信仰与思想的方面,东方历史上也有很大胆的批评者与反抗者。从墨翟,杨朱,但桓谭,王充,从范縝,傅奕,韩愈,到李贽,颜元,李恭,都可以说是为信仰思想自由奋斗的东方豪杰之士,很可以同他们的西方同志齐名媲美,我们中国历史上虽然没有抬出“争自由”的大旗子来做宗教运动,思想运动,或政治运动,但中国思想史与社会政治史的每一个时代都可以说含有争取某种解放的意义。
      我们的思想史的第一个开山时代,就是春秋战国时代就有争取思想自由的意
    义。
      古代思想的第一位大师老子。就是一位大胆批评政府的人。他说:“天下多忌讳,而民弥贫。”“法令滋彰,盗贼多有。”“民之饥,以其上食税之多,是以饥。”“民之难治,以其上之有为,是以难治。”“民之轻死,以其求生之厚,是以轻死。”“天之道,损有余,而补不足。”“人之道则不然,损不足以奉有余。”老子同时的邓析是批评政府而被杀的。另一位更伟大的人就是孔子,他也是一位偏向左的“中间派”,他对于当时的宗教与政治,都有大胆的批评,他的最大胆的思想是在教育方面:
      有教无类,“类”是门类,是階級民族,“有教无类”,是说:“有了教育,就没有階級民族了。”
      从老子孔子打开了自由思想的风气,二千多年的中国思想史,宗教史,时时有争自由的急先锋,有时还有牺牲生命的殉道者。孟子的政治思想可以说是全世界的自由主义的最早的一个倡导者。孟子提出的“大丈夫”是“贫贱不能移,富贵不能淫,威武不能屈”。这是中国经典里自由主义的理想人物。在二千多年历史上,每到了宗教与思想走进了太黑暗的时代,总有大思想家起来奋斗,批评,改革。
      汉朝的儒教太黑暗了,就有桓谭,王充,张衡起来,作大胆的批评。后来佛教势力太大了,就有齐梁之间的范縝,唐朝初年的傅奕,唐朝后期的韩愈出来,大胆地批评佛教、攻击那在当时气焰熏天的佛教。大家都还记得韩愈攻击佛教的结果是:“一封朝奏九重天,夕贬潮阳路八千。”佛教衰落之后,在理学极盛时代,也曾有多少次批评正统思想或反抗正统思想的运动。王阳明的运动就是反抗朱子的正统思想的。李卓吾是为了反抗一切正宗而被拘捕下狱,他在监狱里自杀的,他死在北京,葬在通州,这个七十六岁的殉道者的坟墓,至今存在,他的书经过多少次禁止,但至今还是很流行的。北方的颜李学派,也是反对正统的程朱思想的。当时,这个了不得的学派很受正统思想的压迫,甚至于不能公开地传授。这三百年的汉学运动,也是一种争取宗教自由思想自由的运动。汉学是抬出汉朝的书作招牌,来掩护一个批评宋学的大运动。这就等于欧洲人抬出《圣经》来反对教会的权威。
      但是东方自由主义运动始终没有抓住政治自由的特殊重要性,所以始终没有走上建设民主政治的路子。西方的自由主义绝大贡献正在这一点,他们觉悟到只有民主的政治方才能够保障人民的基本自由,所有自由主义的政治意义是强调的拥护民主。一个国家的统治权必须放在多数人民手里,近代民主政治制度是安格罗撒克逊民族的贡献居多,代议制度是英国人的贡献,成文而可以修改的宪法是英美人的创制,无记名投票是澳洲人的发明,这就是政治的自由主义应该包含的意义。我们古代也曾有“天视自我民视,天听自我民听”,“民为邦本”“民为贵,社稷次之,君为轻”的民主思想。我们曾在二千年前就废除了封建制度,做到了大一统的国家,在这个大一统的国家里,我们曾建立了一种全世界最久的文官考试制度,使全国才智之士有参加政府的平等制度。但,我们始终没有法可以解决君主專制的问题,始终没有建立一个制度来限制君主的專制大权,世界只有安格罗撒克逊民族在七百年中逐渐发展出好几种民主政治的方式与制度,这些制度可以用在小国,也可以用在大国。(1)代议制度,起源很早,但史家指一二九五年为正式起始。(2) 成文宪,最早的一二一五年的大宪章,近代的是美国宪法(一七八九年)。(3)无记名投票(政府预备选举票,票上印各黨候选人的姓名,选民秘密填记)是一八五六年South Australia最早采用的。
      自由主义在这两百年的演进史上,还有一个特殊的、空前的政治意义,就是容忍反对黨,保障少数人的自由权利。向来政治斗争不是东风压了西风,就是西风压了东风,被压的人是没有好日子过的,但近代西方的民主政治却渐渐养成了一种容忍异己的度量与风气。因为政权是多数人民授予的,在朝执政权的黨一旦失去了多数人民的支持,就成了在野黨了,所以执政权的人都得准备下台是坐冷板凳的生活,而个个少数黨有逐渐变成多数黨的可能。甚至于极少数人的信仰与主张,“好像一粒芥子,在各种种子里是顶小的,等到他生长起来,却比各种菜蔬都大,竟成了小树,空中的飞鸟可以来停在他的枝上。”(《新约马太福音》十四章,圣地的芥菜可以高到十英尺。)人们能这样想,就不能不存容忍别人的态度了,就不能不尊重少数人的基本自由了。在近代民主国家里,容忍反对黨,保障少数人的权利,久一成了当然的政治作风,这是近代自由主义里最可爱慕而又最基本的一个方面。我做驻美大使的时期,有一天我到费城去看我的一个史学老师白尔教授,他平生最注意人类争取自由的历史,这时候他一八十岁了。他对我说:“我年纪越大,越觉得容忍比自由还要重要。”这句话我至今不忘记。为什么容忍比自由还要要紧呢?因为容忍就是自由的根源,没有容忍,就没有自由可说了。至少在现代,自由的保障全靠一种互相容忍的精神,无论是东风压了西风,还是西风压了东风,都是不容忍,都是摧残自由。多数人若不能容忍少数人的思想信仰,少数人当然不会有思想信仰的自由。反过来说,少数人也得容忍多数人的思想信仰,因为少数人要是时常怀着“有朝一日权在手,杀尽异教放罢休”的心理,多数人也就不能不行“斩草除根”的算计了。最后我要指出,现代的自由主义,还含有“和平改革”的意思。
      和平改革有两个意义,第一就是和平的转移政权,第二就是用立法的方法,一步步的做具体改革,一点一滴的求进步。容忍反对黨,尊重少数人權利,正是和平的社会政治改革的唯一基础。反对黨的对立,第一是为政府树立最严格的批评监督机关,第二是使人民可以有选择的机会,使国家可以用法定的和平方式来转移政权,严格的批评监督,和平的改换政权,都是现代民主国家做到和平革新的大路。近代最重大的政治变迁,莫过于英国工黨的执掌政权。英国工黨在五十多年前,只能选择出十几个议员,三十年后,工黨两次执政,但还站不长久,到了战争胜利之年(一九四五),工黨得到了绝对多数的选举票,故这次工黨的政权,是巩固的,在五年之内,谁都不能推翻他们,他们可以放手改革英国的工商业,可以放手改革英国的经济制度,这样重大的变化,从资本主义的英国变到社会主义的英国,不用流一滴血,不用武装革命,只靠一张无记名的选举票,这种和平的革命基础,只是那容忍反对黨的雅量,只是那保障少数人自由权利的政治制度,顶顶小的芥子不曾手摧残,在五十年后居然变成大树了。自由主义在历史上有解除束缚的作用,故有时不能避免流血的革命,但自由主义的运动,在最近百年中最大成绩,例如英国自从一八三二年以来的政治革新,直到今日的工黨政府,都是不流血的和平革新,所以在许多人的心目中自由主义竟成了“和平改革主义”的别名,有些人反对自由主义,说它是“不革命主义”,也正是如此。我们承认现代的自由主义正应该有“和平改革”的含义,因为在民主政治已上了轨道的国家里,自由与容忍铺下了和平改革的大路,自由主义者也就不觉得有暴力革命的必要了。这最后一点,有许多没有忍耐心的年轻人也许听了不满意,他们要“彻底改革”,不要那一点一滴的立法,他们要暴力革命,不要和平演进。我很诚恳的指出,近代一百六七十年的历史,很清楚地指示我们,凡主张彻底改革的人,在政治上没有一个不走上绝对專制的路,这是很自然的,只有绝对的專制政权可以铲除一切反对黨,消灭一切阻力,也只有绝对的專制政治可以不择手段,不惜代价,用最残酷的方法做到他们认为根本改革的目的。他们不承认他们的见解会有错误,他们也不能承认反对他们的人也会有值得考虑的理由,所以他们绝对不能容忍异己,也绝对不能容许自由的思想与言论。所以我很坦白地说,自由主义为了尊重自由与容忍,当然反对暴力革命,与暴力革命必然引起来的暴力专制政治。
      总结起来,自由主义的第一个意义是自由,第二个意义是民主,第三个意义是容忍容忍反对黨,第四个意义是和平的渐进的改革。

    (一九四八年九月四日)