2008年3月30日

挑战Python

原先就知道Python相关的一个编程挑战的网站:http://www.pythonchallenge.com/。但是在国内经常被封掉。今天看到豆瓣上又有人不亦乐乎的讨论这个。试着一看,居然上去了。

现在我完成了0、1、2三道题,说说初步感受吧。

这里的题目没有明确的提示,你只能自己去猜想如何解答,然后不断尝试各种答案。提交答案的方法就是在对应题目的url下修改最后的网页名。第0题非常简单,就是求2**38,但是如果不知道的话,要摸索好一会儿才知道将答案的274877906944放到Url末尾进行文件名替换。第1题也是非常的简单,只需要写一个小写字母表顺次右移两个字母的操作就能实现完全的解密了。而且只有解密成功,看到揭秘答案后才会知道下一步怎么办。第2题设计的更为巧妙,原先我一直没有直接想到Page Source就是网页的html源码,左思右想都不能相出答案。看了论坛中对题目的讨论才知道该如何处理,在用字典方法的程序找到一大片字符中仅出现一次的字母aeilquty后想了半天才拼出了正确答案的单词equality,看来要玩这个游戏还得把单词量提高才行了 :(

这个网站我没有注册,只是简单的试着玩一下,没有注册的用户似乎不能直接看到每道题目的答案,只能在顺利通过题目后,将url中的pc改为pcc才能在wiki上看到各种各样的解答,感觉每位pythoner只有在真正看到这里的答案时才能领略到python的精美之处,因为你会发现你的解决方案在这个列表里面是那样的复杂。

呵呵,现在对这个网站开始很感兴趣了,争取每天能到上面去完成一道题目 :)

这里将我的答案备份如下:

0 http://www.pythonchallenge.com/pc/def/0.html  274877906944
1 http://www.pythonchallenge.com/pc/def/map.html  ocr
2 http://www.pythonchallenge.com/pc/def/ocr.html  equality

2008年3月27日

拳不接手,枪不走圈,剑不行尾,方是峨眉

终于了解到了峨嵋派武功的历史,弥补了作为峨嵋人的一项缺憾 :)

 

峨嵋派历史

峨眉派与少林、武当共为中土武功的三大宗,也是一个范围很广泛的门派,尤其在西南一带很有势力,可说是独占鳌头。

峨眉派之得名,是以佛教四大名山之峨眉山而起的,它与洪门天地会之“峨眉山”不同,洪门的“峨眉山”是山堂而出于虚构,峨眉派的“峨眉”是地名,是实指。

从明代开始有峨眉派的记载,明代中叶人唐顺之(1507一1560即正德二年到嘉靖三十九年在世)的《荆川先生文集》里,有一首《峨眉道人拳歌》:

忽然竖发一顿足,崖石进裂惊沙走。

来去星女掷灵梭,夭矫矢魔翻翠袖。

自身直指日车停,缩首斜钻针眼透。

百折连腰尽无骨,一撒通身皆是手。

余奇未竟己收场,鼻息无声神气守。

道人变化固不测,跳上蒲团如木偶。

关于峨眉派的起源,据峨眉派的拳志说:祖师原为一道姑,后入佛门。……是时,师善技击,善研各家拳法,虑各家拳法繁杂,莫衷一是,女子御侮,多有不同,遂探各家之拳意)另辟蹊径,创不接手之拳法,独树一帜,…… 积十三年,始臻大成,身旁弟子习之,呼之玉女拳法,同道相誉,称日峨眉拳,后弟子至峨眉山,偶谐其音,始称峨眉,此拳名之始未也,恐汝不识,为汝志之,师本与世无争,娱身可矣,御侮可矣,奚传姓名。由此可见,峨眉最初是一个由女子所创的武林门派,开始的时候叫做玉女拳法,后因祖师人了佛门,又以称女子为“蛾眉”和佛教圣地之“峨眉山”的双重含义而得名。

峨眉派功法介于少林阳刚与武当阴柔之间,亦柔亦刚,内外相重,长短并用。攻防兼具入拳经上讲:“拳不接手,枪不走圈,剑不行尾,方是峨眉。”“化万法为一法,以一法破万法。”总之是以弱胜强,真假虚实并用,站在女子的地位融汇了南拳、少林、武当等众家之长。

从宗教渊源上看,峨眉亦僧亦道,而以道姑为主。在武侠小说中,金庸《倚天屠龙记》说是郭靖幼女郭襄,因为心中爱慕杨过,而又尊敬杨过与小龙女的爱情,所以云游天下,借此畅解胸中块垒。后得机会听觉远念涌《九阳真经》,创立峨眉派,后来传至灭绝师太,其弟子纪晓芙、周芷若等,皆为道姑,此外,峨眉派的许多招式,也都具有女性的色彩,如拳法中的一面花、斜插一枝梅、裙里腿、倒踩莲等,又如剑法中的文姬挥笔、索女掸尘、西子洗面、越女追魂等,簪法中的闭月羞花、沉鱼落雁等,都完全是女子的姿态。又如峨眉派的著名兵器峨眉刺,又称玉女簪,也是由女子发簪变来的。

峨眉派武功有所谓“动功十二桩”——天、地、之、心、龙、鹤、风、云、大、小、幽、冥;又有所谓“静功六大专修功”一虎步功、重捶功、缩地功、悬囊功、指穴功、涅磐功;有“三大器械”一剑法、簪法(峨眉刺)、针法(暗器)。峨眉派的绝技,不仅包括三十六式天罡指穴法,还有峨眉剑法,其剑歌云:玉女素心妙入神,残虹一式定乾坤,身若惊鸿莺穿柳,剑似追魂不离人。临敌只须出半手,纵是越女也失魂。峨眉派的剑法和簪法,姿势优美而威力十足,也是峨眉的绝技。

 

峨嵋派分布

峨眉派是中国武术的著名派之一。该系武技崇奉四川峨眉山为发样地。清初湛然法师在《峨眉拳谱》中写到:“一树开五花,五花八叶扶,皎皎峨眉月,光辉满江湖。”“峨眉月“即指峨眉派武术。有人将近代四川流传的僧、岳、杜、赵、洪、化、字、等八门。黄林、点易、铁佛青城、青牛等五派,统归为峨眉派,即《峨眉拳谱》所谓“五花八叶扶”。此外还有余门拳和白眉拳等。其中,僧、岳、杜、赵称四大家,洪、化、字、会称四小家。

 

峨嵋拳谱

赞歌

绝艺惊人侠士风,千年击技古今同;勘开玄理树新帜,悟透禅机弃旧功;

假身玉女虚是实,真谛蛾眉有非空;诸家应复昔时面,妙处自然在个中。

 

拳志

祖师原为一道姑,后入佛门,是为道门修炼,佛门正果。

是时,师善击技,喜研各家拳法,虑各家拳法繁杂,莫衷一是,女子御侮,另有不同,遂探各家之拳意,另僻蹊径,创不接手之拳法,独树一帜。积十三年,始臻大成,身旁弟子习之,呼之玉女拳法,同道相誉,称曰蛾眉拳。后弟子至峨嵋山,偶谐其音,始称峨嵋。此拳名之始末也。恐汝不识,为汝志之,师本与世无争,娱身可矣,御侮可矣,奚传姓名,是以立规,以戒弟子:一曰不言师,二曰不与人较技,三曰不在人前演艺,此其意自明矣。

不言后师,前师永存,技而晦之,自可全身。

 

心解篇

阴阳易位,乾坤倒转,玉女之拳。拳不接手,枪不走圈,剑不行尾,方为蛾眉。

尔以丹田,我以涌泉;尔以根摧,我以梢牵;尔以意求,我以自然;自然功成,无影无形。

意在形外,其体自松,其气自盈,其道自通,内劲通灵,玄妙自生。

意催筋节,每见拙形,人已先知,何堪交锋。意摧形,其动必缓,其形必露。形追意,其势必速,其力必透。是以意比形长,力透强梁;意比形短,打人不远。气沉脚根,入地三分,手近胸膛,意透脊梁,纵透七尺,亦比短强。

劲整者,意整,形整,力整之谓。力透者,意比形长之谓。内劲之旨,气沉力整,意透是也。无柔,刚何以生,无刚,柔何以用。

见之似好妇,夺之似惧虎。心如处子,神淡淡而对敌。

手如三春杨柳,步如风摆荷叶,玉女挪莲,形飘飘而迷离。

拔而站矣,沉而发矣,飘而走矣。上拔则虚灵顶劲之谓,下拔则松肩沉肘之谓,前后相拔则力贯指端之谓。遂成浑圆一气。

低姿入地,力从根发,劲整而力聚;高姿飘然,机含万变,泰然而处敌。

形断意不断,势停意不停,敌何机可乘。尔须知:接手之拳,以万对万,不接手之拳,以一对万。接手之拳,以防开打到为最;不接手之拳,以让开打到为法。男子自是力强,莫与力敌;女子自是质弱,当以法取。

出必向神,彼何功可施;行必移魂,我何式可寻。

身形似箭,嘎然而止,步到手到者,必是周身之劲。意在形内,以意催力。先成步而后发拳者,定是一臂之力。步不至,招无功;面不过,手必空。此一臂长,一脚距之奥妙也,则步入我距必被我踢,而过我手,必被我击矣。

让随之法,如影随形,不接手而知敌意,唯此门径。让者,避其击点而走之,视有却无,近我则越长矣。逼者,过其守点而击之,视无却有,退我则越促矣。

尔擒我,是不欲我逃矣,然此时尔亦不欲逃矣,是尔擒我,等我擒尔耳,击之可矣,又何惧哉。

故化万法为一法,以一法破万法,玉女之拳,后发先至,以静制动,内手之秘。

又须知:

轻描淡写,炼神之法,自然中求真,蛾眉门径,功成于不知,拳出于无意,功至化境。

神要静,临敌不能静,有招也无用。

气要稳,临敌不能稳,出手也不狠。

心要狠,出手莫留情,留情必不赢。

机要准,见机莫迟疑,迟疑来不及。

月印千潭,只是一月;说破玄机,只是一理。识之者,谓其妙法横生,无衣无缝,而五体投矣;不识之者,如读天书,隔山打牛而责其狂妄,嗤之以鼻矣。是故告我弟子,识者宝之,不识者哂之,高山流水,阳春白雪,自不足怪也。

高山流水觅知音,一拓白云在深处。

神形说
   意者内也,不可见之神也。形者外也,可见之身形也。欲得力整,先须形整;欲得形整,先须意整。是以习技之初步功夫,一曰调身,身松则神顺;二曰调神,神顺则形顺;三曰调形,形顺则力顺。有此三顺,则身自松,神自灵,形自顺,力自整矣。是以欲求形似,先求意是,意是而形是,意非而形非。故曰:"莫叹难,莫叹难,劝尔从里往外练,不在外边在内边;内里通,一身轻,玄纱天机自然生。"此至言之谓也。是以此术也,由里及外之术也。意者内也,形者外也。先练意,后练力,先求松沉,后求柔活,再达刚强,以先天之灵意,导后天之拙力,由是意动形随,力由内发,刚由内生矣,由是则柔而不软刚而不僵矣。由此知之,意到形随者,入门矣;意到形到者,可搏矣;意到形到,未知孰为先后者,则化矣,玄妙之机随意而生矣。

刚柔说
   柔者刚之本,刚者柔之用,若欲极刚必力极柔,刚柔相济,蛾眉之本传也。故与敌交手,未发手时,宜松柔灵活,不用一丝一毫之强劲,即松肩沉肘,虚领顶劲,外松内聚,飘然轻灵,若即若离,若假若真,寓随时变化之机而以意示形。
   发手时,则迅雷不及掩耳(手在何处便从何处击人),极刚极强(刹时间集全身之力于一拳,有雷霆万钧之力)。
   故曰:手如三春杨柳,步如风摆荷叶,出手似闪电,发力如雷霆,静如处女,动若脱兔,其蛾眉之谓也。
   然世有以刚求刚而未能刚者,是未知若欲极刚必为极柔之道也。是以习技未达者,多形过于意;造诣较深者,则以意示形。形过于意,拳未发而形先动,骗则人知之,攻则人知之,退则欲收不止,进则欲罢不能。意死,手死,步死,何柔活轻灵之有!以意示形,拳已出而人不知,指东打西,示退而进,若即若离,若假若真。当手者是处皆手而莫辨真假;旁观者,若见放箭而未见开弓。攻也,人不知其所守;守也,人不知其所攻。其变化莫测,玄妙横生,庶几可随必所欲矣。是以刚柔相济之道,蛾眉之本传也。
 

十字攻守秘诀
 

阵:出手一式站方圆,变化四方任周旋。
  注:出手阵式,须利于实战,便于攻防,能进能退,能内能让,难人之进,利已之攻,攻守变化,皆可藏于一式之中,使敌无可窥我之变化,如太极之一极生两仪,两生四象,四象变化无穷者是也。其法:万法归一(常叫阵式),玉女挪莲(常叫十字步)。

 

探:门户不开用手探,宗法步法动中观。
注:遇敌交手,未知敌之技艺若何,不可冒然而攻,宜以虚式引之,叫开门户,牵动步势,窥敌防我所出之宗法步法若何,然后相机而行,伺机而动可也。其法:龙女拂袖(即探手或引手),杏花出墙(单出墙或脚探)。

让:手凶势凶莫怕他,让开一步自枉然。
注:敌我相攻,我身所在之位置,即为敌攻击之目标也。敌若发手,无论何招式,无非欲击我也。我遇敌攻来时,若让开被攻击之位置,则长无论何招何式,必落空矣,让手之中,亦可窥敌之变化矣。其法:移身换影(分小让,大让,磨让)

随:能让能随是高手,如胶似漆紧相连。
注:能让不能随,是被动之守也。此打收手之法。彼来击我,我即让之,彼招发完时,其手必收,其势必顿,我紧随彼之收手跟而击之者,即随也。是以让则避其锐气,随则击其惰归。其法:龙女戏珠(有随前手,随后手,上式随三法)。

藏:若遇藏手莫相连,相连必挨暗中拳。
注:此暗中设伏之法。多以引手,顶手,让手中用之。其法:藏手(引手藏低对脚,直射虎,倒身蹬三式。拦门拳,小让,大让,藏兰花手三式)。

顶:你打我打先打你,欲动已动即动拳。
注:此后发先至,以静制动之法。彼一欲动,或刚一出手,我未等彼之脚到,未等彼之手出,即发手击之,后彼发手,先彼打到,击敌于半式之中,则敌无论何招何式俱不能进矣。其法:玉女按莲(分单顶一法,闪顶二法),玉女抽身(分撤步单顶,大顶二法),裙里腿(用反式,常叫低对脚),一面花(用反式,常叫拦门拳)。

逼:一式牵动莫停留,莫容起手进连环。
注:我头手一出,敌若让我,我头手未发完,二手即连续击之,使敌未有相随之机,即*也。其法:一面花(用正式),斜插一枝梅(用正式,常叫斜射虎),三步逼(分直,斜三法),倒踩莲(用正式),玉女引路(即开路式),单插花(用正式)。

