Hackathon DevDays'19 (mahele 2): parser memo leo no Telegram a me ka nānā ʻana i ka grammar ma IntelliJ IDEA

Ke hoʻomau nei mākou e kamaʻilio e pili ana i nā papahana o ka spring hackathon DevDays, kahi i komo ai nā haumāna o ka papahana a ka haku. "Hoʻomohala polokalamu / ʻenehana lako polokalamu".

Hackathon DevDays'19 (mahele 2): parser memo leo no Telegram a me ka nānā ʻana i ka grammar ma IntelliJ IDEA

Ma ke ala, makemake mākou e kono i ka poʻe heluhelu e hui pū VK-hui o nā haumāna haku. Ma loko e hoʻolaha mākou i nā nūhou hou e pili ana i ka hoʻopaʻa ʻana a me ke aʻo ʻana. Hiki ke loaʻa kekahi wikiō mai ka lā ākea i ka hui. Hoʻomaopopo mākou iā ʻoe: e hana ʻia ka hanana ma ʻApelila 29, nā kikoʻī Online.

Telegram Desktop Voice Message Parser

Hackathon DevDays'19 (mahele 2): parser memo leo no Telegram a me ka nānā ʻana i ka grammar ma IntelliJ IDEA

Mea kākau o ka manaʻo
Khoroshev Artyom

Kū i ka laina

Khoroshev Artem - luna o ka papahana / mea hoʻomohala / QA
ʻO Eliseev Anton - mea hoʻopuka pāʻoihana / loea kūʻai
Maria Kuklina – mea hoʻolālā/mea hoʻomohala UI
Bakhvalov Pavel - mea hoʻolālā UI / mea hoʻomohala / QA

Mai ko mākou manaʻo, ʻo Telegram kahi ʻelele hou a kūpono hoʻi, a ʻo kāna PC PC he mea kaulana a wehe ʻia, kahi e hiki ai ke hoʻololi. Hāʻawi ka mea kūʻai aku i nā hana waiwai nui. Ma waho aʻe o nā memo kikokikona maʻamau, aia nā leo leo, nā memo wikiō, a me nā memo leo. A ʻo ia ka mea hope i kekahi manawa e hoʻopilikia i ka mea e loaʻa iā lākou. ʻAʻole hiki ke hoʻolohe i ka leo leo ma ke kamepiula a i ʻole kamepiula. Loaʻa paha ka walaʻau ʻana, nele i nā headphone, a ʻaʻole ʻoe makemake e lohe kekahi i nā mea o ka memo. ʻAʻole loa e ala mai kēlā mau pilikia inā ʻoe e hoʻohana iā Telegram ma ke kelepona, no ka mea hiki iā ʻoe ke lawe mai i kou pepeiao, ʻaʻole like me ka pona a PC paha. Ua ho'āʻo mākou e hoʻoponopono i kēia pilikia.

ʻO ka pahuhopu o kā mākou papahana ma DevDays ʻo ia ka hoʻohui ʻana i ka hiki ke unuhi i nā memo leo i loaʻa i loko o ka kikokikona i ka mea kūʻai aku ʻo Telegram desktop (i kapa ʻia ʻo Telegram Desktop).

ʻO nā analogues āpau i kēia manawa he mau bots kahi e hiki ai iā ʻoe ke hoʻouna i kahi leka leo a loaʻa i kahi kikokikona i pane. ʻAʻole mākou hauʻoli loa i kēia: ʻaʻole maʻalahi ka hoʻouna ʻana i kahi leka i kahi bot; makemake mākou e loaʻa ka hana maoli. Eia kekahi, ʻo kēlā me kēia bot kahi ʻaoʻao ʻekolu e hana ma ke ʻano he mea waena ma waena o ka API ʻike ʻōlelo a me ka mea hoʻohana, a ʻo kēia, ma ka liʻiliʻi, palekana.

E like me ka mea i hōʻike mua ʻia, ʻelua mau pōmaikaʻi nui: ka maʻalahi a me ka wikiwiki o ka hana. A ʻaʻole kēia he coincidence, no ka mea, ua kākau ʻia ma C ++. A no ka mea ua hoʻoholo mākou e hoʻohui pololei i nā hana hou i ka mea kūʻai aku, pono mākou e hoʻomohala iā C++.

Hackathon DevDays'19 (mahele 2): parser memo leo no Telegram a me ka nānā ʻana i ka grammar ma IntelliJ IDEAHe 4 poʻe i loko o kā mākou hui. I ka wā mua, ʻimi nā kānaka ʻelua i hale waihona puke kūpono no ka ʻike ʻana i ka ʻōlelo, hoʻokahi kanaka e aʻo ana i ke kumu kumu o Telegram-desktop, ʻo kekahi e hoʻolālā ana i ka papahana kūkulu. Pākaukau Telegram. Ma hope mai, ua paʻa nā mea a pau i ka hoʻoponopono ʻana i ka UI a me ka debugging.

