Ruby 语言 思想驱动生活

June 16, 2007

用bit-struct处理结构化(二进制)数据

Filed under: Ruby — liubin @ 19:59

这次测试需要建立很多数据文件(record)导入到数据库了。
导入的时候要求数字是内部的二进制形式,Ruby中没有像c一样处理以字节为单位的类型,把整数写到文件里,不小心就会变成字符串了,比如想写1,就会写进去一个1这个字符串(内部表示0×31),而不是写进去0×01。
有了这个bit-struct,就可以方便的处理这个问题了。
bit-struct是用string来存贮各种二进制数据,支持有无符号的整数,字符串,float等,应该足够用了。

这是一个例子:

  1. require 'bit-struct'
  2.  
  3. class C < BitStruct
  4.   signed      :id, 32
  5.   char        :name,160
  6.   signed      :age,16
  7.   unsigned    :dept,16
  8. end
  9.  
  10. File.delete("C:\\Program Files\\Crystal Point\\OutsideView32\\Upload\\aaa")
  11. f=open("C:\\Program Files\\Crystal Point\\OutsideView32\\Upload\\aaa","wb")
  12.  
  13. 5.times do |i|
  14.  
  15.   c = C.new
  16.   c.id = 2009 + i
  17.   c.name = ((i % 10 ).to_s) *20
  18.   c.age = -2 * i
  19.   c.dept= 3 * i
  20.   f.write(c)
  21. end
  22.  
  23. f.close

(more…)

June 15, 2007

【翻译】YARV源码读解(2)

Filed under: Ruby — liubin @ 19:22

YARV源码读解(2)
原文:http://d.hatena.ne.jp/hzkr/20061103
第二回了,上回看了ruby命令启动到yarv的评价器入口:

  1. VALUE iseq = th_compile_from_node(GET_THREAD(), node, file);
  2. return yarvcore_eval_iseq(iseq);

这次,来看一下这个函数的前半部分,进入到th_compile_from_node里面去。在这之前,先看看大体的流程和一些数据的构造。
编译处理流程

(more…)

Dave Thomas 在日本Rubykaigi2007上的演讲

Filed under: Ruby — liubin @ 19:05

可惜没有QA的那部分。
语速还是比较慢的。
当然是英语。
RubyKaigi2007 / Dave Thomas 1/4

(more…)

June 13, 2007

你真二

Filed under: Ruby,垃圾 — liubin @ 23:44

现在已经不是骂人你的话了。
二就是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,很多人都引用了这个封面图片。

平锅健儿关于Ruby的Agile开发的演讲

Filed under: Ruby — liubin @ 23:18

最近大家知道平锅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。

Japan RubyKaigi2007的一些图片

Filed under: Ruby — liubin @ 22:00

I download some of this picture from http://www.flickr.com
because for some reason china user can not access flickr for some days
发的书包

539392850_e7b2f65c53.jpg

女主持人,不知道从哪里借来的。

542469227_3cda84b7f2.jpg

Charles Nutter / Thomas Enebo 在讲JRuby。

537848044_5405ee8eb2.jpg
(more…)

DRECOM Award on Rails 2007

Filed under: Rails — liubin @ 20:52

Drecom 公司为了在软件工程师中推广Rails,从2006年就举行了DRECOM Award on Rails。
今年是第二年了,最高奖100万日元,合8300美元左右,合人民币6万多,如果人民币再升值,就快不到6万了。
报名时间为6月2号到9月25号。
国内的团队不知道有没有想要试试看的。
具体信息可见http://rails.drecom.jp/english_top

June 11, 2007

用FUP建立结构化文件

Filed under: 技术 — liubin @ 20:41

File Utility Program 的缩写
简称FUP,非常强大的文件管理工具。
可以参考File Utility Program (FUP) Reference Manual
或本blog的其它文章:tag->

关于什么是结构化文件,可以参考本地其它文件,tag
先看看表的结构:

(前面的小横线是FUP的提示符)
-info table1,detail

...
TYPE K
...
REC 28
...
KEY ( COLUMN 0, OFFSET 0, LENGTH 4, ASC )
...

table1是一个表,在NSK中基本上就是一个文件,REC 28表示每个记录的最大长度,KEY是第一个列,offset为0,长度是4,为int型。

(more…)

HP NSK系统简介

Filed under: 技术 — liubin @ 20:40

NSK 是NonStopKernel的略称。狭义上理解的话就是HP的NonStop Server上运行的操作系统。但是NSK所依存的硬件除了NonStop Server以外没有别的了,所以广义上来说NSK也可以包含硬件部分。一般都使用广义上的意义。
为了实现所谓的NonStop,NSK几乎把所有的组件都做了2重化,即使发生了故障,立刻可以从主设备迁移到副设备上去,从而实现不停机。
一个NSK一般由若干个NODE构成,而一个Node的CPU一般为2-16个。Node之间是通过高速的ServerNet技术互联的。每个node节点都有一个node id和node名,在一个系统中是不允许重复的。
Node内的各个CPU都是在同一个OS下运行的,不同的Node则可以运行不同版本的OS(我猜101%windows2000是不行的)。各个CPU可以运行不同的进程,而不像SMP那样所有的CPU一同运行同一个进程。
进程主要用进程名来标识(当然NSK中也有pid的概念)。进程名在同一个Node里不能重复(进程对除外)。不同的节点之间的进程名则可以重复。所以一般进程的标识也都附带节点标识:
节点名.进程名

进程对(Process Pair)。为了确保高可用性,你可以启动一个程序的两个进程,这两个进程就是一组进程对:Primary进程和Backup进程。业务处理主要由主进程来完成,副进程则监视主进程,如果万一主进程死掉了,业务处理则移到副进程来进行。
要编写进程对程序,需要使用NSK特殊的技术NonStopCoding。而且,进程对中的兄弟俩不能在同一个CPU上运行。
再简单说说文件系统。
不像UNIX那样存在唯一一个根目录,有点像windows,以volume为单位管理,volume就类似windows的c,d,e盘等。然而,NSK目录结构最多为两层(volume,subvolume)。
比如$data01是一个volume,下面有一个sub volume liubin,则liubin的下面只能建立文件,不能建立文件夹(NSK中好像也没有文件夹,目录这种说法。)。所以一个文件的全路径可能是这样的:
\nodeid.$volume.subvol.file
由节点名,卷名,子卷名,文件名这四部分组成。

在FORMAT1的情况下,文件最大只能到2gb,不过在FORMAT2的情况下,可以建立更大的文件了。有点类似oracle的数据文件结构,NSK的文件也是以extent为单位进行分配的,一个文件的第一个extent为primary extent,剩下的都是secondary extent。每个extent用page(2048byte)来声明。

AP4R:Asynchronous Processing for Ruby

Filed under: Ruby — liubin @ 20:24

一个轻量级的异步处理系统,简单来说对于不需要立即处理缓存起来分配给别人,或者说接收到请求之后
委派给别的服务,很迅速的给客户端回应(不是浏览器的客户端,是调用方),还有负载平衡等功能。
而且给自己找了一个吉祥物
img
被人称为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/

« Newer PostsOlder Posts »

Powered by WordPress