Айсберг софта для чтения и слушания на японском с первых дней обучения

от автора

По каким‑то причинам (кто сказал «аниме»?!), японский язык хочет выучить ужасающее количество программистов. Реально, мой любимый подкастер Тэппей говорит, что у него девять из десяти учеников что‑нибудь кодят. Поэтому у нас нет недостатка в отличном софте. Попробую его обозреть. Японофилы узнают что‑нибудь, о чем они еще не слышали, а если вы учите другой язык — возможно захотите сделать что‑то похожее для него.

Особенно продуктивна тусовка обучающихся через контент: сообщества The Moe Way, AJATT, Refold. Не хочу слишком сильно отвлекаться на рассказы о методологии, но суть такая: читай на японском, слушай на японском, старайся понять и через 3–4 тысячи часов заметишь, что все вокруг очень даже понятно. Большинство программистов выучили английский, не заметив этого, читая документацию и смотря ютубчки, поэтому нам ли не знать, что метод рабочий.

Но как это — читать на японском? Японский использует иероглифы, вообще‑то. Если ты не знаешь какого‑то значка, то сколько не сверли его глазами, понятнее он не станет — ни произнести вслух его не сможешь, ни понять смысл. Если хотите прочувствовать глубину отчаяния ученика, читающего по‑японски, отсылаю вас к циклу статей «Ужасы японского языка» хабраюзера Перловича‑доно. Без словарей нам смерть.

Словарики

Героические пращуры искали слова в бумажных словарях по номерам радикалов (так называются кусочки иероглифов) и часто помнили эти номера наизусть. Нашему поколению хочется, чтобы словарь был доступен за наносекунды. Читаю, споткнулся о новое слово, нажал Alt, навел мышкой — мигом увидел значения этого слова или выражения, примеры употребления, частотность, произношение, особенности акцентирования. Если слово представлено в какой‑нибудь форме — сразу расскажут, про что эта форма. Плюс нежный дикторский голос мне его произнес: «конничива»!

Расширение Yomitan. Нажал-навел-послушал

Расширение Yomitan. Нажал-навел-послушал
Всплывающее окошко Yomitan

Всплывающее окошко Yomitan

Заслуженное первое место уходит хромовскому расширению Yomitan. Запускается на всех платформах. Неплохо парсит, где начинается, а где кончается слово (в японском нет пробелов), можно подключить внешний парсер MeCab и станет фурычить еще лучше. Огромное множество словарей сконвертировано в йомитановский формат. Словари про отдельные иероглифы, словари про грамматику, словари имен, словари для питч акцента. Частотные словари показывают, насколько часто данное слово встречается, скажем, в аниме и манге. Или в газетах. Или в сбалансированном корпусе. Отдельно прекрасно аудио: можно скачать библиотеку произнесенных дикторами слов и слушать, как что произносится. Расширение работает шустро, коммиты в репозиторий несколько раз в неделю, код покрыт тестами. Недавно начали поддерживать другие языки.

За пределами браузера тоже можно использовать Йомитаном, потому что он умеет мониторить изменения буфера обмена. Читаете какую‑нибудь pdf‑ку, нажали Ctrl+C — выпрыгнуло окошко Йомитана со всей красотой…

GoldenDict — софтинка более почтенного возраста. Идет как отдельное приложение. У них есть гигантское количество словариков для всех языков. Некоторые используют голден для случаев, когда Yomitan’a недостаточно. 

Карточки

Про интервальное повторение (spaced repetition) писали много и часто. Суть в том, что слова и выражения показываются на лицевой стороне карточки, а ты пытаешься вспомнить, как же их прочесть и что они означают. Вспомнил правильно? Будет показываться чуть реже. Не вспомнил? Будет показываться чаще. Теоретически идеальный алгоритм будет показывать карточку со словом ровно в тот момент, когда мозг готов уже ее забыть. 

Anki

Стандарт де-факто, это программа Anki. UX у нее, прям скажем, напоминает линукс и вим. Или minecraft. Голая анки выглядит прегадко, требует настройки, прочтения мануала и запоминания большого количества специфических терминов. Хорошо настроенная с помощью плагинов Anki радует глаз, угадывает мысли и пахнет петуниями. 

