Обновить

Бэкенд

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

Создаем клиентскую библиотеку ROS2. Элементы ноды

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

Теперь, когда в вашей клиентской библиотеке появились сообщения, можно перейти к созданию ROS2 ноды и связанных с ней элементов (издателей, сервисов и т.п.). На самом деле процесс добавления этих элементов мало отличается от создания обёртки для таймера, описанный в первой части, поскольку всё сводится к надстройке над функциями библиотеки rcl. Поэтому я не буду рассматривать их подробно, а остановлюсь только на отдельных особенностях.

Читать далее

GLM-5.1 придумал для меня новый алгоритм

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

Друзья, знаю, что интернет переполнен воспеванием AI, что вызывает у многих людей (особенно специалистов) фрустрацию, особенно когда речь заходит о написании кода на C/C++. Я не AI-проповедник – просто активный и ответственный программист, который пользуется AI-инструментами. Недавно я предложил AI (если быть точнее, opencode + GLM-5.1) придумать алгоритм для одной из задач, над которой я работаю, и он справился очень хорошо. Это не прорывной алгоритм, на котором я разбогатею, но он интересный: составленный из известных компонентов, но всё же новый. В статье расскажу:

Как решать задачу “дана битовая строка, нужно найти все позиции в ней, что количество единиц минус количество нулей до этой позиции равно заданному числу”

Что мне придумал AI для этой задачи

Что я использую для того, чтобы AI писал что-то адекватное на C++

Если вам интересны алгоритмы и структуры данных, то описанная задача используется в контексте RMQ/LCA.

Читать далее

А с вашими миграциями все в порядке?

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

Миграции базы данных вроде бы есть, Liquibase подключен, changelog лежит в репозитории, CI зелёный, релизы проходят регулярно. Значит, процесс под контролем?

Не всегда…

Читать далее

Подружитесь со своим ассистентом

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

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

Записал вот и даже перевел на русский свои рецепты, чтобы каждый раз не вставать.

Любопытно!

МакКладун или почему балансеруны не нужны

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

Вчера автор побывал на прекрасной конференции Backend Talks 360 от компании Yandex и не в силах спокойно спать, не ответив конструктивной критикой на доклад Ильи Абрамова о работе Яндекс.Диска, автор принялся писать очередной «В интернете кто‑то не прав». Что из этого вышло — добро пожаловать под кат.

Достать меч

Memento mori

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

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

Читать далее

Основы тестирования и правила, которые помогают надёжно тестировать сложные приложения: примеры на Python

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

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

Читать далее

Как я за последний год стал программировать по-новому. А как вы?

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

Довольно интересное наблюдение: я перестал пользоваться автокомплитом в IDE, который предлагает LLM.

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

Читать далее

Как работают lambda-функции в Python: замыкания, позднее связывание и антипаттерны

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

Вы всё ещё используете map и filter с лямбдами в 2026 году? Подготовил большой гайд по анонимным функциям в Python: от самого первого lambda x для новичков до разбора байт-кода, замыканий и жестких антипаттернов, за которые бьют по рукам на код-ревью.

Читать далее

Калькулятор VRAM для локальных LLM: Какие модели ИИ запустятся у вас на компьютере?

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

Когда я начал ковыряться с локальными LLM, главная боль была не в установке моделей, а в понимании, что вообще влезет в моё железо. Документация Hugging Face говорит “Llama 3.1 8B” — что это значит для моей видеокарты с 16 GB? А если хочу 32k контекст? А с Q4_K_M? Несколько недель назад мне попался open-source калькулятор whatmodelscanirun.ru. Прогнал его на трёх своих сетапах (4060 Ti, 3090, M2 Pro), сравнил предсказания с реальными запусками через llama.cpp и разобрался, как работает математика внутри. Спойлер: алгоритм правильный, но систематически переоценивает скорость на 15-25%.

Читать далее

manage.py migrate в пятницу в 17:30 на проде с 3K RPS и таблицей 200М строк

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

Всем привет! Меня зовут Макс, я Lead Backend и автор YouTube‑канала PyLounge

Это третья часть мини‑серии о Django‑миграциях. В первой части мы готовились к миграциям и разбирались с конфликтами, во второй чинили типичные подводные камни. Если их не читали, то рекомендую начать именно с них, а затем вернуться сюда.

В этом же материале поговорим о самом интересном: что происходит, когда python manage.py migrate запускается в 17:30 в пятницу на проде, под 3k RPS и таблицей в 200 миллионов строк. 

Расскажу какие блокировки в PostgreSQL берёт каждая операция Django, что внутри atomic = False, как пишется правильный паттерн expand‑migrate‑contract, зачемнужны AddIndexConcurrentlyAddConstraintNotValidSeparateDatabaseAndState и как обновлять данные на больших таблицах.

P. S. примеры намеренно упрощены, чтобы влезли в статью и не задушили. В реальной жизни всё ещё хуже — но шаги те же.

P. S.S. При подготовки этого материала ни одна продовая база данных не пострадала. 

Читать далее

Возвращение блудного программиста (ч. 4)

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

