在 Forge - 书籍综述

作者:Reuven M. Lerner

还记得网络吗? 你知道的,那种互联网技术的组合,本应让纸张过时? 嗯,报纸和杂志出版商确实处境艰难,许多人(包括我)现在在线阅读我们以前在纸上阅读的内容。而且,特别是对于 Web 开发人员而言,Web 提供了丰富的宝藏信息,从博客和文章到论坛和 IRC 频道。

根据网上大量可用的内容以及印刷媒体报道的消亡,你可能会认为与 Web 相关的书籍的数量和质量近年来也有所下降。 但据我所知,事实恰恰相反。 我继续看到许多来自不同出版商的高质量书籍,主题相关且有趣。 更棒的是,我发现这些书中的许多在我日常工作中都很有用,让我对我已经了解的技术有了新的视角,并教给我许多以前不知道的东西。

本月,我将介绍最近摆在我办公桌上的一些书籍,我发现这些书最有帮助且最有趣。 这显然是一个有偏差的样本。 在过去的几年里,我的大部分工作都与 Ruby on Rails、PostgreSQL 和 JavaScript 有关,并且还关注如何使网站更明确地“社交化”,参与者之间有大量的互动。

Ruby on Rails

我已经使用 Ruby on Rails 多年了,并且仍然认为它是一股清新的空气。 在经历了多年必须直接与数据库打交道、编写显式 SQL 查询的日子之后,现在能够从对象级别而不是行和列级别来思考问题,真是令人愉快。 诚然,Rails 存在一些性能问题,但是当你想快速轻松地创建一个 Web 应用程序时,没有其他任何东西能与之媲美。(实际上,这并不完全正确。 如果我没有被 Rails 迷住,我今天可能会使用 Django。 而且,还有一些类似 Rails 的应用程序框架,包括 CakePHP 和 Catalyst,它们都有各自的粉丝。)

现在经典的、面向 Rails 初学者的标准教材是 Dave Thomas 和 David Heinemeier Hansson 编写,Pragmatic Programmers 出版的 Agile Web Development with Ruby on Rails 第二版(ISBN 978-0977616633)。 在你读到这篇专栏文章时,这个版本应该会被第三版取代,所以我的某些评论可能不再相关。 但是,我对这本书的第一版和第二版总体上持有复杂的情感。 一方面,它成功地激发了我对 Rails 的兴趣,并在我刚开始使用它时为我提供了一个有用的介绍。 同时,我一直在寻找一本风格略有不同的入门书,可以推荐给 Rails 初学者。

一本特别出色的 Rails 入门书是 Patrick Lenz 编写的 Simply Rails 2(ISBN 978-0980455205)。 本书介绍了大量关键的 Rails 功能,包括 MVC 架构、关联、测试、Ajax、Prototype 和 script.aculo.us 的一些元素,甚至包括使用 ruby-debug 等工具进行调试。 因为 Lenz 的目标是在他的书中涵盖更少的内容,所以他设法制作了一个比 Agile Web Development with Ruby on Rails 更有效的教程。 频繁穿插的代码示例、屏幕截图和图表使这本书特别容易理解。

一旦你完成了 Simply Rails 2,你将需要一本参考指南,更深入地描述 Rails 架构,并提供更全面的功能列表。 Obie Fernandez 的著作 The Rails Way(ISBN 978-0321445612)是一本出色、详细且内容丰富的资源,尽管我认为对于许多新手来说,它过早地提及(和强调)了路由和 RESTful 架构。 这可能是可以接受的,因为这本书的目的不是作为教程,而是作为参考和高级指南。 因此,尽管我强烈推荐这本书,并且每周多次将其用作我自己的工作的参考,但它不能作为入门或教程。

The Rails Way 以及彼此而言,很好的补充是来自两个不同出版商的三本名称相似的书籍:Rob Orsini 编写的 Rails Cookbook(ISBN 978-0596527310); Chad Fowler 编写的 Rails Recipes(ISBN 978-0977616602); 以及 Mike Clark 编写的 Advanced Rails Recipes(ISBN 978-0978739225)。 这些书都遵循了现在标准的格式,包含许多简短的章节,每个章节都解决开发人员可能遇到的常见问题。 这些书中的每一本都包含许多食谱,这些食谱给了我灵感,即使我没有直接使用这些食谱,我也发现它们是有用的思考素材。 我也不确定第三本书是否真的像它的标题所暗示的那样高级。

