[•\ަ : ‘S‚Ä ÅV50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.sc‚Ìread.cgi‚Ö]
Update time : 07/01 11:34 / Filesize : 262 KB / Number-of Response : 1047
[‚±‚̃XƒŒƒbƒh‚Ì‘‚«ž‚Ý‚ð휂·‚é]
[{” ŋߗ§‚Á‚½ƒXƒŒ•”M‚¢ƒXƒŒˆê—— : {” ŋߗ§‚Á‚½ƒXƒŒ^‹LŽÒ•ʈꗗ] [—ÞŽ—ƒXƒŒƒbƒhˆê——]


ªƒLƒƒƒbƒVƒ…ŒŸõA—ÞŽ—ƒXƒŒ“®ì‚ðC³‚µ‚Ü‚µ‚½A‚²–À˜f‚ð‚¨Š|‚¯‚µ‚Ü‚µ‚½

ynode.jszƒT[ƒoƒTƒCƒhjavascript 3yio.jsz



1 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sageteoff [2014/12/27(“y) 18:40:07.70 ID:MwQYLNUR.net]
python‚âruby‚âPHP‚Æ“¯‚¶“y•U‚Åjavascript‚ªŽg‚¦‚邿‚¤‚ɂȂè‚Ü‚µ‚½B
ƒT[ƒoƒTƒCƒhjavascript‚ɂ‚¢‚ÄŒê‚è‚Ü‚µ‚傤B

node.js - google‚ªŠJ”­‚µ‚½V8ƒGƒ“ƒWƒ“ã‚ÅŽÀs‚Å‚«‚鈗Œn
nodejs.org/
io.js - node.js ŒÝŠ·‚Å Joyent ‚̉e‹¿‚©‚ç‚Ì’E‹p‚ð–ÚŽw‚·ˆ—Œn
iojs.org/
Rhino - JVMã‚ÅŽÀs‚Å‚«‚鈗Œn
https://developer.mozilla.org/ja/Rhino

io.js ‚ÌŒoˆÜ
stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js
javascript‚Íruby‚Æ”äŠr‚µ‚Ä‚à‚©‚Ȃ葬‚¢
shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=yarv
Šî‘b‚©‚çŠw‚ÔNode.js
gihyo.jp/dev/serial/01/nodejs
node.js‚ÌŠT—v‚ƃAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­‚Ì€”õ
gihyo.jp/dev/serial/01/realtimeweb/0002

‘OƒXƒŒ
ynode.jszƒT[ƒoƒTƒCƒhjavascript 2yRhinoz
peace.2ch.net/test/read.cgi/tech/1358937029/
ynode.jszƒT[ƒoƒTƒCƒhjavascriptyRhinoz
toro.2ch.net/test/read.cgi/tech/1310087535/

39 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:12:14.10 ID:HFKhuxk5.net]
‚±‚ñ‚ȓ‚¢‹c˜_—‰ð‚Å‚«‚È‚¢‚Æ
ãY—í‚ȃR[ƒh‘‚¯‚È‚¢Žž“_‚Ål‹Co‚È‚¢‚¾‚낤‚Ë

40 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:24:29.87 ID:l0Z2uGSM.net]
‚»‚ñ‚ȓ‚¢˜b‚©‚ŸH

41 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:39:24.09 ID:w2TCoU2v.net]
>>35
‚»‚¢‚‚ªƒAƒz‚È‚¾‚¯

42 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:44:05.85 ID:CtgO5+tK.net]
>>39
ÈÀÆÏ¼ÞÚ½¶ºÜÙ²

43 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:57:31.37 ID:2KBXdzj3.net]
‚»‚Ì ‚É‚Í‚à‚¤MPC‹KŠi‚ª•‹y‚µ‚Ä
CD-ROMƒhƒ‰ƒCƒu‚ª•

44 –¼‘OFW€‚ł‚¢‚Ă邯‚¢‚¤‚Ì‚É(TOWNSƒ†[ƒU[•À‚ÌŠ´‘z []
[‚±‚±‰ó‚ê‚Ă܂·]

45 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 17:40:22.84 ID:NffMCEWR.net]
>>37-38
‹Zp“I‚ɓ‚¢˜b‚Í‚µ‚ĂȂ¢‚ªA‚±‚¤‚¢‚¤ê‚ʼnï˜b‚𬗧‚³‚¹‚é‚͓̂‚¢‚Èw
‚Å‚«‚ê‚Î’N‚© ID:kuXg+7pG ‚ÌŽå’£‚ð–|–󂵂ė~‚µ‚¢

46 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 18:06:08.86 ID:NffMCEWR.net]
>>34
> a += 1;‚ÌŽÀs‚ªI‚í‚Á‚Ä‚©‚ç‚Æ‚ÍŒ¾‚Á‚ĂȂ¢‚ÆŽv‚¤‚ª

"5 Processing Model"‚Ì4‚ÉA5ˆÈ~‚Í”ñ“¯Šú‚ÉŽÀs‚·‚邯‘‚¢‚Ä‚ ‚é

> ’u‚«Š·‚¦‚ĉ½‚¾‚æH

‚¨‘O‚ªŽg‚Á‚Ä‚éƒuƒ‰ƒEƒU‚ɇ‚킹‚ēǂݑւ¦‚ë‚Æ‚¢‚¤‚¾‚¯‚¾
ƒT[ƒoƒTƒCƒhJSƒXƒŒ‚Æ‚µ‚Ä‚Ínode‚ÅŽg‚¦‚éprocess.nextTick()‚âsetImmediate()‚ʼn½‚Ì–â‘è‚à‚È‚¢

> platform code(—v‚·‚é‚ÉJavaScript‚łȂ¢ƒR[ƒh)‚ðŽÀs‚µ‚ë‚Æ‚í‚´‚í‚´‘‚¢‚Ä‚é

"paltform code"‚̓vƒ‰ƒbƒgƒtƒH[ƒ€‚²‚ƂɈقȂéƒR[ƒh‚Æ‚¢‚¤ˆÓ–¡‚Å
‚»‚ꂪJS‚ÅŽÀ‘•‚³‚ê‚Ă悤‚ª‚³‚ê‚Ă܂¢‚ª‚Ç‚¤‚Å‚à‚¢‚¢
ŽÀ‚̂Ƃ±‚ënode‚ÌsetImmediate()‚ÍJS‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚é

https://github.com/joyent/node/blob/v0.10/lib/timers.js#L361

> > ˆá‚¤‚È‚çuƒuƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚È——R‚ð‹ï‘Ì“I‚É‘‚¢‚Ä‚­‚ê
> Œ³‚ÌŽ¿–â‚ͪ‚±‚êA‚¨‘O‚͘_“_‚ð‚¸‚ç‚»‚¤‚Æ‚µ‚Ă邾‚¯‚¾‚È

‚¢‚Ý‚Ó
uƒuƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚Ì‘ÎÛ‚ÍPromise‚»‚Ì‚à‚̂̎À‘•‚¾
Promise‚ÌŽÀ‘•‚ªŒÄ‚Ño‚·API‚̘b‚¶‚á‚È‚¢
ustring‚̓uƒ‰ƒEƒU‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚év‚ð——R‚Éustring‚ðŽg‚¤‚̂̓uƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚Á‚Ä‚¨‚©‚µ‚¢‚¾‚ëH
"platform code"‚ªƒuƒ‰ƒEƒU‚ânode‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚Ä‚àA‚»‚ê‚ðŽg‚¤ƒR[ƒh‚ÍJS‚Å‘‚¯‚é
‚½‚Æ‚¦‚ÎQ‚Í‚±‚̕ӂÅ"platform code"‚ðŒÄ‚Ñ•ª‚¯‚Ä‚é (ƒ‚ƒ_ƒ“ƒuƒ‰ƒEƒU‚¾‚ÆpostMessage()‚ªŽg‚í‚ê‚Ä‚é‚È)

https://github.com/kriskowal/q/blob/v1/q.js#L160

‚±‚ê‚Íuƒuƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚ł͂Ȃ­•’Ê‚ÌJS‚̃R[ƒh‚¾

47 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 18:08:08.79 ID:NffMCEWR.net]
>>34
> >>30‚̉º‚Ì•û‚ÅŒ¾‚Á‚Ă邿

˜b‚ªƒ‹[ƒv‚µ‚Ä‚é‚Èc ‚»‚Ì>>30‚̈ȉº‚ɂ‚¢‚Ä

> Promise‚ÉŒÀ‚Á‚½˜b‚µ‚¶‚á‚È‚¢‚ªAƒ‰ƒCƒuƒ‰ƒŠ“à‚Åtry,catch‚µ‚¿‚á‚Á‚Ă邯
> ŒÄ‚Ño‚µ‘¤‚É—áŠO‚ª—ˆ‚È‚¢‚Á‚ÄŽ–‚¾ (“–‚½‚è‘O‚ÌŽ–‚¾‚¯‚Ç)

‚±‚ê‚ÍPromise‚ðŽÀ‘•‚·‚éQ‚̂悤‚ȃ‰ƒCƒuƒ‰ƒŠ‘¤‚̘b‚¾‚æ‚ÈH
ƒ‰ƒCƒuƒ‰ƒŠ‘¤‚ªcatch‚µ‚½—áŠO‚ðˆù‚Ýž‚ñ‚Ŏ̂Ă½ê‡‚ÍŠm‚©‚É‚»‚¤‚¾‚ªA
Q‚âBluebird‚͈ù‚Ýž‚Ü‚¸‚ÉPromise.catch()‚É’Ê’m‚·‚邾‚ë
Promise‚ðŽg‚í‚È‚¢ê‡‚Å‚ànode‚Ì—¬‹V‚È‚çƒR[ƒ‹ƒoƒbƒN‚Ì‘æ1ˆø”‚Å’Ê’m‚·‚é
‚¾‚©‚炱‚ê‚Íuƒuƒ‰ƒEƒU“à‘ ‚ÌPromise‚ÍJavaScript‚ÅŽÀ‘•o—ˆ‚È‚¢Ž–‚ð‚µ‚Ä‚év‚ÉŠY“–‚µ‚È‚¢
‚Á‚Ä‚¢‚¤‚Ì‚ª>>31‚Å‘‚¢‚½‚±‚Æ‚¾
‚»‚ê‚ɑ΂µ‚Ä>>32‚Å

> Q‚Æ‚©Bluebird‚Ý‚½‚¢‚ÉŽ©‘O‚ÅŽÀ‘•‚·‚邯—áŠO‚ªˆù‚Ü‚ê‚é‚Á‚Ęb‚µ‚¶‚á‚È‚©‚Á‚½‚Ì‚©c

‚ƕԂ³‚ꂽ‚킯‚¾‚ªA‘Oq‚Ì’Ê‚èˆù‚Ýž‚Ü‚¸‚ÉPromise.catch()‚Å’Ê’m‚³‚ê‚é‚Í‚¸‚¾‚©‚ç
‚»‚¤‚¶‚á‚È‚¢‚Á‚Ä‚¢‚¤‚È‚ç

> ‚ÅAQ‚Æ‚©Bluebird‚¾‚Æ—áŠO‚ªˆù‚Ýž‚Ü‚ê‚é‚킯HƒR[ƒh‚ÅŽ¦‚¹‚éH

‚Æ>>33‚Åq‚Ë‚½‚킯‚¾
‚»‚̕Ԏ–‚ª>>34‚Ìu>>30‚̉º‚Ì•û‚ÅŒ¾‚Á‚Ă邿v‚¾‚ÆŠ®‘S‚Ƀ‹[ƒv
‚Ü‚¸‚ÍŠm”F‚¾‚ªA

EQ‚Æ‚©Bluebird‚ł͗áŠO‚ªˆù‚Ü‚ê‚é

‚Á‚ÄŽå’£‚µ‚Ä‚é‚ñ‚¾‚æ‚ÈH
‚»‚ê‚È‚ç‚Ç‚¤‚¢‚¤ƒP[ƒX‚Å‚»‚¤‚È‚é‚Ì‚©—á‚ðŽ¦‚µ‚Ä‚­‚ê
Promise.catch()‚É“`‚í‚ç‚È‚¢ƒP[ƒX‚ª‚à‚µ‚ ‚é‚È‚çA‚¨‚»‚ç‚­‚»‚ê‚Í‚½‚¾‚̃oƒO‚¾



48 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/04(“ú) 19:14:35.42 ID:w9Cj0tkO.net]
Javascript‚ÆPHP‚Å‚¾‚¢‚½‚¢‚Ì‚±‚Ƃ̓Jƒo[‰Â”\‚Æ‚¢‚¤”Fޝ‚Å‚¨‚‹‚Å‚µ‚傤‚©H

49 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 19:32:10.48 ID:zyY9pL0A.net]
MySQL‚©SQLite‚à—~‚µ‚¢

50 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 20:18:20.57 ID:w9Cj0tkO.net]
‚â‚Í‚èMySQL‚ª‚È‚¢‚ƕЎ藎‚¿‚Ȃ̂ł·‚Ë
‚Ç‚¤‚à‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·

51 –¼‘OF23 mailto:sage [2015/01/04(“ú) 20:31:31.22 ID:LcMrfHes.net]
>>34,43
>Schedules to run handler immediately after user agent events have been flushed.
>user agent events‚Á‚ĂȂñ‚¾H
‚±‚±‚ÅŒ¾‚Á‚Ä‚¢‚éuser agent events‚ÍHTML—v‘f‚Ìon`‘®«‚ÉŽw’肵‚½ƒCƒxƒ“ƒgƒnƒ“ƒhƒ‰ŠÖ”‚Ý‚½‚¢‚¾‚ËB
1Í‚ÌIntroduction‚Åuuser agent events‚Ì’†‚ʼnæ–Ê‚ð‘‚«Š·‚¦‚邿‚¤‚Ȉ—‚ð‘‚¢‚ÄA
‚»‚ÌŒã‚̈—‚ðs‚¤‘O‚É‚»‚Ì•ÏX‚ð‰æ–Ê‚É”½‰f‚³‚¹‚½‚¢‚Æ‚«‚ÉA¡‚܂łÍsetTimeout(fn,0)‚ð
Žg‚Á‚Ä‚½‚¾‚낤‚¯‚ÇA‚»‚ꂾ‚Æ’x‰„‚ª”­¶‚·‚é‚©‚çsetImmediate‚ăƒ\ƒbƒh‚ð’è‹`‚·‚邿v
‚Á‚ĂȊ´‚¶‚Ì‚±‚Æ‚ª‘‚¢‚Ä‚ ‚éB

>> ‚»‚±‚Í‚±‚ÌNotes‚É‘‚¢‚Ä‚ ‚é"platform code"‚©‚çD‚«‚È‚à‚̂ɒu‚«Š·‚¦‚Ä‚­‚ê
>’u‚«Š·‚¦‚ĉ½‚¾‚æH
Notes ‚Ì‹Lq‚ÉA
This can be implemented with either a "macro-task" mechanism such as setTimeout or setImmediate,
or with a "micro-task" mechanism such as MutationObserver or process.nextTick.
u‚±‚ê‚ÍAsetTimeout,‚âsetImmediate (hƒ}ƒNƒƒ^ƒXƒNh‹@\jA‚Ü‚½‚ÍMutationObserver‚âprocess.nextTick
i"ƒ}ƒCƒNƒƒ^ƒXƒN"‹@\j‚ðŽg‚Á‚Ä‚àŽÀ‘•‚Å‚«‚邿v
‚Á‚Ä‘‚¢‚Ä‚ ‚é‚ËB‚±‚Ì’†‚̂ǂê‚ðŽg‚Á‚Ä’u‚«Š·‚¦‚Ä‚àŽÀŒ»‚Å‚«‚邯‚¢‚¤‚±‚Æ‚¾‚ËB

—áŠOˆ—‚ɂ‚¢‚Ä‚à>>44‚Ì’Ê‚è‚ÅA‚»‚êˆÈã‚ÉŒ¾‚¤‚ׂ«‚±‚Ƃ͂Ȃ¢‚©‚ÈB
‚½‚¾ƒfƒoƒbƒK‚Æ‚©ƒuƒŒ[ƒNƒ|ƒCƒ“ƒg‚Æ‚©‚ÌŒ¾—t‚ªo‚Ä‚¢‚½‚©‚çA
•K—vˆÈã‚ɓ‚­l‚¦‚Ä‚¢‚½‚ñ‚¶‚á‚È‚¢‚©‚Æ‚¢‚¤‹C‚ª‚µ‚È‚¢‚Å‚à‚È‚¢B

52 –¼‘OF23 mailto:sage [2015/01/04(“ú) 20:43:54.20 ID:LcMrfHes.net]
>>43
>‚½‚Æ‚¦‚ÎQ‚Í‚±‚̕ӂÅ"platform code"‚ðŒÄ‚Ñ•ª‚¯‚Ä‚é (ƒ‚ƒ_ƒ“ƒuƒ‰ƒEƒU‚¾‚ÆpostMessage()‚ªŽg‚í‚ê‚Ä‚é‚È)
MessageChannel ’m‚ç‚ñ‚©‚Á‚½BBB
node.js ‚Å‚Í process.nextTickAƒuƒ‰ƒEƒU‚Å‚Í setTimeout ‚ÆŽg‚¢•ª‚¯‚邾‚¯‚¾‚Á‚½‚æB
•׋­‚ɂȂÁ‚½AƒTƒ“ƒNƒXB

53 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 20:59:25.50 ID:CtgO5+tK.net]
>>44
> Promise‚ðŽg‚í‚È‚¢ê‡‚Å‚ànode‚Ì—¬‹V‚È‚çƒR[ƒ‹ƒoƒbƒN‚Ì‘æ1ˆø”‚Å’Ê’m‚·‚é
’Ê’m‚µ‚Ä‚àŒÄ‚Ño‚µ‘¤‚ªƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ«‚áˆÓ–¡‚È‚¢‚¾‚ë
•ʂɃnƒ“ƒhƒŠƒ“ƒO‚µ‚½‚«‚árejectj‚ðƒnƒ“ƒhƒŠƒ“ƒO‚·‚è‚á‚¢‚¢‚ñ‚¾‚æAƒAƒz‚©

‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠO‚Å‚à“à‘ Promise‚È‚çƒfƒoƒbƒK‚ª
‹C‚ðŒø‚©‚¹‚Ä—áŠO‚ð’Ê’m‚µ‚Ä‚­‚ê‚é‚Á‚ÄŽ–‚ðŒ¾‚Á‚Ä‚ñ‚Ì‚É
‚¨‘O‚͂Ȃñ‚Å•ª‚©‚ñ‚È‚¢‚ñ‚¾‚æƒ}ƒW‚Å–³”\‚¾‚È

54 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 21:02:03.05 ID:CtgO5+tK.net]
>>44
‚¨‘O‚ªPromiseŽg‚Á‚ăvƒƒOƒ‰ƒ€‚È‚ñ‚©‚µ‚½Ž–‚È‚¢ƒh‘fl‚Ȃ͕̂ª‚©‚Á‚½‚æ
‚¶‚á‚È‚«‚áA‚»‚ñ‚ÈŽ–Œ¾‚¤–ó‚È‚¢‚µ
•’ʂ͂»‚¤‚¾‚ËA‚ÅI‚í‚é˜b‚µ‚ðAƒhƒAƒz‚Ì‚¨‘O‚ªƒoƒJ‚Ý‚½‚¢‚ɓ˂Á‚±‚ñ‚ł邾‚¯‚Ȃ̂ð
ƒIƒŒ‚ª‰É‚¾‚©‚瑊Žè‚µ‚Ă邾‚¯‚¾‚æ

55 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 22:08:03.31 ID:NffMCEWR.net]
‰É‚È‚ç‚à‚¤­‚µ‘ŠŽè‚µ‚Ä‚à‚炨‚¤‚©
‚Ü‚¸

> E“n‚³‚ꂽƒR[ƒ‹ƒoƒbƒN‚ðŠmŽÀ‚É”ñ“¯Šú‚ÅŽÀs‚·‚é

‚±‚ꂪJS‚ÅŽÀ‘•‚Å‚«‚È‚¢‚Á‚ÄŽå’£‚͊ԈႢ‚¾‚Á‚½‚Æ‚¢‚¤‚±‚Ƃł¢‚¢‚Ì‚©H
ŽŸ‚É

> Eˆù‚Ýž‚܂ꂽ—áŠO‚ðƒfƒoƒbƒOo—ˆ‚é

u‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠOv‚ðƒfƒoƒbƒO‚Å‚«‚é‚Ì‚Í“à‘ PromiseŠÖŒW‚È‚­
JSˆ—Œn(Chrome‚È‚çv8)‚̃fƒoƒbƒK‚Ì‹@”\‚¾‚ë
node‚Å‚àv8‚̃fƒoƒbƒK‚Í—LŒø‚¾‚©‚çnode debug x.js‚ÅŽÀs‚µ‚ÄbreakOnException‚µ‚Ä‚¨‚¯‚Î
u‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠOv‚ŃuƒŒ[ƒN‚·‚é
node‚Íprocess.on('uncaughtException')‚ª‚ ‚é‚©‚ç‚»‚ê‚ŃfƒoƒbƒKŽg‚¤‹@‰ï‚Í­‚È‚¢‚¯‚Ç‚È
‚¾‚ª‚±‚̘bƒ}ƒW‚ÅPromiseŠÖŒW‚È‚­‚ËH

‚‚©uƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—áŠOv‚łȂ­uƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢reject (uncaught promise rejections)v
‚̃fƒoƒbƒO‚ðŒ¾‚Á‚Ä‚é‚Ì‚©H
‚¾‚Æ‚·‚邯‘S‘R˜b‚ªˆá‚¤‚ªAdebugger•¶‚ðŽg‚¦‚Î“à‘ Promise‚¶‚á‚È‚­‚Ä‚àŽÀ‘•‚͂ł«‚é‚È

> ‚¨‘O‚͂Ȃñ‚Å•ª‚©‚ñ‚È‚¢‚ñ‚¾‚æƒ}ƒW‚Å–³”\‚¾‚È

‚¨‘OˆÈŠO’N‚à‚¨‘O‚ÌŒ¾‚Á‚Ă邱‚Æ‚ð—‰ð‚Å‚«‚ĂȂ¢‚ñ‚¶‚á‚È‚¢‚©Hw
‚Å‚«‚Ä‚él‚ª‚¢‚é‚È‚çƒ}ƒW‚Å–|–󂵂Ă­‚ê

‚ ‚Ɖ´‚ÍECMA“ü‚è‘O‚ðŠÜ‚߂邯2012”N ‚©‚çPromiseŽg‚Á‚Ä‚é
‚½‚¾‚µnode‚ł̘b‚¾‚©‚çƒuƒ‰ƒEƒUŒÅ—L‚̘b‚Í’m‚ç‚È‚¢‰Â”\«‚Í‚‚¢
‚±‚±‚̓T[ƒoƒTƒCƒhJSƒXƒŒ‚È‚ñ‚¾‚©‚ç‚»‚̕ӂ͂¨‘O‚Ì•û‚ªl—¶‚µ‚Ä‚­‚ê

56 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 22:36:38.77 ID:NffMCEWR.net]
‚¹‚Á‚©‚­‚Ȃ̂ŋï‘Ì“I‚É
‚±‚¤‚¢‚¤ƒR[ƒh(x.js)‚ª‚ ‚邯‚·‚é‚¶‚á‚ë

process.nextTick(function() {
@throw new Error('unhandle');
});

‚±‚¤‚â‚Á‚ÄŽÀs‚·‚é‚¶‚á‚ë

$ node debug x.js
< Debugger listening on port 5858
connecting to port 5858... ok
break in x.js:1
> 1 process.nextTick(function() {
@2 throw new Error('unhandle');
@3 });

1s–Ú‚ÅŽ~‚Ü‚Á‚Ă邩‚炨‚Ü‚¶‚È‚¢‚𥂦‚é‚¶‚á‚ë

debug> breakOnException

ŽÀsÄŠJ‚·‚é‚¶‚á‚ë

debug> c
exception in x.js:2
Error: unhandle
@1 process.nextTick(function() {
> 2 throw new Error('unhandle');
@3 });
debug>

ƒnƒ“ƒhƒ‹‚³‚ê‚ĂȂ¢—áŠO‚Ì‚¹‚¢‚Å2s–Ú‚ÅŽ~‚Ü‚Á‚½‚¶‚á‚ë

57 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 23:45:19.91 ID:NffMCEWR.net]
‚Æ‚±‚ë‚Åuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚̃fƒoƒbƒO‚Á‚Ä
ÅV‚̃uƒ‰ƒEƒU‚ł̓Tƒ|[ƒg‚³‚ê‚Ä‚é‚Ì‚©H
‚½‚Æ‚¦‚Î

Promise.resolve(true).then(function(v) {
@throw new Error('then');
}).catch(function(e) {
@console.log(e);
});

‚ÆÅŒã‚Écatch()‚·‚ׂ«‚Æ‚±‚ë‚ð–Y‚ê‚Ä‚µ‚Ü‚Á‚Ä

Promise.resolve(true).then(function(v) {
@throw new Error('then');
});

‚Æ‚µ‚½ê‡A‚±‚ê‚ðChromeˆÀ’è”Å(39)‚ÅŽÀs‚µ‚Ä‚àƒuƒŒ[ƒN‚µ‚È‚¢
ƒXƒ[‚µ‚½—áŠO‚Í“à‘ Promise‚ÌŽÀ‘•‚Åcatch‚µ‚Ă邩‚çv8‚©‚猩‚邯
ƒnƒ“ƒhƒ‹‚³‚ê‚Ä‚é‚Á‚Ĉµ‚¢‚È‚ñ‚¾‚낤
ChromeŠJ”­”ł⑼‚̃uƒ‰ƒEƒU‚¾‚ƃuƒŒ[ƒN‚·‚é‚Ì‚©H



58 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 09:46:01.36 ID:mZODWVt6.net]
>>50
‰¡‚©‚玸—çA‰´‚à“Ç‚ñ‚łĈӖ¡‚í‚©‚ç‚È‚¢‚©‚玿–₳‚¹‚Ä‚­‚ê

„‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠO‚Å‚à“à‘ Promise‚È‚çƒfƒoƒbƒK‚ª
„‹C‚ðŒø‚©‚¹‚Ä—áŠO‚ð’Ê’m‚µ‚Ä‚­‚ê‚é‚Á‚ÄŽ–‚ðŒ¾‚Á‚Ä‚ñ‚Ì‚É
„‚¨‘O‚͂Ȃñ‚Å•ª‚©‚ñ‚È‚¢‚ñ‚¾‚æƒ}ƒW‚Å–³”\‚¾‚È
“à‘ŸPromise‚Ì—˜“_‚̓fƒoƒbƒK‚ª‹C‚𗘂©‚¹‚Ä—áŠO’Ê’m‚ð‚µ‚Ä‚­‚ê‚éA‚Ɠǂ߂é‚ñ‚¾‚¯‚ÇA‚‚܂軕i‚ÉŽg‚¤‚ÆŸŽè‚ɃfƒoƒbƒK‚ª“®‚¢‚Ä‚éó‘ԂɂȂ邩‚çŠJ”­ŽžˆÈŠO‚ÍŽg‚Á‚¿‚á‚¢‚¯‚È‚¢‚Á‚ÄŽ–‚ÅOKH
‚»‚ê‚Æ‚àPromise‚ɂ͉½‚ç‚©‚̃fƒoƒbƒK‚ª“à‘Ÿ‚³‚ê‚Ä‚¢‚銴‚¶‚Ȃ̂©‚ÈH‚à‚µ‚»‚¤‚¾‚Æ‚µ‚ÄAƒfƒoƒbƒK‚ª“®ì‚µ‚Ă邱‚Æ‚ð‘O’ñ‚ŃR[ƒh‚ð‘g‚Þ‚Ì‚ªPromise‚ÌŽg‚¢•û‚Á‚ÄŽ–H

‚à‚µ‘OŽÒ‚È‚ç(“Á‚É«—ˆ“I‚É)Žd—l‚ª‚Ç‚¤‚Ȃ邩‚͊‹«ˆË‘¶‚Á‚ÄŽ–‚ɂȂ邩‚çAPromise‚ÍŽg‚Á‚Ă͂¢‚¯‚È‚¢‚ñ‚¶‚á‚È‚¢‚¾‚낤‚©H

59 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 12:38:50.48 ID:A9O4oHD7.net]
–Ê“|‚¾‚ª‚±‚¤‚È‚Á‚½‚炵‚傤‚ª‚È‚¢­‚µ•t‚«‡‚Á‚Ä‚â‚é

>>52
> > E“n‚³‚ꂽƒR[ƒ‹ƒoƒbƒN‚ðŠmŽÀ‚É”ñ“¯Šú‚ÅŽÀs‚·‚é
>
> ‚±‚ꂪJS‚ÅŽÀ‘•‚Å‚«‚È‚¢‚Á‚ÄŽå’£‚͊ԈႢ‚¾‚Á‚½‚Æ‚¢‚¤‚±‚Ƃł¢‚¢‚Ì‚©H
setImmediate()‚ÌŽd—l‚ÍA“n‚³‚ꂽƒR[ƒ‹ƒoƒbƒN‚ðŽŸ‚ÌJavaScript‚Ì–½—ß‚ªŠmŽÀ‚ÉŽÀs‚³‚ꂽŒã‚É
ŽÀs‚·‚邯‚͓ǂ߂Ȃ©‚Á‚½‚ªA‚à‚µ“à•”‚ÌŽÀ‘•‚ª‚»‚¤‚È‚Á‚Ä‚é‚̂ł ‚ê‚ÎAsetImmediate()‚Å
ŽÀ‘•‚Å‚«‚邿
‚½‚¾‚µA–{“–‚É“à•”‚ÌŽÀ‘•‚ª‚»‚¤‚È‚Á‚Ă邩‚Ç‚¤‚©‚Í‚¨‘O‚ªŠm”F‚µ‚Ä•ñ‚µ‚ë

> ChromeŠJ”­”ł⑼‚̃uƒ‰ƒEƒU‚¾‚ƃuƒŒ[ƒN‚·‚é‚Ì‚©H
’Êí‚ÌChrome‚ÆFirefox‚ŃuƒŒ[ƒN‚·‚é‚Ì‚ðŠm”F‚µ‚½

>>55
> ‚‚܂軕i‚ÉŽg‚¤‚ÆŸŽè‚ɃfƒoƒbƒK‚ª“®‚¢‚Ä‚éó‘ԂɂȂ邩‚çŠJ”­ŽžˆÈŠO‚ÍŽg‚Á‚¿‚á‚¢‚¯‚È‚¢‚Á‚ÄŽ–‚ÅOKH
ƒfƒoƒbƒK‚Í•’ʂ̃uƒ‰ƒEƒWƒ“ƒOŽž‚ɂ͗LŒø‚ɂȂÁ‚ĂȂ¢‚æ
—LŒø‚É‚·‚é‚ɂ̓uƒ‰ƒEƒU‚²‚Ƃɂâ‚è•û‚ªˆá‚¤‚©‚玩•ª‚Å’²‚ׂĂ­‚ê

60 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 20:40:46.70 ID:xBMPeqox.net]
>56
> ‚½‚¾‚µA–{“–‚É“à•”‚ÌŽÀ‘•‚ª‚»‚¤‚È‚Á‚Ă邩‚Ç‚¤‚©‚Í‚¨‘O‚ªŠm”F‚µ‚Ä•ñ‚µ‚ë

process.nextTick()‚àsetImmediate()‚àsetTimeout()‚à‚»‚¤‚È‚Á‚Ă邿
‚ǂ̊֔‚àreturn‚µ‚Č㑱‚̃R[ƒh‚ªŽÀs‚³‚ê‚ăCƒxƒ“ƒgƒ‹[ƒv‚ɖ߂邿‚è‘O‚É
ƒR[ƒ‹ƒoƒbƒN‚ªŒÄ‚΂ê‚邱‚Ƃ͂Ȃ¢

> > ChromeŠJ”­”ł⑼‚̃uƒ‰ƒEƒU‚¾‚ƃuƒŒ[ƒN‚·‚é‚Ì‚©H
> ’Êí‚ÌChrome‚ÆFirefox‚ŃuƒŒ[ƒN‚·‚é‚Ì‚ðŠm”F‚µ‚½

>>54‚ªˆø—p‚³‚ê‚Ă邪A‚»‚ê‚Í‚¨‘O‚ÌŒ¾‚¤uƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠOv
‚Ƃ͕ʂÌuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚̘b‚¾‚¼
>>54‚̈ês–Ú‚É‚»‚¤‘‚¢‚Ä‚ ‚邾‚ë

‚»‚ê‚æ‚è

> ‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠO‚Å‚à“à‘ Promise‚È‚çƒfƒoƒbƒK‚ª
> ‹C‚ðŒø‚©‚¹‚Ä—áŠO‚ð’Ê’m‚µ‚Ä‚­‚ê‚é‚Á‚ÄŽ–‚ðŒ¾‚Á‚Ä‚ñ‚Ì‚É

‚ɂ‚¢‚Ä‹ï‘Ì“I‚ɃR[ƒh‚Å‚à‘‚¢‚Äà–¾‚µ‚Ä‚­‚ê‚æ
“ú–{Œê‚¶‚á‚܂Ƃà‚É’Ê‚¶‚ĂȂ¢‚ñ‚¾‚©‚ç‚»‚Ì•û‚ª‚¨ŒÝ‚¢Žè‚ÁŽæ‚è‘‚¢‚¾‚ëH

61 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 20:47:12.39 ID:xBMPeqox.net]
‚±‚ê‚Íuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚Æ‚µ‚ẴŒƒX

>>56
> ’Êí‚ÌChrome‚ÆFirefox‚ŃuƒŒ[ƒN‚·‚é‚Ì‚ðŠm”F‚µ‚½

‚Ü‚¸‚ÍŠm”F‚¾‚ªAChrome‚Å"Pause On Caught Exceptions"‚ÍŠO‚µ‚Ă邿‚ÈH
‚ ‚ê‚̓nƒ“ƒhƒŠƒ“ƒOu‚µ‚Ä‚év—áŠO‚Å‚àƒuƒŒ[ƒN‚·‚é‚©‚炱‚±‚ł͎ז‚‚ɂȂé
‚»‚Ìã‚ÅAreject‚ðƒnƒ“ƒhƒŠƒ“ƒO‚µ‚Ä‚¢‚é

Promise.resolve(true).then(function(v) {
@throw new Error('then');
}).catch(function(e) {
@console.log(e);
});

‚̓uƒŒ[ƒN‚µ‚È‚¢‚ªAreject‚ðƒnƒ“ƒhƒŠƒ“ƒO‚µ‚Ä‚¢‚È‚¢

Promise.resolve(true).then(function(v) {
@throw new Error('then');
});

‚̓uƒŒ[ƒN‚·‚é‚Ì‚ðŠm”F‚µ‚½A‚Æ‚¢‚¤‚±‚ƂŊԈႢ‚È‚¢‚©H

‰´‚ÌChrome 39‚ł͂ǂ¿‚ç‚àƒuƒŒ[ƒN‚µ‚È‚¢
(’Êí‚Ìuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—áŠOv‚Í‚à‚¿‚ë‚ñƒuƒŒ[ƒN‚·‚é)
‚à‚µChrome‚Ìݒ肪•K—v‚Ȃ狳‚¦‚Ä—~‚µ‚¢

62 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 20:56:09.22 ID:xBMPeqox.net]
‚±‚ê‚àuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚Æ‚µ‚ẴŒƒX
—áŠO‚ł͂Ȃ­reject‚̘b‚Æ‚¢‚¤‚±‚Æ‚ª‚æ‚è–¾Šm‚É‚È‚é‚æ‚¤‚ɃR[ƒh‚ðC³‚µ‚½

reject‚ðƒnƒ“ƒhƒŠƒ“ƒO‚µ‚Ä‚¢‚é

Promise.resolve(true).then(function(v) {
@return Promise.reject(new Error('then'));
}).catch(function(e) {
@console.log(e);
});

‚̓uƒŒ[ƒN‚µ‚È‚¢‚ªAreject‚ðƒnƒ“ƒhƒŠƒ“ƒO‚µ‚Ä‚¢‚È‚¢

Promise.resolve(true).then(function(v) {
@return Promise.reject(new Error('then'));
});

‚̓uƒŒ[ƒN‚·‚é‚Ì‚©H

‚¿‚Ȃ݂ÉQ‚ðŽg‚¤ê‡‚ÍQ.getUnhandledReasons()‚Å
uƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚̈ꗗ‚ðŽæ“¾‚Å‚«‚é
node‚Å‚ÍsetInterval()‚Å’èŠú“I‚ɃƒOo—Í‚·‚ê‚΃fƒoƒbƒK‚Ì•K—v«‚Í’á‚¢

63 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 22:13:35.53 ID:gHiAPMtv.net]
>>57
> process.nextTick()‚àsetImmediate()‚àsetTimeout()‚à‚»‚¤‚È‚Á‚Ă邿
’²‚×‚à‚¹‚¸‚É“K“–‚ÈŽ–Œ¾‚¤‚È‚æ
­‚È‚­‚Æ‚àsetTimeout()‚Íâ‘ΈႤ

‘¼‚Í“ú–{Œê‚ªˆÓ–¡•s–¾
Promise.resolve(true).then(function(v) {
@throw new Error('then'); © ‚±‚±‚ŃfƒoƒbƒK‚ªƒuƒŒ[ƒN‚·‚é
});
ƒAƒz‚È‚¨‘O‚Í‚±‚ê‚Å‚à—‰ðo—ˆ‚È‚¢‚ÆŽv‚¤‚ªA‰´‚Í‚±‚êˆÈãà–¾‚µ‚È‚¢

> node‚Å‚ÍsetInterval()‚Å’èŠú“I‚ɃƒOo—Í‚·‚ê‚΃fƒoƒbƒK‚Ì•K—v«‚Í’á‚¢
•³‚Ý‚½‚¢‚È•‰‚¯É‚µ‚Ý‚·‚ñ‚È‚æw

64 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 22:22:33.23 ID:gHiAPMtv.net]
> ­‚È‚­‚Æ‚àsetTimeout()‚Íâ‘ΈႤ
•ß‘¨‚·‚邪ƒ^ƒCƒ€ƒAƒEƒgŽžŠÔ‚ð1ms‚Æ‚©‚É‚·‚ê‚ÎA99.9%ŽÀ—pã–â‘è–³‚¢‚¾‚낤
‚¾‚ªuŠmŽÀv‚É”ñ“¯Šú‚É‚·‚邯‚¢‚¤Ž–‚Ƃ͑S‚­ˆÓ–¡‚ªˆá‚¤

>>58
> ‚à‚µChrome‚Ìݒ肪•K—v‚Ȃ狳‚¦‚Ä—~‚µ‚¢
ƒfƒoƒbƒK‚̃fƒtƒHÝ’è‚ł͈ù‚Ýž‚Ü‚ê‚Ä–³”½‰ž‚¾
‚³‚ñ‚´‚ñƒPƒ`‚‚¯‚Ă銄‚ɂ͂»‚ñ‚ÈŠÈ’P‚ÈÝ’è‚à•ª‚©‚ç‚ñ‚©
‚½‚¾AŒƒ‚µ‚­ƒXƒŒƒ`‚ÈŽ–‚È‚ñ‚Å–³—‚à‚È‚¢‚©‚ç‚»‚ë‚»‚ë–Ù‚Á‚Ä‚­‚ê

65 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:31:48.05 ID:xBMPeqox.net]
>>60
> ’²‚×‚à‚¹‚¸‚É“K“–‚ÈŽ–Œ¾‚¤‚È‚æ

’²‚ׂȾ‚Á‚Ă邯‚ÇH
‚Ü‚¸‚ÍŽd—l

https://html.spec.whatwg.org/multipage/webappapis.html#timers

"timer initialisation steps"‚Ì10‚Å"Return handle, and then continue running this algorithm in parallel."
‚ƂȂÁ‚Ä‚¢‚ÄAƒR[ƒ‹ƒoƒbƒN‚ªŒÄ‚Ño‚³‚ê‚é‚Ì‚Í14‚Ì"Queue the task task."‚É‚æ‚Á‚Ä‚¾
‚»‚µ‚ÄNode‚ÌŽÀ‘•

https://github.com/joyent/node/blob/v0.10/lib/timers.js#L194

203s–Ú‚ÅTimeoutƒIƒuƒWƒFƒNƒg‚ðì‚Á‚Ä225s–Ú‚Åactive()‚É“n‚µ‚Ä‚é
175s–Ú‚©‚ç‚Ìactive()‚ÍƒŠƒXƒg‚ÉTimeoutƒIƒuƒWƒFƒNƒg‚ð’ljÁ‚µ‚Ă邾‚¯
‚Ç‚¤‚â‚Á‚Ä‚àsetTimeout()‚ªreturn‚·‚é‘O‚ɃR[ƒ‹ƒoƒbƒN‚ªŒÄ‚΂ê‚邱‚Ƃ͂Ȃ¢

> ­‚È‚­‚Æ‚àsetTimeout()‚Íâ‘ΈႤ

‚»‚̪‹’‚ÍH ‚¨‘O‚ÍŽå’£‚·‚é‚΂Á‚©‚Ū‹’‚͉½‚àŽ¦‚³‚È‚¢‚Ì‚È

>>61
> •ß‘¨‚·‚邪ƒ^ƒCƒ€ƒAƒEƒgŽžŠÔ‚ð1ms‚Æ‚©‚É‚·‚ê‚ÎA99.9%ŽÀ—pã–â‘è–³‚¢‚¾‚낤
> ‚¾‚ªuŠmŽÀv‚É”ñ“¯Šú‚É‚·‚邯‚¢‚¤Ž–‚Ƃ͑S‚­ˆÓ–¡‚ªˆá‚¤

‚¨‘Ou”ñ“¯Šúv‚̈Ӗ¡‚í‚©‚Á‚Ä‚éH ƒ^ƒCƒ€ƒAƒEƒgŽžŠÔ‚Í”ñ“¯Šú‚Æ‚ÍˆêØŠÖŒW‚È‚¢‚¼
setTimeout()‚Íí‚ɃR[ƒ‹ƒoƒbƒN‚ð”ñ“¯Šú‚ÉŽÀs‚·‚é
‚½‚¾‚µƒR[ƒ‹ƒoƒbƒN‚ªŽÀs‚³‚ê‚é‚܂ł̎žŠÔ‚ÍŽw’肵‚½‚Æ‚¨‚è‚É‚È‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚¾‚¯‚¾
“Á‚ɃlƒXƒg‚µ‚½ŒÄ‚Ño‚µ‚Å‚Í0`3ms‚ðŽw’肵‚Ä‚àÅ’á4ms‚͑҂½‚³‚ê‚é(ã‚ÌŽd—l‚É‘‚¢‚Ä‚ ‚é)
‚¾‚ªí‚É”ñ“¯Šú‚¾

66 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:36:20.18 ID:xBMPeqox.net]
>>60
> ‘¼‚Í“ú–{Œê‚ªˆÓ–¡•s–¾

‚¨ŒÝ‚¢‚É‚Èw ‚Å‚àJS‚̃R[ƒh‚Í•ª‚©‚Á‚½‚¾‚ëH
‚¾‚©‚炨‘O‚ªŒ¾‚¢‚½‚¢‚±‚Æ‚àƒR[ƒh‚ÅŽ¦‚µ‚Ä‚­‚ê‚Á‚ĉ½“x‚àŒ¾‚Á‚Ä‚é‚킯‚¾
‚È‚ñ‚ŃR[ƒh‚Å‘‚©‚È‚¢‚ñ‚¾H

> Promise.resolve(true).then(function(v) {
> @throw new Error('then'); © ‚±‚±‚ŃfƒoƒbƒK‚ªƒuƒŒ[ƒN‚·‚é
> });

‚»‚ꂾ‚¯‚¾‚Æ"Pause On Caught Exceptions"‚ð—LŒø‚É‚µ‚Ă邿‚¤‚É‚µ‚©Œ©‚¦‚È‚¢‚È
‚»‚ÌꇃuƒŒ[ƒN‚·‚é‚Ì‚Í“à‘ PromiseˆêØŠÖŒW‚È‚¢‚©‚ç‚È
catch()‚µ‚Ä‚éƒP[ƒX‚ł͂ǂ¤‚È‚ñ‚¾H ƒuƒŒ[ƒN‚µ‚¿‚Ⴄ‚ñ‚¶‚á‚Ë[‚ÌH
>>59‚ÌPromise.reject()”łłàƒuƒŒ[ƒN‚·‚é‚Ì‚©H ‚µ‚È‚¢‚ñ‚¶‚á‚Ë[‚ÌH

> ƒAƒz‚È‚¨‘O‚Í‚±‚ê‚Å‚à—‰ðo—ˆ‚È‚¢‚ÆŽv‚¤‚ªA‰´‚Í‚±‚êˆÈãà–¾‚µ‚È‚¢

‚»‚ꂱ‚»•‰‚¯É‚µ‚Ý‚¾‚ëw
u‚µ‚È‚¢v‚¶‚á‚È‚­‚Äu‚Å‚«‚È‚¢v‚ñ‚¶‚á‚Ë[‚ÌH

> > node‚Å‚ÍsetInterval()‚Å’èŠú“I‚ɃƒOo—Í‚·‚ê‚΃fƒoƒbƒK‚Ì•K—v«‚Í’á‚¢
> •³‚Ý‚½‚¢‚È•‰‚¯É‚µ‚Ý‚·‚ñ‚È‚æw

ŒJ‚è•Ô‚·‚¯‚Ç‚±‚±‚̓T[ƒoƒTƒCƒhJSƒXƒŒ‚È‚ñ‚Å‚È
“®‚©‚µ‚Á‚ςȂµ‚̃T[ƒo‚ł̓ƒMƒ“ƒO‚µ‚Ä’²‚ׂé•û‚ªŠî–{‚È‚ñ‚¾‚æ
‚Ô‚Á‚¿‚Ⴏ‚±‚̃XƒŒ‚Å‚àNode‚ŃfƒoƒbƒK•’iŽg‚¢‚µ‚Ă郄ƒc‚Ì•û‚ª­””h‚¶‚á‚ËH
‘¼‚Ìl‚Ç‚¤‚æH

67 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:38:49.17 ID:xBMPeqox.net]
>>61
> ƒfƒoƒbƒK‚̃fƒtƒHÝ’è‚ł͈ù‚Ýž‚Ü‚ê‚Ä–³”½‰ž‚¾
> ‚³‚ñ‚´‚ñƒPƒ`‚‚¯‚Ă銄‚ɂ͂»‚ñ‚ÈŠÈ’P‚ÈÝ’è‚à•ª‚©‚ç‚ñ‚©

‚í‚©‚ç‚ñ‚È
—Š‚Þ‚©‚狳‚¦‚Ä‚­‚ê‚æ
ø‚邿‚è­‚È‚¢•¶Žš”‚ÅI—¹‚·‚邾‚ë

> ‚½‚¾AŒƒ‚µ‚­ƒXƒŒƒ`‚ÈŽ–‚È‚ñ‚Å–³—‚à‚È‚¢‚©‚ç‚»‚ë‚»‚ë–Ù‚Á‚Ä‚­‚ê

‰½‚ð¡Xw
>>55‚Æ‚©‘¼‚Ìl‚à‹»–¡‚ ‚é‚©‚à‚µ‚ê‚È‚¢‚¾‚ë
‚»‚ñ‚ÈŠÈ’P‚ÈÝ’è‚Ȃ炳‚Á‚³‚Æ‘‚¢‚Ä‚­‚ê‚æ



68 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:41:57.54 ID:gHiAPMtv.net]
>>62
This API does not guarantee that timers will run exactly on schedule.
‚Á‚Ä‘‚¢‚Ä‚ ‚é
‚¢‚ÂŽÀs‚³‚ê‚é‚©•ÛØ‚µ‚ĂȂ¢‚¶‚á‚ñ
ã‚Ì•û‚Ìa += 1;‚ðŽÀs‚·‚é‚܂łÉ100ms‚ÌŽžŠÔ‚ªŠ|‚©‚Á‚½‚Æ‚·‚邯A‚»‚Ì‘O‚ÉŽÀs‚³‚ê‚é‰Â”\«‚ª‚ ‚é

69 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:57:22.85 ID:gHiAPMtv.net]
ÌWebkit‚©Firefox‚ÌPromise‚ÌŽÀ‘•‚ðŒ©‚½Žž‚ÉA‚±‚ê‚Å”ñ“¯Šú‚É‚µ‚Ä‚ñ‚Ì‚©‚ÆŽv‚Á‚½Ž–‚ª‚ ‚Á‚½‹C‚ª‚·‚é‚©‚ç
‚Ƃ肠‚¦‚¸ƒ\[ƒX‚ð‚ ‚½‚Á‚½‚݂邩‚ç‘Ò‚Á‚Ä‚ë
‚»‚ê‚Å‘S‚Ä‰ðŒˆ‚¾
ƒ\[ƒX‚𗎂Ƃ·‚ɂ͖Œƒ‹ê’ƒŽžŠÔŠ|‚©‚邵Aƒuƒ‰ƒEƒU‚Å’T‚·‚É‚µ‚Ä‚àŽžŠÔ‚ªŠ|‚©‚é

> ‚í‚©‚ç‚ñ‚È
> —Š‚Þ‚©‚狳‚¦‚Ä‚­‚ê‚æ
ƒfƒxƒƒbƒp[ƒc[ƒ‹‚ðo‚µ‚Ĉê”Ô‰E‚É‚ ‚镊ۂÉc“ñdü‚ÌPause on exceptions‚ð‰Ÿ‚µ‚Æ‚¢‚ÄƒŠƒ[ƒh‚¾‚æ

70 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:59:55.31 ID:xBMPeqox.net]
>>65
> ‚¢‚ÂŽÀs‚³‚ê‚é‚©•ÛØ‚µ‚ĂȂ¢‚¶‚á‚ñ

‚»‚ꉴ‚ª‘‚¢‚½

> ‚½‚¾‚µƒR[ƒ‹ƒoƒbƒN‚ªŽÀs‚³‚ê‚é‚܂ł̎žŠÔ‚ÍŽw’肵‚½‚Æ‚¨‚è‚É‚È‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚¾‚¯‚¾

‚Ì‚±‚Æ‚È

> ã‚Ì•û‚Ìa += 1;‚ðŽÀs‚·‚é‚܂łÉ100ms‚ÌŽžŠÔ‚ªŠ|‚©‚Á‚½‚Æ‚·‚邯A‚»‚Ì‘O‚ÉŽÀs‚³‚ê‚é‰Â”\«‚ª‚ ‚é

‚»‚̉”\«‚͂Ȃ¢‚ñ‚¾‚æ
ƒXƒeƒbƒv‚Ì10‚ÅƒŠƒ^[ƒ“‚µ‚½uŒãvAŽc‚è‚̃Xƒeƒbƒv‚Í•À—ñ‚ÉŽÀs‚³‚ê‚é‰Â”\«‚ª‚ ‚é
‚»‚̈ê‚‚̃Xƒeƒbƒv14‚ŃR[ƒ‹ƒoƒbƒN‚ðŽÀs‚·‚éƒ^ƒXƒN‚ªƒLƒ…[‚É“ü‚ê‚ç‚ê‚é
ƒ^ƒXƒN‚̓Lƒ…[‚É“ü‚ê‚ç‚ê‚邾‚¯‚ÅŽÀs‚Í‚³‚ê‚È‚¢
‚»‚µ‚Ä‚»‚̃^ƒXƒN‚ªƒLƒ…[‚©‚çŽæ‚èo‚³‚ê‚ÄŽÀs‚³‚ê‚é‚̂ͧŒä‚ªƒCƒxƒ“ƒgƒ‹[ƒv‚É–ß‚Á‚½Œã‚¾
‚¨‘O‚ÌŒ¾‚¤a += 1;‚ÌŽÀs‚ªI‚í‚ç‚È‚¢ŒÀ‚觌䂪ƒCƒxƒ“ƒgƒ‹[ƒv‚ɖ߂邱‚Ƃ͂Ȃ¢
‚¾‚©‚çsetTimeout()‚̓^ƒCƒ€ƒAƒEƒgŽžŠÔ‚ÉˆêØŠÖŒW‚È‚­í‚É”ñ“¯Šú‚¾
ÚׂÍ"14. Queue the task task."‚ÌƒŠƒ“ƒNæ‚ðŒ©‚Ä‚­‚ê

‚»‚ñ‚ȓ‚­l‚¦‚È‚­‚Ä‚àƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚È‚ñ‚¾‚©‚ç‚í‚©‚è‚»‚¤‚È‚à‚ñ‚¾‚ªw

71 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:14:54.50 ID:KFlyuGQs.net]
>>67
> ‚»‚µ‚Ä‚»‚̃^ƒXƒN‚ªƒLƒ…[‚©‚çŽæ‚èo‚³‚ê‚ÄŽÀs‚³‚ê‚é‚̂ͧŒä‚ªƒCƒxƒ“ƒgƒ‹[ƒv‚É–ß‚Á‚½Œã‚¾
ƒCƒxƒ“ƒgƒ‹[ƒv‚É–ß‚é‚Ì‚ÍsetTimeout()‚Ì’¼Œã‚̈ʒu‚¾ (a += 1;‚Ì‘O)

72 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:22:50.21 ID:oSSj0EiH.net]
>>66
> ƒfƒxƒƒbƒp[ƒc[ƒ‹‚ðo‚µ‚Ĉê”Ô‰E‚É‚ ‚镊ۂÉc“ñdü‚ÌPause on exceptions‚ð‰Ÿ‚µ‚Æ‚¢‚ÄƒŠƒ[ƒh‚¾‚æ

‚»‚ꕊۂÉc“ñdü‚ð‰Ÿ‚µ‚Äo‚Ä‚­‚éƒpƒlƒ‹‚É‚ ‚éƒ`ƒFƒbƒNƒ{ƒbƒNƒX‚Ì‚±‚Æ‚¾‚æ‚ÈH
‚»‚êuPause on exceptionsv‚¶‚á‚È‚­‚ÄuPause On Caught Exceptionsv‚¾‚æ‚ÈH
‰´‚ª‚±‚ê‚܂ő‚¢‚½«‘S‘R“Ç‚ñ‚łȂ©‚Á‚½‚Ì‚©wwwwww

>>58
> ‚Ü‚¸‚ÍŠm”F‚¾‚ªAChrome‚Å"Pause On Caught Exceptions"‚ÍŠO‚µ‚Ă邿‚ÈH
>>63
> ‚»‚ꂾ‚¯‚¾‚Æ"Pause On Caught Exceptions"‚ð—LŒø‚É‚µ‚Ă邿‚¤‚É‚µ‚©Œ©‚¦‚È‚¢‚È

"Pause On Caught Exceptions"‚Á‚Ä—LŒø‚É‚·‚邯

try {
@throw new Error('err'); //‚±‚±‚Å‚àƒuƒŒ[ƒN‚·‚éI
} catch (e) {
@console.log('handled');
}

‚±‚ñ‚Ȃ̂܂ŃuƒŒ[ƒN‚µ‚¿‚Ⴄ‘㕨‚Ȃ킯‚æ
“à‘ Promise‚ª‚Ç‚¤‚Æ‚©ˆêØŠÖŒW‚È‚­AŽ©‘O‚̃‰ƒCƒuƒ‰ƒŠ‚¾‚낤‚ª‚È‚ñ‚¾‚낤‚ª
‚Ç‚±‚Å‚à—áŠOƒXƒ[‚·‚邯ƒuƒŒ[ƒN‚·‚éƒIƒvƒVƒ‡ƒ“‚Ȃ킯‚¶‚á‚ñ
“à‘ Promise‚łȂ¢‚ÆŽÀ‘•‚Å‚«‚È‚¢‚Æ‚©‚Á‚Ęb‚Ɖ½‚ÌŠÖŒW‚È‚¢‚æ‚ÈH

>>24
> > Eˆù‚Ýž‚܂ꂽ—áŠO‚ðƒfƒoƒbƒOo—ˆ‚é
> ‚»‚è‚áAƒ‰ƒCƒuƒ‰ƒŠ“à•”‚Ìcatch“à‚ɃuƒŒ[ƒNƒ|ƒCƒ“ƒg‚𒣂Á‚đ҂¿‚©‚Ü‚¦‚Ä‚¢‚ê‚Î
> ‰Â”\‚¾‚ª–ˆ‰ñ‚»‚ñ‚ÈŽ–‚·‚ñ‚Ì‚©H‚¢‚â‚·‚é‚킯‚È‚¢
> ‚»‚µ‚Ä—áŠO‚ªƒXƒ‹[‚³‚ê‚ĉ½‚à‹N‚«‚È‚¢

ª‚Ìà–¾‚Í"Pause On Caught Exceptions"‚Æ–µ‚‚µ‚Ă邱‚Ƃ͂킩‚é‚©H

73 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:29:21.55 ID:oSSj0EiH.net]
>>68
> ƒCƒxƒ“ƒgƒ‹[ƒv‚É–ß‚é‚Ì‚ÍsetTimeout()‚Ì’¼Œã‚̈ʒu‚¾ (a += 1;‚Ì‘O)
‚ÍH ‚¦H ‚¦H

setTimeout(function() {
@...
}, 0);
// (a)
a += 1;

‚±‚¤‚¢‚¤ƒR[ƒh‚Å(a)‚̈ʒu‚ŃCƒxƒ“ƒgƒ‹[ƒv‚ɖ߂邯Žv‚Á‚Ä‚é‚킯H
‚¢‚â‚¢‚â‚¢‚âA‚¢‚­‚ç‚È‚ñ‚Å‚à‚»‚ê‚ÍBBB ‚ [

74 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:39:58.23 ID:KFlyuGQs.net]
>>69
‚ ‚Á‚»‚¤A‰´‚ÍFirefox‚µ‚©Žg‚Á‚ĂȂ¢‚©‚çChrome‚ÌŽ–‚Í‚»‚ê‚Å‚¢‚¢‚ÆŽv‚Á‚½‚æ
Firefox‚¾‚Æ
try {
@throw new Error('err'); // ‚±‚±‚ŃuƒŒ[ƒN‚µ‚È‚¢‚Å
} catch (e) {
@console.log('handled');
}
Promise.resolve(true).then(function(v) {
throw new Error('then'); // ‚±‚±‚ŃuƒŒ[ƒN‚·‚é
});
‚ɂȂé
‚à‚Í‚âV8‚Æ‚àŠÖŒW–³‚­‚Ĉ«‚¢‚Èw

75 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:44:09.33 ID:KFlyuGQs.net]
>>69
Chrome‚ÅPromise‚ðƒuƒŒ[ƒN‚³‚¹‚é•û–@‚Í–³‚¢‚Ì‚©‰½‚ç‚©‚Ì•û–@‚ª‚ ‚é‚Ì‚©’²‚ׂè‚­‚æ

76 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:48:43.95 ID:oSSj0EiH.net]
>>72
•ʂɂ¢‚¢‚æAŠJ”­”łŎæ‚è‘g‚ñ‚ł邩‚ç
https://code.google.com/p/v8/issues/detail?id=3093
https://code.google.com/p/chromium/issues/detail?id=393913

77 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 02:04:56.21 ID:KFlyuGQs.net]
‰´‚ªŠ¨ˆá‚¢‚µ‚Ä‚¢‚½
Promise‚ÌŽd—l“I‚ɃCƒxƒ“ƒgƒ‹[ƒv‚ª1‰ñˆÈã”­¶‚·‚鎖‚ð•ÛØ‚µ‚È‚¢‚Æ‚¢‚¯‚È‚¢‚©‚ç
setTimeout()‚ł͊®‘S‚ł͂Ȃ¢‚Æ‚¢‚¤‚±‚Æ‚¾‚È
‚Í‚¢‚¨‚µ‚Ü‚¢



78 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 05:03:53.45 ID:D9r7QrzV.net]
‚Ü‚¾‚â‚Á‚Ä‚ñ‚Ì‚©c

79 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 15:07:59.00 ID:LUJGb7UT.net]
‚´‚Á‚Ɠǂñ‚Å‚½‚çA
ƒCƒxƒ“ƒgƒ‹[ƒv”ñ“¯Šú
‚Á‚Ęb‚µ‚Ä‚é‚Ì‚©‚ÆŽv‚Á‚½(Î)
‰½‚ɑ΂µ‚Ă̓¯Šú‚©‚É‚à‚æ‚邾‚낤‚¯‚Ç‚Ë

80 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 19:05:27.58 ID:oSSj0EiH.net]
>>76
JS‚Ì¢ŠE(“Á‚ɃR[ƒ‹ƒoƒbƒN—‚Ý)‚Å“¯ŠúE”ñ“¯Šú‚Æ‚¢‚Á‚½‚ç

function foo(function callback() {
@... //(1)
});
... //(2)

(1)->(2)‚ÅŽÀs‚³‚ê‚é‚Ì‚ª“¯Šú (Array.forEach()‚Æ‚©)
(2)->(1)‚ÅŽÀs‚³‚ê‚é‚Ì‚ª”ñ“¯Šú (setTimeout()‚Æ‚©)

uEffective JavaScriptv‚Ì€–Ú67‚Æ‚©ˆÈ‰º‚Æ‚©ŽQÆ

blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/

81 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 20:55:50.08 ID:Xd0L/8rv.net]
>>16
> uPromise‚ð—‰ð‚µ‚È‚¢‚Æ”ñ“¯Šú‚̃ƒŠƒbƒg‚ð¶‚©‚¹‚È‚¢v‚Á‚Ă̂Í
> •\‘w‚µ‚©—‰ð‚µ‚ĂȂ¢‚Á‚ÄØ‚¾‚í‚È

^—‚¾‚Á‚½‚È

82 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 22:25:56.23 ID:QIYM1JY4.net]
JavaScript‚̓Vƒ“ƒOƒ‹ƒXƒŒƒbƒh‚¾‚¯‚Ç
Node‚ÌIO‚Í”ñ“¯ŠúA‚‚܂è•ʃXƒŒƒbƒh‚Ås‚í‚ê‚é

83 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 22:40:06.78 ID:oSSj0EiH.net]
>>

84 –¼‘OF78
‚Ü‚Ÿ‚Ü‚Ÿw

>>79
•ʃXƒŒƒbƒh‚Ȃ̂̓tƒ@ƒCƒ‹‚¾‚¯‚Ńlƒbƒgƒ[ƒN‚âƒpƒCƒv‚̓ƒCƒ“ƒXƒŒƒbƒh‚¾‚æ
Windows‚ł̓tƒ@ƒCƒ‹‚àƒƒCƒ“ƒXƒŒƒbƒh‚©‚à‚µ‚ê‚ñ
[]
[‚±‚±‰ó‚ê‚Ă܂·]

85 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 23:38:13.20 ID:KFlyuGQs.net]
>>78
‚½‚¾ø‚Á‚Ă邾‚¯‚¾‚ë
——R‚ðq‚ׂæ
‚·‚®‚É——R‚ðq‚ׂç‚ê‚È‚¯‚ê‚΂½‚¾‚Ìø‚è‚Æ”F’è‚·‚é (‚½‚Ô‚ñ–³—‚¾‚낤‚¯‚Ç)

86 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 23:44:03.55 ID:KFlyuGQs.net]
>>80
‰½‚ª‚Ü‚Ÿ‚Ü‚Ÿ‚¾‚æw
‚¨‘O‚à‚Ç‚¤‚¹–³”\‚È‚ñ‚¾‚ë
‚Ƃ肠‚¦‚¸‚·‚®‚É——R‚ðŒ¾‚Á‚Ä‚Ý‚ë‚æAŒ¾‚¦‚È‚¢‚­‚¹‚É

87 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/07(…) 14:59:21.93 ID:R3Z2NWM/.net]
>>80
‚»‚ñ‚ÈŽ––³‚¢‚¾‚ë
ƒƒCƒ“ƒXƒŒƒbƒh‚Å‚â‚éˆÓ–¡‚È‚¢‚µ



88 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/07(…) 20:07:44.58 ID:OxX2nn0Y.net]
>>83
‹t‚Él‚¦‚é‚ñ‚¾
ƒlƒbƒg‚âƒpƒCƒv‚̓mƒ“ƒuƒƒbƒLƒ“ƒOI/O‚Å‘½d‰»‚Å‚«‚é‚©‚çƒ[ƒJƒXƒŒƒbƒh‚Å‚â‚éˆÓ–¡‚Ì•û‚ª‚È‚¢
Unix‚̃tƒ@ƒCƒ‹I/O‚Í‚»‚ꂪ‚Å‚«‚È‚¢‚©‚çƒ[ƒJƒXƒŒƒbƒh‚ŃuƒƒbƒLƒ“ƒOI/O‚¹‚´‚é‚𓾂Ȃ¢
ˆÈ‰º‚ÌNote‚É‚à‚»‚¤‚¢‚¤‚±‚Æ‚ª‘‚¢‚Ä‚ ‚é

nikhilm.github.io/uvbook/filesystem.html

ƒ\[ƒX‚¾‚ƃtƒ@ƒCƒ‹Œn‚Ì‘€ì(839s–Ú`)‚݂͂ñ‚Ȉȉº‚ÌPOSTƒ}ƒNƒ‚ðŽg‚Á‚Ä‚é

https://github.com/libuv/libuv/blob/v1.x/src/unix/fs.c#L97

‚»‚Ì’†‚Ìuv__work_submit()‚ªƒ[ƒJƒXƒŒƒbƒh‚Ɉ—‚ðˆË—Š‚·‚éŠÖ”
ƒlƒbƒg‚âƒpƒCƒv‚ł͂»‚ñ‚È‚±‚Æ‚µ‚ĂȂ¢

Úׂð’m‚肽‚¯‚ê‚΃uƒƒbƒLƒ“ƒOI/OAƒmƒ“ƒuƒƒbƒLƒ“ƒOI/OA
‘½d‰»A”ñ“¯ŠúI/O‚Ƈ‚Éà–¾‚µ‚Ä‚é‰ðà‚ð“ǂނƂ¢‚¢
‚»‚µ‚ÄUnix‚ł͖{•¨‚Ì”ñ“¯ŠúI/O‚ÍŽ–ŽÀã‚È‚¢‚±‚Æ‚ð’m‚éw

89 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:release age [2015/01/13(‰Î) 15:11:04.11 ID:LHG94Mlu.net]
‚‚¢‚É–{“ú io.js 1.0.0 ‚ª³Ž®ƒŠƒŠ[ƒXB
v8ƒGƒ“ƒWƒ“‚Ì‚¨‚©‚°‚Å node ‚æ‚è‘å•‘¬“xŒüãB

–{“ú‚Í io.js ‚Ì’a¶“ú‚Å‚ ‚邯‚Æ‚à‚É node ‚Ì–½“ú‚Æ‚à‚È‚è‚Ü‚µ‚½ÅÑÅÑ

90 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/14(…) 08:06:57.60 ID:EnBoJmyV.net]
2‚¿‚á‚ñ‚à‚¨•Ê‚ê‚Ì“ú‚ª‹ß‚¢‹C‚ª‚·‚é

91 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/14(…) 22:24:56.52 ID:knoTvZIn.net]
CPU‚ðŽg‚¤ˆ—‚Ì‘¬“x‚ÍŠm‚©‚ÉŒüサ‚Ä‚¢‚é
‚ªAnode-gyp‚ªƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ_ƒEƒ“ƒ[ƒho—ˆ‚¸ƒrƒ‹ƒh‚ÉŽ¸”s‚µ‚½‚è
v8‚ÌAPI•ÏX‚Ånan‚ªƒRƒ“ƒpƒCƒ‹Ž¸”s‚µ‚½‚è
‚¿‚å‚Á‚Æ¢‚Á‚½

node-gyp‚͂ǂ±‚É‘Îô”Å‚ª‚ ‚é‚©•ª‚©‚ç‚¸Ž©•ª‚Å‚¿‚Ü‚¿‚܃tƒ@ƒCƒ‹–¼‚𒼂µ‚½
nan‚Í–{‰ÆƒŠƒ|ƒWƒgƒŠ‚É‘Îô”ł̃uƒ‰ƒ“ƒ`‚ ‚è

92 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/14(…) 22:26:05.98 ID:knoTvZIn.net]
io.js‚Ì‚±‚Æ‚Ë

ŒãAPath’ljÁ‚·‚邿‚¤‚ÉŽw’肵‚ăCƒ“ƒXƒg[ƒ‹‚µ‚½‚‚à‚è‚Ȃ̂ɉ½ŒÌ‚©’ljÁ‚³‚ê‚ĂȂ¢

93 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/16(‹à) 14:43:45.88 ID:sXdFjxSo.net]
nodejsAJavascript‚ÉÚ‚µ‚­‚È‚¢‚¯‚ÇB
Šî–{‚ª”ñ“¯Šú‚Á‚Ă̂ª–Ê“|B
“¯Šú‚ÌJavascript‚Ƃ͕ʕ¨‚¾B
“¯Šú‚̃\[ƒXƒR[ƒh‚É“K‡‚³‚¹‚½‚¢B
‚±‚ê‚͂ǂ¤‚â‚Á‚½‚çŽÀŒ»‚Å‚«‚Ü‚·‚©B download‚ł̓¯Šúˆ—B


data = download("www.google.co.jp/");
data‚ɑ΂·‚鈗;

94 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/16(‹à) 14:55:27.50 ID:sXdFjxSo.net]
‚±‚ñ‚Ȃӂ¤‚É‚â‚Á‚Ä‚à‘Ò‚¿‚ªo—ˆ‚¸B


url = "www.google.co.jp/";
data = download(url);
console.log(data);


function download(url) {
data = undefined;
request = require('superagent');
request.get(url)
.end( function(resp){ data = resp.res.text; });
for(i=0; i<10 && data==undefined; i++) setTimeout(null, 500);
return data;
}

95 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/16(‹à) 15:07:39.68 ID:WEjV0wIz.net]
“¯Šú‚ÌJavascript‚Á‚ăŒƒA‚¾‚È
generator‚Å‹[Ž—“I‚É‚â‚é‚©async/await‚ð‘Ò‚Ä

96 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/16(‹à) 17:26:44.61 ID:x/KvFbcS ]
[‚±‚±‰ó‚ê‚Ă܂·]

97 –¼‘OF.net mailto: >>90
‚±‚ñ‚È‚ñ‚Å‚¢‚¢‚ñ‚¶‚á‚È‚¢H

var httpsync = require('httpsync');

var url = "http://www.google.co.jp/";

var req = httpsync.get(url);
var res = req.end();
var data = res.data.toString();

console.log(data);
[]
[‚±‚±‰ó‚ê‚Ă܂·]



98 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/16(‹à) 17:44:25.51 ID:TPIs3k36.net]
JavaScript‚Å‘å—Ê‚ÌƒŠƒNƒGƒXƒg‚ðˆ—‚·‚é‚È‚ç
Žg‚¤‚ׂ«‚̓ƒCƒ“ƒXƒŒƒbƒh‚ðƒuƒƒbƒN‚·‚铯ŠúIO‚È‚ñ‚©‚¶‚á‚È‚­‚Ä
“–‘R”ñ“¯ŠúIO‚¾‚æ‚È

99 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/16(‹à) 17:52:01.40 ID:+cZ2zonb.net]
‚ɂ킩

100 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/16(‹à) 20:23:30.77 ID:lUd0kLGp.net]
–{‰Æ‚̃lƒXƒP‚ªÅ‰‚Éì‚Á‚½ƒT[ƒoƒTƒCƒhjavascript‚Í“¯Šú‚Ń}ƒ‹ƒ`ƒXƒŒƒbƒh‚¾‚Á‚½

101 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/16(‹à) 22:01:52.67 ID:TPIs3k36.net]
node‚ÌŒöŽ®‚ª“¯Šú‚ƃXƒŒƒbƒh‚ðŽg‚Á‚½ƒvƒƒOƒ‰ƒ€‚ð‚±‚«‰º‚낵‚Ă邼
Thread-based networking is relatively inefficient and very difficult to use.
‚Æ‚©

nodejs.org/about/

102 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/16(‹à) 22:55:28.32 ID:gHXWvVDx.net]
‚»‚è‚áʼn‚̃T[ƒoƒTƒCƒhJS‚È‚ñ‚ĂقƂñ‚Ç20”N‘O‚̑㕨‚¾‚©‚çw
‚±‚ñ‚Ȃ̂ ‚é‚©‚ç‰É‚ȃ„ƒc‚Í•·‚¢‚Ă݂ê(ES7‚Á‚Ä‚±‚Æ‚Íasync/await‚¾‚낤‚¯‚Ç)
https://player.fm/series/lately-in-javascript-podcast/asynchronous-javascript-without-callbacks-in-ecmascript-7-lately-in-javascript-podcast-episode-50

103 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/18(“ú) 09:56:30.56 ID:5wNJLYNH.net]
promiseŽg‚¤‚Æ‚¢‚½‚炦‚¦‚ñ‚â

104 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/18(“ú) 17:21:38.41 ID:ckxewJLG.net]
promise‚¶‚ᓯŠú‚Á‚Û‚­‘‚¯‚È‚¢

105 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/18(“ú) 21:30:04.25 ID:ohcYLEp3.net]
perl‚É‹A‚낤

106 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/19(ŒŽ) 13:14:20.73 ID:KroxEeJe.net]
StackOverFlow‚̃XƒRƒA‚ðã‚°‚Æ‚­‚ÆA‰½‚©‚¢‚¢‚±‚Æ‚ª‚ ‚é‚©‚à‚µ‚ê‚È‚¢B

wy–|–óz‘½Ží‘½—l‚Ȋ©‚猩‚éƒvƒƒOƒ‰ƒ}‚ÌŽsꉿ’lx
postd.cc/how-much-do-you-cost/

107 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/19(ŒŽ) 15:04:48.09 ID:ys/y/3Zn.net]
‚­‚¾‚ç‚Ë‚¥‚—



108 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/19(ŒŽ) 15:22:29.17 ID:CuAQcBp8.net]
2ch‚ÅŽ¿–âƒXƒŒ‚ÌZ–¯‚â‚Á‚ĉñ“š‚µ‚Ä‚Ü‚·I(·Ø¯
‚Ý‚½‚¢‚È–Êڂ̃lƒ^AA‚ª‚ ‚Á‚½‚¯‚ÇŽ—‚½‚悤‚È‚à‚ñ‚¾‚È

109 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/19(ŒŽ) 15:25:22.24 ID:KroxEeJe.net]
2‚¿‚á‚ñ‚à‰ñ“šŽÒ‚Ƀ|ƒCƒ“ƒg‚­‚ê‚È‚¢‚©‚È

110 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/20(‰Î) 11:00:22.26 ID:OQruBfwA.net]
”ñ“¯Šú‚¾‚ƃfƒoƒbƒO‘å•Ï‚¶‚á‚È‚¢‚©‚ÈB
ƒuƒŒ[ƒNƒ|ƒCƒ“ƒg‚ÅŽ~‚Ü‚Á‚Ä‚éŠÔ‚àsetInterval‚Í— ‚Å“®‚¢‚¿‚á‚Á‚ÄA‘Ò‚¿s—ñ‚ªo—ˆ‚½‚è‚·‚é‚Å‚µ‚åB

111 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/20(‰Î) 21:07:01.09 ID:GWZYH+JO.net]
ƒ[ƒŠƒ“ƒOƒŠƒXƒg‚Ý‚½‚ç0.11.15‚ªo‚é‚炵‚¢‚¯‚ÇŽg‚í‚ê‚Ä‚¢‚év8‚ª‚ƂĂàŒÃ‚¢

112 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/21(…) 00:17:31.01 ID:n3ucrSzY.net]
>>106
‚»‚ê‚àip.js‚ªƒtƒH[ƒN‚µ‚½——R‚̈ê‚Â

113 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/21(…) 00:17:39.27 ID:pMVsv6gb.net]
>>106
‚»‚ê‚àip.js‚ªƒtƒH[ƒN‚µ‚½——R‚̈ê‚Â

114 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/21(…) 03:02:39.08 ID:1UCwofHM.net]
>>106
‚»‚ê‚àip.ry(

115 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/21(…) 13:36:21.00 ID:W+aNuk6y.net]
ƒŒƒX‚ðƒtƒH[ƒN

116 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/21(…) 17:08:05.52 ID:VHJhqEss.net]
‰½H‚Ü‚½•ʂ̂ªƒtƒH[ƒN‚µ‚½‚ÌH

117 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/21(…) 17:19:04.46 ID:PfvOP5lB.net]
node-gyp‚Íio.js 1.0.3‚ł͓®‚©‚È‚¢‚¯‚Çpangyp‚Í“®ì‚·‚é‚炵‚¢



118 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:age [2015/01/22(–Ø) 21:04:56.44 ID:lh8u5jbd.net]
lodash 3.0 ƒŠƒŠ[ƒXŠÔ‹ßI

https://github.com/lodash/lodash
3.0-pre‚©‚ç-pre‚ªŠO‚ê‚Ü‚µ‚½I


ƒXƒŒ‚ª‘½‚·‚¬‚Ăǂ±‚É‘‚¯‚΂¢‚¢‚©‚í‚©‚ç‚È‚¢‚Ì‚Å
ŠÖ˜AƒXƒŒ‚·‚ׂĂɃ}ƒ‹ƒ`ƒ|ƒXƒg‚µ‚Ä‚¢‚Ü‚·Bm(__)m

119 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/22(–Ø) 21:47:19.08 ID:IMAN2WtB.net]
Chrome 40(v8 3.30)‚ÌPromise‚̓nƒ“ƒhƒŠƒ“ƒO‚³‚ê‚ĂȂ¢reject‚̃fƒoƒbƒO‚ªƒTƒ|[ƒg‚³‚ê‚Ä>>59‚Å‘‚¢‚½‚悤‚ɂȂÁ‚½
‚µ‚©‚µio.js 1.0.3(v8 4.1)‚Ì‘gžƒfƒoƒbƒK‚Í–¢‘Ήž

120 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 12:41:14 ]
[‚±‚±‰ó‚ê‚Ă܂·]

121 –¼‘OF.68 ID:iNKYdZ74.net mailto: io.js‚àvert.x‚̂悤‚ɈꎞŠú˜b‘è‚ɂȂ邾‚¯‚Ånode.js‚Ì‘ã‘ւɂ͂Ȃç‚È‚¢‚æ []
[‚±‚±‰ó‚ê‚Ă܂·]

122 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 16:47:56.23 ID:CFiT31YS.net]
‚È‚ñ‚Åvert.x‚ªo‚Ä‚­‚é‚ñ‚¾‚æA‘S‘R•Ê•¨‚¶‚á‚ñ
node.js‚Æio.js‚Í–¼‘O‚ÆƒŠƒ|ƒWƒgƒŠ‚ªˆá‚¤‚¾‚¯‚ŃR[ƒh‚àŠJ”­ŽÒ‚à‚Ù‚Ú“¯‚¶‚¾‚¼
oracle‚ÌŽx”z‚ðŒ™‚Á‚Ähudson‚©‚çƒtƒH[ƒN‚µ‚½jenkins‚ɋ߂¢

123 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 19:35:57.38 ID:Ztpp331L.net]
«”\‚Å‚Í‚à‚¤io.js‚ªˆ³Ÿ‚Ý‚½‚¢‚¾‚æB
‚ ‚Æv8‚̃o[ƒWƒ‡ƒ“‚ànode‚͂܂¾3.*‚Ȃ̂Éio.js‚Í‚à‚¤4.*‚Éオ‚Á‚Ä‚éB

124 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 19:50:06.18 ID:raMd+kOH.net]
@@@@@@,,¤¤¤,,,A,,z¤,_,¤A
@@@@ ,rŽOƒ~ÐÐSSÐt,X(ØÐ¤,
@@@@ ƒ~ÆÐØ" Jƒ~¤"JØ"ƒ~Ф>
@@@@ŽOÆ"@@@@@@@@Jƒ~i
@@ ,¤_ƒ~’Ü",,-____@@@@@@,,<¤.
@@ i ĤÐÐ@,r]- ¤M`'ƒj=]A.œcØ.
@@ S,iÊJ.L _,,¤_ @i.;@_,.@M œc'i)
@@@ M¤j,'@ `ß''L:.É i::<¥T) .ʃ“ @@@@@IH
@@@@@i, @ M ,¤/@i_@M`@,r'
@@@,rV'i@ ,r'RA _,r@@/. @
@@ /i:Ĥ;;i, @Ð=_]_-, 'i@/R__
r-]'Li::::Ê;;SA]]-¤@ ƒmL/i:::'iMi]- ¤_
::i' .l:i 'i::::i S;;`]---]'i':/ i¤ 'i::!@i::::i@M
:i'@i:|@!:::l _,r.¤;;;;;,r''LRi. ll::i@i::i@l:::'

125 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 20:13:06.13 ID:CFiT31YS.net]
‚‚©«”\·‚̂قƂñ‚Ç‚Ív8‚̃o[ƒWƒ‡ƒ“‚Ì·‚¾‚ë
io.js = node.js 0.11 + v8 4.1 + ‚æ‚葽‚­‚̃oƒOC³
Žg‚¤‘¤‚Ínode.js 0.12‚ÌŽŸ‚̃o[ƒWƒ‡ƒ“‚©‚ç–¼‘O‚ªio.js‚ɕςí‚é‚­‚ç‚¢‚Ì”Fޝ‚Å‚¢‚¢‚ñ‚¾‚æ

126 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:age [2015/01/23(‹à) 20:42:13.28 ID:YkgE7zny.net]
•´‚ç‚킵‚¢‚Ì‚ÍAio.js‚Í1.0‚Æ‚¢‚¢‚È‚ª‚ç
ŽÀ‘Ô‚Í0.10‚Æ0.11‚ÌŠÔ‚®‚ç‚¢‚È‚ñ‚¾‚æ‚ÈB

0.10‚æ‚è‚©‚Í‹@”\‚ª‘‚¦‚Ä‚¢‚é‚©‚à‚µ‚ê‚È‚¢‚ªA
0.11‚æ‚è‚©‚Í—ò‚Á‚Ä‚¢‚é‚킯‚ÅB

127 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 21:00:22.09 ID:CFiT31YS.net]
>>120
‚»‚è‚áŒë‰ð
io.js‚Ìv1.xƒuƒ‰ƒ“ƒ`‚Ínode.js‚Ìv0.12ƒuƒ‰ƒ“ƒ`‚©‚ç”h¶‚µ‚½‚à‚Ì‚¾
https://github.com/iojs/io.js/issues/218

io.js v1.0‚Ínode.js v0.12‚ƌ݊·‚‚Á‚Ă邵‚¿‚å‚­‚¿‚å‚­ƒ}[ƒW‚à‚³‚ê‚Ä‚é



128 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 21:20:29.05 ID:YkgE7zny.net]
v0.12‚͂܂¾ƒŠƒŠ[ƒX‚³‚ê‚Ä‚¢‚È‚¢‚ñ‚¾‚©‚çA
v0.12‚æ‚è—ò‚Á‚Ä‚¢‚é‚̂͊m‚©‚¾‚ÈB

129 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 21:58:14.56 ID:CFiT31YS.net]
‚¢ ‚Ý ‚Ó

•´‚ç‚킵‚¢‚±‚Æ‚ª‚ ‚邯‚·‚é‚È‚çAio.js‚ÍsemverÌ—p‚ÅŠJ”­”łƈÀ’è”Å‚ð
ƒo[ƒWƒ‡ƒ“‚Å‹æ•ʂł«‚È‚¢‚±‚Æ‚©‚È
¡v1.0.3‚Ü‚Åo‚Ă邪‚±‚ê‚Í‘S•”ŠJ”­”Å‚ÅAˆÀ’è”ł͂½‚Æ‚¦‚Îv1.0.15‚©‚ç‚Ý‚½‚¢‚È‚±‚ƂɂȂé
io.js‚̈À’è”ł͂¨‚»‚ç‚­node.js v0.12‚ªo‚½Œã‚É‚»‚ê‚ðƒ}[ƒW‚µ‚Ä‚©‚烊ƒŠ[ƒX‚³‚ê‚邾‚낤

130 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 22:00:50.56 ID:gqb5Qh0S.net]
ƒxƒ“ƒ`ƒ}[ƒNŒ©‚½‚ª‚½‚¢‚µ‚ĈႢ‚È‚¢‚µnodejs‚̂܂܂ł¢‚¢‚â

131 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 22:05:12.22 ID:YkgE7zny.net]
>>123
semver‚¾‚ÆA1.0‚ª³Ž®”łȂ̂ÅA
0.12‘Š“–‚Ȃ̂É1.0‚ð–¼æ‚Á‚Ä‚¢‚é‚©‚ç
ʼn‚©‚炨‚©‚µ‚¢‚ñ‚¾‚æB

132 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 22:11:14.23 ID:4o3NBFe/.net]
‚È‚ñ‚Å1.0.0-beta‚Æ‚©‚¶‚á‚È‚¢‚ñ‚¾‚ë‚Æ‚©‚ÍŽv‚¤

133 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 22:15:52.01 ID:CFiT31YS.net]
>>125
semver‚Å‚Ípre-release‚ÍMUST‚¶‚á‚È‚­‚ÄMAY‚¾‚µAŽÀ‘•‚ª•sˆÀ’è‚Å‚àAPI‚ðŒÅ’è‚·‚ê‚Î1.0.0‚ð–¼æ‚ê‚邾‚ë
‚Ç‚±‚ª‚¨‚©‚µ‚¢H

134 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 22:17:49.38 ID:CFiT31YS.net]
"-beta"‚ªpre-release‚Ì•”•ª‚È

135 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 22:28:31.93 ID:So6YQ3Pc.net]
‚»‚ñ‚ÈŽ–‚È‚¢‚¤‚ñ‚Ç‚ë‚Ì·‚¾‚æ

136 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 22:43:16.31 ID:YkgE7zny.net]
>>127
‚¾‚©‚çMAY‚¾‚ëH
MAY‚Ƃ͂¢‚¦AŒˆ‚Ü‚Á‚Ä‚¢‚é‚킯‚ÅA
‚»‚ÌŒˆ‚Ü‚Á‚Ă邱‚Æ‚ðˆÓ–¡‚È‚­”j‚é‚̂͂ȂŸB

137 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 22:57:18.12 ID:So6YQ3Pc.net]
‚±‚ñ‚È‚ÉL‚­Žg‚í‚ê‚Ä‚¢‚é‚̂ɉ½‚Å‚¸‚Á‚ƃo[ƒWƒ‡ƒ“0.x‚È‚ñ‚¾YO



138 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 23:02:13.80 ID:CFiT31YS.net]
>>130
•t‚¯‚Ä‚à‚¢‚¢ (MAY)
•t‚¯‚é‚ׂ« (SHOULD)
•t‚¯‚È‚­‚Ă͂Ȃç‚È‚¢ (MUST)
•t‚¯‚Ă͂Ȃç‚È‚¢ (MUST NOT)

MAY‚È‚ñ‚¾‚©‚ç•t‚¯‚È‚­‚ĉ½‚Ì–â‘è‚à‚È‚¢‚µA‰½‚à”j‚Á‚ĂȂ¢
‚¾‚¢‚½‚¢semver‚ÌŽå–Ú“I‚ÍAPI‚̌݊·«‚ðŽ¦‚·‚à‚̂ŎÀ‘•‚̈À’è«‚ðŽ¦‚·‚à‚̂ł͂Ȃ¢

139 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/23(‹à) 23:22:59.99 ID:CFiT31YS.net]
>>131
ˆÀ’è‚·‚邿‚è‘‚­L‚Ü‚Á‚Ä‚µ‚Ü‚Á‚½
Œ³Xv0.12‚ÌŽŸ‚̈À’è”Å‚ªv1.0‚É‚È‚é‚ÆŒ¾‚í‚ê‚Ä‚½‚ñ‚¾‚ªv0.12‚ªo‚È‚¢‚¤‚¿‚Égrunt‚È‚ñ‚©‚ªo‚Ä‚«‚¿‚á‚Á‚½‚©‚çc






[ ‘±‚«‚ð“Ç‚Þ ] / [ Œg‘єŠ]

‘O100 ŽŸ100 ÅV50 £ [ ‚±‚̃XƒŒ‚ðƒuƒbƒNƒ}[ƒNI Œg‘тɑ—‚é ] 2ch‚Ìread.cgi‚Ö
[{” ŋߗ§‚Á‚½ƒXƒŒ•”M‚¢ƒXƒŒˆê—— : {” ŋߗ§‚Á‚½ƒXƒŒ^‹LŽÒ•ʈꗗ]i LÍMjƒ262KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
’S“–:undef