Обновить

Бэкенд

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

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

Время на прочтение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 мин
Количество просмотров19K

Знания синтаксиса 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 мин
Количество просмотров749

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

Читать далее

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

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

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

Читать далее

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

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

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 мин
Количество просмотров734

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

Читать далее

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.

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

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

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

Сокращаем трудозатраты при выводе витрин на Hadoop

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

Привет, друзья! Я Олег Васильев, владелец продукта Dream DE. В этой статье расскажу, как мы научились быстро и эффективно выводить витрины на Hadoop в эксплуатацию, или как мы за один квартал вывели 26 инициатив в рабочую среду силами четырёх инженеров по данным.

Читать далее

Как сокращение полных путей файлов в логах влияет на производительность и размер Браузера

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

Всем привет! Меня зовут Илья Кара́псин, я работаю над производительностью Яндекс Браузера. Задачи моей команды включают не только работу над самим браузером, но и прямое улучшение используемых в нём опенсорс‑решений, например Chromium и применяемых в нём проектов (Blink, V8, Catapult), в том числе и компиляторов (LLVM Clang). Другими словами, мы вносим вклад в сообщество. При этом поиск и создание улучшений для сторонних опенсорс‑проектов может стать прямой рабочей задачей даже в ходе стажировки.

К слову, моя работа в Браузере как раз с неё и началась. При отборе положительно сказалось наличие у меня pet‑проектов: отдельного внимания заслужил проект, использующий озвучку и SFX (сноска: сокращение от англ. sound effects — звуковые эффекты) из Heroes of Might and Magic V. Так удивительно совпало, что мой будущий руководитель ранее работал в Nival Interactive как раз над этой игрой.

А в этой статье я расскажу о том, как обычное сокращение полных файловых путей в логах до имени файла (например, path/to/filename → filename) может повлиять на размер исполняемых файлов и производительность Браузера, а также внести вклад в проект LLVM Clang.

Читать далее

Как я искал работу бэкенд разработчика с одним годом опыта. Мысли, эмоции, статистика

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

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

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

Читать далее