Обновить
1024K+

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

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

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

Tilda и СБИС Presto: как мы синхронизируем остатки через стоп-лист, а не каталог

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

Как мы избавили общепит от часа ручной работы каждое утро: разобрали реальный кейс синхронизации стоп-листа из СБИС Presto в каталог на Tilda через CommerceML. Поток на Python/FastAPI, дебаунс через SHA-256, eventual consistency без очередей и грабли, на которые наступили в проде.

Решение и грабли

Page Object Pattern в Selenium на Java: гайд по первому автотестовому проекту

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

UI‑тесты редко ломаются красиво: один редизайн формы — и локаторы приходится чинить по всему проекту.

В статье разберём, как собрать первый автотестовый проект на Java и Selenium с Page Object Pattern: куда класть страницы и компоненты, как писать базовый класс, почему лучше держаться за data-test и какие ошибки быстро превращают аккуратную архитектуру в набор хрупких обёрток.

Читать далее

Месяц пишу язык программирования Nova с Claude Code. Где ломаются автономные агенты

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

Месяц назад начал делать собственный язык программирования Nova с Claude Code. За это время агенты автономно закрыли около трёхсот инженерных планов, написали около 120 тысяч строк Rust (компилятор, рантайм, кодоген), почти две тысячи проходящих тестов и собственную стандартную библиотеку на Nova. Один человек физически такой объём не вытянет — но и автономия даётся не бесплатно.

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

Читать далее

100 вопросов с собесов по Rust: что реально спрашивают на junior, middle, senior позиции в 2026

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

Я срьрал 100+ вопросов с собеседований по Rust с краткими разборами: владение, типажи, конкурентность, async, unsafe, производительность и др. Отдельный продвинутый блок A1–A21 для staff-уровня. Цель - показать, где обычно спотыкаются даже опытные, и помочь подготовиться к следующему собеседованию. Надеюсь будет реально полезно!

Читать

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

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

AI-инструменты уже давно перестали быть просто «умными чатами». Сегодня Claude Code, Codex и другие агенты постепенно превращаются в полноценную инженерную инфраструĸтуру: с памятью, workflow, sub-agentʼами, orchestration и reusable праĸтиĸами.

В этой статье команда разработки СВОЙ Тех собрала праĸтиĸи, ĸоторые реально помогают использовать Claude Code эффеĸтивно. Дисклеймер: будет много списков — не обессудьте и, надеемся, вам так же, как и автору, легче усваивать информацию.

Открыть туториал

Деградируешь со своей нейронной сетью?

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

Ну что, Великий Вайбкодер, сколько тысяч строк кода ты сегодня уже успел сгенерировать? Небось сдал 5 проектов за вчерашний вечер на трёх параллельных работах?

А думал ли ты, кем станешь ты и такие как ты через 10 лет?

Может, всё-таки «Идиократия» ближе, чем кажется? Давайте погадаем немного на лавандовом рафе и прикинем, что же всё-таки произойдёт уже в ближайшем будущем.

Читать далее

Opus 4.8 вышел и сразу проиграл GPT-5.5, $500M без лимитов и 21-летний баг MySQL

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

28 мая вышел Opus 4.8 — через 41 день после 4.7 и с Dynamic Workflows, на которых переписали Bun. Через два дня появился DeepSWE и поставил под сомнение весь лидерборд, включая только что вышедший Opus. Enterprise-клиент без лимитов сжёг $500M за месяц. DeepSeek набирает команду для создания своего агента. А в MySQL закрыли 21-летний баг.

Читать далее

Пять ошибок в работе с ожиданиями в UI‑автотестах, из‑за которых тесты падают через раз

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

Ваши UI‑автотесты снова «иногда падают», а команда уже привычно лечит это ретраями? Проблема может быть не в CI и не во фронтенде, а в том, что тест ждёт не то состояние интерфейса.

