这次测试需要建立很多数据文件(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
(more…)
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里面去。在这之前,先看看大体的流程和一些数据的构造。
编译处理流程
(more…)
最近大家知道平锅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。

(more…)
Drecom 公司为了在软件工程师中推广Rails,从2006年就举行了DRECOM Award on Rails。
今年是第二年了,最高奖100万日元,合8300美元左右,合人民币6万多,如果人民币再升值,就快不到6万了。
报名时间为6月2号到9月25号。
国内的团队不知道有没有想要试试看的。
具体信息可见http://rails.drecom.jp/english_top
File Utility Program 的缩写
简称FUP,非常强大的文件管理工具。
可以参考File Utility Program (FUP) Reference Manual
或本blog的其它文章:tag->FUP
关于什么是结构化文件,可以参考本地其它文件,tag NSK
先看看表的结构:
(前面的小横线是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…)
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)来声明。
一个轻量级的异步处理系统,简单来说对于不需要立即处理缓存起来分配给别人,或者说接收到请求之后
委派给别的服务,很迅速的给客户端回应(不是浏览器的客户端,是调用方),还有负载平衡等功能。
而且给自己找了一个吉祥物

被人称为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/