В прошлой статье я разбирался с тем как работает GIL, а сегодня меня захватила идея узнать насколько дорого обходится этот GIL для кода, который исполняется у нас на бэкенде. Для этого я решил пропатчить MRI и добавить пару переменных, в которые буду засекать сколько времени поток реально выполнял код, а сколько ничего не делал и ждал пока ему удастся завладеть локом.
Ruby on Rails *
Фреймворк, написанный на Ruby
Работаем с индексами при высокой нагрузке в rails с psql: как добавить/удалить индекс и при этом не умереть
Всё, что кладёт прод, делает тебя умнее. © программист, положивший прод
Привет! Я — Женя, рубист из Каруны. В этой статье расскажу, как мы получили, на первый взгляд, тривиальную задачу по работе с индексами, набили кучу шишек и пришли к не очень тривиальному и эффективному решению.
Будущее Web это HTML через WebSockets
Будущее веб архитектуры программного обеспечения уже обретает формы и на этот раз server-side рендеринг (опять). Но есть кое-что новое, а именно передача HTML по WebSocket.
Подход с использованием SPA(Single Page Appllication) и JSON API привел к тому, что многие команды разработки погрязли в бесконечных спорах о структуре данных и ошибках синхронизации между этими двумя слоями. Это увеличивает стоимость разработки, замедляет релизный цикл и сокращает время, которое можно было бы потратить на инновации.
Перестаньте везде использовать first/last
Очень часто разработчики на Rails для извлечения заведомо одной записи из базы используют один из методов first/last
из ActiveRecord. Это рабочее решение, но есть одно НО: чтобы извлечь всего одну запись база данных должна найти все, подходящие по условию, отсортировать их и вернуть только одну. Если вы подумали "Сортировка одной записи? Да это же легко!", то не будте так оптимистичны, я постараюсь показать, что это важно.
Истории
С 4 часов до 1 минуты. Как найти одну строчку, которая ускорит сервис на Ruby
Кейс из жизни, когда удалось на порядки повысить производительность сервиса. Показываю на реальном примере, как можно искать "узкие места" в работающем, казалось бы, коде. И как много профита порой можно получить от минимальных правок. В данном случае весь фикс потребовал замены всего одной строки. Но самое интересное - эту строку найти...
WorkerKiller
Утечки ресурсов и/или памяти, а также её фрагментация являются обычной проблемой для всех языков программирования. Неважно есть там сборщик мусора или нет, компилируемый язык или интерпретируемый. Ruby не является исключением и сегодня мы немного поговорим про эти проблемы, варианты их решения и даже напишем своё собственное.
Генерация картинок в коде
Всем привет! В этой статье я расскажу про процесс автоматизации изображений в коде, написание гема и ускорение рутинных задач.
Hyperstack vs Hotwire (перевод)
После небольшой паузы еще один перевод про Rails. Сегодня Hyperstack vs Hotwire.
Синхронизация баз данных между монолитом и микросервисами с помощью Kafka. Наше решение
Как перейти с secrets на credentials (Ruby on Rails)
- зачем и как перейти от secrets к credentials,
- как использовать API-ключи в Ruby, YML и js.erb,
- как раз и навсегда предоставить ключ каждому из команды.
HackTheBox. Прохождение Jewel. RCE в Ruby on Rails, sudo и google authenticator, выполнение кода в gem
Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)
Как добавить React-компонент в Active Admin
В статье Неофициальный гайд по Active Admin мы рассмотрели библиотеки, из которых состоит Active Admin, и некоторые подходы к созданию собственных компонентов. Но иногда форма или информационный виджет могут быть настолько сложными или динамическими, что начинаешь задумываться, не пора ли обратиться к современному фронтенду, а не накручивать такой родной, но такой неподдерживаемый jQuery-код.
Мы в ДомКлик в таких случаях используем Vue.js и React, и под катом я расскажу, как именно можно внедрить React-компонент в Active Admin.
Метапрограммирование в реальной задаче
Всем привет! В этой статье хочу рассказать про метапрограммирование на примере реальной часто встречающейся проблемы.
Когда кто то говорит про метапрограммирование у олдскульного кодировщика случается приступ ярости)
И на это есть причины так и на большом проекте может показаться безумием использовать метапрограммирование, так как код становится очень сложным для чтения. А если в проект включится специалист со стороны, то он и подавно ничего не разберет в этом мета-коде.
Но все не так просто, как говорится - нет плохих инструментов. В этой статьей я постараюсь показать на реальном рабочем примере как метапрограммирование поможет сделать ваш код чище, избавит от рутинных повторений. И заставит порадоваться мета-магии.
Ближайшие события
Как я принёс Ruby в ДомКлик
В конце 2017 года я твёрдо решил, что хочу перейти на руководящую работу.
Программирование само по себе привлекало меня гораздо меньше, чем то, что происходило на уровень выше, а именно обдумывание бизнес-процессов, планирование архитектуры приложений и организация работы.
Я чувствовал себя не столько садовником, который день за днём возделывает маленький клочок земли, наблюдая за проклёвывающимися сквозь землю ростками, сколько фермером, которому надо собрать, а затем продать урожай с гигантского поля размером с европейскую страну.
Масштабность и эффективность меня вдохновляли.
Установка discourse в Ubuntu 16.04
Почему в 2020 году мы по-прежнему выбираем Ruby?
Мы — опытная команда Ruby on Rails разработчиков. Некоторые из нас занимаются разработкой на Ruby уже многие годы и знают его как свои пять пальцев. Вот почему нам требуется много мужества чтобы признать, что Ruby сейчас не в лучшей форме.
Язык был очень популярен в 2013-2015 годах, но затем его популярность пошла на спад. Это особенно заметно, если мы сравним статистику Ruby и Ruby on Rails за 2020 года с прогрессом, достигнутым другими инструментами. Stack Overflow провел довольно тривиальное сравнение динамики роста Ruby и Node.js на основе количества заданных вопросов. Да, это не самый объективный показатель, но вы поняли…
Количество пользователей Ruby упало, но достаточно ли этого, чтобы объявить о смерти Ruby? На самом деле, нет. Если вы видели такие статьи, как «Ruby is Dead» или «Ruby is Irrelevant», приготовьтесь — ведь в какой-то момент каждый язык был объявлен мертвым. Возьмите Node.js — среда выполнения переживает хорошие времена — и все же люди спешат объявить о ее смерти.
Ruby Digest 2020·08·1
новости, медиа, новинки, релизы, статьи, обучение.
Неофициальный гайд по Active Admin
Статья про Ruby в блоге компании ДомКлик! Как так получилось, что в молодую компанию завезли мертвый язык? Секрет в том, что на Ruby можно быстро написать и протестировать бизнес-идею. И делается это не без помощи Rails и Active Admin — библиотеки, которая позволяет быстро создать админку с минимальными затратами сил и времени.
Часто можно встретить мнение, что Active Admin хорош только для 15-минутного блога. Мы в ДомКлик считаем (и доказываем на практике), что из этой библиотеки можно выжать намного больше.
Я расскажу про некоторые подходы, которые мы применяем при работе с Active Admin.
Миграции данных в Ruby On Rails
TL;DR Пожалуйста, выносите код миграции данных в Rake-задачи или пользуйтесь полноценными гемами в стиле миграций схемы. Покрывайте тестами эту логику.
Ruby Digest 2020·07·2
Смотрим, что интресного было во второй половине июля вокруг Ruby.