CGI 开发者资源

作者: J. M. Ivler 与 Kamran Husain
出版社: Prentice Hall, Inc.
URL: http://www.prenhall.com/
价格: $49.99 US
ISBN: 0-13727-751-2
评论员: Reuven M. Lerner
“CGI 开发者资源” 是去年发布的关于通用网关接口的众多书籍之一。CGI 使 HTTP 服务器不仅能够返回 HTML 文件的内容,还能返回程序输出的 HTML 格式文本。(像许多其他关于这个主题的书籍一样,这本书似乎是仓促完成的。)这本书缺乏对细节的关注,示例程序结构不良,呈现效果差。
总的来说,我认为这本书组织得相当好,尽管有些章节的价值值得怀疑。书籍不可能向所有人解释所有事情,虽然对客户端-服务器编程、瘦客户端与胖客户端以及 HTTP 的描述都是有价值的,但我认为解释不同类型的防火墙如何工作可能是不必要的。
我不喜欢作者的编程风格,他们使用的子程序非常少。如果作者编写的是短程序,那么缺少子程序似乎是合理的,但是有几个五页长的程序清单甚至没有一个子程序。(此外,书中还有太多未分割的代码块。)诚然,程序包含大量的注释——其中一些是代码在互联网上讨论和改进时的遗留物,另一些是对代码作用的有用解释——但我更希望看到它们的设计和文档一样好。考虑到封面声称这本书展示了良好的软件设计,如果能看到更多模块化的代码,也许可以分解成可重用的库,那就太好了。
作者有意忽略了现有的 Perl CGI 库,宁愿自己处理 CGI 相关的数据。此外,作者明确决定不使用 Perl 5(而是使用 Perl 4),因为它的面向对象特性;因为“这将需要解释 Perl 中模块和 OOP 的使用”,并且因为“支持此处显示的某些 Perl 代码的人不是 Perl 程序员。”即使是非 Perl 程序员也应该学习 Perl 的错误检查和安全机制,这些机制可以捕获问题,使 CGI 程序更安全、更易于调试。
事实上,很少有篇幅专门讨论调试 CGI 程序的棘手问题,或者如何构建错误消息,以便轻松找到 CGI 代码中的问题。
CGI 标准的主要优点之一是其跨平台的可移植性。然而,正如经验丰富的 CGI 程序员所知,可移植性是针对标准本身而言的,而不是针对编写 CGI 程序的语言或操作系统。我很欣赏作者在前言第一页的注释,其中他们承认“本文有点以 Unix 为中心”——但这低估了书中大多数代码的不可移植性。诚然,每个程序都可以修改,使其在其他平台上运行,并且与用 C 编写的程序相比,它们需要的修改要少得多。然而,考虑到它们对外部 Unix 实用程序的依赖,声称程序是可移植的有点牵强。
许多编辑和制作问题也困扰着我:大量的印刷错误和拼写错误,程序列表中字体选择不佳,印在深色背景上的解释性注释使一些单词几乎难以辨认,以及索引太小。此外,也没有提及 DBM 文件或关系数据库,这两种数据存储技术是每个 CGI 程序员都可能在某个时候使用的。
这本书有几个不错的部分。每月活动日历程序非常好,特别是它允许对相同数据进行两种不同的视图。本书对服务器端包含进行了广泛的处理,其中包含特定于 SSI 的变量列表。此外,提及如何编写 CGI 程序来检索系统实用程序留在平面文件中的数据也是有用的信息。作者在开始每个项目之前明确指出了需求——这是我希望当今这个漏洞百出的世界中更多软件工程师会做的事情。
总的来说,考虑到这本书中的程序通常与您可以在网上找到的程序相似,解释中包含错误和不准确之处,并且代码组织不佳,50美元的价格对于这本书来说似乎有点贵。经过认真的编辑,这本书可能会非常有趣——但在目前的形式下,这本书太弱了,无法独立存在。
Reuven M. Lerner 是一位居住在以色列海法的互联网和 Web 顾问,自 1993 年初以来一直使用 Web。在业余时间,他做饭、阅读,并在社区的教育项目中做志愿者。您可以通过 reuven@netvision.net.il 与他联系。