Подобно тому как Yomitan – это оболочка, в которую можно грузитьсловари, Анки — это оболочка, в которую можно загружать колоды карточек. Каждая карточка может быть просто «передом и задом», а может состоять из десятков полей, это по сути строка в базе данных. Поля вроде «произношение», «значение», «контекст», «примеры употребления», «картинка из места, где я это слово всретил», «аудио», «питч‑акцент», «популярность слова» и что угодно другое. В итоге получается этакий key‑value storage.

Сообщество создало тысячи колод на любые темы. Карточка в анки запускает произвольный html, организующий поля. Я видел, как люди встраивают туда целые веб-приложения. Например, я приложил руку к развитию колоды для выучивания иероглифов — так там внутри карточки запускается небольшой js‑движок, позволяющий нарисовать иероглиф, и поправляющий тебя, если ты какие-нибудь черточки запамятовал. 

Алгоритм показывания карточек недавно существенно похорошел. Если раньше он использовал довольно примитивные арифметические эвристики, то сегодняшняя версия основана на машинном обучении и собранной статистике с кучи народа.

Дело в том, что от алгоритма требуется не только показывать карточки достаточно для запоминания, но и не показывать их слишком часто. Иными словами, минимизировать функцию количества показов в единицу времени, соблюдая при этом ограничения по вероятности вспоминания. Выставляем в настройках желаемую вероятность вспоминания (retention rate), скажем 85%. Это значит, что если мне дадут 100 карточек, которые я уже видел, я бы хотел суметь вспомнить 85 из них.

Желаема вероятность вспоминания и количество карточек, которые надо посмотреть в день, чтобы ее достичь

Желаема вероятность вспоминания и количество карточек, которые надо посмотреть в день, чтобы ее достичь

Почему не сотню из ста? Потому что тогда слишком много карточек будет показываться ежедневно, тут работает правило Парето. Эти цифры не взяты с потолка, а подтверждены экспериментами и моделированием. 

JPDB 

Популярнаяальтернатива — онлайновый комбайн JPDB. Помимо собственной SRS‑системы у них есть собственный словарь, собственная база данных по частотности слов и много чего еще. Например, статистика по контенту наподобие такой: «как много уникальных слов используется в аниме Death Note»? «Насколько сильно мой словарный запас пересекается с визуальной новеллой Clannad?»

Тетрадь Смерти имеет рейтинг сложности 7/10

Тетрадь Смерти имеет рейтинг сложности 7/10

В отличие от Анки c анархически-краудсорсинговой системой, пиратством и весельем, JPDB — это закрытое поделие одного человека. Он старается играть по правилам и не нарушать копирайты, а потому некоторых вещей, доступных в анки, там нет. 

Машинное зрение, распознавание японского текста в графике

Читаю я, значит, электронную газетку или смотрю японские новости, и натыкаюсь на какую-то надпись: дорожный знак, картинка с текстом. В ютубе и телевизоре еще страшно любят хардсабы сделать хитрыми шрифтами и цветами. Выделить или скопировать никуда нельзя? Что ж это мне теперь, доставать из кармана телефон с Google Tranlsate и наводить на монитор?

Понятное дело, машинное зрение используется вовсю. Естественный отбор оставил две программы: kamui (платная, использует гугловый движок) и Yomininja (как бы бесплатная, но на самом деле, самые новые релизы с самыми вкусными фичами выходят на патреоне). 

Я использую Yomininja, считаю ее автора гением и с удовольствием заношу ему пожертвования. Программка кроссплатформенная.

Распознает текст, используя пять разных OCR-движков, самый лучший — это Google Cloud Vision. Уникальность ниндзи в том, что она делает оверлей поверх того, что вы сканируете и прямо там отрисовывает текст. Каким-то непостижимым образом, этот оверлей является браузерным окном и в нем поддерживаются браузерные плагины. А это значит что? Что мы прямо вовнутрь ниндзи можем запустить словари (Yomitan или 10ten), программки, обогащающие текст произношениями (JPDBreader) и произносилки того, что написано. 

Я использую йомининдзю везде: играя в японские игры, читая pdf-ки, смотря ютуб со вшитыми субтитрами. Точность распознавания потрясающая даже для самых заковыристых шрифтов, даже для надписей на зданиях или рукописного текста. 

Субтитровые утилиты

Закрома сообщества ломятся от ссылок на нативные видеоматериалы: аниме без дубляжа и английских сабов, ссылки на ютуб‑каналы стримеров, блогеров, японские новости и подкасты. Все это счастье становится гораздо более доступным для понимания когда у тебя есть японские субтитры.

Для аниме и сериалов есть база данных японских сабов Jimaku, а для youtube-видео и подкастов придется обходиться машинным распознаванием, где доминирует Whisper.  Делает субтитры в srt‑формате, их качество превосходит качество родных ютубовских автосабов в разы.

Сабы на японском добыли, а теперь же их надо как‑то показать синхронно с видео. Расширение ASBPlayer позволяет перетащить файл сабов прямо на видеоролик. После этого сабы становятся настоящим текстом, а в тексте можно подсматривать незнакомые слова Yomitan’ом.

Я использую ASBPlayer раз по десять в день

Я использую ASBPlayer раз по десять в день

А другой мужик написал такую же обертку по имени LangTurbo, но в вебе и для подкастов, платную, но весьма умеренно платную. Я попробовал, очень понравилось. Если подкаст сильно выше моего уровня, я пробегаюсь по паре выпусков с йомитаном и становится полегче. Еще круче приложение Aisten, но оно транскрибирует прямо на айфоне, а потому качество будет не таким высоким. Расскажу о нем в разделе мобильных аппок.

Майнинг

Триада «субтитры‑словарь‑анки» лежит в основе замечательной практики sentence mining (добыча фраз?). Толкового русского термина мы пока не придумали, поэтому все говорят просто майнинг. 90% времени ученика занято «погружением», то есть слушанием и чтением интересного контента на японском, а майнинг — это вспомогательная активность, позволяющая быстрее прокачать словарный запас.

Майнинг работает так. Смотрю я, значит, какой-нибудь фильм и слышу фразу, которую мне очень хочется запомнить. Может быть в этой фразе есть слово, которого я не знаю, зато все остальные слова и общий смысл понятны. Может быть, она просто круто звучит, и я точно увяжу ее с эмоциональным моментом фильма. Или я чувствую, что это полезный языковой штамп, до которого сам я никогда не додумаюсь, а все местные говорят именно так. 

Я навожу мышку на целевое слово, выбираю в Yomitan’овом словаре то значение, которое релевантно в контекте именно этой фразы, и нажимаю комбинацию клавиш. Происходит несколько вещей:

  • Yomitan отправляет Анки выделенное слово и просит анки создать новую карточку

  • В карточку автоматически улетает словарная информация о слове: как его произносить (с аудио и схемкой), какие у него значения, какие примеры употребления, насколько оно редкое. 

  • asbplayer делает скриншот и захватывает 10-15 секунд аудио из моего фильма, отправляет это в анки, заодно с куском субтитров, где слово было встречено. 

По итогу, я создал словарную карточку, которая содержит весь контекст слова. Каждый раз, когда анки будет предлагать мне это слово или фразу, я буду мысленно возвращаться к моменту, когда я смотрел фильм для собственного удовольствия. Лично мне это очень сильно помогает. Мало того, что контекст уточняет значение слова, он еще и превращает карточку в полноценное воспоминание об интересном моменте в моей жизни. Это настоящее слово, я встретил его в настоящем японском фильме! 

Про видеоигры

Играть в игры любят многие, поэтому много у кого возникла идея учить японский из видеоигр. К тому же, есть игры с огромным количеством диалогов и текстов, смысл которых был наполовину потерян при локализации на другие языки. Большинство визуальных новелл так вообще никогда не переводились на английский.

Ютубер GameGengo делает обзоры игр и дает оценку их доступности для изучающих японский согласно четко определенным критериям.

Например вот такие вещи для нас важны:

  • Если я играю в японскую игру на физической Nintendo Switch, неплохо бы иметь возможность проигрывать видеоврезки сколько моей душе угодно.

  • Если герои что‑то говорят, хорошо бы дублировать это субтитрами.

  • А над иероглифами хорошо бы писать, как они читаются.

  • Если игра озвучена, это добавит ей балллов в accessibility, ведь тогда я могу понять на слух о чем идет речь, если уж не смог прочесть.