Разбираем пять ошибок в ожиданиях Selenium, из‑за которых автотесты превращаются в лотерею.

Читать далее

Книга: «100 ошибок C++ и как их избежать»

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

Привет, Хаброжители! Более десяти миллиардов строк кода C++ в настоящее время используется в реальных проектах, и 98 % разработчиков ежедневно находят и исправляют в них ошибки. Даже в критически важных приложениях встречаются баги, проблемы с производительностью и читаемостью. Эта книга поможет выявить их в коде, который вы поддерживаете, и избежать — в коде, который вы пишете.

Читать далее

Личный CI/CD за один вечер: настраиваем GitLab Runner на собственном VPS

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

Если у вас пет-проект или небольшой стартап на GitLab.com, рано или поздно вы упрётесь в потолок бесплатного тарифа: 400 минут пайплайнов в месяц и общая очередь раннеров. Покупка дополнительных минут стоит денег и не решает вторую проблему: общие раннеры GitLab обслуживают миллионы проектов, и в часы пик ваша джоба может провисеть в очереди 10-20 минут.

Решение — свой GitLab Runner на VPS: без чужих джоб, под полным контролем. Такой раннер не имеет лимитов по времени, кроме ресурсов самого сервера. В статье за вечер собираем такой раннер с нуля на Ubuntu 24.04 LTS, поднимаем пайплайн на три стадии (тесты, сборка Docker-образов, пуш в GitLab Container Registry), добавляем кэширование, безопасность и автообновление.

Читать далее

Я написал визуализатор сборщика мусора для Go — теперь GC не чёрный ящик

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

Сборщик мусора в Go обычно воспринимается как что-то, что просто работает. И это, в общем, хорошо: большую часть времени о нём действительно не хочется думать.

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

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

Я написал gcscope — терминальный визуализатор сборщика мусора для Go. Он показывает, как ведёт себя GC в реальном времени: насколько часто он запускается, как меняется потребление памяти, есть ли моменты, когда паузы становятся заметно длиннее обычного. Работает с любым Go-приложением без правок в коде, и вы сразу видите наглядные графики вместо потока логов. А ещё можно сравнивать поведение своего сервиса до и после изменений.

Читать далее

Rust 1.96.0: новые типы Range, assert_matches, debug_assert_matches, WebAssembly targets

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

Команда Rust рада объявить о выходе новой версии языка — Rust 1.96.0. Rust — это язык программирования, который помогает каждому создавать надёжное и эффективное программное обеспечение.

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

$ rustup update stable

Если Rust ещё не установлен, вы можете получить rustup на соответствующей странице нашего сайта и ознакомиться с подробными release notes для 1.96.0.

Если вы хотите помочь нам, тестируя будущие релизы, можете переключиться локально на beta-канал (rustup default beta) или nightly-канал (rustup default nightly). Пожалуйста, сообщайте обо всех найденных ошибках!

Что нового в stable 1.96.0

Harness под любую задачу: Dynamic Workflow в Claude Code

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

На прошлой неделе мы выпустили динамические воркфлоу в Claude Code. Теперь Claude может на лету писать собственную обвязку (harness) под конкретную задачу.

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

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

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

Читать далее

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

Eventual Consistency: как мы починили тормоза апрува и сломали бюджет

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

Мы убрали одну блокировку, чтобы апрувы перестали тормозить. Через несколько недель из‑за этого клиент пробил квартальный бюджет — а наша система этого даже не заметила.

Полгода после MVP, первые крупные клиенты. B2B travel SaaS, конец 2016-го. Компании начали подключать не по 15–20 человек, а по 80–100.

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

Обнаружили через 3–4 часа — когда финансовый менеджер клиента открыл квартальную сводку и позвонил нам.

Читать далее

Детерминированность реактивных вычислений

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

Порядок выполнения реактивных реакций имеет свои особенности, которые часто оставляют на волю случая. Однако давайте рассмотрим все возможные варианты…

