ru
Feedback
C# 1001 notes

C# 1001 notes

Открыть в Telegram

Регулярные короткие заметки по C# и .NET. Просто о сложном для каждого. admin - @haarrp

Больше
6 538
Подписчики
-224 часа
-57 дней
-330 день
Архив постов
System.IO.Hashing - это действительно полезный пакет NuGet для некриптографического хэширования в .NET. 📌Узнать о нем подроб
System.IO.Hashing - это действительно полезный пакет NuGet для некриптографического хэширования в .NET. 📌Узнать о нем подробнее

🖥 SQL в Фокусе: Полное Руководство. 100 ключевых Вопросов с собеседований ▪Часть 1 ▪Часть2 @sqlhub
🖥 SQL в Фокусе: Полное Руководство. 100 ключевых Вопросов с собеседований Часть 1 Часть2 @sqlhub

Стоит ли становиться Rust-разработчиком в 2024 и как это сделать? 💻Узнайте на бесплатном практическом уроке от OTUS, где вы
Стоит ли становиться Rust-разработчиком в 2024 и как это сделать? 💻Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом: - обсудите основные направления развития языка и его инфраструктуры; - рассмотрите наиболее востребованные навыки по этим направлениям; - разберёте типичное собеседование на должность Rust-разработчика в различных областях. Встречаемся 26 февраля в 20:00 мск в рамках курса «Rust Developer. Professional». Доступна рассрочка на обучение! 👉Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://tglink.io/4c0293ce6c0c?erid=LjN8KWx1q Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

EF 8 генерирует бодее эффективные запросы, используя IN вместо EXISTS, когда метод Contains используется с подзапросом. Разни
EF 8 генерирует бодее эффективные запросы, используя IN вместо EXISTS, когда метод Contains используется с подзапросом. Разницу в запросах вы можете увидеть в примере на картинке. @csharp_1001_notes

🖥 Паттерн Хранитель (Memento) - поведенческий шаблон проектирования, позволяющий, не нарушая инкапсуляцию, зафиксировать и с
🖥 Паттерн Хранитель (Memento) - поведенческий шаблон проектирования, позволяющий, не нарушая инкапсуляцию, зафиксировать и сохранить внутреннее состояние объекта так, чтобы позднее восстановить его в это состояние. Шаблон Хранитель используется, когда: ▪необходимо сохранить снимок состояния объекта (или его части) для последующего восстановления ▪прямой интерфейс получения состояния объекта раскрывает детали реализации и нарушает инкапсуляцию объекта В C# паттерн Memento может быть реализован с помощью комбинации трех классов: Originator, Memento и Caretaker. Подробнее @csharp_1001_notes

Учитесь тому, что пригодится в работе и в жизни — бесплатно, с Яндекс Практикумом. Тут на одной странице собраны курсы, котор
Учитесь тому, что пригодится в работе и в жизни — бесплатно, с Яндекс Практикумом. Тут на одной странице собраны курсы, которые помогут попробовать себя в разных IT-профессиях и получить практический навык. 17 разных курсов по программированию, аналитике данных, маркетингу, менеджменту и дизайну. Прохождение занимает от 2 до 20 часов. Например, можно разобраться в основах Java, научиться искать и нанимать тестировщиков, задизайнить плакат для фестиваля еды и ещё много чего. Выбирайте курс по душе и пробуйте себя в разных профессиях!

🖥 Устойчивость приложений и хаос-инженерия Эта статья знакомит с концепцией отказоустойчивости и хаос-инженерии в приложения
🖥 Устойчивость приложений и хаос-инженерия Эта статья знакомит с концепцией отказоустойчивости и хаос-инженерии в приложениях .NET с использованием библиотеки Polly и рассказывает о новых возможностях, позволяющих использовать хаос-инженерию. В ней приведено практическое руководство по интеграции стратегий хаоса в HTTP-клиенты и показывается, как настраивать конвейеры отказоустойчивости для повышения эффективности работы вашего приложения. ▪СтатьяPolly @csharp_1001_notes

Учитесь тому, что пригодится в работе и в жизни — бесплатно, с Яндекс Практикумом. Тут на одной странице собраны курсы, котор
Учитесь тому, что пригодится в работе и в жизни — бесплатно, с Яндекс Практикумом. Тут на одной странице собраны курсы, которые помогут попробовать себя в разных IT-профессиях и получить практический навык. 17 разных курсов по программированию, аналитике данных, маркетингу, менеджменту и дизайну. Прохождение занимает от 2 до 20 часов. Например, можно разобраться в основах Java, научиться искать и нанимать тестировщиков, задизайнить плакат для фестиваля еды и ещё много чего. Выбирайте курс по душе и пробуйте себя в разных профессиях!

