<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>心灵的自由</title>
    <description>在北京漂泊的一名程序员</description>
    <link>http://dongbin.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>新文章都会发表在 dongbin.org 上，这个 blog 不再更新了 </title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/173473" style="color:red;">http://dongbin.javaeye.com/blog/173473</a>&nbsp;
          发表时间: 2008年03月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          维护两个 blog 太麻烦，以后的文章只发表在 <a href="http://dongbin.org" target="_blank">http://dongbin.org</a> 上。欢迎订阅我的 RSS：<br /><a href="http://feed.feedsky.com/dongbin" target="_blank">http://feed.feedsky.com/dongbin</a>
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/173473#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 18 Mar 2008 17:40:17 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/173473</link>
        <guid>http://dongbin.javaeye.com/blog/173473</guid>
      </item>
          <item>
        <title>在 FreeWheel 大力推广 TDD</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/161399" style="color:red;">http://dongbin.javaeye.com/blog/161399</a>&nbsp;
          发表时间: 2008年02月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          来FreeWheel3周多了，工作上最大的成就就是推广TDD开发非常的成功，身边的同事从不写测试到自觉写测试，进步神速。尤其是 <a href="http://hideto.javaeye.com/" target="_blank">hideto</a> 同学，还写了一些心得。<br /><br />敏捷价值观的最重要一条就是勇气，TDD大家都说好，但是谁都不敢尝试。只有大刀阔斧的实践才有出路。<br /><br />再次强调一下，TDD最重要的是Test First，补测试的方式是开发成本的极大浪费。早晚要写的东西为啥要拖到最后呢？<br /><br />《Getting Real》书中的 Debt 的观点非常好，有些东西是债，你出来混早晚是要还的。更重要的是债是有利息的！很多人想把测试拖一拖，岂不知拖的越久，给项目代来的代价越大。Bad code smell 也是债，每天Refactoring跟每个月Refactoring在成本上就是质的区别了。<br /><br />敏捷不是流程，不是技术，而是避免项目开发产生浪费的实践。可惜坏的实践容易在自然而然中形成，而好的实践需要勇气和执行力。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/161399#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Mon, 04 Feb 2008 14:21:07 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/161399</link>
        <guid>http://dongbin.javaeye.com/blog/161399</guid>
      </item>
          <item>
        <title>dongbin语录</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/157213" style="color:red;">http://dongbin.javaeye.com/blog/157213</a>&nbsp;
          发表时间: 2008年01月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          代码分为两种，差或者更差。<br /><br />追求完美是成功者的本能，平庸的代码跟平庸的人一样，没有前途。<br /><br />没有测试的代码不叫代码，不是自动化的测试不是测试。<br /><br />使用Windows最大的好处是让我更喜欢Linux。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/157213#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 18 Jan 2008 11:09:34 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/157213</link>
        <guid>http://dongbin.javaeye.com/blog/157213</guid>
      </item>
          <item>
        <title>2007 回首</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/154627" style="color:red;">http://dongbin.javaeye.com/blog/154627</a>&nbsp;
          发表时间: 2008年01月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="content">
    <p>生命不息，折腾不止。这句话形容我的2007年真是再贴切不过了。</p><p>&nbsp;</p>


	<p>2007年1月，由于慢性鼻炎，鼻中隔弯曲，我住院动了手术，开始了这一年折腾的序幕。手术还算成功，改善了我的相关症状。</p><p>&nbsp;</p>


	<p>出院后继续业余时间自己搞Ruby on Rails。但是我的本职工作是Rich Client的开发，偏偏我最感兴趣的是Web，而且实践敏捷ROR开发的愿望越来越强烈。经过激烈的思想斗争，终于鼓足勇气离开了IBM，加入了 <a href="http://rorcraft.com/">RORCraft</a></p><p>&nbsp;</p>


	<p>加入RORCraft让我可以全身心的从事ROR开发，沉浸于编码的乐趣之中，技术上得到了很大进步。感谢<a href="http://rexchung.com/">Rex</a> 先生。</p><p>&nbsp;</p>


	<p>经历了一段时间的磨练后，感觉到自己的能力可以作更多的事，于是找到Tony和Kevin一同创立了<a href="http://nibirutech.com/">NibiruTech</a> ，一家专门从事Ruby on Rails技术的外包公司。公司的发展比想象中的顺利，我们找到了于3个国外的客户，经历了6个项目。Infoq 还专门<a href="http://www.infoq.com/cn/news/2007/08/rails-professional-services">报道</a> 了我们。对于项目的高质量交付，敏捷开发在实践中起到了关键的作用，对于书本上的敏捷理论我有了更深一步的理解。</p><p>&nbsp;</p>


	<p>由于内部矛盾，Tony和我相继离开了NibiruTech，Tony选择了移动互联网方向的创业，而我选择加入了 <a href="http://freewheel/">FreeWheel</a> ，从事互联网视频广告平台的很有前景的初创公司。自此，2007年的折腾拉下了帷幕。</p><p>&nbsp;</p>


	<p>旧的一页翻过去了，2008年的拼搏开始了，挑战与激情中才能找到生命的乐趣。</p>

      </div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/154627#comments" style="color:red;">已有 <strong>4</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Jan 2008 09:52:22 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/154627</link>
        <guid>http://dongbin.javaeye.com/blog/154627</guid>
      </item>
          <item>
        <title>新的blog启动</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/154623" style="color:red;">http://dongbin.javaeye.com/blog/154623</a>&nbsp;
          发表时间: 2008年01月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>注册了 <a href="http://dongbin.org/">dongbin.org</a> 这个域名，但是还没用过。今天用nginx+mongrel搭建了这个新的blog，自力更生一把。</p>


	以后的blog将在<a href="http://dongbin.org/">dongbin.org</a> 上发布，<a href="../..//">dongbin.javaeye.com</a> 会继续同步更新
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/154623#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Jan 2008 09:47:50 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/154623</link>
        <guid>http://dongbin.javaeye.com/blog/154623</guid>
      </item>
          <item>
        <title>SCIM输入法导致键盘失灵的解决办法</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/150920" style="color:red;">http://dongbin.javaeye.com/blog/150920</a>&nbsp;
          发表时间: 2007年12月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这个问题困扰了我好久。终于解决了。<br /><br /><pre name="code" class="java">