И еще десяток критериев есть, по которым составляется рейтинг пригодности игры для обучения языку. Но вот предположим, что мне прям очень надо посмотреть какое‑то слово в игре (это случается в среднем раз в 5 секунд, если словарный запас меньше 10’000). Что ж это мне теперь, доставать из кармана телефон с Google Tranlsate и наводить на монитор? Что ж мне теперь, перерисовывать иероглифы в словарик на айфоне? Искать иероглифы по ключам в бумажном словаре? Так уж вышло, что даже в современных приставках нет никакой возможности прикрутить словарики и прочую прелесть.

Доступность игры можно повысить в разы, если получить к ней доступ на компьютере. Для этого можно, например, купить устройство видеозахвата. Консоль будет выдавать видеопоток в устройство видеозахвата, а оно будет направлять видеопоток в компьютере. А на компе у нас что? Правильно, Yomininja, которая распознает текст, и Yomitan, которым мы сможем посмотреть незнакомые слова. У меня даже майнинг из игр настроен.

Выглядит примерно так, стоит от 20 до 150 долларов. Нам подойдет любое.

Выглядит примерно так, стоит от 20 до 150 долларов. Нам подойдет любое.

Некоторые консоли умеют сами стримить в Твитч. Тоже рабочая опция, и железок дополнительных покупать не надо. Приставка стримит, а на компе открываем стрим и пользуемся Yomininja. Ха, можно вообще не играть, а посмотреть видео с тем, как играет кто-то, почему нет.

Некоторые игры запускаются на эмуляторах, например Nintendo Switch. В результате некоторого стечения обстоятельств ROM с игрой оказывается на вашем компе, вы загружаете его в Ryujinx или Yuzu, подключаете джойстик по блютусу к компу (сейчас еще говорят «джойстик»? «контроллер»?) и играете.

Код-инъекторы и текст-экстракторы 

Если игра запускается на компьютере, то ему, компьютеру, видно все, что происходит у игры в оперативной памяти. В частности, появляется возможность получить доступ к текстам. Специалисты по реверсингу с помощью Cheat Engine и черной магии находят адреса, по которым находится показываемый в этот момент на экране текст. Далее они внедряют свой код в исполняемый файл с игрой. Код хватает найденный текст в лапы и отправляет его на веб‑сокет или в буфер обмена. Это оправдано если Yomininja не справился с хитрыми шрифтами в игрушке.

Ну а на другой стороне есть маленькая веб‑приложенька, которая слушает вебсокет или слушает буфер обмена и печатает результат на страничку. Мы получили текст, теперь можно по нему проитись йомитаном. Если хочется оставить воспоминание о сказанной в игре фразе — мы используем программу аудиозахвата и скриншотилку и подшиваем все к себе в Anki для последующей зубрежки.

Textractor

Textractor

Классическая программа textractor используется для определенного подмножества игр, в основном для визуальных новелл. Как я понимаю, многие визуальные новеллы используют один и тот же движок, поэтому понятно, по какому адресу искать тексты.

Программа Agent требует написания скрипта для каждой игры. Она позволяет исполнить любой код в ответ на некоторое триггерное событие. Пока что все просто хватают тексты и кидают их вебсокет. Но мне пришло в голову, а почему бы не попробовать, например, доозвучивать недоозвученные игры с помощью голосовых AI‑клонов? Или сделать механизм push‑to‑continue для игр, в которых его нет, чтобы надо было нажать клавишу после каждой реплики героя. В общем, это все еще ждет своего исследователя.

Программы для отработки произношения и интонаций

В японском есть питч акцент (музыкальное ударение). Это не совсем тона, но немного похоже. В китайском, где тона настоящие, и имеют смыслоразличительную функцию, за неправильное «ма» сразу пропишут по зубам, а в японском питч‑акцент варьируется от региона к региону, поэтому можно проучиться пять лет и так и не узнать о его существовании. Преподают его тоже редко и мало. Тем не менее, ваш японский будет звучать странно, ведь то, как вы, иностранец, ставите ударения, не совпадает ни с каким регионом. От этого вас сложнее слушать.

Что еще интереснее, у человека, воспитанного на обычном ударении, как в английском или русском, есть слепота к питч акценту. Подобно тому как японцы не слышат разницы между «р» и «л», большинство европейцев не слышат разницу между словами, сказанными разным питчем. И воспроизвести часто не могут. Еще большее число людей подсознательно принимают питч за интонацию и не запоминают его как часть слова.

Для того, чтобы избавить народ от такой слепоты есть инструменты‑тренажеры. На kotu.io тебе дают пары слов, отличающихся своим мелодическим рисунком, питчем, а тебе надо понять, какое слово было произнесено. Люди вначале болтаются в районе 50% процентов угадываний, вне зависимости от того, сколько они учили японский. Затем стабилизируются на 80% и через пару недель развивают слух до 100% и научаются слышать тона в живой речи.

А на мобилку есть приложение Aomi Japanese, рисующее спектрографы, показывающие, как поднимается и опускается интотация. Спектрограф — это кривая, полученная аппроксимацией спектрограмм по основным гармоникам голоса. Очень наглядно отражает, где голос возвышается, а где понижается. Каждый день они дают фразочку и соотстветсвующую ей кривульку интонации, а твоя задача — повторить это дело в микрофон, стараясь точно попасть в к эту кривульку. Послушайте в видосике как это выглядит:

Настоящие оби‑ваны, понятно дело, анализируют интонацию в Praat или смотрят на спектрограммы в Audacity, но это уже следующий уровень упоротости. Я там только спектрограмму использовал для питча:

Инструменты для проверки того, как произносится и в каком контексте употребляется слово

Синонимов много, а потому часто надо понять, как употребляется то или иное слово. Озабоченных произношением интересует, как именно это слово произносится. Для этого есть поисковики Youglish и Filmot, а для аниме‑источников — Immersion Kit. Парни просканировали весь ютуб и теперь позволяют искать именно тот момент, где сказано то или иное слово. 

Для печатного слова есть поиск по корпусу. Раньше я для таких целeй использовал Reverso context, но, по-моему, там начали слишком много автопереводных вещей включать, и я реверсу разлюбил. 

Комбайны все-в-одном

Ясное дело, появились и платные инструменты, которые начали мериться экосистемами.

Мигаку выглядит очень приятно, дизайнер у ребят свой

Мигаку выглядит очень приятно, дизайнер у ребят свой

Migaku вырос из нескольких расширений для анки в здоровенный жирный продукт. Заходишь на любой сайт с японским, нажимаешь кнопочку — он подсвечивает все слова как «уже выученные» и «совсем новые», параллельно позволяя смотреть их всплывающим словарем. Аналог анки у них есть свой, хотя настоящую анки они все еще поддерживают. Ну и еще с десяток интересных инструментов. Я очень надеюсь, что они станут этаким эпплом от погружения. Ничего особенно революционного не делают, но сосредотачиваются на удобстве нескольких юзкейсков. Воспроизводится комбинацией из jpdbreader+anki+yomitan+asbplayer+kotu. Новичкам, не желающим ковыряться в настройках инструментов я бы советовал именно Мигаку. 

Похожий комбайн, но с упором на видео есть у компании Language Reactor. В immersion-тусовках он не слишком популярен, зато про него пишут в нью-йорк таймс и даже в академических журналах. Для новичка отлично, настраивать надо еще меньше чем Мигаку, а результат получается нормальный, сравнимый с хиленьким йомитаном+asbplayer. 

Другой инструмент-комбайн — это lingq от крайне уважаемого в полиглотских кругах Стива Кауфманна. Он в значительной степени ориентирован на чтение и импорт кусочков контента к себе в базу знаний. Создавался специально для нужд товарища Кауфманна поэтому многие вещи выполнены довольно причудливо. Например, словом стив считает любую словоформу. «Делать‑делал‑делаю» — опа, вот я и выучил три слова. Мне кажется странным, но кто я такой, я не владею тридцатью языками, а Кауфманн — очень даже. Функциональность подписочного lingq можно вопроизвести до некоторой степени программой lute.

На мобилку

Иногда когда у меня спрашивают совета молодые ребята, я с удивлением обнаруживаю, что у них нет никакого компьютера, только смартфон. Сразу скажу, на смартфон инструментов существует в три раза меньше чем на комп, а на конкретно на айфон — еще в три раза меньше.

На Андрюшу есть вылизанная до блеска программа Jidoujisho. Позволяет читать, смотреть скачанные видосики со скачанными сабами, да еще и майнить прямо в андроидовскую Анки (AnkiDroid). Kiwi browser позволяет ставить на него расширения, а значит мы сразу поставим туда Yomitan. Словарик Akebi хвалят как словарь «открыл-поммотрел».

