Hackathon DevDays'19 (ib ntu 2): suab lus parser rau Telegram thiab sau ntawv txheeb xyuas hauv IntelliJ IDEA

Peb txuas ntxiv mus tham txog cov haujlwm ntawm lub caij nplooj ntoos hlav hackathon DevDays, uas cov tub ntxhais kawm ntawm tus tswv txoj haujlwm tau koom nrog "Software Development / Software Engineering".

Hackathon DevDays'19 (ib ntu 2): suab lus parser rau Telegram thiab sau ntawv txheeb xyuas hauv IntelliJ IDEA

Los ntawm txoj kev, peb xav caw cov neeg nyeem tuaj koom VK-pab pawg ntawm cov tub ntxhais kawm master. Hauv nws peb yuav tshaj tawm cov xov xwm tshiab txog kev nrhiav neeg ua haujlwm thiab kev kawm. Ib qho yeeb yaj kiab los ntawm hnub qhib tuaj yeem pom hauv pab pawg. Peb nco ntsoov koj: qhov kev tshwm sim yuav tshwm sim rau lub Plaub Hlis 29, cov ntsiab lus online.

Telegram Desktop Voice Message Parser

Hackathon DevDays'19 (ib ntu 2): suab lus parser rau Telegram thiab sau ntawv txheeb xyuas hauv IntelliJ IDEA

Tus sau lub tswv yim
Khoroshev Artyom

Kab-up

Khoroshev Artem – project manager/developer/QA
Eliseev Anton - tus kws tshuaj xyuas kev lag luam / tus kws tshaj lij kev lag luam
Maria Kuklina – UI designer/developer
Bakhvalov Pavel – UI designer/developer/QA

Los ntawm peb qhov kev xav, Telegram yog tus xa xov xwm niaj hnub thiab yooj yim, thiab nws cov PC version yog nrov thiab qhib qhov chaw, uas ua rau nws tuaj yeem hloov kho. Cov neeg siv khoom muaj kev nplua nuj heev. Ntxiv rau cov ntawv xov xwm txheem, nws muaj lub suab hu, video lus, thiab suab lus. Thiab nws yog qhov kawg uas qee zaum ua rau tsis yooj yim rau lawv cov neeg tau txais kev pab. Nws feem ntau tsis tuaj yeem mloog lub suab lus thaum nyob hauv computer lossis laptop. Tej zaum yuav muaj suab nrov, tsis muaj lub mloog pob ntseg, lossis koj tsis xav kom leej twg hnov ​​cov ntsiab lus ntawm cov lus. Cov teeb meem zoo li no yuav luag tsis tshwm sim yog tias koj siv Telegram ntawm lub xov tooj smartphone, vim tias koj tuaj yeem nqa nws mus rau koj lub pob ntseg, tsis zoo li lub laptop lossis PC. Peb sim daws qhov teeb meem no.

Lub hom phiaj ntawm peb txoj haujlwm ntawm DevDays yog ntxiv lub peev xwm los txhais cov lus tau txais lub suab rau hauv cov ntawv rau Telegram desktop tus neeg siv khoom (tom qab no hu ua Telegram Desktop).

Tag nrho cov analogues tam sim no yog bots uas koj tuaj yeem xa cov lus thiab tau txais cov ntawv teb. Peb tsis txaus siab rau qhov no: xa xov mus rau bot tsis yooj yim heev; peb xav kom muaj kev ua haujlwm ib txwm muaj. Tsis tas li ntawd, ib qho bot yog ib tus neeg thib peb uas ua haujlwm nruab nrab ntawm cov lus lees paub API thiab tus neeg siv, thiab qhov no yog qhov tsawg kawg nkaus, tsis muaj kev nyab xeeb.

Raws li tau hais ua ntej, telegram-desktop muaj ob qhov zoo: yooj yim thiab ceev ntawm kev ua haujlwm. Thiab qhov no tsis yog coincidence, vim nws tau sau tag nrho hauv C ++. Thiab txij li thaum peb txiav txim siab ntxiv cov haujlwm tshiab ncaj qha rau cov neeg siv khoom, peb yuav tsum tsim nws hauv C ++.

Hackathon DevDays'19 (ib ntu 2): suab lus parser rau Telegram thiab sau ntawv txheeb xyuas hauv IntelliJ IDEAMuaj 4 tus neeg nyob hauv peb pab neeg. Thaum xub thawj, ob tus neeg tab tom nrhiav rau lub tsev qiv ntawv tsim nyog rau kev paub txog kev hais lus, ib tus neeg tab tom kawm qhov chaws ntawm Telegram-desktop, lwm tus tau siv qhov project tsim. Telegram Desktop. Tom qab ntawd, txhua tus neeg tsis khoom kho UI thiab kev debugging.

