å¦æ ¡çæ´»æ¯ãè¿ã
ãã®è¨äºã¯ N高等学校 Advent Calendar 2017 21æ¥ç®ã®è¨äºã§ã
ãã¿ããªãã®ã§éå»ãæ¯ãè¿ããã¨ã«ãªã£ãã®ã§ããè¨æ¶ãææ§ãªã®ã§æç³»åé ç®æ¡æ¸ãã§å¤§éæã«æ¸ãã¦ããã¾ã
競ããé¢é£ã®ã¿ã«ããäºå®ã ã£ããã©ï¼ãã¼ã¸ãåã¾ããªãã£ãã®ã§å¦æ ¡çæ´»å
¨ä½ãæ¯ãè¿ãã¾ã
æ¬å½ã¯ãã¨ã ãæ¸ãããã£ããã©æç« åã®ç¡ãã«é©ãã
4æ
Né«ææºã¹ã¯ã¼ã«ï¼ã®PHHã«éãå§ãã
ãã¾ãè¨æ¶ã¯ç¡ããPCãå±ããªãã£ããã¨ã¯è¦ãã¦ãã
ããã°ã©ãã³ã°ã¯ãã¾ããããªãã£ãå°è±¡
5æ
æããåºç¤ææ³ãå¦ãã
HTML + CSS + JavaScript ã§ã¹ã©ã¤ãã·ã§ã¼çãªãã¤ãä½ã£ãæ°ããã
jQuery ãæ±ã£ã¦ãããåã¯ä½æ
使ããããåãããªãã£ãã®ã§ä½¿ã£ã¦ããªãã£ãè¨æ¶
é
å»ã«ç·©ãå¦æ ¡ã ã¨æ°ã¥ãã¦ãã¾ã
6æ
Node.js ã使ã£ã¦ãµã¼ãã¼ãµã¤ãã«é¢ããç¥èãå¦ãã æ°ããã
ãããã¸ãã§ã¤ã³ãã©å¨ããåºã¦ããã¨æããå½æã¯ããåãããªãã£ãå°è±¡
DBã¨ãèãã¦ãã¡ã¢å¸³ã«æ¸ãã¦ããã°è¯ããããï¼ï¼ï¼ã¨ãæã£ã¦ããã®ã§è¦ãããã¨ãã¦ããªãã£ããæ£è§£ãããããªã
ååã®ææ¥ã«30åé
ããã¡
7æ
ãã¼ã éçºãéå§ãã
ã²ã¼ã ãéçºããã°ã«ã¼ãã¨webãµã¼ãã¹ãéçºããã°ã«ã¼ãããã£ããã©ã£ã¡ãå
¥ã£ã
ã²ã¼ã ã¯HTML5ã®canvasã§ã®ä½æã ã£ã
webãµã¼ãã¹ã¯ã¯ã¦ãã£ã½ãã®ãå¶ä½
ã¤ã¹ãæ´»ç¨ãå§ãã
8æ
ã²ã¼ã éçºã®ä¸åç®ã®çºè¡¨ããã£ã
作ったやつ
ä¸å¿è£½ä½æéã¯1ã¶æãã£ãã諸äºæ
ã«ããï¼æ¥ã§ä»ä¸ãããã®ãçºè¡¨ãã
ä¸è¨ã®çç±ã«ãã[è¦åºå
¸]ä»ã®ã²ã¼ã çã®ä½åãããå§åçä½ã¯ãªãªãã£ãã¤æªå®æåã¨ããè¯ããªãçµæã ã£ã
ã¡ã½ããåãå¤æ°åã®éè¦ããç¥ã
ãããã¸ããã家ã§ã²ã¼ã ãããæéãå²ãã¦ããã°ã©ãã³ã°ãããæ¥ãã§ã¦ãã
éåãããªããªã£ããããä½ã®è³ãæã«ä¸èª¿ãåºå§ãã
9æ
ãã½ã³ã³ç²ååã¨ãããã®ã«åºå ´ãã
çµæã¯10åä¸4åæ£è§£ã§äºé¸çªç ´ã¨ããªãé ãã£ã
å¦å
ISUCONãªããã®ãéå¬ãã1ä½ãåããããã¢ããªã±ã¼ã·ã§ã³ãç°¡æ½ããã¦ã¤ã³ãã©ã¯ãã¾ãé¢ä¿ãªãã£ãã®ã§ISUCONã£ã½ããªãã£ã
ã¤ãã§ã«æ¬å½ã®ISUCONã«ãåºããä½ãã§ããã«æ»äº¡
é½å
ã®ç¼èã¯ã³ã¹ããææªãªäºã«æ°ã¥ã
10æ
ãã㧠webãµã¼ãã¹ + ã²ã¼ã ã®å¶ä½çºè¡¨
webãµã¼ãã¹ã§ã¯ã¹ã¯ã¬ã¤ãã³ã°ã¨æ¤ç´¢æ©è½ãæ
å½ãã¦éã¿ãä»ããããã¦ã¿ã
ã²ã¼ã ã¯æªå®æã®ã¾ã¾çºè¡¨ã®æ¥ãè¿ããã®ã§ãããåçãã
ISUCONã§ä½ãã§ããªãã£ãã®ãæããã£ãã®ã§ã¤ã³ãã©é¢é£ãå°ããã¤åå¼·ãå§ãã
ææ¥ã§ã¯ãã¾ãç解ãã¦ããªãã¨æã£ã¦ããã¤ã³ãã©ã ã£ãããå
¨ä½ã®æµãããã¾ãææ¡ã§ãã¦ããªãã£ãã ãã§ãããªãã«ç¥èã¯ä»ãã¦ãã
11æ
ããã§Twitterä¸ã®å£°åªã¸ã®ãªãã©ã¤ãã²ãããåãæµãã¢ããªã±ã¼ã·ã§ã³ãä½æããã®ã§ãããããããããªã®ã§å
¬éãã¾ãã
ãã®ã¢ããªã±ã¼ã·ã§ã³ã"ã¾ã¨ããª"webã¢ããªãä¸äººã§ä½ãçµããæåã®ã¢ããªã±ã¼ã·ã§ã³ã ã£ãã¨æãã¾ã
æå¤ã¨å¤§åã®ãªã¿ã¯ã¯ããã¼ãè¯ããæ¬å½ã«ä¸é¨ã ããç®ç«ã£ã¦ããã ãªã¨æã£ã
ãã¨herokuã¯ã¨ã¦ãç´ æµã ã¨æãã¾ã
12æ
JOIã¨è¨ããã®ã«åå ãã¦ä¸å®
é ä½çã«ã¯ä¸éãããã ã£ãã¨æã
ãã®å¾ã«ãã¾ãã¾AtCoderã®ABCã§30ä½ããããåããã®ã§ç«¶ããã¢ãããä¸ãã
Né«ã®ã¬ãã¼ãæåºç· ãåãããã£ããã仲éã¨ã® *\.âçµâ./* ã«ããè¦äºããéãã
æã²ã¼ã ã®ã¤ãã³ãã§æéã¨è³ç£ã大éã«æ¶è²»ãããä¸ç´ã®å¤§çæ»ãéããã®ä¸ã®ççã«è¾¿ãçã
1æ
ã²ã¼ã ãã£ããã¢ãã¡è¦ãã人çãæºå«ãã
ãã®ææã¯ã¾ããã¼ã å¶ä½ãå§ã¾ã£ã¦ãã(æ¢ã«çµãã£ã?)æ°ããããä½ãæµãã
2æ
è¨æ¶åªå¤±
3æ
åæ¥å¶ä½ã§SNSãä½æããï¼æªå®æ
ã¨ããã®ãä¼ç»ããçºè¡¨ã¾ã§ç¢ºã1ã¶æç¨ããç¡ãã£ãã®ã§åç¨åº¦ãSNSãå®æãããããã¯ãããªãæ»äº¡
主ã«ããã³ããé¢åãããã£ãéã«åããªãã£ã
ææºã¹ã¯ã¼ã«åæ¥ð
webã¢ããªã§ä¸çºå½ã¦ã¦ä½çãåªé
ã«éãããã¨æ±ºæ
åã³ç«¶ãããä¼ãã§ãããAtCoderã®ABCã§ãã¾ãã¾ä¸æ¡é ä½ãåãã¦ãã¾ã£ãã®ã§ã¢ãããã¾ãä¸ãã
4æ
家ã®è¿ãã«ããã°ã©ãã³ã°ã®ãã¤ãããªãã®ã§ãã¯ããã«ãã§ãã¤ããå§ãã
ããã¯ææªã®æ±ºæã ã£ãã®ã§æãæ»ãããªãåå
ã«æ»ãè±ææè²ãåãã¦å¤©æã«ãªã£ã¦ã
人ãããªãã¨è¨ããããã¾ã¾ã«ã·ãããå
¥ãã¦ãã¾ã£ã¦ããã°ã©ãã³ã°ãããªãçãã«ãªã
5æ
é±ä¸ã®AtCoder以å¤ããã°ã©ãã³ã°ãããªããªã
ã¢ã«ãã¤ãã®æ¥åèªä½ã¯æ¥½ã ãã©äººç¨®ãå®å
¨ã«å¥ä¸çã®ãããªã®ã§è²ã
ããã«ãªã£ã¦èªåã社ä¼ä¸é©åè
ã ã¨èªè¦ãã
6æ
SuperConãªããã®ã®äºé¸ã«å¿åãã
Né«ã®å¼·ã人ã®ãããã§é£ãªãçªç ´
7æ
競ãããé å¼µãå§ãã
競ãããé å¼µãã«ããã£ã¦åºç¤æé¤ã®ç¡ãã«çµ¶æãã
主ã«è±èªã¨æ°å¦ãå¿
è¦ã«æãããã©ã¡ãã3以ä¸ã®è©å®ãåã£ãè¨æ¶ããªã
8æ
SuperConã®æ¬æ¦ã§åº§ãå½¹ãåãã
ãã®ããã[è¦åºå
¸]ã§4ä½ã¨ããçµæãæ®ã
ã«ã©ãªã±æ¥½ãã
9æ
ãã½ã³ã³ç²ååã®äºé¸ã«åºã
2人çµã§åºå ´ããã®ã ããã¢ããããªã®ã§é£ãªãçªç ´
ãã ãåä¸äººã§ãå°åæ ã¨ããå½¢ã§äºé¸ãçªç ´å¯è½ã ã£ãã¨ãããã¨ã ãã¯æ¸ãæ®ãã¦ãããã
ISUCONã«åãã¦åã³webé¢é£ã«è§¦ãå§ãã
10æ
ISUCONäºé¸ã«åºã
ã¡ã³ãã¼ã¯å¦çåãã®ISUCONåå¼·ä¼ã«åå ãã¦ãã人ã§(å¦ç)çµãã
å¦çæ ã§æ¬æ¦åºå ´ãã
çµäº30ååã¾ã§fail(å®ã¯åéã)ããã®5ä¸ç¹ç²å¾ã¨ãã大波乱ï¼ãèµ·ãã£ãã®ã§ããªãå¬ããã£ã
ã¢ããªã±ã¼ã·ã§ã³ã¯å°ãããå¼ã£ã¦ããªãã£ãã®ã§è¦æã ã¨æãããã¤ã³ãã©ã®ç¥èã§ã©ãã«ãã§ããã®ãè¯ãã£ã
11æ
ãã½ã³ã³ç²ååã®æ¬æ¦ã«åºã¦9ä½
ãã¢ã®å®åçã«è¯ãçµæã§ã¯ãªãã£ãããã¡ããè¨ã訳ããã¨7åç®ã¯èå¯ãå®äºãã¦5åç®ã¯å®è£
ã¾ã§çµãã£ã¦ãã®ã§å®è³ª3ä½(ã¯ï¼
çµç¤ã§è§£ããåé¡ãç©ã¿ä¸ãã£ã¦ããã¨ããäºæ
ãèµ·ããã®ã§æ¥å¹´ã¯å®è£
é度ãä¸ãããã¨æã£ã
ãã¨ãäºãã«ä½ã®ç¶æ
ãè¯ããªãã£ãã®ã§æ¥å¹´ã¯åæ³ãããæ°æã¡ããã(åã¯åãªã風éªæã
ã©ããããã®æ¹ãä¸äººã®ã»ããããã©ã¼ãã³ã¹ãåºãã¨ã®äºãªã®ã§æ¥å¹´ã¯ï¼ãã¼ã ã«åããã¦æ¬æ¦ã«åºã(äºå®)
ISUCONã®æ¬æ¦ããã£ã
çµæã¯failã§çµãã£ã¦ãã¾ã£ã
Node.js ã§åºãã®ã ãDBã«å
¥ãäºå®ã®ãã¼ã¿ãã¡ã¢ãªã«ä¹ã£ããéã« toString ãæãã¦ãã¾ããããªãã¼ã·ã§ã³(æããåãã§ãã¯)ã§è½ã¡ã¦ãã¾ã£ãã®ã ãåã¬ãã¬ãè¨èªãããããªã®ãæåã¯è³ã£ã¦æ£å¸¸ãªã®ã§åå ç¹å®ã«é常ã«æéãããã3æéããã使ã£ã¦ãã¾ã£ã
åè¨500è¡ç¨åº¦ã®ã³ã¼ããç解ããã®ã«2æéããã£ã¦ãã¾ã£ãã®ã人ã®ã³ã¼ããèªãã®ãå«ã£ã¦ããããã ã¨åç
ã¢ããªã±ã¼ã·ã§ã³éè¦ã§åã¤ãªãä»å¹´ãçãç®ã ã£ãã ãã«é常ã«æ®å¿µ
12æ
JOIã®äºé¸ã«åºã
çµæã¯386ç¹ã§äºé¸çªç ´
ããããã¾ãè¯ãã¹ã³ã¢ã§ã¯ãªãã®ã§æ¬æ¦ã¯ãã£ã¨é å¼µããã
æã¯ã©ã¦ãã½ã¼ã·ã³ã°ãµã¤ãã§ãéã稼ãããæé·ãå
¨ãæããªãã®ã§é¸æè¢ã¨ãã¦ã¯ç¡ãããªã¨ããå°è±¡
ç·æ¬
æåã¯Né«ã®å
¥å¦ãèãã¦ããæ¹åãã«æ¸ãäºå®ã ã£ããã©ããã ãã äºè±¡ãç®æ¡æ¸ãããã ãã®ç¡æå³ãªãã®ã«ãªã£ã¦ãã¾ã£ã
ãããéå»ãæ¯ãè¿ãã¨å°æ¥ã¸ã®ã¢ãããä¸ãã£ã¦ããã®ã§èª°ã«ãèªã¾ããªãæè¡ããã°ãããã®ä¾¡å¤ã¯ãã£ããã¨æãã¾ã
JOIãISUCONã®çµæãè¸ã¾ãã¦èªåãå ¥å¦å½åæ³åãã¦ããã¬ãã«ã¯å¤§ããä¸åã£ã¦ããããªã¨æãã¾ã
ããããããã¯ããéçºããè½åã¯èããæ¬ ãã¦ãã¨æãããä¸è¬çãªå¦çãããã°ã©ãã³ã°ãããã¨ããããããé å¼µãã¨ããå°è±¡ãããã®ã§æ°å¤ã¨ãã¦åºãªãé¨åã§ãé å¼µã£ã¦ããããæåã§ã
ãã¨ãã®è¨äºã¯ä¸»ã«Né«çã®æ¹ãè¦ãã¨æãã®ã§å®£ä¼ã§ãã #club_computer ã§ä¸ç·ã«ç«¶æããã°ã©ãã³ã°ãããæ¹ãåéãã¦ãã¾ã
ifæ foræ ãæ¸ããæ¹ãªãå§ããããã®ã§æ°è»½ã«åå ãã¦ã¿ã¦ãã ãã
ãã½ã³ã³ç²ååã¯å¹´é½¢å¶éããªãã®ã§ã©ãªãã§ãåºãã¾ã
ç¾å½¹ï¼é«æ ¡çã®æ¬æ¦åºå ´æ ãæ½°ãã¦ããã¾ãããï¼ï¼ï¼
ããã²ã¨ã¤æå¾ã«æ¥å¹´ã® ISUCON ã«ä¸ç·ã«åºã¦ãããæ¹ãåéãã¦ãã¾ã
ç®æ¨ã¯æ¬æ¦åºå ´ããããªã®ã§æ°è»½ã«å£°ãããã¦ãã ãã
ISUCONå¦çæ ã¯é常ã«ç·©ãã®ã§webã¢ããªå¿ç¨ããããçµãã¦ããã°å¾ã¯éå»è¨äºãèªã¿æ¼ãã ãã§åã¦ã¾ã(å¤å