apt-get install scim-bridge
</pre><br /><br />然后修改 /etc/X11/xinit/xinput.d/scim ， 把<br /><br /><pre name="code" class="java">
GTK_IM_MODULE=xim
</pre><br /><br />修改为<br /><br /><pre name="code" class="java">
GTK_IM_MODULE="scim-bridge"
</pre><br /><br />就好了。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/150920#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 26 Dec 2007 13:26:32 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/150920</link>
        <guid>http://dongbin.javaeye.com/blog/150920</guid>
      </item>
          <item>
        <title>周曙光的创业计划</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/150387" style="color:red;">http://dongbin.javaeye.com/blog/150387</a>&nbsp;
          发表时间: 2007年12月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          经过了两年的折腾，<a href="https://www.zuola.com/weblog/?p=945" target="_blank">周曙光要开始开茶馆了</a>。<br /><br />我一直很佩服这个敢想敢做的热血青年，虽然没什么稳定收入，却坚持作一名公民记者，在钉子户等事件中取得了非常大的影响力。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/150387#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 24 Dec 2007 10:01:07 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/150387</link>
        <guid>http://dongbin.javaeye.com/blog/150387</guid>
      </item>
          <item>
        <title>China on rails opencourse 上实例讲解TDD</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/147206" style="color:red;">http://dongbin.javaeye.com/blog/147206</a>&nbsp;
          发表时间: 2007年12月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://chinaonrails.com/topic/view/1034.html" target="_blank">http://chinaonrails.com/topic/view/1034.html</a><br /><br />由于时间关系，我只讲了一个皮毛。不过看到大家认真的学习态度，有种很满足的感觉。<br /><br />RSpec 1.0 已经完全能取代Rails Test了，而1.1中的新特性已经超越了Rails Test。建议Rails项目中使用RSpec进行TDD开发。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/147206#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Mon, 10 Dec 2007 11:36:56 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/147206</link>
        <guid>http://dongbin.javaeye.com/blog/147206</guid>
      </item>
          <item>
        <title>rails 爱好者的来信</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/146339" style="color:red;">http://dongbin.javaeye.com/blog/146339</a>&nbsp;
          发表时间: 2007年12月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: large"><span style="color: red">Updated: 由于受到合伙人杨祥吉的欺骗，我和Tony早已离开了NibiruTech，请不要再咨询我NibiruTech的事情了。 </span></span><br /><br />国内的Rails爱好者们真是让人感动，有这么多有激情的爱好者，中国的Rails社区前途一篇光明。<br /><br /><div class="quote_title">引用</div><div class="quote_div">你好：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 我是大连一家日企的程序员，在学校时就喜欢RAILS，但周围没有同路人。所以，总是断断续续的学习，至今没有什么提高。<br /><br />&nbsp;&nbsp;&nbsp; 看到你们的团队，真的感到高兴，国内缺少你们这样潜心研究RAILS的团队。我在这上的学，现在工作又在这，挪窝很不方便。<br /><br />&nbsp;&nbsp;&nbsp; 但是看到你们，真心希望你们能成功。我有收藏目前出版的几乎最全的RAILS电子书，视频。如果你们能用的着的话，算是它们有了用武之地，<br /><br />&nbsp;&nbsp;&nbsp; 也算了却我一个心愿。希望能为rails在国内的发展尽点绵薄之力。我虽然不能过去，但希望能做个朋友。<br /></div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/146339#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 06 Dec 2007 10:23:41 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/146339</link>
        <guid>http://dongbin.javaeye.com/blog/146339</guid>
      </item>
          <item>
        <title>Why JSP sucks？</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/139765" style="color:red;">http://dongbin.javaeye.com/blog/139765</a>&nbsp;
          发表时间: 2007年11月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这篇文章骂认证的时候顺便把JSP骂了一通。</p>
<p>&nbsp;</p>
<p><a href="http://gilesbowkett.blogspot.com/2007/10/technical-certifications-what-kind-of.html" class="entry-title-link" target="_blank">Technical Certifications: What Kind Of Bull Are They?</a></p>
<span class="entry-source-title-parent"><a href="http://www.google.com/reader/view/feed/http%3A%2F%2Ffeeds.feedburner.com%2Fgilesbowkett" class="entry-source-title" target="_blank"></a></span><blockquote>
<div>Not only that, the number one reason I liked Rails when I first saw it is because I had looked into getting a J2EE/JSP certification. They make you learn <span style="font-style: italic;">all</span> of the JSP APIs, and it's like this archaeological dig. You go down a layer, there's a terrible API that you wouldn't be able to use</div>
<div>in real life. You go down another layer, there's an even worse API that you wouldn't be able to use in real life for the same reasons, plus additional reasons. Then you do it all again. There's this whole sequence of terrible APIs stacked on top of each other, where Sun came up with something, it sucked, and then they came up with something completely different instead, which sucked only slightly less, but still continued supporting the earlier thing, because they couldn't admit it sucked, and they had customers on it. And the funny part is, you don't just have to learn all these crap APIs. You also have to learn Sun's <span style="font-style: italic;">excuses</span> for them. I'm serious. Those are questions on the exam.</div>
<div><br />
<span style="font-style: italic; font-weight: bold;">As long as you actually think about what you're reading, studying for the JSP cert is an incredible education in how to  up Web APIs really, really badly.</span></div>
</blockquote>
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/139765#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 Nov 2007 16:35:33 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/139765</link>
        <guid>http://dongbin.javaeye.com/blog/139765</guid>
      </item>
          <item>
        <title>Rails的矩阵化测试（发表于《程序员》2007年10月）</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/137923" style="color:red;">http://dongbin.javaeye.com/blog/137923</a>&nbsp;
          发表时间: 2007年11月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          引文<br />