Nws zoo nkaus li tias kev siv lub hom phiaj ua haujlwm yuav tsis yooj yim, tab sis, raws li ib txwm muaj, muaj teeb meem tshwm sim.

Txoj kev daws teeb meem muaj ob txoj haujlwm ywj pheej: xaiv cov cuab yeej paub hais lus tsim nyog thiab siv UI rau kev ua haujlwm tshiab.

Thaum xaiv lub tsev qiv ntawv rau lub suab lees paub, peb tam sim ntawd yuav tsum tso tseg tag nrho offline APIs, vim hais tias cov qauv lus siv ntau qhov chaw. Tab sis peb tab tom tham txog ib hom lus xwb. Nws tau pom tseeb tias peb yuav tau siv API online. Tom qab ntawd nws tau pom tias cov kev pabcuam kev paub txog kev hais lus ntawm cov neeg loj xws li Google, Yandex thiab Microsoft tsis yog txhua yam pub dawb, thiab peb yuav tsum tau txaus siab nrog lub sijhawm sim. Raws li qhov tshwm sim, Google Speech-To-Text tau raug xaiv vim nws tso cai rau koj kom tau txais lub cim rau kev siv cov kev pabcuam, uas yuav kav ib xyoos.

Qhov teeb meem thib ob uas peb tau ntsib yog cuam tshuam nrog qee qhov tsis txaus ntawm C ++ - lub vaj tsiaj ntawm ntau lub tsev qiv ntawv thaum tsis muaj lub hauv paus chaw cia khoom. Nws thiaj li tshwm sim tias Telegram Desktop nyob ntawm ntau lwm cov tsev qiv ntawv tshwj xeeb. Cov ntaub ntawv pov thawj muaj phau ntawv rau assembling qhov project. Thiab kuj muaj ntau qhov qhib teeb meem txog kev tsim teeb meem, piv txwv li sij hawm ΠΈ ob. Tag nrho cov teeb meem tau tshwm sim los ntawm qhov tseeb tias cov ntawv tsim tau sau rau Ubuntu 14.04, thiab txhawm rau tsim kom muaj xov tooj zoo hauv Ubuntu 18.04, yuav tsum tau hloov pauv.

Telegram Desktop nws tus kheej siv sijhawm ntev los sib sau ua ke: ntawm lub laptop nrog Intel Core i5-7200U, ua kom tiav kev sib dhos ( chij -j 4) nrog txhua qhov kev vam khom yuav siv sijhawm li peb teev. Ntawm cov no, kwv yees li 30 feeb yog coj los ntawm kev sib txuas tus neeg siv khoom nws tus kheej (tom qab ntawd nws tau pom tias hauv Debug teeb tsa, kev sib txuas yuav siv li 10 feeb), tab sis cov theem txuas yuav tsum tau rov ua dua txhua zaus tom qab hloov pauv.

Txawm hais tias muaj teeb meem, peb tau tswj hwm los siv lub tswv yim tsim, nrog rau kev hloov tshiab tsim tsab ntawv rau Ubuntu 18.04. Kev ua qauv qhia ntawm kev ua haujlwm tuaj yeem pom ntawm txuas. Peb kuj suav nrog ntau cov animations. Lub pob tau tshwm sim ntawm ib sab ntawm txhua lub suab lus, tso cai rau koj los txhais cov lus rau hauv ntawv. Los ntawm txoj cai-nias, koj tuaj yeem hais qhia cov lus uas yuav siv rau kev tshaj tawm. Los ntawm txuas neeg muaj rau download.

Chaw khaws cia.

Nyob rau hauv peb lub tswv yim, nws tau los ua ib tug zoo pov thawj ntawm lub tswv yim ntawm functionality uas yuav yooj yim rau ntau tus neeg siv. Peb cia siab tias yuav pom nws nyob rau yav tom ntej tso tawm ntawm Telegram Desktop.

Txhim kho Natural Language Support hauv IntelliJ IDEA

Hackathon DevDays'19 (ib ntu 2): suab lus parser rau Telegram thiab sau ntawv txheeb xyuas hauv IntelliJ IDEA

Tus sau lub tswv yim

Tankov Vladislav

Kab-up

Tankov Vladislav (pab pawg thawj coj, ua haujlwm nrog LanguageTool thiab IntelliJ IDEA)
Nikita Sokolov (ua haujlwm nrog LanguageTool thiab tsim UI)
Khvorov Alexander (ua hauj lwm nrog LanguageTool thiab optimizing kev ua tau zoo)
Sadovnikov Alexander (kev txhawb nqa rau parsing markup lus thiab code)

