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
9
3.8k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.1k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
230
Removing Corepack
yosuke_furukawa
PRO
9
1.6k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.8k
Strip Types と Storage
yosuke_furukawa
PRO
4
410
Module Harmony について
yosuke_furukawa
PRO
3
1.7k
LTのやり方
yosuke_furukawa
PRO
16
2.6k
AppRouter Panel Talk
yosuke_furukawa
PRO
3
810
Other Decks in Programming
See All in Programming
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
170
Discover Metal 4
rei315
2
140
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
1
150
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
170
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
780
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
11k
Deep Dive into ~/.claude/projects
hiragram
14
2.5k
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
120
ニーリーにおけるプロダクトエンジニア
nealle
0
840
AIともっと楽するE2Eテスト
myohei
6
2.6k
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
260
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
120
Featured
See All Featured
Practical Orchestrator
shlominoach
189
11k
4 Signs Your Business is Dying
shpigford
184
22k
Raft: Consensus for Rubyists
vanstee
140
7k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
A designer walks into a library…
pauljervisheath
207
24k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Code Review Best Practice
trishagee
69
18k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Balancing Empowerment & Direction
lara
1
430
Six Lessons from altMBA
skipperchong
28
3.9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
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Ͱ ൃද͢Δ༧ఆͰ͢ɻ
͋Γ͕ͱ͏͍͟͝·ͨ͠