<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>bma</title>
    <description></description>
    <link>http://bma.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>马波的照片</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/203185" style="color:red;">http://bma.javaeye.com/blog/203185</a>&nbsp;
          发表时间: 2008年06月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><a href="http://picasaweb.google.com/mabo.pic/D80" target="_blank">http://picasaweb.google.com/mabo.pic/D80</a></p>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/203185#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 14 Jun 2008 02:11:50 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/203185</link>
        <guid>http://bma.javaeye.com/blog/203185</guid>
      </item>
      <item>
        <title>敏捷软件管理书籍</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/190195" style="color:red;">http://bma.javaeye.com/blog/190195</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ol>
<li>Behind the Closed Door - Secrete of Greate Management (Pragmatic Programmer)<br />
</li>
<li>Agile Project Management (Jim Highsmith)</li>
<li>Agile Estimating and Planning</li>
<li>Agile and Iterative Development - A Manager's Guide<br />
</li>
</ol>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/190195#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 May 2008 14:17:09 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/190195</link>
        <guid>http://bma.javaeye.com/blog/190195</guid>
      </item>
      <item>
        <title>王志文的《天道》</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/187762" style="color:red;">http://bma.javaeye.com/blog/187762</a>&nbsp;
          发表时间: 2008年04月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在看《天道》。</p>
<p>先是听哥们完整的讲了一遍（这哥们讲的太好了），听的当时就说：这个题材只能王志文来演。</p>
<p>为什么呢？如果看过《过把瘾》，你会同意我的观点。想当初，我还是高中生，中央一，每天晚上很晚，每天一集，我夜夜一集不漏，看完《过把瘾》，第二天和志同道合者讨论。</p>
<p>看着王志文的表演，我想起了让.贝尔蒙多，那个让所有法国男人倾倒的演员。</p>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/187762#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 28 Apr 2008 20:53:35 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/187762</link>
        <guid>http://bma.javaeye.com/blog/187762</guid>
      </item>
      <item>
        <title>D80拍摄人像的基本招式</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/178191" style="color:red;">http://bma.javaeye.com/blog/178191</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>除了构图，人像摄影较难的就是曝光和色彩，今天看了几招，分享如下。<br /><br />1. 景深<br /><br />&nbsp; A模式：<br />&nbsp;&nbsp;&nbsp; 大光圈：减少景深，对焦范围窄<br />&nbsp;&nbsp;&nbsp;    小光圈：增加景深，对焦范围广<br /><br />2. 长焦<br /><br />&nbsp;&nbsp;  将前后背景柔化；强调人物与前后背景之间的距离；降低广角和标准镜头造成的畸变<br /><br />3. 日光同步<br /><br />&nbsp; 白天使用闪光灯：适用于白天逆光拍摄人像，清晰人物和背景细节（例如，北窗侧光下）：<br />&nbsp;&nbsp;&nbsp;&nbsp;    1) 闪光模式按钮，打开闪光灯<br />&nbsp;&nbsp;&nbsp;&nbsp;    2) 旋转主指令盘，选择闪光模式<br /><br />4. 闪光补偿<br /><br />&nbsp; 选择闪光输出级别，控制主题亮度：<br />&nbsp;&nbsp;&nbsp;&nbsp;    1) 闪光模式按钮，打开闪光灯<br />&nbsp;&nbsp;&nbsp;&nbsp;    2) 旋转副指令盘，选择闪光补偿数值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         正值：主体更明亮<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 负值：主体更灰暗（例如，柔化人物肤色，选择-2）<br /><br />5. 曝光补偿<br /><br />&nbsp; 自动计算的曝光量都往18%灰板靠，所以需要手动改变曝光值，控制/还原主体（应有的）亮度：<br />&nbsp;&nbsp;&nbsp; 1) 曝光补偿按钮<br />&nbsp;&nbsp;&nbsp;    2) 旋转主指令盘，选择曝光补偿数值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 正值：主体更明亮<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 负值：主体更灰暗（例如，强光下，人物选择-1）</p><blockquote><p>&nbsp;NOTE: 比较tricky的是，我们一般都是用&ldquo;曝光补偿按钮+主指令盘&rdquo;来调节补偿值，此时应将菜单中的&ldquo;曝光补偿&rdquo;设为OFF，否则需要设置指令拨盘</p></blockquote><p><br />6. 白平衡<br /><br />&nbsp; 平衡掉光源对色彩的影响<br />&nbsp;&nbsp;&nbsp;&nbsp;    例如：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      室外日光和室内灯光，拍人像：选择&ldquo;直射阳光&rdquo;，平衡掉阳光的影响，强调灯光效果<br /><br />7. 最优化影响<br /><br />&nbsp;&nbsp;  控制 色彩、锐利度、对比度<br />&nbsp;&nbsp;&nbsp;&nbsp;    人像：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        对比度降低，人像更自然<br />&nbsp;&nbsp;&nbsp;&nbsp;    个人设定：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 锐利化 / 色调 / 色彩 / 色相 / 饱和度<br /><br />8. ISO速度<br /><br />&nbsp; 可在同等光圈值下，使用更快快门<br /><br />9. 辅助闪光灯<br /><br />  较暗的室内场景中，增加辅助后侧闪光，可清晰人物轮廓</p><p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/178191#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 31 Mar 2008 21:04:27 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/178191</link>
        <guid>http://bma.javaeye.com/blog/178191</guid>
      </item>
      <item>
        <title>从拍摄到艺术</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/172243" style="color:red;">http://bma.javaeye.com/blog/172243</a>&nbsp;
          发表时间: 2008年03月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <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://bma.javaeye.com/blog/172243#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 15 Mar 2008 22:16:56 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/172243</link>
        <guid>http://bma.javaeye.com/blog/172243</guid>
      </item>
      <item>
        <title>catergorize methods in class</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/132989" style="color:red;">http://bma.javaeye.com/blog/132989</a>&nbsp;
          发表时间: 2007年10月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          there are two kinds of methods in one class, no matter what kinds of languages you use or applications you build: element methods (this is an ambiguous name, I know) and composed methods.<br />
