StepOne | Степан Минин
3.27K subscribers
287 photos
39 videos
6 files
354 links
StepOne by Степан Минин @ststphn

Твой первый шаг к успеху в программировании

Закрытый тг канал https://t.me/tribute/app?startapp=slOA

По вопросам рекламы @Spiral_Yuri

Ютуб https://www.youtube.com/@steponeit
Download Telegram
Первый и последний раз показываю как правильно использовать нейросети. Думайте
😁24🔥5👍4❤‍🔥1
DotNext приезжает в Сокольники

Я редко рассказываю про конференции. Доклады доступны в записи, а бейджик участника не превращает мидла в сеньора. Но DotNext — исключение

Я с трудом стал там спикером. Ещё и работаю над конкурентом — «Стачкой». Поэтому у меня есть все основания промолчать. Но не в этот раз

Для меня DotNext давно остаётся тем самым местом, где C#-разработчики говорят о настоящей инженерии, пока джависты в это время обсуждают, как прогреть JVM, чтобы открыть Swagger к обеду

Ивент не для тех, кто вчера наклодИИл сервис и называет себя агент-лидом

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

Это вам не слёт гoферов, где архитектурные болезни выдают за простоту и удобство

В этом году DotNext пройдёт 25–26 сентября в Москве. Я пойду и буду рад встретить подписчиков и знакомых

Сейчас просто хочется побыть среди людей, которые всё ещё умеют обсуждать разработку без слов «агент», «вайб» и «перепишем это на микросервисы»
20👍9🔥9❤‍🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥2🤯2❤‍🔥1
Как я посадил 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥63❤‍🔥1
StepOne | Степан Минин
Как я посадил WireMock.Net на gRPC стероиды WireMock.Net умеет мокать gRPC. Но для этого он заставляет разработчика таскать .proto файлы и поддерживать лишнюю конфигурацию. Я контрибьютил в проект несколько месяцев, разобрался в кишках и написал своё расширение…
А вот и первый баг!

Не успел 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
👍10🔥5🤯3❤‍🔥1
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
👍148🔥5❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Получил военный билет

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

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

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

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

Спасибо команде Андрея Породзинского за помощь в получении военного билета и сопровождение на протяжении всех 16 месяцев!
👍98🔥4❤‍🔥1
Красивый GitHub StepOne

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

https://stepami.github.io/
🔥10👍53😁2
Поздравляю СтепВанчиков с Днём Знаний!

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

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

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

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

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


Какими были бы ваши действия внутри такой компании?
😁14🤯4🤩3
Ребят, наткнулся на новый сериал, называется ДЖАВАзвимый. Он про джависта, которого часто бьют

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

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

В общем, настоящий шедевр нашего времени 🙌
😁184🔥2🤯1
GPT-6 УЖЕ ЗДЕСЬ!!!

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

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

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

ASTRA 💪💪💪
😁13👍4🔥3
Media is too big
VIEW IN TELEGRAM
Доставка - новое IT

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

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

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

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

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

Привлекательность работы программиста всё меньше и меньше...
😁22🔥4❤‍🔥1🤯1
StepOne | Степан Минин
Зумеры не ломают рынок труда. HR и волки не виноваты в цирке из собеседований. Как миллениалы накрутили опыт и сломали найм до становления айти Смотри до конца разоблачение всех IT начальников
This media is not supported in your browser
VIEW IN TELEGRAM
Стояк работодателей 2026 🤫

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

Думайте. AGI уже здесь!
Астра 💪💪💪
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍6😁3🔥2❤‍🔥1
StepOne — официальный контрибутор FusionCache 🤙

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


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

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

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

Сам механизм блокировок уже был — я сделал его подключение удобнее. Теперь этот код в библиотеке, а не в очередном самописном extension-методе внутри проекта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥32❤‍🔥1
StepOne | Степан Минин
Как я посадил WireMock.Net на gRPC стероиды WireMock.Net умеет мокать gRPC. Но для этого он заставляет разработчика таскать .proto файлы и поддерживать лишнюю конфигурацию. Я контрибьютил в проект несколько месяцев, разобрался в кишках и написал своё расширение…
Напомню, что у меня есть WireMock.Grpc.Protobuf — расширение для тех, кто пишет компонентные тесты с gRPC 👩‍💻

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


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

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

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


Звезда — простой способ поддержать мою работу. А если уже используете пакет, расскажите, как он вам и чего не хватает!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63❤‍🔥1🔥1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍4🔥1
StepOne | Степан Минин
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2👍1