Ruby标准库读后感

January 29, 2014 18:19


快过年了,这几天都没什么事,于是就想着去看看Ruby的标准库,说实在的,当初学ruby时还是1.8.7, 只看从Ruby锄头书上把语法看了个大概,后来开始用了,也没怎么再去学习基础了.

感觉不知道的太多了,闲来无聊就去 http://ruby-doc.org 上把2.1.0的所有Standard Library都粗看了 一遍,有兴趣的就动手写写,实践下。嗯,又长知识了,下面说些自己感兴趣的东东, 这些基本上都是我不了解的,使用Ruby以来一直没接触过的东西

直接按目录顺序也就是字母顺序来吧,首先Base64,好吧,我承认我看了这里才知道, 这64个字符是Base64编码中的。。

Benchmark, 可以打印出Ruby代码执行时间相关的,简单的输出就和time命令一样, 不过里面也有对多个代码块执行时间的输出,还有输出的格式之类的,看了这, 我觉得我又二了,以前测试执行时间一直是自己定义个Time方法,然后老老实实的用 结束时间减开始时间

Coverage, 测试代码覆盖率的,看到这里时,才知道原来还有这东西,以前一直不知道代码覆盖率 是怎么实现的,这里才知道还有这个库。顺便说一下,使用过的一个Ruby测试代码覆盖率的库: simplecov,可以生成HTML页面,感觉还不错的一个Gem

DRb 是一个Ruby的分布式对象系统,使用的纯Ruby编写的,使用的是自己的协议,不依赖于其它组件, 这个我只是粗略的看了下,写了点代码使用了下。可以直接调用其它Ruby进程中的对象方法, 这个进程可以在本机,也可以是在其他电脑上的Ruby进程。当然,远程机器需要设置好安全级别, 以免受到攻击,按文档里说的,支持所有的对象,可以执行代码块,代码块好像是使用远程的context, 在本地执行的,具体的这一下也懒的去弄明白了,以后有时间,比较想玩玩这个,哈哈

dl, Findle, 都是用于调用C library的,dl已经被弃用了,Findle是 libffi 的Ruby 包装, 写了两句C,试着调用了一下,感觉还不错,比较简单的。在以前的记忆中,感觉调用一个C library 是比较麻烦的,今天看了这个library,感觉确实简单

GetoptLong, OptionParser, 两个一起说了吧,想以前我不知道这两东东,写Gem时, bin执行文件都手动处理传入的参数,泪流满面啊。 GetoptLong是 GNU getopt_long C library 的一个Ruby实现, 而OptionParser,按文档里说的差不多就是更容易使用,"a more Ruby-oriented solution", 英文烂,实在是翻译不好,直接复制一句上来吧,哈哈,试用了下,确实不错, 又想起了手动处理参数的情景。。。。

mkmf.rb is used by Ruby C extensions to generate a Makefile which will correctly compile and link the C extension to Ruby and a third-party library. 好吧,我也看不太明白,只知道是生成Makefile的,Makefile以前到是也写过。。。

Observer, 这个其实以前也听过,有些了解,感觉就和Javascript的事件系统差不多, 今天早上刚好从这里开始看,就按着Example写了一遍,确实和我所想的没多大区别,不过, 也了解了一下这样在Ruby中的实现,以及简单的使用方式,感觉还是不错的。 其实也就给对象加一堆观察者,然后在需要时,给每一个观察者发送一个消息

Profile, 一个代码执行的分析程序,可以给出每个方法的调用次数,方法的执行时间等, 从这些报告中要以检查出代码的性能瓶颈,运行代码时加个参数自动require就可以了 "ruby -rprofile example.rb"

Tracer, 这个是输出Ruby代码执行过程,跟踪每一个操作,同样使用时也可以手动require, 或是执行ruby 命令时加 -r参数自动require

WeakRef, 弱引用类,被引用的对象可以被GC回收掉,使用也很简单WeakRef.new(foo), 当foo只被WeakRef引用时,那么在GC时这个变量将会被回收

Zlib, 最后就是Zlib了,遇到过这东东报错,不过当时也没怎么去了解它,这个library提供了对 Zlib 库的访问,按文档上的说明,这个Library是可移植的,自由的,通用的,不受任何专利限制的, 一堆。。。 这个压缩库提供了在内容中压缩及解压功能,恩总的来说,他就是一个数据压缩的Library

好了,基本上所有的标准库都有了些了解了,在这两天里,把这些库看完,收获不小, 其实我比较感兴趣的就是DRb, Findle, 一个分布式的,一个调用C 库的,嘿嘿, 在这两天里,我渣渣的Ruby基础又提升了一小截了,哈哈

Comments: