Hackathon DevDays'19 (Kashi na 2): mai nazarin saƙon odiyo don Telegram da duba nahawu a cikin IntelliJ IDEA

Muna ci gaba da magana game da ayyukan bazara hackathon Devdays, wanda ɗaliban shirin masters suka shiga. "Haɓaka Software / Injiniyan Software".

Hackathon DevDays'19 (Kashi na 2): mai nazarin saƙon odiyo don Telegram da duba nahawu a cikin IntelliJ IDEA

Af, muna so mu gayyaci masu karatu su shiga Ƙungiyar VK na ɗaliban masters. A ciki za mu buga sabbin labarai game da daukar ma'aikata da karatu. Hakanan ana iya samun bidiyo daga ranar budewa a cikin rukuni. Muna tunatar da ku: taron zai faru a ranar 29 ga Afrilu, cikakkun bayanai Online.

Fassarar Saƙon Muryar Desktop na Telegram

Hackathon DevDays'19 (Kashi na 2): mai nazarin saƙon odiyo don Telegram da duba nahawu a cikin IntelliJ IDEA

Marubucin ra'ayin
Khoroshev Artyom

Jeri

Khoroshev Artem - Manajan aikin / mai haɓakawa / QA
Eliseev Anton - kasuwanci Analyst / marketing gwani
Maria Kuklina – UI mai tsarawa/mai haɓakawa
Bakhvalov Pavel – Mai tsara UI/mai haɓakawa/QA

Ta fuskar mu, Telegram manzo ne na zamani kuma mai dacewa, kuma nau'in PC ɗinsa ya shahara kuma buɗaɗɗen tushe, wanda ke ba da damar gyara shi. Abokin ciniki yana ba da ayyuka masu wadata sosai. Baya ga daidaitattun saƙonnin rubutu, ya ƙunshi kiran murya, saƙon bidiyo, da saƙon murya. Kuma na karshen ne wani lokaci yakan kawo matsala ga mai karbarsu. Sau da yawa ba zai yiwu a saurari saƙon murya yayin da ake kwamfuta ko kwamfutar tafi-da-gidanka ba. Ana iya samun hayaniyar yanayi, rashin belun kunne, ko kuma ba ka son kowa ya ji abin da ke cikin saƙon. Irin waɗannan matsalolin kusan ba za su taɓa tasowa ba idan kuna amfani da Telegram akan wayar hannu, saboda kawai kuna iya kawo shi zuwa kunnenku, sabanin kwamfutar tafi-da-gidanka ko PC. Mun yi ƙoƙarin magance wannan matsala.

Manufar aikin mu a DevDays shine ƙara ikon fassara saƙonnin murya da aka karɓa cikin rubutu zuwa abokin ciniki na tebur na Telegram (wanda ake kira Telegram Desktop).

Duk analogues a halin yanzu bots ne waɗanda zaku iya aika saƙon odiyo kuma ku karɓi rubutu don amsawa. Ba mu yi farin ciki da wannan ba: isar da saƙo zuwa bot bai dace sosai ba; muna son samun aikin asali. Bugu da kari, kowane bot wani ɓangare ne na uku wanda ke aiki azaman mai shiga tsakani tsakanin API ɗin gane magana da mai amfani, kuma wannan shine, aƙalla, mara lafiya.

Kamar yadda muka gani a baya, telegram-tebur yana da manyan fa'idodi guda biyu: sauƙi da saurin aiki. Kuma wannan ba daidaituwa ba ne, domin an rubuta shi gaba ɗaya a cikin C++. Kuma tun da mun yanke shawarar ƙara sabon ayyuka kai tsaye ga abokin ciniki, dole ne mu haɓaka shi a cikin C ++.

