修士課çšã®åŠçãåå ããæ¥ã®ããã«ãœã³DevDaysã®ãããžã§ã¯ãã«ã€ããŠåŒãç¶ã話ããŸãã
ãšããã§ãèªè
ã®çæ§ããã²ãåå ãã ãã
Telegram ãã¹ã¯ããã ãã€ã¹ ã¡ãã»ãŒãž ããŒãµãŒ
ã¢ã€ãã¢ã®äœè
ããã·ã§ãã»ã¢ã«ãã§ã
ããŒã æ§æ
Khoroshev Artem â ãããžã§ã¯ã ãããŒãžã£ãŒ/éçºè
/QA
Eliseev Anton â ããžãã¹ ã¢ããªã¹ã/ããŒã±ãã£ã³ã° ã¹ãã·ã£ãªã¹ã
Maria Kuklina â UI ãã¶ã€ããŒ/éçºè
Bakhvalov Pavel â UI ãã¶ã€ããŒ/éçºè
/QA
ç§ãã¡ã®èŠ³ç¹ãããããšãTelegram ã¯çŸä»£çã§äŸ¿å©ãªã¡ãã»ã³ãžã£ãŒã§ããããã® PC ããŒãžã§ã³ã¯äººæ°ãããããªãŒãã³ãœãŒã¹ã§ãããããå€æŽããããšãå¯èœã§ãã ã¯ã©ã€ã¢ã³ãã¯éåžžã«è±å¯ãªæ©èœãæäŸããŸãã æšæºã®ããã¹ã ã¡ãã»ãŒãžã«å ããŠãé³å£°é話ããã㪠ã¡ãã»ãŒãžãé³å£°ã¡ãã»ãŒãžãå«ãŸããŸãã ãããŠãåä¿¡è ã«äžäŸ¿ãããããã®ã¯åŸè ã§ãã ã³ã³ãã¥ãŒã¿ãŸãã¯ã©ãããããã䜿çšããŠããéã¯ãé³å£°ã¡ãã»ãŒãžãèãããšãã§ããªãããšããããããŸãã åšå²ã®éšé³ããã£ãããããããã©ã³ããªãã£ãããã¡ãã»ãŒãžã®å 容ã誰ã«ãèãããããªãå ŽåããããŸãã ã¹ããŒããã©ã³ã§ Telegram ã䜿çšãããšãã©ãããããã PC ãšã¯ç°ãªããè³ã«åœãŠãã ãã§æžãããããã®ãããªåé¡ã¯ã»ãšãã©çºçããŸããã ç§ãã¡ã¯ãã®åé¡ã解決ããããšããŸããã
DevDays ã§ã®ãããžã§ã¯ãã®ç®æšã¯ãåä¿¡ããé³å£°ã¡ãã»ãŒãžãããã¹ãã«ç¿»èš³ããæ©èœã Telegram ãã¹ã¯ããã ã¯ã©ã€ã¢ã³ã (以äžãTelegram ãã¹ã¯ããããšåŒã³ãŸã) ã«è¿œå ããããšã§ããã
çŸæç¹ã§ã®é¡äŒŒç©ã¯ãã¹ãŠãããã§ãããé³å£°ã¡ãã»ãŒãžãéä¿¡ããå¿çãšããŠããã¹ããåä¿¡ã§ããŸãã ç§ãã¡ã¯ããã«ããŸãæºè¶³ããŠããŸãã: ã¡ãã»ãŒãžããããã«è»¢éããã®ã¯ããŸã䟿å©ã§ã¯ãªãããããã€ãã£ãæ©èœã欲ãããšæã£ãŠããŸãã ããã«ããããã¯é³å£°èªè API ãšãŠãŒã¶ãŒã®éã®ä»²ä»è ãšããŠæ©èœãããµãŒãããŒãã£ã§ãããå°ãªããšãå®å šã§ã¯ãããŸããã
åè¿°ããããã«ããã¬ã°ã©ã ãã¹ã¯ãããã«ã¯ãæäœã®å®¹æããšé床ãšãã XNUMX ã€ã®å€§ããªå©ç¹ããããŸãã ãã¹ãŠ C++ ã§æžãããŠããã®ã§ãããã¯å¶ç¶ã§ã¯ãããŸããã ãŸããæ°ããæ©èœãã¯ã©ã€ã¢ã³ãã«çŽæ¥è¿œå ããããšã«ãããããC++ ã§éçºããå¿ èŠããããŸããã
ç§ãã¡ã®ããŒã ã«ã¯4人ãããŸããã åœåãXNUMX 人ãé³å£°èªèã«é©ããã©ã€ãã©ãªãæ€çŽ¢ããXNUMX 人ã Telegram ãã¹ã¯ãããã®ãœãŒã¹ ã³ãŒããç 究ãããã XNUMX 人ããã«ã ãããžã§ã¯ãããããã€ããŠããŸããã
æå³ããæ©èœã®å®è£ ã¯é£ãããªããšæãããŸãããããã€ãã®ããã«å°é£ãçºçããŸããã
ãã®åé¡ã®è§£æ±ºçã¯ãé©åãªé³å£°èªèããŒã«ã®éžæãšãæ°ããæ©èœã®ããã® UI ã®å®è£ ãšãã XNUMX ã€ã®ç¬ç«ãããµãã¿ã¹ã¯ã§æ§æãããŠããŸããã
é³å£°èªèçšã®ã©ã€ãã©ãªãéžæãããšãã¯ãèšèªã¢ãã«ãå€ãã®ã¹ããŒã¹ãå æããããããã¹ãŠã®ãªãã©ã€ã³ API ãããã«æŸæ£ããå¿ èŠããããŸããã ããããç§ãã¡ã話ããŠããã®ã¯ XNUMX ã€ã®èšèªã ãã§ãã ãªã³ã©ã€ã³ API ã䜿çšããå¿ èŠãããããšãæããã«ãªããŸããã ãã®åŸãGoogleãYandexãMicrosoft ãªã©ã®å·šäººã®é³å£°èªèãµãŒãã¹ã¯ãŸã£ããç¡æã§ã¯ãªãããšãå€æããè©Šçšæéã§æºè¶³ããå¿ èŠããããŸãã ãã®çµæããµãŒãã¹ã䜿çšããããã®ããŒã¯ã³ãååŸã§ãã Google Speech-To-Text ãéžæãããŸãããããŒã¯ã³ã¯ XNUMX 幎éæå¹ã§ãã
ç§ãã¡ãééãã XNUMX çªç®ã®åé¡ã¯ãC++ ã®ããã€ãã®æ¬ ç¹ã«é¢é£ããŠããŸããã€ãŸããéäžãªããžããªãååšããªããããããŸããŸãªã©ã€ãã©ãªã倧éã«ååšãããšããããšã§ãã ããŸããŸãTelegram Desktop ã¯ä»ã®å€ãã®ããŒãžã§ã³åºæã®ã©ã€ãã©ãªã«äŸåããŠããŸãã å
¬åŒãªããžããªã«ã¯ã
Telegram Desktop èªäœã®çµã¿ç«ãŠã«ã¯ããªãã®æéãããããŸããIntel Core i5-7200U ãæèŒããã©ãããããã§ã¯ããã¹ãŠã®äŸåé¢ä¿ãå«ãå®å šãªçµã¿ç«ãŠ (ãã©ã° -j 4) ã«çŽ 30 æéããããŸãã ãã®ãã¡ãã¯ã©ã€ã¢ã³ãèªäœã®ãªã³ã¯ã«ã¯çŽ 10 åããããŸã (åŸã§ããããã°æ§æã§ã¯ãªã³ã¯ã«çŽ XNUMX åãããããšãå€æããŸãã) ããå€æŽãå ãããã³ã«ãªã³ã¯æ®µéãç¹°ãè¿ãå¿ èŠããããŸãã
åé¡ã¯ãã£ããã®ã®ãæãã€ããã¢ã€ãã¢ããªããšãå®è£
ããã¢ããããŒãããããšãã§ããŸããã
ç§ãã¡ã®æèŠã§ã¯ãããã¯å€ãã®ãŠãŒã¶ãŒã«ãšã£ãŠäŸ¿å©ãªæ©èœã®åªããæŠå¿µå®èšŒã§ããããšãå€æããŸããã Telegram Desktop ã®å°æ¥ã®ãªãªãŒã¹ã§ãã®æ©èœãç»å ŽããããšãæåŸ ããŠããŸãã
IntelliJ IDEA ã§ã®æ¡åŒµãããèªç¶èšèªãµããŒã
ã¢ã€ãã¢ã®äœè
ã¿ã³ã³ãã»ãŠã©ãžã¹ã©ã
ããŒã æ§æ
Tankov Vladislav (ããŒã ãªãŒããŒãLanguageTool ãš IntelliJ IDEA ã䜿çš)
Nikita Sokolov (LanguageTool ã®äœ¿çšãš UI ã®äœæ)
Khvorov Alexander (LanguageTool ã®äœ¿çšãšããã©ãŒãã³ã¹ã®æé©å)
Sadovnikov Alexander (ããŒã¯ã¢ããèšèªãšã³ãŒãã®è§£æã®ãµããŒã)
ç§ãã¡ã¯ãããŸããŸãªããã¹ã (ã³ã¡ã³ããããã¥ã¡ã³ããã³ãŒãå ã®ãªãã©ã«è¡ãMarkdown ãŸã㯠XML ããŒã¯ã¢ããã§ãã©ãŒããããããããã¹ã) ã®ææ³çãã¹ãã«ããã³æäœã®æ£ç¢ºãããã§ãã¯ãã (è±èªã§ã¯ãããæ ¡æ£ãšåŒã³ãŸã) IntelliJ IDEA çšã®ãã©ã°ã€ã³ãéçºããŸããã
ãããžã§ã¯ãã®ã¢ã€ãã¢ã¯ãæšæºã®ã¹ãã«ãã§ã㯠IntelliJ IDEA ã Grammarly ã®èŠæš¡ãŸã§æ¡åŒµããIDE å ã« Grammarly ã®ãããªãã®ãäœæããããšã§ããã
äœãèµ·ãã£ããããããŸã
ããŠã以äžã§ã¯ããã©ã°ã€ã³ã®æ©èœãšããã®äœæäžã«çºçããå°é£ã«ã€ããŠè©³ãã説æããŸãã
åæ©
èªç¶èšèªã§ããã¹ããæžãããã«èšèšããã補åã¯æ°å€ããããŸãããããã¥ã¡ã³ããã³ãŒã ã³ã¡ã³ãã¯éçºç°å¢ã§æžãããããšãã»ãšãã©ã§ãã åæã«ãIDE ã¯ã³ãŒãå ã®ãšã©ãŒãèŠã€ããã®ã«ã¯åªããŠããŸãããèªç¶èšèªã®ããã¹ãã«ã¯ããŸãé©ããŠããŸããã ãã®ãããéçºç°å¢ããææãããããšãªããææ³ãå¥èªç¹ããŸãã¯ã¹ã¿ã€ã«ã®ééããéåžžã«ç°¡åã«ç¯ããŠããŸããŸãã ãŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ã®äœææã«ééããç¯ãããšãæãéèŠã§ããããã¯ãã³ãŒãã®ç解ããããã ãã§ãªããéçºãããã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒèªäœã«ã圱é¿ãäžããããã§ãã
æã人æ°ãããéçºãããŠããéçºç°å¢ã® XNUMX ã€ã¯ãIntelliJ IDEA ãš IntelliJ ãã©ãããã©ãŒã ã«åºã¥ã IDE ã§ãã IntelliJ ãã©ãããã©ãŒã ã«ã¯ãã§ã«ã¹ãã«ãã§ãã«ãŒãçµã¿èŸŒãŸããŠããŸãããæãåçŽãªææ³ãšã©ãŒãããåãé€ãããšã¯ã§ããŸããã ç§ãã¡ã¯ã人æ°ã®ããèªç¶èšèªåæã·ã¹ãã ã® XNUMX ã€ã IntelliJ IDEA ã«çµ±åããããšã«ããŸããã
å ·çŸå
ç§ãã¡ã¯ç¬èªã®ããã¹ãæ€èšŒã·ã¹ãã ãäœæãããšããç®æšãèšå®ããªãã£ããããæ¢åã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããŸããã æãé©åãªãªãã·ã§ã³ã¯æ¬¡ã®ãšããã§ããããšãå€æããŸãã
ãã©ã°ã€ã³ã³ãŒãã¯æ¬¡ã®ãšããã§ã
é£ãã
æ¯åæ€æ»ã®ããã«ãã¹ãŠã®ããã¹ãã LanguageTool ã«ãã£ãŒããããšãæ€æ»èªäœã UI ãããŒããããã¯ãããããIDEA ã€ã³ã¿ãŒãã§ã€ã¹ãå€ããå°ãªããé倧ãªããã¹ãã§ããªãŒãºããããšã«ããã«æ°ã¥ããŸããã ãã®åé¡ã¯ãProgressManager.checkCancelledããã§ãã¯ã«ãã£ãŠè§£æ±ºãããŸãããIDEA ãæ€æ»ãäžæ¢ããææã ãšå€æããå Žåããã®é¢æ°ã¯äŸå€ãã¹ããŒããŸãã
ããã«ããããªãŒãºã¯å®å šã«è§£æ¶ãããŸããããããã¹ãã®åŠçã«éåžžã«æéããããããã䜿çšããããšã¯ã§ããŸããã ããã«ãç§ãã¡ã®å Žåãã»ãšãã©ã®å Žåãããã¹ãã®ããäžéšãå€æŽããããããäœããã®æ¹æ³ã§çµæããã£ãã·ã¥ããããšèããŠããŸãã ãŸãã«ãããç§ãã¡ããã£ãããšã§ãã æ¯åãã¹ãŠããã§ãã¯ããªãããã«ãããã¹ãã決å®çã«åå²ããå€æŽãããéšåã®ã¿ããã§ãã¯ããŸããã ããã¹ãã¯å€§ãããªãå¯èœæ§ãããããã£ãã·ã¥ãããŒãããããªããããããã¹ãèªäœã§ã¯ãªãããã®ããã·ã¥ãä¿åããŸããã ããã«ããããã©ã°ã€ã³ã¯å€§ããªãã¡ã€ã«ã§ãã¹ã ãŒãºã«åäœã§ããããã«ãªããŸããã
LanguageTool 㯠25 ãè¶ ããèšèªããµããŒãããŠããŸããã2 人ã®ãŠãŒã¶ãŒããã¹ãŠã®èšèªãå¿ èŠãšããããšã¯èããããŸããã ãªã¯ãšã¹ãã«å¿ã㊠(UI ã§ãã§ãã¯ãå ¥ããå Žå) ç¹å®ã®èšèªã®ã©ã€ãã©ãªãããŠã³ããŒãããæ©äŒãäžãããã£ãã®ã§ãã ç§ãã¡ããããå®è£ ããŸããããããŸãã«ãè€éã§ä¿¡é Œæ§ãäœãããšãå€æããŸããã ç¹ã«ãå¥ã®ã¯ã©ã¹ããŒããŒã䜿çšããŠãLanguageTool ã«æ°ããèšèªã»ãããããŒãããæ éã«åæåããå¿ èŠããããŸããã åæã«ããã¹ãŠã®ã©ã€ãã©ãªã¯ãŠãŒã¶ãŒã® .mXNUMX ãªããžããªã«ãããèµ·åãããã³ã«ãããã®æŽåæ§ããã§ãã¯ããå¿ èŠããããŸããã æçµçã«ããŠãŒã¶ãŒããã©ã°ã€ã³ã®ãµã€ãºã«åé¡ãæ±ããŠããå Žåã¯ãæã人æ°ã®ããããã€ãã®èšèªã«å¯ŸããŠå¥ã®ãã©ã°ã€ã³ãæäŸããããšã«ããŸããã
ããã«ãœã³çµäºåŸ
ããã«ãœã³ã¯çµäºããŸãããããã©ã°ã€ã³ã®äœæ¥ã¯å°æ°ã®ããŒã ã§ç¶ç¶ãããŸããã æååãã³ã¡ã³ããããã«ã¯å€æ°åãã¯ã©ã¹åãªã©ã®èšèªæ§æèŠçŽ ããµããŒãããããšèããŠããŸããã çŸåšããã㯠JavaãKotlinãPython ã§ã®ã¿ãµããŒããããŠããŸããããã®ãªã¹ããå¢ããããšãæåŸ ããŠããŸãã å€ãã®å°ããªãã°ãä¿®æ£ããIdea ã®çµã¿èŸŒã¿ã¹ãã«ãã§ãã«ãŒãšã®äºææ§ãåäžããŸããã ããã«ãXML ãµããŒããšã¹ãã«ãã§ãã¯ãç»å ŽããŸããã ããããã¹ãŠã¯ãæè¿å ¬éããã第 XNUMX ããŒãžã§ã³ã«èšèŒãããŠããŸãã
次ã¯äœã§ããïŒ
ãã®ãããªãã©ã°ã€ã³ã¯ãéçºè
ã ãã§ãªãããã¯ãã«ã« ã©ã€ã¿ãŒ (IDE 㧠XML ãæ±ãããšãå€ã) ã«ãšã£ãŠã圹ç«ã¡ãŸãã æ¯æ¥ã圌ãã¯èªç¶èšèªã䜿çšããŠäœæ¥ããªããã°ãªããŸãããã¢ã·ã¹ã¿ã³ãã¯ããšã©ãŒã®å¯èœæ§ã«ã€ããŠç·šéè
ã®ã¢ããã€ã¹ãæäŸããŠãããããã§ã¯ãããŸããã ç§ãã¡ã®ãã©ã°ã€ã³ã¯ãã®ãããªãã³ããæäŸããé«ã粟床ã§ãããå®è¡ããŸãã
æ°ããèšèªãè¿œå ããããšãšãããã¹ã ãã§ãã¯ãçµç¹ããããã®äžè¬çãªã¢ãããŒããæ€èšããããšã®äž¡æ¹ã«ãã£ãŠããã©ã°ã€ã³ãéçºããäºå®ã§ãã ç§ãã¡ã®åœé¢ã®èšç»ã«ã¯ãæäœãããã¡ã€ã« (ããã¹ãã®ã¹ã¿ã€ã« ã¬ã€ããå®çŸ©ããã«ãŒã«ã®ã»ãããããšãã°ãäŸãæžãããå®å
šãªåœ¢åŒãæžãã) ã®å®è£
ãèŸæžã®æ¡åŒµããŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ã®æ¹å (ç¹ã«ããŠãŒã¶ãŒã«åèªãç¡èŠããã ãã§ãªããåè©ã瀺ããŠèŸæžã«è¿œå ããæ©äŒãæäŸããããšèããŠããŸã)ã
åºå
ž: www.habr.com