词条 | RubyCookbook中文版 |
释义 | 《RubyCookbook》是针对Ruby编程语言的全面的问题求解指南。它为真实世界的问题提供了上百种解决方案,并带有清楚的解释和上千行可用于用户自己项目中的代码。从数据结构和算法到对最前沿技术的集成。学到如何使用下列内容进行编程:字符串和数字、数据库、数组和哈希表、图像、类、模块和命名空间、互联网服务,如电子邮件、SSH和BitTorrent、反射机制和元编程(metaprogramming)、XML和HTML文件处理、多任务、RubyonRails(包括Ajax集成)、图形界面和终端界面 书名:RubyCookbook中文版 又名:RubyCookbook 作者:卡尔松 理查得松 译者:郑路长 ISBN:9787302147701 类别:资料教材 定价:108.00元 出版社:清华大学出版社 出版时间:2007-4-1 前言这是一本关于秘诀的书籍,其中包括:对一般问题的解决方案、复制和粘贴代码段、解释、示例和简短指南。本书意欲为读者节省时间。人们总是说,时间就是金钱,但时间也是个人生命的构成。我们的生命应当花在创造新事物上,而不是用于抗击我们自己的错误或者解决那些已经解决过的问题。我们提供此书的愿望是:它的所有读者所节省的时间远远超过我们编写它所花掉的时间。 Ruby编程语言本身是一种非常节省时间的工具,与其他编程语言相比,它能产生更高的生产率,因为用户会花费更多的时间让计算机做自己想做的事情,而思考语言本身的时间则较少。但是,对于一名Ruby程序员,可能有很多情况即使没做任何事情也花费了 很多时间,下面是我们遇到过的各个方面: 将时间花在编写通用算法的Ruby实现上。 将时间花在调试通用算法的Ruby实现上。 将时间花在发现和修正Ruby特有的缺陷上。 将时间花在应当自动执行的重复性任务上(包括重复性编程任务!)。 将时间花在重复其他人已经公开实现过的工作上。 将时间花在搜索运行X的库上。 将时间花在对运行X的多个库进行评估和确定上。 将时间花在由于文档的匮乏或过时而学习如何使用库上。 将时间浪费在由于惧怕而不敢接触有用的技术上。 我们以及本书的许多投稿人还清楚地记得我们自己浪费的那些时日。我们将自己的经历提炼进本书中,从而让读者不再浪费自己的时间——或者至少让读者愉快地将时间花在其他更有趣的问题上。 我们的另一个目标是扩大读者的兴趣。如果读者阅读本书后希望能够使用Ruby生成算法音乐,没问题,12.14节将会节省读者的时间。迄今为止,读者更可以不必考虑可能性问题。本书中每个秘诀的形成和编写都在理念上带有如下这样两个目标:节省读者时间以及让读者的头脑对新观点保持活跃。 关于RubyRuby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java 平台)、IronRuby等其他平台的 Ruby 语言替代品。Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。因为Perl发音与6月诞生石pearl(珍珠)相同,因此Ruby以7月诞生石ruby(红宝石)命名。 作者简介LucasCarlson是一个专业Ruby程序员,专长RailsWeb开发。他已经负责编写了6个库,同时为很多其他库做出了贡献,其中包括Rails和RedCloth。他住在俄勒冈州波特兰市。 目录前言1 第1章 字符串13 1.1根据部分构建字符串16 1.2将变量代入字符串18 1.3将变量代入现有的字符串20 1.4按字或字符逆转字符串22 1.5表示不可打印字符23 1.6字符与值的相互转换26 1.7字符串与符号之间的相互转换27 1.8每次处理字符串中的一个字符28 1.9每次处理字符串中的一个字30 1.10修改字符串的大小写32 1.11管理空白34 1.12测试对象是否类似于字符串35 1.13获得想要的字符串部分36 1.14处理国际编码38 1.15带自动换行的文本39 1.16生成字符串的后继41 1.17使用正则表达式匹配字符串44 1.18一遍替换多种模式46 1.19验证电子邮箱地址47 1.20 使用贝叶斯分析器对文本进行分类50 第2章 数字53 2.1由字符串分析数字54 2.2浮点数的比较57 2.3表示数字至任意精度59 2.4有理数的表示62 2.5随机数的生成64 2.6数字基之间的转换66 2.7获取对数67 2.8确定平均数、中值和模69 2.9度数与弧度之间的转换72 2.10矩阵乘法74 2.11求解线性方程组79 2.12复数的使用81 2.13模拟Fixnum的子类84 2.14使用罗马数字进行数学运算88 2.15生成数字序列93 2.16生成素数96 2.17检查信用卡校验和99 第3章 日期与时间102 3.1查找当前日期105 3.2精确或模糊地分析日期108 3.3打印日期111 3.4日期上的迭代117 3.5计算日期119 3.6从任意日期开始计算天数121 3.7时区转换123 3.8检查夏令时是否起效126 3.9Time与DateTime对象之间的转换127 3.10查找周日期130 3.11处理商用日期132 3.12周期性运行代码块133 3.13等待固定长度的时间135 3.14为长期运行的操作添加超时138 第4章 数组140 4.1在数组上迭代142 4.2不使用临时变量重排值146 4.3去除数组中的重复元素148 4.4逆转数组149 4.5数组排序150 4.6排序字符串时忽略大小写152 4.7确保已排序数组保持有序153 4.8数组项求和158 4.9按出现率排序数组159 4.10打乱数组161 4.11获取数组的N个最小项163 4.12使用Injection构建散列 165 4.13提取部分数组167 4.14在数组上处理集合运算170 4.15集合划分或分类173 第5章 散列177 5.1使用符号作为散列键179 5.2创建带默认值的散列181 5.3向散列添加元素182 5.4从散列中去除元素185 5.5使用数组或其他可修改对象作为散列键186 5.6为相同散列键保持重复值188 5.7在散列上迭代190 5.8按插入顺序在散列上迭代192 5.9散列打印193 5.10反转散列196 5.11随机选择加权列表197 5.12构建柱状图200 5.13重新映射散列的键与值202 5.14提取部分散列203 5.15使用正则表达式搜索散列204 第6章 文件与目录206 6.1检查文件是否存在209 6.2检查对文件的访问210 6.3更改文件权限212 6.4查看上次使用文件的时间216 6.5目录清单217 6.6读取文件内容220 6.7写文件224 6.8写临时文件225 6.9从文件中挑选随机行227 6.10比较两个文件228 6.11在“只读一次”输入流上执行随机访问232 6.12遍历目录树234 6.13文件加锁237 6.14备份至带版本号的文件名240 6.15伪装字符串为文件242 6.16重定向标准输出或输出245 6.17处理二进制文件247 6.18删除文件251 6.19截短文件252 6.20查找所需文件253 6.21查找并修改当前工作目录255 第7章 代码块与迭代257 7.1代码块的创建与调用260 7.2编写接收代码块的方法262 7.3将代码块参数与变量绑定264 7.4作为闭包的代码块:在代码块内使用外部变量267 7.5在数据结构上编写迭代器268 7.6更改对象的迭代方式271 7.7编写分类或收集的代码块方法273 7.8停止迭代275 7.9并行地在多个迭代变量上循环277 7.10隐藏块方法中的设置与清除281 7.11使用回调的松耦合系统284 第8章 对象与类288 8.1管理实例数据290 8.2管理类数据293 8.3检查类或模块的成员296 8.4编写一个继承类298 8.5方法重载300 8.6验证并修改属性值302 8.7定义虚属性304 8.8授权对另一对象的方法调用305 8.9对象到不同类型的转换与强制转换308 8.10从任意对象获取人类可读的打印输出312 8.11接收或传递参数的变量数目315 8.12模拟关键字参数317 8.13调用超类的方法319 8.14创建抽象方法321 8.15冻结对象以防修改324 8.16生成对象的副本326 8.17声明常量329 8.18实现类方法和singleton方法331 8.19通过私有化方法控制访问333 第9章 模块与命名空间337 9.1使用混入模拟多重继承 337 9.2使用模块扩展特定对象341 9.3混用类方法343 9.4实现Enumerable:编写一个方法,获得22种免费方法345 9.5使用命名空间避免名字冲突347 9.6按需自动加载库349 9.7包括命名空间351 9.8初始化模块定义的实例变量352 9.9自动初始化混合插入的模块353 第10章 反射与元编程357 10.1查找对象的类和超类358 10.2列出对象的方法359 10.3列出对象独有的方法362 10.4获得方法的引用363 10.5修正别人类中的错误365 10.6侦听类的变化367 10.7检查对象是否具有必需的属性369 10.8响应对未定义方法的调用371 10.9自动初始化实例变量375 10.10使用元编程避免刻板代码377 10.11带字符串计算的元编程379 10.12计算早先上下文中的代码382 10.13取消定义方法383 10.14为方法起别名386 10.15面向方面的编程389 10.16强制实施软件契约391 第11章 XML和HTML396 11.1检查XML的良构性397 11.2从文档的树结构中提取数据399 11.3解析文档时提取数据401 11.4使用XPath导航文档403 11.5解析不合法标记405 11.6将一个XML文档转换为一个散列408 11.7验证XML文档411 11.8取代XML实体414 11.9创建并修改XML文档417 11.10压缩XML文档中的空白420 11.11猜解文档的编码422 11.12从一种编码转换为另一种编码423 11.13从HTML文档中提取所有URL424 11.14将纯文本转换为HTML428 11.15将HTML文档从Web转换为文本429 11.16一个简单的提要聚合器432 第12章 图形与其他文件格式437 12.1缩略图形437 12.2向图形中添加文本440 12.3将一个图形格式转换为另一种443 12.4用图表示数据446 12.5使用Sparkline添加图形化上下文449 12.6强加密数据453 12.7解析逗号分隔的数据455 12.8解析非完全逗号分隔的数据457 12.9生成并分析Excel电子数据表459 12.10使用Gzip和Tar压缩并存档文件462 12.11读写ZIP文件465 12.12读写配置文件467 12.13生成PDF文件468 12.14将数据表示为MIDI音乐473 第13章 数据库和持久性477 13.1用YAML串行化数据480 13.2用Marshal串行化数据484 13.3用Madeleine保持对象485 13.4用SimpleSearch索引结构化文本488 13.5用Ferret索引结构化文本490 13.6使用Berkeley DB数据库493 13.7在Unix上控制MySQL495 13.8找到查询返回的行数496 13.9与MySQL数据库直接对话499 13.10和PostgreSQL数据库直接对话501 13.11用ActiveRecord使用对象相关映射504 13.12使用对象相关映射Og508 13.13以编程方式构建查询512 13.14用ActiveRecord确认数据516 13.15阻止SQL注入攻击519 13.16在ActiveRecord里使用交易522 13.17添加挂钩程序到表事件中524 13.18用数据库Minxin添加标签526 第14章 Internet服务531 14.1抓取Web页面的内容532 14.2发送HTTPS Web请求534 14.3自定义HTTP的请求头文件536 14.4执行DNS查询539 14.5发送邮件541 14.6用IMAP阅读邮件545 14.7用POP3阅读邮件549 14.8作为FTP客户端552 14.9作为Telnet客户端554 14.10作为SSH客户端558 14.11复制文件到其他机器560 14.12作为BitTorrent客户端561 14.13ping机器 564 14.14编写Internet服务器 565 14.15分析URL567 14.16编写CGI脚本570 14.17设置cookie和其他HTTP响应头文件573 14.18用CGI处理文件上传575 14.19用WEBrick运行servlet578 14.20真实世界的HTTP客户端584 第15章 Web开发:Ruby on Rails588 15.1编写简单的Rails应用程序显示系统状态590 15.2 从控制器传递数据到视图593 15.3创建页眉和页脚的布局596 15.4重新定位不同的位置599 15.5用render显示模板601 15.6集成数据库到Rails应用程序中604 15.7理解复数规则607 15.8创建登录系统609 15.9保存散列化的用户密码到数据库中613 15.10转义显示用的HTML和JavaScript615 15.11设置并找回会话信息616 15.12设置并找回Cookie619 15.13提取代码到辅助函数中621 15.14重构视图为视图的部分片断623 15.15用script aculo us添加DHTML效果627 15.16生成操作模型对象的表格629 15.17创建Ajax表格633 15.18在Web站点上发布Web服务636 15.19用Rails发送邮件639 15.20自动发送错误信息到邮箱641 15.21文档化Web站点643 15.22Web站点的单元测试645 15.23在Web应用程序中使用断点648 第16章 Web服务及分布式编程652 16.1搜索Amazon上的书653 16.2找到Flickr上的照片656 16.3编写XML-RPC客户端659 16.4编写SOAP客户端662 16.5编写SOAP服务器663 16.6用Google的SOAP服务搜索Web665 16.7使用WSDL文件更简单地构建SOAP调用667 16.8用信用卡支付669 16.9通过UPS或FedEx找到装运包的费用671 16.10在任意数目的计算机间共享散列672 16.11实现分布式查询676 16.12创建共享的“白板”678 16.13通过访问控制列表保障DRb服务的安全682 16.14通过Rinda自动发现DRb服务683 16.15代理无法分布的对象 685 16.16用MemCached在分布式RAM上保存数据 688 16.17用MemCached高速缓存重要结果690 16.18远程控制的Jukebox694 第17章 测试、调试、优化以及文档化700 17.1只在调试模式下运行代码701 17.2发出异常703 17.3处理异常705 17.4在异常后重新运行707 17.5添加日志到应用程序中709 17.6创建并理解Traceback711 17.7编写单元测试714 17.8运行单元测试717 17.9测试使用外部资源的代码720 17.10使用断点审查并改变应用程序的状态724 17.11文档化应用程序727 17.12记录应用程序731 17.13Benchmark竞争性解决方案734 17.14一次运行多个分析工具736 17.15谁调用了该方法?调用图形分析器738 第18章 打包和发布软件741 18.1通过查询gem知识库寻找库742 18.2安装并使用gem745 18.3要求gem的某个特定版本748 18.4卸载gem751 18.5为已安装的gem读入文档752 18.6打包代码为gem754 18.7发布gem757 18.8用setup.rb安装并创建独立Ruby程序包760 第19章 用Rake自动执行任务763 19.1自动运行单元测试765 19.3清除生成的文件770 19.4自动构建gem771 19.5收集代码的统计信息773 19.6发布文档776 19.7并行运行多个任务778 19.8通用的项目Rakefile779 第20章 多任务和多线程787 20.1在Unix上运行守护进程788 20.2创建Windows服务791 20.3用线程一次做两件事情795 20.4同步访问一个对象797 20.5中止线程800 20.6在很多对象上同时运行代码块802 20.7用线程池限制多线程805 20.8用popen驱动外部进程808 20.9通过Unix shell命令抓取输出和错误流810 20.10控制其他机器上的进程811 20.11避免死锁812 第21章 用户界面816 21.1一次得到输入中的一行817 21.2一次得到输入的一个字符819 21.3分析命令行参数822 21.4测试程序是否交互运行825 21.5设置和卸载Curses程序825 21.6清空屏幕828 21.7决定终端大小829 21.8改变文本的颜色831 21.9读入密码834 21.10允许用Readline编辑输入835 21.11使得键盘指示灯闪烁836 21.12用Tk创建一个GUI应用程序839 21.13 用wxRuby创建一个GUI应用程序843 21.14用Ruby/GTK创建一个GUI应用程序847 21.15用RubyCocoa创建一个Mac OS X应用程序851 21.16用AppleScript得到用户输入859 第22章 用其他语言扩展Ruby861 22.1为Ruby编写C扩展程序862 22.2在Ruby中使用C库865 22.3通过SWIG调用C库869 22.4通过SWIG调用C库871 22.5用JRuby使用Java库874 第23章 系统管理878 23.1脚本化外部程序879 23.2管理Windows服务880 23.3作为另一个用户运行代码882 23.4不用cron或at运行周期性任务884 23.5删除匹配正则表达式的文件885 23.6批量重命名文件888 23.7找到复制的文件891 23.8自动备份894 23.9在用户目录下规范化所有权和权限895 23.10为给定用户杀死所有进程898 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。