Friday, August 23, 2019

Дилемма с библиотеками react-native

Типичная проблема


В одном мобильном приложении используется компонент confirmation-code-input, в котором есть ошибки.

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

Так как такая проблема возникла не только в моем проекте, другие программисты придумали решение и даже создали pull request с решением в исходный репозиторий. Предложили даже несколько вариантов решения:
  1. Get Code text on every update of Field
  2. onChangeCode callback and defaultCode props added. Readme updated.
  3. feature: getCurrentCode called when change focus and return code

Варианты решения


Первый вариант


Самый простой и самый долгий. Необходимо дождаться, пока библиотека будет обновлена. Можно связаться с разработчиком Это хорошо подходит для бессрочных проектов, но нам не подходит. 

Что бы ускорить разработку, я создал issue, в котором попросил выбрать уже одно из предложенных решений.

Второй вариант


Изменить код библиотеки в папке node_modules. В данном случае необходимо внести изменения в код библиотеки компонента уже посте установки.

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

Этот вариант приведет к тому, что необходимо будет постоянно тратить время на рутинные действия. Поэтому он не подходит.

Третий вариант


Необходимо сделать fork исходников в свой аккаунт github, внести изменения и подключить свою библиотеку в файл package.json

Этот вариант подходит. В будущем придется самостоятельно обновлять fork и заниматься поддержкой исходников библиотеки. Этот вариант приемлем, но хочется поискать еще проще.

Четвертый вариант


Это самый быстрый способ! Подключить исходники того программиста, который уже внес изменения и направил pull request. 

Пример таких изменений и как подключать библиотеку можно посмотреть тут

Проблемы могут возникнуть тогда, когда программист удалит свои исходники или внесет некоторые изменения. Поэтому этот вариант оставляет определенные риски.

Пятый вариант 


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


Реализация


Сделать fork. Пример:

Обновить инструкцию:




Удалить текущую библиотеку:

npm uninstall react-native-confirmation-code-input

Установить библиотеку из своего репозитория:

npm install git+https://github.com/vadimcpp/react-native-confirmation-code-input.git

Изменения в файле package.json будут выглядеть так:



Проверить папку с библиотеками. Зайти в папку node_modules и убедиться что была установлена именно ваша библиотека:



Далее внести исправления в главный проект, которые уже не важны для данного поста.



Monday, August 12, 2019

Отладка бота

Вступление

В прошлом году я написал статью о том, как создать своего первого бота в Telegram. Статья представляет собой инструкцию, как запустить бота на сервере Heroku. И все.

В этом посте информация о том, как запустить бота на своем компьютере в отладочном режиме.

Пошаговая инструкция

В коде проекта есть файл .env.default.  Сделать копию файла и дать копии название .env.

В коде есть такая строка:
BOT_ACCESS_TOKEN={insert telegram bot API Token here}

Необходимо вставить токен бота вместо фигурных скобок.

Наконец, два действия в консольном окне.
Установить зависимости:
npm install

И запустить локальный сервер:
npm run dev

Пример:


Sunday, August 11, 2019

Телеграм бот для чата @events4friends

Задача

В закрепленном сообщении нашего чата всегда анонс мероприятий. Выглядит это так:



В сообщении есть список мероприятий и есть ссылка на сайт. Пользователи чата попросили для удобства добавить ссылки для всех событий.

Тогда на сайте была реализована кнопка "Скопировать все", которая копирует данные о мероприятиях в таком формате:



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

Исследование


Перед тем как создавать какой-либо новый программный продукт, есть смысл провести исследование и выяснить: существует ли уже готовое решение?

На официальной странице мессенджера Telegram есть пример бота, который мне нужен: Markdown Bot. При его тестировании оказалось, что от обрезает часть текста:



Это классический пример того, как стандартное решение на работает.

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


Создание бота


Около года назад я написал инструкцию, как создать "Hello, world!!!" бота. Вот и сейчас я создал нового бота по своей же инструкции.

Я изменил приветственное сообщение и внес необходимые изменения: бот в отвечает пользователю его же сообщением только в разметке Markdown. Пример:



В конце работы я опубликовал бота, загрузил исходный код на гитхаб, нарисовал логотип для бота и дописал этот пост.

Дополнительно


Исходники бота: https://github.com/VadimCpp/events4friendsbot
Бот: https://t.me/events4friendsbot
Чат: https://t.me/events4friends
Сайт: https://events4friends.ru/





Saturday, August 10, 2019

Будущее ИТ - прогноз на 10 лет


Вступление

Мы живем в информационную эру. Цифровая революция подходит к концу. Этот пост содержит прогноз про мир информационных технологии на 10 лет. 

Важно! Этот прогноз - скорее пожелание к будущему.

Прогноз


Первые домашние компьютеры стали появляться в конце 80х. Таким образом можно сказать, что эра ИТ началась около 40 лет назад.

Начнём с того что информационные технологии появились совсем недавно. Большинство из нас выросли в то время когда компьютеров почти не было. А мобильный телефон мы видели только в фильме про фантомаса.



Информационная эра и оцифровка данных

Прогноз: через 10 лет все не оцифруют, ведь это невозможно.

Системы ввода и вывода 

Прогноз: через 10 лет мышь и клавиатура останется. Тачскрин останется. Мониторы будут везде. Кардинальных изменений не произойдет. 

Архитектура сети 

Рассказать о клиент серверной архитектуре. И про облака.
Прогноз: через 10 лет клиент-серверная архитектура останется

Идентификация в сети

Посредством почты, мобильного телефона.
Прогноз: через 10 лет идентификация данных

Политика

Рассказать про ютюб, вовлеченность
Прогноз: через 10 лет политика плотно сядет в ютюб

Сепарация интернета

Прогноз: через 10 лет интернет не закроют

Искусственный интеллект

Прогноз: через 10 лет искусственный интеллект будет нам помогать

Проблема открытости 

Рассказать о проблеме открытости
Прогноз: через 10 лет все еще будет непонятно как жить

Что делать?

Не беспокойтесь.


Литература

https://ru.wikipedia.org/wiki/Информационная_эра