Упорядочить понимание

Рецензия на книгу «Алгоритмы на языке Go»

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

Эта книга для тех, кто уже пишет на Go и понимает синтаксис, но хочет прокачать знания в вопросе выбора алгоритмов под свою задачу. Книга «Алгоритмы на языке Go» написана именно для такой аудитории. Это первая специализированная русскоязычная книга по алгоритмам с реализацией на Go. Она не очень объемная, — всего 192 страницы, 8 глав с конкретными примерами кода, —  по-своему, это ее  плюс, т.к. сейчас никто из разработчиков не читает толстенные «кирпичи» без крайней необходимости.

Читать далее

Зачем backend разработчику Python, если он не собирается становиться data scientist

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

Долго воспринимал Python как язык из соседнего мира. Где то там data science, pandas, ноутбуки, модели, эксперименты. А у меня обычный backend: API, микросервисы, Kafka, БД, CI/CD и продакшен.

C# и Java для этого хватало.

Но когда начал разбираться с LLM быстро понял, вызвать модель можно из любого языка, а вот руками потрогать RAG, embeddings, локальные модели, чанкинг и evaluation проще всего через Python.

И ещё быстрее стало понятно другое, LLM это не просто «отправить prompt и получить ответ». Как только речь заходит о реальной системе появляются привычные backend вопросы «доступы, логи, стоимость, latency, качество ответа, безопасность данных и сопровождение».

Поэтому для меня Python стал не заменой C# или Java, а инструментом который помогает быстрее зайти в новый слой backend задач.

Зачем backend разработчику Python

Как мы четыре раза неправильно чинили мерцание при рендеринге 4,4 миллиона полигонов на wgpu

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

Уже год мы небольшой командой пишем на Rust + wgpu редактор топологий интегральных схем — что-то вроде KLayout, только с прицелом на российский рынок. Команда — три человека. Я в роли CTO направляю архитектуру и принимаю основные технические решения. История ниже — про одну такую серию решений, которую я завёл в тупик четыре раза подряд, прежде чем мы поняли, в чём была ошибка.

Тестовый дизайн у нас — Caravel SkyWater SKY130, открытый чип на ~4,4 миллиона полигонов, 1014 уникальных ячеек и 22 уровня иерархии. Полный GDS-файл — 278 МБ.

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

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

Читать далее

Я устал копировать промпты вручную. И собрал 794 проверенных в деле промптов для ваших ИИ агентов

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

proagents: библиотека из готовых 794 системных промптов, персон и воркфлоу, которую можно установить в Cursor, Claude Code или Windsurf одной командой за 15 секунд. 🚀

Читать далее

Агент читает 20 файлов ради одной функции. Лечим это графом кода: CodeGraph vs Graphify и другие невиданные твари

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

Мне регулярно пишут: «У тебя Max-подписка, токенов вагон — зачем городить индексацию кода? Дай агенту grep и не выпендривайся». Полгода назад я бы согласился. Сейчас — нет. Когда агент ищет «где тут авторизация», он спавнит эксплорацию, грепает по ключевым словам и читает 15-20 файлов целиком, чтобы догадаться о связях. Это сотни тысяч токенов, куча tool calls и регулярные промахи. Граф кода схлопывает этот веер чтений в один точный запрос к индексу. Я сейчас гоняю CodeGraph (лёгкий локальный индекс символов для агента), а Graphify (граф знаний всего проекта — код плюс документы, PDF и медиа) только собираюсь попробовать. Это два разных инструмента под разные боли, и их постоянно путают. В статье: чем они отличаются архитектурно, почему модель хранения индекса — следствие этой архитектуры (и как держать индекс при работе с разных машин и командой), их бенчмарки с честной пометкой «не мои цифры», кому что брать — плюс карта соседних инструментов: Gortex, CodeGraphContext, Sourcegraph MCP и Cognee.

Читать далее