• #3 楼 @ChanceDoor 是啊,父进程说“我的子进程说了 OK”,子进程说”我的父进程说了 Get a job!“

  • If a block is given with a cmd of “-”, the block will be run in two separate processes: once in the parent, and once in a child. The parent process will be passed the pipe object as a parameter to the block, the child version of the block will be passed nil, and the child’s standard in and standard out will be connected to the parent through the pipe. Not available on all platforms.

    #1 楼 @ChanceDoor 没有写反啊

    回 LZ,就是子进程的 STDIN 和 STDOUT 连接到了父进程的 pipe 上。

  • Web 中文字体应用指南 at 2013年09月10日

    好文,必须加精啊

  • if a || b 的重构 at 2013年09月10日

    #19 楼 @liwei78 为啥异常就应该放到 get_Foo 里,我 a 方法要用 get_foo,b 方法也要用 get_foo,但是只有 b 在找不到 foo 时才认为是异常,在 a 里就没关系。这完全是根据需求来的,和习惯一点关系没有,这样我在 b 里使用get_foo() or raise "Could not find foo!"很正常啊。

  • 成田的雾 at 2013年09月09日

    不明觉厉 顶

  • info 明显应该是个数组啊,怎么会是 hash

  • 这还不常用。。。最常用的就这些了。

  • if a || b 的重构 at 2013年09月08日

    #4 楼 @liwei78 那和 if user && user.name 没啥区别啊;非要纠结两边是 true or false,就写成 if user.present? && user.name.present?,2 遍都是 true or false 了。

  • if a || b 的重构 at 2013年09月07日

    初中老师会让我们算,a < 3 或 a > 5 的那些整数。那么 a 一定是在这 2 个区间了,所以,if 中的那个,一定是两个区间中的一个。

    这个因为所以根本没有关系,谁说 if 里就非得是个区间了。

    按照这么说,类似这样的代码都不能写了

    if user.vip? || user.have_more_than_five_orders?
      xxx
    end
    
  • 关于一个表达式的小疑问 at 2013年09月07日

    在一个由条件式或循环所构成的上下文中,一个 flip-flop 由两个通过..操作符相连的布尔表达式构成。除非其左侧表达式为 true,否则一个 flip-flop 表达式就是 false,而且在左侧表达式为 true 之前,它的值都会是 false。一旦该表达式为 true,那么它就会“flips”到一个持久的 true 状态。它会保持该状态,而且对其后续的求值也返回 true,直到其右侧表达式成为 true 为止。如果其右侧表达式为 true 了,那么该 flip-flop 就会“flops”回一个持久的 false 状态,对其后续的求值也返回 false,直到其左侧表达式再次成为 true 为止。

    ex1:
    
    11, false..false, pass
    12, true..true, collect
    13, false..false, pass
    14, false..false, pass
    15, false..false, pass
    16, true..false, collect
    17, true..false, collect
    18, true..true, collect
    19, false..false, pass
    20, true..false, collect
    

    ..和...的区别是,..是当左侧为 true 时,同时根据右侧来决定 flip-flop 的状态是否为 false,...是下次再根据右侧值决定 flip-flop 的状态

    ex2:
    
    11, false...false, pass
    12, true...true, collect (虽然右边是true,但是这次被忽略)
    13, false...false, collect (这里虽然左右都是false,但是整个flip-flop是true)
    14, false...false, collect
    15, false...true, collect (右侧是true了,整个flip-flop是false了)
    16, true...false, collect (左侧又是true了)
    17, false...false, collect
    18, false...true, collect (右侧是true了,整个flip-flop是false了)
    19, false...false, pass
    20, true...false, collect
    

    关键是知道整个 flip-flop 表达式有内部状态,还有何时根据左右表达式改变内部状态

    貌似是这么解释的,实际上从来没用过这玩意儿。

  • 关于一个表达式的小疑问 at 2013年09月07日

    这是 flip-flop 啊

  • c-family 也马马虎虎,打开 ruby 的源码,用起来还是不行。

  • 👍

  • 颈椎贴 at 2013年09月04日

    颈部以上切除手术(误

  • 可以为这些(类型,大小)做个常量表,对应一个整数,数据库存数字,加索引。

  • 可以用 http://bogomips.org/socket_dontwait/ ,这个 gem 用 recv 实现了一遍。

  • model 查找 at 2013年09月02日

    User.where("usertype != 'student'")

  • 精华贴功能上线 at 2013年08月31日

    而且 LocalStorage 会储存很多空的信息或者是个✓

  • 先支持了 maybe。。。

  • instance_eval 内部 c 实现是调用了 specific_eval,specific_eval 里判断如果参数是 block,就调用yield_under(klass, self, Qundef);,会改变 block 的 self,如果既不用 instance_eval/exec,也不用 define_method 来用 UnbindMethod 去 bind 对象,貌似没办法的样子。

    呼唤大神 @luikore

  • 这个效率很差啊,每次都要重新 sort,Array 还有很多口子没处理 concat 啊,delete_if 啊等等。先 find 遍历,再用 index 效率也很低,不在乎重复元素直接用 SortedSet 还好点。

  • 如何将 Slim 文件转换回 erb at 2013年08月28日

    我也不是很喜欢 Slim/Haml 这种缩进方式的。相比较于 Python 和 Coffee 来说,还是‘代码’,通过提炼重构可以控制单个方法的长度,但是页面模板就不是那么好弄了,你不可能每个模板都控制在几行以内,单个模板十几行,二十几那算是好的,这个情况下 Slim/Haml 这种读起来非常痛苦。

  • 支持 @vincent

  • 把 agent 的代码丢到 lib 下面,rake 任务和业务代码里去调用。

  • 用 Arel 写 exists 子查询代替 in

  • #65 楼 @outman 没测试 我测试的是 EM 和 Node 的比较,前面都不搞 Nginx 的,都单进程。Goliath 在 2.0 下和 Node + Express 差不多