<br />
这篇文章是7月份写的，但是10月份才发表。昨天看到了InfoQ的这篇<a href="http://www.infoq.com/cn/news/2007/10/RSpec-incorporates-RBehave">介绍Rspec新特性</a>的文章，才知道RSpec刚刚把本文所述功能实现了，所以本文那个matrix_spec插件基本废弃了。但是本文所讲主要是矩阵化测试的思想，对于RSpec中的RBehave特性的理解还是很有帮助的。<br />
<h2>摘要</h2>
对于Rails应用的自动化测试，本文介绍了如何使用矩阵测试来提高测试覆盖率，减少编写测试代码的工作量。同时介绍了如何使用正交化方法进行代码复用。文中使用的测试工具是RSpec，但是原理上Test::Unit 同样适用。<br />
<br />
<h2>引文</h2>
本 文作者是一名&ldquo;测试驱动强迫症&rdquo;患者和&ldquo;调试恐惧症&rdquo;患者。以TDD为荣，以不写测试为耻。以100％测试覆盖率为荣，以低测试覆盖率为耻。全面覆盖的 Test Case都有这样的特点，一方面要覆盖所有的行为，另一方面要覆盖所有的边界条件，就是说每一个边界条件和每一个行为的组合都要测试到。这就给手工编写测 试带来了巨大的挑战，如何重用和缩减测试代码是令人头痛的问题。<br />
<br />
编写测试和编写实现代码的思维方式有很大差别。实现代码就像狙击枪，目标明确－－通过当前失败的测试。测试代码就像轰炸机，对所有可能的目标进行地毯式轰炸，一旦有失败的测试用例，就是轰炸成功。轰炸机的弹药越充足，越便宜，轰炸成功的几率就越大。<br />
<br />
如何用最廉价的方式得到最全面的测试用例呢？通过动态组合行为和边界条件，我们就可以生成所有可能的测试，从而最大限度地重用测试代码。这就是Matrix Test的思想。<br />
<br />
矩 阵测试方法是由ZenTest的作者 Ryan Davis在今年4月提出的，并且在ZenTest 3.5.0中提供了一个Test:Unit的Matrix Test实现。矩阵测试的原理是把Test Case分解成3个正交的部分－－行为，边界条件以及校验，通过矩阵来描述如何运行时生成所有可能的Test Case，从而使测试覆盖率最大化。 本文作者开源了一个针对RSpec的矩阵测试实现--matrix_spec，本文的Matrix Test是通过matrix_spec来实现的。<br />
<br />
<h2>RSpec</h2>
RSpec是Ruby语言的新一代测试工具，跟Ruby的核心库Test::Unit相比功能上和非常接近，RSpec的优点是可以容易地编写<font size="-1">领域特定语言（Domain Specific Language，简称DSL）</font>。RSpec 的一个重要目标是支持Behaviour-Driven Development (BDD) , BDD是一种融合了 Test Driven Development， Acceptance Test Driven Planning和Domain Driven Design的一种敏捷开发模型。<br />
<br />
两种测试代码的比较：<br />
<br />
Test::Unit <br />
<br />
assert_equal 2, post.comments.size<br />
<br />
RSpec<br />
<br />
post.should have(2).comments<br />
<br />
可以看出RSpec的测试语法非常接近英语的自然语言，易于理解和维护。这种测试代码不仅仅是测试，更是用代码来撰写的Function spec。<br />
<br />
<h2>例子<br />
</h2>
在边界条件很多的情况下，编写测试覆盖所有测试用例非常辛苦。比如对PostsController的 show 和 edit 两个 action 编写功能测试。并且需要测试两个边界条件，普通用户登录 VS 管理员登录。测试用例用文字描述如下：<br />
<br />
<ol>
    <li>拒绝普通用户编辑Post</li>
    <li>允许管理员编辑Post</li>
    <li>允许普通用户访问Post</li>
    <li>允许管理员访问Post<br />
    </li>
</ol>
<br />
针对上面的测试用例，很容易写出下面的测试：<br />
<br />
describe PostsController do<br />
<br />
integrate_views<br />
<br />
it &quot;should deny edit with visitor&quot; do<br />
login_as :visitor # visitor is a readable user<br />
get :edit, :id =&gt; posts(:matrix).id<br />
#start some assertion for deny a readable user<br />
flash[:error].should == 'You have no permission to edit'<br />
response.should redirect_to(login_path)<br />
end<br />
<br />
it &quot;should allow edit with admin&quot; do <br />
login_as :admin<br />
get :edit, :id =&gt; posts(:matrix).id<br />
#start some assertion for edit<br />
response.should render_template(:edit)<br />
end<br />
<br />
it &quot;should allow show with visitor&quot; do<br />
login_as :visitor # visitor is a readable user<br />
get :show, :id =&gt; posts(:matrix).id<br />
#start some assertion for show<br />
response.should render_template(:show)<br />
end<br />
<br />
it &quot;should allow show with admin&quot; do<br />
login_as :admin # admin is a readable user<br />
get :show, :id =&gt; posts(:matrix).id<br />
#start some assertion for show<br />
response.should render_template(:show)<br />
end<br />
<br />
end<br />
<br />
可以从上面的代码中感觉到重复，但是重构又无从着手。传统的通过抽取方法，多态等重构手段难以奏效。这个例子很简单，但是当系统的边界条件和Controller的action增加时，比如说5个边界条件和7个action（一般的RESTful Controller 都有7个action)的时候，系统的测试用例可能达到5 x 7=35个，手工编写这些测试是一件繁重的工作。这种情况下，就需要更高级的抽象方法来消灭重复。<br />
<br />
<h2>矩阵测试</h2>
通过观察，上面每一个测试用例都可以分解为以下部分：<br />
<br />
<ol>
    <li>初始化，比如 <br />
    login_as :visitor</li>
    <li>动作， 比如 <br />
    get :show, :id =&gt; posts(:matrix)<br />
    post :create, :post =&gt; {:title =&gt; &quot;Matrix Test&quot;}<br />
    </li>
    <li>断言，比如<br />
    response.should be_success<br />
    response.should rediret_to(login_path)</li>
</ol>
<br />
继 续分析我们会发现，初始化和动作两个阶段是正交的。也就是说，初始化和动作是相互独立的，任何测试用例都可以表示为一个初始化和一个动作以及断言的组合。 那么我们把这三部分的代码抽取出来，动态地加以组合，就可以运行时生成测试用例，最大限度地缩短测试代码。这种二维关系的组合可以用一个矩阵来表示。<br />
<br />
对于上面的例子，可以如此编写矩阵测试：<br />
<br />
describe PostsController do<br />
<br />
matrix([           &quot;admin&quot;,           &quot;visitor&quot;],<br />
[&quot;edit&quot;,   &quot;allow edit&quot;,      &quot;deny&quot;       ],<br />
[&quot;show&quot;, &quot;allow show&quot;,    &quot;allow show&quot;]<br />
) <br />
<br />
before(:each) do<br />
with(&quot;admin&quot;) {login_as :admin}<br />
with(&quot;visitor&quot;){login_as :visitor}<br />
<br />
action(&quot;edit&quot;){ get :edit, :id =&gt; posts(:matrix).id }<br />
action(&quot;show&quot;){ get :show =&gt; posts(:matrix) }<br />
<br />
verify(&quot;edit&quot;){ response.should render_template(:edit)}<br />
verify(&quot;show&quot;){ response.should render_template(:show)}<br />
<br />
verify &quot;deny&quot; do<br />
flash[:error].should == 'No permission'<br />
assert_redirected_to login_path<br />
end<br />
<br />
after_verify &quot;edit&quot;, &quot;show&quot; do<br />
response.should be_success<br />
assigns(:post).should_not be_nil<br />
end<br />
<br />
end<br />
end<br />
<br />
<h3>如何使用Matrix Spec</h3>
<ol>
    <li>matrix<br />
    接受一个二维数组作为测试矩阵的描述。测试矩阵的第一行代表初始化条件，第一列代表动作，其余部分每一个字符串代表一个测试用例，字符串内容代表作为校验代码block的key。如果是空值，代表这个case不存在。<br />
    </li>
    <li>with:<br />
    描述如何初始化。<br />
    </li>
    <li>action:<br />
    描述执行什么动作。<br />
    </li>
    <li>verify:<br />
    对动作的结果进行校验。</li>
    <li>after_verify:<br />
    类似于Controller中的after_filter，执行某些verify之后需要执行的代码，目的是重用不同verify之间相似的断言代码。<br />
    </li>
