<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/tony1130" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/tony1130" type="application/rss+xml"></fs:self_link><lastBuildDate>Mon, 22 Jun 2009 21:48:00 GMT</lastBuildDate><title>闲亭信步（KISS）</title><description>手把青秧插满田，低头便见水中天。身心清净方为道，退步原来是向前。</description><link>http://blog.csdn.net/tony1130/</link><item><title>a manual deployment process which I am scared with</title><link>http://blog.csdn.net/tony1130/archive/2009/06/22/4289992.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4289992.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4289992.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4289992</trackback:ping><description>This manual deployment process was as follows.1. Logon to the ‘build box’2. Get latest3. Open visual studio and compile the application4. FTP the resulting app to a staging area on our production webserver5. Put the website offline6. Run any new SQL files against the production database (Hopefullyyou guessed the execution order correctly)7. Copy the app into place8. Put website back online9. Hope nothing had br&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4289992.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/236657826/tony1130/csdn.net/s.gif?r=http://blog.csdn.net/tony1130/archive/2009/06/22/4289992.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657826/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657826/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 23 Jun 2009 05:48:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/06/22/4289992.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/06/22/4289992.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/06/22/4289992.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657826/1090470</fs:itemid></item><item><title>原则三：封装所有的原始类型和字符串</title><link>http://blog.csdn.net/tony1130/archive/2009/06/18/4280962.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4280962.aspx</wfw:comment><slash:comments>2</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4280962.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4280962</trackback:ping><description>&lt;br /&gt;继续《理解面向对象的练习原则》&lt;br /&gt;&lt;br /&gt;所有原则要在大家做练习时使用。但只有练习过，才更容易理解面向对象。&lt;br /&gt;&lt;br /&gt;一个整型数字本身没有任何意义。当某个方法用一个整型参数做参数时，这个方法名就要负责解释一切。&lt;br /&gt;假如这个方法使用Hour作为参数，那么就更容易知道它是做什么一些了。小对象可能会使代码易维护一些，因为你可能把一年的&quot;1&quot;传到这个方法中。&lt;br /&gt;&lt;br /&gt;而且使用原始类型的变量时，编译器无法帮助你检查这类错误。&lt;br /&gt;&lt;br /&gt;同时，这些小对象一样可以放入一些属于这些小对象的逻辑和方法，从而使原本上层较大的方法变小。&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4280962.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/236657830/tony1130/csdn.net/s.gif?r=http://blog.csdn.net/tony1130/archive/2009/06/18/4280962.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657830/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657830/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 19 Jun 2009 04:05:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/06/18/4280962.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/06/18/4280962.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/06/18/4280962.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657830/1090470</fs:itemid></item><item><title>一键发布</title><link>http://blog.csdn.net/tony1130/archive/2009/06/17/4277872.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4277872.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4277872.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4277872</trackback:ping><description>本文通过介绍某项目在开发过程中使用的持续集成实践，总结了持续集成的要点，并指出了“持续部署”已经应用于实际项目中。&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4277872.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/236657837/tony1130/csdn.net/s.gif?r=http://blog.csdn.net/tony1130/archive/2009/06/17/4277872.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657837/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657837/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 18 Jun 2009 07:11:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/06/17/4277872.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/06/17/4277872.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/06/17/4277872.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657837/1090470</fs:itemid></item><item><title>Google的九条创新原则</title><link>http://blog.csdn.net/tony1130/archive/2009/05/26/4218674.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4218674.aspx</wfw:comment><slash:comments>32</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4218674.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4218674</trackback:ping><description>Innovation, not instant perfection
/创新不会马上就完美&lt;br /&gt;
 Start rough, learn and iterate./开始粗糙，学习和迭代
Ideas come from everywhere
/点子来自任何地方&lt;br /&gt;
 Ideas can come from the engineers, managers, users even the financial team.Share everything you can
/分享一切&lt;br /&gt;
 Everything is put on the intranet, so employees know what is happening./任何事情都可以在内网分享You’re brilliant, we’re hiring
