Π₯Π°ΠΊΠ°Ρ‚ΠΎΠ½ DevDays’19 (Ρ‡Π°ΡΡ‚ΡŒ 2): парсСр Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… сообщСний для Telegram ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² IntelliJ IDEA

ΠœΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… вСсСннСго Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½Π° DevDays, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ участвовали студСнты магистСрской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния / Software EngineeringΒ».

Π₯Π°ΠΊΠ°Ρ‚ΠΎΠ½ DevDays'19 (Ρ‡Π°ΡΡ‚ΡŒ 2): парсСр Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… сообщСний для Telegram ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² IntelliJ IDEA

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ VK-Π³Ρ€ΡƒΠΏΠΏΠ΅ магистратуры. Π’ Π½Π΅ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ самыС свСТиС новости ΠΎ Π½Π°Π±ΠΎΡ€Π΅ ΠΈ ΡƒΡ‡Π΅Π±Π΅. Π’ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΡŒ со дня ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π΄Π²Π΅Ρ€Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅. НапоминаСм: мСроприятиС ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ 29 апрСля, подробности Π½Π° сайтС.

Telegram Desktop Voice Message Parser

Π₯Π°ΠΊΠ°Ρ‚ΠΎΠ½ DevDays'19 (Ρ‡Π°ΡΡ‚ΡŒ 2): парсСр Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… сообщСний для Telegram ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² IntelliJ IDEA

Автор ΠΈΠ΄Π΅ΠΈ
Π₯ΠΎΡ€ΠΎΡˆΠ΅Π² Артём

Бостав ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Π₯ΠΎΡ€ΠΎΡˆΠ΅Π² АртСм – ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°/Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ/QA
ЕлисССв Антон – бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ/спСциалист ΠΏΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³Ρƒ
ΠšΡƒΠΊΠ»ΠΈΠ½Π° ΠœΠ°Ρ€ΠΈΡ – UI Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€/Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ
Π‘Π°Ρ…Π²Π°Π»ΠΎΠ² ПавСл – UI Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€/Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ/QA

Π‘ нашСй Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Telegram являСтся соврСмСнным ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ мСссСндТСром, Π° Π΅Π³ΠΎ вСрсия для ПК отличаСтся ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, вслСдствиС Ρ‡Π΅Π³ΠΎ имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ достаточно Π±ΠΎΠ³Π°Ρ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Помимо стандартных тСкстовых сообщСний, Π² Π½Π΅ΠΌ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ голосовыС Π·Π²ΠΎΠ½ΠΊΠΈ, видСосообщСния, голосовыС сообщСния. И ΠΈΠΌΠ΅Π½Π½ΠΎ послСдниС ΠΏΠΎΡ€ΠΎΠΉ приносят нСудобство своСму ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π΅Ρ‚ возмоТности ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ голосовоС сообщСниС, Π½Π°Ρ…ΠΎΠ΄ΡΡΡŒ Π·Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ ΠΈΠ»ΠΈ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΎΠΌ. ΠœΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΡˆΡƒΠΌ, отсутствиС Π½Π°ΡƒΡˆΠ½ΠΈΠΊΠΎΠ², ΠΈΠ»ΠΈ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ содСрТимоС сообщСния ΠΊΡ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΡƒΡΠ»Ρ‹ΡˆΠ°Π». Π’Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ Π½Π° смартфонС, вСдь Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто поднСсти ΠΊ ΡƒΡ…Ρƒ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ° ΠΈΠ»ΠΈ ПК. ΠœΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π—Π°Π΄Π°Ρ‡Π΅ΠΉ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° DevDays Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Telegram (Π΄Π°Π»Π΅Π΅ Telegram Desktop) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ голосовыС сообщСния Π² тСкст.

ВсС Π°Π½Π°Π»ΠΎΠ³ΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” это Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΠ»Π°Ρ‚ΡŒ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ΅ сообщСниС, Π° Π² ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ тСкст. Нас это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ устраиваСт: ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ сообщСниС Π±ΠΎΡ‚Ρƒ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ любой Π±ΠΎΡ‚ β€” это Ρ‚Ρ€Π΅Ρ‚ΡŒΡ сторона, которая выступаСт посрСдником ΠΌΠ΅ΠΆΠ΄Ρƒ API ΠΏΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡŽ Ρ€Π΅Ρ‡ΠΈ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π° это, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, нСбСзопасно.

Как Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Ρ€Π°Π½Π΅Π΅, telegram-desktop ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ двумя вСсовыми прСимущСствами: Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹. И это Π½Π΅ случайно, вСдь ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ написан Π½Π° C++. А Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прямо Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Ρ‚ΠΎ ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π° C++.

Π₯Π°ΠΊΠ°Ρ‚ΠΎΠ½ DevDays'19 (Ρ‡Π°ΡΡ‚ΡŒ 2): парсСр Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… сообщСний для Telegram ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² IntelliJ IDEAΠ’ нашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π±Ρ‹Π»ΠΎ 4 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ, Π΄Π²ΠΎΠ΅ занимались поиском подходящСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для распознавания Ρ€Π΅Ρ‡ΠΈ, ΠΎΠ΄ΠΈΠ½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠ·ΡƒΡ‡Π°Π» исходный ΠΊΠΎΠ΄ Telegram-desktop, Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π» build ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Telegram Desktop. ПозднСС всС занимались фиксами UI ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ.

Казалось, Ρ‡Ρ‚ΠΎ рСализация Π·Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π°, Π½ΠΎ, ΠΊΠ°ΠΊ всСгда ΠΈ Π±Ρ‹Π²Π°Π΅Ρ‚, Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ трудности.

РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»ΠΎΡΡŒ ΠΈΠ· Π΄Π²ΡƒΡ… нСзависимых ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡: Π²Ρ‹Π±ΠΎΡ€Π° подходящСго срСдства для распознавания Ρ€Π΅Ρ‡ΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ UI для Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для распознавания голоса Π½Π°ΠΌ сразу ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΎ всСх offline API, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ языковыС ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ мСста. А вСдь Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ лишь ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ языкС. Π‘Ρ‚Π°Π»ΠΎ понятно, Ρ‡Ρ‚ΠΎ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ online API. ПозТС Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ сСрвисы ΠΏΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡŽ Ρ€Π΅Ρ‡ΠΈ Ρ‚Π°ΠΊΠΈΡ… Π³ΠΈΠ³Π°Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΊ Google, Yandex ΠΈ Microsoft совсСм Π½Π΅ бСсплатныС, ΠΈ Π½Π°ΠΌ придСтся Π΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ±Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠΌ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Google Speech-To-Text, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ для пользования сСрвисом, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ…Π²Π°Ρ‚ΠΈΡ‚ Π½Π° Ρ†Π΅Π»Ρ‹ΠΉ Π³ΠΎΠ΄.

Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ, связана с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ нСдостатками C++ β€” Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊΠΎΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΏΡ€ΠΈ отсутствии Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ рСпозитория. Π’Π°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Telegram Desktop зависит ΠΎΡ‚ мноТСства Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… вСрсий. Π’ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΅ΡΡ‚ΡŒ инструкция ΠΏΠΎ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. А Ρ‚Π°ΠΊΠΆΠ΅ большоС количСство ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… issues ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… сборки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π· ΠΈ Π΄Π²Π°. ВсС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ оказались связаны с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ build script написан для Ubuntu 14.04, ΠΈ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ telegram ΠΏΠΎΠ΄ Ubuntu 18.04, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния.

Π‘Π°ΠΌ ΠΏΠΎ сСбС Telegram Desktop собираСтся достаточно Π΄ΠΎΠ»Π³ΠΎ: Π½Π° Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅ с Intel Core i5-7200U полная сборка (Ρ„Π»Π°Π³ -j 4) со всСми зависимостями Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ порядка Ρ‚Ρ€Π΅Ρ… часов. Из Π½ΠΈΡ… порядка 30 ΠΌΠΈΠ½ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° самого ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (ΠΏΠΎΠ·ΠΆΠ΅ Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Debug-ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 10 ΠΌΠΈΠ½ΡƒΡ‚), Π° вСдь этап Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ приходится ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· послС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

НСсмотря Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½Π°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄ΡƒΠΌΠ°Π½Π½ΡƒΡŽ идСю, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ build script для Ubuntu 18.04. Π”Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎ ссылкС. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ нСсколько Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ. Около всСх голосовых сообщСний появилась ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС Π² тСкст. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ использован для трансляции. По ссылкС доступСн ΠΊΠ»ΠΈΠ΅Π½Ρ‚ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

По Π½Π°ΡˆΠ΅ΠΌΡƒ мнСнию, получился Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Proof of Concept Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, которая Π±Ρ‹Π»Π° Π±Ρ‹ ΡƒΠ΄ΠΎΠ±Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ. НадССмся ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΅Π΅ Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ… Telegram Desktop.

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° СстСствСнного языка Π² IntelliJ IDEA

Π₯Π°ΠΊΠ°Ρ‚ΠΎΠ½ DevDays'19 (Ρ‡Π°ΡΡ‚ΡŒ 2): парсСр Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… сообщСний для Telegram ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² IntelliJ IDEA

Автор ΠΈΠ΄Π΅ΠΈ

Π’Π°Π½ΠΊΠΎΠ² Владислав