</ol>
<br />
<h3>自动生成测试描述</h3>
RSpec可以根据代码中对测试的描述生成测试文档，或者称为规格说明。<br />
在生成Test Case的描述时，matrix_spec的格式是：<br />
&quot;should #{verify} with #{setup} when #{action}&quot; <br />
生成的spec doc有良好的可读性。<br />
运行 rake spec:doc ，测试用例的文字描述会被打印出来：<br />
<br />
PostsController<br />
- should deny edit with visitor when edit<br />
- should allow edit with admin when edit<br />
- should allow show with visitor when show<br />
- should allow show with admin when show<br />
<br />
<br />
矩 阵化测试可以改变我们的编程思考方式。我们把测试中的每个部分想象成空间中的一维，如果不同部分状态不互相影响，那么不同部分的组合所产生的新状态就有可 能是一个新的Test Case。通过这种动态组合，我们就可以把测试代码的重用提升至极限。这种通过正交分解来重用代码的方式类似于java社区的AOP编程。下面举一个我项 目中实际的测试矩阵：<br />
<br />
matrix([           &quot;logged in&quot;,             &quot;without login&quot;,  &quot;with error field&quot;, &quot;with invalid id&quot;],<br />
[&quot;new&quot;,     &quot;allow new&quot;,            &quot;deny&quot;,             nil,                     nil],<br />
[&quot;create&quot;,  &quot;allow create&quot;,         &quot;deny&quot;,             &quot;create failed&quot;,     nil],<br />
[&quot;edit&quot;,      &quot;allow edit&quot;,            &quot;deny&quot;,             nil，                    &quot;show invalid&quot;],<br />
[&quot;update&quot;, &quot;allow update&quot;,        &quot;deny&quot;,             &quot;update failed&quot;,     &quot;show invalid&quot;],<br />
[&quot;show&quot;,    &quot;allow show&quot;,          &quot;allow show&quot;,     nil,                      &quot;show invalid&quot;],<br />
[&quot;index&quot;,    &quot;allow index&quot;,         &quot;allow index&quot;,     nil,                      nil],<br />
[&quot;destroy&quot;, &quot;allow destroy&quot;,      &quot;deny&quot;,              nil,                      &quot;show invalid&quot;]<br />
)<br />
<br />
这个测试矩阵只需要很少的代码，就能在运行时生成了20个测试用例，得到了非常全面的测试覆盖。<br />
<br />
<h2><strong>安装RSpec和matrix_spec插件：</strong></h2>
<br />
运行本文代码需要安装RSpec和matrix_spec插件。<br />
<br />
<ol>
    <li>安装RSpec<br />
    <pre>ruby script/plugin install svn://rubyforge.org/var/svn/rspec/tags/CURRENT/rspec<br />ruby script/plugin install svn://rubyforge.org/var/svn/rspec/tags/CURRENT/rspec_on_rails</pre>
    </li>
    <li>安装matrix_spec插件：<br />
    <br />
    ./script/plugin install http://svn.nibirutech.com/opensource/plugins/matrix_spec/</li>
