Hackathon DevDays'19 (gawo 2): mawu omvera pa Telegraph ndi galamala yoyang'ana mu IntelliJ IDEA

Tikupitiriza kuyankhula za ntchito za kasupe hackathon DevDays, momwe ophunzira a pulogalamu ya master adagwira nawo ntchito. "Kupititsa patsogolo Mapulogalamu / Mapulogalamu Opanga Mapulogalamu".

Hackathon DevDays'19 (gawo 2): mawu omvera pa Telegraph ndi galamala yoyang'ana mu IntelliJ IDEA

Mwa njira, tikufuna kuitana owerenga kuti agwirizane VK gulu la ophunzira ambuye. M'menemo tidzafalitsa nkhani zaposachedwa za kulemba anthu ntchito ndi kuphunzira. Kanema wa tsiku lotseguka angapezekenso pagulu. Tikukukumbutsani: mwambowu udzachitika pa Epulo 29, zambiri Online.

Telegraph Desktop Voice Message Parser

Hackathon DevDays'19 (gawo 2): mawu omvera pa Telegraph ndi galamala yoyang'ana mu IntelliJ IDEA

Wolemba lingaliro
Khoroshev Artyom

Lamulo dongosolo

Khoroshev Artem - woyang'anira polojekiti / wopanga / QA
Eliseev Anton - katswiri wazamalonda / katswiri wamalonda
Maria Kuklina - Wopanga UI / wopanga
Bakhvalov Pavel - Wopanga UI / wopanga / QA

Kuchokera kumalingaliro athu, Telegraph ndi mthenga wamakono komanso wosavuta, ndipo mtundu wake wa PC ndiwodziwika komanso wotseguka, womwe umapangitsa kuti zisinthe. The kasitomala amapereka ndithu wolemera magwiridwe. Kuphatikiza pa mameseji wamba, ilinso ndi mafoni amawu, mauthenga amakanema, ndi mauthenga amawu. Ndipo ndi omaliza omwe nthawi zina amabweretsa zovuta kwa omwe amawalandira. Nthawi zambiri sizingatheke kumvera uthenga wa mawu mukakhala pa kompyuta kapena laputopu. Pakhoza kukhala phokoso lozungulira, kusowa kwa mahedifoni, kapena simukufuna kuti aliyense amve zomwe zili mu uthengawo. Mavuto oterowo samayamba ngati mugwiritsa ntchito Telegraph pa foni yam'manja, chifukwa mutha kuyibweretsa ku khutu lanu, mosiyana ndi laputopu kapena PC. Tinayesetsa kuthetsa vutoli.

Cholinga cha pulojekiti yathu pa DevDays chinali kuwonjezera kuthekera komasulira mauthenga amawu olandilidwa kukhala mawu kwa kasitomala wapakompyuta wa Telegraph (omwe amatchedwa Telegraph Desktop).

Ma analogue onse pakadali pano ndi bots omwe mutha kutumiza uthenga wamawu ndikulandila mawu poyankha. Sitinasangalale kwambiri ndi izi: kutumiza uthenga ku bot sikothandiza; tikufuna kukhala ndi magwiridwe antchito. Kuphatikiza apo, bot iliyonse ndi gulu lachitatu lomwe limakhala ngati mkhalapakati pakati pa API yozindikiritsa mawu ndi wogwiritsa ntchito, ndipo izi ndi, osachepera, zosatetezeka.

Monga tanenera kale, telegalamu-desktop ili ndi zabwino ziwiri: kumasuka komanso kuthamanga kwa ntchito. Ndipo izi sizongochitika mwangozi, chifukwa zidalembedwa kwathunthu mu C ++. Ndipo popeza tidasankha kuwonjezera magwiridwe antchito mwachindunji kwa kasitomala, tidayenera kupanga mu C ++.

Hackathon DevDays'19 (gawo 2): mawu omvera pa Telegraph ndi galamala yoyang'ana mu IntelliJ IDEAMunali anthu 4 mu timu yathu. Poyambirira, anthu awiri anali kufunafuna laibulale yoyenera yozindikiritsa zolankhula, munthu m'modzi amaphunzira magwero a Telegraph-desktop, wina akutumiza ntchito yomanga. Dongosolo la Ma TV. Pambuyo pake, aliyense anali wotanganidwa kukonza UI ndi kukonza zolakwika.

