<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>庄表伟</title>
    <description></description>
    <link>http://zbw.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>《Dreaming in Code》似乎不错</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/213974" style="color:red;">http://zbw.javaeye.com/blog/213974</a>&nbsp;
          发表时间: 2008年07月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在网上看到<a href="http://blog.youxu.info/2008/07/09/a-review-of-dreaming-in-code/" target="_blank">一篇书评</a>。<br /><br />摘录一段：<br /><br /><div class="quote_title">引用</div><div class="quote_div">如果这篇书评能有副标题的话, 我愿意写上: “五个月的时间, 三遍阅读, 三十二页的读书笔记和无数的批注, 以及一个萦绕在脑海中的思考: 如何打造卓越的软件?” 这就是我这个读者的故事. 这本书国内的翻译是韩磊老师做的. 他翻译做 “梦断代码“. 我更加喜欢 “梦萦代码” 这个名字 (Dreaming 翻译成梦萦, 意音俱佳).  当年希尔伯特被问起, 五百年后若是他重回世间, 第一件事情是什么. 他说, “我要一定问黎曼猜想有没有被证明”. 相似的是, 宋朝僵卧孤村壮志未酬的陆游, 当年眼见收复中原无望, 梦里恍惚见到铁马冰河,  一梦醒来后对子女说: 王师北定中原日, 家祭无忘告乃翁.  无数的开发者梦萦代码, 一梦醒来, 就想问一个问题: 软件工程有没有找到银弹? 这个银弹之梦, 打造卓越软件之梦, 会一直萦绕着开发人员, 直到永恒.</div><br /><br />似乎是一本不错的书。<br /><br />给一个link：<a href="http://www.dreamingincode.cn/" target="_blank">http://www.dreamingincode.cn/</a>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/213974#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 Jul 2008 16:20:56 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/213974</link>
        <guid>http://zbw.javaeye.com/blog/213974</guid>
      </item>
      <item>
        <title>5.19——举国哀悼日、凤凰涅槃时</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/194571" style="color:red;">http://zbw.javaeye.com/blog/194571</a>&nbsp;
          发表时间: 2008年05月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有很多很多的话，我都想说，但是还没有整理好自己的思绪。但是，有一点特别明确的是：今天，是中华民族历史上，最为重要的一天。他的重要性，甚至超过“中国人民，终于站起来了”的1949-10-01。<br /><br />从今天起，这个国家将真正走上民族复兴，涅槃重生之路！<br /><br />因为民间力量，因为慈善意识，因为参与精神，因为团结友爱，因为坚韧不拔，因为众志成城，因为政府的进步，因为社会的进步，因为不屈，因为乐观，因为无数的人，从心底里喊出：“中国，加油！”<br /><br />59年来第一次降下的五星红旗，一定会飘扬得更高，更高！
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/194571#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 19 May 2008 20:29:02 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/194571</link>
        <guid>http://zbw.javaeye.com/blog/194571</guid>
      </item>
      <item>
        <title>[转贴]能到灾区的人们，你们可以对地震后的孩子做点啥？</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/193432" style="color:red;">http://zbw.javaeye.com/blog/193432</a>&nbsp;
          发表时间: 2008年05月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          本文的作者是我的表妹兰海，目前在北京开办一家教育机构。<br />http://blog.sina.com.cn/s/blog_4700a4cf010098bo.html <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/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/193432#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 21:37:13 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/193432</link>
        <guid>http://zbw.javaeye.com/blog/193432</guid>
      </item>
      <item>
        <title>Play with Quiz — 找零钱 (3)</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/190407" style="color:red;">http://zbw.javaeye.com/blog/190407</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>要改进这两种算法，都是一个目标，就是寻找不需要列出所有解的办法来。</p>
<p>前一种算法，是求出所有的可能解，然后再找其中的最优解。要进行优化，则可以将求解与求优合二为一。在每一个递归中，都寻找最优解。比如，make_change(14,[10,7,2])，我们就可以寻找14-10后剩余的4的最优解，得到[2,2]，以及14-7后剩余的7的最优解，得到[7]，最后是14-2后剩余的12的最优解，得到[10,2]。然后选择其中最短的一个[7]，组合为[7,7]作为结果返回。</p>
<p>代码如下：</p>
<div class="codecolorer-container ruby">
<div class="codecolorer" style="font-family: monospace;"><ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">def</span> make_change<span style="font-weight: bold; color: #006600;">(</span>amount, coins = <span style="font-weight: bold; color: #006600;">[</span><span style="color: #006666;">25</span>, <span style="color: #006666;">10</span>, <span style="color: #006666;">5</span>, <span style="color: #006666;">1</span><span style="font-weight: bold; color: #006600;">]</span><span style="font-weight: bold; color: #006600;">)</span>&nbsp; &nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #0000ff;">return</span> <span style="font-weight: bold; color: #006600;">[</span>amount<span style="font-weight: bold; color: #006600;">]</span> <span style="font-weight: bold; color: #9966cc;">if</span> coins.<span style="font-weight: bold; color: #9966cc;">include</span>?<span style="font-weight: bold; color: #006600;">(</span>amount<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; min_one_coin=<span style="font-weight: bold; color: #0000ff;">nil</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; min_coins=<span style="font-weight: bold; color: #cc0066;">Array</span>.<span style="color: #9900cc;">new</span><span style="font-weight: bold; color: #006600;">(</span>amount<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; coins.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |one_coin|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">if</span> amount-one_coin&gt;<span style="color: #006666;">0</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; other_coins=make_change<span style="font-weight: bold; color: #006600;">(</span>amount-one_coin,coins<span style="font-weight: bold; color: #006600;">)</span>&nbsp; &nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">if</span> other_coins &amp;&amp; min_coins.<span style="color: #9900cc;">size</span>&gt;other_coins.<span style="color: #9900cc;">size</span>&nbsp; &nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; min_one_coin=one_coin&nbsp; &nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; min_coins=other_coins</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; min_one_coin ? <span style="font-weight: bold; color: #006600;">[</span>min_one_coin<span style="font-weight: bold; color: #006600;">]</span>+min_coins : <span style="font-weight: bold; color: #0000ff;">nil</span>&nbsp; </div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
</ol></div>
</div>
<p>后一种算法，也可以相当直观的优化，因为整个求解的过程，是由少至多，因此，只要求到第一个满足要求的找零方案，就一定是最优解。<br />代码如下：</p>
<div class="codecolorer-container ruby" style="height: 280px;">
<div class="codecolorer" style="font-family: monospace;"><ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">def</span> make_change<span style="font-weight: bold; color: #006600;">(</span>amount, coins = <span style="font-weight: bold; color: #006600;">[</span><span style="color: #006666;">25</span>, <span style="color: #006666;">10</span>, <span style="color: #006666;">5</span>, <span style="color: #006666;">1</span><span style="font-weight: bold; color: #006600;">]</span><span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; change_list=<span style="font-weight: bold; color: #006600;">{</span><span style="font-weight: bold; color: #006600;">}</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; coins.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |coin|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #0000ff;">return</span> <span style="font-weight: bold; color: #006600;">[</span>amount<span style="font-weight: bold; color: #006600;">]</span> <span style="font-weight: bold; color: #9966cc;">if</span> amount==coin</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; change_list<span style="font-weight: bold; color: #006600;">[</span><span style="font-weight: bold; color: #006600;">[</span>coin<span style="font-weight: bold; color: #006600;">]</span><span style="font-weight: bold; color: #006600;">]</span>=coin</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #9966cc;">while</span><span style="font-weight: bold; color: #006600;">(</span><span style="font-weight: bold; color: #0000ff;">true</span><span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; new_change_list=<span style="font-weight: bold; color: #006600;">{</span><span style="font-weight: bold; color: #006600;">}</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; coins.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |coin|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; change_list.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |list,v|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #0000ff;">return</span> list.<span style="color: #9900cc;">insert</span><span style="font-weight: bold; color: #006600;">(</span><span style="color: #006666;">0</span>,coin<span style="font-weight: bold; color: #006600;">)</span>.<span style="color: #9900cc;">sort</span>&nbsp; <span style="font-weight: bold; color: #9966cc;">if</span> coin+v==amount</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">if</span> v+coin&lt;=amount</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new_list=list.<span style="color: #9900cc;">clone</span>.<span style="color: #9900cc;">insert</span><span style="font-weight: bold; color: #006600;">(</span>list.<span style="color: #9900cc;">length</span>,coin<span style="font-weight: bold; color: #006600;">)</span>.<span style="color: #9900cc;">sort</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">unless</span> new_change_list<span style="font-weight: bold; color: #006600;">[</span>new_list<span style="font-weight: bold; color: #006600;">]</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">unless</span> new_change_list.<span style="color: #9900cc;">has_value</span>?<span style="font-weight: bold; color: #006600;">(</span>v+coin<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new_change_list<span style="font-weight: bold; color: #006600;">[</span>new_list<span style="font-weight: bold; color: #006600;">]</span>=v+coin</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #0000ff;">return</span> <span style="font-weight: bold; color: #0000ff;">nil</span> <span style="font-weight: bold; color: #9966cc;">if</span> new_change_list.<span style="color: #9900cc;">length</span>==<span style="color: #006666;">0</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; change_list=new_change_list</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
</ol></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>当然，这两个算法，都还有进一步优化的余地，咱们下回再说。</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/190407#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 May 2008 22:50:18 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/190407</link>
        <guid>http://zbw.javaeye.com/blog/190407</guid>
      </item>
      <item>
        <title>Play with Quiz — 找零钱(2)</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/189125" style="color:red;">http://zbw.javaeye.com/blog/189125</a>&nbsp;
          发表时间: 2008年05月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>接着上回的讨论，我们需要写两个方法，一个找出所有的零钱组合，get_all_change_list。另一个从中再找出符合要求的一个解。</p>
