- PVSM.RU - https://www.pvsm.ru -

Месяц с Onyx Boox Note Pro

Месяц с Onyx Boox Note Pro - 1

Хотя устройства с E-ink, позволяющие делать рукописные заметки и рисунки, существуют довольно давно, приемлемая задержка между касанием пера и появлением следа от него была достигнута сравнительно недавно (из известных это Sony DPT-S1/RP1 и reMarkable). Поскольку у меня, начиная с 1990-х, было немало различных устройств — как с перьевым вводом (Palm, Newton MP2000, HP TC1100, Raon Everun, Asus EA800, Boogie Board, так и просто читалок на E-ink (Kindle Paperwhite, PocketBook 740, Good e-Reader 6.8), то есть представление о плюсах и минусах различных решений и сложился некий личный образ «идеального» устройства.

В моём представлении у него должны быть E-Ink дисплей с подсветкой, магниторезонансный дигитайзер с распознаванием силы нажатий (обычно называемый «wacom»), неощутимая при рисовании задержка, 10" (или более) E-Ink экран, достаточный выбор сторонних приложений.

До последнего времени, из-за несовершенства технологии E-ink (медленное обновление и сложности с подсветкой больших экранов), всё это одновременно было нереализуемо и недоступно даже за большие деньги.

Но, как я уже сказал, сравнительно недавно эти технические проблемы были решены. К тому же, появились драйвера E-ink экранов для более-менее свежих версий Android — из-за их отсутствия E-ink читалки, вплоть до недавнего времени, имели Android не выше 4-й версии.

Первым устройством, как минимум формально отвечающим моим требованиям и при этом продающимся в России (опыт со сдохшим через неделю купленным в США Good e-Reader повторять не хотелось) — стал Onyx Boox Note Pro.

На Хабре уже был рекламный обзор [1] этого устройства, поэтому я не буду подробно его описывать — акцентирую внимание на том, что мне самому кажется важным и что полезно будет знать людям, принимающим решение о покупке.

Говоря по-простому, Onyx Boox Note Pro — это Android 6 планшет с 10" e-ink экраном с подсветкой и wacom пером. Технически: 1872x1404x16, Cortex-A17 1.6GHz Quad-core, 4GB RAM, 64GB Flash, Wi-Fi/BT 4.1, USB Type-C, audio/mic, 390г., кнопки Back и Power, Android 6.

Функциональность Android в нём несколько урезана (в некоторых случаях обратимо, в некоторых — нет) — полагаю для того, чтобы его можно было позиционировать как электронную книгу. С маркетинговой точки зрения это разумно, поскольку продавать его как планшет (коим он является), значило бы получить негативную реакцию по поводу «тормозного чёрно-белого экрана», который, в то же время для пользователей E-ink книг вполне привычен. С другой стороны, стоимость устройства такова (полагаю, главным образом из-за большого E-ink и wacom), что дополнительная функциональность, которую даёт Android, была необходима, чтобы оправдать цену. Однако, использование Android подразумевает непродолжительное время работы и, к тому же, он совсем не заточен на E-ink с его медленным обновлением. В результате, мы имеем массу различных компромиссов.

Прошивки

Глобально существует две распространённых версии прошивки — старая 1.9.1. и текущая 2.1.2. (вроде 2.1.2 международная совсем недавно появилась). В России устройства пока продают с 1.9.1., поскольку русифицированная 2.1.2 до сих пор (!) в бета версии, а международная 2.1.2 не устанавливается на устройства продаваемые в России.

Я около недели просидел на 1.9.1 и могу сказать, что она ужасна. Из отечественной поддержки Onyx мне прислали русскую 2.1.2 beta, поэтому в этой статье разговор пойдёт о ней, как текущей актуальной.

Помимо русифицированных меню (мне не нужно было, так что язык я поставил английский) в ней есть ещё отличия от международной 2.1.2. Например, убрана иконка регулировки громкости. Т.е. штатно звук никак нельзя регулировать — надо ставить какое-нибудь стороннее приложение — например, Volume Control [2].

Убрано TTS (текст в речь). Т.е. на уровне ОС он есть (в скрытых настройках есть Pico TTS) и можно поставить Google TTS, но в NeoReader и в словаре отсутствуют соответствующие кнопки, поэтому толку немного.

Так же отсутствует в панели уведомлений иконка «palm rest», отключающая тачскрин.
К сожалению поддержка [3] особо не даёт информации (прислали файл прошивки и на отосланные баг-репорты говорят «спасибо»), так что можно лишь гадать, обусловлено ли всё это бета статусом прошивки или некоторые функции выпилены из русской версии намеренно.

Тем не менее, большинство проблем, о которых я буду говорить ниже — общие для русской и международной прошивок 2.1.2 (это можно увидеть по официальному форуму поддержки [4]).

Отдельно замечу что, насколько я понял, на некоторых других устройствах Onyx (Nova Pro, возможно Max) прошивки если не идентичные, то очень похожие. Во всяком случае, некоторые баги, судя по форуму, там просто одинаковые. Особенно это касается Nova Pro. На 4pda [5] один человек описал хитрые танцы с бубном, позволяющие залить на русскую Nova Pro международную прошивку. По идее, тоже самое можно проделать и с Note Pro, хотя быть первым в таких экспериментах не очень хочется.

Скорость обновления экрана

Хотя технологии продвинулись вперёд, E-ink — по-прежнему E-ink. И да — он, конечно, тормозит. В данном случае проблема решена введением дополнительного режима (названного «A2»), в котором слегка падает контрастность и остаются незначительные следы от предыдущего изображения, но скорость обновления вырастает очень ощутимо. Говоря конкретнее — в этом режиме можно совершенно спокойно скроллить списки, текст или страницу в браузере и это не напрягает. Даже Youtube можно смотреть, хотя FPS так себе — разве что для лекций. Как задумчиво сказал приятель — «первый раз вижу видео в газете».

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

Есть ряд более-менее работающих настроек — как в штатных приложениях (NeoReader, Browser), так и для любых (Optimization по долгому тапу на иконке), которые позволяют индивидуально указать, использовать ли этот режим для данного приложения и всякие способы компенсации недостатков E-Ink вообще и режима A2 в частности: повышенная жирность шрифтов, время через которое экран принудительно обновляется и пр.

Подключение внешних устройств

В устройстве есть Bluetooth, поэтому в теории к нему можно подключать BT клавиатуры, наушники, гарнитуры и пр. На практике всё не так радужно. Так например, из двух клавиатур мне удалось подцепить одну (правда, вторая совсем древняя). А вот гарнитуру Plantronics Explorer 55 не удалось вообще — в списке показывает, но соединится не может.

Всё ещё усугубляется тем, что Note Pro при поиске BT устройств редко показывает их названия — чаще всего только адреса. Соответственно, даже если представить, что у вас есть возможность проверить конкретные наушники перед покупкой, в людном месте это сделать просто не удастся — вы не сможете определить, к какому из пары десятков устройств в списке коннектиться. При этом замечу, что с тут же рядом лежащим Samsung Galaxy S7 таких проблем нет — во-первых, он показывает имена устройств, которые видит, во-вторых — та же гарнитура к нему замечательно коннектится и работает.

Хотя в устройстве есть USB Type-C, OTG там нет. Поэтому подключить через USB внешние устройства, флэшки и прочее — не удастся (в недавно вышедшей «Note 2» OTG поддерживается).
Можно подключить наушники через переходник 3.5-USB Type-C. Я пробовал — это работает.
Если устройство подключить к PC USB кабелем, оно видится по протоколу MTP. Хорошо это или плохо — вопрос вкуса, но работает.

Урезанность Android

Чтобы сделать планшет похожим на книгу, над Android слегка надругались. Вырезали большую часть стандартных настроек (в них можно попасть, лишь установив стороннее приложение типа Simple Settings [6]), заменили стандартный launcher на свой, модифицировали верхнюю панель уведомлений.

Популярные приложения, в общем и целом, работают. Работают свежие Chrome и Firefox, хотя и заметно тормознее, чем стандартный Browser.

Отсутствует поворот экрана (точнее, он есть только в NeoReader). Можно поставить стороннее приложение [7], но тогда штатные приложения типа launcher или Note могут работать некорректно — их почему-то не рассчитывали на landscape (как минимум, не всегда будут влезать меню).

Нюанс, который важно понимать: купившие читалку с пером на Android, часто скачивают любимое приложение для рисования (какой-нибудь One Note) и внезапно обнаруживают что, в отличии от встроенной рисовалки, в этих приложениях перо неимоверно тормозит. Тут всё так же — рисовать в сторонних рисовалках не выйдет.

Первоначально я думал, что встроенная рисовалка просто использует NDK, соответственно всё, что написано на Java — тормозит. Однако, вот этот [8] эксперимент показывает что, возможно, всё куда проще и сторонним рисовалкам нужно всего лишь выполнять определённые требования (которые они, конечно, не выполняют).

Так или иначе, знайте — скорее всего, рисовать вы сможете пока только во встроенной Note, либо во встроенной читалке NeoReader (делать там аннотации пером). И вот тут всплывают такие странности из внутреннего мира разработчиков ПО Onyx, какие предсказать невозможно в принципе — можно только столкнуться:

1.Приложения Note и NeoReader скрыты. Т.е. их видит только стандартный launcher, да и тот показывает их только слева в своей панели. В списке приложений ни того ни другого нет. В списке запущенных задач их тоже нет. В сторонних приложениях, которые позволяют запускать другие приложения — тоже нет. Даже в специальном предустановленном NavigationBall. Если поставить другой launcher, то в общем списке приложений вы их тоже не найдёте (что автоматически означает, что другой launcher ставить нельзя — не сможете никак запустить Note и NeoReader).

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

Вам нужно будет попасть сначала в home, запустить Note, потом выйти из Note, перейти опять в браузер (при этом, вероятнее всего, вы окажетесь на другом месте страницы в браузере, не в самой заметке, а в их списке и т.д). Т.е. это бессмысленно и резко снижает ценность устройства.

Судя по Интернету, народ пытался решить проблему но, видимо, не смог. Я не нашёл решения. Что любопытно, в старой прошивке 1.9.1 Note и NeoReader в некоторых ситуациях, некоторыми приложениями, ещё видны. Иногда.

2.В NeoReader сломан pinch to zoom (увеличение двумя пальцами). Т.е. при том, что он замечательно показывает pdf/djvu, вы не можете быстро увеличить, подвигать и потом уменьшить страницу. Сначала я думал, что это невозможно в принципе, но потом вычитал на форуме, что движения пальцами должны быть очень размашистыми и тогда, при некотором терпении, можно добиться эффекта. Но он реально непредсказуем и перемещаться по увеличенному изображению у меня не получается вообще. Повторюсь — это не проблема беты. Об том писали и сидящие на зарубежной прошивке.

Вы, конечно, можете поставить другое приложение и в нём всё будет увеличиваться. Но в стороннем приложении вы не сможете делать рукописные аннотации.

Ситуация особенно обидна в контексте того, что при нормально функционирующем pinch to zoom можно было бы использовать NeoReader для рисования чего большего по размеру, чем экран (Note-то такого не позволяет).

С заметками в NeoReader, впрочем, тоже не всё просто. Да, их можно делать и это реально удобно. Даже есть два варианта — вы можете писать непосредственно на страницах, а можете переключиться в режим, когда с одной стороны экрана будет страница документа, а с другой пустая страница для заметок.

Однако, если посмотреть сохранённый pdf в Acrobat Reader на PC, становится грустно. Красивые линии превращаются в какую-то жесть, которую конечно различить при некотором старании можно, но только если написанное не слишком мелко (на картинке скриншот с устройства и скриншот с Acrobat Reader/Windows):

Месяц с Onyx Boox Note Pro - 2

Погуглив, я довольно быстро наткнулся на описание этой проблемы (которая тоже не является уникальной — в зарубежной прошивке всё тоже самое).

Точнее, проблемы на самом деле там целых две.

Во-первых (и это распространяется как на экспортированное из NeoReader, так и на экспортированное из Note) — все линии при ближайшем рассмотрении выглядят волнистыми. Похоже, это какая-то проблема с обработкой данных с дигитайзера.

Во-вторых, конкретно NeoReader неадекватно экспортирует кривые переменной ширины (wacom же чувствителен к нажатию и это обычный режим рисования). Соответственно, рекомендуется делать аннотации в NeoReader только в режиме постоянной ширины линии (не перо, а карандаш). Не так красиво, но зато потом можно разобрать написанное.

Ну и вишенка на торте — похоже, NeoReader криво сохраняет pdf. Скажем Acrobat Reader-у это всё равно, но некоторым программам для обработки pdf — нет.

Один человек подробно разбирался в перечисленных проблемах, поскольку писал утилиты, выполняющие коррекцию кривых. При некоторых условиях ими можно воспользоваться. Подробнее см. здесь [9] и здесь [10].

Рукописные заметки

Как я уже упомянул, для рукописных заметок имеется встроенное приложение Note. В общем и целом оно очень неплохое — рисунки векторные, можно рисовать, стирать, отмечать области, перемещать их, поворачивать, копировать, масштабировать, вводить текст, даже есть распознавание рукописного текста (русского и английского).

Замечу, что при рисовании линия появляется сразу. Т.е. никакого ощущения запаздывания нет. Ощущение не как от письма по бумаге, но и не как по стеклу. Нечто среднее.

Есть набор шаблонов (в линейку, в клетку и прочее), которые показываются фоном. Можно загружать свои [11]. Стоит заметить однако что, в отличии от рисунков, шаблоны растровые (добавляются png).

Теперь о недостатках Note:

  1. Страница соответствует размеру экрана и никак иначе. Вы не можете нарисовать большую схему, скроллить её туда-сюда, не можете менять масштаб.
  2. Отсутствует импорт. Если у вас уже есть свои заметки или вы просто хотите вставить рисунок — это никак нельзя сделать
  3. Запустив Note вы не можете никуда из неё переключиться — только выйти (выше упоминал)
  4. Есть трудности с использованием написанного/нарисованного. Copy/paste только локальный — внутри Note. Т.е. скопированное из/в другое приложение не перенести.

    Даже текст из другого приложения в текстовое поле Note не вставить. Можно извращаться — делать paste в заметку появляющуюся при нажатии AI, а потом оттуда в поле текста.

    Нормального Share как в Android'e — нет. Есть только сохранение в pdf или png файл, либо передача их в облако с рисованием на экране QR кода. Т.е. тривиальная ситуация с отсылкой нарисованного в почту или messenger превращается в какую-то спецоперацию.

  5. Про некачественный экспорт pdf уже упоминал. Слева на картинке — результат экспорта в pdf, справа — он же, но пропущенный через вышеупомянутую утилиту:

    Месяц с Onyx Boox Note Pro - 3

Palm rest

Кто хоть раз пробовал что-то писать на обычных планшетах с ёмкостным экраном знают, что делать это продолжительное время, держа руку на весу — сложно. А положить её на экран нельзя, так как эти касания тоже будут обрабатываться.

Соответственно, стандартный вопрос про планшет с пером — можно ли положить руку на экран? (palm rest). Странно, но в подавляющем большинстве обзоров подобных устройств это не демонстрируется — обозревающие обычно специально держат руку на весу, очевидно чтобы не заслонять зрителю экран. А зря.

В случае с Note Pro дело обстоит следующим образом:

В приложении Note всё нормально — palm rest есть. Т.е. при поднесении пера к экрану касания его рукой перестают обрабатываться. Дополнительно там можно отключить обработку данных с ёмкостного слоя принудительно.

В NeoReader это как бы тоже есть, но очень условно. Советую сразу выбрать в настройках «touch mode 6», при котором активные для касания пальцами зоны (листание страниц, меню) остаются только вверху, а низ принудительно отключается. Формально palm rest там тоже есть но, понадеявшись на него, я потерял час работы — из-за случайного движения рукой все рукописные аннотации на всех страницах почему-то сместились относительно документа, без возможности восстановить их положение.

В большинстве прочих приложений работая с пером руку положить не получится — экран будет реагировать.

Интересно, что в зарубежной прошивке в верхней панели была специальная иконка — можно было явным образом включать и выключать palm rest. В русской её убрали (возможно, это касается именно бета версии прошивки, хотя странно).

О чтении книг

Что-то я увлёкся деталями и рисованием забыв, что вообще-то Note Pro — якобы электронная книга. Тут просто особо нечего говорить: в плане чтения книг, за исключением уже перечисленных проблем, с NeoReader всё хорошо, на мой взгляд. Немного странный выбор шрифтов, но пишут что их можно добавлять [12]. Так же можно добавлять словари [13], хотя у меня с этим возникали сложности.

Использовать другие программы для чтения у меня необходимости пока не возникало (кроме ситуаций, когда надо увеличивать/уменьшать pdf страницу и перемещаться по ней).

По поводу E-Ink vs IPS/OLED. Тема, чувствую, вечная — спорить лень, скажу чисто за себя. Сравнивая E-Ink и любые встреченные мной не E-Ink, для чтения мой выбор в пользу E-Ink совершенно однозначен. Пусть он тормозит и чёрно-белый, но глаза устают несопоставимо меньше. Это проверено годами, на разных устройствах, в разных условиях. В том числе речь идёт и о E-Ink со включённой подсветкой. Тому есть какие-то объективные причины но, к сожалению, до сих пор все статьи, которые я видел на эту тему — были явно далеки от сути и указывали лишь на какие-то второстепенные причины. Да, фотоны одни и те же. Не должно быть разницы. Но вот есть она. Один знакомый развил теорию про поляризованный свет. Что типа есть разница в поляризации. Ну, не знаю — глазам-то какая разница?

Клавиатура

Есть предустановленная встроенная экранная клавиатура, заточенная под E-Ink (это довольно существенно — к примеру, популярная GBoard будет неприятно тормозить).

Кроме того, встроенная клавиатура умеет распознавание рукописного текста, что в принципе полезно.

Но есть две проблемы. Во-первых, на встроенной клавиатуре по каким-то непонятным причинам shift заменён на caps lock (кнопки shift нет вообще). Во-вторых, если набираешь английский текст и надо ввести цифру или знак, то при возврате обратно на алфавит — всегда попадаешь на национальную (русскую) раскладку независимо от того, какая была перед вводом цифр. Это не баг бета версии — я читал на форуме аналогичную жалобу китайца.

Внешнюю bluetooth клавиатуру (Defender) мне подключить удалось — работает, в том числе и переключение языков. Если мешает всплывающая экранная клавиатура, можно воспользоваться этим решением [14].

Скриншоты

Довольно важный вопрос, так как в ряде случаев позволяет как-то компенсировать отсутствующую функциональность (copy/paste из Note, к примеру). Глобальной возможности сделать скриншот экрана — нет. Есть конкретно в NeoReader (коснуться одновременно диагонально противоположных углов экрана).

Можно поставить стороннее приложение [15], хотя это неудобно и c Note толком всё равно не будет работать.

Аппаратные кнопки

Их две — питание и Back. Не знаю, сколько они на этом сэкономили, но жизнь усложнили существенно.

По умолчанию кнопка Back по короткому тапу выполняет Back, а по длинному — включает и выключает подсветку. Штатно изменить это поведение нельзя.

Я пытался использовать сторонние приложения. В частности, очень хотелось повесить LastApp на двойное нажатие или на длинное, вместо подсветки. Однако, стабильности мне достичь не удалось. Можете сами попробовать [16] (иконку не скрывать! если заглючит, нажать Back 10 раз).

Синхронизация, перенос файлов, бэкапы

Простейший способ — через USB по MTP. В Windows Explorer, соответственно, можно видеть память устройства как «диск» и копировать что нужно туда-сюда. В FAR нужен плагин PortaDev, в Linux — не знаю, там какие-то свои взаимоотношения с MTP.

Как уже говорил — можно отправить текущую заметку Note в облако Onyx с генерацией QR-кода со ссылкой.

Заметки из Note также могут автоматически преобразовываться в pdf и отправляться в Dropbox, Evernote и Youdao.

Кстати, при привязке Dropbox аккаунта есть известный глюк — если страница Dropbox открывается во встроенном Browser, привязка с большой вероятностью не пройдёт (кроме случая авторизации через гугл). Решается установкой Chrome и его выбором при привязке.

Дополнительно к этому можно настроить бэкап всех заметок Note в облако самого Onyx, в виде архива sqlite базы.

Заметки сделанные в NeoReader не синхронизируются — записываются внутрь самого pdf, либо в виде отдельного файла.

Чтобы решить вопрос с синхронизацией файлов глобально, нужно использовать сторонние приложения типа foldersync [17] или drivesync [18].

Более или менее стабильно они работают только если синхронизация осуществляется по расписанию. Синхронизацию по появлению новых файлов мне настроить не удалось (сами авторы подобных приложений предупреждают, что это работает нестабильно — вероятно проблема Android).

Разработка

Если не нужна быстрая работа с пером и дигитайзером, то Android он и есть Android. Единственно, надо учитывать особенности E-Ink, поэтому фон, по-возможности, должен быть везде белый, а шрифты не должны быть тонкие.

Если же в приложении должно что-то рисоваться пером, у Onyx есть SDK с примерами [19].

USB debug включается, adb через него работает, так что проблем, по идее, быть не должно.

Резюме

Технически устройство очень достойное. Лёгкое, тонкое, хороший большой и достаточно быстрый E-Ink экран с подсветкой, различающее степени нажатия wacom перо, динамик и микрофон, bluetooth. Вполне приличная производительность. Нормальная (для Android) продолжительность работы от аккумулятора.

На контрасте с этим — совершенно сырой софт, независимо от версий прошивок и их локализации. С течением времени что-то улучшается (по сравнению со старой 1.9.1), но общий подход к разработке и тестированию явно остаётся прежним. Почитав форум, я вижу, что некоторые, даже простые для решения проблемы — не решаются годами.

Всё это тем более необъяснимо при наличии на устройстве Android, под который есть опытные разработчики, общепринятые стандарты и т.д. И ссылаться здесь на особенности E-Ink никак не получится — большая часть перечисленных выше проблем с ним не связана.

Можно было бы сказать — ну так купи что-нибудь другое. Remarkable там или Sony DPT… Увы, несмотря на все проблемы, другие известные мне варианты не тянут в плане универсальности (там везде велосипеды, под которые приложения будет разрабатывать только сам производитель, если вообще будет).

Всё же, заплатив столько денег, хочется получить не современную версию детского «волшебного экрана», а полноценный планшет, на котором можно не просто делать рисунки, но делать их в контексте работы и использовать в различных приложениях, различными способами.

Автор: Пётр Соболев

Источник [20]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/gadzhety/339075

Ссылки в тексте:

[1] рекламный обзор: https://habr.com/ru/company/maccentre/blog/462765/

[2] Volume Control: https://play.google.com/store/apps/details?id=com.punksta.apps.volumecontrol

[3] поддержка: http://onyx-boox.ru/support/boox_notepro

[4] форуму поддержки: http://bbs.onyx-international.com/c/note-series

[5] 4pda: https://4pda.ru/forum/index.php?showtopic=943268

[6] Simple Settings: https://play.google.com/store/apps/details?id=simple.settings

[7] стороннее приложение: https://play.google.com/store/apps/details?id=org.crape.rotationcontrol

[8] вот этот: http://bbs.onyx-international.com/t/feature-request-pipe-dream-no-pen-lag-for-3rd-party-note-apps/1942/10

[9] здесь: http://bbs.onyx-international.com/t/stylus-writing-on-boox-note/1266/41

[10] здесь: https://github.com/xdever/OnyxNoteRenderer

[11] загружать свои: https://medium.com/@OnyxBoox/the-way-to-make-note-templates-yourself-80a7b15b1aae

[12] можно добавлять: https://medium.com/@OnyxBoox/the-way-to-add-fonts-to-your-boox-dbf1ac411e92

[13] добавлять словари: https://medium.com/@OnyxBoox/the-way-to-add-dictionaries-to-your-boox-d226b4f0316

[14] этим решением: https://play.google.com/store/apps/details?id=com.wparam.nullkeyboard

[15] стороннее приложение: https://play.google.com/store/apps/details?id=com.mdiwebma.screenshot

[16] попробовать: https://play.google.com/store/apps/details?id=com.irishin.buttonsremapper

[17] foldersync: https://play.google.com/store/apps/details?id=dk.tacit.android.foldersync.lite

[18] drivesync: https://play.google.com/store/apps/details?id=com.ttxapps.drivesync

[19] SDK с примерами: https://github.com/onyx-intl/OnyxAndroidDemo

[20] Источник: https://habr.com/ru/post/478952/?utm_source=habrahabr&utm_medium=rss&utm_campaign=478952