最后,Ezra Zygmuntowicz、Bruce Tate 和 Clinton Begin 编写的 Deploying Rails Applications(ISBN 978-0978739201)这本书提供了大量关于如何将 Rails 应用程序发布给公众的实用建议。 作者指导你使用版本控制(使用 Subversion)、配置一个或多个生产服务器、使用 Capistrano 部署和识别瓶颈。 这本书假定你正在使用 MySQL,这意味着使用 PostgreSQL(像我一样)的人可以忽略其中的一些建议。 还有一个关于 Windows 部署的章节,我希望本专栏的大多数读者都可以忽略。

作者假定你想使用 Mongrel(用于动态、Ruby 生成的内容)和 nginx(用于静态内容)的组合来部署你的应用程序,同时忽略了诸如 Phusion(又名 mod_rails)之类的可能性,这是一个 Apache 模块,一些网站一直在成功使用。 话又说回来,Zygmuntowicz 是 Engine Yard 的创始人,这是一家 Rails 托管公司,一直非常成功,因此跟随他的脚步可能是明智的。 无论作者建议的具体实施选择如何,本书都有助于将 Rails 部署的各个方面都纳入考虑范围,对于计划将其应用程序公开的人来说,这是一本不错的读物。

JavaScript 和 CSS

过去,Web 开发人员可以只专注于服务器端工作,让设计师处理从 JavaScript 到 CSS 的所有事情。 但是,随着 Web 应用程序变得更加动态并融入了更多的 Ajax,对于所有开发人员来说,理解和掌握这些技术变得越来越重要。

尽管 JavaScript 备受关注,但经验丰富的 Web 开发人员都知道它是一种有缺陷的语言,部分原因是其设计,部分原因是其实现。 最著名的 JavaScript 大师之一 Douglas Crockford 最近写了一本简短(但出色)的书,JavaScript: The Good Parts(ISBN 978-0596517748)。 Crockford 之前的著作和讲座极大地帮助了我对 JavaScript 的理解,这本书也帮助我更加欣赏这门语言。 JavaScript: The Good Parts 帮助我理解了为什么我过去对 JavaScript 如此沮丧——除了浏览器兼容性问题之外。 通过忽略 JavaScript 的缺点,挫败感会大大降低。

即使你考虑了 Crockford 的建议,你几乎肯定也会想选择一个 JavaScript 库,例如 Prototype、jQuery、YUI 或 Dojo。 在过去的几年里,我在这篇专栏中探讨过其中一些库,重点是 Prototype,因为它包含在 Rails 框架中。 但是,关于其他库也有很多优点——而且在许多情况下,你可能无法决定使用哪个库。 例如,我已经开始使用开源在线学习系统 Moodle 进行一些工作,该系统使用 YUI 作为其工具包。 同样,用于 Web 开发的 Django 框架现在包含了 Dojo 工具包,因此如果你进行任何 Django 开发,都应该期望使用 Dojo。

虽然我对 Yahoo 的 YUI 工具包印象深刻,但我的默认 JavaScript 库仍然是 Prototype,这在很大程度上是因为它与 Ruby on Rails 的密切关系。(Prototype 开发人员是 Rails 核心团队的成员,两者之间的开发是同步的。)Prototype 的网站(prototypejs.org)有出色的文档,甚至还有 API 的可下载 PDF 版本。 但是,这对于我最近讲授的一些关于 Prototype 编程的入门课程来说还不够,所以我一直在寻找高质量的教程。

因此,我很高兴发现了 Andrew Dupont 编写的 Practical Prototype and script.aculo.us(ISBN 978-1590599198),这是我在过去几个月里读过的最好的编程书籍之一。 它通过有针对性、实用且富有启发性的示例介绍了 Prototype(及其配套的 GUI 工具包 script.aculo.us)——以及我发现令人耳目一新的幽默感,而又不会妨碍理解。

现代网页使用层叠样式表 (CSS) 进行样式化,这项技术在理论上很容易理解,但在执行时可能会变得复杂。 Rachel Andrew 编写的 The CSS Anthology(ISBN 978-0975841983)似乎提供了一个 CSS 入门指南。 这本书是教程和食谱的结合体,让你可以在小课程和想法的背景下学习 CSS。