<p>找出符合要求的解，比较简单，先写在下面。</p>
<div class="codecolorer-container ruby">
<div class="codecolorer" style="font-family: monospace;"><ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">def</span> get_best_change<span style="font-weight: bold; color: #006600;">(</span>change_list<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; best_change=<span style="font-weight: bold; color: #0000ff;">nil</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; min_length=<span style="color: #006666;">100000</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; change_list.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |list|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">if</span> list.<span style="color: #9900cc;">length</span>&lt;min_length</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; best_change=list</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; min_length=list.<span style="color: #9900cc;">length</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #0000ff;">return</span> best_change</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
</ol></div>
</div>
<p>至于找到所有的解，就比较麻烦，从思路上来说，可以有两个方向，一个是做减法，一个是做加法。所谓减法，就是假设需要兑换15元的零钱，我就先考虑第一个硬币用10元，接下来就求解剩下5元的找零解法。这就是一个非常自然的，递归求解的思路。代码如下：</p>
<div class="codecolorer-container ruby">
<div class="codecolorer" style="font-family: monospace;"><ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">def</span> get_all_change_list<span style="font-weight: bold; color: #006600;">(</span>amount,coins<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; change_list=<span style="font-weight: bold; color: #006600;">[</span><span style="font-weight: bold; color: #006600;">]</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; coins.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |coin|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">if</span> amount&gt;coin</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; sub_change_list=get_all_change_list<span style="font-weight: bold; color: #006600;">(</span>amount-coin,coins<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; sub_change_list.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |list|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; change_list.<span style="color: #9900cc;">insert</span><span style="font-weight: bold; color: #006600;">(</span><span style="color: #006666;">-1</span>,list.<span style="color: #9900cc;">insert</span><span style="font-weight: bold; color: #006600;">(</span><span style="color: #006666;">-1</span>,coin<span style="font-weight: bold; color: #006600;">)</span>.<span style="color: #9900cc;">sort</span><span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">if</span> amount==coin</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; change_list.<span style="color: #9900cc;">insert</span><span style="font-weight: bold; color: #006600;">(</span><span style="color: #006666;">-1</span>,<span style="font-weight: bold; color: #006600;">[</span>coin<span style="font-weight: bold; color: #006600;">]</span><span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #0000ff;">return</span> change_list</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
</ol></div>
</div>
<p>还有一种做加法的思路，是从所有硬币能够完成的组合来罗列。假设[25,10,5,1]这样一个组合，那么一枚硬币的组合方式，就只有4中，分别是[25],[10],[5],[1]，那么两枚硬币的组合方式自然就是，[25,25],[25,10],[25,10]&hellip;.[1,5],[1,1]。一共16种，取掉次序不同的，一共有10种。再给出所有零钱组合的基础上，再寻找符合amount的找零组合即可。代码如下：</p>
<div class="codecolorer-container ruby">
<div class="codecolorer" style="font-family: monospace;"><ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">def</span> get_all_change_list<span style="font-weight: bold; color: #006600;">(</span>amount,coins<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; min_coin=coins<span style="font-weight: bold; color: #006600;">[</span>coins.<span style="color: #9900cc;">length</span><span style="color: #006666;">-1</span><span style="font-weight: bold; color: #006600;">]</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; max_list_size=amount/min_coin+ <span style="font-weight: bold; color: #006600;">(</span><span style="font-weight: bold; color: #006600;">(</span>amount%min_coin==<span style="color: #006666;">0</span><span style="font-weight: bold; color: #006600;">)</span> ? <span style="color: #006666;">0</span> : <span style="color: #006666;">1</span><span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; change_list=<span style="font-weight: bold; color: #006600;">{</span><span style="font-weight: bold; color: #006600;">}</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; coins.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |coin|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; change_list<span style="font-weight: bold; color: #006600;">[</span><span style="font-weight: bold; color: #006600;">[</span>coin<span style="font-weight: bold; color: #006600;">]</span><span style="font-weight: bold; color: #006600;">]</span>=coin</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="color: #006666;">2</span>.<span style="color: #9900cc;">upto</span><span style="font-weight: bold; color: #006600;">(</span>max_list_size<span style="font-weight: bold; color: #006600;">)</span> <span style="font-weight: bold; color: #9966cc;">do</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; new_change_list=<span style="font-weight: bold; color: #006600;">{</span><span style="font-weight: bold; color: #006600;">}</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; coins.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |coin|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; change_list.<span style="color: #9900cc;">each</span> <span style="font-weight: bold; color: #9966cc;">do</span> |list,v|</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; &nbsp; new_change_list<span style="font-weight: bold; color: #006600;">[</span>list.<span style="color: #9900cc;">clone</span>.<span style="color: #9900cc;">insert</span><span style="font-weight: bold; color: #006600;">(</span>list.<span style="color: #9900cc;">length</span>,coin<span style="font-weight: bold; color: #006600;">)</span>.<span style="color: #9900cc;">sort</span><span style="font-weight: bold; color: #006600;">]</span>=v+coin <span style="font-weight: bold; color: #9966cc;">if</span> v+coin&lt;=amount</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; change_list.<span style="color: #9900cc;">merge</span>!<span style="font-weight: bold; color: #006600;">(</span>new_change_list<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; <span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; change_list.<span style="color: #9900cc;">delete_if</span> <span style="font-weight: bold; color: #006600;">{</span> |key,value| value!=amount <span style="font-weight: bold; color: #006600;">}</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; change_list.<span style="color: #9900cc;">keys</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
</ol></div>
</div>
<p>写出这两个函数，也不容易，具体的思路，明天再讲解吧。未完待续。。。</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/189125#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 03 May 2008 23:25:38 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/189125</link>
        <guid>http://zbw.javaeye.com/blog/189125</guid>
      </item>
      <item>
        <title>Play with Quiz — 找零钱 (1)</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/188736" style="color:red;">http://zbw.javaeye.com/blog/188736</a>&nbsp;
          发表时间: 2008年05月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>先把题目再抄一遍：</p>