</ol>
<h2>总结</h2>
刚 刚接触TDD的同学往往只注意实现代码的Refactoring，而忽略了测试代码的质量。随着测试代码维护成本的提高，测试驱动的积极性必然会受到打 击。矩阵测试可以大幅缩短测试代码，提高代码复用和代码质量，同时提高测试覆盖率。 这种测试方式也强迫程序员从多维对测试代码进行分解，从而提高代码质量。如果测试代码不能够或者很难正交分解，本文介绍的方法就不能适用。这种正交分解的 思想对于其他编程领域也有启发。<br />
<br />
<h2>参考资料</h2>
<br />
<a href="http://blog.zenspider.com/archives/2007/04/functional_test_matrix.html" target="_blank">http://blog.zenspider.com/archives/2007/04/functional_test_matrix.html</a><br />
-- Ryan Davis 首次提出矩阵测试<br />
<a href="http://www.infoq.com/news/2007/04/matrix-your-tests" target="_blank">http://www.infoq.com/news/2007/04/matrix-your-tests</a> <br />
-- InfoQ上介绍Matrix Test的文章<br />
<a href="http://rspec.rubyforge.org/" target="_blank">http://rspec.rubyforge.org/</a><br />
-- Rspec官方网址<br />
<br />
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/137923#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 Nov 2007 19:15:05 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/137923</link>
        <guid>http://dongbin.javaeye.com/blog/137923</guid>
      </item>
          <item>
        <title>被Skype骗去了10欧元</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/137916" style="color:red;">http://dongbin.javaeye.com/blog/137916</a>&nbsp;
          发表时间: 2007年11月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Skype Pro上写着10欧元5个月的包月拨打国内电话。我开始还挺兴奋，结果打了几个发现Skype信用点数急剧下降，才发现这个功能不对中国开通。10欧元就这么打水漂了。<br /><br />既然没开通为什么我可以购买？并且不能够退款？Skype这个骗子。<br /><br />明天要找Tom客服理论一番。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/137916#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 Nov 2007 18:41:32 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/137916</link>
        <guid>http://dongbin.javaeye.com/blog/137916</guid>
      </item>
          <item>
        <title>不要再问我Windows下的问题</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/136849" style="color:red;">http://dongbin.javaeye.com/blog/136849</a>&nbsp;
          发表时间: 2007年10月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天有人问我Windows下面的Zentest的问题。关于Windows我想说两句：<br /><br />我使用Linux工作已经有两年了，出了一些特殊需求，比如网上银行之类的，我绝对不会用Windows。我们NibiruTech团队没有一个人使用Windows，<a href="http://bupt.org/blog/blog.php?do-showone-tid-935.html" target="_blank">完全使用linux工作</a>是理所应当的事，我至今还为使用Windows工作的日子为耻辱。<br /><br />我并不是完全反对商业软件，一些商业操作系统，比如Mac我还是比较喜欢的。我反对的是微软的霸权主义，系统的安全隐患，恶心的Win32API，还有一群被微软牵着的，自鸣得意的M$ Fans。<br /><br />所以我劝身边的每一个人抛弃Windows，远离微软，尤其是程序员朋友们。如果你们真正想要一个高效的开发环境，一堆丰富并且免费的开源软件，更重要的是学习编程之道，抛弃Windows,开始使用Linux工作吧。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/136849#comments" style="color:red;">已有 <strong>8</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 30 Oct 2007 22:35:33 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/136849</link>
        <guid>http://dongbin.javaeye.com/blog/136849</guid>
      </item>
          <item>
        <title>阳光总在风雨后</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/131616" style="color:red;">http://dongbin.javaeye.com/blog/131616</a>&nbsp;
          发表时间: 2007年10月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Updated: 由于受到合伙人杨祥吉的欺骗，我和Tony早已离开了NibiruTech，请不要再咨询我NibiruTech的事情了。 <br /><br />这段时间的辛苦程度超出了想象，创业的压力和困难只有经历了才能体会到。手下的兄弟们工作也非常辛苦，能和这群兄弟一起创业是很快乐的事情。<br /><br />我们是一个白手起家，没有任何背景的团队，只有打拼，让客户满意才有胜出的机会。这个创业盛行的时代，失败率也是出奇的高。失败的团队都有一个共同的特点：没有撑下去。我们只要活下去就会看到成功的曙光。<br /><br />三年，只要我们能够撑三年，就能立于不败之地。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/131616#comments" style="color:red;">已有 <strong>6</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 13 Oct 2007 09:56:27 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/131616</link>
        <guid>http://dongbin.javaeye.com/blog/131616</guid>
      </item>
          <item>
        <title>什么是Ruby之道？</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/129430" style="color:red;">http://dongbin.javaeye.com/blog/129430</a>&nbsp;
          发表时间: 2007年10月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.infoq.com/cn/articles/what-is-the-ruby-way" target="_blank">什么是Ruby之道？</a> 翻译这篇文章让我对这个问题有了更深的理解。<br /><br />这个“道”如果只是Ruby所有，那么它只是一种有为法。但是Hal Fulton并非这么想，他只是想通过Ruby来让我们理解其背后的“道”。这种道不生不灭，无色无相，乃是一种无为法。所有世间事物皆遵循这种道，而道又是不能由世间文字所描述，只能通过个人修证而来。<br /><br />Ruby之道表现为简单性和美感，这点和其他世间法是一致的。只有摆脱“企业级”，“工业标准”之类的枷锁才能真正做到这一点。而J2EE就是典型的反面例证，企业级成为复杂性的堂皇借口，复杂性成为标准的设计原则，程序员沦为标准的奴隶。<br /><br />作者全篇也没有明确地讲出什么是Ruby之道，但是他不断地从否定中指引我们－－Ruby具有简单性，但并非过分简单；Ruby具有一致性，但并非“愚蠢的一致”，诸如此类。<br /><br />这个道究竟为何？还请读者抛开世间文字去体悟。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/129430#comments" style="color:red;">已有 <strong>4</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 07 Oct 2007 10:27:27 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/129430</link>
        <guid>http://dongbin.javaeye.com/blog/129430</guid>
      </item>
          <item>
        <title>TDD的粒度</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/128612" style="color:red;">http://dongbin.javaeye.com/blog/128612</a>&nbsp;
          发表时间: 2007年10月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一般来讲，TDD的开发方式由三个步骤组成：<br />1. 编写一个失败的测试用例<br />2. 编写功能代码让这个测试通过<br />3. 如果代码有坏味道，就Refactor，否则goto 1<br /><br />但是实际开发中，在哪一个层面上编写这个失败的用例是一个更为关键的问题。比如说一个Invitation的需求，我们可以<br /><br />1. 用Selenium编写一个Acceptance Test， <br />2. 对Controller 开始编写一个Functional Test<br />3. 编写一个ActionMailer Test.<br />4. Invitation Model的 Unit Tests<br /><br />选择哪一个测试好呢？显然这4个测试的粒度是依次递减的。我习惯于从最小粒度的Test开始编写，因为这样我能够保证每次都以最快速度来通过测试，步入下一个迭代。<br /><br />这里有一个疑问，大粒度的Test往往能够覆盖细粒度Test所描述的行为，那么细粒度Test是否是一种增加开发成本的冗余？显然不是。一个Model里面的Bug在Functional Test里面发现和Unit Tests里面发现成本是不一样的。<br /><br />从最小粒度的Test开始并不是容易的事情，因为当我从一个失败的Test中的反馈才知道通过这个Test还要从更底层开始实现，那么这个Test的粒度很有可能过大了。我的做法是注释掉这个Test，在底层编写更细粒度的Test，通过以后回过头来处理这个测试。有很强的Prefactoring能力也许会降低这种探索的成本，不过对于我这种智商，还是从最小粒度的测试开始比较好。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/128612#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 01 Oct 2007 14:36:16 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/128612</link>
        <guid>http://dongbin.javaeye.com/blog/128612</guid>
      </item>
          <item>
        <title>林子大了啥鸟都有</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/127566" style="color:red;">http://dongbin.javaeye.com/blog/127566</a>&nbsp;
          发表时间: 2007年09月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://lilei0451.blog.sohu.com/64897015.html" target="_blank">ruby研究的阶段性成果，希望找到合作者</a><br /><br />啥都不懂就敢说成果，啥都不会就要合作。有中国特色的软件文化。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/127566#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 27 Sep 2007 13:37:01 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/127566</link>
        <guid>http://dongbin.javaeye.com/blog/127566</guid>
      </item>
          <item>
        <title>北京：NibiruTech招聘Rails爱好者</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/124968" style="color:red;">http://dongbin.javaeye.com/blog/124968</a>&nbsp;
          发表时间: 2007年09月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: large"><span style="color: red">Updated: 由于受到合伙人杨祥吉的欺骗，我和Tony早已离开了NibiruTech，请不要再咨询我NibiruTech招聘的事情了。</span></span><br /><br />NibiruTech(www.nibirutech.com)是2007年7月成立于北京的专业敏捷Rails团队，面向全世界的高端客户提供全面，高质量的Rails解决方案。<br /><br />创始团队有三人，<br /><br />&nbsp;&nbsp;&nbsp; * Kevin(www.yangxiangji.com)曾在某外企实习期间成功领导了该公司最 重要的跨国项目，管理团队超过60人。Kevin也曾是斯坦福创业公司www.idapted.com 重要创始团队成员之一，他拥有丰富的Rails开发经验，曾在程序员杂志上发表Rails技术文章。 Kevin同时拥有出色的跨文化沟通的商务能力<br /><br /><br />&nbsp;&nbsp;&nbsp; * Tony目前就读于北京大学，曾经效力于IBM，他具有出色的技术研发，品牌策划和营销能力。<br /><br /><br />&nbsp;&nbsp;&nbsp; * Dongbin（<a href="dongbin.javaeye.com" target="_blank">dongbin.javaeye.com</a>)毕业于哈工大计算机系，曾效力于IBM CSDL，拥有丰富的企业应用经验。他是出色的Rails和敏捷开发的先行者，在REST，TDD以及敏捷开发方面，拥有极其出色的知识和实践经验，在技术社区中拥有一定知名度和影响力。<br /><br /><br />我 们的使命是通过研发掌握最前沿的Rails相关技术，包括但不仅限于，Flex，VoIP，AJAX ，Mobile，使用敏捷开发中的极限编程方法，为客户提供高端，全面的web2.0和企业应用解决方案。我们非常重视技术，所有的代码实现100%测试代码覆盖，所有设计都是基于REST思想。我们自信所掌握的Rails技术，使我们成为国内最出色的rails技术团队之一。在团队内部，开发平台都是采用Mac和Ubuntu，简洁优雅。我们非常强调团队内部的学习文化，重视团队内部的知识共享和相互培训，我们的核心竞争力不仅仅在于已掌握的技术，更在于对前沿技术的热情和快速学习的能力。<br /><br />目前我们通过团队7x24般的努力，获得了客户的信任，业务发展健康，亟待更多对技术有炙热热情的rails爱好者加入团队。<br /><br />考虑到Ruby和Rails技术尚未普及，我们并不要求应聘者有相关经验。 但要求有以下知识：<br />1) HTML<br />2) Javascript<br />3) CSS<br />4) Ruby/Java/Python/Perl/PHP/LISP等语言中任何一种<br />5）熟练的英语读写能力<br /><br />我们提供什么：<br />1） 浓厚的技术氛围<br />2） 非常专业的Rails技术培训<br />3） 合理的报酬<br />4） 使用最新的技术，交付客户价值的机会<br /><br /><br />我们需要什么样的人：<br />1） 简单踏实，崇尚团队成功，不要个人英雄主义<br />2） 真诚第一<br />3） 直面问题，不抱怨环境和压力<br />4） 热爱编程<br />5） 努力工作<br />6） 欢迎北京以外在校学生申请实习（请注明实习期起始时间）<br /><br />简历请发送至：&nbsp; hr@NibiruTech.com
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/124968#comments" style="color:red;">已有 <strong>6</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 18 Sep 2007 14:00:53 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/124968</link>
        <guid>http://dongbin.javaeye.com/blog/124968</guid>
      </item>
          <item>
        <title>如何让CruiseControlrb生成RSpec 的rcov报告</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/122583" style="color:red;">http://dongbin.javaeye.com/blog/122583</a>&nbsp;
          发表时间: 2007年09月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="ruby">desc "Run all specs in spec directory with RCov (excluding plugin specs)"
