﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Tin's Blog-随笔分类-非Java</title><link>http://www.blogjava.net/iamtin/category/7956.html</link><description>You are coming a long way, baby~Thinking, feeling, memory...</description><language>zh-cn</language><lastBuildDate>Sun, 16 Sep 2007 12:53:28 GMT</lastBuildDate><pubDate>Sun, 16 Sep 2007 12:53:28 GMT</pubDate><ttl>60</ttl><item><title>从CTO如何设计软件到如何才是架构师</title><link>http://www.blogjava.net/iamtin/archive/2007/09/15/cto_design_project_and_how_to_be_architect.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Sat, 15 Sep 2007 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2007/09/15/cto_design_project_and_how_to_be_architect.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/145365.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2007/09/15/cto_design_project_and_how_to_be_architect.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/145365.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/145365.html</trackback:ping><description><![CDATA[一段对话，关于架构师和设计者的。<br />
起因是javaeye的这个帖子：<a href="http://www.javaeye.com/topic/120219" title="固定链接：看看国外CTO是如何设计Java软件的">看看国外CTO是如何设计Java软件的</a>
<br />
<br />
<span style="color: #0817ff;">我回复maqujun说：</span><br />
呵呵，国外不止是CTO这样做。<br />
我国外的一些朋友在大学的时候计算机相关的作业就是这样的，这种做法一般不叫design by interface。老外一般叫做design by contract，因为contract有的时候是interface，有的时候是UML，有的时候是描述非常详细的类设计文档，但是结果是一样的，要求的外观和接口，内部怎么实现是你的事情。<br />
<br />
<span style="color: #0817ff;">maqujun又回复说：</span><br />
其实CTO不做这种事啦，我的文章写的有点偏题了。interface design是我的工作。我在文中是对我自己工作的总结经验，希望和更多人分享。你所说的国外大学的计算机相关的作业的内容，我很认同。这才是大学中应该学的东西。可惜我们中国的大学根本就没有这方面的涉及。有些差距在一开始的地方就形成了。不过好在我们自己可以弥补它。<br />
<br />
哈哈，很高兴收到你的回复。交个朋友吧。我加你为好友！ :D<br />
<br />
<span style="color: #0817ff;">我又回复：</span><br />
哈哈，是呀。我还真没见过公司里面专门有人做interface design的，这样不错，api会变漂亮。<br />
老外的计算机教育让我觉得在国内上大学基本上就是浪费时间。<br />
<br />
<span style="color: #0817ff;">maqujun回复：</span><br />
哈哈，&#8220;国内上大学基本上就是浪费时间&#8221;有同感！<br />
不过我可不是专门做interface design的哦。我不是架构工程师，我是软件开发工程师，本质还是做开发的。design部分只是一个新项目的开始前的工作而已。<br />
<br />
<span style="color: #0817ff;">我的感想：</span><br />
架构师这个概念比较虚。在国内，架构师其实就是有强烈基础倾向的开发者，他们有很大的热情来实验一个自己熟悉或者感兴趣的东西，从概念上这不是架构师。<br />
<br />
我很关注国外的一些架构师描述如何成为架构师。架构师其实最重要的是见识！要无倾向性的研究技术和需求。我很喜欢的印度的一位精神导师克里希姆纳提说过自由的前提是要学会聆听，而聆听就是在听的时候心理不要有任何反抗或者评论的去听，所有的思考都要留在听到以后。电影《教父》里面有一句台词我非常喜欢，不要仇恨你的敌人，因为那会影响你的判断力。我想这都是一个意思。如果想要成为架构师就要多聆听，然后思考，又清楚的判断力，这样选择才会是正确的！<br />
<img src ="http://www.blogjava.net/iamtin/aggbug/145365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2007-09-15 14:57 <a href="http://www.blogjava.net/iamtin/archive/2007/09/15/cto_design_project_and_how_to_be_architect.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐一个iTunes特效插件</title><link>http://www.blogjava.net/iamtin/archive/2007/08/03/134276.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Fri, 03 Aug 2007 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2007/08/03/134276.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/134276.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2007/08/03/134276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/134276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/134276.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/iamtin/archive/2007/08/03/134276.html'>阅读全文</a><img src ="http://www.blogjava.net/iamtin/aggbug/134276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2007-08-03 16:42 <a href="http://www.blogjava.net/iamtin/archive/2007/08/03/134276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>非常好的职业建议，来自Scott Adams</title><link>http://www.blogjava.net/iamtin/archive/2007/08/03/scott_adams_on_career.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Fri, 03 Aug 2007 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2007/08/03/scott_adams_on_career.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/134266.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2007/08/03/scott_adams_on_career.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/134266.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/134266.html</trackback:ping><description><![CDATA[<p>非常好的职业建议，来自Scott Adams<br>从一个非常喜欢的人的blog看到的，这个人是Tomcat的作者，现在是Apple的Object C开发者，兼重要的RoR作者，兼资深摄影师，兼Mac大fans，他叫James Duncan Davidson（<a href="http://duncandavidson.com/">http://duncandavidson.com/</a>）。<br>在一篇Blog讲到，Scott Adams说：<br>Everyone has at least a few areas in which they could be in the top 25% with some effort. In my case, I can draw better than most people, but I&#8217;m hardly an artist. And I&#8217;m not any funnier than the average standup comedian who never makes it big, but I&#8217;m funnier than most people. The magic is that few people can draw well and write jokes. It&#8217;s the combination of the two that makes what I do so rare. And when you add in my business background, suddenly I had a topic that few cartoonists could hope to understand without living it.<br>翻译一下就是说：<br>每个人都可以找到通过一些努力就可以跻身前25%的行业。例如我，我可以比大多数人画的好，但是我还够不上艺术家的水平。我也没有达到喜剧演员那种好笑的水平，但是我比大多数人好笑。魔法在于没什么人即画得好又会写笑话。所以混合一下我就很稀有了。加上我的商业知识背景，我突然发现我比其它的动画人更能理解它（商务）。</p>
<p>思考一下，其实就是当下流行的mush up。你混合一下你的长处，也许你就找到了你真正的长处，你的职业。<br>同时James又推荐了Stay Hungry，Stay Foolish，他说他37岁了依然觉得那是篇很好的文章。我很早之前也推荐过这篇文章，大家继续看看。</p>
<img src ="http://www.blogjava.net/iamtin/aggbug/134266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2007-08-03 16:06 <a href="http://www.blogjava.net/iamtin/archive/2007/08/03/scott_adams_on_career.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>yslow做网页性能评估不错</title><link>http://www.blogjava.net/iamtin/archive/2007/07/27/132687.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Fri, 27 Jul 2007 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2007/07/27/132687.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/132687.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2007/07/27/132687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/132687.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/132687.html</trackback:ping><description><![CDATA[http://developer.yahoo.com/yslow/<br><br>这是一个配合Firebug工作的firefox插件。能够对你访问的页面进行分析。<br>它可以：<br>
<ul class="topspace">
    <li>性能报告
    </li>
    <li>HTTP/HTML信息汇总
    </li>
    <li>列出页面中的组件	<br></li>
    <li>包含了<a href="http://jslint.com/">JSLint</a>
    </li>
</ul>
<br><br> <img src ="http://www.blogjava.net/iamtin/aggbug/132687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2007-07-27 09:33 <a href="http://www.blogjava.net/iamtin/archive/2007/07/27/132687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql命令行的\G参数很好用呀</title><link>http://www.blogjava.net/iamtin/archive/2007/07/20/use_slash_G_param_in_mysql_command_line.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Fri, 20 Jul 2007 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2007/07/20/use_slash_G_param_in_mysql_command_line.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/131473.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2007/07/20/use_slash_G_param_in_mysql_command_line.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/131473.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/131473.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在这里发现了一个技巧：http://rubyisawesome.com/2007/7/10/mysql-secrets-g-instead-of在Mysql的命令行工具里面给select查询加入一个\G参数。横向的表结构会转为使用纵向表结构输出，利于阅读。原先执行：use mysql; select * from user;Code highlighting produced by Actip...&nbsp;&nbsp;<a href='http://www.blogjava.net/iamtin/archive/2007/07/20/use_slash_G_param_in_mysql_command_line.html'>阅读全文</a><img src ="http://www.blogjava.net/iamtin/aggbug/131473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2007-07-20 14:41 <a href="http://www.blogjava.net/iamtin/archive/2007/07/20/use_slash_G_param_in_mysql_command_line.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在敏捷迭代过程中对架构设计的考虑</title><link>http://www.blogjava.net/iamtin/archive/2007/07/20/discuss_the_architecture_design_and_agile.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Fri, 20 Jul 2007 01:03:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2007/07/20/discuss_the_architecture_design_and_agile.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/131394.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2007/07/20/discuss_the_architecture_design_and_agile.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/131394.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/131394.html</trackback:ping><description><![CDATA[这是敏捷中国的一个讨论，我问了一下架构设计是否在敏捷迭代过程中有一席之地？大家产生了如下讨论。如果我的引用冒犯了当事人，请email我，我会及时修改的。我希望大家能够一起讨论这个topic。<br><br>我提出问题：<br>今天看到InfoQ的一篇文章：敏捷开发实践真的不利于架构设计吗？（<a title="http://www.infoq.com/cn/news/2007/07/AgileBadForDesign"  href="http://www.infoq.com/cn/news/2007/07/AgileBadForDesign"><a  href="http://www.infoq.com/cn/news/2007/07/" target="_blank" rel="nofollow">http://www.infoq.com/cn/news/2007/07/</a>AgileBadForDesign</a>） <br> 感觉内容非常好，我们的确应该思考一下如何平衡早期的宏观架构决定和按需求实现的微观设计，尤其在执行敏捷的实践的时候。 <br> 我这样想，大家可以一起讨论一下： <br> 架构是预先设计。实践证明过早的做决定容易造成过度设计。 <br> 但是将决定全部后移则会造成大量浪费性的重构（重构也有可能绕弯路，说明此时的重构使用不当），此时又凸显了架构设计的价值。 <br> 所以1方面架构师非常重要，另一方面从迭代的流程上也应该强调架构设计这个环节，要从宏观和微观两个方面保证设计。 <br> 我觉得本文这句话很重要"与传统开发技术相比，这些工具被不正确的使用是否更危险？" <br> 我想回答是肯定的，如果使用不正确那么更危险。 <br><br>Shane Duan这样回复：<br>我一向的观点是：如果一个人或小组不能正确的使用重构的工具和方法的话，这个人或小组也不可能做好什么前期的架构. <br> 在这种情况下，先做架构或后做重构对他们的效果是一样的.　只不过先做架构听上去好听一点罢了． <br> 就算我见识浅薄罢.　我见过的和信任的好的架构师都是会写代码，会做重构的.　所以在这种情况下，说＂架构师非常重要＂当然是正确的. <br><br>小刀回复：<br>关于敏捷的缺点的争论，InfoQ上前面还有两篇新闻： <br>一篇是有关敏捷度量：<a  href="http://www.infoq.com/cn/news/2007/07/Agile_Measurement" target="_blank" rel="nofollow">http://www.infoq.com/cn/news/2007/07/Agile_Measurement</a> <br>
<p>一篇也是有关架构的问题：<a  href="http://www.infoq.com/cn/news/2007/06/enough-agile-architecture" target="_blank" rel="nofollow">http://www.infoq.com/cn/news/2007/06/enough-agile-architecture</a> <br>后一篇是举了一个应用中出现的问题来反驳敏捷中"Just Enough"这种观点的，文中说： <br>"一个应用每天早上5点都会宕掉，同时宕掉的还有一个只用于查询的数据库。引发这个问题的地方——同时也是受害者——包括一个Web服务器，一个数据库服务器和<wbr>一个防火墙。如果有些人的第一个想法就是：如果你只是查询的话，那根本不会导致死锁啊！这些人就应该去看看Nygard到底发现了什么。" <br> </p>
感觉宏观架构与微观设计的平衡真的很重要，但是也很难。比如，在什么样的情况下，Big Design Up <br> Front有价值，而在什么情况下它又是无谓的浪费呢？ <br><br>lixiao回复：<br>
<p>其实敏捷并没有说非要丢掉前期设计，相对传统方法，敏捷方法更宽容，只是更多的实践情况是采用乐重构的方式获得系统设计的架构，我相信实践出真知。 <br> Mingle项目早期计划是在发布版本中使用Derby数据库的，这个算是前期系统架构吧，但是在early access release临近的时候， <br> 发现有些细节问题难以达到要求，于是迅速换成乐配置Mysql和postgres的方式。 <br> 相对于在前期花时间和精力来避免潜在得问题，我们采取的是为应对突发事件做充分的准备，TDD带来丰富的单元测试，为所有BUG、STORY和主要业务流程创建<wbr>自动化功能测试，几个CC <br> BUILD一起跑以保证兼容性，包括数据库、浏览器、运行环境（JRuby &amp; CRuby）等。 <br> 我相信这样做相对更多时间和精力的前期设计价值高得多乐。 <br></p>
<br>
<p>徐八插回复：<br>柔缺刚是攻而不克，刚缺柔是浪费力气... <br></p>
<br>莫映回复：<br>
<p>非常非常同意Shane的讲法，很有同感！ <br> </p>
<p>不只一次的听到人们对敏捷方法在不强调设计方面的疑虑，一些经典的讲法就是：好的架构不是重构出来的，敏捷开发对人有很高的要求，等等。 <br> </p>
其实，我觉得可能这是人们在接受新事物时很自然的一种惯性思维吧，可以理解。事实上，即便不用敏捷实践，先期的设计就能做的足够好了吗，恐怕也是因人而异的，菜
<p><wbr>鸟依然未必能做好设计。就像看到一些团队的leader，他们强调团队成员们一定要做严格的设计、思维实验、沙盘模拟，等等。但是，所有这些都不是建立在实践的<wbr>基础上，从这个角度而言，反而对开发者提出了*更高*的技能要求。而敏捷中很本质性的一个思路就是*迭代反馈*以及*推迟决策*，通过不断的反复实践来获得足够<wbr>的反馈，然后再脚踏实地的做设计决策，从这个角度而言，反而可以认为对人的要求*降低*了，因为不需要在开始的时候一下子设计的很*完美*。如果抓住敏捷中的这<wbr>两点，剩下的敏捷最佳实践，大概就是如何保证这两点能够很好达成的手段而已了，也许，以人们的聪明才智，还可以发挥一下，创造出属于自己的最佳实践来，呵呵。。<wbr>。 <br></p>
<br>
<p>我回复：</p>
<p>我非常认同*推迟决策*。这也是我问这个问题的原因。 <br> 我想如果所有的决策都在最后提出，那么也是缺乏设计，这个是与不敏捷造成的过渡设计向反的方向。 <br> 而实际，应该有一个这种的方案。也就是徐X说的"柔缺刚是攻而不克，刚缺柔是浪费力气"。 <br> 最近在看CrystalClear，这种体系有一个方针就是"借鉴"，吸取的是最佳实践。而且，每个团队应该通过项目回顾来不断的改进这个过程。所以， <br> 我觉得在每一论迭代的计划阶段有一个专门的架构讨论是非常好的，所以想知道大家是如何实践的。 <br> </p>
<p>Shane说的一点比较偏激，所谓用不好敏捷工具的人就设计不出好的架构，这个我非常不同意。因为Cockburn就说过程只是产生良好代码设计的一个 <br> 因素，不是全部因素。传统软件过程一样能够产生好的代码，这个我们不应该迷信。Gigix不是最近也在说中庸这个问题么？我觉得这个很辩证呀。转型阶段 <br> 的团队，可能还是需要考虑如何使用好敏捷过程，而不要造成用不好反而浪费资源的情况。 <br> </p>
<p>我和一位在中国旅行的德国程序员（中软）讨论这个问题的时候，他说我们认为过程是Tools，而中国人（指中软的同事）认为过程是God，当然他说这个 <br> 主要是针对CMM，但是对敏捷这种说法也一样行得通。 <br> </p>
例如，MVC应该不是TDD出来的，当然这种思想的形成过程可能是思维的迭代出来的。我是想说，我觉得预先架构的考量应该被加入敏捷的迭代过程中，毕竟 <br> 大家不能总是依赖排脑袋就来的东西。
<p> </p>
<br><br><img src ="http://www.blogjava.net/iamtin/aggbug/131394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2007-07-20 09:03 <a href="http://www.blogjava.net/iamtin/archive/2007/07/20/discuss_the_architecture_design_and_agile.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Slingshot开源加速离线/在线混合应用</title><link>http://www.blogjava.net/iamtin/archive/2007/07/18/slingshot-opensource-offline.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Wed, 18 Jul 2007 06:34:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2007/07/18/slingshot-opensource-offline.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/131067.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2007/07/18/slingshot-opensource-offline.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/131067.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/131067.html</trackback:ping><description><![CDATA[<p>13日，<a href="http://joyent.com/">Joyent</a>宣布基于GPL v2将<a href="http://joyent.com/developers/slingshot/">Slingshot</a>和<a href="http://joyent.com/connector">Connector</a>开源。Joyent Slingshot允许开发者将Rails应用程序部署为与桌面应用行为一致，可以在线或者离线（保持同步），可以拖拽，与所有其它桌面应用程序交互等。另外，Joyent还提供了Connector产品和一组可以与Joyent Slingshot协同工作的第三方应用程序。</p>
<p>Slingshot计划在今年4月份发布一个可以在Windows和Mac OS X上基本可以工作的版本（但是，似乎目前还没有发布）。Joyent称Slingshot让游戏换一种玩法。</p>
<p>Slingshot框架是轻量级且可自定义的，它让Ruby on Rails应用可以通过透明的数据同步离线运行。它不限制你如何运行应用程序及同步哪些数据，这些由开发者自己决定。这样，Slingshot可以让 Rails脱离浏览器。它可以打破Web应用和桌面应用的（通讯）壕沟，同时它没有失去Web应用在快速开发、部署和更新上的优势。最近Google Gears和Dojo offline也提供了这种能力，它们离线工作的方式虽然不同，但是希望给用户带来的体验是殊途同归的，这些技术希望用户能够将在线应用当作桌面应用来使用，让用户忘记&#8220;线&#8221;的存在。虽然David Heinemeier Hanson曾经开玩笑地认为离线只有在飞机上才有必要使用，但是从目前的技术走向上来看，这门技术无疑会被更多地开发和使用。Slingshot以此作为一个出发点，希望进一步消除离线／在线应用的区别，所以它提供了协同工作的机制，希望帮助开发者更轻松地开发混合应用程序。近期在平台竞争上火爆的Adobe的AIR、MS的Silverlight、Sun的JavaFX无不希望提供这样的方案，这片市场被称为RIA市场，其竞争已经如火如荼，而传统的HTML/CSS/Javascript方式也依然保持<a href="http://www.infoq.com/cn/news/2007/07/dhh-debates-ria-future">强劲的发展势头</a>，此时看到Slingshot这样的产品开发人员应该更加感觉兴奋，因为RIA的思路似乎依然在被不断扩展。</p>
<p>Slingshot这个产品关注的是数据的交换和同步。这其实和RIA技术中的异步通讯一样扮演者传输的重任，因为目前的RIA应用大都是以数据为中心的，所以在消除离线／在线应用时首先需要解决数据同步问题。Joyent在其Blog上介绍了<a href="http://joyeur.com/2007/07/13/connector-and-slingshot-open-sourced-and-free">Slingshot提供的数据同步的使用方法</a>：</p>
<blockquote style="BACKGROUND: #ccc">Joyent Slingshot是一个简洁的同步在线和离线数据的轻量级方案。作为一个开发者你可以提供一个透明的ActiveRecord传输层，允许简单的定义你的应用程序中哪些数据什么时候需要用什么方式进行同步。仅需要增加三十行左右的代码，你的Rails应用程序就可以从客户端向服务器同步数据。加上另外三十行代码你就可以使用基于文件的数据同步了。
<p>框架提供了可以扩展的拖拽抽象层。可以挂入到应用程序已有的导入／导出机制中，而不需要修改任何应用程序的代码。</p>
最后，它允许开发者方便的部署更新和迁移（migrations），无论用户离线了多久。</blockquote>
<p>Slingshot让开发者可以开发一种异步的CS应用程序，通过拖拽的方式同步数据，也可以通过文件的方式同步。并且从工作环境上Slingshot也提供了比较宽松的平台，Joyent在他的Blog中<a href="http://joyeur.com/2007/07/13/connector-and-slingshot-open-sourced-and-free">这样描述它的运行方式</a>：</p>
<blockquote style="BACKGROUND: #ccc">Slingshot如何工作呢？我们已经从Slingshot中移除了对操作系统二进制文件的依赖和冲突。进一步说，Slingshot允许开发者自己定义运行环境，安装gems、plugins、二进制库或者其它，我们都可以处理。Slingshot就像一个让Rails应用程序运行的虚拟机。</blockquote>
<p>总而言之，使用Joyent Slingshot你可以：</p>
<ul>
    <li>创建混合的Web/桌面应用程序
    <li>同步在线和离线数据
    <li>在线和离线应用程序中使用相同的代码
    <li>轻松的部署和更新你的应用程序
    <li>在应用程序中拖拽导入／导出 </li>
