The Ruby Way中文版

当前位置:首页 > 网络编程 > 编程语言与程序设计 > The Ruby Way中文版

出版社:人民邮电出版社
出版日期:2007年11月1日
ISBN:9787115166692
作者:富尔顿(Hal Fulton)
页数:532 页页

媒体关注与评论

  本书在阐述元编程(metaprogramming)方面尤其出类拔萃,元编程是Ruby最引人注目的方面之一。很多Rail理念的灵感都来自本书的第一版,尤其是现为第11章的内容。它让您就像坐上了过山车,不断地在“疑问”和“惊喜”之间摇摆。  ——Ruby on Rails之父 David Heinemeier Hansson  对Ruby和爱好者技术写作爱好者来说,这本经典之作第二版的面世无疑是激动人心的。Hal Fulton以旁征博引、引人入胜而又清晰易懂的写作手法,全面而有详细地对Ruby进行了阐述,让读者感到犹如有一位知识渊博的老师在身边,并渴望将其掌握的知识悉数传授给你。  ——《Ruby for Rails》的作者David Alan Black  Ruby是一种神奇的语言,但有时候你只想完成工作。本书向读者提供了解决方案,同时阐述了为何该解决方案是Ruby擅强的。  ——Thought Works首席科学家、《Patterns of Enterprise Application Architecture》的作者Martin Fowler  这本优秀的图书可帮助读者洞察Ruby的奥秘。作为一位有多年Ruby使用经验的读者,我仍时常能够在书中发现全新的使用技巧。本书既可作为学习教材,亦可作为参考手册,从中可以挖掘并学习新知识。  ——敏捷软件行业的先锋Chet Hendrickson  我经常通过本书的第1版了解Ruby的细节,因此它涵盖了其他资料未涉及众多的主题。这一版涵盖的内容更全面,也必将更有参考价值。  ——敏捷技术作者和演讲者Ron Jeffries

内容概要

  Hal Fulton拥有密西西比大学的两个计算机学位。在社区大学里教授计算机课程4年后,他因工作需要(主要受聘于奥斯汀的IBM)搬到了德克萨斯州奥斯汀。他拥有15年使用各种UNIx系统(包括AIx、Solaris和Linux)的经验。他首次接触Ruby是在1999年,从2001年开始他就着手编写本书的第l版,这是第二本用英语编写的Ruby图书。他参加了六次Ruby大会,并在其中的四次中发表过演讲,包括在德国卡尔斯鲁厄召开的首届欧洲Ruby大会。目前,他在德克萨斯奥斯汀的Broadwing Communications工作,主要从事大型数据仓库和电信应用方面的工作。他每天都在使用C++和Oracle,当然还有Ruby。  Hal仍活跃在Ruby邮件列表和IRC频道中,且正在开发几个Ruby项目。他是ACM和IEEE计算机协会的成员。在生活中,他喜欢音乐、阅读、写作、艺术和摄影。他还是Mars社团的成员和天文爱好者,平生的愿望是进行一次太空旅行。

书籍目录

第1章 Ruby概述 1
1.1 面向对象简介 2
1.1.1 什么是对象 2
1.1.2 继承 3
1.1.3 多态 4
1.1.4 其他术语 5
1.2 基本的Ruby语法和语义 5
1.2.1 关键字和标识符 6
1.2.2 注释和内嵌文档 7
1.2.3 常量、变量和类型 7
1.2.4 运算符及其优先级 8
1.2.5 示例程序 9
1.2.6 循环和分支 11
1.2.7 异常 15
1.3 Ruby中的OOP 16
1.3.1 对象 17
1.3.2 内置类 17
1.3.3 模块和Mixin 18
1.3.4 创建类 19
1.3.5 方法和属性 22
1.4 Ruby的动态方面 23
1.4.1 在运行时编码 23
1.4.2 反射 25
1.4.3 方法找不到 26
1.4.4 垃圾回收(Garbage Collection,GC) 26
1.5 直觉训练:需要记住的内容 26
1.5.1 语法问题 27
1.5.2 编程方面 28
1.5.3 Ruby的case语句 30
1.5.4 Ruby程序员及其习惯用语 32
1.5.5 面向表达式和其他问题 37
1.6 Ruby术语 38
1.7 结语 40
第2章 使用字符串 41
2.1 表示普通字符串 41
2.2 用其他表示法表示字符串 42
2.3 使用Here文档 42
2.4 确定字符串的长度 44
2.5 每次处理一行 44
2.6 每次处理一个字节 44
2.7 执行特殊的字符串比较 45
2.8 将字符串分解为标记 46
2.9 格式化字符串 47
2.10 将字符串用做IO对象 48
2.11 控制大小写 48
2.12 获取和设置子字符串 49
2.13 字符串替换 50
2.14 字符串搜索 51
2.15 在字符和ASCII码之间转换 52
2.16 隐式转换和显式转换 52
2.17 在字符串末尾添加内容 54
2.18 删除末尾的换行符和其他字符 54
2.19 删除字符串中的空白 55
2.20 重复字符串 55
2.21 在字符串中嵌入表达式 55
2.22 字符串的延迟插入 56
2.23 解析逗号分隔的数据 56
2.24 将字符串转换为数字(十进制数和其他进制) 57
2.25 rot13文本编码和解码 58
2.26 字符串加密 59
2.27 字符串压缩 60
2.28 计算字符串中的字符数 60
2.29 字符串反转 61
2.30 删除重复的字符 61
2.31 删除指定的字符 61
2.32 打印特殊字符 62
2.33 生成后续字符串 62
2.34 计算32位的CRC 62
2.35 计算字符串的MD5散列值 63
2.36 计算两个字符串之间的Levenshtein距离 64
2.37 base64字符串的编码和解码 65
2.38 字符串编码和解码(uuencode/uudecode) 66
2.39 扩展和压缩制表符 66
2.40 文本自动换行 67
2.41 结语 67
第3章 使用正则表达式 68
3.1 正则表达式的语法 68
3.2 编辑正则表达式 70
3.3 特殊字符的转义 71
3.4 使用锚 71
3.5 使用量词符(quantifier) 72
3.6 正负预查(Lookahead) 73
3.7 访问后向引用 74
3.8 使用字符类 76
3.9 扩展正则表达式 77
3.10 使用点匹配换行符 78
3.11 使用内嵌选项 78
3.12 使用内嵌子表达式 79
3.13 Ruby与Oniguruma 79
3.13.1 检测是否有Oniguruma 80
3.13.2 编译Oniguruma 80
3.13.3 Oniguruma的一些新特性 81
3.13.4 正负后查(Lookbehind) 82
3.13.5 再谈量词符 82
3.13.6 命名匹配 83
3.13.7 正则表达式中的递归 84
3.14 一些正则表达式示例 85
3.14.1 匹配IP地址 85
3.14.2 匹配关键字——值对 86
3.14.3 匹配罗马数字 86
3.14.4 匹配数值常量 87
3.14.5 匹配日期/时间字符串 87
3.14.6 检测文本中的双词 88
3.14.7 匹配全部大写的单词 88
3.14.8 匹配版本号 88
3.14.9 其他模式 88
3.15 结语 89
第4章 Ruby的国际化 90
4.1 背景与术语 91
4.2 后ASCII时代的编码 93
4.2.1 jcode库与$KCODE 94
4.2.2 再谈常用的字符串和正则表达式操作 95
4.2.3 检测字符编码 98
4.2.4 Unicode字符的规范化 98
4.2.5 字符串排序的问题 99
4.2.6 编码之间的转换 101
4.3 使用消息目录 103
4.3.1 背景与术语 103
4.3.2 开始使用消息目录 104
4.3.3 简单应用程序的本地化 104
4.3.4 其他注意事项 108
4.4 结语 108
第5章 执行数值计算 109
5.1 在Ruby中表示数值 109
5.2 基本数字运算 110
5.3 对浮点数执行舍入 110
5.4 比较浮点数 112
5.5 格式化输出的数值 113
5.6 用逗号格式化数值 113
5.7 使用超大型整数 114
5.8 使用BigDecimal 114
5.9 处理有理数 116
5.10 矩阵运算 116
5.11 处理复数 119
5.12 使用mathn 120
5.13 因子分解、最大公约数和最小公倍数 121
5.14 处理素数 121
5.15 隐式与显式数值转换 122
5.16 数值的协同转换(coercing) 123
5.17 对数值执行按位运算 124
5.18 执行进制转换 125
5.19 计算立方根、四次方根等 125
5.20 确定体系结构的字节顺序 126
5.21 定积分的数值计算 127
5.22 以度、弧度、分度为单位的三角计算 127
5.23 高级三角函数 128
5.24 计算以任何数为底的对数 128
5.25 计算数据集的均值、中值和众数 129
5.26 方差和标准差 130
5.27 计算相关系数 130
5.28 生成随机数 132
5.29 使用memoize缓存函数结果 132
5.30 结语 133
第6章 符号和范围 134
6.1 符号 134
6.1.1 作为枚举的符号 135
6.1.2 作为元值(metavalue)的符号 136
6.1.3 符号、变量和方法 136
6.1.4 符号的转换 137
6.2 范围 138
6.2.1 开范围和闭范围 138
6.2.2 查找终点 138
6.2.3 对范围进行迭代 139
6.2.4 测试是否在范围内 139
6.2.5 转换为数组 140
6.2.6 反向范围 140
6.2.7 flip-flop运算符 140
6.2.8 自定义的范围 143
6.3 结语 145
第7章 处理时间和日期 146
7.1 确定当前时间 146
7.2 处理特定的时间(纪元后) 147
7.3 确定星期几 148
7.4 确定复活节的日期 148
7.5 计算一个月内的第几个星期几 149
7.6 秒与更大时间单位之间的转换 150
7.7 其他时间和纪元之间的转换 150
7.8 不要使用闰秒 151
7.9 计算一年中的第几天 151
7.10 验证日期/时间 151
7.11 计算一年的第几周 152
7.12 检测闰年 153
7.13 获得时区 153
7.14 只使用小时与分钟 154
7.15 比较日期/时间值 154
7.16 给日期/时间值增加间隔 154
7.17 计算两个日期/时间值的差 155
7.18 处理特定的日期(纪元前) 155
7.19 Time、Date、DateTime之间的转换 155
7.20 从字符串中提取日期/时间值 156
7.21 日期/时间值的格式化和输出 157
7.22 时区转换 158
7.23 计算一个月的天数 158
7.24 将月划分为周 159
7.25 结语 160
第8章 数组、散列及其他枚举类型 161
8.1 使用数组 161
8.1.1 数组的创建和初始化 162
8.1.2 数组元素的访问和赋值 162
8.1.3 确定数组的长度 163
8.1.4 数组的比较 163
8.1.5 数组的排序 165
8.1.6 根据条件从数组中选择 167
8.1.7 使用专门的索引函数 168
8.1.8 实现稀疏矩阵 169
8.1.9 使用数组作为数学集合 170
8.1.10 数组的随机化 173
8.1.11 使用多维数组 173
8.1.12 找出在一个数组中而不在另一个数组中的元素 174
8.1.13 数组的变换或映射 174
8.1.14 删除数组中的nil元素 175
8.1.15 删除特定的数组元素 175
8.1.16 数组的拼接和附加 176
8.1.17 将数组用做栈或队列 177
8.1.18 对数组进行迭代 177
8.1.19 插入分隔符以形成字符串 178
8.1.20 颠倒数组 178
8.1.21 删除数组中的重复元素 178
8.1.22 数组的交织 178
8.1.23 计算数组中值的频率 179
8.1.24 将数组颠倒为散列 179
8.1.25 同步多个数组的排序 179
8.1.26 给新数组元素指定默认值 180
8.2 使用散列 181
8.2.1 创建新散列 181
8.2.2 指定散列的默认值 182
8.2.3 访问和添加键——值对 182
8.2.4 删除键——值对 183
8.2.5 对散列进行迭代 184
8.2.6 散列的颠倒 184
8.2.7 检测散列中的键和值 184
8.2.8 将散列提取为数组 185
8.2.9 根据条件选择键——值对 185
8.2.10 散列的排序 186
8.2.11 合并两个散列 186
8.2.12 从数组创建散列 186
8.2.13 计算散列键的差集和交集 187
8.2.14 将散列用做稀疏矩阵 187
8.2.15 实现包含重复键的散列 187
8.3 枚举概述 190
8.3.1 inject方法 190
8.3.2 使用量词符 191
8.3.3 partition方法 192
8.3.4 分组迭代 193
8.3.5 转换为数组或集合 193
8.3.6 使用Enumerator对象 194
8.3.7 使用Generator对象 195
8.4 结语 196
第9章 高级数据结构 197
9.1 使用集合 197
9.1.1 简单的集合操作 198
9.1.2 高级集合操作 199
9.2 使用栈和队列 200
9.2.1 实现严谨的栈 200
9.2.2 检测表达式中不配对的标点 201
9.2.3 理解栈和递归 202
9.2.4 实现严谨的队列 203
9.3 使用树 204
9.3.1 实现二叉树 204
9.3.2 使用二叉树排序 206
9.3.3 将二叉树用做查询表 207
9.3.4 将树转换为字符串或数组 207
9.4 使用图 208
9.4.1 使用邻接矩阵实现图 209
9.4.2 确定图是否全连通 211
9.4.3 检测图是否包含欧拉回路 212
9.4.4 判断图是否有欧拉路径 212
9.4.5 Ruby中的图工具 213
9.5 结语 213
第10章 I/O和数据存储 214
10.1 处理文件和目录 215
10.1.1 打开和关闭文件 215
10.1.2 更新文件 216
10.1.3 文件的追加 216
10.1.4 随机存取文件 216
10.1.5 处理二进制文件 217
10.1.6 锁定文件 218
10.1.7 执行简单的I/O操作 219
10.1.8 执行缓冲I/O和非缓冲I/O操作 220
10.1.9 操作文件所有者和权限 220
10.1.10 获取和设置时间戳信息 222
10.1.11 检查文件是否存在及其大小 223
10.1.12 检查特殊的文件属性 223
10.1.13 使用管道 225
10.1.14 执行特殊的I/O操作 226
10.1.15 使用非阻断I/O 226
10.1.16 使用readpartial 227
10.1.17 操作路径名 227
10.1.18 使用Pathname类 228
10.1.19 命令级文件操作 229
10.1.20 从键盘抓取字符 230
10.1.21 将整个文件读取到内存中 230
10.1.22 逐行对文件进行迭代 231
10.1.23 逐字节对文件进行迭代 231
10.1.24 将字符串视为文件 231
10.1.25 读取程序内嵌的数据 232
10.1.26 读取程序的源代码 233
10.1.27 处理临时文件 233
10.1.28 改变和设置当前目录 233
10.1.29 改变当前根目录 234
10.1.30 迭代目录项 234
10.1.31 获取目录项列表 234
10.1.32 创建目录链 234
10.1.33 递归地删除目录 235
10.1.34 查找文件和目录 235
10.2 执行高级数据访问 236
10.2.1 简单序列化 236
10.2.2 更复杂的序列化 237
10.2.3 使用Marshal执行有限的“深拷贝” 238
10.2.4 使用Pstore执行更好的对象持久化 238
10.2.5 处理CSV数据 239
10.2.6 使用YAML进行序列化 241
10.2.7 使用Madeleine进行对象的Prevalence 242
10.2.8 使用DBM库 243
10.3 使用KirbyBase 243
10.4 连接到外部数据库 246
10.4.1 连接到SQLite 246
10.4.2 连接到MySQL 247
10.4.3 连接到PostgreSQL 249
10.4.4 连接到LDAP 251
10.4.5 连接到Oracle 252
10.4.6 使用DBI封装类 253
10.4.7 对象关系映射器(Object-Relational Mapper,ORM) 254
10.5 结语 255
第11章 Ruby的OOP与动态特性 256
11.1 日常OOP任务 256
11.1.1 使用多个构造函数 257
11.1.2 创建实例属性 257
11.1.3 使用更精美的构造函数 258
11.1.4 创建类级属性和方法 259
11.1.5 继承超类 262
11.1.6 测试对象所属的类 264
11.1.7 判断对象的相等性 266
11.1.8 控制对方法的访问 267
11.1.9 复制对象 268
11.1.10 使用initialize_copy 269
11.1.11 理解allocate 270
11.1.12 处理模块 270
11.1.13 对象的变换或转换 273
11.1.14 创建只包含数据的类(Struct) 275
11.1.15 冻结对象 276
11.2 高级技巧 277
11.2.1 向对象发送显式消息 277
11.2.2 对象的特殊化 278
11.2.3 类和模块的嵌套 281
11.2.4 创建参数化类 282
11.2.5 使用继续来实现生成器 284
11.2.6 将代码存储为对象 286
11.2.7 模块包含的工作原理 287
11.2.8 检测默认参数 288
11.2.9 委托或转交 289
11.2.10 自动定义类级Reader与Writer 290
11.2.11 使用高级编程准则 291
11.3 使用动态特性 293
11.3.1 动态地执行代码 293
11.3.2 使用const_get 294
11.3.3 根据名称动态地实例化类 294
11.3.4 获取和设置实例变量 295
11.3.5 使用define_method 296
11.3.6 使用const_missing 298
11.3.7 删除定义 299
11.3.8 获取已定义的实体列表 301
11.3.9 查看调用栈 303
11.3.10 监视程序的执行 303
11.3.11 遍历对象空间 304
11.3.12 处理对不存在的方法的调用 305
11.3.13 跟踪类或对象定义的变更 305
11.3.14 定义对象的finalizer 308
11.4 结语 309
第12章 Ruby的图形界面 310
12.1 Ruby/Tk 310
12.1.1 概述 311
12.1.2 一个简单的窗口应用程序 312
12.1.3 使用按钮 313
12.1.4 使用文本框 315
12.1.5 使用其他窗口部件 318
12.1.6 其他说明 320
12.2 Ruby/GTK2 321
12.2.1 概述 321
12.2.2 一个简单的窗口应用程序 322
12.2.3 使用按钮 323
12.2.4 使用文本框 324
12.2.5 使用其他窗口部件 326
12.2.6 其他说明 329
12.3 FXRuby(FOX) 331
12.3.1 概述 331
12.3.2 一个简单的窗口应用程序 332
12.3.3 使用按钮 333
12.3.4 使用文本框 334
12.3.5 使用其他窗口部件 335
12.3.6 其他说明 342
12.4 QtRuby 342
12.4.1 概述 343
12.4.2 一个简单的窗口应用程序 343
12.4.3 使用按钮 344
12.4.4 使用文本框 345
12.4.5 使用其他窗口部件 346
12.4.6 其他说明 350
12.5 其他GUI工具包 351
12.5.1 Ruby和X 351
12.5.2 Ruby和wxWidgets 351
12.5.3 Apollo(Ruby和Delphi) 351
12.5.4 Ruby与Windows API 352
12.6 结语 352
第13章 Ruby中的线程 353
13.1 创建和操控线程 353
13.1.1 创建线程 354
13.1.2 访问线程的局部变量 354
13.1.3 查询和修改线程状态 356
13.1.4 实现会合点并拦截返回值 358
13.1.5 处理异常 359
13.1.6 使用线程组 360
13.2 同步线程 361
13.2.1 使用临界区执行简单同步 362
13.2.2 同步对资源的访问(mutex.rb) 363
13.2.3 使用预定义的同步队列类 366
13.2.4 使用条件变量 367
13.2.5 使用其他同步技术 368
13.2.6 允许操作超时 370
13.2.7 等待事件发生 371
13.2.8 在I/O期间继续处理 372
13.2.9 实现并行迭代器 373
13.2.10 并行地递归删除 374
13.3 结语 375
第14章 脚本编程与系统管理 376
14.1 运行外部程序 376
14.1.1 使用system和exec 376
14.1.2 命令输出替换 377
14.1.3 操作进程 378
14.1.4 操作标准输入/输出 380
14.2 命令行选项和参数 380
14.2.1 命令行选项的解析 381
14.2.2 使用ARGF 382
14.2.3 使用ARGV 383
14.3 Shell库 383
14.3.1 使用Shell进行I/O重定向 383
14.3.2 有关shell.rb的其他说明 385
14.4 访问环境变量 385
14.4.1 获取和设置环境变量 386
14.4.2 将环境变量存储为数组或散列 386
14.4.3 将环境变量作为全局变量导入 387
14.5 Microsoft Windows脚本编程 387
14.5.1 使用Win32API 388
14.5.2 使用Win32OLE 388
14.5.3 使用ActiveScriptRuby 391
14.6 Windows One-Click安装程序 392
14.7 需要知道的库 393
14.8 使用文件、目录和树 393
14.8.1 文本过滤器简介 394
14.8.2 复制包含符号链接的目录树 394
14.8.3 根据创建日期或其他条件删除文件 395
14.8.4 确定可用磁盘空间 396
14.9 其他脚本编程任务 397
14.9.1 单文件Ruby解决方案 397
14.9.2 在Ruby解释器中使用管道 398
14.9.3 获取和设置退出编码 399
14.9.4 检测程序是否以交互方式运行 399
14.9.5 确定当前平台或操作系统 399
14.9.6 使用Etc模块 400
14.10 结语 400
第15章 Ruby和数据格式 401
15.1 使用REXML解析XML 401
15.1.1 树的解析 402
15.1.2 解析流 403
15.1.3 XPath及其他 404
15.2 使用RSS和Atom 405
15.2.1 rss标准库 405
15.2.2 feedtools库 407
15.3 使用RMagick操作图像数据 408
15.3.1 常见的图形任务 408
15.3.2 特效和变换 411
15.3.3 绘图API 414
15.4 使用PDF::Writer创建PDF文档 416
15.4.1 基本概念和技巧 416
15.4.2 一个示例文档 418
15.5 结语 424
第16章 测试和调试 425
16.1 使用Test::Unit进行测试 425
16.2 ZenTest工具 428
16.3 使用Ruby调试器 431
16.4 将irb用做调试器 434
16.5 度量代码覆盖率 435
16.6 度量性能 435
16.7 对象的完美输出(Prettyprinting) 439
16.8 结语 440
第17章 代码的打包和分发 441
17.1 使用RDoc 441
17.1.1 简单标记 443
17.1.2 高级格式化 445
17.2 安装和打包 445
17.2.1 setup.rb 446
17.2.2 RubyGem 447
17.3 RubyForge和RAA 448
17.4 结语 449
第18章 网络编程 450
18.1 网络服务器 451
18.1.1 一个简单服务器:时间 451
18.1.2 实现多线程服务器 453
18.1.3 案例分析:对等象棋服务器 453
18.2 网络客户端 459
18.2.1 从Web获取真正的随机数 459
18.2.2 连接到官方的时间服务器 462
18.2.3 与POP服务器交互 462
18.2.4 使用SMTP发送邮件 464
18.2.5 与IMAP服务器交互 466
18.2.6 附件的编码和解码 467
18.2.7 案例分析:邮件——新闻网关(Mail-News Gateway) 469
18.2.8 根据URL获取网页 473
18.2.9 使用Open-URI库 474
18.3 结语 474
第19章 Ruby与Web应用程序 475
19.1 使用Ruby进行CGI编程 475
19.1.1 cgi.rb库简介 476
19.1.2 显示和处理表单 477
19.1.3 使用Cookie 478
19.1.4 使用用户会话 478
19.2 使用FastCGI 479
19.3 Ruby on Rails 481
19.3.1 原理和技术 481
19.3.2 Rails应用程序的测试与调试 482
19.3.3 核心扩展 483
19.3.4 相关的工具和库 484
19.4 使用Nitro进行Web开发 484
19.4.1 创建基本的Nitro应用程序 484
19.4.2 Nitro和MVC模式 486
19.4.3 Nitro和Og 489
19.4.4 Nitro中常见的Web开发任务 490
19.4.5 其他重要的细节 492
19.5 Wee简介 494
19.5.1 一个简单的例子 494
19.5.2 将状态与URL关联起来 495
19.6 使用IOWA进行Web开发 496
19.6.1 基本的IOWA概念 496
19.6.2 IOWA中的模板 498
19.6.3 组件控制权转移 499
19.7 Ruby和Web服务器 500
19.7.1 使用mod_ruby 500
19.7.2 使用erb 501
19.7.3 使用WEBrick 503
19.7.4 使用Mongrel 505
19.8 结语 506
第20章 分布式Ruby 507
20.1 概述:使用drb 507
20.2 案例分析:股票机模拟程序 509
20.3 Rinda:一种Ruby元组空间 512
20.4 分布式Ruby中的服务发现 515
20.5 结语 516
第21章 Ruby开发工具 517
21.1 使用RubyGems 517
21.2 使用rake 519
21.3 使用irb 521
21.4 ri工具 525
21.5 编辑器支持 526
21.6 集成开发环境 527
21.7 结语 528
第22章 Ruby社区 529
22.1 Web资源 529
22.2 新闻组和邮件列表 529
22.3 博客和在线杂志 530
22.4 Ruby修订请求 530
22.5 IRC频道 531
22.6 Ruby大会 531
22.7 本地的Ruby用户组 532
22.8 结语 532

