ãµãŒããŒã®ç Žå£ã䌎ãã¬ãŒã¶ãŒã¯ãšã¹ããã©ã®ããã«èšç»ãããããåŒãç¶ããäŒãããŸãã åããéå§
ã²ãŒã ã®ããã¯ãšã³ãã«ã¯åèš 6 ã€ã®ã¢ãŒããã¯ã㣠ãŠããããããããã®èšäºã§ã¯ãããåæããŸãã
- ã²ãŒã ã¡ã«ããºã ãæ åœããã²ãŒã ãšã³ãã£ãã£ã®ããã¯ãšã³ã
- VPS äžã®ããã¯ãšã³ããšãµã€ãã®ããŒã¿äº€æãã¹
- ããã¯ãšã³ããªã¯ãšã¹ãïŒã²ãŒã èŠçŽ ïŒããArduinoããã³çŸå Žã®ããŒããŠã§ã¢ãžã®ãã©ã³ã¹ã¬ãŒã¿
- ãªã¬ãŒã®å¶åŸ¡ãæ åœãã Arduino ã¯ããã©ã³ã¹ã¬ãŒã¿ããã³ãã³ããåãåããå®éã®äœæ¥ãå®è¡ããŸããã
- å®éã®ããã€ã¹: ãã¡ã³ãã¬ãŒã©ã³ããããã¢ã©ã³ããªã©ã
- ããã³ããšã³ã - ãã¬ã€ã€ãŒãããã€ã¹ãå¶åŸ¡ãã Falcon Web ãµã€ãèªäœ
ãããããèŠãŠã¿ãŸãããã
ã²ãŒã ãšã³ãã£ãã£ã®ããã¯ãšã³ã
ããã¯ãšã³ãã¯ã¹ããªã³ã° ããŒã ã¢ããªã±ãŒã·ã§ã³ãšããŠå®è£ ãããŸãããããã¯ãšã³ãã«ã¯ãããã€ãã® REST ã³ã³ãããŒã©ãŒãWebSocket ãšã³ããã€ã³ããããã³ã²ãŒã ããžãã¯ãåãããµãŒãã¹ããããŸããã
ã³ã³ãããŒã©ãŒã¯ XNUMX ã€ã ãã§ããã
- ã¡ã¬ããã³ã çŸåšã® Megatron ããŒãžã¯ãé»æºãå ¥ããåãšåŸã® GET ãªã¯ãšã¹ãã«ãã£ãŠéä¿¡ãããŸããã ã¬ãŒã¶ãŒã¯ POST ãªã¯ãšã¹ããéããŠçºå°ãããŸããã
- ããŒãžåã§æäŸãããããã«ãã«ã ããŒãžããããã³ã°ããŸãã ãã«ãã¯ãå ã®ååã§ã¯ãªããå éš ID ãšã³ã³ãã©ã€ã¢ã³ã¹æ å ±ãå«ããšã¯ã¹ããŒãçšã®ããŒãžãçæããŸãã
- æ¬äŒŒé«è² è·ãµãŒã㌠ãã£ããã£ãæäŸãããã£ãã㣠ã³ã³ãããŒã©ã
Websocket ãšã³ããã€ã³ãã¯ãã©ã³ããã¬ãŒã©ã³ããæçŽãªã©ã®ã¬ãžã§ãããå¶åŸ¡ããããã«äœ¿çšãããŸããã ããã¯ãããã€ã¹ã®çŸåšã®ã¹ããŒã¿ã¹ (ãªã³ããªãããã¢ã¯ãã£ããã©ãããå£ã«çŸåšç¹ç¯ããŠããæåã®è²) ããã¹ãŠã®ãã¬ã€ã€ãŒã«åæããŠè¡šç€ºããããã«éžæãããŸããã ã¬ãŒã¶ãŒããªã³ã«ããã¿ã¹ã¯ãå°ãé£ããããããã«ãåããã°ã€ã³åãšãã¹ã¯ãŒã admin/admin ã䜿çšããŠã¬ãŒã©ã³ããšã¬ãŒã¶ãŒã«æš©éãè¿œå ããŸããã
ãã¬ã€ã€ãŒã¯è±èŒªããªã³ã«ããŠãã¹ãããã¬ãŒã¶ãŒã§åãããšãç¹°ãè¿ãããšãã§ããŸãã
ãã¬ã€ã€ãŒãäžå¿ èŠãªéžæã§èŠãããªãããããã®ãããªç°¡åãªãã°ã€ã³ ãã¹ã¯ãŒãã®ãã¢ãéžæããŸããã
ãã®ã¿ã¹ã¯ãããå°ãé¢çœãããããã«ãmongodb ã®ãªããžã§ã¯ã ID ãã«ãŒã å ã®ããã€ã¹ ID ãšããŠäœ¿çšãããŸããã
ObjectId ã«ã¯ã¿ã€ã ã¹ã¿ã³ããå«ãŸããŸããXNUMX ã€ã®ã©ã³ãã ãªå€ã®ãã¡ XNUMX ã€ã¯ããã€ã¹èå¥åã«åºã¥ããŠååŸããããã XNUMX ã€ã¯ãããçæããããã»ã¹ã® PID ãšã«ãŠã³ã¿ãŒå€ã«åºã¥ããŠååŸãããŸãã ã¬ãŒã¶ãŒ ããã€ã¹èå¥åã®éžæãããèå³æ·±ããã®ã«ãªãããã«ãèå¥åãäžå®ã®ééã§ç°ãªã PID ããã»ã¹ã§çæããããå ±éã®ã«ãŠã³ã¿ãŒã䜿çšããããšèããŸããã ããããæçµçã«ã¯ã誰ããã«ãŠã³ã¿å€ã®ã¿ãç°ãªãèå¥åããéå§ããŸããã ããã«ãããæé ãåçŽã«ãªããããŠãobjectId æ§é ã®åæãäžèŠã«ãªã£ãå¯èœæ§ããããŸãã
ããã¯ãšã³ããªã¯ãšã¹ãããã®ãã©ã³ã¹ã¬ãŒã¿ãŒ
ã¹ã¯ãªãã㯠RabbitMQ ãã¥ãŒã«æ¥ç¶ãããã¥ãŒãã Arduino ã«ãªã¯ãšã¹ãã転éããŸããã ãŸããå¹³è¡å ã¹ã€ããã³ã°ã®ããžãã¯ãå®è£ ãããŠããŸããããã€ãã®ããã€ã¹ãšé£åããŠããããã®ã©ã€ããç¹ç¯ããŸããããšãã°ãæåã«ã¡ã¬ããã³ã«é»åãäŸçµŠããããšãã¹ããŒãž ã©ã€ãã§ç §ããããŸãã ã·ãŒã³å šäœã®æ ç»æ®åœ±ã®ããã®ç §æãã¶ã€ã³ã«ã€ããŠã¯ããããžã§ã¯ãã®å ±åãããã¥ãŒãµãŒå Œãããã¯ã·ã§ã³ ãã¶ã€ããŒã§ããã€ãªã€ ã»ããã®çŽ æŽãããä»äºã«ã€ããŠã¯å¥ã®èšäºã§èª¬æããŸãã
翻蚳è ã¯ãã¿ã€ããŒã䜿çšããŠã·ã¥ã¬ãããŒãèµ·åãããã®ç»åããã¬ãã«éä¿¡ããããžãã¯ãæ åœããŸãããã·ã¥ã¬ãããŒèµ·åã®ã¿ã€ããŒãå«ã³å£°ããããã«ããã©ãã²ãŒã çµäºæã®ã³ããŒã·ã£ã«ãªã©ã§ãã
ã¡ã¬ããã³ ããŒã¯ã³ãçæããããžãã¯ã¯ã©ã®ããã«æ§æãããŠããã
ãã¹ãã·ã§ãã
25 ç§ããšã«æ°ããããŒã¯ã³ãçæããã10/10 ã®åºåã§ã¬ãŒã¶ãŒã 255 ç§éãªã³ã«ããããã«äœ¿çšã§ããŸããã ãžã®ãªã³ã¯
ãã®åŸãã¬ãŒã¶ãŒã¯ 1 åéå·åŽãããŸããããã®éãã¬ãŒã¶ãŒã¯äœ¿çšã§ããªããªããæ°ããã·ã§ããã®ãªã¯ãšã¹ãã¯åãä»ããããŸããã§ããã
ãã®ãã¯ãŒã¯ããŒããçŒãåãã«ã¯ååã§ã¯ãããŸããã§ããããã©ããªãã¬ã€ã€ãŒã§ãã¡ã¬ããã³ãçºå°ããã¬ãŒã¶ãŒããŒã ãåäœããã®ãèŠãããšãã§ããŸããã
ããŒã¯ã³ã®çæã«ã¯ MD5 ããã·ã¥ ã¢ã«ãŽãªãºã ã䜿çšãããŸããã ãããŠèšç»ã¯ããŸããããŸãã MD5 + ã«ãŠã³ã¿ãŒ + ã·ãŒã¯ã¬ããããã® MD5 æŠéããŒã¯ã³ã®å Žåããã¹ã ããŒã¯ã³ã®å Žåã¯ã·ãŒã¯ã¬ãããªãã
MD5 ã¯ãåŸæŽè ã§ãã Pavel ãè¡ã£ãåçšãããžã§ã¯ããžã®åç §ã§ãã ã»ãã®æ°å¹Žåããã®ãããžã§ã¯ãã§ã¯ MD5 ã䜿çšãããŠããŸããããMD5 ã¯æ代é ãã®æå·åã¢ã«ãŽãªãºã ã§ãããšãããžã§ã¯ã ã¢ãŒããã¯ãã«äŒãããšãããMD5 ãã MDXNUMX ã䜿çšãå§ããŸããã ç§ãã¡ãå¯èœãªéãåå¿è ã®ãããžã§ã¯ããäœãããšã«æ±ºããã®ã§ã圌ã¯ãã¹ãŠãèŠããŠããŠãå°ãåèã«ããããšã«ããŸããã
ã³ã³ãããã·ã§ãã
ã¡ã¬ããã³ã®æŠéã¢ãŒã㯠100% ã¬ãŒã¶ãŒåºå 3 ã¯ããã§ãã ããã¯ãéããä¿æããŠããããŒããçŒãåãã氎槜ãç Žå£ãããµãŒããŒã«æ°Žã浞氎ããã®ã«ååãª2åéã§ãã
ç§ãã¡ã¯ãããžã§ã¯ãã® Github ã«ããã€ãã®ãã³ããæ®ããŸãããããã¯ããã¹ã ããŒã¯ã³ãšæŠéããŒã¯ã³ãåãã«ãŠã³ã¿ãŒ ã€ã³ãžã±ãŒã¿ãŒã«åºã¥ããŠçæãããããšãç解ã§ããããŒã¯ã³çæã³ãŒãã§ãã æŠéããŒã¯ã³ã®å Žåãã«ãŠã³ã¿ãŒå€ã«å ããŠãœã«ãã䜿çšãããŸãããããã¯æåŸã® XNUMX æåãé€ããŠã»ãŒå®å šã«ãã®èŠæšã®å€æŽã®æŽå²ã«æ®ã£ãŠããŸãã
ãã®ããŒã¿ãç¥ã£ãŠãããšãå¡©ã®æåŸã® 2 ã€ã®èšå·ãåé¡ããããšãã§ããå®éã«ã16 é²æ³ã«å€æããã Lost ã®æ°å€ã䜿çšãããŠããããšãããããŸããã
次ã«ããã¬ã€ã€ãŒã¯ (ãã¹ã ããŒã¯ã³ãåæããŠ) ã«ãŠã³ã¿ãŒå€ãååŸãã次ã®ã«ãŠã³ã¿ãŒå€ãšåã®ã¹ãããã§éžæãããœã«ãã䜿çšããŠæŠéããŒã¯ã³ãçæããå¿ èŠããããŸããã
ã«ãŠã³ã¿ã¯ãã¹ãã·ã§ããããšã« 25 ç§ããšã«åçŽã«å¢å ããŸãã ããã«ã€ããŠã¯ã©ãã«ãæžããŠããŸããããã²ãŒã å ã®ã¡ãã£ãšãããµãã©ã€ãºã§ããã¯ãã§ããã
ãã£ããã£ã€ã³ã¿ã©ã¯ã·ã§ã³ãµãŒãã¹
ã²ãŒã ã®äžçã§ã¯ãããã¯ãã¡ã³ããªã³ã«ããŠãã³ãä»ãã®ããªãããã£ãŒããéãããã«ããŒãããå¿ èŠããããã£ããã£ãšåããã®ã§ããã ã«ã¡ã©ã®é£ã«ã¯è² è·ç£èŠæ©èœãåããã©ãããããããããŸããã
æåŸã® 5 ç§éã«ãã£ããã£ã衚瀺ãããªã¯ãšã¹ãã 50 件ãè¶ ããå Žåãè² è·ã¯åºå® + ã©ã³ãã ãªã¹ãããæ°ã ãå¢å ããŸãã 100% ã®è² è·ã XNUMX åã§éæã§ããèšç®ã«ãªããŸãã
å®éããµãŒãã¹ã«ã¯æçµã²ãŒã ã§è¡šç€ºããããã®ãããå€ãã®ããžãã¯ããããŸãããCPU ãã¡ã³ã®å転ã®ã¿ãèŠããããã«ã¢ãã¿ãŒãé 眮ããŸããã
ã¯ãšã¹ãã®éå§æã«ã圌ã㯠Falcon ã® Web ãµã€ããã Grafan ã«ã¢ã¯ã»ã¹ã§ããããã«ããããšèããŠããŸããã ãã ããããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ ã¬ããŒãããã®ã¹ããªã³ã°ããŒã ã¡ããªãã¯ãå«ãŸããŠãããã¯ãªãŒã³ã¢ããããæéããªãã£ããããã¢ã¯ã»ã¹ããããã¯ããããšã«ããŸããã ããããã®ã¯ããã¯ãšã¹ãã®éå§æç¹ã§ãããäžéšã®ãã¬ã€ã€ãŒã¯ã¢ããªã±ãŒã·ã§ã³ã Springboot ãã¬ãŒã ã¯ãŒã¯ã§èšè¿°ãããŠãããšæšæž¬ããããã€ãã®ãµãŒãã¹ã®ååã調ã¹ããããŸããã
ãã¹ãã£ã³ã°ãšããŒã¿ãã¹
ããã¯ãšã³ããããµã€ã (RabbitMQ ãå®è¡ãããŠãã VPS ãµãŒããŒ) ã«æ å ±ã転éããããã®ããŒã«ã
ããã¯ãšã³ããšããŒã¿ãã¹ã¯ãªã³ã®ãŸãŸã§ãã
DDoSa ãããµãŒããŒãä¿è·ããããã«ãCloudflare ã䜿çšããŸããã
VPS ããã¹ãŠã«æ¬æãæã£ãŠèãããšèšãã®ã¯äŸ¡å€ããããŸãã
ãªã¬ãŒã®å¶åŸ¡ãæ åœãã Arduino ã¯ããã©ã³ã¹ã¬ãŒã¿ããã³ãã³ããåãåããå®éã®äœæ¥ãå®è¡ããŸããã
ããã¯ããããžã§ã¯ãã®ããŒããŠã§ã¢éšåã«é¢ãã次ã®èšäºã®ãããã¯ã§ããããã¯ãšã³ãã¯ãç¹å®ã®ãªã¬ãŒããªã³ã«ãããªã¯ãšã¹ããéä¿¡ããã ãã§ãã ããŸããŸãããã¯ãšã³ãã¯ã»ãŒãã¹ãŠã®ãšã³ãã£ãã£ãèªèããŠãããããã¯ãšã³ãããã®ãªã¯ãšã¹ãã¯ããã®ãšã³ãã£ãã£ããªã³ã«ãããããã«èŠããŸããã ããã¯ãµã€ãã®åæãã¹ãã®ããã«è¡ããŸãã (ãŸã ãã¹ãŠã® Arduino ãšãªã¬ãŒãçµã¿ç«ãŠãŠããŸããã§ãã)ãæçµçã«ã¯ãã¹ãŠãã®ãŸãŸã«ããŸããã
ããã³ããšã³ã
ç§ãã¡ã¯ãã«ãã䜿ã£ãŠãµã€ããããã«äœæããŸãããæèŠæé㯠30 å¶æ¥æ¥ã§ãäºç®ã¯ XNUMX ãã«ç¯çŽã§ããŸããã
åœåã¯ãåçŽã«ãµã€ãããšã¯ã¹ããŒãããŠäžè¶³ããŠããããžãã¯ãè¿œå ããããšãèããŠããŸãããããããçŠæ¢ããå©çšèŠçŽã«ééããŸããã
ç§ãã¡ã¯ã©ã€ã»ã³ã¹ã«éåããæºåãã§ããŠããªãã£ãã®ã§ãXNUMX ã€ã®éžæè¢ããããŸããããã¹ãŠãèªåãã¡ã§å®è£ ããããTilda ã«çŽæ¥é£çµ¡ããŠãããžã§ã¯ãã«ã€ããŠè©±ããã³ãŒããå€æŽããèš±å¯ãåŸããã§ãã
ç§ãã¡ã¯ XNUMX çªç®ã®ãªãã·ã§ã³ãéžæããŸãããã圌ãã¯éäžãŸã§äŒã£ãŠããã ãã§ãªããXNUMX 幎éã®ç¡æã®ããžãã¹ ã¢ã«ãŠã³ããäžããŠãããŸãããããã«ã¯éåžžã«æè¬ããŠããŸãã 圌ãã« Sokol ã® Web ãµã€ãã®ãã¶ã€ã³ãèŠããã®ã¯éåžžã«ããã¡ãªãã£ãã
ãã®çµæãåºæ¬çãªããã€ã¹ã«ãªã¯ãšã¹ããéä¿¡ããããã«ããã³ããšã³ãã« js ããžãã¯ãè¿œå ããã²ãŒã èŠçŽ ããªã³ãŸãã¯ãªãã«ããããã®ãã¿ã³ã®ã¹ã¿ã€ã«ããããã«å€æŽããŸããã
ãŠã§ããµã€ãã®ãã¶ã€ã³
æ€çŽ¢ã®æŽå²ã«ã€ããŠã¯å¥ã®ç« ã§èª¬æããŸãã
ç§ãã¡ã¯ãåãªãæ代é ãã®ãµã€ãã§ã¯ãªãããã¶ã€ã³ã®åºæ¬ã«ãŒã«ããã¹ãŠéåããããŸã£ããäžå¿«ãªãµã€ããäœãããã£ãã®ã§ãã åæã«ãä¿¡ææ§ãç¶æããããšãéèŠã§ãããè³éŒ»åœåç§ã®ã¹ããŒãªãŒãå£ããŠã¯ãªãããèè ã®å²æ ¢ããå®èšŒããå¿ èŠãããããã¬ã€ã€ãŒã¯ãã®ãããªãµã€ããååšããã¯ã©ã€ã¢ã³ããé£ããŠããããšããã§ãããšä¿¡ããªããã°ãªããŸããã§ããã ãããŠåœŒã¯ãããæã£ãŠããŸããïŒ è©Šåã®é²è¡äžã«ããŠã§ããµã€ããäœæããããšããé£çµ¡ã XNUMX åãããŸããã
æåã¯ç§ãèªåã§ãã¶ã€ã³ãè¡ããããå€ãã® gif ãå æ²¢ã®ããèŠçŽ ãå«ããããšããŸããã ãããã10幎æ¥ã®ãã¶ã€ããŒã®å€«ã¯ãããããè¯ãããããšäžè¹ŽããŸããã ãã¶ã€ã³ã«ãŒã«ãç Žãã«ã¯ããããç¥ãå¿ èŠããããŸãã
æ°žç¶çãªå«æªæãåŒã³èµ·ããè²ã®çµã¿åããã¯ããã€ããããŸããåãè±ããã®ç·ãšèµ€ãã°ã¬ãŒãšãã³ã¯ãéãšè¶è²ã§ãã æçµçã«ãããŒã¹ã«ã©ãŒãšããŠèµ€ãšç·ã®çµã¿åããã«èœã¡çããç«ã®GIFãè¿œå ããã¹ããã¯ãã©ããããœã³ããèªèº«ã®åçã3ã4æéžæããŸããã ç§ã®æ¡ä»¶ã¯ããã€ãã ãã§ãããäžå¹Žç·æ§ã§ããµã€ãºã倧ãããããµã€ãºã®åããªãã¹ãŒããçãŠããããã®ã¹ã¿ãžãªåçæ®åœ±ãã®ãããªããŒãºããšã£ãŠããããšã§ãã ãã¹ãã§ã¯ãåéã«èŠããŠãã©ãã§ããïŒããšå°ããŸããã
èšèšéçºã®ããã»ã¹äžã倫㯠XNUMX åããã«æšªã«ãªããããªã³ãã¿ãŒãé£ã³å§ããŸããã ãã·ã£ã¯ããã³ããšã³ãã®ä»äžããçµããéãç®ãä¿è·ããããã«éçºè ã³ã³ãœãŒã«ãç»é¢ã®å€§éšåãŸã§éãããããšããŸããã
å®æ©
ãã¡ã³ãšã©ã€ãã¯ãœãªããã¹ããŒã ãªã¬ãŒãä»ããŠåãä»ããããŠãããããããã«ãã«ãã¯ãŒã§ãªã³ã«ãªãããç£èŠãšäžŠè¡ããŠé»åãå¢å ããŸãã
ãã ããããã«ã€ããŠã¯æ¬¡ã®æçš¿ã§ãã²ãŒã ã®ããŒããŠã§ã¢éšåãšãµã€ãã®å®éã®æ§ç¯ã«ã€ããŠèª¬æããŸãã
ä¹ããæåŸ ïŒ
ãµãŒããŒãç Žå£ããã¯ãšã¹ãã«é¢ãããã®ä»ã®èšäº
ã²ãŒã éå§ æåã®æããã 誰ãã·ã¥ã¬ãããŒãæ¢ããã®ãããŸãã¯ãµãŒããŒãç Žå£ããŠã¯ãšã¹ããå®äºããå¿ èŠããã£ãã®ã
åºæïŒ habr.com