Thursday, March 29, 2007

Development records in 2006

Development records in 2006:

 

Record: ( Strengths, weaknesses, suggestions for improvement):

Strengths:

1. Experience implementing software in multiple environment.

2. Analyze and resolve software or application problems.

3. Quickly study ability.

 

weaknesses:

1. Communication, especially speak clearly and concisely in public.

2. Project task estimating and scheduling.

3. Less experience in software architecture.

 

suggestions for improvement:

1. Communication skill, improve the ability to express the opinion effectively.

2. English, improve the oral and listening ability.

3. Software design, should improve the software design ability in the future.

 

Stopship!

明天项目就release,今天快下班的时候TechLead突然传给我一分QAavi, 记录了一个严重的引起系统deadlockbug.

随后将CCB阶段定位为Defferbug升级为stopship! 这么严重的bug到项目release前一天晚上才报上来,说要stopship,该谁负责呢?

晚上通宵加班也fix不掉了. L

Wednesday, March 28, 2007

Technique summary of the preview project.



The project I am working is release today. Congratulation! Here is the summary list of what I have learned from the project and should also be documented:


· 64 Bit.


· Office automation


· IE Programming.


· IAT hook.


· Detours.


· Multithread programming.


· Generic programming.


· Advanced debugging skill.


· Error handling.


· Log.


· Trace.


· Dump.


· Subclass.


·


1. Disable context menu in IE.


2. Transparent window.


3. Context menu does not disappear issue.


4. How to disable office menu.( Office 2003 and RiOffice 2007)


5. Advance debugging skill.


6. OLE message filter


7. Find window.


8. Error log tech in PSP.



Thursday, March 22, 2007

中国史上最强的九大管理定律

中国史上最强的九大管理定律

第一定律,象牙筷定律

第二定律,兔死狗烹定律

第三定律,包围定律

第四定律,敌戒定律

第五定律,朋党定律

第六定律,黄宗羲定律 

第七定律,五世而斩定律

第八定律,权大欺主定律

第九定律,皮毛定律


 

第一定律,象牙筷定律



    殷纣王即位不久,命人为他琢一把象牙筷子。贤臣萁子说,象牙筷子肯定不能配瓦器,要配犀角之碗,白玉之杯。玉杯肯定不能盛野菜粗粮,只能与山珍海味相配。吃了山珍海味就不肯再穿粗葛短衣,住茅草陋屋,而要衣锦绣,乘华车,住高楼。国内满足不了,就要到境外去搜求奇珍异宝。我不禁为他担心。(冯梦龙) 



    果然,纣王厚赋税以实鹿台之钱,……益收狗马器物,充仞宫室。……以酒为池,悬肉为林,使男女倮相逐其间,为长夜之饮。百姓怨而诸侯叛,亡其国,自身赴火而死. 



    为什麽事态会如萁子所言,一步一步地发展下去? 



    很小的时候,我们就已经知道了普希金的伟大,因为我们都很喜欢他的那个《渔夫与金鱼的故事》。那个丑陋的老太婆,最初只不过想要一个新木盆。第一个愿望被满足之后,第二个愿望接踵而来。一个接一个,胃口越来越大。最后的结果,仍旧只有一只旧木盆。 



    世人的贪欲,不都是这样?得寸进尺,得陇望蜀。没有止境的。 



    君王的贪欲,更为可怕,因为他拥有无限的权力,没有人可以阻止他。 



    《诗》云,商鉴不远,在夏后之世。 



    这里所说的商鉴,究竟要我们鉴什麽? 



    其一,一定不能有第一次. 



    第一次可能是微不足道的,一双筷子或一只木盆。只是大坝一旦决了口,洪水便会一泻而下。 



    看一看那些贪官,只要收了第一笔贿金,以后的事便不由他了。 



    只是,人的意志力是多麽薄弱。一旦坐上权力的交椅,有几个人能拒绝这第一次? 



    其二,整个过程是进行性的。 



    进行性一词是我从医学书中借用来的。像癌症,就是进行性的。不断地发展,不会中止,也不会逆转,一直进行下去。 



    殷纣王身边,虽有比干和萁子这样的贤臣,却无法劝阻他。依靠臣下的劝阻来制约至高的皇权,其有效性显然不足。所以,事态的发展有其必然性。 



    其三,其亡也忽焉. 



    《左传,荘公十一年》:桀纣罪人,其亡也忽焉。这里的忽字,意为迅速,突然。 



    洪水溃堤,转瞬之间,一泻千里。 



    李自成打进北京,一生事业达到巅峰。由巅峰而至于落荒而走,大起大落,也在转瞬之间。 



    殷纣王之后,两千多年,有周幽王、秦二世、陈胜、王莽、陈后主、隋炀帝、黄巢、朱温、李煜、李自成、洪秀全、蒋介石等,其亡也忽焉,何其多。 



    殷纣王,这个中国历史上著名的昏君、暴君、亡国之君,他给后人留下了什麽?留下了两个字,殷鉴. 



    无法节制的权力+无限膨胀的贪欲=殷鉴不远。 



    黄炎培先生曾在延安的窑洞中向毛泽东提起其亡也忽焉这样的历史规律,因此,有人将这个定律称为黄炎培窑洞定律.  


 

