May the source_be_with_you

469 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
469
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

May the source_be_with_you

  1. 1. May the Source Be with You Learning Ruby by Reading Ruby Source CodeChimpr12年12月8日星期六
  2. 2. 12年12月8日星期六
  3. 3. I’m a Flash guy ≈ 8 years12年12月8日星期六
  4. 4. also a Ruby guy ≈ 4 years12年12月8日星期六
  5. 5. but not a C guy, yet!12年12月8日星期六
  6. 6. Ruby > Rails12年12月8日星期六
  7. 7. share Ruby learning experiences in OpenFoundry and some developer party.12年12月8日星期六
  8. 8. a SHOW-OFF person!12年12月8日星期六
  9. 9. Learning Ruby by Reading Ruby Source Code12年12月8日星期六
  10. 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. 11. Why read source code?12年12月8日星期六
  12. 12. see how the Ruby Core Team wrie Ruby12年12月8日星期六
  13. 13. fun :)12年12月8日星期六
  14. 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.html12年12月8日星期六
  15. 15. pre-requirement?12年12月8日星期六
  16. 16. C language12年12月8日星期六
  17. 17. curiosity and enthusiasm12年12月8日星期六
  18. 18. What if I don’t have any skill of C?12年12月8日星期六
  19. 19. Just learn it :)12年12月8日星期六
  20. 20. How o Sart?12年12月8日星期六
  21. 21. get Ruby source code download from Ruby websie: http://www.ruby-lang.org/en/ or from github: https://github.com/ruby/ruby12年12月8日星期六
  22. 22. Ruby Source Code: - *.c + *.h - *.rb (Sdlib)12年12月8日星期六
  23. 23. Tools - Vim12年12月8日星期六
  24. 24. Ruby 1.9.2 p29012年12月8日星期六
  25. 25. Quick Browsing.. :)12年12月8日星期六
  26. 26. whats a Ruby object?12年12月8日星期六
  27. 27. sart from basic structure, like Object, Class, String, Array, Hash, Basic...12年12月8日星期六
  28. 28. Object = RObject, Class = RClass, String = RString, Array = RArray, Hash = RHash, Basic = RBasic12年12月8日星期六
  29. 29. “ruby.h”12年12月8日星期六
  30. 30. “object.c”12年12月8日星期六
  31. 31. Init_XXXX12年12月8日星期六
  32. 32. class.c#350-354 all Class’s class is Class!12年12月8日星期六
  33. 33. class.c#556 rb_define_module()12年12月8日星期六
  34. 34. class.c#1170 rb_define_method()12年12月8日星期六
  35. 35. Object.c#2556~2560 Integer(), Float(), String(), Array() are all global methods12年12月8日星期六
  36. 36. class.c#1332 rb_define_global_function() = rb_define_module_method on kernel = rb_define_private_method on kernel + rb_define_singleton_method on kernel12年12月8日星期六
  37. 37. “new”12年12月8日星期六
  38. 38. class A def initialize puts "hello" end end a = A.new12年12月8日星期六
  39. 39. object.c#2624 new -> rb_class_new_instance -> rb_obj_alloc -> rb_obj_call_init12年12月8日星期六
  40. 40. o_s v.s o_str12年12月8日星期六
  41. 41. String.c#7488rb_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. 42. Array.c#4504 rb_define_alias(rb_cArray, "to_s", "inspect"); but no `to_str`12年12月8日星期六
  43. 43. proc.c#2105 how to execute a Proc? - proc.call - proc[] - proc === 123 - proc.yield12年12月8日星期六
  44. 44. object.c#2592 - attr - attr_reader - attr_writer - attr_accessor12年12月8日星期六
  45. 45. push v.s <<12年12月8日星期六
  46. 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. 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. 48. gc.c#3214-3215 Object’s ID12年12月8日星期六
  49. 49. gc.c#2865-2867 How Symbol works?12年12月8日星期六
  50. 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. 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. 52. vm_eval.c#224 method_missing12年12月8日星期六
  53. 53. ineresting naming :)12年12月8日星期六
  54. 54. ext/ripper/ripper.c#15890 rb_intern, rb_intern2, rb_intern312年12月8日星期六
  55. 55. array.c#325 rb_ary_new, rb_ary_new2, ary_new, rb_ary_new3, rb_ary_new412年12月8日星期六
  56. 56. Simple Ruby Exension from Scrach12年12月8日星期六
  57. 57. Conclusion12年12月8日星期六
  58. 58. from basic structure12年12月8日星期六
  59. 59. and don’t be afraid12年12月8日星期六
  60. 60. References12年12月8日星期六
  61. 61. Rubyソースコード完全解説 by 青木峰郎 http://i.loveruby.net/ja/rhg/book/12年12月8日星期六
  62. 62. Ruby Under a Microscope by Pat Shaughnessy http://patshaughnessy.net/ruby-under-a-microscope12年12月8日星期六
  63. 63. still not finish..12年12月8日星期六
  64. 64. Ian Ruotsala12年12月8日星期六
  65. 65. Hope can become aChimpr Jedi Master someday :)12年12月8日星期六
  66. 66. おわり thank you all :)12年12月8日星期六
  67. 67. any question?12年12月8日星期六
  68. 68. Conacts 高見見龍龍 Websie Blog http://www.eddie.com.tw http://blog.eddie.com.tw Plurk http://www.plurk.com/aquarianboy Facebook http://www.facebook.com/eddiekao Google Plus http://www.eddie.com.tw/+ Twiter https://twiter.com/#!/eddiekao Email eddie@digik.com.tw Mobile +886-928-617-687 photo by Eddie12年12月8日星期六

×