Web开发大全:Ruby on Rails版

Rails的创造者David Heinemeier Hansson这样说:“我从来不会为了学一种语言而学一种语言。我学习新的编程语言一定是要用它来做点什么事。”同样的道理,很少有人只是为了学习漂亮的设计而开始接触Rails,大部分人──就像我一样──是抱着一个功利的念头开始自己的铁道之旅的。“我要做一个网站,听说有个叫Ruby on Rails的东西做网站又快又好,我得看看这是个什么玩意。”──大抵是这样的念头。

所以,Rails的学习者们真正要的不是深入理解Rails,而是又快又好地做出自己设想中的网站。

这年头的网站创业者们想要的不是“Ruby on Rails做的网站”,而是一个具有各种2.0特质的、很酷的网站。“什么mashup啦、widget啦、AJAX啦、REST啦,能用的全给它用上。你要是URL里还带一问号啊,你都不好意思跟人打招呼。每个页面放一地图,甭管有事没事都往地图上标记,倍儿有面子。这网站就够牛了吧?那是基本要求,还得在多种环境部署,高性能的服务器环境一个脚本就得部署好。你想啊,那些做一个功能都只花15分钟的程序员,根本没心思用俩小时做一次部署。所以我们的要求是:不但要酷,还要敏捷。”程序员们面临的大概就是这样的挑战。

诚然,作为入门手册的《Web开发敏捷之道》(Agile Web Development with Rails)在实用性方面做得已经不错了,一位初学者可以跟着那本书做出一个像模像样的玩具网站,同时对Rails的方方面面有个大致的认识。不过当他们尝试动手做自己真正想要的那个网站时,就会突然发现面前赫然立着两只拦路虎:第一,真正的网站不是玩具,有太多真实世界里的常见问题他们不知该如何解决;第二,Rails一向秉承“做一件事并且做好”的Unix设计传统,这也就意味着要做一些真实有用的功能往往需要很多Rails之外的相关知识。这可真是件令人沮丧的事情:花了好几天工夫来学习Rails,自以为已经习得一身好武艺,一出山门却发现面前摆着那么多难题不会解决,甚至想翻书都不知该从何翻起。

简而言之,他们没有套路。

这本《Web开发大全(RoR版)》就是帮这些踌躇满志的网站初哥们解决套路问题的。这几位实战经验丰富的作者各出高招,简单介绍Rails之后,立即把用户管理、内容展示、文件上传、搜索、RSS等等网站“家常菜”给抽丝剥茧地细细解说一遍,再把各种常见的mashup逐一介绍,尤其是为地图服务这个重要的2.0元素单辟章节(值得一提的是,撰写这一章的高昂乃是中科院地理所的博士,从他的专业角度来介绍互联网上的地图服务,可谓高屋建瓴鞭辟入里,不可不读)。讲完开发的内容,部署工作也没有被忽视,第十章“部署演练”介绍了各种曾经或正在或即将流行的Rails应用部署方案,特别是关于JRuby on Rails的介绍引人注目:这是将Ruby on Rails和J2EE两个世界结合起来的纽带,ThoughtWorks的第一个商业产品Mingle就采用了这种部署方式。

这是一本有套路的书。看完这书的读者应该能学到网站开发的套路。

最后我还得夸赞一下这几位作者。从中国有Ruby on Rails社区开始,这几位就个顶个的是社区里的积极分子。他们为Rails在中国的发展起了重要的推动作用。有骆古道这样远赴重洋心系祖国的爱国程序员,有王大力这样组织和掺合全国各地各种技术活动的热心大叔,有董斌、苏锐这样长年在互联网一线奋战的技术中坚,有黄翀、高昂这样醉心技术深度广度俱佳的有为青年,这么一群靠谱的人和博文视点这么一家靠谱的出版商一起创作的作品,理当是一本靠谱的书。

所以,怀揣梦想的Rails爱好者们,拿起这本靠谱的书,上路吧。

大师级著作

December 28th, 2007

本书的审阅者们给我的手稿提供了清晰而又及时的反馈,为此我要感谢Erich Gamma、Steve Metsker、Diomidis Spinellis、Tom deMarco、Michael Feathers、Doug Lea、Brad Abrams、Cliff Click、Pekka Abrahamson、Gregor Hohpe和Michele Marchesi。

什么样的作者能请得动这样一批审阅者?什么样的书当得起这些人来审阅?

InfoQ的书评

Kent Beck的新书《实现模式》是一本关于如何撰写Java代码的书。本书中的模式,是基于Kent对现存代码的阅读以及他自己的编程习惯而形成的。这些模式来自他早年使用Smalltalk模式通过代码与其他开发人员进行沟通的过程。它们的级别相对设计模式较低,与Larman提出的GRASP模式处于同一粒度。本书中的模式试图为如何撰写大家都能看得懂的代码提供一个清晰明确的视角,并告诉你这些代码如何为人的需要和降低成本的需求提供保障。