<p>这周的题目是找零钱，假设我们需要找给别人39美分的零钱，那么结果将会是(美元的硬币有25,10,5,1这种)：</p>
<div class="codecolorer-container ruby">
<div class="codecolorer" style="font-family: monospace;"><ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&gt;&gt;make_change<span style="font-weight: bold; color: #006600;">(</span><span style="color: #006666;">39</span><span style="font-weight: bold; color: #006600;">)</span>&nbsp;&nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">=&gt;<span style="font-weight: bold; color: #006600;">[</span><span style="color: #006666;">25</span>, <span style="color: #006666;">10</span>, <span style="color: #006666;">1</span>, <span style="color: #006666;">1</span>, <span style="color: #006666;">1</span>, <span style="color: #006666;">1</span><span style="font-weight: bold; color: #006600;">]</span>&nbsp;</div>
</li>
</ol></div>
</div>
<p>假设我们的硬币种类有10,7,1，那么找14美分的零钱结果将会是：</p>
<div class="codecolorer-container ruby">
<div class="codecolorer" style="font-family: monospace;"><ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&gt;&gt;make_change<span style="font-weight: bold; color: #006600;">(</span><span style="color: #006666;">14</span>, <span style="font-weight: bold; color: #006600;">[</span><span style="color: #006666;">10</span>, <span style="color: #006666;">7</span>, <span style="color: #006666;">1</span><span style="font-weight: bold; color: #006600;">]</span><span style="font-weight: bold; color: #006600;">)</span>&nbsp;&nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">=&gt;<span style="font-weight: bold; color: #006600;">[</span><span style="color: #006666;">7</span>, <span style="color: #006666;">7</span><span style="font-weight: bold; color: #006600;">]</span>&nbsp;</div>
</li>
</ol></div>
</div>
<p>这次的每周一测就是完成该方法：</p>
<div class="codecolorer-container ruby">
<div class="codecolorer" style="font-family: monospace;"><ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">def</span> make_change<span style="font-weight: bold; color: #006600;">(</span>amount, coins = <span style="font-weight: bold; color: #006600;">[</span><span style="color: #006666;">25</span>, <span style="color: #006666;">10</span>, <span style="color: #006666;">5</span>, <span style="color: #006666;">1</span><span style="font-weight: bold; color: #006600;">]</span><span style="font-weight: bold; color: #006600;">)</span>&nbsp;&nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
</ol></div>
</div>
<p>这个方法应该返回最优化的结果，即总的零钱个数最少。<br />另外，为了编程方便，这里假设coins已经是排序完毕的，并且如果无解的话，返回nil： make_change(5, coins = [4,2]) =&gt; nil</p>
<p>首先能够想到的思路是这样的：我需要把这个工作分为两个阶段，首先找出所有可能的找零方式，然后返回其中符合要求的一组。我们可以先把所需方法的架子搭起来。</p>
<div class="codecolorer-container ruby">
<div class="codecolorer" style="font-family: monospace;"><ol>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">def</span> get_all_change_list<span style="font-weight: bold; color: #006600;">(</span>amount,coins<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">def</span> get_best_change<span style="font-weight: bold; color: #006600;">(</span>change_list<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">def</span> make_change<span style="font-weight: bold; color: #006600;">(</span>amount, coins = <span style="font-weight: bold; color: #006600;">[</span><span style="color: #006666;">25</span>, <span style="color: #006666;">10</span>, <span style="color: #006666;">5</span>, <span style="color: #006666;">1</span><span style="font-weight: bold; color: #006600;">]</span><span style="font-weight: bold; color: #006600;">)</span>&nbsp;&nbsp;</div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; change_list=get_all_change_list<span style="font-weight: bold; color: #006600;">(</span>amount,coins<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">&nbsp; get_best_change<span style="font-weight: bold; color: #006600;">(</span>change_list<span style="font-weight: bold; color: #006600;">)</span></div>
</li>
<li style="font-weight: normal; color: black; font-style: normal; font-family: 'Courier New', Courier, monospace;">
<div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;"><span style="font-weight: bold; color: #9966cc;">end</span></div>
</li>
</ol></div>
</div>
<p>这其中还是有一个思维跳跃的地方的。通过观看题目，我发现一个现象，找零钱这件事情，未必是先捡最大的零钱来用，就会得到最优解。因此，我直觉这个最优解的查找，可能相当困难，因此，第一步解题，就首先考虑穷举法，把所有可能的答案找出来，然后再进行比较，这样才不会给出错误的结果。</p>
<p>当然，我这样的直觉，虽然正确，却并无缘由，要等我们在随后谈到一些较为数学的内容时，再来讨论。</p>
<p>五一期间，外出度假，先写这点吧~~~</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/188736#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 01 May 2008 23:14:59 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/188736</link>
        <guid>http://zbw.javaeye.com/blog/188736</guid>
      </item>
      <item>
        <title>Play with Quiz (0)</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/188204" style="color:red;">http://zbw.javaeye.com/blog/188204</a>&nbsp;
          发表时间: 2008年04月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>自从Quake Wang在JavaEye贴出第一个<a href="http://www.javaeye.com/topic/175886" target="_blank">Ruby每周一测</a>之后，我就一直非常的感兴趣。不只是对题目本身很感兴趣，更觉得这是一个非常好的技术写作的架子，可以有很多个深入探索的方向。</p>
