Обновить

Бэкенд

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

AI-ассистент для 15 000 файлов: быстрее, чем спросить у коллег

Время на прочтение13 мин
Количество просмотров6.2K

Привет! Я Алексей из команды Fiji, которая занимается внутренним продуктом для хранения и редактирования геоданных. Мы уже немного рассказывали о нем на Хабре: раз, два, три, четыре.

Наш проект активно развивается уже 10 лет, недавно ещё и команда выросла вдвое. Соответственно, почти вдвое увеличилось количество задач, а вместе с ним — и сложность интеграций с другими командами. Требования часто дополняются и меняются по ходу реализации, статьи в Confluence не всегда актуализируются, а часть информации оседает в чатах и на созвонах. Только код в мастере стабильно отражает то, что реально работает на продакшне.

Не так давно у нас случился триггер на одном из созвонов — технолог задал вопрос про задачу, которую делали пару месяцев назад, а мы все сидим и глазами хлопаем, ничего не помним. Ни заказчики, ни аналитики, ни разработчики. Кого-то из тех, кто мог бы ответить, на встрече не было. Тут и подумалось: в коде-то эта вся логика есть, нужно её только достать и переварить обратно в текст.

Так и появилась идея сделать помощника как для новых ребят, так и для старичков, так как весь контекст держать в головах уже проблематично: основной солюшн — это почти 15 тысяч файлов на C# и около 1.5 млн строк кода, плюс утилиты и пара сервисов на Java.  В статье — история о пройденном пути создания командного ассистента, который помогает отвечать на любые вопросы о проекте.

Читать далее

ReVu — Open Source AI-ревьюер для ваших Pull Request

Время на прочтение6 мин
Количество просмотров2.8K

Всем привет!

Недавно мы с приятелем обсуждали, как устроены рабочие процессы в бигтех-компаниях и какую роль в них уже играет ИИ. Речь в основном шла о зарубежных компаниях — у него там есть знакомые, которые делились опытом изнутри. Один из самых любопытных моментов — использование искусственного интеллекта для предварительного код-ревью в Pull Request: прежде чем коллеги возьмутся проверять изменения, PR уже анализирует ИИ и указывает на потенциальные проблемы.

Эта идея меня зацепила, и я решил изучить, какие готовые решения уже существуют (кроме встроенного в GitHub Copilot). Из более-менее крупных нашёл только PR Agent. Я протестировал его, но по ряду причин он мне не подошёл: хотелось больше гибкости, настройки под свои нужды и возможности запускать всё самостоятельно, без передачи кода сторонним сервисам.

Так родился проект ReVuself-hosted инструмент для автоматического код-ревью в Pull Request с помощью ИИ. Он универсален, легко кастомизируется и не требует доверять исходный код внешним платформам.

Если вам интересны подобные материалы и проекты, подписывайтесь на Telegram-канал «Код на салфетке» — там я делюсь гайдами для новичков, историями разработки и полезными инструментами.

Читать далее

Gossip-оператор для Kubernetes вместо централизованных контроллеров

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров940

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

Все мы привыкли к операторам Kubernetes с их паттерном leader election. Один под становится лидером, остальные молча ждут своей участи в тени, обрабатывая события только через его призму. Надежная схема? Безусловно. Но что, если я скажу, что можно создать оператор вообще без единой точки отказа, где каждый под равен друг другу, а координация действий происходит через механизм слухов, gossip-протокол? Звучит как ересь? Возможно. Но это работает.

Подробнее о реализации

Регулярная катастрофа и как её избежать. Подход к регулярным выражениям

Время на прочтение8 мин
Количество просмотров5.7K

Салют, Хабр!

Я Алексей, занимаюсь ассистентом в SberDevices. В свободное время занимаюсь дискретной математикой, поэтому обожаю регулярные выражения — они по сути довольно близки к предмету моих интересов и делают код удобоваримее. В этой статье хочу рассказать о математике регулярных выражений и их интересной особенности, которая возникает внезапно

Читать далее

Разбираемся с DDD: как проектировать доменный агрегат, чтобы он не стал безразмерным

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

Последние 4 года я занимаюсь реализациейпроектов на PHP по DDD, используя слоистую архитектуру. Каждый раз я сталкиваюсь с одной из самых насущных проблем DDD: определение границ агрегата. Ведя разработку «как удобно», очень легко не заметить, как вся бизнес логика сосредоточилась в один «божий класс».

