Обновить
1024K+

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

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

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

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

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

По данным GitLab, 91% компаний держат в работе минимум два ИИ‑инструмента, 54% — три и более. 78% команд пишут и коммитят код быстрее, чем раньше, 60% говорят, что отдача от ИИ превзошла ожидания, 73% отмечают рост качества кода. По любым меркам внедрение состоялось. А теперь «менее успешная цифра»: 80% признают, что подключили ИИ‑инструменты раньше, чем придумали, как ими управлять. Скорость обогнала контроль, и вся история начинается ровно на этом стыке.

Читать далее

Справочник объектов поиска и анализа

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

Сталкивались ли вы с кейсом, когда по заданному списку email или номеров телефонов необходимо проверить всех клиентов на совпадение с ними? Поиск через интерфейс в различных системах не всегда удобен или даже невозможен. В этой статье я расскажу, как организовать универсальное хранилище объектов различного типа под разные цели. Мы создадим единый справочник в базе данных и организуем поиск по нему.

Читать далее

Вы не напишете спецификацию с первого раза, даже с помощью Fable

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

В блоге Anthropic вышла статья Thariq Shihipar, в которой он рассказывает, как агент помогает находить ему Неизвестные Неизвестные (Unknown Unknowns). Я думаю, что мысли из статьи также очень важны для Spec Driven Development, и хорошо объясняют, почему спецификация это живой документ, и получение финального документа возможно только после того, как код уже написан, (ну или во всяком случае, одновременно с этим моментом). Если вы считаете, что Spec Driven Development — это будущее AI‑assisted разработки (намеренно не говорю вайбкодинг), прошу под кат.

Читать далее

MCP для агентной коммерции: что может пойти не так

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

Представьте диалог c вашим любимым ИИ‑инструментом:

— Найди поездку в Казань на выходные, до 20 тысяч рублей и с нормальным отелем.

— Секунду, подбираю…

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

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

Читать далее

Как мы тестируем Kubernetes‑операторы в MWS Cloud Platform

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

Сегодня Kubernetes стал де-факто стандартом для развёртывания SaaS-приложений и сервисов. Практически каждый разработчик работает с ним ежедневно, но большая часть этой работы связана с установкой уже готовых компонентов и манифестов. Если базового функционала начинает не хватать, возникает потребность в расширении. И вот тут начинается путешествие в уникальный мир k8s-операторов.

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

Меня зовут Антон Железнов, я разработчик в команде Managed Kubernetes облака MWS Cloud Platform. И в этой статье я хочу рассказать о тестировании операторов не на абстрактных примерах, а на устройстве нашего решения. Итак, поехали! 

Читать далее

Как я посадил WireMock.Net на gRPC стероиды

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

WireMock.Net умеет мокать gRPC. Но для этого он заставляет разработчика таскать .proto файлы и поддерживать лишнюю конфигурацию. Я контрибьютил в проект несколько месяцев, разобрался в кишках и написал своё расширение WireMock.Grpc.Protobuf

Пакет предлагает gRPC моки через типизированные контракты Google.Protobuf. Получилось короче, надёжнее и заметно удобнее. В статье покажу, почему мой способ удобнее стандартного, как всё устроено под капотом и зачем вашему проекту пакет WireMock.Grpc.Protobuf

Кстати, подобные инженерные разборы, open-source и внутренности .NET я регулярно публикую в Telegram-канале StepOne. Если статья зайдёт — заглядывайте.

dotnet add package WireMock.Grpc.Protobuf

Пошаговая инструкция по внедрению скелетон-загрузки в ваше приложение

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

В этой статье в блоге ЛАНИТ хочу поделиться опытом нашей команды по внедрению скелетон-загрузки в приложение с семилетней историей. Мы столкнулись с плохой отзывчивостью нашего интерфейса и решили, что необходимо исправить эту проблему, чтобы улучшить жизнь пользователей, а заодно и сделать приложение более современным. 

Расскажу, как мы анализировали его для оптимизации трудозатрат, пошагово внедряли скелетон-загрузку и как это позволило нам получить хорошие отзывы от юзеров и визуально ускорить загрузку приложения. Также в статье расскажу о том, как мы поддерживаем и развиваем это решение.

Читать далее