<p>&nbsp;</p>
<p>首先是解题思路本身，就值得讲一个又一个有趣的故事。再联系到具体的语言实现，不同的语言各有巧妙不同，又值得大书特书。再有就是效率的提升，巧妙的实现是一个方面，性能的提升，则是另一个非常重要的领域。再加上举一反三，融会贯通，可以借此做语言比较，也可以借此谈语法设计的优劣，总之，每一个Quiz，都可以挖一个大坑，慢慢展开。</p>
<p>&nbsp;</p>
<p>所以，我的手一直很痒，想拿这样的题目来下手，但是，另一方面，我的水平，又远远达不到写这样一个题目的层次，一次次提起了笔，又一次次放下~~~</p>
<p>&nbsp;</p>
<p>最终，我还是觉得至少应该开始这件事情，能不能做完，没法保证，能不能做好，更是心里没底。只能希望各位走过路过，多多批评指正了。</p>
<p>&nbsp;</p>
<p>未完待续...</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/188204#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 29 Apr 2008 22:45:13 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/188204</link>
        <guid>http://zbw.javaeye.com/blog/188204</guid>
      </item>
      <item>
        <title>JavaEye社区再分析</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/177490" style="color:red;">http://zbw.javaeye.com/blog/177490</a>&nbsp;
          发表时间: 2008年03月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          接着昨天的思考往下深入。分析一下JavaEye作为一个社区的特点。首先是有哪些人，其次是有哪些内容，然后是有哪些交流方式。以下的内容，只是一些粗略的思考，希望能够抛砖引玉。<br /><br />一、人的类型<br /><br />1、匆匆过客，这些人通常会通过搜索引擎而来，当然也可能是在其他的网站中看到了JavaEye的链接，在达到（或者没有达到）自己的目标之后，就会离开。现在JavaEye的相关文章推荐的水平在不断提高，这有助于这些匆匆过客，再多浏览一些页面，或者有助于他们从过客转换为常客。<br /><br />2、潜水常客，这些人对JavaEye留下了明确的印象，在遇到问题（或者无聊）的时候会想到来这里看看。如果遇到有兴趣的话题，也许会注册一下，参与讨论。但是，大多数时候，他们只是潜水。潜水员是JavaEye宝贵的财富，而且根据1:10:100规律，通常潜水的人都是绝大多数，活跃的会员，总是少数。<br /><br />3、匆匆的提问者，他们急得要命，而且根本不知道JavaEye是个什么样的地方。在提了一个问题之后，就会发现在JavaEye受到了不公正的待遇。当然，这种人是活该。甚至没有必要考虑为他们提供什么服务。<br /><br />4、技术专研者，他们专注于某一领域，在JavaEye，他们通常在特定的板块出现，不时写写Blog。JavaEye的技术内涵，就是靠他们打造的。如何支持他们写出更多更好的技术文章，是JavaEye的核心目标。<br /><br />5、海版高人，他们来JavaEye，通常甚至几乎从来不讨论技术话题，但是在人气最旺的地方，他们出现得最为频繁。有些人仅仅是参与很多的讨论，有些人简直就是某一个领域的偶像或者牛人，比如在职业、股票、经济等等方面常常引人注目的闪亮出场。<br /><br />6、神出鬼没者，有些人在JavaEye有着极高的人气和知名度，不过出现的次数很少，一旦出现就会引发围观。<br /><br />二、内容的类型<br /><br />1、技术细节问答，一般而言，一问一答就能结束。这种内容，其实最无价值，也就是那些匆匆提问者期待的内容。<br /><br />2、深度讨论，几十页、几十人的讨论，通常会在深度和广度方面，都有惊人的拓展。这是JavaEye非常有价值的内容。<br /><br />3、教程、心得、学习笔记，一般为单人创作，根据写作的水平和内容的精彩程度，会有或多或少的人参与讨论。<br /><br />4、海版热帖，这个就广了，海阔天空嘛。<br /><br />5、Blog与圈子里的讨论，这一类内容，通常无法引起多少讨论，默默无闻的就沉掉了。<br /><br />6、新闻事件，这个现在JavaEye已经有专门的频道了，而且也运作得非常不错。就不多分析了。<br /><br />三、交流的类型<br /><br />1、问答<br /><br />2、深入探讨，这种交流最能够在网友之间建立深厚的情感。同时又最能够为JavaEye贡献有价值的内容。<br /><br />3、跑题，大家往偏了扯，越聊越是兴高采烈，对于JavaEye的内容帮助不大，但是对于人际交流，却有很大的帮助。<br /><br />4、吵架，其实不打不相识，未必是什么坏事。<br /><br />5、blog留言，新闻点评。现在这样的交流比较弱，也不是JavaEye的典型交流方式。<br /><br />6、站内短信<br /><br />7、延伸的交流，在JavaEye交往之后，进一步发展IM联系，线下的联系等等。<br /><br />四、还没有想清楚的部份<br /><br />我能够想到的是，在分析清楚了人、内容和交流方式之后，JavaEye应该可以进一步分析，<br /><br />1、如何帮助用户更加有效的交流，并且在交流中，能够更好的创造出有价值的内容。对于有价值的讨论，如何能够有意识的将这个讨论引导、推进、激发、协助整理等等。<br /><br />2、另外是如何帮助用户在技术之外，有更多有趣的交流，这样的交流主要是为了提升用户之间的交往，也有助于提升网站的黏度。<br /><br />先写这些吧......接下去就想不太清楚了。<br /><br />发到Blog首页，看看效果。。。。
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/177490#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 29 Mar 2008 00:15:09 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/177490</link>
        <guid>http://zbw.javaeye.com/blog/177490</guid>
      </item>
      <item>
        <title>SNS、IM、BBS与JavaEye</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/177053" style="color:red;">http://zbw.javaeye.com/blog/177053</a>&nbsp;
          发表时间: 2008年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今天在跟Robbin聊天，聊的话题也比较散，只能记一个大概了。</p><p>背景1、最近JavaEye在很激烈的讨论关于技术书籍翻译的事情。<br /><a href="http://www.javaeye.com/topic/174472"><span style="color: #669932">[读书] 书评：《敏捷软件开发》中文版第二版</span></a><br /><a href="http://www.javaeye.com/topic/175638"><span style="color: #669932">[读书] 语无伦次的译者作者黑名单</span></a><br />好多译者都浮出来了，还有出版社的朋友，也参与了讨论。气氛甚为热烈。</p><p>背景2、这两天在<a href="http://groups.google.com/group/BVtougao" target="_blank"><span style="color: #669932">博文视点出版社的Groups</span></a>里，也正好在讨论一部书稿，叫做《编程新手真言》，被不少人，包括我在内，毫不留情的批评了一通。</p><p>背景3、百度Hi推出体验版，采用邀请机制，一时间邀请的Blogger与想要获得邀请的帖子满天飞，热闹得不得了。</p><p>背景4、SNS（国内抄袭Facebook与Myspaces的网站）大繁荣。正好Robbin给了一个文章链接。<a href="http://weiwuhui.blogbus.com/logs/17194224.html" target="_blank"><span style="color: #669932">SNS：下一个天堂？</span></a>我看了之后，也觉得写得非常有道理。</p><p>在讨论之后，形成了以下观点</p><p>观点1、国内与国外的网络用户，对于互联网的使用模式，是不同的。我们更习惯于BBS，IM，而国外更习惯于Web SNS和email/maillist。WebSNS在中国搞不成，最大的阻碍是IM工具的方便性。</p><p>观点2、Google的gtalk开发得很弱，是因为他们对于IM Talk的需求就很弱。Gmail开发得很强，也是因为他们对于Mail的需求就很强。</p><p>观点3、想在国内复制SNS网站的辉煌，基本上没戏，虽然有很成功的校内网，但是那是由于地处校园网之内，而且被水产掉的校园网BBS，使得同学们无路可去。</p><p>再回到对于JavaEye的未来期望上来。我的观点与建议有以下一些：</p><p>1、坚定不移的以BBS为核心，辅之以Blog，这是用户在JavaEye交流与分享的主要渠道。SNS的追求、第三方应用的API支持，不妨缓做。</p><p>2、建议模仿起点中文网，推出IT写作连载频道，鼓励并支持技术原创与翻译作品的发表。</p><p>3、推出连载付费模式，以便作者能够获得更多的收益。</p><p>4、推出打印服务，可以与印客合作，作者、网站与印客收入分成。</p><p>5、与出版社合作，在已经证明有众多读者的作品中，挑选来出版实体书。</p><p>6、JavaEye的wiki不妨缓做（robbin对这一条并不同意）</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/177053#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Mar 2008 22:03:15 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/177053</link>
        <guid>http://zbw.javaeye.com/blog/177053</guid>
      </item>
      <item>
        <title>说说安家这件事</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/172768" style="color:red;">http://zbw.javaeye.com/blog/172768</a>&nbsp;
          发表时间: 2008年03月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>2005年1月28日，在BlogCN安家，写了第一篇blog。2005年11月7日，告别BlogCN，迁到了MSN Spaces。<a href="http://zbw25.blogcn.com/"><span style="color: #669932">blogcn link</span></a></p><p>&nbsp;</p><p>2005年11月14日，新注册了一家BlogJava。2006年10月18日，在BlogJava发表最后一篇Blog，从此不再去了。<a href="http://www.blogjava.net/zbw25/"><span style="color: #669932">blogjava link</span></a></p><p>&nbsp;</p><p>自从JavaEye有了Blog以后，一直用到了现在。</p><p>&nbsp;</p><p>自从搬到了MSN Spaces之后，从2005年4月7日一直用到了现在。<a href="http://zbw25.spaces.live.com/"><span style="color: #669932">msn link</span></a></p><p>&nbsp;</p><p>还有其他零零碎碎开了没去的blog，比如BlogSpot；BlogBus；Baidu空间等等等等。</p><p>&nbsp;</p><p>现在，历史又翻开了新的一页，我注册了一个新的cn域名：<a href="http://www.zhuangbiaowei.cn/"><span style="color: #669932">zhuangbiaowei.cn</span></a>。然后在这里装好了WordPress，挑好了iMac Stype的皮肤，装好了阿里妈妈的广告，这个新家，已经似模似样了。</p><p>&nbsp;</p><p>现在的问题是，我不可能有时间精力，维护这么多家呀。<br />MSN Spaces一直是我的主Blog，订阅人数也是最多的，更有MSN好友通知的机制。写了3年了，的确是舍不得。<br />JavaEye的Blog，人气最旺，也是讨论氛围最好的地方，舍不得。<br />难道要我同时维护三个家？</p><p>&nbsp;</p><p>&nbsp;</p><p>现在初步决定是这样的，JavaEye的Blog，今后只发表技术相关的文章。MSN Spaces，今后只发表生活相关的文章。<a href="http://www.zhuangbiaowei.cn/"><span style="color: #669932">zhuangbiaowei.cn</span></a>，是文章最全的地方，而且会逐步的将散落在其他博客里的文章，也复制回来。<a href="http://feed.feedsky.com/zbw25"><span style="color: #669932">FeedSky的Feed</span></a>，从MSN Spaces，重新指向到新家，就先这么试试看吧。</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/172768#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 16 Mar 2008 20:35:24 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/172768</link>
        <guid>http://zbw.javaeye.com/blog/172768</guid>
      </item>
      <item>
        <title>小人精</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/167102" style="color:red;">http://zbw.javaeye.com/blog/167102</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>世事洞明皆学问</strong></p><p>1、儿子刚换了新的幼儿园，前两天，我们问他：&ldquo;幼儿园里的老师，喜欢你吗？&rdquo;，他说：&ldquo;刚去了两天，我还比较乖，他们当然还是喜欢我的。等到过两天，我不乖了，他们就不喜欢我了。&rdquo;</p><p>2、过了两天，他在幼儿园里犯错误了，我们问他：&ldquo;老师骂你了吗？&rdquo;<br />他说：&ldquo;没有&rdquo;；<br />&ldquo;为什么呢？&rdquo;；<br />&ldquo;因为老师善良呀。&rdquo;</p><p>&nbsp;</p><p><strong>人情练达即文章</strong></p><p>1、儿子还是很喜欢原来幼儿园的贝贝老师，常常自己拨电话打给老师。有一次，他们老师在电话里问他：&ldquo;到新的幼儿园，会哭吗？&rdquo;<br />他说：&ldquo;我想到你和李老师，就不难过了。&rdquo;</p><p>2、他吃了爷爷烧的鸡翅膀，说到：&ldquo;真是太美味了&rdquo;，爷爷笑着说：&ldquo;夸得我姓什么都不知道了。&rdquo;，儿子也笑着说：&ldquo;爷爷，马屁不要拍得太厉害呀。&rdquo;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/167102#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 23:19:01 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/167102</link>
        <guid>http://zbw.javaeye.com/blog/167102</guid>
      </item>
      <item>
        <title>发布DynamicStruct-0.2 and BytecodeStruct-0.1</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/161468" style="color:red;">http://zbw.javaeye.com/blog/161468</a>&nbsp;
          发表时间: 2008年02月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          DynamicStruct，是我最近自己在鼓捣的一个ruby项目，这是一个更大的计划的一部分。<br /><br />当他完成之后，应该是这样的一个结构：<br /><br />   Aurum<br />     |<br />     V<br />  RubyBCL<br />     |<br />     V<br />DynamicStruct<br /><br />Aurum是目前徐昊正在做的一个项目，简单的介绍可以看这里：《<a href="http://www.blogjava.net/raimundox/archive/2007/09/05/143028.html" target="_blank">A very brief introduction to Aurum</a>》<br /><br />通过aurum，可以更加方便的定义新的语言。<br /><br />但是，仅仅依靠aurum，只能让新设计出来的语言，运行于aurum的解释环境中，ruby就已经是够慢的解释语言了，这样的解释执行方式，可以说完全无法得到具有实用价值的语言。但是，如果可以通过aurum，将一种语言编译成Java Bytecode，那么，美好的未来就会是：“能够快速的定义，具有实用价值的，新语言！而且，各种新语言，都能够基于JVM，互联互通。”<br /><br />RubyBCL，现在还没有出现。仅有的灵感，来自Charles Nutter的一篇blog：《<a href="http://headius.blogspot.com/2007/11/bytecode-tools-in-ruby-low-level-dsl.html" target="_blank">Bytecode Tools in Ruby: A Low-level DSL</a>》。这篇blog可能无法在国内访问。转贴一点过来吧：<br /><br /><pre name="code" class="ruby">  cb = Compiler::ClassBuilder.build("MyClass", "MyClass.java") do
    field :list, ArrayList
    
    constructor(String, ArrayList) do
      aload 0
      invokespecial Object, "&lt;init>", Void::TYPE
      aload 0
      aload 1
      aload 2
      invokevirtual this, :bar, [ArrayList, String, ArrayList]
      aload 0
      swap
      putfield this, :list, ArrayList
      returnvoid
    end
    
    static_method(:foo, this, String) do
      new this
      dup
      aload 0
      new ArrayList
      dup
      invokespecial ArrayList, "&lt;init>", Void::TYPE
      invokespecial this, "&lt;init>", [Void::TYPE, String, ArrayList]
      areturn
    end
    
    method(:bar, ArrayList, String, ArrayList) do
      aload 1
      invokevirtual(String, :toLowerCase, String)
      aload 2
      swap
      invokevirtual(ArrayList, :add, [Boolean::TYPE, Object])
      aload 2
      areturn
    end
    
    method(:getList, ArrayList) do
      aload 0
      getfield this, :list, ArrayList
      areturn
    end
    
    static_method(:main, Void::TYPE, String[]) do
      aload 0
      ldc_int 0
      aaload
      invokestatic this, :foo, [this, String]
      invokevirtual this, :getList, ArrayList
      aprintln
      returnvoid
    end
  end
  cb.write("MyClass.class")</pre><br /><br />这样一段代码，就能够得到一个MyClass.class。这个class，也可以用下面的java代码编译得到。<br /><br /><pre name="code" class="java">import java.util.ArrayList;
