
Привет, Хабр!
Сегодня мы рассмотрим, как поднять gRPC-микросервис на tonic и обвязать его аутентификацией плюс метриками через Tower-middleware.
Motion – Peter Sandberg
Привет, Хабр!
Сегодня мы рассмотрим, как поднять gRPC-микросервис на tonic и обвязать его аутентификацией плюс метриками через Tower-middleware.
Привет, Хабр!
Сегодня мы рассмотрим, как заставить PostgreSQL самостоятельно крутить K-Means для сегментации клиентов, не вытаскивая данные наружу. Пройдемся по циклу: нормализуем фичи в materialized view, напишем функцию PL/PythonU, которая дергает scikit-learn, сохраняем cluster_id обратно в таблицу и закрываем гештальт отчётом «доход по кластеру» чистым SQL.
Привет, Хабр!
Сегодня рассмотрим, как реализовать собственный бинарный семафор на основе futex и библиотеки parking_lot_core
.
Привет, Хабр!
Сегодня мы рассмотрим, как написать один RPM .spec
-файл так, чтобы он одинаково успешно собирался на Fedora, RHEL и даже на openSUSE.
Но для начала: зачем вообще поддерживать несколько дистрибутивов одной спецификацией?
Привет, Хабр!
Сегодня разберёмся, почему попытка «избавиться от ?
любой ценой» приводит к проблемам, и как жить с этим вообще жить.
Привет, Хабр!
Сегодня мы рассмотрим один из тех маленьких, но мощных апгрейдов Node.js, который вы, скорее всего, недооценивали. Речь о timers.promises
— свежем и способе работать с setTimeout
и setImmediate
в асинхронных функциях.
Привет, Хабр!
Если ваши 1:1 — это «ну, поболтали и разошлись», а менторство выматывает сильнее, чем два продакшн‑инцидента подряд, значит что‑то не так. В этой статье рассмотрим эту проблему.
Привет, Хабр!
Сегодня мы рассмотрим nullable-аннотации в C#: как с помощью [MaybeNull]
и [NotNullWhen]
(плюс родственных атрибутов вроде [MaybeNullWhen]
, [NotNullIfNotNull]
, [DoesNotReturn]
) формально описывать те самые «ну тут иногда null, а тут точно нет».
Привет, Хабр!
Вы наверняка писали { it -> … }
в Groovy и думали: «ну, это ж как лямбда в Java, да?». Увы, нет. Closure в Groovy устроены совсем иначе — это полноценные объекты с собственным состоянием, странностями и неожиданно мощными фичами вроде trampoline
и resolveStrategy
. Сегодня рассмотрим, что скрывается за фигурными скобками Groovy и как использовать эти замыкания так, чтобы они работали на вас, а не против.
Привет, Хабр!
Если вы ощущаете, что стали частью распределённой системы с бесконечными входящими — поздравляю, вы тимлид. И, скорее всего, вам не весело. Вы не пишете код. Вы не думаете стратегически. Зато вы таскаете ведро с пробоинами по палубе, где вечно течёт.
У большинства тимлидов, особенно в условиях активного роста компании или распределённой разработки, есть общее ощущение перегруженности. Неважно, какая индустрия, стек, удалёнка или офис — ощущение одно: «весь день был занят, но результат размыт».
Привет, Хабр!
Если у вас в команде код-ревью — это унылое ожидание и пассивно-агрессивные комментарии уровня «не по канону», значит, что-то пошло не так. А если ревью не просто тормозит, но ещё и убивает мотивацию — то вы откладываете техдолг не только в коде, но и в культуре.
Привет, Хабр!
Сегодня разберём один из самых гибких инструментов в RabbitMQ — topic exchange
. Именно он позволяет не просто отправить сообщение «куда‑то», а превратить очередь в маршрутизатор уровня BGP, но только внутри твоей системы.
Привет, Хабр!
Сегодня разберём RecBole — универсальный фреймворк на PyTorch, который отвечает на три насущных вопроса любого ML-инженера рекомендаций:
Как быстро обкатать десятки алгоритмов (от классического MF до SASRec и KGAT) на собственном датасете — без сотни скриптов?
Как хранить все настройки в одном YAML, а не в трёх сотнях аргументов CLI?
Как получить честное сравнение метрик и сразу вынести лучший чекпоинт в прод?
Рассмотрим подробнее под катом.
Привет, Хабр!
Сегодня мы рассмотрим, как спасаться от «эффекта соседа», рандомизируя не пользователей, а их кластеры в A/B тестах.
У классического AB-теста есть аксиома SUTVA: мол, результат конкретного юзера зависит только от его собственной ветки «treatment / control». Реальность улыбается и кидает в лицо соцсетью, где лайк друга поднимает и твою вовлечённость, курьером, который обгоняет коллег и заражает их скоростью, и cпасибками «приведи друга — получи бонус». Итог — наблюдения больше не независимы.
Внутрикамерный жаргон это называет network interference. Чем плотнее граф связей, тем сильнее лечение «просачивается» за контрольные границы.
Привет, Хабр!
Сегодня рассмотрим Pest — минималистичный, но выразительный тестовый фреймворк для PHP. Он построен поверх PHPUnit и переосмысляет подход к написанию тестов: делает их лаконичнее, читаемее и проще в поддержке.
Pest — не альтернатива PHPUnit, а надстройка над ним. Он предоставляет декларативный DSL, сохраняя все фичи PHPUnit. Это позволяет использовать существующие PHPUnit-фичи, включая assertions, мок-объекты, аннотации, и при этом писать тесты в более компактной форме.
Привет, Хабр!
В этой статье мы коротко рассмотрим, как работает TTL в трёх популярных NoSQL-хранилищах — Redis, MongoDB и Cassandra.
Привет, Хабр!
В июне 2025 года команда из Гонконгского университета выложила открытые модели Polaris-4B‑Preview и Polaris-7B‑Preview, обученные с нуля на reasoning‑задачах с использованием Reinforcement Learning. Эти модели не просто догоняют топовые коммерческие аналоги вроде Claude‑Opus и Grok-3-Beta — они их обгоняют. Причём на архитектуре всего в 4 миллиарда параметров.
Все это результат продуманного инженерного подхода. В этой статье коротко рассмотрим, как авторам Polaris это удалось.
Привет, Хабр!
Сегодня разберём один из недооценённых, но крайне полезных инструментов во Vue 3 — <Teleport>
. Это встроенный механизм, который позволяет рендерить часть шаблона вне текущего DOM‑контекста. Он нужен при реализации модалок, тултипов и других компонентов, которые должны «выпрыгивать» из дерева компонентов, но при этом сохранять реактивность, фокус и доступность. Без этих костылей, z-index: 9999
и appendChild
.
Привет, Хабр!
В этой статье рассмотрим, как тимлиды сами, того не осознавая, убивают инициативу в команде. Делают всё сами, душат рост, превращают разработчиков в «ждущих» исполнителей — и потом удивляются, почему никто не предлагает решений.
Привет, Хабр!
Сегодня рассмотрим то, что чаще всего ломает даже круто выглядящие модели при работе с временными рядами — неправильная кросс‑валидация. Разберем, почему KFold
тут не работает, как легко словить утечку будущего, какие сплиттеры реально честны по отношению ко времени, как валидировать фичи с лагами и агрегатами.