首页>参考读物>计算机科学与技术>软件与程序设计

Ruby系统管理实战
作者 : Andr Ben Hamou
译者 : 仲田
出版日期 : 2008-12-02
ISBN : 7-111-25083-8
定价 : 32.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 208
开本 : 16开
原书名 : Practical Ruby for System Administration
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

Ruby已红遍世界,成为Perl和Python全方位的真正挑战者。具体来说,越来越多的人正在见证Ruby灵活的语法机制、一流的功能特性,以及平缓的学习曲线,这让它成为从最不起眼的服务器到最大型的企业部署环境中系统管理维护任务的自然选择。
  在本书中,你将学会用Ruby的方式来构建文件、接入数据云团、构建领域专用语言、执行网络流量分析,以及完成其他更多事务。
  本书源自作者Andr? Ben Hamou作为系统管理员的亲身经验,有助于你掌握Ruby编码风格的实用技巧,学会分析和改进脚本的性能,并把关于脚本开发流程的实用建议加以运用,包括怎样做测试和构建文档。
  最重要的是,你会发现,Ruby的强大威力给系统管理维护带来极大的好处。
  本书有以下特色:

  ■对Ruby的基础概念和实用技巧给予同等关注。
  ■从其他语言选取示例,便于程序员迁移到Ruby。
  ■体裁简明、行文风趣、内容丰富——和许多面向系统管理员的书籍不一样,那些书通常过于冗长,难以消化。

  Andr Ben Hamou  目前就职于Freedom 255公司(英国主要的互联网服务商之一)。他毕业于英国帝国学院。

  仲田  南京某软件公司项目经理,高级程序员、系统分析员,有多年软件开发与管理经验,从事过Delphi、J2EE、Rails应用开发,应用领域主要是企业管理应用,包括财务、审计、商务进销存、业务管理等。目前他正在研究Ruby语言和Rails框架。

图书特色

图书前言

写书应该是件相当简单的事, 例如写一本与别人有关、 与自己无关的书———现在我才发现,这远比我想像的困难得多。我热爱Ruby的优雅、 简洁和强大, 而且在我工作的ISP公司, 我每天都用它来开发系统功能。你可能会想, 根据我的经验和能力, 提炼出几章重点突出的文字岂不是轻而易举。但并非如此。事实上, 构思本书的结构框架就花了我将近一个月的时间, 我这才发现, 这与问题环境有关。
  你瞧, 本书的目标读者明摆着是系统管理员, 但知道这点没什么用处, 就好像为了缩小搜索范围, 叫电话公司帮你接通委内瑞拉的Bob一样。因为, 除了几个共同的特点, 我们系统管理员的情况五花八门(假如能以Slashdot网站作为评价标准的话)。我们是“奇客”,这意味着, 我们热爱技术和架构本身, 并从解决问题中获得快感。我们总有太多的活,而没有足够的时间来处理。人们要求我们做各种各样的事, 从找回丢失的电子邮件, 到从零开始构建一个定制的CMS系统, 而且这种事总是“昨天就要完成”, 例如下面这种经常发生的事:星期一早上8点52分, Jo正要冲进房间, 还没跑到半路她就大叫起来: “今天交易
结束之前, MD要在我们的邮件服务器上实现内容镜像, 否则我们都要被起诉啦!”
  在此类情景中, 一个个问题冲击着你: 以理智之名的Jo到底是谁 她怎么总是能通过安全门禁
  从工程角度审视我们的工作, 快速部署的想法如此深地渗透到日常工作中, 导致许多(虽然不是全部)系统管理员都草草学习了一门解释型语言。问题是, 你应该选择哪一门语言
  有好几年时间, 我一直使用并信任Perl语言, 直到我转向Ruby。我转投Ruby的原因可以简单地用莎士比亚的话来概括(谢谢你, 威廉)。当Bard在谈论生活, 评述一个傻瓜讲的故事时, 他仿佛就在评论我编写的复杂Perl脚本: “充满声音和规则, 但却毫无意义”。 
   开源运动的创始人, 世界上最伟大的黑客之一。———译者注
   程序应该写得很美, 不会让眼睛紧张到几乎视网膜脱落。正如Eric Raymond所说: “丑陋的程序犹如烂尾桥梁: 它比漂亮的桥梁更容易倒塌, 因为人们(尤其是工程师)对美的感知能力, 是与处理和理解复杂性的能力紧密相关的。如果用一门语言很难写出优雅的代码, 那用它也很难写出好的代码”。