骗:故开门户诱敌入,以假乱真玄中玄。
注:此欲左故右,欲上故下,欲远故近,欲取故与之法也。式式必有假,真假必同时,须知真遇真时假,假遇假时真,诱编为至关,妙用存乎心,攻其必救,始为真骗。其法:指东打西(分上手,下手,单手三法),裙里腿(用正式,常叫三叫门),重搂脚(用正式)。单叫门,直射虎。

闪:此闪非比他人闪,入得门来始真传。
陆海迎门三不顾,顺风摆柳势法全。
注:此让开打到之法,彼来击我,我于让开被攻击位置之同时,亦发手击敌,与敌同时打到,则敌击为虚,我击为实,使敌未有还手之余地,其必不能逃矣。是为绝手。入了蛾眉门,你打我也打,正是此谓。其法:闭月羞花(即反磨,为斜插一枝梅之反式),沉鱼落雁(即正磨,为玉女引路之反式。),杏花出墙(用反式,即倒身蹬),玉女问路(用反式,即磨踢)。

错:错了还错原非错,玄中更玄确是玄。
入化通神能于此,赢人只用半招拳。
注:拳不接手,一错也;颠倒所用,次非其时,又错也。有此错中之错,则真假无虞,探骗之术无益矣。磨以让为法,错以顶为始。广言其错,式式或错,错中之错,切莫轻说,藏手与错法,乃看家拳中看家拳,非入室弟子,未可轻传,只传其八法,已足其用矣。

了解猎头

最近这篇文章被高度关注(转载),从中能感受到很多。

其中似乎反映了一点:好学校毕业的学生多数只是高级技术人员,很少有人去创业或者做高管。反倒是二流学校的学生们能够突破这种约束。难道随着不断登上象牙塔,人的意识也在不断被禁锢?让我联想到了目前国内的一个现状:学历越高就业面越窄,找工作越困难。正在读博的或者准备读博的确实都得很好的想想这个问题,读博确实不能带来高薪,只有纯粹的做研究的心态才能做出有价值的东西。

全文如下:

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

从来没有想过自己会加入这一行, 从开始自己喜欢的专业通讯, 到后来喜欢的管理,,幻想过是专业高手, 幻想过管理专家, 却从来没有想过进入这一行,但 真的在我刚刚离开校园的时候发生了,

短短几天, 对这个行业有了一个感性认识, 其实最让自己伤感的不是自己没有干这一行的经验, 而是代理的人, 要找的人都是薪水100万, 现在才发觉IT一行,有钱人真多,想想大家都在讨论一个月3000还是4000的时候, 别人都是100万, 而且多数都是没有结婚的28-29岁的年轻人,, 我在感叹做人的差距好大啊,

最让人伤心的是, 当代理100万的CASE打个电话过去, 很自豪的说帮你推荐职位, 年薪100万, 那边传来的是,轻蔑的笑声:我现在都150万, 你认为我会去考虑100万?

收集300个人资料, 查他们的经验背景, 更让我接受不了的, 里面只有一个清华, 一个北邮, 我还熟悉, 其它的都是很烂的大学, 而交大一个也没有,, 和经理聊这个, 他说如果你要找好大学的, 在搞技术的20-30万的很多好大学, 不解。。。
其实我开始也不相信, 开始经理拉我去那边的时候说他们都代理百万的职位, 我还以为他吹牛,因为我们刚离开大学的时候大家都在为多拿几百快钱的时候,别人的薪水怎么能数量级上升。

有位网友让我拿出证据, 其实还需要拿嘛, 今天我特地又把大概的资料翻了一下, 更确信我昨天的说法。给大家讲今天的一个笑话, 每次约condidate 过来的时候, 他们都开车过来,而今天收到一个清华的GG的简历, 感觉他技术基础很扎实,想把一个技术主管的位置介绍给他, 让他来我们OFFICE,我打听到他住的地方和我们的OFFICE 大概开车10分钟的路程, 我说我们半个小时后见, 他说可能赶不到, 这位哥们一句话差点把我喝在口中的氺喷出来, 他说, 我骑自行车过去怕赶不上。。。老兄你花10块钱打个车不行嘛,你应聘的可是70万的职位啊。。。。

其实大家都认为猎头就是中介, 那可大错特错, 猎头的信息;量大的让我刚刚进去的时候吓了一跳, 他们几乎有所有IT公司的人员联系方式, 而且是手机号码。 我在想(我现在都不明白他们是怎么搞到的)

兄弟们, 大家想赚大钱的话, 那么自己创业把, 要么去去那些高端技术企业的销售(想想EMC高端storage一台1million, 你认为利润是多少呢?), 在大公司里面搞科研, 可以让你不饿着, 但永远富不起来(当然有例外的)。

真的, 我也想不明白怎么我看拿百万的好大学少的可怜, 原来我想有点少, 但至少不会少到我看一百份只有2--3份是好大学的吧??我同意好大学出来的素质高, 但竞争能力怎么那么差呢?

还有现在国外大IT来中国的企业一般都是扁平管理, 只有四层, 最上面2层, 80%是香港和台湾人, 我就想不明白了, 我们已经开放20多年, 怎么老美还是不愿意来雇用本地人呢? 而我们只能在最下边2层徘徊。
唉。。
不知道大家感兴趣的是猎头的工作还是那一群拿高薪的人?
原来也接触过一些有钱人, 但每次都告诉自己每个社会都有一些暴发户来聊以自慰, 可第一次而且是天天都在和这一群高收入者接触, 暴发户的现象完全消失, 自卑感可想而知, 其实这种自卑不是来自他们的高收入, 而是他们对行业的理解, 对市场的嗅觉,对整个行业食物链的把脉, 他们和我们理 解的单片机, MOS逻辑电路完全是不同的概念, 我们都知道一个公司要发展, 市场和技术缺一不可, 问题是技术方面有我们这些好大学的学生来填补这些空缺而弱化了技术人员的薪资, 而使搞技术的处于饿不着也富不起来的尴尬境地, 而对公司来说,来钱的地方只有市场, 我们当然知道这没有技术支撑都是扯谈, 这没有错, 错的是我们认为大家都这么想, 其实也只有我们搞技术的会这么想,,

想想, 一个卖通讯计费软件的销售人员2个月搞定的一个单子是2000万, 而利润是1000万(这完全是真实的事情, 如果有些人还让我拿出论据,我只能笑你对这一行太不了解),你说这个销售人员是应该拿300万还是400万的年薪呢? 而他手下没有管理一个人,而只是一个一线销售人员。 我们搞通讯的都知道CDMA比GSM优越的多, 而且都在预计它会取代GSM,CDMA的技术早就成熟, 以前MOTOTROLA(中国)匆匆上马CDMA, 最后失败, 引起MOTOROLA高层的震荡, 而血洗了一片决策高层。 每个公司都投入大量资金给科研, 如果你以为是为了给科研人员的薪水,那又错了, 那些钱都是做实验的, 而投入到市场上面的钱, 那都是进入老板的腰包, 面谈一个在著名IT公司搞 Marketing 的福州大学的29岁的很干练的经理人, 我们不知怎么聊到SUN的, 他的公司代理的和SUN的产品几乎完全不同, 我以前也读了很多关于SUN的文章, 从它的发家到成长, 到丑闻,,而这位仁兄的了解让我直冒冷汗, 他连当天美国SUN的股价都说的很清楚,更别提SUN的系列产品和对它未来的预测。而他仅仅是福州大学的小本。 上面有个网友让我描述一下他们的背景, 这个统计起来有点难度, 不过我可以肯定的告诉你们, 他们有一个共同的东西, 那就是人格魅力。

大家一谈创业都在犹豫, 其实你犹豫的时候你已经失败一半了, 不信你去清华BBS上面的创业版看看, 那里面多数人都在问:有谁创业成功的吗? 怎么搞第一桶金? 你们问的时候你已经失败了, 我肯定的告诉你, 你问的同时, 好多人已经开始做了, 创业成功的人不会来这儿的。
对于那些拿高薪的人除了, 他们的共性,人格魅力外,还有就是他们都有完整的职业规划, 这是他们成功的先决条件, 如果一个人开始的希望都在为能不能找到工作, 那么他也don't have长远的规划。 猎头们看简历candidate的时候首先看的是他们工作的公司和跳槽的经历, 如果你每年都跳一次,那么我告诉你被猎头看上去的机会很少,专业的猎头公司清楚的明白在代理这一行那个公司的员工最有竞争力, 有些同学都认为去大公司为以后的工作有好处, 这不竟然, 大家喜欢去四大,
那是因为四大会帮你综合培养的很有竞争力,所以很少有猎头去IBM挖人, 那边出来的人没有太大的竞争力, 这个庞大的组织里面分的太细, 出来的员工基本不会是多面手, 这可能也是IBM高明的地方, 所以IBM相对员工比较稳定, 但对于一个员工的职业规划,IBM不是一个好的去处。
关键是对人综合素质的培养, 同时我们应该知道公司永远都是市场驱动而不是产品驱动,这个先决条件决定搞管理, 销售的人拿高薪的可能性大的多, 有好多人都说, 先搞两年技术在转管理OR销售, 其实你错了, 你两年的技术对你将来的管理和销售有点帮助,毕竟你花了两年的时间在技术上面,而别人已经直接在管理和销售上面干了两年, 所以我刚刚在电脑上面大概统计了一下,高薪中管理和销售方面的人才开始做技术转过来的年龄都偏大, 所以如果你致力于搞管理和销售, 那么直接去找这方面的工作, 而不要浪费时间去搞2年技术,一到管理层和销售对技术背景就会淡化很多, 而且愈高愈明显。当然你的工科背景对你以后的管理和销售绝对是个很大的帮助, (现在我们那个几个专业猎头,他们都是很有经验的专业顾问, 但他们都不是工科背景, 我的工科背景在那边做的就很占优势,而且猎取的成功率高的多),如果有些人又不想放弃技术,又不想一心搞技术, 那么技术支持就不错, 技术支持分pre-sales, and post sales, 我的建议如果你外向一点选择pre-sales, 那边很锻炼人, 不仅要技术,还要很多的和人大交道, 而且多数薪水比post sales要高 这那边滚打5-6年薪水都会到20-30万,以后跳槽的机会比较多,而售后这块薪水不是很高, 但技术含量比较高点, 以后跳槽也不容易。
当然想搞技术的, 研发部门最好的啦, 每个人都有自己的喜爱, 而且钱不是衡量个人成功唯一标准, 反正研发部里面高薪的情况很少, 除非是那种很核心技术的, 不过国外IT公司的核心技术都放在总部研发, 不过研发主管的薪水都比较可观, 不过研发部里面都是牛校的PHD, 一个MASTER和小本在那边爬上去的可能性太小。
她35, 工学研究生, 北大EMBA工商硕士,一个本土IT公司总经理,年营业额4亿。 本来她把简历投过来的时候,她告诉我因为和董事长经营理念不是很相同, 想走。 手头没有和她很区配的职位,主要是开始很重要的职位(AP, CM)老板都没有给我做,其实我是个新手, 什么东西都在学, 但她希望和我保持联系, 今天早上,她打过来电话说下午会路过我们公司这边,希望和我见个面,本来我下午3点约了一个客户经理,后来我说3点半吧, 3点半到的时候,她很准时, 我约的那个人还没有走, 让她等了10分钟, 会客厅被其它同事用着, 我们就一起去了公司下面的一个咖啡厅, 开始聊的很投机, 因为我手里现在sales mgr 职位比较多点, 她想要CEO COO的位置, 然后我们一起聊她现在的公司, 她从助理做起到最后总经理, 给我讲她出去拿单的经历, 说和员工的沟通, 和老板的交流, 说的很感性, 语速很慢, 我们都要了冷咖啡, 她告诉我不喜欢加糖, 她喜欢慢慢品尝,当讲到她陪客户喝酒, 陪客户疯狂, 她声音变的很小, 她说起她读EMBA的时候的抱负,还有自己的经营理念, 她突然问我:我们活着为了什么?然后哭了,对于她的突然变化, 我有点出手不及, 不知道怎么办, 我很坦诚的告诉她, 我每天都在面对比自己优秀的多人中间, 我很康奋,甚至有点紧张, 不过我很少和candidate 从心理去沟通过, 我都是想用最专业的眼光和规划和他们交流,因为我一直想使自己变的更professional, 我说我的缺点很明显, 我普通话不怎么好, 但我尝试和用不同方式与别人交流, 让别人认可我, 我是一个从不放弃的一个,我的努力让我踏实,对事业方面, 我们没有可比性,你很成功, 你开的是宝马, 如果不是工作的关系, 这么高档的咖啡厅我要等几年后才可以光顾。

这个时候她平静了许多, 她告诉我, 她很少流泪,甚至在丈夫面前, 让她苦恼的是,这个多变的社会大家都不按理出牌, 你永远不知道别人下一张出什么牌。前面大家都是正人君子, 背后刀光键影。 她说不是因为压力, 每个行业都有压力, 普通的engineer 也有压力,而是在思考选择什么样的生活方式。 只是觉得工作里面有很多恶心的地方。 女性在IT这个群体里面还处于弱势群体, 而且永远会是这样。最后她告诉我希望她不是我的candidate,而是她的朋友。咖啡厅里放着轻音乐, 相差一个轮回的两个人就在那边无语的座了半个小时。

学生真的太单纯了, 我们大家都没有了解社会恶心的事情, 我以后会专门写一些从我的candidates口里听到高层恶心的事情。 其实很有趣, 我是感觉每天我都在拍电影, 我终于明白电影来源于生活这句话了。

和网友的交流让我很感动, 大家对这群人的陌生, 对他们的好奇, 还有我们这个不够专业的猎头公司代理的却是最高的职位, 唯一的理由是他们和每个IT公司的高层都很熟,这也是本土猎头公司没发竞争的地方。
今天上午比较忙, 连续约了好几个candidate 谈,下午有点困就没有约人过来, 老板那边又接到一个单子,180万的年薪, 唉!我自己要开公司能接到这样的单子就爽死了, 一般一个月就可以搞定,就可以拿到他们年薪的30%, 就是54万,,而一个公司10个员工总的开支包含office 电话费也就3万, 每月平均可以10个case, 当然一般都是60-100万的,赫赫, 钱基本被老板拿去, 唉, 不平衡, 我信有多职位都很有压力, 但也有好多职位每天就是数钱, 例如我的老板, 资本家啊, 不平衡。 今天就谈一下猎头的程序吧,因为我也是新手, 了解的也只是很小的一个部分, 不过这样我更会真实的记录下来。

