• 先定话题,再说到哪里,定下 topic 可以方便其他人调整自己的时间

  • #51 楼 @sundevilyang ruby tuesday 是一种比较“轻量级”的技术分享方式,topic 没有限制,之前我一直在维护 http://ruby-china.org/wiki/hangzhou_ruby_tuesday 这个页面,不过后来回家一段时间,没有更新

  • 那种 API 设计好? at 2012年05月11日

    别纠结,两种几乎一样好

  • 系统学习吧,rails 中充满了 DSL,就像一个新的语言,基础概念还是要学的,没有别的捷径。 另外还有一个建议:如果你有一定 web 开发经验并且思路和 rails 不同,那么基于 rack、sinatra 之类做一个你自己的 web 框架也是不错的选择

  • 我是在应用中嵌入版本控制能力,所以 emacs 什么的就关系不大了。不过看来没有太好的方式,那我就直接封装命令行吧

  • 有多少人在用 bundler1.1 ? at 2012年05月10日

    #19 楼 @hooopo 这个说法的根据是——我看走眼了,:-P 刚才又看了一下,确实有 1-1-stable 这个分支,之前看到的是“Showing 16 branches not merged into master”这个列表,所以没看到 1.1

  • 有多少人在用 bundler1.1 ? at 2012年05月10日

    #14 楼 @hooopo 哦,那个是文档的版本,不过 git 分支上也能说明问题,只有 1.0 stable,没有 1.1 stable

  • 有多少人在用 bundler1.1 ? at 2012年05月10日

    #8 楼 @dotnil 估计是 github 被墙了

  • 这种面试本身就很不靠谱,面试者根据你的单一表现判断你的单一能力,但其实这里面因果关系没那么简单,专业的做法是一整套复合测试,就是为了避免各种主观判断错误,遗憾的是这么做成本很高......

  • #22 楼 @TingTing 乱不怕,有地方就行

  • #18 楼 @raven 什么意思?大浪提供场地不便么?那就到淘宝吧,俺也省了跑远路,嘿嘿

  • #14 楼 @lgn21st 我一直觉得 ruby 程序员要靠自己培养,不但是语言,而且要培养做事方式和习惯

  • #16 楼 @linjunhalida js 就是个大杂烩,所以大家都觉得象自己喜欢的那种语言,嘿嘿

  • #16 楼 @zw963 行阿,力所能及的话没问题

  • #11 楼 @bhuztez 现场应该有别的笔记本,不过不知道是不是符合你的要求

  • #27 楼 @zw963 没错,所以说的时候可以稍微简单些,但是心理还是要分清楚 lambda、proc、Proc 以及 block 的概念

  • #9 楼 @zw963 心动不如行动

  • #7 楼 @bhuztez 这个话题估计 @Saito 是有话说的,我也可以小参与一下

  • #24 楼 @zw963 是的,楼主还没有理解闭包,他只是提了一个关于 block 的问题。 ruby 对闭包的支持体现在 Proc 对象上,不过为了编程方便,ruby 发明了 block 这种机制,我们说的时候也确实容易把它和闭包等同起来,不过就像你说的,如果这个 block 没有携带着当时的 binding 对象被传递出去,其实也不能算是闭包

  • 没有 1.9 的?

  • #12 楼 @ptmagic 基本上是这个意思,不过如果闭包里的局部变量与外部重名,ruby 会混淆,这时就要用 @donnior 提到的那个语法声明一下了 另外,估计有人会误解,特别说明一下,对于下面这段代码

    def xx
      yield
    end
    
    xx{ puts 'something }
    
    

    大括号里面的东西叫做闭包,xx 是个函数而已,只是这个函数接受了一个闭包作为参数

  • #14 楼 @donnior 我们一般说对象是为数据添加了(相关)行为,而闭包就是为行为绑定了(关联)数据,所以它们都是某种“数据 + 行为”的编程结构,在实现层面上应该是很象的。不知道你会不会 java,java 中没有闭包,替代它的是匿名内部类,类似这样:

    final int x = 100;
    someCollection.sort(new Comparable(){
        public int compare(Object a, Object b){
            ...... // 这里可以使用x的值,因为被"复制"进来了
        }
    }
    
    

    可以看出,除了因为不支持 duck type 而多出的那些类型系统代码外,匿名内部类和闭包的唯一区别就是匿名内部类要 new 出一个对象,从这个角度看,闭包其实就象一个只有一个函数的对象。而所谓 binding,可以这么理解,构造这个(闭包)对象时,我们将需要用到的外部变量都复制进来以备今后使用,这就是所谓“延长了变量的生命周期”的含义,而如果这个变量是在引用一个对象,那么显然这个对象就可以在闭包中被影响。最后,具体对于 ruby 语言,由于一切变量都是对某个对象的引用,所以内部就应该能修改变量在外部的值

  • 今天刚看到有人说 taiwai 社区讨论的问题比较有技术含量,结果这个月经贴又被翻出来了......好吧,我也是 ubuntu

  • #4 楼 @donnior 楼主说的不是 ruby 闭包的问题,所以加了新语法依然无用

    $ irb
    1.9.3p194 :001 > def ss
    1.9.3p194 :002?>   x = 'aa'
    1.9.3p194 :003?>   yield('cc')
    1.9.3p194 :004?> end
     => nil 
    1.9.3p194 :005 > x = 'bb'
     => "bb" 
    1.9.3p194 :006 > ss{|y;x| "#{x}, #{y} world"}
     => ", cc world"
    
    
    

    楼主估计还没有理解闭包,闭包的一个重要作用就是延长了外部变量的生命周期(ruby 里面的 binding 就是对外部环境的对象化的结果) 简单一点说,这里有三个 x 变量,外部环境中的变量 x,函数体内部的局部变量 x,传入函数的 block 自身携带的局部变量 x,三者不可混为一谈

  • ruby string to class at 2012年05月06日

    还是系统的看看书和 rubydoc 再问吧,说起来挺罗嗦的

  • #3 楼 @kevinhua 这个体验是很差的,用的越久感受越深

  • 最难以忍受的是那个 file browser 插件,单击目录节点的时候经常不是打开节点而是进入目录,很不方便

  • RubyOnRails.org 崩溃 at 2012年05月06日

    哦也

  • #10 楼 @zw963 ruby 的哲学是把权利交给开发者,所以比较适合 geek #9 楼 @zw963 说到“所有语言都很相似”,要看怎么理解。 我们可以说这句话错误,是因为有的人喜欢拿着这句话排斥新的语言,但是语言是人和计算机打交道的中介,一种语言往往意味着一种看问题的角度,背后是方法论的差异,“语言只是一层皮”固然不假,但是这层皮其实决定了你的思路和设计方案 但是,学了几种语言以后,我确实感觉到语言要解决的问题都很相似,当然,并不是有些人所理解的——“都是 0、1 而已”,我感到相似的是数据和过程抽象、逻辑分派方式,以及如何处理复用和解耦之间的矛盾,在这些地方,各种语言都要面对,经过多年的互相学习,解决方法不会太多,故而显得类似 总的来说,如果是初学者或者就会一两种语言,最好别学人家说什么“所有语言都一样”,等到自己亲身体验几种语言甚至自己发明一种语言以后再说不迟

  • Ruby 1.9 中文处理 at 2012年05月06日

    #12 楼 @googya 我个人其实比较喜欢这种做法,自我声明 encode,可以避免很多问题。当然,如果需要,可以写段脚本统一添加这个文件头 #11 楼 @charmquark 1.8 也不复杂吧,不需要用 ruby 写,iconv 编译不麻烦的