简而言之, 管理员需要这样一门语言, 用它来思考越容易越好, 简明而不晦涩, 语法设计使得“正确的”做法与“快速的”做法没有两样, 阅读起来好似可执行的元代码(metacode)。让我们直面事实吧———符合以上条件的只有两种主流语言: Ruby和Pyˉthon。但对我的钱来说, 虽然Python非常接近, 但只有Ruby正中目标。
  当我刚开始用Ruby时, 我猜我的做法和以前不少人一样, 用Ruby编程, 而用Perl
思考。这样可写不出好的脚本(就好比我只把香蕉顶在头上, 就让你相信我是Carmen
 Miranda, 这是不可能的事)。在改掉因Perl养成的各种针对内部结构编码的坏习惯
时,
我真希望自己早就用上Ruby, 这样就能早点享用它的好处。
综上所述, 我得在此解释一下在本书中我采取什么样的叙述方式。本书是我6年前
就希望能得到的一本书, 那时我第一次在别人那里见识了Ruby代码, 并决定改弦易辙

本书不是权威的Ruby语言参考书(尽管第1章将假设你几乎没有编程经验, 并简要介绍

Ruby以便让你跟得上进度), 它也不是一本提供101种方法创建LDAP客户端的“菜谱”

书, 本书没有整章描述“如何在Linux、 W indows、 Solaris和Mac OS X中创建用户
、 删除
用户”之类的内容, 它不“可用于微波炉”, 也不能当成“救生圈”来用。
我想做的, 是在非常概念化、 纯理论的讨论与精心选择的示例之间取得平衡, 关注重

点在于管理员用Ruby编程所能获知的核心技术与方法。之所以采取这种方式, 是因为我

相信,作为奇客, 我们从不读DVD播放机的用户手册。因为我们更喜欢在头脑中建立一

抽象播放器的通用模型, 并根据经验构想某些常用按钮的样子。通过这样的组织思考,

们在处理不熟悉的系统时就比较容易适应———这也就是Scott Adams所谓的“诀窍”。

在这个系统管理员被索求无度的世界, 你得有快速读写代码的能力和打开套接字
(socket)、 锁定文件、 强制限定文件格式的能力。基本上, 你要能迅速打开无所不
包、 满
满当当的工具包, 才能应对纷至沓来的、 无法预期的挑战。我希望, 本书能为你的工

包提供几个额外的扳手工具。
在我们开始之前, 对于不熟悉Ruby的读者, 下面介绍一下完全精确的Ruby历史。
完全精确的Ruby历史
 在古代, 生活比现在更艰辛。那时候男人是真正的男人, 女人也是真正的男人,
甚至寄生虫也是真正的男人。到处都是战场, 庞然大物在远古的沼泽里相对嘶吼。那

是一个个性的时代, 是中流砥柱、 钢筋铁骨、 卧薪尝胆的英雄时代。
在这样的艰难困苦之中, 有某种颠覆性的事物在人类心中闪耀。黑暗中有红色的
光芒在闪烁, 其中弥漫着大胆的承诺和欣喜的丢弃。一种变化正在到来, 仿佛熟透裂

开的栗子花,在风中可以嗅到它的味道。
 在北极圈冻土边缘的一个小村庄, 有个男孩出生在注册会计师和绳圈舞者的家