public class MyClass {
  public ArrayList list;
  public MyClass(String a, ArrayList b) {
    list = bar(a, b);
  }
  public static MyClass foo(String a) {
    return new MyClass(a, new ArrayList());
  }
  public ArrayList bar(String a, ArrayList b) {
    b.add(a.toLowerCase());
    return b;
  }
  public ArrayList getList() {
    return list;
  }
  public static void main(String[] args) {
    System.out.println(foo(args[0]).getList());
  }
}</pre><br /><br />非常漂亮的DSL，但是，在看过Charles Nutter放在svn里的代码之后，我才发现，这家伙太讨巧了，事实上他上面的那些DSL，最后还是利用JRuby，调用了ASM这个java类库。所以，我打算，仅仅借鉴他的DSL设计，但是却用纯粹的ruby，来实现一个生成Java Bytecode的lib。<br /><br />至于DynamicStruct，要从BitStruct说起，由于ruby没有一个很方便的处理二进制文件的类库，所以我找到了<a href="http://redshift.sourceforge.net/bit-struct/doc/index.html" target="_blank">bit-struct</a>，还有一篇不错的中文介绍：《<a href="http://liubin.nanshapo.com/2007/06/16/%E7%94%A8bit-struct%E5%A4%84%E7%90%86%E7%BB%93%E6%9E%84%E5%8C%96%EF%BC%88%E4%BA%8C%E8%BF%9B%E5%88%B6%EF%BC%89%E6%95%B0%E6%8D%AE/" target="_blank">用bit-struct处理结构化（二进制）数据</a>》<br /><br />但是，后来我发现，这个bit-struct，存在绝大的问题，甚至不能仅仅在他的基础上进行修改。因为他只能支持定长的数据结构，而不是可变长度的array list，变长的string，或者switch结构。因此，只能推倒重写。<br /><br />我现在的工作，就是一个初步的二进制文件读写类库的实现。<br /><br />简单的看看其中的测试代码吧：<br /><br /><pre name="code" class="ruby">require "dynamic-struct"

class ClassFile&lt;DynamicStruct
  u4 :magic
  u2 :file  
  field_type :clsf
end

class Temp&lt;DynamicStruct
  u2 :t_file
  clsf :cf
  field_type :temp
end

class Temp2&lt;DynamicStruct
  u2 :t_file
  clsf :cf
  temp :ttt  
  u1 :uu1
  u2 :uu2
end

a=Temp2.new
a.t_file=1
a.cf.magic=2
a.cf.file=3
a.ttt.t_file=4
a.ttt.cf.magic=5
a.ttt.cf.file=6
a.uu1=444
a.uu2=888

f=open("C:\\test1.class","wb")
a.write(f)
f.close

f = File.new("C:\\test1.class")
b=Temp2.new
b.read(f)
f.close

puts b.to_s</pre><br /><br />这个test1，基本完成了与bit-struct类似的工作。<br /><br /><pre name="code" class="ruby">require "dynamic-struct"

class Temp&lt;DynamicStruct
  string :str,1
end

a=Temp.new
a.str='String Test!'

f=open("C:\\test2.class","wb")
a.write(f)
f.close
f = File.new("C:\\test2.class")
b=Temp.new
b.read(f)
f.close
puts b.to_s</pre><br /><br />这是动态字符串的效果。<br /><br /><pre name="code" class="ruby">require "dynamic-struct"

class TempArray&lt;ArrayField
  size_byte 1
  item_type :u2
  field_type :u2array
end

class TempStruct&lt;DynamicStruct
  u2array :ua
end

ts=TempStruct.new
ts.ua.add(1)
ts.ua.add(2)
ts.ua.add(3)
ts.ua[2]=4
puts ts.to_s
f=open("C:\\test3.class","wb")
ts.write(f)
f.close
f = File.new("C:\\test3.class")
b=TempStruct.new
b.read(f)
f.close

puts b.to_s</pre><br /><br />这是array list的效果。<br /><br /><pre name="code" class="ruby">require "dynamic-struct"

class TempSwitch&lt;SwitchField
  size_byte 1
  item_type_list({1=>:u1,2=>:u2,3=>:u4,4=>:u8})
  field_type :temps
end

class TempStruct&lt;DynamicStruct
  temps :tus
end

ts=TempStruct.new
u=UnsignedField.new
u.field_type_name="u4"
u.value=33
ts.tus.value=u
  
puts ts.to_s
f=open("C:\\test4.class","wb")
ts.write(f)
f.close
f = File.new("C:\\test4.class")
b=TempStruct.new
b.read(f)
f.close