猎头英文是headhunter, 专门找head(头)的行业, 这里面的头有两方面的意思, 一个是智慧, 就是那些有才华的人, 一个就是头目, 一般都是经理,总裁级的人,所以大家会误会猎头公司只是高级中介, 其实有点错误, 我开始想尝试找一个确切的猎头公司的定义,不过比较难, 这个行业一直都是很模糊的定义。 猎头找的是那些永远不愁没有工作的人, 而中介只是帮那些在找工作和找不到工作的人找工作。 美国发展最规范, 而中国只停留在很狭小的范围, 而美国, 正规的都会包含人员的科学测试和培训, 公司机构和人力的咨询等,中国的相对粗造的多, 象上海这类公司有400多家, 于是就导致好多公司很底的职位都会去代理, 而沦落为简单的中介, 几个月都拿不到一个大的单子。
好多人都想刚刚毕业就进入这一个行业, 几天粗造的了解给我的印象是一个专业的猎头人, 要具备Knowledge, Professional, and discernment. 这个行业对猎头的知识的要求是对整个行业的了解, 给你一个case, 你要在半个小时内就要确定搜寻的范围, 包含那些公司,那些部门,可以挖到相关的人, 然后是professional, 这个不仅仅是猎头这行业, 其它所有行业都这样, 外在要穿着方面, 内在沟通方式, 你的职业性会让公司对你有信心, 给你更多的单子,让你的candidate更愿意把自己托付给你。 最后的discernment是出成果最重要的一环, 你要对你推荐的candidate给出至少70%以上的判断, 这方面每个人用的方法不同, 有的喜欢打听candidate 的身边的人, 有的喜欢用test, 而我个人比较喜欢面视时的聊天, 当然有些人很会谈, 很会包装自己, 不过猎头都比较喜欢没有包装的真实的你, 其实这样对公司也是对个人负责, 因为工作是长期的, 所以我一般都会选择那些just be yourself的人。所以刚刚毕业的学生可以做这一行, 但很有难度,例如我, 几乎每天都在学习, 和每个经理人聊天都是在给自己上课, 只是我适应的比较快。
还有我特地想提到的是大家不要频繁跳巢,昨天我推给公司的两个人都是每年跳一次的理由被公司退了回来, 越到高层对频繁跳越敏感。 上次有些人问我给大家建议的直接去做销售和管理, 怀疑刚开始去做管理不可能, 其实你错了, 我最近就接触好几个刚刚毕业的本本去做项目主管, 这太有可能了, 一般的工程项目, 技术含量要求不高, 有一定的组织能力完全可以胜任, 做项目灰色收入也可管哟,,

上次有人提到销售淘汰很高, 这是事实, 本来人生就是金字塔,你要想在上面就要接受残酷的淘汰, 而做技术淘汰低是因为你在好大学, 本身就是在金字塔的上面, 销售只不过是不同大学刚刚毕业重新洗牌而已。而对于管理,天赋占很大比重, 对资源的调配,对市场的灵敏度,对员工的沟通, 这方面的要求是全面的。
下午和一个microsoft 的经理级人物面谈, 然后就一起吃了饭, 一个很魅力型的人, 两个人点了那么多菜, 喝了点红酒。当时直犯愁, 钱包里面只有300块钱, 最后他很礼貌的买单, 我强烈要求我买, 他拿出信用卡, 说这是Gates 的钱, 我们大笑,920快, 我现在还后怕, 他如果真让我付, 我可怎么收场啊 ,钱包只有300快啊。

其实和公司几个很有经验的consultant比我的能力只会比他们强,但他们面试时表现出来的老道却是我让我甘拜下风, 因为做IT行业就那么几个人(我说的那几个牛人), 每次面试的时候很少涉及到技术方面的, 都是在讨论, 那个公司(管理)重新洗牌, 那片战场(销售)还有打的可能, 哪个人从那个公司跳到另一个公司带走一班人马, 他的那个朋友在那个部门可以给他第一单, 那个公司更有挑战性, 那个公司可以让你折寿几年,Oracle 的单打独斗和霸道, IBM的team work, HP游离于中间,SUN 的日啦西山,EMC的坟场,DELL的嘟嘟逼人,Hitachi的教条, 就那么点人在IT公司之间不停的换位,几句聊天中, 你就可以知道candidate 的人脉关系和管理和营销理念。 因为我们代理的都是经理级的人, 所以不管挖他们去做技术主管还是公司主管还是销售主管, 技术都不是我们问的范围。

我现在在写的时候收到一个网友很诚恳的探讨,这位朋友, 原谅我没有得到你的容许就直接应用你的话, 原话:以前在学校找工作面试的时候,有幸跟东芝的中国区经理谈了一个多小时。当时记得比较清楚的就是,这位经理告诉我,工作之后,有一个高质量的朋友圈相当重要。因为这样就可以更有效地交流和学习。

自己交往的人真的可以决定你成功多大, 不仅是给你的帮助还是给你的资讯, 更重要的是给你潜移默化的影响, 我敢说干这么短时间的猎头, 以后我不管做什么都是我一生巨大的财富今天来点数据吧, 不过我觉得收集数据确实是枯燥无味的工作, 我看资料的时候, 经理过来问你今天打的电话好少哟。。。无语,本来拿了一百份, 不过到现在统计了80份, 实在坚持不下去了, 算了, 就拿这80份做sample 吧, confidence level 肯定比100份少, 赫赫,我主要是从他们的薪水(年薪), 学历, 年龄,工作年龄方面统计的。因为这是对那个阶层的, 不具有代表性(而且只是IT 行业), 只是给大家看一下, 给大家一个现象,评论是大家的事, 而且最近我也在想自己的职业规划, 所以不知道哪一天就会改变自己的职业。 不过还是希望坚持多写点, 毕竟做高端猎头的人不多, 有这个机会了解他们也
不容易

薪水:40-60万, 60-80万 80-100万, 100万 以上
人数 19 22 23 16

80人中, 女性16, 男性64
公司管理人员,32 人, 销售经理 40 技术主管 8
学历: 本科 56, 研究生18才人 (其中MBA 8人) PHD 6 人

没有人是本科以下的, 可见 本科还是大家成功的窍门砖。

好大学(我说的好大学就是我们大家心理明白的那几所:)7, 其他的:73。
工科: 62 人, 非工科方法18人,
工科是压倒性多数

平均年龄(这个开始我还用计算机算,很笨的说, 后来用excel 直接就可以拿到)31,
最小的25, 最大的42,

跳槽的频率是3次, 也就是平静3年半跳一次, 一般IBM, HP 的时间都有7-8的, 不过其它的2年多的, 2年以下的很少,

到经理级别的26-29最多,所以27(一般工作2-4年)是大家的一道坎, 这个时候跳一下,promote 到经理级, 以后机会就不多了, 然后是32—35 又一到坎 能promote 到director, 这关过不去, 那么你在小经理这边呆着吧。。。慢慢熬时间拿点福利, 35 也是一个Promote 到 VP, GM 的最好时间, 一般过了40猎头不会推荐你的, 除非你特牛(特牛的人年纪对他没有障碍。

上次有人问我, 魅力究竟是什么, 其实我也说不明白, 魅力究竟是什么, 我的理解是他散发那种气质, 那种素养, 让你不自觉的想去学习, 模仿。

今天都在搞这个数据, 被老板批评了,不爽, 另一家公司也不停打电话让我去签, 矛盾中,,祝大家快乐,
因为代理的是高端职位, 对普通人比较遥远, 可是我们每个人不都是一直向往吗? 当然钱不是衡量成功的唯一标准, 但我描述的是那一群职业的经理人, 职业的销售人员, 而不是暴发户, 他们身上迸发出来的是一种力量, 一种信心, 我不知道大家爱不爱看中央台的《《对话》节目, 其实每天我都在一群人对话, 所以我每次晚上回来的时候都在想,那些主持对话节目的人, 他们每次谈话结束后也会有和我一样的失落感吧,用一句人格魅力去描绘这群人太虚, 我也一直在寻找他们成功的理由, 我们知道一个成才无非是实力加运气, 这样的描述对于我们普通人没有如何意义。 星期四上午在coffee bar 面试了一个IT元老, 原来他已经隐退, 不过最后那个职位没有其他人合适, 和同事商量还是决定挖他, 约他出来的时候没有什么难度, 他驾车带我们去他认为是最好的coffee bar,安静而且优雅, 他说以前每次累的时候都会一个人来这儿, 聊起现在的IT市场, 他说他还是很怀恋以前, 可惜中国最早搞IT的那批人基本隐退了, 而现在市场竞争激烈, 利润下滑,大量的新人出现。 最后他还是没同意出山, 我们代理的那个位置还空着, 也许他同意和我们见面,只想聊个天吧。最后我要他给我点建议, 我他问我什么方面的建议, 我说职业经理人成功方面的, 他想了想说: 无止境地追求卓越,这种人要求自己是英雄,这样也是给别人尊重和自己信心的唯一方法。 也严格要求别人达到他的水准。在工作上,他们会要求自己与部属“更多、更快、更好 IT行业大家都在和时间赛跑, 不管是技术还是市场。

说实在的,我们这边代理的销售方面的人才多点, 主要是销售方面的 mobility高点,好多人不喜欢销售, 可是不菲的薪酬终究还是有很大的吸引力。当然,除此之外,销售这份具有挑战性的职业也让人有很多其它方面的收获:眼界开阔了,能力提高了,而且激发了不少自己原来没有发现的潜能。

最近公司的单子很多, 并不是IT市场好转, 而是几大IT公司都在洗牌, 我知道几家著名的IT公司 上半年都在震荡, 所以有经验的人, 最近一段时间出手是很好的时机, 过了这段时间想对会清淡些, 但中国经济的巨大磁场作用, 好多IT公司都来开办事处, 去那些办事处比去大公司有前途,他们设办事处一旦发觉中国市场巨大, 就都会大举进入中国市场, 那个时候你就是元老了, 一般公司都是设2年办事处, 然后大举进攻。
有人在风中哭泣,有人迎风放屁,对于没有工作经验的我们来说,

你最需要适应的,一是听别人的声音,二是闻别人的味道。其实好多公司不招应届的原因除了没有工作经验, 就是跳槽频繁, 我们公司内部的一份数据也可以清楚的看出刚刚工作的人跳槽频率最高,这也可能和大家开始对职场的模糊认识有关, 太多的是关注薪水而不是长远发展, 所以我建议大家找工作的时候尤其花很多时间在找面试技巧, 谈判技巧, 不如花多点时间考虑自己的工作的切入点。
和大公司的HR经理聊的时候,他们多数也都喜欢真实的你, 我上次也提到, 面试需要准备, 但不需要包装, just be yourself, 你的包装在有经验的HR和部门经理面前, 很容易被看穿, 而且他们,包含我都会反感包装后的candidate, 当然强调自己的优点, 淡化自己的缺点是必要的。

高年薪阶层人士的经历,都有一个共同点就是跳槽经历非常少,一般5到8年才跳一次,甚至要10年以上才跳一次,而关键在于其最初择业的时候非常清楚自己要选择什么行业,而不是像现在的大学生频繁的跳槽。跳槽如果跳得有系统,能够反映出毕业生有系统的规划,有明确的目标,还是会获得企业的青睐。如果毕业生一直在追求自己的理想,虽然不停地跳槽,但如果是执著地向自己的目标在前进的话,公司还是会考虑这样的人才。但如果毕业生工作一年半以内就频繁换工作,一般公司也坚决不会考虑。

所以我们猎头挑人的时候, 第一眼看简历就是看跳的频率, 这也在猎头行业达成的共识。 虽然我们的存在, 也在促使跳槽的发生,那只是人才的合理条配, 我承认好多猎头公司不负责的挖人, 好的猎头公司不仅为公司找到合适的人, 也要为我们的candidate 定下长远的职业规划, 不是为了挖人而挖人, 相反有时候我和他们面试的时候, 我会建议他不要跳,,嘻嘻, 虽然我也是新人, 不过在他们面前还是要装的professional 一点。

小常识: 高级蓝领”是蓝领人才的较高层次,其最重要的特点在于它不以理论和管理方面的综合素质为判定标准,而以实际动手能力为判定标准,一个合格的“高级蓝领”应当具备相当丰富的实际动手经验,应该属于操作型人才。“低级白领”主要指办公室行政人员,他们从事的是单纯的脑力劳动,不同的是他们的脑力劳动技术、知识含量比较低,可替代性比较大。所以小白领可替代性强, 但每天川行于商业大楼, 过着小资一样的生活让他们很自我,这也是我为什么想离开现在的猎头去另一家做项目主管。。。。

2008年3月26日

MoinMoin很好很强大

一直热爱Python的我,前年在选定Wiki系统时,首选了基于Python的MoinMoin,当时只是用来作为我们实验室外部能访问的一个Wiki。当时只是简单的一用,现在连地址都记不得了 :(

昨天在Lee师兄的询问下,我推荐了MoinMoin的Desktop版,经过试用,发现Desktop版在Windows上简直就是超级简单的Wiki系统,使用真是太方便了。但是后来发现这个版本存在一些问题,就又改到原始版本了。

原先Lee师兄问我这个Wiki能不能导出离线文档,方便别人查阅。经过寻找,不看不知道,一看吓了一大跳,看到了Moin网站上提供了大量的插件,几乎涵盖了能想到的各种功能。

刚才在国内Python圈内顶级著名的啄木鸟网站,看到这个网站也是基于Moin搭建的,而且具备了相当完善的功能,对于交流简直就是相当方便了。

在网上又找到了一篇详细介绍Moin的文章,看完顿觉Moin真是Wiki中的极品。现在决定了,以后的工作日志(个人研究以及项目管理)完全采用Moin来操作。期待Moin能像Biblioscape那样对我的科研和生活产生巨大影响。很希望自己也能搭建啄木鸟那样的社区来推广我们学校的机器学习小组,真正让广大朋友们对机器学习的交流成为习惯!

 

转载介绍Moin的文章如下:

Link: http://media.ccidnet.com/art/3023/20070926/1225599_1.html

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

基于Python的MoinMoin
作者:杨晶

Wiki是一种知识共享工具,我们可利用它与远在大洋彼岸的朋友共同创作一篇文章。Wiki也是一个功能强大的内容管理平台,能帮助企业或个人管理知识。MoinMoin是众多Wiki Engine中的佼佼者,它将我们带入了一个充满新奇的Wiki世界。

自1995年3月25日第一个Wiki网站诞生以来,Wiki系统以其简洁的语法规则,方便的在线编辑和完善的版本管理功能,得到越来越多用户的青睐。已应用到企业内部网站、社区交流和个人知识管理等领域。

Wiki Engine也由最初的几个发展到上百个,使用各种开发语言开发的都有,比较有代表性的有用Python开发的MoinMoin和ZWiki;用Perl开发的TWiki、UseModWiki;用PHP开发的MediaWiki,PhpWiki;用Java开发的JSPWiki。其中MediaWiki就是著名的维基百科网站的支持系统。

MoinMoin是使用Python脚本语言开发的一套具有模块化设计和高灵活性的Wiki系统,以GPL协议发布,源代码开放。著名的Python社区和Debian社区的Wiki系统都是使用MoinMoin来搭建的。

追根溯源话Wiki

该项目最初由德国人发起,Moin是德国方言早上好的意思,MoinMoin的名称是借用了WikiWiki这种Wiki的习俗,使人感到亲切。

MoinMoin最初是在PikiPiki系统的基础上发展起来的。PikiPiki的作者叫MartinPool,由于想比较一下用Python实现的Wiki系统与Java或Perl语言实现的Wiki系统在代码质量和性能上的区别而开发了只有一个文件几百行代码的PikiPiki系统。

PikiPiki系统的代码量小,结构简单,但已具有了Wiki系统的基本功能,如在线编辑和全文搜索等。为Wiki系统的实现提供了一个简单而稳定的框架,其提出的以纯文本方式把数据存放在文件系统中的做法一直沿用到现在的MoinMoin系统。

除MoinMoin外,还有几个Wiki项目也是基于它的代码开发的,如MonkeyWiki和DiamondWiki等。现在,PikiPiki系统已停止开发,最后的版本为2000年发布的1.63版。

MoinMoin使用了Python脚本语言开发,是跨平台的,可运行在Linux/UNIX/BSD、Windows和Mac OSX系统上的Wiki系统。项目始于2000年,2000年7月29日发布了第一个以MoinMoin命名的版——MoinMoin 0.1,这个版本的作者是JurgenHermann,他在PikiPiki 1.62版代码的基础上进行开发。

第一版的MoinMoin的功能和PikiPiki是差不多的,只是修正了一些Bug和增强了显示的效果,没有增加新的功能。2002年5月10日,MoinMoin 1.0正式发布,MoinMoin开始完全转向Python 2.0,不再支持Python 1.5,同时该版本还增加了很多新的功能,如附件、Email通知、变量替换和预览等,这些新功能使得用户能够很容易的进行操作。

至此,MoinMoin已完全摆脱了PikiPiki的影子,自成一派。2004年12月6日,MoinMoin 1.3版发布,这是MoinMoin最重要的一次版本更新,以模块化的思路重新设计了内部代码结构,能在不改变核心代码的基础上很方便地通过宏(Macro)、分析器(Parser)、操作(Action)和主题(Theme)来扩展MoinMoin的功能。

使用UTF—8字符集,并作为MoinMoin系统惟一支持的字符集;可以使用高性能的Twisted服务器作为Web服务器以提升服务器的处理能力;支持ACL(访问控制列表)安全设置,这是MoinMoin Wiki开始支持内容管理系统(CMS)的一个重要改进;支持单实例多服务;支持更好的文本搜索引擎。从MoinMoin 1.3版开始,MoinMoin已完全可胜任企业网站和企业知识管理平台等关键应用领域的需求。

现在最新的MoinMoin发行版是1.5.8,支持GUI在线编辑器功能,MoinMoin 2.0版也已在开发当中。从JurgenHermann启动MoinMoin这个项目开始就吸引了大量优秀的Python程序员,他们为MoinMoin项目贡献了高质量的代码和文档,使MoinMoin不断创新,功能不断完善。MoinMoin社区很活跃,在各种大型的开源盛会上都能看到它的身影,如Google Summer Of Code 2006和EuroPython2006等。

如今,MoinMoin已成为互联网上最流行的Wiki系统之一,在http://www.c2.com/cgi/wiki网站评选的十大Wiki Engine排行中高居第一位,而紧随其后的分别是MediaWiki和PhpWiki。

MoinMoin活跃在各个社区

MoinMoin系统的官方网站既搭建在MoinMoin系统之上。用户可以在网站上找到很多有关MoinMoin的资料,包括MoinMoin的安装步骤、MoinMoin的Wiki语法参考和一些常用问题的FAQ等。这些资料都是世界各地的MoinMoin用户通过Internet贡献的。

在这个网站还能下载各种有用的扩展插件,以扩充MoinMoin的功能,如在线回复、在线投票和日历等。如果需要的功能现在MoinMoin还不具备,还可在网站上的FeatureRequests页面提出具体需求,在下一个版本就很有可能包含所提交的功能需求了,MoinMoin系统中的很多功能都是这样开发出来的。

在访问网站时,用户还可以发现MoinMoin系统的很多系统信息都是中文的,这得益于MoinMoin系统的i18n设计和世界各地使用中文用户的贡献,MoinMoin已被翻译成20多种语言。如果想对MoinMoin的中文化做出贡献,可以登录http://moinmaster.wikiwikiweb.de/ 网站,注册一个用户并加入一个语言组后就可以进行翻译。

MoinMoin开发社区充分利用了Wiki系统方便在线交流的特点,使社区与用户的联系更加紧密,更加有效。不仅仅MoinMoin项目采用这种方式,很多开源项目都是采用这种方式与用户沟通,使用户也渗透到软件开发过程中来,使用户与社区共同发展、成长,最终用户又会反馈社区,促进社区的发展状大。

在国内使用MoinMoin Wiki系统的网站还不多,远没有用MediaWiki的多,这主要跟系统的开发语言的流行程序有关。MediaWiki用PHP+MySQ开发,在国内,PHP脚本语言已成为最主要的Web开发语言,做过Web开发的没几个会不知道PHP和MySQL的。

但LAMP黄金组合中的另外一个P——Python,就不是很多人知道。相信随着MoinMoin、Plone、Zope3这些优秀的的Python应用被越来越多的国内用户所接受,MoinMoin将会成为国内Wiki系统的领导者。

国内知名的Python社区啄木鸟社区的网站就是使用MoinMoin来搭建的,该社区依靠MoinMoin强大的在线协作功能,编写和整理了大量有关Python的资料,具有很强的文档搜索和在线编写的功能,是学习MoinMoin和Python的好地方。

MoinMoin是一个成功的、优秀的开源项目,世界各地的志愿者通过国际互联网联系在一起,创造了MoinMoin Wiki系统,创造了MoinMoin开源社区。不论水平高低,贡献大小,只要有时间,有贡献的精神,都可为这个社区出一分力。作为回报,用户也将会得到更强大、更可靠、更安全的系统。

链 接

Wiki拟推新搜索挑战Google

维基百科(Wikipedia)创始人Jimmy Wales表示,他正着手筹备一个由社区协力发展的网络搜索服务,与Google或雅虎等现有的搜索引擎竞争。

开放式搜索有助于Wiki迈向更宏大的目标:促进免费内容在全球信息网上的散布。Wales的目标是促使网络搜寻系统,将其中涉及的编辑判断公开透明化。Google等专属搜索公司一向把自家搜寻系统运作的技术细节视为机密,Google宣称这是为了防止垃圾讯息泛滥,而另一方面也是基于竞争考虑。

2008年3月17日

感谢Dahua: 领略真正的Research

此刻是凌晨三点十六,这是我来新加坡四个月以来熬夜最长的一次。迟迟未能回去睡觉,因为此刻的我很激动,对Research的激动。

昨天我转载了一篇博文“MIT一牛人对数学在机器学习中的作用给的评述”,本想留作参考,后来Zhang Hui同学MSN上发给了我这篇文章的原始出处“学习数学”。从这个MSN Space的链接找到了这篇文章的主人Dahua Lin. 看了他的个人主页Wiki后又找到了他的Publication List。仔细一看,才发现这个家伙在2005、2006两年期间发表了9篇顶级会议的论文,而且多数时候一个会议能同时中好几篇,一下子我被惊呆了。更为关键的一点是他是81年10月出生的,我还比他大一个月呢,他也在MSRA实习过,他也对机器学习深度喜爱,他也同时需要处理很多事情,他也对Research充满了执着和热爱。

怀着好奇,我从晚上7点开始读他的Blog,也不知道一共有多少篇,彻底读完就到现在了。现在感觉非常激动,Dahua就是我在Research上一位“看得见、摸得着”的偶像了。他的经验和心得的确值得我仔细的学习和借鉴。

欢迎大家看看他的Blog: http://dahua.spaces.live.com/

2008年3月16日

zz MIT一牛人对数学在机器学习中的作用给的评述

看完此文,顿觉数学的确是科学根本,其中的很多东西自己都不会啊,真是惭愧。

From: http://zhaotour2006.spaces.live.com/Blog/cns!66F8C60C30A8437C!574.entry

 

感觉数学似乎总是不够的。这些日子为了解决research中的一些问题,又在图书馆捧起了数学的教科书。

从大学到现在,课堂上学的和自学的数学其实不算少了,可是在研究的过程中总是发现需要补充新的数学知识。Learning和Vision都是很多种数学的交汇场。看着不同的理论体系的交汇,对于一个researcher来说,往往是非常exciting的enjoyable的事情。不过,这也代表着要充分了解这个领域并且取得有意义的进展是很艰苦的。

记得在两年前的一次blog里面,提到过和learning有关的数学。今天看来,我对于数学在这个领域的作用有了新的思考。

对于Learning的研究,

Linear Algebra (线性代数) 和 Statistics (统计学) 是最重要和不可缺少的。这代表了Machine Learning中最主流的两大类方法的基础。一种是以研究函数和变换为重点的代数方法,比如Dimension reduction,feature extraction,Kernel等,一种是以研究统计模型和样本分布为重点的统计方法,比如Graphical model, Information theoretical models等。它们侧重虽有不同,但是常常是共同使用的,对于代数方法,往往需要统计上的解释,对于统计模型,其具体计算则需要代数的帮助。

以代数和统计为出发点,继续往深处走,我们会发现需要更多的数学。

Calculus (微积分),只是数学分析体系的基础。其基础性作用不言而喻。Learning研究的大部分问题是在连续的度量空间进行的,无论代数还是统计,在研究优化问题的时候,对一个映射的微分或者梯度的分析总是不可避免。而在统计学中,Marginalization和积分更是密不可分——不过,以解析形式把积分导出来的情况则不多见。

Partial Differential Equation (偏微分方程),这主要用于描述动态过程,或者仿动态过程。这个学科在Vision中用得比Learning多,主要用于描述连续场的运动或者扩散过程。比如Level set, Optical flow都是这方面的典型例子。

Functional Analysis (泛函分析), 通俗地,可以理解为微积分从有限维空间到无限维空间的拓展——当然了,它实际上远不止于此。在这个地方,函数以及其所作用的对象之间存在的对偶关系扮演了非常重要的角色。Learning发展至今,也在向无限维延伸——从研究有限维向量的问题到以无限维的函数为研究对象。Kernel Learning 和 Gaussian Process 是其中典型的例子——其中的核心概念都是Kernel。很多做Learning的人把Kernel简单理解为Kernel trick的运用,这就把kernel的意义严重弱化了。在泛函里面,Kernel (Inner Product) 是建立整个博大的代数体系的根本,从metric, transform到spectrum都根源于此。

Measure Theory (测度理论),这是和实分析关系非常密切的学科。但是测度理论并不限于此。从某种意义上说,Real Analysis可以从Lebesgue Measure(勒贝格测度)推演,不过其实还有很多别的测度体系——概率本身就是一种测度。测度理论对于Learning的意义是根本的,现代统计学整个就是建立在测度理论的基础之上——虽然初级的概率论教科书一般不这样引入。在看一些统计方面的文章的时候,你可能会发现,它们会把统计的公式改用测度来表达,这样做有两个好处:所有的推导和结论不用分别给连续分布和离散分布各自写一遍了,这两种东西都可以用同一的测度形式表达:连续分布的积分基于 Lebesgue测度,离散分布的求和基于计数测度,而且还能推广到那种既不连续又不离散的分布中去(这种东西不是数学家的游戏,而是已经在实用的东西,在Dirchlet Process或者Pitman-Yor Process里面会经常看到)。而且,即使是连续积分,如果不是在欧氏空间进行,而是在更一般的拓扑空间(比如微分流形或者变换群),那么传统的黎曼积分(就是大学一年级在微积分课学的那种)就不work了,你可能需要它们的一些推广,比如Haar Measure或者Lebesgue-Stieltjes积分。

Topology(拓扑学),这是学术中很基础的学科。它一般不直接提供方法,但是它的很多概念和定理是其它数学分支的基石。看很多别的数学的时候,你会经常接触这样一些概念:Open set / Closed set,set basis,Hausdauf,  continuous function,metric space,  Cauchy sequence, neighborhood,  compactness, connectivity。很多这些也许在大学一年级就学习过一些,当时是基于极限的概念获得的。如果,看过拓扑学之后,对这些概念的认识会有根本性的拓展。比如,连续函数,当时是由epison法定义的,就是无论取多小的正数epsilon,都存在xxx,使得xxx。这是需要一种metric去度量距离的,在general topology里面,对于连续函数的定义连坐标和距离都不需要——如果一个映射使得开集的原像是开集,它就是连续的——至于开集是基于集合论定义的,不是通常的开区间的意思。这只是最简单的例子。当然,我们研究learning也许不需要深究这些数学概念背后的公理体系,但是,打破原来定义的概念的局限在很多问题上是必须的——尤其是当你研究的东西它不是在欧氏空间里面的时候——正交矩阵,变换群,流形,概率分布的空间,都属于此。

Differential Manifold (微分流形), 通俗地说它研究的是平滑的曲面。一个直接的印象是它是不是可以用来fitting一个surface什么的——当然这算是一种应用,但是这是非常初步的。本质上说,微分流形研究的是平滑的拓扑结构。一个空间构成微分流形的基本要素是局部平滑:从拓扑学来理解,就是它的任意局部都同胚于欧氏空间,从解析的角度来看,就是相容的局部坐标系统。当然,在全局上,它不要求和欧氏空间同胚。它除了可以用于刻画集合上的平滑曲面外,更重要的意义在于,它可以用于研究很多重要的集合。一个n-维线性空间的全部k-维子空间(k < n)就构成了一个微分流形——著名的Grassman Manifold。所有的标准正交阵也构成一个流形。一个变换群作用于一个空间形成的轨迹(Orbit) 也是通常会形成流形。在流形上,各种的分析方法,比如映射,微分,积分都被移植过来了。前一两年在Learning里面火了好长时间的Manifold Learning其实只是研究了这个分支的其中一个概念的应用: embedding。其实,它还有很多可以发掘的空间。

Lie Group Theory (李群论),一般意义的群论在Learning中被运用的不是很多,群论在Learning中用得较多的是它的一个重要方向Lie group。定义在平滑流行上的群,并且其群运算是平滑的话,那么这就叫李群。因为Learning和编码不同,更多关注的是连续空间,因为Lie group在各种群中对于Learning特别重要。各种子空间,线性变换,非奇异矩阵都基于通常意义的矩阵乘法构成李群。在李群中的映射,变换,度量,划分等等都对于Learning中代数方法的研究有重要指导意义。

Graph Theory(图论),图,由于它在表述各种关系的强大能力以及优雅的理论,高效的算法,越来越受到Learning领域的欢迎。经典图论,在Learning中的一个最重要应用就是graphical models了,它被成功运用于分析统计网络的结构和规划统计推断的流程。Graphical model所取得的成功,图论可谓功不可没。在Vision里面,maxflow (graphcut)算法在图像分割,Stereo还有各种能量优化中也广受应用。另外一个重要的图论分支就是Algebraic graph theory (代数图论),主要运用于图的谱分析,著名的应用包括Normalized Cut和Spectral Clustering。近年来在semi-supervised learning中受到特别关注。

2008年3月12日

创业其实不难:看看前Google员工卖掉Google股票自己创业的情况

link: http://feed.yeeyan.com/articles/view/pestwave/5463

办公室里有免费美食、现场医疗和洗衣机,企业文化也很酷:熔岩灯、宠物和乒乓球台,这一切都让Google成为一个令人向往的公司。但是随着Google从一家小型的创业公司转变成一家大公司,不断收购其他小型科技公司,不断在全球扩张,一些思想独立的员工已经开始辞职单干。

丹·多赫提大约是Google的第300名员工,他2002年来到加利福尼亚州山景城(Mountain View)的Google大厦(Googleplex,Google总部),负责AdWords业务。但是很快他就去了科罗拉多州,他在那里启动了丹佛销售运营处。他在那里和《财富》500的客户一起工作,并开始兼职投资房地产项目。

他在出租房产时发现他不得不在很多网站上登记才能得到他想要的信息。28岁的多赫提和他的两个合伙人达利乌斯·拉科维奇和丽莎·雷花了大约六个月的时间来解决这个难题。2005年他离开了Google。2006年他们的公司Rent Marketer上市,资金来自于多赫提的部分Google股票。

套现

据估计Google在2004年8月首次公开募股(IPO)时,2300名员工当中最少有900人瞬间成为百万富翁。很多股东拿着每股价值85美元(相对现在的700美元一股要便宜得多了)的Google股票去创业。

丹·恩格尔曾担任Picasa的市场开发部副总裁。当Google2004年收购Picasa时,他成为Google的第2000名员工。他在加州的圣巴巴拉工作,负责AdSense 和 AdWords的在线广告业务。

恩格尔从来不想为大公司工作,四个月之后他就离开了Google,但是他当时还不敢肯定手头是否有足够的Google股票用于创业。

31岁的恩格尔当时已经是Morpheus Software公司的CEO了,这是一家数码动画软件公司。但是,拥有十名员工和事实上“自行运转”的公司的恩格尔打算创办一家新的公司。2005年,恩格尔和肯·怀特,莱恩·杜维尔以及另外一名合伙人成立了FastSpring公司,这是一家电子商务搜索引擎公司,旨在整合在线购物服务,尤其是数码产品。这家公司现在拥有10名员工和大约50个客户。

恩格尔说在Google工作最大的收获就是“Google让人专注,”尽管他也承认他从Google学到了B2B营销知识。他还把他在AdSense 和 AdWords工作时积累的经验充分利用到了另外一家公司CPC Search。这家公司是他和另外一个合伙人在2004年成立的,该公司从事搜索营销业务

虽然恩格尔同时担任三家公司的CEO看上去有点贪多,但是他能统一协调这三家位于圣巴巴拉的公司,并且他把精力集中在FastSpring上,因为他相信这家公司的增长速度最快。恩格尔说他的公司每年一共能带来不到2000万的收入,而且这个创业狂(serial entrepreneur)不排除创建更多新公司的可能。恩格尔说:“我是一个机会主义者,我不会在一个地方停留太久。”

科技之外

并不是所有离开Google的人都成立了科技公司或者网络公司。Google第一厨师兼第56号员工查理·埃尔斯曾是创建Google文化的重要人物,他的美食让Google员工早出晚归。

在Google上市一年以前,埃尔斯就开始集中精力为一个新的餐馆想法制定商业计划了,这个想法是在他看到低效的餐饮市场并且寻找解决办法时想到的。他想给顾客提供快捷、卫生的当地食物,并建立一个桌面无线网络(Wi-Fi)订单系统,其中包括一个高效的信用卡刷卡机。

40岁的埃尔斯在2005年5月离开了Google,他已经在山景城附近开了10家餐馆,并且他利用17万美元的Google股票和几百万私人投资在加州的帕洛阿尔托成立了一家叫做Calafia Café & Market a Go Go的餐馆,将于今年夏天开业。他还将在四月出版一本烹调方面的书《Food2.0》。

作为一个受欢迎的企业文化顾问,埃尔斯还利用他在Google学到的保持员工快乐的经验帮助其他的硅谷初创公司,比如Ning和LinkedIn等。埃尔斯说:“如果你想提高工作效率和员工士气,吃的方面大有文章可做。”

2006年埃尔斯的咨询业务带来了大约10万美元收入。2007年他把精力放在他的写作和启动Calafia餐馆上面,并且对2008充满了希望。一旦这家餐馆站稳了脚,他将在湾区开办另外五家分店,然后在全国范围内拓展业务。

从Google学到的经验

多赫提的Rent Marketer公司总部位于丹佛,现在有15名员工。全美约有10000名房产经理使用该公司的租房列表发送服务,每处房产每个月收取40到90美元的服务费。

受以前在Google工作的启发,多赫提努力把他学到的知识应用到自己的公司里。他尽可能将每一条数据量化;他迫使自己和员工打破常规;他尽可能雇佣最优秀的人或者跟他们合伙;他甚至提供一些额外津贴,比如每隔两周请按摩师上门服务。但是他从Google学到的最重要的一课就是要集中精力。他说:“关注一件事情并且把它做到最好。”

zz 注重实效的程序员(The Pragmatic Programmer)

link: http://dev.csdn.net/article/65/65511.shtm

注重实效的程序员(The Pragmatic Programmer)
推荐一本好书 《The Pragmatic Programmer - From journeyman to master》

1、关心你的技艺
Care About Your Craft
除非你在乎能否漂亮地开发出软件,否则其它事情都是没有意义的。

2、思考!你的工作
Think!About Your Work
在你做某件事情的时候思考你在做什么。不间断地思考,实时地批判你的工作。这将占据你的一些宝贵时间,酬劳则是更为活跃地参与你喜爱的工作、感觉到自己在掌握范围日增的各种主题以及因感受到持续的进步而欢愉。从长远来说,你在时间上的投入将会随着你和你的团队变得更为高效、编写出更易于维护的代码以及开会时间的减少而得到回报。

3、提供各种选择,不要找蹩脚的借口
Provide Options,Don't Make Lame Excuses
不要说事情做不到;要说明能够做什么来挽回局面。不要害怕提出要求,也不要害怕承认你需要帮助。

4、不要容忍破窗户
Don't Live With Broken Windows
不要留着“破窗户”(低劣的设计、错误的决策、或者糟糕的代码)不修。发现一个就修一个。如果没有足够的时间进行适当的修理,采取某种行动防止进一步的破坏,并说明情势处在你的控制之下。
如果你发现你所在团队和项目的代码十分漂亮——编写整洁、设计良好,并且很优雅,你不会想成为第一个弄脏东西的人。

5、做变化的催化剂
Be a Catalyst for Change
你不能强迫人们改变。相反,要向他们展示未来可能会怎样,并帮助他们参与对未来的创造。
设计出你可以合理要求的东西,好好开发它。一旦完成,就拿给大家看,让他们大吃一惊。然后说:“要是我们增加...可能就会更好。”假装那并不重要。坐回椅子上,等着他们开始要你增加你本来就想要的功能。人们发现,参与正在发生的成功要更容易。让他们瞥见未来,你就能让他们聚集在你周围。

6、记住大图景
Remember the Big Picture
如果你抓一只青蛙放进沸水里,它会一下子跳出来。但是,如果你把青蛙放进冷水里,然后慢慢加热,青蛙不会注意到温度的缓慢变化,会呆在锅里,直到被煮熟。
不要像青蛙一样。留心大图景。要持续不断地观察周围发生的事情,而不只是你自己在做的事情。

7、使质量成为需求问题
Make Quality a Requirements Issue
你所制作的系统的范围和质量应该作为系统需求的一部分规定下来。让你的用户参与权衡,知道何时止步,提供足够好的软件。

8、定期为你的知识资产投资
Invest Regularly in Your Knowledge Portfolio

让学习成为习惯。
持续投入十分重要。一旦你熟悉了某种新语言或新技术,继续前进,学习另一种。
是否在某个项目中使用这些技术,或者是否把它们放入你的简历,这并不重要。学习的过程将扩展你的思维,使你向着新的可能性和新的做事方式拓展。思维的“异花授粉”十分重要;设法把你学到的东西应用到你当前的项目中。即使你的项目没有使用该技术,你或许也能借鉴一些想法。例如,熟悉了面向对象,你就会用不同的方式编写纯C程序。
如果你自己找不到答案,就去找出能找到答案的人。不要把问题搁在那里。

9、批判地分析你读到的和听到的
Critically Analyze What You Read and Hear
不要被供应商、媒体炒作、或教条左右。要依照你自己的看法和你的项目的情况去对信息进行分析。

10、你说什么和你怎么说同样重要
It's Both What You Say and the Way You Say It

作为开发者,我们必须在许多层面上进行交流。我们的时间有很大部分都花在交流上,所以我们需要把它做好。
如果你不能有效地向他人传达你的了不起的想法,这些想法就毫无用处。
知道你想要说什么;了解你的听众;选择时机;选择风格;让文档美观;让听众参与;做倾听者;回复他人。
交流越有效,你就越有影响力。

11、DRY原则——不要重复你自己
DRY - Don't Repeat Yourself
系统中的每一项知识都必须具有单一、无歧义、权威的表示。与此不同的做法是在两个或更多地方表达同一事物。如果你改变其中一处,你必须记得改变其它各处。这不是你能否记住的问题,而是你何时忘记的问题。

12、让复用变得容易
Make it Easy to Reuse
你要做的是营造一种环境,在其中要找到并复用已有的东西,比自己编写更容易。如果复用很容易,人们就会去复用。而如果不复用,你们就会有重复知识的风险。

13、消除无关事物之间的影响
Eliminate Effects Between Unrelated Things
我们想要设计自足(self-contained)的组件:独立,具有单一、良好定义的目的。如果组件是相互隔离的,你就知道你能够改变其中一个,而不用担心其余组件。只要你不改变组件的外部接口,你就可以放心:你不会造成波及整个系统的问题。
你得到两个主要好处:提高生产率与降低风险。

14、不存在最终决策
There Are No Final Decisions
没有什么永远不变——而如果你严重依赖某一事实,你几乎可以确定它将会变化。与我们开发软件的速度相比,需求、用以及硬件变得更快。通过DRY原则、解耦以及元数据的使用,我们不必做出许多关键的、不可逆转的决策。有许多人会设法保持代码的灵活性,而你还需要考虑维持架、部署及供应商集成等领域的灵活性。

15、用曳光弹找到目标
Use Tracer Bullets to Find the Target
曳光弹能通过试验各种事物并检查它们离目标有多远来让你追踪目标。
曳光弹代码含有任何一段产品代码都拥有的完整的错误检查、结构、文档、以及自查。它只不过功能不全而已。但是,一旦你在系统的各组件之间实现了端到端(end-to-end)的连接,你就可以检查你离目标还有多远,并在必要的情况下进行调整。一旦你完全瞄准,增加功能将是一件容易的事情。

16、为了学习而制作原型
Prototype to Learn
任何带有风险的事物。以前没有试过的事物,或是对于最终系统极其关键的事物。任何未被证明的、试验性的、或有疑问的事物。任何让你觉得不舒服的东西。都可以通过制作原型来研究。比如:架构;已有系统中的新功能;外部数据的结构或内容;第三方工具或组件;性能问题;用户界面设计等等。
原型制作是一种学习经验,其价值并不在于所产生的代码,而在于所学到的经验教训。

17、靠近问题领域编程
Program Close to The Problem domain
计算机语言会影响你思考问题的方式,以及你看待交流的方式。用你的用户的语言进行设计和编码。

18、估算,以避免发生意外
Estimate to Avoid Surprises
在着手之前先进行估算。你将提前发现潜在的问题。
1)要选择能反映你想要传达的精确度的单位;
2)基本的估算诀窍:去问已经做过这件事情的人;
3)理解提问内容;
4)根据对问题的理解,建立粗略、就绪的思维模型骨架;
5)把模型分解为组件,找出描述这些组件怎样交互的数学规则,确定每个组件的参数;
6)给每个参数指定值,找出哪些参数对结果的影响最大,并致力于让它们大致正确;
7)进行多次计算,改变关键参数的值,然后根据那些参数表达你的答案;
8)在被要求进行估算时说的话:“我等会回答你”。

19、通过代码对进度表进行迭代
Iterate the Schedule with the Code
实行增量开发。追踪你的估算能力,提炼对迭代次数、以及在每次迭代中可以包含的内容的猜想。提炼会变得一次比一次好,对进度表的信心也将随之增长。你将给予管理部门你所能给予的最精确的进度估算。

20、用纯文本保存知识
Keep Knowledge in Plain Text

保证不过时;
杠杆作用:每一样工具,都能够在纯文本上进行操作;
更易于测试;
你需要确保所有各方能够使用公共标准进行通信。纯文本就是那个标准。

21、利用命令shell的力量
Use the Power of Command Shells
GUI环境通常受限于它们的设计者想要提供的能力。当你想要快速地组合一些命令,以完成一次查询或某种其他的任务时,命令行要更为适宜。多使用你的命令shell,你会惊讶它能使你的生产率得到怎样的提高。

22、用好一种编辑器
Use a Single Editor Well
选一种编辑器,彻底了解它,并将其用于所有的编辑任务。如果你用一种编辑器进行所有的文本编辑活动,你就不必停下来思考怎样完成文本操纵:必需的键击将成为本能反应。编辑器将成为你双手的延伸;键会在滑过文本和思想时歌唱起来。这就是我们的目标。

23、总是使用源码控制
Always Use Source Code Control

总是。即使你的团队只有你一个人,你的项目只有一周时间;确保每样东西都处在源码控制之下。
源码控制是你的工作的时间机器——你能够回到过去。
把整个项目置于源码控制系统的保护之下具有一项很大的、隐蔽的好处:你可以进行自动的和可重复的产品构建。

24、要修正问题,而不是发出指责
Fix the Problem,Not the Blame
要接受事实:调试就是解决问题,要据此发起进攻。Bug是你的过错还是别人的过错,并不是真的很有关系。它仍然是你的问题。

25、不要恐慌
Don't Panic
做一次深呼吸,思考什么可能是bug的原因。

要总是设法找出问题的根源,而不只是问题的特定表现;
搜集所有的相关数据;
开始修正bug的最佳途径是让其可再现;
使你的数据可视化;
跟踪:观察程序或数据结构虽时间变化的状态;
找到问题的原因的一种非常简单、却又特别有用的技术是向别人解释它。你只是一步步解释代码要做什么,常常就能让问题从屏幕上跳出来,宣布自己的存在。

26、“Select”没有问题
"Select" Isn't Broken
Bug有可能存在于OS、编译器、或是第三方产品中——但这不应该是你的第一想法。有大得多的可能性的是,bug存在于正在开发的应用代码中。与假定库本身出了问题相比,假定应用代码对库的调用不正确通常更有好处。即使问题确实应归于第三方,在提交bug报告之前,你也必须先消除你的代码中的bug。

27、不要假定,要证明
Don't Assume it - Prove It
不要因为你“知道”它能工作而轻易放过与bug有牵连的例程或代码。证明它。在实际环境中——使用真正的数据和边界条件——证明你的假定。

28、学习一种文本操作语言
Learn a Text Manipulation Language
你用每天的很大一部分时间处理文本,为什么不让计算机替你完成部分工作呢?
应用示例:

数据库schema维护;
Java、C#属性(Property)访问;
测试数据生成。

29、编写能编写代码的代码
Write Code That Writes Code
代码生成器能提高你的生产率,并有助于避免重复。

30、你不可能写出完美的软件
You Can't Write Perfect Software
这刺痛了你?不应该。把它视为生活的公理,接受它,拥抱它,庆祝它。因为完美的软件不存在。在计算机简短的历史中,没有一个人曾经写出过一个完美的软件。你也不大可能成为第一个。除非你把这作为事实接受下来,否则你最终会把时间和精力浪费在追逐不可能实现的梦想上。

31、通过合约进行设计
Design with Contracts
什么是正确的程序?不多不少,做它声明要做的事情的程序。用文档记载这样的声明,并进行校验,是按合约设计(简称DBC)的核心所在。
这里,强调的重点是在“懒惰”的代码上:对在开始之前接受的东西要严格,而允诺返回的东西要尽可能少。
使用DBC的最大好处也许是它迫使需求与保证的问题走到前台来。在设计时简单地列举输入域的范围是什么、边界条件是什么、例程允诺交付什么——或者,更重要的,它不允诺交付什么——是向着编写更好的软件的一次飞跃。不对这些事项作出陈述,你就回到了靠巧合编程,那是许多项目开始、结束、失败的地方。

32、早崩溃
Crash Early
死程序不说谎。
当你的代码发现,某件被认为不可能发生的事情已经发生时,你的程序就不再有存活能力。从此时开始,它所做的任何事情都会变得可疑,所以要尽快终止它。死程序带来的危害通常比有问题的程序要小得多。

33、如果它不可能发生,用断言确保它不会发生
If It Can't Happen,Use Assertions to Ensure That It Won't
断言验证你的各种假定。在一个不确定的世界里,用断言保护你的代码。
不要用断言代替真正的错误处理。断言检查的是决不应该发生的事情。

34、将异常用于异常的问题
Use Exceptions for Exceptional Problems
异常表示即使的、非局部的控制转移——这是一种级联的(cascading)goto。异常应保留给意外事件。那些把异常用作其正常处理的一部分的程序,将遭受所有可读性和可维护性问题的折磨。这些程序破坏了封装:通过异常处理,例程和它们的调用者被更紧密地耦合在一起。

35、要有始有终
Finish What You Start
只要可能,分配某资源的例程或对象也应该负责解除其分配。

36、使模块之间的耦合减至最少
Minimize Coupling Between Modules

编写“羞怯”的代码;
函数的得墨忒耳(Demeter)法则规定,某个对象的任何方法都应该只调用属于以下情形的方法:
1)它自身;
2)传入该方法的任何参数;
3)它创建的任何对象;
4)任何直接持有的组件对象。
物理解耦。

37、要配置,不要集成
Configure,Don't Integrate
细节会弄乱我们整洁的代码——特别是如果它们经常变化。把它们赶出代码。当我们在于它作斗争时,我们可以让我们的代码变得高度可配置和“软和”——也就是,容易适应变化。
要用元数据(metadata)描述应用的配置选项:调谐参数、用户偏好(user preference)、安装目录,等等。

38、将抽象放进代码,细节放进元数据
Put Abstractions in Code,Details in Metadata
但我们不只是想把元数据用于简单的偏好。我们想要尽可能多地通过元数据配置和驱动应用。我们的目标是以声明方式思考(规定要做什么,而不是怎么做),并创建高度灵活和可适应的应用。我们通过采用一条一般准则来做到这一点:为一般情况编写程序,把具体情况放在别处——在编译的代码库之外。
也许你在编写一个具有可怕的工作流需求的系统。动作会根据复杂的(和变化的)商业规则启动和停止。考虑在某种基于规则的系统(即专家系统)中对它们进行编码,并嵌入到你的应用中。这样,你将通过编写规则、而不是修改代码来配置它。

39、分析工作流,以改善并发性
Analyze Workflow to Improve Concurrency
时间是软件架构的一个常常被忽视的方面。时间有两个方面对我们很重要:并发(事情在同一时间发生)和次序(事情在时间中的相对位置)。
我们在编写程序时,通常并没有把这两个方面放在心上。当人们最初坐下来开始设计架构,或是编写代码时,事情往往是线性的。那是大多数人的思考方式——总是先做这个,然后再做那个。但这样思考会带来时间耦合:方法A必须总是在方法B之前调用;同时只能运行一个报告;在接收到按钮点击之前,你必须等待屏幕重画。“嘀”必须在“嗒”之前发生。
这样的方法不那么灵活,也不那么符合实际。
我们需要容许并发,并考虑解除任何时间或者次序上的依赖。

40、用服务进行设计
Design Using Services
实际上我们创建的并不是组件,而是服务——位于定义良好的、一致的接口之后的独立、并发的对象。
通过把你的系统架构成多个独立的服务,你可以让配置成为动态的。

41、总是为并发进行设计
Always Design for Concurrency
首先,必须对任何全局或静态变量加以保护,使其免于并发访问,现在也许是问问你自己、你最初为何需要全局变量的好时候。此外,不管调用的次序是什么,你都需要确保你给出的是一致的状态信息。
在被调用时,对象必须总是处在有效的状态中,而且它们可能会在最尴尬的时候被调用。你必须确保,在任何可能被调用的时刻,对象都处在有效的状态中。这一问题常常出现在构造器与初始化例程分开定义的类中(构造器没有使对象进入已初始化状态)。
一旦你设计了具有并发要素的架构,你可以灵活地处理应用的部署方式:单机、客户-服务器、或是n层。

42、使视图与模型分离
Separate Views from Models
也就是常说的MVC模式(Model-View-Controller)。

模型。表示目标对象的抽象数据模型。模型对任何视图或控制器都没有直接的了解。
视图。解释模型的方式。它订阅模型中的变化和来自控制器的逻辑事件。
控制器。控制视图、并向模型提供新数据的途径。
通过松解模型与视图/控制器之间的耦合,你用低廉的代价为自己换来了许多灵活性。

43、用黑板协调工作流
Use Blackboards to Coordinate Workflow
用黑板协调完全不同的事实和因素,同时又使各参与方保持独立和隔离。
现代的分布式类黑板(blackboard-like)系统,比如JavaSpaces和T Spaces。

44、不要靠巧合编程
Don't Program by Coincidence

总是意识到你在做什么。
不要盲目地编程。试图构建你不完全理解的应用,或是使用你不熟悉的技术,就是希望自己被巧合误导。
按照计划行事。
依靠可靠的事物。如果你无法说出各种特定情形的区别,就假定是最坏的。
为你的假定建立文档。“按合约编程”有助于澄清你头脑中的假定,并且有助于把它们传达给别人。
不要只是测试你的代码,还要测试你的假定。
为你的工作划分优先级。
不要做历史的努力。不要让已有的代码支配将来的代码。
所以下次有什么东西看起来能工作,而你却不知道为什么,要确定它不是巧合。

45、估算你的算法的阶
Estimate the Order of Your Algorithms
在你编写代码之前,先大致估算事情需要多长时间。

46、测试你的估算
Test Your Estimates
对算法的数学分析并不会告诉你每一件事情。在你的代码的目标环境中测定它的速度。

47、早重构,常重构
Refactor Early,Refactor Often
在需要时对代码进行重写、重做和重新架构。要铲除问题的根源。不要容忍破窗户。
关于重构,详见Martin Fowler的《重构》一书。

48、为测试而设计
Design to Test
在你还没有编写代码时就开始思考测试问题。测试驱动开发?

49、测试你的软件,否则你的用户就得测试
Test Your Software,or Your Users Will
测试是技术,但更是文化。一点预先的准备可以大大降低维护费用、减少客户服务电话。

50、不要使用你不理解的向导代码
Don't Use Wizard Code You Don't Understand
向导很了不起。只需要点击一个按钮,回答一些简单的问题,向导就会自动为你生成骨架代码(skeleton code)。但如果你使用向导,却不理解它制作出的所有代码,你就无法控制你自己的应用。你没有能力维护它,而且在调试时会遇到很大的困难。

51、不要搜集需求——挖掘它们
Don't Gather Requirements - Dig for Them
需求很少存在于表面上。它们深深地埋藏在层层假定、误解和政治手段的下面。

52、与用户一同工作,以像用户一样思考
Work with a User to Think Like a User
要了解系统实际上将如何被使用,这是最好的方法。开采需求的过程也是开始与用户群建立和谐的关系、了解他们对你正在构建的系统的期许和希望的时候。

53、抽象比细节活得更长久
Abstractions Live Longer than Details
“投资”于抽象,而不是实现。抽象能在来自不同的实现和新技术的变化的“攻击”之下存活下去。

54、使用项目词汇表
Use a Project Glossary
如果用户和开发者用不同的名称指称同一事物,或是更糟,用同一名称指称不同事物,这样的项目很难取得成功。

55、不要在盒子外面思考——要找到盒子
Don't Think Outside the Box - Find the Box
在遇到不可能解决的问题时,问问自己以下问题:

有更容易的方法吗?
你是在设法解决真正的问题,还是被外围的技术问题转移了注意力?
这件事情为什么是一个问题?
是什么使它如此难以解决?
它必须以这种方式完成吗?
它真的必须完成吗?
很多时候,当你设法回答这些问题时,你会有让自己吃惊的发现。很多时候,对需求的重新诠释能让整个问题全部消失。
你所需要的只是真正的约束、令人误解的约束、还有区分它们的智慧。

56、倾听反复出现的疑虑——等你准备好再开始
Listen to Nagging Doubts - Start When You're Ready
你的一生都在积累经验与智慧。当你面对一件任务时,如果你反复感觉到疑虑,或是体验到某种勉强,要注意它。你可能无法准确地指出问题所在,但给它时间,你的疑虑很可能就会结晶成某种更坚实的东西,某种你可以处理的东西。软件开发仍然不是科学。让你的直觉为你的表演做出贡献。

57、对有些事情“做”胜于“描述”
Some Things Are Better Done Than Described
你应该倾向于把需求搜集、设计、以及实现视为同一个过程——交付高质量的系统——的不同方面。不要掉进规范的螺旋,在某个时刻,你需要开始编码。

58、不要做形式方法的奴隶
Don't Be a Slave to Formal Methods
如果你没有把某项技术放进你的开发实践和能力的语境中,不要盲目地采用它。

59、昂贵的工具不一定能制作出更好的设计
Expensive Tools Do Not Produce Better Designs
小心供应商的炒作、行业教条、以及价格标签的诱惑。在考察工具的产出时,试着不要考虑它值多少钱。

60、围绕功能、而不是工作职务进行组织
Organize Around Functionality,Not Job Functions
把你的人划分成小团队,分别负责最终系统的特定方面的功能。让团队按照个人的能力,在内部自行进行组织。
但是,只有在项目拥有负责的开发者、以及强有力的项目管理时,这种途径才有效。创立一组自行其是的团队并放任自流,是一种灾难性的处方。
要记住,团队是由个体组成的。让每个成员都能以他们自己的方式闪亮。

61、不要使用手工流程
Don't Use Manual Procedures
shell脚本或批处理文件会一次次地以同一顺序执行同样的指令。我们可以自动安排备份、夜间构建、网站维护、以及其他任何可以无人照管地完成的事情。让计算机去做重复、庸常的事情——它会做得比我们更好。我们有更重要、更困难的事情要做。

62、早测试,常测试,自动测试。
Test Early.Test Often.Test Automatically.
与呆在书架上的测试计划相比,每次构建时运行的测试要有效得多。

63、要等到通过全部测试,编码才算完成
Coding Ain't Done 'Til All the Tests Run
就是这样。

64、通过“蓄意破坏”测试你的测试
Use Saboteurs to Test Your Testing
在单独的软件副本上故意引人bug,以检验测试能够抓住它们。

65、测试状态覆盖,而不是代码覆盖
Test State Coverage,Not Code Coverage
确定并测试重要的程序状态。只是测试代码行是不够的。即时具有良好的代码覆盖,你用于测试的数据仍然会有巨大的影响,而且,更为重要的是,你遍历代码的次序的影响可能是最大的。

66、一个bug只抓一次
Find Bugs Once
一旦测试员找到一个bug,这应该是测试员最后一次找到它。此后自动测试应该对其进行检查。

67、把英语当作又一种编程语言
Treat English as Just Another Programming Language
像你编写代码一样编写文档:遵守DRY原则、使用元数据、MVC、自动生成,等等。

68、把文档建在里面,不要拴在外面
Build Documentation In,Don't Bolt It On
与代码分离的文档不太可能被修正和更新。使用像JavaDoc和NDoc这样的工具,我们可以根据源码生成API级的文档。
文档和代码是同一底层模型的不同视图,但视图是唯一应该不同的东西。

69、温和地超出用户的期望
Gently Exceed Your Users' Expectations
要设法让你的用户惊讶。请注意,不是惊吓他们,而是要让他们高兴。要理解用户的期望,然后给他们的东西要多那么一点。给系统增加某种面向用户的特性所需的一点额外努力将一次又一次在商誉上带来回报。

70、在你的作品上签名
Sign Your Work
我们想要看到对所有权的自豪。“这是我编写的,我对自己的工作负责。”你的签名应该被视为质量的保证。当人们在一段代码上看到你的名字时,应该期望它是可靠的、用心编写的、测试过的和有文档的,一个真正的专业作品,由真正的专业人员编写。
一个注重实效的程序员。

2008年3月9日

升级工具集

        今天准备用Eclipse再写一点Python程序,仔细一看,Python相关的一些工具又有新的版本了。

        2008年2月21日:Python的稳定版本升级到2.5.2了,据说解决了了2.5.1超过100个Bug。现在Python官网上有了2.6a1的Unstable版本,以及3.0a3的版本。我现在是选定2.5.2了,真搞不懂为什么2.5都final了,怎么还要同时弄2.6和3.0。

        2008年3月4日:NLTK对应升级到了NLTK-Lite 0.9.2,据说增加了定理证明器Prover9/Mace4 的接口,加入了VerbNet和PropBank两种语料库的读取接口,修订了路透社语料读取接口的一个Bug,增强了对WordNet的浏览功能。升级NLTK的同时也得知Numpy升级到了1.0.4,Matplotlib升级到了0.91.2。感觉NLTK的不断升级才是NLP Tools不断发展的理想轨迹。

        2008年3月7日:Eclipse下开发Python的插件PyDev升级到1.3.14。哈哈,今天是3月9日,这个东东才出来两天啊,应该算是尝鲜了吧。据说除了解决掉一些Bug外,还增加了远程调试器配置功能,还通过Psyco来加速Pydev。最后这个功能相当重要啊。

        加上自己刚更新Eclipse到最新稳定版3.3,Java更新到1.6.05,可以说我现在的常用工具库都是最新的了。

        另外,昨天了解了一下Jython和JPype,发觉JPype更加适合我已经较为熟悉的Python.

         工欲善其事,必先利其器。有了最先进的武器,更重要的还是要集中精力完成重要的有意义的事情。那就开始在最新版的Freemind 0.9.0_Beta_16的伴随下开始做点正事吧 :)