Me he mea lā ʻaʻole paʻakikī ka hoʻokō ʻana i ka hana i manaʻo ʻia, akā, e like me ka hana mau, ua kū mai nā pilikia.

ʻO ka hoʻonā ʻana i ka pilikia he ʻelua subtasks kūʻokoʻa: ke koho ʻana i kahi hāmeʻa ʻike ʻōlelo kūpono a hoʻokō i kahi UI no ka hana hou.

Ke koho ʻana i kahi waihona no ka ʻike leo, pono mākou e haʻalele koke i nā API waho waho, no ka mea, ʻoi aku ka nui o nā ʻano ʻōlelo. Akā hoʻokahi wale nō ʻōlelo mākou e kamaʻilio nei. Ua maopopo e pono mākou e hoʻohana i ka API pūnaewele. Ma hope mai, ua ʻike ʻia ʻaʻole manuahi nā lawelawe ʻōlelo ʻōlelo a nā mea nunui e like me Google, Yandex a me Microsoft, a pono mākou e ʻoluʻolu me ka wā hoʻokolokolo. ʻO ka hopena, ua koho ʻia ʻo Google Speech-To-Text no ka mea hiki iā ʻoe ke kiʻi i kahi hōʻailona no ka hoʻohana ʻana i ka lawelawe, e mau ana no ka makahiki holoʻokoʻa.

ʻO ka lua o ka pilikia i loaʻa iā mākou e pili ana i kekahi o nā hemahema o C ++ - kahi zoo o nā waihona like ʻole me ka loaʻa ʻole o kahi waihona kikowaena. ʻO ia ka mea e hilinaʻi nei ʻo Telegram Desktop i nā hale waihona puke ʻē aʻe. Aia ka waihona kūhelu manual no ka houluulu ana i ka papahana. A he nui nō hoʻi nā pilikia ākea e pili ana i nā pilikia kūkulu, no ka laʻana manawa и mau. ʻO nā pilikia a pau i pili i ka ʻoiaʻiʻo ua kākau ʻia ka palapala kūkulu no Ubuntu 14.04, a i mea e kūkulu kūleʻa ai ke kelepona ma lalo o Ubuntu 18.04, pono e hana ʻia nā loli.

He lōʻihi ka manawa e hui ai ʻo Telegram Desktop: ma kahi kamepiula me kahi Intel Core i5-7200U, ʻo ka hui piha ʻana (hae -j 4) me nā mea hilinaʻi āpau ma kahi o ʻekolu hola. ʻO kēia mau mea, ma kahi o 30 mau minuke e lawe ʻia ma ka hoʻopili ʻana i ka mea kūʻai aku (ma hope ua ʻike ʻia ma ka hoʻonohonoho Debug, e pili ana ka pilina ma kahi o 10 mau minuke), akā pono e hana hou ʻia ke kahua pili i kēlā me kēia manawa ma hope o ka hana ʻana i nā loli.

ʻOiai nā pilikia, hiki iā mākou ke hoʻokō i ka manaʻo i hāpai ʻia, a me ka hoʻonui kūkulu palapala no ka Ubuntu 18.04. Hiki ke ʻike ʻia kahi hōʻike o ka hana ma loulou. Hoʻokomo pū mākou i kekahi mau animation. Ua ʻike ʻia kahi pihi ma ka ʻaoʻao o nā memo leo a pau, hiki iā ʻoe ke unuhi i ka memo i loko o ke kikokikona. Ma ke kaomi ʻākau, hiki iā ʻoe ke kuhikuhi i ka ʻōlelo e hoʻohana ʻia no ka hoʻolaha. Na loulou Loaʻa ka mea kūʻai aku no ka hoʻoiho ʻana.

Waihona.

I ko mākou manaʻo, ua lilo ia i mea hōʻoia maikaʻi o ka manaʻo o ka hana e maʻalahi no nā mea hoʻohana he nui. Manaʻo mākou e ʻike iā ia i nā hoʻokuʻu ʻana o Telegram Desktop.

Hoʻonui i ke kākoʻo ʻōlelo kūlohelohe ma IntelliJ IDEA

Hackathon DevDays'19 (mahele 2): parser memo leo no Telegram a me ka nānā ʻana i ka grammar ma IntelliJ IDEA

Mea kākau o ka manaʻo

ʻO Tankov Vladislav

Kū i ka laina

ʻO Tankov Vladislav (ke alakaʻi hui, hana pū me LanguageTool a me IntelliJ IDEA)
Nikita Sokolov (hana me LanguageTool a me ka hana ʻana i ka UI)
Khvorov Alexander (hana pū me LanguageTool a hoʻonui i ka hana)
Sadovnikov Alexander (kākoʻo no ka hoʻopau ʻana i nā ʻōlelo a me nā code)

