⚡Свежие и обновленные статьи: подборка для C#-разработчика с Code Maze
🔸 Модификатор доступа к файлу в C#: какие проблемы решает и как использовать
🔸 Получение данных из MongoDB с использованием ObjectId в C#: логическое продолжение руководства «Начало работы с ASP.NET Core и MongoDB»
🔸 Отладка и профилирование многопоточных приложений .NET: обзор инструментов, доступных в Visual Studio
🔸 Как сериализовать объект в query string format в C#: проблемы, которые могут возникнуть при работе с вложенными объектами и массивами, и способы их решения
🔸 Service discovery в .NET: что это и как использовать
🔸 Как получить имена свойств JSON в C#: использование Newtonsoft.Json и System.Text.Json
🔸 Реализация кастомного Authorization Policy Provider с помощью ASP.NET Core: как получить и предоставить политику авторизации для определенного имени политики
🔸 Значения по умолчанию для лямбда-выражений в C#: обзор одного из многих улучшений, появившихся в C# 12
🔸 Управление точностью десятичных чисел в C#: от теории к практике
🔸 Как инициализировать параметры record в C#: простой гайд с примерами
🔸 Различия между NUnit, xUnit and MSTest: на заметку C#-разработчику
🔸 Архитектурный паттерн «клиент-сервер» на C#: как работает паттерн, его компоненты, преимущества и проблемы, которые он создает
🔸 Согласованное байтовое представление строк без явного указания кодировки: рабочий кейс для C#-разработчика
🔸 Как добавить или обновить значения строки запроса в C#: обзор различных способов решения задачи
🔸 Создание распределенных приложений с помощью .NET Aspire: использование нового стека на практике
🔸 Thread.Sleep vs. Task.Delay: сравнение двух часто используемых механизмов для введения задержек в коде
🔸 Как экранировать символ '\' в C#: обзор лучших практик
🔸 Как сохранить список в текстовый файл на C#: использование StreamWriter и File
🔸 Как проверить валидность строки в формате JSON на C#: практика работы с популярным форматом данных
🔸 Как откатить изменения в миграции EF Core: что делать, если накосячил
🔸 Как сравнить два списка по одному свойству в C#: обзор нескольких методов для понимания контекста
🔸 Как добавить custom claims к access токену в Duende Identity Server: практика работы с интерфейсом IProfileService
🔸 Как обрезать строку в .NET: сравнение различных методов с акцентом на производительность
🔸 Как получить значение свойства по имени в C#: использование рефлексии на практике
🔸 Самый быстрый способ преобразования JObject в словарь на C#: пример сценариев, в которых словарь является более подходящей структурой данных
#чтопроисходит
🔸 Модификатор доступа к файлу в C#: какие проблемы решает и как использовать
🔸 Получение данных из MongoDB с использованием ObjectId в C#: логическое продолжение руководства «Начало работы с ASP.NET Core и MongoDB»
🔸 Отладка и профилирование многопоточных приложений .NET: обзор инструментов, доступных в Visual Studio
🔸 Как сериализовать объект в query string format в C#: проблемы, которые могут возникнуть при работе с вложенными объектами и массивами, и способы их решения
🔸 Service discovery в .NET: что это и как использовать
🔸 Как получить имена свойств JSON в C#: использование Newtonsoft.Json и System.Text.Json
🔸 Реализация кастомного Authorization Policy Provider с помощью ASP.NET Core: как получить и предоставить политику авторизации для определенного имени политики
🔸 Значения по умолчанию для лямбда-выражений в C#: обзор одного из многих улучшений, появившихся в C# 12
🔸 Управление точностью десятичных чисел в C#: от теории к практике
🔸 Как инициализировать параметры record в C#: простой гайд с примерами
🔸 Различия между NUnit, xUnit and MSTest: на заметку C#-разработчику
🔸 Архитектурный паттерн «клиент-сервер» на C#: как работает паттерн, его компоненты, преимущества и проблемы, которые он создает
🔸 Согласованное байтовое представление строк без явного указания кодировки: рабочий кейс для C#-разработчика
🔸 Как добавить или обновить значения строки запроса в C#: обзор различных способов решения задачи
🔸 Создание распределенных приложений с помощью .NET Aspire: использование нового стека на практике
🔸 Thread.Sleep vs. Task.Delay: сравнение двух часто используемых механизмов для введения задержек в коде
🔸 Как экранировать символ '\' в C#: обзор лучших практик
🔸 Как сохранить список в текстовый файл на C#: использование StreamWriter и File
🔸 Как проверить валидность строки в формате JSON на C#: практика работы с популярным форматом данных
🔸 Как откатить изменения в миграции EF Core: что делать, если накосячил
🔸 Как сравнить два списка по одному свойству в C#: обзор нескольких методов для понимания контекста
🔸 Как добавить custom claims к access токену в Duende Identity Server: практика работы с интерфейсом IProfileService
🔸 Как обрезать строку в .NET: сравнение различных методов с акцентом на производительность
🔸 Как получить значение свойства по имени в C#: использование рефлексии на практике
🔸 Самый быстрый способ преобразования JObject в словарь на C#: пример сценариев, в которых словарь является более подходящей структурой данных
#чтопроисходит
Code Maze
File Access Modifier in C# - Code Maze
In this article, we will learn about the “file” access modifier recently introduced in C# 11. Let’s dive in.
❤7👍6🥱2🥰1
⚡️ Команда .NET представила MSTest Runner, новый легковесный инструмент для запуска тестов MSTest
📌 Его цель — сделать тесты более портативными и надежными, ускорить их выполнение и предоставить расширяемый опыт тестирования.
🛠 MSTest Runner — это способ создания и запуска тестов MSTest как независимого портативного исполняемого файла.
Для размещения и запуска тестов используется простое консольное приложение, поэтому для их выполнения не требуются внешние инструменты, такие как
Это делает MSTest Runner идеальным инструментом для написания тестов для устройств с ограниченной мощностью или памятью.
📌 Установка: MSTest Runner поставляется вместе с пакетом NuGet
После этих изменений пересоберите тестовый проект, и ваши тесты создадут исполняемый файл, который напрямую их запускает.
📌 Его цель — сделать тесты более портативными и надежными, ускорить их выполнение и предоставить расширяемый опыт тестирования.
🛠 MSTest Runner — это способ создания и запуска тестов MSTest как независимого портативного исполняемого файла.
Для размещения и запуска тестов используется простое консольное приложение, поэтому для их выполнения не требуются внешние инструменты, такие как
vstest.console
, dotnet test
или Visual Studio
. Это делает MSTest Runner идеальным инструментом для написания тестов для устройств с ограниченной мощностью или памятью.
📌 Установка: MSTest Runner поставляется вместе с пакетом NuGet
MSTest.TestAdapter
начиная с версии 3.2.0
. Для его включения в ваш проект достаточно установить обновленный пакет и установить два свойства MSBuild: <EnableMSTestRunner>
и <OutputType>
.После этих изменений пересоберите тестовый проект, и ваши тесты создадут исполняемый файл, который напрямую их запускает.
🤔12🔥6🥱6🌚1
💬 А вы отключаете top-level statements в своем проекте?
Top-level statements позволяют отказаться от некоторых формальностей при написании приложений и сделать код проще.
Возможно, это не очень будет заметно при написании сложных приложений, но может хорошо сэкономить время при проведении исследований, создании небольших утилит и прототипов.
👍 — конечно отключаю
🤔 — не отключаю
🥱 — не знаю, что это такое
Top-level statements позволяют отказаться от некоторых формальностей при написании приложений и сделать код проще.
Возможно, это не очень будет заметно при написании сложных приложений, но может хорошо сэкономить время при проведении исследований, создании небольших утилит и прототипов.
👍 — конечно отключаю
🤔 — не отключаю
Please open Telegram to view this post
VIEW IN TELEGRAM
👍145🤔98🥱66👏3❤2
Помимо
System.Text.Json
и Newtonsoft.Json
в качестве альтернативы BinaryFormatter
для серилизации/десериализации объектов в .NET можно использовать MessagePack
и MemoryPack
. Есть и другие способы, но эти работают без дополнительных настроек и показывают неплохие результаты производительности.
1️⃣
var bytes = MessagePackSerializer.Serialize(People, ContractlessStandardResolver.Options);
return MessagePackSerializer.Deserialize<List<Person>>(bytes, ContractlessStandardResolver.Options);
2️⃣
[MemoryPackable]
public partial class Person
{
public string Name { get; set; }
public int Age { get; set; }
public List<string> ProgrammingKeywords { get; set; } = [];
}
...
var bytes = MemoryPackSerializer.Serialize(People);
return MemoryPackSerializer.Deserialize<List<Person>>(bytes);
👉 Подробнее
#benchmarks #dotnet #csharp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24
null
, чтобы они стали доступны для сборщика мусора?На уровне 0 метод отслеживания доступности локальных переменных в .NET runtime может отличаться или быть менее агрессивным, чем на более высоких уровнях.
Это может означать, что объекты, на которые ссылаются локальные переменные в методе, скомпилированном на уровне 0, могут не сразу стать доступными для сборки мусора, даже если они кажутся вышедшими из области видимости.
Обычно это временная ситуация, так как после повторной компиляции метода на более высоком уровне, более оптимизированный код может лучше управлять доступностью объектов.
👉 Подробнее
#dotnet #csharp #tip by Сергей Тепляков
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🎉2🥱2⚡1
📌 Из доклада вы узнаете о библиотеке автора под названием ConcurrencyToolkit с альтернативными реализациями async семафоров и key-value коллекций, а также о других библиотеках для написания производительного многопоточного кода, включая Disruptor.NET и NonBlocking.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Евгений Пешков «ConcurrencyToolkit»
В .NET из коробки есть разные примитивы синхронизации и concurrent-коллекции: SemaphoreSiim, ConcurrentDictionary, ConcurrentQueue, BlockingCollection, Channel и другие. Реализация подобных примитивов – всегда tradeoff: между сложностью кода, блокировками…
👍11🔥4
⚡️Самые полезные каналы по C# в одной папке
В ней:
➖ канал для подготовки к собеседованиям
➖ интересные задачи
➖ основной канал (этот)
➖ книги по C#
➖ лучшие вакансии из сферы
➖ и наш чат, в котором можно общаться и задавать вопросы
Добавляйте 👉 тык сюда
В ней:
Добавляйте 👉 тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4❤3👍2🥱2🤔1
🛠12 методов отладки в Rider, о которых стоит следует знать
Гайд от Khalid Abuhakmeh, Developer Advocate в JetBrains 👇
1. Inline Watches
2. Return Values
3. Smart Step Into Debugging
4. Breakpoints Options
5. Drag Execution Pointer
6. Debugging External Decompiled Code
7. Exception Breakpoints
8. Run and Debug Static Methods
9. Edit and Continue
10. Memory View
11. Thread Specific Breakpoints
12. DebuggerDisplayAttribute Support
Гайд от Khalid Abuhakmeh, Developer Advocate в JetBrains 👇
1. Inline Watches
2. Return Values
3. Smart Step Into Debugging
4. Breakpoints Options
5. Drag Execution Pointer
6. Debugging External Decompiled Code
7. Exception Breakpoints
8. Run and Debug Static Methods
9. Edit and Continue
10. Memory View
11. Thread Specific Breakpoints
12. DebuggerDisplayAttribute Support
🔥19❤2👍1
📙Essential F# — бесплатная книга для тех, кто хочет изучить F# без предварительных знаний ни в языке, ни в функциональном программировании.
Опыт работы с C#/VB.NET, конечно, может быть полезен, но не является обязательным. И да, можно почитать в PDF/EPUB (в комментариях к посту) или посмотреть видеокурс на основе книги, который начнется совсем скоро 😉
👉 GitHub
Опыт работы с C#/VB.NET, конечно, может быть полезен, но не является обязательным. И да, можно почитать в PDF/EPUB (в комментариях к посту) или посмотреть видеокурс на основе книги, который начнется совсем скоро 😉
👉 GitHub
GitHub
essential-fsharp/Chapters at main · ijrussell/essential-fsharp
Markdown source of Essential F# ebook. Contribute to ijrussell/essential-fsharp development by creating an account on GitHub.
🔥5😁3👍2🤔1
Внутри каждого из нас живет критик. А как вы справляетесь со своим?
Anonymous Poll
23%
Хвалю себя за маленькие шаги
40%
Трезво оцениваю ситуацию
13%
Заменяю негативные мысли позитивными
14%
Критикую его в ответ
34%
Не справляюсь
3%
Свой вариант (напишу в комментарии)
🕹Хардкорный курс по Unity от Романа Сакутина
🕘 Таймкоды:
00:02:46 — Установка
00:04:40 — Основные понятия
00:29:01 — Создание уровня 3D
01:05:31 — Базовая физика
01:17:42 — Создание уровня 2D
01:38:51 — 2D физика
01:50:40 — 3D анимации
02:00:41 — 2D анимации
02:06:21 — Введение в скриптинг
02:55:19 — Code Style
03:01:07 — Связь компонентов
03:16:54 — Корутины
03:35:39 — Столкновения
03:40:48 — Эффектность
03:59:24 — Объекты в динамике
04:05:55 — Математика (Петр Земсков)
04:39:24 — Математика (Роман Сакутин)
05:02:12 — User Interface
06:07:07 — Flappy Bird
06:18:17 — Полезные инструменты
07:00:02 — Эффекты в Unity
07:30:38 — Монетизация (Евгений Гришаков)
08:12:34 — Основы 3D (Алексей Долгов)
10:04:46 — Моделирование
11:00:12 — Текстурирование
11:57:06 — Анимация
12:38:15 — Взаимодействие с 3D-художниками
12:50:30 — New Input System
13:15:51 — Оптимизация
13:31:05 — Продвинутая работа с редактором
13:54:55 — Подготовка к собесу (Антон Назаров)
14:38:28 — VR в Unity (Владимир Макушев)
🕘 Таймкоды:
00:02:46 — Установка
00:04:40 — Основные понятия
00:29:01 — Создание уровня 3D
01:05:31 — Базовая физика
01:17:42 — Создание уровня 2D
01:38:51 — 2D физика
01:50:40 — 3D анимации
02:00:41 — 2D анимации
02:06:21 — Введение в скриптинг
02:55:19 — Code Style
03:01:07 — Связь компонентов
03:16:54 — Корутины
03:35:39 — Столкновения
03:40:48 — Эффектность
03:59:24 — Объекты в динамике
04:05:55 — Математика (Петр Земсков)
04:39:24 — Математика (Роман Сакутин)
05:02:12 — User Interface
06:07:07 — Flappy Bird
06:18:17 — Полезные инструменты
07:00:02 — Эффекты в Unity
07:30:38 — Монетизация (Евгений Гришаков)
08:12:34 — Основы 3D (Алексей Долгов)
10:04:46 — Моделирование
11:00:12 — Текстурирование
11:57:06 — Анимация
12:38:15 — Взаимодействие с 3D-художниками
12:50:30 — New Input System
13:15:51 — Оптимизация
13:31:05 — Продвинутая работа с редактором
13:54:55 — Подготовка к собесу (Антон Назаров)
14:38:28 — VR в Unity (Владимир Макушев)
👍18😁9🥱5🤔3❤1