• #16 楼 @chenge 1.9.x 下 BasicObject 可做 blank class 用。1.8.x 需要自己处理一下,或使用 gem "blankslate"。

    Ruby 的文档已经说的详细了:) http://ruby-doc.org/core-1.9.3/BasicObject.html

  • #12 楼 @cwheart 最好让 Wrapping 继承 BasicObject :)

    class Wrapping < BasicObject
    
  • 是在工作当中使用吗?

  • #7 楼 @neverlandxy_naix 不客气,能帮上忙就好。其实我上面说的比较笼统,再详细的你可以查阅相关资料即可。

  • look look book

  • 简单从 Ruby 层面说吧: 第一段代码

    klass.instance_eval do
      def method_added(name)
        puts "#{self} added a method #{name}"
      end
    end
    

    相当于

    def kass.method_added(name)
        puts "#{self} added a method #{name}"
    end
    

    在这里相当于

    def SubClass.method_added(name)
        puts "#{self} added a method #{name}"
    end
    

    第二段代码

    klass.instance_eval do
      define_method :method_added do |name|
        puts "#{klass} added a method #{name}"
      end
    end
    

    define_method 的含义是"Defines an instance method in the receiver. "

    等价于

    klass.instance_eval do
      self.send :define_method, :method_added do |name|
        puts "#{klass} added a method #{name}"
      end
    end
    

    相当于

    class SubClass 
      define_method :method_added do |name|
          puts "#{klass} added a method #{name}"
        end
    end
    
    p SubClass.instance_methods
    
  • List to Regexp at November 07, 2012

    原来是这样:

    @luikore == @night_song  # => true
    
  • RubyConfChina 2012 参会指南 at November 06, 2012

    这是一次成功的大会,胜利的大会,团结的大会 :>

  • Run Ruby2.0 App On Heroku at November 06, 2012

    虎跑总是站在潮流的最前沿~ :)

  • Ruby 2.0 新功能演示 at November 03, 2012

    #8 楼 @lyfi2003 Ruby1.9 的线程和 1.8 差异大,在用户级的行为也不一样。GIL 的主要限制并不是在“在内核阻塞的线程会导致挂死 Ruby.”。比如说,1.9 下,你创建几个线程,让其中几个线程通过 Lock(当然,1.8 和 1.9 的 Mutex 实现也不一样)等手段来堵塞,其他线程依然可以被 OS 调度。1.8 和 1.9 的差异在线程是由 Ruby 来调度,1.9 是由 OS 来调度,而 GIL 影响 OS 对 Ruby 线程的调度。

    虽然可被调度,但是由于 GIL 的存在,致使 Ruby 线程真正的不能并发执行(是指真正的并发)。

    Deciphering the Global Interpreter Lock

    1.8 下,所有的 Ruby 线程 对应一个 OS 线程,所以任意一个 Ruby 线程被堵塞住,都会把 OS 线程堵塞住。

    1.9 下,每个 Ruby 线程 分别对应不同的 OS 线程,一个 Ruby 线程被堵塞住(这里的堵塞不是指被 GIL 堵塞,而是指被其他堵塞,如其他的资源锁,或是同步 IO 等),只堵塞住其对应的 OS 线程。 但是,GIL 可以看作是一个竞争资源的锁,这就使得 Ruby 线程 在获取这个 GIL 上变成了串行化。

    不太靠谱的比喻: 就像一队人去上厕所,就一个茅坑,只能排队了。上完厕所之后的人,可以去打球,唱歌,灌酒..., 他们就各自活动了,其中有个人睡着了,其他人还继续玩自己的。然后又排队上厕所...

  • Ruby 2.0 新功能演示 at November 03, 2012

    补充一下:有很多 gem 并没有考虑多线程的问题,尤其是一些 Native Gem。 《Unix 编程艺术》中,并不很提倡多线程编程,多进程 + 管道 是被推荐的。

  • Ruby 2.0 新功能演示 at November 03, 2012

    #5 楼 @ryvius Ruby 的线程是 Native 线程,线程的调度是 OS 来实现的。但是呢,由于 GIL 的存在,同一时间只有获取了这个锁的线程在跑,也限制了有 GIL 的语言利用多核的能力。

    有 GIL 的限制并不代表你不能进行一些异步(通常意义上的异步)的操作。因为 GIL 不会被某个线程一直持有,所以其他的线程都有运行的机会。只是利用不上多核的能力。就像以前,我们用单核 CPU 跑多线程程序类似。

    再往下说,就和其他多线程编程一样了,Java 虽然没有 GIL,但是如果写的程序中,几个 Java 线程都对某个公共资源进行访问和修改,如果加锁进行保护,那么这几个线程也不能真正达到多核的利用。

  • Ruby 2.0 新功能演示 at November 03, 2012

    #3 楼 @Rei 嗯 GIL 还没有去掉。

  • Ruby 2.0 新功能演示 at November 03, 2012

    #1 楼 @ryvius Ruby 不支持线程?? 你确定? http://ruby-doc.org/core-1.9.3/Thread.html

    Ruby 从 1.9 开始就支持 Native 线程了。1.9 以前是绿色线程。

  • 国内编程语言统计 at November 01, 2012

    语言 PK 什么的,最没有意思了。

    假设真有一门傲立语言之林的语言,也代表不了你(或我,或他)也能傲立于开发者之群 :( 还是看内功啊,咱们看不起的那些个语言,大牛们却在用它们写出 数个经典作品。

    能说明一个人实力的,在外人看来,只能是他的作品。

  • Cocoa 应用程序里嵌入 Ruby at October 31, 2012

    嗯 好文章。 刚看标题时,我还在想为什么不用 mruby, 看完后了解到 你原来需要 Fiber . mruby 现在还没有 fiber, @matz 说过把 fiber 加入到 mruby 是很不错的,只是他现在没时间做这件事。

  • 有一次是为了获取一个 ARM 平台的软件加密后的文件,懒的去分析软件的加解密算法了,最后直接用 Ruby 写了一个简易的 ARM 解释器,在 PC 上来解释执行它的解密算法,也成功获取了其所有的解密后的文件。不过这算不上项目,只是个工具。

  • @flea 变通的方法是 GAE 可以用 JRuby。

  • #48 楼 @hisea 确实是这样,真正费心的应该大会组织的各个阶段的安排和统筹及各个细节。所以说@lgn21st 真的辛苦了!真心的支持!

  • TextMate 开源了 at August 10, 2012

    #11 楼 @huacnlee 大体瞄了一下,发现其 C++ 的代码占了大部分,OC 相关的代码大多与 GUI 相关。是否有喜欢折腾的人在其他平台上搞一搞?不过意义不大,Sublime Text 就很不错,没必要在其他平台下搞 TextMate 了。

  • #1 楼 @sectic 我是从一些设计网站上找教程。教程网上一搜一大片,只是学起来不系统。@sectic 推荐的这本书我没看过,想来应该不错,毕竟是 Adobe 官方出的。

  • @zw963 Thx!赶紧更新 ;)

  • #2 楼 @yuwenhuisama 至于具体代码,与写 Native Gem 没啥区别。

  • 因为你已经内嵌了 Ruby VM:

    1. 从 C/C++ 访问 Ruby : 因为 Ruby 已经提供了 C 接口来访问和操纵 Ruby 的对象,所以你就不用操心 这一点。
    2. 从 Ruby 访问 C++ : 这是你要做的工作,主要就是按 Ruby Native 的规范来封装一个中间层,Ruby VM 通过这个中间层来访问你 C++ 中的对象。

    用 C++ 与 Ruby VM 交互,需要注意 析构函数 与 setjmp/longjmp 之间的恩恩怨怨。@night_song 曾有专文论述。

  • 萌妹子!

  • #13 楼 @zw963 收下了!thx!Emacs 现在一直在用。

  • #22 楼 @leozwa 如此强悍的手绘功力!

  • 对了,是用 鼠标 还是 数位板?对线条的控制太牛了!我现在还只能画些最基本的简单图形。

  • 牛人!这是用 PS 还是 AI?

  • 一只蜻蜓 (AI 练习) at July 27, 2012

    #14 楼 @jiffies 嗯 是。

    #16 楼 @zw963 这也太夸张了吧 O_o,我在你列举的各个方面都是菜鸟而已。