StepOne | Степан Минин


Kanal geosi va tili: Rossiya, Ruscha


StepOne by Степан Минин @ststphn
Твой первый шаг к успеху в программировании
Закрытый тг канал https://t.me/tribute/app?startapp=slOA
По вопросам рекламы @Spiral_Yuri
Ютуб https://www.youtube.com/@steponeit

Bog‘liq kanallar  |  O‘xshash kanallar

Kanal geosi va tili
Rossiya, Ruscha
Statistika
Postlar filtri




Рассказал как автоматизировал сборку лексера компилятором для своего языка программирования HydraScript. Да-да, вы не ослышались - автоматизация без упоминания ИИ или агентов!

Из интересного - фактически научился передавать работу из одного генератора в другой через небольшой хак рослина

Ставить плюс на Хабре здесь 👉 https://habr.com/ru/articles/1087280/

858 0 3 11 10

Пошутил про джавистов в прямом эфире 😅

Шарпизм победил окончательно и бесповоротно!




Рассказал как я добавил в HydraScript объекты и методы без классов и сделал протоколы.

Структурные типы, явный receiver и дополнительная работа аннотации типа.

Накидаем плюсов на Хабре СтепВану 👉 https://habr.com/ru/articles/1086432/






Напомню, что у меня есть WireMock.Grpc.Protobuf — расширение для тех, кто пишет компонентные тесты с gRPC 👩‍💻

Оно позволяет настраивать моки WireMock.Net через сгенерированные C#-контракты Google.Protobuf. Можно проверять запрос целиком или только нужные поля:
Request.Create()
.WithBodyAsGoogleProtobuf(
(HelloRequest x) => x.Name == "StepOne");

Планирую написать новую статью с практическим примером компонентного теста на базе xUnit ✅

Если после прошлой статьи откладывали знакомство — самое время попробовать😊

📦 Пакет на NuGet
⭐️ Исходники на GitHub


Звезда — простой способ поддержать мою работу. А если уже используете пакет, расскажите, как он вам и чего не хватает!


StepOne — официальный контрибутор FusionCache 🤙

Между набросами можно ещё и код писать


FusionCache — библиотека гибридного кэширования для .NET. Объединяет кэш в памяти и распределённый кэш. Даёт из коробки джиттеринг, защиту от cache stampede, распределённую блокировку и многое другое

Всё началось с бытового раздражения - для подключения RedisDistributedLocker приходилось вручную собирать объект локера, прокидывать настройки и логгер, доставать всё из DI

Я же предложил сократить эту конструкцию до одного вызова. Добавил WithRedisDistributedLocker и проверки в DI-тестах

Сам механизм блокировок уже был — я сделал его подключение удобнее. Теперь этот код в библиотеке, а не в очередном самописном extension-методе внутри проекта


Стояк работодателей 2026 🤫

Оказывается, год назад я предсказал выход Астры!
И вместе с этим - точную реакцию рынка на роль программистов

Думайте. AGI уже здесь!
Астра 💪💪💪


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Доставка - новое IT

Мужчина на видео делится опытом заработка 350 000 ₽ за месяц без выходных курьером ВкусВилл

А после предлагает наставничество по вкату в курьеры

Интересно, что будут разбирать в рамках курса. Правильный ответ на вопрос «Кем вы видите себя через пять доставок?» ???

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

Кто сидит в чате СтепВанчиков, видел мои вбросы про выход из айти в подобные профессии. Но теперь это не шутки, а новая реальность

Привлекательность работы программиста всё меньше и меньше...


GPT-6 УЖЕ ЗДЕСЬ!!!

Мне стала доступна Астра!!!

Теперь я ИИ-Пилот на стыке эпох!

AI-First StepOne ИИ-Трансформировался на грани возможного!!!

ASTRA 💪💪💪


Ребят, наткнулся на новый сериал, называется ДЖАВАзвимый. Он про джависта, которого часто бьют

И короче, весь финал 1 сезона он борется со своим отцом Омни-ШАРПОМ

Мой любимый момент оттуда, когда главный герой крикнул: «Время Джавы!», и его за это жёстко отДОТНЕТили!

В общем, настоящий шедевр нашего времени 🙌


И снова "кажется началось"

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

Он рассказывает о впечатлениях от настоящей AI-First разработки в той конторе, и объявляет начало ИИ-трансформации в вашей компании

Затем проскакивает тезис:
ai-энтузиасты лайк
ai-луддиты скорее в будущем столкнутся с увольнением


Какими были бы ваши действия внутри такой компании?


Поздравляю СтепВанчиков с Днём Знаний!

Желаю узнать как переписать все микросервисы и монолиты на дотнет быстро без багов

Вот сидел я в 9 утра и думал после ревью 5го PR:
«Как хорошо, что в школу не надо»


Красивый GitHub StepOne

Нанейронил себе красивый README профиля и сайт на базе GitHub Pages

