Top Banner
86

Code Reading

May 06, 2015

Download

Technology

Eddie Kao

Learning More about Ruby by Reading Ruby Source Code
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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