Обновить
1024K+

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

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

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

Как поступить в онлайн-магистратуру «DevOps‑инженер облачных сервисов» ИТМО в партнёрстве с Яндексом в 2026 году

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

Привет от команды Яндекс Практикума! Приёмная кампания в онлайн-магистратуру «DevOps‑инженер облачных сервисов» ИТМО в партнёрстве с Практикумом уже идёт. Рассказываем, что входит в программу, что нужно, чтобы поступить в 2026 году и как устроено обучение. 

Читать далее

Как отменять задачи в asyncio без зависаний и незавершённой очистки

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

Отмена задачи кажется простой, пока сервис не зависает при остановке, таймаут не оставляет запрос работать в фоне, а CancelledError исчезает внутри обработчика исключений. Разберём, как устроена кооперативная отмена в asyncio, где ставить точки ожидания и как использовать TaskGroup, timeout и shield, чтобы задачи завершались предсказуемо.

Изучить asyncio

пошКОДим: как превратить React-компонент в неуправляемый комбайн — 15 вредных советов

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

На планировании оценивают задачу: «добавить бейдж VIP на карточку клиента». Разработчик открывает CustomerCard.tsx, молчит и говорит: «Дня три». Никто не смеётся — все открывали этот файл. В нём почти семьсот строк, и он умеет всё: грузит клиента и его заказы, кэширует, валидирует форму, различает три роли, экспортирует CSV и не падает. Сцена собирательная, но файл — нет: для этой статьи я вырастил его сам, шаг за шагом, и каждый шаг сохранил.

Вопрос к такому файлу — не «почему он большой?». Вопрос — «сколько у него причин измениться и кто их считает, кроме ревьюера?»

За годы code review я много раз наблюдал рождение комбайна и ни разу — конкретный момент, когда обычный компонент становится неуправляемым. Такого момента нет: каждое отдельное изменение выглядит разумным, укладывается в дедлайн и проходит ревью. Поэтому статья устроена как хроника: один компонент, пятнадцать вредных советов, и после каждого — счёт, который выставляет машина.

Неуправляемость не измеряется строками — строки лишь симптом. Болезнь — число причин изменения, собранных в одном файле. Пока их никто не считает, комбайн растёт легально: каждый его шаг проходит code review.

Читать далее

Хуки Claude Code: запрещаем агенту коммитить без прогона тестов

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

Правило из CLAUDE.md агент забывает на длинной сессии - это текст, а не механизм. Я разобрал слои дисциплины Claude Code и прибил критичные правила хуками: три гейта, после которых коммит без свежего зеленого прогона тестов не проходит, правка теста поднимает флаг, а завершить работу с грязными тестами нельзя. Под катом механика хуков, код всех трех гейтов с живыми прогонами и эксперимент, где гейт пересилил прямую инструкцию пользователя.

Читать далее

Бенчмаркая ключи Dictionary: забыл IEquatable — получил ×5 и 96 байт на каждый поиск

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

Структура в роли ключа Dictionary — частый случай. Забыл IEquatable — и каждый TryGetValue в 4,4–5,7 раза медленнее, плюс 96 байт в куче на каждый поиск.

Проверил на четырёх машинах и трёх рантаймах, снял дизасм FindValue и разобрал, откуда берутся ровно три упаковки, почему override Equals не спасает и при чём тут хэш record struct. Сам рантайм этот разрыв не закроет — и это не баг.

Читать далее

Большинство ошибок при System Design ускользает из виду

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

Пять пробелов, которые не видны на архитектурных блок-схемах.

Пользователь нажимает «Place Order» (Сделать заказ).

API возвращает 200 OK. Заказ появляется в базе данных. На странице оформления заказа выводится сообщение «success» (успех). Извне всё выглядит нормально.

А потом в службу поддержки прилетает тикет.

Читать далее

Harness engineering: как за год собрать фабрику из десятка конвейеров

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

Агент проходит все проверки и сносит то, что трогать было нельзя. Промпт это не лечит — лечит среда вокруг модели. В ноябре я начал собирать такую среду и называл её просто фабрикой разработки. Меньше чем за год из неё выросло почти десять конвейеров, а у занятия, оказывается, есть название: harness engineering. Рассказываю, как оно росло, и показываю схему и скелет в github.

Читать далее

Форк файлового менеджера, подозрительно похожего на Midnight Commander

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

Просто накопилось достаточно новых фич, которые могли бы кому-то пригодиться, но пропихнуть их в апстрим я не смогу. Так получилось, что сам я уже много лет как отошел от разработки mc в виду личных проблем связанных с моими родителями, но кое что недоделанное оставалось. Большой респект ребятам - Андрею и Юре кто продолжаешь тащить апстрим, они большие молодцы и все кто им помогает.

Важно: я пока не нашел времени и сил подготовить скрипты сборки пакетов для разных дистрибутивов и не придумал название для форка (GPL позволяет использовать старое название, но с указанием что это форк и даты отпочковывания)

Ещё важно, что я публикую этот текст с единственной целью - найти тех, кто поможет выявить проблемы при использовании форка на других платформах и дистрибутивах. Сам я пользуюсь на Ubuntu.

В форке Midnight Commander с амбициозным номером версии v6.0.1 появилось несколько крупных нововведений:

Теперь без промедления к делу...

Один файл, одна команда: как мы упростили запуск dev-окружения с помощью Runium

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

Локальный запуск dev-окружения в крупном проекте может превратиться в отдельный квест: несколько процессов, Docker-контейнеры, переменные окружения, порядок старта, ожидание готовности сервисов и отличия между ОС. Даже если у вас есть подобный опыт, это может быть неудобно, долго и утомительно. Новичку же обычно не обойтись без длинной подробной инструкции.

Привет, Хабр! На связи Сергей Зверьков, старший разработчик в «Лаборатории Касперского». Хочу рассказать, как мы решили эту проблему, написав собственный open-source-инструмент — Runium. Суть его в том, что он позволяет описать dev-окружение в JSON-файле. После этого проект можно запускать, останавливать и проверять одной командой.

В статье расскажу, из какой боли вырос Runium, как он устроен, сравню его с другими решениями и покажу пример использования на простом веб-проекте. Приступим!

Читать далее

Натуральные ключи в БД. Последний раз объясняю

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

Всем привет! На связи Михаил Поливаха, технический лидер проекта Axelix.

Я уже выпускал статью по мотивам вопросов в рамках Spring Айо Академии. Так вот, когда мы разгребали отзывы с первого потока, мы также получили вопрос (это не прямая цитата, я лишь передаю посыл в том виде, как я его понял):

А что насчет натуральных ключей в БД? Если, допустим, у меня есть поле, по которому я могу явно идентифицировать запись, стоит ли его использовать как Primary Key?

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

Читать далее

Я написал ASGI-фреймворк, в котором дерево папок — это и есть API

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

Несколько месяцев пилил pet-проект, который зашёл дальше, чем планировал: файловый ASGI-фреймворк, где дерево папок — это и есть таблица роутов. Сегодня вышла версия 1.0 — с адверсариальным security-аудитом (нашёл у себя pickle RCE и CSWSH), 2329 тестами и нативным async на PostgreSQL. Рассказываю, что внутри и что было больнее всего сделать правильно.

Узнать подробнее об EndoCore

Один поток, а всё успевает: как работает цикл событий в JavaScript

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

Promise, setTimeout и async/await часто работают совсем не в том порядке, которого ждёшь по коду, а тяжёлая синхронная функция способна заморозить весь интерфейс. Разберём модель цикла событий, которая объясняет эти эффекты и помогает понимать, где возникают блокировки, гонки запросов и лишние задержки.

Читать далее

Как делать скилы правильно и собрать из них маркетплейс

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

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

Так на свет и появился репозиторий rpa-skills, изначально в нём была сборная солянка директорий скилов, которые содержали в себе просто SKILL.md с оригинальными промтами внутри. Но выглядело и юзалось это решение как-то не очень удобно, да и масштабировать захотелось, так что я решился пойти на немыслемое, почитать документацию о том, как правильно собирать скилы и маркетплейсы, о чём и расскажу сегодня вам.

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

Читать далее

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

Заставляем Airflow самого заводить задачи в YouTrack без смс и регистрации

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

Работая единственным QA в команде, в обязанности которого активно входит мониторинг, я столкнулась с проблемами тайм-менеджмента: очень много времени уходит на анализ упавших пайплайнов, заведение однотипных задач, поднятие тревоги, отмена тревоги, потому что проблема уже исправляется и прочие прелести тестерской работы. В один прекрасный осенний денек, сидя на окне и думая о нем (мониторинге), я решила - хватит это терпеть. Посидела, погуглила, вспомнила родительские слова “Хочешь сделать что-то хорошо - сделай это сама”. Что ж таков путь.

Читать далее

Что нового в GoLand 2026.2

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

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

Читать далее

LLM-судье нельзя верить на слово: как построить надёжный гейт и проверить сами тесты

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

Как перестать доверять LLM-судье на слово и построить безопасную двухконтурную систему оценки?

Внутри статьи:

Архитектурный паттерн сдерживания: почему у классической нормализации должно быть право вето.

CI-инварианты: как ловить галлюцинации моделей с помощью враждебных фикстур в grounded-judge-gate.

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

Читать далее

Свободные функции вместо методов, но с полиморфизмом. Что это даёт на самом деле?

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

Речь о процедурно‑параметрическом программировании, о котором почти никто не пишет. Я реализовал одну и ту же задачу в ООП и в этой парадигме и сравнил их численно. Одна из метрик разошлась в 6 раз.

Что же это такое?

Я перенёс на Python библиотеку, которой физики пользуются двадцать лет. Перевод оказался самой лёгкой частью

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

Есть код, который физики передают друг другу с 2002 года. Кристиан Мэтцлер из Бернского университета написал набор MATLAB‑функций для расчёта рассеяния Ми, физики, из‑за которой небо голубое, а молоко белое. В 2009-м Стивен Жак обернул его для тканевой оптики, и с тех пор эти полторы сотни строк разошлись по тысячам работ, от атмосферных исследований до лазерной медицины.

Читать далее

Локальная RAG-система на Go, PostgreSQL и Ollama без облачных API

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

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

В статье соберем полностью локальную RAG-систему на Go, PostgreSQL и Ollama без облачных API и сторонних сервисов. Разберем весь путь — от индексации документов до получения ответа LLM на основе найденного контекста.

Читать далее

Почему мы не написали ещё один Bad CaRMa

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

«Bad CaRMa» — глава из Dreaming in Code Скотта Розенберга (каламбур на CRM и «карму») про CRM-систему Vision в компании Upstart. Архитектор задумал предельно гибкую схему: одна-единственная таблица DATA, куда сложили все 150+ бизнес-сущностей — 240+ колонок с именами вроде string82 и numeric31, метаданные и данные вперемешку. Схему ведь больше «никогда не придётся менять».

Практики на грани