Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
May the source be with you
高見龍
December 08, 2012
Programming
10
770
May the source be with you
Learn more about Ruby through reading Ruby source code.
高見龍
December 08, 2012
Tweet
Share
More Decks by 高見龍
See All by 高見龍
閱讀原始碼 - 再戰十年的 jQuery
eddie
1
460
Learn JavaScript Well
eddie
1
1.1k
How to Learn Web Framework Correctly
eddie
4
1.8k
about-5xruby
eddie
0
90
Ruby on Rails 2018 年進化論
eddie
0
120
10 years in learning Ruby
eddie
5
1.3k
傳說中可以治百病的區塊鏈是怎麼一回事?
eddie
0
1.7k
Git Branch
eddie
0
320
Refactoring (Ruby edition)
eddie
0
220
Other Decks in Programming
See All in Programming
10年以上続くプロダクトの フロントエンド刷新プロジェクトのふりかえり
yotahada3
2
350
xarray-Datatree: Hierarchical Data Structures for Multi-Model Science
tomnicholas
0
230
Unityでのチート対策を簡単かつ高品質に行う為の取り組み
trapezoid
2
1.7k
Amebaブログの会員画面システム刷新の道程
ryotasugawara
1
250
存在しないアセットへの参照と 未公開アセットでのネタバレに どう立ち向かうか / How to prevent missing assets and spoilers by assets
orgachem
0
180
Cloudflare WorkersでGoを動かすライブラリを作っている話
syumai
1
330
良質な技術記事を量産する秘訣 / #MeetsPro
jnchito
16
4.7k
量子コンピュータ時代のプログラミングセミナー / 20221222_Amplify_seminar _route_optimization
fixstars
0
250
ECS Service Connectでマイクロサービスを繋いでみた
xblood
0
740
Excelの助けを借りて楽にシナリオを作ろう
rpa_niiyama
0
330
Swift Observation
shiz
4
290
2023年にクル(かもしれない)通信ミドルウェア技術(仮)
s_hosoai
0
220
Featured
See All Featured
Three Pipe Problems
jasonvnalue
89
8.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
1.2k
Music & Morning Musume
bryan
37
4.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
22
1.4k
Raft: Consensus for Rubyists
vanstee
130
5.7k
What the flash - Photography Introduction
edds
64
10k
Product Roadmaps are Hard
iamctodd
38
7.7k
How to name files
jennybc
47
73k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
13
5.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
120
29k
Robots, Beer and Maslow
schacon
154
7.3k
Optimizing for Happiness
mojombo
365
64k
Transcript
May the Source Be with You Chimpr Learning Ruby by
Reading Ruby Source Code 12年12月8日星期六
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日星期六
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日星期六
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~2560 Integer(), 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" end end a =
A.new 12年12月8日星期六
object.c#2624 new -> 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#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日星期六
Array.c#4504 rb_define_alias(rb_cArray, "to_s", "inspect"); but no `to_str` 12年12月8日星期六
proc.c#2105 how 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 << 12年12月8日星期六
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日星期六
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日星期六
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日星期六
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日星期六
vm_eval.c#224 method_missing 12年12月8日星期六
ineresting naming :) 12年12月8日星期六
ext/ripper/ripper.c#15890 rb_intern, rb_intern2, rb_intern3 12年12月8日星期六
array.c#325 rb_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日星期六
Ruby Under a Microscope by Pat Shaughnessy http://patshaughnessy.net/ruby-under-a-microscope 12年12月8日星期六
still not finish.. 12年12月8日星期六
Ian Ruotsala 12年12月8日星期六
Chimpr Hope can become a Jedi Master someday :) 12年12月8日星期六
おわり thank you all :) 12年12月8日星期六
any question? 12年12月8日星期六
高見見龍龍 Conacts photo by Eddie Websie Blog Plurk Facebook Google
Plus Twiter 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://twiter.com/#!/eddiekao
[email protected]
+886-928-617-687 12年12月8日星期六