一旦你理解了 JavaScript 和 CSS 的基础知识,以及它们可以为你的动态网站做什么,你可能想看看 Danny Goodman 编写的 Dynamic HTML: The Definitive Reference(ISBN 978-0596527402)。 本书着眼于 DOM——浏览器用于处理 HTML 的文档对象模型——并解释了如何使用 JavaScript 和 CSS 的组合来修改其外观以及操作其元素。 本书没有使用任何 JavaScript 库,因此如果你习惯了 Prototype 的简洁性,那么一些 JavaScript 代码可能会显得冗长而笨拙。 但是,就全面性而言,没有什么能比得上这本书。

最新版的 David Flanagan 的 JavaScript: The Definitive Guide(ISBN 978-0596101992)同样全面,当你想更好地理解 JavaScript 在做什么或对象是如何定义的时,它会很有用。 Douglas Crockford 指出,这是唯一一本真正弄清楚细节的 JavaScript 书籍。 这可能是真的,但这并没有改变文本可能非常密集的现实。 不要试图从这本书中学习 JavaScript,但之后你应该把它放在身边,要么是为了刷新你的记忆,要么是为了更清楚地了解事物是如何运作的。

最后,我发现 Tommy Olsson 和 Paul O'Brien 编写的 The Ultimate CSS Reference(ISBN 978-0-980285857)是一个有用的 CSS 选择器、属性和值列表。 特别有用的是表格,其中指示了每个浏览器在多大程度上符合每个属性的 CSS 标准。 这本书中的信息在其他地方也有,但如果我没有连接到互联网(我很惭愧地承认,有时会这样),或者如果我只是想浏览一些相关项目,它就特别方便。 我对这本书的主要抱怨是它缺少索引,虽然我知道你可以在线阅读和搜索其中的大部分内容,但添加 5-10 页的索引会使这本书从一本好书变成一本优秀的书。

社交网络

Facebook、LinkedIn 和其他社交网站风靡一时,我甚至在这篇专栏中研究了这些网站的某些方面。

如果你有兴趣创建自己的社交网站,那么有两本书可能会让你感兴趣。 第一本是 Michael Hartl 和 Aurelius Prochazka 编写的 RailsSpace(ISBN 978-0321480798),它描述了如何创建一个简单的社交网站,其中包含用户、朋友和基于 Ajax 的博客。 RailsSpace 的源代码已经公开,因此你可以使用该代码构建你自己的真实网站,而不仅仅是完成教程。 更棒的是,作者之一(Hartl)创立了一个名为 Insoshi(www.insoshi.com)的开源项目,该项目提供了一个可下载的框架,用于创建社交网站。

第二本关于该主题的书是 Alan Bradburne 编写的 Practical Rails Social Networking Sites(ISBN 978-1590598412),它在旨在完成的项目方面更具雄心,不仅展示了用户和友谊链接的示例,还展示了电子邮件、论坛、照片库、用户创建的主题和移动界面。 这本书中的代码用于驱动 RailsCoders 网站(www.railscoders.net),同样可以下载并用于驱动真实世界的网站。

无论你使用什么工具包,或者是否决定自己创建社交网站,你都应该考虑你正在做的事情的更广泛的影响。 Joshua Porter 编写的 Designing for the Social Web(ISBN 978-0321534927)是我迄今为止读过的关于该主题的最有趣的书籍之一,它充满了关于人们如何参与网站的实用建议。 Clay Shirky 的 Here Comes Everybody(ISBN 978-1594201530)是一本稍微不太实用,但同样有趣的书。 他对社交网络的分析,以及群体如何在完全了解彼此和定义自己之前进行协作的分析,充满了有趣的轶事,但也对这类网站的设计者在部署时应考虑的事项提出了警示。

结论

也许印刷机正在走向渡渡鸟的道路。 但就目前而言,有很多书我发现不仅有用且有趣,而且对于我作为开发人员和顾问的日常生活来说也是必不可少的。 如果你读过一本特别有趣且有用的书,你认为我应该了解,请给我发送电子邮件。 我总是很乐意了解新的高质量书籍,如果事实证明它特别有用,我将很乐意与其他本专栏的读者分享。

Reuven M. Lerner,一位长期的 Web/数据库开发人员和顾问,是西北大学学习科学专业的博士候选人,研究在线学习社区。 在芝加哥地区生活了四年之后,他最近(与妻子和三个孩子)返回了他们在以色列莫迪因的家。

加载 Disqus 评论