I-Hackathon DevDays'19 (ingxenye 2): isihlungi somlayezo womsindo weTelegramu nokuhlola uhlelo lolimi ku-IntelliJ IDEA

Siyaqhubeka nokukhuluma ngamaphrojekthi we-spring hackathon DevDays, lapho abafundi bohlelo lwe-master bahlanganyele khona. "Ukuthuthukiswa Kwesoftware / Ubunjiniyela Besoftware".

I-Hackathon DevDays'19 (ingxenye 2): isihlungi somlayezo womsindo weTelegramu nokuhlola uhlelo lolimi ku-IntelliJ IDEA

Kodwa-ke, singathanda ukumema abafundi ukuthi bajoyine Iqembu le-VK labafundi be-master's. Kuyo sizoshicilela izindaba zakamuva mayelana nokuqashwa kanye nokufunda. Ividiyo yosuku oluvuliwe nayo ingatholakala eqenjini. Siyakukhumbuza: umcimbi uzokwenzeka ngo-Ephreli 29, imininingwane Online.

I-Telegram Desktop Message Parser

I-Hackathon DevDays'19 (ingxenye 2): isihlungi somlayezo womsindo weTelegramu nokuhlola uhlelo lolimi ku-IntelliJ IDEA

Umbhali wombono
Khoroshev Artyom

Ima emugqeni

Khoroshev Artem – umphathi wephrojekthi/umthuthukisi/QA
U-Eliseev Anton - umhlaziyi webhizinisi / uchwepheshe wezokumaketha
U-Maria Kuklina – umklami/unjiniyela we-UI
I-Bakhvalov Pavel – Umklami/unjiniyela/QA we-UI

Ngokombono wethu, iTelegram iyisithunywa sesimanje futhi esikahle, futhi inguqulo yayo ye-PC idumile futhi ingumthombo ovulekile, okwenza kube nokwenzeka ukuyishintsha. Iklayenti inikeza ukusebenza okucebile impela. Ngaphezu kwemiyalezo yombhalo ejwayelekile, iqukethe izingcingo zezwi, imiyalezo yevidiyo, nemiyalezo yezwi. Futhi ingeyakamuva ngezinye izikhathi eletha ukuphazamiseka kumamukeli wayo. Ngokuvamile akwenzeki ukulalela umlayezo wezwi ngenkathi ukukhompyutha noma ikhompuyutha ephathekayo. Kungase kube nomsindo we-ambient, ukuntuleka kwama-headphone, noma awufuni noma ubani ezwe okuqukethwe komlayezo. Izinkinga ezinjalo cishe aziveli uma usebenzisa i-Telegram ku-smartphone, ngoba ungakwazi ukuyibeka endlebeni yakho, ngokungafani ne-laptop noma i-PC. Sizamile ukuxazulula le nkinga.

Umgomo wephrojekthi yethu ku-DevDays bekuwukwengeza ikhono lokuhumusha imilayezo yezwi eyamukelwe ibe umbhalo kuklayenti ledeskithophu yeTelegram (kamuva ebizwa ngokuthi Ideskithophu yeTelegram).

Wonke ama-analogue okwamanje angama-bots ongathumela kuwo umlayezo womsindo futhi uthole umbhalo njengempendulo. Asijabule kakhulu ngalokhu: ukudlulisela umlayezo ku-bot akulula kakhulu; singathanda ukuba nokusebenza komdabu. Ngaphezu kwalokho, noma iyiphi i-bot iyinkampani yangaphandle esebenza njengomxhumanisi phakathi kwe-API yokuqaphela inkulumo nomsebenzisi, futhi lokhu, okungenani, akuphephile.

Njengoba kuphawuliwe ekuqaleni, i-telegram-desktop inezinzuzo ezimbili ezibalulekile: kalula kanye nesivinini sokusebenza. Futhi lokhu akukhona ukuqondana, ngoba kubhalwe ngokuphelele ku-C ++. Futhi njengoba sinqume ukungeza ukusebenza okusha ngqo kuklayenti, bekufanele sikuthuthukise ku-C++.

I-Hackathon DevDays'19 (ingxenye 2): isihlungi somlayezo womsindo weTelegramu nokuhlola uhlelo lolimi ku-IntelliJ IDEABekunabantu abangu-4 eqenjini lethu. Ekuqaleni, abantu ababili babefuna umtapo wezincwadi ofanelekayo wokuqashelwa inkulumo, umuntu oyedwa wayefunda ikhodi yomthombo ye-Telegram-desktop, omunye wayethumela iphrojekthi yokwakha. Ideskithophu yedeskithophu. Kamuva, wonke umuntu wayematasa elungisa i-UI futhi elungisa iphutha.