庭。某个智慧老者预见此事, 他出席了出生仪式, 心中充满狂喜。随着Matz渐渐长
大, 一道深红色的光辉开始照耀他特别的生命。
运用从前辈那里继承的深厚魔力, 他埋头苦干。算法语言被他重新改造, 兼具枯
燥琐碎之实与敏捷可靠之形, 最终打磨出一块深红色宝石。Ruby诞生了。
人们急匆匆地召开了充满火药味的紧急会议, 讨论对付这个“暴发户”的最佳方式。
很明显, 它能让许多人的生活变得轻松和享受。如果工作和娱乐的界限模糊了, 整个

宙都将不再有意义。
那个时代的高级魔法师一个接一个地倒在Ruby语法的迷人魅力面前, 开头是小心翼
翼地接触, 然后是兴致盎然地把玩, 最终是兴高采烈地上瘾。正统阵营用铺天盖地的
反宣
传活动予以反击, 向信徒提醒传统的重要性。Ruby人士则回敬以反-反宣传的万炮齐发

威胁对方将一败涂地彻底崩溃。
最终, 双方达成了平衡。“暴发户”登堂入室得到合法承认, 其无处不在的积极影响

将得到发现。全新一代的后来者奔驰在强大的铁道上, 编织着高度结构化的数据和计算

力之网。魔法学徒发现自己可以超越想像极限, 做得更多、 走得更远。他们再次感觉
到,
未来令人兴奋, 一切都将不同。

作者简介

Andr Ben Hamou:暂无简介

译者简介

仲田:暂无简介

译者序

几年前刚通过Python接触到Ruby时, 我的第一感觉就是, 和传统语言相比, Python已经够好了, 可Ruby比Python还好!它的语法简单易懂、 灵活多变, 而且实现了真正纯粹的面向对象———一切都是对象(例如1.upt o(10)这种在传统语言中不敢想像的语法)。它在几十年来程序语言设计的前人经验积累基础上, 进行了大胆的组合与创新, 从量变到质变, 达到了一个全新的高度。一直以来, 我有一种观点: 编程语言应该面向程序员, 尽量为程序员提供便利,而不是为了方便机器编译, 而让程序员背上不必要的学习和使用负担。Ruby正是这样一门语言, 它让我有一种感觉: 我找到了!
  Ruby语言自从诞生以来, 由于没有“杀手级”应用, 一直默默无闻地在小范围传播,未得到广泛注意。直到2005年Ruby on Rails横空出世, 世人才惊觉在耀眼夺目的Rails背后, 有如此强大的Ruby。原来Ruby可以这么用, 原来Ruby可以这么强!可以说, 没有强大灵活的Ruby, 就没有一鸣惊人的Rails!
本书让我们看到, Ruby在系统管理员手中, 还可以得到进一步的发挥, 让系统管理维护的日常繁杂事务变得如此井井有条, 而且利用Ruby灵活而强大的语法, 只需几行代码, 即可快速解决 问题。
  值得一提的是, 教授语言的大师Bruce Eckel(写过《Thinking in C++》、《Thinking in Java》、 《Thinking in Python》等获奖名著)和面向对象设计大师Martin Fowler(写过《Patˉterns of Enterprise Application Architecture》、 《Refactoring》、 《UML Distilled》、 《Planning Extreme Programm ing》等获奖名著)都对Ruby推崇备至。自从Ruby出现后, 他们也像常人一样从Python移情别恋了。
  本书作者是Ruby“狂热分子”, 他在自己就职的公司, 尤其是本职岗位(系统管理员)推行Ruby, 取得了良好的成果。他根据自己的亲身经历和丰富经验写成本书, 其中涵盖UNIX(和Linux)管理员经常碰到的问题和日常例行工作, 包括:
  用单行脚本代码快速解决问题。
  脚本的性能分析和优化。
  利用Ruby强大的元编程实现领域专用语言。
  用程序驱动和模板驱动等方式创建文件。
  在文件和网络中实现对象的存储和读取。
  利用XML和各种网络协议解析企业数据。
  网络传输数据收集、 事件监控和统计结果展示。
  用GEM包扩展Ruby的功能。
  用RAKE进行测试和文档生成。
  本书译者分别为仲田、 顾娟、 吴畏、 汪燕。其中仲田负责第1、 2、 3、 5、 8、10章和附录, 顾娟负责第4、 6章, 吴畏负责第11、 12章, 汪燕负责第7、 9章, 最后由仲田统稿。
  翻译的过程也是一种学习, 通过翻译本书我才发觉自己的眼界非常狭窄, 原来系统管理维护也是这么丰富多彩, 其中的趣味和困难丝毫不亚于程序开发。本书让我大开眼界, 希望也能让你感觉耳目一新, 这样也不枉作者和译者的一番辛苦, 当然, 更对得起你为本书花费的人民币了。
  祝你读得愉快!