第二定律,兔死狗烹定律



    越王句践,为报仇雪恨,卧薪尝胆,精神非凡。但他的个人品质却非常糟糕。在极端困苦的情况下,帮他筹划大计的两个功臣,成就大业之后,一个被杀,一个逃跑。 



    杀文种的时候,句践说,你教我灭吴七种方法,我用了其中三种就灭了吴国,你那里还有四种,把它带到先王那里去吧。 



    有七种方法灭吴,应当很有智慧,却遭了句践的毒手。 



    此前,范蠡曾规劝文种,蜚鸟尽,良弓藏;狡兔死,走狗烹。越王为人长颈鸟喙,可与共患难,不可与共乐。范蠡之智,显然高过文种,终能免於一死。 



    兔死狗烹这样的事,历史上不断地重演。 



    能够吟诵《大凤歌》的汉高祖,也是小鸡肚肠。依赖韩信的军事天才,夺得天下。原说是与韩信共天下的,后来非但不共,还要了韩信的命。 



    倒是张良聪明绝顶,托言辟谷,躲到深山里去。刘邦一死,张良的辟谷秀也就谢了幕,照旧吃饭。 



    说到杀功臣,狠毒莫过于朱元璋。当年帮他打天下,战将如林。后来朱棣南下,朝廷居然派不出得力将领去带兵。幸好不是北边的蒙古人打过来,否则朱姓的江山,传到第二代也就败了。 



    赵匡胤说,吾终夕未尝安枕而卧。得了天下,却又睡不着觉,夜夜失眠,竟为何事? 



    天下汹汹,想要南面为王的野心家何其多。就是咱自家,当年黄袍加身,不也是个野心家?如此说来,野心家就睡在我们的身边。 



    老是疑神疑鬼,睡不好觉,搞得神经衰弱,以为真是狼来了,于是起了杀心。 



    这是一种思维定势,世人无论是谁,只要坐(抢)到这个位置上,总会不由自已这样去想。原本抢来的东西,难保不被别个抢去。所以,历史上兔死狗烹之事不断重演,是完全符合逻辑的。 



    文革时期,我是一个逍遥派,一个观棋不语的看客。看来看去,看得多了,心里就非常佩服范蠡这个人。 



    那些造反派,开始时受压,可怜兮兮的。后来得势,内部就分为许多派别,彼此争斗不休。 



    几乎没有例外,一旦外部的压力消除,内部立刻就分化。 



    人为什麽会是这样,患难易共,富贵难同? 



    现在这些做生意的人,若是几个人合伙共同创业。开始的时候,兢兢业业,在艰苦环境中Gong同拚搏,尚能齐心协力。一旦家大业大,有了丰厚的利润,就会生出异心。彼此猜忌、龃龉,终至于分道扬镳。难道人的天性就是这样? 



    后人把范蠡的这个定律表述为,狡兔死,走狗烹;飞鸟尽,良弓藏;敌国灭,谋臣亡。自古患难易共,富贵难同。


 

第三定律,包围定律



    诸葛亮在《出师表》中论及天下兴亡之道,亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。 



    奸臣和小人,虽为人所不齿,但他们在中国历史上却占有重要地位。皇朝的灭亡,国家的劫难,往往与他们有关。 



    《史记》中有《佞辛传》,《汉书》中有《奸佞传》,《新唐书》及其以后的《宋史》、《元史》《辽史》、《明史》等正史中都有《奸臣传》。奸臣在历史中的地位,史家不敢忽略。 



    指鹿为马的赵高,口蜜腹剑的李林甫,祸国六贼童贯、高俅、蔡京等,陷害忠良的秦桧,两面三刀的严嵩,无法一一列举。若能把他们聚集拢来,可以排列成大军,浩浩荡荡。只不过,这只大军不能用来上阵杀敌,他们所起的作用,就是包围. 



    鲁迅先生说,凡是猛人,身边便总有几个包围的人们,围得水泄不透。结果,是使该猛人逐渐变成昏庸,有近乎傀儡的趋势。中国之所以永是走老路,原因即在包围,……。 



    这就是包围定律。 



    包围者不仅有奸臣小人,还有女人,像妲己、褒姒、以及文*中的白骨精。虽说女色亡国论是不对的,但坏女人在历史中的作用却不容忽视。 



    将一块磁铁投入沙堆中,磁铁表面便会粘上些许铁屑,磁铁吸引铁屑,是因为存在磁场。 



    围绕着权力,也有一个看不见的权场.各种意有所图的人都会在权场中向着权力中心作定向移动。于是就有了包围.包围是客观存在的,在我们中国,有权力就一定有包围。 



    权力越大,包围就越厚。 



    一个皇帝周围,有三宫六院,无数的宫女(唐朝后宫宫女最多时可达数万人),无数的太监,无数的虎贲勇士,还有皇亲国戚,文臣武将。千军万马,铜墙铁壁,把一个寡人包围在当中。 



    寡人心里高兴,就要走出去巡视。但即便他真的走到了田间地头,也得不到真实。因为下面的人熟谙蒙骗之术。一切场景都是事先精心安排好的,滴水不漏,皆大欢喜。 



    鲁迅先生认为,猛人倘能脱离包围,中国就有五成得救。先生因此想作一篇《包围新论》,讲述包围脱离法.然而终于想不出好的方法来. 



    我那时就很悲观,鲁迅也如范蠡一样,是中国最聪明的人,居然想不出好方法。 



    后来听说瑞典首相出门不带警卫,上班乘公交车。心想,答案就在这里了,包围是可以打破的呀。 

第四定律,敌戒定律



    唐代柳宗元有一篇题为敌戒的短文,其思维逻辑与常人常理完全相悖,富含哲理,是一篇奇文,转录如下: 



    皆知敌之仇,而不知为益之尤;皆知敌之害,而不知为利之大。秦有六国,兢兢以强;六国既除,訑訑乃亡。晋败楚鄢,范文为患;厉之不图,举国造怨。孟孙恶臧,孟死臧恤,药石去矣,吾亡无日.智能知之,犹卒以危,矧今之人,曾不是思。敌存而惧,敌去而舞,废备自盈,祗益为愈。敌存灭祸,敌去召过。有能知此,道大名播。惩病克寿,矜壮死暴;纵欲不戒,匪愚伊耄。我作戒诗,思者无咎。 



    从来人们都把敌人看作是祸害,无力者避之,有力者根除之。唯独柳公认为,有敌人是好事。 



    毛泽东对这篇短文推崇备至。 



    毛泽东一生,空前绝后,以他的眼光,审视历史,何以对这篇短文情有独钟? 



    古人治国,由大乱到大治。毛泽东治国则反其道而行之。阶级斗争,一抓就灵,一个接一个的运动,把整个中国搞得如火如荼,水深火热。毛泽东的斗争哲学是否与《敌戒》中宣示的哲理有某种契合? 



    千年大树,其里皆空。我们这个老大帝国,历经几千年,早已完全腐朽了。 



    我国的历史与欧洲完全不同,自秦统一以后的两千年,几乎一直是一国独大的局面,周边没有任何一个国家的人口与经济实力可以与这个中央帝国度长絜大,比权量力. 



    没有强大的敌人,失去了外部的压力,内部自然就腐化。未闻边塞号角,但见歌舞升平。自秦以后,皇朝的历史,一代不如一代,整个社会的精神处于退化之中。 



    正是这种历史环境长期地作用,使中国人鸩於安乐,不思进取,怯懦畏葸,麻木不仁。 



    中国人发明了火药,把他造成鞭炮,用于喜庆娱乐之中。西方人却把他造成武器,使人类的战争由冷兵器时代进入热兵器时代。 



    没有了竞争的压力,也就失去了不断创新进步的动力。 



    当今世界,美国人横行天下。是三次大战(两次热战一次冷战)造就了美国人之横. 



    中国人讲究中庸,讲究和为贵,这是我们的哲学,我们的传统。热爱和平是一件好事,但前提条件是不会有别个打进来,亡了国。 



    我不是法西斯式的好战分子,对于阶级斗争那一套更是深恶痛绝。但我相信达尔文的进化论,物竞天择,适者生存。我们中华民族要真正自立于世界民族之林,一定要克服我们千年之惰性,振奋民族精神,从容面对当今世界的挑战和竞争。 



    梁启超鼓吹《少年中国说》,潜龙腾渊,鳞爪飞扬;乳虎啸谷,百兽震惶。霹雳之声,撼人心魄。