Kwabonakala sengathi ukuqalisa ukusebenza okuhlosiwe kwakungeke kube nzima, kodwa, njengoba kwenzeka njalo, kwaphakama ubunzima.

Isixazululo senkinga sihlanganisa imisebenzi engaphansi emibili ezimele: ukukhetha ithuluzi elifanele lokuqaphela inkulumo nokusebenzisa i-UI ukuze kusebenze okusha.

Lapho sikhetha umtapo wolwazi wokuqashelwa kwezwi, ngokushesha kudingeke ukuthi silahle wonke ama-API angaxhunyiwe ku-inthanethi, ngoba amamodeli olimi athatha isikhala esiningi. Kodwa sikhuluma ngolimi olulodwa kuphela. Kwacaca ukuthi kuzofanele sisebenzise i-API eku-inthanethi. Kamuva kwavela ukuthi izinsizakalo zokuqaphela inkulumo zama-giants afana ne-Google, Yandex ne-Microsoft azikho mahhala, futhi kuzodingeka saneliswe isikhathi sokulinga. Ngenxa yalokho, i-Google Speech-To-Text ikhethiwe ngoba ikuvumela ukuthi uthole ithokheni yokusebenzisa isevisi, ezohlala unyaka wonke.

Inkinga yesibili esihlangabezane nayo ihlobene nokushiyeka okuthile kwe-C++ - i-zoo yemitapo yolwazi ehlukahlukene ngenxa yokungabikho kwenqolobane emaphakathi. Kwenzeka ukuthi i-Telegram Desktop incike kweminye imitapo yolwazi eqondene nenguqulo ethile. Inqolobane esemthethweni ine incwadi yokuhlanganisa iphrojekthi. Futhi nenani elikhulu lezinkinga ezivulekile mayelana nezinkinga zokwakha, isibonelo izikhathi ΠΈ Π΄Π²Π°. Zonke izinkinga zivele zihlobene nokuthi umbhalo wokwakha wawubhalelwe Ubuntu 14.04, futhi ukuze kwakhiwe ngempumelelo i-telegram ngaphansi kwe-Ubuntu 18.04, kwadingeka kwenziwe izinguquko.

I-Telegraph Desktop ngokwayo ithatha isikhathi eside impela ukuhlangana: kwikhompyutha ephathekayo ene-Intel Core i5-7200U, ukuhlangana okuphelele (ifulegi -j 4) nakho konke ukuncika kuthatha cishe amahora amathathu. Kulokhu, cishe imizuzu engama-30 ithathwa ngokuxhumanisa iklayenti uqobo (kamuva kwavela ukuthi ekucushweni kwe-Debug, ukuxhumanisa kuthatha imizuzu eyi-10), kepha isigaba sokuxhuma kufanele siphindwe njalo ngemuva kokwenza izinguquko.

Naphezu kwezinkinga, sikwazile ukusebenzisa umqondo oqanjiwe, kanye nokuvuselela ukwakha iskripthi ku-Ubuntu 18.04. Ukuboniswa komsebenzi kungabonakala ku isixhumanisi. Siphinde sihlanganise izithombe ezinyakazayo. Kuvele inkinobho eduze kwayo yonke imilayezo yezwi, okukuvumela ukuthi uhumushele umlayezo embhalweni. Ngokuchofoza kwesokudla, ungakwazi futhi ukucacisa ulimi oluzosetshenziselwa ukusakaza. Ngu isixhumanisi iklayenti iyatholakala ukuze ilandwe.

Inqolobane.

Ngokombono wethu, kuvele kuwubufakazi obuhle bomqondo wokusebenza obungaba lula kubasebenzisi abaningi. Sithemba ukukubona ekukhishweni okuzayo kwe-Telegram Desktop.

Ukusekelwa Kwezilimi Zemvelo Okuthuthukisiwe ku-IntelliJ IDEA

I-Hackathon DevDays'19 (ingxenye 2): isihlungi somlayezo womsindo weTelegramu nokuhlola uhlelo lolimi ku-IntelliJ IDEA

Umbhali wombono

Tankov Vladislav

Ima emugqeni

U-Tankov Vladislav (ohola ithimba, osebenza ne-LanguageTool kanye ne-IntelliJ IDEA)
U-Nikita Sokolov (esebenza ne-LanguageTool futhi edala i-UI)
U-Khvorov Alexander (usebenza ne-LanguageTool nokwenza ngcono ukusebenza)
U-Sadovnikov Alexander (ukusekelwa kokuhlukanisa izilimi nekhodi)

