Обновить

Бэкенд

Сначала показывать
Порог рейтинга
Уровень сложности

Почему сеньор-разработчик не может донести ценность своего опыта

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели14K

Какие чувства возникают у вас при прочтении такого предложения?

«ИИ-агенты — будущее разработки ПО. Нам больше не нужны разработчики, замедляющие прогресс бизнеса».

Если вы сеньор-разработчик и считаете, что оно верное, то у меня появляются подозрения о вашем опыте (ниже я объясню, почему).

Но если вы не сеньор-разработчик, то я считаю, что вы правы.

А? Что здесь происходит?

Суть копирайтинга заключается в соотнесении послания и его аудитории.

Поэтому для меня, копирайтера, в этом случае одно и то же послание означает разное для двух разных аудиторий.

Если вы сеньор-разработчик и уже поэкспериментировали со всеми этими агентами, скиллами, моделями и прочим, что потрясает воображение людей, и если ваша интуиция по-прежнему шепчет про ошибочность утверждений об устаревании вашей работы, то в этом посте я постараюсь вербализировать то, что говорит вам интуиция.

Но постойте! Многие опытные и известные разработчики тоже заявляют о том, что профессия разработчика умерла.

Как же так? Чья точка зрения верна? И в чём причина такого расхождения мнений?

Читать далее

Kafka, таксономии и удаление событий: как исключить обработку неактуальных сообщений

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.5K

В рамках задачи по обработке XBRL-таксономий возникло требование: если таксономия удалена до обработки событий расчёта кэша, эти события не должны приводить к созданию данных для уже неактуальной сущности.

На первый взгляд кажется, что достаточно найти соответствующие сообщения и удалить их из Kafka topic. Но Kafka хранит данные как commit log, поэтому точечное удаление сообщений по версии таксономии или другому бизнес-признаку оказывается небезопасным.

В статье рассмотрим, почему прямое удаление сообщений не подошло, какие варианты были рассмотрены и как в итоге был применён комбинированный подход: стабильный Kafka key, tombstone-сообщения, compact/delete policy и проверка состояния таксономии на стороне consumer.

Разберём решение

Каналы и авторизация в Centrifugo: как безопасно подключить real-time в Laravel

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели6.4K

Real-time без авторизации опасен. Если пользователь может подписаться на чужой канал, он может получать чужие уведомления, статусы заказов, сообщения, события админки или финансовые обновления. В обычном HTTP API такая ошибка выглядела бы как доступ к чужому endpoint. В WebSocket-архитектуре ошибка такая же, просто выглядит менее очевидно.

Разбираем в Centrifugo: публичные и приватные подписки, connection token, subscription token, права доступа и безопасное подключение

Читать далее

Devise в Ruby on Rails

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели4.9K

Авторизация пользователей в создаваемом нами интернет магазине. Отличный гем Devise поможет вам в вопросах добавления разных пользователей на сайт

Читать далее

Телеграм-бот переклички автовладельцев на Kotlin Native

Время на прочтение4 мин
Охват и читатели5.3K

Очередной рассказ про вайбкодинг, про то что Kotlin Native на что-то годится и в целом может потягаться с Go, пиар моего бота и история неуспеха.

Читать далее

Async/Await в C# это синтаксический сахар для конечного автомата

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели11K

Перевод статьи, посвящённой устройству конечного автомата асинхронных методов. Разбор основных понятий, декомпилированный код с подробными комментариями, раскрытие секретов магии асинхронности и подробная схема.

Читать далее

Строки в Python: всё не так просто, как кажется

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели8.9K

Начинающим разработчикам строки обычно кажутся едва ли не самым простым, что есть в языке программирования. Возможно, причина в том, что знакомство с новым языком зачастую начинается с вывода на экран строки Hello, world!.

«Это же просто набор символов, заключённый в кавычки!» — обычно восклицает джуниор Python-разработчик.

