<?xml version="1.0" encoding="utf-8" ?>
<!-- generator="FEEDCREATOR_VERSION" -->
<rss version="2.0" xmlns:sns="http://blog.sina.com.cn/sns">
    <channel>
        <title>天道酬勤，自强不息</title>
        <description></description>
        <link>http://blog.sina.com.cn/cucme</link>
        <lastBuildDate>Thu, 21 Aug 2008 05:37:31 GMT+8</lastBuildDate>
        <generator>FEEDCREATOR_VERSION</generator>
        <language>zh-cn</language>
        <copyright>Copyright 1996 - 2008 SINA Inc. All Rights Reserved.</copyright>
        <pubDate>Wed, 20 Aug 2008 21:37:31 GMT+8</pubDate>
        <item>
            <title>唐骏在大连理工的演讲</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef30100a4av.html</link>
            <description><![CDATA[<font COLOR="#330099">唐骏2008年6月14日在大连理工演讲的具体内容：</FONT>
<p>&nbsp;</P>
<p><font COLOR="#FF6600"><strong>在北邮追女孩</STRONG></FONT></P>
<p>
你们知道在我们那个上大学的年代不像你们这么丰富多彩。我们那时候除了追女孩外没有什么事情可做。(台下暴笑)你们比我们那时候惨，我们傻，老师让我们学啥我们学啥，也不管有没有用；而你们现在明明知道没有用，却还要学，所以比较郁闷。(支持的掌声)当然，除了大连理工大学的学科除外，因为卢校长在这。(暴笑)你们学的东西几乎没有什么用。(台下再次更暴笑)上大学的我平凡的不能再平凡了，那时候什么都没有，就长成我这样的，基本上不用考虑本班的战场，没有我的立足之地，我就发展别班的战场，我看上了一个女生，据听说还是北邮50校花之一呢。(笑)你们可别小瞧，50校花之一可了不得，当时我们北邮可有156名女孩呢。(全场爆笑)你说我那时是弱势群体，我能做什么呢，我什么都做不了，最后想出了一招我能做的事：写信。第一封我写了身高1米82体重132斤家在江苏常州，父母是干什么的，家有几个兄弟。这简直就是一份简历，没办法，那时的我没什么只有这些，就给她投了简历。她没有理我。我就开始写第二封信，为了展现自己的才华，我就介绍了一下国内国际经济形势，(台下暴笑)我未来会怎么怎么做。。。还是没回音。我就写了第三封，说我知道你不喜欢我，我不要求你做什么，我只要求你让我默默的喜欢你就好了。(全场暴笑)你知道那时的女生“纯”那！(纯音很重，全场笑)三封信就感动了她，她回信给我。我就约她看电影，看的什么电影我不记得了。之后我们散步，我对她说，要不你嫁给我吧。(全场惊讶)她很惊讶说唐骏你是认真的？我说是，她说好我嫁给你。(更惊讶)就这样，第一次约会，她就嫁给了我，而后我们一起走过了随后的20多个春秋。(全场热烈的掌声)</P>
<p><strong><font COLOR="#FF6600">争取留学名额</FONT></STRONG></P>
<p>
我那时在北京邮电上学，花了两年时间考研究生，考了全校第一，当时每个重点院校有两个名额可以保送到美国，但我却没被保上。你们知道我当时是弱势群体，没有什么权利，但我不甘心就这样，然后四处打听，打听到北京广播学院(中国传媒大学)还有一个空的名额，我就去北广找老师，说想把学籍从北邮转到北广来。老师说，你为什么要转到北广来，我说为了中国的传播事业，中国的传播事业太落后了，我想尽一份自己的力量。老师说中国的邮电事业比广播事业还要落后，你怎么不推进邮电事业的发展呢。我说我太喜欢广播事业了，想为它献身，那时候的老师“纯”那，(全场爆笑)几句话就被我感动了。老师说好吧。经过复杂的转学手续转到了北广，我就向老师说想出国留学，老师怀疑的说你是不是为了出国才转到北广的？我说不是我想出国学人家先进的技术回来武装中国的广播事业。你们知道，那时候的老师“纯”那，(更暴笑)他相信了。但是他说，申报名额已经交到国家教育局了，时间已经耽搁了。我就去找国家教育部出国留学司司长，他说已经审批完了，现在来不及了。我那时候很失望，但我不想放弃，不想以前的努力就这么白费了。你们知道咱们大学生是弱势群体，什么也改变不了，咱们什么都没有，但有的是时间，于是我就想了一个我能想到的办法，很简单很笨的办法：我开始去国家教育局“上班”，上班地点是教育局门口，(台下狂笑)司长早上来上班的时候，我就迎上去说，司长好，来上班了？中午司长出门去对面食堂吃饭的时候，我就说司长吃饭啦，吃好点哈；司长吃饭回来的时候，我就说，司长吃完了，还有点时间，你可以午睡一会；下午下班的时候我说司长下班了。就这样一天两天，司长很奇怪什么时候教育局门口多了个保安，还只给他打招呼。你们知道，人那，不怕被人恨，被人凶，就怕被人盯上，司长开始不得劲了。我倒无所谓，我还有四个月才毕业，这段时间我正好没地方去，就可以天天到教育厅来“上班”，感觉也都很气派，来国家教育厅上班(台下暴笑)。到第五天的时候，司长撑不住了，中午我照样说，司长吃完啦，还有点时间可以午睡一下。司长说我不午睡了，你跟我上来一下。进了司长办公室，司长问你干吗的，我就说明了原因。司长什么也没说，第六天我照样过去“上班”，中午的时候又被叫进去，司长给了我一堆资料说这些你填一下，我就拿回去填。第七天，司长给了我一张纸，说这是你一直想要的东西，那张纸就是出国留学批准证。(全场爆发出热烈的掌声)大家知道吗，人们需要执着的精神，你就拿出执着的精神给他们看，世上就不怕没有办不成的事。(全场热烈的掌声)</P>
<p><font COLOR="#FF9900"><strong>获选全国十大帅哥CEO</STRONG></FONT></P>
<p>
前一段时间参加鲁豫有约节目，鲁豫说唐骏博士你有这么多头衔我都不知道该叫您哪个，你认为你最重视的，最有价值的是哪个。我说我最有的价值的最有含金量的那个你介绍我时没说出来。鲁豫很奇怪，是哪个？前一阵我被时尚杂志评为全国十大帅哥CEO。这是我认为最有含金量的一个(全场爆笑)。我被评为过全国十大经济人物，全国十大CEO，只要经济方面有关十大的我都被评过，就是时尚方面还是第一次。像我这种没有貌的人能被评为帅哥，我能不激动嘛，这是我人生的一次里程碑，我得感谢我的爸爸妈妈。(全场笑)</P>
<p><strong><font COLOR="#FF9900">在微软的差异化竞争</FONT></STRONG></P>
<p>
我进入微软以后，在一万五千人中是倒数第一，在技术方面是最差的，我若在技术上与他们竞争，过二十年三十年我也不过是个普普通通的人，顶多是个高级工程师。我想应该避开和他们正面竞争，走差异化竞争路线。在那五个月后发现开发模式上的错误，英文版本开发出来后，需要过八个月中文版本才开发出来，过五个月日语版本才开发出来。好多人都注意到这个问题，也有好多人提出来许多书面方案交给经理，将近有八十多份，但是你想想你要作为那个经理，你会看这么多的方案吗？所以，交书面方案效果甚微，我就想如果我自己解决了这个问题，即找到了方法也找到了技术支持，那样就很有效果了。然后我就开始发挥我勤奋的因素，利用晚上和周末的时间分析这三种版本的共同之处和不同之处，找出一种模式可以将三种不同版本都用这一模式进行开发，又找到了技术支持，然后写了一份书面报告，不仅提出这个问题也解决了这个问题，我将编的程序都放在这里面了。经理开会议一致通过了该方案，决定公司3500个人都使用这种研发模式，这样就需要成立一个部门，在公司宣传这种模式，我称之为唐氏研发模式，理所当然的候选人就我一个，没有竞争对手，就在我刚进入微软八个月后就当上了部门经理。(热烈的掌声起……)这就是我要讲的差异化竞争。</P>
<p><font COLOR="#FF9900"><strong>运用与众不同的商业模式</STRONG></FONT></P>
<p>
我在洛杉矶开了一家第一移民律师事务所，我是计算机博士出身，对法律一点都不明白，光是有关的法律书就有一米这么高。我注意到别家事务所都是按小时收费，有时移民采用打电话的方式，一个小时都问不明白，但钱却搭进去了，让人感觉移民咨询像个无底洞，不知到得花多少钱才能办成。我就采用和别家事务所不一样的商业模式：我是按案例收费，如工作卡转签证收
1000美金，签证转绿卡600美金等，还有最重要的一句：不成功不收费，成功了再收费。这样就在洛杉矶一炮打响，我的第一移民律师事务所在开业五个月后就排洛杉矶第一位。(热烈的掌声起……)我告诉大家接下来的两年内我准备做一件事情，我从未涉足的领域，电影事业，(台下一片惊讶)，别惊讶，谁让我爱好广泛呢。(台下哈哈大笑)中国好电影这么多，我的电影肯定做不成功，但我想运用一种和他们不同的商业模式，现在电影宣传力度很大，但许多观众看完后都会失望，好多人就自己买碟看，不再去电影院看电影。我不会请大腕明星，砸很多钱进去，我会采用就和我刚才讲的在洛杉矶开律师事务所一样的商业模式，就是满意了收钱，不满意可以退票。当然我有满意的标准的，我会在每个电影放映室里笑声安计数器，如果70%以上的大家都笑了，那他会记一，然后记二。我要拍喜剧片，励志型的外资喜剧片，我希望电影所达到的效果让观众笑二十次，如果观众没有笑二十次，那么观众可以退票，我们会无条件接受。(好方法，真的与众不同)当然我们拍片就得拍的很好看，有很高的标准。</P>
<p><strong><font COLOR="#FF9900">八卦故事</FONT></STRONG></P>
<p>
现在我讲给大家一个特八卦的故事。这个故事我讲给了两个人听。一个是盖茨，他非常相信；另一个是朱总理，他一点都不相信。所以在场的大家不用担心，你若相信，说不定你就是下一个盖茨，你若不相信，你或许就是下一个朱总理。(全场笑)我讲的这个八卦故事，你们要是相信，就是未来的宏观经济学家。在1985年的时候日本经济各个指数突然飘红，经济形势一片大好，据当时经济学家预计照这种形势发展下去，到2012年日本就会在各个方面超过美国，成为世界第一超级大国。许多经济学家找不到快速发展的原因所在，令人很费解，你们知道为什么吗？(台下一片疑惑)因为那时候有个年轻人到了日本。(噢……台下恍然大悟，许多人笑了起来，但还有些人不明白)后来　90年几月份，日本经济萎靡不振，持续五年的增长突然停滞不前，而这时美国的经济从萎靡中摆脱出来开始快速增长，道格拉斯指数一天涨了28.3%，全世界的经济学家都无法解释这个原因，感觉很奇怪，你们又知道为什么吗？只有我知道，那时候有一个年轻人离开日本去了美国。不用我说你们知道那人是谁了吧。(我们恍然大悟)我把这个故事讲给盖茨后，问他微软从什么时候出现转折快速增长的，盖茨说94年几月份，他说不会你那时来的微软吧。我说你猜对了，然后盖茨目瞪口呆的盯着我……后来我告诉朱总理这个八卦的故事后问他：中国经济什么时候开始快速发展的，总理说97年下半年吧，他说你不会那时回的国吧，我就告诉总理是97年下半年回的国。总理急忙说：这跟你没关系，是这届中央政府领导的好。总理果然是总理，什么事都会往政府上靠。(台下暴笑)</P>
<p>
97　年我要离开微软的时候，写了一封很长的信给盖茨，据听说很煽情，(台下笑)我也给公司每个员工都发了一份，因为我是计算机出身，所以会COPY很多份。(暴笑)好多员工都哭了，信中我记得有这么一段：在微软的几年里，我不敢说我是微软最勤奋的员工，但我敢说微软里没有比我更勤奋的员工。(台下一片钦佩和笑声))两句一个意思哈。很快盖茨打电话给我：骏(特深情)，你一定要走吗？我说：比尔，我一定要走。“你真的不可以留下吗，我可以给你任何位置，随便你选。”(任何位置但不包括盖茨的那个位置哈(全场暴笑)“我离开中国太久了，我得回去参加祖国的建设。”“那好吧”。随后盖茨立即召开董事会会议，会上全体一致同意授予唐骏微软终身荣誉总裁称号。这是历史上唯一的一个微软终身荣誉总裁称号，以前没有，以后也不会再有了，你们知道为什么吗？就因为我曾经给盖茨讲了一个八卦的故事……授予我终身荣誉总裁，盖茨就可以一辈子把我留在微软了(全场爆笑加特热烈的掌声)我现在哪都不敢去，大家都知道，其实宏观经济给我没啥关系，但我就怕离开了中国，中国万一出点啥事，那我可就是千古罪人了。(台下暴笑)我可以负责任的告诉大家，未来50年我不会再离开中国！(台下热烈的鼓掌)</P>
<p><strong><font COLOR="#FF9900">劝盖茨改行程</FONT></STRONG></P>
<p>
2003年我接到盖茨秘书打来的电话，她说盖茨要在2月几号来中国，我大吃一惊，也很惊喜，你们知道吗，我在中国当微软总裁，副总理谁都可以见，就是江主席见不着。盖茨来中国会和江主席见面，我高兴的不是盖茨来中国，是我可以见着江主席了。(台下狂笑)但算了一下，那一天正好是大年初三，和江主席见面可能有麻烦。我就告诉秘书说不行，那天大年初三盖茨不能来。你们知道有种人地位不高，但权力很大，(全场笑)秘书很生气说你竟然敢说不，你可知道盖茨的行程都是一年前安排好的。(台下一片惊讶声)是，我知道，可是那天来会有麻烦，会面不会顺利。你自己跟盖茨谈吧。我就打电话给盖茨，告诉他那天不能来中国，他很惊讶，说你可知道我的行程都是一年前安排好的。你们知道盖茨脾气很大，不是，应该说他是很有“个性”的一个人。(台下狂笑，暗指他脾气很大)。我说，我知道，你的行程是一年前安排好的，可是中国的春节是5000年前就安排好的。(全场鼓掌)盖茨更惊讶了。你想想美国人听到5000年是什么概念，盖茨得惊讶成什么样。(台下一片笑声)就这样盖茨同意改了行程。后来盖茨来中国，我到首都国际机场迎接的时候，盖茨见着我第一句话就是，你好大胆，这是我进入微软36年来第一次改行程。我说你不是输给了我，你是输给了中国5000年的文化。你看这样说，立马抬高了老板的地位，和5000年挂上了钩。(笑声掌声起)</P>]]></description>
            <author>小段公子</author>
            <category>闲聊空间</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef30100a4av.html#comment</comments>
            <pubDate>Fri, 08 Aug 2008 07:30:27 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef30100a4av.html</guid>
        </item>
        <item>
            <title>linux 下使用mtrace进行内存调试</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef30100a00k.html</link>
            <description><![CDATA[<span CLASS="mw-headline">Use</SPAN>
<p>The function <code>mtrace</CODE> installs handlers for
<code>malloc</CODE>, <code>realloc</CODE> and <code>free</CODE>;
the function <code>muntrace</CODE> disables these handlers. Their
<a TITLE="Function prototype" HREF="http://en.wikipedia.org/wiki/Function_prototype">prototypes</A>,
defined in the header file <code>mcheck.h</CODE>, are</P>
<pre>
void <code>mtrace</CODE>(<code><var>void</VAR></CODE>);
</PRE>
<pre>
void <code>muntrace</CODE>(<code><var>void</VAR></CODE>);
</PRE>
<p>The handlers log all memory allocations and frees to a file
defined by the <a TITLE="Environment variable" HREF="http://en.wikipedia.org/wiki/Environment_variable">environment
variable</A> MALLOC_TRACE (if the variable is unset, describes an
invalid filename, or describes a filename the user does not have
permissions to, the handlers are not installed).</P>
<p>A <a TITLE="Perl" HREF="http://en.wikipedia.org/wiki/Perl">perl</A> script called
<code>mtrace</CODE>, not to be confused with the function of the
same name, is also distributed with the GNU C Library; the script
parses through the output file and reports all allocations that
were not freed.。</P>
<p><span CLASS="mw-headline">Usage example</SPAN></P>
<p><span CLASS="mw-headline"><span CLASS="mw-headline">Bad Source
Code</SPAN></SPAN></P>
<p>The following is an example of bad source code. The problem with
the program is that it allocates memory, but doesn’t free the
memory before exiting.</P>
<pre>
#include &lt;stdlib.h&gt;

int main() { 

        int * a;

        a = malloc(sizeof(int)); 
        
        return 0; 

        

}
<span CLASS="mw-headline">MTrace Usage</SPAN><br />
1. The environment variable “MALLOC_TRACE” must be set to the path of the output file. Setting environment variables is slightly different on every shell type. In the BASH shell on Linux, the command is as follows:
</PRE>
<pre>
MALLOC_TRACE=/home/YourUserName/path/to/program/MallocTraceOutputFile.txt
export MALLOC_TRACE;
</PRE>
<pre>
<br />
2. The required library (“mcheck.h”) must be included in the source code. This is done by adding the following line to the top of the .c or .cpp file, as shown below:
</PRE>
<pre>
#include &lt;mcheck.h&gt;
</PRE>
<pre>
<br />
3. The function “mtrace()” must be called before you start allocating memory. It is usually easiest to call mtrace() at the very beginning of the main function.
</PRE>
<pre>
mtrace();
</PRE>
<pre>
<br />
4. The program should be compiled and run. Note that you need to use the -g option to enable profiling. In GCC on Linux, this can be done using the following commands:
</PRE>
<pre>
gcc yourProgram.c -g
./a.out
</PRE>
<pre>
<br />
5. The memory leak information will be reported in the file specified by the MALLOC_TRACE environment variable. The difficulty is, this file will be in a computer-readable format. Most Linux machines come with a console command called “mtrace”, that converts the computer file into human-readable text as shown below. If you do not have access to this console command, there is a perl script that can be downloaded and will accomplish the same task. mtrace follows the following syntax:
</PRE>
<pre>
mtrace &lt;exec_file_name&gt; &lt;malloc_trace_filename&gt; 
</PRE>
<pre>
<br />
For example:
</PRE>
<pre>
mtrace a.out MallocTraceOutputFile.txt
</PRE>
<pre>
<br />
<a ID="MTrace_Output" NAME="MTrace_Output"></A>
</PRE>
<h3><span CLASS="editsection"><font SIZE="4">[</FONT><a TITLE="Edit section: MTrace Output" HREF="http://en.wikipedia.org/w/index.php?title=Mtrace&amp;action=edit&amp;section=5"><font SIZE="4">edit</FONT></A><font SIZE="4">]</FONT></SPAN>
<span CLASS="mw-headline"><font SIZE="4">MTrace
Output</FONT></SPAN></H3>
<pre>
<br />
If the mtrace command reports “No Memory Leaks”, then all memory that was allocated in the last execution of that program was also released, which is the way it should be. If, on the other hand, mtrace gives output such as that below, it means the programmer still has some work to do.
</PRE>
<pre>
Memory not freed:
-----------------
   Address     Size     Caller
0x08049910      0x4  at /home/sureshsathiah/tips/leak.c:9
</PRE>
<pre>
<br />
<a ID="Good_Source_Code" NAME="Good_Source_Code"></A>
</PRE>
<h3><span CLASS="editsection"><font SIZE="4">[</FONT><a TITLE="Edit section: Good Source Code" HREF="http://en.wikipedia.org/w/index.php?title=Mtrace&amp;action=edit&amp;section=6"><font SIZE="4">edit</FONT></A><font SIZE="4">]</FONT></SPAN>
<span CLASS="mw-headline"><font SIZE="4">Good Source
Code</FONT></SPAN></H3>
<pre>
<br />
The following is an example of great source code. It releases memory after it is allocated, and it uses mtrace to notify the programmer if there are memory leaks.
</PRE>
<pre>
#include &lt;stdlib.h&gt;
#include &lt;mcheck.h&gt;

int main() { 

        mtrace(); 

        int * a;

        a = malloc(sizeof(int)); 

        free(a); 
        muntrace();
        
        return 0; 

}
</PRE>]]></description>
            <author>小段公子</author>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef30100a00k.html#comment</comments>
            <pubDate>Wed, 30 Jul 2008 03:03:20 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef30100a00k.html</guid>
        </item>
        <item>
            <title>使用ruby中的watir插件制作回帖机器人</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009j85.html</link>
            <description><![CDATA[<p>
经常在chinaunix灌水，用ruby的watir插件搞了个回帖机器人，不过要网速好点。找个代码只是个初级版本，具体的还需要细化。</P>
<p>
说明：用这个程序在CU的清茶斋将《士兵突击》小说发表上去</P>
<p>
不过实现是我得在清查发个帖子，给《士兵突击》开个头。</P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>require
'watir'<br/>
#author:cucme</STRONG></FONT> <a HREF="mailto:duanjigang1983@126.com"><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>duanjigang1983@126.com</STRONG></FONT></A><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>&nbsp;2008-06-21</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>#定义目的站点</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>aim_site =
"</STRONG></FONT><a HREF="http://bbs.chinaunix.net/forumdisplay.php?fid=31"><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>http://bbs.chinaunix.net/forumdisplay.php?fid=31</STRONG></FONT></A><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>"<br/>
#打开IE浏览器</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>ie =
Watir::IE.new<br/>
puts "Step 1: go to chinaunix.net"<br/>
#跳转到站点</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>ie.goto(aim_site)<br/>
puts " "<br/>
#输入用户名</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>ie.text_field(:name,
"username").set("用户名")<br/>
#输入密码</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>ie.text_field(:name,
"password").set("密码")<br/>
#点击确定按钮</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>ie.button(:name, "loginsubmit").click<br/>
#登录后再次跳转到清茶斋</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>ie.goto(aim_site)<br/>
#打开士兵突击文件<br/>
file=File.new("D:\\士兵突击.txt","r")<br/>
str=""<br/>
counter=1;<br/>
#遍历读取每一行</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>while
line=file.gets<br/>
str += line;<br/>
#如果读够了8000个字节，就发贴，当然添加上了字体大小和颜色</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>if
(str.length &gt;= 8000)<br/>
&nbsp; strData= "[color=DarkSlateGray][size=4]" + str +
"[/size][/color]"<br/>
&nbsp; ie.link(:text, "士兵突击").click<br/>
#在输入框中恢复帖子，没想到watir是一个一个把字敲进去的，很慢，不过别人手动快多了&nbsp;</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>ie.text_field(:id, "message").set(strData)<br/>
#点击回复按钮，提交&nbsp;</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>ie.button(:name, "replysubmit").click<br/>
puts strData</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>counter=counter+1<br/>
str = "";<br/>
#由于论坛防止灌水，两次发贴之间时间不能小于30秒，不过输入文字的过程已经很久了，所以在此等5秒</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>sleep(5)</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>#再次回到清茶斋</STRONG></FONT></P>
<p><font STYLE="FONT-SIZE: 14px" COLOR="#CC0000"><strong>ie.goto(aim_site)<br/>
puts "#{counter}"<br/>
end<br/>
end<br/>
file.close()<br/>
#ie.link(:text, "退出").click<br/>
#ie.close()<br/>
puts "执行完毕"<br/></STRONG></FONT></P>]]></description>
            <author>小段公子</author>
            <category>ruby学习进阶</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009j85.html#comment</comments>
            <pubDate>Sat, 21 Jun 2008 04:15:31 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009j85.html</guid>
        </item>
        <item>
            <title>13号线城铁上，一位美丽贤妻打电话的内容</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009hj5.html</link>
            <description><![CDATA[<div CLASS="t_msgfont" ID="message8599094"><font SIZE="5"><font COLOR="#000000"><font STYLE="FONT-SIZE: 16px">13号线城铁，西直门站。<br/>
<br/>
随着熙熙攘攘的人流挤进车厢，有很多人先冲进来来的人都抢到了座位，虽然我位置比较靠前，但我没去抢，因为我觉得在车门打开的一刹那冲进去，找到座位后把屁股狠狠的放在上面这一举动显得很不雅。<br/>

<br/>
我站在靠门的一侧，琢磨着晚上回去吃什么。一阵悦耳的铃音响起，我这才注意到在我的右侧站着一位女孩子，人很漂亮，长长的头发如瀑布倾泻而下，一袭长群将她衬托的宛若人间仙子。<br/>

她接电话的时候笑的很甜蜜：老公，我在城铁上了。什么？你又加班啊？到几点啊？怎么也12点啊？太晚了，你在单位下面的饭店吃点吧，别吃太油腻的东西，还有，天太热，别吃辣的，容易上火。少抽点烟，晚上你打车回来吧？提前给我打个电话，我到小区门口接你。恩，恩，我随便吃点就行，好，好，88。<br/>

<br/>
多么体贴的妻子啊，不禁艳羡。<br/>
<br/>
到知春路时，她的电话又响了，她又接起电话：老公怎么啦？回来吃啊？不是要加班吗？哦，那太好了，你想吃点什么？我回去就去买菜，没事，不麻烦，我去咱家楼下的超市，家里有豆角，我把豆角择好，我再买点西红柿吧，什么？给你炒米饭？好的，蛋炒饭吧？没问题，水果我就不买了，冰箱里还有半个西瓜，咱就吃西瓜吧。恩，行，我给你榨西瓜汁。。。。<br/>

<br/>
听得我都妒忌了，唉，标准的贤妻良母啊。她似乎并不关心这是在地铁上，身边还有很多人，也许她觉得尽管人很多，但谁都不认识谁，下车各走各的，所以，她还在继续：老公，你早点回来哦，路上小心，哦，吃完饭我就不出去玩了，我还得先把你的衣服洗了。。。。。<br/>

<br/>
天啊，做这么多活还洗衣服，有这样的老婆，此生也真该知足了，我忽然很想看看她的老公是什么样，一个如此幸福的人是什么样。<br/>

<br/>
车到龙泽的时候，这位贤妻拿着电话又拨了一个号码，说话的声音明显比刚才小，但离我比较近，我相信身边几个人还是能听到的，内容如下：<br/>

<br/>
你别过来了，我老公一会就回来，他不加班了。<br/>

我不知道电话那边说什么，只见女孩子认真的听着电话，沉默了一会说，面露愁容的说：恩，我也是。。。我也爱你。。。。<br/>
</FONT><br/></FONT></FONT></DIV>]]></description>
            <author>小段公子</author>
            <category>闲聊空间</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009hj5.html#comment</comments>
            <pubDate>Mon, 16 Jun 2008 14:06:32 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009hj5.html</guid>
        </item>
        <item>
            <title>生活从来不需要理由！！！</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009h4f.html</link>
            <description><![CDATA[<p>
这就是生活，当你在追求自己理想的时候，任凭别人怎么干扰你，任凭在别人眼里你是如此的怪异不不解，自己也会在内心倔强的坚持着，不管对或者错！我不需要理解，也不想去解释！</P>
<p>
虽然希望和前途如此迷茫，还是要抓住梦魇里闪过的那一丝希望，不能放弃！</P>
<p>
周围的人似乎都在潇洒的活着，而唯独我忙忙碌碌的不知一天做些什么，这就是我的生活！</P>
<p>
唯独令人欣喜的事情是：从昨晚研究到今天下午的flex终于突破了，偶用一天时间从零开始学习flex,action
script,并且做出来了需要的flash，虽然很累，感觉很值得。</P>
<p><a href="http://blog.photo.sina.com.cn/showpic.html#url=http://static3.photo.sina.com.cn/orignal/4b029ef344fb5add91752" TARGET="_blank"><img SRC="http://static3.photo.sina.com.cn/bmiddle/4b029ef344fb5add91752" /></A></P>]]></description>
            <author>小段公子</author>
            <category>闲聊空间</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009h4f.html#comment</comments>
            <pubDate>Sun, 15 Jun 2008 14:41:53 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009h4f.html</guid>
        </item>
        <item>
            <title>诅咒某些人死掉！！！</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009ez5.html</link>
            <description><![CDATA[<p>
忽然心情不好，想要忘记一切，却忽然记起，顿时心里开始诅咒某些人死掉，从这个世界上消失！！！！</P>
<p>
下贱的灵魂没有存在的意义，还不如将它赋予给一条狗！！！</P>]]></description>
            <author>小段公子</author>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009ez5.html#comment</comments>
            <pubDate>Tue, 10 Jun 2008 09:53:13 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009ez5.html</guid>
        </item>
        <item>
            <title>windows下apache,php, mysql开发环境搭建手册</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009e6g.html</link>
            <description><![CDATA[<p>
虚拟机的无耻特性使得我安装vmware6屡屡不成功，结果就以为是中了毒，或许真的中了毒，然后打开卡巴斯基进行杀毒，睡梦中听着卡巴斯基机警的叫声，我感觉很甜蜜，虽然我肚子很疼，因为，每次鸣叫都意味着一个可恶的病毒被干掉了，早上6点40分闹钟就响了，我赶紧爬起来打开电脑看看我的爱机是否恢复正常，按下电源键，还没进入系统时，却蓝屏了！！！！</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;
我恍然大悟，罪魁祸首又是卡巴斯基，把系统杀坏了，于是没吃早饭，赶奔公司取我的盘包，去中关村的太平洋买了XP的安装盘，居然是SP3的补丁，还自带windows
medialplayer11播放器，着实不错。</P>
<p>
回家安装系统很快，做了ghost镜像，刚才又把我的php,apache,mysql重新装好了，可是cmedb拷贝到mysql的data目录下却不能用，看样子我得去从虚拟机中倒出来表了，并且得自己构造数据。</P>
<p>
虽然重装了，我却能重温安装并调试成功php开发环境的小小欣慰之处，并在此备份，与linux下的手册形成双剑合璧^_^.</P>
<p>少废话，开工。</P>
<p>操作系统：windowsXP 番茄花园版，sp1,sp2,sp3补丁</P>
<p>软件包: apache_2.2.4-win32-x86-no_ssl.msi,
mysql-5.0.27-win32.zip,</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
php是直接解压缩绿色版：php-5.2.1-Win32.zip。</P>
<p>安装过程：</P>
<p>
1):首先安装apache,我将它安装到d:\tools下，为“D:\tools\Apache
Software Foundation\Apache2.2”路径。</P>
<p>
完成后进行测试，在IE浏览器地址栏输入:http://192.168.0.14或者<a HREF="http://localhost">http://localhost</A>都行，当页面显示</P>
<p>"It works
"说明正常，如果打不开，自己排查，不过首先看看电脑右下角的绿色小三角是否出现，因为那个是apache运行状况的托盘图标。</P>
<p>2):安装mysql数据库</P>
<p>
我将mysql数据库安装在d:\tools下，路径为：D:\tools\MySQL\MySQL
Server 5.0</P>
<p>
选择完全安装，所有的特性都安装，包括开发库，最后结束时允许远程登录到数据库，端口什么的都默认。</P>
<p>3):php安装</P>
<p>
我将php安装在d:\tools下，路径为：D:\tools\php5.2.1</P>
<p>
这个方便，绿色版软件，谁用谁喜欢！直接解压缩就行了。</P>
<p>4)安装完配置。</P>
<p>首先是apache对php的支持。</P>
<p>
在进行一切配置之前，我想先把虚拟目录的根目录变化下，一直放在：</P>
<p>D:\tools\Apache Software Foundation\Apache2.2\htdocs</P>
<p>
下着实不爽，不知道发明阿帕奇的鬼佬怎么想的，居然用这么诡异个路径存放它的web文件。</P>
<p>
我打算将我的虚拟目录的根目录设置为:E:\develop\php\www</P>
<p>所以，先进入目录：D:\tools\Apache Software
Foundation\Apache2.2\conf</P>
<p>打开httpd.conf,</P>
<p>
先寻找字段:DocumentRoot，对，就是你找到的这个：</P>
<p>DocumentRoot "D:/tools/Apache Software
Foundation/Apache2.2/htdocs"</P>
<p>
在这行前面加个注视符号'#',让他变得更好看却没有作用，然后在这行下面加一行，进行我们自己定制。</P>
<p>DocumentRoot "E:/develop/php/www"</P>
<p>然后找到</P>
<p><br/>
将其修改为</P>
<p>&nbsp;</P>
<p>保存，重启apache,并建立一个小小的html文档</P>
<p>里面写上 "I love you, girl!"，保存为showlove.html</P>
<p>
将其保存到E:/develop/php/www目录下，当你心爱的女孩打开浏览器并输入</P>
<p><a HREF="http://localhost/showlove.html">http://localhost/showlove.html</A>时，她会很开心的看到你对她的表白，如果你不小心搞错了那一步，那她就会看到“无法打开页面”，她可能会跟你说“拜拜，这事情都搞不定!”嘿嘿。</P>
<p>下来在httpd.conf中加入对php模块的支持。</P>
<p>打开httpd.conf文件，在文件末尾添加两行：</P>
<p>LoadModule php5_module
"D:/tools/php5.2.1/php5apache2_2.dll"<br/>
AddType application/x-httpd-php .php<br/>
然后找到</P>
<p><br/>
&nbsp;&nbsp;&nbsp;
DirectoryIndex index.html</P>
<p><br/>
添加php文件类型</P>
<p><br/>
&nbsp;&nbsp;&nbsp;
DirectoryIndex index.php index.html</P>
<p><br/>
接着，保存，然后将php目录下的php.ini-dist文件复制到apache的安装目录下：</P>
<p>D:\tools\Apache Software
Foundation\Apache2.2，名称为php.ini,并在php的安装目录下</P>
<p>
双击pws-php5isapi.reg和pws-php5cgi.reg，将php的信息倒入注册表。</P>
<p>重启阿帕奇。</P>
<p>然后建立一个名为index.php的文件，内容是<br/>
&lt;?php<br/>
phpinfo();<br/>
?&gt;<br/>
然后打开浏览器地址<a HREF="http://localhost/">http://localhost/</A><br/>
应该就能看到关于php的信息了。<br/>
5)php.ini中添加对mysql和gd图形库的支持。<br/>
首先将php安装目录下的libmysql.dll拷贝到apache的安装目录<br/>