Senze i-plugin ye-IntelliJ IDEA ehlola imibhalo ehlukahlukene (amazwana nemibhalo, imigqa yangempela kukhodi, umbhalo ofomethiwe ngo-Markdown noma umaka we-XML) ukuze uthole ukunemba kohlelo, isipelingi kanye nesitayela (ngesiNgisi lokhu kubizwa ngokuthi ukuhlola amaphutha).

Umqondo wephrojekthi bekuwukunweba ukuhlolwa kokupela okujwayelekile kwe-IntelliJ IDEA kusikali se-Grammarly, ukwenza uhlobo lwe-Grammarly ngaphakathi kwe-IDE.

Uyabona ukuthi kwenzekeni isixhumanisi.

Yebo, ngezansi sizokhuluma ngokuningiliziwe mayelana namakhono e-plugin, kanye nobunzima obavela ngesikhathi sokudalwa kwayo.

Ukugqugquzela

Kunemikhiqizo eminingi eklanyelwe ukubhala umbhalo ngezilimi zemvelo, kodwa imibhalo kanye nokuphawula kwekhodi kuvame ukubhalwa ezindaweni zokuthuthukiswa. Ngesikhathi esifanayo, ama-IDE enza umsebenzi omuhle kakhulu wokuthola amaphutha kukhodi, kodwa awafaneleki kahle imibhalo ngezilimi zemvelo. Lokhu kwenza kube lula kakhulu ukwenza amaphutha kuhlelo lolimi, izimpawu zokuloba, noma isitayela ngaphandle kwendawo yokuthuthuka ewakhombayo. Kubaluleke kakhulu ukwenza iphutha ekubhaleni isikhombimsebenzisi somsebenzisi, ngoba lokhu kuzothinta hhayi kuphela ukuqondwa kwekhodi, kodwa futhi nabasebenzisi bohlelo lokusebenza oluthuthukisiwe ngokwabo.

Enye yezindawo ezithuthuke kakhulu nezithuthukisiwe yi-IntelliJ IDEA, kanye nama-IDE asekelwe ku-IntelliJ Platform. I-IntelliJ Platform isivele inesihloli sokupela esakhelwe ngaphakathi, kodwa ayisusi ngisho namaphutha egrama alula. Sinqume ukuhlanganisa eyodwa yezinhlelo ezidumile zokuhlaziya ulimi lwemvelo ku-IntelliJ IDEA.

Ukuqaliswa

I-Hackathon DevDays'19 (ingxenye 2): isihlungi somlayezo womsindo weTelegramu nokuhlola uhlelo lolimi ku-IntelliJ IDEAAsizange sizibekele umsebenzi wokwakha isistimu yethu yokuqinisekisa umbhalo, ngakho-ke sisebenzise isisombululo esikhona. Inketho efaneleke kakhulu yaba I-LanguageTool. Ilayisensi isivumele ukuthi siyisebenzisele izinjongo zethu ngokukhululeka: imahhala, ibhalwe nge-Java kanye nomthombo ovulekile. Ngaphezu kwalokho, isekela izilimi ezingama-25 futhi isithuthukiswe iminyaka engaphezu kweshumi nanhlanu. Naphezu kokuvuleka kwayo, i-LanguageTool iyimbangi eqinile yezixazululo zokuqinisekisa umbhalo okhokhelwayo, futhi iqiniso lokuthi ingasebenza endaweni iyisici sayo esibulalayo.

Ikhodi ye-plugin ingaphakathi amakhosombe ku-GitHub. Yonke iphrojekthi yabhalwa e-Kotlin nokwengezwa okuncane kwe-Java ku-UI. Phakathi ne-hackathon, sikwazile ukusebenzisa ukusekelwa kwe-Markdown, JavaDoc, HTML kanye ne-Plain Text. Ngemuva kwe-hackathon, isibuyekezo esikhulu sengeze ukusekelwa kwe-XML, izintambo zoqobo ku-Java, i-Kotlin ne-Python, nokuhlola ukupela.

Ubunzima