Но в Python всё немного интереснее. И за простым синтаксисом скрывается большой набор возможностей, правил и нюансов. Более того, если посмотреть внимательнее, окажется, что в Python целый зоопарк строковых представлений и связанных с ними особенностей.

Привет, я Евгений Бартенев, автор и техлид курса «Python-разработчик» в Практикуме. В этой статье последовательно разберу, какие бывают строки в Python, чем они отличаются друг от друга, какие возможности дают и какие подводные камни могут встретиться в работе с ними. Поговорим и о базовом использовании, и о важных деталях, которые стоит помнить каждому разработчику.

Читать далее

Сравнение моделей конкурентности JVM языков: Kotlin coroutines, ZIO runtime и Clojure

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели7.7K

Coroutine, Fiber, Virtual thread - это всё одно и то же?

Или нет ?

Или нет.

А если под капотом всё равно JVM, почему нельзя просто везде включить virtual threads и успокоиться? Разберемся!

Узнать что есть кроме Java Threads

CTE в PostgreSQL: как писать сложные запросы просто

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели13K

Запутались в многоэтажных SQL‑запросах? Обобщённые табличные выражения (CTE) — тот инструмент, который превращает лапшу из JOIN и подзапросов в читаемый, модульный код.

Разберем на реальных примерах из FinTech и e‑commerce, как разбивать сложную логику на цепочку простых шагов, использовать CTE в UPDATE/DELETE, строить рекурсии для иерархий и избегать ловушек оптимизатора в PostgreSQL.

Разобраться с CTE

CRUD без боли: форма запроса как граница безопасности поверх Prisma

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели5.6K

Стек: prisma-generator-express + prisma-guard: генерация CRUD-роутера, валидация ввода, ограничение формы запроса и изоляция тенантов. Подход я для себя называю shape-as-boundary: форма запроса становится исполняемой границей доступа.

В примерах ниже - сайт аренды/продажи недвижимости. Реальный проект был другим, кадровой платформой, но я перевожу примеры на недвижимость, чтобы не добавлять лишний контекст.

Читать далее

Codex 5.3 vs Claude Opus 4.6 на реальном Java‑монолите

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели19K

Я сравнил Codex 5.3, Claude Opus 4.6 и GPT-5.5 на реальном многомодульном Java-монолите: скопировал проект в отдельные ветки, дал агентам похожие задачи и прогнал их через цикл правок, ревью и e2e-тестов.

Результат: чем дешевле - тем лучше результат.

Читать далее

Техники GenAI в Spring AI

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели11K

В статье рассмотрим ряд техник GenAI, реализованных в модуле Spring AI, и ответим на вопрос: является ли ChatClient лишь тонкой оберткой над API провайдеров LLM или предоставляет функциональные возможности, которые имеет смысл применять в реальных проектах. В качестве примера будем итеративно разрабатывать приложение, интегрированное с Anthropic, и разбирать возникающие по ходу проблемы.

Читать далее

System Design: проектируем Dropbox, сервис для хранения и обмена файлами

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели11K

Самая интересная часть в проектировании Dropbox — не хранение метаданных, а работа с самими файлами: как загружать большие объекты без перегрузки своих серверов, как возобновлять загрузку после обрыва и как быстро синхронизировать изменения с другими устройствами. В статье подробно разберём, как всё это складывается в работающую архитектуру облачного хранилища.

Читать далее

Ближайшие события

Локальное нагрузочное тестирование в Java с использованием Virtual Threads

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.2K

Всем привет! Меня зовут Михаил, я работаю главным экспертом в ОТП Банке.

Я люблю тестировать свои решения и почти всегда пишу unit- и integration-тесты. Но вот с нагрузочным тестированием ситуация обычно совсем другая: о нем вспоминают ближе к релизу, когда архитектуру уже поздно менять.

В какой-то момент я поймал себя на мысли:

А как вообще заранее понять, сколько ресурсов будет потреблять сервис под нагрузкой?

Сколько памяти съест приложение? Когда упрется в CPU? Как поведет себя БД при разном кол-ве запросов?

