StepOne | Степан Минин – Telegram
StepOne | Степан Минин
3.42K subscribers
249 photos
35 videos
6 files
313 links
StepOne by Степан Минин @ststphn

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

Закрытый тг канал https://news.1rj.ru/str/tribute/app?startapp=slOA

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

Ютуб https://www.youtube.com/@steponeit
Download Telegram
Forwarded from ДевФест
8 сентября будем говорить о .NET

Приглашаем дотнет-разработчиков обсудить интересные темы:

- Подходы в .NET для обеспечения надёжной работы с RabbitMQ
- .NET Aspire — новый экспериментальный фреймворк для микросервисных приложений
- «Безумные проекты» сообщества разработчиков OmsDotNet
- Roslyn и плагины для компилятора C#
- Новый способ написания unit-тестов, который сэкономит кучу времени и нервов
- Статический анализ кода и .NET

Купить билет на трек: www.devfestomsk.ru
👍111🔥1
#анонсы

.NET-решения под капотом — в тематическом треке Internals 

На DotNext 2024 будет тематический трек Internals, в котором спикеры расскажут про инструменты и .NET-решения под капотом.

Например, про AOT-компиляцию, возможности обобщенной математики, методы повышения производительности и расширение функциональности сервисов. 

Доклады из трека Internals: 

→ Андрей Порожняков — Native AOT. Возможности и ограничения   
→ Степан Минин — Как в C# 11 появилась обобщенная математика 
→ Евгений Пешков — Асинхронность: не только async/await 
→ Кирилл Пронин — Как приручить XDocument? XmlDocument vs XDocument  
→ Юрий Малич — Методы повышения производительности .NET-приложения на примере программы поиска дубликатов
→ Станислав Сидристый — Плагины к сервисам: безопасное расширение функциональности  

Подробности и билеты
👍82🔥1
Логгирование в пет проекте

Да-да-да, очередной пост про hydranoscript

Но разве я виноват в том, что проект развивается и там есть интересные мне задачи?

Так уж вышло, что поскольку вывод в консоль хотелось абстрагировать, как часть возможностей виртуальной машины, то он осуществлялся с помощью экземпляра TextWriter

Реализация была довольно спорной - зарегал в DI Console.Out

Не использовал ILogger<T>, поскольку хост писал status messages, да и формат сообщений был не такой, как надо

В итоге, спустя время я всё-таки узнал, как сделать логгирование в консоль стандартными средствами дотнета идентичным вызовам Console.WriteLine

Шаг первый. Внедрить интерфейс логгера там, где требуется вывод

Шаг второй. Написать свой форматтер сообщений, унаследованный от ConsoleFormatter

Шаг третий. Зарегать всё в DI примерно таким образом:
services.AddLogging(c => c.ClearProviders()
.AddConsole(options => options.FormatterName = nameof(SimplestConsoleFormatter))
.AddConsoleFormatter<SimplestConsoleFormatter, ConsoleFormatterOptions>());
services.Configure<InvocationLifetimeOptions>(options => options.SuppressStatusMessages = true);


Получился по итогу вот такой PR:
https://github.com/Stepami/hydranoscript/pull/108/files
👍52🔥2
Как выводить тестовую консоль xUnit?

Наступает момент, когда хочется в рамках тестов видеть, что происходит в программе с помощью консольных логов

Обычный Console.WriteLine не работает

На замену ему существует абстракция ITestOutputHelper, у которой есть аналогичный метод

Запрашивается просто, в конструкторе класса с тестами - xUnit сам предоставит туда реализацию, всё как в DI

С логгированием через ILogger<T> уже хитрее

Тут понадобится NuGet пакет MartinCostello.Logging.XUnit

Он содержит расширение AddXUnit, которое нужно использовать при настройке тестового хоста, передавая внутрь упомянутый ранее ITestOutputHelper

builder.ConfigureLogging(
x => x.ClearProviders()
.AddXUnit(testOutputHelper))
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍53
Fake Logging .NET 8

Ещё одна крутая плюшка восьмого дотнета - это коробочное решение для тестирования логов

Бывают ситуации, когда нужно проверить, что было определённое количество сообщений, определённого состава с определённым содержанием

Для этих целей можно использовать NuGet Microsoft.Extensions.Diagnostics.Testing

Можно подключить в хост через AddFakeLogging, можно использовать экземпляры FakeLogger<T> в юнит-тестах

Неплохо по сабжу написано тут и там
👍152🔥2
Личная выгода vs общественная польза

Неделю назад прилетел домой в Москву из Омска, где завершился DevFest
Подъехали фоточки, так что поделюсь своим experience

Моя мотивация подаваться на миллион конференций была донельзя примитивной - ачивка «speaker» level-up’ет CV и позволяет просить больше денег на собесе 🤵

Плюс, это повод для злорадства и хвастовства в сторону компаний, когда-то не способных сделать достойное предложение 😈
Ведь теперь они упустили не просто профи, а спикера DotNext) Чувствуете, как ценник поднялся?

После DevFest я стал считать своё мышление ошибочным, потому что первый же день в Омске показал, что ребята делают что-то другое, ну реально другое 😲

Как только услышал следующий девиз, он поселился в голове rent-free
Такого точно не хватает большинству мероприятий

Make New Friends


Пока аля-jugru втыкает стенды и нагоняет certified dushnil на авось, здесь строится площадка для встречи новых крутых людей

Чтобы находить единомышленников, запускать проекты, находить вдохновение и мотивацию, да и просто развивать it сообщество

Это неочевидный и сложный путь - пусть у организаторов всё получится 🙏❤️

Благодаря DevFest, я надеюсь, что нашёл новых друзей, и совершенно точно зарядился сделать лучший дотнет инструмент для экономии времени при написании тестов!

Если не расскажу про него в следующем году, можете отписаться и начать учить джаву ☠️
Настолько высоки ставки

Уже сейчас открыта продажа билетов на 2025, поэтому искренне советую запланировать посещение - это личный совет, а не реклама

Совершенно точно, для меня DevFest - открытие года, и хочется посетить его снова, потому что там 💯 будет круто!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤‍🔥83👍3🥰2
🇷🇺
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33😁11🔥91🤩1
⚰️⚰️⚰️
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁15🤩2