Обновить
1024K+

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

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

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

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

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

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

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

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

Читать далее

От хаоса к порядку: как управлять техдолгом

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

Сталкивались с проектами, где накопленный технический долг замедляет работу команды и усложняет развитие продукта?

В этой статье Ирина – тимлид компании «Совкомбанк Технологии» – подробно расскажет, как ей вместо с командой удалось выстроить работу с техническим долгом на проекте с 8-летней историей: с чего начать, как приоритизировать задачи, какие инструменты и процессы внедрить.

Материал будет особенно полезен тем, кто работает в проектах с долгой историей и вынужден совмещать поддержку старого кода с внедрением новых решений.

Читать далее

Разбор утечки памяти в StackExchange.Utils: как 4 КБ конфигурации съели 2 ГБ RAM

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

Привет, Хабр! Я Антон Пронькин, разработчик в команде развития сервисов продаж для юридических лиц в Т-Банке.

Расскажу, как мы переносили конфигурационные данные в файлы и наткнулись на OOM-крэш, вызванный всего одним методом расширения. Добавление YAML-файла на 4 КБ съедало больше 2 ГБ RAM. При этом локально все работало, а падало только при прогоне тестов на пайплайне.

В статье — расследование с профайлингом, экспоненциальный рост памяти, фикс в одну строку и разбор особенности работы библиотеки StackExchange.Utils.

Читать далее

Практика программирования в эпоху ИИ (разбор реальной задачи на С++ с помощью ИИ агента)

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

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

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

Первую часть общения я описал как смог в предыдущей статье.

В этой будет то что, как мне кажется, можно именовать окончанием — подведением итогов с ответом на мой вопрос который ИИ-агент охарактеризовал так:

Это отличный, глубокий вопрос, который бьет прямо в особенности того, как устроены большие языковые модели (LLM) и как у нас замыливается «цифровой глаз». ...

Дисклеймер: редактора, корректоров у меня нет, вычитать, нормально, столько текста я вряд ли в состоянии.

Но начать я хочу с более детальной формулировки задачи.

Читать далее

HashMap в Rust: SwissTable, SIMD по 16 байт за раз и RawTable, который от вас спрятали

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

Привет, Хабр!

Признавайтесь: вы пользуетесь std::collections::HashMap примерно каждый день и ни разу не задумывались, что под ним. А под ним, если коротко, сидит алгоритм от Google. С Rust 1.36 (это лето 2019-го) стандартный HashMap это порт SwissTable, той самой структуры из абсейловского flat_hash_map. До этого там был Robin Hood hashing, и если вы где-то ещё видите описание std-мапы как «linear probing and Robin Hood bucket stealing», знайте: оно протухло, актуальная документация уже пишет «quadratic probing and SIMD lookup».

И вот «SIMD lookup» это самое интересное. Весь фокус скорости SwissTable держится на одном байте служебных данных на элемент, который сканируется по 16 штук за одну инструкцию процессора.

В статье глянем, как это устроено внутри, почему ваша мапа по умолчанию устойчива к hash DoS и платит за это скоростью, когда в проде стоит переходить на FxHash, и почему низкоуровневый RawTable существует, но в публичном HashMap его спрятали.

Будет много кода и немного ассемблерной романтики.

Читать далее

Логгер в топе VTune: как найти строки, создающие нагрузку

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

Профайлер показывает write() и worker файлового логгера среди верхних стеков. Однако системный профайлер не знает, какая из тысяч строк вывода в лог породила нагрузку. Отключать логирование совсем — ужасное решение. Как же связать файловый ввод-вывод с конкретными строками вывода в лог, каналами и backend?

Читать далее

Лучшие модели для разработки с ИИ на 1С (бенчмарк v2)

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

Claude Opus 5, Claude Fable 5, GPT 5.6 Sol, Kimi K3, Claude Opus 4.8, Grok 4.5, Composer 2.5, GPT 5.5, DeepSeek v4, GLM 5.2, Qwen 3.8 Max, Claude Sonnet 5, Mimi 2.5, MiniMax M2.7.

Для тех, кому лень читать до конца, текущий итог:

Читать далее

Новые правила контекстной инженерии для Claude 5

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

Ранее я уже писал о том, как лучше всего составлять промпты для нового поколения моделей Claude 5 и работать с ними итеративно, чтобы постепенно понять, что именно вы хотите создать.

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

В отличие от промпта, контекст используется сразу во множестве запросов, поэтому он не может быть настолько же конкретным. Как создавать общие инструкции и рекомендации для Claude, особенно если заранее неизвестно, с каким запросом придет пользователь?

По мере развития возможностей Claude эта задача неожиданно усложняется. Недавно мы заметили серьезные изменения в том, как следует составлять инструкции для нового поколения моделей. Мы удалили более 80% системного промпта Claude Code для Claude Opus 5 и Claude Fable 5, при этом наши тесты по программированию не показали измеримого ухудшения результатов.

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

Читать далее

Бенчмаркая Regex: конструктор показал 10 мкс, первый вызов — 1307

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

Проверить строку регулярным выражением в .NET можно по-разному, но совет всегда один: включите RegexOptions.Compiled или возьмите генератор. Замеры это подтверждают.

А вот подготовка выражения оказалась не там, где её меряют: конструктор занимает 10 микросекунд, а первая же проверка на этом объекте — ещё 1307. Разобрался, куда уходит разница, и заодно нашёл границу, на которой статический Regex.IsMatch резко замедляется.

Читать далее

Деконструкция Go: Runtime или программа, которая запускает вашу программу. Часть 3.1

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

В предыдущих частях мы разобрались с тем, во что превращается Go-код, как процессор работает с памятью и каким образом реализуются примитивные атомарные операции.

Но всё это порождает закономерный вопрос.

Если CPU умеет выполнять только машинные инструкции, а операционная система знает лишь о процессах и системных потоках, то кто вообще знает о существовании горутин?

Кто увеличивает их стеки?

Кто решает, какую из них сейчас выполнять?

Кто собирает мусор?

Ответ на всё это один - Go runtime.

Но runtime - это не какая-то магическая программа, которая находится между нашим приложением и операционной системой. Это часть самого приложения.

Давайте разбираться!

Читать далее

Чем вообще занимается служба безопасности GitHub?

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

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

Такие репозитории существуют уже 2 года. У гитхаба есть миллиарды долларов, служба безопасности и искусственный интелект.

Почему они за 2 года не решили эту проблему?

Читать далее

Облегчи себе разработку ботов – Raito

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

Я разработал плагин, чтобы помочь разработчикам Telegram ботов.

Он работает поверх aiogram – не нужно будет переписывать уже имеющийся код.

И если ты хоть раз писал ботов, эта статья сэкономит тебе много времени и нервов.

Прочитать статью

Как я, владелец сервисного центра, задолбался от чужих CRM и сделал свою на AI и выложил в open source

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

Всем привет. Меня зовут Александр, у меня сервисный центр по ремонту техники.

Чиню ноутбуки, компьютеры, принтеры, заправляю картриджи и прочую технику обычная жизнь СЦ: заявки, запчасти, касса, мастера, клиенты.

Долгое время жил на облачных CRM, от работы в excel создавая каждый раз папку с датой и файлик с данными клиента и заявкой, далее что то удалось сделать на Microsoft Access, далее полноценно на лет 5 перешел на remonline и вроде все устраивало но очень долго они вводили новые функции, и как всегда те которые мне не нужны были, ну и далее всем известные события и они отвалились навсегда из российского сегмента, потом перешел на helloclient тоже просидел пару лет пока не начали вводить белые списки, к сожалению из за постоянных проблем с сетью у провайдера при включении белых списков система был недоступна часами, и в голове уже много лет была мысль создать свою CRM для себя , с возможностью быстрой доработки под конкретные задачи и хотелки мастеров и меня, сначала решил учить языки программирования), около года учился на пайтон разработчика, и под конец понял что это затянется надолго и решил использовать Cursor для дополнения кода, ну и затем вовсе перешел на полноценную работу в агенте , и спустя 4 месяца работы выпустил релиз в работу, мастера оценили , мы сидели и придумывали новые фишки на лету чтобы ускорить приемку , выдачу, шаблоны печати и расчет зарплаты, от идеи до ее реализации одна ночь, вечером мы что то обсуждали по нововведениям и уже утром все было готово, так однажды из за отключения сети мы придумали чат в браузере со звуком сообщения Аськи), до сих пор многие клиенты думают что мы используем ICQ в работе.