Чтобы ответить на эти вопросы, я написал небольшую библиотеку для локального нагрузочного тестирования на Java Virtual Threads. Она запускает большое количество задач, собирает метрики и формирует отчет - прямо в консоли или в CSV.

Сегодня я покажу сам подход, разберу код библиотеки и оставлю ссылку на GitHub-репозиторий, чтобы вы могли попробовать ее у себя или адаптировать под свои задачи.

Читать далее

Ответчик не показывает исходный код. Что делать истцу?

Время на прочтение7 мин
Охват и читатели8.5K

Представьте: ваша компания обнаружила, что конкурент выпустил продукт, подозрительно похожий на ваш. Вы знаете, что код скопирован, но доказать это в суде не можете, потому что у ответчика находится тот самый исходный код, который нужен для экспертизы. А предоставлять его он отказывается. Что делать в такой ситуации?

Читать далее

Каталог преднастроенных моделей, VDS и другие обновления: дайджест Selectel за апрель

Время на прочтение6 мин
Охват и читатели10K

Этот дайджест получился объемным! В апреле команда Selectel презентовала Foundation Models Catalog, запустила VDS и Enterprise-grade ЦОД. И это лишь малая часть обновлений. Все подробности — ниже.

Читать далее

Сон в условиях дедлайна

Время на прочтение4 мин
Охват и читатели7.2K

Привет, Хабр! А давайте поговорим о том, как быть, когда спать некогда, ибо дедлайн близок.

Дедлайн подкрадывается, как обычно, не то, чтобы прямо внезапно, но именно тогда, когда ты к нему вообще не готов. Сначала урезаешь время на еду, потом страдает личная жизнь и, конечно, сон. "Да ну, ерунда, пару ночек как-нибудь перетерплю, чего уж" - говоришь ты себе и работаешь дальше, превозмогая. Но мозг очень не любит, когда его оставляют без сна.

Читать далее

DWH в 2026: четыре зоны вместо Inmon, Kimball и Data Vault 2.0

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели8.2K

Когда инженер слышит «нам нужно хранилище данных», задача редко звучит однозначно. Кто-то задыхается на боевой OLTP-базе под аналитической нагрузкой. Кто-то впервые строит BI и не понимает, с какого края подходить. У кого-то накопились данные из десятка систем-источников, и существующих средств уже не хватает.

У всех «хранилище». А правильный технический ответ зависит от условий задачи.

За годы работы в банках, ритейле и системной интеграции мы пришли к простой картине: для среднего и крупного бизнеса большинство DWH-проектов сводится к четырёхзонной архитектуре поверх двух специализированных движков. Не Inmon, не Kimball-star-schema, не Data Vault 2.0 - и при этом не «modern data stack как у Databricks один-в-один».

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

Читать далее

Когда bottleneck не в БД: ускоряем генерацию Excel — отчетов в Go

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7.7K

Всем доброго времени суток!

Недавно пережитый опыт работы с отчетом хочу выставить на всеобщее обозрение, вдруг кому‑то будет полезен. Чтобы не томить и сохранить более технический подход, давайте сразу начнем «разбор полёта».

В какой‑то момент у нас появился вот такой запрос:

Читать далее

Девять испытаний роста нагрузки: от стартапа к приложению для 25 миллионов пользователей

Время на прочтение12 мин
Охват и читатели8.8K

Эта статья совсем не технический анализ, а увлекательный рассказ о том, как маленький, но очень перспективный стартап стал топовым приложением, а также о том, какие сложности встали на пути команды разработки, DevOps и тестирования X5 Tech.

Мы сразу заложили основные принципы нагруженного приложения: микросервисы как основа всего, полное покрытие метриками, асинхронность, кэширование на максималках. Какую-то функциональность разрабатывали сами, где-то задействовали сервисы других техкоманд из X5, а где-то и сторонние решения с рынка.

Весь код писали на Python, использовали FastAPI и другие популярные на тот момент фреймворки и технологии.

Читать далее