🔥 Как написать свой API: OData на С# за пару часов? Покажет Эдгар Пилипсон – ведущий инженер в Nexign. Приходите на бесплатн
🔥  Как написать свой API: OData на С# за пару часов?  Покажет Эдгар Пилипсон – ведущий инженер в Nexign.  Приходите на бесплатный практический урок от OTUS! Вебинар будет особенно полезен разработчикам, которые хотят использовать гибкий API для работы с данными. Встречаемся 13 февраля в 20:00 мск в рамках курса «C# ASP. NET Core разработчик».  Доступна рассрочка на обучение! ➡️   Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись. Пройти тест.

🖥 Перехватчики в EF Core Перехватчики в EF Core помогают перехватывать, изменять или подавлять операции EF Core. Перехватчики регистрируются для каждого экземпляра DbContext при настройке контекста. Каждый перехватчик реализует интерфейс IInterceptor. Несколько распространённых производных интерфейсов включают - IDbCommandInterceptor, - IDbConnectionInterceptor, - IDbTransactionInterceptor, - ISaveChangesInterceptor. Вам не нкжно реализовывать эти интерфейсы напрямую. Лучше использовать конкретные реализации и переопределить необходимые методы. Вот вариант использования перехватчиков с помощью самого распространённого перехватчика SaveChangesInterceptor, который добавляет поведение при сохранении изменений в базе данных. Добавление записей аудита Записи аудита изменений сущностей - ценная функция в некоторых приложениях. Вы записываете дополнительную информацию аудита каждый раз, когда объект создаётся или изменяется. Также это могут быть значения «до» и «после», в зависимости от ваших требований. Например, создадим интерфейс IAuditable с датами создания и изменения объекта:
public interface IAuditable { DateTime Created { get; } DateTime? Modified { get; } }
Добавим UpdateInterceptor для записи значений аудита. Он использует ChangeTracker для поиска всех экземпляров IAuditable и устанавливает соответствующее значение свойства. Здесь мы используем метод SavingChangesAsync, который запускается до того, как изменения будут сохранены в БД.
internal sealed class UpdateInterceptor : SaveChangesInterceptor { public override ValueTask<InterceptionResult<int>> SavingChangesAsync( DbContextEventData e, InterceptionResult<int> result, CancellationToken ct = default) { if (e.Context is not null) UpdateEntities(e.Context); return base .SavingChangesAsync(e, result, ct); } private static void UpdateEntities(DbContext ctx) { var now = DateTime.UtcNow; var entities = ctx .ChangeTracker .Entries<IAuditable>() .ToList(); foreach (var e in entities) { if (e.State == EntityState.Added) e.Property( nameof(IAuditable.Created)) = now; if (e.State == EntityState.Modified) e.Property( nameof(IAuditable.Modified)) = now; } } }
Эту реализацию можно легко расширить, включив в неё, например, информацию о текущем пользователе.
Зарегистрировать перехватчик можно следующим образом:
services.AddSingleton<UpdateInterceptor>(); services.AddDbContext< IApplicationDbContext, AppDbContext>( (sp, opts) => opts .UseSqlServer(connString) .AddInterceptors( sp.GetRequiredService<UpdateInterceptor>());
👉 Подробнее @csharp_1001_notes

Это приглашение на One Day Offer для C#-разработчиков от Ozon Tech. Ребята расширяют направление Логистики и готовы сделать о
Это приглашение на One Day Offer для C#-разработчиков от Ozon Tech. Ребята расширяют направление Логистики и готовы сделать оффер в два шага. Хочешь писать высоконагрузочный код и реализовывать сценарии бизнес-логики лидирующего e-com в России? Оставляй заявку: https://s.ozon.ru/o38dQ26 Будет короткий технический скрининг и финальное собеседование 17 февраля. Бонус для кандидатов: встреча-знакомство с тимлидами — можно увидеть все команды и выбрать свою! Всё это онлайн. А ещё ждёт мерч. Подробности тут

🖥 Где изучать C# в 2024. Бесплатные курсы и полезные ресурсы ▪Читать @csharp_1001_notes
🖥 Где изучать C# в 2024. Бесплатные курсы и полезные ресурсы Читать @csharp_1001_notes

CI/CD Workflow: упрощенный гайд от ByteByteGo (Alex Xu) CI/CD — это методология, которая позволяет автоматизировать процесс р
CI/CD Workflow: упрощенный гайд от ByteByteGo (Alex Xu) CI/CD — это методология, которая позволяет автоматизировать процесс разработки и доставки ПО в продакшн. Будь вы разработчиком, специалистом по DevOps, тестировщиком или занимаетесь любой современной ролью в ИТ, CI/CD пайплайны стали неотъемлемой частью процесса разработки. #инфографика

🖥Различные методы размещения и развертывания Blazor WebAssembly В области веб-разработки Blazor WebAssembly является революц
🖥Различные методы размещения и развертывания Blazor WebAssembly В области веб-разработки Blazor WebAssembly является революционным решением. Он позволяет разработчикам создавать интерактивные веб-приложения на стороне клиента, используя .NET и C#, а не JavaScript. Это не только открывает новые возможности для веб-разработки, но и приводит к появлению новых методов размещения и развертывания этих приложений. https://www.thetechplatform.com/post/different-methods-to-host-and-deploy-blazor-webassembly @csharp_1001_notes

🖥 SOAPHound - это инструмент для сбора данных .NET, который собирает данные Active Directory по протоколу Active Directory W
🖥 SOAPHound - это инструмент для сбора данных .NET, который собирает данные Active Directory по протоколу Active Directory Web Services (ADWS). SOAPHound является альтернативой ряду инструментов безопасности с открытым исходным кодом, которые обычно используются для извлечения данных Active Directory через протокол LDAP. SOAPHound способен извлекать ту же информацию без прямого взаимодействия с сервером LDAP. Вместо этого LDAP-запросы оборачиваются в серию SOAP-сообщений, которые отправляются на сервер ADWS с помощью канала связи NET TCP Binding. Затем сервер ADWS разворачивает LDAP-запросы и направляет их на LDAP-сервер, работающий на том же контроллере домена. В результате LDAP-трафик не может быть обнаружен обычными средствами мониторинга. Github @csharp_1001_notes

С чего начать изучение работы с RabbitMQ? С бесплатного практического урока «Очереди сообщений и протокол AMQP» от OTUS. На в
С чего начать изучение работы с RabbitMQ? С бесплатного практического урока «Очереди сообщений и протокол AMQP» от OTUS. На вебинаре разберём: - возможности протокола AMQP; - как подключаться к брокеру из вашего языка программирования; - как отправить и принять сообщение; - как организовать простейший RPC-сервис. Встречаемся 6 февраля в 20:00 мск в рамках курса «RabbitMQ для разработчиков и администраторов». Доступна рассрочка на обучение! Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://otus.pw/Cs31/?erid=LjN8KVxQX Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Простой способ для генерации классов C# из данных JSON/XML! 🤖🔥 В Visual Studio: 1/ Скопируйте содержимое JSON/XML. 2/ В Vis
Простой способ для генерации классов C# из данных JSON/XML! 🤖🔥 В Visual Studio: 1/ Скопируйте содержимое JSON/XML. 2/ В Visual Studio нажмите на Edit -> Paste Special -> Paste JSON as classes (или XML). 3/ Вот и все! @csharp_1001_notes

🖥Делегирующие обработчики - это как промежуточное программное обеспечение (middleware) http://ASP.NET Core. C помощью делеги
🖥Делегирующие обработчики - это как промежуточное программное обеспечение (middleware) http://ASP.NET Core. C помощью делегирующих обработчиков можно решить множество проблем: - Протоколирование - Трассировка - Валидация - Аутентификация - Авторизация https://dotnet.microsoft.com/en-us/apps/aspnet @csharp_1001_notes

Как эффективно обрабатывать данные в высоконагруженных проектах? Расскажет опытный эксперт на бесплатном практическом уроке «
Как эффективно обрабатывать данные в высоконагруженных проектах? Расскажет опытный эксперт на бесплатном практическом уроке «Асинхронная обработка данных и ее использование в высоконагруженных проектах» от OTUS. На вебинаре разберём: - применение асинхронной обработки; - архитектуру прототипа; - узкие места прототипа. 📅 Занятие пройдёт 15 февраля в 20:00 мск и будет приурочено к старту курса «Highload Architect». Доступна рассрочка на обучение! 🌐 Для бесплатного участия регистрируйтесь прямо сейчас: https://otus.pw/2sRP/?erid=LjN8K3dTm Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🖥 Microsoft Office’s RTC (Real-Time Channel) migration to modern .NET Блог о переходе Microsoft Office с RTC (Real-Time Chan
🖥 Microsoft Office’s RTC (Real-Time Channel) migration to modern .NET Блог о переходе Microsoft Office с RTC (Real-Time Channel) на современный .NET! Это было одно из самых первых применений SignalR в компании! #dotnet #aspnetcore #signalr https://devblogs.microsoft.com/dotnet/office-rtc-dotnet-migration/ @csharp_1001_notes