zz 数码摄影10大技巧

Link:
http://feed.yeeyan.com/articles/view/15738/5363
你以前一定听过这种话:数码相机(以下用DC)无所不能。你只要按下按钮,一张伟大的照片就会变魔术般展现在你面前。相机越好,照出来的照片越好。果真如此吗?见鬼,当然不是了!
事实是你可以用一个简单的消费级傻瓜DC拍出一张伟大的照片,也可以用最贵的DC拍出一张垃圾照片。漂亮的照片不是相机搞出来的,而是摄影师搞出来的。只要有一些拍摄方面的知识,再加上不断改进的愿望,你可以用你的小DC拍出能登上时代周刊的大照片
为了帮助你在成为伟大摄影师的道路上快步前行,这里送给你10个技巧,它们会让你即使不花大价钱买昂贵的设备也能像专业人士一样拍照。

1.暖化你的照片
你注意过有些时候你拍的照片有一种冷冷的感觉吗?如果答案是肯定的,那你并不是孤独呵呵。DC的默认白平衡设置是“自动(auto)”,虽然在大部分情况下都是适用的,但有时候却会让景物太“冷”了。
当你拍户外景物的时候,特别是当阳光充足时,试着把你的白平衡调到“多云(cloudy)”那一档。对,就是“多云”那一档,这个变化跟在你的镜头前加一个暖色滤镜的效果是一样的。它使得照片中红色和黄色的更加丰满,从而暖化了这张照片

图1a
图1a 是在一个山区拍摄的,白平衡设置在“自动(auto)”

图1b
图1b 同一个场景,我把白平衡换成了“多云(cloudy)”,同时把一副Costa Del Mar太阳镜放在了镜头前(佳能PowerShot S200,程序模式program mode)
如果你不相信我,那就试试吧。在户外分别用自动白平衡和多云白平衡拍两组照片,然后在你的电脑上对比着看,我猜你一定会喜欢看上去暖洋洋的那一组的

2.用太阳镜做偏振镜
如果你真的想让你的照片有冲击力,那就随手带一个偏振镜吧。偏振镜是每个摄影师都必备的滤镜,它可以过滤掉眩光和那些意外的反射光,让你的照片的更加富有饱和度,特别是对天空最有效果
你说什麽?你的DC不能加滤镜。别失望,我有个绝招,在我的傻瓜DC上使用多年了。如果你有一副质量还过得去的太阳镜的话,只要把它摘下来放在你的镜头前就OK啦,这就是你的偏振镜哈哈。当然要让他们尽量靠近你DC的镜头,别这块儿挡住那块儿没挡住的。

图2a
图2a 正常拍摄,没有使用任何滤镜。

图2b
图2b 同样情况下拍摄,但我把我的太阳镜当作滤镜挡在了镜头前,注意到被增强的颜色和更加湛蓝的天空了吗?呵呵。(佳能PowerShot S200,程序模式program mode)
要想获得最好的效果,就让你的任意一个肩膀对准太阳,极化(polarizing)的效果在光源同被拍摄物呈90度角的时候是最好的。

3.户外人像的闪亮风采
数码相机没有被发现的特性之一就是强制闪光模式(fill flash or flash on)。通过手动控制闪光灯,而不是让DC自己决定什么时候该闪什么时候不该闪,你就在创造出伟大的户外人像照片的道路上迈进了关键的一步。
在强制闪光模式下,相机首先对背景曝光,接着会恰到好处的照亮你要拍的人物(这句话有点儿别扭)。结果是一个看上去很专业的照片,每样东西都看上去那么舒服。其实婚礼摄影师一直在用这个技巧(以前还奇怪他们为啥大白天的用闪光灯)。

图3
图3. 这两个小男孩在树荫底下,我打开强制闪光模式,照片上的每一样东西都得到了正确的曝光。(佳能PowerShot G2,1/250, f4,flash on)
当你使用这个技巧时,你可以让你的模特站在不同的光路上,比如测光,甚至逆光,你会拍到那种头发边缘闪闪发光的照片,而且这样你的模特就不必为太阳光的耀眼而眯缝眼睛了,当然他们看上去也就更自然。
记住,大多数相机内建的闪光灯只有10英尺(3.05米)甚至更短,所以你千万别站得离你的模特太远

4.令人疯狂微距模式
还记得你小时候在你脚下的草丛中发现了一个崭新世界时的情形吗?当你靠近地面,你看到了你从没看到过的一个庞大的生物世界。
现如今,你可能不想再那样把你腐败的肚子贴到你家后院的草皮上了,但是如果你打开微距模式(close up),开始更加细致地探索那个微观世界,你会得到巨大的回报,那就是你从没拍摄到的崭新的内容。
即使是最简单的物体,在微距模式下也会展现出迷人的新面容。最美妙的是,DC是最擅长干这个的了。

图4
图4 近距离观察时会觉得看上去很特别,或者很迷人。(佳能PowerShot G2,程序曝光programmed exposure, 点测光spot meter,微距模式Close up mode,闪光灯关闭flash off)
找到微距模式的按钮,它常常是一朵小花的样子,按下去打开微距模式,然后在相机允许的范围内尽量靠近你想拍摄的东西,一旦你构好图了,半按快门让相机对焦,对焦完毕之后,按下快门拍照。
记住在微距模式下,你将获得很浅的景深(就是那种背景虚化很厉害的效果),所以把焦距调到你要拍摄的物体身上是很重要的。
(译者补充:微距模式对焦距是有要求的,一般大变焦的相机在长焦端微距模式失效,大家注意)

5.总是很受伤的水平线
由于一些神秘的原因,绝大多数的人类在拿着他们带有LCD的DC拍摄时,无法把相机端平,造成的结果就是歪斜的日落,倒向一边的地平线和随处可见的比萨斜塔。
一部分的原因是,相机的镜头在LCD上成像时会产生畸变,你看上去竖直挺拔的大树,在镜头中会呈现向内弯曲的样子。

图5
图5 如何能让在LCD上看上去水平的图像在你的电脑上也看上去水平呢?找到那些天然的水平线当你的参照吧。有时你可以用天水相接的地方,剩下的时候你可以用地平线。在这张照片中我是使用湖岸来帮助我构图的。(佳能PowerShot G2, 光圈优先,f8,偏振镜)
你该怎么办呢?首先记住没有一劳永逸或者到处适用的方法,但是你可以通过记住一些诀窍来得到提高。
首先,要意识到把该是水平的尽量拍水平了是一件很重要的事情。如果你在构图上有麻烦,试着保持你的相机水平,然后轻轻地水平旋转一个细微的角度再拍一张,当然你可以再拍几张,然后把这几张对比一下,也许会有一张是让你感觉正确的。
如果你经常练习拍出水平照片的技术,慢慢地这就会变成一种习惯,然后你会发现你的风景照上了一个档次。

6.MMC卡
购买足够大的存储卡,这样你就不会因为卡满了而错过好照片了。
(译者注:现在的存储卡那叫一个便宜啊……这个已经不是问题了。)

7.总是使用最高的分辨率
买大容量存储卡的另一个重要理由是,它让你能使用你相机的最大分辨率。
一定要设置到最高分辨率,因为如果你不小心拍到了一张伟大的照片,你不会想仅仅在电脑上跟人分享吧。
(译者注:我总是把相片质量设置到最高,极精细的那一档,虽然照片的大小急剧增加,但是真如作者所说,这样做肯定不会后悔)

8.迷你三脚架
我曾经偶尔听到有些人说:“他一定是专业的,因为他用三脚架呢。”当然,用不用三角架跟你的拍照水平无关,但,这个有三条腿的家伙确实很有用。
问题在于三脚架携带起来太累赘了。
对于DC的使用者来说有一个好消息,UltraPod II,这种迷你三脚架可以收起来放在你的口袋里,它可以单独使用,也可以绑在一些物体上使用(比如绑在栏杆上)


(译者注:三脚架的作用不用说了,这么好的微型三脚架我也是第一次见到,搜了一下淘宝有卖,不贵,不过搜索的时候不能用ultrapod做关键词,而要用“迷你三脚架”做关键词)
9.自拍模式的乐趣
现在你手上有了迷你三脚架了,你就可以尝试另一个没有被开发出来的功能了:自拍模式(self timer就是那个定时拍)。这个功能让你按下快门后过一段时间再拍照(最多10秒),它解决了另一个困扰人们多年的问题——没有摄影者的全家福。
嗨,别觉得你丑就不想出现在合影当中,你可以把相机交给陌生人让他帮忙,当然,你要承担他们不可靠的风险。
自拍模式就是替代方案,用三脚架固定好相机,调整好各项设置,按下快门,然后迅速站到你预设的位置上,等一会儿就OK了。
自拍模式还有更强大的威力呢!当你用长时间曝光拍摄夜景时(比如那种马路上留下车灯痕迹的诡异照片),为了避免你用手按快门时造成相机震动使得照片模糊,你可以用自拍模式完美地克服这个问题。

10.长时间曝光下的流水
我拍的照片即使再美妙,也很难让我的家人看上眼。但还是有一个例外,最近我的妹妹在对我的一组以水为主题的照片评价时,说它们就像画一样,你要知道,这就是对我极大的赞美了。
她说的是我最喜爱的一种照片:用慢镜头拍水。就是用慢速快门,拍那种流动的水,创造出一种柔和且动态的感觉。


把你的相机放在三脚架上,强制慢速曝光(比如1秒或者更长),然后你就能得到这种像画一般的流动的水幕。(佳能PowerShot G2,光圈优先模式,f8,快门速度1秒,偏振镜,迷你三脚架)
因为较长的曝光时间,所以你需要一个三脚架来保持稳定,当然还要使用自拍模式了,使用光圈优先模式,然后把光圈设置到f8甚至更小,这将会使你获得很大的景深,同时让快门也慢下来。
拍那种背阴处的流水,日光下的流水可不允许你用那么长的曝光时间。
另一个小技巧是把你的太阳镜放在镜头前,除了偏振镜的作用,它还能阻挡一些日光从而让你获得更长的曝光时间成为可能。

最后的思考
大部分DC,即便是最傻瓜的DC,也有很多内建的功能。通过一些技巧和创造,你拍出的照片就会让人不禁发问:“你用什么机子拍的啊!?”
你当然要告诉他们实情了,毋庸置疑你将获得惊讶和赞美,但是内心深处你要明白,这么好的照片是你拍的而不是相机拍的,人是最关键的。

2008年3月7日

zz 找老板

    UNM(University of New Mexico)的ECE(Electrical and Computer Engineering)有这么一位老板,有理想有抱负,是push的典型代表。我们有幸分享他巨牛无比的言论,转载以自励!

     ——“要学会集中精力阅读,集中精力思考。一开始,你可能只能让精神高度集中几分钟,然后就开小差,就开始犯困。但是,要坚持锻炼自己的思维,逐渐的让自己能集中精力十几分钟,半个小时,一个小时……这跟锻炼一样,你开始练长跑的时候,可能跑个几十米就累得气喘吁吁,但要坚持每天锻炼,逐渐的,你就能跑几百米,几千米。”

     ——“阅读论文要坚持每一天都读,而非每个礼拜要来见我之前才来拼命读一个晚上。我们要在SIGGRAPH上发表论文,就如同参加这个领域的奥运会。你能想象一个球员每个礼拜只练一次,就去参加奥运会么?”

     ——“集中精力,是指阅读或思考专业性很强的东西。这是个很耗脑子的事情,就如同跑步——这跟读小说之类的闲书不同,我们能坐着读一整天闲书而一点都不累,因为那个就像慢慢散步一样。”

     ——“要有进取心。我知道你刚开始进入这个领域,很多都不明白,没有方向。但面对这种情况,有两种面对的方法:坏学生会就此沉沦下去,什么事情都不做;好学生会不断的去尝试,没有方向,那就尝试着推开每个方向的门瞧一瞧。但是,坏学生也可以改变。”

     ——“读研跟本科不一样,不是只要把课上好就可以的。判断一个研究生可以毕业的标准是,你在导师面前滔滔不绝的说出你的想法,你某方面的知识比导师多。”

     ——“你应当养成记录自己每天做了什么事的习惯,以此督促自己不荒废时间。”

     ——“你必须学会改变自己,必须!”

     ——“我最觉得自己知识最多的时候是本科。那时候感觉什么都懂,什么微积分啦,傅立叶变换啦,电路啦,什么都那么容易,一学就会,一下子懂了这么多东西。但到了研究生阶段,发现自己什么都不懂:一看论文,这个名词不懂,那个公式不明白。突然发现自己可能只知道1%都不到的东西,有那么多东西要学,真的让人感到很害怕。你们现在一定也会这样,这是正常的,都会有这样一个艰难的过程的。”

     ——“研究生跟本科生完全不一样:本科生只要把课程好好搞懂就行了,很容易就能拿个A;研究生就得更注重研究,要通过读论文来自学。原先通过课堂掌握知识的效率实际上很低的,可能老师光讲了一点东西,你就明白了,然后几分钟老师仔细讲解的时候你就可以开开小差,过一会儿再回过神来,听听新的东西,又明白了,再继续开小差……自学的话,效率很高的。”

     ——“我同样拿到普度大学的岗位,但他选择了UNM。因为普度那里图形学组比较没落,几年都没出过多少SIGGRAPH论文。他宁愿来这里,从零开始,和实验室另一个CS新来的教授一道,开始的时候每年两三篇SIGGRAPH论文,然后逐渐进步,几年时间把这个实验室名声打响。”

     ——“人都会不由自主的偷懒,去选择一些不耗脑子的事情来做,比如聊天,比如上网,然后到时候回过头,会发现自己没干什么有意义的事情,时间就已经过去了。不要把太多时间花在给实验室电脑装软件这种事情上,可以让别人来帮你。这个的确不费脑子,却不能带来太多有意义的结果,对你的学业,对你的研究没有作用。”

     ——“我不是你的父亲,我不会命令你做这个做那个。你要有自己的想法。”

     ——“你要更有进取心一点,不能跟你谈到论文的时候你总是哼哼唧唧结结巴巴。”

     ——“你要主动一点,每次我跟你谈话都是我在说你在听,你从没有主动拿着paper到我办公室找我的。”

     ——“你要有动力一点,你现在跟我当年开始读PhD时候一样,什么都不懂,看paper就想睡,但得坚持下去,而不能放任自流。”

     ——“你现在并不是在进步,而是在朝相反的方向走,这不是成功的方向。”

     ——“等到你五六年毕业之后,你应当跟我现在一样,有自己的想法,能够带领自己的团队。”

     ——“1月23号是SIGGRAPH论文提交的截止日期,如果要投文章,现在起实际上时间还够。”

     ——“你足够聪明,但仅有聪明是不够的……”

     ——“我不是强制你像机器一样整日工作。该玩的时候好好玩,该工作的时候好好工作。”

     ——“来学校当教授,是因为,当教授,没有上司指派你做这个做那个;当教授,你想研究什么就搞什么;等评上终身职位之后,搞研究也行,教教课回家带带孩子也行……”

