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
jsconf.eu x Node Collaborators Meetup journey
Search
Yosuke Furukawa
PRO
June 28, 2017
Programming
0
1.8k
jsconf.eu x Node Collaborators Meetup journey
東京Node学園26時限目で飛び入りLTで発表した資料です。
Yosuke Furukawa
PRO
June 28, 2017
Tweet
Share
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
8
3.6k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.1k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
220
Removing Corepack
yosuke_furukawa
PRO
9
1.6k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.8k
Strip Types と Storage
yosuke_furukawa
PRO
4
400
Module Harmony について
yosuke_furukawa
PRO
3
1.7k
LTのやり方
yosuke_furukawa
PRO
16
2.6k
AppRouter Panel Talk
yosuke_furukawa
PRO
3
800
Other Decks in Programming
See All in Programming
從零到一:搭建你的第一個 Observability 平台
blueswen
1
900
Perlで痩せる
yuukis
1
680
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
0
3k
FormFlow - Build Stunning Multistep Forms
yceruto
1
160
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
140
社内での開発コミュニティ活動とモジュラーモノリス標準化事例のご紹介/xPalette and Introduction of Modular monolith standardization
m4maruyama
1
120
GoのWebAssembly活用パターン紹介
syumai
3
10k
RubyKaigiで得られる10の価値 〜Ruby話を聞くことだけが RubyKaigiじゃない〜
tomohiko9090
0
140
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
770
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
240
Rails産でないDBを Railsに引っ越すHACK - Omotesando.rb #110
lnit
1
160
生成AIで日々のエラー調査を進めたい
yuyaabo
0
540
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Automating Front-end Workflow
addyosmani
1370
200k
Embracing the Ebb and Flow
colly
86
4.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Rails Girls Zürich Keynote
gr2m
94
14k
Thoughts on Productivity
jonyablonski
69
4.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Transcript
Node Collaborators Meetup & JSConf.EU 2017/06/28 NodeֶԂ 26
None
None
None
໘ന͔ͬͨ 3ͭհ
1. How to save
2017ݱࡏɺύεϫʔυΛͲ ͏ͬͯ҆શʹอଘ͢Δ͔
ύεϫʔυͲ͏ͬͯอଘ͠ ͯ·͔͢ʁ ฏจͰอଘͯ͠ΔΑʔͬͯ ਓʁʁʁ
ύεϫʔυͲ͏ͬͯอଘ͠ ͯ·͔͢ʁ ฏจͰอଘͯ͠ΔΑʔͬͯ ਓʁʁʁ ࢮܐ
ύεϫʔυͲ͏ͬͯอଘ͠ ͯ·͔͢ʁ ͪΌʔΜͱϋογϡԽͯ͠· ͢Αʔʂ md5 Ͱʂʂʂʂ
ύεϫʔυͲ͏ͬͯอଘ͠ ͯ·͔͢ʁ ͪΌʔΜͱϋογϡԽͯ͠· ͢Αʔʂ md5 Ͱʂʂʂʂ ࢮܐ
Ͱਖ਼ʹݴͬͯʁ ͜ΕͬͪΌͬͨ͜ͱ͋Δਓ ͍ͳ͍ʁʁʁ
Ͱ͢Ͷʂʂʂʂʂ (ϗϏʔϓϩδΣΫτ)
͜ΕΒͷϋογϡؔ ύεϫʔυϋογϡͱͯ͠ ;͞Θ͘͠ͳ͍ md5/sha1/sha256
ύεϫʔυอଘ͢Δ࣌ͷ ϋογϡؔ ҉߸తϋογϡؔͱ ݺΕΔͷ bcrypt/pbkdf2/scrypt
CDSZQUJTTUJMMTFDVSFJO CVUBSHPOXPOJO1BTTXPSE )BTI$POUFTU
҉߸తϋογϡؔฒྻ࣮ ߦՄೳͳճ࿏ͰҰؾʹԋࢉ͞ ΕΔͱղಡͰ͖ͪΌ͏͔ʁ (Ex: GPU, FPGA)
ͦ͜Ͱ Argon2 Password Hash Competition Ͱ༏উͨ͠ϋογϡؔɺ ݱࡏ࠷ڧ?ͷͣɻ
Α͘Θ͔Βͳ͔ͬͨͬͯਓʁ
҆৺ͯ͠Լ͍͞ʂʂʂ
OQNJTFDVSFQBTTXPSE ͜Ε͚֮ͩ͑ͯΕ͍͍Ͱ͢ʂ
None
JavaScript͕Ͳ͏ͬͯಈ͍ ͍ͯΔ͔ͱ͍͏
ͦͦJavaScriptͬͯͲ͏ಈ ͍ͯΔͷʁ தC++Ͱbytecodeੜͯͨ͠Γ͢Δ
JIT (Hidden Class) 0QUJNJ[BUJPOͱݺͿ
ͨͩ͠ var obj = { x: 1, y: 2, };
// obj ͷ y propΛফ͢ delete obj.y; // obj ʹ z propΛ͢ obj.z = 3; // obj ͷ props Λ֬ೝ͢Δ obj.hasOwnProperties ͜͏͍͏͜ͱΔͱ͍
ͨͩ͠ var obj = { x: 1, y: 2, };
// obj ͷ y propΛফ͢ delete obj.y; // obj ʹ z propΛ͢ obj.z = 3; // obj ͷ props Λ֬ೝ͢Δ obj.hasOwnProperties ͜͏͍͏͜ͱΔͱ͍ ͜ΕΛ%FPQUJNJ[BUJPOͱݺͿ
JSͷதͷಈ͖ɹ
V8͜͏
V8͜͏
DEMO function deopt(obj) { return obj.x; } for (var i
= 0; i < 1000000; i++) { deopt({ x: 1, y: 2}); } // deoptimized… deopt({ x: 1, y: 2, z: 3});
͋ͱ։ൃऀ͚ʹ͜ͷΦϓγϣ ϯΛ͓͑ͯ͘ͱΠφϑ
OK͜ΕͰɺJSͷίʔυΑ ΓߴʹͳΔͣɻ
Ͱɾɾɾ
ࠓޙʹͳͬͯ͘Δॴ
Parseॲཧ
Parseॲཧ
Parseॲཧ • ParseॲཧͷతͰ͖Δ͚ͩૣ͘จ๏Τϥʔ Λ͑ͯASTʹม͢Δ͜ͱ
Parseॲཧ • v8ͷParser࣮2ͭ͋Δ • Eager Parser: • ίϯύΠϧ͍ͨ͠શͯͷؔΛύʔε͢ΔͨΊʹΘΕΔ • AST
ߏங͕ϝΠϯλεΫ • JSͷscopeΛߏங͠ɺESSpecʹԊͬͨશͯͷsyntaxΤϥʔΛݟ͚ͭΔ • Lazy Parser: • ίϯύΠϧͨ͘͠ͳ͍ؔͷύʔεΛεΩοϓ͢ΔͨΊʹΘΕΔ • ASTߏங͠ͳ͍ • அՄೳͳsyntaxΤϥʔͷΈݟ͚ͭΔɺESspecʹඞͣ͠ԊΘͳ͍
Parseॲཧ • ʮॳظஈ֊Ͱ Lazy Parser ʹࣄͤͯ͞ޙʹ Eager Parser ʹࣄͤ͞Δʯͱ͍͏উෛ •
Lazy Parse ͢Δͷ͔ Eager Parse ͢Δͷ͔ V8 ͷؾ ࣍ୈͰܾ·Δͷ͕ଟ͍(Heuristic) • ຊʹStartup࣌ʹඞཁͳͷ͚ͩEager Parseͤ͞ ͯɺଞLazy Parse ͍ͤͨ͞
Optimize.js • https://github.com/nolanlawson/optimize-js • optimize.js ͜ͷ Eager Parse Λແཧཧ Lazy
Parseʹ͢ΔͨΊͷtranspiled optimizer
Optimize.js ͜Μͳײ͡Ͱແཧཧ-B[Z 1BSTFͤ͞ΔͨΊͷ ώϯτΛ༩͑Δ
Α͘Θ͔Βͳ͔ͬͨͬͯਓʁ
҆৺ͯ͠Լ͍͞ʂʂʂ
͜Ε͚֮ͩ͑ͯԼ͍͞ʂ Chrome/Nodeࠓޙͬͱ ͘ͳΔʂ Optimize.js ͏ͱͬͱ ͬͱ͘ͳΔ(͔)ʂ
Node Collaborators Summit
None
Node.js ͷίϥϘϨʔλ͕Ұ ಉʹհͯ͠coreͷ࡞ۀΛߦͬ ͨΓɺٞ͢Δॴ
http2, promise, stream, etc
͜Μͳײ͡ͷՌɺͪͳΈʹIUUQ/PEFશવಈ͔ͳ͍ͷͰɺ ͪΌΜͱಈ͔ͤΔͷʹ͍͖ͯ͠·͢ ʆŋТŋ ʎ
·ͱΊ • jsconf.eu࠷ߴͰͨ͠ • ΈΜͳReactͱ͔Angularͱ͔ͦ͏͍͏ͯ͠ͳ͍ • Ͳ͔ͬͪͱ͍͏ͱJSͱ͍͏ΩʔϫʔυͷԞʹ͋ΔϨΠϠʔͳ ෦ͩͬͨΓɺΣϒ͚ͩͰͳ͍ผͷΛղܾ͍ͯͨ͠Γ • Node
Collaborators Meetup࠷ߴͰͨ͠ • Node.js http2 ͍ͬͯͧ͘ʂʂʂʂʂ
࣍Node InteractiveͰ ൃද͢Δ༧ఆͰ͢ɻ
͋Γ͕ͱ͏͍͟͝·ͨ͠