图书目录

译者序
前言
作译者简介
技术译审者简介
致谢
第1章 Ruby能为你做什么 1
1.1 Hello World程序 1
1.2 Ruby内幕 3
1.2.1 对象漫谈: 面向对象理论 3
1.2.2 对象实战: Ruby的OO观点 5
1.2.3 秘传技巧: 读写方法省了 很多事 8
1.2.4 块和yield的奥妙 9
1.2.5 包罗万象: 关于类型的理性 认识 11
1.3 管理员专用药膏 13
第2章 常规任务的快速解决方案
 15



2.1 单行代码示例
15

2.1.1 用Ruby进行grep匹配
搜索
15


2.1.2 处理注释
16


2.1.3 运用行号
17


2.1.4 与字段打交道
17


2.1.5 巧妙的记录处理方法
18


2.1.6 创建定制的目录列表
19


2.1.7 定时监控命令执行情况
19



2.2 更大型的单行代码示例
19


2.2.1 翻转日志: 定时执行的单行
 代码
20


2.2.2 Ruby跳板
20



2.3 当“写得快”遇上“跑得快”
21


第3章 性能问题: 实用主义观点
 23



3.1 脚本可以运行得更快
23


3.1.1 数字游戏
24


3.1.2 脚本 VS 标准二进制程序
25



3.2 性能分析
27


3.2.1 UNIX的time命令
27


3.2.2 Benchmark性能基准库
27


3.2.3 Profiler性能优化分析库
29



3.3 性能优化
31


3.3.1 算法优化
32


3.3.2 语句优化
33


3.3.3 减轻副作用
35


3.3.4 扔下C炸弹
38



3.4 撞击瞬间速度
40


第4章 元编程的威力
 41



4.1 灵活的方法签名
42


4.1.1 默认值
42


4.1.2 散列表式参数
43


4.1.3 对缺失方法的动态指派
45



4.2 宏
46


4.2.1 模块包含
46


4.2.2 对象扩展
48


4.2.3 领域专用语言(DSL)
50

4.2.4 插件API: 用来增加宏
的宏
51



4.3 沉重的元编程
52
第5章 用聪明的方法构建文件
 54



5.1 安全第一
54


5.1.1 文件锁定
55


5.1.2 安全的文件操作方法
60



5.2 白纸黑字胜过空口无凭
62

5.2.1 群策群力: 程序驱动式创建
文件
62

5.2.2 电闪雷鸣: 模板驱动式创建
文件
66



5.3 当直白文件不再满足需要
68


第6章 对象的存储和检索
 69



6.1 本地磁盘存储
69


6.1.1 检视时间
69


6.1.2 汇集思想
72


6.1.3 YAML不是标记语言
73

6.1.4 评估其他备选方案的性能
指标
75



6.2 网络感知存储
76


6.2.1 总体设计原则
77

6.2.2 memcached: 天上有朵大
散列
79


6.2.3 数据库
82

6.2.4 用ActiveRecord实现对象—关系
映射
84



6.3 与大家伙打交道
92


第7章 处理企业数据
 94



7.1 解析数据
94

7.1.1 离别是如此甜蜜的忧伤:被
界定符分隔的数据值
95


7.1.2 XML数据
99



7.2 网络服务
111

7.2.1 轻量级目录访问协议
(LDAP)
111

7.2.2 XML远程方法调用
(RPC)
116

7.2.3 简单对象访问协议
(SOAP)
119

 7.2.4 表示状态转换(REST)
122



7.3 回归基础
126


第8章 有趣又有收益的联网
 127



8.1 基础网络I/O操作
127


8.1.1 给我套接字
127


8.1.2 套接字错误和异常
128


8.1.3 定时监控:有目的的超时
129


8.1.4 基于套接字的监控
131



8.2 高级网络服务
132


8.2.1 协议的羞耻
132


8.2.2 构建W eb机器人
133


8.2.3 一起抛出服务器
137



8.3 监视与控制
141


8.3.1 用SSH获取命令
141


8.3.2 网络数据包监控
143



8.4 本章小结
145


第9章 网络监控
 146



9.1 收集数据
146

9.1.1 简单网络管理协议
(SNMP)
146


9.1.2 安全外壳
151



9.2 分析数据
153


9.2.1 汇集数据
153


9.2.2 事件解析
154


9.2.3 事件过滤与赋值
155


9.2.4 综合考虑
156


9.2.5 聚集分析
157



9.3 展示数据
159


9.3.1 图表
159


9.3.2 图
164



9.4 璀璨耀眼的宝物
165


第10章 Ruby的扩展: 宝石在握
 167



10.1 gem的管理与使用
167


10.1.1 安装RubyGems
167


10.1.2 gem命令
168


10.1.3 在代码中使用gem
172


10.1.4 通过gem_server访问文档
174

10.2 创建gem
174


10.2.1 gem到底是什么东西
174


10.2.2 收集所需文件
175


10.2.3 编写gem规格说明书
177


10.2.4 构建gem
178


10.2.5 发布gem
179



10.3 满口宝石
180


第11章 测试与编写文档
 181



11.1 Rake工具
181


11.1.1 基本任务
181


11.1.2 文件任务
182


11.1.3 确保目录存在
183


11.1.4 一般化规则
183


11.1.5 任务合成
184


11.1.6 编写文档的任务
186



11.2 测试
186


11.2.1 Ruby的测试库
187


11.2.2 执行测试
188


11.2.3 测试支架
189


11.2.4 测试包
189


11.2.5 用Rake做测试
190



11.3 编写文档
191

 11.3.1 自动编写文档
191


11.3.2 基本注释
193


11.3.3 头标记、 分隔符和链接
194


11.3.4 列表
195


11.3.5 处理命令
195


11.3.6 用Rake生成文档
196



11.4 任务完成
196


第12章 Ruby的未来
 198



12.1 运行环境
198


12.1.1 YARV解释器
198


12.1.2 JRuby解释器
199



12.2 语言方面的变化
199


12.2.1 数组和散列表
199


12.2.2 字符串
200


12.2.3 I/O操作
200


12.2.4 块参数本地化
201


12.2.5 数组拆解
201


12.2.6 对象打拍子
202


12.2.7 读ˉ写属性
202


12.2.8 Enumerable类升级
202



12.3 新的开始
203

附录 Ruby的执行方法
 204

教学资源推荐
作者: 刘振安 刘燕君 孙忱
作者: 裘宗燕,李安邦 编著
作者: Patrick Henry Winston, Sundar Narasimhan
作者: Steven S.Muchnick
参考读物推荐
作者: 王洪影 著
作者: 丁如敏 王琳 等著
作者: 丁如敏 盛娟 等著