Лицензионный ключ на 202 символа: почему не Ed25519 и не RSA
Понадобилось научить десктопную программу принимать лицензионные ключи: строка из письма вставляется руками и проверяется без интернета. Во что это вылилось?
Понадобилось научить десктопную программу принимать лицензионные ключи: строка из письма вставляется руками и проверяется без интернета. Во что это вылилось?

Интернет приписывает Джейсону Стейтему фразу «Одна ошибка — и ты ошибся!». В случае этой истории она почему‑то сама собой переиначилась в вариант из заголовка. Уж очень всё оказалось из серии «никогда так не делай».
24 июля исследователь BobDaHacker опубликовал разбор Click to Pray — официального приложения Всемирной сети молитвы Папы Римского.
В сервисе на тот момент было 719 517 зарегистрированных аккаунтов. У пользователей были последовательные числовые ID, а API позволяло запросить профиль по ID:

Рассмотрим следующую задачу: Пусть соленоид имеет следующие размеры:высота 2h, внешний радиус R2, внутренний R1<R2.В полость вставлен цилиндрический стальной сердечник радиуса R1, высоты 2h.На него равномерно, очень плотно и под прямым углом намотана медная проволока круглого сечения диаметра d, причём d очень мало по сравнению с размерами соленоида. По обмотке течёт постоянный ток I(рассмотреть возможность переменного тока I(t)) , направленный по часовой стрелке. Требуется определить магнитное поле B (x,y,z, t) внутри, снаружи соленоида и в сердечнике.
Некоторые производители поставляют свои прошивки в незашифрованном виде, без защиты от реверс-инжиниринга и даже с debug-символами. Еще 5 лет назад, для того чтобы раскопать что-то в такой прошивке приходилось копаться с binwalk, делать свои скрипты и просматривать множество файлов вручную на предмет чего-нибудь интересного.

Написать систему и эксплуатировать систему — две очень разные инженерные задачи. Первая заканчивается на «работает под нагрузкой». Вторая начинается с вопросов, которые задаёт человек на дежурстве: что упало ночью и как это переиграть? кто нажал force‑stop? можно ли выкатить патч библиотеки, не пересобирая весь рантайм? почему пароль сервис‑аккаунта видно на странице дашборда?
Прошлые релизы нашей экосистемы отвечали на первый вопрос. 3.4.0 — целиком про второй.
Напомню, из чего экосистема состоит: типизированное хранилище redb поверх Postgres/MSSQL/SQLite, интеграционный движок redb.Route (наш ответ Apache Camel под.NET, 30+ коннекторов), рантайм redb.Tsak с дашбордом, hot‑reload и кластером, и сервер идентичности redb.Identity (OIDC/OAuth 2.1). Всё это работает у нас в проде и публикуется пакетами, образами и standalone‑архивами.
В 3.4.0 появились четыре вещи, каждая из которых — про день после деплоя:

Все поинты ниже применяются при общении, промптинге и ежедневной работе с AI - и во многом они пересекаются с тем, как общаются люди между собой.
«Нельзя ошибаться» → Ошибаться это нормально. Спрашивайте проанализировать и исправить их, создавайте культуру инструментов и регрессионного тестирования, чтобы отлавливать и разбирать ошибки (то есть занимайтесь развитием engineering stewardship).
Угрозы / Неэтичная лексика → Относитесь к общению с AI так же, как к общению с любым человеком. Поощряйте сотрудничество, креативность, ответственность и чувство собственности (ownership). Делегируйте и …

Свежий отчет «Лаборатории Касперского» разбирает два недавних инцидента в Латинской Америке, в ходе которых организации стали жертвой кибервымогателей. Оба инцидента, произошедшие в мае этого года в Мексике и в июне в Колумбии, удалось подробно проанализировать, в результате чего стали понятны методы взлома корпоративной инфраструктуры, а также дальнейшие шаги киберпреступников. Примечательно, что в обоих случаях для шифрования данных с последующим требованием выкупа использовался штатный инструмент Windows, известный как BitLocker.
Значок, указывающий на то, что диск зашифрован, стал первым признаком кибератаки, который заметили в организации. Точкой входа в инциденте, произошедшем в Колумбии, стала доступная из Интернета служба удаленного рабочего стола (RDP) на сервере, к которому, в свою очередь, был подключен жесткий диск объемом 8 терабайт с критически важными финансовыми данными. Злоумышленники сначала получили контроль над системой, изменили учетные данные пользователей, а затем применили шифрование. Еще одной любопытной особенностью данной атаки стала печать записки с требованием выкупа прямо на корпоративных принтерах в офисе организации.

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

