ruby & rails
dennis_zane
这个作者很懒,什么都没留下…
展开
-
使用ruby备份你的blog
虽然sohu不大可能倒闭,但是我也想导出我所有的文章,备份在自己的数据库中。javaeye的blog系统提供了一个blog导入导出的功能,用起来很酷。其实你自己用ruby写一下也很简单,比如我要读取我的blog的RSS源:require 'rss/2.0'require 'open-uri'url = 'http://dennnis-zane.blog.sohu.com/rss'feed = R...2007-02-06 12:57:00 · 114 阅读 · 0 评论 -
Ruby 1.9概要(3)类和模块
三、类和模块1、Module#instance_methods, #private_instance_methods, #public_instance_methods Module这三个方法都将返回方法名的symbol组成的数组,而非过去的字符串数组。2、Module#const_defined?, #const_get 这两个方法都添加一个参数flag,用来决定是否将它的ancest...2008-10-01 13:52:00 · 156 阅读 · 0 评论 -
Ruby 1.9概要(2)Kernel和Object
二、Kernel 和 Object1、引入了BasicObject对象,作为一个顶级的空白状态对象:BasicObject.instance_methods # => [:==,:equal?,:"!",:"!=",:__send__]Object.ancestors # => [Object, Kernel, BasicObject]引入这个对象...2008-10-01 13:48:00 · 127 阅读 · 0 评论 -
Ruby 1.9概要(1)新的语法和语义
一、新的语法和语义1、新的Hash定义语法:例如{a:2} 等价于 {:a=>2}但是 {"a":2} 出错,并不等价于 {:"a"=>2}2、试验性质的block内的局部变量在1.8,block的与外部同名的变量是同一个变量,也就是说block内的变量也可以修改外部的同名变量,这很容易形成难以查找的bug。例子:# {常规参数;局部变量}d = 2...2008-10-01 13:37:00 · 133 阅读 · 0 评论 -
Ruby小技巧:处理方法调用中的nil
读blog看到的一个小技巧,原文在这里。 我们常常处理这样的代码:name=person?person.name:nil 取某个对象的一个属性,先判断对象是否为nil,不是nil就返回对象属性,否则返回nil。这样的代码写多了比较恶心,是否有比较有趣的方式来减少代码?作者给出了一段代码:module ObjectExtension def nil_or ...2008-02-19 13:41:16 · 349 阅读 · 0 评论 -
expectations——轻量级的单元测试框架
项目主页:http://expectations.rubyforge.org/安装的话:gem install expectations它将测试分为state based和behavior based,语法很DSL,作者写了篇文章《implementing internal dsl in ruby》例子, state base test: # State based expecta...2008-02-16 10:05:30 · 488 阅读 · 0 评论 -
JRuby中使用接口和抽象类
要在JRuby中实现java接口,接口include进来,实现接口方法即可,例如实现java.lang.Runnable接口做线程处理:require 'java'include_class 'java.lang.Runnable'class TestRunnable include Runnable def initialize(name) @na...2008-02-15 14:36:25 · 81 阅读 · 0 评论 -
google translator 0.2
过去写的那个利用google在线翻译的小脚本工具一直在用,今天用的时候,突然想,我今年不是想加强下英语学习吗?那么把每天查过的单词保存下来,每天早上或者上班空闲期间花那么几分钟记忆复习下这些单词不是很好,毕竟技术性文章翻来覆去运用的单词就那么多,过去没有注意积累,导致常常还得重新查,所谓提高也就放在口头上了。说改就改,脚本语言改起来就是容易:#利用google在线翻译,翻译中...2008-02-14 11:17:28 · 230 阅读 · 0 评论 -
JRuby的性能优化
越来越觉的JRuby是个很有前途的项目,结合Ruby的性感语法和java极其丰富的类库,况且有团队持续不断地修正bug、改进性能,这样的玩意完全有成为“少男杀手”的潜质。JRuby wiki上列出了性能优化的四条建议:1、调优编译器,JRuby早就弃暗投明跟随XRuby走上了编译这条牛B的道路,将Ruby Script编译成字节码,因此这个环节是断断不能忽略的。两种编译方式:AO...2008-01-31 19:02:18 · 112 阅读 · 0 评论 -
Ruby 1.9概要(4) Block和Proc
1、Proc加了新方法Proc#yield,这只是Proc#call的别名方法,是为了能让Proc也可以像block那样传入方法并且调用yield。a_proc = Proc.new {|a,b| a+b}a_proc.yield(1,2) # => 3def test(&block) block.yield(1,2...2008-10-02 13:54:00 · 86 阅读 · 0 评论 -
Ruby 1.9概要(5) 异常
1、异常的相等性,如果两个异常的class、message和backtrace一样,那么认为这两个异常是相等的,可以通过==判断。def method raise 'foobar'enderrors = []2.times do Thread.new do begin method rescue =>...2008-10-03 13:26:00 · 103 阅读 · 0 评论 -
使用Ruby amb解决说谎者谜题
说谎者谜题是sicp4.3.2小节的一道题目,题目本身不难:五个女生参加一个考试,她们的家长对考试结果过分关注。为此她们约定,在给家里写信谈到考试的时候,每个姑娘都要写一句真话和一句假话。下面是从她们的信里摘抄出来的句子:Betty : kitty考第二,我只考了第三Ethel : 你们应该很高兴听到我考了第一,joan第二joan : 我考第三,可怜的Ethel垫底kitt...2008-11-15 18:50:00 · 198 阅读 · 0 评论 -
lua 5.0的实现(翻译)1,2,3部分
三个多月前翻译的,今天又找出来看看,后面的整理再发。 原文:http://www.tecgraf.puc-rio.br/~lhf/ftp/doc/jucs05.pdf翻译:dennis zhuang (killme2008@gmail.com) http://www.blogjava.net/killme2008转载请注明出处,谢谢。 摘要:我们讨论了lua 5.0实现的主要新...2008-04-07 17:28:24 · 171 阅读 · 0 评论 -
Ruby代码调整性能优化的几个Tip
数据都是在我的机器上测试所得,我的机器配置:AMD athlon 64 x2 Dual 4000+ 2.11Ghz,1.87G内存。cruby版本是1.8.6,jruby是1.1RC3。操作系统是xp sp2。1、将繁忙的循环放在内层,比如下面的代码:a=0 for i in 0..1000 for j in 0..10 a+=(i+j) endend ...2008-03-27 09:49:02 · 214 阅读 · 0 评论 -
使用JProfiler监控JRuby脚本的运行
jruby本质上也是启动一个jvm,然后去读Ruby脚本并解释执行(或者编译),因此jprofiler理所当然也可以去监控jruby脚本的执行。执行 jruby hello.rb等价于执行:java -Xmx378m -Xss1024k -Djruby.home=/usr/local/jruby -Djruby.lib=/usr/local/...2008-03-24 15:32:16 · 123 阅读 · 0 评论 -
发布swf-util 0.01
swf-util是一个使用Ruby读取swf头信息(高度、宽度、文件大小、帧数等等)、压缩和解压缩swf文件的工具类库,改写自java版本。项目主页:http://code.google.com/p/swf-util/协议:MIT License依赖BitStruct,请到这里下载安装bit-struct。使用例子:#read swf headrequire 'swf_util'he...2008-03-11 14:49:36 · 86 阅读 · 0 评论 -
用Ruby写个NFA
今天有点空闲,想想用Ruby写个NFA试试。从正则表达式构造NFA采用经典的Thompson算法:正则表达式 -> 后缀表达式->构造NFA。构造了NFA后,用之匹配字符串。一句话,写了个玩具的正则表达式引擎,支持concatenation、alternation以及*、?、+量词,不支持反向引用和转义符。测试了下与Ruby自带的正则表达式引擎的性能对比,慢了3倍。构造N...2008-02-25 17:49:50 · 119 阅读 · 0 评论 -
swfheader 0.10 Released
swfheader是一个处理swf文件的工具脚本,可用于读取swf文件头信息、压缩和解压缩swf文件。很早以前发布过一个0.01版。最近复审了代码,发现了一个愚蠢的读二进制文件错误导致没办法正确的解压或者压缩swf文件。今天更正了此bug,重构了部分代码并做了更多测试,已经可以正常使用。项目地址:http://code.google.com/p/swf-util/项目描述: ...2008-10-11 23:41:35 · 106 阅读 · 0 评论 -
Ruby Tip——读文件
Ruby如何简洁地读整个文件,你可以这样做:f=File.open("test.log","r")result=''f.each_line do |line| result+=lineendputs result但是,更简洁的方法是:File.open("test.log","r"){ |f| f.collec...2008-10-07 09:38:00 · 80 阅读 · 0 评论 -
为BitStruct添加list类型
class BitStruct def self.list(name,element) module_eval <<-HERE rest :body def #{name.to_s}=(elist) e=Object.const_get(:#{element}) if elist.respond_to? :each...2008-01-27 15:50:03 · 108 阅读 · 0 评论 -
Ruby处理二进制
分析二进制协议或者存取二进制文件是个很常见的需求,Ruby的IO提供了对二进制的读操作,但是写入却只提供字符。并且读的操作也比较笨拙,例如,在c里面的话,我们一般是定义个struct,然后:fread(record, sizeof(record), 1, stream);在java里,也是比较容易,特别是nio引入了ByteBuffer之后就更方便了。Ruby的话,我得自己确...2008-01-25 18:58:44 · 843 阅读 · 0 评论 -
让ruby简化你的工作之blog阅读器
阅读专家和牛人的blog已经是我学习的一种主要方法之一,我每天的必做的就是关注下dreamhead、gigix、江南白衣、robbin、李锟等牛 人的blog是不是有什么新文章。不过我非常讨厌安装商业公司的rss阅读器,我害怕他们是流氓软件!而且很多阅读器的文章格式与原文有较大差异从而导致 重要信息的丢失,我还是喜欢用firefox畅游网络,这导致我不得不一次一次地在各个blog间跳转,打...2007-07-09 15:16:55 · 79 阅读 · 0 评论 -
rails应用遍历Controllers目录并取出所有的Controller和action
今天在javaeye论坛上看到有人有这个需求,顺手写了下。原理就是通过遍历Controllers目录,并用正则表达式取出Controller名和它所有的action。 @controllers=Hash.new path="#{RAILS_ROOT}/app/controllers/" Dir.new(path).entries.each do |f| ...2007-04-05 20:21:00 · 178 阅读 · 0 评论 -
介绍下XRuby项目
XRuby是什么?它是一个编译器。与其它编译器一样,它完成的工作是将一种格式的语言转换成另一种。与大多数编译器不同的是,它是将Ruby的代码(.rb)转换成Java的bytecode(.class)。Xruby是一群中国开发者维护的项目,它的目的如上所述。它的主页是http://code.google.com/p/xruby/。与JRuby不同,JRuby一开始是想使用java写ruby解析...2007-03-29 11:53:00 · 159 阅读 · 0 评论 -
为你的ROR应用安装FCKEditor
FCKEditor是一个开源的,功能强大的富文本编辑器,在官方主页上有提供ASP,JSP,ASP.NET,PHP等版本,目前还没有rails的版本(可以设置,主要是要自己实现上传等功能),不过有一个plugin来实现此功能,有上传文件、拼写检查的功能。1。首先到http://rubyforge.org/frs/?group_id=2038,下载0.3版本,解压缩后重命名文件夹为fckeditor,...2007-02-06 13:41:00 · 85 阅读 · 0 评论 -
rails流程图
读R4R,才读完第2章,前两章没什么新内容,算是复习吧 rails的lifecycle: 从浏览器发起一个请求的基本流程: A.server to dispatcher 服务器通过你指定的路径查找dispatcher,比如,你在apache配置: <VirtualHost www.r4rmusic.com>ServerName www.r4rmusic.com...2007-02-06 13:37:00 · 115 阅读 · 0 评论 -
ruby动态new对象
来自railscn的讨论: http://www.railscn.com/viewtopic.php?t=2289 1 . eval " obj = #{str}.new " # 只能在irb中使用 ...2007-02-06 13:35:00 · 123 阅读 · 0 评论 -
ruby实现抽象类和抽象方法
ruby语言本身并没有提供abstract class和abstract method机制。这是ruby的spirit所决定的。但如果我们真的需要定义一个公共抽象类(或者抽象方法)来让子类来实现,又该如何做呢? 我们可以通过在调用方法时抛出NotImplementedError来防止方法被调用。如(来自《ruby cookbook》的例子): class Shape2D def ...2007-02-06 13:07:00 · 227 阅读 · 0 评论 -
使用ruby解析json
rails1.1已经加入对json的全面支持,现在的Array,Hash,String,Object...等等都有一个to_json方法,生成 json字符串。反过来,我们该如何解析json呢?查了下http://www.json.org/上面ruby语言的链接,在rubyforge上找到了一个项目。解析json对ruby来说非常简单,只要一行代码:例子:json = '["a", "B", "C...2007-02-06 13:04:00 · 999 阅读 · 0 评论 -
ruby Tk版本的google翻译机
过去写的那个调用google翻译的翻译脚本,一直在用。那个版本只能处理单个单词,如果要翻译一行或者一段语句,尽管稍微修改下就可以,但失去了我想要 的便利性。今天看了看TK,顺手写了个GUI版本的,采用一次请求一个线程,倒是便捷不少。在windows上,你需要到这里下载安装ActiveTcl才可以运行。代码如下:ruby 代码 require 'net/http' r...2007-09-04 15:54:15 · 117 阅读 · 0 评论 -
深入下Ruby中的String
Ruby语言中的String是mutable的,不像java、C#中的String是immutable的。比如 str1="abc" str2="abc"在java中,对于字面量的字符串,jvm内部维持一张表,因此如果在java中,str1和str2是同一个String对象。而在Ruby中, str1和str2是完全不同的对象。同样,在java中对于Strin...2007-09-12 09:47:44 · 127 阅读 · 0 评论 -
一段小程序(Perl vs. Ruby)
读《Perl语言入门》(第四版,我买的书,网上有个翻译质量很高的电子版)的第10章的习题,人见人爱的猜数游戏,用perl写出来大概这样:python 代码 $num=int (1 + rand 100); print "I have a number,guess it?:\n"; while(<>) { ...2007-12-08 17:17:54 · 235 阅读 · 0 评论 -
Lua学习小记——语言
1.起点,经典hello world:print("Hello World")这与大多数脚本语言没什么两样,总体来说如果你对JavaScript、Ruby、Python之类有所学习的话,LUA还是相当简单的2.函数定义,类似JS,用begin end代替大括号:function fact (n) if n == 0 then return 1 else...2007-11-29 18:20:11 · 77 阅读 · 0 评论 -
hack,hacker
hack有水平高低之分,最近看到一个blog,牛人的hack水平让你不得不服。情况是这样的,牛人在使用 mongrel_light_cluster的过程中,发现这个cluster违反了copy-on-write的语义,导致占用了太多的内存。根本原因在于Ruby的GC机制是marks all memory pages as dirty。为了减少内存的占用,让集群跑更多mongrel,牛人走上...2007-10-15 09:10:36 · 88 阅读 · 0 评论 -
Ruby写Servlet的小例子
Ruby也能写servlet?是的,没开玩笑,而且挺方便的,因为Ruby的标准库就自带了一个webrick,webrick本身又有一个serlvet容器,随时随地启动一个web server,实在是很方便。 先看个最简单的例子,输出hello到浏览器:require 'webrick'require 'net/http'include WEBrickclass Hell...2008-07-23 12:05:38 · 101 阅读 · 0 评论 -
Ruby的对象模型
Ruby的对象模型,包含在下面这张图中: 首先要知道,Ruby中的类也是对象,类相比于其他对象特殊的地方在于能够产生对象,既然类是对象,那么它显然也有类,也就是所谓类的类,这个类的类在 Ruby中就是类的metaclass,图中的(OtherClass),(OtherClass)就是类OtherClass的klass(c层次), (OtherClass)存储了类的方法(类方法)...2007-09-29 09:56:49 · 149 阅读 · 0 评论 -
Ruby变量在c ruby中的存储
读完ruby hacking guide第6章,彻底总结下:1.在Ruby中,类也是一个对象,因此有实例变量。类的实例变量、类变量、常量都是存储在RClass struct的iv_tbl中,struct RClass { struct RBasic basic; struct st_table *iv_tbl; struct st_table *m_tbl; ...2007-09-27 11:44:22 · 78 阅读 · 0 评论 -
Re: Ruby的太极八卦图
楼上的图才算是完整了,OtherClass类的实例是instance,instance的singleton类是(instance),继承自OtherClass,这个(instance)在ruby层次上无法见到。 rb_cObject = boot_defclass("Object", 0); rb_cModule = boot_defclass("Module", rb_cObject); rb...2007-09-14 11:20:01 · 149 阅读 · 0 评论 -
JRuby中调用java带可变参数的方法
今天同事遇到的问题,用JRuby调用一个java方法,该方法使用了jdk1.5的可变参数。我一开始以为只要简单地将可变参数表示为数组即可,例如下面的两个java类:public class Echo{ public void echo(String name){ System.out.println(name); }}public class Tes...2008-06-14 22:41:18 · 125 阅读 · 0 评论 -
Ruby中实现stream
流是通过延时求值实现的,Ruby中实现stream也是可以做到,可惜就是没有尾递归优化。按照sicp,首要的是两个函数:delay和force:def mem_proc(exp) alread_run=false result=false lambda{ if !alread_run result=exp.call alread_run=tr...2008-05-08 22:36:50 · 192 阅读 · 0 评论