Обновить
1024K+

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

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

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

Я пошутил, что разработчики больше не нужны — и мне поверили. Давайте теперь серьезно

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

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

Читать далее

Новости

Сделаем Python безопасным… снова

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

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

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

Читать далее

Создание Python-библиотеки для перевода исключений на русский язык

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

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

Читать далее

Bug fingerprinting для UI: почему stack trace не работает и что вместо

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

TL;DR: Sentry дедуплицирует backend-ошибки по хешу (error class + top stack frame + module). Для UI-багов этот рецепт ломается — у expect(button).toBeVisible() нет stack frame в продуктовом смысле, есть локатор + assertion + URL. В webtest-orch я собрал composite SHA-256 fingerprint из (normalized_selector | assertion type | error class | URL template | message[:80]) с тремя rules нормализации (:nth-child, UUID, /users/123 → /users/:id). Это даёт стабильный 8-hex BUG-id который выживает прогоны и даёт diff new / regression / persisting / fixed без БД и embedding’ов.

Читать далее

Как на самом деле устроен кэш в controller-runtime, и почему ваш оператор не кладёт apiserver

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

Kubernetes давно стал повсеместной платформой, а написать к нему собственный оператор сегодня — задача нескольких часов. Стандартный путь — kubebuilder на основе controller-runtime: scaffold проекта, типы, реконсайлер. В типовых сценариях этого вполне достаточно. Но как только нагрузка растёт или поведение оператора начинает расходиться с ожиданиями, всплывает целый класс edge-кейсов, причина которых — непонимание того, как controller-runtime устроен внутри. Если вы пишете контроллеры для Kubernetes, этот материал поможет собрать целостную mental model и заранее избежать дорогих сюрпризов в проде.

В этой статье разберём внутреннее устройство controller-runtime и на его примере увидим, какие архитектурные решения лежат в основе самого Kubernetes. Начнём с того, как контроллеры читают объекты из Kubernetes API.

Есть распространённое заблуждение, что r.Get() в Reconcile ходит прямо в kube-apiserver, List() каждый раз смотрит «живую» картину мира, а после Update() можно сразу перечитать объект и увидеть свежее состояние. На практике всё наоборот: controller-runtime живёт на локальной копии данных через LIST+WATCH. Благодаря этому чтение в реконсайле обходится почти бесплатно и не нагружает control plane даже при сотнях вызовов в секунду — но ценой этой модели становится то, что оператор может внезапно съедать гигабайты памяти, делать скрытые O(n)-сканы и регулярно упираться в stale reads.

Статья рассчитана на тех, кто уже писал операторы на Go с использованием controller-runtime, но хочет собрать целостную mental model, а не жить с набором частных наблюдений. Фокус будет на практических последствиях для production-кластеров: память, трафик, консистентность чтения и поведение реконсайла.

Читать далее

Год с Claude Code: как собрать рабочую конфигурацию с первого запуска

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

Год с Claude Code: как собрать рабочую конфигурацию с первого запуска

Жемал Хамидун, Head of AI Alpina Digital, CPO AlpinaGPT, автор тг-канала "Готовим ИИшницу"

Читать далее

Cursor удалил прод за 9 секунд, а Zig и JVM запретили AI-коммиты

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

Двенадцатый выпуск еженедельных IT-новостей от OpenIDE!

На этой неделе прошёл JPoint 2026, вышел Amplicode 2026.1 со Spring Agent Toolkit, а Anthropic впервые обогнала OpenAI по оценке на вторичном рынке. Плюс история о том, как AI-агент удалил продакшн-базу данных за 9 секунд.

Читать далее

Ваш ИИ ошибался, ошибается и будет ошибаться

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

Ваш ИИ-агент только что выдал строчку. И она выглядит… подозрительно? Указатель без проверки на NULL, сериализация через pickle без валидации и логика базы данных, никак не защищённая от SQL-инъекций. Заметить одну-две таких подстав легко, но если строк больше 5 тысяч? А сколько коллег нажали Approved без должной внимательности?

Проблема даже не в том, что ИИ может ошибаться, а в том, что он делает это уверенно и в промышленных масштабах. И вот здесь начинается настоящая гонка. С одной стороны — LLM, которые штампуют уязвимости. С другой — LLM, которые эти уязвимости ищут, подсвечивают и помогают закрывать.

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

Читать далее

Аутентификация и авторизация в Python: сессии и JWT токены в Backend-разработке

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

В современном мире разработки программного обеспечения аутентификация и авторизация являются ключевыми концепциями, необходимыми для обеспечения безопасности и контроля доступа пользователей. В статье рассмотрим основы регистрации, аутентификации и авторизации, а также два популярных механизма аутентификации — сессионный механизм и JWT токены. Разберем их принципы работы, отличия, плюсы и минусы, а также практические аспекты реализации на Python с использованием FastAPI и SQLAlchemy. 

Материал будет полезен как начинающим, так и опытным разработчикам, стремящимся углубить свои знания в backend-разработке и безопасности приложений.

Читать далее

Kodacode для бизнеса: SaaS с инфраструктурой в РФ и on-premise

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

Kodaсode используют десятки тысяч разработчиков в месяц. Постепенно запросы стали приходить не от отдельных людей, а от компаний: как оформить юридически, куда уходят данные из кодовой базы, есть ли централизованное управление доступами и корпоративный биллинг.

Этой статьёй мы отвечаем на все эти вопросы — и рассказываем о нашем корпоративном предложении.

Читать далее

Простой поиск имен в С++

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

Это продолжение темы начатой в статье Важны ли компилятору имена, и продолженной в Ночью все кошки серы, а using'и одинаковы, и далее в Компиляторы тоже путаются в именах. Если не читали, то лучше будет пробежаться по диагонали. Теперь вот мы подобрались к такой интересной теме, как квалифицированный и неквалифицированный поиск.