Язык, который придумали, чтобы программисты стали не нужны, породил профессию, которая жива до сих пор и неплохо оплачивается, а другой язык назвали "структурированным английским", и думали, что на нем сможет писать любой бухгалтер, и он тоже породил новую специальность со своей зарплатной вилкой. А еще была попытка сделать "программирование без программистов к двухтысячному году", но и он дал обратный результат.
Думаю вы узнали COBOL, который по сей день ежедневно эксплуатируется и по разным оценкам стоит за 80% обычных (магазинных) банковских транзакций, а его кодовая база тянет на пару сотен миллиардов строк и до сих пор кормит десятки, если не сотни тысяч разработчиков. Правда, если копнуть эти красивые цифры, почти все они восходят к одному опросу конца девяностых, который потом бесконечно переэкстраполировали на весь мир, так что честнее считать их порядком величины, а не точными данными.
SQL породил особую касту DBA (Database Administrators) и Data Engineers и сегодня человек, который пишет "простые запросы", может легко зарабатывать на уровне мидла, а сам язык стал настолько сложным, что современные диалекты (PostgreSQL, Oracle) - это полноценные языки программирования с процедурной логикой, где можно написать всё что угодно, от генератора фракталов до игрового движка.
Семейство 4GL оказалось "золотой клеткой" и прекрасно работали, пока нужно было сделать типичную форму "ввод-вывод", но как только требовалась нестандартная бизнес-логика или интеграция с внешним сервисом, инструмент упирался в свои границы и программистам приходилось дописывать "костыли" на низкоуровневых языках, что превращало разработку в адский коктейль из визуального дизайна и грязных хаков. И вместо исчезновения программистов, 4GL создали "архитекторов корпоративных систем", которые (например, SAP ABAP), стали невероятно дорогими специалистами, и тоже не устранил программирование, а просто переместил его из зоны "универсальных языков" в зону "дорогих и капризных инструментов", привязывающих компанию к конкретному вендору.
Каждые десять-пятнадцать лет индустрия торжественно объявляет, что писать код руками больше не придётся, продавая новый способ "объяснить машине задачу на нормальном человеческом языке". И каждый раз через несколько лет выясняется, что программистов стало не меньше, а больше, просто теперь они называются иначе. Предположу, что сейчас мы проживаем очередной виток этого цикла, и новое название таким людям будет вайбкодеры, и думаю этому инструменту, уготована та же судьба, что и у предыдущих попыток.
Для своего пет-проекта мне понадобилась удобная система фильтрации, плюс я хотел попрактиковаться в кодогенерации Roslyn. В этой статье продолжаю рассказывать о гибкой фильтрации данных в EF Core на Exression. Расскажу как мне удалось реализовать новые фичи (строгий контракт с фронтом, операторы сравнения, автоматический null-guard) выиграв при этом в производительности в рантайме.

Знакомая ситуация: задача ушла в работу, а через неделю выясняется, что сроки горят, фронтенд мычит, а результат вообще не то, что вы просили. Обычно в этом винят разработчиков. Но давайте честно: часто проблема начинается еще на этапе аналитики.
Мое глубокое убеждение: лучший аналитик - это разработчик. Или человек, который научился думать как разработчик. Любая дорога хорошего разраба в будущем ведет в аналитику или архитектуру, потому что без понимания системы на уровне кода делать качественные продукты невозможно.
Кстати, спойлер для тех, кто думает, что нейросети и вайбкодинг скоро заменят аналитиков и продактов. Не заменят. ИИ генерит код, но только если ему скармливать идеальные промпты. А идеальный промпт - это и есть грамотно написанная задача. Так что прокачка этого навыка - ваша личная страховка от вымирания. Сеньор, который пишет ТЗ так, что ИИ (или джун) собирает из него рабочий интерфейс без вопросов - это новая реальность.
Давайте соберем в кучу всё, что нужно знать, чтобы ваша задача не вызывала у фронта нервного тика, а бизнес в итоге заработал денег (а вы получили повышение, потому что причастны к этому успеху).

