• Ruby China 正在衰退吗? at 2017年03月13日

    两天 54 回复了... 很多都不是长出来发帖的同学... 所以... 没有衰退...

  • 求推荐机械键盘 at 2017年03月13日

    我用过蓝牙版有一年时间,没有问题,不过蓝牙版的手感和有线的不一样,不太喜欢。

    蓝牙键鼠不稳定应该是 macOS 的锅,除了官方那一系列,其他牌子的都会一定程度有问题,另外 W1 芯片的蓝牙耳机也有很影响使用的问题... 在 Mac 上装 Win 都没那些事的

  • 求推荐机械键盘 at 2017年03月13日

    个人习惯嘛... 我喜欢的 Tactile Pro 跟静电容的手感基本相反的... 而且 Matias 一把不到 700,超便宜呀,87U 1799... 我还有一把 104UG-HiPro 2400 多...

  • 用 Ruby 做编译原理大作业 at 2017年03月13日

    👍

  • 求推荐机械键盘 at 2017年03月13日

    有把 87u 纯看造型复古入的,比 hhkb 看着正常点,1700 多,用一阵觉得不喜欢静电容的手感

  • 然后还要去掉 Null...

  • 一种可能性而已... 心理素质不佳也算减分项呀

  • 噗 楼上有位去人多的聚会就会😂

  • 环境不同,紧张,临场发挥失常

  • 和求职者心理素质也有关系

  • 不知道要怎么说了。。。 @kgen 对这种事怎么交涉有啥经验么...

  • 这答复也是无懈可击,没法反驳...

  • 我在家(北京联通)测试东京 1 机房比 2 快了快十倍... 但是 1 不让迁进去了

  • 你更新到原文上嘛...

  • ActiveRecord Store 使用介绍 at 2017年03月10日

    继续抛砖引玉哇 😂

  • 必须啊... github flavored markdown

  • 来啊

  • ActiveRecord Store 使用介绍 at 2017年03月08日

    是的,从另一方面来讲,role.permissions = {read: false} 这样做改变了 permissions 的类型是很合乎逻辑的行为,Ruby 鸭子类型嘛!

    但是,write_attributes 等行为也会改变 permissions 的数据类型,这就涉及到 ActiveModel 的相关的原理了,他底层是用 public_send "#{attribute}=", val 来实现更新数据的行为,所以这里有抽象泄露。

  • ActiveRecord Store 使用介绍 at 2017年03月08日

    总之是个比较高级的特性了,用好很强大,提另一种用法,来自 Redmine: https://github.com/edavis10/redmine/blob/master/app/models/role.rb#L77

    但是需要注意的问题也很多,这里有抽象泄露,得对 ActiveModel 有一些了解才能正确实现,提一种坑

    class Role < ApplicationRecord
      def permissions
        @_permissions ||= Permissions.new read_attribute(:permissions)
      end
    end
    
    role = Role.new
    role.permissions.class #=> Permissions 这是我们期望的
    role.permissions = {read: false} # 或者 role.update_attributes permissions: {} 前端表单提交可能会这么写
    role.permissions.class #=> Hash 注意!
    
  • ActiveRecord Store 使用介绍 at 2017年03月08日

    默认是 YAML,你发的文档有提的。

    他不是不推荐,这里确实有坑,举个例子,你可以持久化成 JSON,但是 JSON 和 Ruby 的数据类型没法一一对应,没有考虑到这点(主要是说 Coder 要处理好类型转换,包括字段为 nil 之类种种边界情况),就会出问题,所以在使用的时候要小心。

  • ActiveRecord Store 使用介绍 at 2017年03月08日

    这个不冲突的呀,serialize 只决定把某个字段映射成什么类,最后持久化成什么样是 Coder 来控制的,存成 hstore 没有任何问题

    况且,serialize 可以把字段映射成一个具体的类,可以有效的封装状态行为验证等等

    想它的价值得把存储数据和应用数据分成两件事来看待

  • ActiveRecord Store 使用介绍 at 2017年03月08日

    效率可能低,但是功能非常强大,serialize 只是一种标准实践,封装了形如

    class Role < ApplicationRecord
      def permissions
        @_permissions ||= Permissions.new read_attribute(:permissions)
      end
    end
    

    这种将某字段作为虚拟模型的模式,那能做到多强大就看需要和想象力了

    Rails 只是为一些简单场景(比如数组、哈希)做了开箱即用的实现,Rails 推崇 PG,还有 PG 支持 Array 这些数据类型比 Rails 提供这方面支持可晚了一些,这里有点历史原因在的

  • ActiveRecord Store 使用介绍 at 2017年03月08日

    store 和利用 hstore 之类的数据库特性不冲突的,序列化和反序列化是由 coder 完成,可以自己定制

  • 一个小错误? at 2017年03月08日

    没错的,他说 == 等价于(Equivalent) <=> 所以后边就全用 <=> 来举例用法了,Ruby 为了让你用着爽,为很多方法提供了常见的别名 (通过 alias_method),典型的还有 countsizelength,Rails 里也有不少,在文档上,就取其中一种来做示例了

  • ActiveRecord Store 使用介绍 at 2017年03月08日

    serialize 现在也有,其实你看看 store 的源码就知道怎么回事了

    def store(store_attribute, options = {})
      serialize store_attribute, IndifferentCoder.new(options[:coder])
      store_accessor(store_attribute, options[:accessors]) if options.has_key? :accessors
    end
    

    简单场景下的 serialize 的封装

  • 求推荐机械键盘 at 2017年03月07日

    不能...我各个地方都表态用电脑是件非常神圣的事情...要先洗手...手打油了重新洗手,用电脑时不吃零食...

  • 转载过来吧!

  • 求推荐机械键盘 at 2017年03月07日

    那个键盘质量不高的,就工作敲代码用...然后几个键就失灵了

    勤奋!

  • 求推荐机械键盘 at 2017年03月07日

    好键盘啊,就是做工质量太次,我从 13 年到去年中用废两把了...去年又买了一把做工改进不少

  • 肯定算大型项目了 Gitlab 还拆了好多到子项目里去,包括 Redmine 模型的代码都不多的,模型只能算核心数据结构吧,这几个项目的 lib 目录都是大头...