作者简介

《The Ruby Way 第二版》中文版采用“如何解决问题”的方式阐述Ruby编程,书中包含400多个按主题分类的示例。每个示例都回答了“如何使用Ruby来完成”的问题。首先对要完成的任务进行了描述,并讨论了技术方面的约束条件;然后逐步地阐述了一种优秀的解决方案。在过程中,作者辅以说明和解释来帮助读者理解。
Amazon网站销量排名前三的Ruby图书,五星重量级推荐!
“《The Ruby Way (第2版)中文版》在阐述元编程(metaprogramming)等方面尤其出类拔萃,而元编程是Ruby最引人注目的方面之一。”
——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
Ruby语言创始人松本行弘为《The Ruby Way (第2版)中文版》的第一,二版分别作序,强烈推荐!
在我们看到这本期待已久的中文版时,《The Ruby Way (第2版)中文版》的作者Hal Fulton已经参加了十月第三周的 RubyConf 2006,同时在准备Addison Wesley专业Ruby系列图书的启动。Ruby on Rail之父David Heinemeier Hansson在接受采访时称:《The Ruby Way (第2版)中文版》在“阐述元编程(metaprogramming)方面尤其出类拔萃,而元编程是Ruby最引人注目的方面之一。”《The Ruby Way (第2版)中文版》的讲解方法别具一格,书中包含400多个按主题分类的示例,每个示例都回答了“如何使用Ruby来完成”的问题。《The Ruby Way (第2版)中文版》在其问世的一年内,就登上了Amazon网站Ruby类图书的销售排名前三甲。Ruby语言的创始人松本行宏按倷不住心中的喜悦,对这《The Ruby Way (第2版)中文版》的第一,第二版分别做了序推荐给所有喜爱Ruby的读者。你还在等什么?
《The Ruby Way (第2版)中文版》涵盖如下主题:
Ruby概述,阐述了术语和基本原理;低级数据类型(数字、字符串、正则表达式等)的运算;新的正则表达式引擎(Oniguruma);国际化(I18N)和Ruby消息目录;散列、数组及其他数据结构(如栈、树和图)的运算;使用I/O、文件和持久化对象; MySQL、SQLite、Oracle、DBI等数据库; Ruby特有的OOP技术及动态编程; Ruby图形界面(Tk、GTK+、Fox和Qt);使用Ruby线程实现轻量级多任务;将Ruby用于编写脚本和系统管理;使用图像文件、PDF、YAML、XML、RSS和Atom; Ruby代码的测试、调试、剖析和打包;低级网络编程和客户/服务器交互; Web开发工具,包括Rails、Nitro、Wee、IOWA等;使用分布式Ruby、Rinda和Ring。 Ruby开发工具,如IDE、文档化工具等。
Ruby是一种面向对象的敏捷语言,借鉴了LISP、Smalltalk、Perl、CLU和其他语言的最佳特性。在《The Ruby Way (第2版)中文版》第一版面世后的5年内,Ruby得以日益流行。

