The Ruby Way中文版txt,chm,pdf,epub,mobi下载 作者:富尔顿(Hal Fulton) 出版社: 人民邮电出版社 译者:陈秋萍 出版年: 2007年11月1日 页数: 532 页 定价: 79.00元 装帧: 平装 ISBN: 9787115166692 内容简介 · · · · · ·《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版)中文版》的第一,二版分别作序,强烈推荐! 在我们看到这本期待已久的... 目录 · · · · · ·第1章 Ruby概述 11.1 面向对象简介 2 1.1.1 什么是对象 2 1.1.2 继承 3 1.1.3 多态 4 1.1.4 其他术语 5 · · · · · ·() 第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 · · · · · · () |
不错,强烈推荐!
哲学问题
很不错啊啊
果然有独到的见解