StepOne | Степан Минин
الذهاب إلى القناة على Telegram
StepOne by Степан Минин @ststphn Твой первый шаг к успеху в программировании Закрытый тг канал https://t.me/tribute/app?startapp=slOA По вопросам рекламы @Spiral_Yuri Ютуб https://www.youtube.com/@steponeit
إظهار المزيد3 264
المشتركون
-624 ساعات
-57 أيام
-2430 أيام
أرشيف المشاركات
Рассказал как автоматизировал сборку лексера компилятором для своего языка программирования HydraScript. Да-да, вы не ослышались - автоматизация без упоминания ИИ или агентов!
Из интересного - фактически научился передавать работу из одного генератора в другой через небольшой хак рослина
Ставить плюс на Хабре здесь 👉 https://habr.com/ru/articles/1087280/
Пошутил про джавистов в прямом эфире 😅
Шарпизм победил окончательно и бесповоротно!
Рассказал как я добавил в 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Звезда — простой способ поддержать мою работу. А если уже используете пакет, расскажите, как он вам и чего не хватает!
Напомню, что у меня есть 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-методе внутри проектаОказывается, год назад я предсказал выход Астры
И вместе с этим - точную реакцию рынка на роль программистов
Думайте. АГИ уже здесь!
Астра 💪💪💪
Доставка - новое 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 месяцев!
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<TMessage> 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