ãã®çµæãã»ãŒ2幎åŸãç§ã¯æçµçã«ãããžã§ã¯ãã®éçºãçµäºããŸããã èšç»éããååããµãŒãã¹ãå Žæãæ€çŽ¢ã§ãããã©ãããã©ãŒã ã«ãªããŸããã ãã¹ãŠã®ããŒã¿ã«ã¯ç¬èªã®æ§é ããããããå€ãã®ç¹æ§ã«å¯ŸããŠè€éãªã¯ãšãªãå®è¡ã§ããŸãã ãŸãããã¹ãŠã®ããŒã¿ã«ã¯ãžãªã³ã³ããŒãã³ããããããžãªæåã®ã¯ãšãªãäœæã§ããŸãã ãåãåããã¯ããããšãã¹ã«ã€ã®è¿ãã«ããŒã«ã®ããããã«ãæ¢ãããªã©ã®1ã€ã®ãã¬ãŒãºãšããŠè¡ãããšããç¹å¥ãªãã£ã«ã¿ãŒã䜿çšããããšãã§ããŸãã
metafindã¯ãã®ãããªæ€çŽ¢ã®äŸã§ã
æ€çŽ¢ã¯ãåäžã®æ€çŽ¢æååã§å§ãŸããŸãã ãªã¯ãšã¹ãã§ã¯ãã¢ãã¬ã¹ãèªç±åœ¢åŒã§æå®ã§ããŸãã äœæãæå®ãããŠããªãå Žåããžãªãã±ãŒã·ã§ã³ã®è©Šè¡ãè¡ãããŸãã æ€çŽ¢çµæã«ã¯ãè²©å£²å ŽæãäŸ¡æ Œãé»è©±çªå·ãäœæãå¶æ¥æéãç®çã®ãããã¯ã«åºæã®ç¹æ§ã§ã°ã«ãŒãåãããååã衚瀺ãããŸãã çµæã«ã¯ãèŠæ±ãçµã蟌ãããã®ããããšãã£ã«ã¿ãŒãå«ãŸããŸãã ããšãã°ãè¬ç©æ€çŽ¢ã¯æ¬¡ã®ããã«ãªããŸãã
![](https://habrastorage.org/storage1/668c97fa/85d02f41/fb4a0a44/8c24d222.png)
é£ã¹ç©ãä»ã®ãããã¯ãæ€çŽ¢ããå Žåãç®çã®ãããã¯ã«åºæã®ä»ã®ãã£ã«ã¿ãŒãè¿œå ã®ç¹æ§ãèªåçã«è¡šç€ºãããŸãã ã¢ãã€ã«çãå©çšå¯èœã§ãïŒ
![](https://habrastorage.org/storage1/253b99f3/a151aa49/00812c32/ebbc4d44.png)
äŸ
çŸæç¹ã§ã¯ã次ã®ãããã¯ã«ã€ããŠã¯ã¢ã¹ã¯ã¯ã®ã¿ã察象ãšãªã¢ã«å«ãŸããŠããŸãïŒ è¬ãšè¬å±ãã¬ãœãªã³ä»£ã®ã¬ãœãªã³ã¹ã¿ã³ããæŽè»ãšãã®ãµãŒãã¹ãATMã決æžç«¯æ«ãããã«ãã«ãã§ãã¬ã¹ãã©ã³ãé£åïŒã¡ãã¥ãŒããïŒãããŒã«ããã±ãããªãã£ã¹ãšãã±ããã
ãã§ã«è¿°ã¹ãããã«ãäŸ¡æ Œåž¯ã«ããæ€çŽ¢ãäœæ¥æéã«ããæ€çŽ¢ãæ€çŽ¢ã®ååŸã®èšå®ãç¹å®ã®ãããã¯ã«åºæã®ç¹æ§ã®èšå®ãªã©ãå€ãã®ç¹æ§ãæã€è€éãªã¯ãšãªãäœæã§ããŸãã 以äžã«äŸã瀺ããŸãã
- ã¯ã¬ã ãªã³è¿ãã®ã«ã©ãªã±ã¬ã¹ãã©ã³ã§ã®ãã©ãã¯ãã£ãã¢
- ããšãè¿ãã®ããŒã«ä»ãããã«
- vykhinoã®çµ±åæŽæµ
- Preobrazhenskaya Square Pool 50ã¡ãŒãã«
- ããŒã·ãã³ã¹ã«ã€è¿ãã®ãã«ã§ATM
- ã¯ã«ã¹ã¯é§ ã§ç ãã森ã®çŸå¥³
ããŒã¿ã«ãã¬ããžã¯ãŸã å®å šã§ã¯ãããŸããã ãåžæã®æ¹ã¯ãããŒã¿ãè¿œå ãããªã¯ãšã¹ããæ®ãããšãã§ããŸãã
ãªããã©ãããã©ãŒã ãªã®ãïŒ
ãªããªãä»ã§ã¯ãµã€ããšãµãŒãã¹ã®è€åäœå šäœã ããã§ãã
- æ€çŽ¢ãµãŒãã¹èªäœãšãã®ãªãŒãã³APIã ããã«ã¯ããµã€ãããã®ããŒã¿ã«ã€ã³ããã¯ã¹ãä»ããããŒã¿æ§é ãç£èŠãµãã·ã¹ãã ãªã©ã解æããã¹ãã€ããŒãå«ãŸããŸããã¹ãã€ããŒã¯eyes玢奜ããªç®ã«ã¯èŠããŸããã
- metafind.ruã¯ããã¹ãŠã®æ€çŽ¢æ©èœãå®èšŒããã¡ã€ã³ã®æ€çŽ¢ãšã³ãžã³ã§ãã ãã©ã¹ã¢ãã€ã«ããŒãžã§ã³ã
- SMSãµãŒãã¹-SMSã§æ€çŽ¢ã¯ãšãªãå®è¡ããæ©èœã å¿çãšããŠã倧ããªã¡ãã»ãŒãžïŒã»ãšãã©ã®å Žå5ã€ã®éšåïŒãæ€çŽ¢çµæãšãšãã«éä¿¡ãããŸãã éä¿¡ã®è²»çšã¯ãä»å 䟡å€çšãå«ããŠçŽ3.5ã«ãŒãã«ã§ãã ã¡ãã»ãŒãžã®äŸïŒãããŒã·ãã³ã¹ã«ã€ã®è¿ãã«ãããºãã«ãã³ã¯ã®ATMãæ€çŽ¢ããŠãã ãããã æåå€æãæžãããšãã§ããŸãã
- playground.metabus.ru -APIããã¹ãããããã®ãµã³ãããã¯ã¹ã APIã䜿çšããæ¢è£œã®äŸã衚瀺ãç·šéãå®è¡ããããã°ã§ããŸãã
- export.metabus.ru-ããŒã¿ãšã¯ã¹ããŒããµãã·ã¹ãã ã ããšãã°ãæ€çŽ¢ã¯ãšãªãä¿åããRSSãã³ãã¬ãŒããéžæããŠãRSSãªãŒããŒã®æ€çŽ¢çµæããæ°ãã補å/ãµãŒãã¹/å Žæãåãåãããšãã§ããŸãã æ¢åã®ãã³ãã¬ãŒãã䜿çšããŠãç¬èªã®ãã³ãã¬ãŒããäœæã§ããŸãïŒXSLTäžïŒã
- docs.metabus.ru-éçºè åãã®ããã¥ã¡ã³ãã
ããŒã¿ã¯å¿ èŠãªãµã€ãããã€ã³ããã¯ã¹ä»ããããŸãïŒç¹å®ã®ãããã¯ã®ãµã€ãã®ã¿ãã€ã³ã¿ãŒãããå šäœã®ã€ã³ããã¯ã¹åã«åé¡ã¯ãããŸããïŒã ããã¯ããœãŒã¹ïŒéè¡ãã«ãã§ã®å ¬åŒãµã€ããªã©ïŒãŸãã¯ã¢ã°ãªã²ãŒã¿ãŒãµã€ãïŒããŒã«ãæŽè»ã®ââãªã¹ãããããµã€ããªã©ïŒã®ããããã§ãã ãããããããã«ããŠããç§ã¯åžžã«æ å ±æºãžã®ãªã³ã¯ãåºããããŒã¿ã®åäœè ã䞻匵ããŸããã ã»ãšãã©ã®ãœãŒã¹ã§ã¯ãããŒã¿ã¯1æ¥ã«1åæŽæ°ãããŸãã ä»åŸæ°å¹Žéã«ããã£ãŠãé¢å¿ã®ããçµç¹ãAPIïŒãŸãã¯äŸ¡æ Œè¡šïŒã䜿çšããŠããŒã¿ã®ã¢ããããŒããéå§ããæ€çŽ¢ã€ã³ããã¯ã¹ã«ãªã¢ã«ã¿ã€ã ã§è¿œå ãããããã«èšç»ããŠããŸãã ãã®æ©èœã¯æ¢ã«å®è£ ãããŠããŸãããéèŠãäžè¶³ããŠããããããŸã å ¬éãããŠããŸããã
ãã§ã«APIã䜿çšããŠãããŸããŸãªæ€çŽ¢ãµãŒãã¹ãå®è¡ã§ããŸãã æ¢åã®ãµã€ãã«æ€çŽ¢ãåã蟌ã¿ãããŒãå¥ã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãœãŒã·ã£ã«ãããã¯ãŒã¯çšã®ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã ããšãã°ãè¬ã®æ€çŽ¢ããã¹ãããããã«ãè¬ãšè¬å±ã®ã¿ãæ€çŽ¢ãããã©ãŒã ãäœæããŸããã
![](https://habrastorage.org/storage1/0cfb08b4/e8150a40/11aa9c27/4649a569.png)
éçº
ãã®ãããžã§ã¯ãã¯ãã»ãŒ2幎ééçºäžã§ãã ããŒã ãªããç§ã¯äžäººã§åããŠããŸãã æåã«äœ¿çšããã.NETããã³MSSQLãµãŒããŒã 1ãæååŸããããã®æè¡ã¯ç§ã®åé¡ã解決ããã®ã«é©ããŠããªãããšã«æ°ã¥ããJavaã«åãæ¿ããŸããã 誀ã£ãŠãã¯ãããžãŒãæãäžããŸãããæåã®ããŒãžã§ã³ã¯ãHadoopãHBaseãããã³Luceneã䜿çšããŠäœæãããŸããã Thriftã¯ãã¢ãžã¥ãŒã«éã§ããŒã¿ã亀æããããã®ãããã³ã«ãšããŠäœ¿çšãããŸããã çŸåšãæè¡çåºç€ã¯MongoDBãšApache Solrã®çµã¿åããã§ãã ãã¹ãŠã®ãµã€ãã¯Google App Engineã¯ã©ãŠãã§åäœããŸãã ãã©ãããã©ãŒã èªäœã¯1ã€ã®å°çšãµãŒããŒïŒHetznerã®EQ4ïŒã§å®è¡ãããã¹ãã€ããŒã¯å¥ã®ãµãŒããŒïŒãŸãEQ4ïŒã§å®è¡ãããŸãã ç§ã¯äžäººãªã®ã§ããã¹ãŠãæ倧éã«èªååããããšã«ããŸãããç¬ç«ããCIãµãŒããŒãåäœãïŒHetznerã§ãåäœããŸãïŒãå€ãã®ãŠããããæ©èœãã¹ããçµ±åãã¹ããè¡ããŸããã éçºããã³æŠéç°å¢ã«é¢ããå ¬éã¯å®å šã«èªååãããŠããŸãã ãŸããå éšç®çã®ããã«ãNodeJSãç©æ¥µçã«äœ¿çšãããŸãã ãµãŒããŒã¯Ubuntu Server 10.10ã§å®è¡ãããŸãã
æ§èœ
ãµãŒããŒãhabraeffectããèœã¡ãããšã¯ã»ãŒç¢ºå®ã§ãã ãã¹ããè©Šã¿ãŸããããã¹ãŠã®ãµã€ãã¯Google App Engineã§ãã¹ããããŠããããã¹ãããæå³ã¯ãããŸããã ïŒJavaScriptã§ïŒAPIã®è² è·ããã¹ãããããšã¯æ®ã£ãŠããŸãããããã¯ããè€éã§ãïŒå€ãã®åºæã®ããããå®éã®ãªã¯ãšã¹ããéä¿¡ããå¿ èŠããããŸãïŒã çè«çã«ã¯ãã¢ãŒããã¯ãã£ã«ããã©ãŒãã³ã¹ã®ããã«ããã¯ã¯ãªãããã¹ãŠã®ããŒããæ°Žå¹³ã«ã¹ã±ãŒãªã³ã°ã§ããŸãã ããããããŒã¿ããŒã¹ãæ€çŽ¢ã€ã³ããã¯ã¹ãã¢ããªã±ãŒã·ã§ã³ã®WebãµãŒããŒãªã©ããã¹ãŠãåããµãŒããŒã§ãã¹ããããããã«ãªããŸããã è¯ãæ¹æ³ã§ã¯ããã¹ãŠãè€æ°ã®ãµãŒããŒã«åæ£ããå¿ èŠããããŸãããããã¯habraå¹æã®æç¶æéã®ã¿ã«è¡ãããšã¯ãå§ãã§ããŸããã
å³ããçŸå®
å®éã«ã¯ãå€ãã®ãŠãŒã¶ãŒã¯ããã©ãŠã¶ãŒã®ã¢ãã¬ã¹ããŒã®ååšã«ã€ããŠãç¥ããŸããã Yandex / Googleã®ã¿ããããŸãã ã€ã³ã¿ãŒãããã¯ãããããå§ãŸããŸãã ã¡ã¿ãã¹ãä»ããŠååããµãŒãã¹ãæ€çŽ¢ããæ¹ãã¯ããã«äŸ¿å©ãªå Žåã§ãããããè¡ãããã«ãŠãŒã¶ãŒããã¬ãŒãã³ã°ããããšã¯éåžžã«å°é£ã§ãã Yandex / Googleã䜿çšããŠãã¹ãŠãæ€çŽ¢ããç¿æ £ããããŸããããã«ã€ããŠäœãããå¿ èŠã¯ãããŸããã ãŸãã¯ãããã¢ãŒã·ã§ã³ã«æ°çŸäžãè²»ãããŸãã ãŸãã¯ãä»ã®æ¹æ³ãæ¢ããŸãã
å ã»ã©èšã£ãããã«ããããžã§ã¯ãããååããµãŒãã¹ã®åäžæ€çŽ¢ããšããŠå®£äŒããããšã¯éåžžã«å°é£ã§ãã ããŒãå¥æ€çŽ¢ãšã³ãžã³ãããŒãå¥ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããœãŒã·ã£ã«ãããã¯ãŒã¯çšã¢ããªã±ãŒã·ã§ã³ãäœæããŠãåé²ããäºå®ã§ãã ãŸããã¢ãã£ãªãšã€ããããã¯ãŒã¯ãéçºããäºå®ã§ãã åæã«ãåäžã®æ€çŽ¢ãšã³ãžã³ïŒçŸåšã¯ã¡ã¿æ€çŽ¢ïŒãåŒãç¶ãæ©èœããåŸã ã«å€ãã®ããŒã¿ãèç©ãããŸãã
ç§ã®ç®æšã¯ãååããµãŒãã¹ãããã³è³Œå ¥å¯èœãªå Žæã®ããã®äŸ¿å©ãªåäžã®å°çæåæ€çŽ¢ãšã³ãžã³ãäœæããããšã§ãã 銬鹿ããŠããããã«èãããŸãããããŒã¿ããŒã¹ã«ã¯ããŠã©ãžããŒã«å°åã®å»ºèšåžå Žã®ã¢ã€ãã ããã¢ã¹ã¯ã¯ã®ã¬ã¹ãã©ã³ã®ã¡ãã¥ãŒãŸã§ããã¹ãŠã®ããŒã¿ã絶察ã«å«ãŸããŠããå¿ èŠããããŸãã ãããŠããããªãã§ãããã å¥ã®ããšã¯ãããã«ã§ã¯ãªããããããç§ã«ãšã£ãŠã¯æ²ããããšã§ãããããã¯æ€çŽ¢å·šäººã«ãã£ãŠè¡ãããå¯èœæ§ãé«ãããšã§ãã å°æ¥çã«é»è©±ããããå¿ èŠã¯ãããŸãããã€ã³ã¿ãŒãããäžã®ã©ããæ€çŽ¢ãããã¯æ確ã§ã¯ãããŸãããããã«ãåžæãã補åããµãŒãã¹ãèŠã€ããããã«ãå®éã®å Žæã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸããã çµç¹ãããŒã¿ãã¢ããããŒãããç¹å®ã®çµ±äžããŒã¿äº€æãã¹ããããå€ãã®ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãããã³ãµã€ãããã®ããŒã¿ãæ€çŽ¢ãåæãããã³åŠçã«äœ¿çšããŸãã ãããŠãããã¯ã©ãã«ã§ããããŸãã
ç³ãåº
ãã®ãããžã§ã¯ããæ°ã«å ¥ã£ãããããããçš®é¡ã®ååã®æºåãã§ããŠããããã§ãã
- ãã¡ããã ããŒã¿ ïŒæå°èŠä»¶ãæºããïŒãè¿œå ããããéœåžãåœã®ãããã¯ãã«ããŒãããããæºåã¯ã§ããŠããŸãã ããã¯ããªãã«äœãäžããŸããïŒ ããã«ãããããŒã¿ã®äŸ¿å©ãªæ€çŽ¢ïŒã¡ã¿æ€çŽ¢ãããã³APIã«æ¥ç¶ãããŠããä»ã®ãã¹ãŠã®ãµãŒãã¹ïŒãå®è¡ã§ããŸãã ãããã£ãŠããµã€ããžã®ãã©ãã£ãã¯ãå¢å ããŸãã
- Webãµã€ã/ã¢ãã€ã«ã¢ããª/ãœãŒã·ã£ã«ã¢ããªãäœæã§ããŸãã ãããã¯ãŒã¯ã é«å質ã§æŽæ°ãããã³ã³ãã³ãã䟿å©ãªæ€çŽ¢ãSMSã«ããæ€çŽ¢æ©èœãæäŸããŸãã ã¢ããªã±ãŒã·ã§ã³ãäœæããŠããŸãã äŸïŒãã¹ãŠã®ã¬ãœãªã³ã¹ã¿ã³ãããã¹ãŠã®è»ã®æŽæµããã¹ãŠã®è»ã®ãµãŒãã¹ã亀éèŠå¯çœ²ãªã©ãããèªåè»æ奜家åãã®ã¢ããªã±ãŒã·ã§ã³ãç¹°ãè¿ããŸããããŒã¿ã®å¯Ÿè±¡ã¯äœã«ãã£ãŠãå¶éãããŸããã
- ç§ããåãåã£ãããŒã¿ã«åºã¥ããŠã貎éã§é«åºŠã«å°éåãããæ å ±ãããããŒã¿ã«ãäœæã§ããŸãã äŸïŒäŸ¡æ Œãååãåšåº«ç¶æ³ãªã©ãã客æ§ã®å°åã®éå±è£œåã®ãµãã©ã€ã€ãŒ/ã»ã©ãŒã®ãµã€ããã詳现ãªããŒã¿ãåéããŸãã éå±äŸ¡æ Œãå ¥æå¯èœæ§ãæ€çŽ¢ãªã©ã«é¢ããããŒã¿ã䜿çšããŠããŒã¿ã«ãäœæããŸããä»ã®åéã§ãåãããšãã§ããŸããèªåè»éšåã建ç¯ææãªã©ã®æ€çŽ¢ã§ãã
- é¢é£ããããŒã¿ãé 眮ã§ããç¹å®ã®ãªãœãŒã¹ãæ¢ã«ãããŸãã ããšãã°ãããªãã¯å¥åº·/çŸå®¹ããã°ãæã£ãŠããŸãã è¬ãèšåãããŠããèšäºã§ã¯ãäŸ¡æ Œã®ãããŠãããããŸãã¯ãããã®è¬ãè³Œå ¥ã§ããæå¯ãã®è¬å±ã®ãŠããããè¿œå ã§ããŸãã é³æ¥œã¹ã¿ãŒã«ã€ããŠã®ãªãœãŒã¹ã¯ãããŸããïŒ ãã¥ãŒãžã·ã£ã³ã®ãããã¡ã€ã«ã§ã¯ã次ã®ã³ã³ãµãŒãã®ãã±ããã®äŸ¡æ ŒãŸãã¯ãããã®ãã±ãããè³Œå ¥ã§ããå Žæã«ãããã¯ãè¿œå ã§ããŸãã ãããŠããµãŒããŒåŽã§ã®å€æŽãªãã§ããããã¹ãŠãè¡ããŸãã HTMLããã³JavaScriptã³ãŒããéçã«æ¿å ¥ããã ãã§ãã
- 補åããã¢ãŒã·ã§ã³ãµã€ããäœæããå Žåããã®è£œåãè³Œå ¥ã§ããå Žæã®æ€çŽ¢ãã©ãŒã ãé 眮ã§ããŸãã ãŸãã¯ããã®è£œåã®äŸ¡æ Œæ å ±ã
ãã®ãããªãµãŒãã¹ãä¿é²ã§ãã人ã ãJavaãŸãã¯JavaScriptããã°ã©ããŒããã¶ã€ããŒããã¹ã¿ãŒããã®ä»ã®æ¯æŽè ãšåæ¥çããã³éå¶å©çã«ååã§ããããšãå¬ããæããŸãã
ç¹°ãè¿ããŸã ãªã¯ãšã¹ãã«å¿ããŠã圌ãã¯ãã¹ãŠãæ¢ããŠããããšãããããŸã-è¬ãšè¬å±ãã¬ãœãªã³ã¹ã¿ã³ãã®ã¬ãœãªã³ã¹ã¿ã³ããæŽè»ãšãã®ãµãŒãã¹ãATMãæ¯æãã¿ãŒããã«ãããã«ãã«ãã§ãã¬ã¹ãã©ã³ãé£ã¹ç©ïŒã¡ãã¥ãŒããïŒãããŒã«ããã±ãããªãã£ã¹ããã±ããã®ã¿ãæ€çŽ¢ã§ããŸãã ã¢ã¹ã¯ã¯ã®ã¿ã