Архив

Пятница. Полировка BkMe и редактор для писателей

В самые ближайшие дни BkMe будет официально презентован в питерской велосипедной тусовочке. Я доделал там все, что хотел, теперь есть разделение данных по городам и полный набор вариантов шаринга, включая олдскульный HTML, и даже bbCode. Так что подождем результатов, а потом не торопясь приделаем наконец поправки к маршрутам. Пока что и без них неплохо.

Закончив с этим, я плавно перешел к последнему, видимо, на этой неделе “марафонскому” проекту онлайнового редактора для писателей. Оффлайновый есть вроде как Scrivener, и пара штук помельче, но все как-то негуманно стоят, выглядят в стиле “привет из девяностых”, и даже теоретически не имеют плюшек онлайна типа совместной работы и версионирования. В общем, несколько странная для меня идея, но попробуем и посмотрим, что получится.

А чтобы не было скучно, я в этом проекте собираюсь сделать полноценное клиентское приложение на Angular, с использованием по полной программе роутинга и REST-коннекторов к бэкенду. В роли бэкенда будет посоветованный в ЖЖ питонский REST-фреймворк Eve. Хотя тут еще точно не решил, возможно, просто в git положу пачку markdown-файлов + метаданные. Как минимум, получится достаточно надежно и переносимо, без vendor lock.

Сегодня, в любом случае, я занимался только интерфейсом и подвязкой туда ключевых фич Ангуляра. Когда дойдет до работы с реальными данными, тогда и посмотрим.

Четверг. Деплой Метеора и виртуальные завещания

Не очень понимаю, как и почему, но в числе прочего Метеор предоставляет для проектов хостинг с автоматическим деплоем по типу Heroku. Простое meteor deploy feedfilter.ilvar.ru собирает проект и выливает его на feedfilter.ilvar.ru, остается только CNAME настроить. Правда, в моем случае этот вариант не очень годится - мне нужны серверные задачи типа сбора фидов, но пока что я их решил, запуская задачи по крону у себя, они подключаются через метеоровский DDP и все делают. Видимо, со временем надо будет переписать сбор обновлений под метеоровские пакеты (нынешнего rssparser под метеор нет).

Также в качестве “проекта дня” сделал UI и клиентское шифрование-расшифровку для рождаемого вместе с Апачем прототипа сервиса виртуальных завещаний. Смысл в том, чтобы раздать сервису указания на случай серьезных неприятностей, а сервис уже будет периодически проверять, все ли в порядке, и если нет - выполнит запланированные задачи. Пока что основной юзкейс - передача паролей и всего такого близкому другу, а для максимальной секурности мы храним только либо данные в AES, либо пароль от этих данных, а вторую “половину” юзер должен передать доверенному лицу сам. Таким образом, мы только обеспечиваем разделение “половин” до часа Х.

Оказалось, что современные браузерные API вполне себе позволяют без участия сервера забрать данные из выбранного файлового инпута, обработать их и, например, дать юзеру “скачать” обратно на диск. Впрочем, после полноценных 3d-движков актуального уровня, работающих на js в браузере, я ничему не удивляюсь.

Завтра займусь прототипированием UI для толстого облачного приложения. И BkMe надо немного дополировать, в начале следующей недели ее презентуем питерским велосипедистам.

В целом, похоже, идея кодомарафона себя оправдала (отдельно я итоги подведу где-то в выходные). Всего за неделю я серьезно почистил свои записки с идеями, “встряхнулся” и сделал серьезный задел - доводка до ума всего начатого спокойно займет еще неделю-две. И это прекрасно.

Среда. Обращение к загашникам и Компьютерщики.ру

Вчера вечером, когда планировал задачи на сегодня, вспомнил, что у меня же есть пачка записок с идеями в Google Keep! Просмотрел, выкинул неактуальные, осталось как раз все интересное.

В результате, сегодня начал с доделок интерфейса bkme, потом приделал лексический анализ к ФидФильтру (осталось его только задеплоить), а на десерт оставил один из “долгождущих” проектов - маленькая игрушка под названием “компьютерщики.ру”.

Суть такова: иногда люди меряются спиписками бывших у них телефонов (сейчас меньше, но лет 5 назад было вполне модно), и я подумал, что было бы интересно померяться использованными технологиями. “Спектрум” много у кого был, а вот Commodore 64 или Atari у нас были редкостью. Идея в том, чтобы не особо ограничивать возможности добавления таких “тэгов” или “бэйджей”, и в то же время сделать саморегулируемую систему, которая не даст СЕО-шникам забить весь профиль ключевыми словами и спамить им направо и налево.

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

А на завтра у меня запланировано небольшое погружение в прикладную криптографию. Будет интересно, я думаю.