第五定律,朋党定律



    唐穆宗时期,以李德裕为首的士族出身官员结成一派,以李宗闵、牛僧孺为首的科举出身官员结成一派,两派在朝廷上互相攻讦、倾轧达四十年,史称牛李朋党之争。 



    中国历史上这样的党(派)争持续不断。 



    西汉有外戚、宦官作祟,东汉有清议党锢,魏晋南北朝有士族门阀,唐有刘李党争,宋有元祐党人碑,明有东林党、宣党、崑党,清有帝党、后党,国民党内有黄埔系、cc系、政学系等。 



    各朝各代,都有朋党、帮派,是一个很有中国特色的历史现象。朋党现象,有其社会根源。 



    中国传统社会的最大特点是,他是一个宗法社会。 



    一部《红楼梦》,其隐含的意义,不是什麽反封建。《红楼梦》用一个凄绝动人的爱情故事,向我们展示了古代宗法社会的基本结构及其运行特点。荣宁二府,是一个大的(宗族)家族。像一棵大树,有主干和旁枝。亲不间疏,后不僭先。有规有矩。贾王史薛,四大家族,互相倚持,结为势力。更有皇亲国戚,达官贵人,彼此回护。构成一个复杂的体系,盘根错节。只有明晰了其中的脉络,才算真正读懂了《红楼梦》。 



    中国宗法社会的特点之一就是盘根错节。 



    一个人立于社会,并非是孤立的。在他的周围有各种各样的关系,亲戚关系、乡党关系、同学关系、师生(徒)关系、战友关系、同事关系、朋友关系、帮会关系、同志(道)关系等等。 



    这些关系构成了一个人的社会资源。聪明的人,运作得好,前途无量。 



    无论处庙堂之高,江湖之远,都能见到中国人在忙着拉帮结派。像一个个勤奋的蜘蛛,编织着属于自己的网络。 



    网络越大、越结实,捕获就越多。 



    现在说打贪官,须先搞清楚,贪官后面的保护伞有多大,前后左右铁杆关系有多硬。否则贪官打不到,反倒捅了个马蜂窝。 



    对于中国的朋党现象,自古以来就有两种不同的观点,褒贬不一。持否定观点的人认为,结党营私.宋朝欧阳修却认为,小人无朋(党),惟君子则有之。 



    物以类聚,人以群分。由于社会和历史的原因,中国人常常结为宗派,十分自然,是一种客观存在的社会现象。许多人对此十分忌讳,刻意回避,讳莫如深。其实大可不必。 



    像毛泽东这样的马克思主义者,也公开承认,党外无党,帝王思想;党内无派,千奇百怪。 



    倒是日本人比我们痛快,他们的政党内部就分为不同的派别,公开活动,堂而皇之。这是日本国内政治的一大特点。

第六定律,黄宗羲定律 



    所谓黄宗羲定律是由秦晖先生依据黄宗羲的观点而总结出来的某种历史规律。内容是关于帝国千年以来通过并税式改革解决农民负担问题.历次改革的目的都是好的,改革者的初衷是要通过并税的方式减轻农民负担。一次又一次的改革,农民的负担非但没有减轻,反倒愈益加重。黄宗羲称为积累莫返之害. 



    依常理来看,是有些奇怪。像王安石这样的改革家,诗文写得极好,富有智慧,怎麽也会犯一些不断被重复的简单的错误? 



    中国的农民对此有他们自己的解释。在农村普遍流传着一种说法,上面的经是真经,都是下面这些歪嘴和尚把经念歪了。 



    歪嘴和尚何以要把经念歪?考其原因有二。一是和尚水平太差,不会念经;二是和尚故意要把经念歪。我以为后一种情形居多。 



    吴思先生在其《血酬定律》一书中提到明朝官员的薪俸太低,其各项必要的支出加在一起高过俸禄的收入。吴先生认为,与其他各个朝代相比,明朝官员的俸禄是最低的。明朝官员俸禄虽低,尚有俸可领,而在王莽时期,官员们从朝廷中领不到钱,俸禄为零。 



    读史读到这里,觉得十分有趣。不给官员发薪,难道让他们去喝西北风?自古有喝西北风的老百姓,未见有喝西北风的官员。 



    结果是王莽时期的官员却因零俸禄政策而大发其财。既然朝廷不给发薪,他们只好自行解决,正好有了借口,可以理直气壮,大肆搜刮。 



    在我们推行各项改革措施时,经常碰到的一种情形是,两头热,中间凉。中间热不起来,自有其道理。 



    十七世纪英国哲学家霍布斯认为,人是自私自利的动物,每个人都努力要保持自己的生命。这种自我保存(Selfpreservation)是人类一切行为的基本动力。 



    Selfpreservation,一个很好的词,每个人都会Selfpreservation.我以为,既然每个人都会Selfpreservation,官员们的Selfpreservation也是自然的,无可非议。 



    为甚麽和尚要把经念歪?为甚麽中间热不起来?皆因为中间的官员们认为改革不利于他们的Selfpreservation. 



    要Selfpreservation的官员去为供养他们的农民减轻负担,这是一个典型的逻辑悖论。 



    在这个悖论中,最关键的是农民和官员之间的供养关系,假如去掉这种关系,悖论就不能成立。或者,在减轻农民负担的同时,由中央财政给官员们以补偿,两方都不吃亏,中间也就没有道理再凉下去。 



    王安石的变法,十分缜密,像青苗法之类,仔细阅读其内容,确实为农民考虑得十分周全。令人难以理解的是,这样的殚精竭虑,最后却惹得民怨沸腾。 



    是各级官员和胥吏在其中做了手脚,捣了鬼,把一件好事搅成一塌糊涂。 



    吴思先生所说的潜规则,正是官员胥吏们的捣鬼之术。官员们捣鬼有术,他们不仅有潜规则,有时更是肆无忌惮,毫无规则,随心所欲。如老百姓所说,和尚打伞,无法(发)无天。 



    这里说的是两个层面的问题,一个是和尚要吃饭,一个是和尚会打伞,两者之间有一定的联系。和尚要吃饭是正常的,也是正当的,不给他们吃饭,或吃不到好饭,他们就会去打伞. 



    中国历史上有过许多次变法,成功的不多。一个重要的问题是执行难.好的法律,好的政策,到了中下层官员手里,常常会走了样。批评者常常把矛头指向中下层官员。我以为虽然是中间环节出了问题,根源却在上面。表面上是一个执行难问题,实际上是一个设计问题。 



    设计一个好的政策(比如说青苗法),同时也应配备一个好的路线图.在这个路线图中,必须把和尚要吃饭问题与和尚会打伞问题列入日程。不考虑并重视和尚问题,好的政策就只是空中楼阁。或者我们说,一个好的设计师,要想把他设计的好政策付诸实施,顺利推行,必须首先把和尚安顿好,否则,黄宗羲定律就会不断重演。

