Первый и последний раз показываю как правильно использовать нейросети. Думайте
😁24🔥5👍4❤🔥1
DotNext приезжает в Сокольники
Я редко рассказываю про конференции. Доклады доступны в записи, а бейджик участника не превращает мидла в сеньора. Но DotNext — исключение
Я с трудом стал там спикером. Ещё и работаю над конкурентом — «Стачкой». Поэтому у меня есть все основания промолчать. Но не в этот раз
Для меня DotNext давно остаётся тем самым местом, где C#-разработчики говорят о настоящей инженерии, пока джависты в это время обсуждают, как прогреть JVM, чтобы открыть Swagger к обеду
Ивент не для тех, кто вчера наклодИИл сервис и называет себя агент-лидом
В программе DotNext есть всё, ради чего инженеры терпят индустрию:
- рантайм, производительность, архитектура, инструменты
- практические кейсы
- что на самом деле происходит под капотом
Это вам не слёт гoферов, где архитектурные болезни выдают за простоту и удобство
В этом году DotNext пройдёт 25–26 сентября в Москве. Я пойду и буду рад встретить подписчиков и знакомых
Сейчас просто хочется побыть среди людей, которые всё ещё умеют обсуждать разработку без слов «агент», «вайб» и «перепишем это на микросервисы»
Я редко рассказываю про конференции. Доклады доступны в записи, а бейджик участника не превращает мидла в сеньора. Но DotNext — исключение
Я с трудом стал там спикером. Ещё и работаю над конкурентом — «Стачкой». Поэтому у меня есть все основания промолчать. Но не в этот раз
Для меня DotNext давно остаётся тем самым местом, где C#-разработчики говорят о настоящей инженерии, пока джависты в это время обсуждают, как прогреть JVM, чтобы открыть Swagger к обеду
Ивент не для тех, кто вчера наклодИИл сервис и называет себя агент-лидом
В программе DotNext есть всё, ради чего инженеры терпят индустрию:
- рантайм, производительность, архитектура, инструменты
- практические кейсы
- что на самом деле происходит под капотом
Это вам не слёт гoферов, где архитектурные болезни выдают за простоту и удобство
В этом году DotNext пройдёт 25–26 сентября в Москве. Я пойду и буду рад встретить подписчиков и знакомых
Сейчас просто хочется побыть среди людей, которые всё ещё умеют обсуждать разработку без слов «агент», «вайб» и «перепишем это на микросервисы»
❤20👍9🔥9❤🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2🔥2🤯2❤🔥1
Как я посадил WireMock.Net на gRPC стероиды
Пакет предлагает gRPC моки через типизированные контракты
В статье на Habr показал, почему мой способ удобнее стандартного, как всё устроено под капотом и зачем вашему проекту пакет
Исходники расширения уже доступны на GitHub, а проект уже экономит вечера борьбы с gRPC моками! Звезда и скачивание будут лучшей благодарностью:
⚙️ GitHub https://github.com/Stepami/wiremock-protobuf
👩💻 NuGet https://www.nuget.org/packages/WireMock.Grpc.Protobuf
WireMock.Net умеет мокать gRPC. Но для этого он заставляет разработчика таскать .proto файлы и поддерживать лишнюю конфигурацию. Я контрибьютил в проект несколько месяцев, разобрался в кишках и написал своё расширение WireMock.Grpc.ProtobufПакет предлагает gRPC моки через типизированные контракты
Google.Protobuf. Получилось короче, надёжнее и заметно удобнее. Можно проверить входящий запрос как на точное равенство, так и на частичное через предикатВ статье на Habr показал, почему мой способ удобнее стандартного, как всё устроено под капотом и зачем вашему проекту пакет
WireMock.Grpc.ProtobufИсходники расширения уже доступны на GitHub, а проект уже экономит вечера борьбы с gRPC моками! Звезда и скачивание будут лучшей благодарностью:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥6❤3❤🔥1
StepOne | Степан Минин
Как я посадил WireMock.Net на gRPC стероиды WireMock.Net умеет мокать gRPC. Но для этого он заставляет разработчика таскать .proto файлы и поддерживать лишнюю конфигурацию. Я контрибьютил в проект несколько месяцев, разобрался в кишках и написал своё расширение…
А вот и первый баг!
Не успел WireMock.Grpc.Protobuf толком размяться, как у него появился первый баг. Всё по-взрослому.
Проблема нашлась в
Причина оказалась в одной строчке:
В результате парсер не очищал объект и дописывал туда новые данные поверх старых. К примеру, если сообщение содержало поле с коллекцией, то она распухала при каждом вызове:
Исправление заняло меньше символов, чем объяснение бага. Оно заключается в подстановке вызова конструктора
Первый баг пойман, тест добавлен, стероидный курс продолжается. Поставить звезду на GitHub:
https://github.com/Stepami/wiremock-protobuf
Не успел 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
GitHub
GitHub - Stepami/wiremock-protobuf: Statically typed gRPC mocking for WireMock.Net using generated Google.Protobuf contracts
Statically typed gRPC mocking for WireMock.Net using generated Google.Protobuf contracts - 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
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
👍14❤8🔥5❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Получил военный билет
Я работаю в IT, поэтому привык разбираться в сложных системах. Но система военкоматов — это отдельный мир со своей логикой и стандартами. Недостаточно просто иметь заболевание - нужно ещё правильно и последовательно подтвердить его документами
Важно понимать, что это не быстрый процесс. Пришлось проходить обследования, лежать в больницах, собирать бумаги и ждать. Прошло 16 месяцев с момента заключения договора — путь оказался долгим, нервным и очень бюрократическим
За это время я трижды лежал в больнице. При этом, по моим ощущениям, в военкомате фактическое состояние здоровья почти не изучали. Основное внимание уделяли соответствию документов их требованиям
Самостоятельно разобраться во всех правилах, справках и последовательности действий было очень сложно. Юристы помогали понимать, какие документы нужны, как действовать на каждом этапе и чего ожидать дальше. Особенно ценно было сопровождение в моменты, когда процесс затягивался
Спасибо команде Андрея Породзинского за помощь в получении военного билета и сопровождение на протяжении всех 16 месяцев!
Я работаю в IT, поэтому привык разбираться в сложных системах. Но система военкоматов — это отдельный мир со своей логикой и стандартами. Недостаточно просто иметь заболевание - нужно ещё правильно и последовательно подтвердить его документами
Важно понимать, что это не быстрый процесс. Пришлось проходить обследования, лежать в больницах, собирать бумаги и ждать. Прошло 16 месяцев с момента заключения договора — путь оказался долгим, нервным и очень бюрократическим
За это время я трижды лежал в больнице. При этом, по моим ощущениям, в военкомате фактическое состояние здоровья почти не изучали. Основное внимание уделяли соответствию документов их требованиям
Самостоятельно разобраться во всех правилах, справках и последовательности действий было очень сложно. Юристы помогали понимать, какие документы нужны, как действовать на каждом этапе и чего ожидать дальше. Особенно ценно было сопровождение в моменты, когда процесс затягивался
Спасибо команде Андрея Породзинского за помощь в получении военного билета и сопровождение на протяжении всех 16 месяцев!
👍9❤8🔥4❤🔥1
Красивый GitHub StepOne
Нанейронил себе красивый README профиля и сайт на базе GitHub Pages
https://stepami.github.io/
Нанейронил себе красивый README профиля и сайт на базе GitHub Pages
https://stepami.github.io/
🔥10👍5❤3😁2
И снова "кажется началось"
Представьте, что вы работаете в IT-компании. Внезапно к вам возвращается CTO, который уходил на полгода в другую контору
Он рассказывает о впечатлениях от настоящей AI-First разработки в той конторе, и объявляет начало ИИ-трансформации в вашей компании
Затем проскакивает тезис:
Какими были бы ваши действия внутри такой компании?
Представьте, что вы работаете в IT-компании. Внезапно к вам возвращается CTO, который уходил на полгода в другую контору
Он рассказывает о впечатлениях от настоящей AI-First разработки в той конторе, и объявляет начало ИИ-трансформации в вашей компании
Затем проскакивает тезис:
ai-энтузиасты лайк
ai-луддиты скорее в будущем столкнутся с увольнением
Какими были бы ваши действия внутри такой компании?
😁14🤯4🤩3
Ребят, наткнулся на новый сериал, называется ДЖАВАзвимый. Он про джависта, которого часто бьют
И короче, весь финал 1 сезона он борется со своим отцом Омни-ШАРПОМ
Мой любимый момент оттуда, когда главный герой крикнул: «Время Джавы!», и его за это жёстко отДОТНЕТили!
В общем, настоящий шедевр нашего времени 🙌
И короче, весь финал 1 сезона он борется со своим отцом Омни-ШАРПОМ
Мой любимый момент оттуда, когда главный герой крикнул: «Время Джавы!», и его за это жёстко отДОТНЕТили!
В общем, настоящий шедевр нашего времени 🙌
😁18❤4🔥2🤯1
Media is too big
VIEW IN TELEGRAM
Доставка - новое IT
Мужчина на видео делится опытом заработка 350 000 ₽ за месяц без выходных курьером ВкусВилл
А после предлагает наставничество по вкату в курьеры
Интересно, что будут разбирать в рамках курса. Правильный ответ на вопрос «Кем вы видите себя через пять доставок?» ???
С другой стороны это отличная карьерная возможность для джавистов. Наконец-то работа без унижений и шанс не позорить айти
Кто сидит в чате СтепВанчиков, видел мои вбросы про выход из айти в подобные профессии. Но теперь это не шутки, а новая реальность
Привлекательность работы программиста всё меньше и меньше...
Мужчина на видео делится опытом заработка 350 000 ₽ за месяц без выходных курьером ВкусВилл
А после предлагает наставничество по вкату в курьеры
Интересно, что будут разбирать в рамках курса. Правильный ответ на вопрос «Кем вы видите себя через пять доставок?» ???
С другой стороны это отличная карьерная возможность для джавистов. Наконец-то работа без унижений и шанс не позорить айти
Кто сидит в чате СтепВанчиков, видел мои вбросы про выход из айти в подобные профессии. Но теперь это не шутки, а новая реальность
Привлекательность работы программиста всё меньше и меньше...
😁22🔥4❤🔥1🤯1
StepOne | Степан Минин
Зумеры не ломают рынок труда. HR и волки не виноваты в цирке из собеседований. Как миллениалы накрутили опыт и сломали найм до становления айти Смотри до конца разоблачение всех IT начальников
This media is not supported in your browser
VIEW IN TELEGRAM
Стояк работодателей 2026 🤫
Оказывается, год назад я предсказал выход Астры!
И вместе с этим - точную реакцию рынка на роль программистов
Думайте. AGI уже здесь!
Астра 💪💪💪
Оказывается, год назад я предсказал выход Астры!
И вместе с этим - точную реакцию рынка на роль программистов
Думайте. AGI уже здесь!
Астра 💪💪💪
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍6😁3🔥2❤🔥1
StepOne — официальный контрибутор FusionCache 🤙
FusionCache — библиотека гибридного кэширования для .NET. Объединяет кэш в памяти и распределённый кэш. Даёт из коробки джиттеринг, защиту от cache stampede, распределённую блокировку и многое другое
Всё началось с бытового раздражения - для подключения
Я же предложил сократить эту конструкцию до одного вызова. Добавил
Сам механизм блокировок уже был — я сделал его подключение удобнее. Теперь этот код в библиотеке, а не в очередном самописном extension-методе внутри проекта
Между набросами можно ещё и код писать
FusionCache — библиотека гибридного кэширования для .NET. Объединяет кэш в памяти и распределённый кэш. Даёт из коробки джиттеринг, защиту от cache stampede, распределённую блокировку и многое другое
Всё началось с бытового раздражения - для подключения
RedisDistributedLocker приходилось вручную собирать объект локера, прокидывать настройки и логгер, доставать всё из DIЯ же предложил сократить эту конструкцию до одного вызова. Добавил
WithRedisDistributedLocker и проверки в DI-тестахСам механизм блокировок уже был — я сделал его подключение удобнее. Теперь этот код в библиотеке, а не в очередном самописном extension-методе внутри проекта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥3❤2❤🔥1
StepOne | Степан Минин
Как я посадил WireMock.Net на gRPC стероиды WireMock.Net умеет мокать gRPC. Но для этого он заставляет разработчика таскать .proto файлы и поддерживать лишнюю конфигурацию. Я контрибьютил в проект несколько месяцев, разобрался в кишках и написал своё расширение…
Напомню, что у меня есть WireMock.Grpc.Protobuf — расширение для тех, кто пишет компонентные тесты с gRPC 👩💻
Оно позволяет настраивать моки
Планирую написать новую статью с практическим примером компонентного теста на базе xUnit✅
Если после прошлой статьи откладывали знакомство — самое время попробовать😊
Звезда — простой способ поддержать мою работу. А если уже используете пакет, расскажите, как он вам и чего не хватает!
Оно позволяет настраивать моки
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
👍6❤3❤🔥1🔥1😁1