416 тестов и кнопка «снести все»: где ломаются агентные проекты

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

С февраля у меня на ноутбуке крутится автономный агент Сурок: Claude Code, флаг --dangerously-skip-permissions и ральф-луп поверх. Работает — сидишь, кофе пьешь, смотришь, как горят токены. Потом я прогнал Сурка и еще пять своих проектов через свод инженерных практик, и у идиллии появилось имя: «Level 5 автономии при Level 1 границах». Внутри — диагностика из десяти вопросов, чужой боевой опенсорс на десятки тысяч звезд и методология PDLC Сбера, где эти грабли уже каталогизированы.

Читать далее

Как и зачем мы в PVS‑Studio делаем новые форматы общения с IT‑сообществом

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

Каждый, кто работает в IT, знает: технологии развиваются стремительно, а времени на то, чтобы за ними поспевать, не всегда хватает. Чтобы оставаться востребованным специалистом, нужно постоянно изучать что‑то новое. Но где искать качественную информацию, которая действительно применима на практике?

Наша команда всегда старается делать разнообразный и интересный контент. Если он вам нравится, и вы думаете: «Контент классный, я тоже так могу», — давайте делать это вместе! Ведь у нас не только можно попробовать продукт или записаться на демо. Мы открыты к коллаборациям и предлагаем множество вариантов взаимодействия. Обо всём по порядку.

Читать далее

Модель исполнения JavaScript по спецификации ECMAScript: call stack, контексты, окружения и замыкания

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

Я довольно долго был уверен, что понимаю, как работает call stack.

Ну а что там понимать? Положил кадр, снял кадр, LIFO.

Потом открыл спецификацию. Оказалось, за «стеком вызовов» стоит каркас из пяти сущностей, а половина привычных объяснений просто не совпадает с текстом стандарта.

Замыкание — не фича языка, а побочный эффект того, что окружение живёт отдельно от кадра. «Область видимости» — вообще не сущность: такого термина там нет. А слов event loop, microtask и task queue в ECMA-262 ровно ноль. Проверяется грепом за минуту.

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

Разобрать по спецификации

Click to Pray: один if — и ты ошибся

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

Интернет приписывает Джейсону Стейтему фразу «Одна ошибка — и ты ошибся!». В случае этой истории она почему‑то сама собой переиначилась в вариант из заголовка. Уж очень всё оказалось из серии «никогда так не делай».

24 июля исследователь BobDaHacker опубликовал разбор Click to Pray — официального приложения Всемирной сети молитвы Папы Римского.

В сервисе на тот момент было 719 517 зарегистрированных аккаунтов. У пользователей были последовательные числовые ID, а API позволяло запросить профиль по ID:

Читать далее

Конвейеры на Channels: как не получить тихую утечку памяти и вечно висящий воркер

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

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

В статье разберём, как строить конвейеры на System.Threading.Channels: настраивать обратное давление, корректно завершать обработку, не терять исключения и безопасно использовать каналы в ASP.NET Core.

Читать далее

Английский вместо кода

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

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

Думаю вы узнали COBOL, который по сей день ежедневно эксплуатируется и по разным оценкам стоит за 80% обычных (магазинных) банковских транзакций, а его кодовая база тянет на пару сотен миллиардов строк и до сих пор кормит десятки, если не сотни тысяч разработчиков. Правда, если копнуть эти красивые цифры, почти все они восходят к одному опросу конца девяностых, который потом бесконечно переэкстраполировали на весь мир, так что честнее считать их порядком величины, а не точными данными.

SQL породил особую касту DBA (Database Administrators) и Data Engineers и сегодня человек, который пишет "простые запросы", может легко зарабатывать на уровне мидла, а сам язык стал настолько сложным, что современные диалекты (PostgreSQL, Oracle) - это полноценные языки программирования с процедурной логикой, где можно написать всё что угодно, от генератора фракталов до игрового движка.

Семейство 4GL оказалось "золотой клеткой" и прекрасно работали, пока нужно было сделать типичную форму "ввод-вывод", но как только требовалась нестандартная бизнес-логика или интеграция с внешним сервисом, инструмент упирался в свои границы и программистам приходилось дописывать "костыли" на низкоуровневых языках, что превращало разработку в адский коктейль из визуального дизайна и грязных хаков. И вместо исчезновения программистов, 4GL создали "архитекторов корпоративных систем", которые (например, SAP ABAP), стали невероятно дорогими специалистами, и тоже не устранил программирование, а просто переместил его из зоны "универсальных языков" в зону "дорогих и капризных инструментов", привязывающих компанию к конкретному вендору.