puts b.to_s</pre><br /><br />这是switch的效果。<br /><br />附上源代码，欢迎多多批评！
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/161468#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 05 Feb 2008 00:26:21 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/161468</link>
        <guid>http://zbw.javaeye.com/blog/161468</guid>
      </item>
      <item>
        <title>点宝趣事三则</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/158188" style="color:red;">http://zbw.javaeye.com/blog/158188</a>&nbsp;
          发表时间: 2008年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>一、吃葱聪明</p><p>奶奶劝点点多吃点葱，并且告诉他：&ldquo;吃葱好呀，吃了就聪明了&rdquo;。于是点点就对奶奶说：&ldquo;奶奶，那你应该多吃点葱呀，你到现在普通话都学不好。&rdquo;</p><p>&nbsp;</p><p>二、残酷</p><p>最近点宝住在奶奶家，出于一个老教育工作者的执着，奶奶准备开始给点点教规矩了，于是对点点说：&ldquo;点点，从今天起，你就要按计划，早睡早起，好好学习，少看电视了。&rdquo;点点叫道：&ldquo;哎呀我的妈呀，这也太残酷了吧！&rdquo;</p><p>&nbsp;</p><p>三、奶奶的幽默</p><p>最近上海总是阴雨绵绵，我们全家开车出门，车子里雾得不得了，因为新贴了车膜，又不能开除雾的开关，只能不断的用纸巾去擦玻璃。奶奶就感叹道：&ldquo;这车和点点一样，每天要用好多纸头啊！&rdquo;（儿子有过敏性的鼻炎，每天要打无数个喷嚏。）点点大为不满，高声叫道：&ldquo;你啥意思呀，你啥意思呀！&rdquo;</p><p>&nbsp;</p><p><span style="font-size: medium; color: #0000ff; font-family: 楷体_GB2312">BTW，因为参加FeedSky的博客大赛，今天收到了他们寄来的咖啡壶，特在此表示感谢！</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/158188#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 Jan 2008 00:16:36 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/158188</link>
        <guid>http://zbw.javaeye.com/blog/158188</guid>
      </item>
      <item>
        <title>得了便宜，还是要卖乖</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/155919" style="color:red;">http://zbw.javaeye.com/blog/155919</a>&nbsp;
          发表时间: 2008年01月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>我参加了这次的车牌拍卖，非常幸运的，我以相当低的价格拍到了车牌，但是，我还是有不少话想讲，就算是&ldquo;得了便宜还卖乖&rdquo;吧。</p><p><strong>本意</strong></p><p>这次的车牌拍卖，要算是政府最想弄好的一次。上个月的拍卖，就有很多的风声与政府言论出来，大概的意思是，车牌价格高得不正常，因为有&ldquo;<span style="color: #ff0000">不良经销商恶意操纵</span>&rdquo;，简单的修改了一下规则，有一个高价提醒，然而，上个月的拍卖，还是价格高得惊人，平均中标价格更高达56042元。于是，政府决定痛下杀手，于是就改了规则，从他们制定的那几条规则，可以看出政府的本意：</p><p>1、博弈公开，不断的公布最低可中标价，以防止拍卖价格不断上涨。<br />2、时间缩短；修改范围限制在300元上下；每人只能投一次，改两次，以减少每个人所导致的价格上涨幅度。<br />3、只接受电脑与网络投标，以分散投标者，避免人群集中后导致的哄抬气氛。</p><p>真的，想得都挺好！详细的规则说明，请看<a href="http://www.alltobid.com/chepai/faq.htm" target="_blank">常见问题与回答</a>。</p><p><strong>理想情况</strong></p><p>在完全理想的情况下，这些规则，究竟会如何起作用呢？</p><p>1、第一次投标价，其实是毫无意义的，只是为了保证在后来的半小时里，能够有修改价格的权力。<br />2、做为一个完全理性的投标者，完全应该只投100元，假设人人都是完全理性的投标者，那么，在第一个小时结束后的最低中标价，依然会是100元。<br />3、修改出价，越晚越好，最好是在半小时的最后一秒钟，投一个价，这个价应该是多少呢？200元。为什么呢？因为所有的人，都在等最后一秒钟出价，在此之前的最低中标价，必然是一直维持在100元。而到了最后一秒，我只要比这再多100元，200元，这车牌就到手了。<br />4、服务器的负载会是怎么样的情况呢，假设人人都是完全理性者，人人都在最后一秒投标，人人都投200元，任凭你多好的系统、服务器、网络，都架不住这瞬间冲击，一定会爆掉！<br />5、假设人人都完全理性，自然能够估算到这个情况，那么就会调整自己的策略，依各人的乐观程度，做出不同程度的提前投标。<br />6、既然提前会吃亏，太迟了又拍挤不进去，那么，合理的办法就是，不断的拨打电话，或链接网络，以估算网络的、服务器的拥挤程度。<br />7、网络与电话区别在于（在理想情况下），网络的链接，可以是&ldquo;瞬间提交&rdquo;，因此，不能做到对于拥挤程度的准确估算。而电话，只要我拨打进去以后，不挂断电话，随便做做其他的操作，比如一直听使用需知之类的，以霸占这条线路，就能够安全的等到最后投标。<br />8、假设人人都了解，并尝试通过电话霸占线路，那么在第一小时结束后，会出现一个瞬间的高峰，有n个人会打进电话，假设为1000人，这一千人就会一直霸占线路，直到最后投下200元为止。<br />9、结论是，在完全理想的情况下，这样的投标，中标人数取决于电话开通的门数。而中标价格，将是200元。</p><p><strong>系统的bug</strong></p><p>当然，理想情况是不可能出现的，在讨论实际情况前，我们先聊聊这次拍卖过程中，出现的N多bug。</p><p>1、价格区间为最低中标价的上下300元。对于参与投标者来说，既然知道了最低中标价，怎么会有人把价格修改为低于最低中标价呢？这种事情，只要稍为用大脑想想，就能知道的呀？<br />2、语音电话，每分钟两元的语音电话，选1，可以听取使用需知，而这个使用需知的内容，就是印在发给我们的材料上的内容，读一遍大约是10分钟。有些用户，因为误解了操作的含义，好不容易打进了电话，就傻傻的去听使用须知。结果听到一半，线路断了。再打，就打不进去了。<br />3、发给我们的软件，是一个极为垃圾的软件，<a href="http://www.alltobid.com/chepai/web.htm" target="_blank">介绍网页</a>。界面之难看，就不提了。由于缺乏排队系统，这个软件，只能不断的提示我重试，每次我都要点一次OK。都无法帮我自动重试。<br />4、由于价格优先与时间优先原则，以最低中标价投标，并不能保证中标，从系统来说，应该提示的，是&ldquo;最低可中标价&rdquo;，而不是&ldquo;当前价格序列中的最低中标价&rdquo;。<br />5、首次出价前，系统同样会提示用户最低中标价，但是，这样的提示，很有可能误导用户，因为前一万六千个用户，都肯定能中标，对于这些用户，他们听到的最低中标价，十有八九，是100元。在这个时候，应该不需要公开透明的提示最低中标价，而应该在第二阶段在公布。</p><p><strong>实际情况</strong></p><p>在实际的投标过程中，情况比我们的预测还要糟糕。因为有很多是网络链接失败，电话又打不通，这就导致了一系列的心理与策略变化。</p><p>1、最倒霉的，就是第一个小时无法成功投标的人，这些人极为冤枉。<br />2、因为阻塞和服务器瘫痪，导致绝大多数用户，逐步产生恐慌心理，原本系统通过&ldquo;把大家赶回家&rdquo;的办法，减少哄抬心理的努力，变得失去意义。<br />3、一旦拨通电话，大家都是在非常随意的出价，有的很低，有的很高。因为心理预期，认为这次的价格肯定不会超过上个月，所以也有些志在必得的用户，会选择3~4万的高价。他们现在悔之晚矣。<br />4、到了修改价格阶段，那些好不容易拨通电话的人，会尝试尽可能多的延长电话通话时间，以便延迟投标，这也使得网络更加拥堵，越到后来越不可能打进电话。<br />5、那些出价稍高的人，在了解到最低中标价之后，却又不敢修改价格，一是怕提交失败，一是拍修改了之后，只能比当前最低中标价高300块，一旦被人踢出来，就再也回不去了。<br />6、由于大多数人无法打进电话，又不愿意修改自己原来的出价，因此修改价格阶段，网络会非常拥堵，但是提交到服务器的数据却会非常少，最低中标价的上涨速度，会非常非常慢，这也算是&ldquo;<span style="color: #ff0000">歪打正着</span>&rdquo;的实现了政府的目标。<br />7、在投标结束后，有很多倒霉的用户，会非常的愤怒，因为无法打进电话，连上网络，导致最后投标失败，实在是一场悲剧。因此有不少人，开始作阴谋论的怀疑，当然，我相信政府，还是不会玩阴谋的，不是他&ldquo;不会&rdquo;、&ldquo;不敢&rdquo;、&ldquo;不屑&rdquo;，而是出于我对政府的执行力的了解，不相信他们有玩阴谋、搞操纵的本事。</p><p><strong>总结</strong></p><p>我虽然拍到了车牌，但是还是觉得他们做事相当的垃圾，不值得感谢，更不能将这次的价格大跌，归功于他们领导有方。<img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-4805626697100151956&amp;page=RSS%3a+%e5%be%97%e4%ba%86%e4%be%bf%e5%ae%9c%ef%bc%8c%e8%bf%98%e6%98%af%e8%a6%81%e5%8d%96%e4%b9%96&amp;referrer=" border="0" height="1" alt="" width="1" /><img src="http://c.live.com/c.gif?NC=31263&amp;NA=1149&amp;PI=73329&amp;RF=&amp;DI=3919&amp;PS=85545&amp;TP=zbw25.spaces.live.com&amp;GT1=zbw25" height="0px" alt="" style="position: absolute" width="0px" /> </p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/155919#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 15 Jan 2008 09:24:14 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/155919</link>
        <guid>http://zbw.javaeye.com/blog/155919</guid>
      </item>
      <item>
        <title>[拼搏到底之龟兔赛跑--Day 30]缘，妙不可言</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/147428" style="color:red;">http://zbw.javaeye.com/blog/147428</a>&nbsp;
          发表时间: 2007年12月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最后一篇了，连写30天，还真是不容易啊。第一篇，叫做：&ldquo;与书有缘&rdquo;。最后一篇，还是讲讲与书的缘份吧。</p>
<p>我在05年的9月22日，写了一篇blog，叫做《<a href="http://zbw25.spaces.live.com/blog/cns!BD4EFBFAF436336C!534.entry">林昭、李敖、日本ＡＶ男优与对日诉讼</a>》，结果博文视点的周老师看到了这篇文章，发现我竟然如此的热爱林昭，而她和林昭又是同乡，因此就邮寄了一本《<a href="http://www.douban.com/subject/1197592/" target="_blank">追寻林昭</a>》给我，这本书外面肯定是买不到了，而我居然有幸得见，实在是奇妙的缘份。</p>
<p>我因为一直看&ldquo;按摩乳&rdquo;的blog&mdash;&mdash;后来改名叫&ldquo;不许联想&rdquo;，看到里面提到了一个叫&ldquo;老六&rdquo;的朋友，然后顺着链接过去，订阅了六哥的blog。等到后来六哥开始写《我知道你今年秋天干了些什么》的六篇连载，饱含深情的介绍他的《读库0600》的时候，我就完全被这本书吸引了。2005年11月15日的时候，我写了一篇blog《<a href="http://zbw25.spaces.live.com/blog/cns!BD4EFBFAF436336C!710.entry">有好书自远方来，不亦乐乎！</a>》，介绍了一下，2005年11月23日，<a href="http://zbw25.spaces.live.com/blog/cns!BD4EFBFAF436336C!741.entry" target="_blank">我收到了自己的第一本读库</a>。</p>
<p>结果，博文的周老师因为看了我这两篇blog，也订购了不少读库，后来还买了不少送人（周老师是我认识的人当中，最喜欢买书送人的朋友了。这个爱好，真是不错！）也因此成了六哥的大客户。据说还和六哥、王大娘他们，很是喝了几顿酒。&mdash;&mdash;唉，我到现在，还没见过六哥本人呢。</p>
<p>因为看六哥的博客，后来自然也就去买了一本《记忆碎片》。真是极好的一本书。与好几年前，孔庆东的一本《47楼207》，颇为类似，都是轻松幽默、回忆青春。相对来说，六哥的文笔和回忆，都更加精彩一些。到现在，孔庆东都已经变成一个颇为令人生厌的家伙了，而六哥却依然在做着一些很精彩的事情。</p>
<p>说实话，读库的水准，未必能够一直保持，比如0601，就颇为令我失望，所以我也写了一篇blog，<a href="http://zbw25.spaces.live.com/blog/cns!BD4EFBFAF436336C!959.entry" target="_blank">发了一下牢骚</a>。</p>
<p>后来，因为在印客的关系，我看到了一本书，其中收录了六哥的一篇文章。我就联系到六哥，把一本样书，给六哥寄去了。</p>
<p>没想到，后来六哥竟然寄了一本《读库0700》给我，书里夹了一张明信片，是读库从0600到0606的合影。我顿感不该漏掉任何一本读库，当时就去当当把所有没有买过的读库全都补上了(<a href="http://zbw25.spaces.live.com/Blog/cns!BD4EFBFAF436336C!1518.entry" target="_blank">link</a>)。也因此得以了解沈祖棻先生的诗词，后来还通过网络，找到了她的诗词集《涉江词》。综合来看，读库系列，依然是我所看过的，最好的系列文集(没有之一)。所以，我这回还是预定了08年全年的读库，明年一年，都有的享受了！</p>
<p>因为书而认识精彩的人，因为人，而遇到精彩的书。缘，真是妙不可言！</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/147428#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Dec 2007 00:23:38 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/147428</link>
        <guid>http://zbw.javaeye.com/blog/147428</guid>
      </item>
      <item>
        <title>[拼搏到底之龟兔赛跑--Day 29]软件开发类书籍</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/147427" style="color:red;">http://zbw.javaeye.com/blog/147427</a>&nbsp;
          发表时间: 2007年12月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>说起来，我的本行是搞软件开发，这个龟兔赛跑我前面已经写了28天了，居然就一直没有写到任何一本与软件开发有关的书籍，的确是个需要解释一下的问题。 </p>