Peb tau tsim ib lub plugin rau IntelliJ IDEA uas kuaj xyuas ntau cov ntawv (cov lus pom thiab cov ntaub ntawv, cov kab lus hauv cov lej, cov ntawv sau hauv Markdown lossis XML markup) rau kev sau ntawv, sau ntawv thiab stylistic raug (hauv lus Askiv qhov no hu ua proofreading).

Lub tswv yim ntawm qhov project yog los nthuav cov qauv spellcheck IntelliJ IDEA rau qhov ntsuas ntawm Grammarly, ua ib hom Grammarly hauv IDE.

Koj tuaj yeem pom dab tsi tshwm sim txuas.

Zoo, hauv qab no peb yuav tham ntau ntxiv txog lub peev xwm ntawm lub plugin, nrog rau cov teeb meem uas tshwm sim thaum nws tsim.

Kev Txhawb

Muaj ntau yam khoom tsim los rau kev sau ntawv hauv cov lus ntuj, tab sis cov ntaub ntawv thiab cov lus qhia yog feem ntau sau rau hauv kev loj hlob ib puag ncig. Tib lub sijhawm, IDEs ua txoj haujlwm zoo ntawm kev nrhiav qhov yuam kev hauv cov lej, tab sis tsis zoo rau cov ntawv hauv cov lus ntuj. Qhov no ua rau nws yooj yim heev los ua yuam kev hauv cov qauv sau ntawv, cim cim, lossis cov qauv yam tsis muaj qhov kev loj hlob ib puag ncig taw qhia lawv. Nws yog qhov tseem ceeb tshaj plaws kom ua yuam kev hauv kev sau ntawv tus neeg siv interface, vim qhov no yuav cuam tshuam tsis tsuas yog kev nkag siab ntawm cov cai, tab sis kuj yog cov neeg siv ntawm daim ntawv thov tsim lawv tus kheej.

Ib qho chaw nrov tshaj plaws thiab tsim kev loj hlob yog IntelliJ IDEA, nrog rau IDEs raws li IntelliJ Platform. IntelliJ Platform twb muaj ib tug built-in spellchecker, tab sis nws tsis tau tshem ntawm txawm qhov yooj yim grammatical yuam kev. Peb tau txiav txim siab los koom ua ke ib qho ntawm cov kev tshuaj xyuas cov lus nrov hauv IntelliJ IDEA.

Kev siv

Hackathon DevDays'19 (ib ntu 2): suab lus parser rau Telegram thiab sau ntawv txheeb xyuas hauv IntelliJ IDEAPeb tsis tau teeb tsa peb tus kheej txoj haujlwm ntawm kev tsim peb tus kheej cov ntawv pov thawj, yog li peb siv cov kev daws teeb meem uas twb muaj lawm. Qhov kev xaiv tsim nyog tshaj plaws tau muab los ua Cov cuab yeej lus. Daim ntawv tso cai tso cai rau peb siv nws dawb rau peb lub hom phiaj: nws yog dawb, sau hauv Java thiab qhib qhov chaw. Tsis tas li ntawd, nws txhawb nqa 25 hom lus thiab tau nyob hauv kev txhim kho rau ntau tshaj kaum tsib xyoos. Txawm hais tias nws qhov kev qhib siab, LanguageTool yog tus neeg sib tw loj rau kev them nyiaj pov thawj cov ntsiab lus, thiab qhov tseeb tias nws tuaj yeem ua haujlwm hauv zos yog qhov tseeb nws cov neeg tua neeg.

Lub plugin code yog nyob rau hauv repositories ntawm GitHub. Tag nrho qhov project tau sau rau hauv Kotlin nrog me me ntxiv ntawm Java rau UI. Thaum lub sijhawm hackathon, peb tau tswj hwm los siv kev txhawb nqa rau Markdown, JavaDoc, HTML thiab Plain Text. Tom qab lub hackathon, qhov hloov tshiab tseem ceeb ntxiv kev txhawb nqa rau XML, cov kab ntawv sau hauv Java, Kotlin thiab Python, thiab kuaj xyuas kev sau ntawv.

Kev nyuaj

Heev sai heev peb pom tau hais tias yog peb pub tag nrho cov ntawv rau LanguageTool rau kev soj ntsuam txhua txhua lub sij hawm, ces tus IDEA interface yuav khov rau ib qho ntxiv los yog tsawg dua cov ntawv loj, vim qhov kev tshuaj ntsuam nws tus kheej thaiv cov UI ntws. Qhov teeb meem tau daws los ntawm 'ProgressManager.checkCancelled' kos - qhov haujlwm no cuam tshuam qhov kev zam yog tias IDEA ntseeg tias nws yog lub sijhawm los rho tawm qhov kev tshuaj xyuas.

Qhov no tshem tawm tag nrho cov freezes, tab sis nws yog siv tsis tau: cov ntawv nyeem yuav siv sij hawm ntev heev los ua. Ntxiv mus, nyob rau hauv peb cov ntaub ntawv, feem ntau yog ib feem me me ntawm cov ntawv nyeem hloov thiab peb xav cache cov ntsiab lus xyov. Qhov ntawd yog qhov peb tau ua. Txhawm rau kom tsis txhob kuaj xyuas txhua txhua lub sijhawm, peb txiav txim siab faib cov ntawv rau hauv daim ntawv thiab tshuaj xyuas tsuas yog cov uas tau hloov pauv. Txij li cov ntawv tuaj yeem loj thiab peb tsis xav thauj cov cache, peb tsis khaws cov ntawv lawv tus kheej, tab sis lawv cov hashs. Qhov no tso cai rau lub plugin ua haujlwm zoo txawm tias ntawm cov ntaub ntawv loj.

LanguageTool txhawb ntau tshaj 25 hom lus, tab sis nws tsis zoo li tias ib tus neeg siv xav tau tag nrho. Kuv xav muab lub sijhawm los rub cov tsev qiv ntawv rau ib hom lus tshwj xeeb thaum thov (yog tias koj zuam nws hauv UI). Peb txawm siv qhov no, tab sis nws tau dhau los ua qhov nyuaj thiab tsis ntseeg. Tshwj xeeb, peb yuav tsum thauj LanguageTool nrog cov lus tshiab uas siv cov chav kawm cais, thiab ua tib zoo pib nws. Nyob rau tib lub sijhawm, tag nrho cov tsev qiv ntawv tau nyob hauv ib tus neeg siv .m2 repository, thiab txhua qhov pib peb yuav tsum tau kuaj xyuas lawv cov kev ncaj ncees. Thaum kawg, peb txiav txim siab tias yog tias cov neeg siv muaj teeb meem nrog qhov loj ntawm lub plugin, ces peb yuav muab cov plugin cais rau ob peb hom lus nrov tshaj plaws.

Tom qab lub hackathon

Lub hackathon xaus, tab sis ua haujlwm ntawm lub plugin txuas ntxiv nrog pab pawg nqaim. Kuv xav txhawb cov hlua, cov lus pom, thiab txawm tias cov lus tsim xws li cov npe sib txawv thiab cov npe hauv chav kawm. Tam sim no qhov no tsuas yog txhawb nqa Java, Kotlin thiab Python, tab sis peb cia siab tias daim ntawv teev npe no yuav loj tuaj. Peb tau kho ntau cov kab me me thiab ua tau zoo dua nrog lub tswv yim lub built-in spell checker. Tsis tas li ntawd, kev txhawb nqa XML thiab tshuaj xyuas kev sau ntawv tau tshwm sim. Tag nrho cov no tuaj yeem pom hauv qhov thib ob version, uas peb tau tshaj tawm tsis ntev los no.

Yuav ua li cas yog tom ntej no?

Xws li lub plugin tuaj yeem pab tau tsis yog rau cov neeg tsim khoom xwb, tab sis kuj rau cov kws sau ntawv (feem ntau ua haujlwm, piv txwv li, nrog XML hauv IDE). Txhua hnub lawv yuav tsum tau ua haujlwm nrog cov lus ntuj, tsis tas yuav muaj tus pab cuam hauv daim ntawv ntawm cov lus qhia txog kev ua yuam kev. Peb lub plugin muab cov lus qhia zoo li no thiab ua nws nrog cov qib siab ntawm qhov raug.
Peb npaj los tsim lub plugin, ob qho tib si los ntawm kev ntxiv cov lus tshiab thiab los ntawm kev tshawb nrhiav ib txoj hauv kev los txhim kho cov ntawv txheeb xyuas. Peb cov phiaj xwm tam sim no suav nrog kev siv cov stylistic profiles (txheej txheem cov cai uas txhais cov qauv qhia rau cov ntawv nyeem, piv txwv li, "tsis txhob sau eg, tab sis sau tag nrho daim ntawv"), nthuav cov phau ntawv txhais lus thiab txhim kho cov neeg siv interface (tshwj xeeb, peb xav muab lub sijhawm rau tus neeg siv tsis yog kom tsis quav ntsej ib lo lus, tab sis ntxiv rau hauv phau ntawv txhais lus, qhia txog ib feem ntawm kev hais lus).

Tau qhov twg los: www.habr.com

Ntxiv ib saib