D:\tools\Apache Software
Foundation\Apache2.2下，然后修改<br/>
D:\tools\Apache Software Foundation\Apache2.2\php.ini<br/>
在中进行如下修改:<br/>
doc_root = "E:\develop\php\www"<br/>
extension_dir = "D:\tools\php5.2.1\ext"<br/>
;extension=php_gd2.dll去掉前面的‘；’<br/>
;extension=php_mysql.dll去掉前面的‘；’<br/>
session.save_path = "D:/tools/php5.2.1/tmp"<br/>
如果tmp目录不存在，手动建立。<br/>
保存以上修改。重启阿帕奇。<br/>
当你再次打开<a HREF="http://localhost/">http://localhost/</A>的时候，就应该能看到php中关于mysql和gd的信息了。</P>
<p>6):手动建立文件<br/>
db.php<br/>
内容如下：<br/>
&lt;?php<br/>
$db = mysql_connect('192.168.0.14','root','q1w2e3');<br/>
if($db == NULL)<br/>
{<br/>
&nbsp; die("连接数据库失败，我攷！");<br/>
} else<br/>
{<br/>
&nbsp;echo "连接成功!";<br/>
&nbsp;mysql_close($db);<br/>
}<br/>
?&gt;<br/>
将文件存放到"E:\develop\php\www"下，在地址栏输入<a HREF="http://localhost/db.php">http://localhost/db.php</A><br/>