Эта часть про то, как я пилю бэкенд, учусь на этом и получаю эмоциональные качели.

Для начала, напомню о себе: после 12 лет отсутствия в сфере я решил вернуться к своему базовому образованию – инженер-программист. Что-то приходится «вспоминать с нуля», но я не люблю начинать изучение полностью с теории, я больше экспериментатор.

Читать далее

Я заставил LLM писать Rust полгода. Вот что они стабильно ломают

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

Полгода использовал Claude, GPT и Cursor как полноценного второго разработчика на Rust в проде. Собрал семь категорий ошибок, которые модели стабильно делают и которые проходят cargo build, cargo test, иногда cargo clippy и при этом являются UB или скрытыми архитектурными ловушками. Lifetime laundering, std::sync::Mutex через .await, Drop у транзакций, unaligned read, async cancellation, orphan rule и массивы на стеке. Разбираю, почему именно Rust ломает LLM и что с этим делать.

Читать далее

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

Очереди в микросервисах: 5 ошибок, которые приводят к дублям и потерям

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

Почему добавление второго consumer«а в очередь может привести к двойным списаниям? Разбираем на реальном кейсе: как один Topic стоил компании 312 дублей за час. »

Сравниваем поведение JMS, Kafka и RabbitMQ, показываем, почему ни одна очередь не даёт exactly‑once из коробки, и как идемпотентность, Dead Letter Queue и правильный выбор канала (команды vs события) делают интеграции надёжными.“

Готовые схемы, продакшен‑код на Java и чек‑лист, который стоит применить прямо сейчас!

Читать разбор

FlakyDetector 2.0: Как я превратил сырое исследование в продакшен-инструмент с AST, ML и красивым дашбордом…

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

Представь: пятница, вечер. Ты запускаешь CI для последнего пулл-реквеста, идёшь наливать кофе, возвращаешься… а билд упал. Один тест. Ты перезапускаешь проходит. «Флаки», — вздыхаешь ты и ставишь лейбл flaky. На следующей неделе история повторяется. Потом ещё раз.

Мы привыкли, что нестабильные тесты — это неизбежное зло. Их ловят повторными прогонами, а если повезёт вырезают. Но знаешь, что реально бесит? В 80% случаев корень проблемы можно найти, просто посмотрев на код теста.

Я написал инструмент, который это делает автоматически. Без логов CI, без истории прогонов — только AST и машинное обучение.

Назвал его FlakyDetector. Первая версия была исследовательским прототипом (про него у меня выходила статья на Хабре). А теперь — это полноценный продукт: CLI, веб-дашборд, CI-интеграция и даже React-фронтенд. И да, он open source.

Давай разберёмся, как это устроено.

Читать далее

Обработка исключений, возникших при обработке исключений

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

Исключения рождаются не только в основном коде, но и в обработчиках этих самых исключений. Зачастую вопросу не уделяется должного внимания. Действительно, что может пойти не так в блоке catch? Там ведь код тривиальный! Но это только на первый взгляд.

Например, безобидный LOG.warn("...") выливается в десяток вызовов нижележащих методов. И чем больше «наслоений» в библиотеке логгирования, тем выше вероятность сбоя. Всё бы ничего, если бы не одна особенность языка Java…

Читать далее

Сравнение моделей конкурентности JVM языков: Нужен ли еще ThreadPool после coroutines, ZIO и Virtual Threads?

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

В последней части про модели конкурентности JVM языков мы сравним разные подходы друг с другом. И ответим на вопрос “А зачем теперь тред пулы, если есть столько модных концепций: корутины, файберы, виртуальные потоки ?”

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

Я заколебался искать запятую в коде бота — и написал библиотеку, чтобы диалоги жили в YAML

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

Я три года пилю Telegram-бот для одного B2C-продукта. В пятницу вечером маркетолог попросил убрать запятую — я потратил двадцать минут на одну запятую, потому что текст был размазан по семи питон-файлам. И тут меня переклинило. Так появилась библиотека, где все диалоги бота живут в одном YAML — с клавиатурами, медиа, условиями и опциональной очередью под лимит Telegram. Выложил на PyPI, делюсь.

И что?

Кэш результатов запросов в Postgres Pro: как ускорить часто выполняющиеся запросы и разгрузить базу

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

Каждый раз, когда пользователь открывает страницу каталога или дашборд со статистикой, база данных заново считает одно и то же. Запрос к 800 тысячам строк ради одного числа — снова и снова. Расширение pgpro_result_cache в Postgres Pro Enterprise решает эту проблему на уровне СУБД: результат тяжёлого запроса сохраняется в разделяемой памяти и при повторном обращении возвращается за миллисекунду — без сканирования, без нагрузки на процессор, прозрачно для приложения. В этой статье разберём, как это работает, когда кэш действительно полезен и на что нужно обратить внимание при настройке.

Читать далее

Полный гайд по каналам обмена сообщениями: от теории к реальным кейсам

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

Первая статья из цикла о каналах обмена сообщениями. Разбираем архитектурные дилеммы, конкурирующих потребителей, message storm, гарантированную доставку и лучшие практики команд, работающих с JMS и Kafka.

Читать далее