<p>在我而言，读书是一种生活享受，而读绝大多数软件开发相关的书籍，都很难说是一种享受。无论中外，搞软件开发的人的文笔，都相当的弱，国外翻译过来的技术类图书，很有可能那个老外本身的文笔就一般般，再加上翻译的文笔，往往就不忍卒读。还有不少&ldquo;工作室&rdquo;翻译的垃圾，好书都给他翻坏掉了。国内的技术类书籍，要么是编著，那就不必谈了，偶尔有些原创的，也同样存在词不达意的问题。好书，尤其是读起来算得上是享受的好书，真的是少之又少。没办法，工作的确是需要，往往又只能硬着头皮去啃，这也就造成了更多的心理阴影，在这种情况下，让我回忆软件开发类的好书，就比较困难了。 </p>
<p>如果一定要列举一些的话，也只能说出个五、六本来了。 </p>
<p>《重构》，熊节翻译的，在技术类图书中，算是相当的流畅了，再加上书本身所具有的，开创性的价值，的确值得好好读一读。相对而言，另外一本《网站重构》，就翻译得很差了。 </p>
<p>《敏捷软件开发》，Bob大叔的那本，这是我到目前为止看到的，对于面向对象讲解得最为清楚明白，也最为深入透彻的一本书。强烈推荐。 </p>
<p>《代码大全》(第二版)，我曾经写过一篇书评，《<a href="http://www.douban.com/review/1042701/" target="_blank">软件开发的世界地图</a>》当时虽然是受邀而写，也的确说的是心里话。 </p>
<p>《程序开发心理学》，有一段，来自代码大全：&ldquo;每个程序员的上司都该有一本，应当认真读读， 用心去记， 按其中的训诫行事； 放在办公桌上供其程序员去偷。 但他仍要继续再放一本， 直到没人拿为止。&rdquo;　　 －－Weiss, 1972。我因此买了温伯格的好多其他书，然后发现，其他的书，大多不必买。 </p>
<p>《人月神话》，当年看到的时候，自然是引为圣经，说实话，现在看来，这本书很像一本&ldquo;训诫&rdquo;，上帝对人说：&ldquo;教你不要飞，你不相信吧！现在果然摔下来了吧。&rdquo;但是也就是如此了。 </p>
<p>《测试驱动开发》、《解析极限编程：拥抱变化》，两本革命性的好书，如果是人月神话，人件之类的书，是早前的经典，大多只能提出问题的话，那么测试驱动开发与极限编程，则是对于解决软件开发问题，最为重要的尝试。随后兴起的敏捷大潮，正是由此起步的。 </p>
<p>差不多了，大概就这些了吧。</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/147427#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Dec 2007 00:22:12 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/147427</link>
        <guid>http://zbw.javaeye.com/blog/147427</guid>
      </item>
      <item>
        <title>[拼搏到底之龟兔赛跑--Day 28]我看过的好电影</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/147128" style="color:red;">http://zbw.javaeye.com/blog/147128</a>&nbsp;
          发表时间: 2007年12月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>好电影实在是太多了，我也不可能全都回忆起来，还好我用豆瓣，所以我把自己已经在豆瓣里收录的，打五颗星的电影列出来，每部只做一句话的点评。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvBT8Flk0uwR-ZdXlmGr521-8ankk5zxfTE8gQQTpckUWAaJRWfgfN_Yebrkk1N3Gww?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvApnHUj93f_1i-9caapqRhZjDoshpd3gU4NjmssqU-g1NrMOEf2__9rMkssyWp8hDk?PARTNER=WRITER" border="0" height="244" alt="s1309353" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="174" /></a> </p>
