Em berdewam dikin ku li ser projeyên Hackathona biharê DevDays, ku tê de xwendekarên bernameya masterê beşdar bûne, biaxivin.
Bi awayê, em dixwazin xwendevanan vexwînin ku beşdarî bibin
Parsera Peyama Dengê Sermaseya Telegram
Nivîskarê ramanê
Khoroshev Artyom
Berdewam dibe
Khoroshev Artem - rêveberê projeyê / pêşdebir / QA
Eliseev Anton - analîstê karsaziyê / pisporê kirrûbirrê
Maria Kuklina - sêwiraner / pêşdebirkerê UI
Bakhvalov Pavel - sêwiranerê UI / pêşdebir / QA
Li gorî nêrîna me, Telegram peyamberek nûjen û hêsan e, û guhertoya wê ya PC-ya populer û çavkaniya vekirî ye, ku guheztina wê gengaz dike. Xerîdar fonksiyonek pir dewlemend pêşkêşî dike. Ji bilî peyamên nivîsê yên standard, ew bangên deng, peyamên vîdyoyê û peyamên deng vedihewîne. Û ev ya paşîn e ku carinan nerehetiyê ji wergirê wan re tîne. Dema ku hûn li ser komputer an laptopê ne pir caran ne gengaz e ku meriv li peyamek dengek guhdarî bike. Dibe ku dengê hawîrdorê, nebûna guhê, an jî hûn naxwazin kes naveroka peyamê bibihîze. Heke hûn Telegram-ê li ser têlefonek têlefonê bikar bînin, hema hema tu carî pirsgirêk dernakeve, ji ber ku hûn dikarin wê bi hêsanî bînin ber guhê xwe, berevajî laptopek an PC-yê. Me hewl da ku vê pirsgirêkê çareser bikin.
Armanca projeya me li DevDays ev bû ku em jêhatîbûna wergerandina peyamên dengî yên wergirtî li nivîsê li xerîdara sermaseya Telegram (ji vir şûnde wekî Telegram Desktop tê binav kirin) zêde bikin.
Hemî analogên vê gavê bot in ku hûn dikarin ji wan re peyamek dengî bişînin û di bersivê de nivîsek bistînin. Em ji vê yekê pir ne kêfxweş in: şandina peyamek ji botekek ne pir hêsan e; em dixwazin fonksiyonek xwemalî hebe. Wekî din, her bot partiyek sêyemîn e ku di navbera API-ya naskirina axaftinê û bikarhêner de wekî navbeynkar tevdigere, û ev, bi kêmanî, ne ewledar e.
Wekî ku berê hate destnîşan kirin, telegram-desktop du avantajên girîng hene: hêsan û leza xebatê. Û ev ne tesaduf e, ji ber ku bi tevahî di C++ de hatiye nivîsandin. Û ji ber ku me biryar da ku fonksiyonên nû rasterast li xerîdar zêde bikin, me neçar ma ku wê di C++ de pêşve bixin.
Di koma me de 4 kes hebûn. Di destpêkê de, du kes li pirtûkxaneyek minasib ji bo naskirina axaftinê digeriyan, kesek koda çavkaniyê ya Telegram-sermaseyê dixwend, yekî din projeya avakirinê bi cih dikir.
Wusa dixuye ku pêkanîna fonksiyona armanckirî dê ne dijwar be, lê, wekî her gav diqewime, dijwarî derketin.
Çareseriya pirsgirêkê ji du binxebatên serbixwe pêk dihat: Hilbijartina amûrek nasîna axaftinê ya maqûl û pêkanîna UI ji bo fonksiyona nû.
Dema ku pirtûkxaneyek ji bo naskirina deng hildibijêrin, me neçar ma ku tavilê dev ji hemî API-yên negirêdayî berdin, ji ber ku modelên zimên gelek cîh digirin. Lê em tenê behsa zimanekî dikin. Diyar bû ku em neçar in ku API-ya serhêl bikar bînin. Dûv re derket holê ku karûbarên naskirina axaftinê yên dêwên wekî Google, Yandex û Microsoft qet ne belaş in, û em ê neçar bin ku bi serdemek ceribandinê razî bin. Wekî encamek, Google Speech-To-Text hate hilbijartin ji ber ku ew dihêle hûn ji bo karanîna karûbarê nîşanek bistînin, ku dê salek tevahî bimîne.
Pirsgirêka duyemîn ku em pê re rû bi rû ne bi hin kêmasiyên C++ ve girêdayî ye - zozanek pirtûkxaneyên cihêreng di nebûna depoyek navendî de. Wusa diqewime ku Sermaseya Telegram bi gelek pirtûkxaneyên guherto-taybet ên din ve girêdayî ye. Depoya fermî heye
Sermaseya Telegram bixwe demek pir dirêj digire ku were berhev kirin: li ser laptopek bi Intel Core i5-7200U, kombûna bêkêmasî (ala -j 4) bi hemî ve girêdayî bi qasî sê demjimêran digire. Ji van, nêzîkê 30 hûrdeman bi girêdana xerîdar bixwe têne girtin (paşê derket holê ku di veavakirina Debug de, girêdan bi qasî 10 hûrdem digire), lê qonaxa girêdanê divê her carê piştî guheztinê were dubare kirin.
Digel pirsgirêkan, me karî ku ramana hatî çêkirin û her weha nûvekirin bicîh bînin
Li gorî me, derket holê ku ew îsbatek baş a têgîna fonksiyonê ye ku dê ji bo gelek bikarhêneran rehet be. Em hêvî dikin ku wê di weşanên pêşerojê yên Telegram Desktop de bibînin.
Piştgiriya Zimanê Xwezayî ya Pêşkeftî di IntelliJ IDEA de
Nivîskarê ramanê
Tankov Vladislav
Berdewam dibe
Tankov Vladislav (serokê tîmê, bi LanguageTool û IntelliJ IDEA re dixebite)
Nikita Sokolov (bi LanguageTool re dixebite û UI diafirîne)
Khvorov Alexander (bi LanguageTool re dixebite û performansê xweşbîn dike)
Sadovnikov Alexander (piştgiriya parkirina zimanên nîşankirinê û kodê)
Me ji bo IntelliJ IDEA pêvekek çêkiriye ku nivîsên cihêreng (şirov û belgekirin, rêzikên biwêj di kodê de, metna ku bi Markdown an nîşankirina XML hatî formatkirin) ji bo rastbûna rêzimanî, rastnivîsîn û şêwazê kontrol dike (bi Îngilîzî jê re rastnivîsîn tê gotin).
Fikra projeyê ev bû ku meriv rastnivîsîna standard IntelliJ IDEA berbi pîvana Grammarly-ê ve bibe, da ku celebek Grammarly di hundurê IDE de çêbike.
Hûn dikarin bibînin ka çi bûye
Welê, li jêr em ê bi hûrgulî li ser kapasîteyên pêvekê, û hem jî dijwariyên ku di dema afirandina wê de derketine biaxivin.
Motivation
Gelek hilber hene ku ji bo nivîsandina nivîsê bi zimanên xwezayî hatine çêkirin, lê belge û şîroveyên kodê bi gelemperî di hawîrdorên pêşkeftinê de têne nivîsandin. Di heman demê de, IDE ji bo dîtina xeletiyên di kodê de karekî hêja dikin, lê ji bo nivîsarên bi zimanên xwezayî nebaş in. Ev yek pir hêsan dike ku meriv di rêziman, xalbendî, an şêwazê de xeletiyan bike bêyî ku hawîrdora pêşkeftinê wan destnîşan bike. Pir krîtîk e ku meriv di nivîsandina navgîniya bikarhêner de xeletiyek bike, ji ber ku ev ê bandorê ne tenê li têgihîştina kodê, lê di heman demê de bikarhênerên serîlêdana pêşkeftî bixwe jî bike.
Yek ji hawîrdorên pêşkeftinê yên herî populer û pêşkeftî IntelliJ IDEA ye, û her weha IDE-yên ku li ser Platforma IntelliJ-ê têne bingeh kirin. Platforma IntelliJ berê xwedan rastnivîskek çêkirî ye, lê ew ji xeletiyên rêzimanî yên herî hêsan jî xilas nabe. Me biryar da ku yek ji pergalên analîzkirina zimanê xwezayî yên populer di IntelliJ IDEA de yek bikin.
Реализация
Me ji xwe re peywira afirandina pergala xweya verastkirina nivîsê negirt, ji ber vê yekê me çareseriyek heyî bikar anî. Vebijarka herî maqûl derket holê
Koda pêvekê tê de ye
Zehmetiyên
Pir zû me fêhm kir ku ger em her carê hemî nivîsê ji bo vekolînê bidin LanguageTool, wê hingê pêveka IDEA dê li ser nivîsek kêm-zêde giran bicemidîne, ji ber ku vekolîn bixwe herikîna UI-yê asteng dike. Pirsgirêk bi kontrolkirina `ProgressManager.checkCancelled` hate çareser kirin - ev fonksiyon îstîsnayek derdixe ger IDEA bawer bike ku wextê betalkirina vekolînê ye.
Vê yekê bi tevahî cemidandin ji holê rakir, lê ne gengaz e ku meriv bikar bîne: pêvajoyek nivîsê demek pir dirêj digire. Digel vê yekê, di doza me de, pir caran beşek pir piçûk a nivîsê diguhezîne û em dixwazin bi rengekî encaman cache bikin. Tiştê ku me kir tam ev e. Ji bo ku em her carê her tiştî kontrol nekin, me bi biryardarî nivîsê perçe perçe kir û tenê yên ku hatine guhertin kontrol kirin. Ji ber ku metn dikarin mezin bin û me nexwest ku cache bar bikin, me ne nivîsan bixwe, lê haşeyên wan hilanîn. Vê yekê hişt ku pêvek bi hêsanî li ser pelên mezin jî bixebite.
LanguageTool ji 25 zimanan zêdetir piştgirî dike, lê ne mimkûn e ku bikarhênerek hewceyê wan hemîyan be. Min xwest ku li ser daxwazê fersendê bidim dakêşandina pirtûkxaneyan ji bo zimanek taybetî (heke hûn wê di UI-yê de destnîşan bikin). Me jî ev yek pêk anî, lê derket holê ku ew pir tevlihev û ne pêbawer bû. Bi taybetî, me neçar ma ku LanguageTool bi komek nû ya zimanan bi karanîna dersek veqetandî bar bikin, û dûv re bi baldarî wê dest pê bikin. Di heman demê de, hemî pirtûkxane di depoyek bikarhêner .m2 de bûn, û di her destpêkê de me neçar ma ku yekparebûna wan kontrol bikin. Di dawiyê de, me biryar da ku heke bikarhêner bi mezinahiya pêvekê re pirsgirêk hebin, wê hingê em ê ji bo çend zimanên herî populer pêvekek cihê peyda bikin.
Piştî hackathon
Hackathon qediya, lê xebata li ser pêvekê bi tîmek teng re berdewam kir. Min xwest ku rêz, şîrove, û tewra avahîyên zimanî yên wekî navên guhêrbar û çînan piştgirî bikim. Heya nuha ev tenê ji bo Java, Kotlin û Python piştgirî ye, lê em hêvî dikin ku ev navnîş dê mezin bibe. Me gelek xeletiyên piçûk rast kir û bi rastnivîsa rastnivîsê ya çêkirî ya Idea re hevahengtir bûn. Wekî din, piştgiriya XML û kontrolkirina rastnivîsê xuya bû. Hemî ev dikare di guhertoya duyemîn de, ku me vê dawiyê weşandiye, were dîtin.
Çi ye?
Pêvekek wusa dikare ne tenê ji bo pêşdebiran, lê di heman demê de ji bo nivîskarên teknîkî jî bikêr be (pir caran, mînakî, bi XML-ê di IDE de dixebitin). Her roj neçar in ku bi zimanê xwezayî bixebitin, bêyî ku di forma serişteyên edîtorê de di derheqê xeletiyên gengaz de alîkarek hebe. Pêveka me îşaretên weha peyda dike û wê bi astek bilind a rastbûnê dike.
Em plan dikin ku pêvekê pêşve bibin, hem bi lêzêdekirina zimanên nû û hem jî bi vekolîna nêzîkatiyek gelemperî ya organîzekirina kontrolkirina nivîsê. Di plansaziyên me yên lezgîn de pêkanîna profîlên stîlîstîkî (komên qaîdeyên ku rêbernameyek şêwazê ji bo nivîsê diyar dikin, mînakî, "nimûne nenivîsin, lê forma tam binivîsin"), berfirehkirina ferhengê û başkirina navrûya bikarhêner (bi taybetî, Em dixwazin fersendê bidin bikarhêner ku ne tenê peyvek paşguh bike, lê zêde bike nav ferhengê, beşa axaftinê nîşan bide).
Çavkanî: www.habr.com