Бостав ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Π’Π°Π½ΠΊΠΎΠ² Владислав (Ρ‚ΠΈΠΌΠ»ΠΈΠ΄, Ρ€Π°Π±ΠΎΡ‚Π° с LanguageTool ΠΈ IntelliJ IDEA)
Π‘ΠΎΠΊΠΎΠ»ΠΎΠ² Никита (Ρ€Π°Π±ΠΎΡ‚Π° с LanguageTool ΠΈ созданиС UI)
Π₯Π²ΠΎΡ€ΠΎΠ² АлСксандр (Ρ€Π°Π±ΠΎΡ‚Π° с LanguageTool ΠΈ оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ)
Π‘Π°Π΄ΠΎΠ²Π½ΠΈΠΊΠΎΠ² АлСксандр (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° парсинга языков Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ ΠΊΠΎΠ΄Π°)

ΠœΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ для IntelliJ IDEA, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ тСксты (ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ строки Π² ΠΊΠΎΠ΄Π΅, тСкст ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹ΠΉ Π² Markdown ΠΈΠ»ΠΈ XML-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ΅) Π½Π° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ, ΠΎΡ€Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈ ΡΡ‚ΠΈΠ»ΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ (Π² английском это называСтся proofreading).

ИдССй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ стандартный spellcheck IntelliJ IDEA Π΄ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ² Grammarly, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ своСго Ρ€ΠΎΠ΄Π° Grammarly inside IDE.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ссылкС.

Ну Π° Π½ΠΈΠΆΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ расскаТСм ΠΎ возмоТностях ΠΏΠ»Π°Π³ΠΈΠ½Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ трудностях, Π²ΠΎΠ·Π½ΠΈΠΊΡˆΠΈΡ… ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании.

ΠœΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΡ

БущСствуСт мноТСство ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², созданных для написания тСкстов Π½Π° СстСствСнных языках, Π½ΠΎ докумСнтация ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ ΠΊΠΎΠ΄Ρƒ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅ всСго Π² срСдах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ Ρ‚ΠΎΠΆΠ΅ врСмя IDE прСкрасно ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с поиском ошибок Π² написании ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ приспособлСны для тСкстов Π½Π° СстСствСнных языках. Из-Π·Π° этого ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ошибки Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅, ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ стилС, Π° срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π° Π½ΠΈΡ…. НаиболСС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² написании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ‚ этого пострадаСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ сами ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния.

Одной ΠΈΠ· самых популярных ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹Ρ… срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ являСтся IntelliJ IDEA, Π° Ρ‚Π°ΠΊΠΆΠ΅ IDE, основанныС Π½Π° IntelliJ Platform. Π’ IntelliJ Platform ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ встроСнный spellchecker, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ Π½Π΅ избавляСт Π΄Π°ΠΆΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… грамматичСских ошибок. ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· популярных систСм Π°Π½Π°Π»ΠΈΠ·Π° СстСствСнного языка Π² IntelliJ IDEA.

РСализация

Π₯Π°ΠΊΠ°Ρ‚ΠΎΠ½ DevDays'19 (Ρ‡Π°ΡΡ‚ΡŒ 2): парсСр Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… сообщСний для Telegram ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² IntelliJ IDEAΠœΡ‹ Π½Π΅ ставили ΠΏΠ΅Ρ€Π΅Π΄ собой Π·Π°Π΄Π°Ρ‡ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свою систСму Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ тСкстов, поэтому воспользовались ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. НаиболСС подходящим Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ оказался LanguageTool. ЛицСнзия позволяла бСспрСпятствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ: ΠΎΠ½ бСсплатСн, написан Π½Π° Java ΠΈ Π²Ρ‹Π»ΠΎΠΆΠ΅Π½ Π² open-source. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ 25 языков ΠΈ развиваСтся ΡƒΠΆΠ΅ большС пятнадцати Π»Π΅Ρ‚. НСсмотря Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ, LanguageTool являСтся ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠΌ ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ тСкстов, Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ способСн Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ локально, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ являСтся Π΅Π³ΠΎ killer feature.

Код ΠΏΠ»Π°Π³ΠΈΠ½Π° Π»Π΅ΠΆΠΈΡ‚ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° GitHub. Π’Π΅ΡΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ писался Π½Π° Kotlin с нСбольшим Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Java для UI. Π—Π° врСмя Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½Π° ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Markdown, JavaDoc, HTML ΠΈ Plain Text. ПослС Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½Π° Π² большом ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° XML, строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² Π² Java, Kotlin ΠΈ Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΡ€Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ.

Врудности

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ быстро ΠΌΡ‹ поняли, Ρ‡Ρ‚ΠΎ Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±ΡƒΠ΄Π΅ΠΌ ΡΠΊΠ°Ρ€ΠΌΠ»ΠΈΠ²Π°Ρ‚ΡŒ вСсь тСкст Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ LanguageTool, Ρ‚ΠΎ интСрфСйс IDEA Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π²ΠΈΡΠ°Ρ‚ΡŒ Π½Π° Π»ΡŽΠ±Ρ‹Ρ… ΠΌΠ°Π»ΠΎ-мальски ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… тСкстах, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ инспСкция сама ΠΏΠΎ сСбС Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ UI. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π»Π°ΡΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ `ProgressManager.checkCancelled` β€” эта функция выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ссли IDEA считаСт, Ρ‡Ρ‚ΠΎ инспСкции ΠΏΠΎΡ€Π° Π±Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒΡΡ.

Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·Π±Π°Π²ΠΈΠ»ΠΎ ΠΎΡ‚ зависаний, Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ: ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΆ Π΄ΠΎΠ»Π³ΠΎ обрабатываСтся тСкст. ΠŸΡ€ΠΈ этом Π² нашСм случаС Ρ‡Π°Ρ‰Π΅ всСго мСняСтся ΠΎΡ‡Π΅Π½ΡŒ нСбольшая Ρ‡Π°ΡΡ‚ΡŒ тСкста ΠΈ хочСтся ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π·Π°ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. ИмСнно это ΠΌΡ‹ ΠΈ сдСлали. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· всС, ΠΌΡ‹ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Π»ΠΈ тСкст Π½Π° куски ΠΈ провСряли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнились. Π’Π°ΠΊ ΠΊΠ°ΠΊ тСксты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ большими ΠΈ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ кСш Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ, ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈ Π½Π΅ сами тСксты, Π° ΠΈΡ… Ρ…Π΅ΡˆΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠ»Π°Π²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ»Π°Π³ΠΈΠ½Π° Π΄Π°ΠΆΠ΅ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ….

LanguageTool ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 25 языков, Π½ΠΎ вряд Π»ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½ΡƒΠΆΠ½Ρ‹ ΠΎΠ½ΠΈ всС. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка ΠΏΠΎ запросу (Ссли ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π³Π°Π»ΠΎΡ‡ΠΊΠΎΠΉ Π² UI). ΠœΡ‹ Π΄Π°ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ это, Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ слишком слоТно ΠΈ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎ. Π’ частности, Π½Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ classloader-ΠΎΠΌ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ LanguageTool с Π½ΠΎΠ²Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ языков, послС Ρ‡Π΅Π³ΠΎ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ этом всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π»Π΅ΠΆΠ°Π»ΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ .m2-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ стартС Π½Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈΡ… Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠ»Π°Π³ΠΈΠ½Π°, Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных языков.

ПослС Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½Π°

Π₯Π°ΠΊΠ°Ρ‚ΠΎΠ½ закончился, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»Π°ΡΡŒ ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ·ΠΊΠΈΠΌ составом. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ строки, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π΄Π°ΠΆΠ΅ конструкции языка, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ названия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ классов. БСйчас это поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Java, Kotlin ΠΈ Python, Π½ΠΎ ΠΌΡ‹ надССмся, Ρ‡Ρ‚ΠΎ этот список Π±ΡƒΠ΄Π΅Ρ‚ расти. ΠœΡ‹ исправили мноТСство Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ошибок ΠΈ стали Π±ΠΎΠ»Π΅Π΅ совмСстимыми с встроСнным спСллчСкСром Idea. ΠšΡ€ΠΎΠΌΠ΅ этого появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° XML ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΡ€Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ. ВсС это ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсии, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π½Π΅Π΄Π°Π²Π½ΠΎ.

Π§Ρ‚ΠΎ дальшС?

Π’Π°ΠΊΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, Π½ΠΎ ΠΈ тСхничСским писатСлям (часто Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, с XML Π² IDE). Им ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ с СстСствСнным языком, ΠΏΡ€ΠΈ этом Π½Π΅ имСя ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠ° Π² Π²ΠΈΠ΄Π΅ подсказок Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Наш ΠΏΠ»Π°Π³ΠΈΠ½ прСдоставляСт Ρ‚Π°ΠΊΠΈΠ΅ подсказки ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ это с высокой ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ точности.
ΠœΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΊΠ°ΠΊ добавляя Π½ΠΎΠ²Ρ‹Π΅ языки, Ρ‚Π°ΠΊ ΠΈ исслСдуя ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ тСкста. Π’ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… ΠΏΠ»Π°Π½Π°Ρ… рСализация ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ стилистики (Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΏΡ€Π°Π²ΠΈΠ» ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… стайлгайд для тСкста, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Β«Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ e.g., Π° ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒΒ»), Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ словаря ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (Π² частности, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ просто ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слово, Π° Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, указывая Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΠΈ).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