第七定律,五世而斩定律




     1856—1860年,太平军两次打破围困天京的清军江南、江北大营,取得大捷。 



    有人说,虽然打了胜仗,但客观上却帮了清廷的忙。何以这样说? 



    驻守江南、江北大营的是清廷精锐的八旗兵和绿营兵。绿营兵射箭,箭虚发;驰马,人堕地。八旗兵则更为腐败无能。两营溃败,湘军成为清廷主力,形势急转直下。 



    当年八旗兵入关,真是金戈铁马,气吞万里如虎。这只凶猛的老虎后来为什麽会变成如此熊样? 



    富贵人家,总是难以持久,是中国历史的规律。孟子曰,君子之泽,五世而斩。一个有本事的君子,得了个好位子,挣了一大份家业,想把他千秋万代的传下去。但五世而斩,君子的梦想终会被残酷的现实所击碎。 



    老百姓的说法,更加令人扫兴。他们说,富不过三代. 



    五世也好,三代也好,贫与富,是在不断地转换。也许这是一种自然的调节,自然的公正。 



    为什麽富者不能恒富?富贵人家之所以会出败家子,我以为原因有四: 



    一曰骄. 



    八旗兵入关,满人成为统Zhi阶级,拥有特权。八旗子弟一不务农,二不做工,对汉人有强烈的优越感。 



    由骄而横,一些贵胄子弟仗恃父兄的特权,在社会上横行霸道,欺男霸女。 



    红楼梦中的薛蟠,打死人命,抢了丫头,扬长而去。古代法律,不仅刑不上大夫,亦且刑不上大夫之子. 



    二曰奢. 



    八旗兵入关,大肆掳掠。许多人在战争中聚敛了大量的财富。 



    西方人拥有了财富,会把他变为资本,不断增值。我们中国的富人比较缺少这种进取心,尤其是一些新贵,有一种暴发户心态,喜欢彼此攀比,讲排场,一掷千金。像石崇与王恺争豪这样的事,是一种流行病,一直流行到今天。 



    生于锦绣丛中的富家子弟,耳濡目染,他们的攀比和挥霍,更是青出于蓝。 



    惟其如此,才有了五陵少年和八旗子弟。 



    三曰淫. 



    古人告诫我们,富贵不能淫。此处淫字之义,乃是迷惑与放纵。 



    之所以有这样的告诫,是因为富贵能迷惑人,使人放纵。通常我们说,饱暖思淫欲。或者像现在人们所说的,男人有钱就学坏。有钱会使人们产生更多的欲望。外部世界又充满了各种诱惑。内部的欲望碰到外部的诱惑,两者一拍就合。 



    已经成熟的男人尚且无法抵御社会上的各种诱惑,小孩子的自制力如何比得上男人? 



    四曰逸. 



    学好数理化,不如有个好爸爸。这句话流传很广。 



    好爸爸是很有用的,他可以帮我们进入好大学,帮我们安排好工作,帮我们步入上流社会,过安逸生活。但好爸爸也有副作用,他使我们失去了艰苦奋斗的精神。在这个竞争激烈的社会,一旦失去了好爸爸,美丽的象牙塔便会轰然倒地。 



    中国经济快速发展,有了更多的富人,富人子弟如何承继父业,已成为一个问题。解决富家子弟问题,我们的学者开出药方来是四个字,加强教育.像美国人,注重培养孩子的自立能力和自尊精神。据说他们那边百万富翁的孩子也会利用假期去打工挣钱。 



    一些富家子弟,骄奢淫逸,根本不是什麽教育问题,他有深刻的社会历史背景。正是那样的社会,那样的传统,生出那样的孽障。富家子弟,骄奢淫逸,根本是一个社会问题。 



    有晋人撰文说,某晋商家业兴盛达两百年,打破了富不过三代的定律。家业延续两百年,确实了不起。但两百年后又如何? 



    旧时王谢堂前燕,飞入寻常百姓家。

第八定律,权大欺主定律




    这个题目是我从一本题为《蒋党真相》的书中看来的。 



    书中说,清末权臣袁世凯,为大清帝国送了终,人称权大欺主.蒋介石从这件事中吸取教训,其御下之术是,暗中支持和挑唆各个派别和山头(黄埔系、cc系、政学系)相争,各派彼此争斗、钳制,需从蒋那里寻求支持,于是蒋超越各派之上成为无法撼动的最高领袖,云云。(早年读过的书,印象十分模糊了。) 



    几千年的中国历史,有一个难解的结始终困扰着历代的政治家,那就是权大欺主. 



    历史上权大欺主的事屡见不鲜。楚成王儿子商臣,逼迫成王自杀;吴国公子光派专诸刺杀王僚;西汉末有王莽篡汉;晋有八王之乱;三国时期有曹操、司马昭擅权;隋有杨广弑父杀兄;唐有李世民玄武门之变;宋有赵匡胤黄袍加身;明有朱棣靖难之变等等。 



    在封建皇朝,存在着两种大搏弈。一种博弈发生在皇帝和皇储(太子)之间,另一种博弈发生在皇帝和权臣之间。皇帝和皇储,亲生骨肉,也会为了权力生死相搏。虎毒尚且不食子,帝王家庭内,却会上演父(母)杀子,子弑父,或兄弟相残的惨剧。皇帝和权臣间更有说不尽的恩怨。君臣一日百战,君权和相权较力,外戚或宦官擅权,朝堂和皇宫从来都是权术和阴谋的演练场。皇储和权臣是中国历史上最危险的人物。说他们危险是因为他们存在的本身就是对君王权力的威胁,他们自身也因此时刻处于危险之中。这种危险状况有时会演变成危机,甚至发生大的动乱。 



    如何防止权大欺主是中国古代政治学最大的课题之一。 



    我的专业是《园艺学》。我们有一个名词叫顶端优势。当一棵大树中心干上的分枝高过中心干时,其生长势会强於中心干,最终取而代之。 



    取而代之,是因为生长势的对比发生了变化,终于成为强枝弱干.在帝国的朝堂上,当帝王与臣下权势的对比发生变化时,也会有取而代之.自然界与人类社会一样,对优势地位的竞争无时不有,无处不在。 



    项羽见到秦始皇出游的仪仗时说,彼可取而代也.刘邦则说,大丈夫当如此也。我想人群之中心生羡慕的应当不止是这两人。人们常说,打江山,坐江山。何谓坐?坐就是享用。把一个大饼送给一个饥肠辘辘的穷汉,穷汉会享用赐给他的美食。一个皇帝,他所享用的并非一个大饼,皇帝打下了江山,他享用整个国家。无数美女,多少美丽与温柔,还有各种奇珍异宝,山珍海味。这样的享用,怎不令世人羡慕? 



    现时的人把权力叫做公共权力,认为主权在民,古代人的观念则完全不同,他们说,普天之下,莫非王土.芸芸众生只不过是一群驯顺的绵羊,皇帝和官吏执长鞭鞭笞天下,他们是牧羊人。一切权力归于统Zhi者,是统治者的私有物。正是这种权力私有的特性,导致了无休止的争夺。象是一个金苹果,被众人抢来抢去。高才捷足者从血泊中抢到它,然后坐天下,享用整个国家。 



    西方资本主义也有争夺,他们争夺的是金钱,物欲横流,我们称之为拜金主义. 



    中国的传统文化与西方文化有很大的不同,中国人更看重权力。有了权力就有了一切,我将其称为拜权主义. 



    人们常说,饮食男女,人之大欲也。人之欲望,难道仅仅只有食欲和性欲?**时期,我感受到人世间还有一种欲望,超越食欲和性欲。那样的饥渴,那样的迫不及待,那样的不顾一切,那样的不知羞耻,那样的不择手段,那样的心毒手狠,心心所念,只是为了权力,这就是权欲.人世间居然会有这种东西,如此强烈,令我惊奇, 



    古代权力私有的特性,更兼中国传统文化中的拜权主义,两者叠加,在中国历史舞台上,演出了一幕又一幕血腥的连续剧。 



    还有一种原因导致权大欺主,有人将其称为权力结构的不稳定性. 



    《左传》云故王臣公,公臣大夫,大夫臣士,士臣皂,皂臣舆,舆臣隶,隶臣僚,僚臣仆,仆臣台。 



    这句话,清晰地勾勒出封建社会的基本结构。其主要特征是一级压一级,形成一种压力—稳定结构。整个系统的稳定,取决于压力的梯度,越往上去,压力越大,权越重。根据韩非子的学说,处于这种压力结构最上端的君王,必须具有一种强大的势(以势压人),君王一旦失去其势,整个压力系统就会崩溃。一般开国的君王,熟谙权术,具有铁腕,拥有某种强势,下面的人摄于其势而不敢有非分之想。这种铁腕和强势,在其后人那里却难以为继,甚至出现像晋惠王这样昏聩的白痴,或像溥仪这样幼年登基的小皇帝,强势荡然无存,于是出现强枝弱干,权大欺主,取而代之. 



    权大欺主是封建社会始终没有解开的一道难题。

第九定律,皮毛定律




    皮之不存,毛将焉附.这句话,写的是中国知识分子千年之病,千年之痛。自从秦始皇统一中国之后,中国的知识分子就变成了毛. 



    毛是个什麽东西,有一股腥膻之味。堂堂乎文人雅士,怎麽会是毛? 



    秦之前,文人们曾经有过一段美好时光。他们负笈而行,周游列国,天马行空,十分浪漫。那时的人,他们笈中装着的那份精彩只属于他们自己,独一无二。他们背负着它,走遍世界。他们是要用自己的思想去说服全世界。他们的思想像凌空而过的天马,高远而神奇。诸子百家,(三?)教九流,每一流派都是一股清泉,喷涌而出。清泉汇集之处,是大海,激荡澎湃。 



    秦以后的文人,他们的笈中只有先人的经书和教义,他们整日诵咏的是别人思想的片断。文人们没有了思想,失去了自我,甘洌的清泉完全干涸了。天马没有了,只剩下一些依附於皮上的随风抖动的毛. 



    秦始皇时代,确实有过一些活的不耐烦的文人,他们执着於自成一家,不肯统一,后来都被秦始皇送到坑里去了。自那以后,文人们都学了乖,知道坑的厉害,自觉地维护统一,不再闹独立性了。 



    林彪的话,含有某种哲理。我们这麽大的国家,如果人人都固执己见,都要按自己的想法去做,百人百性,众说纷纭,岂不是乱了套?千人敲锣,一锤定音。没有这一锤定音,千面锣只会敲出杂沓之音。 



    我以为秦始皇统一中国,他所作的最重要的一件事,就是统一了中国人的思想。不过,这件事的难度相当大。车同轨,书同文,做起来并不难。而要把这些十分固执的文人的思想统一起来,不是秦始皇的雄才大略,也难奏其效。 



    但秦始皇的做法过于血腥,后人诟病甚多,称其为霸道.到隋唐时代,使用的方法就先进得多,不再用霸道而改用王道.如果说秦始皇采用的是大棒政策,唐代以后则更多采用胡萝卜政策。应用科举的方式,使那些出身于豪门或是寒门的士子们都有了进身之阶。顾炎武说,八股之害,甚於焚书。说的就是这种胡萝卜政策的有效性和先进性。 



    无论大棒还是胡萝卜,都只是外因。使知识分子变为毛的还有其内因。 



    有人说知识分子是社会的良心。我以为这种说法并不准确,至少在我们中国不可以这样说。 



    如果要用社会的良心去定义知识分子,中国文人的大多数都会被排除在外。 



    许多人不喜欢文人这个词,甚至以为他是一个贬义词。把文人的文去掉,他和普通的人就没有甚麽大区别。一样的有七情六欲,一样的要食人间烟火。治国者为他摆下了盛宴,有颜如玉、黄金屋、千盅粟,他们怎可拒绝?自然就会有学成文武艺,货与帝王家的忠心。这是顺理成章的。当然,文人与普通人还是有一点区别,他们的功利心比普通人更为强烈。这些都是文人变毛的内因。 



    在内因与外因的双重作用下,中国的知识分子都变成了毛.这种变化缘於一种不可抗的力,所以成为一种规律。这也是中国知识分子的宿命,千年不改,万人一律,没有哪个可以逃脱。 



    举国一致,只有一个思想,欧洲人没有做到,我们中国人做到了,这是很值得骄傲的。但世界上的事物都有其两面性,有利必有弊,对于我们的成绩也须一分为二。知识分子都变成了毛,依附於皮之上,当然很好。只是要从这些失去思想的毛中产生出像洛德、卢梭这样思想家以及像牛顿、爱因斯坦这样的科学家,决无可能。晚清以后的落后与挨打,似乎也就成了一种历史的必然。

上下五千年,最强简史.

盘古说:我开;
共工说:我撞;
女娲说:我补;
神农说:我尝;
精卫:我填;
夸父说:我追;
后羿说:我射;
嫦娥说:没射着!

黄帝说:我打;
尧说:我让;
舜说:我也让;
禹说:咱爷们呢?
启说:让是傻子!

桀说:好玩;
汤说:造反,夏亡!

纣说:痛快;
武王说:我也反了,商亡!

幽王说:点火;
褒姒说:刺激;
周亡!

干将说:我铸;
莫邪说:你铸,我也铸;
荆轲说:我刺;
赢政说:没扎着!

秦始皇说:我修;
孟江女说:我哭;
陈胜说:有种?
项羽说:我举;
刘邦说:我斩;
秦亡!

孔子说:我仁;
孟子说:我义;
老子说:我无为;
庄子说:我逍遥;
韩信说:我把他们全抓了!

张良说:我出谋划策;
韩信说:我统帅三军;
萧何说:我运筹帷幄;
高祖说:老婆,咋整?
吕后说:全喀嚓了!

张骞说:我通;
班超说:我也通;
苏武说:通个屁,让你放羊你试试?

卫青说:我打;
霍去病说:我也打;
李广说:我还打;
昭君嫣然一笑,天下太平!

董卓说:我势大;
吕布说:我人帅;
貂禅说:你们俩谁厉害?董卓完蛋了!

曹操说:快帮我脱靴迎老许;
刘备说:快帮我牵驴访诸葛;
孙权说:周郎自有妙计安天下;
周瑜说:加油,烧死老曹;
诸葛亮说:天下三分,人人有份;
司马昭说:向刘备同志学习!晋始!

司马迁说:要想成功,不怕被宫!
班超说:我要出书;
司马相如说:一首赋稿费1000,当写手真爽!
曹操说:操家伙,我要赋诗!
曹植说:命题作文有啥难D呀!
孔明说:我要写道动员令;
淘潜说:你们累不累呀?于是卷着铺盖回家了。

朱温说:我同花顺;
萧道成说:我一条龙;
陈霸先说:重新洗牌~~~~~~~

杨广说:我要去扬州观花;
李渊说:我要公费旅游;
李世民说:魏征,你的意思呢?
李治说:老婆,你的意思呢?
武则天说:真磨唧,不如我说了算;
薛刚说:Y反了你!

骆宾王说:鹅肥;
王勃说:情深;
李白说:酒美:
王维说:园子靓;
孟浩然说:风流;
杜甫说:屋漏;
白居易说:想抱着琵琶唱卡拉OK
李商隐说:西窗剪烛想媳妇。

柴荣说:三武废费有我一份;
赵匡胤说:今年流行黄袍子;
寇准说:带上瓶醋谈判去;
李刚说:保卫家园;
微宗说:没保成;
钦宗说:我想回家;
金突兀说:没门儿!

赵构说:把姓岳的抓了;
岳飞说:我有啥罪?
秦绘说:也许有哦~~~~~~~

陆游说:儿子,爹要死了;
文天祥说:谁都得死D,怕啥呀!

完颜说:金大;
耶律说:辽大;
成吉思汗说:大你个头!
忽必烈说:亚欧大陆我说了算!

朱元璋说;高筑墙;
建文帝说:孙承祖业;
朱棣说:我找我爹;
严嵩说:清史留字;
崇祯说:袁崇焕,你的良心让狗吃了!

李自成说:进城了,歇会儿,找个MM
吴三桂说:敢泡我老婆?
黄太极说:三桂你放心,我罩着你;
顺治说:爱江山更爱美人;
康熙说:江山好管儿子难教;
雍正说:说我狠,我就狠给你看;
乾隆说:我爹是谁?
嘉庆说:和绅是我爹留给我的遗产呐!

施耐庵说:天罡盖地煞;
罗贯中说:孙,刘震问曹;
吴承恩说:全盘西化;
曹雪芹说:爱情小说必须N个美女一帅哥;
蒲松龄说:我是另类我怕谁?

