• 北京面试所感 at 2017年04月14日

    没实际的编程工作经验不要死守着 1W 的工资线。 钱对刚入行的人来说一点都不重要,但对公司来说就不一样,1W 工资请一个刚入门的人就算过得了程序员那关,也过不了老板那关。

    还有,作为前端程序员我不觉得 4 个月培训能顶得上 2 年有点挑战的实际工作经验,更别提大学 4 年计算机专业学习了。

  • 尝试回答一下:

    1.为什么下面两者的 ancestors 差这么多,A 与 A.singleton_class 有哪些关联与不同?
    2.与 A.ancestors 相比 A.singleton_class.ancestors 中 #<Class:A>, #<Class:Object>类似这些东西是什么?

    首先要明白 ancestors 返回的是一个类的祖先链上的其他类(也包含自身),通过不断地调用 supercalss 方法就能遍历祖先链(例外情况是 Kernel):

    A.superclass #=> Object
    Object.superclass #=> BasicObject
    BasicObject.superclass #=> nil
    

    然后要明白 singleton_class 是什么东西。它是一个隐藏在对象(不管是普通对象还是类)后面的一个特殊类,它只有一个实例(就是它自己)。既然 singleton_class 是一个类,那么调用它的 ancestors 方法就会返回它祖先链上的其他类。

    A.singleton_class.superclass #=> #<Class:Object>
    A.singleton_class.superclass.superclass #=> #<Class:BasicObject>
    

    #<Class:Object> 其实就是 Object 这个类的 singleton_class。

    直到 Object 为止,一个类的 ancestors 跟它的 singleton_class 的 ancestors 是一一对应的,但是:

    BasicObject.singleton_class.superclass #=> Class 
    Class.superclass #=> Module
    Module.superclass #=> Object
    Object.superclass #=> BasicObject
    BasicObject.superclass #=> nil
    

    所以一个类的 singleton_class 的祖先链会比这个类的祖先链要长。

    一个对象的 singleton_class 跟这个对象的关联,我觉得是 singleton_class 用来保存定义在对象身上的方法(这是 singleton_class 存在的意义);不同之处在于,如果这个对象是普通对象,它是不能保存方法的,如果这个对象是类,它可以保存类的实例方法;不管何种情况,它的 singleton_class 保存的都是定义在对象身上的方法。

    1.为什么不是一个 singleton_class 也可以定义 singleton_method ?

    只要是个对象,都可以定义它的 singleton_method 方法。定义的方式有下面几种,实际效果都是一样的:

    # 直接在对象上定义
    
    class A; end
    def A.p; puts 'A'; end
    a = A.new
    def a.p; puts 'a'; end
    
    # 在类中定义(1)
    class A
      def self.p; p 'A'; end
    end
    # 在类中定义(2)
    class A
      def A.p; p 'A'; end
    end
    # 在类中定义(3)
    class A
      class << self
        def p; p 'A'; end
      end
    end
    

    ps. 其他问题好像都已经顺便解释了。。。强烈建议看看《Ruby 元编程》这本书,看完就弄明白这些问题了。

  • 点开原文链接,看到这个,有点尴尬啊:

  • 全栈营感想 at 2016年09月18日

    冷嘲热讽大可不必,就算课程收费再贵,那也是交易双方自愿发生的行为。

    只要所写皆为事实,打个软广又何妨呢

  • 你想单纯扯淡的话,就不要找“水平高”的扯淡对象,浪费别人的时间。

    你要是觉得自己水平高,又想寻找比自己水平更高的人,就去找机会把自己的想法、看法表达出来。写写书评、写写博客,或者直接的在别人的书评、博客、帖子下来表达自己不同的观点、提出疑问、指出错误,除了整理自己的思路,与作者交锋或者会有意外收获。

    这样做的目的就是吸引比你高水平或者与你水平相近的人的注意。要想索取、先要付出。

  • 还没招到吗?心疼你几秒钟😝 。。。。

  • stream_from 和 stream_for 都是用来标记某条连接下面的某个 stream。ActionCable 收发信息的最小单位是 stream。

    stream_from 的参数要跟 ActionCable.server.broadcast 的第一个参数一致,这样前端才能收到广播

    你在 app/assets/javascripts/cable.js 里面加一行代码启用 debug

    App.cable = ActionCable.createConsumer();
    ActionCable.startDebugging(); // 启用调试
    

    ,然后动手试试,看打印信息就知道,再不行就看源码。

    stream_for 先把 channel 和 model 的信息拼凑成字符串(具体什么形式不清楚)作为参数,然后调用 stream_from

  • The Rails Doctrine - 中文翻译 at 2016年08月03日

    #19 楼 @huacnlee

    开头这里还有一个:

    本文翻译 The Rails Doctrine - 作者是 DHH

    本文翻译自 The Rails Doctrine - 作者是 DHH

    #20 楼 @rocLv 附议 开个 Repo

  • The Rails Doctrine - 中文翻译 at 2016年08月03日

    many thanks !

    有几处 Typo

    纵然有好的时机,时间久了也会影响也会逐渐减少

    纵然有好的时机,时间久了影响也会逐渐减少

    废话不多说,下是由我所认为

    废话不多说,以下是由我所认为

    用一种方法,最好只有一种方法来完成一件事

    用一种方法,最好只有一种方法来完成一件事

    问问 JRuby 哪些试着要对 Ruby 逆向工程的人看看

    问问 JRuby 那些试着要对 Ruby 逆向工程的人看看

    以及哪些跟 Matz 一样对同样事物感到惊讶的人

    以及那些跟 Matz 一样对同样事物感到惊讶的人

    纠结该拉条线才是正确的

    纠结该拉哪条线才是正确的

    就好比大家昨晚七点看了某个节目

    就好比大家昨晚七点都看了某个节目

    而是要把优美纳入优先考2

    而是要把优美纳入优先考量

    里面通常穿插于 Ruby 本身的管用式和自定义的 DSL 威力之间

    里面通常穿插于 Ruby 本身的惯用语法和自定义的 DSL 威力之间

    剩下的就交给框架来处理,该去哪里,该调用个方法

    原文是:

    and the framework can do all the plumbing that goes around that, and know this is the method to call

    改成“框架会处理其他相关的事情,然后会调用这个方法”会不会好点?

    但这有背于大部分软件工程师对其他同事的想法

    但这有悖于大部分软件工程师对其他同事的想法

    我们我们有足够的信心启发下一代的软件工程师,并且有勇气相信他们

    我们有足够的信心启发下一代的软件工程师,并且有勇气相信他们

    但凡让有点能力的人来实用 Concern

    但凡让有点能力的人来使用 Concern

    尚未学会实用这些实用工具的软件工程师

    尚未学会使用这些实用工具的软件工程师

    以及该怎么根据实际场景来实用不同的工具,有时甚至实用危险工具

    以及该怎么根据实际场景来使用不同的工具,有时甚至使用危险工具

    原因知道帮助任何人,让学习组一步步成为大师。

    原文是:

    willing to help and guide anyone to experthood

    翻译成“愿意帮助和指导任何人,让他们走上大师之路”会不会好点?

    Rails 可以在很多场景下实用

    Rails 可以在很多场景下使用

    同样的功能在后端做一次,在端再做一次

    同样的功能在后端做一次,在前端再做一次

    可以我们从大局来看,这件事仍然是值得的选择

    可是我们从大局来看,这件事仍然是值得的选择

    这些工作不知有 Rails 需要,广大的 Ruby 社区也需要

    这些工作不只有 Rails 需要,广大的 Ruby 社区也需要

    许多人用代码或是思熟虑的论证来提供意见

    许多人用代码或是深思熟虑的论证来提供意见

    这篇基本信条描述着一种理想形式时,不过日常生活中的实际情况却更微妙(有趣)。Rails 可以包容尊重这样庞大的社区,是因为我们几乎不实验任何的一份子。

    原文是:

    So while this doctrine has described an idealized form, the everyday reality is much more nuanced (and interesting). Rails is capable of supporting such a large community under one tent exactly because there are so few if any litmus tests.

    不结合上下文,很难看懂翻译过后的文字。

    翻译成“这篇基本信条描绘出一种理想状况,但日常生活中的实际情况却更微妙(也更有趣),正因为 Rails 几乎从来不考验每一个想法,它才能包容下这样庞大的社区”会不会好点?

  • Ruby 类的问题 at 2016年07月20日

    #7 楼 @uestc_bird 有一本书可以解答你的问题《ruby-under-a-microscope》,你可以看第三章。

    简单地讲,ruby 用两种数据结构分别表示对象和类,RObject 表示对象,RClass 表示类,RObject 中有一个 klass 指针指向它的类,RClass 中既有一个 klass 指针指向它的类,也有一个 superclass 指针指向它的超类(这个超类也是用 RClass 来表示)

  • Ruby 类的问题 at 2016年07月15日

    或许 ruby 对实例、类的定义与其他语言有些区别,其他语言实例跟类是泾渭分明的,但在 ruby,所有的类都是 Class 的实例,包括 Class 本身,而所有的类都最终继承自 BasicObject(除了 BasicObject 本身)。

    用其他语言的逻辑去理解会混乱的,所以我干脆把实例和类当作两个互不相干的维度。 PS. 我觉得要理解这一切最终只能看源码了

  • 就在大疆对面的干活,听说那边工作强度很大?

  • 采用 reddit 那种回帖方式怎么样?

  • 支持