Hackathon DevDays'19 (fizarana 2): mpizara hafatra audio ho an'ny fanamarinana Telegram sy fitsipi-pitenenana ao amin'ny IntelliJ IDEA

Manohy miresaka momba ny tetikasan'ny hackathon DevDays lohataona isika, izay nandraisan'ny mpianatra ny programa master. "Fampivoarana Software / Engineering Engineering".

Hackathon DevDays'19 (fizarana 2): mpizara hafatra audio ho an'ny fanamarinana Telegram sy fitsipi-pitenenana ao amin'ny IntelliJ IDEA

Raha ny marina, tianay ny manasa ny mpamaky hanatevin-daharana VK vondrona mpianatra master. Ao anatin'izany no hamoaka ny vaovao farany momba ny fandraisana mpiasa sy ny fianarana. Hita ao amin'ny vondrona ihany koa ny horonan-tsary avy amin'ny andro misokatra. Mampahatsiahy anao izahay: ny 29 aprily no hanatanterahana ny hetsika, ny antsipiriany Online.

Telegram Desktop Voice Message Parser

Hackathon DevDays'19 (fizarana 2): mpizara hafatra audio ho an'ny fanamarinana Telegram sy fitsipi-pitenenana ao amin'ny IntelliJ IDEA

Mpanoratra ny hevitra
Khoroshev Artyom

Milahatra

Khoroshev Artem - mpitantana ny tetikasa / mpamorona / QA
Eliseev Anton - mpandinika raharaham-barotra / manam-pahaizana momba ny varotra
Maria Kuklina - mpamorona / mpamorona UI
Bakhvalov Pavel - mpamorona / mpamorona / QA

Raha ny fomba fijerinay, Telegram dia iraka maoderina sy mora, ary ny dikan-PC dia malaza sy loharano misokatra, izay ahafahana manova azy. Ny mpanjifa dia manolotra fampiasa tena manankarena. Ho fanampin'ny hafatra an-tsoratra mahazatra dia misy antso an-telefaona, hafatra video ary hafatra an-peo. Ary ity farany no miteraka fahasahiranana ho an'ny mpandray azy. Matetika dia tsy azo atao ny mihaino hafatra feo rehefa eo amin'ny solosaina na solosaina. Mety hisy tabataba manodidina, tsy fahampian'ny Γ©couteur, na tsy tianao ho ren'ny olona ny votoatin'ny hafatra. Ny olana toy izany dia saika tsy mipoitra mihitsy raha mampiasa Telegram amin'ny finday avo lenta ianao, satria azonao atao ny mitondra azy ho eo an-tsofinao, fa tsy toy ny solosaina finday na PC. Niezaka namaha ity olana ity izahay.

Ny tanjon'ny tetikasanay tao amin'ny DevDays dia ny hanampy ny fahafahana mandika ireo hafatra an-peo voaray ho lahatsoratra amin'ny mpanjifa Desktop Telegram (antsoina hoe Telegram Desktop).

Ny analogues rehetra amin'izao fotoana izao dia bots izay ahafahanao mandefa hafatra audio ary mahazo lahatsoratra ho valin'izany. Tsy dia faly loatra amin'izany izahay: tsy dia mety loatra ny fandefasana hafatra amin'ny bot; te hanana fampiasa teratany izahay. Fanampin'izany, ny bota rehetra dia antoko fahatelo miasa ho mpanelanelana eo amin'ny API fanekena ny kabary sy ny mpampiasa, ary izany, fara fahakeliny, dia tsy azo antoka.

Araka ny nomarihina teo aloha, ny telegram-desktop dia manana tombony lehibe roa: mora sy haingana. Ary tsy kisendrasendra izany, satria voasoratra tanteraka ao amin'ny C ++. Ary satria nanapa-kevitra ny hampiditra fiasa vaovao mivantana amin'ny mpanjifa izahay, dia tsy maintsy namolavola azy tao amin'ny C++ izahay.

Hackathon DevDays'19 (fizarana 2): mpizara hafatra audio ho an'ny fanamarinana Telegram sy fitsipi-pitenenana ao amin'ny IntelliJ IDEANisy olona 4 tao amin'ny ekipanay. Tamin'ny voalohany, nisy olona roa nitady tranomboky sahaza ho an'ny fanekena ny kabary, ny iray nianatra ny loharanon-kaody Telegram-desktop, ny iray kosa nampiasa ny tetikasa fananganana. Desktop Telegram. Taty aoriana, variana nanamboatra ny UI sy ny debugging ny rehetra.

Toa tsy ho sarotra ny fampiharana ny fampiasa nokasaina, fa, toy ny mitranga foana, dia nisy olana.

Ny vahaolana amin'ny olana dia misy zana-asa tsy miankina roa: misafidy fitaovana famantarana ny kabary mety sy fampiharana UI ho an'ny fiasa vaovao.

Rehefa nisafidy tranomboky ho an'ny fanekena feo izahay dia tsy maintsy nandao avy hatrany ny API rehetra ivelan'ny aterineto, satria maka toerana be ny maodely fiteny. Fa fiteny iray ihany no resahina. Nanjary nazava fa tsy maintsy mampiasa ny API an-tserasera izahay. Taty aoriana dia hita fa tsy maimaim-poana mihitsy ny serivisy famantarana ny kabarin'ireo goavambe toa an'i Google, Yandex ary Microsoft, ary tsy maintsy mionona amin'ny fotoam-pitsarana isika. Vokatr'izany dia voafidy ny Google Speech-To-Text satria ahafahanao mahazo token'ny fampiasana ny serivisy, izay haharitra mandritra ny herintaona.

Ny olana faharoa sendra anay dia mifandraika amin'ny lesoka sasany amin'ny C ++ - zoo amin'ny tranomboky isan-karazany raha tsy misy tahiry foibe. Izany no mitranga fa ny Telegram Desktop dia miankina amin'ny tranomboky manokana maro hafa. Ny tahiry ofisialy dia manana fampianarana ho an'ny fanangonana ny tetikasa. Ary koa olana misokatra marobe momba ny olana momba ny fananganana, ohatra fotoana ΠΈ Π΄Π²Π°. Ny olana rehetra dia nifandraika tamin'ny hoe nosoratana ho an'ny Ubuntu 14.04 ny script fananganana, ary mba hahombiazana amin'ny fananganana telegrama eo ambanin'ny Ubuntu 18.04 dia tsy maintsy nisy fiovana.

Ny Telegram Desktop mihitsy dia mila fotoana lava vao mivory: amin'ny solosaina misy Intel Core i5-7200U, ny fivoriambe feno (faneva -j 4) miaraka amin'ny fiankinan-doha rehetra dia maharitra adiny telo eo ho eo. Amin'ireo, eo amin'ny 30 minitra eo ho eo dia alaina amin'ny fampifandraisana ny mpanjifa mihitsy (taty aoriana dia hita fa ao amin'ny fanamafisana Debug, mila 10 minitra eo ho eo ny fampifandraisana), fa ny dingana fampifandraisana dia tsy maintsy averina isaky ny manao fanovana.

Na dia teo aza ny olana, dia nahavita nampihatra ny hevitra noforonina, ary koa ny fanavaozana manangana script ho an'ny Ubuntu 18.04. Ny fampisehoana ny asa dia azo jerena ao amin'ny rohy. Misy animation maromaro ihany koa izahay. Nisy bokotra niseho teo akaikin'ny hafatra am-peo rehetra, ahafahanao mandika ilay hafatra ho lahatsoratra. Amin'ny fipihana havanana dia azonao atao koa ny mamaritra ny fiteny hampiasaina amin'ny fampielezam-peo. ny rohy mpanjifa azo alaina.

Repository.

Araka ny hevitray dia hita ho porofon'ny foto-kevitra tsara amin'ny fiasa izay mety ho an'ny mpampiasa maro. Manantena izahay fa hahita izany amin'ny famoahana ho avy amin'ny Telegram Desktop.

Fanohanana ny fiteny voajanahary nohatsaraina ao amin'ny IntelliJ IDEA

Hackathon DevDays'19 (fizarana 2): mpizara hafatra audio ho an'ny fanamarinana Telegram sy fitsipi-pitenenana ao amin'ny IntelliJ IDEA

Mpanoratra ny hevitra

Tankov Vladislav

Milahatra

Tankov Vladislav (mpitarika ekipa, miara-miasa amin'ny LanguageTool sy IntelliJ IDEA)
Nikita Sokolov (miasa amin'ny LanguageTool ary mamorona UI)
Khvorov Alexander (miara-miasa amin'ny LanguageTool ary manatsara ny fampisehoana)
Sadovnikov Alexander (fanohanana amin'ny fanaparitahana fiteny sy kaody marika)

Namorona plugin iray ho an'ny IntelliJ IDEA izahay izay manamarina lahatsoratra isan-karazany (fanehoan-kevitra sy antontan-taratasy, tsipika ara-bakiteny amin'ny kaody, lahatsoratra formata amin'ny Markdown na XML markup) ho an'ny fitsipi-pitenenana, tsipelina ary stylistic (amin'ny teny anglisy dia antsoina hoe proofreading).

Ny hevitr'ilay tetikasa dia ny hanitarana ny tsipelina mahazatra IntelliJ IDEA amin'ny haavon'ny Grammarly, mba hanaovana karazana Grammarly ao anaty IDE.

Hitanao ny zava-nitranga rohy.

Eny ary, eto ambany isika dia hiresaka amin'ny antsipiriany bebe kokoa momba ny fahaiza-manaon'ny plugin, ary koa ny fahasarotana nitranga nandritra ny famoronana azy.

motivation

Betsaka ny vokatra natao hanoratana lahatsoratra amin'ny fiteny voajanahary, fa ny antontan-taratasy sy ny fanehoan-kevitry ny kaody dia matetika nosoratana tamin'ny tontolo fampandrosoana. Mandritra izany fotoana izany, ny IDE dia manao asa tsara amin'ny fitadiavana lesoka amin'ny fehezan-dalΓ na, saingy tsy mety amin'ny lahatsoratra amin'ny fiteny voajanahary. Izany dia manamora ny fanaovana fahadisoana amin'ny fitsipi-pitenenana, mari-piatoana, na fomba tsy misy ny tontolo fampandrosoana manondro azy ireo. Tena zava-dehibe ny manao fahadisoana amin'ny fanoratana ny mpampiasa interface tsara, satria izany dia hisy fiantraikany tsy ny fahatakarana ny fehezan-dalΓ na, fa koa ny mpampiasa ny fampiharana novolavolaina.

Iray amin'ireo tontolo fampandrosoana malaza sy mandroso indrindra ny IntelliJ IDEA, ary koa ny IDE mifototra amin'ny IntelliJ Platform. IntelliJ Platform dia efa manana tsipelina naorina, saingy tsy manala na dia ny fahadisoana ara-pitsipi-pitenenana tsotra indrindra aza. Nanapa-kevitra ny hampiditra ny iray amin'ireo rafitra famakafakana fiteny voajanahary malaza amin'ny IntelliJ IDEA izahay.

fanatanterahana

Hackathon DevDays'19 (fizarana 2): mpizara hafatra audio ho an'ny fanamarinana Telegram sy fitsipi-pitenenana ao amin'ny IntelliJ IDEATsy nametraka ny tenanay izahay hamorona rafitra fanamarinana lahatsoratra manokana, noho izany dia nampiasa vahaolana efa misy izahay. Ny safidy mety indrindra dia nivadika ho Fitaovana fiteny. Ny fahazoan-dΓ lana dia namela anay hampiasa azy io malalaka ho an'ny tanjonay: maimaim-poana, voasoratra amin'ny Java ary open-source. Ankoatra izany, dia manohana fiteny 25 ary efa nivoatra nandritra ny dimy ambin'ny folo taona mahery. Na eo aza ny fisokafany, ny LanguageTool dia mpifaninana matotra amin'ny vahaolana fanamarinana lahatsoratra nandoa vola, ary ny hoe afaka miasa eo an-toerana izy io dia tena mamono azy.

Ny code plugin dia ao repository ao amin'ny GitHub. Ny tetikasa manontolo dia nosoratana tamin'ny Kotlin miaraka amin'ny Java fanampiny ho an'ny UI. Nandritra ny hackathon dia nahavita nampihatra fanohanana ny Markdown, JavaDoc, HTML ary Text Plain izahay. Taorian'ny hackathon, nisy fanavaozana lehibe nanampy fanohanana ny XML, litera tady amin'ny Java, Kotlin ary Python, ary fanamarinana tsipelina.

olana

Vetivety dia tsikaritray fa raha mamahana ny lahatsoratra rehetra amin'ny LanguageTool izahay mba hojerena isaky ny mandeha, dia hivaingana ny interface IDEA amin'ny lahatsoratra lehibe kokoa na tsy dia matotra, satria ny fisafoana mihitsy no manakana ny fikorianan'ny UI. Voavaha ny olana tamin'ny alΓ lan'ny fanamarinana `ProgressManager.checkCancelled` - ity fiasa ity dia manipy fanavahana raha mino ny IDEA fa tonga ny fotoana hanajanonana ny fisafoana.

Izany dia nanafoana tanteraka ny fandriam-pahalemana, saingy tsy azo ampiasaina: ny lahatsoratra dia mila fotoana be ny fikarakarana. Ambonin'izany, amin'ny tranga misy antsika, matetika dia ampahany kely amin'ny lahatsoratra no miova ary te-hitahiry ny valiny isika. Izany indrindra no nataonay. Mba tsy hanamarinana ny zava-drehetra, dia nozarainay ho tapatapaka ny lahatsoratra ary izay niova ihany no nojerenay. Koa satria ny lahatsoratra dia mety ho lehibe ary tsy te hampiditra ny cache izahay, tsy ny lahatsoratra ihany no notahirizinay, fa ny hash azy. Izany dia namela ny plugin hiasa tsara na dia amin'ny rakitra lehibe aza.

LanguageTool dia manohana fiteny 25 mahery, saingy tsy azo inoana fa misy mpampiasa iray mila azy rehetra. Te-hanome fahafahana hisintona tranomboky ho an'ny fiteny manokana aho raha angatahina (raha asianao azy ao amin'ny UI). Nampihatra izany aza izahay, saingy hita fa sarotra loatra sy tsy azo ianteherana. Indrindra indrindra, tsy maintsy nampiditra LanguageTool miaraka amin'ny andian-teny vaovao amin'ny fampiasana classloader misaraka izahay, ary avy eo dia amboary tsara izany. Nandritra izany fotoana izany, ny trano famakiam-boky rehetra dia tao amin'ny mpampiasa .m2 repository, ary isaky ny fanombohana dia tsy maintsy nanamarina ny fahamarinany izahay. Tamin'ny farany, nanapa-kevitra izahay fa raha manana olana amin'ny haben'ny plugin ny mpampiasa, dia hanome plugin mitokana ho an'ny fiteny malaza indrindra izahay.

Taorian'ny hackathon

Nifarana ny hackathon, saingy nitohy niaraka tamin'ny ekipa tery kokoa ny asa amin'ny plugin. Te hanohana tady, fanehoan-kevitra, ary na dia ny fananganana fiteny toy ny anarana miovaova sy ny kilasy aza aho. Amin'izao fotoana izao dia tsy tohana afa-tsy amin'ny Java, Kotlin ary Python izany, saingy manantena izahay fa hitombo ity lisitra ity. Nanamboatra bibikely kely maro izahay ary nifanaraka kokoa tamin'ny mpitsikilo tsipelina an'i Idea. Fanampin'izany, nipoitra ny fanohanana XML sy ny fitsirihana tsipelina. Izany rehetra izany dia hita ao amin'ny dikan-teny faharoa, izay navoakanay vao haingana.

Inona ny manaraka?

Ny plugin toy izany dia mety tsy ho an'ny mpamorona ihany, fa koa ho an'ny mpanoratra teknika (matetika miasa, ohatra, miaraka amin'ny XML amin'ny IDE). Isan'andro dia tsy maintsy miasa amin'ny fiteny voajanahary izy ireo, tsy manana mpanampy amin'ny endrika toro-hevitra momba ny tonian-dahatsoratra momba ny fahadisoana mety hitranga. Ny pluginy dia manome soso-kevitra toy izany ary manao izany amin'ny fahamendrehana avo lenta.
Mikasa ny hamolavola ny plugin izahay, amin'ny alΓ lan'ny fampidirana fiteny vaovao na amin'ny fijerena fomba fiasa ankapobeny amin'ny fandaminana ny fanamarinana lahatsoratra. Ny drafitray avy hatrany dia ahitana ny fampiharana ny mombamomba ny stylistic (fitsipika izay mamaritra ny torolΓ lana momba ny fomba ho an'ny lahatsoratra, ohatra, "aza manoratra, ohatra, fa soraty ny endrika feno"), fanitarana ny rakibolana ary fanatsarana ny interface interface (indrindra, tianay ny hanome ny mpampiasa fahafahana tsy hiraharaha teny fotsiny, fa hanampy azy ao amin'ny rakibolana, manondro ny ampahany amin'ny kabary).

Loharano: www.habr.com

Add a comment