Zinkawoneka kuti kugwiritsa ntchito zomwe akuyembekezeredwa sikungakhale kovuta, koma, monga nthawi zonse, zovuta zinayamba.

Yankho la vutoli linali ndi ntchito ziwiri zodziyimira pawokha: kusankha chida choyenera chozindikiritsa mawu ndikukhazikitsa UI ya magwiridwe antchito atsopano.

Posankha laibulale yozindikiritsa mawu, nthawi yomweyo tinayenera kusiya ma API onse opanda intaneti, chifukwa mitundu ya zilankhulo imatenga malo ambiri. Koma tikunena za chinenero chimodzi chokha. Zinawonekeratu kuti tiyenera kugwiritsa ntchito intaneti API. Pambuyo pake zidapezeka kuti mautumiki ozindikira mawu a zimphona monga Google, Yandex ndi Microsoft sali aulere konse, ndipo tiyenera kukhutira ndi nthawi yoyeserera. Chotsatira chake, Google Speech-To-Text inasankhidwa chifukwa imakulolani kuti mupeze chizindikiro chogwiritsira ntchito utumiki, womwe udzakhala kwa chaka chonse.

Vuto lachiwiri lomwe tidakumana nalo ndi lokhudzana ndi zolakwika zina za C ++ - malo osungiramo malo osungiramo mabuku osiyanasiyana pakalibe malo apakati. Zimachitika kuti Telegraph Desktop imadalira malaibulale ena ambiri apadera. Malo ovomerezeka ali Bukuli za kusonkhanitsa polojekiti. Komanso nkhani zambiri zotseguka zokhudzana ndi zovuta zomanga, mwachitsanzo nthawi ΠΈ Π΄Π²Π°. Mavuto onse adakhala okhudzana ndi mfundo yakuti script yomanga inalembedwa kwa Ubuntu 14.04, ndipo kuti athe kumanga bwino telegalamu pansi pa Ubuntu 18.04, kusintha kunayenera kupangidwa.

Telegraph Desktop palokha imatenga nthawi yayitali kuti isonkhanitsidwe: pa laputopu yokhala ndi Intel Core i5-7200U, msonkhano wathunthu (mbendera -j 4) ndi kudalira konse kumatenga pafupifupi maola atatu. Mwa izi, pafupifupi mphindi za 30 zimatengedwa ndikulumikiza kasitomalayo (kenako zidapezeka kuti mukusintha kwa Debug, kulumikizana kumatenga pafupifupi mphindi 10), komabe gawo lolumikizira liyenera kubwerezedwa nthawi iliyonse mutatha kusintha.

Ngakhale panali mavuto, tinakwanitsa kugwiritsa ntchito lingaliro lomwe tinapanga, komanso kusintha kumanga script kwa Ubuntu 18.04. Chiwonetsero cha ntchito chikhoza kuwonetsedwa pa kugwirizana. Timaphatikizanso makanema ojambula angapo. Batani lawonekera pafupi ndi mauthenga onse amawu, kukulolani kuti mumasulire uthengawo kukhala mawu. Podina kumanja, mutha kutchulanso chilankhulo chomwe chidzagwiritsidwe ntchito powulutsa. Wolemba kugwirizana kasitomala alipo kuti atsitsidwe.

Posungira.

M'malingaliro athu, zidakhala Umboni wabwino wa Lingaliro la magwiridwe antchito omwe angakhale abwino kwa ogwiritsa ntchito ambiri. Tikuyembekeza kuziwona m'tsogolomu za Telegraph Desktop.

Thandizo Lowonjezera Lachiyankhulo Chachilengedwe mu IntelliJ IDEA

Hackathon DevDays'19 (gawo 2): mawu omvera pa Telegraph ndi galamala yoyang'ana mu IntelliJ IDEA

Wolemba lingaliro

Tankov Vladislav

Lamulo dongosolo