В этой статье я поделюсь своим опытом, как проектировать и разрабатывать по DDD, не скатываясь в «один агрегат, чтобы править всеми». Поговорю о проблемах определения границ агрегата и цены чтения, гидрации и содержания больших объектов в памяти PHP процесса.

Читать далее

Как прошёл Infra Meetup Wildberries & Russ

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров439

Привет, Хабр! 2 октября прошёл первый митап WIldberries & Russ по инфраструктуре. Обсудили всё самое интересное: от файловых хранилищ на экстремальных нагрузках до автоматизации репозиториев и философии DevOps. Делимся записями докладов.

Читать далее

QUIC наконец-то приходит в Node.js: не прошло и 5 лет

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

Команда JavaScript for Devs подготовила перевод статьи о долгом пути протокола QUIC в Node.js. Четыре года сообщество ждало, пока OpenSSL откроет нужные API — и вот, с выходом версии 3.5, это наконец случилось. Уже в Node.js 25 ожидается первая реализация QUIC — шаг, к которому проект шёл почти полдесятилетия.

Читать далее

Топ-5 библиотек Python, которые должен знать каждый новичок

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

Знания синтаксиса Python недостаточно, чтобы решать реальные задачи. Сила языка — в его экосистеме. В этой статье мы разбираем 5 «рабочих лошадок», которые должен иметь в своем арсенале каждый начинающий разработчик: Requests, BeautifulSoup, Pandas, Telebot и Pillow.

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

Читать далее

12 фишек в административной панели Django, которые экономят мне 12 часов в неделю

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

12 способов кастомизации Django admin — поиск, фильтры, инлайны, действия, автодополнение, list_editable и оптимизация запросов — которые значительно повышают продуктивность.

Я обожаю функции-бумеранги: сделал работу один раз — и они продолжают приносить тебе пользу. Административная панель Django просто набита ими. Небольшие, точечные настройки, которые сбривают минуты с каждой задачи, пока ты не замечаешь, что к пятнице появилось свободное место. Вот 12 изменений, которые стабильно будут помогать вам экономить время, каждую неделю.

Базовая модель
В качестве примера представьте:

Читать далее

Гайд по применению Object Lock на примере S3-объектного хранилища VK Cloud

Время на прочтение8 мин
Количество просмотров1.5K

Количество кибератак, направленных на облачные и гибридные сервисы в России, за первые 8 месяцев 2025 года превысило суммарный показатель за 2023 и 2024 годы и достигло отметки в 105 млн инцидентов. В условиях подобных вызовов востребованной стратегией для бизнеса становится использование всех доступных мер защиты инфраструктуры и данных, в первую очередь критически значимых, например финансовых отчетов и юридических документов. 

Рассказываем и показываем, как обеспечить максимальный уровень защиты данных в объектном хранилище S3 на примере Object Storage от VK Cloud.

Читать далее

Платформа конструктора продуктов для страховой компании — как автоматизировать процессы при запуске

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров215

Всем привет, на связи Дмитрий Иванов, технический директор ВебРайз. В последнее время несколько раз сталкивались с типовой задачей в страховом секторе – необходимо разработать продуктовый каталог для страховой компании, с возможностью быстрого создания продуктов - конструктор продуктов, каталог справочников НСИ, калькулятор расчетов и страховой премии, фронт для онлайн продаж и, желательно, постпродажное обслуживание.

Читать далее

Как я автоматизировал анализ логов из Kibana с помощью LLM и AI-агентов

Время на прочтение5 мин
Количество просмотров4.4K

Инструменты вроде OpenSearch, Elastic или Kibana давно стали стандартом для поиска и визуализации логов благодаря удобству и мощной поисковой системе. Однако, когда речь заходит о сложном анализе — агрегациях, парсинге, выявлении сложных закономерностей — их встроенные средства быстро достигают предела возможностей. Особенно сложно становится, если структура логов далека от идеала: например, как у нас — всё содержимое свалено в одно поле Message в формате JSON.

Меня зовут Игорь Щегловитов, я работаю экспертом по тестированию в QC облачной инфраструктуры и веб-порталов. Раньше наша команда решала такие задачи кастомными утилитами на C#, которые выгружали логи из ELK и анализировали их локально. Однако каждое новое требование превращалось в мини-проект: доработать код, написать новые парсеры, скрипты агрегации и фильтрации. Работа замедлялась, техдолг рос.

Я решил использовать связку AI-агентов с кастомными промптами, собственный сервисный слой (MCP) для доступа к логам и LLM-модель, чтобы превращать пользовательские запросы в автоматический алгоритм анализа. Так, кейсы вроде «Посчитай уникальных пользователей за сутки» или «Проанализируй ошибки за период» решаются без ручного кодинга.

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

Читать далее

Группировка сабтестов в Go: от простого к сложному

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров744

Команда Go for Devs подготовила перевод статьи о том, как правильно группировать сабтесты в Go. Автор показывает, что в большинстве случаев достаточно держать тесты плоскими, а когда нужна разная инициализация и очистка — добавить лишь один уровень вложенности. В статье разбираются плюсы и минусы разных подходов: от ручных t.Run до reflection-хаков и сторонних библиотек.

Читать далее

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

Виртуальные потоки в Java: эволюция, практика, подводные камни

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

Привет! Меня зовут Денис, я руковожу группой R&D в Naumen Service Management Platform. В этой статье — разбор виртуальных потоков (VT) в Java: почему исторически обычные потоки упирались в I/O, как и зачем появились виртуальные потоки, что пошло не так в Java 21, что исправили в JDK 24–25, а также когда виртуальные потоки необходимы, а когда — лучше от них отказаться.

Читать далее

Исследование кремниевых кристаллов процессора Intel 386

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

386 — редкий случай, когда топология кристалла напрямую пересекается с историей индустрии. В этой статье разберём, как переход x86 на 32 бита и смена NMOS на CMOS отразились на самом чипе: где живут тракт данных и ПЗУ микрокода, почему shrink с 1,5 до 1,0 мкм дал ~60% экономии площади, но потребовал переложить блоки и переосмыслить разводку. Посмотрим, чем DX отличается от SX на уровне бонд-площадок и шин, и почему у 386 SL транзисторов стало втрое больше — из-за интеграции контроллеров, SMM и логики управления питанием.

Это взгляд на 80386 через микрофотографии — и на эпоху, в которой Compaq перехватил архитектурное лидерство у IBM.

Заглянуть внутрь 386

Erlang-совместимые битовые строки в Go: создаём funbit

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров898

Erlang-совместимые битовые строки в Go: создаём funbit

TL;DR: Мы перенесли битовый синтаксис Erlang в Go, чтобы парсить бинарные протоколы без боли. Получилась библиотека funbit — декларативный парсер с поддержкой не выровненных по байтам данных.

Предыстория

В процессе разработки funterm — мультиязыкового REPL, объединяющего Python, Lua, JavaScript и Go — мы столкнулись с необходимостью эффективной работы с бинарными данными. Нужно было парсить сетевые протоколы, обрабатывать структурированные данные и работать с битовыми полями на уровне отдельных битов.

Читать далее

Аутсорсинг айтишников, где проходит граница между проектом и трудовыми отношениями

Время на прочтение2 мин
Количество просмотров733

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

Читать далее

Function Object — как основа бизнес логики приложения

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

В предыдущей статье "Адаптированный паттерн Command с использованием Dependency Injection", я описывал как инкапсуляция логики приложений в отдельные объекты-функции позволяет получить преимущества в архитектуре приложений.

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

Эта статья пытается исправиль допущенную автором ошибку.

Статья является дополнением к предыдущей.

Читать далее

Greengage DB: новый open-source монстр MPP-аналитики. Конец эпохи Greenplum?*

Время на прочтение9 мин
Количество просмотров2.2K

Что, если Greenplum пережил перерождение?
Новый проект Greengage DB возвращает PostgreSQL в большую игру — теперь с авто-масштабированием, чистым ядром и реальной совместимостью.
Разбираемся, почему этот форк может стать «Linux для аналитики».

Читать далее

Дорожная карта Java backend-разработчика: c Junior до Middle

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

Привет! Меня зовут Бромбин Андрей. За последние годы у меня накопилось достаточно материалов, практик и ошибок — иногда красивых, но всё же ошибок. Этого хватило, чтобы собрать маршрут до грейда Middle.

Это не «большая книга всего на свете для джуна» и не выдуманный субъективный маршрут. Мне удалось привлечь к созданию этой статьи ведущих разработчиков крупных российских компаний — от каждого я получил честный фидбэк: где перегнул, где недосказал, чего не хватает на практике. Приоритеты были сверены, лишнее вычищено и оставлено только то, что реально двигает.

Признаться, честно: тут и для меня нашлось, что подтянуть.

Выстроить маршрут