Хинт по работе со связанными данными на фронтенде

Казалось бы, банальная задача: манипулировать в SPA списком (допустим) фотографий, которые лайкнул текущий юзер. Добавляем в контроллер /api/users.json что-то вроде to_json(with: liked_photos) и получаем вместе с текущим юзером все айдишники лайкнутых им фоток на фронтенде. Можем показать их списком, в ряд, галереей, рандомно, как угодно. Вывести счётчик, сортануть и тэ дэ.

И всё круто до тех пор, пока… Continue reading “Хинт по работе со связанными данными на фронтенде”

Интернет на даче: год спустя, v2.0

Не знаю как вам, а мне для работы за городом скоростей 3G не хватало никогда. Поэтому, когда весной я обнаружил на модеме весело мигающий зелёный значок 4G-соединения, тут же был поставлен вопрос о переходе на этот стандарт. Напомню, что моя деревня – не пригород, до Питера по прямой более 55 километров, интернет 3G я ловлю с помощью специальной антенны на нехилой такой мачте. Continue reading “Интернет на даче: год спустя, v2.0”

Багрепорты с продакшена прямо в вашу IDE с автоматическим тайм-трекингом исправлений

Представьте себе: вы разработчик веб-проекта, работаете над решением задач и фиксом багов, не вылезая из своей любимой IDE. Если на продакшене (или на стейдже) случается какой-то баг, то вам прямо в IDE прилетает полная информация о нём, включая id пользователя сайта и полный стек-трейс. Вы фиксите баг, коммитите и пушите его как обычно, а затраченное на него время автоматически трекается в учётной системе – не надо никуда переключаться. Круто? Безусловно.

В этой краткой заметке я расскажу о том, как построить такую систему на примере продукции JetBrains (Rubymine и PHPStorm). Continue reading “Багрепорты с продакшена прямо в вашу IDE с автоматическим тайм-трекингом исправлений”

Строим full-stack environment для приватных проектов на основе бесплатных инструментов

Disclaimer: автор не призывает экономить “на спичках”. Вряд ли стоит работать с заказчиком, с которым вы не можете себе позволить $5 на виртуалку в DO и $10 на Jira. Однако всегда есть сайд-проекты, личные эксперименты, случайные разработки на голом энтузиазме – на которые никаких денег не напасёшься, если покупать под каждую отдельный набор. Поэтому мне было интересно собрать full stack (полный комплекс) инструментов, позволяющих построить процесс от разработки до непрерывной интеграции, деплоя и мониторинга – в приватном (закрытом) проекте – исключительно на freeware или бесплатных тарифах публичых сервисов. Continue reading “Строим full-stack environment для приватных проектов на основе бесплатных инструментов”

No more has_one, please

Есть два из трёх популярных видов ассоциаций: has_one и has_many. Все знаю как они устроены: в первом случае идентификатор связанной сущности является атрибутом модели (а следовательно – столбцом в БД). Во втором случае, создаётся транзитивная таблица связи со столбцами entityA_id и entityB_id.

Казалось бы, решения абсолютно равноправны, выбирай подходящее под задачу. Однако здесь есть важная проблема. Continue reading “No more has_one, please”