林则徐说:我销;
洪秀全说:我反;
康有为说:我变;
孙中山说:你变的不行。

慈禧说:木偶戏不好演;
李连英说:有奴才伺候;
李鸿章说:9亿白银小意思;
袁世凯说:我脑袋大,脖子粗,不是大款就伙夫

Wednesday, March 21, 2007

Sequence of destroy windows.

http://www.smth.edu.cn/pc/pccon.php?id=1363&nid=77511&pid=0&tag=0&tid=7567

考虑单窗口情况:
假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序:


1.      
手工调用pWnd->DestroyWindow()

2.       DestroyWindow会发送WM_DESTROY

3.       WM_DESTROY对应的消息处理函数是OnDestroy()

4.       DestroyWindow会发送WM_NCDESTROY

5.       WM_NCDESTROY对应的消息处理函数是OnNcDestroy

6.       OnNcDestroy最后会调用PostNcDestroy

7.       PostNcDestroy经常被用户重载以提供释放内存操作。例如可以使用delete this

通过这种方式,窗口对象对应的窗口和窗口对象本身都被释放了。

如果含有子窗口:
     
如果含有子窗口,则调用父窗口的DestroyWindow时,它会向子窗口发送WM_DESTROYWM_NCDESTROY消息。

      具体调用顺序参考下文的例子。


DestroyWindow
delete的影响:
     
应该说前者对后者并没有什么影响。但经常在DestroyWindow间接导致执行的PostNcDestroydelete窗口对象指针,即delete this

      CView::PostNcDestroy中唯一的操作就是delete thisCframeWnd::PostNcDestory也是如此。而默认的CWnd::PostNcDestroy是空操作,CDialog中也没有对其进行重载,即也是空。


delete
Destroy的影响:
      delete
会导致析构函数。CWnd的析构函数中有对DestroyWindow的调用,但必须保证:

m_hWnd != NULL &&


           this != (CWnd*) & wndTop && this != (CWnd*)&wndBottom &&


           this != (CWnd*)&wndTopMost && this != (CWnd*)&wndNoTopMost


      Cdialog
的析构函数中也有对DestroyWindow的调用,但条件比较松,只需要m_hWnd != NULL。另外Cdialog::DoModal也会调用DestroyWindow


      CFrameWnd
OnClose中会调用DestroyWindow,但其析构中不会调用DestroyWindow


      CView
的析构也不会调用DestroyWindow


一个SDI程序的销毁过程
     
CMainFrame类、CMyView类。并且CMyView有两个子窗口CMyDlgCmyWnd的实例。

      点击退出按钮,CMainFrame会收到WM_CLOSE消息。CframeWndCMainFrame的父类)间接会调用CWnd::DestroyWindow;它首先向CMyView发送WM_DESTORYWM_NCDESTROY消息,并引发相应的处理函数;然后向CMyDlg发送WM_DESTORYWM_NCDESTROY消息,并引发相应的处理函数;然后向CMyWnd发送WM_DESTORYWM_NCDESTROY消息,并引发相应的处理函数。

      具体的执行顺序是:

1.       调用CMainFrame::DestroyWindow

2.       CFrameWnd::OnDestroy

3.       CMyView::OnDestroy

4.       CmyWnd::OnDestroy

5.       CmyDlg::OnDestroy

6.       CmyWnd::PostNcDestroy

7.       CmyWnd的析构

8.       CmyDlg::OnDestroy

9.       CmyDlg的析构

10.   CMyView::PostNcDestroy

11.   CmyView的析构

12.   CMainFrame的析构

13.   CMainFrame::DestroyWindow退出

上面情况是假设我们在CmyWndCmyDlgPostNcDestroy中添加了delete this。如果没有添加,则710不会执行。

      因为CView::PostNcDestroy中调用了delete this,所以然后会执行CMyView的析构操作。因为CframeWnd::PostNcDestroy中调用了delete this,所以最后执行CMainFrame的析构操作。

      如果自己的CmyDlgCmyWndPostNcDestroy中有delete this;则二者会被析构。否则内存泄漏。当然delete也可以放在CMyView的析构中做,只是不够OO

总结
     
可以有两种方法销毁窗口对象对应的窗口和释放窗口对象指针。一种是通过DestroyWindow。这是比较好的方法,因为最后MFC会自动相应WM_CLOSE导致CframWnd::DestroyWindow被调用,然后会一次释放所有子窗口的句柄。用户需要做的是在PostNcDestroy中释放堆窗口对象指针。但因为某些对象是在栈中申请的,所以delete this可能出错。这就要保证写程序时自己创建的窗口尽量使用堆申请。

      另一种是deleteDelete一个窗口对象指针有的窗口类(如CWndCdialog)会间接调用DestroyWindow,有的窗口类(如CViewCframeWn)不会调用DestroyWindow。所以要小心应对。

      二者是相互调用的,很繁琐。


一段很好的文章:(作者:闻怡洋)
一个MFC窗口对象包括两方面的内容:一是窗口对象封装的窗口,即存放在m_hWnd成员中的HWND(窗口句柄),二是窗口对象本身是一个C++对象。要删除一个MFC窗口对象,应该先删除窗口对象封装的窗口,然后删除窗口对象本身。


删除窗口最直接方法是调用CWnd::DestroyWindow::DestroyWindow,前者封装了后者的功能。前者不仅会调用后者,而且会使成员m_hWnd保存的HWND无效(NULL)。如果DestroyWindow删除的是一个父窗口或拥有者窗口,则该函数会先自动删除所有的子窗口或被拥有者,然后再删除父窗口或拥有者。在一般情况下,在程序中不必直接调用DestroyWindow来删除窗口,因为MFC会自动调用DestroyWindow来删除窗口。例如,当用户退出应用程序时,会产生WM_CLOSE消息,该消息会导致MFC自动调用CWnd::DestroyWindow来删除主框架窗口,当用户在对话框内按了OKCancel按钮时,MFC会自动调用CWnd::DestroyWindow来删除对话框及其控件。