Меня зовут Викторина Юрьевна Савельева, мне 87 лет, и сегодня я подвожу определенные профессиональные итоги. Хочу поделиться результатами одной уникальной работы, которая была выполнена в далеком 1991 году по прямому заказу Сургутской ГРЭС-2.
Долгое время у меня сохранялся только рукописный черновик. Недавно с помощью современных технологий я оцифровала его для семейного архива, а сегодня хочу передать это инженерное наследие профессиональному сообществу.
О каком оборудовании идет речь?
В работе рассматривались сложные вопросы динамики системы возбуждения турбогенератора ТВВ-800 с автоматическим регулятором возбуждения сильного действия АРВ‑СДП1 (изготовления ПО «Электросила», которое сегодня входит в состав АО «Силовые машины»).
Для понимания масштаба: Сургутская ГРЭС-2 — самая мощная тепловая электростанция в России и крупнейшая в мире из работающих на попутном нефтяном газе. Агрегаты ТВВ-800 — это классический, сверхмощный энергетический комплекс, составляющий основу советских энергоблоков мощностью 800 МВт. Самое интересное, что прямо сейчас, в 2020-х годах, эти машины проходят масштабную модернизацию, а значит — расчеты их динамики снова актуальны.
В чем суть метода?
Исследование выполнено методом Логарифмических Амплитудно‑частотных Характеристик (ЛАХ) без решения громоздких характеристических уравнений.
В свое время работа получила отличную оценку во Всесоюзном Энергетическом Институте (ВЭИ) ещё Советского Союза. Тогда нам официально рекомендовали продолжать более глубокие исследования в этом направлении.
Точнее, на Spec Kit от GitHub. Полгода назад я бы над этим посмеялся: спеки, планы, декомпозиция задач - привет из 2010-го, когда это называлось waterfall и все дружно от него убегали. Оказалось, убегали не от спек, а от того, что их писали люди и потом никто не читал. В этой статье расскажу, где я отхожу от стандарта в угоду скорости.
Что такое SDD в исполнении Spec Kit по сути…

Игрок пишет: «Пока орк отвлечён, я тихо выхватываю меч и прыгаю в окно». Для человека за столом это один ход. Для бота — разбор фразы на атомы, зависимости и броски, иначе «выхватываю» случится после «прыгаю» и всё запутается. Ниже — как ИИ превращает такую реплику в исполняемый граф действий.
Эта статья — разбор архитектурного пайплайна для детерминированной обработки свободного текста. В качестве кейса — ДнД‑бот, где вместо надежды на «умную LLM» я использую атомизацию, граф зависимостей и специализированных агентов. Будет полезно всем, кто проектирует сложные LLM‑системы обработки запросов и пытается победить галлюцинации и высокую стоимость токенов.
Однако я постарался использовать максимально простой язык, чтобы рассказать не связанным с разработкой игрокам, как ДнД‑бот из их запроса создаёт логичный и лаконичный ответ мастера.
Итак, поехали!
Российские хостинг‑провайдеры предложили Минцифры ввести отдельный порядок идентификации для иностранных клиентов. Для физических лиц они предлагают сохранить действующие способы. Для юридических лиц предлагается оставить выбор из усиленной квалифицированной электронной подписи, личного визита в офис, Единой системы идентификации и аутентификации и Единой биометрической системы. Об этом сообщило издание РБК со ссылкой на неназванные источники.
По данным одного из источников, вопрос обсуждался 17 июля 2026 года на совещании с участием представителей Yandex Cloud, VK Cloud, Timeweb Cloud, RUVDS, Cloud[.]ru, Selectel и других компаний. В обсуждении также участвовали представители Минцифры, ФСБ и Роскомнадзора.

Только потратят они его не на золотые наручники, а на цифровую независимость. 846,9 млн рублей — именно столько ФССП закладывает на импортозамещение своей «серверной» — точнее, вычислительной инфраструктуры ЦОД и центрального аппарата.
Меняют всё, что болит:

Moonshot AI выпустила веса Kimi K3 — мультимодальной MoE‑модели с 2,8 трлн параметров, из которых на каждом токене активируются 104 млрд. В отдельных тестах программирования и работы с инструментами K3 обходит Claude Opus 4.8, GPT-5.5, GPT-5.6 Sol или Claude Fable 5. Однако сводить релиз к таблице результатов было бы ошибкой: сама Moonshot признаёт в техническом отчёте, что в среднем модель уступает Fable 5 и GPT-5.6 Sol.
Как следует из технического блога Moonshot, все решения K3 проектировались совместно: гибрид Kimi Delta Attention и глобального MLA, Attention Residuals, MoE на 896 экспертов, обучение длинных агентных траекторий и отдельная система кеширования. Разберём, какие задачи решает каждый компонент, что подтверждено опубликованными материалами и где отчёту Moonshot пока приходится верить на слово.

