Обновить
512K+

Программирование *

Искусство создания компьютерных программ

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

Рулим в облака: деплой микросервиса генерации ID в Kubernetes

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

Привет, Хабр! Продолжаю серию статей по проектированию и разработке отказоустойчивой микросервисной системы сокращения ссылок.

Если вы только присоединились, рекомендую ознакомиться с предыдущими частями:

Читать далее

Native AOT заставил меня переписать весь .NET проект

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

Мне хотелось, чтобы знакомство с HydraScript выглядело просто: скачал интерпретатор, запустил скрипт. Сомнительно предлагать человеку сначала установить подходящий .NET Runtime ради моего языка программирования.

Переход на Native AOT поначалу казался правкой .csproj. Включил настройку, опубликовал бинарник, пошёл дальше. На практике пришлось переписать всё. Досталось даже интеграционным тестам. А в процессе рефакторинга ещё и пропали логи.

Читать далее

Гайд по switchback‑экспериментам: длина окна, кластеризация ошибок и мощность

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

Новый алгоритм может уверенно выигрывать A/B‑тест и не показывать ожидаемого эффекта после запуска, если эксперимент учитывает только пользователей, но игнорирует общий ресурс. В статье разбираемся, как работают switchback‑эксперименты, почему стандартный анализ даёт ложные выводы и как корректно оценивать результаты.

Разобрать подход

Корутины C++: как приручить асинхронный I/O

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

Когда комитет стандартизации проектировал корутины, за кадром остался один неловкий момент: фрейм корутины (coroutine frame) — это динамический объект. Локальные переменные, буферы под чтение, аргументы и состояние автомата с точкой останова co_await должны где-то физически лежать, и по умолчанию компилятор выделяет это пространство из общей кучи через глобальный operator new. В асинхронном GUI, где корутина заводится на каждое нажатие клавиши и на каждое чтение из файла, это означает межпоточные блокировки кучи на каждом шаге с потенциальным переключением контекста — ровно то, от чего корутины обещали избавить.

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

Заглянуть под капот

Кто нашёл больше багов — агент или человек? Мои замеры 11 недель работы с AI-тестировщиком

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

Одиннадцать недель я вёл дневник каждой рабочей сессии с Claude Code: часы агента, свои часы, судьба каждого кандидата в дефекты. Вышло 277 агентских часов против 213 моих и 94 подтверждённые находки — 77 нашёл агент, 16 я. Внутри: почём обошёлся час агента, где он не окупился, что пропустил и почему первый подсчёт находок оказался завышен почти вдвое.

Читать далее

Нода загружена на 40%, а поды стоят: как найти причину через PSI в Kubernetes

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

График CPU может выглядеть спокойно, пока контейнеры уже теряют время на троттлинге, ожидании памяти или вводе‑выводе. В Kubernetes 1.36–1.37 для такой диагностики появились более полезные сигналы и возможность менять ресурсы работающих подов без пересоздания.

Разберём, как читать PSI, отличать реальное ресурсное давление от обычной утилизации и связывать эти данные с ресайзом подов.

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

Почему одна и та же модель может стоить в пять раз дороже

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

Исследователи из UC Berkeley и Arena сравнили семь моделей внутри Claude Code, Codex CLI и минималистичного Pi. На двух бенчмарках выбор харнесса почти не менял среднюю успешность, но увеличивал стоимость одной и той же модели до пяти раз. Результат хорошо объясняет, почему сравнивать coding-агентов только по названию моделей уже бессмысленно.

Читать далее

«Я больше не могу работать в ИТ. И что мне с этим делать?»

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

Выгорание среди айтишников — явление нередкое. По разным исследованиям, с ним сталкиваются от 83 до 96% специалистов в России и в мире. В историях людей, которые ушли из ИТ или задумались об уходе, встречаются примерно одни и те же причины: переработки, постоянный стресс, острая необходимость всё время осваивать новое параллельно с работой. 

Есть и ещё одна причина — потеря смысла. Можно нормально зарабатывать, трудиться в хорошей компании и при этом не понимать, зачем открывать ноутбук каждое утро. Зачем закрывать задачи и делать вещи, которые не влияют на физический мир и жизни людей?

Читать далее

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

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

Как мы автоматизировали выдачу ключей от демозала через бот в Telegram, обрадовались, потом вынужденно переехали в eXpress и настроили все по новой (но путь был тернист).

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

Читать далее

Ваш ssl_stapling больше ничего не делает

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

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

В статье разбираем, что произошло с OCSP stapling, возобновлением TLS‑сессий, тикетами и 0-RTT и как сегодня выглядит актуальная конфигурация nginx.

Проверить конфиг

Публикуйте инструменты, а не пиксели: собираем WebMCP‑магазин на React и считаем грабли

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

Представим обычный интернет-магазин. Пользователь открывает каталог, вводит «наушники» в поиск, включает фильтр наличия, задаёт цену до 10 000 рублей, открывает карточку и добавляет товар в корзину. Шесть вполне понятных действий. Если их выполняет человек, всё хорошо. Если за дело берётся AI-агент, начинается небольшой квест: прочитать страницу, найти поле, угадать назначение переключателя, нажать кнопку, проверить результат и не купить случайно кофеварку вместо наушников.