进行测试，相信你已经知道你期望看到的结果了。</P>]]></description>
            <author>小段公子</author>
            <category>程序人生</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009e6g.html#comment</comments>
            <pubDate>Sun, 08 Jun 2008 07:44:12 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009e6g.html</guid>
        </item>
        <item>
            <title>6月2号新的问题</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009c5a.html</link>
            <description><![CDATA[问题1：对于server维护的client_list来说，每次新来一个客户端的连接，都要从列表中找一个未初始化的节点，供这个客户端使用，一旦某个客户端终端连接或者通讯出错，就需要把这个节点复位，最终成为INVALID_HOST,这样子这个节点才能被下次新来的连接请求重用。但是在我的代码中，却忘记了这一点，一旦某个连接关闭，只关闭了socket描述符，而未修改valid标志位。
当再次接受到一个新的连接时就会跳过这个已经关闭的连接节点。占用彼得资源。另外，接收数据时，也会错误返回，因为这个节点的套接字已经被设置为INVALID_SOCK_FD了，之所以出现这个问题，就是在连接出错时没有复位valid标志位
在每个连接出错处理的尾部加上一句修改valid标志位的语句，一旦连接关闭，就修改valid标志位为INVALID_HOST
问题2：明早再说······]]></description>
            <author>小段公子</author>
            <category>CME开发</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009c5a.html#comment</comments>
            <pubDate>Mon, 02 Jun 2008 15:17:53 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009c5a.html</guid>
        </item>
        <item>
            <title>5月30日修改</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009b3u.html</link>
            <description><![CDATA[<p>修改工程：CME_ROUTER</P>
<p>类：CListenner和CServer</P>
<p>功能：</P>
<p>CListenner:</P>
<p>
1):在原来程序中，配置文件cme_router.conf中指定了监听端口，跟server.conf中有重复，将这项去掉</P>
<p>
2):原来的程序中初始化是获取到本机IP地址列表，直接取出第一个IP地址，监听这个IP上的端口，这里存在一个缺陷，因为监听的IP地址和端口是在server.conf中指定的，而程序实际监听于上的IP地址却是获取到的第一个地址，如果遇到这样的情况就会出错，机器接了两个网卡，其中一块网卡没有接入网络，也没有配置IP地址，所以返回的IP地址列表中，有个为0.0.0.0，如果这个IP正好位于第一个位置上，则cme_router会监听0.0.0.0，而不是第二个有效的IP地址。正确的做法应该是：获取所有的IP地址，然后跟server.conf中的IP地址进行比对，如果有一个相同的，则认为是本机要监听的IP地址，也作为本机的IP地址存储起来，如果没有找到匹配的IP，则提示配置文件server.conf中没有配置本机的IP，退出程序。</P>
<p>
如果本机没有接入网络，则在IP地址列表的第一个位置填充127.0.0.1地址，进行监听，为本机进程通讯做服务。</P>
<p>3):CServer部分修改</P>
<p>
主要是接收到的消息解析，原来的做法是：每次先接收消息如果接收成功的话，则进行解析，而且只解析一个消息，这样也存在潜在的缺陷，容易引发缓冲区溢出，情况如下：</P>
<p>
假设一个数据包最大尺寸为1500字节，缓冲区为3000字节，而且每次默认接收1500字节。</P>
<p>
现在有N个数据包，前30个数据包都为100字节，第一次接收时成功接受1500字节，读取了15个数据包，解析时，只解析了一个，还剩下1400字节的数据包(也就是14个)未解析，第二次再次接收了1500个字节，仍然是15个数据包，再解析一个数据包后，这个时候缓冲区剩下空间为200字节，还剩下28个数据包未解析。第三次接收时，如果有一个数据包的长度大于200字节比如1000字节，虽然接收成功了，但是copy到客户端缓冲区时就会出现溢出，因为实际的剩余空间只有200字节了。</P>
<p>改进策略：</P>
<p>
每次接收数据后，对数据包的解析进行循环解析，直到客户端缓冲区剩下的数据不足以构成一个完整的数据包为止，这样就永远不会出现缓冲区溢出的情况了。</P>
<p>
比如上面的情况，如果第一次接收了1500个字节，数据包大小都是100字节，则可以立即全部将它们解析出来写入内存，剩下空间为3000字节。后面再来数据包，就进行解析，只不过每次写入共享内存的次数可能不止一次，因为数据包的个数决定了写入内存的次数。</P>
<p>
这个可以说是一个比较严重的缺陷，只是跟实际数据有关，对于小尺寸的数据包，很容易引发这个缺陷。</P>]]></description>
            <author>小段公子</author>
            <category>CME开发</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009b3u.html#comment</comments>
            <pubDate>Sat, 31 May 2008 00:18:26 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009b3u.html</guid>
        </item>
        <item>
            <title>5月28日修改与问题</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009adx.html</link>
            <description><![CDATA[<p>
昨天测试时发现发送数据的程序有时会出现“初始化输出共享内存错误”，最后查找了半天，发现是在根据环境变量CME_HOME和CONFIG_DIR以及SERVERF_ILE构造文件路径时出了错，导致最终的文件名为</P>
<p>
/cme/而不是/cme/config/server.conf,从而初始化内存出错，经过修改，解决了file_name函数中的问题。</P>
<p><font STYLE="FONT-SIZE: 16px" COLOR="#FF0000">另外在快速发送数据时发现有时候会出现数据错位，出现“未知消息类型”初步判断是由于握手消息没有完全写入，从而后面的数据包补充了握手消息的偏移，导致整个传送过程错位。</FONT></P>
<p><font STYLE="FONT-SIZE: 16px" COLOR="#6600FF">目前能解决的办法就是发送握手消息时，如果不能完全发送，就进行数据缓存，再发送，不过这个就牵扯到为每个主机定义一个临时缓存的问题，尚待商榷！！！！</FONT></P>]]></description>
            <author>小段公子</author>
            <category>CME开发</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009adx.html#comment</comments>
            <pubDate>Thu, 29 May 2008 00:17:46 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009adx.html</guid>
        </item>
        <item>
            <title>CME_ROUTER输出共享内存设计</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009adr.html</link>
            <description><![CDATA[<p>
在第一个实现的版本中,cme_router所有要发往别的主机的数据都存储在一个单独共享内存中，这个共享内存的标识符为cucme,当cme_router工作时，会循环读取输出共享内存段,每读到一个数据记录，便会根据这个记录的目的IP，在CME_ROUTER的主机列表中查找对应IP的主机，如果找到相等的IP主机，则将数据发送给该主机，否则的话，就把数据丢掉，这样，就会出现这样的情况，如果接收主机上的程序在发送主机程序运行的前一段时间还未启动，而发送程序在每写入一个数据条后都能及时的读出该数据，但是发送时却会因为该主机不在线而丢弃该条记录，这样就会使得数据包丢失，影响功能，一开始想到如果主机不在线，能不能先把数据回填到内存中，以后还能读书来，但是又发现这样是不合理的，原因如下：</P>
<p>
1):首先，虽然CME_ROUTER的每个数据包都是独立的，也就是说后收到的数据并不一定就是因为他被写入内存的时间晚于前一条，但是在实际中，往往是这样的情况，因为写内存是顺序的，读也是顺序的，大多数情况下读出来的数据都是流式的，为了保证数据的大体顺序是先进先出式的，还是不要回填的好，虽然CME_ROUTER实际功能是提供了一个数据报格式的通讯。</P>
<p>
2）：其次，会造成循环读写，降低性能，浪费CPU时间。假设发往A机器的数据被读到了，而A上的程序还未启动，这个时候，CME_ROUTER就会不停的读书来发往A的数据，当A不在线时，又把数据写入内存，读出下一条是发往A的时，又回写到内存，·····这样，显然是很傻的工作方式。</P>
<p>
所以，可以想象·······为什么不在主机在线时才去读数据，并且发送昵？</P>
<p>这样，引发了我对输出内存重新设计的想法。</P>
<p>
根据目的主机IP地址进行内存段定义，也就是说每一个已知主机的IP地址标识一个共享内存段，另外，发送数据时读取数据的策略也进行调整：以往是读出数据，根据数据目的地查找在线主机，如果主机不在线，就丢包了。</P>
<p>
而现在应该进行改进，根据在线主机进行共享内存数据的读取。</P>
<p>这样做有三个好处：</P>
<p>
其一：根据在线主机状态进行读取数据，在线才读取数据并发送，消除了不在线就会丢包的情况，并在严格意义上实现了共享内存缓冲的作用，只要共享内存不溢出，主机不重启，A发往B的数据可以在A机器上缓存任意长时间。</P>
<p>
其二：既然是在线时才进行发送，这样每次发送过程中，要末出错关闭连接，要末一点发送成功，从而在大多数情况下保证了数据的流方式传递，也就是顺序传递。</P>
<p>其三：主机--内存
查找速度加快，在初始化时，建立一个哈希表，将每个主机的共享内存地追直接与主机对象对应起来，发送数据时，直接将数据写入该主机对应的输出内存，查找时间为0，能够大大提高读取数据的性能。特别是在主机数目增多时。</P>
<p>共享内存重新设计纠正了系统很多缺陷。</P>]]></description>
            <author>小段公子</author>
            <category>CME开发</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009adr.html#comment</comments>
            <pubDate>Wed, 28 May 2008 23:51:31 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009adr.html</guid>
        </item>
        <item>
            <title>[1] ruby中的类，继承，函数</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009abz.html</link>
            <description><![CDATA[class Song<br/>
&nbsp;def &nbsp;initialize(name,
author)#相当于C++中的构造函数constructor,在Song.new时被调用。<br/>

&nbsp;&nbsp;&nbsp;@name&nbsp;=&nbsp;name;
#instance变量<br/>
&nbsp;&nbsp;&nbsp;@author&nbsp;=&nbsp;author;<br/>

&nbsp;end<br/>
&nbsp;def&nbsp; get_name()<br/>
&nbsp;&nbsp;&nbsp;return
"song:#@name"<br/>
&nbsp;end<br/>
&nbsp;def &nbsp;get_author()<br/>
&nbsp;&nbsp;&nbsp;return
"song:#@author"<br/>
&nbsp;end<br/>
&nbsp;def &nbsp;to_s<br/>
&nbsp;&nbsp;&nbsp;"name =
<a HREF="mailto:#@name">#@name</A>, author = <a HREF="mailto:#@author">#@author</A>"<br/>
&nbsp;end<br/>
&nbsp;def&nbsp;to_t<br/>
&nbsp;&nbsp;&nbsp;"song:
<a HREF="mailto:#@name">#@name</A>, song:#@author"<br/>
&nbsp;end<br/>
end<br/>
class SubSong &lt; Song
#&lt;指明了继承关系，简单明了<br/>
&nbsp;def &nbsp;initialize(name, author,
length)<br/>
&nbsp;&nbsp;&nbsp;super(name,
author) #调用基类或者超类的构造函数<br/>
&nbsp;&nbsp;&nbsp;@length=length<br/>

&nbsp;end<br/>
&nbsp;def &nbsp;to_s<br/>
&nbsp;&nbsp;&nbsp;"name =
<a HREF="mailto:#@name">#@name</A>, author= <a HREF="mailto:#@author">#@author</A>, length = <a HREF="mailto:#@length">#@length</A>"<br/>
&nbsp;end<br/>
&nbsp;def &nbsp;get_author<br/>
&nbsp;&nbsp;&nbsp;return
"subSong: <a HREF="mailto:#@author">#@author</A>"<br/>
&nbsp;end<br/>
&nbsp;def&nbsp;to_t<br/>
&nbsp;&nbsp;&nbsp;super + ",
SubSong:#@length"
#基类的to_t返回值加上@length的值。<br/>
&nbsp;end<br/>
&nbsp;&nbsp;<br/>
end<br/>
puts "========================="<br/>
song = Song.new("千里之外", "周杰伦")<br/>
song.inspect<br/>
puts song.get_name<br/>
puts song.get_author<br/>
puts song.to_s<br/>
puts song.to_t<br/>
puts "=================================="<br/>
ssong =&nbsp; SubSong.new("123.mp3", "duanjigang",
123)<br/>
puts ssong.to_s<br/>
puts ssong.get_name<br/>
puts ssong.get_author<br/>
puts ssong.to_t<br/>]]></description>
            <author>小段公子</author>
            <category>ruby学习进阶</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009abz.html#comment</comments>
            <pubDate>Wed, 28 May 2008 15:36:07 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009abz.html</guid>
        </item>
        <item>
            <title>CME开发过程跟踪</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301009aa6.html</link>
            <description><![CDATA[<p>cme_router,cme_server,cme_thread开发已经好长时间了</P>
<p>
期间发现了不少问题，cme_router又在上周进行了重新开发，为了记住自己对每个程序的理解和改进过程</P>
<p>
所以创建这个板块来记录一切问题的发现和解决过程。</P>
<p>=============================================</P>
<p>2008年5月25日:</P>
<p>
cme_router重新实现和设计，原因是，以前输出共享内存使用一个单独的内存块，标识符为cucme,所有输出消息都写到这个共享内存中，而cme_router发送到网络上的数据包则是从这个输出共享内存读取的，每次顺序读取一条记录，但是并不知道这个数据包的目的IP是那个主机，当cme_router取出数据包后，会遍历服务器列表，查找与消息目的地IP相同的主机，如果找到则发送，如果找不到，则丢弃数据包。</P>
<p>
直到上周，我才发现这个问题，如果这样的话，很多主机的数据包就会被丢弃，共享内存就起不到缓冲的作用了。</P>
<p>
为了解决此问题，将共享内存的分类重新设计了一下。</P>
<p>
对于每台主机上的输入共享内存，按照消息类型建立共享内存列表，消息类型作为共享内存的索引。之所以这么根据消息类型设计输入共享内存，是为了高效读取，防止误读从而丢掉数据包。举个例子，如果不区分消息类型，将输入数据存入在一个相同的内存段，cme_server在处理消息时，就会从该共享内存段中顺序读取记录，每次取出一个数据包，如果消息类型是一个以注册类型的话，就交给处理线程处理，但是如果不是以注册类型的话，就丢弃数据包，这种模式能正常工作的条件限制是：一台机器上只能有一个cme_server程序运行，也就是说，所有的处理器都必须注册到一个cme_server下，这样做其实并不影响数据的处理，因为对于每个类型的消息，我们都预留了一个线程进行处理，消息类型的增加也就预示着线程的增加，并不会影响整个程序的性能，唯一的一个缺点是：这样会使得开发工作很繁杂，如果有人要新增一个消息处理器，就需要把原来的代码拿来，将自己的消息处理器类编译并链接到cme_server程序中，很显然，这样是不合理的。我们期望做出来一个比较简易的消息处理器，A同事可以自己在机器M上运行自己的程序PROG1,B同事也可以同时在M机器上运行自己的程序PROG2,虽然他们都连接了同一个处理器基类cme_server,但是却不会冲突，也不会使得数据包丢失，而且带来分布式处理的效果。</P>
<p>
可以比较下第一种不区分消息类型的共享内存定义方式，它的特点是，将所有输入消息存入相同的内存段中：</P>
<p>假设消息内存段为 LIST,其中的数据包为LIST[0],
LIST[1],,,,,,LIST[N],</P>
<p>其中LIST[0],
LIST[1]......LIST[N]的消息类型不是一定相同的。如果这个时候有两个或者更多的进程读取数据，假设有两个程序A和B，A需要处理typ1类型的消息，B需要处理type2类型的消息。假设A先读到LIST[0],为type2,认为不是自己要处理的，就丢弃，而B读取到LIST[1]则是type1的，同样认为自己不能处理，扔掉，就这样，一定量或者很多消息就丢失了。</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p>&nbsp;</P>]]></description>
            <author>小段公子</author>
            <category>CME开发</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301009aa6.html#comment</comments>
            <pubDate>Wed, 28 May 2008 13:51:50 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301009aa6.html</guid>
        </item>
        <item>
            <title>锦瑟</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef3010097jx.html</link>
            <description><![CDATA[<p STYLE="TEXT-INDENT: 2em">《锦瑟》</P>
<p STYLE="TEXT-INDENT: 2em">----------李商隐<br/>
<br/>
<font STYLE="FONT-SIZE: 20px" COLOR="#6600CC"><strong>锦瑟无端五十弦，
一弦一柱思华年。<br/>
庄生晓梦迷蝴蝶， 望帝春心托杜鹃。<br/>
沧海月明珠有泪， 蓝田日暖玉生烟。<br/>
此情可待成追忆，
只是当时已惘然。</STRONG></FONT></P>]]></description>
            <author>小段公子</author>
            <category>闲聊空间</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef3010097jx.html#comment</comments>
            <pubDate>Wed, 21 May 2008 12:21:20 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef3010097jx.html</guid>
        </item>
        <item>
            <title>妈妈别哭,我去了天堂</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef30100976k.html</link>
            <description><![CDATA[妈妈别哭，我去了天堂<br/>
——北岸<br/>
<br/>
<font STYLE="FONT-SIZE: 18px" COLOR="#990099">妈妈，别哭，我去了天堂，<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/></FONT>]]></description>
            <author>小段公子</author>
            <category>闲聊空间</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef30100976k.html#comment</comments>
            <pubDate>Tue, 20 May 2008 12:37:28 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef30100976k.html</guid>
        </item>
        <item>
            <title>《孩子快抓紧妈妈的手》</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef30100951e.html</link>
            <description><![CDATA[<p><font FACE="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font COLOR="#990099">《孩子快抓紧妈妈的手》</FONT></FONT></P>
<p><font FACE="宋体"><br/>
　　　　　　<font COLOR="#990099">--为汶川地震死去的孩子们而作<br/>
　　　　　　--作者不详<br/>
　　　　　　配乐&nbsp;&nbsp;&nbsp;
http://www.superbabi.cn/music/Leaving.mp3</FONT></FONT></P>
<p>　</P>
<p>
　　　　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">孩子快<br/>
　　　　　　抓紧妈妈的手</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　去天堂的路<br/>
　　　　　　太黑了<br/>
　　　　　　妈妈怕你<br/>
　　　　　　碰了头<br/>
　　　　　　快<br/>
　　　　　　抓紧妈妈的手</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　让妈妈陪你走</FONT></P>
<p><br/>
<font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　妈妈<br/>
　　　　　　怕<br/>
　　　　　　天堂的路<br/>
　　　　　　太黑<br/>
　　　　　　我看不见你的手<br/>
　　　　　　自从<br/>
　　　　　　倒塌的墙<br/>
　　　　　　把阳光夺走<br/>
　　　　　　我再也看不见</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　你柔情的眸</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　孩子<br/>
　　　　　　你走吧<br/>
　　　　　　前面的路<br/>
　　　　　　再也没有忧愁</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
没有读不完的课本<br/>
　　　　　　和爸爸的拳头</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　你要记住<br/>
　　　　　　我和爸爸的摸样<br/>
　　　　　　来生还要一起走</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　妈妈<br/>
　　　　　　别担忧<br/>
　　　　　　天堂的路有些挤<br/>
　　　　　　有很多同学朋友<br/>
　　　　　　我们说<br/>
　　　　　　不哭<br/>
　　　　　　哪一个人的妈妈都是我们的妈妈<br/>
　　　　　　哪一个孩子都是妈妈的孩子<br/>
　　　　　　没有我的日子</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　你把爱给活的孩子吧</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　妈妈<br/>
　　　　　　你别哭<br/>
　　　　　　泪光照亮不了</FONT></P>
<p><font STYLE="FONT-SIZE: 20px" COLOR="#0080FF">　　　　　　我们的路<br/>
　　　　　　让我们自己<br/>
　　　　　　慢慢的走<br/>
　　　　　　妈妈<br/>
　　　　　　我会记住你和爸爸的模样<br/>
　　　　　　记住我们的约定<br/>
　　　　　　来生一起走</FONT></P>
<p><img SRC="http://blogimg.sinajs.cn/images/control/face/011.gif"></IMG></P>
<p>&nbsp;</P>
]]></description>
            <author>小段公子</author>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef30100951e.html#comment</comments>
            <pubDate>Thu, 15 May 2008 05:31:31 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef30100951e.html</guid>
        </item>
        <item>
            <title>makefile自动生成脚本</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301008ooi.html</link>
            <description><![CDATA[<div><a HREF="http://album.sina.com.cn/pic/4b029ef3449786004209b" TARGET="_blank"><img SRC="http://album.sina.com.cn/pic_3/4b029ef3449786004209b" WIDTH="500" BORDER="0"></IMG></A>备份一下，脚本生成比手写快多了，也不用去学automake的用法了</DIV>
<div><font STYLE="FONT-SIZE: 18px" COLOR="#660099"><strong>#!/bin/bash<br/>
ls *.c&nbsp; | awk -F '.' '{print $1}'&gt;out<br/>
echo "#!/bin/sh"<br/>
printf "/home/duanjigang/bin/clidtc:"<br/>
cat out | awk '{print $1".o"}' | xargs<br/>
printf "\tgcc -o /home/duanjigang/bin/clidtc -lpthread "<br/>
cat out | awk '{print $1".o"}' | xargs<br/>
cat out | while read name<br/>
do<br/>
&nbsp;echo "$name.o:$name.c"<br/>
&nbsp;printf "\t"<br/>
&nbsp;echo&nbsp; "gcc -c&nbsp;
-D__LINUX__ -D_DEBUG_ -I../../include $name.c"<br/>
done<br/>
printf "clean:\n"<br/>
printf "\t"<br/>
echo "rm -fr *.o /home/duanjigang/bin/clidtc"</STRONG></FONT></DIV>
<div><font STYLE="FONT-SIZE: 18px" COLOR="#660099"><strong><br/>
&nbsp;</STRONG></FONT></DIV>
]]></description>
            <author>小段公子</author>
            <category>程序人生</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301008ooi.html#comment</comments>
            <pubDate>Fri, 28 Mar 2008 05:09:29 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301008ooi.html</guid>
        </item>
        <item>
            <title>巧妙去除Linux下代码行中的^M符号和windows下代码编辑引起的警告错</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301008ony.html</link>
            <description><![CDATA[<div>
&nbsp;Linux下的代码，用VC进行编辑后，或者EU或者editplus打开后，重新拷贝到Linux下</DIV>
<div>
在文件行尾会出现^M符号，编译器不会对此报错，但是却看起来很不舒服，另外，VC编辑的代码，在gcc编译时警告错报告每行末尾少了一个空行，如果手动添加回车符的话，也行，但是文件多了就累死人，最好用脚本自动处理，我试了试</DIV>
<div>echo " " &gt;&gt;
test.c的追加方法能去除警告错，所以可以批处理，还采用经典的awk命令和while组合了来实现。</DIV>
<div><font FACE="宋体">#wash_error.sh</FONT></DIV>
<div><font FACE="宋体">#!/bin/sh<br/>
ls *.h *.c&nbsp;&nbsp; | awk '{print $1}'
&gt; ddd<br/>
cat ddd | while read file<br/>
do<br/>
&nbsp;&nbsp; echo " " &gt;&gt; $file<br/>
done</FONT></DIV>
<div>dos2unix *.c *.h</DIV>
<div>
当然，要处理某个目录下的C和H文件，就需要把这个脚本wash_error.sh拷贝到对应的目录下，然后sh
wash_error.sh就行了.</DIV>
<div>
注意：dos2unix就是把DOS下的^M符号转换成UNIX符号的，或者去掉^M的作用。</DIV>
]]></description>
            <author>小段公子</author>
            <category>程序人生</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301008ony.html#comment</comments>
            <pubDate>Fri, 28 Mar 2008 03:27:34 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301008ony.html</guid>
        </item>
        <item>
            <title>ACE安装手册</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301008lbh.html</link>
            <description><![CDATA[<div>
&nbsp;作为网络通讯和多线程的一个很优秀的库，却没有被我用到，真是遗憾，应军军和高保存的帮助要求加之自己的虚荣心，昨晚在虚拟机上安装了下，备份一下这个简单的安装手册。</DIV>
<div><font FACE="宋体" COLOR="#0000CC">1):将ACE-5.5.tar.tar拷贝到/tem目录下，解压缩 tar -jxvf
ACE-5.5.tar.tar<br/>
2):设置ACE_ROOT环境变量 export
ACE_ROOT=/tmp/ACE_wrappers(注意，后面的所有操作都要在这个终端下执行，如果新建连接<br/>

或者打开新的终端，要重新设置环境变量。)<br/>
3)进入/tmp/ACE_wrappers目录 cd /tmp/ACE_wrappers,创建编译目录 mkdir
build<br/>
4)配置编译：<br/>
&nbsp;&nbsp; cd&nbsp;
build<br/>
&nbsp;&nbsp; ../configure --help
能看到好多选项，默认选中的配置项已经够用了，<br/>
&nbsp;&nbsp;
下来进行配置(我将ACE安装在/usr/local/ace目录下，所以如下配置)<br/>
&nbsp;&nbsp;&nbsp; ../configure
--prefix=/usr/local/ace<br/>
看到“Configuration of ACE 5.5 is now complete.”表示一切OK<br/>
&nbsp;&nbsp; 如果没有错误的话<br/>
&nbsp;&nbsp;&nbsp; 接着<br/>
&nbsp;&nbsp;&nbsp; make
（这个过程大概得半个小时吧，我昨晚256内存的虚拟机编译了半个多小时）<br/>