Spec::Rake::SpecTask.new(:rcov) do |t|
  t.spec_files = FileList['spec/**/*_spec.rb']
  t.rcov = true
  t.rcov_opts = ['--exclude', 'spec']
  t.rcov_dir = ENV['CC_BUILD_ARTIFACTS'] ||  'coverage'
end</pre><br /><br />CC_BUILD_ARTIFACTS是CruiseControlrb设置的环境变量，用于存放每个Build信息所在目录。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/122583#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Sep 2007 15:01:44 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/122583</link>
        <guid>http://dongbin.javaeye.com/blog/122583</guid>
      </item>
          <item>
        <title>当 Class attribute 遇见 inheritance</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/117952" style="color:red;">http://dongbin.javaeye.com/blog/117952</a>&nbsp;
          发表时间: 2007年08月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Ruby的类变量遇到继承的时候：<br /><br /><pre name="code" class="ruby">  class F
    @@a = 'f'
    def foo
      puts @@a
    end
  end

  class A &lt; F
    @@a = 'a'
  end

  class B &lt; F
    @@a = 'b'
  end


  a = A.new
  a.foo ＃ => 'b'
</pre><br /><br />Rails是这么解决的：<a href="http://dev.rubyonrails.org/browser/trunk/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb?rev=7220" target="_blank">http://dev.rubyonrails.org/browser/trunk/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb?rev=7220</a>
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/117952#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 29 Aug 2007 15:04:27 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/117952</link>
        <guid>http://dongbin.javaeye.com/blog/117952</guid>
      </item>
          <item>
        <title>Half, not Half-ass</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/117918" style="color:red;">http://dongbin.javaeye.com/blog/117918</a>&nbsp;
          发表时间: 2007年08月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          以前写Rails程序，在设计好Model之后总是忍不住立刻生成所有的resource。<br /><br />在经历过一些教训之后，我已经克制住了./script/generate的诱惑。在一个用户故事没有完成之前拒绝创建不相关的Model。坚持把View的所有功能都实现完了才能转向其他Model的开发。这就是Getting Real中Half, not Half-ass的思想。<br /><br />View层的功能完全实现（包括AJAX）之后才能算是用户故事的完成。现在Rails开发Model和Controller已经很爽了，但是View部分的开发已经变成了项目的瓶颈。有些人就做完Model和Controller之后，View对付一下了事，继续作其他Model和Controller。结果就是一堆Half-ass的Feature。<br /><br />但是Half, not Half-ass容易陷入Detail陷阱，尤其是View的开发过程中，追究细节的成本呈指数曲线上升。我的办法是View的工作划分为功能性和展示性，功能性的工作根据User Story必须全部实现，包括AJAX。而展示性的工作做到可接受的程度就行了,上线以后再调整细节。<br /><br />所以NibiruTech需要技术全面的开发者，同一个User Story自底向上的所有Feature一个人要全面搞定。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/117918#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 29 Aug 2007 14:47:00 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/117918</link>
        <guid>http://dongbin.javaeye.com/blog/117918</guid>
      </item>
          <item>
        <title>NibiruTech招聘MySQL高手</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/117927" style="color:red;">http://dongbin.javaeye.com/blog/117927</a>&nbsp;
          发表时间: 2007年08月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: large"><span style="color: red">Updated: 由于受到合伙人杨祥吉的欺骗，我和Tony早已离开了NibiruTech，请不要再咨询我NibiruTech的事情了。</span> </span><br /><br /><a href="http://www.nibirutech.com/" target="_blank">NibiruTech</a>是2007年7月成立于北京的专业敏捷Rails团队，面向全世界的高端客户提供全面，高质量的Rails解决方案。<br /><br /><br />创始团队有三人，<br /><br /><ul>Kevin(www.yangxiangji.com)曾在某外企实习期间成功领导了该公司最重要的跨国项目，管理团队超过60人。Kevin也曾是斯坦福创业公司www.idapted.com 重要创始团队成员之一，他拥有丰富的Rails开发经验，曾在程序员杂志上发表Rails技术文章。 Kevin同时拥有出色的跨文化沟通的商务能力<br /><br />Tony目前就读于北京大学，曾经效力于IBM，他具有出色的技术研发，品牌策划和营销能力。<br /><br />Dongbin（dongbin.javaeye.com)毕业于哈工大计算机系，曾效力于IBM CSDL，拥有丰富的企业应用经验。他是出色的Rails和敏捷开发的先行者，在REST，TDD以及敏捷开发方面，拥有极其出色的知识和实践经验，在技术社区中拥有一定知名度和影响力。</ul><br /><br /><br />我 们的使命是通过研发掌握最前沿的Rails相关技术，包括但不仅限于，Flex，VoIP，AJAX ，Mobile，使用敏捷开发中的极限编程方法，为客户提供高端，全面的web2.0和企业应用解决方案。我们非常重视技术，所有的代码实现100%测试代码覆盖，所有设计都是基于REST思想。我们自信所掌握的Rails技术，使我们成为国内最出色的rails技术团队之一。在团队内部，开发平台都是采用Mac和Ubuntu，简洁优雅。我们非常强调团队内部的学习文化，重视团队内部的知识共享和相互培训，我们的核心竞争力不仅仅在于已掌握的技术，更在于对前沿技术的热情和快速学习的能力。<br /><br />目前我们通过团队7x24般的努力，获得了客户的信任，业务发展健康，现在需要招聘一名Mysql高手。<br /><br />要求有以下知识：<br />1、2年以上相关工作经验，熟悉MySQL的规划、安装、配置等。<br />2、了解MySQL的原理，有MySQL的DBA经验优先。<br />3. 熟悉Linux操作系统，有SHELL编程的经验。<br />4、良好的沟通交流能力，具备团队合作和协调能力，较强的计划与实施能力<br /><br />简历请发送至：&nbsp; service@NibiruTech.com
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/117927#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 29 Aug 2007 13:23:12 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/117927</link>
        <guid>http://dongbin.javaeye.com/blog/117927</guid>
      </item>
          <item>
        <title>创业两个月了，一点感想</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/114996" style="color:red;">http://dongbin.javaeye.com/blog/114996</a>&nbsp;
          发表时间: 2007年08月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: large"><span style="color: red"><br />Updated: 由于受到合伙人杨祥吉的欺骗，我和Tony早已离开了NibiruTech，请不要再咨询我NibiruTech招聘的事情了。 </span></span><br /><br /><a href="http://nibirutech.com/" target="_blank">NibiruTech</a>团队成立两个月了。这段时间几乎没什么休息日，但是作自己喜欢做得事情是很开心的。这就是创业的乐趣。<br /><br />我们的业务模式很简单，为客户提供专业的软件开发和咨询服务，按照服务时间和服务质量来收取费用。与一般的软件公司不同的是我们不按照项目来签合同，用那些莫须有的功能点来估计几个月的费用最终造成的就是甲方乙方之间的博弈。而在软件领域，这种博弈成本相当之高－－甲方拼命塞功能，乙方把软件质量抛在脑后，只应付验收。<br /><br />这种模式客户确实要承担一部分风险。所以我们以两周作为一个结算周期，我们承诺的是在每两周之内交付一个可用版本。如果客户不满意可以在任何一个两周之后离开我们。相比根据整体项目签合同来说，这个风险要小的多。事实上没有人和一个客户离开我们，他们反而把更多业务交给我们。国内这种软件业务模式还非常少见，我们很愿意充当一下小白鼠。<br /><br />敏捷开发是这种业务模式的重要保障，如果没有TDD，CI，Refactoring, Fast Iteration等实践，两周的交付周期根本无法实现。
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/114996#comments" style="color:red;">已有 <strong>3</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 21 Aug 2007 22:35:04 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/114996</link>
        <guid>http://dongbin.javaeye.com/blog/114996</guid>
      </item>
          <item>
        <title>InfoQ上对我们团队的介绍</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/113592" style="color:red;">http://dongbin.javaeye.com/blog/113592</a>&nbsp;
          发表时间: 2007年08月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h3><span style="font-size: large;"><span style="color: red;">Updated: 由于受到合伙人杨祥吉的欺骗，我和Tony早已离开了NibiruTech，请不要再咨询我NibiruTech的事情了。</span>