А что, если сайт сам скажет агенту: «Я умею искать товары, показывать карточку и добавлять позицию в корзину. Вот названия функций, вот параметры, вот ограничения»? Эту задачу решает WebMCP — экспериментальный браузерный API, который позволяет странице объявлять инструменты для AI-агентов прямо из JavaScript или HTML-формы. Черновик и обсуждение стандарта открыты в репозитории Web Machine Learning Community Group.

Меня зовут Денис Смирнов, я ведущий .NET-разработчик, в профессии больше пяти лет. Это не пересказ новости. Соберу небольшой магазин электроники на React, добавлю три инструмента, прогоню проверки и покажу четверо граблей, на которые наступил. Грабли оказались интереснее рабочего примера.

Читать далее

Давай по новой, Миша: speculative decoding от черновика до проверки

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

Маленькая модель быстро набрасывает несколько следующих токенов, а большая проверяет всю пачку за один проход. Совпавшее оставляет, на первом расхождении переписывает продолжение сама, поэтому ускорение не меняет распределение ответа. В speculative decoding большая модель буквально говорит черновой: «Давай по новой, Миша».

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

Далее разберём весь цикл: как работает черновая модель, по какому правилу принимаются токены, какого размера должен быть draft, почему важен одинаковый токенизатор и как всё это включить в Transformers и vLLM.

Отдельно посмотрим на подходы, где вторая модель вообще не нужна: EAGLE, Medusa, LayerSkip и DFlash.

Читать далее

Как я понял, что делаю x16 на Cursor — и почему убрали цену

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

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

За семь дней вышло $230 (около $960/мес). При подписке $60 в месяц и нулевой доплате.

Смотрим на x16 далее

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

Полезные новшества ECMAScript 2026

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

JavaScript получает новый стандарт языка каждый год. Некоторые редакции представляют синтаксис, который меняет то, как программы пишутся или как они выполняются. Версия ECMAScript 2026 (ES17) представила набор полезных возможностей, которые мы рассмотрим в этой статье. Эти возможности добавляют API для задач, которые сейчас решаются с помощью небольших утилит, повторяющихся проверок или обходных путей, подверженных ошибкам.

Читать далее

Блокчейн цел, деньги пропали: атаки на оракулы и безопасное чтение цены в Solidity

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

В начале сентября протокол Tectonic на Cronos потерял около 75 миллионов долларов. Блокчейн при этом работал штатно — консенсус не сломался, приватные ключи не утекли, в коде контракта не было переполнения. Одним словом — тишь да гладь. Атакующий просто сделал так, что контракт поверил в неправильную цену и после этого честно, как будто так и надо, по всем правилам, отдал ему чужие деньги. Это не единичный случай, а тренд года. По данным TRM Labs, за 2026-й на манипуляциях ценой протоколы поймали 32 атаки против 12 за весь 2025-й, а это, на минуточку, почти втрое больше, и год даже ещё не закончился. Доля таких атак среди всех крипто-взломов выросла примерно с одной семнадцатой в 2022-м до одной восьмой сейчас. В списке пострадавших за последние недели — ($8.7млн), More Markets на Flow EVM ($410 тыс.), Cozy Finance на Optimism ($170 тыс.), Full Sail на Sui ($91 тыс.).

Читать далее

110 тестов, которые не проверяют код: как заставить документацию падать вместе со сборкой

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

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

Читать далее

Кодирование ускорилось в разы, а проекты – нет. Куда пропал выигрыш?

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

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

Примерно с марта 2026 года мы перестраиваем разработку вокруг ИИ-агентов. Мы решили выйти за рамки помощи программисту в IDE и пересобрать весь процесс: от первого запроса клиента до запуска готовой системы. Для этого мы разобрали привычный порядок работы на отдельные шаги и передали большую часть из них агентам. Получившуюся цепочку мы называем «конвейером». Про него я уже рассказывал во время дискуссии на тг-канале «Департамент разработки», но здесь разберемся детальнее. 

Читать далее

ИИ – это трактор без водителя: почему 98% разработки с LLM решает экосистема

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

Есть тезис, за повторение которого в последнее время мне регулярно «прилетает» в комментариях и кулуарах: сама языковая модель дает примерно 2% результата ИИ-разработки. Остальные 98% – это обвязка. Инструкции, гейты, процессы, память, люди. Звучит как ересь на фоне последних релизов: модели становятся все сильнее, компании закупают Copilot, Cursor и Claude Code вагонами. Только вот ускорение команд почему-то не фиксируется, и об этом уже пишут не только скептики, но и те, кто эти модели выпускает.

Читать далее

Откуда берётся сложность

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

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

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

Число... например, 16 мс или 33 мс или 8 гигабайт, из которых 5 доступны, или «игра должна показать первый интерактивный кадр не позже чем через десять секунд после запуска, иначе сертификацию не пройдем». Как только у свойства системы появляется измеримая цель, простота перестаёт быть бесплатной и превращается в то, чем вы платите.

Читать далее

Частичное применение в C++: владение, время жизни и категории значений

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

Носителям прекрасного языка программирования C++ тема частичного применения может показаться скучной. Что примечательного в пяти строчках кода? Но дьявол кроется в деталях: я часто встречал реализации, которые работали не так, как ожидали их авторы. Иногда дело доходило до undefined behavior. Поэтому здесь хочется разобраться прежде всего с владением, временем жизни и категориями значений.

Разобраться в деталях