Skip to content

Instantly share code, notes, and snippets.

@ololobus
Last active August 29, 2015 14:11
Show Gist options
  • Save ololobus/332c735df681e929b5d0 to your computer and use it in GitHub Desktop.
Save ololobus/332c735df681e929b5d0 to your computer and use it in GitHub Desktop.
Пост про проект src2img на хакатоне по БЭМ

Хакатон: проект "src2img"

src2img logo

Привет, меня зовут Кондартов Алексей (github.com/ololobus, facebook.com/ololobus) и я представлял на хакатоне проект src2img.

Предыстория

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

В сентябре 2014 года я выступал с докладом на BEMup'е в Питере и, делая презентацию, я привычными движениями делал скриншоты своего любимого текстового редактора, чтобы вставить картинку с подсвеченными примерами кода. Потом выяснялось, что моя стандартная темная тема плохо читается на слайде, я делал скриншот снова в другой цветовой схеме. Иногда в выделенную область попадали элементы интерфейса, я опять переделывал. Иногда находил ошубку и... Ну, вы поняли :)

Само собой, мне этот процесс показался весьма несовершеным, и я стал искать что-то готовое. Хотелось просто сделать Ctrl + C нужного куска кода, потом Ctrl + V в форму, выбрать тему и скачать готовую картинку размером ровно по коду.

Потом я узнал про хакатон, предложил Леше (@rndD) поучаствовать, и он согласился. У нас было несколько идей, но в результате мы остановились на этом сервисе с картинками.

Подготовка

Мы остановились на этом маленьком сервисе, так как были почти на 100% уверены, что успеем все сделать и запустить готовый сервис вдвоем за отведенное время. Чтобы на хакатоне не заниматься неинтересной рутиной мы сделали несколько подготовительных действий:

  • Зарегистрировали домен src2img.com
  • Засетапили виртуалку на DigitalOcean
  • Создали репозиторий team411/src2img
  • Настроили DNS и повесили заглушку с картинкой

Изначально мы не были уверены, что сможем обойтись без бэкенда, поэтому хотели использовать на сервере phantom.js для отрисовки скриншотов. В остальном, планировалось использовать стандартный БЭМ-стэк: enb, bem-core, bem-components.

Задачи на хакатон

Задач было не так много, мы хотели реализовать базовую функциональность, описанную выше. Мы решили, что если к нам кто-нибудь еще присоединится, то можно будет докрутить каких-то дополнительных фич и улучшений. Иии, к нам присоединились еще двое ребят: Дима (@corpix) и Миша (@restrry)!

Работа над проектом

team at work

В самом начале мы немного поисследовали и выяснили, что для работы бозовой функциональности мы сможем обойтись совсем без бэкенда (спасибо библиотеке html2canvas)! Чтобы проверить это, мы буквально за полчаса сделали рабочий прототип в jsFiddle.

Так как наша команда теперь состояла аж из четырех человек вместо двух, то мы разделили задачи:

  • Мы с Мишей больше занимались клиентскими блоками
  • Леша помимо этого допиливал сборку и деплоил готовый результат на наш сервер
  • Дима очень сильно помог со сборкой и фризом статики, а потом и вообще запилил свой экспериментальный бэкенд на python, в котором он рендерил bemhtml-шаблоны.

В процессе работы у нас возникли серьезные проблемы с генератором проектов generator-bem-stub, который, несмотря на выбранные нами нужные опции, выдавал безумное количество ошибок в шаблонах bh, не собирал весь css и js даже для стандартных блоков из bem-components. Нам пришлось все удалить и скачать готовый project-stub. Это затормозило нас часа на 2-3.

Результаты

По результатам хакатона мы сделали все, что и планировали, плюс немного вышли за рамки благодаря новым членам команды:

Впечатления

Я очень рад, что мне удалось поучастовать в этом хакатоне, а еще больше я рад, что к моей команде присоединились такие крутые ребята, и мы смогли вместе реализовать все задуманное :) Без них бы у меня ничего не получилось.

Трудно к чему-либо придраться в организации хакатона, поэтому просто еще раз скажу спасибо организаторам и своей команде. Было круто, надеюсь, что это был только первый хакатон по БЭМ!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment