IHackathon DevDays'19 (icandelo 2): Uluhlu lomyalezo ovakalayo lweTelegram kunye nokujonga igrama kwi-IntelliJ IDEA

Siqhubeka sithetha ngeeprojekthi ze-hackathon ye-spring DevDays, apho abafundi beprogram yenkosi bathatha inxaxheba. "Uphuhliso lweSoftware / Ubunjineli beSoftware".

IHackathon DevDays'19 (icandelo 2): Uluhlu lomyalezo ovakalayo lweTelegram kunye nokujonga igrama kwi-IntelliJ IDEA

Ngendlela, singathanda ukumema abafundi ukuba bajoyine VK-iqela labafundi benkosi. Kuyo siya kupapasha iindaba zamva nje malunga nokuqashwa kunye nokufunda. Ividiyo yosuku oluvulekileyo nayo inokufumaneka kwiqela. Siyakukhumbuza: isiganeko siya kwenzeka ngo-Epreli 29, iinkcukacha online.

I-Telegram Desktop Voice Message Parser

IHackathon DevDays'19 (icandelo 2): Uluhlu lomyalezo ovakalayo lweTelegram kunye nokujonga igrama kwi-IntelliJ IDEA

Umbhali wembono
Khoroshev Artyom

Ukuma kweQela

Khoroshev Artem – umphathi weprojekthi/umphuhlisi/QA
Eliseev Anton - umhlalutyi wezoshishino / ingcali yokuthengisa
UMaria Kuklina – umyili/umphuhlisi we-UI
Bakhvalov Pavel – umyili we-UI/umphuhlisi/QA

Ngokombono wethu, iTelegram sisithunywa sanamhlanje nesifanelekileyo, kwaye inguqulelo yePC idumile kwaye ingumthombo ovulekileyo, okwenza kube lula ukuyiguqula. Umxhasi unika umsebenzi otyebileyo. Ukongeza kwimiyalezo ebhaliweyo eqhelekileyo, iqulethe iifowuni zelizwi, imiyalezo yevidiyo, kunye nemiyalezo yelizwi. Kwaye yeyokugqibela ethi ngamanye amaxesha izise ukuphazamiseka kumamkeli wabo. Ngokuqhelekileyo akunakwenzeka ukumamela umyalezo welizwi ngelixa ukwikhompyuter okanye ilaptop. Kusenokubakho ingxolo ye-ambient, ukungabikho kwee-headphones, okanye awufuni nabani na ukuba eve umxholo womyalezo. Iingxaki ezinjalo phantse azinakuvela ukuba usebenzisa iTelegram kwi-smartphone, kuba unokuyibeka nje endlebeni yakho, ngokungafaniyo nelaptop okanye iPC. Sizamile ukusombulula le ngxaki.

Injongo yeprojekthi yethu kwi-DevDays ibikukongeza ukukwazi ukuguqulela imiyalezo yelizwi efunyenweyo kwisicatshulwa kumxhasi wedesktop yeTelegram (ekwabizwa ngokuba yiTelegram Desktop).

Zonke ii-analogue okwangoku zi-bots onokuthumela kuzo umyalezo ovakalayo kwaye ufumane isicatshulwa ekuphenduleni. Asonwabanga kakhulu yile: ukuthumela umyalezo kwi-bot akulunganga kakhulu; singathanda ukuba nomsebenzi womthonyama. Ukongeza, nayiphi na i-bot ngumntu wesithathu osebenza njengomlamli phakathi kwe-API yokuqaphela intetho kunye nomsebenzisi, kwaye oku, ubuncinci, akukhuselekanga.

Njengoko kuphawuliwe ngaphambili, i-telegram-desktop ineenzuzo ezimbini ezibalulekileyo: ukukhululeka kunye nesantya sokusebenza. Kwaye oku akuqhelekanga, kuba kubhalwe ngokupheleleyo kwi-C ++. Kwaye ekubeni sigqibe ekubeni songeze ukusebenza okutsha ngokuthe ngqo kumxhasi, kuye kwafuneka siyiphuhlise kwi-C ++.

IHackathon DevDays'19 (icandelo 2): Uluhlu lomyalezo ovakalayo lweTelegram kunye nokujonga igrama kwi-IntelliJ IDEABekukho abantu aba-4 kwiqela lethu. Ekuqaleni, abantu ababini babekhangela ithala leencwadi elifanelekileyo lokuqondwa kwentetho, umntu omnye wayefunda ikhowudi yomthombo weTelegram-desktop, omnye wayehambisa iprojekthi yokwakha. Ikhompyutheni yedesktop. Kamva, wonke umntu wayexakekile elungisa i-UI kunye nokulungisa ingxaki.

