YeSQL .NET v1.0.0 выпущен 🚀
YeSQL .NET - это библиотека классов для загрузки SQL-запросов из SQL-файлов.
Нет необходимости жестко кодировать SQL-код в исходном коде приложения.
Создайте файл с расширением
#dotnet #csharp #oss #sql
▪Github
▪Docs
@csharp_ci
YeSQL .NET - это библиотека классов для загрузки SQL-запросов из SQL-файлов.
Нет необходимости жестко кодировать SQL-код в исходном коде приложения.
Создайте файл с расширением
.sql
и используйте YeSQL .NET для загрузки SQL-файла.Install-Package YeSql.Net
#dotnet #csharp #oss #sql
▪Github
▪Docs
@csharp_ci
Это может быть интересно при написании тестов, требующих отдельного процесса, или при выполнении кода с временем жизни, отличным от времени жизни процесса приложения .NET.
Библиотека основана на классе
corefx RemoteExecutorTestBase.
▪Github
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Архивировать файлы стало проще, чем когда-либо! 🚀
Для сохранения zip-файла даже не нужен жесткий диск. 💣
В .NET 8 архивация и извлечение файлов стали еще эффективнее благодаря потоковым перегрузкам для методов
Метод
Вы делаете это без необходимости сохранять zip-файл на жестком диске. Магия!
@csharp_ci
Для сохранения zip-файла даже не нужен жесткий диск. 💣
В .NET 8 архивация и извлечение файлов стали еще эффективнее благодаря потоковым перегрузкам для методов
ZipFile.CreateFromDirectory
иZipFile.ExtractToDirectory.
Метод
CreateFromDirectory
позволяет вам выбрать каждый файл из папки, сжать их все в один zip-файл и распаковать эту пачку в любое удобное для вас место, и что самое интересное?Вы делаете это без необходимости сохранять zip-файл на жестком диске. Магия!
@csharp_ci
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Этот плагин может генерировать текстуры для вашей сцены в Unreal Engine!
Comfy Textures - это плагин для Unreal Engine, который интегрирует редактор с ComfyUI. Он позволяет быстро создавать и улучшать текстуры для вашей сцены, используя генеративные диффузионные модели.
▪Github
@csharp_ci
Comfy Textures - это плагин для Unreal Engine, который интегрирует редактор с ComfyUI. Он позволяет быстро создавать и улучшать текстуры для вашей сцены, используя генеративные диффузионные модели.
▪Github
@csharp_ci
Что выведет на экран этот код?
Anonymous Quiz
35%
Class Executed, Interface Executed
41%
Class Executed, Class Executed
8%
Interface Executed, Interface Executed
16%
Возникнет ошибка компиляции "Cannot resolve method"
⚡️Feature Flags в .NET и их применения для A/B-тестирования
Возможность условно включать или выключать функции в вашем приложении без изменения кода - мощный и полезный инструмент.
Для этого можно использовать Feature Flags.
Feature Flags- это техника разработки программного обеспечения, которая позволяет обернуть функции приложения в условный оператор.
Затем вы можете включить или выключить функцию во время выполнения, чтобы контролировать, применение этих функции
▪Читать дальше
@csharp_ci
Возможность условно включать или выключать функции в вашем приложении без изменения кода - мощный и полезный инструмент.
Для этого можно использовать Feature Flags.
Feature Flags- это техника разработки программного обеспечения, которая позволяет обернуть функции приложения в условный оператор.
Затем вы можете включить или выключить функцию во время выполнения, чтобы контролировать, применение этих функции
Install-Package Microsoft.FeatureManagement
▪Читать дальше
@csharp_ci
⚡️ASP .NET Core предоставляет вам несколько способов глобальной обработки исключений.
Так какой же подход выбрать?
Стандартный способ реализации обработки исключений в ASP.NET Core — использование middleware.
Middleware позволяет добавлять логику до или после выполнения запросов. Для реализации обработки исключений достаточно добавить оператор
ASP.NET Core 8 добавляет новую абстракцию
Если исключение можно обработать, метод должен возвращать
Это позволяет реализовывать кастомную логику обработки исключений для различных сценариев.
🔗Для добавления реализации
1. Зарегистрировать сервис
2. Зарегистрировать
Вы можете добавить несколько реализаций
В ASP .NET Core 8 появилась новая абстракция IExceptionHandler для управления исключениями.
▪Подробнее
@csharp_ci
Так какой же подход выбрать?
Стандартный способ реализации обработки исключений в ASP.NET Core — использование middleware.
Middleware позволяет добавлять логику до или после выполнения запросов. Для реализации обработки исключений достаточно добавить оператор
try-catch
в middleware и возвращать ошибку HTTP-ответа. ASP.NET Core 8 добавляет новую абстракцию
IExceptionHandler
для управления исключениями. Этот интерфейс имеет только один метод TryHandleAsync
, который пытается обработать указанное исключение в рамках ASP.NET Core pipeline. Если исключение можно обработать, метод должен возвращать
true
, если нет — false
. Это позволяет реализовывать кастомную логику обработки исключений для различных сценариев.
🔗Для добавления реализации
IExceptionHandler
в пайплайн запросов ASP.NET Core необходимо сделать две вещи:1. Зарегистрировать сервис
IExceptionHandler
с помощью DI.2. Зарегистрировать
ExceptionHandlerMiddleware
в пайплайне запросов.builder
.
Services
.
AddExceptionHandler
<
GlobalExceptionHandler
>();
builder
.
Services
.
AddProblemDetails
();
app
.
UseExceptionHandler
();
Вы можете добавить несколько реализаций
IExceptionHandler
, и они будут вызываться в порядке регистрации. Это может быть полезно, например, при использовании исключений для управления потоком.В ASP .NET Core 8 появилась новая абстракция IExceptionHandler для управления исключениями.
▪Подробнее
@csharp_ci
Что произойдет если запустить это код?
Anonymous Quiz
53%
Ошибка компиляции, интерфейсы не могу иметь абстрактные методы
10%
Возникнет ошибка времени выполнения
36%
Hello world
🔥 Дайджест полезных материалов из мира C# за неделю
Почитать:
— Огромная шпаргалка с готовыми запросами SQL (SQLite)
— Где изучать C# в 2024. Бесплатные курсы и полезные ресурсы
— Об одном способе веб-скрапинга сайтов, защищенных Cloudflare
— Road Run, или как я свою первую игру делал. Часть 7
— Разобраться раз и навсегда: Task.WhenAll или Parallel.ForEachAsync в C#
— Обзор Инструментов Покрытия Кода для C#. Начало
— 20 инструментов командной строки для мониторинга производительности Linux
— Наш опыт мультиаутентификации в приложениях ASP.NET Core
— Кроссплатформенные ресурсы в сборках .NET — пишем условия MSBuild
— Валидация входных данных в фильтрах Minimal API .NET, просто и без затей
— Async/Await в C#. Часть 5. Функция-перечисление и цикл через рекурсию, асинхронный вызов без Async/Await
— Еще раз про асинхронную машину состояний и где именно там аллокации
— Outlook как сервер микросервисов
— Exploring the Dynamic Language Runtime (DLR) in C#
— Getting the Current User in Clean Architecture
— Difference Between Raw SQL and Dapper
— How to read zip files with SharpZip library in C#
— Action and Func Delegates in C#
— Game Dev Digest — Issue #221 - Rendering Techniques and more
— Intro to JS Interop in Blazor
— What is Memento Pattern in C#?
— Using auto-values in Aerospike LINQPad driver
— Custom Middleware In ASP.NET Core – How To Harness The Power
— Common Implementation Mistakes of Work Pattern in C#
Посмотреть:
🌐 Курс C# 2024 с нуля
🌐 Александр Кузнецов — Введение в Microsoft SignalR (⏱ 56:53)
🌐 Microsoft Is Abandoning C# for Rust! Now What? (⏱ 08:01)
🌐 Why .NET's Most Ambitious Feature Might Fail (⏱ 11:14)
🌐 "Don't Use Loops, They Are Slow! Do This Instead" | Code Cop #011 (⏱ 09:51)
🌐 The Easiest Scheduling for Your .NET Applications (⏱ 11:25)
🌐 Microsoft Is Abandoning C# for Rust! Now What? (⏱ 8:00)
Хорошего дня!
@csharp_ci
Почитать:
— Огромная шпаргалка с готовыми запросами SQL (SQLite)
— Где изучать C# в 2024. Бесплатные курсы и полезные ресурсы
— Об одном способе веб-скрапинга сайтов, защищенных Cloudflare
— Road Run, или как я свою первую игру делал. Часть 7
— Разобраться раз и навсегда: Task.WhenAll или Parallel.ForEachAsync в C#
— Обзор Инструментов Покрытия Кода для C#. Начало
— 20 инструментов командной строки для мониторинга производительности Linux
— Наш опыт мультиаутентификации в приложениях ASP.NET Core
— Кроссплатформенные ресурсы в сборках .NET — пишем условия MSBuild
— Валидация входных данных в фильтрах Minimal API .NET, просто и без затей
— Async/Await в C#. Часть 5. Функция-перечисление и цикл через рекурсию, асинхронный вызов без Async/Await
— Еще раз про асинхронную машину состояний и где именно там аллокации
— Outlook как сервер микросервисов
— Exploring the Dynamic Language Runtime (DLR) in C#
— Getting the Current User in Clean Architecture
— Difference Between Raw SQL and Dapper
— How to read zip files with SharpZip library in C#
— Action and Func Delegates in C#
— Game Dev Digest — Issue #221 - Rendering Techniques and more
— Intro to JS Interop in Blazor
— What is Memento Pattern in C#?
— Using auto-values in Aerospike LINQPad driver
— Custom Middleware In ASP.NET Core – How To Harness The Power
— Common Implementation Mistakes of Work Pattern in C#
Посмотреть:
🌐 Курс C# 2024 с нуля
🌐 Александр Кузнецов — Введение в Microsoft SignalR (⏱ 56:53)
🌐 Microsoft Is Abandoning C# for Rust! Now What? (⏱ 08:01)
🌐 Why .NET's Most Ambitious Feature Might Fail (⏱ 11:14)
🌐 "Don't Use Loops, They Are Slow! Do This Instead" | Code Cop #011 (⏱ 09:51)
🌐 The Easiest Scheduling for Your .NET Applications (⏱ 11:25)
🌐 Microsoft Is Abandoning C# for Rust! Now What? (⏱ 8:00)
Хорошего дня!
@csharp_ci
В C# для сравнения строк без учета регистра лучше использовать
string.Equals
с OrdinalIgnoreCase,
а не ToLower() / ToUpper().
▪Почему?
Корректность
Иногда использование
ToLower/Upper
может привести к неправильным результатам в некоторых языках (например на Турецком).Удобство чтения
Использование
string.Equals
дает понять, что вы выполняете сравнение.Производительность
string.Equals более эффективен, поскольку ему не нужно создавать новый экземпляр строки, как это делает
ToLower/Upper
.#dotnet #csharp
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Почитать больше о предварительной версии 1 и присоединяйтесь к обсуждению на GitHub Discussions: https://github.com/dotnet/core/discussions/9167
#dotnet #csharp
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Что произойдет при попытке запуска этого кода?
Anonymous Quiz
25%
Возникнет ошибка компиляции
20%
Возникнет ошибка времени выполения
34%
Выведется "hello world"
20%
Выведется "world hello"
⚡️ DevToys — швейцарский нож для ежедневных задач разработчика.
— Конвертеры: JSON в YAML, парсер Cron’а и тд;
— Кодеры/декодеры;
— Генераторы получения хеша: MD5, SHA1, SHA256, SHA512;
— Работа с текстом: сравнение текстов, разметка, проверка регулярок и тд;
— Работа с графикой: сжатие, конвертирование и тд.
▪Github
@csharp_ci
— Конвертеры: JSON в YAML, парсер Cron’а и тд;
— Кодеры/декодеры;
— Генераторы получения хеша: MD5, SHA1, SHA256, SHA512;
— Работа с текстом: сравнение текстов, разметка, проверка регулярок и тд;
— Работа с графикой: сжатие, конвертирование и тд.
▪Github
@csharp_ci
Эти вызовы не зависят друг от друга.
Вы можете использовать
Task_WhenAll
, чтобы добиться значительного повышения производительности.Это может сделать ваш API в 15 раз быстрее:
▪Читать дальше
▪Последовательное и параллельное выполнение. Task.WhenAll и Task.WhenAny
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Шаблон параметров использует классы для обеспечения строго типизированного доступа к группам связанных параметров.
В ASP.NET Core шаблон параметров можно настроить несколькими различными способами. В этой статье показаны некоторые из них и их потенциальные преимущества.
▪Читать
▪Шаблон параметров в ASP.NET Core
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM