Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
料理を支える技術2012
Search
Yuichi Tateno
September 18, 2012
11k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
料理を支える技術2012
Yuichi Tateno
September 18, 2012
More Decks by Yuichi Tateno
See All by Yuichi Tateno
OpenProvence - クエリに関連しない文章削除モデル日本語版の作成と公開
hotchpotch
2
1.7k
Ask! NIKKEI RAG検索技術の深層
hotchpotch
22
14k
react-navigation について
hotchpotch
3
2.2k
ユーザのために技術をどう活かすか
hotchpotch
27
21k
GlitchKit
hotchpotch
1
3.5k
クラウドを使った ユーザ向けサービス開発の面白さ
hotchpotch
3
1.4k
pull request を利用した開発ワークフロー
hotchpotch
141
53k
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.1k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
330
The Curse of the Amulet
leimatthew05
1
13k
We Have a Design System, Now What?
morganepeng
55
8.2k
So, you think you're a good person
axbom
PRO
2
2.1k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Mind Mapping
helmedeiros
PRO
1
240
It's Worth the Effort
3n
188
29k
A designer walks into a library…
pauljervisheath
211
24k
30 Presentation Tips
portentint
PRO
1
320
The agentic SEO stack - context over prompts
schlessera
0
800
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
160
Transcript
ྉཧΛࢧ͑Δ ٕज़ ؘ༞Ұ
ఏڙ
JETFDPOEMJGF ؘ༞Ұ :VJDIJ5BUFOP
@hotchpotch
Shibuya.js
༓ྶ෦һ
None
ྉཧΛࢧ͑Δ ٕज़
2011 ↓ 2012
2011 http://techlife.cookpad.com/2011/07/19/rubykaigi2011/
2012
- Rails 2.3 + Rails 3.0 2012
3BJMT ͷಓ http://www.flickr.com/photos/skreuzer/4285271145/
݄ؒར༻ऀ ສҎ্ ϨγϐສҎ্ Ͳ͏ͬͯ େن3BJMTΞϓϦΛ όʔδϣϯΞοϓͨ͠ͷ͔
ͳͥ3BJMTͷόʔδϣϯΛ ্͛Δඞཁ͕͋Δͷ͔
✓3BJMTʹू͞Ε͍ͯΔɺ ༷ʑͳϥΠϒϥϦΛ ར༻Ͱ͖ͳ͘ͳΔ
http://www.flickr.com/photos/dskley/4669454041/ ৽͍͠3BJMʹ ✓Δ Βͳ͍
)PXUP Ͳ͏Δͷʁ
Rails 2.3 -> 3.0 RSpec 1.3 -> 2.2
$ bundle exec rake cookpad:spec
$ bundle exec rake cookpad:spec F
$ bundle exec rake cookpad:spec FFFF
$ bundle exec rake cookpad:spec FFFFFFFFFFFFFFFFFFFFFFFFFFFFF
$ bundle exec rake cookpad:spec FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF...F....F.FFFFFFFFF FFFFFF.FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFF...FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF.FFFFFFFFFFFFFFF..FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF...FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF..F.FFFFFFFF.FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF....F...FFFFF
$ bundle exec rake cookpad:spec FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF...F....F.FFFFFFFFF FFFFFF.FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFF...FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF.FFFFFFFFFFFFFFF..FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF...FFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF..F.FFFFFFFF.FFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF....F...FFFFF ʗ ?P? ʘ
http://www.flickr.com/photos/aizaz/3512778599/ ಓʹ ͭͿ͍ͯ͘͠࡞ۀ
http://www.flickr.com/photos/aizaz/3512778599/ ✓Կ͔Λ͢ͱҰؾʹݮΔ ✓ϘεతͳϠπ͍Δ ✓͢ͱผͷϠπ͕෮׆͢Δ ׂͱήʔϜͬΆ͍
http://www.flickr.com/photos/aizaz/3512778599/ ✓Կ͔Λ͢ͱҰؾʹݮΔ ✓ϘεతͳϠπ͍Δ ׂͱήʔϜͬΆ͍ ࢲ ͬͯͳ͍Μ Ͱ͚͢ͲͶ ʢʍТɾʣ
Team 34QFD !TIJOHP<Խ> !B@NBUTVEB<༭ฌ> ͦͷଞ !IPUDIQPUDI
ࣗಈ IUNMFTDBQF ରԠ
<%= "<hello>" %>
<%= "<hello>" %> Rails 2.3 #=> <hello>
<%= "<hello>" %> Rails 3.0 #=> <hello> Rails 2.3 #=>
<hello>
ඪ४ͰϏϡʔ͕ IUNMFTDBQF͞ΕΔ ˺ IUNMFTDBQFલఏͱ ͯ͢ͷίʔυΛॻ͖͢
rails_xss plugin https://github.com/nzkoz/rails_xss ✓3BJMTڥʹಋೖՄೳ
<%= "<hello>" %> Rails 3.0 #=> <hello> Rails 2.3 #=>
<hello>
rails_xss plugin https://github.com/nzkoz/rails_xss ✓3BJMTڥʹಋೖՄೳ ✓3BJMTͰSBJMT@YTT༗ޮͰͳ ͍˺SBJMTͰͳ͍
http://www.flickr.com/photos/htakashi/5696799508/
ર
spec ↓ html
✓ functional test 34QFD $POUSPMMFS ✓ integration test $BQZCBSB 8FCSBU
3300+ examples
RSpec Capybara, Webrat dirty hack !
$ spec -‐l 139 spec/controller/ recipe_spec.rb write: normal/spec/controller/ recipe_spec.rb:139.html $
RAILS_XSS=1 spec -‐l 139 spec/ controller/recipe_spec.rb write: htmlsafe/spec/controller/ recipe_spec.rb:139.html
None
IUNMFTDBQFͷ lࠩҧ͚ͩz Γ͍ͨ
IUNMFTDBQFͷ lࠩҧ͚ͩz Γ͍ͨ git diff -‐-‐word-‐diff-‐regex
$ git diff -‐-‐word-‐diff-‐regex= '(<)|(&)|(>)|(")|(')' -‐-‐color -‐-‐ignore-‐all-‐space
-‐-‐word-‐diff=plain -‐-‐no-‐index -‐-‐ #{normal} #{htmlsafe}
None
None
http://www.flickr.com/photos/aizaz/3512778599/ $ ./script/escape_spec spec/**/*
$ bundle exec rake cookpad:spec
$ bundle exec rake cookpad:spec ......FFF...................... ...............F...FFF......... ............................... ............................... ....FFF........................
............................... ..............................F ..............................F ............................... ..............FF............... ............................... ...............F.F............. ....FFFFFF..................... ......................F..F.....
$ bundle exec rake cookpad:spec ......FFF...................... ...............F...FFF......... ............................... ............................... ....FFF........................
............................... ..............................F ..............................F ............................... ..............FF............... ............................... ...............F.F............. ....FFFFFF..................... ......................F..F..... $ RAILS_ENV=production bundle exec rails server
http://www.flickr.com/photos/naotakem/3524078643/ performance performance
http://www.flickr.com/photos/naotakem/3524078643/ performance performance performance
✓BC BQBDIFCFODI ✓+.FUFS http://www.flickr.com/photos/wwarby/3296379139/ #FODINBSL
݁Ռ 3VCZ ˣ 3&& UDNBMMPDແޮ ˣ 3&& UDNBMMPD ˣ
݁Ռ 3VCZ ˣ 3&& UDNBMMPDແޮ ˣ 3&& UDNBMMPD ˣ
͍
͕͞Γͳ͍ʂʂ
ʮͦΜͳ࣌ϓϩϑΝΠϦϯάͷ࣌ؒͰ͢Ͷɻʯ
None
Α͘Θ͔Βͳ͍
ຖճωοΫͱͳΔ ॴ͕มΘΔ ($
Passenger ↓ Unicorn
Unicorn module Unicorn::OobGC
GC timing request GC
GC timing request GC.start GC.disable
GC timing
GC timing FAST
disabled = GC.enable GC.start GC.disable if disabled
after_fork do |server, worker| GC.disable if RAILS_ENV=='production'
None
None
None
150% fast !
http://www.flickr.com/photos/adamkr/4650637393/ ύϑΥʔϚϯε ղܾʂʂ
!NJSBLVJ ✓3BJMTߴԽ ✓ϓϩϑΝΠϥ ✓6OJDPSO ✓Ωϟογϡ ✓ύϯμ
$ bundle exec rake cookpad:spec ............................... .....................F......... ............................... ............................... .....F.........................
............................... ............................... ............................... ............................... ............................... ............................... ............................... ............................... .........................F.....
࠷ऴ ֬ೝ ✓
ςετͰ ൃݟͰ͖ͳ͍Λ Ͳ͏ղܾ͢Δ͔
✓ຊ൪ϦΫΤετΛ ࣮ࡍʹྲྀ͢
em-proxy https://github.com/igrigorik/em-proxy EventMachine Proxy DSL for writing high-performance transparent /
intercepting proxies in Ruby.
em-proxy app Rails 2.3 app Rails 3.0 (readonly) proxy request
only https://github.com/igrigorik/em-proxy/blob/master/examples/duplex.rb dup request
[app-‐rails-‐3.0] $ tail -‐f produciton.log | grep 500
$ bundle exec rake cookpad:spec ............................... ............................... ............................... ............................... ...............................
............................... ............................... ............................... ............................... ............................... ............................... ............................... ............................... ...............................
/FYU 4UFQ ࣍ͷ ֬ೝεςοϓ
Ұ෦Ϣʔβʹ ࣮ࡍʹϦϦʔε͢Δ
ͳ͠ʁ 3BJMT ✓ςετ ✓ύϑΥʔϚϯε ✓ෳϦΫΤετ
Cookie: r3balance=xxx YYY͕ಛఆͷ ϢʔβΛ3BJMT ʹྲྀ͢
✓4FTTJPO4UPSF$BDIF γϦΞϥΠζܗࣜͷҧ͍ ✓.Z42-ͷ ͓͔͠ͳNBTUFSͷΫΤϦ ✓+BWB4DSJQUΤϥʔ ൃݟ
✓ςετ ✓ύϑΥʔϚϯε ✓ෳϦΫΤετ ✓࣮ΞΫηε
ϦϦʔε࡞ۀ ✓ςετ ✓ύϑΥʔϚϯε ✓ෳϦΫΤετ ✓࣮ΞΫηε
AWS EC2 app Rails 2.3 app Rails 2.3 app Rails
2.3 app Rails 2.3 x50 proxy app Rails 3.0 app Rails 3.0 app Rails 3.0 app Rails 3.0 x50
AWS EC2 app Rails 2.3 app Rails 2.3 app Rails
2.3 app Rails 2.3 x50 proxy app Rails 3.0 app Rails 3.0 app Rails 3.0 app Rails 3.0 x50
http://www.flickr.com/photos/skreuzer/4285271145/ ݄ 3BJMT ϦϦʔεʂʂ
http://www.flickr.com/photos/skreuzer/4285271145/ ݄ 3BJMT ϦϦʔεʂʂ େ͖ͳ ͳ͠ʂ
http://www.flickr.com/photos/skreuzer/4285271145/ ݄ 3BJMT ϦϦʔεʂʂ ࡀͷ ੜ ʘ ?P? ʗ
2012
+ Sara Framework 2012
http://www.flickr.com/photos/norio_nomura/4713348873/ ࡼ ϑϨʔϜϫʔΫ
2TBSBGSBNFXPSLͬͯ "5XJUUFS#PPUTUSBQ Έ͍ͨͳͷ$00,1"%൛
ͳͥ 5XJUUFS#PPUTUSBQ Ͱͳ͍ͷʁ ͳͥ ಠࣗʹ࡞Δͷʁ
l$00,1"%z σβΠϯͷநԽ
l$00,1"%z Ͱ͜͏͋Δ͖ 6*69ͷநԽ
l$00,1"%σβΠϯz ͷநԽ 㾎σβΠϯͷࣝ 㾎6*69ͷࣝ 㾎͜͏͋Δ͖ͱ͍͏ߟ͑ 㾎$44 4BTT ͷ࣮ྗ
None
!UJLFEB
http://www.flickr.com/photos/norio_nomura/4713348873/ ࡼ ϑϨʔϜϫʔΫ
ࡼ
ࡼ
ࡼ
ࡼ
σβΠϯΛͯΔ ෛ୲͕ݮগ ΑΓۀ͘͢͠
2012
2012 Android App + html5 (webview) - native
2012 2011 native html5
2012 2011 㾎3BJMT্Ͱͷػೳ։ൃɾΤϯδ χΞ୭Ͱ͍͡ΕΔ 㾎εϚʔτϑΥϯ͚IUNMͱಉ ࣌։ൃՄೳ 㾎OBUJWFͷػೳΛ͏߹ɺ+4 Ͱ௨৴
2012 2011 㾎3BJMT্ͷ࣮Ͱػೳ։ൃɾΤ ϯδχΞ୭Ͱ͍͡ΕΔ 㾎εϚʔτϑΥϯϒϥβͱಉ࣌ ։ൃՄೳ 㾎OBUJWFͷػೳΛ͏߹ɺ+4 Ͱ௨৴ )5.-ʹౌ͚ͨͷ ࣦഊͩͬͨ
ϚʔΫ
2012 2011 㾎3BJMT্Ͱػೳ։ൃɾΤϯδχ Ξ୭Ͱ͍͡ΕΔ 㾎εϚʔτϑΥϯ͚IUNMͱಉ ࣌։ൃՄೳ 㾎OBUJWFͷػೳΛ͏߹ɺ+4 Ͱ௨৴
2012 + fluentd
2012 + fluentd 㾎3BJMTΞϓϦέʔγϣϯαʔόͰͷ ϩάू 㾎ඦͰՔಇ 㾎3VCZͰ࣮͞Ε͍ͯΔ 㾎3VCZͰϓϥάΠϯهड़
2012 + fluentd 㾎ඦͷ3BJMTΞϓϦέʔγϣϯ αʔόͰͷϩάू 㾎3VCZͰ࣮ 㾎3VCZͰϓϥάΠϯهड़ http://www.slideshare.net/hotchpotch/20120204fluent-logging
2012 + fluentd 㾎ඦͷ3BJMTΞϓϦέʔγϣϯ αʔόͰͷϩάू 㾎3VCZͰ࣮ 㾎3VCZͰϓϥάΠϯهड़
2012 + Code Review w/GHE
2012 + Code Review w/GHE 㾎ຖ݄ݸͷQVMMSFRVFTU
2012 + Code Review w/GHE 㾎ຖ݄ݸͷQVMMSFRVFTU 㾎৺Թ·Δ΄ͬ͜ΓϨϏϡʔ͔Β
2012 + Code Review w/GHE 㾎ຖ݄ݸͷQVMMSFRVFTU 㾎৺Թ·Δ΄ͬ͜ΓϨϏϡʔ͔Β 㾎ϞώΧϯͷි͛·Ͱ
2012 + Code Review w/GHE 㾎ຖ݄ݸͷQVMMSFRVFTU 㾎৺Թ·Δ΄ͬ͜ΓϨϏϡʔ͔Β 㾎ϞώΧϯͷි͛·Ͱ ˡ3VCZίϛολ ˡ3VCZίϛολ
2012 + Code Review w/GHE 㾎ຖ݄ݸͷQVMMSFRVFTU 㾎৺Թ·Δ΄ͬ͜ΓϨϏϡʔ͔Β 㾎ϞώΧϯͷි͛·Ͱ
2012 + Code Review w/GHE 9/15 (sat) LT @takai Code
Review in Action
2012 + Code Review w/GHE 9/15 (sat) LT @takai Code
Review in Action
2012 + Distributed CI
2012 + Distributed CI
2012 + Distributed CI
2012 + Distributed CI 㾎૿͑ଓ͚Δςετ 㾎ऴΘΒͳ͍ܧଓతΠϯςάϨʔγϣϯ 㾎Ͳ͏ͬͯࢄ34QFDΛ҆ఆͤ͞Δ͔ 㾎"84&$Λར༻ͨ͠αʔόͷࣗಈॖୀ
2012 + Distributed CI 9/16 (sun) 10:30 @mrkn Distributed RSpec
+ AWS + Chanko (open source) + kuroko (new batch
system) + IMon (new monitoring system) etcetc...
2011 ↓ 2012
ఏڙ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ Thank You