Что такое простой поиск(неквалифицированный) имени n в области S? Это механизм компилятора, который находит все объявления n, находящиеся непосредственно в этой области. Просто? С виду да, но даже этот простой механизм часто работает не так, как ожидает разработчик.

Например, у нас есть пространство имён N и локальная переменная N. Они могут сосуществовать вместе? Могут, потому что находятся в разных областях видимости. А пространство имён и глобальная переменная с тем же именем могут? Как же мы докатились до жизни такой, давайте разбираться.

Вот такой простой с++

Анализируем heap‑дампы с прода, не привлекая внимания безопасников

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

Heap‑дампы JVM — бесценный источник информации при разборе аварий с OutOfMemory и оптимизации производительности. Но вместе с тем они же — потенциальные каналы утечки данных, ведь будучи снятыми с боевого сервиса, дампы уносят в себе всё, с чем работал сервис на момент снимка: логины, пароли (иногда в открытом виде), важные ID и тому подобное — словом, всяческие sensitive данные, которые не нужны для анализа, но могут навлечь на получателя дампа серьёзную ответственность и риски. Как этого избежать без ущерба делу — разбираемся под катом.

Читать далее

Давайте уже сделаем отдельный хаб: «Я собрал приложение за вечер — зачем теперь разработчики?»

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

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

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

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

Теперь по сути.
Специально не буду давать ссылки на отдельные статьи — думаю вы и сами их видите в ленте постоянно. Поэтому отвечаю сразу, так сказать «коллективному автору» подобных постов.

Читать далее

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

Java Digest #35

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

Всем привет! 👋👋👋👋👋

Мы — Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске рассказываем, когда ждать релиз Java 27 и как Oracle планирует регулировать использование генеративного ИИ при написании кода. Посмотрим детальное интервью о Spring Framework 7 и Spring Boot 4 с самой командой создателей Spring. Почитаем, как безопасно работать с нативной памятью в многопоточной среде с помощью VarHandle. А еще изучим любопытный постмортем, посвященный расследованию раздувания памяти в контейнерах после перехода на JDK 17. Приятного чтения!

Читать 35 выпуск

FSRS для Obsidian: помнить всё

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

Обсидиан называют «вторым мозгом». Чтобы он им стал, одних связей недостаточно — нужна память.

Я сделал плагин интервального повторения на современном алгоритме FSRS. Он запоминает что и когда вы учили, предсказывает что вы вот-вот забудете, и показывает какая тема даётся тяжелее всего. Все данные хранятся локально в ваших .md файлах — ничего не уходит на сервера.

Читать далее

Имитация 3D-персонажей в 2D-движке

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

Я всегда был фанатом шутеров с видом сверху. Hotline Miami и по сей день остаётся моей любимой инди-игрой, а недавно я решил проиграть в её духовную наследницу — OTXO.

Он всегда был моим любимым жанром. Моя первая «серьёзная» игра, Alien Killer (написанная на Flash, поэтому сегодня в неё практически не поиграешь), была шутером с видом сверху, вдохновлённым старой игрой Net YarozePsychon.

В этой статье я расскажу, как разработал похожий на трёхмерный top down shooter без 3D-движка.

Читать далее

Flappy Bird: код веб-клона под микроскопом

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

В январе 2014 года мир сошёл с ума из-за игры, где нужно просто тыкать в экран. Flappy Bird приносила создателю $50 000 в день, пока он не удалил её из-за давления и бессонницы. Игру начали продавать на чёрном рынке вместе со смартфонами.

Я решил собрать свой веб-клон, чтобы понять, в чём же здесь магия. А в конце — откровенный список из 12 проблем, из-за которых мой клон всё ещё не тянет на оригинал.

Читать далее

Как Monium приручил GC: разбираемся со сборщиками мусора в observability‑платформе

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

Всем привет, меня зовут Антон Рыбочкин, я старший разработчик бэкенда в команде Yandex Monium. Monium — это платформа для сбора, хранения и анализа телеметрии (метрик, логов и трейсов). Она позволяет дать оценку того, как себя чувствует сервис, находить причины сбоев, оперативно уведомлять об аномалиях.

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

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

Читать далее

Как настроить AI-агента под проект: контекст, rules, skills, MCP — конспект двух вебинаров

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

Цепочка короткая: сначала был просто автокомплит, потом появились чаты, в которые надо было руками копировать код туда-обратно (и человек выступал прокси между моделью и проектом — «много ручной работы, контекст рвётся»). Потом пришли агенты, которые живут прямо в проекте, читают и правят файлы, запускают команды. Сверху — агентские системы, которые координируют нескольких агентов и решают проблему перегрузки одного контекста.

Где живёт агент: три класса инструментов

Читать далее

Как я писал трей-утилиту для управления sing-box на Windows

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

Эта статья о том, как я хотел сэкономить несколько секунд при переключении системного прокси в Nekobox, а в итоге уже несколько месяцев пишу мини-программу для управления sing-box.

Началось с того, что для прокси на Windows я стал использовать Nekobox. Про гибкое раздельное туннелирование я еще не знал, и приходилось постоянно включать и выключать системный прокси, чтобы зайти то туда (сайт заблокирован), то сюда (сайт блокирует IP прокси). Много раз в час: клик по значку в трее, режим системного прокси, отключить (а потом обратно). И я подумал, что было бы удобнее просто кликать по значку. Ничего сложного — почему бы не реализовать? Начал я, конечно же, с рисования значка. Решил, что хорошо подойдет портал из «Рика и Морти» как метафора беспрепятственного перемещения между измерениями. Провел целый вечер в Procreate на iPad, замучился, устал и отложил затею на потом.

Что было дальше