2008年3月6日

神奇的Eclipse性能测试TPIP插件

昨天下午发现自己现在的Java代码运行一些复杂情况时相当的慢,运行一遍居然需要好几个小时,这种情况真是让人难以忍受。起初猜想了几处可能的问题,但是始终没有直接的感受,自己也说不清楚慢的根本原因。

记得上次在浏览Eclipse的各种插件的时候看到过有用于性能测试的插件,凭着模糊的记忆,开始搜索相关的插件。

开始实验了一个叫Profiler的插件,弄了半天才发现这个东西不支持较新的Eclipse和Jre,而且SF的项目首页上明确写了这个项目已经死掉。呵呵,只能怪自己没有先看文档啊。

后来发现了Eclipse下另外一个更好的插件TPTP(Eclipse Test & Performance Tools Platform Project)。记得这个东西是Eclipse 3.3 Europe发布时大力推崇的东东,只是原来不知道有这么强大。

这个东西的安装非常的麻烦,因为需要预装很多乱七八糟的插件,昨晚折腾到凌晨两点也没有弄好,包括在今年2月份才发布的最新版的Eclipse 3.4M5。好在今天上午继续搜索时发现了TPTP网站上有All-in-one版的TPTP。仔细观察,这个版本对应的Eclipse 是3.3.2,居然和Eclipse网站首页发布的最新版本号一致。这个说明,目前最新版的Eclipse中最稳定的还是3.3.2。

All-in-one版的TPTP包含了很多需要预装的插件,同时也包含了Eclipse。打开Eclipse后,按照官方提供的TPTP的所有文档中找到了一个示范性的举例,依葫芦画瓢,终于学会了使用这个东东。

这里展示几张官方的图片:

 

性能测试项目的结构

 

类之间的交互流程图

 

函数之间的工作流图

 

各包、类、函数的运行时间

 

这个东西能够非常详细的分析整个程序中各个包、类、函数的运行情况,包括时间占用、调用分析、内存占用、代码覆盖等等。使用起来真是非常的舒心。唯一一点不好的是,程序中类多一点的话,速度相当的慢。还好我不需要每天分析我的代码。忍受一两次也就行了。谁让我现在的项目中有好百十来个类呢。

嗯,靠着这个工具,我找到了我的代码中最为耗时的几个函数,感觉有点出乎意料啊。这就开始进一步分析去了 :)

2008年3月2日

由音乐会联想到科研

在张慧的邀请下,我今天欣赏了一场音乐会,主要原因是想借这个机会放松一下平日里绷紧的感觉,另外一个原因是这个音乐会是免费的。呵呵,国家小就是好办啊,新加坡的这个剧院每月都会有一场免费的音乐会,据说这个剧院比悉尼歌剧院花的钱还多。

由于地铁上聊天尽兴,多坐了三站地,再返回冲向剧院,还是迟到了十五分钟左右。进场只能在三楼的侧面了。不过幸运的是,我的视角几乎就在表演台的正上方,所以感觉很不错,以下面的照片为证:

P1030745

由于“坐得高”,我能非常仔细的观察台上的每位成员。先说说最抢眼的指挥吧。他的右手拿着指挥棒,左手手掌会有各种辅助动作,还兼顾翻谱子和间歇性的理顺他的头发。看着他的各种指挥动作,以及演员们的相关配合,真的惊叹于他们之间的默契,也在猜测指挥的每个动作究竟是什么意思。呵呵,感觉当指挥也很不容易啊 :) 联想起中小学时班级大合唱时指挥的动作非常简单的,但是明确知道每个动作是什么意思。

仔细观察,发现乐队分为好多组,每组好像都有一个摆弄得特别好的,需要该组只有一个成员演奏的时候就轮到他了。前场的演员都是固定位置和乐器的,后场一圈的演员经常更换位置和乐器。哈哈,后场一圈的乐器都是大家伙,声音也大,振动也剧烈。每到表演到高潮时后场总是很热闹也很卖力。

另外一个发现是,居然有人滥竽充数 :) 据我仔细对比分析,发现一个位于团队中央的拉二胡的成员,拉弦的动作和别人的有点不一致,而且我一眼就看出他还不太熟练,因为拉弦时明显晃动的厉害。我自己小时候自己也摆弄过几天二胡,当时就是这样的,当然,我离上台表演还差十万八千里 :) 呵呵,看来乐队的发展也是需要不断历练新人的啊。

整场音乐会我们只听到六首曲子,分别是《蓝色多瑙河》、《大长今》、《挥刀曲》、《任天堂游戏插曲》、《太行山下》、《莱佛士像》。感觉很不错,闭着眼睛仔细聆听曲子,能感受到曲子题目反映的那种场景,真有身临其境的感觉。

在闲听之余,我开了一会儿“小差”:) 我把整场音乐会和我们的科学研究对比了一下,发觉其中竟然是一个道理。

  1. 首先,整场音乐会需要有很多首曲子,这就像科研中需要涉及到多个题目;
  2. 音乐会上的每首曲子都是这一组人员去弹奏,科研中总是一个团队去完成各个题目或者或者一个人发表多篇论文;
  3. 音乐会上弹奏一首曲子需要很多人的紧密配合,而且每个人的演奏都需要过硬才行,科研中完成项目是也需要大家一起合作,每位成员也都需要高质量完成相关部分,发表论文时论文也分成很多部分,每个部分都需要高质量的撰写;
  4. 音乐会中除了每位成员的技艺高超外,还需要大家的紧密配合,这个时候指挥和统一的乐谱就起到了很好的作用,科研中多个成员之间需要协调,项目经理以及项目计划书也起到了至关重要的作用,一篇优秀的论文自然也需要各个部分相互配合,论文的作者也就是论文的指挥了;
  5. 音乐会的成功,除了人的因素,最重要的自然也就是歌谱了,科研中除了人的因素,最重要的也就是项目的本质以及合理的计划了,发表论文时最本质的也就是论文的创新点了。

基于此,得出结论,一场精彩的音乐会难度同比于出色的完成一系列项目以及发表一批高水平论文。演艺界的“台上一分钟,台下十年功”也正好说明了科研过程中想出色完成项目或者发表高水平论文都需要下很大的功夫,不断练习相关的各个部分,并且不断整体锻炼,才能取得一点成绩。

想于此,顿感惭愧。细数自己从事所谓的科研也有近5个年头了,但是至今仍无成绩。仔细想想,原来是自己的台下五年功都没有集中到一点上,算是荒废了:) 亡羊补牢,为时不晚,从现在开始积累和不断分散练习,整体练习。

为自己加油!

2008年3月1日

心理学实验证明破釜沉舟的好处

读到一篇文章,说明了人在面对诸多选择时会非常困惑,困惑的根本是那种放弃一个选择时产生的短暂的痛苦,以至于浪费了大量的时间。心理学研究证明,面对多种选择时仔细认真的选择一个感觉最好的,这种策略是最优的:)  或许这就是人们常说的“舍得,舍得,不舍何得”的证据吧。或许人生就是如此。

文中建议:理性的取消一些工程,放弃一些其他的新的想法,从过多的委员会中辞职,重新安排自己的假期,拾起自己的爱好,并且记得项羽的破釜沉舟。

哈哈,从心理学角度证明这个?别人是实验证明的。感觉很不错的研究方法 :)

参看下文:

link: http://feed.yeeyan.com/articles/view/waxmax/5133

 

Mr.Big写的简介

本文作者通过实验,从社会心理学上解释了为什么人们都比较喜欢手握着很多机会,确不肯放手的原因.并提出了相应的解决办法.写的很生动,推荐阅读

         下一次你犹豫不决的时候: 去见哪个朋友?卖哪个房子?从事什么职业? 试着问问自己这样一个问题:项羽是怎么做的?
         项羽是公元前三世纪中国的一个将军,他带领他的军队跨过长江直入敌军领地,如何做出决策,他做了一次尝试.他砸坏了队伍里所有的锅,烧了所有的船(译者注:破釜沉舟-_-!).
         他解释这是为了让队伍集中精力在作战上——当时动员演讲并不奏效,在士兵中间弥漫的撤退的情绪越来越严重.项羽的做法,无论从战争角度或者从社会科学研究角度,做的都是正确的.
         他成为Dan Ariely新书《可知的不合理(Predictably Irrational)》中的人物榜样.这本书以幽默的视角阐述了人类的一些小毛病,比如喜欢对一件事情保留很多选择的可能性,却不做出决定。项羽是一个非常与众不同的例外,一个被不可知的合理(译者注:unpredictably rational,此处对应前面的可知的不合理(Predictably Irrational)是说项羽最终的结果肯定是输掉战争,但是输掉的方法充满了巧合)的情况所打败的勇士。
         许多人不能做出如此痛苦的决定,甚至在以理性而闻名的麻省理工学院(MIT,Massachusetts Institute of Technology)的学生,也不能免俗,Ariely博士是那里行为经济学(译者注:behavioral economics)的教授。一系列实验证明,参加实验的数百名学生都不能忍受实验中他们的策略落空,甚至包括其中的一些非常愚蠢的策略(而且,他们甚至没有被命令烧掉任何东西)。
         这个实验包括这样一个游戏是消除那些我们平时用来拒绝让其离开的借口。在现实世界中,我们经常告诉自己,最好对某事持有很多种选择。
         比如说,你甚至不知道一个照相机的闪存Burst(块读写)模式是怎么工作的,但是你说服自己,为这个额外的功能买单。你和某个人再也没有共同的话题,但是你就是不愿意彻底的断绝关系。
即使你孩子学校以外的足球,芭蕾和中文课程,把他们弄的精疲力尽,但是你也不会让她放弃她的小提琴课。学这些东西,迟早有用!但是天知道是不是真有的用。
         麻省理工的实验中,学生们有更深刻的理解。实验要求他们玩一个电脑游戏,如果找到屏幕上门背后的钱以后,则会得到真实的金钱奖励。(你也可以在 tierneylab.blogs.nytimes.com 这个页面上自己玩,不过得不到奖励。)他们点击鼠标,就可以打开一个门,每一次再点击就会挣到一点钱,每次出现的钱数不同。
         当每个游戏者点够100次,他们就可以到切换到另外的一个房间,看看有没有更高的奖励,但是每交换一次房间,就要耗费一次可以用来开门的点击。最好的策略是迅速的选出三个房间然后关注其中有最高奖励的那个。
         当学生们适应了一段时间的游戏之后,他们仍然面对屏幕上新的情况的时候,他们还是会发生困惑。如果他们处于任何房间之外,门就会逐渐缩小,然后消失。
         他们本来应该忽略这些消失的门,但是学生们仍然不舍得放弃。他们浪费了太多的点击,急切的再次打开这些门,这样导致了他们的收入减少了15%。甚至即使对过快的切换这些门的时候会有一些处罚(除了浪费一次点击以外,他们还需要另外支付费用),这些学生虽然不断的被罚钱,仍然疯狂的保持他们的门是开的。
         为什么他们这么粘着这些门不放呢?游戏者,就像那些负担过重的孩子的家长,很可能说是为了试着保证孩子的未来有很多的选择。根据Ariely博士和他的同事Jiwoong Shin的实验研究,这其实不是真实的原因。Jiwoong Shin现在是耶鲁大学的经济学者。
         他们通过改变游戏规则策略,深入分析了游戏者的动机。这一次,甚至当门从屏幕上小时,游戏者也可以让在任何时候让门恢复。但是即使这样,当他们知道让门再次出现,不会扣分,他们仍然疯狂的试图防止门消失。
        显然,他们不在乎保持未来的灵活性,他们真正的动机在于他们希望那个避免看着门关上时立即产生的痛苦。
         “在选择上关上一扇门,就好像是一种失败,人们愿意支付一部分成本来避免心理上的失落感”,Ariely博士说。在实验中,这种成本可以用损失的金钱来衡量。在现实生活中,这种成本就不是那么显而易见了——比如浪费时间,或者错过机会。如果你害怕丢失办公室里头的某个工程的机会,那你就必须从家庭生活中支付这个成本。
         “我们经常加班超时,”Ariely博士在他的书中说,“没有意识到我们的儿女们的童年正悄悄的溜走了。有时候,这扇门关的太慢,我们都没有意识到它的消失。”
         Ariely 博士,是在他领域内多多产的作家之一,但从不掩饰自己在这个问题上,他自己也不能处理的很好。他回忆:当他试图决定是到麻省理工工作还是到斯坦福工作的时候,那一两个礼拜,他和他的家人都差不多一样的乐意去其中任何一个地方。但是他整整拖了一个月,因为他也在权衡两者之间犯迷糊了。
         “我工作十分专注而且我比别人更追求完美”他说,“我有和很多工程要做,而且我倾注我全部努力在其上的话,很可能对我和学术委员会都更好。但是每次我有其他的主意或者其他人给我合作机会的话,我却很讨厌放弃这样的机会。”
         好,那应该做什么呢?答案只有一个,Ariely博士说,对于可能性有很多的事情需要做更多的社会范畴的约束检查(译者注:就是说,自己再给自己留后路太多的情况下,让别人和社会来监督自己)。他用婚姻举了一个例子:“对于婚姻,我们保持了一种态度:我们对自己承诺,不要给自己太多的其他选择机会,我们就关上了这扇门而且我们给其他人宣布我们已经关门了。”
         或者,我们可以自己试着这样做一下。就像那个关门的实验一样,Ariely博士说,他已经很理性的取消一些工程,或者他对同事说放弃一些其他的新的想法。他还劝他的同事们从过多的委员会中辞职,重新安排自己的假期,拾起自己的爱好,并且记得项羽上的那堂关掉门的课。
         如果一般的方法都太过原始的话,Ariely博士推荐了另外的一个人物榜样——瑞特(译者注:Rhett Butler,小说《飘》中的男主人翁)在他婚姻的最后,不可知未来的但又肯定要发生的关键时刻,斯嘉丽(译者注:Scarlett,小说《飘》中的女主人翁),就像我们其他人一样,不能忍受做出一个放弃的选择,但是瑞特认识到他婚姻的局限,于是用令人吃惊的冲动关上了门,坦白的说,他做的不错。