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
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
3.8k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
190
Removing Corepack
yosuke_furukawa
PRO
9
1.5k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.6k
Strip Types と Storage
yosuke_furukawa
PRO
4
370
Module Harmony について
yosuke_furukawa
PRO
3
1.6k
LTのやり方
yosuke_furukawa
PRO
16
2.4k
AppRouter Panel Talk
yosuke_furukawa
PRO
3
750
Node.js v22 で変わること
yosuke_furukawa
PRO
13
5.8k
Other Decks in Programming
See All in Programming
Rubyで始める関数型ドメインモデリング
shogo_tksk
0
140
Jakarta EE meets AI
ivargrimstad
0
390
.NET Frameworkでも汎用ホストが使いたい!
tomokusaba
0
200
生成AIで加速するテスト実装 - ロリポップ for Gamersの事例と 生成AIエディタの活用
kinosuke01
0
120
ナレッジイネイブリングにAIを活用してみる ゆるSRE勉強会 #9
nealle
0
160
楽しく向き合う例外対応
okutsu
0
660
Django NinjaによるAPI開発の効率化とリプレースの実践
kashewnuts
1
250
React 19アップデートのために必要なこと
uhyo
8
1.5k
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
190
color-scheme: light dark; を完全に理解する
uhyo
7
490
PRレビューのお供にDanger
stoticdev
1
230
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
160
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
A Philosophy of Restraint
colly
203
16k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Done Done
chrislema
182
16k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
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Ͱ ൃද͢Δ༧ఆͰ͢ɻ
͋Γ͕ͱ͏͍͟͝·ͨ͠