图书封面


 The Ruby Way中文版下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计7条)

  •     说不太准ruby way的含义,因为不只那么几条可以列出来的东西Java的思想都是很好的,但框架太多思想体系太复杂,为了解决一个业务问题需要用到不同的应用服务器、框架、组件,需要将他们整合,在面临各种业务问题时这方面需要的经验和需要投入的精力太多,随之而来的是风险变大.Net一站式解决方案整体看起来也是很好的,因为它的基础就是在一个环境里面提供各方面的解决方案。遗憾的是并没有太多吸收Java的思想,特立独行DSL目标也是要掩盖细节,提供规范、统一、简易的操作方式来处理问题,但只是一种bottom-up的思想Java团队的快速开发框架、Spring等也是想向某个方向发展Eclipse是很成功的,因为它对"混乱的"世界带来了很大的帮助,大家都可以以它为中心来集成,但更多的重心侧重在了开发工具这个层面,因为集成的都是"第三方"的东西ROR呢,没有历史包袱,又能够吸收历史经验教训,接受开发者社区反馈,所以出来了这个ruby way,也正是很多人一直在找的东西
  •     这本书作者的本意是一本ruby工具书,即遇到问题可来查阅。而不是手把手的教程,所以某些地方会写的很简略,以致于连例子都没有(这个很不爽)。所以如果按教程的来阅读的话,如果失望了,不是书的错哦~
  •     作者力求体现的是Ruby的设计哲学(类似Think in Java中介绍java的特性一样)而举得example一般都是技巧性的东西不怎么适合第一次接触动态语言的读者吧The Programming Ruby更适合初学者