Tankov Vladislav (wotsogolera gulu, akugwira ntchito ndi LanguageTool ndi IntelliJ IDEA)
Nikita Sokolov (akugwira ntchito ndi LanguageTool ndikupanga UI)
Khvorov Alexander (akugwira ntchito ndi LanguageTool ndikuwongolera magwiridwe antchito)
Sadovnikov Aleksandr (thandizo la kugawa zilankhulo ndi code)

Tapanga pulogalamu yowonjezera ya IntelliJ IDEA yomwe imayang'ana zolemba zosiyanasiyana (ndemanga ndi zolembedwa, mizere yeniyeni mu code, zolemba zolembedwa mu Markdown kapena XML markup) kuti zitsimikizire kulondola kwa galamala, kalembedwe komanso kalembedwe (mu Chingerezi uku kumatchedwa kuwerengera).

Lingaliro la pulojekitiyi linali kukulitsa ma spellcheck IntelliJ IDEA mpaka sikelo ya Grammarly, kuti apange mtundu wa Grammarly mkati mwa IDE.

Mutha kuwona zomwe zidachitika kugwirizana.

Chabwino, pansipa tikambirana mwatsatanetsatane za kuthekera kwa pulogalamu yowonjezera, komanso zovuta zomwe zidabuka pakulengedwa kwake.

Chilimbikitso

Pali zinthu zambiri zomwe zimapangidwira kulemba zolemba m'zilankhulo zachilengedwe, koma zolemba ndi ma code code nthawi zambiri zimalembedwa m'malo otukuka. Panthawi imodzimodziyo, ma IDE amachita ntchito yabwino kwambiri yopeza zolakwika mu code, koma ndi zosayenera kwa malemba a zilankhulo zachilengedwe. Izi zimapangitsa kukhala kosavuta kulakwitsa mu galamala, zizindikiro zopumira, kapena masitayilo popanda malo otukuka kuwalozera. Ndikofunikira kwambiri kulakwitsa polemba mawonekedwe ogwiritsira ntchito, chifukwa izi sizikhudza kumveka kwa kachidindo kokha, komanso ogwiritsa ntchito omwe apangidwa okha.

Chimodzi mwazinthu zodziwika bwino komanso zotukuka ndi IntelliJ IDEA, komanso ma IDE ozikidwa pa IntelliJ Platform. IntelliJ Platform ili kale ndi spellchecker yomangidwa, koma samachotsa ngakhale zolakwika zosavuta za galamala. Tidaganiza zophatikizira imodzi mwazinthu zodziwika bwino zosanthula zilankhulo zachilengedwe mu IntelliJ IDEA.

РСализация

Hackathon DevDays'19 (gawo 2): mawu omvera pa Telegraph ndi galamala yoyang'ana mu IntelliJ IDEASitinadzipangire tokha ntchito yodzipangira tokha makina otsimikizira malemba, choncho tinagwiritsa ntchito yankho lomwe linalipo kale. Njira yabwino kwambiri idakhala ChilankhuloTool. Layisensiyo idatilola kugwiritsa ntchito momasuka pazolinga zathu: ndi yaulere, yolembedwa mu Java komanso gwero lotseguka. Kuphatikiza apo, imathandizira zilankhulo 25 ndipo yakhala ikukula kwazaka zopitilira khumi ndi zisanu. Ngakhale kuti ndi lotseguka, LanguageTool ndiwopikisana kwambiri pamayankho otsimikizira zolemba, ndipo kuti imatha kugwira ntchito kwanuko ndi gawo lake lakupha.

Khodi yowonjezera ili mkati nkhokwe pa GitHub. Ntchito yonseyi inalembedwa ku Kotlin ndi kuwonjezera pang'ono kwa Java kwa UI. Panthawi ya hackathon, tidakwanitsa kugwiritsa ntchito Markdown, JavaDoc, HTML ndi Plain Text. Pambuyo pa hackathon, kusintha kwakukulu kunawonjezera chithandizo cha XML, zingwe zolembera ku Java, Kotlin ndi Python, ndi kufufuza kalembedwe.

Zovuta

Mwamsanga tidazindikira kuti ngati tipereka zolemba zonse ku LanguageTool kuti ziziwunikiridwa nthawi zonse, mawonekedwe a IDEA amaundana pamawu enanso kapena ochepa, chifukwa kuyenderako kumalepheretsa kuyenda kwa UI. Vutoli lidathetsedwa kudzera pa cheke cha `ProgressManager.checkCancelled` - ntchitoyi ikupereka chosiyana ngati IDEA ikukhulupirira kuti ndi nthawi yochotsa kuyendera.

