GOLOS
RU
EN
UA
kvg
2 года назад

GKit - продолжение. Бот-клиент теперь с поддержкой Steemit

Выкатываю промежуточную версию бот-клиента для платформы голос - GKit.

Почему промежуточная?

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

Функция у бот-клиента по-прежнему пока только одна - автовот по списку. Изменения данной версии:

  • Переведена на клиент-серверную архитектуру. Отдельный репозиторий - https://github.com/kv-gits/gkit-server Поддержка электрона (десктопной версии) пока под вопросом. Скорее всего - после реализации глобальных задумок
  • Добавлена поддержка Steemit. Теперь можно автовотить и стимит и голос одновременно
  • Данные хранятся в домашней директории пользователя APPDATA/GKit на винде и HOME/.config/GKit на линуксе
  • Добавлена функция ожидания восстановления силы голоса. Если СГ ниже 97%, бот ждет некоторое время, прежде чем апвотить

Почему клиент-сервер?

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

Установка и запуск

Стало чуть сложнее, чем версию на электроне, но ничего в этом страшного нет. Для запуска нужен npm/yarn и nodejs.
Ноду качаем отсюда https://nodejs.org/en/

git clone https://github.com/kv-gits/gkit-server
cd ./gkit-server
npm install
export PORT = 3003
node app.js

Переменная окружения PORT указывает номер порта для доступа к клиенту. По умолчанию - 3003

Внимание, осторожно!

В данной версии отстутсвует проверка запросов к серверу на валидность. Не рекомендуется запускать на сервере с публичным айпи. Либо настройте файрвол должным образом. В ином случае ваш wif могут скоммуниздить. Не фатально, но может оказаться неприятным.

Пара технических моментов

Серверная часть на node Express.js. Особо сказать и нечего. Работает. Асинхронно, что местами приятно, а местами напрягает. Промисы выручают.

БД - nedb. Дабы упростить пользователю развертку, от классической PG/MySQL отказался. А вот встроенных бд для ноды выбор не так уж и велик. Nedb работает нормально, хоть уже олго и не поддерживается мэйнтейнером.

Для отрисовки интерфейса - Mithril.js. Радует однозначно! Облегченный React.js. Ничего лишнего, быстрее реакта, легко осваивается и никакого "magic code".

Попробовал тесты на Jest. Не сказать, что в полном восторге, но удобная вещь. Связь между клиентом и сервером только через вебсокеты. Не пойму, зачем люди еще сидят на HTTP requests?

Обратная связь

С вопросами, предложениями, багрепортами можно обращаться сюда https://t.me/joinchat/AsAZwkOY5U1vWB4w2egpUg

2
7.618 GOLOS
На Golos с May 2017
Комментарии (4)
Сортировать по:
Сначала старые