&nbsp;&nbsp;&nbsp; make
install<br/>
如果以上步骤没有问题的话，进行最后一步，添加库路径<br/>
&nbsp;ace的lib是在/usr/local/ace/lib下放置<br/>
所以，将 /usr/local/ace/lib
添加到/etc/ld.so.conf文件中，单独做一行，或者执行<br/>
echo "/usr/local/ace/lib" &gt;&gt;/etc/ld.so.conf也行<br/>
执行ldconfig -v 就行了<br/>
后续的开发中只需要在编译时添加
-I/usr/local/ace/include&nbsp; -L/usr/local/ace/lib
参数，就能用到ACE的库了。</FONT></DIV>
]]></description>
            <author>小段公子</author>
            <category>程序人生</category>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301008lbh.html#comment</comments>
            <pubDate>Tue, 18 Mar 2008 01:28:02 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301008lbh.html</guid>
        </item>
        <item>
            <title>“五湖四海”-你还记得这个词语吗？</title>
            <link>http://blog.sina.com.cn/s/blog_4b029ef301008il2.html</link>
            <description><![CDATA[<div>&nbsp;
<p><font FACE="宋体">早上还在睡梦中，便被同学发来的短信吵醒，揉揉眼睛看看短信，我又接着睡觉了，不知昏昏沉沉又睡了多久，短信铃声再次响起</FONT></P>
<p><font FACE="宋体">一看，他已经到梅园的天桥上等我了，赶紧一骨碌爬起来，匆匆穿戴好，刷牙洗脸，头发也慌慌张张梳的污七八糟，怕同学等久了埋怨。</FONT></P>
<p><font FACE="宋体">刚要出门，却发现屋子的地板已经很脏了，一个人住，好多天没擦了，便匆匆抹了几下，然后跑将出去。<br/>

&nbsp;<br/>
&nbsp;&nbsp;终于在天桥下发现一个人在上面四处张望，便是他了，呵呵，同学硕士三年都没见了，还是老样子，只是觉得自己相对当初本科</FONT></P>
<p><font FACE="宋体">毕业时苍老了很多，而他们在学校读研，依然清纯依旧，呵呵，社会中复杂的生活对人磨练所引起的苍老感，远远胜过书本千万文字对头脑</FONT></P>
<p><font FACE="宋体">的一遍遍磨砺。</FONT></P>
<p><font FACE="宋体">&nbsp;带他去超市买了点东西回来，他小憩片刻，一看时间12点多了，就叫醒他，先去兰州面馆吃点面，然后他下午要去央视参加笔试，</FONT></P>
<p><font FACE="宋体">而我也要再次奔赴大钟寺，去找房子。</FONT></P>
<p><font FACE="宋体">&nbsp;我俩在拉面馆坐在一横排桌子的两边，里排坐着一对老夫妻，也在吃着地道的兰州拉面，他们一边吃饭，一边又说有笑的谈着什么。</FONT></P>
<p><font FACE="宋体">呵呵，第一眼看他们，我就觉得他俩好象是上海人，因为在上海呆了快一年，经常去商店，饭馆光顾，对那边人的说话以及平常的表情和长相</FONT></P>
<p><font FACE="宋体">也比较熟悉，再加之他们说话时隐约能听到是很熟悉的上海话，我心里不禁升起一丝疑问：呵呵，娇气的上海人也来这种拥挤的地方吃拉面，</FONT></P>
<p><font FACE="宋体">南方人都习惯吃米饭，他们吃面倒貌似很香啊....另外，北方人在一起吃饭时，特别是北京或者东北人，聚在一起时，总是大声说话，嘻哈声</FONT></P>
<p><font FACE="宋体">很大，而且表情上给人很自信豪迈的样子，这也正是北方人的特点吧。然而，他俩却不一样，虽然也在说话，可是老头子和老太婆每说一句话</FONT></P>
<p><font FACE="宋体">总是看着对方，小声说，而且笑得也不是那么放得开--不像有些很豪迈的北方人，说话大笑时脖子都扭到一边去了，他们只是微微的一笑，</FONT></P>
<p><font FACE="宋体">这让我想起跟同学在上海的KFC或者一茶一生里闲聊时，看到的大多数上海人特别是青年情侣都是低头聚集在一起，窃窃私语，一副很浪漫</FONT></P>
<p><font FACE="宋体">的样子。另外，北方人年长后，大都长得比较有福相：脸盘很大，脑袋很大，红光满面的脸庞上有几丝浮肿，而更充满了自信和知足。而上海</FONT></P>
<p><font FACE="宋体">的人却不一样，中青年的上海人，给人感觉特别时尚，皮肤好，气质很好，而上年龄后就不一样，脸盘相对比放任比较小，而且缺少红光，另</FONT></P>
<p><font FACE="宋体">外，给人的感觉是，那种饱经沧桑的样子，让人看了就觉得这个人生活过得很艰辛，呵呵，暂不论事实如何，给人的感觉是这样的。</FONT></P>
<p><font FACE="宋体">&nbsp;&nbsp;
当我俩聊着西安如何修地铁，北京的城铁是如何的拥挤，上海的地铁又是如何的快速时，老人貌似对这个谈论自己家乡的话题感兴趣起来，</FONT></P>
<p><font FACE="宋体">这个是很正常的，各地人对聊起自己家乡的事情总是很感兴趣，因为那些都是他们引以为自豪的事情，比如我们几个老陕在一起聊天时或者跟</FONT></P>
<p><font FACE="宋体">别人聊起西安时，咸阳时，我总是开玩笑说：“秦始皇知道不？我们老乡。。。”“钟南山古墓知道不，小龙女知道不，在我们秦岭山里”，</FONT></P>
<p><font FACE="宋体">“马嵬杨贵妃墓知道不，在我回家的公路旁。。骊山知道不，烽火戏诸侯，捉蒋亭我去过好几回。”，中国人，或者说世界上每一个民族的人</FONT></P>
<p><font FACE="宋体">都有那种对于自己家乡文化的自豪感。</FONT></P>
<p><font FACE="宋体">&nbsp;老太婆问我：“你们也是大学毕业从外地来北京工作的吧？”我们笑着说：“是的”，我说到：“听你们口音好象是上海人，我</FONT></P>
<p><font FACE="宋体">是从西安过来的，不过去年我在上海呆了一年...”.老头子又问我们是哪个学校毕业的，同学说：“有个叫西军电的学校，你们知道吧”。</FONT></P>
<p><font FACE="宋体">老头笑着说：“知道的，西安有个西工大，哈工大，南航，北航，西工大都属于我们航空部管.....”。喔，他们应该是航空部工作的。</FONT></P>
<p><font FACE="宋体">我不由得问道一个问题：“呵呵，你们是上海哪里的人？”。“我们是上海闸北区的，就是原来的老上海火车站附近...”。“哦”，</FONT></P>
<p><font FACE="宋体">我对老火车站还不清楚。想想印象中上海人的娇气和满腹牢骚，再想想回京后被风沙折磨的每个日子，我觉得很奇怪，难道他们不嫌弃</FONT></P>
<p><font FACE="宋体">北京的风沙天气吗？这么烂的鬼天气...我经常这么骂。便问道：“你们在北京呆了很久了吧?这里的风沙天气能适应吗，没上海气候好？”</FONT></P>
<p><font FACE="宋体">老头子微微一笑：“我们刚毕业就来北京了，那是59年........”</FONT></P>
<p><font FACE="宋体">顿时，我的心里咯噔一下，天呐，他们到北京已经49年了，近乎50年，相当于两个我的年龄，想想我刚去上海不到一年，回京后觉得很难</FONT></P>
<p><font FACE="宋体">适应这边的风沙天气，抱怨自己皮肤被吹的很差，抱怨人多车多，堵车拥挤房价高等等.....</FONT></P>
<p><font FACE="宋体">而他们，在这样的城市，这样的气候，一呆就是50年啊，隐约中我想起来了梁晓声小说《这是一片神奇的土地》当中知青开垦北大荒</FONT></P>
<p><font FACE="宋体">时，为了战胜自然，实现梦想，而又几人丧生的那段让人生生难忘的艰难而又充满浪漫色彩的生活，想起了《血色浪漫》里，钟跃民领着郑桐<br/>

，赶着牛儿唱着信天游的情景。50年前，他们两个，正是年轻正当，跟我离开西安一样，他们告别亲人，告别船只过往，雅致温馨，洋商聚集<br/>

的上海滩，从容的踏上北上的火车，怀揣梦想，去实现现身祖国航空事业的那份梦想。顿时，对老人的敬佩之情悠然而生。</FONT></P>
<p><font FACE="宋体">&nbsp;“你们能从上海来北京呆了这么久，很不容易啊”我感叹道。“没什么，我们单位的同事都是来自五湖四海的.......”老太婆说道。</FONT></P>
<p><font FACE="宋体">蓦然间，我的记忆一下子回到那个久远的时代，五湖四海-------这个词语，还有谁会在平常的言语中会再用到它，虽然我们现在也整天从</FONT></P>
<p><font FACE="宋体">一个城市奔往另外一个城市，可是，谈论中经常是“我明天飞到哪里”，“我后天飞到哪里”。似乎“五湖四海”这个词的真正含义和它被</FONT></P>
<p><font FACE="宋体">频繁使用的时代，早已随着这二位老人，随着成千上万的那个时代的知青，驻留在属于他们的那个伟大的历史年代了。</FONT></P>
<p>&nbsp;</P>
</DIV>
]]></description>
            <author>小段公子</author>
            <comments>http://blog.sina.com.cn/s/blog_4b029ef301008il2.html#comment</comments>
            <pubDate>Sun, 09 Mar 2008 14:09:07 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_4b029ef301008il2.html</guid>
        </item>
    </channel>
</rss>
