﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-zhoulch</title><link>http://www.blogjava.net/zhoulch/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 07:55:13 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 07:55:13 GMT</pubDate><ttl>60</ttl><item><title>ZT：找到终生伴侣的五个黄金守则</title><link>http://www.blogjava.net/zhoulch/archive/2005/02/20/1379.html</link><dc:creator>zhoulch's blog</dc:creator><author>zhoulch's blog</author><pubDate>Sun, 20 Feb 2005 14:46:00 GMT</pubDate><guid>http://www.blogjava.net/zhoulch/archive/2005/02/20/1379.html</guid><wfw:comment>http://www.blogjava.net/zhoulch/comments/1379.html</wfw:comment><comments>http://www.blogjava.net/zhoulch/archive/2005/02/20/1379.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoulch/comments/commentRss/1379.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoulch/services/trackbacks/1379.html</trackback:ping><description><![CDATA[一个关系学教师提出五个黄金守则以评估长期婚姻成功的远景。 
<br>

<br>
　　当你要选择一个终身伴侣时，绝对没有人要作错误的选择，然而当离婚率高达百 
<br>
分之五十时，你知道有很多人在选择他(她)的伴侣时犯了严重的错误。当你问很多订 
<br>
婚的情侣们为什么要结婚，他们一定会回答说：“我们相爱啊！”我相信这是人们在约 
<br>
会阶段所犯的第一个错误。选择终身伴侣绝对不可只以爱为基础，这也许听起来不太 
<br>
正确但其中有深奥的道理存在。 
<br>

<br>
　　当其它成份都对时，爱就会来临。爱，不是结婚的唯一基础，但它是一个好婚姻 
<br>
的结果，让我再说一遍：你不可以只用爱来营造一个终身的关系，你需要更多。如果 
<br>
你有心要寻找并拥有一个终身的伴侣，这里有五个问题要问你自己。 
<br>

<br>
　　问题一：我们有共同的生活目标吗？ 
<br>

<br>
　　为何这个这么重要？ 
<br>

<br>
　　让我这样讲：如果你已结婚20或30年，那是一段和一个人生活了很长的时间。你 
<br>
们计划如何过这段时间呢？一起吃饭，跑步？你必须和他(她)分享更深更有意义的事 
<br>
情，你们必须有共同的生活目标。在一个婚姻里有两种情形会发生：你们可以一起成 
<br>
长，或者各自成长。百分之五十的人是各自成长的，要使得婚姻成功你必须知道在生 
<br>
活底线上，你要的是什么，然后嫁(或娶)一个和你一样的人。 
<br>

<br>
　　问题二：和这个人分享我的感觉与思想时，觉得安全吗？ 
<br>

<br>
　　这个问题和你们关系的品质有关，“觉得安全”意思是说你能开诚布公的和这个人 
<br>
沟通吗？良好的沟通基础是信任，相信我不会因为表答我的感觉与思想而遭到处罚或 
<br>
伤害。我的一个同事对一个“会凌虐人的人”下了一个定义，那就是某个你害怕对他表 
<br>
达感觉与思想的人。对自己诚实点!确定你要结婚的对象是你在情感上觉得很安全的。 
<br>

<br>

<br>
　　问题三：他(她)是个值得敬佩，很特别的人吗？ 
<br>

<br>
　　这个问题的意思是：他(她)是个高贵而敏感的人吗？你怎么测试他(她)呢？ 
<br>

<br>
　　这里有些建议： 
<br>

<br>
　　他们是否以一般的基础作为个人成长的方法？ 
<br>

<br>
　　他们是否认真的改善自己？ 
<br>

<br>
　　我的一个老师对“好人”下了一个定义，那就是某个常力争上游并做正确的事的 
<br>
人。所以问问你的另一半：他(她)如何利用他(她)的时间？ 
<br>

<br>
　　他(她)是个唯物主义者吗? 通常一个唯物主义者不会将改善品格列为第一优先 
<br>
的。 
<br>

<br>
　　基本上这个世界有两种人： 
<br>

<br>
　　一种是致力于个人成长的人，另一种则是寻求舒适生活的人。 
<br>

<br>
　　那种将舒适的生活列为目标的人，会把个人的享受摆在第一位。在与他(她)走上 
<br>
红地毯以前，你必须要知道这点。 
<br>

<br>
　　问题四：他(她)如何对待其它人？ 
<br>

<br>
　　促进人际关系最重要的是给予的能力。所谓的给予，是使他人快乐的能力。看看 
<br>
这个人是否很欢喜给予？想想看他对那些他不需要对他们好的人是怎样的情形？例 
<br>
如：侍者，公车司机，清洁夫等。他如何对待父母和兄弟姐妹？他懂得感激吗？如果 
<br>
他对那个给他所有东西的人都不懂得感激，不要期望他会感激你。他会八卦并且说别 
<br>
人的坏话吗？会八卦的人不会是懂得爱人的，你可以很确定如果他对别人不好，对你 
<br>
也不会好的。 
<br>

<br>
　　问题五：婚后我是否希望改变这个人？ 
<br>

<br>
　　有太多人犯了这个错误就是希望在婚后“改善”他的配偶。我的一个同事作如是的 
<br>
解释：你可能希望某人在婚后改变……变得更差，如果你无法完全接受他(她)现在的样 
<br>
子，你就还没有准备好要结婚。总结来说，约会阶段不应该是困难危险的，症结是你 
<br>
要多用点头脑少用点心。当你约会时尽可能的客观，要问一些对整个事情有帮助的问 
<br>
题。<img src ="http://www.blogjava.net/zhoulch/aggbug/1379.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoulch/" target="_blank">zhoulch's blog</a> 2005-02-20 22:46 <a href="http://www.blogjava.net/zhoulch/archive/2005/02/20/1379.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>田中芳树的中国历代名将100人[zt]</title><link>http://www.blogjava.net/zhoulch/archive/2005/02/07/1058.html</link><dc:creator>zhoulch's blog</dc:creator><author>zhoulch's blog</author><pubDate>Mon, 07 Feb 2005 13:06:00 GMT</pubDate><guid>http://www.blogjava.net/zhoulch/archive/2005/02/07/1058.html</guid><wfw:comment>http://www.blogjava.net/zhoulch/comments/1058.html</wfw:comment><comments>http://www.blogjava.net/zhoulch/archive/2005/02/07/1058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoulch/comments/commentRss/1058.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoulch/services/trackbacks/1058.html</trackback:ping><description><![CDATA[<P>田中芳树的中国历代名将100人[zt]</P>
<P>中国武将列传 <BR>私撰中国历代名将百人 </P>
<P>　　在中国，有一本叫做《百帝图》的图文集，在里头除了描画有中国历代的无数帝王中所选出的百人画像外，也叙述了其生平的事绩。如果能够仿效这本图文集，从中国历代名将之中选出一百个人，加以列表，做出我等的名将百选，想来也必是一件乐事。于是我便将企划提交给负责的编辑，同时展开公开征求。当然，要做这样的事是有些托大，不过，我认为一旦在杂志上公开，就此较没有可能参杂个人的好恶，而能够更客观地选择。结果，在新年假期结束后，出版社便交给了我被提出的名单。当然，由于“百选”的缘故，在无数候选人之中自然有许多人被惋惜地舍去，因此为了公正起见，我等设定了许多条件，现将这些条件列于其下： </P>
<P><BR>　　　　一、将登上帝位的人物除外。因为我想我些人应该是被选入“帝王纪”中的人才对，故将同样身为杰出武将的他们除外。像是后汉的光武帝（刘秀）、南朝宋的武守（刘裕）、唐的太宗（李世民）、后唐的庄宗（李存勗）、后周的世宗（柴荣）、宋的太祖（赵匡胤）、元的世祖（忽必烈）、金的太祖（阿骨打）、明的太宗洪武帝（朱元璋）、明的成祖永乐帝（朱棣）、清的太祖（努尔哈赤）、以及清的圣祖康熙皇帝等人均是。 </P>
<P><BR>　　二、将身为文官，在政治上的实绩较军事的上业绩来得更大的人除外。因为我些人应当是列在“名宰相列传”或是“名臣列传”之中的。如齐的管仲、晏婴、赵的蔺相如；秦的李斯，前汉的陈平、萧何；后汉的宪法徇；蜀汉的诸葛亮；前秦的王猛，南朝宋的刘穆之；北魏的任城王；隋的高颎，唐的房玄龄、杜如晦、魏征；宋的赵普、韩琦、范仲淹，辽的耶律隆运；金的完颜宗幹；宋的文天祥、陆秀夫；蒙古的耶律楚材；元的刘秉忠、脱脱；明的李善长、刘基，以及清的林则徐、左宗棠等人均是。 </P>
<P><BR>　　三、将清朝灭亡之后，近代的人亦除外。因为这样的人物已非属于武将，而应该称为军人。我们也不可能把骑兵队与航空战力拿来相提并论。这些人包括了蔡锷、蔡延锴、朱德、陈毅等。 </P>
<P><BR>　　四、避免特别执着于某些特定的时代。也许是我个人管得太多，但是从日本人的眼光来看，由于对中国历史知识的关心有所偏向，因此几乎是只对在某些特定文学作品中登场的人有印象而已。如果我不注意这点的话，那这份名单就还不如让对某个时代有专门兴趣的人去找这个时代的其他资料好了。 </P>
<P><BR>　　在依照以上四项条件进行考选的过程中，最后还是发现超过了原先所预计的人数约八十余人，因而一度陷入了困难像。像是在有名的楚汉争霸时代，自项羽举兵至其死亡为止，前后总共也不过只有七年多，然而却选出了三人；再如清朝自康熙帝至乾隆帝的一百三十余年中，有名的将军武将共有十人以上，要从其中挑出一、两名也都十分困难。结果，最后就只能再从这些具有相似功绩的武将，依其个性做为取舍的基准了。 </P>
<P>　　先撇开这些不谈，其实，对于中国的历史，依中国人的眼光，能够称为名将的条件又是如何呢？根据从中国大陆、台湾、香港等地确认后的结果，主要可归类和独立性的人。 <BR>　　Ａ、抵抗北方强大异民族侵略，守护中国人的自尊的独立性的人。 <BR>　　Ｂ、在现实上成功地统一天下，以及重新让和平恢复的人。 <BR>　　如果不是满足了上列两个条件的人的话，当然在评价上就是不会是属于最高级的。因此，中国人本身对于诸葛亮的评价，反而就不如日本人想得那么高了，这就是因为诸葛亮他并没有满足上述两个条件中任何一个的缘故。也因此，在这一回我们所编纂的列表之中，大半的人都必须满足以上两者中至少一个的条件。惟一的例外，就是那些身为异民族，却在中国树立了征服性的王朝，并以独创的军事行动改变了历史动向的少部份了。 </P>
<P>　　那么，以下就将这份列表公开： </P>
<P>春秋时代（四名） <BR>　　一、孙武 <BR>　　二、伍子胥（名员） <BR>　　三、范蠡 <BR>　　四、赵襄子（名无恤） <BR>战国时代（八名） <BR>　　五、吴起 <BR>　　六、孙膑 <BR>　　七、乐毅 <BR>　　八、田单 <BR>　　九、廉颇 <BR>　　十、赵奢 <BR>　　十一、信陵君（姓名为魏无忌） <BR>　　十二、李牧 <BR>秦时代（三名） <BR>　　十三、白起 <BR>　　十四、王翦 <BR>　　十五、蒙恬 <BR>楚汉争霸时代（三名） <BR>　　十六、项羽 <BR>　　十七、张良 <BR>　　十八、韩信 <BR>前汉时代（七名） <BR>　　十九、周亚夫（父为周勃） <BR>　　二十、李广 <BR>　　二一、卫青 <BR>　　二二、霍去病 <BR>　　二三、赵充国 <BR>　　二四、郑吉 <BR>　　二五、陈汤 <BR>后汉时代（八名） <BR>　　二六、邓禹 <BR>　　二七、冯异 <BR>　　二八、岑彭 <BR>　　二九、马援 <BR>　　三十、班超 <BR>　　三一、曹操 <BR>　　三二、关羽 <BR>　　三三、周瑜 <BR>三国时代（三名） <BR>　　三四、司马懿 <BR>　　三五、陆逊 <BR>　　三六、邓艾 <BR>东西两晋时代（五名） <BR>　　三七、杜预 <BR>　　三八、王濬 <BR>　　三九、陶侃 <BR>　　四十、祖逖 <BR>　　四一、谢玄 <BR>南北朝时代（六名） <BR>　　四二、檀道济 <BR>　　四三、韦叡 <BR>　　四四、杨大眼 <BR>　　四五、斛律光 <BR>　　四六、兰陵王（姓名为高长恭） <BR>　　四七、萧摩诃 <BR>隋时代（三名） <BR>　　四八、韩擒虎 <BR>　　四九、刘方 <BR>　　五十、张须陀 <BR>唐时代（十二名） <BR>　　五一、李靖 <BR>　　五二、李勣 <BR>　　五三、秦叔宝（名琼） <BR>　　五四、尉迟敬德（名恭） <BR>　　五五、苏定方（名烈） <BR>　　五六、薜仁贵（名礼） <BR>　　五七、王玄策 <BR>　　五八、裴行俭 <BR>　　五九、高仙芝 <BR>　　六十、郭子仪 <BR>　　六一、李朔（父为李晟） <BR>　　六二、李克用 <BR>五代十国时代（二名） <BR>　　六三、王彦章 <BR>　　六四、周德威 <BR>宋、辽、金时代（十三名） <BR>　　六五、曹彬 <BR>　　六六、杨业（小说中称为杨继业） <BR>　　六七、耶律休哥 <BR>　　六八、穆桂英（女性） <BR>　　六九、狄青 <BR>　　七十、宗泽 <BR>　　七一、岳飞 <BR>　　七二、韩世忠（妻为梁红玉） <BR>　　七三、完颜宗弼（女真名为兀术） <BR>　　七四、虞允文 <BR>　　七五、孟珙 <BR>　　七六、完颜陈和尚（名彝） <BR>　　七七、张世杰 <BR>元时代（三名） <BR>　　七八、伯颜（八怜氏族） <BR>　　七九、郭侃 <BR>　　八十、扩廓贴木儿 <BR>明时代（十名） <BR>　　八一、徐达 <BR>　　八二、常遇春 <BR>　　八三、姚广孝（法名为道衍） <BR>　　八四、郑和 <BR>　　八五、于谦 <BR>　　八六、王守仁（号阳明） <BR>　　八七、戚继光 <BR>　　八八、袁崇焕 <BR>　　八九、秦良玉（女性） <BR>　　九十、郑成功 <BR>清时代（九名） <BR>　　九一、多尔衮 <BR>　　九二、明亮 <BR>　　九三、杨遇春 <BR>　　九四、李长庚 <BR>　　九五、关天培 <BR>　　九六、僧格林沁 <BR>　　九七、李秀成（太平天国） <BR>　　九八、石达开（太平天国） <BR>　　九九、刘永福 </P>
<P>　　在上面的列表中，共整理出了九十九名，至于第一百名则留空，希望由读者自己来选出。笔者个人的候补名单，包括有蜀汉的赵云；隋的沈光；唐的王式，宋的刘錡、吴璘；金的宗望；以及明的李文忠等人。其中隋的沈光兼具有骁勇、侠义、以及洒脱，是'中国快意男儿列传'中所不可或缺的人物。然而由于他实际上并没有真正指挥过大军的经验，因此这次只好割爱。而蜀汉的赵云，无论在为官的见识和战术指挥的能力上都可说是五虎将军中的佼佼者，与被民众神格化、祀奉于'关帝庙'中的第三十二人关羽是不遑多让的。此外，身为宦官，然却以骁勇善战之武将而知名的人物，则还有前秦的张如，以及宋的秦翰等。 </P>
<P>　　在同属乱世的五胡十六国、以及五代十国等时代，上榜的人却意外之少的原因，则是因为这些时代杰出的武将几乎都自立为王的关系。此外，虽然有着乱世出名将的观点，然而往相反的方向思考，如果没有统一天下的力量，只是让战乱持续下去的话，那对民众绝对是没有益处的。因此，前述名将的条件Ｂ看来就确实有其必要性了！当然，历史的状况如果全因一个人的力量就能有所发迹的话，虽也是很危险的一件事，但这人一定若非名将即为大军师，必定会留名后世的。 </P>
<P>　　第五十七位的王玄策，可说是个相当特异的人物，他所驱驰的战场并非中国本土，而是在遥远的印度。 <BR>西历六四七年，王玄策受唐太宗之命，前往印度访问与唐有友好关系之印度玛卡达国的国王西拉迪提亚。在好不容易到了印度之后，却发现西拉迪提亚王已死，王位被一个叫做阿尔裘那的人所篡夺。同时，不光是玛卡达国，当时全印度几乎均陷入战乱之中。王玄策等大唐使者一行人还受到阿尔裘那派兵袭击，身陷牢狱之中。幸好后来王玄策安然脱困，逃离了玛卡达。 </P>
<P>　　王玄策这样就逃回了大唐吗？没有，他策马自印度大陆北上，渡过了甘地斯河和辛都斯坦平原，以喜玛拉雅山脉为目标，一路来到了尼泊尔王国。在这儿，他与阿姆修瓦尔曼王谈判，借用了七千尼泊尔骑兵，再度带兵回到玛卡达国向篡夺者阿尔裘那挑战。 </P>
<P>　　在激战之后，王玄策终于获得了胜利。于甘地斯河畔的决战中，包含象部队在内的阿尔裘那军战死三千，而被追落至水中溺毙的则有一万之数，被俘虏者至少一万一千人，大大地惨败。据推断，其总兵力至少有三万，王玄策以少数之兵获得大胜，而且还是在异国、并以异国之兵得胜，实在是不容易。 </P>
<P>　　王玄策在俘虏了阿尔裘那、回复玛卡达国的和平之后，就率领尼泊尔军回到其母国。当然，这时也救出了其他留在牢狱中的部下，最后回到了大唐。如果王玄策是十八、九世纪大英帝国的将军的话，他大可以就身陷牢狱一事要求赔偿，加上其恢复和平的大功，要将玛卡达国当成殖民地也不是不可能的事。再怎么说，王玄策的功绩都是可和世界史上著名的罗伯特·克莱夫匹敌，而他更是对领土及权利的欲望无缘，到底这是个人的资质呢？还是两个所属文明的价值观不同？本稿的讨论就此打住。 </P>
<P>　　背靠着万年冰雪的喜玛拉雅山、立于尼泊尔骑兵先头、在辛都斯坦平原上奔驰的中国武将之姿，我等可以想象。只是归国之后的他，并没有再度出仕，而是在宫廷的一个房间里默默地写作《中天竺行记》一书。冬日长安，停笔望向窗外，铅色的天空粉雪无声无息地飘落，一面哈着热气的王玄策心中在想些什么呢？而到了老年，他是否又会对着孙子们道往昔，说说那永不会落雪的遥远南国的故事呢？可惜的是，《中天竺行记》一书至今几乎完全没有残留下来，其活跃的史实也惟有从《旧唐书》、《新唐书》，以及从印度出土的铜版文书研究中探索了。 </P>
<P>　　王玄策是往南行，那么，在中国的武将中，向西行到达最远的人又是谁呢？走海路的是第八十四位的郑和，他所率领的大船队横断了印度洋，一直到达非洲的东岸。至于陆路的话，则是第七十九位的郭侃。 </P>
<P>　　西历三五二年，大蒙古帝国的皇弟夫拉可汗率领大军开始了往西方的远征，其中有位汉人的年轻将军郭侃，他乃是第六十位郭子仪的子孙，自祖父那一辈以来就一直出仕于蒙古帝国。 </P>
<P>　　西征军沿着丝路进军，于一二五六年渡过阿姆河。侵入波斯领土的第一个关口为鹫城阿拉莫德，此地乃是在一百六十年间威猛席卷全西亚的回教伊斯玛伊都派暗杀教团的根据地。当时，五万兵力死守绝壁上的要害。死斗之末，郭侃陷落了鹫城阿拉莫德，歼灭了暗杀教团。而也以此事为开端，当其转往东南准备征服喀什来尔时，竟然不战而胜，被称为不费一兵一卒即可陷城的常胜将军。依据《元史》的记载，他是个有时利用骑兵的机动力展开奇袭，有时则下伏兵，除了是位纵横无敌的兵略家外，在攻城战方面也相当拿手。直到巴格达的攻防战为止，他总共陷落了一百二十八座城池。 </P>
<P>　　三五八年二月，这座一千零一夜故事中的都城巴格达在决死的防卫战中陷落，结束了近五世纪的回教教主政权。激烈的攻防战中，郭侃于论格里斯河上以浮桥勇敢地在敌前强行渡河，而当教主企图乘舟逃出巴格达时，就被郭侃手到擒来了。 </P>
<P>　　在攻陷了巴格达后，夫拉可汗并没有停止西进。郭侃率军进入叙利亚境内，准备讨伐富浪。所谓的富浪，指的是当时占据叙利亚和巴勒斯坦一带的欧洲人基督教徒之骑士团或是小国家群，这时的西方世界正是处于十字军东征的时代。 </P>
<P>　　中国的武将与十字军的骑士展开了作战，这并非幻想情节，而是实际存在于史实之中。郭侃一共攻陷了一百二十座左右的富浪城池，在地中海岸策马，然后北上侵入了小亚细亚半岛。当时，富浪的原文发音究竟如何我们不知道，惟一所知的，乃是他们都把身为敌方的郭侃称为'神人'。 </P>
<P>　　随着小亚细亚的平定后，西征可算是告了一个段落，郭侃回到了夫拉可汗的阵前。这时虽然发生了锓入埃及的蒙古军为单眼猛将拜巴尔斯所败一事，但东边也传来了忽必烈汗即位的消息，郭侃在拜别了夫拉可汗后东归。回到蒙古本土谒见忽必烈汗则是发生在三六○年的事。 </P>
<P>　　蒙古的大远征并不需要过度美化，然而中国的武将能够见到地中海的落日，并曾策马攻掠十字军骑士们做为根据地的城塞，则确实是件如画一般不可思议的事。 <BR>　　关于郭侃，书上记载他'所向无敌'，现代也是这么使用来表现这样的情况的。不过，史上最初被如此称呼的勇将又是谁呢？那就是第二十八位的岑彭，他是后汉光武帝时代的人。 </P>
<P>　　历史上，叫嚷着要'再兴汉室'的人不少，但几乎都是彻底惨败，成功的就只有光武帝一个。他在前汉灭亡后，以二十八岁之姿起兵，并以卓越的军事和政治手腕统一了天下。统一后，他也没有肃清任何一位功臣，这点倒是超过了其先祖前汉汉高祖。之后，他还提出了前所未见的奴录解放宣言，在一代之中集创业（以实力统一天下）与守成（确立新的秩序、安定民生、振光文化、并育成后继者等）两者，简直可称为中国史上最棒的名君。在他的手下，有所谓'光武二十八将'之称的名将群，岑彭就是其中之一。常胜不败，而且军规严正，从不做危害民众之事。 </P>
<P>　　光武帝在平定天下，只余下陇和蜀两位之时，位于前线的岑彭收到了光武帝的亲笔书信。光武帝本就为富有文才之人，这时的亲书也以名句而为世所知： <BR>　　'人因不知足而苦，既平陇、复望蜀，每发一兵，头发为之白?quot; <BR>　　这就是'得陇望蜀'的语源。两百年后，因被第三十一位的曹操所引用，因而更为出名。 <BR>　　在平定陇地一年之后，岑彭准备从长江中游前往上游，也就是进入蜀地之中。这时与之对峙的乃是在蜀称帝的公孙述，他率领大军沿长江而下，出三峡而在长江中游筑了一座大要塞。他先在南岸的荆门山与北岸的虎牙山之间以浮桥连结起来，在荒乱的激流中立起数千支的木桩以防敌船入侵。接着又两岸的断崖之上筑楼，列上箭弩，以数万松明照亮夜空，不让一名汉兵有可趁之机。 </P>
<P>　　看到这样的阵仗，即使是岑彭都不得不在第一时间考虑是否要退却了！这时，光武帝激励的亲书来到，接下来便展开了全面攻击。在某个强劲东风吹袭的日子，数千只汉军军船帆满载着风，溯着急流迫近蜀军要塞。水里的木桩阻住军船的进路，加上左右两岸如雨般的箭矢，在一进一退的攻防之中，汉军的先锋部队终于立上了浮桥，放出了准备好的火箭。火势在强风之下一发不可收拾，笼罩了浮桥以至于城楼。在猛火之中，岑彭发动了突进。就这样，有了《后汉书》中'所向无敌'的表现。 </P>
<P>　　在一日中攻陷了水上要塞之后，岑彭虽欲一口气攻下蜀国，然却衩公孙述派出的刺客所暗杀。在此一年之后，汉军终于将公孙述击毙，被了岑彭的仇，并因此达成了统一天下的伟业。这是发生在西历三十六年的事。 </P>
<P>　　在中国历史上，自力成功在统一天下的皇帝，自秦至清也不过大约十人，因此光武帝与二十八将的一事绩应当让更多人所知，并给予更高的评价才是。汉武帝虽为一位英雄君主，然却有滥刑酷杀的倾向，常以无实或轻罪致人死于狱中。此外，他对民政也几乎无甚关心，竟让黄河的堤防决溃二十年以上而不闻不问，造成两百万的民众流离失所、家屋家地流失也不救济。宋太祖赵匡胤则是自先帝手中继承莫大政治遗产的幸运儿；而明太祖朱元璋则以流血肃清，杀死了不少朝野的人才。光武帝完全没有这些人的所为，他之所以被日本所无视，乃是因为和楚汉争霸时代或是三国时代相异，并没有一本广为流传的宣传文书来大吹特吹。像是《三国志》的读者，应当都知道曹操在'官渡之战'后将敌本阵中的文书加以烧毁，用以安定人心之事吗？其实，这乃是模仿光武帝在讨伐了群雄之一的王郎之后，在其阵中烧去文书的行为。 </P>
<P>　　好了，这次的列表并不是'圣人君子列传'，因此其中自然也有一些如问题儿童般的人物，第二十五位的陈汤就可说是其中的代表。他趁总司令官卧病在床的时候擅自动员官兵，而且还假称受命斯瞒部下。当得知事情的总司令官于吃惊之余命令其军队解散时，却被顶了句'事到如今怎能停止？这个没有用的东西，还不赶快下出动命令,同时还以剑相逼，甚至在作战结束之后，不但穿上了战利品，还要求朝廷尽快给予恩赏，真是个乱来的家伙。不过，他在用兵方面倒真是个天才，决断力和行动力亦非寻常，在前汉末朝当上了西域副校尉一职。当时乃是匈奴的黄金时期，郅支单于在西域一带威猛无敌，陈汤领了四万兵力对之全面攻击，在天山山脉周边激战之后，大败匈奴军队，讨伐了郅支单于。也因为这场大胜利的缘故，西哉也暂时回复了和平。 </P>
<P>　　在接连下来的战斗中，陈汤曾有与奇妙的敌人作战的经验，那就是以密集队形作战、带有红或金色毛发、青蓝睛眼的重装步兵团。本来匈奴将支配下的绿洲都市居民或是俘虏所集结编成。因此，陈汤也不免为这特异不同的战斗法所苦。但结果，陈汤还是将之追讨降伏，并于祁连山附近兴筑骊轩城，让他们居住于其中，负责汉帝国的边境警备工作。 </P>
<P>　　这个骊轩城的居民到底是什么来头呢？陈汤在西域之战乃是发生在纪元前三十六年的事，而在经过了两千年后的一九八九年，澳洲的历史学家在兰洲大学进行了一场特别演讲，终于将这神秘事件传达于世。根据他的说法，骊轩城的居民乃是罗马帝国的战士。在纪元前五十五年，罗马的执政官克莱斯士率领七个军团往东方进行远征，而在与中世波斯王朝之一的巴尔迪亚军作战时大败，克莱斯士被杀，罗马军亦溃灭，好不容易其中有六千人突破了包围逃出，但他们并没有回到罗马本国，他们的去向成为西洋史上的谜团。看来他们大概是在受波斯军的追击时，往祖国相反的方向--东方一直前进，最后就进入了匈奴的势力范围中而成为其佣兵部队。目前，骊轩城的遗迹正在进行挖掘调查，看来陈汤与罗马帝国战士们的战斗，在现代的考古学之下，应该很快就能判明了！ </P>
<P>　　此外，虽然并没有更在这次的列表之中，但在十八世纪初，清朝将军也曾经与瑞典军队战过。这乃是因为在有名的北方战争中，瑞典军的兵士为俄罗斯军队所俘虏，并用在中亚方面与游牧民族准噶尔族的作战。在此，俄罗斯军队打败，瑞典人再度成为准噶尔族的俘虏，并传来许多工艺及火炮的技术。而当准噶尔族与清军作战时，这支瑞典人部队最终就与清军对上了。所说其中也有再被俘虏而远至北京的瑞典人，只是不知在非已意之下横越欧亚大陆的他们心中做何感想就是了。 </P>
<P>　　前面说过，这次的列表并不是'圣人君子传'，不过，其中还是出现了令人觉得不可思议的人物，那就是第八十六位的王守仁。王守仁，号阳明，也就是'阳明学派'之祖的那个王阳明。他是个伟大的哲学家，同时也以思想家的身份为日本人所知。其实他是个诚实而有能力的大臣，同时也是代表明代中期的一位战略学。 </P>
<P>　　从小时候起，他就是个孩子王，常玩带兵打仗的游戏，同时也常保护弱小的孩子，拥有相当的人望。长大后，他步向自己的道路，一面任侠，一面热衷于弓术及兵法，也努力于文学，终于在科举中及第而成为官僚。由于他反对污职而恶名高涨的宦官，在受拷问之后遭流放至西南边境。但他并不因此而气馁，以边境知事的身份努力为政，甚至连被捕的盗贼都慕他的名。后来，虐待王守仁的宦官失势，回复了名誉的王守仁便正式开始了其战略家的人生。 </P>
<P>　　要说'武功天下第一'的话，王守仁的武勋倒是没有那么大，不过，在此我们举个例子，那就是他在西历一五一九年平定了骚动整个明帝国的'宁王之乱'。 <BR>　　宁王家乃是明朝有力的皇族，拥有以南昌为中心的长江中游的广大领地，亦自夸有七万军队的富强。第五代宁王时，正值武宗正德皇帝沉溺于异常淫乐、荒废国政之际，因而起了篡夺的野心，与官邸的奸臣们互通，立下种种阴谋，最后终于举兵冲向南京，准备以实力夺取天下。 </P>
<P>　　察知其叛乱计划的王守仁，召集了附近的官军，直指南昌城。得知此事的宁王为了不让根据地被夺，慌忙率军返回。王守仁一开始就等这么一着，就这样敌我合计共十四万的大军在鄱阳湖畔展开了冲突，鄱阳湖乃是大于日本最大的琵琶湖六倍的广阔淡水湖，两军就在水上、陆上死斗。官军的将军伍文定本想对敌使用火攻，然而却因风向急变，火焰竟然烧着了自己的胡髭，让人笑也不是、不笑也不是。不过，在这样的环境中，王守仁的作战指挥还是一一中的，在死斗第三日将宁王完全逼至绝地，其所乘的军船亦为火焰和烟雾所包围。 </P>
<P>　　宁王的妃子以美貌和聪明为世所知，她虽早知其夫的野心而数度建言，然而宁王却不听她的话，因而遭到了今日的悲运。在领悟到已经不可能脱逃之后，王妃向其夫带泪一礼说道：'今后您就不必再为妾身担心了?quot;，于是便投身湖中。宁王虽然也想自杀，但却失败而为官军所捕。被带到王守仁面前时，宁王流着眼泪希望能够厚葬王妃，王守仁承诺此事，此到了王妃遗体后，便加以郑重厚葬。 </P>
<P>　　由于王守仁的关系，救了明帝国，然而腐败背德的朝廷却无视于他的功绩。正德皇帝周边的奸臣将俘虏的守王先释放后再把他捉回，欲将平定叛乱的功绩揽在自己身上，而王守仁则冷静对应，勉于真理的追究，提出'知行合一'、'致良知'等学说。本稿对于思想家的王阳阴并不打算加以论断，帮在此打住。 </P>
<P>　　王守仁的情况，是在中央没有信赖、支援关系的情况下建立了大功，像这样的事当然应该香蕉是一件好事。另外，在南北朝时代，由于有力的皇族或将帅篡夺的事件层出不穷，因此皇帝的猜疑心特强，其中还能保有对人之信赖而维持了五十年治世的，大概就是南朝梁武帝了！他虽然笃信佛教，但并不是无抵抗的和平主义，当敌人攻来时，他还是会起而战斗的。 </P>
<P>　　西历五○六年，北朝的北魏发起了号称百万的大军侵入了梁的国境。虽然是号称，实际上大约只有这数字的一半，但毕竟还是压倒性的大军，其目的当然要统一天下。总帅为有能的皇族中山王元英，而实战的指挥官则是第四十四位的杨大眼，算是当时天下刚勇第一的猛将。而相对的，梁这方面则动员了二十万的军队，总帅则为第四十三位的韦叡。 </P>
<P>　　韦叡是武帝即位前就有的心腹，建立过不少功绩，但他的身体却较弱。在他的生涯之中，往来战场从来都没有骑过马。他总是连甲胄也不着，一身襦服就乘上了木制的舆轿，由兵士抬着指挥全军。照道理来说，较高的位置总是敌方箭矢集中的所在，然而他却从不害怕，挥舞着竹杖动员军队，以君子风格的智将身份受到兵士们的尊敬。 </P>
<P>　　北方的猛将与南方的智将间激烈冲突的'钟离之战'，可说是南北朝时代约一百七十年间最大的'南北大战'，其在历史上的意义可与'赤壁之战'匹敌，战斗的规模更是凌驾其上。只不过这场战役对日本人来说直到今日也没有什么人知道，意欲概述却数字难尽，还是以后等机会吧！（译注：作者另有一书《奔流》即是以钟离之战为背景的故事小说。） </P>
<P>　　虽然是从如开玩笑般的一句话所开始的企划，但是机会难得，笔者确实是想借这个机会来介绍所知的名将。下一回的连载会自何时开始虽然尚不得知，但必定会尽快使之实现，并希望能够从韦叡和杨大眼的故事开始与大家大享。而在这次的列表中，在《史记》中有登场的人物共二十二名；在《三国志》中登场的人物共八名。这三十名都是知名度甚高的人物，关于他们的事情，由于在其他地方比较容易见到，因此我也可能就一笔给他带过，反正笔者已经很辛苦地列出了这样的一个列表，冲着这一点，就请各位读者原谅笔者的任性自我吧！ </P>
<P><BR>（本文收录于《小说中公》一九九五年三月号／中央公论社） </P>
<P>开端 </P>
<P>　　在这本书的一开始，虽然放了一篇“私撰中国历代名将百人”，这乃是收录于《小说中公》一九九五年三月号内的文章，然而实际上写这篇文章的时间却更早，应该是在一九九五年的元日一假期收假后的事。 </P>
<P>　　在前面也说过，这份企划其实一开始只是与中央公论社的编辑间的玩笑话而已，如果那时我认真讨论的话，那就一定会谈到我下一部作品的确切截稿时间，因而我只有努力地另找话题。正巧在这时谈到在中国发现《百帝图》这么一本书的事，这乃是一本自中国历代的皇朝中选择出一百名皇帝，于其画像帝附有短评形式的书籍。谈着谈着，就说到如果把中国历代的名将中也选出百人来加以短评的话，应该也蛮有趣的。于是现在写在这儿实在也是没办法的事--因为那时如果我不想再受长篇小说的截稿压力的话，那就只好接受这种短篇形式啦！就像是本金还不出来，所以就只好先还还利息来应应急一样。而也因为这样子，当时后在《小说中公》中发表了这样的事情之后，就逼得我只有在新年收假之后来决定这最后选出的百人了。 </P>
<P>　　说到这选取嘛，一开始是蛮快乐的事情，等到过了五十人之后，就开始不好玩了。因为候选人太多了嘛！到底应该选谁，又该把谁删去呢？如果选了Ａ而没选Ｂ的话，那又是为了什么要选择Ａ呢？由于必须要有一个明确的理由，因而最后当我决定要选谁时，就越来越痛苦了。 </P>
<P>　　总之，先以之前所写的那篇文章中的条件来评断一番，最后总算在不偏颇任何一个时代的状况下决定出了百人。正确地来说，除了留给读者所自行评断的一人之外，应该为九十九人。在整理了名单之后，如果每篇写个五、六人的话，在页数许可的范围内，每一个的确大概也只能写个一到二页的短评而已。 </P>
<P>　　最后，虽然我是有在文章里说到以后如果有机会的话，还是会再介绍那些这次所遗漏的人，但不管怎么说，只要这样写了，以后我当然就有必须要在《小说中公》中介绍他们的议务。这就大概像是在现实中你当然是不能够永远只还利息而已，也算是个教训吧！ </P>
<P>　　很可惜，后来《小说中公》因为某些原因而停刊，我的这份稿俩自然也就不了了之，但再怎么说，我总不能因为别人的不幸而暗自欣喜。之后，很意外地，从德间书店那儿提出了一个与陈舜臣先生对谈的企划。而这次的对谈，不能说完全以此为基准啦，但至少还是有些参考，就在与陈老师谈论了关于中国历史上的许多人物之后，在中央公论社的同意下，最后作为资料使用。而另一方面，这本向陈老师请益对谈的书，最后也由德间书店方面出版（注：即《中国名将之条件》一书）。从看完这本书的读者所寄来的信函中提出：虽然其中有提到名将百人，但几乎全部都没有什么论及，更何况是其他人呢！这真是非常严厉的指责。 </P>
<P>　　因此，这回不管怎么说，对于读者可真是本金利息都得还了。只不过，如果一个一个来写的话，真不知道要写到何时方了，只是趁这个机会，一定要把那些之前也许只提到名字，其他完全只字未提的人做个介绍才可以。 </P>
<P>　　我想，就像司马迁的《史记》所确立的、以传记体的方式来书写这本历史书。简单地来说，就是集结各人物的传记，然后再从中叙述出那个时代的故事。以这个方法来集结可代表中国各时代的名将百人，然后再从中俯瞰中国全体的历史。当然，这样的工程很浩大，不禁让我想到以找的知识及关心所及的范围，是否真能负荷。但因与中央公论社等人之间的讨论，最后还是写出了这本书。 </P>
<P>　　在长时间的前置作业之后，好不容易才将百人--九十九人依时代顺序排列了出来。像是战国时代、南北朝时代等，就以这样的时代为区隔，让文章一一地依顺序往前进。 <BR>　　以最后的列表看来，大致是自春秋时代开始，在此之前的时代均加以割爱。这乃是因为关于在此之前的作战--与其说是作战，根本连时些时代本身都有一半为神话传说支配，实在是难以用明确的史实加以判明。中国有一个黄帝纪元的方式，以西元二○○○年来说，那已经大约为黄帝纪元的四七○○年左右了！而在这即使多少有误差，但也大致相去不远的四千七百年历史之中，其前面的三分之一归属于神话传说领域的要素实在太强，因此还是决定将之省去。 </P>
<P>　　就这样，决定了自春秋时代开始进行这个选取中国历代名将百人之企划，然而，说到中国历史上最初的名将，脑海中会浮现出一个名叫太公望的人应该不少吧！太公望吕尚（注：生殁年不明，又号姜子牙。虽然在灭亡殷商、建立周朝之际为有名之谋臣，但除了两、三项战斗的指挥与献策外，具体的功绩并没有留传下来。惟其为中国传说中有名的军师，在为关羽取代之前乃是中国之武神。从其“姜”这个性，以及“周”这个文字本来为盾的意思看来，据推测，周可能为西藏系统的战斗民族。--《史记》卷三十二齐太公世家。），又号姜子牙。由于这资助有人数上的限制，加上他在史实上无法判明的事情还不少，因此也只好将其舍去了。 </P>
<P>　　既然决定了要从春秋时代开始，当然在此之前的太公望就不应该算入，否则如果从太公望开始计算的话，那之前当然也有战斗，当然也有让战斗转为有利之人，那这些人又该怎么办？就算是已经是神话世界中人的黄帝，他也有像军师一类的人才呀！关于这点，则几乎连资料都找不到了，因此，我想由春秋时代开始还是有其必要的。<BR></P><img src ="http://www.blogjava.net/zhoulch/aggbug/1058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoulch/" target="_blank">zhoulch's blog</a> 2005-02-07 21:06 <a href="http://www.blogjava.net/zhoulch/archive/2005/02/07/1058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA平台下ArcEngine开发小结</title><link>http://www.blogjava.net/zhoulch/archive/2005/02/03/982.html</link><dc:creator>zhoulch's blog</dc:creator><author>zhoulch's blog</author><pubDate>Thu, 03 Feb 2005 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/zhoulch/archive/2005/02/03/982.html</guid><wfw:comment>http://www.blogjava.net/zhoulch/comments/982.html</wfw:comment><comments>http://www.blogjava.net/zhoulch/archive/2005/02/03/982.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoulch/comments/commentRss/982.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoulch/services/trackbacks/982.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><FONT face="Courier New"><SPAN lang=EN-US>JAVA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台下</SPAN><SPAN lang=EN-US>ArcEngine</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发小结</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face="Courier New">&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Courier New"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发环境：</SPAN><SPAN lang=EN-US>j2sdk<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899">1.4.2</st1:chsdate></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN lang=EN-US>ArcEngine 9.0</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN lang=EN-US>eclipse 3.0.1</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN lang=EN-US>apache-ant-1.6.2</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Courier New">&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Courier New">第一步：设置环境变量（已开发环境为例）</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Courier New">ANT_HOME = D:\JAVA\apache-ant-<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899">1.6.2</st1:chsdate></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Courier New">JAVA_HOME = C:\j2sdk<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899">1.4.2</st1:chsdate></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Courier New">ARCENGINEHOME = C:\Program Files\ArcGIS</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Courier New">CLASSPATH = %JAVA_HOME%\lib</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face="Courier New">Path = %JAVA_HOME%\bin;%ANT_HOME%\bin;%ARCENGINEHOME%\bin</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Courier New">&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Courier New">解释：</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo1; tab-stops: list 18.0pt"><FONT face="Courier New"><SPAN lang=EN-US style="mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">1、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT size=3>&nbsp; </FONT></SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</SPAN><SPAN lang=EN-US>ESRI</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</SPAN><SPAN lang=EN-US>ArcEngine JAVA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发环境介绍上所写的是用</SPAN><SPAN lang=EN-US>ESRI</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自己的</SPAN><SPAN lang=EN-US>arcgisant</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，其实这个只是将</SPAN><SPAN lang=EN-US>apache-ant</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">包装了一下，用普通的</SPAN><SPAN lang=EN-US>ant</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一样没问题；</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo1; tab-stops: list 18.0pt"><FONT face="Courier New"><SPAN lang=EN-US style="mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">2、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT size=3>&nbsp; </FONT></SPAN></SPAN></SPAN><SPAN lang=EN-US>%ARCENGINEHOME%\bin</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录下所放的是</SPAN><SPAN lang=EN-US>Native Code</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</SPAN><SPAN lang=EN-US>AO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">组件，也就是供程序运行时所调用的。</SPAN><SPAN lang=EN-US>AE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的</SPAN><SPAN lang=EN-US>JAVA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发包，其实就是把</SPAN><SPAN lang=EN-US>Native</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</SPAN><SPAN lang=EN-US>AO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">组件，提供了</SPAN><SPAN lang=EN-US>JNI</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的调用方式，以供</SPAN><SPAN lang=EN-US>JAVA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Courier New">&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Courier New"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第二步：在</SPAN><SPAN lang=EN-US>ECLIPSE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构建路径中加入必要的</SPAN><SPAN lang=EN-US>jar</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><FONT face="Courier New"><SPAN lang=EN-US style="mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">1、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT size=3>&nbsp; </FONT></SPAN></SPAN></SPAN><SPAN lang=EN-US>jintegra.jar</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这是</SPAN><SPAN lang=EN-US>AR</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的</SPAN><SPAN lang=EN-US>JAVA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发包能够调用</SPAN><SPAN lang=EN-US>Native Code</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">组件的关键，它提供的是在</SPAN><SPAN lang=EN-US>JAVA</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环境下调用</SPAN><SPAN lang=EN-US>COM</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">组件的能力；</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><FONT face="Courier New"><SPAN lang=EN-US style="mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">2、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT size=3>&nbsp; </FONT></SPAN></SPAN></SPAN><SPAN lang=EN-US>arcgis_visualbeans.Jar</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，提供了</SPAN><SPAN lang=EN-US>AE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的可视化组件；</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt"><FONT face="Courier New"><SPAN lang=EN-US style="mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">3、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT size=3>&nbsp; </FONT></SPAN></SPAN></SPAN><SPAN lang=EN-US>arcobjects.jar</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，提供了</SPAN><SPAN lang=EN-US>AO</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的核心组件；</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Courier New">&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Courier New">第三部：编码</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><FONT face="Courier New">（略）</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT face="Courier New">&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Courier New"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第四部：写</SPAN><SPAN lang=EN-US>ANT</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Courier New"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模仿</SPAN><SPAN lang=EN-US>ESRI</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所提供的例子程序中的即可，但要注意以下几点：</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo3; tab-stops: list 18.0pt"><FONT face="Courier New"><SPAN lang=EN-US style="mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">1、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT size=3>&nbsp; </FONT></SPAN></SPAN></SPAN><SPAN lang=EN-US>ANT</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件，还需要有</SPAN><SPAN lang=EN-US>properties.xml</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN lang=EN-US>sample.properties</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两个文件，</SPAN><SPAN lang=EN-US>properties.xml</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中定义了环境变量，</SPAN><SPAN lang=EN-US>sample.properties</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是为打包</SPAN><SPAN lang=EN-US>JAR</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的</SPAN><SPAN lang=EN-US>MANIFEST.MF</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件服务的；</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo3; tab-stops: list 18.0pt"><FONT face="Courier New"><SPAN lang=EN-US style="mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">2、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT size=3>&nbsp; </FONT></SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改</SPAN><SPAN lang=EN-US>sample.properties</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中的</SPAN><SPAN lang=EN-US>unit.name</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US>main.class</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo3; tab-stops: list 18.0pt"><FONT face="Courier New"><SPAN lang=EN-US style="mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">3、<SPAN style="FONT: 7pt 'Times New Roman'"><FONT size=3>&nbsp; </FONT></SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将</SPAN><SPAN lang=EN-US>Build.xml</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开头的</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo3; tab-stops: list 18.0pt"><FONT face="Courier New"></FONT><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&nbsp;</P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><FONT face="Courier New"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">&lt;?</SPAN><SPAN style="COLOR: #ff00ff">xml&nbsp;version="1.0"</SPAN><SPAN style="COLOR: #0000ff">?&gt;</SPAN></FONT><SPAN style="COLOR: #000000"><BR><FONT face="Courier New"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></FONT></SPAN><SPAN style="COLOR: #0000ff"><FONT face="Courier New">&lt;!</FONT></SPAN><FONT face="Courier New"><SPAN style="COLOR: #ff00ff">DOCTYPE&nbsp;project[<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!ENTITY&nbsp;properties&nbsp;SYSTEM&nbsp;"file:properties.xml"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></FONT><SPAN style="COLOR: #000000"><BR><FONT face="Courier New"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>]&gt;</FONT></SPAN></DIV></DIV>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo3; tab-stops: list 18.0pt"><FONT face="Courier New"></FONT></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-highlight: white"><FONT face="Courier New" size=3>改为</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><FONT face="Courier New"></FONT><SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-highlight: white"><SPAN lang=EN-US><o:p>&nbsp;</P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><FONT face="Courier New"><FONT size=3><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">&lt;?</SPAN><SPAN style="COLOR: #ff00ff">xml&nbsp;version="1.0"</SPAN><SPAN style="COLOR: #0000ff">?&gt;</SPAN></FONT></FONT><SPAN style="COLOR: #000000"><BR><FONT face="Courier New" size=3><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></FONT></SPAN><SPAN style="COLOR: #0000ff"><FONT face="Courier New" size=3>&lt;!</FONT></SPAN><FONT face="Courier New"><FONT size=3><SPAN style="COLOR: #ff00ff">DOCTYPE&nbsp;project[<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!ENTITY&nbsp;properties&nbsp;SYSTEM&nbsp;"properties.xml"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></FONT></FONT><SPAN style="COLOR: #000000"><BR><FONT face="Courier New" size=3><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>]&gt;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></FONT></SPAN></DIV></DIV></o:p></SPAN></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体"><o:p><FONT face="Courier New" size=3>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-highlight: white"><FONT face="Courier New" size=3>第五步：运行<SPAN lang=EN-US>ANT</SPAN>构建即可</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-highlight: white"><FONT face="Courier New"></FONT></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-highlight: white"><FONT face="Courier New"><IMG title=MapTocToolbar height=768 alt=sample.JPG src="http://www.blogjava.net/images/blogjava_net/zhoulch/sample.JPG" width=1024 border=0></FONT></SPAN></P><img src ="http://www.blogjava.net/zhoulch/aggbug/982.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoulch/" target="_blank">zhoulch's blog</a> 2005-02-03 22:20 <a href="http://www.blogjava.net/zhoulch/archive/2005/02/03/982.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用devMetrics衡量程序的复杂度，从而提高软件质量 </title><link>http://www.blogjava.net/zhoulch/archive/2005/01/13/278.html</link><dc:creator>zhoulch's blog</dc:creator><author>zhoulch's blog</author><pubDate>Thu, 13 Jan 2005 12:55:00 GMT</pubDate><guid>http://www.blogjava.net/zhoulch/archive/2005/01/13/278.html</guid><wfw:comment>http://www.blogjava.net/zhoulch/comments/278.html</wfw:comment><comments>http://www.blogjava.net/zhoulch/archive/2005/01/13/278.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoulch/comments/commentRss/278.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoulch/services/trackbacks/278.html</trackback:ping><description><![CDATA[<p>越复杂的东西越容易出错，自动步枪的威力强于狼牙棒，但步枪会卡壳，狼牙棒却不会。同样对于软件开发也一样，一个进行FFT变换的程序肯定比一个计算10以内加法的程序要复杂，也更容易出错。</p> <p>软件的复杂有两种，一种是由于问题域自身的复杂所造成的，比如FFT肯定比10以内加法要复杂，这个是我们无法避免的。我所关心的是第二种复杂，就是人为造成的复杂。</p> <p>一个计算FFT的程序，我可以把它化为若干的函数来执行，每个函数只做一件很简单的事，这样每个函数单独都可以由于自身的简单，而充分保证自己的可靠和正确。那么我只要能够让各个函数正确的合作就可以写出一个可靠的FFT程序。也就是说把复杂的问题变成很多个简单的问题。</p> <p>在平时的程序设计中，很难对复杂有个明确的定义和划分界限。是以代码长度？还是以算法的复杂？而且如果由人工来完成，那么由于人的惰性，写完程序就已经可以手工了，很少有人会去检查程序中各个模块的复杂性，就更不会去主动重构代码，来降低他的复杂度了。</p> <p>今天看到一个工具devMetrics，是在VS.NET下对代码复杂性进行分析的工具。我用它对才完成的GisMediator进行分析。结果如下</p> <p> <table cellspacing="0" cellpadding="0" width="80%" border="1"> <tbody> <tr> <th colspan="3">Member Locations</th> <th colspan="4">Member Measures</th></tr> <tr> <th>Project</th> <th>Class</th> <th>Member</th> <th>Statements</th> <th>Comments</th> <th>Comment Ratio</th> <th>Complexity</th></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisXmlNode">GisXmlNode</td> <td class="Name" title="GisXmlNode">GisXmlNode</td> <td class="Number">11</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">2</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisXmlNode">GisXmlNode</td> <td class="Name" title="GisXmlNode">GisXmlNode</td> <td class="Number">24</td> <td class="Number">6</td> <td class="Number">0.3</td> <td class="Number">7</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisXmlNode">GisXmlNode</td> <td class="Name" title="fGisXmlNodeUnLoad">fGisXmlNodeUnLoad</td> <td class="Number">7</td> <td class="Number">1</td> <td class="Number">0.1</td> <td class="Number">4</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisXmlTree">GisXmlTree</td> <td class="Name" title="GisXmlTree">GisXmlTree</td> <td class="Number">5</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisSchemaElement">GisSchemaElement</td> <td class="Name" title="GisSchemaElement">GisSchemaElement</td> <td class="Number">10</td> <td class="Number">1</td> <td class="Number">0.1</td> <td class="Number">3</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisSchemaSimpleType">GisSchemaSimpleType</td> <td class="Name" title="GisSchemaSimpleType">GisSchemaSimpleType</td> <td class="Number">20</td> <td class="Number">2</td> <td class="Number">0.1</td> <td class="Number">5</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisSchemaComplexType">GisSchemaComplexType</td> <td class="Name" title="GisSchemaComplexType">GisSchemaComplexType</td> <td class="Number">15</td> <td class="Number">1</td> <td class="Number">0.1</td> <td class="Number">5</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisSchemaComplexType">GisSchemaComplexType</td> <td class="Name" title="GisSchemaComplexTypeCompareSequenceBig">GisSchemaComplexTypeCompare...</td> <td class="Number">14</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">8</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisSchemaTree">GisSchemaTree</td> <td class="Name" title="GisSchemaTree">GisSchemaTree</td> <td class="Number">13</td> <td class="Number">1</td> <td class="Number">0.1</td> <td class="Number">2</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisSchemaTree">GisSchemaTree</td> <td class="Name" title="fDecodeSchema">fDecodeSchema</td> <td class="Number">53</td> <td class="Number">14</td> <td class="Number">0.3</td> <td class="Number">24</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisSchemaTree">GisSchemaTree</td> <td class="Name" title="fCompileSchema">fCompileSchema</td> <td class="Number">4</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisSchemaTree">GisSchemaTree</td> <td class="Name" title="SchemaValidationHandler">SchemaValidationHandler</td> <td class="Number">1</td> <td class="Number">1</td> <td class="Number">1.0</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisSchemaTree">GisSchemaTree</td> <td class="Name" title="fSchemaTreeSearch">fSchemaTreeSearch</td> <td class="Number">14</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">11</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Number">2</td> <td class="Number">3</td> <td class="Number">1.5</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="Dispose">Dispose</td> <td class="Number">7</td> <td class="Number">3</td> <td class="Number">0.4</td> <td class="Number">3</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="InitializeComponent">InitializeComponent</td> <td class="Number">80</td> <td class="Number">46</td> <td class="Number">0.6</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="Main">Main</td> <td class="Number">2</td> <td class="Number">3</td> <td class="Number">1.5</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisMainForm_Load">GisMainForm_Load</td> <td class="Number">4</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisMainForm_Closing">GisMainForm_Closing</td> <td class="Number">10</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">10</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisMainMenu_New_Click">GisMainMenu_New_Click</td> <td class="Number">9</td> <td class="Number">2</td> <td class="Number">0.2</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisMainMenu_Open_Click">GisMainMenu_Open_Click</td> <td class="Number">13</td> <td class="Number">3</td> <td class="Number">0.2</td> <td class="Number">3</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisMainMenu_Save_Click">GisMainMenu_Save_Click</td> <td class="Number">2</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisMainMenu_SaveAs_Click">GisMainMenu_SaveAs_Click</td> <td class="Number">7</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">3</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisMainMenu_Print_Click">GisMainMenu_Print_Click</td> <td class="Number">3</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisMainMenu_Exit_Click">GisMainMenu_Exit_Click</td> <td class="Number">2</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisFlexGrid_Initialize">GisFlexGrid_Initialize</td> <td class="Number">18</td> <td class="Number">1</td> <td class="Number">0.1</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="fGisFlexGridSetCellStyle">fGisFlexGridSetCellStyle</td> <td class="Number">26</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">13</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="fGisFlexGridSetContextMenu">fGisFlexGridSetContextMenu</td> <td class="Number">80</td> <td class="Number">6</td> <td class="Number">0.1</td> <td class="Number">31</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisFlexGrid_DoubleClick">GisFlexGrid_DoubleClick</td> <td class="Number">11</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">5</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisFlexGrid_BeforeMouseDown">GisFlexGrid_BeforeMouseDown</td> <td class="Number">20</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">7</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="GisFlexGrid_AfterEdit">GisFlexGrid_AfterEdit</td> <td class="Number">2</td> <td class="Number">0</td> <td class="Number">0.0</td> <td class="Number">1</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="fGisFlexGrid_ContextMenu_Insert">fGisFlexGrid_ContextMenu_In...</td> <td class="Number">32</td> <td class="Number">6</td> <td class="Number">0.2</td> <td class="Number">10</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="fGisFlexGrid_ContextMenu_Delete">fGisFlexGrid_ContextMenu_De...</td> <td class="Number">12</td> <td class="Number">2</td> <td class="Number">0.2</td> <td class="Number">2</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="fGisReadXmlFile">fGisReadXmlFile</td> <td class="Number">8</td> <td class="Number">2</td> <td class="Number">0.3</td> <td class="Number">2</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="fGisXmlToFlexGrid">fGisXmlToFlexGrid</td> <td class="Number">22</td> <td class="Number">7</td> <td class="Number">0.3</td> <td class="Number">8</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="fGisWriteXmlFile">fGisWriteXmlFile</td> <td class="Number">11</td> <td class="Number">3</td> <td class="Number">0.3</td> <td class="Number">2</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="fGisFlexGridToXml">fGisFlexGridToXml</td> <td class="Number">23</td> <td class="Number">3</td> <td class="Number">0.1</td> <td class="Number">7</td></tr> <tr> <td class="Name"><a title="D:\Work\Visual Studio Projects\GisMediator\GisMediator\GisMediator.csproj" name="GisMediator"><font color="#003399">GisMediator</font></a></td> <td class="Name" title="GisMainForm">GisMainForm</td> <td class="Name" title="fGisElementNameMapping">fGisElementNameMapping</td> <td class="Number">24</td> <td class="Number">2</td> <td class="Number">0.1</td> <td class="Number">5</td></tr></tbody></table></p> <p>确实，fDecodeSchema、fSchemaTreeSearch、fGisFlexGridSetContextMenu、fGisFlexGridSetCellStyle都是几个很重要，而且很复杂的函数模块。尤其是fGisFlexGridSetContextMenu，复杂度已经到了31，可见其已经很复杂且臃肿了。看来有必要对这几个函数进行重构了。</p> <p>简单就是美，这点在计算机软件设计上也是不破的真理。过于复杂的程序，一则难以复用，二则难以维护。</p> <p>以后对于自己的程序，可以经常利用devMetrics，务必降低代码模块的复杂性。</p><img src ="http://www.blogjava.net/zhoulch/aggbug/278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoulch/" target="_blank">zhoulch's blog</a> 2005-01-13 20:55 <a href="http://www.blogjava.net/zhoulch/archive/2005/01/13/278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>9月27日南京 微软开发技术大会</title><link>http://www.blogjava.net/zhoulch/archive/2005/01/13/277.html</link><dc:creator>zhoulch's blog</dc:creator><author>zhoulch's blog</author><pubDate>Thu, 13 Jan 2005 12:52:00 GMT</pubDate><guid>http://www.blogjava.net/zhoulch/archive/2005/01/13/277.html</guid><wfw:comment>http://www.blogjava.net/zhoulch/comments/277.html</wfw:comment><comments>http://www.blogjava.net/zhoulch/archive/2005/01/13/277.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoulch/comments/commentRss/277.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoulch/services/trackbacks/277.html</trackback:ping><description><![CDATA[收获是有的，但感觉不是非常满意，比在北京和上海的要差得多。<br /><br />分三场，主要介绍了智能客户端技术的一些技术特征，对具体的技术细节没有做太多的解释。<br /><br />我自己在看了之前的两期MSDN中文杂志后，已经对这个做了点研究、写了些程序，所以对会上所介绍的还是比较了解的。不过听了微软的人介绍，对有些问题的理解友有所加深，所以还是不错的。<br /><br />我认为，SmartClient技术不是个新的软件开发技术，而是利用.NET中的一些特性，对传统的RichClient做一些改进，克服一些缺点。微软所介绍的几个SmartClient的优点，其实都是整合过来的，并不是SmartClient中所特有的。无接触部署、升级，是利用的.NET装配件；有时联机的数据操作，是利用的ADO.NET；Web服务，这个更是到处都可以利用的。所以SmartClient应该只是在.NET平台上开发的桌面客户端程序的基本模式而已。<br /><br />不过，听了这场报告，我还是受了不少启发，花一个下午的时间还是值得的。<br /><br />另外，我还混到一件衣服，实在是太赚了，哈哈哈哈……<b><br /></b><img src ="http://www.blogjava.net/zhoulch/aggbug/277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoulch/" target="_blank">zhoulch's blog</a> 2005-01-13 20:52 <a href="http://www.blogjava.net/zhoulch/archive/2005/01/13/277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学术研究和做工程的区别</title><link>http://www.blogjava.net/zhoulch/archive/2005/01/13/276.html</link><dc:creator>zhoulch's blog</dc:creator><author>zhoulch's blog</author><pubDate>Thu, 13 Jan 2005 12:51:00 GMT</pubDate><guid>http://www.blogjava.net/zhoulch/archive/2005/01/13/276.html</guid><wfw:comment>http://www.blogjava.net/zhoulch/comments/276.html</wfw:comment><comments>http://www.blogjava.net/zhoulch/archive/2005/01/13/276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhoulch/comments/commentRss/276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhoulch/services/trackbacks/276.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;昨天听了一场博士的开题报告，很有感触。学术研究讲究的是要有学术上的创新，而不在于具体的工程实现。而在公司做项目不在乎有没有创新，而在于能不能以最稳定可靠、最经济的方法实现。好比到旅游景点玩，如果定好的目的地，我们做工程的是以最快的方法达到目的地就结束了；而搞学术研究的就要发掘找这个景点新的旅游项目。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;过去，在公司里，看到那些学术论文，总觉根本就没有实现的可能性，或是觉得没有实用价值，现在看来这个观点是很偏颇的啦。<img src ="http://www.blogjava.net/zhoulch/aggbug/276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhoulch/" target="_blank">zhoulch's blog</a> 2005-01-13 20:51 <a href="http://www.blogjava.net/zhoulch/archive/2005/01/13/276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>