C# 1001 notes
6.54K subscribers
313 photos
10 videos
2 files
301 links
Регулярные короткие заметки по C# и .NET.

Просто о сложном для каждого.

admin - @haarrp
Download Telegram
🖥 DynamicData — фреймворк C#, позволяющий работать с изменяющимися коллекциями в реактивном стиле

dotnet add package DynamicData --version 8.4.1

DynamicData — это фреймворк, который позволяет использовать всю мощь реактивных расширений при работе с коллекциями. Реактивные расширения из коробки не предоставляют оптимальных способов для работы с изменяющимися наборами данных, и задача DynamicData — исправить это.

Современные приложения довольно сложны, и зачастую возникает необходимость создавать проекции коллекций — фильтровать, трансформировать или сортировать элементы. DynamicData был разработан как раз чтобы избавиться от того невероятно сложного кода, который потребовался бы нам для управления динамически меняющимися наборами данных.

DynamicData активно развивается и дорабатывается, и уже сейчас поддерживается более 60 операторов для работы с коллекциями.

🖥 GitHub
🟡 Доки

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 xUnit — фреймворк и CLI для юнит-тестирования .NET-приложений

dotnet add package xunit --version 2.9.0

Если кто вдруг не использовал xUnit для тестирования своих приложений, то самое время это сделать — это неплохой и проверенный временем инструмент.

Особенности xUnit:
— проверка исключений делается ассертами, а не атрибутами, что больше соответствует стилю AAA (Assert.Throws, Record.Exception). Внутри исключения ловятся try-catch блоком.

— вместо специальных атрибутов xUnit использует естественные возможности C# (IDisposable, IClassFixture, ICollectionFixture)

🖥 GitHub
🟡 Быстрый старт

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 FluentMigrator — фреймворк для миграции БД, написанный на C#

dotnet add package FluentMigrator --version 5.2.0

FluentMigrator позволяет создавать миграции как классы, производные от базового класса Migration и имеющие атрибут Migration с уникальным номером версии.

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

Помимо поддержки прямой миграции, FluentMigrator также поддерживает различные способы выполнения миграций, включая выборочные миграции, и выполнение произвольного SQL.

🖥 GitHub

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 OpenCvSharp — .NET-пакет для работы с OpenCV

dotnet add package OpenCvSharp4 --version 4.10.0.20240616

OpenCvSharp — это известная обертка для .NET, которая предоставляет доступ ко всем модулям OpenCV для:
— хранения математических функций и вычислений, алгебры и структур данных;
— хранения моделей для машинного обучения;
— ввода и вывода картинок или видео, чтения и записи в файл;
— обработки изображения;
— детектирования объектов — лиц, предметов и других;
— отслеживания и анализа движений на видео;
— и для многого другого

🖥 GitHub

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Coravel — библиотека .NET, которая позволяет легко реализовать планирование задач, кэширование, постановку в очередь и много всего другого

dotnet add package coravel

Coravel помогает быстро запустить .NET-приложения, упрощая использование таких функций как планирование задач, постановка в очередь, кэширование, рассылка и т.д.
Coravel имеет простой и выразительный синтаксис.

🖥 GitHub
🟡 Доки

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from C#/.Net на практике
Forwarded from C#/.Net на практике
🚀 Чистый код в ASP.NET Core: практическое введение в программирование

Автор разбирается в основных концепциях чистого кода, лежащих в его основе принципах и том, как мы можем применить его к коду, на нескольких практических примерах.

📌 Читать
🖥 RavenDB — ACID NoSQL документоориентированная БД


dotnet new console
dotnet add package RavenDB.Client --version 6.0.0-*

# изменить Program.cs

dotnet restore && dotnet build && dotnet run


Вообще, RavenDB — довольно известная NoSQL БД;
если кто не пробовал — возможно именно RavenDB поможет в вашем кейсе.

Особенности RavenDB:
— Простота развертывания. Можно использовать как встроенное в проект решение, так Windows service и консольное приложение.

— Простота перехода на новую версию. Просто нужно остановить Raven и закинуть новый билд в рабочую папку сервера. В проекте все обходится обновлением NuGet пакета.

— Расширяемость. Есть множество возможностей по встраиванию своего функционала на стороне сервера. Можно кастомизировать всё, начиная от триггеров на изменение данных и индексов до создания своих расширений, позволяющих обогатить API сервера.

GitHub
Доки

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Полная шпаргалка по C# и краткий справочник по языку с простыми примерами.

📌 Шпаргалка

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 PowerShell Pro Tools

Полезные инструменты, которые упростят написание скриптов, автоматизацию и разработку для тех, кто работает с PowerShell. Установите с помощью следующей команды или как расширение в VS/VS Code.


Install-Module -Name PowerShellProTools


📌GitHub

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥Пример использования оператора explicit в C#

В .NET есть множество способов сопоставлять объекты друг с другом.

На картинке — пример использования оператора explicit для этих целей.

📌 Подробнее

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
dotnet-backend-developer-roadmap.pdf
67.7 KB
⚡️ .NET Backend Developer Roadmap: 12 главных разделов

Роадмэпы по .NET/C#/ASP.NET/Game Dev вы найдете с помощью хештега #roadmap

📌 Источник

@csharp_1001_notes
🔥 UUID v7 в .NET 9

.NET изначально поддерживает UUID v4 через Guid.NewGuid().

При этом начиная с предварительной версии 7, появилась поддержка UUID версии 7.

📌 UUID v7


Так как GUID является альтернативным названием для UUID, новый API находится в пространстве имен System.Guid:


var guid = Guid.CreateVersion7();
var guidWithTimestamp = Guid.CreateVersion7(DateTimeOffset.UtcNow);


Главным преимуществом является включение метки времени в UUID. Это дает 122 бита энтропии, включая 6 бит для версии и варианта где-то посередине.

Главное преимущество заключается в том, что вы можете сортировать UUID по времени их создания, что делает их более подходящими для баз данных по сравнению с UUID v4.

📌 Контроль метки времени

Поскольку метод ожидает DateTimeOffset, вызывающая функция может использовать TimeProvider для контроля UtcNow:


var uuid = Guid.CreateVersion7(timeProvider.GetUtcNow());


timeProvider
может быть получен через DI контейнер и подделан в тестовых сценариях.

#csharp #dotnet #code

Источник

@csharp_1001_notes
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ .NES ("dot" NES)

Интересная библиотека предназначенная для разработки под NES (Nintendo Entertainment System).

Инструмент позволяет разработчикам создавать игры для NES с использованием C# и других технологий #NET, предоставляя инструменты и ресурсы для упрощения процесса разработки игр для этой классической игровой платформы.

dotnet new install dotnes.templates

Github

@csharp_1001_notes