Will's profileWill's GardenPhotosBlogListsMore Tools Help

Blog


    March 04

    除灰

    刚发现花园已经一地的灰了呢,上次打扫还是考前三个月,时间一晃,已经到出分的时候了.
    70+55+145+142=412,这个成绩算是给我半年的复习生涯划上个完满的句号了.
    之前自己说过,选择了这条路,就不会后悔,会坚持着走下去.今天哪怕查出来是312分,我仍然不后悔当初的抉择.
    毕竟,这半年对我的改变太大了.学到了很多新知识,最重要的是端正了自己的态度.以至于现在想想当初那个贪玩的懒散的我,都觉得面目可憎.
     
    初试算是结束了,接下来是复试.复试结束了.才算是新的起点.
     
    祝自己好运,也希望各位工作的,学习的朋友都顺顺利利!
     
     
    October 17

    84d

    呵,时间过得还挺快的。

    6月23号,第一天拿出书本复习,看会睡会,清晰如昨天。

    过去的这几个月可以说是单调的,但并不乏味。

    除了背政治的时间外,自己还是用一种享受的心情在复习。

    that's just life
    笑对现实的无奈
    不能后退的时候
    不再傍徨的时候
    永远向前 路一直都在

    不管之后自己会怎么看,也不管别人会怎么看,靠着自己的小宇宙走下去。

    考前84天,报名结束,简短mark下~

    July 29

    如此警戒

    一个北京同学发来条短信“在等地铁时,被个便衣要求把手里的矿泉水喝一口- -1”

    我也被雷到了,外焦里嫩。就一个奥运会,至于么……

    July 26

    上帝的眼里,只有1和0

    本文探讨的不是计算机里的1和0,而是概率。

    一切的胡思乱想,都是源自昨天看到的三囚徒问题

    有三个囚犯A,B,C.第二天将其中的两个人释放.

    每个人的机会均等,但释放人员已经确定,3个人都不知道谁会被释放.

    监狱的看守是A的朋友,于是A去询问看守释放的情况,看守不能告诉A他有没有被释放,只告诉A,B会被释放.

    问,A在向看守问完情况以后,A,B,C三人被释放的概率各是多少.

    我的答案是,P(A)=P(C)=1/2,P(B)=1,原因:

    1、B已肯定是1,余下的A和C放生几率是均等的,都是1/2

    2、B已肯定是1,对于A来说,P(AB)=P(AC)=P(BC)=1/3 ,那么 P(B)=P(AC)+P(BC)=2/3,那么P(A|B)=P(AB)/P(B)=1/2

    看起来无懈可击,但却是错误答案。正解应是P(A)=2/3,P(B)=1,P(C)=1/3

    网上的解释是从看守的角度给出的: B和C中必有一人会被释放,因此我没有告诉A任何信息。根据A已知的讯息,他被释放的概率仍旧是2/3。 看了解释后,我依然很不解。

    直到,今天看到经典的“玛丽莲问题”,该玛丽莲非玛丽莲梦露,而是Marilyn vos Savant,世界现存的智商最高的女性,达到了228。

    题目如下:台上有三个门,一个后边有汽车,其余后边是山羊。主持人让你任意选择其一。然后他打开其余两个门中的一个,你看到是山羊。这时,他给你机会让你可以重选,也就是你可以换选另一个剩下的门。那么,你换不换?

    你换不换?我的第一感觉是,不会换,因为我的概率从1/3上升到了1/2,余下的那个门的概率和我所选择的门的概率是一样的。

    但实际并非如此,我们简单地列举下:(假设1号门是你选择的,1代表汽车0代表羊,以下3种情形等概率)

    1 0 0 -〉你原先选择的是汽车,主持人随便打开2号或者3号门让你看到羊,换了过后,你得到了羊;不换,得汽车

    0 1 0 -〉你原先选择的是羊,主持人打开3号门让你看到羊,换了过后,你得到了汽车;不换,得羊

    0 0 1 -〉你原先选择的是羊,支持人打开2号门让你看到羊,换了过后,你得到了汽车;不换,得羊

    换后得汽车概率2/3,不换得车的概率只有1/3,得出结论:应该换。

     

    继续思考了一阵子,一切都豁然开朗了。我自己的理解如下:

    三囚徒问题中的看守,和玛丽莲问题中的主持人,都是“上帝”,他们预先知道结果,在他们眼里没有概率,只有1和0,是生,是死;是车,是羊。

    1、三囚徒问题中,看守并没有提供任何关于A的信息,但他将B与C这个组合中B的命运宣判了,相应地,B的概率成了1,C的概率成了2/3+2/3-1=1/3,而A的概率没有变化,仍为2/3。

    2、玛丽莲问题中,主持人同样也没有为你提供任何直接信息,但他将2号门和3号门中的某个门的命运宣判成了羊门,该羊门开出汽车的概率降到了0,相应地,另外个门的概率升至2/3,而1号门的概率没有变化,仍为1/3。

    以上的这些令人匪夷所思的概率变化,都是由获取信息的不对称所引起的。

    正如抛硬币一样,我投了一枚硬币,然后用手盖住,问你正面反面的概率分别是多少?你可能会说正反面都已经确定了,所以不是正面百分百,就是反面百分百。但我就问你该是正面还是反面,自然还是百分之五十,因为你不知道。尽管这确实是一个既定事实,但只有我才知道答案是正面还是反面,在这个游戏里,我就是上帝。而对于你来讲,硬币就是薛定谔的猫,是处于一半是正面一半是反面的叠加状态。那只半死不活猫,只有打开箱子,才能确定死活。这里也一样,只有我打开手掌,你才知道硬币是正面还是反面。

    随着获取信息的不同,同样问题的概率也不一样。

    我们所经历的考试,其实就是一种随着信息的获取概率不断变化的过程:

    step1,考前一周:这门课还没看过,没有得到任何信息,过的概率无限趋近于0

    step2,考前一小时:通过临时抱佛脚,得到书本的信息,觉得过的概率能达到1/2

    step3,考试中:得到试题的信息,很简单,觉得过的概率能达到3/4

    step4,考结束:得到答案的信息,对完答案,粗心引起的错误太多了,过的概率继续无限趋近于0

     

    最后,我们来看三囚徒问题中一些很奇妙的现象,如果你跳过前面内容直接看到这里,可能会觉得很神奇,很诡异,很匪夷所思:

    A去问看守,看守告诉他BC中B释放。A认为,A释放的概率是2/3,C释放的概率是1/3

    C去问看守,看守告诉他AB中B释放。C认为,C释放的概率是2/3,A释放的概率是1/3

    而当他们沟通后,A和C都认为,他们两人释放的概率都是1/2。

    还是那句话,以上这些奇妙的概率变化,都是由于获取信息的不对称才会产生。而在无所不知的上帝面前,没有任何概率,只有1和0。

    思路比较飘,纯粹是想到哪写到哪了,可能最近看概率论和决定论看得有点走火入魔。

    如果你是坚持着看完的,并且现在头脑没有犯晕,请接受我崇高的敬意!

    July 23

    Ubuntu

    午饭时,老妈问我是不是在国外买了什么东西。我吃了一惊,仔细询问,原来是信箱里多了个快递,外包上都是英文。

    饭后我下楼把快递拿上来,拆开,呵,竟是前段时间申请的Ubuntu 8.04光盘:

    DSC00086

    从申请到入手花了3周时间,从荷兰到这里,也不算慢了,最重要的是,for free!!!

    这就是Linux,这就是开源,有那么那么多的热心人士和组织。试想,你向ms申请索要Vista Ultimate,它会免费邮寄一套给你么?

    准备从影音盘里划出10G的新盘符,安装Ubuntu,暂时还是以vista为主,辅助学习linux,分阶段慢慢走。

    linux对游戏的支援性不高,这是一个缺点,但对我这种自制力薄弱的人来说,这反而是一个优点。

    June 25

    FireGestures DIY

    firefox3.0终于正式发布了,比起2.0来自然要好不少。但有一些Addon却没有及时更新,比如drag de go和all in one gesture这一对黄金搭档。

    对我这种习惯鼠标手势的人来说,这是必须不能忍的。于是找了个替代的插件:“FireGestures”。

    此插件功能颇多,支持不少鼠标手势,基本可以完美取代all in one gesture,但一些以前drag de go提供的复合命令它不提供,幸好,它支持用户自定义脚本。

    最迫切要实现的功能便是鼠标拖拽,若为链接则新标签页打开,若为文字则在新标签页中用搜索引擎进行搜索。

    其官网上给了个sample:[Hybrid] Open Link in New Tab / Search for Selection

    // (1) If you started gesture from a link, do 'Open Link in New Tab'
    var srcNode = FireGestures.sourceNode;
    var linkURL = FireGestures.getLinkURL(srcNode);
    if (linkURL) {
    gBrowser.loadOneTab(linkURL, null, null, null, true, false);
    return;
    }

    // (2) Else if you select text, do 'Search for Selection'
    var sel = FireGestures.getSelectedText();
    if (sel) {
    BrowserSearch.loadSearch(sel, true);
    return;
    }

     

    很开心地copy来后,却发现该脚本打开的标签页都是后台打开的,这完全不符合用户需求嘛,我们需要的是拖拽后能直接在前台显示的。无奈只好想办法对脚本进行二次修改。

    简单过了遍脚本,发现打开新标签页是 gBrowser.loadOneTab(linkURL, null, null, null, true, false)

    在搜索引擎里搜索是BrowserSearch.loadSearch(sel, true)

     

    把gBrowser.loadOneTab(linkURL, null, null, null, true, false) 里的true ,false折腾了遍发现倒数第二个bool参数是控制前台或后台显示的,true为后台,false为前台。将其改为gBrowser.loadOneTab(linkURL, null, null, null, false, false) 后,便能成功在前台打开了。如此拖拽链接在前台打开新标签页的功能就完美实现了。

    于是依葫芦画瓢,把BrowserSearch.loadSearch(sel, true) 也改为BrowserSearch.loadSearch(sel,false) ,试验后却发现这里的bool参数控制的不是前后台显示,而是如下含义:true,在新标签页中进行搜索;false,在当前标签页中进行搜索。捷径行不通,只好老实查其根本,利用强大的互联网查出控制新标签页在前台还是后台显示的,是browser.tabs.loadInBackground这个属性。那么在BrowserSearch.loadSearch(sel, true) 之前加上gBrowser.mPrefs.setBoolPref("browser.tabs.loadInBackground",false)将浏览器默认打开标签页的方式改为前台打开,在之后加上gBrowser.mPrefs.setBoolPref("browser.tabs.loadInBackground",true)再将浏览器默认打开标签页的方式还原成后台打开,便能实现自己想要的前台打开搜索标签页的功能了。

    修改后的脚本如下:

    // (1) If you started gesture from a link, do 'Open Link in New Tab'
    var srcNode = FireGestures.sourceNode;
    var linkURL = FireGestures.getLinkURL(srcNode);
    if (linkURL) {
      gBrowser.loadOneTab(linkURL, null, null, null, false, false);
      return;
    }

    // (2) Else if you select text, do 'Search for Selection'
    var sel = FireGestures.getSelectedText();
    if (sel) {
      gBrowser.mPrefs.setBoolPref("browser.tabs.loadInBackground",false);
      BrowserSearch.loadSearch(sel, true);
      gBrowser.mPrefs.setBoolPref("browser.tabs.loadInBackground",true);
      return;
    }

    至此,大功告成。

    说到底,这只是一个后台显示转为前台显示的问题,但问题虽小,能成功解决,还是很开心的大笑


    学C++不得不看的一篇文章

    (网上看到的好文章,比较有感触,转过来)

      做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。我要说的将分成三部分,1.是我面试的具体经过2.是由面试想到的3.现今我应该做的。当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我没有说过,欢迎和我联系共同探讨这些问题!我的EMAIL:wutao8@263.net

    1.面试经过

      大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知,通知我2月21日到苏州工业园区面试,接到面试后的几天我把一些专业课温习了一遍,特别是C++和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法我差不多也达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的!

      21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后他给我出了一道编程题目,题目是这样的:

      (由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成了两个独立的简单的问题,有可能问题分解的不当,请大家见谅,实际面试了一个的问题但比其复杂很多,而且涉及一些高等数学变换)

      1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n

      哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!

      于是很快我给出我的解法:

    long fn(long n)
    {
    long temp=0;
    int i,flag=1;
    if(n<=0)
    {
    printf("error: n must > 0);
    exit(1);
    }
    for(i=1;i<=n;i++)
    {
    temp=temp+flag*i;
    flag=(-1)*flag;
    }
    return temp;
    }

      搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当n很大的时候我这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,把程序优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序进行了严格的分析,给出了改进了的方案!

    long fn(long n)
    {
    long temp=0;
    int j=1,i=1,flag=1;
    if(n<=0)
    {
    printf("error: n must > 0);
    exit(1);
    }
    while(j<=n)
    {
    temp=temp+i;
    i=-i;
    i>0?i++:i--;
    j++;
    }
    return temp;
    }

      虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语句改为执行加法指令,既达到要题目的要求而且运算时间上缩短了很多!而代价仅仅是增加了一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑着跟我说:“不错,这个程序确实在效率上有的很大的提高!”我心里一阵暗喜!但他接着说这个程序仍然不能达到他的要求,要我给出更优的方案!天啊!还有优化!我当时真的有点崩溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序!

    long fn(long n)
    {
    if(n<=0)
    {
    printf("error: n must > 0);
    exit(1);
    }
    if(0==n%2)
    return (n/2)*(-1);
    else
    return (n/2)*(-1)+n;
    }

      搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别简直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快就把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们程序员服务的!”多么精辟的语言,我已经不想再说什么了!接着是第二个问题:

      2),他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:

    fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!

    fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!

      现在用一个函数fn(int n,int flag)实现,当flag为0时,实现fn1功能,如果flag为1时实现fn2功能!

      他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思再想了,我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有说什么,给出了他的思路:

      定义一个二维数组 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后给出一个循环:

    for(i=0;i<6;i++)
    {
    temp=temp+n/t[flag];
    }

      最后得到计算值!呵呵,典型的空间换时间的算法!

      这些总共花了50分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些编程以及生活的问题,那时的我已经很放松了,因为我知道这次面试结果只有一个:失败。5:30的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过!

    2.由面试想到的

      真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从 5:30一直走到7:30,全身都湿透了,又冷又饿,但是我只是一直走,脑子里面充满了疑惑,我也想让雨把自己淋醒!看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对,我肯定相信你,因为我从未怀疑过中国程序员的能力,我认为中国有世界上最好的程序员,我也从未认为自己是高手,所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差,所以我就从我的角度,我的所见所想来谈一些感想:

      不错全世界都有优秀的程序员,中国也不例外,但是我疑惑的是:到底中国和台湾或者国外的优秀的程序员的比例到底是多少?台湾我不知道,中国100个程序员里有几个是优秀的呢?我根本算不上,从上面的表现就足以说明一切了!是1个?5个?10个?50个?这个数字我不敢乱猜,恐遭网友一顿痛骂,那么我们国内有多少人学习计算机呢?拿我们学校来说,计算机97级4个班,98级5个班,99级10个班,2000级17个班,人多了,老师怎么办?我们学校的做法是让研究生上课,然后呢?补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学生素质低!真是好笑,我都不知道学校这么做是为了什么,为国内培养大量的程序员吗?学生们能真正学到计算机知识吗?好了,我敢讲,在我们学校学习编程学生和优秀程序员(注意我指的是优秀,只会编几个糟烂程序的人算不上)的比例应该是100:0.1 。在这种比例下虽然我们中国学习编程的人铺天盖地,但是想想有多少个人能真正为中国软件业发展作出贡献,有多少人能真正写出优秀的程序名扬海外!

      我从学习编程以来,不管是自学还是老师指导,从来都是解决问题就好,编出程序来就行,我的疑惑是:我们有真正的强调过程序的效率,程序的质量吗?我们有仔细分析过我们写的东西,看看有没有可以改进的地方,看看有没有简单的方法来达到同样的目的呢?我问心自问,我发现,我从来没有对我写出来的程序进行过优化,最多就是进行详细的测试,然后Debug,但是这就足够了吗?这些天我偶尔发现我曾经写过的一个游戏,那是一年前我刚加入 www.vcroad.net做为其中一员时候,感觉应该拿点东西出来,然后花了一个星期的时间写出来的!程序不算复杂,但是用到了不少数据结构的东西,也用到了一些精彩的算法,加上windows的界面和游戏的可玩性,写完后受到了不少好评,我当时真的很佩服自己!但是现在看呢:没有一句注释,好多丑陋的函数名比如:void chushihua(),好多没有必要的变量,可以用简单语句完成工作的我使用华丽的算法,大量使用全局变量.....,说不好听的话,六百多行的程序除了能运行之外就是一陀屎!如果一年前我能听到一些反面意见的话,大概我能早一点觉悟,但是自从原代码在网站发布以来听到的都是赞美之词,没有一个人向我提出程序改进的意见,这又说明了一个什么问题呢?很值得思考啊!

      还有一个疑惑是:我们说的和做的真的一样吗?我在学校的时候曾经受学院指派承办过一个计算机大赛,请了一个老师出决赛的题目,主要是一些算法题目,这个老师可能是我上大学以来唯一敬佩的老师了,从程序调试到打分,对于每个程序都仔细分析其时间效率和空间效率,然后综合打分,四十个人的卷子,老师从下午三点一直调试到晚上十点,在有些写的精彩的语句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流,但在事后,却发生了一件不愉快的事,在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分,并且应该得第一,我说不过他,最后调出了他的原程序和第一名的原程序对比,不错,两个程序都运行的很好,这时,那个同学开口了:“我的程序写的十分简捷明了,仅仅数行就完成了题目要求,而他的却写了一大堆,为什么给他的分多过给我的分。”我当时很是气愤,如果不是老师负责的话,那么现在第一名和第二名的位置真的要互调了,拜托,不是程序的行数越少程序的质量就越高,我记得我跟他大谈这方面的道理,最后说服他了!哈哈,但是我,只能说说而已,我不知道还有多少人一样,说起来头头是道,但心里却压根就从未重视过它!

    3.我打算做的!

      其实那天我想到的远不止上面那么多,但是我不想再说了,因为我猜想看这篇文章的网友大概都有一肚子的感想,一肚子的抱怨,借用这篇文章发泄可不是我想达到的目的,在上面我把自己骂的一文不值也不是妄自菲薄,但是在某些方面我真的做错了,或者说是偏离了正确方向,现在是矫正方向和重整旗鼓的时候了,就象我前面说过的,我相信中国有世界上最好的程序员,我也相信我的水平不会一直保持现状,我现在就收拾起牢骚真正的实干起来!
    真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师!

      (下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是请您写上www.vcroad.net原创,谢谢您的支持)

      作者:金蝶中间件公司CTO袁红岗

      不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。

      1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。

      2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。

      3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。

       4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。

      5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。

      6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。

      7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。

      8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个 10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。

    June 21

    醉了,醒了

    开完毕业典礼,拿完毕业证书,吃完散伙饭,大学彻底结束。散伙饭上,很多人都醉了,醉态万千。

    1、刘老师强bao了吴老师并索吻

    2、营长抱住zz嚎啕大哭

    3、胖子瘫倒在厕所角落

    4、施帆肯玩起了地板动作

    5、我也过量,大学第一次醉了。感谢zz和fofo冒着被吐的危险将我搀回,尽管...我的鞋尖经过一路的剧烈摩擦被顺利磨平。

    醉,旧的结束。醒,新的开始。

    May 17

    林中路

    无意在网上看到了弗罗斯特的《林中路》。记得大一时,《外国诗歌赏析》这门选修课上,老师花了一节课的时间讲解过此诗,但当时的感触明显没有现在这么深。

      黄色的树林里分出两条路,
      可惜我不能同时去涉足,
      我在那路口久久伫立,
      我向着一条路极目望去,
      直到它消失在丛林深处。
      但我却选了另外一条路,
      它荒草萋萋,十分幽寂,
      显得更诱人、更美丽,
      虽然在这两条小路上,
      都很少留下旅人的足迹,
      虽然那天清晨落叶满地,
      两条路都未经脚印污染。
      呵,留下一条路等改日再见!
      但我知道路径延绵无尽头,
      恐怕我难以再回返。
      也许多少年后在某个地方,
      我将轻声叹息把往事回顾,
      一片树林里分出两条路,
      而我选了人迹更少的一条,
      从此决定了我一生的道路。

    May 13

    外行领导内行

    汶川地震发生后,温家宝总理第一时间赶到现场组织抢救工作。国家领导人在现场,对灾区群众的帮助是巨大的,至少在精神上。看着视频里总理安慰群众的画面,我也深为感动。

    记者10:45:19
    现在所有的国外记者都在关注号称中国最精锐的特种部队首次公开亮相
    记者10:46:50
    总理现在和登机部队领导说话
    记者10:47:41
    总理说,我就一句话,是人民在养你们,你们自己看着办

    是人民在养你们,你们自己看着办。很让人感动,这句话真该刻在每个公务员的台子上。

    但那么大的雨,专家都说了不适合空降,还下命令强行空降,这样的做法真的好么?刚和同学聊天,他说看到一则新闻,第一批跳伞的150人,挂了4人失踪10人。

    真正在行的救灾专家都被捆住了手脚,总理在,谁敢违逆他的命令?好比最好的办法是放弃一部分人,拯救大局,可如果总理非要全部抢救,那可能牺牲会更大。又好比抢救成功的可能性不大,但总理出于人道主义角度下命令抢救,只能白白浪费资源和时间。为什么一把手总喜欢把权利都抓在自己手里,各项事宜都要管,不懂得权利下放呢。牵涉到救灾的具体事宜,让专家来做决定,不是更好么?

    解放军是人民子弟兵,也是老百姓的孩子,也不能不管死活的往里冲,往下空降吧?这么恶劣的天气,就算人空降下去了,救援所需要的大型器械哪里来?难不成真的要像新闻图片里面那样,用手?空降物资,是很有必要的。但那么恶劣的天气,冒那么大的风险空降人员下去,真的有必要么?

    不在其位,不谋其政,我的想法可能有局限性了。但我相信只有科学+理智,才能战胜灾情。希望不要做无谓的牺牲,救人之前首先要保证自身的安全,不能自救还谈什么救人呢?

    希望灾区人民能勇敢地顶过去,GL!

    April 17

    Over

    从9点斟酌到10点,终于还是打电话给Henry表达了quit的意愿。下午去把事情交待掉,和Ciber的交集也就此结束。

    现在,不后悔两周前的抉择;将来,也不会后悔今天的抉择。

    那么就剩下那唯一的目标了。

    April 11

    RP

    一直把RP,RP,积攒RP挂在嘴边,但直到今天才发现原来真的有RP值存在。

    今天公司没有培训项目,不过头头说,最好能跟他一块去客户那谈需求。自己偷了个懒,请假回了嘉定。

    结果在回嘉定的北安跨线上,接到了我很心仪的一家公司的电面。由于跨线车上那嘈杂的环境,自己又昏昏欲睡,回答得一塌糊涂。要是能安静的坐在寝室或者office里,肯定不会是这个结果。

    回校的好心情完全被破坏了。

    RP还是要积攒的,做人还是要踏实点,勤快点,不能老是想着钻空子。现世报就是这么来的。

    March 28

    一个人在战斗

    6点钟在食堂吃了早饭,皮蛋粥+奶黄包,没记错的话是本学期第一次。

    不是炫耀早起,而是因为没睡。

    比起挫折,抉择更让人痛苦。

    努力顶过这段迷茫期吧,尽管,一个人在战斗。

    March 19

    VS2008 beta2

    今天开VS准备调程序,却被告知已过期不能试用。

    于是google卸载顺序,准备delete之。

    却无意发现这么个小工具:RunAsDate

    How does it work ?
    RunAsDate intercepts the kernel API calls that returns the current date and time (GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime), and replaces the current date/time with the date/time that you specify.

    死马当活马医,尝试了下,居然顺利进入了,免去我这个懒人卸载重装之苦。

    看来MS对beta版试用的加密做得很浅层,不屑为之?



    查到的卸载顺序先放这,方便以后卸载。

    下面是需要卸载的全部组件列表,最好按顺序卸载,以便将机器清理干净。最后重新启动机器即可安装正版VS2008。

    • Remove "MSDN Library for Visual Studio 2008 Beta"
    • Remove "Microsoft SQL Server Compact Edition 3.5"
    • Remove "Microsoft SQL Server Compact Edition 3.5 Design Tools"
    • Remove "Microsoft SQL Server Compact Edition 3.5 for Devices"
    • Remove "Microsoft Visual Studio Performance Collection Tools"
    • Remove "Windows Mobile 5.0 SDK R2 for Pocket PC"
    • Remove "Windows Mobile 5.0 SDK R2 for Smartphone"
    • Remove "Crystal Reports 2007"
    • Remove "Visual Studio Asset System"
    • Remove "Microsoft Visual Studio Web Authoring Component / Microsoft Web Designer Tools"
    • Remove "Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System Runtime"
    • Remove "Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System Runtime Language Pack" (non-English editions only)
    • Remove "Microsoft Visual Studio Tools for Office Runtime 3.0"
    • Remove "Microsoft Document Explorer"
    • Remove "Microsoft Document Explorer 2005 Language Pack" (non-English editions only)
    • Remove "Microsoft Device Emulator 3.0"
    • Remove "Microsoft .NET Compact Framework 3.5"
    • Remove "Microsoft .NET Compact Framework 2.0 SP1"
    • Remove ".NET Framework 2.0 SDK"
    • Remove "Microsoft Visual Studio Codename Orcas Remote Debugger"
    • Remove "Microsoft Visual Studio 64bit Prerequisites Beta" (64-bit platforms only)
    • Remove "Microsoft .NET Framework 3.5"


    March 16

    一支香烟表达全部感情

    思索:一根接一根的抽烟
    思索时间很长:大堆烟头的特写
    情绪激动:颤抖着掏出烟几次都打不着火
    下定决心:一只有力的手的把烟掐灭
    颓废绝望:躺在地上,烟头没有烟缸装,散落在周围
    悲伤痛苦:把一只刚点起的烟掐灭,随后手捂着脸眉头紧皱
    开心得意:得意的给每个人发一支烟
    豪爽大方:丢给别人一包好烟
    松了口气:慢慢的点起一根烟很深的吸一口,慢慢吐出

    March 11

    U R A PIECE OF SHIT,HUAWEI!

    终于知道华为为什么每年那么多人跳楼了,现在看来没人跳楼才怪了.

    March 07

    两则寓言

    1.   一只小鸟正在飞往南方过冬的途中。天气太冷了,小鸟冻僵了,从天上掉下来,跌在一大片农田里。它躺在田里的时候,一只母牛走了过来,而且拉了一泡屎在它身上。冻僵的小鸟躺在牛屎堆里,发掘牛粪真是太温暖了。牛粪让它慢慢缓过劲儿来了!它躺在那儿,又暖和又开心,不久就开始高兴地唱起歌来了。一只路过的猫听到了小鸟的歌声,走过来查个究竟。顺着声音,猫发现了躲在牛粪中的小鸟,非常敏捷地将它刨了出来,并将它给吃了!  
        这个故事的寓意是……  
        1)不是每个在你身上拉屎的都是你的敌人。  
        2)不是每个把你从屎堆中拉出来的都是你的朋友。  
        3)而且,当你陷入深深的屎堆当中(身陷困境)的时候,闭上你的鸟嘴!  
    2.   两个人在森林里,遇到了一只大老虎。A就赶紧从背后取下一双更轻便的运动鞋换上。B急死了,骂道:“你干嘛呢,再换鞋也跑不过老虎啊!”A 说:“我只要跑得比你快就好了。”
    March 02

    本我,自我和超我

      本我、自我和超我本是弗洛伊德对于人格结构进行分析时所提出的概念,在《自我与本我》一书中对人格的结构有详尽的介绍。
      本我(id)包含要求得到眼前满足的一切本能的驱动力,就像一口沸腾着本能和欲望的大锅。它按照快乐原则行事,急切地寻找发泄口,一味追求满足。本我中的一切,永远都是无意识的。
      自我(ego)处于本我和超我之间,代表理性和机智,具有防卫和中介职能,它按照现实原则来行事,充当仲裁者,监督本我的动静,给予适当满足。自我的心理能量大部分消耗在对本我的控制和压制上。任何能成为意识的东西都在自我之中,但在自我中也许还有仍处于无意识状态的东西。
      对于本我和自我的关系,弗洛伊德有这样一个比喻:本我是马,自我是马车夫。马是驱动力,马车夫给马指方向。自我要驾御本我,但马可能不听话,二者就会僵持不下,直到一方屈服。对此弗洛伊德有一句名言:“本我过去在哪里,自我即应在哪里。”自我又像一个受气包,处在“三个暴君”的夹缝里:外部世界、超我和本我,努力调节三者之间相互冲突的要求。
      超我(superego)代表良心、社会准则和自我理想,是人格的高层领导,它按照至善原则行事,指导自我,限制本我,就像一位严厉正经的大家长。弗洛伊德认为,只有三个“我”和睦相处,保持平衡,人才会健康发展;而三者吵架的时候,人有时会怀疑“这一个我是不是我”?或者内心有不同的声音在对话: “做得?做不得?”或者内心因为欲望和道德的冲突而痛苦不堪?或者为自己某个突出其来的丑恶念头而惶恐?这种状况如果持续得久了,或者冲突得比较严重,就会导致神经症的产生。

    February 25

    也谈士兵突击

    寒假有次陪朋友吃饭,谈到了“士兵突击”这部电视剧,很遗憾我没有看过,话头也就此打住。
    今天一时兴起看了几集,可能与现在的心境有关,有些感触不吐不快。
     
    老马班长说,“人这一生大多数时间,是在干些没有意义的事。”
    许三多说,“有意义的事就是好好活,好好活就是做有意义的事。”
    但“走自己的路,让别人说去吧”这种处事态度,就真的好么?
    许三多,他面对困境、低谷,没有随波逐流去颓废去沉沦,而是坚持着自己的初衷,可以算是个闪光点。但也正是这些与当前环境格格不入的举动,使得他与几位“同事”的关系闹的很不愉快。他的处事方式,个人认为是失败的。
     
    现在这么多人喜欢“士兵突击”,是不是因为他们在片中军人(特别是史今班长)身上看到了所谓的真善美,一些永不可能在自己和周围人身上看到的品质?
    就如武侠一般,成年人的童话?
    February 20

    那便变吧

    好好的让自己静了静,把一些本不该现在动的现在也没那实力和精力去动的心思给断了断.
    生活是需要改变改变了,那么就先从最基本的作息做起吧.
    每天晚上12点前睡觉,早上8点半前起床,保持三餐.看起来很简单,但熟悉我的人都知道其实不然.
     
    不设缓冲时间,从今晚开始,强迫自己要做到.
    就这样.