Идея дневника 2017 года

Отправлено 20 мая 2020 г., 12:20 пользователем Deni Baskovsky

"Долго лазил по сети в поисках новинок смарт-часов. Мне хотелось чтобы и спутники ловил, и за пульсом следил, и ОС была популярной, удобной для сторонней разработки, и заряда хватало минимум на 3 дня. Из всех устройств которые меня впечатлили особо выделил три: цветные часы Pebble, Moto 360 2nd, Samsung Gear s3. Но вот минусы оказались критическими на каждом из девайсов. Если не брать в расчет достаточно высокую стоимость последних двух часов, Pebble оказались живучи, удобны для разработки , размеры, вес. Одним словом - хороши. К сожалению, слух о продажи Fitbit'у подорвал намеченный план по покупке. Второй экземпляр, Moto выигрышно смотрелся с Android Wear, выглядел круто, но был громоздким, мало живучим, и эта дурацкая панель внизу. Gear s3 после казался лучшим выбором. На тебе GPS, NFC, Bluetooth последний, удобное управление с прокруткой, автономность 3 дня. Но странная Tizen OS, которая вроде как лучше во всем, вот только развивается она как-то неуверенно и, опять же, это фирма с нулевым доверием. 
Взял себе фитнес-браслет Jawbone, а пока настраивал подумал вот о чем. Может быть отображение времени не так уж и нужно? Зачем в уме держать планы и соотносить их со временем, что через 30 минут пора бы пойти на встречу, в 20:00 должен состояться созвон, а спать нужно лечь не позже 23:00, чтобы выспаться и завтра не опоздать на работу к 9. Чушь! Почему бы не использовать для этого умные уведомления, которые будут генерироваться без твоей помощи какой-нибудь нейросетью, настроенной на твою личность, которая уже знает о том, что на завтрак ты готовишь себе яичницу примерно 30 минут, принимаешь душ 15 минут и едешь на работу 45 минут? Так нейросеть сможем все лучше и лучше соотносить твой список планов. А на браслет-часы будет поступать только информация, вроде: "Просыпайся", "Готовь себе то-то", "Выйди через 20 мин" и т.д. А затем масштабировать, просчитывать когда лучше будет выйти в соответствии с дорожной и погодной обстановкой, что лучше поесть в соответствии с твоим настроением и твоим желудком, когда лучше лечь спать чтобы проснуться выспавшимся. Идея помощи в построении режима дня, умного тайменеджмента с программой помощи уровня фильма "Click", только находясь в ясном сознании и без перемоток времени."

fly.social - привет из 2015 года!

Отправлено 16 мая 2020 г., 13:53 пользователем Deni Baskovsky

fly social

Fly.social - амбициозный стартап по продаже авиабилетов. На фото моя старая зарисовка сделанная в офисе, когда я параллельно разрабатывал админку для Netdike.

YanPredictor теперь на npm

Отправлено 14 мая 2020 г., 00:31 пользователем Deni Baskovsky   [ обновлено 14 мая 2020 г., 00:31 ]

Написал на TypeScript бесплатную библиотеку использующую Yandex Predictor API. Весит всего 5Кб. Не имеет никаких продакшен зависимостей и использует нативный модуль https. Ответы возвращает через промисы.

Thing View: пример в действии

Отправлено 18 апр. 2020 г., 12:36 пользователем Deni Baskovsky

Первый результат действующего майлстоуна "Исторические артефакты в OWL2".

Шаг 1. 
Передаю ассистенту tg текст: "досмотрел https://www.youtube.com/watch?v=Vxf6oEROhSk". Текст передается в core, читается NLP-движком, из ссылки извлекается og мета, формируются экшены и наполняются субъекты. 


Шаг 2.
Запись открывается в браузере. Данные извлекаются из внутренней БД и насыщаются открытыми источниками графа гугл.

Следующий шаг.
Начну разработку поискового движка по JSON-LD. БД планирую от Jena. Бот отвечающий за поиск будет внедрен в OIDC. Кто знаком с этими технологиями, Welcome 🤑

ProstoDiary: CLI для создания ассистентов

Отправлено 4 апр. 2020 г., 12:06 пользователем Deni Baskovsky

C правкой добавилась возможность создания новых ассистентов в OIDC через командную строку. С этим начата разработка функционала полноценного CLI.


P.S. Для терминала использую библиотеку inquirer.

Майлстоун: "Подключение функционала бота к чатам" закончен

Отправлено 22 мар. 2020 г., 11:11 пользователем Deni Baskovsky

...с опозданием в 21 день ;)
Установка бота в чате
Отображение результата в системе gotois
Как видно по картинке выше, теперь бот определяет лемму урла и на ее основе формирует данные из меты опен графа.

ProstoDiary: типизированные API запросы