Ngokushesha saqaphela ukuthi uma siphakela wonke umbhalo ku-LanguageTool ukuze uhlolwe ngaso sonke isikhathi, isixhumi esibonakalayo se-IDEA sizoba yiqhwa kunoma yimuphi umbhalo obucayi kakhulu, njengoba ukuhlola ngokwako kuvimbela ukugeleza kwe-UI. Inkinga yaxazululwa ngokuhlola okuthi `ProgressManager.checkCancelled` - lo msebenzi wenza okuhlukile uma i-IDEA ikholelwa ukuthi sekuyisikhathi sokuhoxisa ukuhlola.

Lokhu kwaqeda ngokuphelele amaqhwa, kodwa akunakwenzeka ukusebenzisa: umbhalo uthatha isikhathi eside kakhulu ukucubungula. Ngaphezu kwalokho, esimweni sethu, ngokuvamile ingxenye encane kakhulu yombhalo iyashintsha futhi sifuna ukugcina imiphumela ngandlela-thile. Yilokho kanye esakwenza. Ukuze singahloli yonke into ngaso sonke isikhathi, sihlukanisa umbhalo ube yizicucu ngokuzimisela futhi sihlole lezo ezishintshile kuphela. Njengoba imibhalo ingaba mikhulu futhi asizange sifune ukulayisha i-cache, asigcinanga imibhalo ngokwayo, kodwa ama-hashes awo. Lokhu kuvumele i-plugin ukuthi isebenze kahle ngisho nakumafayela amakhulu.

I-LanguageTool isekela izilimi ezingaphezu kuka-25, kodwa akunakwenzeka ukuthi noma yimuphi umsebenzisi oyedwa azidinga zonke. Bengifuna ukunikeza ithuba lokulanda imitapo yolwazi yolimi oluthile uma ngiyicela (uma uyimaka ku-UI). Saze sakusebenzisa lokhu, kodwa kwavela ukuthi kuyinkimbinkimbi kakhulu futhi kungathembekile. Ikakhulukazi, bekufanele silayishe i-LanguageTool ngesethi entsha yezilimi sisebenzisa isilayishi sekilasi esihlukile, bese siyiqalisa ngokucophelela. Ngesikhathi esifanayo, yonke imitapo yolwazi yayisendaweni yenqolobane yomsebenzisi engu-.m2, futhi ekuqaleni ngakunye kwakudingeka sihlole ubuqotho bayo. Ekugcineni, sinqume ukuthi uma abasebenzisi benezinkinga ngosayizi we-plugin, sizobe sesihlinzeka nge-plugin ehlukile yezilimi ezimbalwa ezidume kakhulu.

Ngemuva kwe-hackathon

I-hackathon iphelile, kodwa umsebenzi ku-plugin waqhubeka neqembu elincane. Bengifuna ukusekela izintambo, ukuphawula, ngisho nezakhiwo zolimi ezifana namagama aguquguqukayo namakilasi. Okwamanje lokhu kusekelwa kuphela i-Java, i-Kotlin ne-Python, kodwa sithemba ukuthi lolu hlu luzokhula. Silungise iziphazamisi eziningi ezincane futhi sihambisana kakhulu nesihloli sokupela esakhelwe ngaphakathi se-Idea. Ngaphezu kwalokho, ukwesekwa kwe-XML nokuhlolwa kwesipelingi kuvele. Konke lokhu kungatholakala enguqulweni yesibili, esiyishicilele muva nje.

Yini okulandelayo?

I-plugin enjalo ingaba usizo hhayi kuphela kubathuthukisi, kodwa futhi nakubabhali bezobuchwepheshe (ngokuvamile ukusebenza, isibonelo, nge-XML ku-IDE). Nsuku zonke kufanele basebenze ngolimi lwemvelo, ngaphandle kokuba nomsizi ngendlela yamathiphu omhleli mayelana namaphutha angenzeka. I-plugin yethu inikeza izeluleko ezinjalo futhi ikwenza ngezinga eliphezulu lokunemba.
Sihlela ukuthuthukisa i-plugin, kokubili ngokungeza izilimi ezintsha nangokuhlola indlela evamile yokuhlela ukuhlola umbhalo. Izinhlelo zethu ezisheshayo zibandakanya ukusetshenziswa kwamaphrofayili esitayela (amasethi emithetho echaza umhlahlandlela wesitayela sombhalo, isibonelo, β€œungabhali isb, kodwa bhala ifomu eliphelele”), ukwandisa isichazamazwi kanye nokwenza ngcono ukusebenzelana komsebenzisi (ikakhulukazi; sifuna ukunikeza umsebenzisi ithuba hhayi nje ukungaziba igama, kodwa ukulengeza kusichazamazwi, okubonisa ingxenye yenkulumo).

Umthombo: www.habr.com

Engeza amazwana