Izi zidathetsa kuzizira, koma ndizosatheka kugwiritsa ntchito: zolembazo zimatenga nthawi yayitali kuti zitheke. Komanso, kwa ife, nthawi zambiri gawo laling'ono la malemba limasintha ndipo tikufuna kusunga zotsatira mwanjira ina. Ndizo ndendende zomwe tinachita. Kuti tisayang'ane chilichonse nthawi zonse, timagawaniza malembawo mzidutswa ndikuyang'ana okhawo omwe asintha. Popeza kuti malembawo angakhale aakulu ndipo sitinafune kukweza cache, sitinasunge malembawo, koma ma hashes awo. Izi zinapangitsa kuti pulogalamu yowonjezera igwire ntchito bwino ngakhale pamafayilo akuluakulu.

LanguageTool imathandizira zilankhulo zopitilira 25, koma ndizokayikitsa kuti wogwiritsa ntchito m'modzi amazifuna zonse. Ndinkafuna kupereka mwayi wotsitsa malaibulale achilankhulo china mukafunsidwa (ngati muyiyika mu UI). Tidachita izi, koma zidakhala zovuta komanso zosadalirika. Makamaka, tidayenera kutsitsa LanguageTool ndi zilankhulo zatsopano pogwiritsa ntchito chojambulira chosiyana, kenako ndikuyambitsa mosamala. PanthaΕ΅i imodzimodziyo, malaibulale onse anali m’malo osungiramo ogwiritsira ntchito .m2, ndipo pa chiyambi chilichonse tinkayenera kufufuza kukhulupirika kwawo. Pamapeto pake, tinaganiza kuti ngati ogwiritsa ntchito ali ndi vuto ndi kukula kwa pulogalamu yowonjezera, ndiye kuti tidzapereka pulogalamu yowonjezera ya zilankhulo zingapo zodziwika kwambiri.

Pambuyo pa hackathon

Hackathon inatha, koma ntchito yowonjezera idapitilira ndi gulu locheperako. Ndinkafuna kuthandizira zingwe, ndemanga, komanso zopanga zilankhulo monga mayina osinthika komanso akalasi. Pakadali pano izi zimangothandizidwa ndi Java, Kotlin ndi Python, koma tikukhulupirira kuti mndandandawu udzakula. Takonza ziphuphu zing'onozing'ono zambiri ndikukhala zogwirizana ndi Idea's build-in spell checker. Kuphatikiza apo, chithandizo cha XML ndi kuyang'ana kalembedwe zawonekera. Zonsezi zitha kupezeka mu mtundu wachiwiri, womwe tidasindikiza posachedwa.

Kodi yotsatira?

Pulagi yotereyi ingakhale yothandiza osati kwa omanga okha, komanso kwa olemba luso (nthawi zambiri amagwira ntchito, mwachitsanzo, ndi XML mu IDE). Tsiku lililonse ayenera kugwira ntchito ndi chinenero chachibadwa, popanda kukhala ndi wothandizira mu mawonekedwe a malangizo a mkonzi za zolakwika zomwe zingatheke. Pulogalamu yathu yowonjezera imapereka malangizo oterowo ndipo imachita izi molondola kwambiri.
Tikukonzekera kupanga pulogalamu yowonjezera, powonjezera zilankhulo zatsopano komanso poyang'ana njira wamba pakukonza zolemba. Zolinga zathu zaposachedwa zikuphatikiza kukhazikitsa ma profailo a stylistic (malamulo omwe amatanthauzira kalozera wamalembedwe, mwachitsanzo, "osalemba mwachitsanzo, koma lembani mawonekedwe onse"), kukulitsa mtanthauzira mawu ndikusintha mawonekedwe a ogwiritsa ntchito (makamaka, tikufuna kupereka mwayi kwa wogwiritsa ntchito osati kungonyalanyaza mawu, koma kuwonjezera mu mtanthauzira mawu, kusonyeza gawo la mawu).

Chitsime: www.habr.com

Kuwonjezera ndemanga