Быстрый ввод-вывод на Go

Хочу поделится своими наблюдениями по поводу производительности при реализации домашних заданий из курса MADE по алгоритмам, но это применимо к любому спортивному и не очень программированию где важна скорость выполнения когда. И сделать небольшое введение в Go. Императивное программирование для бедных Go специально создан простым и примитивным, чтобы любой вчерашний школьник попавший в на работу в Гугл не отстрелил себе ноги. Go — это некий общий знаменатель всех императивных языков, и своей простотой и скоростью… ПодробнееБыстрый ввод-вывод на Go »

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

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

Удлинитель с термостатом на Ардуино

Что-то в последнее время на DIY потянуло. Знаю не профильно, но в конце будет ссылка на репо с простеньким С++ кодом. Была старая идея сделать для автоматического обогрева в зимнее время, балкона где я обитаю, нечто чтобы включало тепловую пушку, если температура опускается ниже какой-то отметки. Да балкон утеплённый, но там всё равно холодно если на улице минус, тёплый пол спасает только ноги, остальное мёрзнет. Поэтому в морозы приходилось включать и выключать пушку самому вручную,… ПодробнееУдлинитель с термостатом на Ардуино »

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 »

Решение задачи о трёх вдовах

В прошлом году я нашёл на Youtube одного замечательного человека, популяризатора математики (или евангелиста как сейчас говорят). Алексей Савватеев проводит лекции для всех желающих, и рассказывает о математике просто, в частности и о теории игр. До этого я слышал о теории игр отрывочно, и не понимал что это, да и вообще с высшей математикой у меня не особо ладилось в универе. В общем если кратко то теория игр — это способ выбора оптимального хода в… ПодробнееРешение задачи о трёх вдовах »