
Привет, Хабр!
В этом статье рассмотрим, почему классическая реализация SCD Type 2 в DWH начинает жутко тормозить на миллионах строк и как с этим бороться при помощи комбинации MERGE + hash-diff.
Motion – Peter Sandberg
Привет, Хабр!
В этом статье рассмотрим, почему классическая реализация SCD Type 2 в DWH начинает жутко тормозить на миллионах строк и как с этим бороться при помощи комбинации MERGE + hash-diff.
Привет, Хабр!
При разработке фронтенда мы часто ограничиваемся тремя состояниями UI-запроса: loading, error, data (или success). Но это не всегда достаточно — особенно когда дело доходит до тонких UX-деталей, предотвращения гонок запросов и адекватного управления отменой при размонтировании компонентов. В статье рассмотрим, почему добавление состояния idle делает систему более надёжной, как реализовать конечный автомат для управления статусами, как отменять fetch-запросы и оптимизировать перерисовки.
Привет, Хабр!
Один параметр PostgreSQL может похоронить вашу производительность, если вы о нём забудете — это fillfactor. Почему однократная настройка числа приводит к неожиданным page split, bloat и мучительному откату запросов? Давайте разбираться.
Привет, Хабр!
Вы, вероятно, уже сталкивались с struct
в C# и задумались: а зачем нужен readonly struct
и когда он реально спасает, а когда, наоборот, начинает всё тормозить? Сегодня это и рассмотрим.
Привет, Хабр!
Сегодня рассмотрим, почему отставание у Kafka-консьюмеров — это не просто строчка в kafka-consumer-groups
, а метрика, от которой зависит SLA вашего сервиса. Рассмотрим, как её считать без самообмана, как соорудить собственный мониторинг на Python и Go, а главное — чем именно тушить всплески lag’а: throttle, autoscale и backpressure.
Привет, Хабр!
Сегодня рассмотрим одну из самых сильных сторон Symfony — компонент EventDispatcher.
Если очень кратко, EventDispatcher позволяет создавать реактивную архитектуру: одни части приложения инициируют события, другие на них реагируют, не зная напрямую друг о друге.
Привет, Хабр!
Сегодня рассмотрим как ускорить стартап Python-приложений. Холодный старт — это прямые потери: в деньгах, в SEO, в отклике для пользователя. Serverless считает миллисекунды, edge-инфраструктура не ждёт, а тяжёлые импорты и неподготовленное окружение легко съедают полсекунды. Будем это чинить.
Привет, Хабр!
Когда вы первый раз наткнётесь на метод SelectMany()
в LINQ, может показаться, что это тот же Select()
, только с вишенкой в виде какой-то автоматической распаковки коллекций. На деле же у этого маленького утилитарного метода гораздо более хитрая внутренняя механика, и понимание того, как он плющит коллекции, существенно расширит ваш инструментарий при работе с данными.
Привет, Хабр!
Сегодня рассмотрим@JvmInline value class
в Kotlin. Это не просто очередной синтаксический сахар, а инструмент, который реально влияет на производительность, API-дизайн, надёжность, сериализацию и даже структуру многомодульных систем.
Привет, Хабр!
Сегодня поговорим про ретеншн — ту самую метрику, от которой часто пляшут все продуктовые команды. Вы знаете: «вернулся через 7 дней» (D7) — и сказано, что мы класс
Но на деле класс ломается, как только продукт усложняется. В этой статье рассмотрим, почему классический D7 retention не работает, как построить настоящие кривые удержания через когорты, в чём разница между recurring vs one-shot поведением, какие есть альтернативные метрики и сравним три метода.
Привет, Хабр!
Скользящие метрики — это must-have в аналитике, но даже простые на первый взгляд вычисления могут парализовать вашу СУБД. Сегодня рассмотрим, почему стандартные оконные функции зачастую тормозят, как их можно оптимизировать через явные фреймы, когда выгоднее писать агрегаты вручную, как использовать предагрегированные таблицы и как проверять корректность расчётов на границах окон.
Привет, Хабр!
В A/B тестах можно ошибиться ещё до того, как первая строчка кода теста будет написана. А последствия этих ошибок сказываются не только на результатах одного эксперимента, а на всей продуктовой стратегии компании: на найме, на развитии функциональности, на распределении инвестиций.
Сегодня рассмотрим пять системных ошибках, которые делают ваши A/B тесты ненадёжными — даже если снаружи всё выглядит корректно.
Привет, Хабр.
Сегодня рассмотрим, как разреженный временной ряд ломает оконные функции (LAG
, LEAD
, SUM OVER
и др.), посмотрим как находить дыры и заполнять их, чтобы метрики не сыпались и строки не дублировались.
Привет, Хабр!
Сегодня хочу поговорить о проблеме, которую многие недооценивают в своих Go-проектах. Речь пойдет о бессрочном select {}
, который легко может привести к блокировке, утечке ресурсов и деградации производительности.
Привет, Хабр!
Сегодня рассмотрим, как один единственный #[derive(Ord)]
, казалось бы безобидный, может сломать сортировку, нарушить контракт PartialEq
, и вызвать странные баги в BTreeMap
, .sort()
, или даже в логике dedup.
Привет, Хабр!
В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make
и new
, чем они отличаются, как они работают и когда выбирать каждый из них.
Привет, Хабр!
В этой статье рассмотрим, почему groupby().first()
в pandas — не такая уж безопасная и очевидная штука, как может показаться. Особенно когда нужно достать первую строку группы в точности, как она была в датафрейме — с NaN, с порядком, без сюрпризов.
Но для начала рассмотрим отличия first от других подобных методов.
Привет, Хабр!
На дворе 2025, и у каждого языка свой подход к сборке, зависимостям и публикации. В Rust за это отвечает Cargo — инструмент, который берёт на себя всё: от менеджмента зависимостей до тестов, бенчмарков и выкладки на crates.io.
И вот это мы и рассмотрим в статье: как устроен Cargo изнутри, зачем нужен Cargo.toml
, как подключать зависимости, куда падают артефакты сборки, что делает cargo check
, как запускать и бенчмаркать, и как наконец создать свой крейт на crates.io.
Привет, Хабр!
Сегодня рассмотрим, что на самом деле происходит при rewrite
в Nginx. Как работает связка rewrite ... break
, чем она отличается от rewrite ... last
, и как одно неловкое движение может превратить весь конфиг в тыкву.
Привет, Хабр!
Сегодня поговорим про одну из тех тем, что вроде бы тривиальна, но до последней капли грязи тащит за собой внушительный пласт вопросов. Речь пойдёт про COUNT(*)
и COUNT(col)
в PostgreSQL.