Kwakubonakala ngathi ukuphumeza umsebenzi ocetywayo kwakungayi kuba nzima, kodwa, njengokuba kusenzeka rhoqo, kwavela ubunzima.

Isisombululo kule ngxaki sasiquka imisebenzi engaphantsi emibini ezimeleyo: ukukhetha isixhobo esifanelekileyo sokuqaphela intetho kunye nokuphumeza i-UI yokusebenza okutsha.

Xa sikhetha ithala leencwadi lokuqondwa kwelizwi, kwangoko kuye kwafuneka silahle zonke ii-API ezingaxhunyiwe kwi-intanethi, kuba iimodeli zolwimi zithatha indawo enkulu. Kodwa sithetha ngolwimi olunye kuphela. Kwacaca ukuba kuya kufuneka sisebenzise i-API ye-intanethi. Kamva kwavela ukuba iinkonzo zokuqatshelwa kwentetho yezikhulu ezifana neGoogle, Yandex kunye neMicrosoft azikho simahla, kwaye kuya kufuneka saneliswe lixesha lovavanyo. Ngenxa yoko, i-Google Speech-To-Text yakhethwa kuba ikuvumela ukuba ufumane ithokheni yokusebenzisa inkonzo, eya kuhlala unyaka wonke.

Ingxaki yesibini esiye sadibana nayo inxulumene nezinye zeentsilelo ze-C++ - indawo yogcino-zilwanyana yamathala eencwadi ahlukeneyo ngokungabikho kwendawo yokugcina indawo esembindini. Kuyenzeka ukuba iTelegram yeDesktop ixhomekeke kwezinye iilayibrari ezininzi ezikhethekileyo. Uvimba osemthethweni uye ncwadana ukudibanisa iprojekthi. Kwaye kunye nenani elikhulu lemiba evulekileyo malunga neengxaki zokwakha, umzekelo maxesha ΠΈ Π΄Π²Π°. Zonke iingxaki zivele zihambelana nokuba iskripthi sokwakha sibhalelwe Ubuntu 14.04, kwaye ukuze uphumelele ukwakha i-telegram phantsi kwe-Ubuntu 18.04, utshintsho kufuneka lwenziwe.

I-Telegram Desktop ngokwayo ithatha ixesha elide ukudibanisa: kwi-laptop ene-Intel Core i5-7200U, indibano epheleleyo (iflegi -j 4) nako konke ukuxhomekeka kuthatha malunga neeyure ezintathu. Kule, malunga nemizuzu ye-30 ithathwa ngokudibanisa umxhasi ngokwawo (kamva kwavela ukuba kwi-Debug Configuration, ukudibanisa kuthatha malunga nemizuzu eyi-10), kwaye kunjalo isigaba sokudibanisa kufuneka siphindwe rhoqo emva kokwenza utshintsho.

Ngaphandle kweengxaki, sikwazile ukuzalisekisa umbono owenziweyo, kunye nokuhlaziya yakha iscript ku-Ubuntu 18.04. Umboniso womsebenzi unokubonwa kwi unxibelelwano. Sikwabandakanya oopopayi abaninzi. Iqhosha livele ecaleni kwayo yonke imiyalezo yelizwi, likuvumela ukuba uguqulele umyalezo kumbhalo. Ngokunqakraza ekunene, ungacacisa ngakumbi ulwimi oluza kusetyenziswa kusasazo. Ngu unxibelelwano umxhasi ekhoyo ukuze ukhutshelwe.

Uvimba.

Ngokombono wethu, kuye kwaba bubungqina obuhle beNgcaciso yokusebenza eya kuba lula kubasebenzisi abaninzi. Sinethemba lokuyibona kukhupho oluzayo lweTelegram yeDesktop.

Inkxaso yoLwimi lweNdalo olwandisiweyo kwi-IntelliJ IDEA

IHackathon DevDays'19 (icandelo 2): Uluhlu lomyalezo ovakalayo lweTelegram kunye nokujonga igrama kwi-IntelliJ IDEA

Umbhali wembono

Tankov Vladislav

Ukuma kweQela

