题目:有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
用Ruby来解,不知道结果对不对。
#define the Ant class
class Ant
attr_accessor :direction,:pos,:id
def veer # turn back when run into other ants
@direction = 1 - @direction
end
def arrived?
return true if @pos == 0 or @pos == 27
return false
end
def step
if @direction == 1 then
@pos = @pos + 1
else
[…]
今天看Ruby Cookbook发现了这里面对binding的解释是目前看到的比较通俗易懂的了。
A Binding object is a bookmark of the Ruby interpreter’s state. It tracks the values of any local variables you have defined, whether you are inside a class or method definition, and so on.
Once you have a Binding object, you can pass it into eval to run code in the same context as when […]
这次测试需要建立很多数据文件(record)导入到数据库了。
导入的时候要求数字是内部的二进制形式,Ruby中没有像c一样处理以字节为单位的类型,把整数写到文件里,不小心就会变成字符串了,比如想写1,就会写进去一个1这个字符串(内部表示0×31),而不是写进去0×01。
有了这个bit-struct,就可以方便的处理这个问题了。
bit-struct是用string来存贮各种二进制数据,支持有无符号的整数,字符串,float等,应该足够用了。
这是一个例子:
require ‘bit-struct’
class C < BitStruct
signed :id, 32
char :name,160
signed :age,16
unsigned :dept,16
end
File.delete("C:\\Program Files\\Crystal Point\\OutsideView32\\Upload\\aaa")
f=open("C:\\Program Files\\Crystal Point\\OutsideView32\\Upload\\aaa","wb")
5.times do |i|
c = C.new
c.id = 2009 + i
c.name = ((i % 10 ).to_s) *20
c.age = -2 * i
c.dept= 3 * i
f.write(c)
end
f.close
YARV源码读解(2)
原文:http://d.hatena.ne.jp/hzkr/20061103
第二回了,上回看了ruby命令启动到yarv的评价器入口:
VALUE iseq = th_compile_from_node(GET_THREAD(), node, file);
return yarvcore_eval_iseq(iseq);
这次,来看一下这个函数的前半部分,进入到th_compile_from_node里面去。在这之前,先看看大体的流程和一些数据的构造。
编译处理流程
可惜没有QA的那部分。
语速还是比较慢的。
当然是英语。
RubyKaigi2007 / Dave Thomas 1/4
现在已经不是骂人你的话了。
二就是2.0了,升级了。
另,matz还真忙,6月9号当天就不知道坐飞机去哪里了,不过那天的slide已经放到网上了
http://www.rubyist.net/~matz/slides/rk2007-matz/。
http://www.rubyist.net/~matz/slides/rk2007-matz/mgp00007.html
from java to ruby,很多人都引用了这个封面图片。
最近大家知道平锅san也许是因为最近流传着他和Matz等三人的关于Ruby和Agile开发的视频。
其实,平锅健儿是change-vision的CEO吧。著名的UML建模工具Jude就是他们公司的。平锅还是永和系统管理株式会社的副总。上面说道的那个视频可以在http://jude-users.com/en/modules/weblog/details.php?blog_id=28找到,那个角谷信太郎是他的手下。但是在那天的演讲中说他是角谷的上司的上司的上司,玩笑?角谷翻译了《From Java to Ruby》。
平锅是在LT(Lightning Talks)时段发表的,这个时间段每个人只有5分钟的时间,主屏幕的旁边的屏幕有倒计时,还剩1分钟时候会响一下铃,倒计时屏幕变红。5分满的时候响锣。
平锅的主题是Software is Made of Design(Idea) and Communication
视频可以看http://www.youtube.com/watch?v=sufSoCEhp5E
主要讲了idea和交流的是比较重要di,Ruby+Rails+Agile是OPEN的。
另外还有一些视频,可以自己搜一下,不过我看了一下都不是很清楚,而且都是日语的,没什么好看的。
另,http://jude-users.com/en/modules/weblog/可以去看看,英文blog。
I download some of this picture from http://www.flickr.com
because for some reason china user can not access flickr for some days
发的书包
女主持人,不知道从哪里借来的。
Charles Nutter / Thomas Enebo 在讲JRuby。
一个轻量级的异步处理系统,简单来说对于不需要立即处理缓存起来分配给别人,或者说接收到请求之后
委派给别的服务,很迅速的给客户端回应(不是浏览器的客户端,是调用方),还有负载平衡等功能。
而且给自己找了一个吉祥物
被人称为MDD(mascot【吉祥物】驱动开发)
这个应该还是不错的,而且已经被Working With Rails采用了。
http://ap4r.rubyforge.org/wiki/wiki.pl
作者主页(blog):
http://d.hatena.ne.jp/kiwamu/
http://d.hatena.ne.jp/ita-wasa/
在台上是没穿鞋子演讲的,比想像的胖一点,尤其是肚子,呵呵。:-)
Dave像爱自己的孩子一样爱着Ruby。
而且和他的孩子一样,Ruby也被说为进入了思春期(青春期)。
交友关系也变了,而且还开始和别人约会,包括:
IronRuby,JRuby,Rubinius,Gaden’s Point 等。
另外还讲了些关于Ruby的危机:
1.对社区的破坏。
2.大公司的分割。(Ruby不是sun的Ruby,也不是微软的Ruby)
3.不同的意见的冲突(好的,坏的,如何区分)
4.爆发性的增长。(预计近2,3年之内)
最重要的QA
Q.很早就使用Ruby的人抱怨Rails太复杂了。Dave怎么看?
A.这是个很好的问题,因为自己在Rails社区里的感受不太好,3个星期之前已经脱离Rails社区了,以后主要集中于Pure Ruby。
Ruby社区还没有变划(变质?)。Rails成长的太快,real busy ,没时间让它变得nice,3周前还说[we want rails to be nice],2天后180度的变了。
不过,还想给Rails一个机会。
(上面可能说的有点不完整)
关于Dave是否脱离Rails,我也不敢肯定,但是那天确实说了感到Unhappy,想集中于Pure Ruby。
再说他们公司还要搞Rails培训和出书呢。
可以看这里,记得比较详细,英文不少。
http://jp.rubyist.net/RubyKaigi2007/Log0610-S5.html