En

ClojureCup: Хатник

Не пропусти релиз!

Хатник (Hatnik) - веб сайт, который мы написали в течение ClojureCup, который проходил на этих выходных. ClojureCup - это соревнование, где нужно написать приложение на кложуре/кложурскрипте за 48 часов. Предназначение Хатника - информировать о релизах библиотек (на данный момент только по почте). Он поддерживат Clojure и Maven библиотеки, которые хостятся, соответственно, на Clojars или Maven Central. Использовать его просто: залогиниться и создать действие, которое состоит из названия библиотеки и текста нотификации. Всё. Теперь во время каждого релиза библиотеки вы будете получать письмо. Посмотреть вживую можно тут: hatnik.clojurecup.com. Если не любите логиниться в незнакомые сайты, то вот небольшая скриншот-демонстрация:


Начальная страница после логина

Initial page



Создание нового действия

Create new action



Действие создано

The action created



Библиотеки, используемые в Хатнике

All libraries

Также можно группировать действия по проектам. Проект - это просто именованная группа действий. Каждый пользователь по умолчанию имеет Default проект (смотрите скриншот).

Дальнейшие планы

Мы накодили проект за 2 дня, так что очевидно, что ещё куча просторов для улучшений.

Больше действий

На данный момент Хатник поддерживает только емейл уведомления. Мы планируем добавить больше. Вот начальный план:

  • Noop - действие, которое ничего не делает. Может быть полезно, если нужно создать просто доску с последними версиями библиотек.
  • GitHub Issue - создать гитхаб таску/багу/задачу/не-знаю-как-правильно на гитхабе.
  • GitHub Wiki Page - поредактировать страницу используя простой find-and-replace механизм.
  • GitHub Pull Request - изменить файлы в проекте, используя find-and-replace механизм

Чистка

Мы писали Хатника в спешке, так что появился технический долг:

  • Улучшить веб-клиент. Мы использовали Ом для веб клиента, но знали его не очень хорошо и в некоторых местах код получился не сильно каноническим для Ома. Например мы потратили пару часов в конце контеста, воюя с багом, в котором текстовое поле для ввода названия библиотеки было неизменяемым. Похоже, что именно этот баг описан в туториале, но даже используя туториал мы так и не смогли его пофиксить. В результате использовали жуткий костыль, в котором устанавливали значение в поле используя setTimeout (а именно установка значения в поле делала его неизменяемым).
  • Добавить больше валидации. На данный момент REST API достаточно свободный и производит минимум валидации. Это нужно исправить. Мы думаем попробовать Prismatic schema для этого.
  • Добавить core.typed. На работе я достаточно плотно работаю с Google Closure Compiler. Одной из его фич является то, что он вводит типизацию в джаваскрипт. Это сильно помогает в написании корректного кода. И именно для этого хочется попробовать core.typed, посмотреть, будет ли он полезен.
  • Добавить тестов. На данный момент у нас есть немного тестов для базы данных. Надо бы добавить интеграционных тестов, которые будут тестать API, отправку емейлов, создания всякой всячины на гитхабе. Ещё было хорошо добавить тесты для клиента, возможно используя вебдрайвер.

Другие планы

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

На данный момент все действия надо создавать один за одним. Было бы удобно иметь возможность указать ссылку на project.clj и из него будут извлечены все зависимости. Опять же, ничего не останавливает от поддержки и других видов билд-файлов, как например pom.xml, build.sbt, Gemfile. Конечно некоторые из них используют DSL'и и будет не очень просто их распарсить. Но таска интересная.

Заключение

Несколько слов о названии проекта. Хатник - это домовой, но в переводе на белорусский. В моём представлении это такой добрый дедушка, который помогает по дому и выполняет мелкие дела. Так я и представляю себе этот проект - ненавязчиво помочь с какими-то рутинными задачами. Конечно, если почитать описание домового на вики, то там всё сложнее, но я буду придерживаться своей версии. Надеюсь я заинтересовал проектом. Если понравился Хатник, то за нас можно проголосвать. Также стоит посмотреть на другие проекты, они достаточно интересные. И им также нужны голоса ;)

Кот Хатника можно посмотреть на гитхабе.

Опубликовано 01 Oct 2014

comments powered by Disqus