C# 1001 notes
رفتن به کانال در Telegram
Регулярные короткие заметки по C# и .NET. Просто о сложном для каждого. admin - @haarrp
نمایش بیشتر6 539
مشترکین
-324 ساعت
-17 روز
-230 روز
آرشیو پست ها
6 539
Реактивное программирование в C# Advanced: сложные операторы, обработка ошибок и холодные/горячие Observable
Асинхронность в C# может быть простой, если знать, как с ней работать правильно. На открытом вебинаре курса OTUS C# Developer. Advanced Елена Сычева покажет, как реактивное программирование помогает избавиться от Callback Hell и писать код, который сам реагирует на данные и события.
📌 26 ноября, 20:00
Реактивное программирование в C# Advanced
— продвинутые операторы Rx.NET: Switch, GroupBy, Buffer, Throttle
— устойчивые к сбоям системы: Catch, Retry, Finally
— холодные и горячие Observable: Publish, Replay, RefCount
— управление подписками и жизненным циклом реактивных компонентов
Вебинар будет полезен разработчикам на C#, работающим с асинхронным кодом, потоками данных и событиями. Участники узнают, как проектировать реактивные системы, способные восстанавливаться после ошибок, и писать декларативный, читаемый и эффективный код.
👉 Зарегистрируйтесь: https://otus.pw/kdEI/?erid=2W5zFJeYfSx
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
ASP .NET 10 получил новую возможность — Server-Sent Events (SSE)
В свежем ASP .NET 10 появилась поддержка Server-Sent Events — современного способа стримить данные в браузер без WebSockets.
Что такое SSE
- Односторонний канал: сервер → браузер
- Идеально подходит для потоковых обновлений, логов, нотификаций, live-данных
- Работает поверх обычного HTTP, без сложной настройки протокола
Почему это круто
- Проще, чем WebSockets
- Легче масштабировать
- Отлично подходит для real-time интерфейсов и hypermedia-приложений
- Встроено прямо в ASP .NET 10, без сторонних библиотек
Это может стать большим шагом для разработки динамичных и интерактивных UI — особенно там, где нужен непрерывный поток данных, но WebSockets избыточны.
#dotnet #aspnet #csharp #backend #webdev
6 539
Один навык сделает вас ценным в любой команде — умение находить и устранять узкие места производительности.
Скорость приложения — это не просто «хорошо иметь».
Это деньги, стабильность и доверие пользователей.
И чем больше система, тем больнее становятся проблемы с производительностью.
В микросервисной архитектуре это особенно заметно:
запросы ходят между сервисами, сетевые задержки накапливаются, логика размазана — и понять, где именно тормозит, становится значительно труднее.
Почему так происходит?
- распределённая архитектура усложняет путь запроса
- один медленный сервис замедляет десяток других
- локально всё работает быстро, а в продакшене исчезает производительность
- классические логи дают только фрагменты картины
Но есть хороший инструмент, который решает эту проблему — трейсинг с OpenTelemetry.
Он позволяет пройти вместе с запросом через всю цепочку сервисов и увидеть, где именно начинается задержка.
Это настоящий рентген системы.
Если вы хотите внедрить распределённый трейcинг, автор подготовил пошаговый гайд, который можно адаптировать под любой .NET-проект.
Вот отличная отправная точка:
milanjovanovic.tech/blog/introduction-to-distributed-tracing-with-opentelemetry-in-dotnet
6 539
⚡ Быстрый совет для Cursor
Хочешь, чтобы Cursor писал точнее и в твоём стиле?
🧠 Просто создай файл `.cursorrules` в корне проекта и опиши в нём:
- правила кодстайла, которые ты используешь
- предпочтения по структуре, форматированию, именованию
Чем конкретнее, тем лучше работает автогенерация.
🔥 Это помогает избежать «галлюцинаций» и потери контекста при создании кода.
6 539
+2
⚡️ Когда стоит применять паттерн Idempotent Consumer?
В распределённых системах всё непредсказуемо: сообщения могут прийти поздно, в неправильном порядке или продублироваться.
Если надеяться, что каждое сообщение обработается «строго один раз», рано или поздно появятся тихие ошибки в данных.
Производитель может частично решить проблему: многие брокеры (Azure Service Bus, Amazon SQS) сами отбрасывают дубликаты, если у сообщения есть уникальный MessageId.
Но у потребителя ответственность больше.
Паттерн Idempotent Consumer предотвращает повторные побочные эффекты:
1. Перед обработкой проверяем локальную таблицу с ключом (MessageId, ConsumerName).
2. Если записи нет - выполняем логику, коммитим транзакцию и записываем факт обработки.
3. Если запись уже есть - сообщение повторное, просто выходим.
Что делать с внешними сервисами?
Некоторые поддерживают idempotency key (например, email-сервисы), и тогда повторный запрос просто игнорируется.
Если сервис это не умеет, можно сохранять намерение локально и выполнять действие отдельным надёжным процессом.
Важно: не все обработчики нуждаются в этом паттерне.
Если операция сама по себе безопасна при повторе (обновить статус, пересобрать кэш) — дополнительные проверки не нужны.
Используйте Idempotent Consumer там, где повторное выполнение может привести к деньгам, ошибкам или сбоям в бизнес-логике.
milanjovanovic.tech/blog/the-idempotent-consumer-pattern-in-dotnet-and-why-you-need-it
6 539
Управление зависимостями в ASP.NET Core: меньше рутины, больше автоматизации.
Ручное добавление сервисов через AddScoped и AddSingleton превращает Program.cs в бесконечный список регистраций. Но есть способ проще — библиотека Scrutor.
На открытом вебинаре курса OTUS C# ASP.NET Core разработчик Михаил Дмитриев покажет, как автоматизировать регистрацию сервисов и расширить стандартный IoC контейнер.
📌 18 ноября, 20:00
Управление зависимостями в ASP.NET Core с помощью Scrutor
— массовая регистрация сервисов по правилам
— использование паттерна декоратор
— добавление кэширования без переписывания кода
— реальные примеры для продакшн-проектов
Вебинар бесплатный и будет полезен ASP.NET Core-разработчикам, которые хотят упростить настройку зависимостей и сделать код чище.
👉 Регистрируйтесь: https://otus.pw/HpwY/?erid=2W5zFJ5eURW
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
🖥 Полезный Совет по Visual Studio:
Когда вы создаете метод, который возвращает JSON через raw string literal, добавьте
/* lang=json*/
Этот момент нигде не задокументирован.
Если в JSON будет синтаксическая ошибка вроде пропущенной запятой, Visual Studio подсветит её.6 539
Основы обобщений (Generics) в C#: классы, интерфейсы, методы и делегаты
Generics — это фундамент гибкого и переиспользуемого кода в C#. На открытом вебинаре курса OTUS C# Developer. Professional Павел Нилов объяснит, как работают обобщения, зачем они нужны и как с их помощью писать код, который не боится масштабирования.
📌 18 ноября, 20:00
Основы обобщений (Generics) в C#
— классы, интерфейсы, методы и делегаты
— ковариантность, контравариантность и ограничения
— эффективное использование List и Dictionary
— примеры и разбор типичных ошибок
Вебинар бесплатный и подойдёт начинающим .NET-разработчикам, студентам и джунам, готовящимся к собеседованиям, а также тем, кто хочет систематизировать знания по Generics.
👉 Регистрируйтесь: https://otus.pw/SjQq/?erid=2W5zFH97jxt
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
Гид по Redis в C# ASP.NET: ускоряем приложения и снижаем нагрузку на базу данных.
Redis — быстрая база данных в памяти, которая помогает масштабировать системы и ускорять доступ к данным. На открытом вебинаре курса OTUS C# ASP.NET Core разработчик Андрей Сорокин покажет, как интегрировать Redis в ASP.NET Core 8 и внедрить кэширование в реальных проектах.
📌 12 ноября, 20:00
Гид по Redis в C# ASP.NET
— настройка Redis в Docker
— кэширование ответов API
— хранение данных для быстрого доступа
— ускорение обработки запросов и снижение нагрузки на БД
Вебинар бесплатный и будет полезен C#-разработчикам, архитекторам и тимлидам, которые хотят повысить производительность приложений и упростить масштабирование.
👉 Регистрируйтесь: https://otus.pw/7CFj/?erid=2W5zFHZ3J6k
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
⚡️ Вышел pgbalancer 1.0 - интеллектуальный балансировщик нагрузки для PostgreSQL
Представлен первый стабильный релиз pgbalancer 1.0 — балансировщика нагрузки для PostgreSQL, построенного на основе pgpool-II с существенными доработками.
Проект позиционируется как решение с элементами адаптивной маршрутизации запросов, управляемое через REST API и поддерживающее MQTT для потоковой передачи событий в реальном времени.
Ключевые особенности:
• Управление пулом соединений и распределение нагрузки между репликами PostgreSQL;
•Поддержка HTTP/REST для конфигурации и мониторинга;
• Интеграция с MQTT для стриминга метрик и событий;
• Реализация на языке C с сохранением производительности оригинального pgpool-II;
• Распространяется под открытой лицензией PostgreSQL.
https://www.pgelephant.com/pgbalancer
6 539
Повышение надёжности .NET-приложений: как обрабатывать сбои и предотвращать каскадные ошибки.
Даже самые стабильные системы ломаются — вопрос лишь в том, насколько вы готовы к этому. Библиотека Polly позволяет гибко управлять сбоями и повышать устойчивость микросервисов и API.
На открытом вебинаре курса OTUS C# ASP.NET Core разработчик Виктор Дзицкий покажет, как использовать Polly и HttpClientFactory для защиты приложений от временных отказов и непредсказуемых сетевых ошибок.
📌 6 ноября, 20:00
Повышение надежности .NET-приложений с Polly
— ключевые стратегии и политики Polly
— настройка и комбинирование стратегий для сложных сценариев
— защита от каскадных сбоев и готовые паттерны устойчивости
— улучшения в .NET 8
Вебинар бесплатный и подойдёт .NET-разработчикам, работающим с микросервисами и внешними API, которые хотят сделать свои системы по-настоящему отказоустойчивыми.
👉 Регистрируйтесь: https://otus.pw/Ketn/?erid=2W5zFJKZcBJ
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
🚀 5 мощных приёмов рефакторинга в C#, которые сделают ваш код чище, проще и надёжнее
Больше не пишите “спагетти” — превращайте запутанный код в красивую архитектуру.
✅ Уберите дублирование
✅ Разбейте методы
✅ Используйте DI и фабрики
✅ Спрячьте логику в объекты
✅ Упростите условия
👉 Пример до/после — на картинке: из хаоса в чистый, тестируемый, поддерживаемый код.
📌 Подробнее
6 539
Нашёл отличный учебник по основам Computer Science - настоящая находка!
Он охватывает всё самое важное: от классики вроде алгоритма Евклида до продвинутых тем — динамическое программирование, криптография, анализ сложности и не только.
Материал подан чётко, логично и последовательно: каждая концепция — с примерами, интуитивными пояснениями и строгими доказательствами.
Идеально подойдёт тем, кто хочет выйти за рамки синтаксиса и глубоко понять, как устроен код изнутри.
https://eecs376.github.io/notes/algorithms.html
6 539
‼️ Хотите стать разработчиком на C# и создавать игры или бэкенд-приложения? Не знаете, с чего начать?
🎯 Курс «C# Developer» состоит из двух ступеней, с практикой в Scrum-команде и реальными кейсами. Вы освоите не только основы C# и .NET Core, но и научитесь применять LINQ, работать с SQL и использовать Git для управления версиями.
🦾 Это обучение поможет вам перейти с нуля на Middle. Вы изучите продвинутые инструменты бэкенда, повысите качество кода, освоите Scrum и сможете работать в высококачественной команде. А еще вы получите диплом OTUS, который ценят в крупных IT-компаниях.
➡️ Оставьте заявку и получите скидку на обучение, старт уже 29 октября: https://otus.pw/vIeG/?erid=2W5zFJTwJNk
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
Что выведет код?
1 — Выбросит исключение
2 — Произойдет взаимоблокировка
3 — Напечатает слово "test"
4 — Напечатает слово "test" бесконечное число раз
6 539
EF Core: Что скрывают за репозиторием?
Entity Framework Core — мощный инструмент, но его часто оборачивают в Repository Pattern, не задумываясь, действительно ли это нужно. На открытом вебинаре курса OTUS C# Developer. Professional Виктор Дзицкий покажет, когда репозиторий оправдан, а когда он только мешает.
📌 5 ноября, 20:00EF
Core: Что скрывают за репозиторием?
— когда Repository Pattern избыточен
— реализация Specification Pattern для гибких запросов
— как объединить оба подхода для чистой архитектуры
Вебинар бесплатный и будет полезен C# и .NET-разработчикам, которые активно используют EF Core и хотят сделать код доступа к данным тестируемым и поддерживаемым.
👉 Регистрируйтесь: https://otus.pw/LsRF/?erid=2W5zFJBmqU4
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
🧩 Несколько DbContext в одном приложении на EF Core — когда это нужно
Использовать несколько DbContext в одном приложении — не ошибка, а часто отличное архитектурное решение.
Вот когда это оправдано:
- 🗃 Работа с несколькими базами данных
- 🧠 Разделение областей ответственности
- 🧩 Архитектура modular monolith
- ⚡ Использование read replicas
Автор применил это при создании модульного монолита:
каждый модуль имел собственную схему в БД и отдельный DbContext в коде.
Самое интересное — как EF Core справляется с миграциями и разными схемами баз данных.
Разбор и пошаговое решение — здесь:
🔗 https://milanjovanovic.tech/blog/using-multiple-ef-core-dbcontext-in-single-application
#DotNet #EFCore #CSharp #Backend #Architecture #DesignPatterns
6 539
🖥 Гайд по PostgreSQL для продвинутых разработчиков
PostgreSQL – одна из самых мощных СУБД с открытым исходным кодом. Этот гайд подробно охватывает ключевые аспекты PostgreSQL: от внутренней архитектуры до приёмов оптимизации. Мы рассмотрим администрирование, производительность, расширения, инструменты, а также сравним популярные ORM для Python и Go. В конце приведён список продвинутых вопросов, часто встречающихся на собеседованиях.
🟠Гайд
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