Hackathon DevDays'19 (Kashi na 2): mai nazarin saƙon odiyo don Telegram da duba nahawu a cikin IntelliJ IDEAAkwai mutane 4 a cikin tawagarmu. Da farko, mutane biyu suna neman ɗakin karatu mai dacewa don fahimtar magana, mutum ɗaya yana nazarin lambar tushe na Telegram-desktop, wani yana tura aikin ginin. Taswirar Telegram. Daga baya, kowa ya shagaltu da gyara UI da gyara kuskure.

Da alama aiwatar da aikin da aka yi niyya ba zai zama da wahala ba, amma, kamar yadda koyaushe yakan faru, matsaloli sun taso.

Maganin matsalar ya ƙunshi ƙananan ayyuka guda biyu masu zaman kansu: zabar kayan aikin tantance magana mai dacewa da aiwatar da UI don sabon aiki.

Lokacin zabar ɗakin karatu don sanin murya, nan da nan dole ne mu watsar da duk APIs na kan layi, saboda ƙirar harshe suna ɗaukar sarari da yawa. Amma muna magana ne game da harshe ɗaya kawai. Ya bayyana a sarari cewa dole ne mu yi amfani da API ɗin kan layi. Daga baya ya juya cewa sabis na gane magana na irin waɗannan ƙattai kamar Google, Yandex da Microsoft ba su da kyauta, kuma dole ne mu gamsu da lokacin gwaji. Sakamakon haka, an zaɓi Google Speech-To-Text saboda yana ba ku damar samun alamar amfani da sabis ɗin, wanda zai ɗauki tsawon shekara guda.

Matsala ta biyu da muka ci karo da ita tana da alaƙa da wasu kurakuran C++ - gidan zoo na ɗakunan karatu daban-daban idan babu ma'ajiya ta tsakiya. Hakan ya faru cewa Desktop Telegram ya dogara da wasu takamaiman ɗakunan karatu da yawa. Wurin ajiya na hukuma yana da manual domin harhada aikin. Hakanan kuma babban adadin buɗaɗɗen batutuwa game da matsalolin ginawa, alal misali sau и два. Duk matsalolin sun kasance suna da alaƙa da gaskiyar cewa an rubuta rubutun ginin don Ubuntu 14.04, kuma don samun nasarar gina telegram a ƙarƙashin Ubuntu 18.04, dole ne a yi canje-canje.

Telegram Desktop kanta yana ɗaukar lokaci mai tsawo don haɗawa: akan kwamfutar tafi-da-gidanka tare da Intel Core i5-7200U, cikakken taro (flag -j 4) tare da duk abin dogaro yana ɗaukar kusan awanni uku. Daga cikin waɗannan, ana ɗaukar kimanin mintuna 30 ta hanyar haɗa abokin ciniki da kansa (daga baya ya zama cewa a cikin tsarin gyara kuskuren, haɗawa yana ɗaukar kusan mintuna 10), amma matakin haɗin gwiwa dole ne a maimaita kowane lokaci bayan yin canje-canje.

Duk da matsalolin, mun gudanar da aiwatar da tunanin da aka haifa, da kuma sabuntawa gina rubutun don Ubuntu 18.04. Ana iya ganin nunin aikin a mahada. Mun kuma haɗa da rayarwa da yawa. Maɓalli ya bayyana kusa da duk saƙonnin murya, yana ba ku damar fassara saƙon zuwa rubutu. Ta danna dama, za ka iya kuma ƙayyade yaren da za a yi amfani da shi don watsa shirye-shirye. By mahada akwai abokin ciniki don saukewa.

Wurin ajiya.

A ra'ayinmu, ya zama kyakkyawan Hujja na Ƙa'idar aiki wanda zai dace da masu amfani da yawa. Muna fatan ganin shi a cikin fitowar ta Telegram Desktop na gaba.

Ingantattun Tallafin Harshen Halitta a cikin IntelliJ IDEA

Hackathon DevDays'19 (Kashi na 2): mai nazarin saƙon odiyo don Telegram da duba nahawu a cikin IntelliJ IDEA

Marubucin ra'ayin

Tankov Vladislav

Jeri