https://stepami.github.io/


Получил военный билет

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

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

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

Самостоятельно разобраться во всех правилах, справках и последовательности действий было очень сложно. Юристы помогали понимать, какие документы нужны, как действовать на каждом этапе и чего ожидать дальше. Особенно ценно было сопровождение в моменты, когда процесс затягивался

Спасибо команде Андрея Породзинского за помощь в получении военного билета и сопровождение на протяжении всех 16 месяцев!

1.9k 0 21 15 22

DotNext 2026: мой топ-3 докладов

StepOne стал информационным партнёром DotNext 2026, поэтому сейчас вы читаете краткий обзор финальной программы. Она получилась крепкой.

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

Вот мой личный топ-3.

1. Native AOT vs JIT в .NET 10: производительность, оптимизации и подводные камни

Юрий Малич сравнит JIT и Native AOT на x86-64 и ARM64, разберёт SSE, AVX2, AVX512, недокументированные настройки и будущие изменения кодогенерации в .NET 11. То есть будет нормальный разговор о том, где AOT быстрее, почему и какой процессор способен всё испортить.

2. C# (JIT) vs Go (AOT): сравнение с точки зрения результата и процесса компиляции

C# и Go обычно сравнивают в комментариях, где победитель определяется громкостью и количеством эмодзи. Здесь обещают одинаковые примеры, inlining, bounds checks, аллокации, escape analysis, PGO и Tiered JIT. Наконец-то появится возможность ругать Go не только по зову сердца, но и с опорой на результат компиляции!

3. Agent Framework. Как и зачем делать своего мини-агента на бэке

Да, ИИ-доклад вошёл в мой топ. В Dodo взялись автоматизировать агентами реальный процесс открытия новой страны: 66 этапов, до десяти шагов в каждом и ручные операции на стыке сервисов и людей. Хочу посмотреть, где Microsoft Agent Framework действительно избавляет от тысяч строк обвязки, а где агенту просто выдали красивое название. Это хороший шанс либо укрепить мой ИИ-скепсис, либо аргументированно его уменьшить.

Я буду на DotNext оффлайн оба дня — 25 и 26 сентября.

Если читаете канал и увидите меня на площадке — подходите знакомиться. Не надо стоять в пяти метрах и думать: «Наверное, не стоит отвлекать». Я еду на конференцию в том числе встречаться с вами.

Обсудим C#, open source, доклады, карьеру, блог или вашу очередную попытку доказать, что Go — нормальный язык.

Также у подписчиков моего канала есть возможность приобрести персональные билеты со скидкой. Пишите в лс: @ststphn


А вот и первый баг!

Не успел WireMock.Grpc.Protobuf толком размяться, как у него появился первый баг. Всё по-взрослому.

Проблема нашлась в GrpcPredicateMatcher. Первый запрос он обрабатывал правильно, а при повторном вызове выдавал отсутствие совпадения. Особенно хорошо эффект проявлялся на protobuf-сообщениях с repeated-полями.

Причина оказалась в одной строчке:
private static readonly TMessage Empty = new();

private static readonly MessageParser Parser =
new(() => Empty);

MessageParser ожидает фабрику, которая при каждом разборе создаёт новый объект сообщения. А я возвращал ему один и тот же статический экземпляр.

В результате парсер не очищал объект и дописывал туда новые данные поверх старых. К примеру, если сообщение содержало поле с коллекцией, то она распухала при каждом вызове:
["1", "2", "3"] // первый вызов
["1", "2", "3", "1", "2", "3"] // второй вызов

Исправление заняло меньше символов, чем объяснение бага. Оно заключается в подстановке вызова конструктора new() вместо статического объека Empty.

Первый баг пойман, тест добавлен, стероидный курс продолжается. Поставить звезду на GitHub:
https://github.com/Stepami/wiremock-protobuf


Как я посадил WireMock.Net на gRPC стероиды

WireMock.Net умеет мокать gRPC. Но для этого он заставляет разработчика таскать .proto файлы и поддерживать лишнюю конфигурацию. Я контрибьютил в проект несколько месяцев, разобрался в кишках и написал своё расширение WireMock.Grpc.Protobuf

Пакет предлагает gRPC моки через типизированные контракты Google.Protobuf. Получилось короче, надёжнее и заметно удобнее. Можно проверить входящий запрос как на точное равенство, так и на частичное через предикат

В статье на Habr показал, почему мой способ удобнее стандартного, как всё устроено под капотом и зачем вашему проекту пакет WireMock.Grpc.Protobuf

Исходники расширения уже доступны на GitHub, а проект уже экономит вечера борьбы с gRPC моками! Звезда и скачивание будут лучшей благодарностью:
⚙️ GitHub https://github.com/Stepami/wiremock-protobuf
👩‍💻 NuGet https://www.nuget.org/packages/WireMock.Grpc.Protobuf

20 ta oxirgi post ko‘rsatilgan.