Prosto Diary
Редактируется

Prosto Diary

История разработки
20 июня, 2020
18 минут(ы) чтения

2016

26 нояб. Телеграм боты о*уенны

Телега охуенна.

Сегодня увидел статью на vc где рассказывали про telegram os. Сперва я потыкал пальцем, мол, что за бред. Но! В этом же неебический потенциал. Например, уже который месяц не могу сделать нормального клиента+сервер для своего дневничка ProstoDiary. Как-то жуть не просто я скажу. Уж слишком много всего нужно сделать. Сначала делал так. Клиент: cordova+webpack+flow+skatejs+hoodle. Сервер хотел расположить на heroku+hoodle+nodejs. Пиздец же. Само собой никак не мог сделать это быстро. И ради чего? Чтобы держать свой дневничок на android+blackberry+windows10? Делай я что-то большое — это могло бы иметь резон. Но для дневничка? ХЗ. 

И тут я поставил бота, сначала чтобы послушать музыку, затем какую-то безделушку для фейкового зомби-чата ну и так далее. Сначала удивился тому что в телеге теперь можно слушать музыку. Потом полазил в интернеты и в конец охренел, потому что Дуров прикидул делать платформу еще и в роли площадки для HTML5 игр! Ничосе. Вот уж действительно суперпрогрессивная патформа, я уже не удивлен если telegram os будет. По крайней мере browser os появилась (firefox os), хоть и провалилась. 

Короче, решил попробовать создать своего бота. И это пиздец как удобно и вообще выглядит нереально прогрессивно. Я только поставил пакет node-telegram-bot-api, пообщался с BotFather и вуаля! На ноуте у меня работающий сервер и любой гаджет, на котором установлена телега, может коннектиться к нему. Я чуть не кончил от того что произошло. Помню раньше если я хотел подключить тот же Google API мне приходилось лезть на стены от неудобства: то либа кривая, то разрешения никак не проставляются, то ждать токен приходится пиздец как долго. И всегда получался какой-то stackoverflow-development. Тут же все ясно и понятно. Короче пока в шоке.

Ах да, самое главное. Появилась идейка в голове использовать чаты и ботов для синхронизации работы по проектам. Потому что то что у меня сейчас происходит на блядоработе просто бесит: всякие XMPP вместе с почтой и redmine. Пиздец, не? Впрочем на других проектах таже хрень: треллы, битбакеты, скайпы, слаки… В конечном счете все сводится к тому, чтобы прочесть уведомление и донести мессагу другому. Что мешает сейчас создать аджаил бота, подключить кодревью бота, в соседней группе общаться по задаче с тестировщиком? Ниче. Короче, отличный стартапчик вырисовывается. 

4 дек. Закончил выпуск @ProstoDiary_bot

Много перепробовал различных штуковин. Сначала хотел выпустить под BlackBerry 10 в Cordova-оболочке. Увы, разработка застряла, то переписывал с handlebars на skatejs, то сложность с дебагом и подписыванием через Momentics IDE (сука, бесит что токен устаревает через полмесяца), то не смог разобраться как использовать PouchDB в многопользовательской работе. Пока не выкинул всю эту хипстерскую дрянь, ничего не двигалось. Итогом нового переосмысления стало использование Telegram API, о котором я лестно писал статьей ниже. NodeJS 6 послужил бэкэндом, Postgresql стал единственной БД. Деплоится это веселье на Heroku, пока с лимитом в 10000 записей. Записи закриптованы алгоритмом aes-256-ctr, ключ к сожалению пока захардкожен через энвайронменты, но ишью есть, дело осталось за кодингом. В качестве юнит-тестов решил юзать сверхсовременный тулчейн ava. Он написан полностью на ES6, выглядит современно, работает превосходно. 

Установить бота можно перейдя по ссылке: https://telegram.me/ProstoDiary_bot

2017

26 февр. Функция fillRangeTimes

Прежде я не писал, но я много интересного выкладываю на свой GitHub Gist. Вот и одна из важных функций из мобильной аппы я портировал в бота ProstoDiary. Суть его в заполнении дырок в списках дат:

fillRangeTimes('2016/01/01', '2016/01/03')  
// [ 2016/01/01 Date, 2016/01/02 Date, 2016/01/03 Date  ]
image
Графически теперь графики рендерятся так

26 сент. Долгожданный функционал вышел в релиз

Прихерел сколько стал тратить в последнее время и чтобы подсчет был одной командой — сегодня зарелизил фичу с показом полученного/потраченного. Пока считает всё только в рублях и за всё время что бот нашёл в БД, но есть куда расти! 

Всё это делается двумя командами

/count -
/count +

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

1 окт.Функционал поиска

Ещё одна нужная функция для просто дневника вышла в свет! Идея в том, чтобы показывать как часто человек совершал это действие. Пока работает без сортировки по времени.

image
Вызывается через команду /search

2018

10 мар. Бот научился понимать КПП

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

image 1
Пока работает в тестовом режиме, ничего не записывая в БД

27 мар. Логирование с Coralogix

Как оказалось, на Heroku с логированием все плохо. Таких сред как Graylog нет, поэтому приходится брать то, что есть в аддонах. Потратив несколько часов на установку разных логов, остановился на Coralogix, который удалось связать в упряжку с winston 3, пока еще находящящийся в состоянии релиз кандидата. Морда у Coralogix некрасивая и неудобная, но пока все работает. Использовать в других проектах категорически не советую. 

image 1

10 апр. Github Projects

Не секрет, что проект я веду открыто и трачу на кодинг времени меньше, чем на обдумывание той или иной фичи. Количество Issues ушло за тридцатку и поэтому решил перевести их на проекты. Пока проектов три:

  1. Watch — служит для проектирование портрета пользователя и считыванием всего доступного боту данных (email, прикрепленные аккаунты, перемещение и пр.). Идея в том, чтобы бот знал своего пользователя.
  2. Control — все что связано с финансами и оплатой/контролем и доступными ресурсами. Идея в том, что бот руководит ресурсами/финансами пользователя.
  3. IOT (будущая Qweeto) — бот как посредник между пользователями. Идея в том, что боты могут общаться между собой, совершая разные действия, основываясь для этого на первых двух идеях (Watch/Control). 

20 июн. NLP и ML с dialogflow

На днях в рамках задачи изучал возможности внедрения в ProstoDiary технологий распознавания естественного языка. На стол попали три технологии: Microsoft LUIS, Facebook wit.ai, Google dialogflow. Все они имеют бесплатный режим пользования, поддержку русского языка, javascript sdk и интеграцию с популярными мессенджерами.Из всех них wit.ai мне показался самым простым, но у него была сложность с интеграцией с созданным проектом. Короче, из-за возможностей Google Cloud я остановился на dialogflow. Уже первые тесты показали мощности ML по-сравнению с RegEx`ами. Учится нейронка достаточно быстро (возможно, только вначале), есть возможность выгрузки интентов (чтобы затем мигрировать на другой сервис) и только недавно зарелизилась v2 версия API. Пока все нравится, но есть опасение, что Google прикроет Dialogflow или смержит в Firebase. Это, конечно, не история с Parse от фейсбука, но пока все же.

image 2

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

25 июн. Обраотка ашыбок

Dialogflow успешно распознает Entities, достаточно описать необходимые синонимы к нему. Но что делать с ошибочным вводом, когда боту приходит сообщение, например: «50 нублей»? Для этого случая, подключаются специальные спеллеры, например, «Яндекс.Спеллер». 

image 3
Функционал поиска. Теперь можно писать с ошибками! Бот всё поймет (;

26 авг. Высчитывание калорийности продуктов

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

image 4
Значения берутся из 100 грамм продукта, но есть мысли как это изменить 🤔

Денис Сергеевич Басковский

Философ, изобретатель и поэт.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
ProstoDiary Presentation
Предыдущая статья

ProstoDiary: презентация для клиента

Следующая статья

Рейтинг долговых обязательств