精彩短评 (总计27条)

  •       作者力求体现的是Ruby的设计哲学(类似Think in Java中介绍java的特性一样)
      而举得example一般都是技巧性的东西
      不怎么适合第一次接触动态语言的读者吧
      
      The Programming Ruby更适合初学者
      
      
  •     ruby操作中的很多技巧,案头参考书,对我写程序很有帮助,有很多例子
  •       这不是一本入门读物,如果你是一位初学者,在你翻过之后发现和你想的不一样的时候,不要立刻抱怨这本书如何如何不好,请你先了解些基础再回来阅读此书。(如果你有很好的其它语言的基础,可以不必把自己定位为初学者)
      
      和Programming Ruby 2nd这种教材类的书不同,Ruby Way是按照解决问题的主题来组织的内容,所以它适合在你知道了Ruby是怎么回事之后想用它解决问题的时候查阅。Ruby是一种动态语言,和现在主流的Java,C#有很多的不同。你在Java里面拥有的经验多数可以复制到C#上,但是如果你要把原来的做法用在Ruby上就会碰壁。Ruby由于其自身语言的特性,很多问题上都有自己做法。或许,把这些东西称之为道有些夸大其辞,所以我更愿意把这个Way解释为方式或者风格。Ruby Way通过一个个具体问题,将Ruby的编程风格展示在读者的面前。
      
      如果你要学习Ruby,就不是简单的掌握了Ruby的API就能变成了一个合格的Ruby程序员了,你不能用Java或者C#的风格来写Ruby,你要学会的是Ruby的风格,你要用的是Ruby的方式——而这些,就是你在这本书里能得到的。
      
      ps:中文版和英文版我都看过,我自己买了中文版,翻译的还不错,不过在第一章里就发现了一个小的排版问题。27页比较那个表达式的时候,+号前后的空格是有区别的,这里印刷的时候全部成一个样子了。
      
      
      
  •        书写得看上去层次有点高,还没开始就什么老子的道德经来了,作者很想牵强的想要把编程这回事往“道”上靠。
      
       但是看着看着不知道是我自己觉悟不高还是书本来就有问题,总觉得不像那么回事,一切过于牵强!搞得最后写出来的东西不像那么回事!又不像是在写方法学,又不踏实的介绍技术,不伦不类的,读起来很不舒服。
      
      
  •     本来想等有看过的大虾点评一下翻译得怎么样,但一直没有评论,就在chinapub下单了,三天送到,挺快。前言p3“如果读者是ruby新手,也许应该首先阅读其它图书。”我倒!我就是想找本书入门的。
  •     Hal Fulton 不愧是语言和算法的双重大师。他用代码说话,你得细细咀嚼才能品味出他简洁、自然的Ruby 之道。
  •     翻译的怎么样呢?
  •     不是很理想
  •     很不错,受益匪浅!
  •     其实这里的“道”不是哲学方面的道。而是方法论,讲ruby的实现方法而已。
  •     方法、技巧速查,教会你通常rubyist们是如何使用ruby的。
  •     是matz引用了道来说服一种语言它为何诞生。并非本书作者。
  •     放在两年前可以打满分的,更新换代速度太快了
  •     同意!
    JAVA把自己搞复杂了,做了好多费力不讨好的事情,不太考虑“开发者体验”
    Ruby作为新手,有后发展优势,轻装上阵。如果有Sun(Oracle)的持续支持,Ruby会有大发展的
  •       说不太准ruby way的含义,因为不只那么几条可以列出来的东西
      
      Java的思想都是很好的,但框架太多思想体系太复杂,为了解决一个业务问题需要用到不同的应用服务器、框架、组件,需要将他们整合,在面临各种业务问题时这方面需要的经验和需要投入的精力太多,随之而来的是风险变大
      
      .Net一站式解决方案整体看起来也是很好的,因为它的基础就是在一个环境里面提供各方面的解决方案。遗憾的是并没有太多吸收Java的思想,特立独行
      
      DSL目标也是要掩盖细节,提供规范、统一、简易的操作方式来处理问题,但只是一种bottom-up的思想
      
      Java团队的快速开发框架、Spring等也是想向某个方向发展
      Eclipse是很成功的,因为它对"混乱的"世界带来了很大的帮助,大家都可以以它为中心来集成,但更多的重心侧重在了开发工具这个层面,因为集成的都是"第三方"的东西
      
      ROR呢,没有历史包袱,又能够吸收历史经验教训,接受开发者社区反馈,所以出来了这个ruby way,也正是很多人一直在找的东西
  •     Back to ruby
  •     相当不错,比较侧重ruby的思想
  •     近期阅读的技术书籍
  •     翻译的很不错,内容也很实在.
  •     知识点有点多,但是感觉programming ruby 也很多,慢慢来咯
  •     还行吧... 可能因为我是以rails入道, 对ruby不太了解
  •       虽说在 Python 的影响下,我有些先入为主的不喜欢 Ruby,但 Ruby 作为近几年来的业界宠儿,必然有它出众的地方,值得关注,所以我前几天去图书馆的时候就打算找本 Ruby 的书看看——在没有计划要用它做开发的情况下,我不想太“严肃”地去学习 Ruby,却又不想看 Learn Ruby in 20 minutes 之类的东西,因此最终选择了 The Ruby Way 这本书。
      在粗略的翻阅之后,我认为这本书的名字起错了。
      The Ruby Way 这个名字很容易让人以为它是一本讲设计理念或是方法论的书,而很可惜它不是当中的任何一种。如果让我把名字改一改的话,鉴于它的内容编排十分类似于 Python 的 Library Reference —— 只是多了一点对语法的介绍——我提议用 Ruby Cookbook II (因为已经有一本 Ruby Cookbook 了) 或 Ruby Reference。拿它当参考书是挺不错的。
      所以呢,如果你也只是想走马观花地了解一下 Ruby 的话,这本书会适合你的。而如果你想“严肃”地学习 Ruby, Programming Ruby 也许才是正确的选择。
  •     其实是很好的一本书了,翻译的也不错。本书更多偏重Ruby的通用设计理念及技巧,当然也有一些基础知识的讲述。我觉得还是面向中、高级读者比较合适,有点儿像Java领域的<Effective Java>
  •       这本书作者的本意是一本ruby工具书,即遇到问题可来查阅。而不是手把手的教程,所以某些地方会写的很简略,以致于连例子都没有(这个很不爽)。所以如果按教程的来阅读的话,如果失望了,不是书的错哦~
  •     当参考书不错,和ruby cookbook是同一类书。
  •     姐姐送的
  •       Ruby的OOP与动态特性
      http://www.infoq.com/cn/articles/the-ruby-way-book
      
      挺不错的一本书。
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024