锻造坊 - 2009 年书籍综述
当我写下这些文字时,全球经济已经衰退了一年多,给大量的企业、组织和个人带来了难以言表的 финансовые 损失。图书和杂志出版商也没有幸免于难,许多都在裁员或以其他方式试图弄清楚如何在互联网时代盈利(或生存)。
但尽管当前形势严峻,出版商仍在不断出版大量书籍,其中许多都与 Web 和互联网相关技术有关。如果您是一名 Web 开发人员,那么您很幸运生活在一个高质量开源软件唾手可得的时代,Web 开发框架已经变得流行且易于使用,并且在任何给定的开源技术上都有数十个博客。看起来可能很古朴,但印刷书籍是非常有用的资源,您可以并且应该尝试利用它们。博客可能很棒,但我仍然喜欢阅读一本写得好的书,它会引导我了解一项新技术或概念的众多示例。
本月,我将从正常的编码示例中抽身出来,分享一些我在过去一年中浏览和欣赏的书籍。这些书大多数实际上是新书,但其中一些可能对我来说是新书,或者对我来说具有新的重要性。肯定有一些偏向于我通常使用的技术——Linux、Ruby、PostgreSQL 和 Git——但我尽量及时了解各种技术和主题,书单也反映了这些兴趣。
任何阅读本专栏的人都知道我是众多喜欢使用 Ruby on Rails 的 Web 开发人员之一。Rails 多年来一直是我的首选开发框架,我仍然对其包含的便利性数量印象深刻。Rails 之所以起飞,是因为它很容易上手,正如 David Heinemeier Hansson 在他最初的“博客”截屏视频中几年前演示的那样。但随着 Rails 的普及,使用它的网站的需求也在增长,无论是在功能还是可扩展性方面。处理这些问题——最好在它们给您的网站带来麻烦之前——已成为 Rails 开发人员的重要议题。
我见过的关于这个主题的最好的书是 Dan Chak 的 Enterprise Rails(O'Reilly 出版社,ISBN 978-0-596-51520-1)。我如此喜欢这本书的原因之一是它专注于 Web 开发的各个方面,而大多数 Rails 书籍要么忽略,要么将其 relegated 到次要地位。例如,第一章引导您完成 Rails 插件的创建,Chak 认为这是组织代码以方便维护的好方法。这实际上是否是一个好主意可能是讨论和辩论的主题,但很少有 Rails 书籍讨论插件的创建,更不用说将它们作为组织工具来讨论了。本书一章又一章都同样有趣,并且包括关于数据库范式、SOA、缓存、继承以及在数据库中使用约束和触发器来强制数据完整性的信息丰富的讨论。
Brad Ediger 的 Advanced Rails(O'Reilly 出版社,ISBN 978-0-596-51032-9)是一本涵盖更传统领域的书,但无疑非常有用。Advanced Rails 涵盖了开发人员在部署应用程序以及考虑安全性和可扩展性问题时需要考虑的许多主题。本书涵盖了大量主题,我唯一的抱怨是它试图涵盖太多内容,以至于失去了我可能想要的某些深度。与此同时,这本书充满了对 gems、插件和网站的引用,这些网站比任何书籍都可能合理期望包含的信息更深入(并且包含更多工作代码)。
如果您正在寻找关于 Ruby 语言而不是 Rails 框架的信息,那么在过去一年中已经出版了两本新书,这两本书不仅涉及当前的 1.8.x 系列 Ruby,还涉及 1.9.x 系列。这些书有不同的目的和风格,并且在许多方面相互补充。Java/JavaScript 书籍资深作者 David Flanagan 和 Ruby 创建者 Yukihiro “Matz” Matsumoto 合着的 The Ruby Programming Language(O'Reilly 出版社,ISBN 978-0-596-51617-8)试图具体而仔细地记录该语言的行为。如果您是一位经验丰富的 Ruby 程序员,您可能希望手头有这本书,以便解释该语言的工作原理。
David Black 的 The Well-Grounded Rubyist(Manning 出版社,ISBN 978-1-933988-65-8)是一本更友好的书,它在某种程度上是一本教程——不仅是关于 Ruby 语言,也是关于 Ruby 的思维方式。Ruby 的许多构造可能会让许多程序员感到困惑,而 Black 的书通过大量有据可查的示例逐步讲解了这些构造。Black 还提供了许多关于并非总是显而易见的事情的技巧和解释,例如单例方法定义样式、内置回调以及各种形式的 eval 之间的区别。
我还彻底喜欢上了 Paolo Perrotta 的 Metaprogramming Ruby(Pragmatic Programmers 出版社,ISBN 978-1-934356-47-0)。用 Ruby 开始编程很容易,但真正的力量(与 Lisp 一样)不仅在于现有的 Ruby 构造,还在于您可以修改语言以满足您的需求。元编程,正如这项技术所称,让您可以以各种方式修改对象和类,将您的应用程序变成一种用于解决特定问题的语言。元编程本质上有点难以掌握,并且不一定清楚如何使用它,或者为什么它可能是必要的。Perrotta 的书在这两个方面都提供了大量写得很好的细节,向您展示如何使用元编程技术,并建议何时使用它们可能合适或有用。
最后,我应该提到 Mike Gunderloy 自行出版的在线 PDF 书籍 Rails Rescue Handbook,您可以从 www.railsrescuebook.com 获取。Gunderloy 是一位活跃的 Rails 开发人员、作者和社区成员,他写了一本书,描述了当您被要求处理一个无法正常工作的 Rails 项目时应该怎么做。本书充满了关于如何攻击有问题的网站的实用建议——从检查现有代码,到查找数据库索引问题,到使用 metric_fu,再到使用 New Relic 或 FiveRuns 等工具进行外部监控。对于我们这些经常同时处理多个项目并且可能不记得 Rails 2.1 和 2.2 之间发生了什么变化的人来说,每 Rails 版本(追溯到 1.0)中已弃用的功能列表非常方便。我在这本书中没有发现任何隐藏的技巧或巧妙的技巧,但这很好。回归基础的方法是彻底的、写得很好的,并且描述了每个 Rails 项目如何以及应该随着时间的推移发展,即使它最初没有遵循最佳实践。
软件开发人员已经使用版本控制系统一段时间了。但是 Git,一个由 Linus Torvalds 开发的分布式版本控制系统,已经在很大程度上席卷了开源世界。对我来说,Git 的杀手级功能是其极其简单(且快速)的分支和合并。我属于 CVS 和 Subversion 用户类别,他们已经使用这些工具多年,并且害怕任何我必须执行的分支或合并操作,因为它非常痛苦且耗时。Git 完全改变了我的看法,改变了我开发软件的方式。
存在许多 Git 用户网站,例如“Git ready”(www.gitready.com)和 Git 社区书籍(book.git-scm.com),它们提供有用的信息。但是,要全面介绍 Git,您可能需要考虑有关该主题的三本书中的一本。第一本出版的书,Travis Swicegood 的 Pragmatic Version Control Using Git(Pragmatic Programmers 出版社,ISBN 978-1-93435-615-9),是对 Git 的良好介绍,并且很好地涵盖了基础知识。
但是,我觉得这本书缺乏一些深度,很高兴阅读 Jon Loeliger 的 Version Control with Git(O'Reilly 出版社,ISBN 978-0-596-52012-0)和 Scott Chacon 的 Pro Git(Apress 出版社,ISBN 978-1-4302-1833-3)。Chacon 在 Git 社区中广为人知,他是 GitHub 的创始人之一,也是关于 Git 的截屏视频制作者、作者和演讲者。Chacon 说服 Apress 将这本书免费在线发布(progit.org/book),因此您可以自己看看。我发现 Loeliger 和 Chacon 的书相互补充,我一直在并行阅读它们,并从两者中学习。选择其中任何一本都不会错。
无论您的网站使用什么技术,都会出现某些问题。例如,您将不得不规划数据库和服务器架构,确保您的服务器性能得到监控,并设置您的 URL 和内容以反映最佳 SEO(搜索引擎优化)实践。一个网站上的一个人不太可能需要单独解决如此广泛的问题,但如果您是自由开发人员,了解不同的工具可能会非常有帮助,并且使您对您的客户更有价值。
Andrew B. King 的 Website Optimization(O'Reilly 出版社,ISBN 978-0-596-51508-9)是对以多种方式优化您的网站这一主题的良好介绍,包括针对 SEO 和速度。总的来说,我过去一直对 SEO 持怀疑态度,天真地认为,凭借写得好的内容,Google 和其他搜索引擎会找到您并将您标记为相关。事实证明,写得好的内容是必要的,但还不够。本书展示了您可以在该领域做些什么来改进。老实说,我阅读本书的 SEO 部分比与性能相关的优化部分更彻底,其中一些我在其他地方也见过。
一句著名的商业格言说:“如果你不能衡量它,你就无法改进它。” 因此,如果您想了解可以在哪里以及如何改进您的网站,那么掌握您的网站性能是一项至关重要的任务。Alistair Croll 和 Sean Power 的 Complete Web Monitoring(O'Reilly 出版社,ISBN 978-0-596-15513-1)是我迄今为止见过的最全面的 Web 监控工具和技术列表,它着眼于我可以想到的每种监控类型,甚至更多。它描述了如何监控您网站的网络连接、性能、转化率和可用性,并推荐内置、开源和商业工具的混合使用。它甚至描述了您可以使用在线社区和社交网络来监控对您网站的反应的方式,以便您获得的分析不仅仅是一堆统计数据。
JavaScript 继续占据 Web 开发世界的中心舞台。如果您尚未使用 JavaScript 框架,请务必开始使用!框架(例如 Prototype/Scriptaculous、jQuery、YUI 和 Dojo)允许您忽略浏览器之间的大多数差异,并为您可能想要进行的开发类型提供大量支持。我通常更喜欢使用 jQuery,并且喜欢 Jonathan Chaffer 和 Karl Swedberg 的入门级 Learning jQuery(Packt Publishing 出版社,ISBN 978-1-847192-50-9),它很好地介绍了该框架。
许多严肃的开发人员现在都在以各种方式使用 JavaScript,而 JSMag 是一种新的付费 PDF 出版物,旨在为这些开发人员提供严肃的文章(www.jsmag.com)。JSMag 让我想起了我多年来见过的其他特定于语言的杂志,其内容质量非常高,涉及开发人员需要处理的主题。它试图保持框架中立,这意味着您很可能阅读到关于 YUI 或 jQuery 以及 Ext 或 Dojo 的文章,因此如果您只对 jQuery 感兴趣,您可能会稍微失望。也就是说,大多数文章是关于使用 JavaScript 语言,而不是任何特定的框架,这意味着无论您使用什么,您都可能会从 JSMag 中获得一些收获。
最后,Ruby 社区的两位知名人士 Amy Hoy 和 Thomas Fuchs(后者是 Scriptaculous 可视化框架的作者,该框架与 Prototype 一起工作)出版了一本名为 JavaScript Rocks! 的在线 PDF 书籍,可从 jsrocks.com 购买和下载。如果您熟悉 Hoy 的写作风格,您不会感到惊讶,这本书读起来很容易,具有出色的幽默感和高质量的技术内容,涵盖了从减少 JavaScript 代码大小到提高应用程序用户界面的感知(而非实际!)性能的所有内容。本书附带了出色的“DOM Monster”工具的副本,用于优化页面上 DOM 元素的数量和类型,并用于即时分析您的页面。
Reuven M. Lerner,一位长期的 Web/数据库开发人员和顾问,是西北大学学习科学专业的博士候选人,研究在线学习社区。在芝加哥地区工作四年后,他最近(与妻子和三个孩子)返回他们在以色列 Modi'in 的家。