Ua hoʻomohala mākou i kahi plugin no IntelliJ IDEA nāna e nānā i nā kikokikona like ʻole (nā manaʻo a me nā palapala, nā laina maoli ma ke code, nā kikokikona i hoʻopaʻa ʻia ma Markdown a i ʻole XML markup) no ka grammatical, spelling and stylistic accuracy (ma ka ʻōlelo Pelekania ua kapa ʻia kēia proofreading).

ʻO ka manaʻo o ka papahana e hoʻonui i ka spellcheck maʻamau IntelliJ IDEA i ka pālākiō o Grammarly, e hana i kahi ʻano Grammarly i loko o IDE.

Hiki iā ʻoe ke ʻike i ka mea i hana ʻia loulou.

ʻAe, ma lalo e kamaʻilio mākou i nā kikoʻī e pili ana i nā hiki o ka plugin, a me nā pilikia i kū mai i ka wā o kāna hana ʻana.

Hoʻokumu

Nui nā huahana i hoʻolālā ʻia no ke kākau ʻana i nā kikokikona ma nā ʻōlelo kūlohelohe, akā kākau pinepine ʻia nā palapala a me nā manaʻo code ma nā wahi hoʻomohala. Ma ka manawa like, hana maikaʻi nā IDE i ka ʻimi ʻana i nā hewa ma ke code, akā kūpono ʻole i nā kikokikona ma nā ʻōlelo kūlohelohe. He mea maʻalahi kēia e hana hewa i ka grammar, punctuation, a i ʻole ke ʻano me ka ʻole o ke kaiapuni hoʻomohala e kuhikuhi iā lākou. He mea koʻikoʻi ka hana hewa ʻana i ke kākau ʻana i ka mea hoʻohana, no ka mea, ʻaʻole e pili kēia i ka hoʻomaopopo wale ʻana o ke code, akā ʻo nā mea hoʻohana hoʻi i ka noi i kūkulu ʻia iā lākou iho.

ʻO kekahi o nā wahi hoʻomohala kaulana a hoʻomohala ʻia ʻo IntelliJ IDEA, a me nā IDE e pili ana i ka IntelliJ Platform. Loaʻa iā IntelliJ Platform kahi mākaʻikaʻi kikoʻī i kūkulu ʻia, akā ʻaʻole ia e kāpae i nā hewa grammatical maʻalahi. Ua hoʻoholo mākou e hoʻohui i kekahi o nā ʻōnaehana loiloi ʻōlelo kūlohelohe kaulana i loko o IntelliJ IDEA.

Ka hoʻokō

Hackathon DevDays'19 (mahele 2): parser memo leo no Telegram a me ka nānā ʻana i ka grammar ma IntelliJ IDEAʻAʻole mākou i hoʻonohonoho iā mākou iho i ka hana o ka hana ʻana i kā mākou ʻōnaehana hōʻoia kikokikona, no laila ua hoʻohana mākou i kahi hoʻonā i loaʻa. ʻO ka koho kūpono loa i lilo ʻTleloTool. Ua ʻae ka laikini iā ​​mākou e hoʻohana manuahi no kā mākou kumu: manuahi, kākau ʻia ma Java a me ka open-source. Eia kekahi, kākoʻo ia i nā ʻōlelo 25 a ua hoʻomohala ʻia no nā makahiki he ʻumikūmālima. ʻOiai ka wehe ʻana, he mea hoʻokūkū koʻikoʻi ʻo LanguageTool i nā hoʻonā hōʻoia kikokikona i uku ʻia, a ʻo ka ʻoiaʻiʻo hiki iā ia ke hana ma ka ʻāina ʻo ia ka mea pepehi kanaka.

Aia ke code plugin nā waihona ma GitHub. Ua kākau ʻia ka papahana holoʻokoʻa ma Kotlin me kahi hoʻohui liʻiliʻi o Java no ka UI. I ka wā o ka hackathon, ua hoʻokō mākou i ke kākoʻo no Markdown, JavaDoc, HTML a me Plain Text. Ma hope o ka hackathon, ua hoʻohui hou kahi mea hou i ke kākoʻo no XML, string literals ma Java, Kotlin a me Python, a me ka nānā ʻana i ka spell.

ʻOmaʻi

Ua ʻike koke mākou inā mākou e hānai i nā kikokikona a pau i LanguageTool no ka nānā ʻana i kēlā me kēia manawa, a laila e maloʻo ka IDEA ma luna o nā kikokikona ʻoi aʻe a i ʻole ka koʻikoʻi, ʻoiai ka nānā ʻana i ke kahe o ka UI. Ua hoʻoholo ʻia ka pilikia ma o ka hōʻoia `ProgressManager.checkCancelled` - hoʻolei kēia hana i kahi ʻokoʻa inā manaʻo ʻo IDEA ua hiki i ka manawa e kāpae i ka nānā.