На протяжении многих лет использования git я выявил для себя одну серьезную проблему, которую этот инструмент не дает возможности разрешить удобным способом. Я назвал эту проблему “проблемой длинного прыжка”. Суть такова: у вас есть старая залежавшаяся ветка, которая отстает от main-ветки на сотни и тысячи коммитов. Задача - обновить эту старую ветку до свежего main. Все усугубляется тем, что у вас тяжеловесный репозиторий: гигабайты, десятки или сотни гигабайт.
Агентная проверка безопасности для Rust
Сделал свой микро-Mythos на основе Anthropic's defending-code-reference-harness но для нормального языка.
Веселитесь:
https://github.com/scadastrangelove/rust-in-peace

Автономный цикл разведки → обнаружения → оценки → обнаружения → фаззинга → отчета → исправления для реальных ошибок, которые действительно затрагивают Rust: безопасность памяти в unsafe/FFI, DoS-атака из-за паники, вызванная недоверенными входными данными, доверие к десериализации (проверка целостности не является проверкой границ) и надежность Send/Sync + безопасность при панике.
Статический анализ управляет динамическим этапом — модель угроз определяет, какой санитайзер, порог фаззинга и бюджет голосования получит каждая обнаруженная ошибка.
Детекторы: Miri (неопределенное поведение), AddressSanitizer, panic/abort, hang-timeout и cargo-fuzz для динамического воспроизведения ошибок.
Если на сцене висит ружьё то не удержался и я - запустил Rust In Peace по десятку популярных ржавых ящиков. Из тех, что в топе и парсят внешние данные, чтобы с поверхностью атаки.
На удивление балалайка не только пожужжала и съела токены, но реально нашла забавное, наделала PoC-ов и фиксов — часть уже смёржена мейнтейнерами.
По состоянию на 24.07.2026 было зарегистрировано 51 сообщение об уязвимостях в 17 независимых проектах на Rust: 12 уже исправлены и в влиты в main (включая lopdf, x509-parser, quick-xml, ntex), еще 9 приняты или находятся на рассмотрении в качестве GSHA безопасности (gitoxide, quinn-proto, rustls, ciborium, h2, hyperium).
Трекер тут: https://github.com/scadastrangelove/rust-in-peace/blob/main/DISCLOSURES-PUBLIC.md
Из интересного:
Методически правильный подход через «модель угроз» работает иногда так же хорошо, как просто бахнуть бессистемно. Просто они находят разные баги. На одном таргете: threat-model-first взял глубину и логические баги, слепой прогон взял пачку генериков, которые модель угроз недооценила, поскольку слишком умная, но фаззинг подтвердил. Ничья, точнее дабл страйк.
Старая пословица «баги ходят косяками» работает. «Поищи ещё такие же», «в этой функции был такой-то баг — проверь остальные» — приёмы из репертуара Google Project Zero живее всех живых. RUSTSEC-патч закрыл что-то в парсере, но не тронул еще четыре точки входа — те же дырки. Добавил как третий срез.
Статика и фаззинг — это хорошо, но только PoC — мерило истины. Очевидно, но забывается. В половине случаев когда и агент-копатели, и «более умный» ревьюер независимо согласились, что путь достижим — оба ошибались, поймала это только реальная сборка и прогон против настоящего апстрима.
Слепой фаззинг хорошо но уже есть у большинства проектов, инструментированный cargo-fuzz еще лучше, а если на вход скормить находки анентской статики, то вообще бомба.
Всегда стоит почитать issues и проверить ветки перед тем как бахать репорт и репортить бахи. Вполне может приключится, что твоя находка уже закрыта. Просто не релизнута ещё. В табличке это отдельная строка «refound». Особенно обидно, было когда три баги все разом закрылись одним ещё не выпущенным архитектурным рефакторингом. А робото жужжал и хлопал в ладоши, эх.
Разглашение в open source не сильно отличается от «responsible disclosure» в закрытом софте: кто-то вливает фикс за час, кто-то говорит спасибо, кто-то наоборот - «это всё неправда». Как и в коммерции, отказ это не последняя инстанция: поставил себе таймер вернуться через месяц и перепроверить на сайлент-фиксы.
Ну и да, часть человеков роботов не любят и ругаются на «нейрослоп», несмотря на приложенный PoC и рабочий фикс. Ну штош, не привыкать. Неолуддизм и прочий подсчет букв ё, это святое
Если честно, сам не ожидал такого результата — штука реально работает, хоть токенов жрёт изрядно.
Собрал 52 гайда по AI: от первой модели в Ollama до своего агента
Дисклеймер: я не AI-исследователь и не senior ML-инженер. Я обычный разработчик, который решил разобраться в теме — и понял, что хороших сводных материалов катастрофически не хватает.
Большинство статей либо «что такое нейросети за 5 минут» (бесполезно), либо «запускаем LLM с нуля на кластере из 8 A100» (неприменимо). Между этими крайностями — пропасть.
Я решил собрать то, чего мне самому не хватало: практический хендбук, который ведёт от полного нуля до работающих агентов. Без воды, без маркетинга, без «ChatGPT заменит программистов».
Весь проект — 52 файла, ~6 часов чтения. Уровни: зелёный (начало) → красный (глубоко).
Репозиторий: https://github.com/bestdeejay-design/awesome-ai-handbook
О чём это вообще
Хендбук покрывает пять разделов:
Zero Level — база. Что такое LLM, как они устроены (без математики), облако vs локальный запуск, как выбирать железо (RAM, VRAM, квантование), глоссарий на 35 терминов. Рассчитан на тех, кто вчера открыл терминал.
Local Models — установка Ollama, выбор моделей под задачу (Qwen, Llama, Mistral…), квантование (Q4/Q5/Q8), сравнение инструментов, бенчмарки на Apple Silicon, продвинутая настройка (Modelfile, кастомные API, окружение).
AI Agents — архитектура, паттерны (ReAct, Multi-Agent), фреймворки (LangGraph, CrewAI), память, system prompts, safety, туториалы: первый агент, команда агентов, кодинг-агент.
Use Cases — реальные сценарии: кодинг с Continue/Aider, RAG с Open WebUI и ChromaDB, автоматизация с n8n, Telegram-боты, контент-пайплайны.
Resources — сообщества (Reddit, Discord), курсы (EN/RU), ссылки на всё полезное.
Почему это не очередной awesome-list
Я намеренно не делал просто список ссылок. Каждый файл — это полноценный материал с:
Контекстом и пояснениями
Сравнением вариантов (например, когда выбрать Ollama, а когда LM Studio)
Командами, которые можно скопировать и выполнить
Предостережениями (грабли, на которые сам наступал)
Пример. В разделе про квантование не просто таблица методов, а объяснение: на что влияет Q4 vs Q8, как считать VRAM под свою задачу, и когда квантование ломает ответы модели.
Или раздел про агентов — не ссылка на документацию LangChain, а пошаговые туториалы с реальным кодом: от «агент с одним инструментом» до «команда агентов с очередью задач».
Структура проекта
awesome-ai-handbook/
├── basics/ # 🟢 нулевой уровень (9 файлов)
├── local-models/ # 🔵 локальные модели (11 файлов)
├── agents/ # 🤖 AI агенты (17 файлов)
├── use-cases/ # 💼 применение (5 файлов)
└── resources/ # 📖 ссылки и курсы (5 файлов)
Каждый раздел — законченная тема. Можно читать подряд или прыгать в конкретный файл по каталогу (catalog.md). Уровни сложности маркированы цветом — от зелёного (ничего не знаю) до красного (пишу код).
Кому это будет полезно
Разработчикам, которые хотят использовать AI в работе, но не знают с чего начать
Тем, кто уже запустил Ollama, но хочет разобраться глубже — с агентами, RAG, пайплайнами
Тем, кто ищет альтернативу ChatGPT и хочет запустить модель локально, но не уверен в выборе
Тем, кто читал пять статей про AI-агентов и всё ещё не понимает, как их собрать
Почему Open Source
Хендбук лежит на GitHub под MIT-лицензией. Я планирую поддерживать его актуальным — модели и инструменты меняются быстро, и это не работа одного человека.
Если найдёте ошибку, устаревшую информацию или захотите добавить свой раздел — открывайте issue или PR. Я за мердж-реквесты с чаем и печеньками.
Ссылки
Репозиторий: https://github.com/bestdeejay-design/awesome-ai-handbook
Читать с нуля: basics/README.ru.md
Каталог всех файлов: catalog.ru.md
Если знаете английский: README.md
Надеюсь, кому-то сэкономит недели поиска. Если понравилось — киньте звезду на GitHub, для проекта это лучшая поддержка.