<p>星爷的好片子实在是太多了，就只列出一个吧。《功夫》&mdash;&mdash;喜剧电影集大成之作。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvDKF8I1FLGtMaU7T_LpN69NgTW5loIN8VPgmbUAKzJl0bDrzQ1dQaH04UurBxz0MfY?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvBUqM7f7uPVRdq704j4zvrNjOrDmgTzlme9vkO7Tp8LIW_4prBJSwZzNZQLcmLQZrY?PARTNER=WRITER" border="0" height="244" alt="s1325435" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="185" /></a> </p>
<p>《E.T.》&mdash;&mdash;对于外星人，最温情的幻想。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvC2xt6FXaqL091PhGVu8ibFhpbnie3SO_lM7oBFxLyPr41LFNf0MvhGjUQdaW4KW9g?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvAOyzn0v1VEcesapXZnhALk1rzbCpHYDr6qeZTDRUWBAiEueh36UtBL72AdnDb2eSA?PARTNER=WRITER" border="0" height="244" alt="s1325482" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="181" /></a> </p>
<p>《大腕》&mdash;&mdash;冯小刚+葛优，国产喜剧之王，就是它了。《手机》、《甲方乙方》也很不错，同星爷的情况，不多列了。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvDxBCNuKRfcJq4XvtIIWeYsEZcJ1PM9wUizsxACjB_Wc1wys7RC4JhEV2HthLjUqig?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvADrmePaJ1E8m1m57DzoeIBxl6PF2uIf30jnV0UFqMMum2sd7MDQiYmXXf9Y4B0K84?PARTNER=WRITER" border="0" height="244" alt="s1325574" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="170" /></a> </p>
<p>《毕业生》&mdash;&mdash;诱惑，真的太诱惑了。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvBa4QgZgFsat6SXgl7pfG9gSEW1ZxXcZeC93mCu8I334b6KIxqyjMZEvIcKzWyglGU?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvBQ9JKwHQS3ldOTIBVfDFvsLieoha3C5ZolDuIg-4Hl4NEjyJMwbhuGO58RMug5S9E?PARTNER=WRITER" border="0" height="244" alt="s1395212" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="176" /></a> </p>
<p>《洗澡》&mdash;&mdash;情节已经忘记了，感动依然留着。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvAOdsXcz9E529PILpAYqFpHr6vzaHRRyVhxLCxZno7DV5lJmqv4s2tA130doZNGggI?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvALldNtaEo2pVhdiAnMFK53749sVuNYRiw6sZSVBkO0NWq5ZEF-WEz38ZSqMxmb-z0?PARTNER=WRITER" border="0" height="244" alt="s1429410" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="161" /></a> </p>
<p>《宾虚》&mdash;&mdash;基督的伟大，我从此永不会忘记！ </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvCEkW3dAzy820V02XIJn6UMXLePkE1IsCBff-ovShqDbnDTlFtW3F4FiZQcR9JG-XY?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvCoGOquTqnY4PBwB0Jxpx1utSl45mmMqyVnOLcFB3h00lrufVxCF7IYxhlBnIRX8HM?PARTNER=WRITER" border="0" height="244" alt="s1435916" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="163" /></a> </p>
<p>《战争之王》&mdash;&mdash;黑、深深的黑 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvCHciaBFYdrkAPmYtqi1hp0uOBPzUa-sHyvKCjRfXH8XuES_4metP-E7u04axpqlU0?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvDmWp8zzqGjULnsDOT9f6By0PR0t6_1nBapRbpShscoDJkvdNK1FuLlCuJdsYJePG4?PARTNER=WRITER" border="0" height="244" alt="s1488647" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="174" /></a> </p>
<p>《1900》又名《海上钢琴诗》、《声光伴我飞》&mdash;&mdash;仅仅凭他的音乐，就是第一流的电影。更何况还有第一流的故事，和第一流的演员。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvDxDEL9Tt7zN2erCjGvrSLfr8mWdJ-Kux3b0TgkeuxXFMrhcuk6WNGgZFxcbyo6Ajg?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvAmuAJWDOH5PQA3_lg-EyylD3Fw4okD5_sGKnht1oEHFI7Gm0t5_LC5gFg86m0LeDg?PARTNER=WRITER" border="0" height="244" alt="s1493083" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="170" /></a> </p>
<p>《大鱼》&mdash;&mdash;也许要过很多很多年以后，我们才会理解自己的父亲。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvA_WQogJJv6Fli-V5-AkTLtitivyrKmzkSavfTNjvLvDxH2uzFT4H6hL6ZYRjXuOpg?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvBxjQkr7HVeiH2-jQzCMQZn8Lu8byUN55hROvXsWxuIDxafx20CB1ZE0o62S-Hff9I?PARTNER=WRITER" border="0" height="244" alt="s1503482" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="176" /></a> </p>
<p>《可可西里》&mdash;&mdash;震撼人心，无法再看第二遍。 </p>
<p>&nbsp;<a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvCyzgZW58GS7aCoOHk5NZYjtp9aVjpocmKw6ow_21knKkCUpkn8VM6pViLBL0doyC8?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvC6EITz0WVsxcTjITDSmjAtsd5ifBX0qflSGSNFOu0gQ5wjICRQaScYm06OTvzLTig?PARTNER=WRITER" border="0" height="244" alt="s1649155" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="180" /></a> </p>
<p>《买凶拍人》&mdash;&mdash;有些人的才华，是你无法想象的，那些人，只能称之为天才。比如彭浩翔。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvCWNZoYwfUtk3udianYeO6SXJ__tp6ABg7olZyDcopb6druBzZzFuOPyCxstmNeuBc?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvCfWTr3bt4J34LLUII91U7ZNdC6rLSNTN2wC9mo4ogIifyHBi_srFuDRQ4pBfw3KXQ?PARTNER=WRITER" border="0" height="244" alt="s1661131" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="173" /></a> </p>
<p>《抗体》&mdash;&mdash;紧张，几乎每一秒钟心都是揪着的。越是了解圣经中的亚伯拉罕的故事，就越是能够体会到最后的感动！ </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvB99Qm1ufWbVyMkSURFTvWbyFmoKBDCgow9tp2fLslYXAoVVzx1FWD3SJ7830TJWWg?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvAGfdqmJxsgV1CsPjTIR30fZsD5rN07kIAtf7l4FFnN_sjaULTvH8XJZsYTUnzGgSM?PARTNER=WRITER" border="0" height="244" alt="s1677970" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="174" /></a> </p>
<p>《疯狂的石头》&mdash;&mdash;够黑色，够幽默，够娱乐，够大众。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvDsbo9Z1XwvodJkFZKCBzUCS2HtQHDOWPx9JsnkZU1HMBwJ4zol79I5Ne4pGeWGjqA?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvCSTdZIfDDBxX6aUfVmKbDUPDa7DjOKKtVzNKilBLamrLK3Y79LQj3TdEi5lkTljdc?PARTNER=WRITER" border="0" height="244" alt="s1975037" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="176" /></a> </p>
<p>《欢迎来到东莫村》&mdash;&mdash;景色优美，人物单纯。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvBN8lT8CRwWhGToHmD5o9kaZvoeQYi_KwNePQc-HAyRxt73CxUfZJiuwb-xB0Z_wUg?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvBlG5QBgbLB7hu7jD0Rzh8jrq-UjRM1566LmTvxRK1KUNb_WH0RnihHU7V8CqSUmos?PARTNER=WRITER" border="0" height="244" alt="s2141555" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="174" /></a> </p>
<p>《楚门的世界》&mdash;&mdash;看得我后背发凉。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvAYQuduGba7alIkRFAILdf-tKGWp-fk3jHIPMccGimeG73RR3IIZ-6WaBDwsYFIU0E?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvDLm8zv7oOf4YQQf2lVRKKGZeckmKXnewS4hn-Kvlak_lywIOGlCTzsGb4N1TvXDGY?PARTNER=WRITER" border="0" height="244" alt="s2355022" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="163" /></a>&nbsp; </p>
<p>《美丽人生》&mdash;&mdash;这样的男人，才是真正的男人。这样的父亲，才是最伟大的父亲。 </p>
<p><a href="http://tkfiles.storage.msn.com/y1pWUUggR0hSvBuySYAGpQpw5C9-RvBogKFMVNgLORhxJAPYzfoQC9ka0uJ66k0P_LgCRmy-Vgu710?PARTNER=WRITER"><img src="http://tkfiles.storage.msn.com/y1pWUUggR0hSvBauuMD4Mrf_SfBRB0921zO-f8zwebF6Pv6SgzOpGvvVyU4x9E40-dzZPsfseJtHSs?PARTNER=WRITER" border="0" height="244" alt="s2602062" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" width="174" /></a> </p>
<p>《鬼子来了》&mdash;&mdash;关于抗战历史，最深刻的思考，战争中的非理性，是最可怕的。</p>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/147128#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 09 Dec 2007 23:03:28 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/147128</link>
        <guid>http://zbw.javaeye.com/blog/147128</guid>
      </item>
      <item>
        <title>[拼搏到底之龟兔赛跑--Day 27]一篇震撼我心灵的祭奠长文</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/146953" style="color:red;">http://zbw.javaeye.com/blog/146953</a>&nbsp;
          发表时间: 2007年12月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这篇祭奠文章的文章叫《&ldquo;学生们不要动，让领导先走&rdquo;&mdash;&mdash;新疆克拉玛依大火十年祭》 ，遗憾的是，我并不是在文章发表的2004年，而是在2006年，才通过赵牧的博客看到的这篇祭文。当时，我就毫不犹豫的全文转贴到了自己的blog。&lt;<a href="http://zbw25.spaces.live.com/blog/cns!BD4EFBFAF436336C!1430.entry?wa=wsignin1.0">克拉玛依大火12周年纪念日</a>&gt;，今天，12月8日，那些天堂里的孩子，离开自己的爸爸妈妈，已经十三个年头了。在自己做了父母之后，对于这样的惨剧，尤其无法容忍，连稍微想一想，都觉得心如刀绞，那些孩子父母，心中该是何等的伤痛啊！ </p>
<p>呜呼，不知道如何说，放一些链接上来吧。 </p>
<p>赵牧博客：<a href="http://zhaomu.blog.sohu.com/72773559.html">288名学生丧生克拉玛依大火十三周年</a> </p>
<p>相关图片链接：<a href="http://www.daheit.com/newdaheit/bencandy.php?fid=123&amp;aid=2046">http://www.daheit.com/newdaheit/bencandy.php?fid=123&amp;aid=2046</a> </p>
<p>附相关报道：<a href="http://zhaomu.blog.sohu.com/69810516.html">竟把无耻当艺术 杨伟光放胆裸奔</a> </p>
<p><strong>杨伟光：我为什么枪毙克拉玛依大火的报道<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp; 记者：您当台长的时候有没有因为来自公关的压力，把某个节目毙了？<br />
　　杨伟光:我不是没有枪毙过节目，我枪毙过。一个时期，有一个&ldquo;度&rdquo;的把握问题，不然为什么要审查？最典型的一次，克拉玛依大火死了一些小孩，我看完这个节目，节目做得很好，也很感人，但我说克拉玛依的群众情绪躁动得很厉害，我说这个节目播了以后，是会对当地群众情绪的一种平息，还是火上浇油？如果火上浇油的话，就不能播，如果能平息他们的情绪，不会闹事那就可以。问题是那边已经白热化了，你现在播了这个，会使那些失去孩子的父母亲友愤怒起来以后，向领导施加压力。结果那记者(注:根据博友跟贴提供的线索,这位记者叫陈耀文陈耀文，他的博客地址是:<a href="http://chenyaowen.blshe.com/">http://chenyaowen.blshe.com/</a>)哭着抬不起头。三天以后，XX部发出正式通知，克拉玛依有关报道不要再报，局势很不稳定。大家说杨台把节目压了是对的。 </p>
<p>被杨伟光封杀的CCTV记者的回忆:<br />
<a href="http://chenyaowen.blshe.com/post/943/127860">补充一些关于克拉玛依&ldquo;12.8&rdquo;火灾事故的信息</a><br />
<a href="http://chenyaowen.blshe.com/post/943/130252">回眸：&ldquo;12.8&rdquo;重大责任事故案件公诉词</a><br />
<a href="http://chenyaowen.blshe.com/post/943/130248">回望：克拉玛依&ldquo;12.8&rdquo;特大火灾的善后</a> </p>
<p>薛涌博客：<a href="http://blog.sina.com.cn/s/blog_45f00ef401000af2.html">&ldquo;让领导先走&rdquo;－永远的耻辱柱</a> </p>
<p>新闻晨报：<a href="http://news.sina.com.cn/c/2004-02-03/04202748976.shtml">新疆克拉玛依大火十年祭 四名当年幸存者的十年</a></p>
<pre>凤凰新媒体：<a href="http://news.ifeng.com/special/kelamayi/">克拉玛依大火十二年后</a></pre>
<pre>搜狐博客：<a href="http://kalamayi12.blog.sohu.com/">克拉玛依火灾12年祭纪念博客</a></pre>
          <br/>
          <span style="color:red;">
            <a href="http://zbw.javaeye.com/blog/146953#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 08 Dec 2007 22:48:46 +0800</pubDate>
        <link>http://zbw.javaeye.com/blog/146953</link>
        <guid>http://zbw.javaeye.com/blog/146953</guid>
      </item>
      <item>
        <title>[拼搏到底之龟兔赛跑--Day 26]那些我喜欢的句子</title>
        <author>庄表伟</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zbw.javaeye.com">庄表伟</a>&nbsp;
          链接：<a href="http://zbw.javaeye.com/blog/146798" style="color:red;">http://zbw.javaeye.com/blog/146798</a>