<h3><u> 1. element methods</u></h3>
the responsibilities of element methods are realizing part of an algorithm, like doing a searching or sorting or setting up a component. they are implementation-oriented. so they are named from the technical point of view. and generally, the access control level for them should be private or protected. <br />
<p><em>testing element methods</em></p>
the unit testing strategy for element methods generally would be<strong> result-based </strong>testing, that is, after carrying out a series of invocations and calculating, you assert the result as expected.<br />
<h3><u> 2. composed methods</u></h3>
these methods are responsible for realizing the whole algorithm by <strong>composing</strong> these element methods, there's no concrete calculating or lib invocations, just calling to element methods. composed methods are business-oriented, and they are public.<br />
<br />
stick to this principle no matter what class we design (repository, or model, or presenter in mvp), the class will be more maintainable.<br />
<p><em>testing composed methods</em></p>
the unit testing strategy usually used for composed methods is <strong>state-based</strong> testing, that is, before implementing composed method, it would be helpful to come up with the <strong>steps</strong> you gonna use to implement the business logic, and use the expectation to <strong>drive</strong> your implementation. (ref http://martinfowler.com/articles/mocksArentStubs.html)<br />
<br />
sometimes, it is tricky to work out all these steps that would involved in the composed methods, that doesn't matter! :) in some extent, the implementation and the test just drive each other!<br />
<br />
and sometimes, it would seem that the state-based testing for the composed method is a kind of wast, after all, you just repeat the logic in the implementation (if you do test-driven development) or in the test (if you don't do tdd), some guys in our project even call it &quot;faked confidence&quot;. I don't agree with that, cause it happens many times in our project that the (state-based) unit tests help us drive the design and catch the bug. but I would admit that modifying the state-based testing after the requirement alteration is annoying.
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/132989#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 17 Oct 2007 22:54:01 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/132989</link>
        <guid>http://bma.javaeye.com/blog/132989</guid>
      </item>
      <item>
        <title>Naming a Method</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/99807" style="color:red;">http://bma.javaeye.com/blog/99807</a>&nbsp;
          发表时间: 2007年07月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          How to name a method? This simple question can trigger a heat discussion and contention. As the old Bell Lab saying goes: &quot;library design is language design&quot;, the name of method plays a vital role in the API design, and the quality of method naming distinguishes DSL-like design from unreadable ones.<br />
<h4>The Java Way</h4>
In Java, we were educated to use a verb + noun to name a method. With the knowledge of design patterns, we really have a bunch of verbs to select, createXxx or makeXxx for factory, buildXxx for builder, just to name some. This naming scheme makes it clear that it's a method, or more casually, an action, which &quot;does something&quot;.<br />
<br />
But is this kind of naming scheme unquestionable?<br />
<br />
In one recent Java project, we need to create lots of stub data to mock the response from web services for unit testing. In one unit test, the code is just like this:<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span>AbstractResponse&lt;AResponseType&gt; response&nbsp;=&nbsp;&nbsp; <br />
    </span></span></li>
    <li class="alt"><span><span><span class="keyword">&nbsp; new</span><span>&nbsp;AbstractResponse&lt;AResponseType&gt;(createStubAResponseType());&nbsp; <br />
    </span></span></span></li>
</ol>
</div>
<br />
And in method createStubAResponseType, code goes like this:<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span>AResponseType&nbsp;response&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;AResponseType();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>resposne.setPartOne(createStubPartOne());&nbsp;&nbsp;</span></li>
    <li class=""><span>resposne.setPartTwo(createStubPartTwo());&nbsp;&nbsp;</span></li>
    <li class="alt"><span>resposne.setPartThree(createStubPartThree());&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">return</span><span>&nbsp;response;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
Pretty straightforward. But the problem with me is that they read NOT so naturally. Why the prefix &quot;create&quot; for every stub data creation method?<br />
<br />
Wouldn't<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="keyword">new</span><span>&nbsp;AbstractResponse&lt;AResponseType&gt;(stubAResponseType());&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
and<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<ol class="dp-j" start="1">
    <li class="alt"><span><span>resposne.setPartOne(stubPartOne());&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>resposne.setPartTwo(stubPartTwo());&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>resposne.setPartThree(stubPartThree());&nbsp;&nbsp;</span></li>
</ol>
</div>
be better?<br />
<br />
It's a small step, but I think it makes difference. For the reason, read on.<br />
<h4>The Ruby Way</h4>
For Ruby newbies, it takes quite a while to get used to the method naming convention used in Ruby (and especially Rails). Initially, it appears confusing to tell what is a field, what is a method, or what on earth it is (this definitely occurred to me)! <br />
<br />
E.g., here's a dummy Rails generator excerpted from book Rails Recipe:<br />
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-rb" start="1">
    <li class="alt"><span><span class="keyword">class</span><span>&nbsp;TumblepostGenerator&nbsp;&lt;&nbsp;Rails::Generator::NamedBase&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">&nbsp; def</span><span>&nbsp;manifest&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp; record&nbsp;<span class="keyword">do</span><span>&nbsp;</span><span class="variable">|m</span><span>|&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.class_collisions&nbsp;class_name&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.template&nbsp;<span class="string">&quot;app/controllers/controller_template.rb&quot;</span><span>&nbsp;,&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;app/controllers/#{file_name}_controller.rb&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.template&nbsp;<span class="string">&quot;app/models/model_template.rb&quot;</span><span>&nbsp;,&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;app/models/#{file_name}.rb&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.directory&nbsp;<span class="builtin">File</span><span>.join('app/views'&nbsp;,&nbsp;file_name)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.template&nbsp;<span class="string">&quot;app/views/form_template.rhtml&quot;</span><span>&nbsp;,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;app/views/#{file_name}/_form.rhtml&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.template&nbsp;<span class="string">&quot;app/views/view_template.rhtml&quot;</span><span>&nbsp;,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;app/views/#{file_name}/_view.rhtml&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.readme&nbsp;<span class="string">&quot;POST_GENERATION_REMINDER&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">&nbsp;&nbsp;&nbsp; end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">&nbsp; end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
Notice how methods are named: <br />
<ul>
    <li>class_collisions instead of check_class_collisions</li>
    <li>class_name instead of get_class_name</li>
    <li>directory instead of make_directory</li>
    <li>readme instead of set_readme (or set_readme_file)</li>
    <li>And the most beautiful one: record (a protected method defined in Rails::Generator::Base) instead of create_record or new_record. <br />
    </li>
</ul>
If you take a look at class Generator::Base, you will find all methods are named this way: <br />
manifest instead of define_manifest, usage_message instead of show_usag_message, etc.<br />
<br />
In Ruby, methods are named after the return value, using a noun.<br />
<br />
Compared with the scheme used in Java, this means we don't care about whether it's an action we need to carry out or it's already there, we just &quot;read&quot; it out. <br />
<br />
Ruby's method naming convention is more result-oriented and, from Bertrand Meyer's (the author of Object-Oriented Software Construction) point of view, more object-oriented, cause it treats method and field in unified way. And this is one of the reasons why Ruby is so suitable for define internal DSL (the other reasons are closure/iterator, hash, etc.).
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/99807#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 10 Jul 2007 15:45:52 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/99807</link>
        <guid>http://bma.javaeye.com/blog/99807</guid>
      </item>
      <item>
        <title>Life on Client-Side</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/98469" style="color:red;">http://bma.javaeye.com/blog/98469</a>&nbsp;
          发表时间: 2007年07月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font size="3"><em>As lots of ThoughtWorker advertised, the life on-beach is pretty nice: relaxing, leisure and happy. There's only one task to fulfill: interview. All kinds of interview: code review, phone interview, office interview. Believe me, all of them are fun, especially the office interview (that deserves a separated entry). But how about the life on client-side? Not bad too! Especially after finishing two bottles of Asahi.</em><br />
<br />
Today is Friday, as usual, employees of the client company (I have to hide the client's name) began their 'mini-party' at 4:00pm on time. We had beer and chips, all members of the team gathered around a table, drinking beer and chatting. We have four guys from Indian, one guy from UK, one guy has German blood, and one guy from China, that is me. I felt good after finished 2 bottles of Asahi. I can't code anymore, but that didn't matter.<br />
<br />
During the party, one Indian guy showed his picture of his baby. His family had a big party to celerabe the birth of the new member. All family member came, dressing up in traditional Indian style, which reminds me of the days in Banglore where I attended the ThoughtWorks Uni.<br />
<br />
We talked in ... English. I have to admit that Indian English is somewhat hard to understand, so is German English. But that didn't matter, the atmosphere is great. I felt I belong to them, we are just a international team.<br />
<br />
That's snapshot of the life working on client-site as a ThoughtWorker.</font>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/98469#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 06 Jul 2007 16:09:00 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/98469</link>
        <guid>http://bma.javaeye.com/blog/98469</guid>
      </item>
      <item>
        <title>China，我的祖国……</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/92137" style="color:red;">http://bma.javaeye.com/blog/92137</a>&nbsp;
          发表时间: 2007年06月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div align="right"><em>诗云：只缘身在此山中。离开点看，能看得更清楚点。</em><br />
</div>
<br />
中国是世界上最大的可回收物进口国，但是却被怀疑因此而成为最大的环境污染源&mdash;&mdash;因为进口的可回收物没有被回收，而仅仅是填满了（The Economist, June 9th-15th, 2007）。事实上，我们回收了，因为回收可回收物的利润是巨大的，但是却是以<strong>利润</strong>而非<strong>环保</strong>为导向的：从北到南：太原，北京，青岛，河南，深圳&hellip;&hellip;全国无处不在的<a href="http://finance.21cn.com/news/cjzw/2006/08/15/2941545.shtml">垃圾村</a>，以原始的手段&ldquo;回收&rdquo;垃圾，给环境和&ldquo;回收者&rdquo;本人都造成了更大的伤害。<br />
<br />
中国很快就会超过美国，成为世界上最大的温室气体排放国&mdash;&mdash;尽管人均排放量很小（美国：20.2吨，澳大利亚：19.4吨，中国：3.6吨），但别老拿巨大的人口基数说事啊！温室效应最终是由绝对排放量决定。澳洲就是因为中国的政策和现状迟迟不肯出台限制温室气体排放的法规（&quot;If our effors are obscured by a vast and growing cloud of pollution from China?&quot; -- 'Fresh Air', The Economist, June 9th-15th, 2007）。<br />
<br />
北京因为奥运会清理&ldquo;城中村&rdquo;的战斗已经持续多时了，去年底已经&ldquo;安置&rdquo;（或者铲除）了114个。早在2005年，231个&ldquo;城中村&rdquo;，共计33,935人('No place to call home', The Economist, June 9th-15th, 2007)得到&ldquo;安置&rdquo;。<br />
这场战斗事实上仅仅是揭开了中国众多社会矛盾中的一个：无规划的经济发展和城市扩张 --&gt; 无规划的占用农民耕地，之后仅仅是以转化为城市户口（！）加以安抚 --&gt; 大批农民工涌入城市，负载能力有限的城市根本提供不了足够的住宿以及一切相关设施 --&gt; 廉价的，条件恶劣的&ldquo;城中村&rdquo;应运而生！<br />
<br />
<blockquote>&ldquo;In the village of Liguanzhuang，后院被盖成房屋，再被隔成多个小间用以出租，每间房每月200元。整个&lsquo;城中村&rsquo;只有一间厕所&hellip;&hellip;只有房主自在&hellip;&hellip;&lsquo;城中村&rsquo;充满了吸毒、赌博、卖淫活动，是社会的&lsquo;定时炸弹&rsquo;&hellip;&hellip;China does not like to admi it has <strong>slums</strong>. But is DOES, and it will find it NEEDS them. &rdquo; <br />
<div align="right">--'No place to call home', The Economist, June 9th-15th, 2007<br />
<br />
</div>
</blockquote>
<div align="right">
<div align="left">在印度的时候也曾笑话人家基础设施差，贫富差距大，现在啥也别说了。其实早就应该啥也别说：去年有一次从五道口打车回家（回龙观），黑车，司机路很熟，走了一趟不常走的路线：沿轻轨沿线一直在&ldquo;城中村&rdquo;中穿行&hellip;&hellip;四周景物怎么说呢，恍若时光倒流，自问身在北京？<br />
<br />
因不堪同学的羞辱，<a href="http://http://news.sina.com.cn/s/2007-06-15/102913236909.shtml">安徽5名农村少女集体自杀</a>，三联周刊。我小时候也算一般时光在农村长大，这篇报道说的事我感觉那么逼真，强烈，和20多年前我见过，听过的情形还是一样！这二十年我们都忙活什么了。<br />
<br />
乱写一起，我也不知所云，但不吐不快。想起了一首诗，我想轻轻的念一遍：<br />
<br />
<blockquote> 我用残损的手掌<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 />
</blockquote><br />
<h1><br />
</h1>
</div>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/92137#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 19 Jun 2007 19:29:56 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/92137</link>
        <guid>http://bma.javaeye.com/blog/92137</guid>
      </item>
      <item>
        <title>OZ Team Hug</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/91310" style="color:red;">http://bma.javaeye.com/blog/91310</a>&nbsp;
          发表时间: 2007年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这周末AU公司搞Team Hug，Melbourne, Sydney, Brisbane三个城市的同事齐聚Newcastle的Hunter Valley。<br />
<br />
Hunter Valley以wine著名，刚从机场到Hunter Valley，就一人发了一瓶酒和两只杯子。这不是一般的酒和杯子。<br />
<br />
酒，是有Team Hug标志的酒。<br />
杯子，是有ThoughtWorks标志的杯子。<br />
<br />
其实最神奇的糖。当然，这也不是一般的糖。<br />
<br />
糖很小，直径不足1cm的圆柱体，每一颗糖的断面上都有TW Team Hug的字样！<br />
<br />
组织者真是有心！<br />
<br />
周五、六、日三天，两头吃喝，聊天，中间session&mdash;&mdash;好实在的安排！周六：7:30早饭，8:00开始，opening后一连4个Track并发，各有4个session，内容丰富，tech/non-tech都有，可惜无法兼得啊。中午12:45吃饭，即刻又开始会议，公司价值观、业绩、未来方向等等的fish bowl，报告，直至18:30，稍事休息，20:00开始晚宴，席间穿插OZ舵主和教主的讲话和颁奖，煞是壮观：<br />
<br />
荒山野岭，月黑风高，上百号人的帐篷内，灯笼火把照的恍如白昼，巨大的投影幕布前教主慷慨激昂，众教徒掌声雷动，此起彼伏！<br />
<br />
WPC同志，荣获&ldquo;努力工作&rdquo;奖（其实我也没听清），在一片掌声中，非常含蓄的Think you，恭喜之余，当天晚上我们就把他得来的好酒开了。<br />
<br />
感触：<br />
1. ThoughtWorks真是一家global company：亚洲人，美洲人，澳洲人，非洲人，欧洲人，肤色各异，口音不同，却（对软件）信仰相同。很有归属感。<br />
2. OZ公司取得的业绩令人钦佩，不由得思考国内的如何借鉴&hellip;&hellip;<br />
3. 为公司的发展由衷的自豪，听到的最多的是：Lean, Ruby, Rails, Mingle, Values, Products...，对公司的未来充满激情。<br />
3. 很有紧迫感，公司的同事都很聪明，牛人很多，得比上学的时候还用功
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/91310#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 17 Jun 2007 19:11:12 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/91310</link>
        <guid>http://bma.javaeye.com/blog/91310</guid>
      </item>
      <item>
        <title>在Brisbane的一些照片</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/85947" style="color:red;">http://bma.javaeye.com/blog/85947</a>&nbsp;
          发表时间: 2007年06月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.flickr.com/photos/29092149@N00/">http://www.flickr.com/photos/29092149@N00/</a><br />
<br />
<ul>
    <li>黄金海岸</li>
    <li>Brisbane现代艺术博物馆</li>
</ul>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/85947#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 02 Jun 2007 20:37:53 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/85947</link>
        <guid>http://bma.javaeye.com/blog/85947</guid>
      </item>
      <item>
        <title>Application skinning/theme support with Rails</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/81891" style="color:red;">http://bma.javaeye.com/blog/81891</a>&nbsp;
          发表时间: 2007年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2>Application skinning/theme support with Rails (modified from Rails Recipe)<br />
</h2>
<span class="anchor" id="line-112"></span>
<p class="line874">(please excuse me for writing in English, for there's no input method installed on client's machine.)<br />
</p>
<p class="line874">Rails provides a lightweight, CSS-driven approach to themes. <span class="anchor" id="line-113"></span><span class="anchor" id="line-114"></span></p>
<p class="line862"><strong>1.</strong> Add a String field called <tt class="backtick">style</tt> to your application&rsquo;s controller class, say <span class="nonexistent">UserController</span>. <span class="anchor" id="line-115"></span><span class="anchor" id="line-116"></span></p>
<p class="line867"><span class="anchor" id="line-117"></span></p>
<pre><div class="code_title">ruby 代码</div><div class="dp-highlighter"><div class="bar">&nbsp;</div><ol class="dp-rb" start="1"><li class="alt"><span><span>attr_accessor&nbsp;=&nbsp;style&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="keyword">def</span><span>&nbsp;initialize&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="variable">@style</span><span>&nbsp;=&nbsp;'default_style'&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li></ol></div><span class="anchor" id="line-121"></span></pre>
<span class="anchor" id="line-122"></span>
<p class="line862"><strong>2. </strong>Modify the <tt class="backtick">app/views/layouts/user.rhtml</tt> like the following <span class="anchor" id="line-123"></span><span class="anchor" id="line-124"></span></p>
<p class="line867"><span class="anchor" id="line-125"></span></p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span>%=&nbsp;stylesheet_link_tag(@style)&nbsp;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;...&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
<strong>3. </strong>You can change the theme at runtime using code like the following <span class="anchor" id="line-135"></span><span class="anchor" id="line-136"></span>
<p class="line867"><span class="anchor" id="line-137"></span></p>
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-rb" start="1">
    <li class="alt"><span><span class="keyword">def</span><span>&nbsp;authenticate&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="variable">@style</span><span>&nbsp;=&nbsp;'user_specific_style'&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
<span class="anchor" id="line-142"></span>
<p class="line862">Then style sheet be used will change to <tt class="backtick">public/stylesheets/user_specific_style.css</tt></p>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/81891#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 May 2007 16:16:56 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/81891</link>
        <guid>http://bma.javaeye.com/blog/81891</guid>
      </item>
      <item>
        <title>Run Rails app on Tomcat Successfully</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/81889" style="color:red;">http://bma.javaeye.com/blog/81889</a>&nbsp;
          发表时间: 2007年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2>Package up Rails app as WAR file &amp; Run it on Tomcat Successfully</h2>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  (please excuse me for writing in English, for there's no input method installed on client's machine)<br />
<span class="anchor" id="line-66"></span>
<ul>
    <li style="list-style-type: none;">
    <p class="line862">This short HOW-TO includes <strong>9</strong> steps. Basically, you need to install two <em>adapters</em> in your Rails application to support WAR package. <span class="anchor" id="line-68"></span></p>
    </li>
</ul>
<p class="line862"><strong>1.</strong> Get your Rails application running in <strong>production</strong> mode. <span class="anchor" id="line-69"></span><span class="anchor" id="line-70"></span></p>
<ul>
    <li style="list-style-type: none;">This is because the plugin that will be used to generate the war file only works in production mode. <span class="anchor" id="line-71"></span></li>
</ul>
<p class="line862"><strong>2.</strong> Install plugin <a href="http://www.headius.com/jrubywiki/index.php/Rails_Integration" class="http">GoldSpike</a> by executing <span class="anchor" id="line-72"></span><span class="anchor" id="line-73"></span></p>
<ul>
    <li style="list-style-type: none;">
    <p class="line891"><tt class="backtick">$&nbsp;script/plugin&nbsp;install&nbsp;svn://rubyforge.org/var/svn/jruby-extras/trunk/rails-integration/plugins/goldspike</tt> <span class="anchor" id="line-74"></span><br />
    <strong></strong></p>
    </li>
    <li style="list-style-type: none;">
    <p class="line891"><strong>NOTE:</strong> This is the adapter for <em>input</em> of your Rails application.<br />
    </p>
    </li>
</ul>
<p class="line862"><strong>3.</strong> Install gem package <strong>activerecord-jdbc</strong> by executing <span class="anchor" id="line-76"></span><span class="anchor" id="line-77"></span></p>
<ul>
    <li style="list-style-type: none;">
    <p class="line891"><tt class="backtick">$&nbsp;gem&nbsp;install&nbsp;activerecord-jdbc&nbsp;--no-rdoc&nbsp;--no-ri</tt> <span class="anchor" id="line-78"></span><br />
    <strong></strong></p>
    </li>
    <li style="list-style-type: none;">
    <p class="line891"><strong>NOTE:</strong> This is the adapter for <em>output</em> of your Rails application.<br />
    </p>
    </li>
</ul>
<p class="line862"><strong>4.</strong> Modify <strong>config/database.yml</strong> file by using <strong>jdbc</strong> as the database adapter. E.g. <span class="anchor" id="line-80"></span><span class="anchor" id="line-81"></span></p>
<ul>
    <li style="list-style-type: none;">
    <p class="line891"><tt class="backtick">production:<br />
    &nbsp; adapter:&nbsp;jdbc</tt><br />
    <span class="anchor" id="line-83"></span><tt class="backtick">&nbsp; driver:&nbsp;com.mysql.jdbc.Driver</tt><br />
    <span class="anchor" id="line-84"></span><tt class="backtick">&nbsp; url:&nbsp;jdbc:mysql://localhost/<your_production_database></your_production_database></tt><br />
    <span class="anchor" id="line-85"></span><tt class="backtick">&nbsp; username:&nbsp;<user_name></user_name></tt><br />
    <span class="anchor" id="line-86"></span><tt class="backtick">&nbsp; password:&nbsp;
    <password></password>
    </tt><br />
    <span class="anchor" id="line-87"></span><tt class="backtick">&nbsp; host:&nbsp;<hostname></hostname></tt><br />
    </p>
    </li>
</ul>
<p class="line862"><strong>5.</strong> Modify <strong>config/environment.rb</strong> by adding <span class="anchor" id="line-89"></span><span class="anchor" id="line-90"></span></p>
<ul>
    <li style="list-style-type: none;">
    <p class="line891"><tt class="backtick">require&nbsp;'jdbc_adapter'</tt> (<strong>NOT</strong> <tt class="backtick">require&nbsp;'active_record/connection_adapters/jdbc_adapter'</tt> as Rails-Integration's Wiki said!) <span class="anchor" id="line-91"></span></p>
    <ul>
        <li style="list-style-type: none;">just blow line <span class="anchor" id="line-92"></span></li>
    </ul>
    <p class="line891"><tt class="backtick">require&nbsp;File.join(File.dirname(__FILE__),&nbsp;'boot')</tt> <span class="anchor" id="line-93"></span></p>
    </li>
</ul>
<p class="line862"><strong>6.</strong> Set and export <strong>$JRUBY_HOME</strong>, this will be used by <span class="nonexistent">GoldSpike</span> plugin when generating WAR file. <br />
&nbsp;&nbsp;&nbsp; Actuall, you&nbsp; can put all jar files used by GoldSpike under $JRUBY_HOME/lib to avoid downloading them when you generating the war file with rake, it's really annoying when you have to wait for the download complete.These jar files are (the version I use):</p>
<p class="line862">- activation-x.x.jar (1.1)<br />
- bcprov-jdk14-xxx.jar (124)<br />
- commons-pool-x.x.x.jar (1.3)<br />
- jruby-complete-x.x.x.jar (0.9.9)<br />
- rail-integration-x.x.x.jar (1.1.1)<br />
- jetty-x.x.x.jar (6.1.1)<br />
<span class="anchor" id="line-94"></span><span class="anchor" id="line-95"></span></p>
<p class="line862"><strong>7.</strong> Put <strong><your-db-jdbc-driver>.jar</your-db-jdbc-driver></strong> (e.g., mysql-connector-java-5.0.5-bin.jar for MySQL) under $JRUBY_HOME/lib. <span class="anchor" id="line-96"></span><span class="anchor" id="line-97"></span></p>
<p class="line862"><strong>8.</strong> Generate <strong>standalone</strong> war file by executing <span class="anchor" id="line-98"></span><span class="anchor" id="line-99"></span></p>
<ul>
    <li style="list-style-type: none;">
    <p class="line891"><tt class="backtick">rake&nbsp;war:standalone:create</tt> <span class="anchor" id="line-100"></span></p>
    </li>
</ul>
<p class="line874"><strong>9.</strong> Test the war file by executing <span class="anchor" id="line-101"></span><span class="anchor" id="line-102"></span></p>
<ul>
    <li style="list-style-type: none;">
    <p class="line891"><tt class="backtick">rake&nbsp;war:standalone:run</tt> <br />
    </p>
    </li>
</ul>
&nbsp;&nbsp;&nbsp; This use jetty. Of coure, you can deploy it to your Tomcat.
<p class="line867"><strong>KNOWN ISSUES</strong> <span class="anchor" id="line-109"></span></p>
<ul>
    <li style="list-style-type: none;">
    <p class="line862">On Tomcat, when we tried to start up the second Rails application, we got <span class="nonexistent">OutOfMemoryException</span>, and we don't know whether this has something to do with the way we connect to the database.</p>
    </li>
</ul>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/81889#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 May 2007 16:06:06 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/81889</link>
        <guid>http://bma.javaeye.com/blog/81889</guid>
      </item>
      <item>
        <title>Functional test with Selenium-on-Rails</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/81886" style="color:red;">http://bma.javaeye.com/blog/81886</a>&nbsp;
          发表时间: 2007年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: 18pt"><strong>Functional test with Selenium-on-Rails</strong></span><br /><br />(please excuse me for writing in English, I'm working on client-site, and there's no Chinese input software installed on the desktop)<br /><br /><strong>1.</strong> Install plugin Selenium-on-Rails by executing<br /><br />$ script/plugin install http://svn.openqa.org/svn/selenium-on-rails/selenium-on-rails/ <br /><br /><strong>2.</strong> Generate Selenium test by executing<br /><br />$ script/generate selenium &lt;functional-test-name><br />          <br />This will create directory selenium under test and an empty Selenium test file &lt;functional-test-name>.sel <br /><br /><strong>3.</strong> Write your functional test based on the generated Selenium test file or record tests with Selenium IDE.<br /><br /><strong>NOTE:</strong> In the latter case, be sure to save your tests under test/selenium for Selenium will try to load tests found there.<br /><br /><strong>4.</strong> Start your Rails application in <strong>test</strong> mode<br /><br />$ script/server -e test <br /><br /><strong>5.</strong> Open Selenium test page http://localhost:3000/selenium and run tests.<br /><br /><strong>6.</strong> To run Selenium test as rake task:<br /><br /><strong>NOTE:</strong> The procedure below works on Linux. For Microsoft Windows, you need to install gem <strong>win32-open3-0.2.5.gem</strong>, see step 7 for details.<br /><br />1) Rename vendor/plugin/selenium-on-rails/config.yml.example to config.yml<br /><br />2) Modify config.yml by specifying the browser will be used by Selenium.<br /><br /><strong>NOTE:</strong> For FireFox, differ from the configuration for CruiseControll, you specify the path to firefox (e.g., /usr/bin/firefox) instead of firefox-bin (e.g., /usr/lib/firefox/firefox-bin) <br /><br />3) Start your Rails application in <strong>test</strong> mode.<br /><br />4) Run Selenium as rake task by executing<br />$ rake test:acceptance <br /><br />7. (For Microsoft Windows 2000, XP) Install gem win32-open3-0.2.x.gem<br /><br />1) Get and unzip win32-open3-0.2.x.zip<br /><br />2) Go into the directory win32-open3-0.2.x, you can install manually<br /> $ cd ext<br /> $ ruby extconf.rb<br /> $ nmake<br /> $ ruby tc_open3.rb (optional, in the 'test' directory)<br /> $ nmake install<br /><br />3) Or use gem to install<br /> $ ruby win32-open3.gemspec<br /> $ gem install win32-open3-X.Y.Z.gem<br /><strong>NOTE:</strong> This requires namke.exe and cl.exe in your $PATH
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/81886#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 May 2007 15:48:48 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/81886</link>
        <guid>http://bma.javaeye.com/blog/81886</guid>
      </item>
      <item>
        <title>Groovy's HERE DOCUMENT and Closure</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/78312" style="color:red;">http://bma.javaeye.com/blog/78312</a>&nbsp;
          发表时间: 2007年05月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Something fun with Groovy's 'HERE DOCUMENT', i.e., &quot;&quot;&quot;...&quot;&quot;&quot;<br />
<br />
In groovyConsole, execute (Ctrl + R) following code:<br />
<font face="Courier New">&quot;&quot;&quot;<br />
${ println &quot;Hi&quot; }<br />
&quot;&quot;&quot;</font><br />
<br />
result: Hi<br />
Cool, isn't it?<br />
<br />
How about this?<br />
<font face="Courier New">&quot;&quot;&quot;<br />
${<br />
class Foo{}<br />
}<br />
&quot;&quot;&quot;</font><br />
No way...Why?<br />
<br />
The curly braces denote a <strong>closure</strong>,&nbsp; So, we can put <strong>anything </strong>valid in a closure into the ${} within a HERE DOC:<br />
<font face="Courier New"><br />
a = [1,2,3,4,5,6]<br />
<br />
&quot;&quot;&quot;<br />
${<br />
a.each {print it}<br />
}<br />
&quot;&quot;&quot;</font><br />
<br />
result: 123456<br />
Wow, closure within closure. So below is nothing strange:<br />
<font face="Courier New"><br />
&quot;&quot;&quot;<br />
${<br />
println &quot;&quot;&quot; ${println &quot;Can you see me?&quot;} &quot;&quot;&quot;<br />
}<br />
&quot;&quot;&quot;<br />
<br />
result: yes, I can :)<br />
</font>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/78312#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 May 2007 19:45:55 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/78312</link>
        <guid>http://bma.javaeye.com/blog/78312</guid>
      </item>
      <item>
        <title>“企业级”Ruby: 不仅仅指新企业</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/76670" style="color:red;">http://bma.javaeye.com/blog/76670</a>&nbsp;
          发表时间: 2007年05月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Jeff的<a href="http://www.infoq.com/cn/news/2007/04/rails-is-enterprise-ready">企业级Ruby的文章</a>非常好，提供了很多有用的信息。但是最近的工作经历让我思考凡是加上&ldquo;企业级&rdquo;的东西，都不仅仅是技术的问题。<br />
<br />
先说技术的问题。从技术角度看，&ldquo;企业级&rdquo;根本不是个问题：<br />
<pre>Q: What the hell is &quot;Enterprise Ruby&quot; anyway?<br />A: Yet another 'stack' of crap so complex that any salesperson can use Steak and Strippers to <br />easily sell it to management thanks to the bikeshedding effect.<br />-- Zed Shaw (author of Mongrel) at QCon 2007</pre>
当然，其实还是有些问题的，Jeff说得很清楚了，但我想说还不够，例如：<br />
- single sige on<br />
- commercial support for database driver<br />
- dababase connection pool<br />
- scalability (Multi-Connection would be an solution, but it takes time, and it takes more time to convince client)<br />
- performance (you can NOT say RoR beats Java for ALL kinds of application on ALL platform. We all know that for data-driven application, the impact of programming language is insignificant, it's the data-manipulations that matter.)<br />
<br />
技术上讲，我丝毫不怀疑RoR will beat Java in ALL aspects，但就是我开头说得&ldquo;企业级&rdquo;的东西，不仅仅是&ldquo;新企业&rdquo;，不仅仅是技术：<br />
<ul>
    <li>已经投资买了用了WL（大到Cluster，中到App Server，小到Express）这么些年了，你叫换掉？</li>
    <li>已经&ldquo;培养了&rdquo;（说&ldquo;习惯了&ldquo;更贴切）这么些WL的dev, admin了，重新学过？上哪儿培训去？</li>
    <li>这JDBC连接Oracle，DB2这么些年了，你叫改用open sourced驱动？</li>
    <li>这一大！帮Java甚至VB dev，你叫他们RoR去？</li>
    <li>真正能谈的起&rdquo;企业级计算&ldquo;的企业都不在乎钱，因为钱的问题讨论企业级计算方案的都不是在做企业级计算。企业级计算关心的不仅仅是访问量，更是稳定性。银行，保险，证券。和这些企业谈论开源&hellip;&hellip;需要很多：数据，数据，还是数据：
    <ul>
        <li>性能数据：用了这么些年的IBM服务器 + AIX，RoR在上边性能如何？</li>
        <li>成本数据：需要多少台服务器？</li>
    </ul>
    </li>
</ul>
退一步讲，都说LAMP好，可是能玩的起企业计算的企业（银行、保险、证券等）有几家用LAMP？<br />
OK，共存是王道：Java继续backend + legacy system，RoR frontend + new system，但：<br />
<ul>
    <li>Web Service。性能？</li>
    <li>JRuby。性能？稳定性？Scalability? commercial support?</li>
</ul>
你说怎么引入？<br />
<br />
所以我想，企业级计算不仅仅是谁技术上优秀就一定能进企业，Java曾经的机会很难再现：一来Java的十年已经在企业扎根很深很深，二来现在的Java不会死掉。即便将来出现RoR的BEA，JBoss，看看Java替代Combo的过程和结果&mdash;&mdash;google一下combo便知。而且Java不是当年的Combo。<br />
<br />
结论只能是企业计算将会进入三分天下。没有一统江湖。
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/76670#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 02 May 2007 19:29:00 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/76670</link>
        <guid>http://bma.javaeye.com/blog/76670</guid>
      </item>
      <item>
        <title>沿河走了七公里</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/76668" style="color:red;">http://bma.javaeye.com/blog/76668</a>&nbsp;
          发表时间: 2007年05月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span be:sortkey="" be:lasthandle="cns!6D8364111B2D759E!170" be:firsthandle="cns!6D8364111B2D759E!195" id="BlogViewId" be:sortmode="Normal">这是来Brisbane，working on client site的第一个周末。<br />
下午一个人沿着Brisbane River向东走了7公里，然后折回来又是7公里。<br />
<br />
本来没想走这么多的，只是周六在酒店一个人呆了一天（其他从悉尼来的同事都飞回悉尼了）有点儿闷，又想起悟空说的别光顾着工作，也要出去玩。想想Brisbane的美景，就除去长走了。<br />
<br />
基本上把Brisbane的地形搞清楚了：一条Brisbane River从市中心画了个Z，把市区分成了两半：上面的（北边）是downtown，下面的（南边）就叫South Brisbane。北边沿河多写字楼，南边沿河多休闲沙滩（Street Beach），学校（Griffith University），博物馆（Maritime Museum），再往南有著名的Brisbane会议和展览中心。<br />
<br />
沿河风景简单而平和，Botanic Garden的红树林，木桥，Brisbane Center下的石板河岸，河心一艘艘白色的游艇，头顶或者路边或飞或立的水鸟（不怕人的）。<br />
<br />
在Botanic Gardan看到了纪念二战时期妇女海军服务队的纪念石：二战时期，男子作战，海军支援、服务的工作就由妇女来干了。石头上一幅刻的画，两个身着制服的服务队员。看到这些，想到近70年前那一场战争，不禁感慨。<br />
<br />
再往东走，就是那一片茂密的红树林，生长在水里，枝干尽向河心指去。木桥领着游人离开岸边，在树林间穿梭，偶可见各色水鸟。寂静中，河水拍岸。阳光从细细的树枝间漏下，光影斑驳。<br />
<br />
走过一片游轮码头，是Brisbane Center，高高的写字楼洁白干净，阳台是活波的正弦曲线，各层阳台又错开，好像波浪起伏。没想到这里也有路边摊，出售各色纪念品：石头，贝壳手镯，木 雕，油画；便宜的衣服；甚至蔬菜、水果，比超市的便宜，看来以后周末可以来这儿买了。<br />
<br />
河水向右拐了个弯，忽然来到了Story Bridge下，钢梁大桥，飞架在河两岸高高的峭壁上，在蓝天白云下雄伟异常。峭壁下的路仅供行人和自行车走，很多健身的，多情侣、夫妻，或老或少不拘年龄。<br />
<br />
在这发现了一个仓库：无论从颜色还是造型，一眼就想起二战的片子。环顾的一周确认是二战时Brisbane河岸的军用仓库。<br />
<br />
仓库前的路上有油漆刷写的前方景点介绍文字：麦克阿瑟纪念馆，二战时期，麦克阿瑟将军的司令部。突然才想起来，自己住的酒店叫做MacArthur Chambers，同是也是一个麦克阿瑟的纪念馆。难怪酒店一层的墙上一副油画：老麦叼着烟斗，立在MacArthur Chambers前，说：我们会回来的。<br />
<br />
总算在路边看到一个地图，离Brisbane Square已经5公里了，已经走出市区图了，呵呵。翻到背面的大图，原来走到了一个Merthyr的地方，已经是郊区的景色了：一幢幢二三层的House，安静，整洁的街道，大片草坪上有人家在聚会。好平和。<br />
<br />
看看地图，发现原来留意的Brisbane University of Technology已经走过了。在寂静的New Farm区又走了一会儿，就折返向回市区了。</span>
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/76668#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 02 May 2007 18:12:14 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/76668</link>
        <guid>http://bma.javaeye.com/blog/76668</guid>
      </item>
      <item>
        <title>独上高楼消得憔悴蓦然回首——语言学习三境界</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/73188" style="color:red;">http://bma.javaeye.com/blog/73188</a>&nbsp;
          发表时间: 2007年04月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          引子<br />
<br />
王国维在《人间词话》中说：古今之成大事业、大学问者，必经过三种之境界：&ldquo;昨夜西风凋碧树。独上高楼，望尽天涯路。&rdquo;此第一境。&ldquo;衣带渐宽终不悔，为伊消得人憔悴。&rdquo;此第二境。&ldquo;众里寻他千百度，蓦然回首，那人正在，灯火阑珊处。&rdquo;此第三境。<br />
<br />
学习编程语言也是这样：<br />
一、语法，idiom，包括lib 熟悉阶段。你就独上高楼，望尽天涯路吧：<br />
<br />
&nbsp;&nbsp;&nbsp; Ruby语法好怪啊，和Java都不一样啊&hellip;&hellip;<br />
&nbsp;&nbsp;&nbsp; Ruby看着挺习惯了，也知道说啥了，可是自己一动手，还是磕磕绊绊，只能看着RDoc，Programming Ruby写，好多类库啊，天涯路啊（据说John Tiersen不用看啊）&hellip;&hellip;<br />
<br />
二、从小处入手，勤加练习，仿照Everday Scripting with Ruby做小玩艺儿，读Ruby Cookbook，读Rails源码&hellip;&hellip;反复揣摩、理解、体会，可谓为伊消得人憔悴。<br />
<br />
&nbsp;&nbsp;&nbsp; 从Rails Plugin学会Module的用法、体会Open Class/Module的无穷妙处&hellip;&hellip;<br />
&nbsp;&nbsp;&nbsp; 从YAML体会简洁的美（与The Art of Unix Programming提倡的思想一脉相承）&hellip;&hellip;<br />
<br />
三、到了面向对象、设计模式、架构模式层面，你发现Java中积累的经验，你刻苦研习Jakarta Commons，Spring Framework，Spring MVC的体会still applied，蓦然回首，Ruby正在灯火阑珊处&hellip;&hellip;<br />
<br />
<br />
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/73188#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 22 Apr 2007 13:25:00 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/73188</link>
        <guid>http://bma.javaeye.com/blog/73188</guid>
      </item>
      <item>
        <title>The Missing Part: The V of MVC for Rails</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/72281" style="color:red;">http://bma.javaeye.com/blog/72281</a>&nbsp;
          发表时间: 2007年04月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天和在Studio工作的QianQian论道，谈到Rails的View，共识是：写Model和Controller时都在飞&mdash;&mdash;Rails让你想哪就飞哪，一到View就掉下来了：太多boilerplate代码，太多CSS编辑。<br />
<br />
今天和James在Botanic Garden吃午餐，讨论同样的问题，他有同感，结论：需要一个framework来结束这最后的一块了。<br />
<br />
现在有<a href="http://unspace.ca/discover/haml/">Haml</a>和<a href="http://hobocentral.net/blog/2006/11/10/why-dryml/">DRYML</a>，是Solution么？
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/72281#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Apr 2007 22:18:09 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/72281</link>
        <guid>http://bma.javaeye.com/blog/72281</guid>
      </item>
      <item>
        <title>Taking Notes QUICKLY</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/71708" style="color:red;">http://bma.javaeye.com/blog/71708</a>&nbsp;
          发表时间: 2007年04月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          去年读&quot;Domain-Driven Design&quot;，确实被文本的厚度吓着了：单不说能不能吸收掌握，主干脉络都不容易弄清，查阅都不方便，一声叹息。<br />
<br />
今年，几个月前，八叉传过来一本&quot;DDD QUICKLY -- a summary of domain-driven design&quot;，戏言：缩写都能出书。<br />
<br />
这本书我没看。不过这种做法引起了我的思考：自打小学起，语文课老师就叫我们缩写、改写、扩写什么的，那这缩写是为个啥呢？提高总结抽象能力。高，中国语文教育没的说。<br />
<br />
几周前，读&quot;Rails for Java Developer&quot;，缩写了，名字就叫&quot;Rails for Java Developer QUICKLY&quot;。效果很好。<br />
<br />
与&quot;DDD QUICKLY&quot;不同：人家是出书，我是自己看，就为了 1) 学的时候不迷失， 2) 复习的时候省时间，<br />
所以形式上不是连贯的语句，就是一条一条记录，顺序还是按原书的章节走，内容上或者要点摘录，或者心得体会，两者体例不同，便于查阅。<br />
<br />
写QUICKLY一点心得：发现单纯读，有时候书中概念的关系（并列，因果等）不是那么明显，用这种电子笔记的形式重新写出来给自己看，结果豁然开朗啊。写完之后感觉，拿着这本直接能讲课了，呵呵。<br />
<br />
我是在ubuntu下用nano写的，版面控制在80列，为了便于打印。打印使用gedit，效果整洁、清爽。<br />
<br />
300页的Rails for Java Developer，让我缩写成22页的QUICKLY。打印出来后，在北京从家到公司的地铁上，正好看一遍。<br />
<br />
目前为止，是本书，旁边就有本Xxx QUICKLY。
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/71708#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 17 Apr 2007 04:14:51 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/71708</link>
        <guid>http://bma.javaeye.com/blog/71708</guid>
      </item>
      <item>
        <title>与国企客户交流敏捷有感</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/76814" style="color:red;">http://bma.javaeye.com/blog/76814</a>&nbsp;
          发表时间: 2007年02月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>昨天和一家巨大的国企交流敏捷，感觉有三：<br />
<ol>
    <li>敏捷的flexible contract (flexible budget, flexible scope)非常非常难用。敏捷实践可以保留，但敏捷合同必须本地化，中国化。客户说的好啊：&quot;国企喜欢砍头，不喜欢凌迟。你一下50万可以，你十次5万国企不干&quot;</li>
    <li>国企引入敏捷注重的是delivery,不太注重敏捷对团队能力的提高。后者肯定也是需要的，但是由于国企的政治环境，引入者需要政治安全感，所以至少首期合同是注重交付， 而非咨敏捷询等能力提高的.等第一次上线交付后，有了成绩了，这才一切好说。</li>
    <li>国企接受买产品，不大接受买咨询。和以前接受买硬件，不大接受买软件一样，现在接受买软件了，但还不大接受买咨询。最突出的例子就是：国企对使用开源软件很担心，用咨询立项有难度，两厢结合，客户建议我们按&quot;软件产品服务费&quot;立项，签合同，不说开源软件，不提敏捷咨询。<br />
    </li>
</ol>
</div>
<img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?space=&amp;page=RSS%3a+%e4%b8%8e%e5%9b%bd%e4%bc%81%e5%ae%a2%e6%88%b7%e4%ba%a4%e6%b5%81%e6%95%8f%e6%8d%b7%e6%9c%89%e6%84%9f&amp;referrer=" border="0" height="1" alt="" width="1" /><img src="http://c.live.com/c.gif?NC=31263&amp;NA=1149&amp;PI=88469&amp;RF=&amp;DI=3919&amp;PS=85545&amp;TP=agilecomponent.spaces.live.com&amp;GT1=" height="0" alt="" width="0" style="position: absolute;" />
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/76814#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 Feb 2007 02:36:58 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/76814</link>
        <guid>http://bma.javaeye.com/blog/76814</guid>
      </item>
      <item>
        <title>敏捷公开课！</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/76815" style="color:red;">http://bma.javaeye.com/blog/76815</a>&nbsp;
          发表时间: 2007年01月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>自从给国内一家非常著名的互联网公司（I mean 非常著名哦）做完Agile Training，以及向众多potential customer在正式、非正式场合普及了n多遍敏捷之后，众多ThoughtWorker都觉得有必要，有组织、有纪律、有深度梯度、有规律、有针对的在国内进行“敏捷公开课”。<br />陆陆续续总结、讨论、辩论，以及想从“肉体上消灭一个人”了一周左右之后，终于work out出了一份负责任的、大家都接受的敏捷公开课程表，包括周期、目标授众、课程目标、内容设置，当然还有价格:)<br />这里是<a href="http://www.thoughtworks.com.cn/press-releases/ThoughtWorks-agile-training-in-china.html">详情</a>。<br /></div><img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?space=&page=RSS%3a+%e6%95%8f%e6%8d%b7%e5%85%ac%e5%bc%80%e8%af%be%ef%bc%81&referrer=" border="0" height="1px" alt="" width="1px" /><img src="http://c.live.com/c.gif?NC=31263&amp;NA=1149&amp;PI=88469&amp;RF=&amp;DI=3919&amp;PS=85545&amp;TP=agilecomponent.spaces.live.com&amp;GT1=" height="0px" alt="" style="position:absolute" width="0px" />
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/76815#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 05 Jan 2007 02:49:12 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/76815</link>
        <guid>http://bma.javaeye.com/blog/76815</guid>
      </item>
      <item>
        <title>再访天竺？</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/76816" style="color:red;">http://bma.javaeye.com/blog/76816</a>&nbsp;
          发表时间: 2006年09月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>晴天霹雳！<br />有exchange to India的program：<br />至少半年，三个月可以回来一次，愿者报名！<br /><br />俺吃的惯masala，气候不错，有补助（还不错哦），但是俺还是不想去！<br />1 交流<br />2 交流<br />3 交流<br /><br />学英语最好的方法就是：听别人怎么说一个事儿，记下来，回头自己遇上这事儿了就这么说——用词准确，鲜活生动，顺道校正发音。<br />印度英语这些全缺：<br />千万别人为印度哥们从小英语，语法就没得说，我和印度哥们pair写过mail，他们语法，嗯，一般。<br />语言地域性很强，印度流行的说法，us，uk不见得用哪<br />发音，呵呵，Xiao宽慰我说：口音不是那么容易受影响的。<br /><br />所以，也许，等我从us或者uk交换回来，或许，有兴趣，如果需要（牺牲），我可能会去天竺。<br /></div><img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?space=&page=RSS%3a+%e5%86%8d%e8%ae%bf%e5%a4%a9%e7%ab%ba%ef%bc%9f&referrer=" border="0" height="1px" alt="" width="1px" /><img src="http://c.live.com/c.gif?NC=31263&amp;NA=1149&amp;PI=88469&amp;RF=&amp;DI=3919&amp;PS=85545&amp;TP=agilecomponent.spaces.live.com&amp;GT1=" height="0px" alt="" style="position:absolute" width="0px" />
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/76816#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Sep 2006 07:30:36 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/76816</link>
        <guid>http://bma.javaeye.com/blog/76816</guid>
      </item>
      <item>
        <title>写在离开Bangalore之际</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/76817" style="color:red;">http://bma.javaeye.com/blog/76817</a>&nbsp;
          发表时间: 2006年09月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>        好快，就要离开Bangalore了。<br />                从机场出来看见两个ThoughtWorker帅哥等我们，银灰色路灯下他俩微笑着介绍自己，一个是Raj，现在他叫宋无忌了，一个是S，四周Rickshaw窜来窜去——好象就在昨晚。<br />                一位位Trainer和同学，从陌生、到熟悉、到亲切，到见了面就开玩笑，课上的渐入佳境：上Analysis Boot Camp就和Rajeev半问答半开玩笑；上Consultant Boot Camp就被JJ逗的哈哈大笑；上Agile Boot Camp就向严肃的Jini提问看他严肃的回答；上Object Boot Camp就坐在DW旁边，聊天一样和他讨论类结构的设计；OB懒洋洋的Session，懒洋洋的讲故事，懒洋洋的抖出一个冷包袱，他为什么不去演电影？——现在就要离开了，突然觉得每一个Session都很宝贵了。<br />              一次Jini的session后，我在水杯垫背面画了一个神灯，拿给Jini看，“Jini, this is for you”，Jini严肃的接过说“Thank you!”，仔细看了后偷偷放在桌子上，拿给DW看，他笑得差点从椅子上掉下去。<br />                几乎每天无忌同志都要特别关照我们几个来自China的TWer，吃的习惯？住的习惯？今天的Session怎么样？<br />                先是OB，再是DW，跑来学脏话：一天晚上在Office，DW笑成一朵花跑来问我“How to say that 'you are my grandson'？” “孙子！”“孙子！”<br />               痴迷go和音乐的大安，午饭后坐在第一排剔牙，剔完牙面对着Trainer打盹，到了presentation时却又总能给人以惊喜。晚上在Office，他有时会坐在我们旁边认真的敲打吉他，唱歌。他说要买个大speaker，走哪儿都带着，因为他“couldn't live without his music”，后来却只买了一个耳机；我们说想吃中餐，他说一点不想american food.一起逛Bangalore Palace，他总结说这地儿就是一个放了两个星期的三明治。<br />               文质彬彬又搞笑的M，和他比胳膊上的毛，说人是如此不同，他声音平稳微笑着说“I'm human”；Case Study分组讨论他的意见独到又总是以“I could be wrong”结束；和他Pair，他第一句话就是“I can't programming, can you?”后来发现他很sharp，他又抱怨自己缺乏对异性的吸引力，站在那里总是微微驼着背，右手在胸前紧紧抓着挎包的带子，左手紧紧扶着挎包；去MySore玩儿的路上，男女都去找M，竟然发现他的包里什么都有，洗手液都拿塑料袋包的好好的带着；他为kids写了许多歌，叫他哼一首，他说“It's embarrasing”。<br />               能听说却不会读中文的D，她好酷，滔滔不绝的Z小姐，但凡一个话题都能滔滔不绝……<br /><br />             Session都是简单而有趣的，要是没有那么多feedback, session, daily, weekly evaluation会更好，但是Mark却能每个都填满！<br />            那些看似简单寓意深刻的游戏是谁设计的？让你感觉Agile就在身边，原来聪明人干什都是in Agile way。那些稀奇古怪的energizer真好玩，今天的竟然是排队开火车，一会儿高一会低，一会快一会慢，一会正着开一会倒着开，有人掉队，有人衣服被扯得老长。<br />                    四周攒了不少故事，结识了好些朋友，听了很多简单的Session却明白了很多道理。<br />        这下该算个ThoughtWorker了吧。<br /></div><img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?space=&page=RSS%3a+%e5%86%99%e5%9c%a8%e7%a6%bb%e5%bc%80Bangalore%e4%b9%8b%e9%99%85&referrer=" border="0" height="1px" alt="" width="1px" /><img src="http://c.live.com/c.gif?NC=31263&amp;NA=1149&amp;PI=88469&amp;RF=&amp;DI=3919&amp;PS=85545&amp;TP=agilecomponent.spaces.live.com&amp;GT1=" height="0px" alt="" style="position:absolute" width="0px" />
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/76817#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 05 Sep 2006 18:37:47 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/76817</link>
        <guid>http://bma.javaeye.com/blog/76817</guid>
      </item>
      <item>
        <title>印度婚礼！</title>
        <author>bma</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bma.javaeye.com">bma</a>&nbsp;
          链接：<a href="http://bma.javaeye.com/blog/76818" style="color:red;">http://bma.javaeye.com/blog/76818</a>&nbsp;
          发表时间: 2006年08月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>一对ThoughtWorker，M &amp; H，都是UK人，身在印度，举行了印度婚礼。<br />
大致流程是：<br />
1 新娘在酒店梳妆（没见到啥样）<br />
2 新郎在Office梳妆：Kurta，&ldquo;长围巾&rdquo;（名字忘了），包头的帽子，好大一朵鲜花和各种首饰<br />
3 乐队在Office楼下吹打。这乐队真是棒！萨克斯、鼓，乐曲令人想跳舞<br />
4 送新郎去见新娘，据说是越慢越好，一路上同事起舞相伴，一小段路走了快一个小时，新郎真是幸福的不得了<br />
5 快到酒店门口，一挂Loooooooong鞭炮炸了快10分钟。跟中国不同：不是为了接新娘子，倒像是欢迎新郎。<br />
6 在酒店里两个花枝招展的主持人象教堂里的一样说一堆祝福和命令的话。大家使劲鼓掌，我也受到触动，感动得几乎热泪盈眶。<br />
7 新郎新娘说话<br />
8 一大块白布隔开新郎和新娘，俩人坐在椅子上搁着白布猜谜语什么的，围的人太多没看清也没听清<br />
9 白布扯了，俩人又在一个盛满了牛奶深盘子里摸啊摸的：原来在找戒指。<br />
10 正是仪式好像完了，俩人分别坐在一个大毯子上，各自被一堆亲友包围着。看了一会，明白了：是歌咏比赛，歌词要求首尾相连，据说是很多印度电影的歌，听来一个味儿。<br />
11 有宾客开始用餐，我们闪了<br />
</div>
<div>
<table cellspacing="0" border="0">
    <tbody>
        <tr height="8">
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td valign="top"><a href="http://agilecomponent.spaces.live.com/photos//cns!6D8364111B2D759E!172"><img src="http://storage.msn.com/items/6D8364111B2D759E!172:thumbnail" border="0" alt="" /></a></td>
            <td width="15">&nbsp;</td>
            <td valign="top"><a href="http://agilecomponent.spaces.live.com/photos//cns!6D8364111B2D759E!173"><img src="http://storage.msn.com/items/6D8364111B2D759E!173:thumbnail" border="0" alt="" /></a></td>
            <td width="15">&nbsp;</td>
            <td valign="top"><a href="http://agilecomponent.spaces.live.com/photos//cns!6D8364111B2D759E!175"><img src="http://storage.msn.com/items/6D8364111B2D759E!175:thumbnail" border="0" alt="" /></a></td>
            <td width="15">&nbsp;</td>
            <td valign="top"><a href="http://agilecomponent.spaces.live.com/photos//cns!6D8364111B2D759E!174"><img src="http://storage.msn.com/items/6D8364111B2D759E!174:thumbnail" border="0" alt="" /></a></td>
        </tr>
        <tr>
            <td valign="top"><a href="http://agilecomponent.spaces.live.com/photos//cns!6D8364111B2D759E!171"><img src="http://storage.msn.com/items/6D8364111B2D759E!171:thumbnail" border="0" alt="" /></a></td>
            <td width="15">&nbsp;</td>
        </tr>
    </tbody>
</table>
</div>
<img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?space=&amp;page=RSS%3a+%e5%8d%b0%e5%ba%a6%e5%a9%9a%e7%a4%bc%ef%bc%81&amp;referrer=" border="0" height="1" alt="" width="1" /><img src="http://c.live.com/c.gif?NC=31263&amp;NA=1149&amp;PI=88469&amp;RF=&amp;DI=3919&amp;PS=85545&amp;TP=agilecomponent.spaces.live.com&amp;GT1=" height="0" alt="" width="0" style="position: absolute;" />
          <br/>
          <span style="color:red;">
            <a href="http://bma.javaeye.com/blog/76818#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 27 Aug 2006 10:52:30 +0800</pubDate>
        <link>http://bma.javaeye.com/blog/76818</link>
        <guid>http://bma.javaeye.com/blog/76818</guid>
      </item>
  </channel>
</rss>