UTankov Vladislav (iqela elikhokelayo, elisebenza neLanguageTool kunye ne-IntelliJ IDEA)
UNikita Sokolov (esebenza nge-LanguageTool kunye nokudala i-UI)
Khvorov Alexander (esebenza ngeLanguageTool kunye nokwenza ngcono ukusebenza)
Sadovnikov Alexander (inkxaso yokwahlulahlula ulwimi kunye nekhowudi)

Siye saqulunqa iplagin ye-IntelliJ IDEA ehlola izicatshulwa ezahlukeneyo (amagqabantshintshi kunye namaxwebhu, imigca yokwenyani kwikhowudi, umbhalo olungiselelwe kwi-Markdown okanye i-XML markup) yokuchaneka kwegrama, upelo kunye nesimbo (ngesiNgesi oku kubizwa ngokuba yi-proofreading).

Umbono weprojekthi yayikukukhulisa i-spellcheck esemgangathweni ye-IntelliJ IDEA ukuya kwisikali seGrammarly, ukwenza uhlobo lweGrammarly ngaphakathi kwe-IDE.

Uyayibona into eyenzekayo ikhonkco.

Ewe, ngezantsi siza kuthetha ngokubanzi malunga nobuchule beplagin, kunye nobunzima obavela ngexesha lokudalwa kwayo.

Isizathu

Zininzi iimveliso ezenzelwe ukubhala isicatshulwa ngeelwimi zendalo, kodwa amaxwebhu kunye nekhowudi yamazwana ahlala ebhalwa kwiindawo zophuhliso. Kwangaxeshanye, ii-IDE zenza umsebenzi oncomekayo wokufumana iimpazamo kwikhowudi, kodwa azifanelekanga kakuhle kwiitekisi zeelwimi zendalo. Oku kwenza kube lula kakhulu ukwenza iimpazamo kwigrama, iziphumlisi, okanye isimbo ngaphandle kophuhliso lwemekobume ebalathayo. Kubaluleke kakhulu ukwenza impazamo ekubhaleni ujongano lomsebenzisi, kuba oku akuyi kuchaphazela kuphela ukuqonda kwekhowudi, kodwa nabasebenzisi besicelo esiphuhlisiweyo ngokwabo.

Enye yezona ndawo zidumileyo kunye neziphuhlisiwe zophuhliso yi-IntelliJ IDEA, kunye nee-IDE ezisekelwe kwi-IntelliJ Platform. I-IntelliJ Platform sele inesikhangeli sokupela esakhelwe ngaphakathi, kodwa ayisusi kwa ezona mpazamo zilula zegrama. Siye sagqiba ekubeni sidibanise enye yeenkqubo ezithandwayo zokuhlalutya ulwimi lwendalo kwi-IntelliJ IDEA.

Ukuphunyezwa

IHackathon DevDays'19 (icandelo 2): Uluhlu lomyalezo ovakalayo lweTelegram kunye nokujonga igrama kwi-IntelliJ IDEAAsizange sizibekele umsebenzi wokudala inkqubo yethu yokuqinisekisa isicatshulwa, ngoko sisebenzise isisombululo esele sikhona. Eyona ndlela ifanelekileyo yajika yaba UlwimiTool. Ilayisensi isivumele ukuba siyisebenzise ngokukhululekileyo ngeenjongo zethu: isimahla, ibhalwe kwiJava kunye nomthombo ovulekileyo. Ukongeza, ixhasa iilwimi ezingama-25 kwaye ibikuphuhliso iminyaka engaphezu kweshumi elinesihlanu. Ngaphandle kokuvuleka kwayo, i-LanguageTool ikhuphisana kakhulu kwizisombululo zokuqinisekisa okubhaliweyo okuhlawulweyo, kwaye into yokuba inokusebenza ekuhlaleni yinto yayo ebulalayo.

Ikhowudi yeplagi ingaphakathi iindawo zokugcina kwiGitHub. Yonke iprojekthi yabhalwa eKotlin kunye nokongezwa okuncinci kweJava kwi-UI. Ngexesha le-hackathon, sikwazile ukuphumeza inkxaso ye-Markdown, JavaDoc, HTML kunye ne-Plain Text. Emva kwe-hackathon, uhlaziyo olukhulu longeze inkxaso ye-XML, i-string literals kwiJava, i-Kotlin kunye ne-Python, kunye nokujonga ukupela.

Ubunzima

Ngokukhawuleza siye saqaphela ukuba ukuba sondla yonke itekisi kwi-LanguageTool ukuze ihlolwe ngalo lonke ixesha, ngoko ujongano lwe-IDEA luya kukhenkceka nakweyiphi na itekisi ebaluleke kakhulu, kuba uhlolo ngokwalo luvalela ukuhamba kwe-UI. Ingxaki yasonjululwa nge `ProgressManager.checkCancelled` khangela - lo msebenzi uphosa umkhethe ukuba i-IDEA ikholelwa ekubeni lixesha lokulahla uhlolo.

Oku kuphelisa ngokupheleleyo ukukhenkceza, kodwa akunakwenzeka ukusebenzisa: isicatshulwa sithatha ixesha elide ukuqhubekeka. Ngaphezu koko, kwimeko yethu, amaxesha amaninzi inxalenye encinci yesicatshulwa iyatshintsha kwaye sifuna ukugcina iziphumo ngandlela-thile. Yiloo nto kanye esayenzayo. Ukuze singajongi yonke into ngalo lonke ixesha, sizimisele ukwahlula isicatshulwa sibe ziziqwenga kwaye sajonga kuphela ezo zitshintshileyo. Ekubeni iitekisi zinokuba zikhulu kwaye asizange sifune ukulayisha i-cache, asigcinanga izibhalo ngokwazo, kodwa i-hashes yazo. Oku kwavumela iplagin ukuba isebenze kakuhle nakwiifayile ezinkulu.

LanguageTool ixhasa ngaphezu kweelwimi ezingama-25, kodwa akunakwenzeka ukuba nawuphi na umsebenzisi azidinga zonke. Bendifuna ukunika ithuba lokukhuphela amathala eencwadi olwimi oluthile xa uceliwe (ukuba uyawuphawula kwi-UI). Sade sayiphumeza le nto, kodwa yajika yantsonkotha kakhulu kwaye ayithembekanga. Ngokukodwa, kuye kwafuneka silayishe i-LanguageTool ngeseti entsha yeelwimi sisebenzisa isilayishi esahlukileyo, kwaye emva koko siyiqalise ngononophelo. Kwangaxeshanye, onke amathala eencwadi akwindawo yogcino .m2 yomsebenzisi, kwaye kwisiqalo ngasinye kwafuneka sihlole ingqibelelo yazo. Ekugqibeleni, sigqibe kwelokuba ukuba abasebenzisi baneengxaki ngobungakanani beplagin, ngoko siya kubonelela ngeplagi eyahlukileyo kwiilwimi ezininzi ezidumileyo.

Emva kwe-hackathon

I-hackathon iphelile, kodwa umsebenzi kwi-plugin waqhubeka neqela elincinane. Bendifuna ukuxhasa imitya, izimvo, kunye nolwakhiwo lolwimi olunje ngamagama aguquguqukayo kunye namagama eklasi. Okwangoku oku kuxhaswa kuphela iJava, iKotlin kunye nePython, kodwa sinethemba lokuba olu luhlu luya kukhula. Silungise iibhugi ezincinci ezininzi kwaye sihambelane ngakumbi ne-Idea eyakhelwe-ngaphakathi umkhangeli wopelo. Ukongeza, inkxaso yeXML kunye nokujongwa kopelo luvele. Konke oku kunokufumaneka kwinguqulelo yesibini, esiyipapashe kutshanje.

Yintoni elandelayo?

Iplagin enjalo inokuba luncedo kungekuphela nje kubaphuhlisi, kodwa nababhali bezobugcisa (ngokuqhelekileyo basebenza, umzekelo, nge-XML kwi-IDE). Yonke imihla kufuneka basebenze ngolwimi lwendalo, ngaphandle kokuba nomncedisi ngendlela yeengcebiso zomhleli malunga neempazamo ezinokwenzeka. Iplagi yethu ibonelela ngezi ngcebiso kwaye iyenza ngezinga eliphezulu lokuchaneka.
Siceba ukuphuhlisa iplagin, zombini ngokongeza iilwimi ezintsha kunye nokuphonononga indlela eqhelekileyo yokulungelelanisa ukujonga umbhalo. Izicwangciso zethu zangoku zibandakanya ukuphunyezwa kweeprofayili zesitayela (iiseti zemithetho echaza isikhokelo sesitayela sombhalo, umzekelo, "ungabhali umz., kodwa bhala ifom epheleleyo"), ukwandisa isichazi-magama kunye nokuphucula ujongano lomsebenzisi (ngokukodwa; sifuna ukunika umsebenzisi ithuba lokungahoyi nje igama, kodwa elongeze kwisichazi-magama, ebonisa indawo yentetho).

Umthombo: www.habr.com

Yongeza izimvo