窗口对象本身的删除则根据对象创建方式的不同,分为两种情况。在MFC编程中,会使用大量的窗口对象,有些窗口对象以变量的形式嵌入在别的对象内或以局部变量的形式创建在堆栈上,有些则用new操作符创建在堆中。对于一个以变量形式创建的窗口对象,程序员不必关心它的删除问题,因为该对象的生命期总是有限的,若该对象是某个对象的成员变量,它会随着父对象的消失而消失,若该对象是一个局部变量,那么它会在函数返回时被清除。


对于一个在堆中动态创建的窗口对象,其生命期却是任意长的。初学者在学习C++编程时,对new操作符的使用往往不太踏实,因为用new在堆中创建对象,就不能忘记用delete删除对象。读者在学习MFC的例程时,可能会产生这样的疑问,为什么有些程序用new创建了一个窗口对象,却未显式的用delete来删除它呢?问题的答案就是有些MFC窗口对象具有自动清除的功能。


如前面讲述非模态对话框时所提到的,当调用CWnd::DestroyWindow::DestroyWindow删除一个窗口时,被删除窗口的PostNcDestroy成员函数会被调用。缺省的PostNcDestroy什么也不干,但有些MFC窗口类会覆盖该函数并在新版本的PostNcDestroy中调用delete this来删除对象,从而具有了自动清除的功能。此类窗口对象通常是用new操作符创建在堆中的,但程序员不必操心用delete操作符去删除它们,因为一旦调用DestroyWindow删除窗口,对应的窗口对象也会紧接着被删除。


不具有自动清除功能的窗口类如下所示。这些窗口对象通常是以变量的形式创建的,无需自动清除功能。


所有标准的Windows控件类。

1.       CWnd类直接派生出来的子窗口对象(如用户定制的控件)。

2.       切分窗口类CSplitterWnd

3.       缺省的控制条类(包括工具条、状态条和对话条)。

4.       模态对话框类。

 


具有自动清除功能的窗口类如下所示,这些窗口对象通常是在堆中创建的。


1.      
主框架窗口类(直接或间接从CFrameWnd类派生)。

2.       视图类(直接或间接从CView类派生)。

 


读者在设计自己的派生窗口类时,可根据窗口对象的创建方法来决定是否将窗口类设计成可以自动清除的。例如,对于一个非模态对话框来说,其对象是创建在堆中的,因此应该具有自动清除功能。


综上所述,对于MFC窗口类及其派生类来说,在程序中一般不必显式删除窗口对象。也就是说,既不必调用DestroyWindow来删除窗口对象封装的窗口,也不必显式地用delete操作符来删除窗口对象本身。只要保证非自动清除的窗口对象是以变量的形式创建的,自动清除的窗口对象是在堆中创建的,MFC的运行机制就可以保证窗口对象的彻底删除。


如果需要手工删除窗口对象,则应该先调用相应的函数(如CWnd::DestroyWindow)删除窗口,然后再删除窗口对象.对于以变量形式创建的窗口对象,窗口对象的删除是框架自动完成的.对于在堆中动态创建了的非自动清除的窗口对象,必须在窗口被删除后,显式地调用delete来删除对象(一般在拥有者或父窗口的析构函数中进行).对于具有自动清除功能的窗口对象,只需调用CWnd::DestroyWindow即可删除窗口和窗口对象。注意,对于在堆中创建的窗口对象,不要在窗口还未关闭的情况下就用delete操作符来删除窗口对象.

Tuesday, March 20, 2007

口译考试


3.18 日在华东师范大学参加高级口译笔试,考的一塌糊涂.工作两年来几乎每天都接触外语,上场一检验,原来自己英语还差远了:( 努力啊~~


Good coding style



Assert, Assert,Assert



Trace Trace Trace Diagnorse Dump



Comment Comment Comment



Verify,Verify,Verify



Try Catch Finally Throw



Error Log, Error Code



Initialize Destroy



Crash Handler


Auto_Ptr


const









Crash Dump.


Create dump files when crash:


1.VS.NET: In debugging mode,select Debug->Save dump as..


2.WinDBG: in debugging mode, in command window, type in: .dump /ma AAA.dmp
The default location is: ..\Debugging Tools for Windows\


3. Dr.Watson: drwtsn32 -p ProcessID.
The default location is: %AllUsersProfile%Application Data\Microsoft\Dr Watson folder.


4. You can even write out your own crash dumps at any time by calling the MiniDumpWriteDump API function from DBGHELP.DLL.

Analysing dump files:


1. VS.NET: Drag and drop .dmp file into VS, and press F5.You'll see the message box pop up reporting the error and, if you have all the appropriate symbols and source, you'll be dropped right on the line where you had the crash. It's that simple!


2.WinDBG: File->Open Crash Dump; In command window, type in: !analyze -v.



Friday, March 16, 2007

C ++ decorated name.

I read the advance breakpoint chapter of Robbin’s book last night.

I am now knowing how to set a breakpoint on os exported functions. It’s amazingJ I’d like to study advance debugging skill after compass is release.

 

Now, the key problem is , as you have indicated, how to find the correct system API function name, such as _MessageBoxExW@20. But there is a small question:

I am confusing about the decorated function name. When I using Depends or dumpbin.exe /Export to view all the exported functions,

for some dlls, it list all the function as decorated name. But for some others, i.e, kernel32.dll, it does not list out the decorated name, just the raw name.

But if I try to set breakpoint with the undecorated name list in Depends, it will not work. Is there a better way to find the function name?

 

 

If a function has a decorated name, then this is the name of a C++ defined function.

In C++ you can have multiple functions with identical names but different signature. To distinguish those functions, they are assigned different internal names, the decorated names.

I think in depends you have an icon in the left column where you can see if it’s a c++ or a c function.

You can read more about this in the VC help.

 

The function naming for ‘normal’ C function is still a little more complicated.

Depending on the debugging information that’s available for VC you need to enter the _xxx@123 name (when the pdb files are loaded) or the xxx name (when the debugger has no symbols but uses only the exported function names information from the dll. And the function names are dependent from the calling convention used for the function.

It should be described in more detail again somewhere in Robbins’ book.

 

If you have installed the symbols and the link to the MS symbol server you should also tell this to the ‘process explorer.’ Options->configure symbols…

As soon as you have done this, you can see call stack information of the running programs from within process explorer.

Just right click on a running process properties->threads->stack

This can be useful if you have a program that appears to ‘hang’