ç§ãããã«ãœã³ã§åªåããã®ã¯ãããåããŠã§ã¯ãªããã
å°åã¹ããŒãžïŒã¢ã¹ã¯ã¯ã27幎28æ2019ïœXNUMXæ¥ïŒã
ç§ããããžã¿ã«ã»ãã¬ãŒã¯ã¹ã«ãŒãã®åºåãåããŠç®ã«ããã®ã¯ä»å¹Žã®16ïœXNUMXæã®ã©ããã§ããã åœç¶ããã®ãããªå€§èŠæš¡ãªããã«ãœã³ãèŠéãããã«ã¯ããããWebãµã€ãã«ç»é²ããŸããã ããã§ç§ã¯ã³ã³ãã¹ãã®æ¡ä»¶ãšããã°ã©ã ãç¥ããŸããã ããã«ãœã³ã«åå ããã«ã¯ãXNUMXæXNUMXæ¥ã«å§ãŸã£ããªã³ã©ã€ã³ãã¹ãã«åæ Œããå¿ èŠãããããšãå€æããã ãããŠããããããã¹ãã®éå§ã«ã€ããŠç¥ãããæçŽãåãåã£ãŠããªãã£ãã®ã§ãç§ã¯éœåãããã®ããšãå¿ããŠããã§ãããã ãããŠãå°æ¥çã«ã¯ãCPU ããç§ã«å±ãããã¹ãŠã®æçŽã¯äžè²«ããŠã¹ãã ãã©ã«ããŒã«éãããããšã«ãªããšèšããããåŸãŸããã æ¯åãäžå¿«ã§ã¯ãªãããã¿ã³ãæŒããŠããã®ã«ã 圌ããã©ã®ããã«ããŠãã®ãããªçµæãéæã§ããã®ãããããŸããããMailGun ã§ã®ã¡ãŒã«éä¿¡ã§ã¯ããŸããããŸããã§ããã ãããŠåœŒãã¯ãisnotspam.com ã®ãããªãµãŒãã¹ã®ååšããŸã£ããç¥ããªãããã§ãã ããã話ã¯éžããŸãã
ããäŒè°ã§ãã¹ãã®éå§ã«ã€ããŠæãåºããŸãã
ãã¹ãã«åæ ŒããåŸãããæç¹ã§åœŒãããé»è©±ããããåå ãããã©ããå°ãããã詳现ãæããã«ããããŒã ãéžæããããã®ãã£ãããžã®åå æ¹æ³ãæããããŸããã ããã«ç§ã¯ãã£ããã«å ¥ããèªåã«ã€ããŠç°¡åã«æžããŸããã ãã£ããã§ã¯ãŸã£ãããŽãã®ãããªäŒè©±ãè¡ãããŠãããäž»å¬è ã IT ãšã¯ãŸã£ããé¢ä¿ã®ãªãå€ãã®ã©ã³ãã ãªäººã ã«å®£äŒããŠããããã§ããã å€æ°ã®ãã¹ãã£ãŒãã»ãžã§ããºã¬ãã«ãïŒããåå è ã®æçš¿ããã®å®éã®ãã¬ãŒãºïŒã®ãããã¯ããããŒãžã£ãŒãèªåèªèº«ã«ã€ããŠã®ã¹ããŒãªãŒãæçš¿ããéåžžã®éçºè ã¯å§¿ããèŠããŸããã§ããã ããã幞éãªããšã«ãç§ã¯ããã« 2 人ã®çµéšè±å¯ãª JS ããã°ã©ããŒã«å ãããŸããã ç§ãã¡ã¯ããã«ãœã³ã§ãã§ã«ç¥ãåãããã®åŸãã€ã³ã¹ãã¬ãŒã·ã§ã³ãäžããçµç¹ã®åé¡ã解決ããããã«ããŒã ã«å¥³ã®åãå ããŸããã çç±ã¯èŠããŠããŸããããããµã€ããŒã»ãã¥ãªã㣠ãã¬ãŒãã³ã°ããšãããããã¯ãåãäžãããç§åŠãšæè² 4ããã©ãã¯ã«å«ããŸããã åããŠèªåã 1 人ã®åŒ·åãªããã°ã©ããŒã®ããŒã ã«ããããšã«æ°ã¥ãããã®ãããªæ§æã§åã€ããšãã©ãã»ã©ç°¡åããåããŠæããŸããã ç§ãã¡ã¯æºåãã§ããŠããªãç¶æ ã§æ¥ãŠãæŒé£ãŸã§è°è«ããŸããããã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ã«ããããŠã§ã ã¢ããªã±ãŒã·ã§ã³ã«ããã決ããããŸããã§ããã ä»ã®ç¶æ³ã§ããã°ã倱æã ã£ããšæãã§ãããã ç§ãã¡ã«ãšã£ãŠæãéèŠãªããšã¯ã競åä»ç€Ÿãããã©ãããã°åªããŠããããç解ããããšã§ããããªããªãããã¹ãããµã€ããŒã»ãã¥ãªã㣠ã²ãŒã ãªã©ãææãããŠããããŒã ãåšå²ã«ãããããã£ãããã§ãã ãããèŠãŠããã¬ãŒãã³ã° ããã°ã©ã ãã¢ããªãã°ãŒã°ã«ã§èª¿ã¹ãçµæãåœç€Ÿã®äž»ãªå·®å¥åèŠå ã¯æ¶é²èšç·Žã§ãããšå€æããŸããã ç§ãã¡ã¯ãå®è£ ããã®ã«èå³æ·±ãæ©èœãããã€ãéžæããŸãã (ã¡ãŒã«ã«ããç»é²ãšããã«ãŒ ããŒã¿ããŒã¹ã«å¯Ÿãããã¹ã¯ãŒãã®æ€èšŒããã£ãã·ã³ã°ã¡ãŒã«ã®éä¿¡ (æåãªéè¡ããã®æçŽã®åœ¢åŒ)ããã£ããã§ã®ãœãŒã·ã£ã« ãšã³ãžãã¢ãªã³ã° ãã¬ãŒãã³ã°)ã èªåãã¡ãããã¹ãããšã決ããã©ãããã°ç®ç«ã€ããšãã§ããããç解ããåŸãããã«æ¬æ Œç㪠Web ã¢ããªã±ãŒã·ã§ã³ãäœæããç§ã¯ããã¯ãšã³ãéçºè ãšããçãã圹å²ãæãããŸããã ããããŠç§ãã¡ã¯èªä¿¡ãæã£ãŠã³ãŒã¹ã§åå©ããä»ã® 1 ããŒã ã®äžå¡ãšããŠã«ã¶ã³ã§ã®æ±ºåãžã®åºå Žæš©ãç²åŸããŸããã ãã®åŸã«ã¶ã³ã§ã決åæŠãžã®éžèããã£ã¯ã·ã§ã³ã§ããããšãç¥ããããã§éžèã«èœã¡ãããŒã ã®å€ãã®æãããé¡ã«äŒããŸããã ãã£ã³ãã«XNUMXã®ãžã£ãŒããªã¹ããããã€ã³ã¿ãã¥ãŒãåããŸããã ããããããããã®ã¬ããŒãã§ã¯ãç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯ XNUMX ç§éãã衚瀺ãããŸããã§ããã
å°æ¹ã¹ããŒãžã§åªåããéªã®ããŒã
決åïŒã«ã¶ã³ã27幎29æ2019æ¥ïœXNUMXæ¥ïŒ
ããããã®åŸã倱æãå§ãŸããŸããã çŽ XNUMX ãæ以å
ã«ãSnowed ããŒã ã®ãã¹ãŠã®ããã°ã©ããŒãã決åæŠã®ããã«ã«ã¶ã³ã«è¡ãããšãã§ããªããšæ¬¡ã
ã«å ±åããŸããã ãããŠæ°ããããŒã ãæ¢ãããšãèããŸããã ãŸãããã·ã¢ã³ ãã㯠ããŒã ã®äžè¬ãã£ããã«é»è©±ãããããšãããããªãã®æ°ã®è¿ä¿¡ãããŒã ãžã®åå ã®æåŸ
ãåãåããŸããããã©ããç§ã®æ³šæãåŒããã®ã§ã¯ãããŸããã§ããã ãããã¯ããã¢ãã€ã«éçºè
ãããã³ããšã³ããªã©ãå¯è©±ã«åºãŠããçœé³¥ãã¶ãªã¬ãããã€ã¯ãæãããã¢ã³ãã©ã³ã¹ãªããŒã ããããŸããã æè¡çã«èªåã«åããªãããŒã ããããŸããïŒFlutterã§ã®ã¢ãã€ã«ã¢ããªéçºãªã©ïŒã æåŸã«ãç§ããã ããªããšæã£ããã£ããïŒå°åã¹ããŒãžã®ããŒã ã®éžæãè¡ãããã®ãšåãVKontakteïŒã«ãããŒã ã®ããã³ããã³æ¢ãã«ã€ããŠã®åºåãæçš¿ãããç§ã¯ãŸã£ããã©ã³ãã ã«æžããŸããã 圌ãã¯ã¹ã³ã«ããã¯ã®å€§åŠé¢çã§ããããšãå€æããããã«äŒã£ãŠç¥ãåãã«ãªãããšç³ãåºãŸããã ç§ã¯ãããæ°ã«å
¥ããŸãããããã«ãœã³ã§ããã«ãäºãã®ããšãç¥ããããããŒã ã¯ããããŠãã¢ãããŒã·ã§ã³ã®æ¬ åŠã«ç§ãèŠæãããŸãã ç§ãã¡ã¯ãã£ãããã«ã€ã®ãRakeãã§äŒããŸããã éžæãã¡ã¯è³¢ããããæ°ããããèªåèªèº«ãšåå©ã«èªä¿¡ãæã£ãŠããããã«èŠããã®ã§ãç§ã¯ãã®å Žã§æ±ºæãäžããŸããã æçµçã«ã©ã®ãããªãã©ãã¯ãã¿ã¹ã¯ã«ãªããã¯ãŸã ããããŸããã§ããããæ©æ¢°åŠç¿ã«é¢é£ãããã®ãéžæããã ãããšæ³å®ããŠããŸããã ãããŠãç§ã®ã¿ã¹ã¯ã¯ãã®ä»¶ã«ã€ããŠç®¡çè
ãæžãããšãªã®ã§ãäºåã« antd-admin ã«åºã¥ããŠããçšã®ãã³ãã¬ãŒããæºåããŸããã
ç§ã¯äž»å¬è
ã®è² æ
ã§ç¡æã§ã«ã¶ã³ã«è¡ããŸããã ãã±ããã®è³Œå
¥ã決åæŠã®æ§æå
šè¬ã«é¢ããŠããã§ã«å€ãã®äžæºããã£ãããããã°ã§è¡šæãããŠãããšèšããããåŸãŸããããç§ã¯ããããã¹ãŠèªãã€ããã¯ãããŸããã
ã«ã¶ã³ãšãã¹ãã«å°çããç»é²ãæžãŸãïŒãããžãå ¥æããã®ã«å°ãèŠåŽããŸããïŒãæé£ãé£ã¹ãåŸããã©ãã¯ãéžã³ã«è¡ããŸããã ç§ãã¡ã¯ã°ã©ã³ããªãŒãã³ã®é¢ä¿è ã«ããè¬æŒã«10åã»ã©ããåå ã§ãããå®ã¯ãã§ã«å¥œã¿ã®æ²ã¯æ±ºãŸã£ãŠããã®ã§ããã詳现ãæ°ã«ãªããŸããã ããšãã°ããã©ã㯠No. 18 (Rostelecom) ã§ã¯ãç°¡åãªèª¬æã«ã¯èšèŒãããŠããŸããã§ããããã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ãéçºããå¿ èŠãããããšãããããŸããã ç§ãã¡ã¯ããã©ãã¯çªå· 8 ã®ãã€ãã©ã€ã³æ¬ é¥æ€æ»ãã¬ã¹ããã ããã PJSC ãšãã©ãã¯çªå· 13 ã®åšç£æã»ã³ã¿ãŒããã·ã¢é£éŠäŒèšåå·¥äŒè°æã®ã©ã¡ãããäž»ã«éžæããŸããã ã©ã¡ãã®å ŽåãããŒã¿ ãµã€ãšã³ã¹ãå¿ èŠã§ãããã©ã¡ãã®å Žåã Web ãè¿œå ã§ããã¯ãã§ãã ãã©ãã¯çªå· 13 ã§ã¯ãããŒã¿ ãµã€ãšã³ã¹ ã¿ã¹ã¯ãéåžžã«åŒ±ããRosstat ã解æããå¿ èŠãããã管çããã«ãå¿ èŠãã©ãããäžæçã§ãããšããäºå®ã«ãã£ãŠäžæãããŸããã ãããŠããã®ä»»åã®äŸ¡å€ãã®ãã®ãçãããŠããã æçµçã«ãç§ãã¡ã¯ããŒã ãšããŠãã©ã㯠8 ã®æ¹ãé©ããŠãããšå€æããŸãããç¹ã«ãã¡ã³ããŒã¯ãã§ã«åæ§ã®åé¡ã解決ããçµéšããã£ãããã§ãã ç§ãã¡ã¯ãã¢ããªã±ãŒã·ã§ã³ããšã³ããŠãŒã¶ãŒã«ãã£ãŠäœ¿çšãããã·ããªãªãæ€èšããããšããå§ããŸããã ãã®çµæãæè¡æ å ±ã«èå³ã®ããæè¡è ãšè²¡åææšãå¿ èŠãšãããããŒãžã£ãŒãšãã XNUMX ã€ã®ã¿ã€ãã®ãŠãŒã¶ãŒãããããšãå€æããŸããã ã·ããªãªã®ã¢ã€ãã¢ãåºãŠããŠãããã³ããšã³ãã§äœããã¹ããããã¶ã€ããŒãäœãæãã¹ãããããã¯ãšã³ãã§ã©ã®ãããªã¡ãœãããå¿ èŠããæ確ã«ãªããã¿ã¹ã¯ãåæ£ããããšãå¯èœã«ãªããŸãã ããŒã å ã®è²¬ä»»ã¯æ¬¡ã®ããã«åæ£ãããŸãããXNUMX 人ãæè¡å°é家ããåãåã£ãããŒã¿ã䜿çšã㊠ML ã解決ããXNUMX 人ã Python ã§ããã¯ãšã³ããäœæããç§ã React ãš Antd ã§ããã³ããšã³ããäœæãããã¶ã€ããŒãã€ã³ã¿ãŒãã§ã€ã¹ãæç»ããŸããã åé¡ã解決ããªããã³ãã¥ãã±ãŒã·ã§ã³ããšããããããã«ã座ãããšãããŸããã
åæ¥ã¯ã»ãšãã©æ°ã¥ãããã«éããŠãããŸããã æè¡å°é家ãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã®äžã§ã圌ãïŒã¬ã¹ããã ã»ãããïŒã¯ãã§ã«ãã®åé¡ã解決ããŠããããã£ãšè¯ã解決ã§ããªããèããŠããã ãã§ããããšãå€æããŸããã ããã§ã¢ãããŒã·ã§ã³ãäžãã£ããšã¯èšããŸããããæ®çç©ã¯æ®ããŸããã å€ã«ã»ã¯ã·ã§ã³ã®ã¢ãã¬ãŒã¿ãäœæ¥ããŒã ã®ããšãææããã®ã«ã¯é©ããŸããïŒçµ±èšã®ããã«èšã£ãããã«ïŒ; ããã¯éåžžããã«ãœã³ã§ã¯è¡ãããŸããã æãŸã§ã«ãåé¢ã®ãããã¿ã€ããèé¢ã®åºç€éšåããããŠæåã® ML ãœãªã¥ãŒã·ã§ã³ãå®æããŸããã äžè¬çã«ãå°é家ã«ç€ºãã¹ããã®ã¯ãã§ã«ãããŸããã åææ¥ã®ååŸããã¶ã€ããŒã¯æããã«ç§ãã³ãŒãã£ã³ã°ããæéãè¶ ããã€ã³ã¿ãŒãã§ã€ã¹ãæç»ãããã¬ãŒã³ããŒã·ã§ã³ã®äœæã«åãæ¿ããŸããã åææ¥ã¯èšé²ç»é²ã®ããã«èšããããååäžã¯ããŒã«å ã§åããŠããå šå¡ãå»äžã«è¿œãåºããããã®åŸããŒã«ãžã®åºå ¥ãã¯ãããžãçšããŠè¡ãããç¡æå€åºãå¯èœãšãªã£ãã XNUMXæ¥ãããXNUMXæé以äžã ãã®ããšãç§ãã¡ã«é倧ãªäžäŸ¿ãåŒãèµ·ããããšã¯èšããŸããããç§ãã¡ã¯äžæ¥ã®ã»ãšãã©ã座ã£ãŠä»äºãããŠããŸããã 確ãã«é£ã¹ç©ã¯ãšãŠã貧匱ã§ãæŒé£ã«ã¯ã¹ãŒãäžæ¯ããã€ããªã³ãŽãããããŸããããããã§ãç§ãã¡ã¯ããŸãåæºãããå¥ã®ããšã«éäžããŠããŸããã
å®æçã«ã¬ãããã«ãçæã«2猶ãã€é ã£ãŠãããã®ã§ããšãŠãå©ãããŸããã ããã«ãœã³ã§é·ãéãã¹ããããŠãããšããžãŒããªã³ã¯ + ã³ãŒããŒã®ã¬ã·ãã«ãããç§ã¯äžæ©äžããããŠæ¬¡ã®æ¥ãã°ã©ã¹ã®ããã«éœæ°ã«ã³ãŒãã£ã³ã°ããããšãã§ããŸããã å®éã5 æ¥ç®ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã«æ°ããæ©èœãè¿œå ãã財åææšãèšç®ããé«ééè·¯ã®æ¬ é¥çµ±èšã®ã°ã©ãã衚瀺ãå§ããŸããã ç§ãã¡ã®ãã©ãã¯ã§ã¯ã³ãŒã ã¬ãã¥ãŒãã®ãã®ã¯è¡ãããŸããã§ãããå°é家ãäºæž¬ã®ç²ŸåºŠã«åºã¥ã㊠kaggle.com ã¹ã¿ã€ã«ã§åé¡ã®è§£æ±ºçãè©äŸ¡ããããã³ããšã³ãã¯èŠèŠçã«è©äŸ¡ãããŸããã ç§ãã¡ã® ML ãœãªã¥ãŒã·ã§ã³ã¯æãæ£ç¢ºã§ããããšãå€æããŸããããããããããç§ãã¡ããªãŒããŒã«ãªãããšãå¯èœã«ããã®ã§ãããã åæããæ¥æã®å€ã¯åå9æãŸã§ä»äºãããŠãæ ç¹ãšããŠäœ¿ã£ãŠããã¢ããŒãã§å¯ãŸããã ç§ãã¡ã¯çŽ2æéç ããæ¥ææ¥ã®ååXNUMXæã«ã¯ãã§ã«ã«ã¶ã³ãšãã¹ãã«çããŠããŸããã æ¥ãã§æºåãããã®ã®ãã»ãšãã©ã®æéã¯äºåé²è¡ã®æºåã«è²»ããããŸããã äºååŒè«ã¯ XNUMX ã€ã®ã¹ããªãŒã ã§ãXNUMX ã€ã®å°é家ããŒã ã®åã§è¡ãããŸããããäž¡æ¹ã®å°é家ããŒã ãç§ãã¡ã®è©±ãèãããã£ãŠãããããç§ãã¡ã¯æåŸã«è©±ãããã«æ±ããããŸããã ç§ãã¡ã¯ãããè¯ãå åãšåãæ¢ããŸããã ã¢ããªã±ãŒã·ã§ã³ã¯ãå®è¡äžã®éçºãµãŒããŒããç§ã®ã©ããããããã衚瀺ãããŸãããã¢ããªã±ãŒã·ã§ã³ãé©åã«ãããã€ããæéããããŸããã§ããããå šå¡ãåãããã«ãããã€ããŸããã
æŠããŠããã¹ãŠãããŸããããã¢ããªã±ãŒã·ã§ã³ãæ¹åã§ããç¹ãææãããåŒè·ãŸã§ã®æéã«ããããã®ã³ã¡ã³ãã®ããã€ããå®è£ ããããšããããŸããã å®åãé©ãã»ã©ã¹ã ãŒãºã«ãã£ãã ãã¬ãã£ãã§ã³ã¹ã®çµæã«åºã¥ããŠãç§ãã¡ã¯ãã€ã³ãã®ç¹ã§ãªãŒãããŠããããœãªã¥ãŒã·ã§ã³ã®ç²ŸåºŠã®ç¹ã§ãªãŒãããŠãããåªããããã³ããšã³ããåªãããã¶ã€ã³ãæã£ãŠãããå šäœçã«åªããããã©ãŒãã³ã¹ãæã£ãŠããããšãããããŸãããææ ã ãã 500000 ã€ã®å¥œãŸããå åã¯ãç§ãã¡ã®ã»ã¯ã·ã§ã³ã®åžäŒè ã®å¥³ã®åãã³ã³ãµãŒã ããŒã«ã«å ¥ãåã«ç§ãã¡ãšäžç·ã«ã»ã«ãã£ãŒãæ®ã£ãããšã§ããã®ãšãç§ã¯åœŒå¥³ãäœããç¥ã£ãŠããã®ã§ã¯ãªãããšçã£ãã®ã§ã)))ã ãããå®ååŸã®åŸç¹ã¯åããããã¹ããŒãžããããŒã çºè¡šãŸã§ã®æéã¯å°ãç·åŒµããªããéããŸããã ã¹ããŒãžã§ã¯XNUMXäžã«ãŒãã«ãšæžããã段ããŒã«ãææž¡ããããã°ã«ãããšæºåž¯é»è©±ã®ããããªãŒãå ¥ã£ãããã°ãå人ã«æž¡ãããã ç§ãã¡ã¯åå©ã楜ãã¿ããã¡ããšç¥ãããšãã§ãããããã«å€é£ãé£ã¹ãŠã¿ã¯ã·ãŒã§é»è»ã«åãããŸããã
ããŒã WAICOã決åã§åªå
ã¢ã¹ã¯ã¯ã«æ»ããšãNTVã®èšè ãã€ã³ã¿ãã¥ãŒããŠãããŸããã ããªã¢ã³ã«ã®ã¯ãŽã¡ã«ã¿ã«44ã«ãã§ã®10éã§äžžã XNUMXæéæ®åœ±ããŸãããããã¥ãŒã¹ã§æ ã£ãã®ã¯XNUMXç§çšåºŠã§ãçµå±ã®ãšãããå°æ¹ã®ã¹ããŒãžã«æ¯ã¹ãŠå€§ããªé²æ©ã§ããã
ããžã¿ã«ã»ãã¬ãŒã¯ã¹ã«ãŒã®å šäœçãªææ³ããŸãšãããšä»¥äžã®ããã«ãªããŸãã ã€ãã³ãã«ã¯å€é¡ã®è²»çšãè²»ããããããã»ã©ã®èŠæš¡ã®ããã«ãœã³ã¯ãããŸã§èŠãããšããããŸããã§ããã ãããããããæ£åœã§ãããæ¬åœã«å ±ããããšã¯èšããŸããã ã«ã¶ã³ã«æ¥ãåå è ã®å€§éšåã¯ãèªåã®æã§äœããããæ¹æ³ãç¥ãããèšé²ãæš¹ç«ããããšã匷ããããåãªãããŒãã£ãŒåå è ã§ããã 決åæŠã®ç«¶äºãå°æ¹ã¹ããŒãžãããé«ãã£ããšã¯èšããŸããã ãŸããäžéšã®ãã©ãã¯ã®ã¿ã¹ã¯ã®äŸ¡å€ãšæçšæ§ã«ã¯çåããããŸãã ããã€ãã®åé¡ã¯ç£æ¥ã¬ãã«ã§é·ãé解決ãããŠããŸããã åŸã§å€æããããšã§ããããã©ãã¯ãå®æœããäžéšã®çµç¹ã¯åé¡ã®è§£æ±ºã«èå³ããããŸããã§ããã ãããŠãã®ç©èªã¯ãŸã çµãã£ãŠããããåãã©ãã¯ã®æåããŒã ããã¬ã¢ã¯ã»ã©ã¬ãŒã¿ãŒã«éžã°ããBREAKTHROUGHã¹ã¿ãŒãã¢ãããšãªãããšãäºæ³ãããŸãã ããããããã«ã€ããŠã¯ãŸã æžãæºåãã§ããŠããªãã®ã§ãã©ããªããèŠãŠã¿ãŸãããã
åºæïŒ habr.com