$30 off During Our Annual Pro Sale. View Details »

How to survive in post Rails' world

How to survive in post Rails' world

SHIBATA Hiroshi

October 10, 2011
Tweet

More Decks by SHIBATA Hiroshi

Other Decks in Programming

Transcript

  1. How to survive
    in post Rails'
    world.
    SHIBATA Hiroshi
    Eiwa System Management,Inc.

    View Slide

  2. 1SPpMF

    View Slide

  3. SHIBATA Hiroshi
    a.k.a hsbt
    tDiary commiter
    [email protected]

    View Slide

  4. http://twitter.com/hsbt/
    http://www.hsbt.org/
    http://github.com/hsbt/

    View Slide

  5. asakusa.rb

    View Slide

  6. View Slide

  7. RubyKaigi
    2010

    View Slide

  8. Theme

    View Slide

  9. Conflicts
    and
    Resolutions
    িಥͱղܾ

    View Slide

  10. ࠓ೔࿩͢͜ͱ
    ITCU͕೥ʹӬ࿨γε
    ςϜϚωδϝϯτʹೖࣾͯ͠
    ͔Β൒೥ؒͰಘΒΕͨ3VCZ
    ͱ3BJMTͰָ͘͠աͨ͢͝
    Ίʹඞཁͳ͜ͱʹ͍ͭͯ͝঺
    հ͠·͢ɻ

    View Slide

  11. Conflict
    Learning
    Methodology
    Resolution

    View Slide

  12. ࠓ೔࿩͞ͳ͍͜ͱ
    tDiary

    View Slide

  13. Conflict
    Learning
    Methodology
    Resolution

    View Slide

  14. RubyKaigi2009

    View Slide

  15. SapporoRubyKaigi02

    View Slide

  16. ೥݄೔
    Ӭ࿨γεςϜϚωδϝϯτೖࣾ

    View Slide

  17. ursm
    hsbt
    ͜Μʹͪ͸
    ண੮͍ͯ͠·͢

    View Slide

  18. 1SPHSBNNFS`T
    4QFD

    View Slide

  19. hobby tDiary(cgi) gentoo
    work excel rails
    ecosystem before rails post rails

    View Slide

  20. before
    Rails
    IUUQXXXqJDLSDPNQIPUPT!/

    View Slide

  21. tDiary
    Hiki
    Kagemai

    View Slide

  22. sourceforge

    View Slide

  23. RubyForge

    View Slide

  24. RAA

    View Slide

  25. post
    Rails
    IUUQXXXqJDLSDPNQIPUPTQBUDBSE

    View Slide

  26. View Slide

  27. View Slide

  28. (JU)VC

    View Slide

  29. Conflict
    Learning
    Methodology
    Resolution

    View Slide

  30. ursm
    hsbt
    ͜Μʹͪ͸
    ண੮͍ͯ͠·͢

    View Slide

  31. Conflicts
    and
    Resolutions
    িಥͱղܾ

    View Slide

  32. 3VCZ3BJMT
    1SPHSBNNJOH

    View Slide

  33. Enumrator
    IUUQXXXqJDLSDPNQIPUPTSBDIFMLJMMTFNP

    View Slide

  34. ͓୊
    ͔Β·Ͱͷ੔
    ਺Λ߹ܭͨ͠஋Λ
    ද͍ࣔͨ͠

    View Slide

  35. ITCUղ౴
    s = 0
    [1, 2, 3, 4, 5].each do |v|
    s += v
    end
    s

    View Slide

  36. ursmղ౴
    (1..5).inject(&:+)

    View Slide

  37. Railsղ౴
    (1..5).sum

    View Slide

  38. ͓୊
    ͔Β·Ͱͷ੔਺
    Λුಈখ਺ʹͨ͠഑
    ྻΛ࡞੒͍ͨ͠

    View Slide

  39. hsbtղ౴
    v = []
    [1, 2, 3, 4, 5].each do |i|
    v << i.to_f
    end
    v

    View Slide

  40. VSTNղ౴
    (1..5).map(&:to_f)

    View Slide

  41. ͓୊
    ͔Β·Ͱͷ੔਺ͷ
    ͏ͪΛ࠷ॳʹӽ͑ͨ
    ਺஋ΛऔΓग़͍ͨ͠

    View Slide

  42. ͓୊
    ͔Β·Ͱͷ੔਺ͷ
    ͏ͪΛӽ͑ͨ਺஋
    શͯΛऔΓग़͍ͨ͠

    View Slide

  43. ͓୊ SZ

    View Slide

  44. map / inject
    reject / detect
    select / each

    View Slide

  45. )BTIFSJUJT

    View Slide

  46. Symbol
    {:ruby => ‘programming’}

    View Slide

  47. ͨͱ͑͹IBTIͷLFZͩͬͨ
    ΓɺΞΫηαͷҾ਺Ͱ౉͢Πϯ
    ελϯεม਺໊ͩͬͨΓɺ
    BMJBT@NFUIPEͷҾ਺Ͱ౉͢
    ϝιου໊ͩͬͨΓͱɺจࣈʹ
    ҙຯ͚͍ͮͨ࣌͠ʹ࢖͑·͢ɻ
    http://d.hatena.ne.jp/secondlife/20051026/1130319610

    View Slide

  48. h1 = {‘ruby’ => ‘programming’}
    h2 = {‘ruby’ => ‘programming’}
    h1.each {|k,v| p k.object_id}
    => 2164547280
    h2.each {|k,v| p k.object_id}
    => 2164501920
    IUUQSBJMTPOFEHFCMPHTQPUDPNVTJOHTZNCPMTIUNM

    View Slide

  49. h1 = {:ruby => ‘programming’}
    h2 = {:ruby => ‘programming’}
    h1.each {|k,v| p k.object_id}
    => 388828
    h2.each {|k,v| p k.object_id}
    => 388828

    View Slide

  50. meta
    programming

    View Slide

  51. send / method_missing
    block / Proc / lambda
    included / extended
    eval / instance_eval

    View Slide

  52. Conflict
    Learning
    Methodology
    Resolution

    View Slide

  53. )PX

    View Slide

  54. VSTN
    ITCU
    ͜Μʹͪ͸
    ண੮͍ͯ͠·͢

    View Slide

  55. (JU)VC

    View Slide

  56. (JU)VC
    TPNNFMJF

    View Slide

  57. Watch
    ϑΥϧμߏ੒ ίϛοτϝοηʔδ
    Commits
    History

    View Slide

  58. HJUDMPOF

    View Slide

  59. CVOEMFJOTUBMM
    CVOEMFPQFO

    View Slide

  60. )'"

    View Slide

  61. happy hacking!

    View Slide

  62. HJUDPNNJU
    HJUQVTI

    View Slide

  63. pull request
    git format-patch origin/master
    or

    View Slide

  64. 3VCZJTUʹͰ͖Δ͜ͱ
    IUUQKQSVCZJTUOFUNBHB[JOF
    8IBU8F$BO%P

    View Slide

  65. Head First
    Rails

    View Slide

  66. meta
    programming

    View Slide

  67. Conflict
    Learning
    Methodology
    Resolution

    View Slide

  68. CFGPSF
    3BJMT
    ͷ࣌ͷؾ࣋ͪ

    View Slide

  69. ΦϨͬͯ͹εήʔײ

    View Slide

  70. ΦϨͬͯ͹εήʔײ
    ৄ͍͜͠ͱ͸Α͘Θ͔Βͳ͍
    ͚Ͳɺ3VCZͰιέοτΛ
    ࢖͏ίʔυΛॻ͍ͯΈͨΒ͍
    ͱ΋؆୯ʹಈ͍ͯ͠·ͬͨ࣌
    ͷؾ෼

    View Slide

  71. ΦϨͬͯ͹εήʔײ

    View Slide

  72. ΦϨͬͯ͹εήʔײ
    3VCZΛ࢝Ίͱͨ͠--ͷଟ͘
    ͸ɺιέοτ΍εϨουɺ
    (6*ɺਖ਼نදݱͱ͍ͬͨগ͠ෑ
    ډͷߴ͍ٕज़ཁૉ΁ͷΠϯλʔ
    ϑΣʔεΛɺγϯϓϧͰ࢖͍΍
    ͍͢ܗͰఏڙͯ͘͠Ε͍ͯΔ

    View Slide

  73. ΦϨͬͯ͹εήʔײ
    ࣗ෼͕༨Γৄ͘͠ͳ͍ٕज़෼໺
    Ͱ͋ͬͯ΋ɺඞཁ࠷খݶͷϝ
    ιουݺͼग़͠Ͱ͜ΕΒͷٕज़
    ཁૉΛମݧ͢Δ͜ͱ͕Ͱ͖ɺख
    ܰʹʮΦϨͬͯ͹εήʔʯײΛ
    ຯΘ͑ΔͷͰ͋Δɻ

    View Slide

  74. ΦϨͬͯ͹εήʔײ

    View Slide

  75. QPTU3BJMT
    ͷ࣌ͷؾ࣋ͪ

    View Slide

  76. ΋ͬͱΦϨͬ
    ͯ͹εήʔײ

    View Slide

  77. ΦϨͬͯ͹εήʔײ
    IUUQXXXNBDIVKQEJBSZIUNMQ

    View Slide

  78. HJUIVC

    View Slide

  79. ΋ͬͱΦϨͬͯ͹εήʔײ
    HJUIVCͰͱΓ͋͑ͣGPSL
    ͯࣗ͠෼޷Έʹվ଄ͯ͠
    QVTI͓͍ͯͨ͠Β͍ͭͷ
    ؒʹ͔GPSLݩʹऔΓࠐ·Ε
    ͓ͯྱ·ͰݴΘΕͨ࣌ͷؾ෼

    View Slide

  80. ΋ͬͱ
    ΦϨͬͯ͹εήʔײ
    ΦϨͬͯ͹εήʔײ

    View Slide

  81. TPVSDFGPSHF
    GFFECBDL

    View Slide

  82. social communication

    View Slide

  83. εήʔײͷՃ଎૷ஔ
    IUUQXXXqJDLSDPNQIPUPTWJMMFT

    View Slide

  84. HJUIVCFYQMPSFS

    View Slide

  85. PUIFSMBOHVBHF

    View Slide

  86. HJUIVCTQBDF

    View Slide

  87. U%JBSZ
    PO
    HJUIVC

    View Slide

  88. U%JBSZ
    3FMFBTFE

    View Slide

  89. Conflict
    Learning
    Methodology
    Resolution

    View Slide

  90. 3VCZJTUʹͰ͖Δ͜ͱ
    IUUQKQSVCZJTUOFUNBHB[JOF
    8IBU8F$BO%P

    View Slide

  91. ΋ͬͱΦϨͬ
    ͯ͹εήʔײ

    View Slide

  92. HJUIVCFYQMPSF

    View Slide

  93. (PPE3VCZ-JGF

    View Slide