86

Code Reading

Embed Size (px)

DESCRIPTION

Learning More about Ruby by Reading Ruby Source Code

Citation preview

Page 1: Code Reading
Page 2: Code Reading

高見 龍 です

Page 3: Code Reading

高 見龍 です@eddiekao

Page 4: Code Reading

Code ReadingChimpr

Learning more about Ruby by Reading Ruby Source Code

Page 9: Code Reading
Page 10: Code Reading
Page 11: Code Reading

I’m a Python guy (≈ 2 years)

I’m a iOS app guy (≈ 2 years)

I’m a Flash guy (≈ 8 years)

I’m a Ruby guy (≈ 4 years)

Page 12: Code Reading

But not a C guy, yet!

Page 13: Code Reading

Ruby > Rails

Page 14: Code Reading

“I’m a SHOW OFF person”

Page 15: Code Reading

“Experience Sharing is fun”

Page 16: Code Reading

Current Status80% iOS app, 20% Ruby/Rails

Page 17: Code Reading

100% Ruby Lover!

Page 18: Code Reading
Page 19: Code Reading

Web Development Conference in Taiwan

Page 20: Code Reading
Page 21: Code Reading

2 days, 3 tracks session

Page 22: Code Reading

750+ attendees

Page 23: Code Reading

all tickets sold out in 4 mins

Page 24: Code Reading

WebConf Taiwan 2014

Page 25: Code Reading

Will be held on Jan 2014

Page 26: Code Reading

850+ attendees in 2014, hopefully.

Page 27: Code Reading

All about web development

Page 28: Code Reading

楽しい

Page 29: Code Reading

http://webconf.tw

Page 30: Code Reading

Code Reading

Page 31: Code Reading

Why read source code?

How to start?

What I learned?

Anything interesting?

Page 32: Code Reading

Why read source code ?

Page 34: Code Reading

http://blog.rubybestpractices.com/posts/gregory/005-code-reading-stdlib.html

“once you start digging around in someone else’s code base, you’ll learn a lot about your own strengths and weaknesses”

- Ruby Best Practice

Page 35: Code Reading

See how the Core Team write Ruby

Page 37: Code Reading

source http://kyaraben.seesaa.net/article/168967765.html

source code は友達

Page 38: Code Reading

Contribution!

Page 39: Code Reading

Committer

in my dream!

Page 40: Code Reading

FUN! :)

Page 41: Code Reading

Requirement ?

Page 42: Code Reading

C language

Page 43: Code Reading

“What if I don’t have any skill of C?”

Page 44: Code Reading

“Just Learn It!”

Page 45: Code Reading

Curiosity and Passion

Page 46: Code Reading

Where to Start ?

Page 47: Code Reading

get source files!

Page 48: Code Reading

download from Ruby website, or clone from github

Page 49: Code Reading

Ruby 1.9.2 p290

Page 50: Code Reading
Page 51: Code Reading

Quick browsing.. :)

Page 52: Code Reading

*.c + *.h

*.rb (stdlib)

Page 53: Code Reading

Let’s have some fun!

Page 54: Code Reading

ObjectClass

StringArray

Hash

Page 55: Code Reading

“ruby.h”

Page 56: Code Reading

Object => RObjectClass => RClass

String => RStringArray => RArrayHash => RHash

Page 57: Code Reading

“object.c”

Page 58: Code Reading

Init_XXXX( )

Page 59: Code Reading

“all Class’s class is a Class”

Page 60: Code Reading

“new”

Page 61: Code Reading

class A def initialize puts "hello" endend

a = A.new

Page 62: Code Reading

Proc

Page 63: Code Reading

How to execute a Proc?

Page 64: Code Reading

proc.call

proc[ ]

proc.yield

proc === 123

Page 65: Code Reading

attributes

Page 66: Code Reading

push v.s. <<

Page 67: Code Reading

Object ID

Page 68: Code Reading

What else?

Page 69: Code Reading

Haskell-like syntax :)

Page 70: Code Reading

head (x:_)        = xtail (_:xs)        = xs

Page 71: Code Reading

people = { "Eddie" => ["green", "[email protected]"], "Joanne" => ["yellow", "[email protected]"]}

people.map { |name, (color, email)| puts [name, email]}

Page 72: Code Reading

parse.y#8277-8299 shadowing_lvar_gen( )

people = { "Eddie" => ["green", "[email protected]"], "Joanne" => ["yellow", "[email protected]"]}

people.map { |name, (_, email)| puts [name, email]}

Page 73: Code Reading

Method missing

Page 74: Code Reading

Anything interesting ?

Page 75: Code Reading

Interesting naming.. XD

Page 76: Code Reading

Conclusion

Page 77: Code Reading

“from basic structure”

Page 78: Code Reading

“don’t be afraid of source code”

Page 79: Code Reading

source http://kyaraben.seesaa.net/article/168967765.html

source code は友達

Page 80: Code Reading

References

Page 81: Code Reading

http://i.loveruby.net/ja/rhg/book/

“Rubyソースコード完全解説” (RHG)by 青木峰郎

Page 82: Code Reading

http://patshaughnessy.net/ruby-under-a-microscope

“Ruby Under a Microscope”by Pat Shaughnessy

Page 83: Code Reading

Chimpr

Hope we all can become Jedi Master someday :)

Page 84: Code Reading

高見 龍 です

Page 85: Code Reading

以上です。ご清聴ありがとうございました

thanks for your listening :)

Page 86: Code Reading

高見龍Contacts

photo by Eddie

Website

Blog

Plurk

Facebook

Google Plus

Twitter

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://twitter.com/#!/eddiekao

[email protected]

+886-928-617-687