以前做了个Ruby的项目,最近有了点新的需求,其中有一条是要保护源代码,我选择用JRuby把rb文件编译为class,查了些资料,看了下jrubyc相关的一些代码,也许有朋友有类似的需要,和大家分享一下。突发奇想用英文来写,很久不写英文了,果然这个还得常写写。。。附上对应的中文,如果不高兴看英文的同学可以直接看中文的,呵呵。   There are many reasons for us to turn Ruby files (.rb) into Java classes (.class). For example, you want a high-performance sys ...
1. 引言2004年Ruby on Rails的横空出世让大家为之一惊,很多Java社区对它也投去关注的目光,现在RoR已经渐渐为人接受,被运用于不少实际项目之中,这也让本来不怎么吸引眼球的Ruby从角落里走了出来。不少开发者在试用了Ruby和RoR后产生了浓厚的兴趣,毕竟Ruby的语法是如此的有趣,Rails中的开发是如此的便捷,有时它替你安排好了一切,敲键盘就是了。但Ruby毕竟和主流的Java/.Net还存在一定距离,比如开发者数量,受关注度等等。更关键的是它缺乏像Java那样的库支持,很多时候不得不自己动手“丰衣足食”。后来人们想到了要去跨越语言的边界 ...
Ruby的作者是日本人,这个我想大家都知道,所以第一手的语言相关资料是日语的这不稀奇。好在我不是研究语言本身的, 也就不用去折腾什么日语了。 最近在看JRuby on Rails的东西,在实验一段小的数据库操作的代码时偏偏就碰上了个奇怪的问题——在事务中执行save!方法报错: D:/jruby-1.0.2/lib/ruby/gems/1.8/gems/activerecord-2.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:73:in `transac ...
前两天看到朋友在博客里写了一篇《白马非马》,长长的一大段,那些文字我们就不说了,我最感兴趣的是他用python和ruby“证明”的白马不是马。虽说我从小接受的教育让我始终相信白马是马,不过还是挺有意思的。 让我们来看下他是怎么写的——战国的时候有一位公孙龙先生,提出了这么一个观点,说“白马非马”。我们的教科书上说那叫诡辩,白马明明也是马么。那么咱先写个程序来验证一下:Python程序略Ruby程序class Horseendclass WhiteHorse < Horseendputs Horse == White ...
以前每做完一个项目,或者完成某个里程碑的时候都喜欢用代码统计工具统计下自己的代码情况,看看多少LOC,多少注释。现在开始用Ruby写程序了,忽然发现竟然找不到支持Ruby的代码统计工具,偏偏自己这次写的东西又与Rails无关,不能用里面的stats……脑子一转,反正有空,就研究下Rails的代码统计代码,整理出来,让它能够单独运行。 由于原来的代码不统计注释,所以我加了对注释和注释率的统计,单行注释和写在代码后的注释都算作一行。另外,把原来的各个Rails目录的统计去掉了,只统计代码和测试,那些controller之类的就不考虑了。基本对原来的程序基本没有什么大修 ...
昨天带上机课时,听到了十进制转换为八进制这个题目,据说是数据结构的考试题,回来后想想转成什么进制的算法不都一样吗,所以用Ruby写了个脚本,才20行,真是短小。 def transform(num, target) num *= target output = "" while ((num = num / target) > 0) output = (num % target).to_s + output end output end print "输入十进制数字:" oriNumStr = gets oriNum = oriNumStr.to ...
        昨晚空着没有什么事情,就去下了gigix的RoR的录音,顺便把很久以前写的Ruby代码翻出来看看。        以前只是听说RoR写代码方便,没有想到有这么方便,前后才几行就能够运行了,完整的mvc/orm都有了。这次参照onlamp上的文档——那个最广泛使用的RoR入门文档作了cookbook,可惜现在手上有别的项目,否则真想一头扎进去,搞个自己的demo出来看看。 参考资料:ONLamp RoR教程&mdas ...
问题描述:河左岸有三个修道士,三个野人和一条船,假定船最多只能运两个人,且任何岸边的野人数目不得超过修道士,否则修道士就会被野人吃掉。如何才能把修道士和野人都运到右岸?Savage.rbSAVAGE    = 0BOANERGES = 1DEEP      = 5#记录状态class Status  @@StatusList = Array.new @@Pos = -1   attr_writer :nSavage     & ...
        八数码游戏就是通过移动空格把数字从给定的状态移动到目标状态,例如:初始状态为        目标状态为2 8 3                   1 2 31 6 4        ...
        人工智能课讲4皇后问题,数据结构做8皇后,索性棋盘大小可变,用100行的Ruby代码写了皇后问题的实现。Queens.rbclass Queen  @@Chessboard = nil  def initialize(size)  @@Chessboard = Array.new(size)  puts "The chessboard is #{size} * #{@@Chessboard.size}.\n"  ...
1、Ruby实现:caesar.rbdef encode(plaintext, offset) ciphertext = plaintext.dup for i in 0..(plaintext.length-1)  if plaintext[i]>=?a && plaintext[i]<=?z   ciphertext[i] = ?a + ((plaintext[i] - ?a + offset) % 26)  elsif plaintext[i]>=?A && ...
        讲到脚本语言,当下流行的无非是Ruby、Python、Perl和JSR正在讨论的Groovy,最近正在上人工智能要实现一些算法,没有规定实现语言,反正都是写,何不乘机看看脚本的魅力究竟在何处,于是我选择了在企业级应用上已经比较成熟的Ruby作为学习的第一个脚本语言,以便今后转向Ruby on Rails。        第一个程序不是Hello world!而是汉诺塔问题,看了看Ruby的变量、数字、函数和迭代。随后如果有时间我想应该整理一 ...