Tankov Vladislav (jagorancin ƙungiyar, aiki tare da LanguageTool da IntelliJ IDEA)
Nikita Sokolov (aiki tare da Kayan aikin Harshe da ƙirƙirar UI)
Khvorov Aleksandr (aiki tare da LanguageTool da inganta yi)
Sadovnikov Aleksandr (tallafi don tantance harsunan alamar da lambar)

Mun ƙirƙira plugin don IntelliJ IDEA wanda ke bincika rubutu daban-daban ( sharhi da takaddun bayanai, layi na zahiri a lamba, rubutu da aka tsara a Markdown ko alamar XML) don nahawu, rubutun rubutu da daidaiton salo (a cikin Ingilishi ana kiran wannan proofreading).

Manufar aikin shine fadada ma'auni na IntelliJ IDEA zuwa ma'auni na Grammarly, don yin nau'i na Grammarly a cikin IDE.

Kuna iya ganin abin da ya faru mahada.

Da kyau, a ƙasa za mu yi magana dalla-dalla game da damar plugin ɗin, da kuma matsalolin da suka taso yayin ƙirƙirar sa.

Motsawa

Akwai samfurori da yawa da aka tsara don rubuta rubutu a cikin yarukan halitta, amma rubuce-rubuce da sharhin lamba galibi ana rubuta su a cikin mahallin ci gaba. A lokaci guda, IDEs suna yin kyakkyawan aiki na gano kurakurai a lamba, amma ba su dace da rubutu a cikin yarukan halitta ba. Wannan yana ba da sauƙin yin kuskure a cikin nahawu, rubutu, ko salo ba tare da yanayin ci gaba ya nuna su ba. Yana da matukar muhimmanci a yi kuskure a cikin rubutun mai amfani, tun da wannan zai shafi ba kawai fahimtar lambar ba, har ma da masu amfani da aikace-aikacen da suka ci gaba da kansu.

Ɗaya daga cikin shahararrun wuraren ci gaba da haɓaka shine IntelliJ IDEA, da kuma IDEs bisa IntelliJ Platform. Platform na IntelliJ ya riga yana da ginannen maƙallan rubutu, amma baya kawar da ko da mafi sauƙin kurakurai na nahawu. Mun yanke shawarar haɗa ɗayan shahararrun tsarin nazarin harshe na halitta cikin IntelliJ IDEA.

Aiwatarwa

Hackathon DevDays'19 (Kashi na 2): mai nazarin saƙon odiyo don Telegram da duba nahawu a cikin IntelliJ IDEABa mu sanya kanmu aikin ƙirƙirar namu tsarin tabbatar da rubutu ba, don haka mun yi amfani da mafita da ke akwai. Zaɓin da ya fi dacewa ya juya ya zama HarsheTool. Lasisin ya ba mu damar amfani da shi kyauta don dalilanmu: kyauta ne, an rubuta shi cikin Java da buɗe tushen. Bugu da kari, yana tallafawa harsuna 25 kuma yana cikin haɓaka sama da shekaru goma sha biyar. Duk da buɗewar sa, LanguageTool babban mai fafatawa ne ga hanyoyin tabbatar da rubutu da aka biya, kuma gaskiyar cewa yana iya aiki a cikin gida shine ainihin fasalin kisa.

Lambar plugin ɗin tana ciki wuraren ajiya akan GitHub. An rubuta dukan aikin a cikin Kotlin tare da ƙaramin ƙarar Java don UI. A lokacin hackathon, mun gudanar da aiwatar da tallafi don Markdown, JavaDoc, HTML da Rubutun Filaye. Bayan hackathon, babban sabuntawa ya ƙara goyan baya ga XML, kirtani a cikin Java, Kotlin da Python, da kuma duba haruffa.

Wahala

