May the source be with you

F2dcf6633971844e19ca96ea294ba976?s=47 高見龍
December 08, 2012

May the source be with you

Learn more about Ruby through reading Ruby source code.

F2dcf6633971844e19ca96ea294ba976?s=128

高見龍

December 08, 2012
Tweet

Transcript

  1. May the Source Be with You Chimpr Learning Ruby by

    Reading Ruby Source Code 12年12月8日星期六
  2. 12年12月8日星期六

  3. I’m a Flash guy ≈ 8 years 12年12月8日星期六

  4. also a Ruby guy ≈ 4 years 12年12月8日星期六

  5. but not a C guy, yet! 12年12月8日星期六

  6. Ruby > Rails 12年12月8日星期六

  7. share Ruby learning experiences in OpenFoundry and some developer party.

    12年12月8日星期六
  8. a SHOW-OFF person! 12年12月8日星期六

  9. Learning Ruby by Reading Ruby Source Code 12年12月8日星期六

  10. - why read source code? - how o sart? -

    anything ineresting? - wrie a simple Ruby Exension with C. 12年12月8日星期六
  11. Why read source code? 12年12月8日星期六

  12. see how the Ruby Core Team wrie Ruby 12年12月8日星期六

  13. fun :) 12年12月8日星期六

  14. "once you sart digging around in someone else’s code base,

    you’ll learn a lot about your own strengths and weaknesses" - Ruby Best Practice http://blog.rubybestpractices.com/posts/gregory/005-code-reading-stdlib.html 12年12月8日星期六
  15. pre-requirement? 12年12月8日星期六

  16. C language 12年12月8日星期六

  17. curiosity and enthusiasm 12年12月8日星期六

  18. What if I don’t have any skill of C? 12年12月8日星期六

  19. Just learn it :) 12年12月8日星期六

  20. How o Sart? 12年12月8日星期六

  21. get Ruby source code download from Ruby websie: http://www.ruby-lang.org/en/ or

    from github: https://github.com/ruby/ruby 12年12月8日星期六
  22. Ruby Source Code: - *.c + *.h - *.rb (Sdlib)

    12年12月8日星期六
  23. Tools - Vim 12年12月8日星期六

  24. Ruby 1.9.2 p290 12年12月8日星期六

  25. Quick Browsing.. :) 12年12月8日星期六

  26. what's a Ruby object? 12年12月8日星期六

  27. sart from basic structure, like Object, Class, String, Array, Hash,

    Basic... 12年12月8日星期六
  28. Object = RObject, Class = RClass, String = RString, Array

    = RArray, Hash = RHash, Basic = RBasic 12年12月8日星期六
  29. “ruby.h” 12年12月8日星期六

  30. “object.c” 12年12月8日星期六

  31. Init_XXXX 12年12月8日星期六

  32. class.c#350-354 all Class’s class is Class! 12年12月8日星期六

  33. class.c#556 rb_define_module() 12年12月8日星期六

  34. class.c#1170 rb_define_method() 12年12月8日星期六

  35. Object.c#2556~2560 Integer(), Float(), String(), Array() are all global methods 12年12月8日星期六

  36. = rb_define_module_method on kernel = rb_define_private_method on kernel + rb_define_singleton_method

    on kernel class.c#1332 rb_define_global_function() 12年12月8日星期六
  37. “new” 12年12月8日星期六

  38. class A def initialize puts "hello" end end a =

    A.new 12年12月8日星期六
  39. object.c#2624 new -> rb_class_new_instance -> rb_obj_alloc -> rb_obj_call_init 12年12月8日星期六

  40. o_s v.s o_str 12年12月8日星期六

  41. String.c#7488 rb_define_method(rb_cString, "to_s", rb_str_to_s, 0); rb_define_method(rb_cString, "to_str", rb_str_to_s, 0); 12年12月8日星期六

  42. Array.c#4504 rb_define_alias(rb_cArray, "to_s", "inspect"); but no `to_str` 12年12月8日星期六

  43. proc.c#2105 how to execute a Proc? - proc.call - proc[]

    - proc === 123 - proc.yield 12年12月8日星期六
  44. object.c#2592 - attr - attr_reader - attr_writer - attr_accessor 12年12月8日星期六

  45. push v.s << 12年12月8日星期六

  46. array.c#709 (<<) VALUE rb_ary_push(VALUE ary, VALUE item){ rb_ary_modify(ary); return rb_ary_push_1(ary,

    item); } 12年12月8日星期六
  47. array.c#742 (push) static VALUE rb_ary_push_m(int argc, VALUE *argv, VALUE ary)

    { rb_ary_modify(ary); while (argc--) { rb_ary_push_1(ary, *argv++); } return ary; } 12年12月8日星期六
  48. gc.c#3214-3215 Object’s ID 12年12月8日星期六

  49. gc.c#2865-2867 How Symbol works? 12年12月8日星期六

  50. people = { "Eddie" => ["green", "eddie@digik.com.tw"], "Joanne" => ["yellow",

    "hello@yahoo.com"] } people.map { |name, (color, email)| puts [name, email] } 12年12月8日星期六
  51. people = { "Eddie" => ["green", "eddie@digik.com.tw"], "Joanne" => ["yellow",

    "hello@yahoo.com"] } people.map { |name, (_, email)| puts [name, email] } parse.y#8277-8299 shadowing_lvar_gen() 12年12月8日星期六
  52. vm_eval.c#224 method_missing 12年12月8日星期六

  53. ineresting naming :) 12年12月8日星期六

  54. ext/ripper/ripper.c#15890 rb_intern, rb_intern2, rb_intern3 12年12月8日星期六

  55. array.c#325 rb_ary_new, rb_ary_new2, ary_new, rb_ary_new3, rb_ary_new4 12年12月8日星期六

  56. Simple Ruby Exension from Scrach 12年12月8日星期六

  57. Conclusion 12年12月8日星期六

  58. from basic structure 12年12月8日星期六

  59. and don’t be afraid 12年12月8日星期六

  60. References 12年12月8日星期六

  61. Rubyソースコード完全解説 by 青木峰郎 http://i.loveruby.net/ja/rhg/book/ 12年12月8日星期六

  62. Ruby Under a Microscope by Pat Shaughnessy http://patshaughnessy.net/ruby-under-a-microscope 12年12月8日星期六

  63. still not finish.. 12年12月8日星期六

  64. Ian Ruotsala 12年12月8日星期六

  65. Chimpr Hope can become a Jedi Master someday :) 12年12月8日星期六

  66. おわり thank you all :) 12年12月8日星期六

  67. any question? 12年12月8日星期六

  68. 高見見龍龍 Conacts photo by Eddie Websie Blog Plurk Facebook Google

    Plus Twiter Email Mobile http://www.eddie.com.tw http://blog.eddie.com.tw http://www.plurk.com/aquarianboy http://www.facebook.com/eddiekao http://www.eddie.com.tw/+ https://twiter.com/#!/eddiekao eddie@digik.com.tw +886-928-617-687 12年12月8日星期六