/你有才，我雇你&lt;br /&gt;
Founders Larry Page and Sergey Brin approve hires. They favor
intelligence over experience. /Larry Page和Ser&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4218674.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/236657845/tony1130/csdn.net/s.gif?r=http://blog.csdn.net/tony1130/archive/2009/05/26/4218674.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657845/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657845/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 27 May 2009 06:11:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/05/26/4218674.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/05/26/4218674.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/05/26/4218674.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657845/1090470</fs:itemid></item><item><title>使用Cruise和Mercurial实现个人预提交，提高生产效率及整体自动化测试成功率</title><link>http://blog.csdn.net/tony1130/archive/2009/05/24/4212502.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4212502.aspx</wfw:comment><slash:comments>1</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4212502.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4212502</trackback:ping><description>什么是Personal build?Personal build简单来说，就是开发人员在代码提交之前，先要自己在本地运行一次构建和测试代码，保证本地没有测试失败后，再将其提交到中央代码仓库。Personal build的痛处在哪里？“提交代码之前，必须在本地运行并通过单元测试”是敏捷团队的原则之一。而随着新功能的增加，我们的单元测试越来越多，运行时间当然也就越来越长，那么开发人员等待的时间就长。因此，正如在InfoQ上的一篇关于持续集成实践的文章所述，我们在每台PairStation上都安装了一个虚拟机来运行自己提交前的单元测试。然而，每台虚拟机都运行自己的单元测试，也就是说，在运行时间上没有什么大的改进，还是需要三十分钟左右（因为还是在一台机器上运行），其好处是执行本地单元测试的同时，开发人员可以继续他们自己的工作，但本地单元测试的时间并未缩短，反馈时间长的问题还是存在。Cruise团队如何解决这个问题？最近，我们又拿到一台新机&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4212502.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/236657847/tony1130/csdn.net/s.gif?r=http://blog.csdn.net/tony1130/archive/2009/05/24/4212502.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657847/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657847/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 24 May 2009 23:38:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/05/24/4212502.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/05/24/4212502.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/05/24/4212502.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657847/1090470</fs:itemid></item><item><title>Ubuntu下，两种方法安装JDK6及版本间切换</title><link>http://blog.csdn.net/tony1130/archive/2009/05/23/4210341.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4210341.aspx</wfw:comment><slash:comments>1</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4210341.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4210341</trackback:ping><description>Ubuntu下，两种方法安装JDK6及版本间切换&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4210341.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/236657852/tony1130/csdn.net/s.gif?r=http://blog.csdn.net/tony1130/archive/2009/05/23/4210341.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657852/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657852/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sat, 23 May 2009 18:46:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/05/23/4210341.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/05/23/4210341.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/05/23/4210341.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657852/1090470</fs:itemid></item><item><title>原则二：不使用else关键字</title><link>http://blog.csdn.net/tony1130/archive/2009/05/12/4174458.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4174458.aspx</wfw:comment><slash:comments>39</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4174458.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4174458</trackback:ping><description>else关键字多了以后，当增加新需求时，很容易令人不由自主地去增加新的if...else子句，而不是去重构代码。而且，这种条件判断较多的地方，很容易出现代码重复的现象。else少的话，还可以让代码更易读。
&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4174458.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/236657854/tony1130/csdn.net/s.gif?r=http://blog.csdn.net/tony1130/archive/2009/05/12/4174458.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657854/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657854/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 13 May 2009 06:53:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/05/12/4174458.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/05/12/4174458.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/05/12/4174458.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657854/1090470</fs:itemid></item><item><title>原则一：每个方法只使用一层缩进</title><link>http://blog.csdn.net/tony1130/archive/2009/04/30/4141023.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4141023.aspx</wfw:comment><slash:comments>11</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4141023.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4141023</trackback:ping><description>原则一：每个方法只使用一层缩进。如示例代码所示，应用原则(1)之前,代码只有一个方法，要通读代码之后，才知道该方法的用法；应用之后的代码有三个方法，但每个方法都只做一件事，而方法名反应了它做什么事，所以很容易理解。&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4141023.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657856/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657856/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 01 May 2009 07:10:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/04/30/4141023.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/04/30/4141023.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/04/30/4141023.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657856/1090470</fs:itemid></item><item><title>遵循九个原则，练习写一千行代码，锻炼面向对象的思考过程</title><link>http://blog.csdn.net/tony1130/archive/2009/04/28/4131465.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4131465.aspx</wfw:comment><slash:comments>36</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4131465.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4131465</trackback:ping><description>使用这九个原则，练习写一千行代码，锻炼面向对象的思考过程。1. 每个方法只使用一层缩进...&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4131465.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657858/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657858/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 28 Apr 2009 16:48:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/04/28/4131465.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/04/28/4131465.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/04/28/4131465.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657858/1090470</fs:itemid></item><item><title>走向“持续部署”</title><link>http://blog.csdn.net/tony1130/archive/2009/04/09/4060486.aspx</link><wfw:comment>http://blog.csdn.net/tony1130/comments/4060486.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/tony1130/comments/commentRss/4060486.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4060486</trackback:ping><description>目前IT行业中，似乎“要不要做持续集成？”已经不再是讨论的焦点，取而代之的是“如何进行持续集成？”。在前一篇文章中，我介绍了Cruise团队持续集成的演进过程。在最后，还曾提及Cruise团队的持续部署。本文将结合团队的实际情况，与大家分享持续部署的实践心得。 “最后一哩”问题持续集成解决了软件开发中的部分问题，但还有更为重要的一部分有待解决，即“通过什么样的方法，可以让软件尽快地在真正的生产环境下运行，从而实现软件的价值”。在软件开发过程中，“从功能开发完成开始直到将其部署至生产环境中正事运行”这一阶段被称为“最后一哩 ”。如果从一开始就对产品发布足够重视的话，那么这“最后一哩”可能只需要几分钟，甚至几秒钟就完成了。然而，事实上大多数项目在这一阶段会花上几个星期，更有甚者可能会是几个月。为什么会这样呢？对于复杂软件来说，无论什么环境中的部署（测试环境，试运行环境，还是生产）都很困难。当软件第一次被部署到非开发环境去测试，或者当软件功能及其环境有较大变化时，通常都会暴露出很多问题。而在做用户验收测试时，常常会发现更多的问&lt;img src =&quot;http://blog.csdn.net/tony1130/aggbug/4060486.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/tony1130/236657870/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/tony1130/236657870/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 10 Apr 2009 04:05:00 +0800</pubDate><author>乔梁</author><comments>http://blog.csdn.net/tony1130/archive/2009/04/09/4060486.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/tony1130/archive/2009/04/09/4060486.aspx</guid><dc:creator>乔梁</dc:creator><fs:srclink>http://blog.csdn.net/tony1130/archive/2009/04/09/4060486.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/tony1130/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/tony1130/~1090471/236657870/1090470</fs:itemid></item></channel></rss>