Читать далее

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

Хорошие инструменты — невидимы

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

Хороший инструмент должен быть незаметен, и разработчикам следует к этому стремиться.

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

Я же хочу, чтобы мои инструменты не создавали для меня «увлекательные» головоломки, а просто незаметно делали своё дело.

Читать далее

Бенчмаркая FrozenDictionary: заменил Dictionary — получил от ×0,76 до ×1,9

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

FrozenDictionary сделан под словари, которые заполняют один раз при старте, а дальше только читают. Замерил на четырёх машинах и трёх рантаймах — разброс вышел от ×0,76 до ×1,9, и зависит он не от версии .NET, а от того, сколько ключей и как они устроены.

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

Читать далее

Анализ сервисов на замену OpenRouter в РФ

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

Заголовок конечно очень похож на классический ИИ SEO слоп, но не спешите закрывать. Анализ вцелом я делал для себя и не претендую на истину в последней инстанции. Просто делюсь вдруг кому окажется полезным.

OpenRouter - самый крупный и известный в мире агрегатор нейросетей. C 26 июля стал пытаться блокировать пользователей из России. Вцелом, с учетом простоты регистрации и возможностью оплаты криптовалютой - это не такая большая проблема. Но только вот пользование сервисом из 3 букв может добавлять определенные задержки к ping-у. А если на агрегатор завязано достаточно много сервисов, то сервис из 3 букв должен работать как часы. Эту проблему можно решить именно так, но откровенно говоря ценность OpenRouter как агрегатора в данном случае сводится практически в нулю, поэтому я решил поискать альтернативу - кто уже озаботился решением этого вопроса, попутно получив и другие полезные плюшки, вроде использования российских моделей если в агентах светит 152 ФЗ (строго для этих запросов) и более простой оплаты без переводов на зарубежную карточку.

Для тех, кому лень читать, краткий итог ниже:

Читать далее

Ваш AI-агент не понимает код. Он просто очень уверенно угадывает — поэтому мы создали SLICER

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

AI-агенты отлично решают локальные задачи, но часто теряют связи между частями большой кодовой базы. Из-за этого изменение одной функции может незаметно сломать frontend, backend-роут, сервис, repository, background task или тест.

В статье разбирается CodeSlicer — локальный CLI, MCP-сервер и визуальный анализатор, который строит проверяемый граф влияния проекта. Он связывает функции, классы, DI-провайдеры, HTTP-endpoint’ы, frontend-компоненты и тесты, сохраняя evidence chain, provenance, confidence и причины каждой связи.

Показывается полный pipeline: inventory, extraction, semantic resolution, support packs, unknown regions, mutation testing, runtime observation и impact analysis. Отдельно разобрано, почему система не должна превращать предположение AI в подтверждённое ребро.

На размеченных Python-сценариях протестированы 21 тестовый сценарий, 29 mutation-сценариев, 20 обязательных semantic edges, 0 false positive и 0 false negative. Для TypeScript и frontend-backend bridge проверены 12 сценариев, 15 мутаций и 4 cross-language цепочки с endpoint precision 1.0.

Также рассматриваются интеграции с AI-агентами через CLI, MCP и skills, отличие CodeSlicer от обычных графов кода и дальнейшее развитие проверенного registry библиотек

Читать далее

Вводим рейтинг по алкоголизму

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Изучить asyncio