Ruby也能写servlet?是的,没开玩笑,而且挺方便的,因为Ruby的标准库就自带了一个webrick,webrick本身又有一个serlvet容器,随时随地启动一个web server,实在是很方便。
先看个最简单的例子,输出hello到浏览器:
require 'webrick'
require 'net/http'
include WEBrick
class HelloServlet < HTTPServlet::AbstractServlet
def hello(resp)
...
- 12:05
- 浏览 (110)
- 评论 (0)
- 分类: ruby & rails
今天同事遇到的问题,用JRuby调用一个java方法,该方法使用了jdk1.5的可变参数。我一开始以为只要简单地将可变参数表示为数组即可,例如下面的两个java类:
public class Echo{
public void echo(String name){
System.out.println(name);
}
}
public class Test{
public void hello(String name,Echoargs){
System.out.println( ...
- 22:41
- 浏览 (93)
- 评论 (3)
- 分类: ruby & rails
- 进入论坛
流是通过延时求值实现的,Ruby中实现stream也是可以做到,可惜就是没有尾递归优化。按照sicp,首要的是两个函数:delay和force:
def mem_proc(exp)
alread_run=false
result=false
lambda{
if !alread_run
result=exp.call
alread_run=true
result
else
result
end
}
end
def force(d ...
- 22:36
- 浏览 (144)
- 评论 (0)
- 分类: ruby & rails
- 进入论坛
三个多月前翻译的,今天又找出来看看,后面的整理再发。
原文:http://www.tecgraf.puc-rio.br/~lhf/ftp/doc/jucs05.pdf
翻译:dennis zhuang (killme2008@gmail.com) http://www.blogjava.net/killme2008
转载请注明出处,谢谢。
摘要:我们讨论了lua 5.0实现的主要新特性:基于寄存器的虚拟机,优化表的新算法以便(将表)用作数组,闭包的实现,以及coroutines(译注:协程)
关键字: compilers, virtual ...
- 17:28
- 浏览 (865)
- 评论 (1)
- 分类: ruby & rails
数据都是在我的机器上测试所得,我的机器配置: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)
end
end
替换成:for j in 0..10
for i in 0..1000
a+=(i+j)
end
...
- 09:49
- 浏览 (316)
- 评论 (5)
- 分类: ruby & rails
- 进入论坛
jruby本质上也是启动一个jvm,然后去读Ruby脚本并解释执行(或者编译),因此jprofiler理所当然也可以去监控jruby脚本的执行。
执行
jruby hello.rb等价于执行:
java -Xmx378m -Xss1024k -Djruby.home=/usr/local/jruby
-Djruby.lib=/usr/local/jruby/lib
Djruby.script=jruby org.jruby. ...
- 15:32
- 浏览 (164)
- 评论 (0)
- 分类: ruby & rails
- 进入论坛
swf-util是一个使用Ruby读取swf头信息(高度、宽度、文件大小、帧数等等)、压缩和解压缩swf文件的工具类库,改写自java版本。项目主页:http://code.google.com/p/swf-util/协议:MIT License依赖BitStruct,请到这里下载安装bit-struct。使用例子:#read swf head
require 'swf_util'
header=SwfUtil::read_header("test.swf")
puts header.inspect
header.version
header.frame_ra ...
- 14:49
- 浏览 (165)
- 评论 (0)
- 分类: ruby & rails
今天有点空闲,想想用Ruby写个NFA试试。从正则表达式构造NFA采用经典的Thompson算法:正则表达式 -> 后缀表达式
->
构造NFA。构造了NFA后,用之匹配字符串。一句话,写了个玩具的正则表达式引擎,支持concatenation、alternation以及
*、?、+量词,不支持反向引用和转义符。测试了下与Ruby自带的正则表达式引擎的性能对比,慢了3倍。构造NFA没什么问题,主要是匹配运行写的烂,有空再改改。 nfa.rbmodule NFA
class NFA
def initialize(s ...
- 17:49
- 浏览 (732)
- 评论 (1)
- 分类: ruby & rails
读blog看到的一个小技巧,原文在这里。
我们常常处理这样的代码:
name=person?person.name:nil
取某个对象的一个属性,先判断对象是否为nil,不是nil就返回对象属性,否则返回nil。这样的代码写多了比较恶心,是否有比较有趣的方式来减少代码?作者给出了一段代码:
module ObjectExtension
def nil_or
return self unless self.nil?
o = Object.new ...
- 13:41
- 浏览 (487)
- 评论 (2)
- 分类: ruby & rails
项目主页:http://expectations.rubyforge.org/安装的话:gem install expectations它将测试分为state based和behavior based,语法很DSL,作者写了篇文章《implementing internal dsl in ruby》例子, state base test: # State based expectation where a value equals another value
expect 2 do
1 + 1
...
- 10:05
- 浏览 (236)
- 评论 (1)
- 分类: ruby & rails
- 进入论坛
要在JRuby中实现java接口,接口include进来,实现接口方法即可,例如实现java.lang.Runnable接口做线程处理:
require 'java'
include_class 'java.lang.Runnable'
class TestRunnable
include Runnable
def initialize(name)
@name=name
end
def run
puts "hello,"+@name
end
...
- 14:36
- 浏览 (302)
- 评论 (0)
- 分类: ruby & rails
过去写的那个利用google在线翻译的小脚本工具一
直在用,今天用的时候,突然想,我今年不是想加强下英语学习吗?那么把每天查过的单词保存下来,每天早上或者上班空闲期间花那么几分钟记忆复习下这些单词
不是很好,毕竟技术性文章翻来覆去运用的单词就那么多,过去没有注意积累,导致常常还得重新查,所谓提高也就放在口头上了。说改就改,脚本语言改起来就是
容易:
#利用google在线翻译,翻译中文<->英文
#author dennis
#version 0.2
require 'net/http'
$contents=Hash.new
...
- 11:17
- 浏览 (352)
- 评论 (0)
- 分类: ruby & rails
越来越觉的JRuby是个很有前途的项目,结合Ruby的性感语法和java极其丰富的类库,况且有团队持续不断地修正bug、改进性能,这样的玩意完全有成为“少男杀手”的潜质。JRuby wiki上列出了性能优化的四条建议:
1、调优编译器,JRuby早就弃暗投明跟随XRuby走上了编译这条牛B的道路,将Ruby Script编译成字节码,因此这个环节是断断不能忽略的。
两种编译方式:
AOT模式:直接生成class文件,脱了Ruby这层皮,咱就是人见人“爱”的java了。
JIT模式:充分利用成熟的jit ...
- 19:02
- 浏览 (393)
- 评论 (3)
- 分类: ruby & rails
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 and elist.respond_to? :[] and elist[0].is_a? e
elist.each{ |value| self.body+=va ...
- 15:50
- 浏览 (395)
- 评论 (0)
- 分类: ruby & rails
分析二进制协议或者存取二进制文件是个很常见的需求,Ruby的IO提供了对二进制的读操作,但是写入却只提供字符。并且读的操作也比较笨拙,例如,在c里面的话,我们一般是定义个struct,然后:
fread(record, sizeof(record), 1, stream);
在java里,也是比较容易,特别是nio引入了ByteBuffer之后就更方便了。Ruby的话,我得自己确定读多少个字节,并自己“组装”成原始数据,这显然太麻烦了,幸好,我们有bit-struct :)
到主页 ...
- 18:58
- 浏览 (453)
- 评论 (0)
- 分类: ruby & rails
读《Perl语言入门》(第四版,我买的书,网上有个翻译质量很高的电子版)的第10章的习题,人见人爱的猜数游戏,用perl写出来大概这样:
python 代码
$num=int (1 + rand 100);
print "I have a number,guess it?:\n";
while(<>)
{
chomp;
next unless /\d+/;
$_>$num? print &quo ...
- 17:17
- 浏览 (409)
- 评论 (0)
- 分类: ruby & rails
1.起点,经典hello world:
print("Hello World")
这与大多数脚本语言没什么两样,总体来说如果你对JavaScript、Ruby、Python之类有所学习的话,LUA还是相当简单的
2.函数定义,类似JS,用begin end代替大括号:
function fact (n)
if n == 0 then
return 1
else
  ...
- 18:20
- 浏览 (553)
- 评论 (1)
- 分类: ruby & rails
hack有水平高低之分,最近看到一个blog,牛人的hack水平让你不得不服。情况是这样的,牛人在使用 mongrel_light_cluster的过程中,发现这个cluster违反了copy-on-write的语义,导致占用了太多的内存。根本原因在于Ruby的GC机制是marks all memory pages as dirty。为了减少内存的占用,让集群跑更多mongrel,牛人走上了hack之路,给c ruby打补丁,他也真的做到了。c ruby的GC使用的是mark and sweep(标记并清除)的垃圾收集算法,他发现在mark过程中使用了st ...
- 09:10
- 浏览 (400)
- 评论 (0)
- 分类: ruby & rails
Ruby的对象模型,包含在下面这张图中:
首先要知道,Ruby中的类也是对象,类相比于其他对象特殊的地方在于能够产生对象,既然类是对象,那么它显然也有类,也就是所谓类的类,这个类的类在 Ruby中就是类的metaclass,图中的(OtherClass),(OtherClass)就是类OtherClass的klass(c层次), (OtherClass)存储了类的方法(类方法)和类的实例变量,并且是唯一的且不可实例化。在Ruby层次上我们想操作(otherclass)应该 类似:
ruby 代码
&n ...
- 09:56
- 浏览 (1049)
- 评论 (2)
- 分类: ruby & rails
- 进入论坛
读完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;
VALUE super;
}; ...
- 11:44
- 浏览 (863)
- 评论 (0)
- 分类: ruby & rails
- 进入论坛
楼上的图才算是完整了,OtherClass类的实例是instance,instance的singleton类是(instance),继承自OtherClass,这个(instance)在ruby层次上无法见到。 rb_cObject = boot_defclass("Object", 0); rb_cModule = boot_defclass("Module", rb_cObject); rb_cClass = boot_defclass("Class", rb_cModule); metaclass = rb_make_me ...
- 11:20
- 浏览 (450)
- 评论 (0)
- 分类: ruby & rails
Ruby语言中的String是mutable的,不像java、C#中的String是immutable的。比如
str1="abc"
str2="abc"
在java中,对于字面量的字符串,jvm内部维持一张表,因此如果在java中,str1和str2是同一个String对象。而在Ruby中, str1和str2是完全不同的对象。同样,在java中对于String对 ...
- 09:47
- 浏览 (395)
- 评论 (0)
- 分类: ruby & rails
过去写的那个调用google翻译的翻译脚本,一直在用。那个版本只能处理单个单词,如果要翻译一行或者一段语句,尽管稍微修改下就可以,但失去了我想要 的便利性。今天看了看TK,顺手写了个GUI版本的,采用一次请求一个线程,倒是便捷不少。在windows上,你需要到这里下载安装ActiveTcl才可以运行。
代码如下:
ruby 代码
require 'net/http'
require 'tk'
require 'logger'
...
- 15:54
- 浏览 (712)
- 评论 (0)
- 分类: ruby & rails
阅读专家和牛人的blog已经是我学习的一种主要方法之一,我每天的必做的就是关注下dreamhead、gigix、江南白衣、robbin、李锟等牛 人的blog是不是有什么新文章。不过我非常讨厌安装商业公司的rss阅读器,我害怕他们是流氓软件!而且很多阅读器的文章格式与原文有较大差异从而导致 重要信息的丢失,我还是喜欢用firefox畅游网络,这导致我不得不一次一次地在各个blog间跳转,打开n个网页查找我关注的信息,一次两次也就罢 了,天天这样实在是太麻烦了,那么,有没有什么工具来简化我的工作,他能自动每天把我关注的所有blog的文章放在一个页面里,我每天 ...
- 15:16
- 浏览 (6337)
- 评论 (19)
- 分类: ruby & rails
- 进入论坛
今天在javaeye论坛上看到有人有这个需求,顺手写了下。原理就是通过遍历Controllers目录,并用正则表达式取出Controller名和它所有的action。
@controllers=Hash.new
path="#{RAILS_ROOT}/app/controllers/"
Dir.new(path).entries.each do |f|
&nbs ...
- 20:21
- 浏览 (585)
- 评论 (0)
- 分类: ruby & rails
XRuby是什么?它是一个编译器。与其它编译器一样,它完成的工作是将一种格式的语言转换成另一种。与大多数编译器不同的是,它是将Ruby的代码(.rb)转换成Java的bytecode(.class)。
Xruby是一群中国开发者维护的项目,它的目的如上所述。它的主页是http://code.google.com/p/xruby/。与JRuby不同,JRuby一开始是想使用java写ruby解析器,性能上是个大问题,当然现在也走上了编译这条路。而XRuby是第一个实现这种想法的人。
我翻译下了《XRuby Hacking Guide》,这篇文章是XRuby的入门指南。
介绍 ...
- 11:53
- 浏览 (581)
- 评论 (0)
- 分类: ruby & rails
FCKEditor是一个开源的,功能强大的富文本编辑器,在官方主页上有提供ASP,JSP,ASP.NET,PHP等版本,目前还没有rails的版本(可以设置,主要是要自己实现上传等功能),不过有一个plugin来实现此功能,有上传文件、拼写检查的功能。1。首先到http://rubyforge.org/frs/?group_id=2038,下载0.3版本,解压缩后重命名文件夹为fckeditor,并放到你的应用的/vender/plugins下面,文件结构类似:--rblog --vender --plugins --fckeditor ...
- 13:41
- 浏览 (1072)
- 评论 (1)
- 分类: ruby & rails
读R4R,才读完第2章,前两章没什么新内容,算是复习吧
rails的lifecycle:
从浏览器发起一个请求的基本流程:
A.server to dispatcher
服务器通过你指定的路径查找dispatcher,比如,你在apache配置:
<VirtualHost www.r4rmusic.com>ServerName www.r4rmusic.comServerAlias r4rmusic.comDocumentRoot "/usr/local/share/railsapps/r4rmusic/public/"</VirtualHost>
...
- 13:37
- 浏览 (598)
- 评论 (0)
- 分类: ruby & rails
来自railscn的讨论:
http://www.railscn.com/viewtopic.php?t=2289
1
.
eval
"
obj = #{str}.new
"
#
只能在irb中使用
2
.
obj
=
eval
"
obj = #{str}.new
"
3
...
- 13:35
- 浏览 (525)
- 评论 (0)
- 分类: ruby & rails
ruby语言本身并没有提供abstract class和abstract method机制。这是ruby的spirit所决定的。但如果我们真的需要定义一个公共抽象类(或者抽象方法)来让子类来实现,又该如何做呢?
我们可以通过在调用方法时抛出NotImplementedError来防止方法被调用。如(来自《ruby cookbook》的例子):
class Shape2D
def area
raise NotImplemented ...
- 13:07
- 浏览 (518)
- 评论 (0)
- 分类: ruby & rails
- 浏览: 145390 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
最新评论
-
最近的学习和工作
楼主住在棠下。学的一些技术我都没有做过 不过ruby 还是会一点点的
-- by penghao122 -
PL/SQL学习笔记(五)
ELSEIF不对,应该是ELSIF
-- by gmizr -
oracle table-lock的5种 ...
select for update 应该是row share mode的锁, 也 ...
-- by xiaoxiao1984 -
oracle table-lock的5种 ...
如果允许别的session查询或用select for update锁定记录,不 ...
-- by xiaoxiao1984 -
Hadoop分布式文件系统:架 ...
beijing.josh 写道dennis_zane 写道sunhengxin ...
-- by dogstar






评论排行榜