Отправлено 2 февр. 2020 г., 16:17 пользователем Deni Baskovsky   [ обновлено 2 февр. 2020 г., 16:19 ]

Текущий сценарий микроразметки делает возможными чтение машинами страниц в вебе. Для моего дневника мне показалось этого мало, решив расширить это, сделал машиночитаемыми сами API запросы-ответы между серверами. Стандарт JSONLD.

Прежний запрос api/v3
curl --basic -u "bot_email:master_password" -X POST -H "Content-Type: application/json" -H "Accept: application/json" --data '{"jsonrpc":"2.0","method":"ping","params":[[OBJECT]],"id":1}' http://127.0.0.1:9000/api
* Где OBJECT это обычный JavaScript объект.

Новый запрос api/v4
curl --basic -u "assistant_login:assistant_password" -X POST -H "Content-Type: application/json" -H "Accept: application/schema+json" --data '{"jsonrpc":"2.0","method":"ping","params":[[JSONLD]],"id":1}' http://127.0.0.1:9000/api
* Где JSONLD это JSON-LD =)

Плюсы:
  1. Реализация все еще текстовая и основана на JSON-RPC 2.0;
  2. Авторизация происходит через привычный basic связки логин/пароля, но теперь ассистента или пользователя напрямую;
  3. Ожидаемым ответом становится schema.org;
  4. Данные передаются в параметрах с типизацией schema.org с Linked Data Signatures;
  5. Можно сериализоваться в RDF и затем в GraphQL;
  6. PGP-шифрование определенного контента.

Минусы:
  1. Оверхед по размерам и плохая передача для больших бинарных данных. Если будет прям критично, можно задуматься о переходе на BSON-RPC, пока ожидаю что base64 хватит;
  2. PGP шифруется не весь ответ, а только abstract.

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

ProstoDiary: мысли о дроблении монолита

Отправлено 31 янв. 2020 г., 08:46 пользователем Deni Baskovsky   [ обновлено 31 янв. 2020 г., 08:48 ]

Умение масштабироваться необходимо для выбивания в лидеры. Только так могли возникнуть и существовать гугл, амазон или нетфликс. Поэтому я решил решил разделить проект на три части: assistant, core, bot.

Assistant
  • Telegram
  • Email
Текущий монолит страдает тем что он совмещает в себе обработчик телеграм запросов и неполноценный email слушатель. Разделение позволит качественно улучшать каждого ассистента, а также добавлять новых ассистентов по мере возникновения потребности.

Core
Это ядро трансляции обычных запросов в понятный JSONLD. Оно будет вшиваться в ассистенты и доступно публично. Запросы могут быть обычными текстовыми, бинарными фото, XML и прочими mime-типами. Формирование ядра позволит выделить основные функции и работать с ними изолированно, повысив общее качество. В качестве вынужденной меры ядро пока будет использовать внешнее API для формирования подписанного JSONLD, но заложит фундамент для переноса таких библиотек внутрь себя.

Bot
Итогом первых двух проектов станет очистка репозитория. Бот будет принимать только JSONLD (через JSON RPC API) и отправлять только JSONLD. 
Функционал бота станет следующим:
  • JSON RPC
  • WebServer
  • Database
  • OIDC

Новый gotois Search

Отправлено 28 янв. 2020 г., 15:32 пользователем Deni Baskovsky

Моззиловцы выкатили новый стандарт - chrome_settings_overrides, заменив прежде используемый opensearch. Ниже сценарий и результат его работы.

Через меню Страница/Добавить поисковую систему выбираем gotois.

Затем она появляется в списке поиска.

Кликаем и переходим в поиск gotois Search Engine. 

ProstoDiary: Машинные типы истории

Отправлено 26 янв. 2020 г., 02:48 пользователем Deni Baskovsky   [ обновлено 26 янв. 2020 г., 02:51 ]

С последним коммитом можно переводить человеческий текст в читаемый машиной формат schema.org.
 
Текст "купил воды $900 в москве" превращается в:
[
  {
    '@context': {
      schema: 'http://schema.org/',
      name: 'schema:name',
      actionStatus: 'schema:actionStatus',
      agent: 'schema:agent',
      endTime: 'schema:endTime',
      object: 'schema:object',
      startTime: 'schema:startTime',
      priceCurrency: 'schema:priceCurrency',
      price: 'schema:price'
    },
    '@type': 'BuyAction',
    actionStatus: 'CompletedActionStatus',
    agent: { '@type': 'Person', name: 'Я' },
    endTime: '2020-01-26',
    object: { '@type': 'Thing', name: 'вода' },
    startTime: '2020-01-26',
    name: 'воды',
    priceCurrency: 'USD',
    price: '900',
    'https://w3id.org/security#proof': { '@graph': [Object] }
  }
]

1-10 of 207