Мой Github 2018

30.12.2018, 01:30 - 4 мин читать

Новые проекты:

  • planfix-toggl-server - Go
  • planfix-toggl-client - Vue
  • chords-viewer - Vue
  • chords-parser - JS
  • voice-list - Vue
  • yandex-dialogs-client - Vue
  • yandex-dialogs-whatis - JS
  • yandex-dialogs-tester - JS
  • hain-plugin-puttytray - JS
  • viasite-projects - JS, Vue

Правки старых:

  • site-discovery - Python
  • ansible-role-zsh - YML

Проект года: https://chords.popstas.ru

Все остальные ссылки и описания под катом.

PR я сделал проектов в 10, один из PR был в престу (PrestaShop).

Держусь на уровне 1000 коммитов в год.

Было это так:

Octocat

Drupal-Vue

Сначала я упарывался по Drupal 8, мечтая прийти к headless-сайтам с бэком на 8-ке и фронтом на Vue. Но Drupal не пошел. Январь-февраль вообще были не очень активные, не помню, что я делал.

Planfix-Toggl

В марте я вдруг понял, что так дальше жить нельзя, что я устал считать выработку на работе, сел и написал за вечер скрипт, который умеет отправлять тайминги, собранные в Toggl, в Планфикс. Потом неделю этот скрипт превращался в Electron приложение, Quazar приложение, в итоге этот превратился в приложение на Go planfix-toggl-server, т.к. я решил, что неправильно писать на NodeJs приложение без GUI, которое будет всегда запущено. Для проекта понадобилось написать либу planfix-go, дописать либу go-toggl, зарепортить пару багов и хотелок в API Планфикса. Но я еще хотел попробовать Vue, поэтому сделал небольшой Web UI на Vue - planfix-toggl-client. А чтобы было удобнее нажимать Play в задаче, я дописал расширение для браузера - toggl-button-planfix. Про это есть статья - Интеграция Планфикса и Toggl для учета времени.

Chords

Но проект был доделан до нормального состояния, а на Vue хотелось что-то сделать, и я придумал написать идеальную (для меня) приложуху, чтобы смотреть аккорды. Аккорды я всегда хранил в закладках Firefox, поэтому сначала я написал chords-parser, чтобы перевести их в chords.json, а потом написал chords-viewer, хоть проект и для одного меня, но посмотреть может любой - https://chords.popstas.ru.

За год я периодически возвращался к аккордилке, мне очень нравится этот проект: я изначально не думал, что им кто-то еще будет пользоваться, поэтому имею право использовать странные интерфейсные решения, которые мне понятны, а днём борюсь с чужими странными решениями на работе, это двойные стандарты, т.к. стандарты для личного проекта программиста и стандарты для сайта с неопределенным кругом пользователей - разные! Причем я еще использую его часто (скажем, раз в неделю) и на практике вижу, что надо доделать. Приятно, что сейчас он меня почти полностью устраивает, всегда бы так, заканчивать проект с чувством удовлетворения, а не того, что не доделал.

Yandex dialogs

В аккордилке была одна фича: голосовой поиск через браузерный API. Так я наступил в голосовые интерфейсы. Начиналось лето. Я написал сначала простой список, который можно заполнять голосом - voice-list, потом написал список, который умеет отвечать на вопросы что где лежит (речь о вкусах жижи для есиг в разноцветных бутыльках) - voice-whatis, а потом вспомнил, что Яндекс запустил возможность обучать Алису в марте и решил, что это неплохая идея для навыка. Так появился навык Вторая память, yandex-dialogs-whatis.

Но я хотел делать всё локально, а стандартная тестилка навыка предполагает, что навык открыт для всех. Поэтому перед написанием навыка я сделал свою тестилку yandex-dialogs-client. Потом я захотел автотесты (сценарии диалогов с проверкой ответов навыка), сделал их, позже они породили yandex-dialogs-tester, который умеет прогонять те же тесты в терминале.

Этот проект привел меня к автору yandex-dialogs-sdk, мы с ним какое-то время плодотворно сотрудничали: он писал sdk, учитывая мои хотелки, а я имел боевой навык, покрытый автотестами. Весь июль занимался навыком, самый жаркий месяц был на github, 315 коммитов за месяц, из дома не вылазил ) Под конец простых регулярок перестало хватать для понимания запроса юзера, я начал прикручивать к навыку Томита-парсер для какого-то понимания смысла услышанного (никакого машинного обучения), но всё остановилось на прототипе tomita-parser-test, т.к. навыком я сам пользовался редко, поднадоело.

Попробовать можно так: скажите Алисе “Запусти навык Вторая память".

Viasite projects

Новый проект сначала потребовал делать автоматические скриншоты всех наших сайтов (для портфолио), так появился viasite-projects (код закрыт) с единственной командой screenshot, потом захотелось сделать со списком сайтов что-то этакое, недельку пописал граф сайтов на d3 (исходники закрыты). В течение года я написал штук 5 разных проектов, которые используют данные sites.json, например, hain-plugin-ansible-server-site, который позволяет попадать в терминал любого сайта за 5 секунд, зная только домен (и еще через 5 секунд в админку Drupal, без знания пароля). Эта фича экономит мне по несколько минут каждый день.

Так sites.json породили новую группу проектов viasite-projects, там уже были генератор “бедного” sites.json из yml файлов ansible, который никуда не ходит дальше одной папки, а также сборщик метрик site-discovery, который уже умел собирать данные всех сайтов в один json, но только в рамках одного сервера. Я написал viasite-projects info, который отвечает за плавный сбор данных со всех сайтов, чтобы сервера от этого не страдали, собирает один “богатый” sites.json со всеми собранными данными. Потом написал viasite-projects check, который проверяет все боевые сайты на код 200. Потом viasite-projects-list, который выводит крутую таблицу на данных sites.json. Код всего этого закрыт не из жадности, а потому что специфики много, вряд ли в таком виде это кто-то захочет повторить.

, теги: opensource github projects nodejs javascript python go vue yandex-dialogs