2008-05-08

Ruby中实现stream

关键字: stream 延时求值
     流是通过延时求值实现的,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 ...
2008-05-05

使用Rope来高效处理长字符串

关键字: rope java ruby 长字符串
    前段时间看了这篇文章《Ropes:理论与实践 》。这两天为了提高工作中某个系统对外接口的效率,才认真学习了一番。本质上Ropes是将字符串表示为一棵二叉树,特别适用于长字符串的处理,貌似c++ STL库中也有这么个实现。具体实现和原理还是看这篇paper 。《Ropes:理论与实践 》 一文中给出的测试数据相当惊人,Ropes比之String和StringBuffer在append,insert,delete等操作上的效率都有一 个数量级以上的差距。跑下作者给出的测试程序,其实在测试的字符串不是很长的情况下,这个差距并没有那么大,这也从侧面说明了 ...
2008-04-28

说说迭代中的需求变更(更正)

关键字: 软件工程 迭代
    我们现在做的项目是典型的小型项目,整个组也就4、5个人,一个迭代周期基本在两周左右。尽管没有明确有“迭代”这么说法,却是以业务人员的策划案做分期 实现。这个分期,按我的理解其实就是迭代。最近发现的一个问题是,在迭代开始后,业务人员却没有办法保证需求在这个迭代周期完成前的稳定性,甚至在各个模 块集成之前,大家就提出N多意见,并且这些意见很多时候都是前后矛盾的。特别是在客户端的开发上,显然,客户端UI和操作习惯方面是最多变的地方。可怜我 们公司唯一的MM程序员快陷入变更频繁的泥潭了,改过去改回来是家常便饭。其实也是她过于老实,要 ...
  • 21:06
  • 浏览 (31)
  • 评论 (0)
    推荐两篇blog: 《java NIO 类库selector机制解析(上)》 《java NIO 类库selector机制解析(下)》     有一个奇怪的现象引出的话题,为了Selector.wakeup功能做到跨平台, 每个 Selector.open() 时,在 Windows 会建立一对自己和自己的 loopback 的 TCP 连接;在 Linux 上会开一对 pipe ( pipe 在 Linux 下一般都是成对打开)。 java为了跨平台真是无 ...
    17日的南方周末的一篇报道《17岁的残酷青春》,让我心神不宁,甚至昨日晚上做了噩梦。我很奇怪,每次看报纸,看到不正常的事总是愤愤地发表一番评论,乃至于老婆认为我有毛病:)。原文在这里     想的最多的是一个词,不停的在脑海中打转——异化。是什么样的原因让一个17岁的少年做出如此残忍的事情?对自己爱慕的同班同学下手,并冷静地分尸抛尸。 是什么样的因素让他的情感异化到这样的地步?不热爱生命,不尊重生命。如果不热爱自己的生命,那是不可能尊重生命的。仅仅是网游的问题吗?这样的总结是不 是太苍白 ...
2008-04-17

善用表驱动法

关键字: 表驱动法 ruby
    最近碰到个需求,计算游戏得分的规则,类似这样: 游戏人数 第一名获得赌注 第二名获得赌注 第三名获得赌注 第四名获得赌注 二人 100% 0% — — 二人 (出现 2 个第 1 名时) 50% 50%     ...
2008-04-16

scheme解决约瑟夫环问题(续)

关键字: scheme 约瑟夫环
    sicp的习题3.22,也就是以消息传递的风格重新实现队列,我的解答如下: (define (make-queue) (let ((front-ptr '()) (rear-ptr '())) (define (set-front-ptr! ptr) (set! front-ptr ptr)) (define (set-rear-ptr! ptr) (set! rear-ptr ptr)) (define (empty-queue?) (null? front-ptr)) (define (front-qu ...
2008-04-14

小引阳明这只鞋(转)

关键字: 王阳明
《王阳明大传》序,作者:周月亮 一生极重践履的阳明,本身就象只鞋。这只鞋上插着高贵的权力意志的权杖。形成心学的倒T字型结构——不是十字架,也不是钻不出地平线的大众的正T字型。他的“致良知”工夫就是要你站在地平线上。然后脚不离地的无限的向上升华,把人拉成顶天立地的大写的人。 拔着头发离地球的是阿Q,当缩头乌龟的是假洋鬼子,只是鞋而无权杖的是读书没有悟道的士子。只耍权杖而不愿当鞋的是政治流氓——那个意志不是高贵的权力意志,只是反人道的独裁欲望。 阳明的心学是这样一种生活方式:既生活在这里,又生活在别处! ...
2008-04-07

lua 5.0的实现(翻译)4,5

关键字: lua 实现
4、 表     Table是lua的主要——实际上,也是唯一的——数据结构。Table不仅在语言中,同时也在语言的实现中扮演着重要角色。Effort spent on a good implementation of tables is rewarded in the language,because tables are used for several internal tasks, with no qualms about performance。这有助于保持实现的小巧。相反的,任何其他数据结构的机制的 ...
2008-04-07

lua 5.0的实现(翻译)1,2,3部分

关键字: lua 实现
三个多月前翻译的,今天又找出来看看,后面的整理再发。  原文: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 ...
dennis_zane
搜索本博客
存档
最新评论