Программирование

Вступительные экзамены MADE 2020. Программирование

Решил поднимать квалификацию в data science и машинном обучении, в ШАД экзамены в этом году я завалил, не успел приготовить математику, да и по программированию задачки попались сложные для меня, а вот в Академию больших данных от Mail.ru ещё есть шанс попасть. К тому же по отзывам учат там на убой. С небольшими накладками, но удалось решить 6 задач из 6 на экзамене по программированию, во многом благодаря тому, что дали по-сути безлимитное время. Публикую… ПодробнееВступительные экзамены MADE 2020. Программирование »

The ultimate jemalloc guide

Одна из основных performance issue с которой сталкивается типичное Rails приложение на определённом этапе развития — это нехватка памяти. Первое и самое «дешевое», с точки затраченного времени на решение, это подключить альтернативный аллокатор памяти jemalloc. Он заменяет стандартную реализацию malloc из С более эффективной реализацией лучше подходящей для веб-приложений. Как установить и использовать? Обычный сервер или локальная машина Необходимо установить пакет libjemalloc-dev. При установке Ruby через RVM необходимо указать флаг -C —with-jemalloc.Если через rbenv то… ПодробнееThe ultimate jemalloc guide »

HTTP/2 для самых медленных

Уже более трёх лет прошло с конца 2015 года с тех пор как поддержка HTTP/2 появилась в большинстве популярных браузеров, но согласно w3techs.com лишь 37% сайтов используют его на текущий момент. Чего же мы все ждём? Ведь это даёт почти бесплатный прирост производительности, уменьшается overhead на открытие дополнительных соединений, увеличивается скорость загрузки сайта для конечного пользователя. Всё что нужно лишь добавить несколько строк в конфиг Nginx. Заодно и оценим насколько это может увеличить комфорт пользователей.… ПодробнееHTTP/2 для самых медленных »

Фьючерсы в concurrent-ruby

Нет, это не фьючерсы с биржи, но тоже полезная вещь. Постановка задачи Допустим у нас есть сервер который может обрабатывать три типа запросов A, B и С. На каждый тип запроса сервер тратит определённое время, и на каждый из типов есть лимит параллельных запросов и если он превышен то сервер начинает отвечать очень медленно. У этого сервера есть клиент который получает результат последовательно выполняя разные запросы, агрегирует результат, и снова выполняет запросы. По вот такому… ПодробнееФьючерсы в concurrent-ruby »

Патчим ActiveAdmin

Есть определённый класс задач которые нельзя решить простым изменением настроек, или созданием дополнительного компонента, иногда приходится внедриться в сам код ActiveAdmin. Есть несколько вариантов, можно форкать проект и модифицировать код под себя и если изменение несёт ценность остальным его можно предложить как пулл-реквест, но бывают необходимы совершенно кастомные вещи, здесь приходится прибегать к monkey patching. Column margin Есть такой компонент колонки он позволяет развивать страницу таким образом: Это генерирует вот такой HTML Что если я… ПодробнееПатчим ActiveAdmin »

Awesome ActiveAdmin

Про ActiveAdmin слышали все, но не все понимают насколько он хорош. Есть много мнений от сторонников до ненавистников, но суть в том что если в достаточной степени овладеть этим инструментом, то можно делать практически что угодно за очень сжатые сроки. Многих отпугивает то, что кривая обучения поначалу идёт резко вверх, но как только ты делаешь шаг в сторону, всё становится сложно. Я отношусь к этому также как и к инвестиции, уже около 5 лет я… ПодробнееAwesome ActiveAdmin »

Ruby isn’t for a Highload

Mail.ru исправляется, и не перестаёт удивлять нас своей неистовой фантазией, на этот раз они придумали соревнование а-ля хайлоад. Дано ТЗ на написание несложного API, и возможность завернуть реализацию в Docker контейнер и запустить всё это под обстрел, но ресурсы ограничены, только 2 GB ОЗУ и 4 ядра, при этом RPS может достигать 1000. 1000 запросов в секунду Карл! Это значит что даже если удастся идеально распараллелить решение на 4 ядра, то ответ должен формироваться в… ПодробнееRuby isn’t for a Highload »