dennis_zane
- 浏览: 919365 次
- 性别:
- 来自: 杭州
社区版块
- ( 33)
- ( 1529)
- ( 28)
最新评论
-
hw7777777:
非常感谢作者提供这么好的工具,在使用的过程中遇到一些问题?1、 ...
基于java nio的memcached客户端——xmemcached -
since1978:
多久过去了时间能抹平一切
无路用的人 -
fangruanyjq:
[img][/img]引用
用osworkflow写一个请假例子(提供代码下载) -
thinkingmysky:
楼主,你确定,java memached client能处理并 ...
memcached java client性能测试的几点疑问和说明 -
hellostory:
aaa5131421 写道07年2月hibernate已经出来 ...
dozer与beanutils
文章列表
说谎者谜题是sicp4.3.2小节的一道题目,题目本身不难:
五个女生参加一个考试,她们的家长对考试结果过分关注。为此她们约定,在给家里写信谈到考试的时候,每个姑娘都要写一句真话和一句假话。下面是从她们的信里摘抄出来的句子:
betty : kitty考第二,我只考了第三
ethel : 你们应该很高兴听到我考了第一,joan第二
joan : 我考第三,可怜的ethel垫底
kitty: 我第二,marry只考了第四
marry: 我是第四,betty的成绩最高。
这五个姑娘的实际排名是什么?
ruby本来就有call/cc,因此也可以实现amb操作符,网上已经有一个实 ...
- 2008-11-15 18:50
- 浏览 1541
- 博客分类:
- ruby & rails
swfheader是一个处理swf文件的工具脚本,可用于读取swf文件头信息、压缩和解压缩swf文件。很早以前发布过一个0.01版。最近复审了代
码,发现了一个愚蠢的读二进制文件错误导致没办法正确的解压或者压缩swf文件。今天更正了此bug,重构了部分代码并做了更多测试,已经可以正常使用。
项目地址:
http://code.google.com/p/swf-util/
项目描述:
一个轻量级的纯ruby实现的swf文件处理脚本,可以读取swf文件头信息(大小、帧率、长宽、是否压缩、flash版本信息等)、压缩swf文件和解压缩swf文件。基于apache license2协议发 ...
- 2008-10-11 23:41
- 浏览 1463
- 博客分类:
- ruby & rails
ruby如何简洁地读整个文件,你可以这样做:
f
=
file.open(
"
test.log
"
,
"
r
"
)
result
=
''
f.each_line do
|
line
|
result
=
line
end
puts result
但是,更简洁的方法是:
file.open(
"
test.log
"
,
"
r
"
){
|
f
|
f.collect.join}
利用了文件打开的io对象混入了enumerable模块这一特点,通过map或者collect将所有文 ...
- 2008-10-07 09:38
- 浏览 1747
- 博客分类:
- ruby & rails
1、异常的相等性
,如果两个异常的class、message和backtrace一样,那么认为这两个异常是相等的,可以通过==判断。
def
method
raise
'
foobar
'
end
errors
=
[]
2
.times do
thread.new do
begin
method
rescue
=>
e
errors
<<
e
end
end.join
end
puts errors[
-
2
]
==
errors[
-
1
]
...
- 2008-10-03 13:26
- 浏览 1258
- 博客分类:
- ruby & rails
1、proc加了新方法proc#yield
,这只是proc#call的别名方法,是为了能让proc也可以像block那样传入方法并且调用yield。
a_proc
=
proc.new {
|
a,b
|
a
b}
a_proc.
yield
(
1
,
2
)
#
=> 3
def
test(
&
block)
block.
yield
(
1
,
2
,
3
)
end
test do
|
a,b
|
a
b
#
=> 3
e
- 2008-10-02 13:54
- 浏览 1289
- 博客分类:
- ruby & rails
三、类和模块
1、module#instance_methods, #private_instance_methods, #public_instance_methods module这三个方法都将返回方法名
的symbol组成的数组,而非过去的字符串数组。
2、module#const_defined?, #const_get 这两个方法都添加一个参数flag,用来决定是否将它的ancestor中的const包括在查
找链中,例如:
module a; x
=
1
;
def
foo; end end
module b
include a
const_defined?
...
- 2008-10-01 13:52
- 浏览 1356
- 博客分类:
- ruby & rails
二、kernel 和 object
1、引入了basicobject对象,作为一个顶级的空白状态对象:
basicobject.instance_methods
#
=> [:==,:equal?,:"!",:"!=",:__send__]
object.ancestors
#
=> [object, kernel, basicobject]
引入这个对象� ...
- 2008-10-01 13:48
- 浏览 1345
- 博客分类:
- ruby & rails
一、新的语法和语义
1、新的hash定义语法:
例如{a:2} 等价于 {:a=>2}
但是 {"a":2} 出错,并不等价于 {:"a"=>2}
2、试验性质的block内的局部变量
在1.8,block的与外部同名的变量是同一个变量,也就是说block内的变量也可以修改外部的同名变量,这很容易形成难以查找的bug。
例子:
#
{常规参数;局部变量}
d
=
2
a
=
lambda
{
|
;d
|
d
=
1
}
a.call()
d
#
=> 2
注意到,分号后的d是bl ...
- 2008-10-01 13:37
- 浏览 1740
- 博客分类:
- ruby & rails
ruby也能写servlet?是的,没开玩笑,而且挺方便的,因为ruby的标准库就自带了一个webrick,webrick本身又有一个serlvet容器,随时随地启动一个web server,实在是很方便。
先看个最简单的例子,输出hello到浏览器:
require 'webrick'
require 'net/http'
include webrick
class helloservlet < httpservlet::abstractservlet
def hello(resp)
resp["content-type"]=" ...
- 2008-07-23 12:05
- 浏览 2337
- 分类:编程语言
- 博客分类:
- 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("hello," name);
...
- 2008-06-14 22:41
- 浏览 1231
- 论坛回复 / (3 / 3012)
- 博客分类:
- 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(delayed_object)
delayed_object.call ...
- 2008-05-08 22:36
- 浏览 1252
- 论坛回复 / (0 / 1846)
- 博客分类:
- 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 machines, hash tables, ...
- 2008-04-07 17:28
- 浏览 3824
- 分类:编程语言
- 博客分类:
- 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) ...
- 2008-03-27 09:49
- 浏览 2106
- 论坛回复 / (5 / 2927)
- 博客分类:
- 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.main hello.rb 这一点,你可以通过ps aux |grep jruby 看到。因此配 ...
- 2008-03-24 15:32
- 浏览 1483
- 论坛回复 / (0 / 1719)
- 博客分类:
- 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_rate
head ...
- 2008-03-11 14:49
- 浏览 1727
今天有点空闲,想想用ruby写个nfa试试。从正则表达式构造nfa采用经典的thompson算法:正则表达式 -> 后缀表达式
->
构造nfa。构造了nfa后,用之匹配字符串。一句话,写了个玩具的正则表达式引擎,支持concatenation、alternation以及
*、?、 量词,不支持反向引用和转义符。测试了下与ruby自带的正则表达式引擎的性能对比,慢了3倍。构造nfa没什么问题,主要是匹配运行写的烂,有空再改改。 nfa.rbmodule nfa
class nfa
def initialize(state)
@state=state
...
- 2008-02-25 17:49
- 浏览 2765
- 博客分类:
- ruby & rails
读blog看到的一个小技巧,原文在这里。
我们常常处理这样的代码:
name=person?person.name:nil
取某个对象的一个属性,先判断对象是否为nil,不是nil就返回对象属性,否则返回nil。这样的代码写多了比较恶心,是否有比较有趣的方式来减少代码?作者给出了一段代码:
module objectextension
def nil_or
return self unless self.nil?
o = object.new
class << o
def method_missing(sym, *args); nil ...
- 2008-02-19 13:41
- 浏览 3589
- 分类:编程语言
- 博客分类:
- 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
end
...
- 2008-02-16 10:05
- 浏览 1608
- 论坛回复 / (1 / 2015)
- 博客分类:
- 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
end
要在jruby中继承抽象类,实现其 ...
- 2008-02-15 14:36
- 浏览 1635
- 博客分类:
- ruby & rails
过去写的那个利用google在线翻译的小脚本工具一
直在用,今天用的时候,突然想,我今年不是想加强下英语学习吗?那么把每天查过的单词保存下来,每天早上或者上班空闲期间花那么几分钟记忆复习下这些单词
不是很好,毕竟技术性文章翻来覆去运用的单词就那么多,过去没有注意积累,导致常常还得重新查,所谓提高也就放在口头上了。说改就改,脚本语言改起来就是
容易:
#利用google在线翻译,翻译中文<->英文
#author dennis
#version 0.2
require 'net/http'
$contents=hash.new
$dir="f:/english/&qu ...
- 2008-02-14 11:17
- 浏览 1840
- 分类:编程语言
- 博客分类:
- ruby & rails
越来越觉的jruby是个很有前途的项目,结合ruby的性感语法和java极其丰富的类库,况且有团队持续不断地修正bug、改进性能,这样的玩意完全有成为“少男杀手”的潜质。jruby wiki上列出了性能优化的四条建议:
1、调优编译器,jruby早就弃暗投明跟随xruby走上了编译这条牛b的道路,将ruby script编译成字节码,因此这个环节是断断不能忽略的。
两种编译方式:
aot模式:直接生成class文件,脱了ruby这层皮,咱就是人见人“爱”的java了。
jit模式:充分利用成熟的jit技术,咱不全脱,朦胧美才是真的美。默认从0.9.9版本开始就是开启的,关闭的话(要我说还 ...
- 2008-01-31 19:02
- 浏览 1686
- 分类:编程语言
- 博客分类:
- 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 =value}
...
- 2008-01-27 15:50
- 浏览 1881
- 分类:编程语言
分析二进制协议或者存取二进制文件是个很常见的需求,ruby的io提供了对二进制的读操作,但是写入却只提供字符。并且读的操作也比较笨拙,例如,在c里面的话,我们一般是定义个struct,然后:
fread(record, sizeof(record), 1, stream);
在java里,也是比较容易,特别是nio引入了bytebuffer之后就更方便了。ruby的话,我得自己确定读多少个字节,并自己“组装”成原始数据,这显然太麻烦了,幸好,我们有bit-struct :)
到凯发推荐主页下载,解压之后参照readme安装下就ok了。使用的话,也是先定义结构,然后new就行了:
re ...
- 2008-01-25 18:58
- 浏览 3090
- 分类:编程语言
- 博客分类:
- 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 "too high\n" ...
- 2007-12-08 17:17
- 浏览 2560
- 博客分类:
- ruby & rails
1.起点,经典hello world:
print("hello world")
这与大多数脚本语言没什么两样,总体来说如果你对javascript、ruby、python之类有所学习的话,lua还是相当简单的
2.函数定义,类似js,用begin end代替大括号:
function fact (n)
if n == 0 ...
- 2007-11-29 18:20
- 浏览 4325
- 博客分类:
- 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_table,这个数据结构占用了 ...
- 2007-10-15 09:10
- 浏览 1731
ruby的对象模型,包含在下面这张图中:
首先要知道,ruby中的类也是对象,类相比于其他对象特殊的地方在于能够产生对象,既然类是对象,那么它显然也有类,也就是所谓类的类,这个类的类在 ruby中就是类的metaclass,图中的(otherclass),(otherclass)就是类otherclass的klass(c层次), (otherclass)存储了类的方法(类方法)和类的实例变量,并且是唯一的且不可实例化。在ruby层次上我们想操作(otherclass)应该 类似:
ruby 代码
class otherclass
end
...
- 2007-09-29 09:56
- 浏览 2757
- 论坛回复 / (2 / 4654)
- 博客分类:
- 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;
};
iv_tbl的类型是st_table,我在这里用java实现了一下。
2.用户自定义类的对象(ruby层次声明的类的对象)的实例变量存储在robject stru ...
- 2007-09-27 11:44
- 浏览 2218
- 论坛回复 / (0 / 2592)
- 博客分类:
- 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_met ...
- 2007-09-14 11:20
- 浏览 1769
ruby语言中的string是mutable的,不像java、c#中的string是immutable的。比如
str1="abc"
str2="abc"
在java中,对于字面量的字符串,jvm内部维持一张表,因此如果在java中,str1和str2是同一个string对象。而 ...
- 2007-09-12 09:47
- 浏览 1814
« 上一页 1