• 不过我觉得Rails的 ActiveRecord 是比Martin的AR模式复杂很多的实现,用来实现复杂的领域模型也没问题,但是要求领域模型和数据库表之间的一一对应,不然会有些麻烦。

  • 请教接口设计规范问题 at 2019年02月18日

    这种方法是不好的,创建和更新是两个不同的业务逻辑,需要不同的接口,即使处理的代码有很多相似的地方,也不要合成一个。分开的好处是单一职责,和在一起肯定会增加复杂度,另外就是容易扩展,如果以后两个接口处理的逻辑又有不同,就要再加 if-else 判断是create还是update。不过你应该都知道,那就是沟通和说服别人的问题了,这个是最难的,慢慢来。

  • [n, i].max做了优化,并不是普通的创建临时数组, 不过性能完全依赖实现细节吧

    ruby --dump insns test.rb

    local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    [ 1] i<Arg>
    0000 nop                                                              (   2)[Bc]
    0001 getlocal_OP__WC__1 n                                             (   3)[Li]
    0003 getlocal_OP__WC__0 i
    0005 opt_newarray_max 2
    0007 leave
    

    opt_newarray_max用来比较

    如果是走上半部分的话貌似就不会创建临时数组了

    static VALUE
    vm_opt_newarray_max(rb_num_t num, const VALUE *ptr)
    {
        if (BASIC_OP_UNREDEFINED_P(BOP_MAX, ARRAY_REDEFINED_OP_FLAG)) {
            if (num == 0) {
                return Qnil;
            }
            else {
                struct cmp_opt_data cmp_opt = { 0, 0 };
                VALUE result = Qundef;
                rb_num_t i = num - 1;
                result = ptr[i];
                while (i-- > 0) {
                    const VALUE v = ptr[i];
                    if (result == Qundef || OPTIMIZED_CMP(v, result, cmp_opt) > 0) {
                        result = v;
                    }
                }
                return result == Qundef ? Qnil : result;
            }
        }
        else {
            VALUE ary = rb_ary_new4(num, ptr);
            return rb_funcall(ary, idMax, 0);
        }
    }
    
  • Ruby GC 自述 at 2018年07月09日

    写的不错,ruby hacking guide中用的是ruby 1.7作为例子,那个版本的gc代码比较简单,可以看一看,后面就变的越来越复杂了。 另外推荐《垃圾回收的算法与实现》,介绍了其他几个主流GC算法。

  • Ruby GC 自述 at 2018年07月09日
    1. 不行
    2. 如果仅仅是你自己的分支或者代码仅仅在你本地(上线了不行,团队里的其他人跑了你的migration也不行),直接rake db:rollback(或者migrate:down 加上你的version),然后修改migration 文件后重跑即可;否则要重建一个migration加上默认值
  • 原来为啥用Sinatra?现在为什么要换?

  • 这篇帖子的作者算活跃人士吧?

  • 这篇说 stackoverflow 上关于 rails 的问题下降趋势挺明显的,比较奇怪。

  • sanitize_sql