• 大家外语能力如何? at March 30, 2012

    逼我,应用上 appstore 如果遇拒都要写英文啊,。我猛的回了几句中文,没想到给通过了。 现在 iphone,ruby 文档大多英文,看得我很累,努力学习中。

  • 关于印刷英文技术书 at March 30, 2012

    #6 楼 @gubiao good,我想把那个锄头书打印一下。

  • 妹啊,我今天刚在总结这个,你就提问了。

    instance_exec 与 instance_eval

    两者都是取出 singleton_class 来执行 block,所以用其定义的方法全为 singletion_method instance_exec 可以传送参数,而 eval 不可以

    class_eval 和 class_exec 也是执行 block,但是是放入当前 class/module 环境中执行,所以用其定义的方法为实例方法。 module_eval==class_eval

    昨天和 zw96 讨论了一下,还补充一下。

    instance 和 class_eval 的 recvier 都还是 self,但值得注意的是 instance_exec 的执行环境在 singleton_class 之下,而 class_eval 则在 self 之下。

    所以涉及到消息接收时,两者一样,如

    O.instance_exec {
      define_method(:hello) {p 'instance exec method'}
      puts self.object_id
    }
    
    O.class_exec {
      define_method(:hello1) {p 'class_exec exec method'}
      puts self.object_id
    }
    
    
    

    但涉及到执行环境时,则处理不一样,因为 instance_exec 在 singleton_class 环境下,所以生成的方法为类方法,而 class_exec 则为实例方法。

    O.instance_exec {
      def fun;end
    }
    O.class_exec {
      def fun;end
    }
    
    
    
  • 你们玩吧,我要回老家去趟。

  • 真强大,比 everything 还牛。

  • #1 楼 @kevinhua 不用刻意要求自己,多写,熟能生巧。写多了你就会想怎么减少代码量,避免重复代码,重复逻辑,提高复用程度。 别人的代码风格也不用太深究,一时发挥而已,一个 forum,我相信你自己梳理一下思路,也能够实现个大概,此时再去看看别人的写得好点的代码,再学习是很有用的。

  • #17 楼 @anklos 我的本意是判断第一个字母是否为大写,因为这才符合 class 或 module 的命名,谁知道 capitalize 发挥了我意想不到的作用。

  • #5 楼 @zw963 我是 c 式写法,按你的进度,两个月就是牛人了。

  • codeplex 支持 git 了 at March 24, 2012

    这个以前写 vs 项目时用过,话说在国内用起真的很痛苦,很慢的。

  • #3 楼 @zw963 不错,不考虑速度的话看起来像那么回事了。

  • #6 楼 @iwinux 你这个写法性能也很差的,当有异常抛出时,eval 和 resuce 的性能差得死。

  • #8 楼 @anklos 这好解决,

    def present?(name)
       name.split('::').inject(Object) {
            |o, x| o = o.const_get(x) if x.capitalize==x && o.const_defined?(x) 
       }.is_a? Class
    end
    
    

    eval 性能很差的,我这个性能好很多。

  • clone? dup? =? at March 22, 2012

    =可以理解为指针,或引用 clone 和 dup 都是浅拷,你的这个例子里写 clone 和 dup 都一样。因为浅拷,所以这个:z 只拷指针,不拷内容,一改变全变。

    我看了一下源码,clone 和 dup 主要不同是,clone 可以拷到 engienclass,而 dup 不行。如:

    s = "123456"
    def s.fun;p 'haha';end
    s.clone.fun #=>成功
    s.dup.fun #=>undefined method `fun'
    
    
    
    

    还有就是楼上的 FREEZE 状态。

  • 还能再慢点不?! at March 22, 2012

    #11 楼 @mimosa 晕。。。那你这个 t.orders 还是会查 sql 的啊。

  • 还能再慢点不?! at March 22, 2012

    跟数据结构有毛关系,你把那个 3 层循环拆成 2 个两层肯定是可行的,orders,filter_list 两个先比,找出符合条件的再和 trades 算帐。

  • 我喜欢做小燕飞和眼保健操,效果都不错。刚做小燕飞肩痛了很久,后来关节再也不痛了。 目前上下班保持极限速度快走 30 多分钟,哎,感觉又回到了 18 岁。

  • 还能再慢点不?! at March 22, 2012

    #9 楼 @mimosa 你这个时间复杂度是 O 3 次方,先把复杂度杂下来吧。搞成 2 个 O2 也要好点吧。

  • 不错的点子啊。利用 node.js+websocket 应该比较好实现。你快写吧,不写我要写了。

  • 还能再慢点不?! at March 22, 2012

    不能,楼主强,怎么才能做到这么慢呢。

  • #5 楼 @mobiwolf deb 不更好,老是卡卡的编译爽吗。到底是你在用系统,还是系统在用你。

  • benchmark

    user system total real eval: 3.580000 0.000000 3.580000 ( 3.585330) const_get: 1.830000 0.000000 1.830000 ( 1.824264)

  • 这样可行吗?

    def present?(name)
       name.split('::').inject(Object) {
            |o, x| o = o.const_get(x) if x.capitalize==x && o.const_defined?(x) 
       }
    end
    
    
  • 个去,难怪我的 ios 头像都显不出来。

  • brew 好用吗,apt 爽得多。

  • ruby 方法的寻找路径? at March 21, 2012

    #11 楼 @skandhas 谢了啊,刚用 xcode 走了一遍,的确是这样的。I 的意思是啥,inject 吗?

  • ruby 方法的寻找路径? at March 21, 2012

    #5 楼 @skandhas 第 1 点我有时间再自己探究一下。

    2.对于 C include M: 即然这样的话,那么为什么在 ruby 中调用 C.superclass 为什么还是 B 呢。这样不一致的处理,貌似有点混乱。莫非这个 engienclass 和 M-proxy 的类型不是 T_CLASS?

    jit 想搞,但进度有点慢,一步一步来,先把整个架构搞清楚。

  • #9 楼 @zw963 这书翻了一下,觉得不错,就是发现当当没卖,亚马迅的要几百块一本,咋事。

  • 还有 ida 和 od 可以用呀。

  • #26 楼 @outman 一个语言提供了极大的灵活性,确不能灵活使用,硬要规范成一样的规格,那是多悲哀的事情。要团队编码一致性,何不用严谨的语言 java. 我觉得 ruby 并不适合一个高手(或架构师)把架构一搭,带一群小弟一起的开干。 更适用的场景应是 powerman+? 用最少的时间发挥最大的作用,内部如何奇如何淫无所谓,约定的接口全用测试用例保证程序正确性。