Вторник. FeedFilter и ilvar.ru

Сегодня по плану занялся воскрешением FeedFilter на платформе Meteor и запилкой наконец сайтика нашей маленькой, но бодрой компании.

От Метеора по сравнению с Derby ощущения неоднозначные, примерно как от Рельсов после Джанги. У Метеора свой хитрый инсталлер, свой пакетный менеджер (почему-то просто взять один из миллиона пакетов NPM и использовать нельзя), свой Heroku-стайл микро-хостинг для моментального деплоя, и все такое. При этом, несколько странно работающая reactivity, я так и не смог автоматически класть в модель значение инпута в форме, пришлось костыль писать.

Впрочем, за счет этих странностей оно быстро ставится, быстро настраивается и приемлемо работает. Многие вещи типа аутентификации через социальные сети сделаны вообще божественно - ставишь пакет, добавляешь в шаблон один тэг, получаешь в интерфейсе в нужном месте дропдаун с кнопками входа. А что самое вусное - пока oauth не настроен, при клике на кнопку показывается попап, в котором четко расписано, куда идти, что жать, и есть форма для ввода полученных ключей. После настроек python-social-auth как бальзам на душу. Хотя я почти уверен, что у последнего список провайдеров авторизации в пару раз длиннее.

Еще удивило (как и в Derby), что нет дефолтного способа запуска всяких периодических задач на сервере, например, в моем случае это сбор обновлений RSS-потоков. Приходится ставить отдельный пакет для Ноды, который умеет с метеоровским серверным API работать напрямик, но как-то это не шибко прямо получается.

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

Еще сегодня наконец сделал нам приличный ilvar.ru, а то сколько клевых вещей делаем, а все сами без сапог.

Завтра планирую приделать к ФидФильтру, собственно, лексический анализ, написать тесты с Laika и задеплоить результат, а на BkMe добавить переключение городов и киллер-фичу - внесение поправок в маршруты.

Понедельник. Bkme и PhoneGap

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

Сегодня сделал для bkme привязку комментариев к точкам и кускам маршрута (здесь пришлось вспомнить даже школьный матан). Теперь можно при комментировании не описывать словесно “100 метров от перекрестка Пупкина и Мумкина”, а поставить точку и написать, чем эта точка хороша. Или отметить кусок маршрута и написать, что в межсезонье там дорогу размывает к чертям. А с моей стороны можно будет повторно использовать этот код для финальной цели системы комментирования - внесения поправок в чужие маршруты.

Правда, это не все. Разогнавшись, я со всего размаху вляпался в PhoneGap и сделал прототип андроидного клиента для того же bkme. Он пока что умеет только показывать карту с маркерами (как морда сайта) и называется HelloWorld.apk, но собирается, ставится и даже работает. Судя по всему, в будущем можно будет даже оффлайновые карты сделать, проблема там только в объемах — не самые подробные карты Питера (внутри КАД) весят около 100 метров, и зашивать их в apk совсем не комильфо. Надо будет подумать, как бы их так хранить отдельно, а в идеале - давать предзагружать нужный город для использования “на ходу”.

Оный PhoneGap представляет собой отличный пример java-приложения - долго (для двухметрового файла, в котором почти ничего не поменялось) компилит, весит вместе с SDK и эмулятором метров 300, и не имеет практически никаких адекватных средств дебага. Пришлось щедро обмазать код try {} catch(e) { alert(e); }, чтобы докопаться до истины и завести наконец эту карту и маркеры.

Завтра попробую реанимировать свой FeedFilter, только не на Derby, а на Meteor.

FeedFilter - обучаемый RSS reader

Для своего news feed про бессмертие захотелось мне научиться собирать и фильтровать RSS-фиды так, чтобы вообще не видеть гарантированно не подходящие статьи. Тогда можно в такой аггрегатор напихать сотню разных технологических и новостных потоков, и просматривать каждый день не 200 статей, из которых 95% не по теме, а всего 20.

Поискал такой сервис - и фигушки, много где есть социальные всякие фильтры и шаринг, но откуда другие юзеры узнают, что меня интересует именно иммортализм и медицинские технологии? Эх, опять придется все самому делать.

Чтобы было веселее, взял абсолютно незнакомый мне Derby.js, код писал на абсолютно незнакомом CoffeeScript, а база у Дерби - собственный LiveDB, у которой внутри MongoDB (который я использовал в одном маленьком проекте) + Redis для PubSub.

В результате, потратил 12 часов времени, а получил (вместе с фильтрацией) всего 140 строк кода (не считая автоматически сгенерированных Дерби файлов, которые я не трогал) + шаблоны + стили.

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