ãã²ã£ãã
ãããã°ãå¼è¶ãã¾ãããã£ã¡ã¯å¥ã®ç¨éã«åå©ç¨ããããã
ãæ°URL â http://tkng.org/b/
"é«éæååè§£æã®ä¸ç"ãèªãã
ãé«éæååè§£æã®ä¸çã¨ããã¿ã¤ãã«ããã¯ãã©ããªä¸èº«ãªã®ããã¾ãä¼ãã£ã¦ããªãã®ã§ãã©ããªãã¨ãæ¸ãã¦ããæ¬ãªã®ããä¸èº«ãã¡ãã£ã¨ç´¹ä»ãã¦ã¿ãã
ã1ç« ã2ç« ã¯æ¦è¦³ãæºåã§ããã3ç« ãããæ¬çªãªã®ã ããBurrows Wheeler Transformãç°¡æ½ãã¼ã¿æ§é ãã¦ã§ã¼ãã¬ããããªã¼ããã¼ã¿å§ç¸®ãå
¨ææ¤ç´¢ãããã¹ããã¤ãã³ã°ã®ããã®ãã¼ã¿æ§é ãã¨ããç« é¡ã«ãªã£ã¦ããã
ãä½ã«ä½¿ãã®ãã¨ããç®çãã¼ã¹ã§èããã¨ããã®æ¬ã«è¼ã£ã¦ããã®ã¯ããã¼ã¿å§ç¸®ãæ
å ±æ¤ç´¢ã¨ããã¹ããã¤ãã³ã°ã®åºç¤æè¡ã§ããï¼ãã¼ã¿å§ç¸®ã«ã¤ãã¦ã¯åºç¤ã¨è¨ãããã¯ãã®ãã®ã ãï¼ããã ããã®æ¬ã«ã¯æ¬å½ã«åºç¤æè¡ã®è©±ããè¼ã£ã¦ããªãã®ã§ãããã®æ¬ã§æ
å ±æ¤ç´¢ã¯ããããªã ãï¼ï¼ãã¨ãããããªè¨³ã«ã¯ãããªããããã¹ããã¤ãã³ã°ã«é¢ãã¦ãåæ§ã§ãããå¥éå
¥éæ¸ãèªããªãããªãã¨ããã髿¬¡å
ï¼ããã§ã®é«ä½ã¯æè¡ã®ç©ã¿éãã®é«ä½ã§ãããé£ããã®é«ä½ã§ã¯ãªãï¼ã®ç¥èãæã«å
¥ãããã¨ã¯ã§ããªãã
ãã¨ããããã§ãå
¨ãã®åå¿è
ã«ãã®æ¬ãããããããã¨ããããã«ã¯è¡ããªãï¼åºç¤å´ã®æè¡ã«ã¤ãã¦ããä¸å´ã®æ©è½ãæ¨æ¸¬ã§ãããããªã¬ãã«ã®äººãªãã°è©±ã¯å¥ã§ããããã人ããã£ã±ãããã¨ã¯æãããã©ï¼ã®ã ããåå¿è
åãã®æ¬ãä¾ãã° æ
å ±æ¤ç´¢ã®åºç¤ã¨ãæ¤ç´¢ã¨ã³ã¸ã³ã¯ãªãè¦ã¤ããã®ããâç¥ã£ã¦ããããã¦ã§ãæ
å ±æ¤ç´¢ã®åºç¤ç¥èã®ãããªæ¬ãèªãã ãã©ã次ã«ä½ãèªãã°ããã®ã ãããã¨ãããããªäººã«ãããã¾ã§ã¯The Burrows-wheeler Transform: Data Compression, Suffix Arrays, and Pattern Matching ã®ãããªæ´æ¸ãè¦ãããããªãã£ãï¼ãããã¯ãSIGIRã®è«æã¨ãèªãã¨ãããï¼ãã¨è¨ãããããï¼ã®ã ããããããã¯å¤å°ãã¼ãã«ãä¸ããæ¥æ¬èªã®æ¬ãè¦ãããã¨ãã§ããã¨ããããã ããã¨ãThe Burrows-wheeler Transformã®æ¹ã¯èªãã§ãªããã©ããã¶ããã£ã¡ã®æ¹ãæ°ãããã¨ãæ¸ãã¦ãããWavelet Matrixã¨ãã
ãã¨ããã®ãä¸è¬çãªè©±ã ã¨æãã®ã ããå人çã«ã¯åããèªã¿ããã£ã話ãè²ã
ã¨æ¸ãã¦ããã以ä¸ã«ã¾ã¨ã¾ãã®ãªãæãã§ææ³ãè¿°ã¹ãã
ãXBWã¯ã¨ããããçè§£ãããXBWã®ã¢ã¤ãã¢ã¯è³¢ããBWTã®æ¡å¼µã«ãªã£ã¦ãã¦LF-mappingãæãç«ã¤ã®ã§ãããè³¢ããè³¢ããLOUDSã¨æ¯ã¹ã¦ã©ããããéããã ããããã¡ãã£ã¨æ°ã«ãªãããã¨ãmarisa-trieã§ä½¿ã£ã¦ãå帰çTrieåè§£ã¨çµã¿åããããã¨ãã§ãããããããªã·ã¢åãã§ããããªã®ã ããå®è£
ããã¨ãã®ãããè¾ãã ãããªãâ¦â¦ã
ãééç符å·ã®è©±ã¨ããé¢ç½ããééç符å·ã¨ããã®ã¯ãã©ã³ãã ãªä½ç½®ããå¹çãã復å
ã§ãã符å·åæ¹æ³ã§ãæ¸ç±ã®ã»ãã§ç´¹ä»ããã¦ããææ³ã§ã¯ãã»ã¨ãã©ã®å¤ãå°ããã¦ãã¾ã«ãã£ããªæ°åãæ··ãã£ã¦ããã¿ãããªé
åãããã§ç¬¦å·åããã¨ãµã¤ãºãå°ãããªã£ã¦é度ãããã¾ãè½ã¡ãªããå®è£
ãç°¡åããã
ãã¦ã§ã¼ãã¬ããããªã¼ã¯ã©ããããã¼ã¿æ§é ãªã®ãã¯ã ãããç¥ã£ã¦ãã®ã ãããããããªæä½ãã§ããã¨ããäºã¯ããç¥ããªãã®ã§ããããåå¼·ãããã
ãæ¥å°¾è¾é
åãInduced Sortingã§ä½ã話ã¯é£ãããå¯ãåã«ã¡ããã¡ããèªãã§ãã®ã§ã¯çè§£ã§ããªãããã ãç´ã¨éçã§èªåã§é
忏ãã¦ã¿ãªãã¨ããã©ãã
ãã¾ã¨ããã¨ãæ å ±æ¤ç´¢ãããã¹ããã¤ãã³ã°ãªã©ã®æ°ããåºç¤æè¡ã«èå³ã®ãã人ããã¼ã¿å§ç¸®ã«èå³ã®ãã人ã«ããããã®æ¬ã§ããã¨è¨ããã
- サポートページ
- 岩波書店のページ
- 追è¨ï¼BWT本よりははるかにわかりやすいらしい
ãªãããªããã¦ã§ããµã¤ããHTTPSåããã¨ãµã¤ããé ããªã£ã¦ã¦ã¼ã¶ã¼ãéãã¦ããã®ã
ãå®å
¨ã«é£ãã¿ã¤ãã«ã§ããã©ä¸èº«ã¯çé¢ç®ã«æ¸ããã
ãè¿å¹´ãã¦ã§ããµã¤ãã®HTTPSåãæµè¡ã®ããã«ãªã£ã¦ãããç§ã®ç¥ãéããGoogleã®å種ãµã¼ãã¹ãTwitterãFacebookãªã©ãå®å
¨ã«HTTPSã§éä¿¡ãè¡ãããã«ãªã£ã¦ãããHTTPSãã¤ã¾ãSSLã«ããéä¿¡ã®æå·åã«ãã£ã¦ãã¦ã¼ã¶ã«ããã¾ã§ãããå®å
¨ãªã¦ã§ããµã¤ããæä¾ã§ããã
ãããããããªããä½ã£ã¦ãããµã¤ãããµã¨æãã¤ãã§HTTPSåãã¦ãã¾ãã¨ããã¶ããããã¾ã§ããããµã¤ããé
ããªããããã§ã¯ãHTTPSã§éä¿¡ããå ´åã®åé¡ã解説ããã
ãªãé ããªãã®ã
ãHTTPã§éä¿¡ããå ´åãã¯ã©ã¤ã¢ã³ãããµã¼ãã¸ã¨æ¥ç¶ããããã«ã¯TCP/IPã®3ã¦ã§ã¤ãã³ãã·ã§ã¤ã¯ã¨ããæé ãå¿
è¦ã«ãªããããã©ãããã®ã§ããã§ã¯è©³ããã¯èª¬æããªãããè¦ããã«ã¯ã©ã¤ã¢ã³ãããªã¯ã¨ã¹ããæããåã«ãã±ãããï¼å¾å¾©ãããªãã¨ãããªãã®ã§ããããã±ããã®å¾å¾©ã«ã©ããããæéãããããã¯pingã³ãã³ãã§ç°¡åã«ç¢ºèªã§ããããã¨ãã°ãping www.kyoto-u.ac.jpã¨ãã³ãã³ããæã¤ã¨ãããããã¯äº¬é½ã«ãµã¼ããããã§ããã京é½å¤§å¦ã®ãµã¤ãã«ãã±ãããè¡ã£ã¦æ»ã£ã¦ããæéãè¨æ¸¬ã§ããã1å¾å¾©ã§ç´30msãããã ã£ããæ±äº¬-京é½éï¼500kmãããï¼ï¼ã§30msã¨ãããã¨ãè¦ãã¦ããããã
ã30msãã¤ã¾ã0.03ç§ã§ããã°ãããªã«å¤§ãããã¨ã®ãªãæ°åã§ããã
ãå®ã¯ãHTTPSã§ã¯éä¿¡ãã¯ãããåã«å¿
è¦ãªãã±ããã®ããåãã3å¾å¾©ã«ãªãã3å¾å¾©ããã¨ãªãã¨0.09ç§ãããã»ã¨ãã©0.1ç§å¾
ãããããã¨ã«ãªããã¡ãã£ã¨ãããã人éãç¥è¦ã§ãããããã®æéã«ãªã£ã¦ããã
ãä»ã«ãæªããã¥ã¼ã¹ããããSSLã®è¨¼ææ¸ã«ã¯OCSP(Online Certificate Status Protocol)ã¨ããè¨¼ææ¸ã失å¹ãããããã®ä»çµã¿ãããã®ã ããããé
ãã®ã§ããããã®ä»çµã¿ãè¦ç´ããã¨ãè¨¼ææ¸ãåãåã£ããå®éã«éä¿¡ãå§ããåã«OCSPã¬ã¹ãã³ãã¨å¼ã°ãã失广
å ±ã管çãããµã¼ãã«å¯¾ãã¦ãè¨¼ææ¸ã失å¹ãã¦ããªããã©ããã確èªãããã¨ãããã®ã§ãããå¥ã®ãµã¼ãã«åãåãããçºçãããããDNSã§ååã解決ãããããµã¼ãã«ãªã¯ã¨ã¹ããé£ã°ããããã¨ãã£ãæé ãå¿
è¦ã«ãªããéä¿¡ã®éå§ãé
ããããã§ãããå®ãSSLè¨¼ææ¸ã使ãã¨OCSPã¬ã¹ãã³ããæµ·å¤ã«ãããªãã£ãããã¦æªå½±é¿ã大ãããOCSPã¯æè¿ã®ãã©ã¦ã¶ã§ããã°ã»ã¼ç¢ºå®ã«å¯¾å¿ãã¦ããã
ããªãã§OCSPã®ãããªä»çµã¿ãå¿
è¦ãªã®ããè¨¼ææ¸ã¨ããã®ã¯æè¡çã«ã¯å
¬é鵿å·ã®å
¬ééµå´ãªã®ã§ã対å¿ããç§å¯éµãæ¼ããå ´åã«ã¯æªç¨ãé²ãããã«å¤±å¹ãããä»çµã¿ãã»ãããã¨ãããã¨ã§ãããªç¶æ³ã«ãªã£ã¦ããã以åã¯å¤±å¹ããéµã®ãã¼ã¿ãã¼ã¹ï¼Certification Revocation Listï¼ããã¦ã³ãã¼ãããã¨ããæ¹å¼ã ã£ãããã ããæè¿ã®ãã©ã¦ã¶ã¯å
¨é¨OCSPã«ç§»è¡ããã¿ããã ã
ãããã¾ã§ã®èª¬æãç¹°ãè¿ãã¨ãHTTPSã§éä¿¡ãè¡ããã¨ã«ãªãã¨ãTCP/IPã®åã§1å¾å¾©ãSSLã®åã§2å¾å¾©ã®é
ããçºçããOCSPãã§ãã¯ã§2å¾å¾©ãã4å¾å¾©ç¨åº¦ã¯ãã±ããã®å¾å¾©ãçºçããã4å¾å¾©ãã¨ããã®ã¯ãå®ãè¨¼ææ¸ã ã¨ä¸éè¨¼ææ¸ã¨ãããã®ãå
¥ã£ã¦ãããä¸éè¨¼ææ¸ã«ãOCSPãã§ãã¯ãå¿
è¦ã ããã§ãããOCSPãã§ãã¯ã§æµ·å¤ã«ãªã¯ã¨ã¹ããè¡ãå ´åã¯ãã®å¾å¾©ã¯30msã¨ããããªããããæ°åã§ã¯ãªãã1å¾å¾©ã§200msãããããã£ãããããå®éã«ã¯OCSPã«ã¯300msç¨åº¦ã¯ãããã®ããµã¤ãã¿ããã ã
ãã¨ãã訳ã§ãSSLã使ãã¨éä¿¡ãå§ã¾ãã¾ã§ãHTTPã®å ´åã¨æ¯ã¹ãæä½ã§ã120msç¨åº¦ã®é
å»¶ãçºçãããã¨ãè¦æããªãã¨ãããªãã®ã§ããã
ãGoogleでは0.4秒レスポンスが遅くなるとクエリ件数が0.6%程度減少するそうãªã®ã§ãããã120msç¨åº¦ã ã¨ãããªã«æ°ã«ããã»ã©ãããªãããªâ¦â¦ããã ãOCSPãã§ãã¯ã§0.5ç§ã¨ããããã¨ãã¡ãã£ã¨ç¡è¦ã§ããªãæãã«ãªã£ã¦ããã
éãããæ¹æ³ã¯ããã®ã
ãã¨ããããã§ãSSLã使ãã¨ãã¬ã¤ãã³ã·ãããç¨åº¦å¢ãããã¨ã¯ä»æ¹ããªããããããå¤å°ã®å¯¾çã¯åãæ§ãããã以ä¸ã§ã¯ããã¤ãã解説ããã
ã1ã¤ãã¯SSL False Startã¨å¼ã°ããSSLã®éä¿¡éå§æ¹å¼ã§ãããããã¯SSLã§å¿
è¦ãªãã±ããã®å¾å¾©åæ°ã2åãã1åã«æ¸ããã¦ãããããã ããã©ã¦ã¶å´ããµãã¼ããã¦ããªãã¨ä½¿ããªããGoogle Chromeã§ã¯ããã©ã«ãã§æå¹åããã¦ãããFirefoxã§ã¯å®è£
ããã¦ãããããã©ã«ãè¨å®ã§ã¯ç¡å¹ã«ãªã£ã¦ãããã¦ã¼ã¶ãGoogle Chromeã使ã£ã¦ãããã¨ãç¥ãã ããªã®ã§ã対çã¨ã¯å¼ã¹ãªãããæå¹ã§ã¯ããã
ã2ã¤ãã¯ãOCSPã¹ãã¼ããªã³ã°ã¨å¼ã°ããTLSã®æ¡å¼µã§ãããããã¯ãOCSPã¬ã¹ãã³ãã®è¿çãããããããµã¼ãå´ããã£ãã·ã¥ããéä¿¡æã«è¨¼ææ¸ã¨ä¸ç·ã«ã¯ã©ã¤ã¢ã³ãã«éãã¤ãããã¨ã§ãã¯ã©ã¤ã¢ã³ãã§ã¯OCSPã®ãã§ãã¯ãçç¥ã§ãããã¨ãããã®ã§ãããè¨¼ææ¸ã¨ä¸ç·ã«ãããã¹çããã¦ãã¾ãã¤ã¡ã¼ã¸ãªã®ã§ã¹ãã¼ããªã³ã°ã¨è¨ãã®ã ãããèªåã§èªåã®ä½¿ã£ã¦ãè¨¼ææ¸ãæ£ããã¨è¨ã£ã¦ãã ãã§å®å¿ã§ããªãã®ã§ã¯ãã¨ä¸ç¬æã£ã¦ãã¾ãã®ã ããOCSPã¬ã¹ãã³ãã®è¿çã¯æ¹ç«ã§ããªãããã«ãªã£ã¦ããã®ã§ãããã§ã大ä¸å¤«ã§ãããããã使ãã¨OCSPãã§ãã¯ãçç¥ã§ãããApacheã§ããã°2.4ç³»åã§ããã°å¯¾å¿ãã¦ãããNginxã¯ã¾ã å®å®çã§ã¯ãµãã¼ããã¦ãªãããã ãéçºçã§ã¯ãµãã¼ããã¦ãããOCSPã¹ãã¼ããªã³ã°ã¯å¼·åã ãã1ã¤ã®è¨¼ææ¸ã«å¯¾ãã¦ããã¹ãã¼ããªã³ã°ã§ããªãããã®ãããä¸éè¨¼ææ¸ã使ããã¦ããå ´åãOSCPãã§ãã¯ãå®å
¨ã«çç¥ã§ããããã§ã¯ãªãã
ããã®ä»ã«æå¹ãªå¯¾çã¨ãã¦ã¯KeepAliveã®ç§æ°ãåææ¥ç¶æ°ã®è¨å®ãè¦ç´ããã¨ãæãããããHTTPã»ãã·ã§ã³ã使ãã¾ãããã¨ãã§ããããä¸è¨ã®ãã¡ããã¡ãã¨ãããã±ããã®å¾å¾©ã¯å
¨é¨ãã£é£ã°ããã¨ãã§ããããã§ããããã ããååæ¥ç¶æã«ã¯å¹ããªãã
èè¶³
ãOCSP staplingã«ã¤ãã¦èª¿ã¹ãã¨ããã¶ãä¸ã®æ¹ã«Cloudflareã¨GlobalSignã®ææºã§SSLãéããªããããã¿ãããªè©±ãtechcrunchに載っていたがã®ãåºã¦ããã®ã ãããã®è¨äºã«ã¯ééããããã¤ããããã¨ãããã2ã¤ã®è©±ããã£ã¡ãã«ãã¦ãã¾ã£ã¦ãçµæã¨ãã¦ééããçãã¦ããã1ã¤ãã¯CloudflareãSSLçµç±ã§ãã¡ã¤ã«ãããªããªã¼ããéã«OCSP staplingãè¡ãããã«ãã¦é«éã«é
ä¿¡ã§ããããã«ãªã£ããã¨ãã話ã§ãããã«ã¯GlobalSignå´ã®ã·ã¹ãã ã«ã¯ä½ã夿´ã¯çãã¦ããªãã2ã¤ãã¯GlobalSignãCloudFlareã使ã£ã¦OCSPãµã¼ããä¸çä¸ã«é
åãããã¨ãã話ã§ããã¡ãã¯OCSP staplingã¨ã¯é¢ä¿ããªããï¼OCSP staplingã使ããªãã°OCSPãµã¼ãã¯å¤å°é
ãã¦ãåé¡ã¯ãªãããããå®éã«ã¯ä¸éè¨¼ææ¸ã®åé¡ãããããé
ãã¨åé¡ãªãã ãã©ãã¡ã¸ã£ã¼ãªä¸éè¨¼ææ¸ã£ã¦ããã¾ãå¤ããªãã¯ããªã®ã§æ¯è¼çåé¡ã¯å°ãªãâ¦â¦ã¯ãâ¦â¦ãï¼æç³»åãé常ã«è¿ãã話ãè¤éãªã®ã§ä»æ¹ããªãã¨æããCloudFlareのブログ記事の冒頭ã«OCSP staplingã®è©±ãè¼ã£ã¦ããã®ã§èª°ããåéãããã®ã ããã
ã調ã¹ã¦ãã¦æåã¯çå±ãéããã«æ··ä¹±ããã®ã§ãåãéãéãäººãæ¸ãããã«ããã«æ¸ãã¦ããã
åèURL
- http://www.imperialviolet.org/2010/06/25/overclocking-ssl.html
- http://blog.cloudflare.com/ocsp-stapling-how-cloudflare-just-made-ssl-30
- cloudflareãOCSP staplingãæå¹ã«ããæã®ããã°è¨äºãå®éã©ããããéããªãããæ¸ãã¦ããã
ã¾ã¨ã
- ãµã¤ããSSLåããã¨ååã®æ¥ç¶æã«0.xç§ç¨åº¦ã®é å»¶ãçºçãããã¨ã«ãªãã
- Global Signã®SSLè¨¼ææ¸ã使ãã¨OCSPãµã¼ããCDNã§ä¸çä¸ã«é
åããã¦ãã®ã§OCSPãã§ãã¯ãã ãã¶éãã
- ã§ãå人ã§è²·ãã«ã¯ã¡ãã£ã¨é«ããã ãããGlobalSignâ¦â¦ã
- ååæ¥ç¶æã®ãã¨ã¯ããããã¦ãKeep Aliveã®è¨å®ã¨ããè¦ç´ãã®ãããããªã¨æãã
- ã¨ãããããSSL使ãå ´åã¯ã©ãã ãé ããªãã®ãã¯ããããããã¹ããã¦ç¢ºèªããã»ããããã
2012å¹´æ¯ãè¿ã
- æ¬ãåºãã
- 2å¹´ãããæ¸ãã¦ã本が出版されたã
- æ¬ãåºãããã£ã¨ããç´ æµãªãã¨ããããã¨æã£ããã©ãç¹ã«ãªãã£ãã
- ã§ããèªã¿ã¾ãããã£ã¦ããããªäººã«è¨ããã¦å¬ããã£ãã
- ããã¾ãæ å ±ç³»ããã¡ãã¨åå¼·ãã¦ãªãã¨ããå¼ãç®ããã£ã¨æãã¦ããã ãã©ãæ¬ãåºãããããã£ã¨å¹ã£åãã¦ããã
- ç©ãã
- 5kg太ã£ã¦5kgç©ããããã©ãã¤ã¼ãã
- ACLã«è¡ã£ã
- ãµãã«ã¼ã§ã¯ãªãèªç¶è¨èªå¦çã®å¦ä¼ã®æ¹ãä¼ç¤¾ã®å®£ä¼ãã¼ã¹ãåºãã«è¡ã£ã¦ããã
- DYKSAäºä»¶ãGood Wateräºä»¶ãªã©ããã¤ãã®äºä»¶ã«ééããããç¡äºã«å¸°ã£ã¦ãããã¨ãã§ããã
- ä¸çæé«å³°ã®å¦ä¼ã¬ãã«ãæãããã¨ãã§ãã¦åå¼·ã«ãªã£ãã
- ããã«ã¯@unnonounoã¨ç¸é¨å±ã ã£ãã®ã ãããã¸ãã¯ãã©ã¼ã§ã¯ãªãã®ã ããé¨å±ãã風åå ´ãå¾®å¦ã«è¦ããã®ãããæ°ã¾ããã£ãã
- NIPSã«è¡ã£ã
- ãã¡ãã¯ACLã¨æ¯ã¹ã¦æ©æ¢°å¦ç¿ããã®å¦ä¼ã§ããã宣ä¼ã§ã¯ãªããç´ç²ã«æè¡èª¿æ»ã«è¡ã£ã¦ããã
- è«æçºè¡¨ãªãã«ãããªé ãã¾ã§åºå¼µã§è¡ããã¦ããã£ã¦ããããããéãã§ãããçé24æéããããããã®ãè¾ãã£ãï¼ACLã¯éå½ãªã®ã§çé8æéãããã ã£ãï¼ããåææNLPã®äººã ã¯COLINGã¨ããã¤ã³ãã§éå¬ãããå¦ä¼ã§é常ã«è¦å´ãã¦ããã¿ãããªã®ã§ãããã¨æ¯ã¹ãã°ã ãã¶è¯ãã£ãã®ã ããã¨æãã
- å¦ä¼ã«è¡ãã¨ç¥èã¨ææ¬²ããã£ã¼ã¸ãããã®ã§è¯ãã
ã2012å¹´ã«ãã£ãä»äºã¯å
¬éããã¦ããã®ã1ã¤ããªãã®ã§ãä»äºé¢ã§ã¯æ¸ãããã¨ã¯ç¹ã«ãªãã®ã ããä¼ç¤¾ããã°ã®Centroid Path Decompositionの記事ã¨BWTとLF-mappingの記事ã¯ãã ãã¶æ°åãå
¥ãã¦æ¸ãããã©ã¡ããããã¾ã注ç®ãéããããªãã¦æ²ããã£ãã
ã2012å¹´ã¯æ¬ãåºãããã¨ã¯ãã£ã¨çãå°½ãã¦ãæãï¼ãããã復活ããªãã¨ãã¨æã£ããããã§ç¥æ¯ããªããªã£ããæç¬ããªããªã£ããã§ãªããªãç«ã¡ç´ããªãã£ãããããã«é¢ãã¦ã¯è²ã
徿ãããï¼ã ã£ãã®ã§ã2013å¹´ã¯ããããåèµ·åãã¦ãã¤ã³ãããã¨ã¢ã¦ããããã¨ããã©ã³ã¹ãããã£ã¦ãããããããªã¨æã£ã¦ããã
RethinkDBãè¯ããããªæ°ãããã®ã§èª¿ã¹ã¦ã¿ã
ãæ¥è¨æ¸ãã®æ°ã«æã¶ãã ãã©ã以ä¸ãä½äºããªãã£ããã®ããã«åéãã¾ãã
ãHackerNewsã§RethinkDBのニュース記事ãä¸ä½å
¥è³ãã¦ããã®ã§ã¡ãã£ã¨èª¿ã¹ã¦ã¿ããMongoDBã©ã¤ã¯ãªæãã§ãç¬èªã®ã¯ã¨ãªè¨èªã§ä½¿ããã¿ããã ã
ãRethinkDBã¯å
ã
ã¯SSDã«ç¹åããMySQLç¨ã®ã¹ãã¬ã¼ã¸ã¨ã³ã¸ã³ã ã£ãã®ããæ¹å転æãã¦Memcachedäºæãªãµã¼ãã«ãªã£ãï¼ããã¦SSDç¹åã¨ããç¹å¾´ãæ¨ã¦ãï¼ã¨ããã¨ããã¾ã§ã¯ç¥ã£ã¦ããã®ã ãããã¤ã®éã«ãããªã¯ã¨ãªè¨èªãåãã¦ããã®ããæ¹å転æã®ãã¥ã¼ã¹ãè¦ãæã«ã¯ãµã¼ããããã«ããæãããªãã£ã·ã£ã«ãµã¤ãã¯ãã§ãã¯ããªãã£ãã®ã§ãå®ã¯å»å¹´ã®æç¹ã§ãã§ã«ã¯ã¨ãªè¨èªã¨ããåãã¦ããã®ãããããªããã©ãgithubã¨ãã§èª¿ã¹ãæãã ã¨1.2.0ãThis is the first release of the productã¨æ¸ãã¦ããã¨ããããããã¨ãæè¿å¤§å¹
ã«å¤ãã£ããã¼ã¸ã§ã³ãå
¬éãããã°ã£ããã£ã½ãã
ãHackerNewsへのCEOの書き込みããå¼ç¨ããã¨ãMongoDBã¨æ¯ã¹ã¦
- 忣joinã¨ããµãã¯ã¨ãªã¨ãã§ããã
- MVCCã ã
- ã¯ã¨ãªã並åã§å®è¡ãããã
ãã¨ããããããã¦ãªãããã忣joinãã§ããã®ã¯çããæ°ããããjoinã¯ãã¤ãã³ã°ãã¦ãã¨çµæ§ã»ãããªãã®ã§ã忣ç°å¢ã§ããã©ã«ãã§ã§ããã®ã¯ãã¤ã³ãé«ãã
ããã¨ãv8ã使ã£ã¦ãã¦ããµã¼ãå´ã§ã³ã¼ããå®è¡ã§ããã¿ããããã®æ©è½ã¯é¢ç½ãããããããªãã¨ãã§ããããï¼v8ã¯å¥ããã»ã¹ã§å®è¡ãããããã ãï¼
ãç¾ç¶ã ã¨ããããprimary key以å¤ã«ã¤ã³ããã¯ã¹ãå¼µããªãã¨ãããã¨ã§ã¡ãã£ã¨è©¦ãã«ä½¿ã£ã¦ã¿ãåã«ãè¾ãããªæãã ãããã°ããã¯ä»å¾ã®æ¨ç§»ã追ãããããã
æ¥æ¬èªå ¥åãæ¯ããæè¡ æ¯ãè¿ãããããã¯æè¡æ¸ãæ¸ããã人ã¸
ãæ¬ãæ¸ãã¦ãããã£ã¡ã年度æ«ã§å¿ããã£ãããä½èª¿ããã£ã¨æªãã£ãããã¦ãã¾ãããããããæ¬æ°åºãã¾ããæ£èª¤è¡¨ã大å¹
ã«ã¢ãããã¼ããã¾ãã仿¸ãã¦ãã
ã仿¥ã¯ãæ¬ãæ¸ãã¦ã¿ã¦ã©ãã ã£ãããã¨ãããã¨ããµãè¿ãããã¶ãããã§æ¬ã«ã¤ãã¦è§¦ããã®ã¯æå¾ããªã宣ä¼ã¯ãã¾ã«ããã¨æãã¾ããã
ãâ»æãããã大éã«ã¢ã¯ã»ã¹ããã£ããããæå¾ã«è¿½è¨ãæ¸ããã®ã§ããã£ã¡ãèªãã§ãï¼
æ¬ãæ¸ãããã£ãã
ãä¼ç¤¾ã®æ¹ã§PFIã»ããã¼ã¨ããåå¼·ä¼ã®ãããªãã®ããã£ã¦ããããªãããããUStreamã§ã¤ã³ã¿ã¼ãããã«ä¸ç¶ããã¦ããã®ã ããããã§æ¥æ¬èªå
¥åã®è©±ãããããæ¬æ¸ããªãï¼ãã£ã¦è©±ãæ¥ããç·¨éããã¨ã¯ããã®åå¹´ã«ä¼ç¤¾ã«æ¥ãWEB+DB Pressã®è¨äºå·çä¾é ¼ã§è¨äºãæ¸ããéã«ç¥ãåã£ãã®ã§ãããããæå³ã§ã¯è²ªæ¬²ã«ãã£ã³ã¹ãæ´ã¿ã«è¡ã£ãçµæã§ããã¨è¨ããªãããªãã
ãPFIã»ããã¼ãUSTã§ä¸ç¶ãããããã«ãªã£ãã®ã¯æ¬å½ã«ãã¾ãã¾ã§ãåé±ã®æ
å½ã ã£ã彿ãã¤ãã®@sotarokããUSTã¯å«ã ãã£ã¦è¿äºãã¦ãããã¶ããã®æ¬ã®èè
ã¯ç§ã§ã¯ãªãã£ãã ããã人çã¯å¶ç¶ã«å¤§ããå·¦å³ãããããããå¶ç¶ã¨ã¯ãããUSTã®åç»ãå
¬éãã¦ãã£ãããä¾é ¼ããã訳ã§ãæ
å ±ãå
¬éãã¦ãããã¨ã®éè¦æ§ã伺ããã
ã以ä¸ãæ¬ãæ¸ãã¨ãã«èªåããã£ã¦ããã£ããã¨ãæªãã£ããã¨ãæ¯ãè¿ãã
æ¸ãããã«ãã£ã¦è¯ãã£ããã¨
- æåã«æ¸ãããå
容ããªã¹ãã¢ããããã
- ã©ããªæ¬ã«ãããã¤ã¡ã¼ã¸ãæ¹§ãã
- ReVIEWã使ã£ã¦PDFãèªåçæã§ããããã«ããã
- ããã¹ãã¨ãã£ã¿ã§è¦ãã®ã¨PDFã§è¦ãã®ã§ã¯æç« ãèªãã æã®æããéãã®ã§ãé ããªã»ãããã¦æãèªããã
- TeXã§æ°å¼ãæ¸ããããã«æ¹é ãã¦ä½¿ã£ããTeX以å¤ã®ãã¨ãå ¨ãèãã¦ãªãéæ¹é ãªã®ãã¢ã¬ã ããèªåã§ä½¿ãåã«ã¯ä¾¿å©ã ã£ãã
- æåæ°ãã«ã¦ã³ããã¦ã°ã©ãåããã
- æ®ãæåæ°ãã©ãããããªã®ããä¸å¿ã®ç®å®ã«ãªã£ããæçµçã«ã¯å½åäºå®æåæ°ãå¤§å¹ ã«ãªã¼ãã¼ããã®ã§ããã¾ãç®å®ã«ãªã£ã¦ãªãã£ããã©â¦ã
- å稿ãgitã§ç®¡çããã
- 夿´ãã©ããã«è¡ã£ã¦ãã¾ããã¨ããªãã
- ããã¯ã¢ãããç°¡åãåºæ¬çã«ãªãã¸ããªã¯3å°ã®PCã«ã³ãã¼ãããããã«ãã¦ããã
- ãªã¢ã¼ããã·ã³ã«git pushãããhookã¹ã¯ãªããã§PDFãèªåçæããããã«ã¨ããã¦ããã
- ãã±ãã管çã·ã¹ãã ã使ã£ãã
- 使¥å¿ãã®å¯è½æ§ãã ãã¶æ¸ããããï¼ä»æ®ã£ã¦ããã±ãããå®éã«ã¯ç®ãéãã¦å¯¾å¿ã¯ãã¦ãããã¯ãâ¦ãï¼ãã±ããã®ç²åº¦ã¯ç´°ããã»ãããããã ãã©ãããããã¨ãã±ãããåãã¨ãã®æéãå¢ããã¨ãããããåé¡ããã£ã¦ãããã辺ã¯ãã¾ã解決ã§ããªãã£ãã
- åèã§æ¸ããã
- å ±èã ã¨ãèªåã ããæ¸ãä¸ãã£ã¦ããç¶æ ããéã«èªåã ããæ¸ãããã£ã¦ãªãç¶æ ãã©ã¡ããããªãè¾ããå ±èã¯ãäºãã«å¼·ãä¿¡é ¼ã§çµã³ã¤ãã人ããããããããã¯äººæ°ãå¤ããã¦èª°ãããµãã£ã¦ããªãã¨ããªããããªç¶æ ã§ãªãã¨ãã¾ããããªãã¨æãã
- å²ã¨å¤ãã®äººã«ã¬ãã¥ã¼ãã¦ããã£ãã
- éã³ãã¥ã®èªåã¨ãã¦ã¯ã³ã£ãããããããã®äººæ°ã«ã¬ãã¥ã¼ããé¡ãã§ãããã¬ãã¥ã¼ã«ãã£ã¦ééããå¤§å¹ ã«æ¸ã£ãããåããã«ããé¨åãããªãæ¸ãããã
- ä½äººãã«ã¯ãã³ãã¤ã³ãã§è¦ã¦ãããããã¨ããããé¡ããããããã«ãã£ã¦1ç« ã2ç« ã«ã¬ãã¥ã¼ãéä¸ããã¡ã§ããã¨ããåé¡ãããªãè§£æ¶ãããã¨æããï¼å°çºãããå¾ãå´ããã¬ãã¥ã¼ãã¦ãã ãã£ãã¨ããã®ããããçµå±å°çºããã«ã¯å ¨ä½ãç¸å½è©³ããã¬ãã¥ã¼ãã¦ããã ãããã©â¦ãï¼
- 30ã¤ã³ãã®ãã£ã¹ãã¬ã¤ãè²·ã£ã
- å°å³ã ã使¥å¹çã«ã ãã£ã¯ãã£å¹ãããPDFè¦ãªããæ ¡æ£ã®ããã¹ããæ¸ãã¨ããããããªãã¨ã©ããªã£ã¦ãããã¨ãã20ä¸å¼±ã ã£ããã©ããã ãã®ä¾¡å¤ã¯ååã«ãã£ãã
失æãããã¨
- æ¸ãããå
容ããã詳細ã«ãã¬ã¼ã¯ãã¦ã³ãã¦è¦ç©ããã¹ãã§ãã£ãã
- ãã¼ã¸æ°ã100ãã¼ã¸è¿ãè¨ããã ã
- æ¸ãã®ã«æéããããããããå ·ä½çã«ã¯2å¹´è¿ãããã£ã¦ãããããã¨ãæ¸ããªãããå ¥ããã¨4åãããã¯æ¸ãã¦ãã¨æãã®ã§ãã¹ãã¼ãçã«ã¯ãããªãããã¨ããæ°ãããã®ã ããã¨ã«ãã絶対çãªæéããããéãã§ããã
- ãã±ãã管çã·ã¹ãã ãä»ã®äººã«ä½¿ã£ã¦ãããä½å¶ã«ããã
- æä½ãç ©éã§è² æ ãããã¦ãããªãã£ããï¼redmineã ã£ãã¨ããã®ãè¯ããªãã£ãã¨æããï¼ãã±ããã®å ¥åã¨å¦çã¯ä¸äººã§ãã£ã¦ãä»ã®äººã¯é²æã ãè¦ãããããªæãã«ããã»ããè¯ãã£ãã
- ã¬ãã¥ã¼ã®ç®çãæç¢ºåããã»ããè¯ãã£ãã
- é³å¼ãã¨ãå ¨è§åè§çã®çµ±ä¸ã«é¢ãã¦ã¯ç·¨éããã®ãã§ãã¯ãå¾ã§å ¥ãã¾ããã¨ããã¬ãã¥ã¼ã«ããã¦ããããæéã«ã¯éãããã訳ã§ãæ å ±ãå¾åºãã«ãªããããªãã¨ã¯ã§ããéããããã¹ãã ã£ãï¼çµæ§åªåã¯ããã¤ããã ã£ããã©ãæ¯ãè¿ã£ã¦ã¿ãã¨è¶³ããªãã£ãï¼ã
- æå¾ã®æ¹ã¯ããªãç
®è©°ã¾ã£ãã
- æå¾ã¨ããããå¾åã¯ãã£ã¨ç ®è©°ã¾ããªãã使¥ãã¦ãããè¦ç©ãããçãã£ãããã§ãã©ã¹ãã¹ãã¼ãã®ç²¾ç¥çãªè² æ ãããªããã¤ãã£ãã
失æã¨è¨ãã»ã©ã§ã¯ãªããä½ã¨ãããã»ããè¯ãã£ããã¨
- Linuxã ã¨Acrobat Readerã®æ³¨éæ©è½ãéããã¦è¾ãã£ããWindowsã使ããããã«ãã¦ããã°è¯ãã£ãã
- åç¨ã®ãã©ã³ããè²·ãã°è¯ãã£ãã
- å°å·ã«ä½¿ããããªé¡ã®ãã©ã³ãã§PDFãè¦ãæ¹ããè³ã®éãé¨åã使ããããåé¡ãè¦ã¤ããããããªã¥ã¦ãã³ããªã«ããè²·ãã°è¯ãã£ãã
- æ¸ãä¸ããåã«å®æçã«ç¸è«ã§ãã人ãå ã«ä½ã£ã¦ãããã»ããè¯ãã£ãããããã人ãç£ä¿®è ã¨è¨ãã®ããªãå¼·å¶çã«ãã¼ãã£ã³ã°ã®æ©ä¼ã¨ãè¨ããªãã¨ã人ã«ã¯åºæ¥ä¸ãã£ã¦ããè¦ãããã¨ããæ°æã¡ãå¼·ãã¯ãããï¼ãã®è¾ºãã¯ä¿®è«æ¸ãã¦ãé ãããã¾ã鲿©ãã¦ãªããªâ¦ï¼ãç®æ¬¡ãç´°ãããã¬ã¼ã¯ãã¦ã³ãããããã®ç¶æ ã§å®æçã«è°è«ããã¦ãã人ããããã主ã«é度é¢ã§è¯ãã£ãã¨æãã
å ¨ä½çã«è¦ã¦ã©ãã ã£ãã
ãç· ãåããç ´ã£ããããªã®ã§èªæ¥èªå¾ãªã®ã ããå¾åã¯ããªãè¾ãã£ãããã以å¤ã®ç¹ã¯åãã¦ã®æ¸ç±å·çã¨ãã¦ã¯ã¾ãã¾ããã¾ãè¡ã£ãã®ã§ã¯ãªãããã¨æãããã
ã追è¨ï¼èªåã§è¿½ãè¾¼ã¾ãã¦ããã ãã§ãç·¨éããã¯è±è
ã¡ã³ã¿ã«ãªæè¡è
ã®ãã¨ãããçè§£ãã¦ããï¼ããã社åã«æè¡ã¨å
¥ã£ã¦ããã ãããï¼ãé©åãªå¯¾å¿ãã¨ã£ã¦ããã ãããèªåã«ã¯ãããªä¸å¯§ãªå¯¾å¿ã¯ã§ããªãã¨æãã
売ãè¡ã
ããã£ããããèãããã®ã§æ¹ãã¦æ¸ãã¦ãããæè¡æ¸ã¨ãã¦ã¯å¤åãå²ã¨å£²ãã¦ããï¼ããããWEB+DB Press Plusã·ãªã¼ãºã¨ããæç¹ã§çµæ§ä¸é§ãå±¥ããã¦ããã£ã¦ãæãããï¼æ¹ã§ãããããããå®éã®ã¨ãããå°ç¨çæ´»ã©ããã§ã¯ãªãï¼ããã¦ãã¡ãããããã©ããã®è©±ã§ã¯ãªããåãéãã§ãæã«ãä¿ºã¯æ»ãã ãããªç®ãããªããå·çãã¦ããã ãï¼ï¼ããæè¡æ¸ã¨ããã®ã¯ä¸è¬è«ã¨ãã¦æ¬å½ã«å£²ããªããã®ãªã®ã ãªã¨ãããã¨ãããããã¦å®æããããã¦ããã
ãããããèªåã®å°éæ¸ãè¦ãç®ã¯ã ãã¶å¤ããã¨ããããæ¸©ããè¦ç·ã«ãªãã¨æããåºããã ãã§ãã¨ããããããé å¼µã£ããããçãªâ¦ã
å¬ããã£ããã¨
ãå½ããåã ããèªãã§ããã人ãå®è£
ãã¦ã¿ã人ã®åå¨ãä¸çªå¬ãããæ¸ããç²æããã£ããªã¨æãããæ¬ãèªãã§ããã«é
åä½ã£ã¦ã¿ãã¨ããäººãæ¢ã«2,3人è¦ãããã
ãæç« ã«ããã¨ã»ãã®ä¸æã§ãããªãããã©ããèªè
ã®åå¨ãä¸çªã®çç±ãªã®ã ã¨ãããã¨ããæ¸ãã¦ã¿ã¦å®æã§ãããèªè
ãããªããã°ããã¨ãå°ç¨ã10åã«ãªã£ãã¨ãã¦ããæè¡æ¸ãæ¸ã人ãªãã¦ãã®ä¸ããããªããªãã ããã
ä»ã®äººã«æ¬ãæ¸ããã¨ããããããï¼
ãèªåã¨åãçµé¨ãããã®ã§ããã°ãå§ããªãããã ãèªåã¯æããã«å¤±æããã¨ãããããã®ã§ããã£ã¨å¹çããå·çã§ããã®ãªãã°æ¬ãæ¸ãã®ã¯è¯ãã¨æããèªåèªèº«ããããµãã«çè§£ãã¦ããã¨ããã¯å
¨é¨åå¼·ãç´ããã¨ã«ãªããããããªé·æãæ¸ãè½åãç£¨ãæ©ä¼ã¯æ»
å¤ã«ãªãã
ãã²ã¨ã¤ã¢ããã¤ã¹ãããã¨ããããç·¨éãããæåã«å§ãã¦ãããã¼ã¸æ°ã¯éå»ã®ãããããè¸ã¾ãã¦è¨ç®ããã¦ããããããã®ãã¼ã¸æ°ã«æ¸ãããå
容ãåã¾ããªããªããå
å®¹ã®æ¹ãæ¸ããã¹ãã§ãããã¨éå»ã®èªåã«è¨ãããã
ãã®ä»
ãèªåã¯ããã°ã©ãã³ã°ãå§ããã®ã¯é ãããããã°ã©ãã³ã°é©æ§ãæ®éç¨åº¦ã§ãããªããã¨ãèªè¦ãã¦ããããããã大å¦ã®åºèº«å¦é¨ã¯æ å ±ç³»ã§ã¯ãªãããæ»èªä»ãè«æãæ¡æçã®ä½ãå¦ä¼ã«éãããã¨ããªãã¾ã¾ä¿®å£«ã忥ãã¦ãããã¡ããã¨å¤§å¦é¢ã忥ã§ããæ°ããã¦ããããåã«å°éª¨ãåºãã£ããããªä¸æå¿«ãªæãããã£ãã®ã ããã©ãæ¬ãæ¸ããï¼ä¸éæ§ã®è©ä¾¡ã¯ã©ããããèªåã¨ãã¦ã¯æ¬ã®åºæ¥ã«ã¯æºè¶³ãã¦ãããã¬ãã¥ã¢æ§ã®ãããã§ããããã©ããï¼ããããããèªåã®ä¸ã§ã忥ã¨ãã¦ããããªãã¨ããããåºåãã«ãªã£ãã
追è¨ï¼å¼·èª¿ãã¦ãããããã¨
- æ¥æ¬èªå ¥åãæ¯ããæè¡èªä½ã¯å¹³åããã¯å£²ãã¦ããã¯ãã ãï¼ çµ¶å¯¾çãªæè¡æ¸å¸å ´èªä½ãå°ããã¨ãã話ã ãï¼
- æè¡æ¸ã¯å£²ããªããã¨ããã®ã¯åäººã®æè¦ã ãï¼ ä»ã®äººã®æè¦ã¯ããããªããï¼ ãã¨ãæ¥æ¬ã®æè¡è 人å£ãèããã¨ãããããªãã¨ãæã£ã¦ããï¼
- ä»ã®äººã«å§ããªãã®ã¯æ¸ãã®ãé·æéã«ãªãã¨æ¬å½ã«è¾ãããã ãï¼ ã§ããµã³ãã«ã³ã¼ããåºã¦ãããããªæ¬ã ã¨ãå 容ããµãããã¨å·çãé·æåããã®ã¯ãã¶ãæ®éã®äººã«ã¯é¿ããããªããï¼ æ®éã®äººã¯ãããããå®ããå·çè¨ç»ãç«ã¦ã¦ããæ¸ãå§ããã»ãããããï¼ ããããã®ããªãã¦ããããã¹ãã¼ãã§æ¸ãã天æãããï¼æAå çã¯2é±éã§å·çãããããã¨ããåãèãããã¨ããããï¼ï¼ãã©ãããã人ã®ãã¨ã¯ããã§ã¯èãã¦ããªããï¼
rubyã§pythonã®defaultdictã£ã½ããã®ãå®ç¾ãã
ãPythonã®ããã·ã¥ãã¼ãã«ï¼Pythonã§ã¯dictã¨è¨ãã¾ããï¼ã«ã¯ãåæå¤ãè¨å®ã§ããäºç¨®ã¨ãã¦defaultdictã¨ãããã®ããããRubyã®å ´åãHashã¯ã©ã¹ã«ã¯åæå¤ãè¨å®ã§ããããåæå¤ã¨ãã¦ã¯æ´æ°ãæååãã·ã³ãã«ããããã使ããªããåæå¤ã¨ãã¦é
åã¨ãããã·ã¥ãã¼ãã«ã使ããªãã®ã§ããã
ãããã§ãPythonã®defaultdictã£ã½ããã®ãä½ã£ã¦ã¿ãã以ä¸ã«ã³ã¼ãã示ãã
class DefaultHash < Hash def initialize(init) @init = init end def [](k) v = super k if v v else self[k] = @init.clone end end end a = [1,2,3,4,5,4,3] h = DefaultHash.new(Array.new) a.each{|k| h[k].push 1 } p hash
ãDefaultHash.newã®é¨åãHash.newã«å¤ããã¨ãå¬ããå ´åããã¾ãæãã¤ããªãæãã®æåã«ãªã£ã¦ãããã¨ããããã¨æãã
ãä½ã£ã¦ã¿ãããªã«ãã[]ã¡ã½ããã䏿¸ãããã ãã§ããããnilãfalseãå¤ã¨ãã¦ä½¿ã£ãæã®ãã¨ãå
¨ãèãã¦ããªãã®ã ããã¨ããããåãã®ã§æºè¶³ãã¦ããã
ããã®ã³ã¼ããæ¸ããåæ©ã¯ã以ä¸ã®ãããªã³ã¼ããæ¸ããããªããã¨ãããã®ã§ããã
if h.has_key? k h[k].push 1 else h[k] = [1] end
ããã®ä¾ããããªãå ´ååããæ¸ãã¦ããããã ãã©ãã¡ãã£ã¨è¤éãªæ°ãä¸ããããããªãã¨ããã·ã¥ããã¹ãããããããã¨ããããã£ã¦ããããªãã¨å ´ååãã®ä¸ã«å ´ååããæ¸ããã¨ã«ãªã£ã¦ããããããã¨ã®å²ã«ã³ã¼ããé·ãã¨ããã大仰ã«ãªã£ã¦ãã¾ã£ã¦ãªãã ãæ²ãããã¨ãããã¨ãããããã®ã ã
ãããã©ã«ãã®Hashã§ãHash.new(0)ã¿ããã«åæå¤ãè¨å®ã§ããã®ã ãã©ãåè¿°ã®éããArray.newã¿ãããªã®ã弿°ã«æ¸¡ãã¨ãã¾ããããªãã®ã§ãããããã¯åããªãã¸ã§ã¯ãã使ãï¼ããã§ã®åããã¨ããè¨èã¯ã¡ã¢ãªã¢ãã¬ã¹ãåãã¨ããæå³ã ã¨èãã¦ããããããå¤ãåããã¨ãã§ã¯ãªããåãç©ãæãã¦ããã®ã§ããï¼ã®ãåå ã§ããã
ããªãããã©ã«ãã®æåã§ã¯åæå¤ã¨ãã¦åããªãã¸ã§ã¯ãã使ã£ã¦ããã®ãã¨ããã¨ããå¼ã°ããåº¦ã«æ°ãããªãã¸ã§ã¯ããä½ã£ã¦ããã®ã§ã¯ãåå¨ããªããã¼ã«å¯¾ãã¦ãå¼ã¶åº¦ã«æ°ãããªãã¸ã§ã¯ããä½ããã¨ã«ãªãããã ãããã§ã¯ãå ´åã«ãã£ã¦ã¯ãªã¼ã¯ã«è¿ãæåã示ããã¨ã«ãªã£ã¦ãã¾ããã¨ãã訳ã§ãHashã¯ã©ã¹ã§ã¯åæå¤ï¼ããã©ã«ããªãã¸ã§ã¯ãã¨è¨ãæããã»ããããããããããªï¼ã¯å
±æãããã®ã§ããã
ãvalueãåæå¤ã§ãããããªkeyã¯GCã¿ãããªæãã§å®æçã«deleteããã°ããã®ããªã¼ã¨æãããé¢åãªã®ã§ããã¾ã§ã¯å®è£
ãã¦ãªãã10000åããã[]ãå¼ã°ãããã¹ã¤ã¼ããããã¿ãããªå®è£
ã ã£ããããã©ã¼ãã³ã¹çã«ãææ
¢ã§ãããããã«ãªããã§ã¯ãªããããã¨æããã ãã©ã