Da sauri mun fahimci cewa idan muka ciyar da duk rubutu zuwa LanguageTool don dubawa kowane lokaci, to, ƙirar IDEA za ta daskare akan kowane rubutu mai mahimmanci ko žasa, tunda binciken da kansa ya toshe kwararar UI. An magance matsalar ta hanyar duba 'ProgressManager.checkCancelled' - wannan aikin yana haifar da bangaranci idan IDEA ta yi imanin cewa lokaci ya yi da za a soke binciken.

Wannan ya kawar da daskarewa gaba ɗaya, amma ba shi yiwuwa a yi amfani da shi: rubutun yana ɗaukar lokaci mai tsawo don aiwatarwa. Bugu da ƙari, a cikin yanayinmu, galibi ƙaramin ɓangaren rubutu yana canzawa kuma muna son adana sakamakon ko ta yaya. Haka muka yi. Don kada mu bincika komai a kowane lokaci, muna tsai da shawarar raba rubutun zuwa guntu kuma mu bincika kawai waɗanda suka canza. Tun da rubutun na iya zama babba kuma ba ma so mu loda cache, ba mu adana rubutun da kansu ba, amma hashes. Wannan ya ba da damar plugin ɗin ya yi aiki da kyau ko da akan manyan fayiloli.

LanguageTool yana goyan bayan fiye da harsuna 25, amma da wuya kowane mai amfani yana buƙatar su duka. Ina so in ba da dama don zazzage dakunan karatu don takamaiman harshe akan buƙata (idan kun yi alama a cikin UI). Har ma mun aiwatar da wannan, amma ya zama mai rikitarwa da rashin dogaro. Musamman ma, dole ne mu loda LanguageTool tare da sabon saitin yaruka ta amfani da nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in nau'in loaderloader), sannan mu fara shi a hankali. A lokaci guda, duk ɗakunan karatu suna cikin ma'ajiyar mai amfani .m2, kuma a kowane farawa dole ne mu bincika amincin su. A ƙarshe, mun yanke shawarar cewa idan masu amfani suna da matsala tare da girman plugin ɗin, to, za mu samar da plugin ɗin daban don yawancin shahararrun harsuna.

Bayan hackathon

Hackathon ya ƙare, amma aiki akan plugin ɗin ya ci gaba tare da ƙungiyar kunkuntar. Ina so in goyi bayan kirtani, sharhi, har ma da gina harshe kamar masu canji da sunayen aji. A halin yanzu ana tallafawa wannan don Java, Kotlin da Python kawai, amma muna fatan wannan jerin zai girma. Mun gyara ƙananan kurakurai da yawa kuma mun zama masu dacewa da ginin Idea mai duba sihiri. Bugu da kari, goyon bayan XML da duba haruffa sun bayyana. Ana iya samun duk waɗannan a cikin sigar ta biyu, wacce muka buga kwanan nan.

Abin da ke gaba?

Irin wannan plugin ɗin zai iya zama da amfani ba kawai ga masu haɓakawa ba, har ma ga marubutan fasaha (sau da yawa suna aiki, misali, tare da XML a cikin IDE). Kowace rana dole ne su yi aiki tare da harshe na halitta, ba tare da samun mataimaki a cikin nau'i na shawarwarin edita game da kurakurai masu yiwuwa ba. Kayan aikin mu yana ba da irin waɗannan alamu kuma yana yin shi tare da babban matakin daidaito.
Muna shirin haɓaka plugin ɗin, ta hanyar ƙara sabbin harsuna da kuma bincika tsarin gaba ɗaya don tsara duba rubutu. Shirye-shiryenmu na nan take sun haɗa da aiwatar da bayanan martaba (saitin ƙa'idodi waɗanda ke ayyana jagorar salo don rubutu, alal misali, "kada ku rubuta misali, amma rubuta cikakken tsari"), faɗaɗa ƙamus da haɓaka ƙirar mai amfani (musamman, muna so mu ba mai amfani damar ba kawai don watsi da kalma ba, amma don ƙara shi a cikin ƙamus, yana nuna ɓangaren magana).

Source: www.habr.com

Add a comment