Распознавание символов, OCR, на андроиде тоже есть, приложение Kaki. Вот тут товарищ показывает сравнение того, сколько усилий требуется для чтения манги без и с Kaki: 

Касательно манги, более продуктивным мне кажется способ предварительной обработки. Есть программа Mokuro, которая кушает манговые картинки и делает из них веб-странички с настоящим текстом. Ее OCR движок специально заточен под особенности именно манги, поэтому точность выходит хорошая. Веб-странички смотрим в обычном мобильном браузере со всплывающим словарем.

Вот так работает Mokuro, можно даже зумать.

Вот так работает Mokuro, можно даже зумать.

Для айфона ставят всплывающий словарик 10ten, как плагин к сафари. Это, конечно, не такая дикая мощь как в йомитане, но зато выглядит в разы приличнее, и не требует настройки. Альтернатива — специально сделанный для погружения в японский браузер Yomi Browser+Yomiwa, он может еще и чтения для иероглифов в тексте добавлять. 

Aisten - пока что наиболее многообещающее приложение для подкастов

Aisten — пока что наиболее многообещающее приложение для подкастов

Потрясающий айфоновый плеер подкастов Aisten генерирует субтитры и позволяет смотреть слова. А еще отслеживает, сколько подкастов ты сегодня наслушал, проясняет грамматику через чатгпт и многое другое. Транскрипцию подкастов делает на клиентской стороне, поэтому жрет батарею в момент.

Работа с субтитрами организована замечательно и единственное, что плееруне хватает — это hands-free режима, в котором я мог бы просто переспрашивать у плеера непонятные моменты голосом, заставляеть его делать саммари и прочее.

От скуки я описал подкаст-плеер своей мечты вот в этом гуглдоке и надеюсь однажды все это запрограммировать и сказочно обогатиться. По сути, получился aisten с говорилкой, который не тормозит и сделан с большим вниманием к деталям. Стучитесь в личку если хотите присоединиться.

В реальной жизни

Когда шарахаешься по Японии, постоянно встречаються какие‑то надписи, подчас набранные нестандартными шрифтами. Что ж это мне теперь, доставать из кармана телефон с Google Tranlsate и наводить на все вокруг? В общем‑то да, именно это и нужно делать.

Еще широко используются устройства‑переводчики. Есть такие, в которые надо говорить (все это заменяется на ChatGPT), и есть Casio‑наладонники.

Что еще не сделано

Не сделан идеальный плеер для подкастов, оптимизированный под нужды изучения языков, про это писал выше.

Так себе реализованы инструменты отмечания времени. Сколько часов я сегодня слушал японского? А сколько читал? Я веду табличку в гугл‑формах с десятком других ребят, мы мотивируем друг друга красивыми графичками. Только вот заполняется это все от руки, а хотелось бы, чтобы какая‑то штука вроде stayfocused или activitywatch сама экспортировала учебную активность куда надо.

Довольно плохо обстоит дело с совместной работой над анки‑колодами. Инструмент Crowdanki уж очень в лоб сделан и требует знаний гита. Аналогично — с инструментами для совместной работы над словарями, как на этапе оцифровки, так и на этапе, когда словарь был преобразован в йомитановый формат.

Очень бы хотелось заиметь инструмент для sentence mining’a в VR и в реальной жизни. Это явно требует какого-то обдумывания и за основу надо брать заметочные аппки.

Ну… и как‑то все, пробелов настолько мало, что неудобно даже о них говорить.

Заключение

Короче говоря, завалил я вас ссылками. А ведь это я ограничился только инструментами для погружения. Не трогал зубрилки кандзей, чисел, не трогал обучающие игры, физические переводчики от касио, совершенно не касался собственно контента. Про погружательную методику на русском сказано тоже не так уж и много. Пишите, про что было бы интересно еще почитать, постараюсь написать.

Если вы подумываете о том, чтобы начать учить японский, то из англоязычных сообществ есть The Moe Way и Refold, оба в дискорде. В русскоязычном сегменте есть небольшая группа NeonGooRoo, переводящая на русский многочисленные английские мануалы, колоды и инструменты.

Ну и мой канал не обходите вниманием, стараюсь писать по делу раз в три‑пять дней.


ссылка на оригинал статьи https://habr.com/ru/articles/861622/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *