Обновить

Бэкенд

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

Когда дашборды лгут. Гайд по перцентилям, очередям и e2e-бюджету

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

Вы уже научились отслеживать среднюю скорость запросов на проекте, и это большой шаг. Без преувеличений и какой либо иронии.
И теперь, когда вы перешли от "не измеряем ничего" до "измеряем среднее" — вы попали в ловушку.

Пока вы с удовольствием наблюдаете в отчетах красивые 200ms — ваши пользователи стучат в службу поддержки со словами "у меня все висит".
И они не врут, у них действительно TTF порядка 6 секунд. Но и вы не врете, у вас действительно 200ms в отчете!

Врет метрика, а вы ей верите.

Давайте разбираться.

Читать далее

AssemblyLoadContext как архитектурный приём

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

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

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

Осваиваем ALC

Как наблюдение за пауком помогло мне победить хаос задач: создал сервис на основе паутины

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

Рассказываю о философии «липкой паутины» и о том, как я сделал инструмент, который превращает разрозненные дела в целостную систему. Без дедлайнов и уведомлений.

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

Традиционные инструменты (канбан, TODO-листы) учитывают задачи, но игнорируют связи между ними. Они измеряют скорость, но убивают целостность. Паутина же — идеальная визуальная метафора для любой сложной системы. И сегодня я покажу, как эта метафора воплотилась в работающий инструмент — Stickyweb.

Читать далее

Cex в C# (вычисление выражений из строк)

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

Хочу поделиться небольшим кусочком кода для быстрого вычисления математических выражений из строк, который изначально был написан для моей инди игры. Проект я решил назвать Context EXpressions 🥰

Читать далее

Парсим Ozon. Собираем информацию о ценах, товарах и отзывах

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

После того как мы разобрались с парсингом Wildberries, логично двигаться дальше и освоить Ozon. Но здесь нас ждёт сюрприз. Ozon гораздо сложнее парсить из-за динамической загрузки контента и более строгих политик автоматизированного доступа.

В этой статье мы разберём, почему для Ozon нужен браузерный парсинг, как использовать Playwright для успешного парсинга и как обернём решение в Telegram-бота, который по запросу пользователя парсит товары и отправляет CSV-файл.

Читать далее

Оркестрация на BPMN: взгляд изнутри

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

Современные подходы к разработке программного обеспечения диктуют необходимость быстрого внедрения и изменения бизнес-сценариев прямо в продакшене. Особенно это критично для систем, где логика процессов часто корректируется — например, в финансовых, маркетинговых или рекламных платформах.

Одним из наиболее удобных инструментов для этого сегодня является оркестрация с использованием BPMN-диаграмм, где визуальное моделирование бизнес-процесса превращается в исполняемую логику.

Читать далее

Изучаем Python: модуль json для начинающих с домашним заданием

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

Если вам когда-либо приходилось передавать структурированные данные между двумя разными системами, вы наверняка сталкивались с JSON. Сегодня JSON (JavaScript Object Notation) — это общепринятый стандарт для обмена данными в интернете. Он стал настолько популярным благодаря своей простоте и эффективности.

Читать далее

Интеграция Langfuse с приложением .NET

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

Несмотря на растущую популярность платформы Langfuse для отладки и контроля LLM ориентированных приложений, на момент написания статьи экосистема .NET остается без официальной поддержки. На момент написания статьи готовые SDK доступны только разработчикам на Python и JavaScript/TypeScript. Однако есть возможность интеграции с помощью стандарта OpenTelemetry. И в данной статье будет приведен один из примеров как это сделать.

Читать далее

Мой первый AI-агент на базе Neuron — PHP-агентного фреймворка

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

Я PHP-разработчик с многолетним стажем (от слова «много»). Привык, что мой мир — это веб‑приложения, серверный код и бесконечные «фичи» на Laravel или Yii (да... легаси — это мой конёк). В последние пару лет вокруг бушует AI‑бум: всюду слышно про нейронки, LLM, про каких‑то «агентов», которые сами решают задачи. И, признаться, временами у меня появлялась лёгкая тревога. Не отстану ли я от поезда, если не перейду полностью на Python/NodeJS или не выучу новый фреймворк? Ведь почти все примеры ИИ‑интеграций, что я видел, были на Python или JavaScript. PHP в этих разговорах фигурировал редко, если вообще упоминался.

Недавно я наткнулся на упоминание о Neuron — инструменте, который гордо назван «первым enterprise‑ready агентным фреймворком на PHP». Мой скептицизм сразу поднял голову: «Агентный фреймворк? На PHP? Серьёзно?» С другой стороны, это заинтриговало. Если всё правда, то вместо того чтобы судорожно перелистывать учебник по Python, возможно, я смогу внедрять ИИ прямо там, где мне комфортно — в PHP‑стеке. И вот я решил разобраться, что же такое этот Neuron и насколько он реален.

Погрузиться в Neuron

DNSSEC и DNS: как доменные имена управляют интернетом + настройка BIND на Ubuntu

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

Все мы любим, когда интернет работает (и не виснет 🙂) — сайты открываются, видео грузятся, письма доходят. Но мало кто задумывается, как именно браузер узнаёт, куда вас отправить, когда вы вводите знакомое «habr.com». 

Эта статья для тех, кто хочет понять, как именно устроена и работает система доменных имён, её защита на уровне DNSSEC и почему эта технология важна для безопасности интернета. Если вы техно-гик и не боитесь деталей — добро пожаловать под кат!

Читать далее

Как memory maps (mmap) обеспечивают в 25 раз более быстрый доступ к файлам в Go

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

Команда Go for Devs подготовила перевод статьи о том, как memory maps (mmap) обеспечивают молниеносный доступ к файлам в Go. Автор показывает, что замена обычного чтения и записи на работу с памятью может ускорить программу в 25 раз — и объясняет, почему это почти магия, но с нюансами.

Читать далее

Оживляем ESP8266 и ESP32 за 15 минут без программистских заморочек с помощью MicroPython

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

Что, если я скажу, что для прошивки ESP8266/ESP32 не нужна Arduino IDE? Покажу, как с помощью портативных программ за 15 минут вдохнуть жизнь в ваш модуль: прошить MicroPython, помигать светодиодом и даже подключиться к Wi-Fi. Без установки гигабайтных программ и лишних телодвижений.

Прошить и оживить

Паттерны микросервисной архитектуры: от собеседования до прода

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

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

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

Читать далее

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

Python через 10 лет: Гонка за производительностью или закат эпохи?

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

Python занимает лидирующие позиции в рейтингах популярности, таких как TIOBE и IEEE Spectrum, и является основным языком для самых быстрорастущих и востребованных областей: искусственного интеллекта, машинного обучения и анализа данных. Однако, несмотря на текущие успехи, технологический ландшафт меняется, и через 10 лет Python может существенно отличаться от того, каким мы его знаем сегодня. Цель этой статьи — предоставить серьезный и взвешенный прогноз его эволюции к 2035 году.

Читать далее

x402 и MCP для чайников

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

С появлением всё большего количества сервисов/агентов/платформ/llm-юзеров встал вопрос о встроенной и универсальной оплате. Одним из самых лучших ответов на этот вопрос становится протокол x402.

x402 - это протокол от Coinbase, продолжение инициативы от Google с их AP2.

x402 позволяет делать нативные платежи для http-интерфейсов. Запрос->Заголовок->Оплата->Результат. Без карт, лишних кабинетов с балансами, и прочей мороки. Любой веб-ресурс или API может запрашивать оплату, а клиент (человек/агент/бот) могут оплачивать с помощью блокчейн транзакций.

Для тех, кто создаёт MCP, это колоссальный буст: наконец-то появляется монетизация. Каждый вызов вашего API, может быть платным, или только методы подписки или pro-функций, могут быть платными.

Возможность монетизации выведет на рынок большое количество платных MCP, а вслед за ними начнётся настоящий бум всевозможных бесплатных MCP (запись в салон красоты/спа/итд).

Протокол работает на HTTP 402 ответе. В связи с тем, что никто его толком не использует, и он десятки лет остался свободным, сейчас наконец появляется применение.

Читать далее

Ускоряем сборку с помощью Gradle Build Services

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

На одном из проектов, над которым я работаю, я столкнулся с постоянно растущим временем сборки проекта на CI. Оказалось, что причина была в интеграционных тестах работы с БД в модулях с использованием Testcontainers. Каждый модуль запускал свой контейнер и в придачу применял на них миграции Liquibase.

В данной статье я хочу рассмотреть способ решения этой проблемы с помощью Gradle Build Services — механизма для разделения состояния между задачами. Цель - использовать только один контейнер PostgreSQL на всю сборку, и настроить все тестовые задачи на его использование.

Читать далее

Вертикальное шардирование базы данных: проблемы, решения, практические рекомендации

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

База данных — это сердце системы. И в какой-то момент это сердце начинает давать сбои. Не от объема данных, а от их разнородности. Таблица users разрастается до 200 колонок. Одни нужны для логина каждую секунду, другие — для годового отчета раз в год. В итоге, чтобы прочитать два "горячих" поля, база тащит с диска целый блок с "холодными" данными. Это неэффективно.

Читать далее

Поддержка HTTP/3 в Java: что нового в JDK 26 и как это использовать

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

В JDK 26 появилась долгожданная поддержка HTTP/3 в стандартном классе HttpClient. Хотя само API почти не изменилось, теперь можно явно указывать предпочтение использования HTTP/3 как на уровне клиента, так и на уровне запроса.

В новом переводе от команды Spring АйО подробно описывается, как работает выбор версии HTTP, что такое Http3DiscoveryMode, как принудительно использовать HTTP/3 и как HttpClient "обучается" на основе заголовков alt-svc.

Читать далее

О дивный новый C#

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

В следующем месяце выходит очередная версия нашего любимого языка программирования. Чем не повод присесть на кухне с рюмкой чая и обсудить, что не так с современными версиями C#?

Читать далее

Ставим задачи в CRM автоматически по итогам звонков

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

Привет, Хабр! Автоматизация рутинных действий в CRM остаётся одной из ключевых задач для кол-центров, отделов продаж и поддержки. Менеджеры берут на себя обязательства во время звонков — «пришлю предложение», «перезвоню завтра», «уточню по доставке», — но не всегда фиксируют их в системе. В результате теряются сделки и снижается качество сервиса.

В этом материале мы покажем, как на базе звонков МТС Exolve, нейросети GigaChat и CRM Битрикс24 автоматически извлекать такие договорённости с клиентами из звонков и превращать их в задачи, создавая автоматизированный сценарий.

Читать далее