</ul>
<p>Rubyinside在<a href="http://www.rubyinside.com/joyent-slingshot-" and-connector-go-open-source-556.html="">报道Slingshot开源的时候</a>，将其比喻为37signals将BaseCamp产品开源，可见其重要程度。Slingshot的创新性在未来肯定会激发一些混合RIA应用的产生，让我们一起关注这个未来的技术吧。</p>
<img src ="http://www.blogjava.net/iamtin/aggbug/131067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2007-07-18 14:34 <a href="http://www.blogjava.net/iamtin/archive/2007/07/18/slingshot-opensource-offline.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SAAS(软件即服务)暗流即将爆发？</title><link>http://www.blogjava.net/iamtin/archive/2007/07/18/software-as-a-service-debate.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Wed, 18 Jul 2007 06:32:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2007/07/18/software-as-a-service-debate.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/131066.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2007/07/18/software-as-a-service-debate.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/131066.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/131066.html</trackback:ping><description><![CDATA[<p>本文已经发表于InfoQ中文（<a title=SAAS(软件即服务)暗流即将爆发？ href="http://www.infoq.com/cn/news/2007/07/software-as-a-service-debate">http://www.infoq.com/cn/news/2007/07/software-as-a-service-debate</a>）<br><br>JavaEye的站长Robbin Fan在<a href="http://robbin.javaeye.com/">他的博客</a>中对SAAS(软件即服务)进行了一番讨论，他总结了目前常见的一些SAAS应用，并且总结了这些应用的特点，展望了SAAS的发展方向。</p>
<p>2005年，David Heinemeier Hansson将自己在项目中使用的基于Ruby的开发框架剥离并开源，从此世界上有了RoR（Ruby on Rails）的响亮名号。很快，Rails在其它语言中也架设了自己的高速轨道，从此Rails思想处处开花，受到了广大开发者的拥护，这是Rails的敏捷本质决定的。随着RoR闪现在开发者眼前的还有Rails背后的<a href="http://www.37signals.com/">公司37signals</a>，这是一家位于芝加哥的创业型小公司，虽然他们的员工目前还是个位数，但是开发出的产品却有超过100万人在使用。</p>
<p><a href="http://www.javaeye.com/">JavaEye网站</a>站长Robbin Fan在他的博客中曾<a href="http://www.javaeye.com/topic/84164">对37signals的主要产品做过总结</a>:</p>
<blockquote style="BACKGROUND: #ccc">37signals公司主要提供基于互联网的小型商业软件租用服务：有提供项目管理和团队写作的BaseCamp（这也是导致RoR诞生的产品)；有小型客户关系管理系统Highrise；有即时团队在线交流系统Campfire；有信息组织、日历、工作安排软件Backpack等等。 <br><br>用户在线注册37signals的系统，在线使用，每个月交纳12美元到149美元不等的月租费。37signals的在线软件租用服务对于小型商业公司具有很大的吸引力：功能好用，操作简单，价格便宜，无需维护，注册即可以使用。 </blockquote>
<p>37signals的这种商业模式称为SAAS（software as a service，软件即服务）。这种模式下，软件提供商将软件部署在自己的Web服务器上，而客户则租用这些服务。由于用户不需要自己部署和维护服务器，所以减少了很多额外的支出。这种方式非常适合中小型企业，因为他们可以按照时间和功能付费，价格更实惠，完全可以根据自身的需求灵活的更换服务内容。</p>
<p>其实SAAS这个概念最早是大型软件提供商提出的，例如IBM、Oracle、微软、SAP等，他们都将服务的重点放在解决方案上，负责这些方案的设计和实施，但是由于规模和成本问题，能够享用他们服务的群体仅限于比较大的团体和公司。而37singnals提供的这些服务却更加轻便，就像平常所使用的办公软件一样平常，但是通过良好的设计却迅速吸引了大量用户。</p>
<p>SAAS概念在上世纪90年代曾经以ASP（Application Service Provider，应用服务提供商）为名有过大量的尝试，当时这个概念被炒得火热，大有代替桌面软件的架势，但最后却是无疾而终，被证明是一种技术泡沫（《IT大败局》一书中专门有一章阐述了ASP的失败）。随着Web 2.0以用户为本理念的火爆，搭着体验经济的快车，这些轻量化的SAAS服务在用户的尝试心态下用实际的功能吸引了他们，酝酿成一股服务的暗流。国内也有37signals的模仿者，如<a href="http://www.everydo.com/">易度</a>，它也提供类似Backpack、BaseCamp的团队协作和中小企业项目管理平台，从他们的案例看，用户还是比较认可的。</p>
<p>那么现在的轻量级SAAS商业模式与传统的套装软件的优势是什么呢？Robbin做了如下<a href="http://www.javaeye.com/topic/84164">总结</a>:</p>
<blockquote style="BACKGROUND: #ccc">对于软件供应商来说：
<li>短开发周期，低成本，快速用户反馈；
<li>相比卖套装软件来说，无需建设庞大的销售渠道，可以充分利用互联网长尾效应；
<li>软件技术支持的成本大幅度降低； <br><br>对于客户来说：
<li>购买软件的风险大大降低了
<li>购买软件的成本大大降低了
<li>立即可用的软件 </li>
</blockquote>
<p>SAAS的模式具有这些优势，但是要实现它还面临很多的挑战。一位叫做Neora的网友借用阿里软件分析了<a href="http://www.javaeye.com/topic/91247">SAAS实现上的一些要点</a>:</p>
<blockquote style="BACKGROUND: #ccc">首先面向自己最熟悉的领域提供服务、品牌信任度、中立地位、信息安全感、营销策略、技术、客户群体等。</blockquote>
<p>关于SAAS的未来，Robbin认为它会让互联网应用和企业应用的界线变得越来越模糊，他展望到：</p>
<blockquote style="BACKGROUND: #ccc">企业应用的开发人员会越来越多被要求从事SAAS类型应用的开发当中来。在这个领域，不是超级复杂的企业应用游戏规则，而是互联网游戏规则：快速开发、快速反馈、简单架构、小团队和随需应变等。因此解决传统超级复杂问题的编程工具利器也许不那么有效了，在这个新的领域，需要的是轻量级的超级快速编程工具利器。 </blockquote>
<p>SAAS目前的成功SAAS案例主要集中在CRM项目和在线Office上面，例如<a href="http://www.salesforce.com/">Salesforce</a>、<a href="http://www.800crm.com/">800CRM</a>、<a href="https://www.google.com/a/">Google Apps</a>、<a href="http://www.zoho.com/">Zoho</a>等等。但是小型团队如37singnals的轻量级产品也逐渐开花结果，这种轻量化SAAS的发展趋势给广大投身于Web 2.0热潮的中小型开发团队提供了另外一个发展方向，即可以通过服务租赁代替简单地吸引眼球。在新兴开发平台上也有轻量SAAS的很大发展空间，例如<a href="http://www.infoq.com/cn/news/2007/07/saas-iphone">iPhone</a>就很有可能是下一个激烈竞争的战场（我们可以看到在37singnals的官方Blog上面一直非常关注iPhone平台的开发），SAAS的暗流也许即将爆发。</p>
<img src ="http://www.blogjava.net/iamtin/aggbug/131066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2007-07-18 14:32 <a href="http://www.blogjava.net/iamtin/archive/2007/07/18/software-as-a-service-debate.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分享一下本人常用的Firefox插件</title><link>http://www.blogjava.net/iamtin/archive/2007/06/06/122321.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Wed, 06 Jun 2007 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2007/06/06/122321.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/122321.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2007/06/06/122321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/122321.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/122321.html</trackback:ping><description><![CDATA[<pre wrap="">我突然想大家一起共享一下FF插件吧，这两天从朋友这里汇聚了不少好插件了：<br>我安装的列表，大家交流一下：<br>1、DevBoi和Prototype JS Reference，就是一个帮助。<br>2、Firebug 1.05：JS调试天王。<br>3、ScrapBook：很棒的网页收藏软件。本以为Linux下没有，所以不敢迁移。没想<br>到听清风、nicholas和ZoomQuiet这些仙人都在用，赶快用上，发现和我在Win下用的<br>CyberArticale和MyBase一样好用，哈哈。<br>4、Tab Mix Plus：让Firefox有Maxthon一样的记录Tab的功能，非常适合经常阅读<br>文章的懒人。<br>5、Web Developer：这个相对于Firebug比较偏重于Dom和CSS访问，方便调试样<br>式。目前处于禁用状态，因为同时开他和Firebug可不怎么好玩。<br>6、ColorfulTabs：从wangwei8那里看到的，这类东西我最喜欢，五颜六色的Tabs。<br>7、Cache Status：和Ctrl+F5告别，超级爽。调试Ajax应用非常好。</pre><img src ="http://www.blogjava.net/iamtin/aggbug/122321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2007-06-06 11:12 <a href="http://www.blogjava.net/iamtin/archive/2007/06/06/122321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于RoR学习一点胡言乱语</title><link>http://www.blogjava.net/iamtin/archive/2006/08/30/66639.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Wed, 30 Aug 2006 04:39:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2006/08/30/66639.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/66639.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2006/08/30/66639.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/66639.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/66639.html</trackback:ping><description><![CDATA[由于失业后家中又有人病了，还有很多乱七八糟的事忙，反正没怎么写也没怎么看程序，很惭愧！有朋友说不厚道，赖我，我不厚。这两天看《应用Rails进行敏捷Web开发》，RoR和去年刚看的时候感觉一样，很舒服，现在可能对Java和Ruby的了解都比以前深一些了，看这本书会有些想法。不过没时间纪录，头脑里也乱七八糟的，我只能说是胡言乱语。这本不是什么文章，这是我的一个工作习惯，只要开电脑就开个Notepad记录工作情况，是个流水账，由于Blog过于冷清，把它贴出来，别拍砖了，我已经蔫了:Q<br /><br />使用Eclipse 3.2 + RadRails 0.7学习RoR也是很方便的，可以利用里面的Console开发，不用总在windows cmd(如果Mac、Linux、Unix也类似了)里面，而是一个IDE，效率提升是显而易见的。<br />Tips：<br />在Rails Navigator里面选择你的项目后，Generators窗口就会显示出可以自动生成的东西，这个其实相当于ruby script/generate脚本下接受的各个参数对应的工作，比较方便。选好了，后面的空处可以加上其它参数，本质上与自己敲命令差不多:D<br />注意Terminal的使用，直接在窗口里面输入是不可以的（我还以为键盘坏了），要在窗口下放的那一行里面输入，然后回车就可以了，有点别扭:D，但是有了Terminal以后还是方便多了。<br />Ruby的ActiveRecord真的非常好用<br />数据验证放到DomainModel里面是很惬意的，远比放到离它很远的Controler里面好，而且安全的多，不会遇到验证难以复用的问题。<br />学习RoR要复习好英语。因为Ruby的命名习惯，方法名都用类似自然语言加_的方式命名，所以如果英文很好经常是很自然就理解了，不过也同时会发生很多咬文嚼字的地方，所以请复习好你的英语。<br />RoR的架构很有趣，所有的东西都有它的位置，并且大部分地方都埋下足够的钩子，很多东西都可以应用类似AOP的方式拦截处理。就是说你需要增加的逻辑都可以马上找到应该去修改的地方，省心。应该说动态语言的Closure使AOP容易了。<br />rhtml这东西让你彻底恢复了使用不纯粹的模版语言的快感，程序员和美工应该共享这种快感的。比起JSP、ASP，它还有很好的layout功能，这有点像sitemesh这样的decorators。所以，JSP这种可以有逻辑的Servlet包装完全可以扩展为rhtml一样灵活的东西，关键是要把应该提供的功能扩展到够用、好用。<br />经过把玩，感觉《应用Rails进行敏捷Web开发》这本书的节奏很不错，缺点可能是第一版把Test部分到迭代的外面了，如果一起进行可能就更Cool了，TDD是很有用的敏捷方法。<br />Ruby的Closures和代码风格让RoR的开发更接近自然语言。<img src ="http://www.blogjava.net/iamtin/aggbug/66639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2006-08-30 12:39 <a href="http://www.blogjava.net/iamtin/archive/2006/08/30/66639.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对google个性主页的拖拽效果的js的完整注释</title><link>http://www.blogjava.net/iamtin/archive/2006/04/27/43668.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Thu, 27 Apr 2006 14:40:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2006/04/27/43668.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/43668.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2006/04/27/43668.html#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/43668.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/43668.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这两天太忙了，没时间写Blog，业余时间又扒了一次google的拖拽，对比了netvibes的，差不多，让后就写了个注释，顺便学习。google用了混淆，js里面的命名比较晕。我花了些时间把他们翻译成容易看懂的命名，并且作了注释，希望对大家有帮助。可以这里下载我的例子：http://www.blogjava.net/Files/iamtin/google_drag.rar							...&nbsp;&nbsp;<a href='http://www.blogjava.net/iamtin/archive/2006/04/27/43668.html'>阅读全文</a><img src ="http://www.blogjava.net/iamtin/aggbug/43668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2006-04-27 22:40 <a href="http://www.blogjava.net/iamtin/archive/2006/04/27/43668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>白天纽约黑夜巴黎</title><link>http://www.blogjava.net/iamtin/archive/2006/02/28/32818.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Tue, 28 Feb 2006 03:26:00 GMT</pubDate><guid>http://www.blogjava.net/iamtin/archive/2006/02/28/32818.html</guid><wfw:comment>http://www.blogjava.net/iamtin/comments/32818.html</wfw:comment><comments>http://www.blogjava.net/iamtin/archive/2006/02/28/32818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamtin/comments/commentRss/32818.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamtin/services/trackbacks/32818.html</trackback:ping><description><![CDATA[【王文华／文】 <BR>
<P>我在赶些什么？我耗尽青春用尽全力，拼命追求身外之物，结果我真的比别人有钱、有名吗？更重要的，我真的因此而快乐吗？远方有广阔的地平线，为何我还在原地摇过&shy;时的呼拉圈？ <BR>
<P>纽约和巴黎，代表了我人生的两个面向。纽约是白天，巴黎是黑夜。纽约是前半生，巴黎是下半场。 <BR>
<P>三十五岁之前，我认定纽约是世上最棒的城市。我在加州念研究所，毕业后迫不及待地去纽约工作。一做五年，快乐似神仙。我爱纽约的原因跟很多人一样：她是二十世纪&shy;以来世界文化的中心。丰富、方便。靠着地铁和出租车，你可以穿越时间，前后各跑数百年。人类最新和最旧、最好和最坏的东西，纽约都看得见。 <BR>
<P>所以在纽约时，我把握每分每秒去体会。白天，我在金融机构做事，一天十小时。晚上下了班，去NYU学电影，一坐四小时。在那二十多岁的年纪，忙碌是唯一有意义的&shy;生活方式。活着，就是要把自己榨干，把自己居住的城市，内外翻转过来。 <BR>
<P>这种想法并不是到纽约才有的。其实从小开始，台湾人就过着纽约生活。纽约生活，充满新教徒的打拚精神和资本主义的求胜意志。相信人要借着不断努力，克服万难、打&shy;败竞争。活着的目的，是更大、更多、更富裕、更有名。权力与财富，是纽约人的两个上帝。而能帮你走进天堂的鞋，就是事业、事业、事业。 <BR>
<P>在这种弱肉强食的生活方式，为了保持领先，每个人都在赶时间、抢资源。进了电梯，明明已经按了楼层的钮，那灯也亮了，偏偏还要再按几下，彷佛这样就可以快一点。&shy;出了公司，明明已经下班了，却还要不停讲手机，摇控每一个环节。在纽约，为达目的，可以不择手段，甚至赶尽杀绝。在纽约，没有坏人，只有失败者。 <BR>
<P>台湾，是不是也变成这样？ <BR>
<P>每一件事，都变成工作。上班当然是工作，下班后的应酬也是工作。有人谈恋爱是在工作，甚至到酒店喝酒、KTV狂欢，脸上都杀气腾腾，准备拚个你死我活。 <BR>
<P>我曾热烈拥抱这种生活，并着迷于这种因为烧烤成功而冒出的焦虑。这种焦虑让我坐在椅子边缘，以便迅速地跳起来闪躲明枪暗箭。这种警觉性让我练就了酒量和胆量、抗&shy;压性和厚脸皮。但也养成了偏执和倔强、优越感和势利眼。在纽约时我深信：能在这里活下来的，都是可敬的对手。黯然离开的，统统是输家。人生任何事，绝对要坚持到&shy;底。半途而废的，必定有隐疾。在这不睡的城市，每天我醒来，带着人定胜天的活力，跟着法兰克辛纳屈唱〈纽约?纽约〉：「如果你能在纽约成功，你可以在任何地方成&shy;功！」是的，在纽约，现代的罗马竞技场，我要和别人，以及自己，比出高低。 <BR>
<P>这套想法，在我三十五岁以后，慢慢改变。 <BR>
<P>第一件动摇我想法的，是父亲的过世。我父亲一生奉公守法、与人为善。毫无不良嗜好，身体健康地像城堡。七十二岁时，他得了癌症、引发中风，经历了所有的痛苦和羞&shy;辱。他一生辛勤工作、努力存钱、坚信现在的苦可以换得更好的明天。我们也相信一分耕耘、一分收获，用在纽约拚事业的精神照顾他。但两年的治疗兵败如山倒，最后他&shy;还是走了。父亲逝世的那天，我的价值系统崩溃了。我一路走来引以为傲的「纽约精神」，没想到这么脆弱。 <BR>
<P>不止在病床，也在职场。当我在企业越爬越高，才发现「资本主义」在职场中也未必灵验。上过班的都知道，很少公司真的是「开放市场」、「公平竞争」。大部分的同事&shy;都觉得你不是朋友、就是敌人。职场上伟大的，未必会成功。成功的，有时很渺小。很多人一辈子为公司鞠躬尽瘁，最后得到一支纪念笔。那些卷款潜逃的，反而变成传奇&shy;。 <BR>
<P>慢慢的，我体会到：世上有一种比「善有善报、恶有恶报」更高、更复杂的公平。人生有另一种比「功成名就」更幽微、更持久的乐趣。那是冲冲冲的美式资本主义，所无&shy;法解释的。 <BR>
<P>我能在哪里找到那种公平和乐趣呢？我想过西藏、不丹、非洲、纽西兰。然后，我注意到法国。 <BR>
<P>住纽约时，法国是嘲讽的对象。身为经济、科技、和军事强权的美国，谈起法国总是忍不住调侃一番。法国是没落的贵族，值得崇拜的人都已作古。法国人傲慢，高税率让&shy;每个人都很慵懒。动不动就罢工，连酒庄主人都要走上街头。 <BR>
<P>搬回台湾后，普罗旺斯、托斯卡尼突然流行。我看了弗朗西斯?梅思的《美丽的托斯卡尼》，其中一句话打动了我：「在加州，时间像呼拉圈。我扭个不停，却停在原地。&shy;在托斯卡尼，我可以在地中海的阳光下，提着一篮李子，逍遥地走一整天。」 <BR>
<P>是啊！我在赶些什么？我耗尽青春用尽全力，拚命追求身外之物，结果我真的比别人有钱、有名吗？更重要的，我真的因此而快乐吗？远方有广阔的地平线，为何我还在原&shy;地摇过时的呼拉圈？ <BR>
<P>当我重新学习法国，我发现法国和美国代表两种截然不同的生活方式。美国人追求人定胜天，凡事要逆流而上。法国人讲究和平共存，凡事顺势而为。纽约有很多一百层的&shy;摩天大楼，巴黎的房子都是三百年的古迹。纽约不断创新，巴黎永远有怀旧的气息。巴黎人在咖啡厅聊天，纽约人在咖啡厅用计算机。纽约有人潮，巴黎有味道。纽约有钞&shy;票，巴黎有蛋糕。 <BR>
<P>不论是政府或个人，法国人都把精神投注在食、衣、住、行等「身内之物」。就让美国去做老大哥吧。要征服太空、要打伊拉克、要调高利率、要发明新科技，都随他去。&shy;法国人甘愿偏安大西洋，抽烟、喝酒、看足球、搞时尚。当美国人忙出了胃溃疡，法国人又吃了一罐鹅肝酱。 <BR>
<P>讲到吃，法国有三百种起司、光是波尔多就有五十七个酒的产区。晚上六点朝咖啡厅门口一坐，一杯红酒就可以聊三个小时。九点再去吃晚餐，一直吃到隔天凌晨。他们在&shy;吃上所花的时间，跟我们上班时数一样。但讽刺的是：他们没有「All <BR>You Can Eat」。 <BR>
<P>吃很重要，但也要会挑时间，朋友介绍我去试一家法国餐厅，提醒我他们礼拜二、四晚上休息。「为什么？」我问。他说：「因为主厨要回家看足球。」 <BR>
<P>聪明的主厨懂法律。法国法律规定一周工作最多三十五小时，大部分的人一年有五周的假期。而美国人把加班当作自己有价值的表示，度假时还拿着手机回E-mail。&shy;法国人比美国人会玩。每年六月的巴黎音乐节，从午后到深夜，几百场露天音乐会在各处同时举行，人多到地铁都暂停收费。每年十月的「白夜」，平日入夜就打烊的店面&shy;，彻夜营业到清晨七点。每年夏天，巴黎市政府在塞纳-马恩省河右岸布置了三段、总长一．八公里的人工海滩。细砂、吊床、躺椅、棕榈树，自然海滩有的景致这里都有&shy;，让没有钱去海边度假的民众，也可以享受到海滩风光。 <BR>
<P>当然，法国这么深厚的文化，不可能只从吃喝玩乐而来。美国人读书，为了考证照。法国人读书，为了搞情调。每年十月的读书节，大城市的火车站内，民众轮流上台朗诵&shy;诗句。书店营业到天明，整晚有现场演奏的乐曲。「美食书展」选在铜臭味最重的证券交易所举办。小镇书展的书直接「长」在树上，读者必须爬到树上，把书摘下来品尝&shy;。 <BR>
<P>一直跟着美国走的台湾人，会心动吗？ <BR>
<P>我心动了。十一月我到巴黎，一位法国朋友来接待我。临走前我问他：「明天你要干嘛？」 <BR>
<P>「我要去银行。」 <BR>
<P>「然后呢？」我问。 <BR>
<P>「我不懂你的意思......」 <BR>
<P>对我来说，「去银行」是吃完午饭后跑去办的小事。对法国人来说，这是他一天全部的行程。法国人总是专心而缓慢的，每天把一件小事做好。 <BR>
<P>这样的生活，对美国或台湾人来说，实在是太颓废了。的确也是。法国失业率接近10%，高税率让雇主宁愿打烊休息，免得帮员工缴税。巴黎闹区纸醉金迷，但郊区的少&shy;数民族却没有工作机会。这些都是黑暗面，但对于每日被强光烤焦的台湾人，阴暗也许提供了喘息空间。生命的终点都一样，有钱人的丧礼只是比较多人上香。不断的追赶&shy;只是提前冲向谢幕，为什么不把时间花在慢慢为生命暖场？你不需要一辈子鞠躬尽瘁、死而后已。你可以偶尔伸伸懒腰、安步当车。 <BR>
<P>我从巴黎回来，台北并没有改变。关了两周的手机再度响起，一通电话找不到我的人会连续狂call十通。和朋友见面，他很关心地问我：「好了，你现在工作也辞了、&shy;欧洲也去了，接下来有什么projects？」 <BR>
<P>「Projects」？多么纽约的字眼。 <BR>
<P>我真想说：「好好生活，不就是人生最大的project？」但我知道在熙来攘往的台北街头，在不到四十岁的年纪，这样说太矫情了。况且，我今天之所以有钱有闲享&shy;受法式生活，不也正因为我曾在美式生活中得到很多利益？我仍热爱工作、热爱纽约，但已不用像二十岁时一样亦步亦趋、寸步不离。 <BR>
<P>所以我说：「我还是会早起，白天努力写作。但到了晚上，我想关掉手机。」 <BR>
<P>世界少了我，其实无所谓。但我少了我，还剩什么？ <BR>
<P>他笑一笑：「你这是用纽约来过白天，用巴黎来过黑夜。」 <BR>...</P><img src ="http://www.blogjava.net/iamtin/aggbug/32818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamtin/" target="_blank">Tin</a> 2006-02-28 11:26 <a href="http://www.blogjava.net/iamtin/archive/2006/02/28/32818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>