Hoʻopau loa kēia i ka hoʻokuʻu ʻana, akā hiki ʻole ke hoʻohana: lōʻihi ka lōʻihi o ke kaʻina hana. Eia kekahi, i kā mākou hihia, ʻo ka hapa liʻiliʻi loa o ka hoʻololi ʻana i ka kikokikona a makemake mākou e hūnā i nā hopena. ʻO ia kā mākou i hana ai. I ʻole e nānā i nā mea āpau i kēlā me kēia manawa, hoʻokaʻawale mākou i ka kikokikona i ʻāpana a nānā wale i nā mea i loli. No ka mea hiki ke nui nā kikokikona a ʻaʻole mākou makemake e hoʻouka i ka cache, ʻaʻole mākou i mālama i nā kikokikona iā lākou iho, akā i kā lākou hashes. ʻAe kēia i ka plugin e hana maʻalahi ma nā faila nui.

Kākoʻo ʻo LanguageTool ma mua o 25 mau ʻōlelo, akā ʻaʻole paha e pono ka mea hoʻohana iā lākou āpau. Makemake au e hāʻawi i ka manawa e hoʻoiho i nā hale waihona puke no kahi ʻōlelo kikoʻī ma ke noi ʻana (inā ʻoe e kaha iā ia ma ka UI). Ua hoʻokō mākou i kēia, akā ua lilo ia i mea paʻakikī a hilinaʻi ʻole. ʻO ka mea kūikawā, pono mākou e hoʻouka i LanguageTool me kahi pūʻulu ʻōlelo hou me ka hoʻohana ʻana i kahi papa hoʻoili ʻokoʻa, a laila hoʻomaka pono ia. I ka manawa like, aia nā hale waihona puke a pau i loko o kahi waihona mea hoʻohana .m2, a i kēlā me kēia hoʻomaka mākou e nānā i ko lākou kūpaʻa. I ka hopena, ua hoʻoholo mākou inā pilikia nā mea hoʻohana i ka nui o ka plugin, a laila e hāʻawi mākou i kahi plugin kaʻawale no nā ʻōlelo kaulana loa.

Ma hope o ka hackathon

Ua pau ka hackathon, akā ua hoʻomau ka hana ma ka plugin me kahi hui liʻiliʻi. Makemake au e kākoʻo i nā kaula, nā manaʻo, a me nā kūkulu ʻōlelo e like me nā inoa ʻano hoʻololi a me nā papa. I kēia manawa kākoʻo wale ʻia kēia no Java, Kotlin a me Python, akā manaʻo mākou e ulu kēia papa inoa. Ua hoʻoponopono mākou i nā ʻōpala liʻiliʻi he nui a lilo i mea kūpono me ka mea nānā kikoʻī i kūkulu ʻia e Idea. Eia kekahi, ua ʻike ʻia ke kākoʻo XML a me ka nānā ʻana. Hiki ke loaʻa kēia mau mea a pau ma ka lua o ka mana, a mākou i paʻi hou ai.

He aha ka mea e hiki mai ana?

Hiki ke hoʻohana ʻia kēlā plugin no nā mea hoʻomohala wale nō, akā no nā mea kākau loea (hana pinepine, no ka laʻana, me XML i kahi IDE). I kēlā me kēia lā pono lākou e hana me ka ʻōlelo kūlohelohe, me ka loaʻa ʻole o ke kōkua ma ke ʻano o nā ʻōlelo aʻoaʻo hoʻoponopono e pili ana i nā hewa hiki. Hāʻawi kā mākou plugin i nā ʻōlelo aʻoaʻo a hana ia me kahi kiʻekiʻe o ka pololei.
Hoʻolālā mākou e hoʻomohala i ka plugin, ma ka hoʻohui ʻana i nā ʻōlelo hou a me ka ʻimi ʻana i kahi ala maʻamau i ka hoʻonohonoho ʻana i ka nānā ʻana i nā kikokikona. ʻO kā mākou mau hoʻolālā koke e pili ana i ka hoʻokō ʻana i nā profiles stylistic (nā hoʻonohonoho o nā lula e wehewehe i kahi alakaʻi kaila no ka kikokikona, no ka laʻana, "ʻaʻole kākau eg, akā kākau i ke ʻano piha"), hoʻonui i ka puke wehewehe ʻōlelo a hoʻomaikaʻi i ka mea hoʻohana. makemake mākou e hāʻawi i ka mea hoʻohana i ka manawa ʻaʻole e haʻalele wale i kahi huaʻōlelo, akā e hoʻohui iā ia i loko o ka puke wehewehe ʻōlelo, e hōʻike ana i ka ʻāpana o ka ʻōlelo).

Puna: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka