Search
Write a publication
Pull to refresh
101
212

Motion – Peter Sandberg

Send message

Сегментация клиентов методом K-Means на стороне БД

Reading time4 min
Views694

Привет, Хабр!

Сегодня мы рассмотрим, как заставить PostgreSQL самостоятельно крутить K-Means для сегментации клиентов, не вытаскивая данные наружу. Пройдемся по циклу: нормализуем фичи в materialized view, напишем функцию PL/PythonU, которая дергает scikit-learn, сохраняем cluster_id обратно в таблицу и закрываем гештальт отчётом «доход по кластеру» чистым SQL.

Читать далее

Как писать один .spec для Fedora, RHEL и openSUSE одновременно

Level of difficultyEasy
Reading time4 min
Views1.3K

Привет, Хабр!

Сегодня мы рассмотрим, как написать один RPM .spec-файл так, чтобы он одинаково успешно собирался на Fedora, RHEL и даже на openSUSE.

Но для начала: зачем вообще поддерживать несколько дистрибутивов одной спецификацией?

Читать далее

timers.promises в Node.js

Level of difficultyEasy
Reading time4 min
Views1.5K

Привет, Хабр!

Сегодня мы рассмотрим один из тех маленьких, но мощных апгрейдов Node.js, который вы, скорее всего, недооценивали. Речь о timers.promises — свежем и способе работать с setTimeout и setImmediate в асинхронных функциях.

Читать далее

Как не утонуть в менторстве: система 1:1, которая работает

Level of difficultyEasy
Reading time5 min
Views3.2K

Привет, Хабр!

Если ваши 1:1 — это «ну, поболтали и разошлись», а менторство выматывает сильнее, чем два продакшн‑инцидента подряд, значит что‑то не так. В этой статье рассмотрим эту проблему.

Читать далее

Nullable-аннотации: MaybeNull и NotNullWhen в C#

Reading time8 min
Views3.3K

Привет, Хабр!

Сегодня мы рассмотрим nullable-аннотации в C#: как с помощью [MaybeNull] и [NotNullWhen] (плюс родственных атрибутов вроде [MaybeNullWhen], [NotNullIfNotNull], [DoesNotReturn]) формально описывать те самые «ну тут иногда null, а тут точно нет».

Читать далее

Closures в Groovy: как они устроены и зачем нужны

Reading time5 min
Views572

Привет, Хабр!

Вы наверняка писали { it -> … } в Groovy и думали: «ну, это ж как лямбда в Java, да?». Увы, нет. Closure в Groovy устроены совсем иначе — это полноценные объекты с собственным состоянием, странностями и неожиданно мощными фичами вроде trampoline и resolveStrategy. Сегодня рассмотрим, что скрывается за фигурными скобками Groovy и как использовать эти замыкания так, чтобы они работали на вас, а не против.

Читать далее

Как не утонуть в операционке: система фокусов для тимлида

Level of difficultyEasy
Reading time6 min
Views9.3K

Привет, Хабр!

Если вы ощущаете, что стали частью распределённой системы с бесконечными входящими — поздравляю, вы тимлид. И, скорее всего, вам не весело. Вы не пишете код. Вы не думаете стратегически. Зато вы таскаете ведро с пробоинами по палубе, где вечно течёт.

У большинства тимлидов, особенно в условиях активного роста компании или распределённой разработки, есть общее ощущение перегруженности. Неважно, какая индустрия, стек, удалёнка или офис — ощущение одно: «весь день был занят, но результат размыт».

Читать далее

Коротко о том, как внедрить код-ревью, которое работает (а не бюрократию)

Level of difficultyEasy
Reading time7 min
Views5.8K

Привет, Хабр!

Если у вас в команде код-ревью — это унылое ожидание и пассивно-агрессивные комментарии уровня «не по канону», значит, что-то пошло не так. А если ревью не просто тормозит, но ещё и убивает мотивацию — то вы откладываете техдолг не только в коде, но и в культуре.

Читать далее

Как использовать topic exchange в RabbitMQ для роутинга по шаблонам

Level of difficultyEasy
Reading time5 min
Views1.3K

Привет, Хабр!

Сегодня разберём один из самых гибких инструментов в RabbitMQ — topic exchange. Именно он позволяет не просто отправить сообщение «куда‑то», а превратить очередь в маршрутизатор уровня BGP, но только внутри твоей системы.

Читать далее

RecBole — «комбайн» на PyTorch для любых рекомендаций

Level of difficultyEasy
Reading time6 min
Views1.3K

Привет, Хабр!

Сегодня разберём RecBole — универсальный фреймворк на PyTorch, который отвечает на три насущных вопроса любого ML-инженера рекомендаций:

Как быстро обкатать десятки алгоритмов (от классического MF до SASRec и KGAT) на собственном датасете — без сотни скриптов?
Как хранить все настройки в одном YAML, а не в трёх сотнях аргументов CLI?
Как получить честное сравнение метрик и сразу вынести лучший чекпоинт в прод?

Рассмотрим подробнее под катом.

Читать далее

Кластерные A/B-тесты: как победить эффект соседа

Level of difficultyEasy
Reading time6 min
Views667

Привет, Хабр!

Сегодня мы рассмотрим, как спасаться от «эффекта соседа», рандомизируя не пользователей, а их кластеры в A/B тестах.

У классического AB-теста есть аксиома SUTVA: мол, результат конкретного юзера зависит только от его собственной ветки «treatment / control». Реальность улыбается и кидает в лицо соцсетью, где лайк друга поднимает и твою вовлечённость, курьером, который обгоняет коллег и заражает их скоростью, и cпасибками «приведи друга — получи бонус». Итог — наблюдения больше не независимы.

Внутрикамерный жаргон это называет network interference. Чем плотнее граф связей, тем сильнее лечение «просачивается» за контрольные границы.

Читать далее

Короткий обзор Pest — неплохой PHP-фреймворк для тестов

Level of difficultyEasy
Reading time6 min
Views1.3K

Привет, Хабр!

Сегодня рассмотрим Pest — минималистичный, но выразительный тестовый фреймворк для PHP. Он построен поверх PHPUnit и переосмысляет подход к написанию тестов: делает их лаконичнее, читаемее и проще в поддержке.

Pest — не альтернатива PHPUnit, а надстройка над ним. Он предоставляет декларативный DSL, сохраняя все фичи PHPUnit. Это позволяет использовать существующие PHPUnit-фичи, включая assertions, мок-объекты, аннотации, и при этом писать тесты в более компактной форме.

Читать далее

Меньше — лучше: как Polaris-4B обошёл Qwen3-32B

Reading time8 min
Views5.1K

Привет, Хабр!

В июне 2025 года команда из Гонконгского университета выложила открытые модели Polaris-4B‑Preview и Polaris-7B‑Preview, обученные с нуля на reasoning‑задачах с использованием Reinforcement Learning. Эти модели не просто догоняют топовые коммерческие аналоги вроде Claude‑Opus и Grok-3-Beta — они их обгоняют. Причём на архитектуре всего в 4 миллиарда параметров.

Все это результат продуманного инженерного подхода. В этой статье коротко рассмотрим, как авторам Polaris это удалось.

Читать далее

Vue Teleport: как работает

Level of difficultyEasy
Reading time5 min
Views4.2K

Привет, Хабр!

Сегодня разберём один из недооценённых, но крайне полезных инструментов во Vue 3 — <Teleport>. Это встроенный механизм, который позволяет рендерить часть шаблона вне текущего DOM‑контекста. Он нужен при реализации модалок, тултипов и других компонентов, которые должны «выпрыгивать» из дерева компонентов, но при этом сохранять реактивность, фокус и доступность. Без этих костылей, z-index: 9999 и appendChild.

Читать далее

Как не убить инициативу в команде: ошибки тимлидов, которые всё делают сами

Level of difficultyEasy
Reading time4 min
Views6.8K

Привет, Хабр!

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

Читать далее

Кросс-валидация на временных рядах: как не перемешать время

Level of difficultyEasy
Reading time6 min
Views1.9K

Привет, Хабр!

Сегодня рассмотрим то, что чаще всего ломает даже круто выглядящие модели при работе с временными рядами — неправильная кросс‑валидация. Разберем, почему KFold тут не работает, как легко словить утечку будущего, какие сплиттеры реально честны по отношению ко времени, как валидировать фичи с лагами и агрегатами.

Читать далее
1
23 ...

Information

Rating
13-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity

Specialization

Specialist
Middle
From 1 ₽
SQL
Python
Database
English
PostgreSQL
Git