fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

C# 1001 notes

C# 1001 notes

رفتن به کانال در Telegram

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

نمایش بیشتر
6 685
مشترکین
-424 ساعت
-47 روز
+3130 روز
آرشیو پست ها
Учитесь тому, что пригодится в работе и в жизни — бесплатно, с Яндекс Практикумом. Тут на одной странице собраны курсы, котор
Учитесь тому, что пригодится в работе и в жизни — бесплатно, с Яндекс Практикумом. Тут на одной странице собраны курсы, которые помогут попробовать себя в разных 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

👩‍💻 Открытый практический урок для разработчиков на С# Спикер: Дмитрий Гурьянов — .NET разработчик в Bell Integrator Тема:
👩‍💻 Открытый практический урок для разработчиков на С# Спикер: Дмитрий Гурьянов — .NET разработчик в Bell Integrator Тема: "Пишем свой API: gRPC"  На вебинаре вы: ✔️  познакомитесь с особенностями и преимуществами современного способа организации веб-служб на основе gRPC в ASP. NET; ✔️    поймете применимость данного подхода в микросервисной архитектуре; ✔️    разработаете тестовую службу и клиент для нее. ✔️   Встречаемся 1 февраля в 20:00 мск в рамках курса «C# ASP. NET Core разработчик». Доступна рассрочка на обучение! ➡️  Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись. Пройти тест Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Обработчики исключений с пользовательской фильтрацией в C# ⬇ Они позволяют нам добавлять условия в блоки catch, чтобы исключе
Обработчики исключений с пользовательской фильтрацией в C# ⬇ Они позволяют нам добавлять условия в блоки catch, чтобы исключения не выводились только на основе типа исключения. Я использую их лишь изредка, но предпочитаю их операторам if/else внутри блока catch. @csharp_1001_notes

🖥 Введение в антипаттерн Generic Repository Pattern на C# Generic Repository это антипаттерн. Не существует определенных пра
🖥 Введение в антипаттерн Generic Repository Pattern на C# Generic Repository это антипаттерн. Не существует определенных правил каким должен быть интерфейс репозитория - это всецело зависит от предметной области. Однако есть класс простых приложений, которые работают с данными одинаково. И когда нужно получить простой универсальный способ работы с данными - это единственный случай, когда использование обобщенного репозитория оправдано. ▪Читать подробно @csharp_1001_notes

❗❓Как разработчику на С# не провалиться на собеседовании? Расскажет опытный эксперт на бесплатном открытом уроке «Асинхроннос
❗❓Как разработчику на С# не провалиться на собеседовании?  Расскажет опытный эксперт на бесплатном открытом уроке «Асинхронность и многопоточность в C#. Как избежать ошибок на собеседовании» от OTUS.  Асинхронность и многопоточность — одна из самых сложных тем в .NET, в которой довольно легко допустить ошибку. На собеседованиях любят задавать каверзные вопросы, которые мы подробно разберём на вебинаре. 📢Занятие пройдёт 23 января в 18:00 мск и будет приурочено к старту курса «C# Developer. Professional». После урока у вас будет возможность стать студентом программы по специальной цене и даже в рассрочку. 🔶Пройдите короткий тест, чтобы занять место на уроке и получить запись. 👉Пройти тест Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Улучшение производительности JsonSerializer в .NET 8 В .NET 8 делегаты быстрого пути сериализации используются во многих мест
Улучшение производительности JsonSerializer в .NET 8 В .NET 8 делегаты быстрого пути сериализации используются во многих местах. Посмотрите на цифры на скриншоте 🚀 https://github.com/dotnet/runtime/pull/78646 @csharp_1001_notes

Как CAP-теорема помогает решить проблемы согласованности данных в микросервисной архитектуре современных приложений Расскажет
Как CAP-теорема помогает решить проблемы согласованности данных в микросервисной архитектуре современных приложений Расскажет опытный эксперт на бесплатном практическом уроке «CAP-теорема и управление ожиданиями пользователей» от OTUS.   Разберём: 1. Введение в CAP-теорему 2. Технические ограничения и ожидания пользователей 3. Реальные кейсы и способы решения Для кого: Урок будет полезен для разработчиков, сисадминов, аналитиков, DevOps и архитекторов. Результаты вебинара: Поймете основные принципы теоремы и ее влияние на разработку приложений в распределенной среде, а также научитесь учитывать компромиссы между согласованностью, доступностью и устойчивостью данных в микросервисной архитектуре. Для участия зарегистрируйтесь: https://otus.pw/2coO/?erid=LjN8JuiaZ Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Aspir8 (aspire для Kubernetes) поддерживает создание файла docker compose из манифеста aspire! https://prom3theu5.github.io/a
Aspir8 (aspire для Kubernetes) поддерживает создание файла docker compose из манифеста aspire! https://prom3theu5.github.io/aspirational-manifests/getting-started.html @csharp_1001_notes