</span>
</h3>
<h3><a href="http://www.infoq.com/cn/news/2007/08/rails-professional-services">梦想上铁道：Ruby on Rails专业服务浮出水面</a>
</h3>
<p>
<br />
<br />
近年来在国内有越来越多的人开始互联网创业：有人在业余时间开发和运营网站，也有人走上专职的创业道路。在Ruby on Rails等新兴技术的帮助下，越来越多的梦想渐渐成为现实。同时一项新的专业服务也逐渐浮出水面：采用Ruby on Rails帮助他人开发网站、实现互联网创业的梦想。<br />
<br />
<a href="http://nibirutech.com/" target="_blank">NibiruTech</a>
就是一家提供这样专业服务的初创公司。该公司的三位创始人分别曾经在IBM等跨国企业供职，三人组建NibiruTech的目标是面向全世界的高端客户提供全面，高质量的Rails解决方案。公司创始人之一董彬这样描述该公司的使命： </p>
<blockquote>我们的使命是通过研发掌握最前沿的Rails相关技术，包括但不仅限于Flex、VoIP、AJAX 、Mobile，使用敏捷开发中的极限编程方法，为客户提供高端、全面的web2.0和企业应用解决方案。</blockquote>
<p><a href="http://www.1sters.com/" target="_blank"> 1sters!</a>
也提供Ruby on Rails的专业服务。1sters!团队的主力都在深圳IT企业工作，业余时间则用自己在Ruby on Rails和web2.0的技能帮助别人实现创意。目前1sters!实施上线的网站包括&ldquo;<a href="http://www.byeloo.cn/" target="_blank">毕业咯</a>
&rdquo;、&ldquo;<a href="http://1stimes.com/" target="_blank">第一次</a>
&rdquo;、&ldquo;<a href="http://www.itechtag.com/" target="_blank">IT技能云</a>
&rdquo;等。1sters!团队这样介绍自己：</p>
<blockquote>一群理解您的Idea,并能按照您的想法, 综合我们的专业技术和视觉,分析,完善您天才般的想法; 并能敏捷的实现,灵活的按照不同的情况作出响应的团队.</blockquote>
<p>  &ldquo;<a href="http://www.quannei.com/" target="_blank">创业圈内</a>
&rdquo; 则用另一种方式为心怀梦想的创业者们提供帮助：为他们提供资源组合的机会。针对创业者、咨询顾问和投资人三种不同的用户，&ldquo;创业圈内&rdquo;让他们描述各自拥有 的资源和希望寻找的资源，并对各种角色进行配对。创业者的点子、咨询顾问的专业技能和投资人的资金，三者如果得到合理的组合，会有更多的梦想得以实现。 &ldquo;创业圈内&rdquo;的网站介绍就很有web2.0特色：</p>
<blockquote>创业圈内现在是一个创业者结交朋友，寻找合作伙伴的平台。今后的他会发 展成什么样子，我们都不知道。在给他规划了无数的发展方向之后，我们放弃了。因为这个平台服务的是世界上最活份，最激情的一群人。 他们会在这个平台上演绎出所有的可能性。那么我们何必设置一些框框去限制他们呢？于是创业圈内变成了一个极尽可能的开放平台。</blockquote>
<p>在谈到自己的创业行动时，董彬认为自己做的事情已经超越了传统意义上的软件开发，而是在为客户提供专业服务。董彬说道：</p>
<blockquote>软 件就是服务，我们交付的是我们的专业技能和高质量的服务。我们的收费模式不同于传统的，以合同主导的按照整体项目收费，而是按照小时为单位交付的服务进行 收费。并且我们以两周到一个月的时间作为迭代和结算周期，客户可以在任何一个周期中离开我们。而事实上没有一个客户这么做，他们把更多的业务交给我们。咨 询模式的软件开发和交付方式将是软件业的未来。
<div></div>
</blockquote>
<p> 在谈到&ldquo;为什么选择Ruby on Rails&rdquo;这个话题时，接受采访的几位创业者都提到了&ldquo;快乐&rdquo;这个词。1sters!团队的IceskYsl认为，开发平台对于开发者的心情有很大的影 响，采用Rails开发带来的快乐感觉是支撑他在业余时间帮助别人开发网站的主要动力之一。董彬则认为：未来的Rails将主导Web开发，同时 Rails大大提高了NibiruTech团队的生产力，让他们感受到开发的乐趣。<br />
<br />
在Ruby on Rails极高的开发效率影响下，小规模的专业服务团队开始成为一支不容忽视的力量：他们不仅可以帮助刚起步的创业者快速实现自己的点子，甚至还可以为跨 国大型企业开发软件应用。这种新的工作模式前景会怎样，将来是否会遇到难题，目前都是未知数。但我们仍然把掌声和祝福送给这些勇敢和执着的先行者。</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/113592#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 17 Aug 2007 21:57:23 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/113592</link>
        <guid>http://dongbin.javaeye.com/blog/113592</guid>
      </item>
          <item>
        <title>NibiruTech招聘Rails爱好者(期权) －－ 有工作经验或实习生均可[工作地点：北京]</title>
        <author>dongbin</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dongbin.javaeye.com">dongbin</a>&nbsp;
                    链接：<a href="http://dongbin.javaeye.com/blog/112454" style="color:red;">http://dongbin.javaeye.com/blog/112454</a>&nbsp;
          发表时间: 2007年08月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: large;"><span style="color: red;">Updated: 由于受到合伙人杨祥吉的欺骗，我和Tony早已离开了NibiruTech，请不要再咨询我NibiruTech招聘的事情了。</span>
