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🔥4❤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
👍7❤3❤🔥1🔥1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍5🔥2❤🔥1
Рассказал как я добавил в HydraScript объекты и методы без классов и сделал протоколы.
Структурные типы, явный receiver и дополнительная работа аннотации типа.
Накидаем плюсов на Хабре СтепВану 👉 https://habr.com/ru/articles/1086432/
Структурные типы, явный receiver и дополнительная работа аннотации типа.
Накидаем плюсов на Хабре СтепВану 👉 https://habr.com/ru/articles/1086432/
👍6❤2❤🔥1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤7🔥4❤🔥1
StepOne | Степан Минин
This media is not supported in your browser
VIEW IN TELEGRAM
Пошутил про джавистов в прямом эфире 😅
Шарпизм победил окончательно и бесповоротно!
Шарпизм победил окончательно и бесповоротно!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19🔥9❤6❤🔥1👍1😍1
Рассказал как автоматизировал сборку лексера компилятором для своего языка программирования HydraScript. Да-да, вы не ослышались - автоматизация без упоминания ИИ или агентов!
Из интересного - фактически научился передавать работу из одного генератора в другой через небольшой хак рослина
Ставить плюс на Хабре здесь 👉 https://habr.com/ru/articles/1087280/
Из интересного - фактически научился передавать работу из одного генератора в другой через небольшой хак рослина
Ставить плюс на Хабре здесь 👉 https://habr.com/ru/articles/1087280/
🔥6❤2👍2❤🔥1
Делаю игру симулятор соцсети. Будет доступна как тг мини апп
Бекенд на шарпах конечно же!
Пиши посты, следи за реакциями AI‑звёзд и фанатов, прокачивай канал и расти от 120 до 1 000 000 подписчиков.
Выбери мир, найди свой голос и залетай в Реки 🌊
В игре ведёшь канал блогера в вымышленном мире
Пиши посты, следи за реакциями AI‑звёзд и фанатов, прокачивай канал и расти от 120 до 1 000 000 подписчиков.
Выбери мир, найди свой голос и залетай в Реки 🌊
На фото звёзды мира АйТи Тусовки. Как вам, поиграете?
👍12❤5🔥4❤🔥1🤯1
«Стоимость твоего разоблачения равна нулю»
В моей игре уже так отвечают в комментариях 😂
Игрок обещает разоблачить Меркантила. Тот называет это расходом ресурсов. Следом приходит Бургер в Декабре и обесценивает всё разоблачение.
Сам Меркантил тем временем пишет в ленту, что Java, Python и Go летят экономклассом, а C# летит бизнесом. Бэкенд игры на шарпах, но таких речей мы ему не заказывали.
Это «Реки», симулятор блогера, который я недавно анонсировал. Ведёшь канал в вымышленном мире, пишешь посты и собираешь виртуальных подписчиков. AI-звёзды публикуют свои посты, реагируют на твои и отвечают в комментариях.
Теперь можно поиграть прямо в Telegram. Заходи в Айти-тусовку и попробуй объяснить Меркантилу, почему твой любимый язык заслуживает бизнес-класса!
🌊 Играть в «Реки»
🌊 Играть в «Реки»
🌊 Играть в «Реки»
В моей игре уже так отвечают в комментариях 😂
Игрок обещает разоблачить Меркантила. Тот называет это расходом ресурсов. Следом приходит Бургер в Декабре и обесценивает всё разоблачение.
Сам Меркантил тем временем пишет в ленту, что Java, Python и Go летят экономклассом, а C# летит бизнесом. Бэкенд игры на шарпах, но таких речей мы ему не заказывали.
Это «Реки», симулятор блогера, который я недавно анонсировал. Ведёшь канал в вымышленном мире, пишешь посты и собираешь виртуальных подписчиков. AI-звёзды публикуют свои посты, реагируют на твои и отвечают в комментариях.
Теперь можно поиграть прямо в Telegram. Заходи в Айти-тусовку и попробуй объяснить Меркантилу, почему твой любимый язык заслуживает бизнес-класса!
🌊 Играть в «Реки»
🌊 Играть в «Реки»
🌊 Играть в «Реки»
❤6🔥3👍2
В «Реках» теперь можно придумать свой мир 🌊
Например, такой, где AI-Трамп доказывает тебе, что Израиль не управляет США. А ты продолжаешь задавать неудобные вопросы.
Место действия и правила истории выбираешь ты. Сам задаёшь героям характеры и манеру речи. Можно собрать любимых персонажей в одной вселенной или придумать всех с нуля.
Ты ведёшь там канал, а герои пишут в ленте, реагируют на твои посты и спорят в комментариях. На карточках один из возможных вымышленных сценариев.
Когда новый игрок приходит по твоей ссылке и публикует первый пост, тебе открывается редактор. А вам обоим начисляется по 5 энергии.
Ещё появились готовые миры по мотивам «Сумерек», «Гарри Поттера» и «Игры престолов».
🌊 Открыть «Реки»
🌊 Открыть «Реки»
🌊 Открыть «Реки»
Например, такой, где AI-Трамп доказывает тебе, что Израиль не управляет США. А ты продолжаешь задавать неудобные вопросы.
Место действия и правила истории выбираешь ты. Сам задаёшь героям характеры и манеру речи. Можно собрать любимых персонажей в одной вселенной или придумать всех с нуля.
Ты ведёшь там канал, а герои пишут в ленте, реагируют на твои посты и спорят в комментариях. На карточках один из возможных вымышленных сценариев.
Свой мир открывается за одного приглашённого друга.
Когда новый игрок приходит по твоей ссылке и публикует первый пост, тебе открывается редактор. А вам обоим начисляется по 5 энергии.
Ещё появились готовые миры по мотивам «Сумерек», «Гарри Поттера» и «Игры престолов».
🌊 Открыть «Реки»
🌊 Открыть «Реки»
🌊 Открыть «Реки»
😁5🔥2🤯2
В HydraScript мне понадобились две привычные операции со строками: получить длину и обратиться по индексу.
Реализация операторов была размазана по коду системы. Отсутствовал единый источник правды и наличие центрального анализатора не спасало
В статье на Хабр я рассказал, как ООП рефакторинг спас проект и упростил поддержку!
Реализация операторов была размазана по коду системы. Отсутствовал единый источник правды и наличие центрального анализатора не спасало
В статье на Хабр я рассказал, как ООП рефакторинг спас проект и упростил поддержку!
Выгружаем плюсы на пост и в карму!
❤6🔥2👍1
Почему число это плохой адрес для инструкции?
В какой-то момент HydraScript перестал справляться со своей основной задачей — выполнять программы. Статический анализ падал на корректном коде, и его пришлось отключить. Кодогенерация назначала инструкциям неверные адреса: виртуальная машина зацикливалась или падала с исключением.
Логика анализа и генерации кода была размазана по иерархии узлов AST. Добавлять возможности языка становилось всё сложнее, а разобраться в очередном баге было отдельной задачей. Пришлось остановиться и подумать, как вообще дальше развивать проект. Я решил отделить операции от дерева и выбрал для этого Visitor.
В какой-то момент HydraScript перестал справляться со своей основной задачей — выполнять программы. Статический анализ падал на корректном коде, и его пришлось отключить. Кодогенерация назначала инструкциям неверные адреса: виртуальная машина зацикливалась или падала с исключением.
Логика анализа и генерации кода была размазана по иерархии узлов AST. Добавлять возможности языка становилось всё сложнее, а разобраться в очередном баге было отдельной задачей. Пришлось остановиться и подумать, как вообще дальше развивать проект. Я решил отделить операции от дерева и выбрал для этого Visitor.
Ставить плюсы на Хабре по ссылке 👉 https://habr.com/ru/articles/1097574/
👍2❤1🔥1