Каждые десять-пятнадцать лет индустрия торжественно объявляет, что писать код руками больше не придётся, продавая новый способ "объяснить машине задачу на нормальном человеческом языке". И каждый раз через несколько лет выясняется, что программистов стало не меньше, а больше, просто теперь они называются иначе. Предположу, что сейчас мы проживаем очередной виток этого цикла, и новое название таким людям будет вайбкодеры, и думаю этому инструменту, уготована та же судьба, что и у предыдущих попыток.

Читать далее

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

Атомарность в реактивных системах

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

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

Читать транзакцию

Django ORM ломается не там, где вы смотрели: шесть ошибок

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

Django ORM умеет долго скрывать проблемы: лишние запросы, гонки при save(), затянувшиеся транзакции и выборки, которые незаметно съедают память.

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

Читать далее

Доверьтесь компилятору: C++23 против трюков из 90-х

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

Как часто вы слышали: «Не доверяй компилятору, пиши вручную»? Похоже, эту идеологию пора сдавать в архив.

Автор специально собрал примеры, в которых «умный» код современного C++ либо проигрывает наивному, либо не даёт выигрыша, но при этом ухудшает читаемость и мешает оптимизатору. Тут и легендарный Q_rsqrt, и бит-хаки для подсчёта единичек, и вездесущие const&, и даже опасные фокусы с фильтрацией диапазонов. Всё с воспроизводимыми бенчмарками на Clang 21 и Ryzen 9. Если вы готовы пересмотреть багаж старых привычек – просим под кат.

Читать далее

Что нового в PhpStorm 2026.2

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

Несмотря на то, что PhpStorm уже несколько лет официально недоступен в России, он по‑прежнему остаётся одним из главных инструментов для PHP‑разработчиков. Недавно вышла новая версия PhpStorm 2026.2.

В релиз вошли новые инструменты для ИИ‑агентов, встроенная интеграция с GitHub Copilot, поддержка собственных моделей для автодополнения и новый атрибут #[FileReference]. Разработчики также добавили отдельное окно для Laravel, поддержку TypeScript 7 и улучшили работу с Git, терминалом, базами данных и Docker.

В статье разберём основные изменения PhpStorm 2026.2, а также расскажем, какие возможности для PHP‑разработки уже доступны в OpenIDE и чего ожидать от её перехода на платформу 2026.2.

Читать далее

Green Tea GC: что на самом деле поменялось в сборщике мусора Go 1.26

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

С весны на собесах стабильно спрашивают про Green Tea. И ответ, который я слышу в девяти случаях из десяти, звучит так: «ну, он на 40% быстрее». Дальше начинаешь уточнять — быстрее что? — и человек плывёт. Проценты там действительно есть.

Просто относятся они не к тому, о чём все думают.

Читать далее

Виды связываний (external, internal, no linkage) для самых маленьких

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

Если вы когда-нибудь собирали проекты на C++, то практически наверняка получали ошибку от линковщика формата:

/usr/bin/ld: /tmp/ccYa2eaO.o: в функции «foo()»: foo.cpp:(.text+0x0): повторное определение «foo()»; /tmp/ccKEs5I7.o:main.cpp:(.text+0x0): здесь первое определение collect2: error: ld returned 1 exit status

Опытным C++ разработчикам эта проблема известна как ODR (One Definition Rule). Но корень этой ошибки выходит далеко за рамки «используй inline в .hpp» и «не определяй ничего в .hpp».

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

Читать далее

Как я получил перманентный бан за публикацию статьи про инди‑геймдев на IXBT

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

Что же за статья такая была? Неужели там была какая‑то информация, нарушающая нормы законодательства? Ведь не дают перманентный бан просто так! Значит, была веская причина.

Оказывается — это всё неважно, и перманентный бан могут дать просто так! Для этого даже нарушать ничего не надо.

Вот об этом я и хочу рассказать в новой статье.

Читать далее