</span>
</p>
<p>&nbsp;</p>
<p>请在简历中注明期望的薪酬,简历请发送至：&nbsp; All@NibiruTech.com<br />
<br />
NibiruTech是2007年7月成立于北京的专业敏捷Rails团队，面向全世界的高端客户提供全面，高质量的Rails解决方案。<br />
<br />
<br />
创始团队有三人，</p>
<ul>
<li>Kevin(www.yangxiangji.com)曾在某外企实习期间成功领导了该公司最 重要的跨国项目，管理团队超过60人。Kevin也曾是斯坦福创业公司www.idapted.com 重要创始团队成员之一，他拥有丰富的Rails开发经验，曾在程序员杂志上发表Rails技术文章。 Kevin同时拥有出色的跨文化沟通的商务能力<br />
    </li>
</ul>
<p>&nbsp;</p>
<ul>
<li>Tony目前就读于北京大学，曾经效力于IBM，他具有出色的技术研发，品牌策划和营销能力。 <br />
    </li>
</ul>
<p>&nbsp;</p>
<ul>
<li>Dongbin（dongbin.javaeye.com)曾效力于IBM，拥有丰富的企业应用经验。他是出色的Rails和敏捷开发的先行者，在REST，TDD以及敏捷开发方面，拥有极其出色的知识和实践经验，在技术社区中拥有一定知名度和影响力。</li>
</ul>
<p>
<br />
&nbsp;&nbsp;  <br />
<br />
我 们的使命是通过研发掌握最前沿的Rails相关技术，包括但不仅限于，Flex，VoIP，AJAX ，Mobile，使用敏捷开发中的极限编程方法，为客户提供高端，全面的web2.0和企业应用解决方案。我们非常重视技术，所有的代码实现100%测试 代码覆盖，所有设计都是基于REST思想。我们自信所掌握的Rails技术，使我们成为国内最出色的rails技术团队之一。在团队内部，开发平台都是采 用Mac和Ubuntu，简洁优雅。我们 非常强调团队内部的学习文化，重视团队内部的知识共享和相互培训，我们的核心竞争力不仅仅在于已掌握的技术，更在于对前沿技术的热情和快速学习的能力。<br />
<br />
目前我们通过团队7x24般的努力，获得了客户的信任，业务发展健康，欲招聘更多对技术有炙热热情的rails爱好者加入团队。<br />
<br />
考虑到Ruby和Rails技术尚未普及，我们并不要求应聘者有相关经验。 但要求有以下知识：<br />
1) HTML<br />
2) Javascript<br />
3) CSS<br />
4) Ruby/Java/Python/Perl/PHP/LISP等语言中任何一种<br />
5）熟练的英语读写能力<br />
<br />
我们提供什么：<br />
1） 浓厚的技术氛围<br />
2） 非常专业的Rails技术培训<br />
3） 团队的期权<br />
4） 合理的报酬<br />
5） 使用最新的技术，交付客户价值的机会<br />
<br />
<br />
我们需要什么样的人：<br />
1） 简单踏实，崇尚团队成功，不要个人英雄主义<br />
2） 真诚第一<br />
3） 直面问题，不抱怨环境和压力<br />
4） 热爱编程<br />
5） 努力工作，技术培训是对你的短期回报，期权是你的长期回报<br />
6） 欢迎北京以外在校学生申请实习（请注明实习期起始时间）<br />
<br />
<br />
请在简历中注明期望的薪酬<br />
<br />
简历请发送至：&nbsp; All@NibiruTech.com</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://dongbin.javaeye.com/blog/112454#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Aug 2007 09:55:54 +0800</pubDate>
        <link>http://dongbin.javaeye.com/blog/112454</link>
        <guid>http://dongbin.javaeye.com/blog/112454</guid>
      </item>
      </channel>
</rss>