Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
May the Source Be with YouChimpr
Learning Ruby by Reading Ruby Source Code
12年12月8日星期六
http://www.flickr.com/photos/ohoski/http://www.flickr.com/photos/ohoski/
12年12月8日星期六
I’m a Flash guy
≈ 8 years
12年12月8日星期六
also a Ruby guy
≈ 4 years
12年12月8日星期六
but not a C guy, yet!
12年12月8日星期六
Ruby > Rails
12年12月8日星期六
share Ruby learning experiences in OpenFoundry and some developer party.
12年12月8日星期六
a SHOW-OFF person!
12年12月8日星期六
Learning Ruby by Reading Ruby Source Code
12年12月8日星期六
- why read source code?- how o sart?- anything ineresting?- wrie a simple Ruby Exension with C.
12年12月8日星期六
Why read source code?
12年12月8日星期六
see how the Ruby Core Team wrie Ruby
12年12月8日星期六
fun :)
12年12月8日星期六
"once you sart 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日星期六
http://blog.rubybestpractices.com/posts/gregory/005-code-reading-stdlib.htmlhttp://blog.rubybestpractices.com/posts/gregory/005-code-reading-stdlib.htmlhttp://blog.rubybestpractices.com/posts/gregory/005-code-reading-stdlib.htmlhttp://blog.rubybestpractices.com/posts/gregory/005-code-reading-stdlib.html
pre-requirement?
12年12月8日星期六
C language
12年12月8日星期六
curiosity and enthusiasm
12年12月8日星期六
What if I don’t have any skill of C?
12年12月8日星期六
Just learn it :)
12年12月8日星期六
How o Sart?
12年12月8日星期六
get Ruby source code
download from Ruby websie:http://www.ruby-lang.org/en/
or from github:https://github.com/ruby/ruby
12年12月8日星期六
http://www.ruby-lang.org/en/http://www.ruby-lang.org/en/https://github.com/ruby/rubyhttps://github.com/ruby/ruby
Ruby Source Code:- *.c + *.h- *.rb (Sdlib)
12年12月8日星期六
Tools- Vim
12年12月8日星期六
Ruby 1.9.2 p290
12年12月8日星期六
Quick Browsing.. :)
12年12月8日星期六
what's a Ruby object?
12年12月8日星期六
sart from basic structure, like Object, Class, String, Array, Hash, Basic...
12年12月8日星期六
Object = RObject, Class = RClass,String = RString, Array = RArray, Hash = RHash, Basic = RBasic
12年12月8日星期六
“ruby.h”
12年12月8日星期六
“object.c”
12年12月8日星期六
Init_XXXX
12年12月8日星期六
class.c#350-354
all Class’s class is Class!
12年12月8日星期六
class.c#556
rb_define_module()
12年12月8日星期六
class.c#1170
rb_define_method()
12年12月8日星期六
Object.c#2556~2560Integer(), Float(), String(), Array() are all global methods
12年12月8日星期六
= 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日星期六
“new”
12年12月8日星期六
class A def initialize puts "hello" endend
a = A.new
12年12月8日星期六
object.c#2624new -> rb_class_new_instance -> rb_obj_alloc -> rb_obj_call_init
12年12月8日星期六
o_s v.s o_str
12年12月8日星期六
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日星期六
Array.c#4504rb_define_alias(rb_cArray, "to_s", "inspect");but no `to_str`
12年12月8日星期六
proc.c#2105how to execute a Proc?- proc.call- proc[]- proc === 123- proc.yield
12年12月8日星期六
object.c#2592- attr- attr_reader- attr_writer- attr_accessor
12年12月8日星期六
push v.s
array.c#709 (
array.c#742 (push) static VALUErb_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日星期六
gc.c#3214-3215
Object’s ID
12年12月8日星期六
gc.c#2865-2867
How Symbol works?
12年12月8日星期六
people = { "Eddie" => ["green", "[email protected]"], "Joanne" => ["yellow", "[email protected]"]}
people.map { |name, (color, email)| puts [name, email]}
12年12月8日星期六
mailto:[email protected]:[email protected]:[email protected]:[email protected]
people = { "Eddie" => ["green", "[email protected]"], "Joanne" => ["yellow", "[email protected]"]}
people.map { |name, (_, email)| puts [name, email]}
parse.y#8277-8299 shadowing_lvar_gen()
12年12月8日星期六
mailto:[email protected]:[email protected]:[email protected]:[email protected]
vm_eval.c#224
method_missing
12年12月8日星期六
ineresting naming :)
12年12月8日星期六
ext/ripper/ripper.c#15890rb_intern, rb_intern2, rb_intern3
12年12月8日星期六
array.c#325rb_ary_new, rb_ary_new2, ary_new, rb_ary_new3, rb_ary_new4
12年12月8日星期六
Simple Ruby Exension from Scrach
12年12月8日星期六
Conclusion
12年12月8日星期六
from basic structure
12年12月8日星期六
and don’t be afraid
12年12月8日星期六
References
12年12月8日星期六
Rubyソースコード完全解説by 青木峰郎
http://i.loveruby.net/ja/rhg/book/
12年12月8日星期六
http://i.loveruby.net/ja/rhg/book/http://i.loveruby.net/ja/rhg/book/
Ruby Under a Microscopeby Pat Shaughnessy
http://patshaughnessy.net/ruby-under-a-microscope
12年12月8日星期六
http://patshaughnessy.net/ruby-under-a-microscopehttp://patshaughnessy.net/ruby-under-a-microscope
still not finish..
12年12月8日星期六
Ian Ruotsala
12年12月8日星期六
http://www.flickr.com/photos/ian_ruotsala/http://www.flickr.com/photos/ian_ruotsala/
Chimpr
Hope can become a Jedi Master someday :)
12年12月8日星期六
http://www.flickr.com/photos/ohoski/http://www.flickr.com/photos/ohoski/http://www.flickr.com/photos/ohoski/
おわりthank you all :)
12年12月8日星期六
any question?
12年12月8日星期六
高見見龍龍Conacts
photo by Eddie
Websie
Blog
Plurk
Google Plus
Twiter
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://twiter.com/#!/eddiekao
+886-928-617-687
12年12月8日星期六
http://www.eddie.com.twhttp://www.eddie.com.twhttp://www.eddie.com.twhttp://www.eddie.com.twhttp://blog.eddie.com.twhttp://blog.eddie.com.twhttp://www.plurk.com/aquarianboyhttp://www.plurk.com/aquarianboyhttp://www.facebook.com/eddiekaohttp://www.facebook.com/eddiekaohttp://www.eddie.com.tw/+http://www.eddie.com.tw/+https://twitter.com/#!/eddiekaohttps://twitter.com/#!/eddiekaomailto:[email protected]:[email protected]