es
Feedback
C# 1001 notes

C# 1001 notes

Ir al canal en Telegram

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

Mostrar más
6 613
Suscriptores
+124 horas
+537 días
+4730 días
Archivo de publicaciones
🚀 5 мощных приёмов рефакторинга в C#, которые сделают ваш код чище, проще и надёжнее Больше не пишите “спагетти” — превращай
🚀 5 мощных приёмов рефакторинга в C#, которые сделают ваш код чище, проще и надёжнее Больше не пишите “спагетти” — превращайте запутанный код в красивую архитектуру. ✅ Уберите дублирование ✅ Разбейте методы ✅ Используйте DI и фабрики ✅ Спрячьте логику в объекты ✅ Упростите условия 👉 Пример до/после — на картинке: из хаоса в чистый, тестируемый, поддерживаемый код. 📌 Подробнее

Нашёл отличный учебник по основам Computer Science - настоящая находка! Он охватывает всё самое важное: от классики вроде алг
Нашёл отличный учебник по основам Computer Science - настоящая находка! Он охватывает всё самое важное: от классики вроде алгоритма Евклида до продвинутых тем — динамическое программирование, криптография, анализ сложности и не только. Материал подан чётко, логично и последовательно: каждая концепция — с примерами, интуитивными пояснениями и строгими доказательствами. Идеально подойдёт тем, кто хочет выйти за рамки синтаксиса и глубоко понять, как устроен код изнутри. https://eecs376.github.io/notes/algorithms.html

‼️ Хотите стать разработчиком на C# и создавать игры или бэкенд-приложения? Не знаете, с чего начать? 🎯 Курс «C# Developer»
‼️ Хотите стать разработчиком на C# и создавать игры или бэкенд-приложения? Не знаете, с чего начать? 🎯 Курс «C# Developer» состоит из двух ступеней, с практикой в Scrum-команде и реальными кейсами. Вы освоите не только основы C# и .NET Core, но и научитесь применять LINQ, работать с SQL и использовать Git для управления версиями. 🦾 Это обучение поможет вам перейти с нуля на Middle. Вы изучите продвинутые инструменты бэкенда, повысите качество кода, освоите Scrum и сможете работать в высококачественной команде. А еще вы получите диплом OTUS, который ценят в крупных IT-компаниях. ➡️ Оставьте заявку и получите скидку на обучение, старт уже 29 октября: https://otus.pw/vIeG/?erid=2W5zFJTwJNk Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Что выведет код? 1 — Выбросит исключение 2 — Произойдет взаимоблокировка 3 — Напечатает слово "test" 4 — Напечатает слово "te
Что выведет код? 1 — Выбросит исключение 2 — Произойдет взаимоблокировка 3 — Напечатает слово "test" 4 — Напечатает слово "test" бесконечное число раз

EF Core: Что скрывают за репозиторием? Entity Framework Core — мощный инструмент, но его часто оборачивают в Repository Patte
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.

🧩 Несколько DbContext в одном приложении на EF Core — когда это нужно Использовать несколько DbContext в одном приложении —
🧩 Несколько 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

🖥 Гайд по PostgreSQL для продвинутых разработчиков PostgreSQL – одна из самых мощных СУБД с открытым исходным кодом. Этот га
🖥 Гайд по PostgreSQL для продвинутых разработчиков PostgreSQL – одна из самых мощных СУБД с открытым исходным кодом. Этот гайд подробно охватывает ключевые аспекты PostgreSQL: от внутренней архитектуры до приёмов оптимизации. Мы рассмотрим администрирование, производительность, расширения, инструменты, а также сравним популярные ORM для Python и Go. В конце приведён список продвинутых вопросов, часто встречающихся на собеседованиях. 🟠Гайд

С EF Core можно делать действительно классные вещи — вот пример конфигурации сущности: - 🔒 Check constraint: Price > 0 — защ
С EF Core можно делать действительно классные вещи — вот пример конфигурации сущности: - 🔒 Check constraint: Price > 0 — защита данных прямо на уровне БД. - 🎯 Precision control — задаём точность для столбца Price, чтобы избежать ошибок округления. - 🧩 Unique index на Name — просто потому что можно (и полезно). Пример конфигурации:

builder.Property(p => p.Price)
    .HasPrecision(10, 2);

builder.HasCheckConstraint("CK_Product_Price_Positive", "Price > 0");

builder.HasIndex(p => p.Name)
    .IsUnique();
Следующий шаг — создать EF migration, чтобы применить эти настройки в базе данных. Если вы хотите разобраться глубже — вот отличный гайд по миграциям в EF Core: гайд

🔥 Открытый урок «C# и ORM: работаем с базой данных». Взаимодействие с базами данных - классический сценарий работы программы
🔥 Открытый урок «C# и ORM: работаем с базой данных». Взаимодействие с базами данных - классический сценарий работы программы. В рамках ОУ рассмотрим инструменты из категории ORM, которые позволяют используя язык C# работать с БД (на примере PostgreSQL) безопасно и эффективно. 🗓 21 октября в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «C# Developer». 🎯 О чём поговорим: ✔️ для чего нужны БД ✔️ Какие сценарии использования реляционных баз данных на примере PostgreSQL ✔️ Что такое ORM ✔️ Какие библиотеки (ORM) используются при разработке на C# для работы с базами данных ✔️CRUD операции (создать, читать, обновить, удалить запись в БД) 👥 Кому будет полезно: - Тем, кто понимает, как работает C#, но хочет узнать, как применять его в реальных программах - Тем, кто писал на других языках программирования, и хочет узнать, как работать с БД на платформе .Net 🔗 Ссылка на регистрацию: https://otus.pw/iONDI/?erid=2W5zFHHzeNc Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚡ .NET Channel Publisher — простой способ строить настоящий async messaging 📌 Как это работает: - Использует System.Threadin
⚡ .NET Channel Publisher — простой способ строить настоящий async messaging 📌 Как это работает: - Использует System.Threading.Channels для асинхронной публикации событий - Сообщения пишутся в канал и обрабатываются в фоне, не блокируя поток - Поддержка CancellationToken для безопасной отмены 🔥 Плюсы: - Минимум кода — максимум гибкости - Высокая производительность и низкая задержка - Удобно для event-driven архитектуры и микросервисов На скриншоте: - Пример класса ChannelPublisher для отправки нотификаций - Трейсинг вызова Order.Service: POST orders показывает прозрачную обработку и асинхронность #dotnet #csharp #async #messaging

Что мне нравится в **.NET Aspire** 👇 👉 С ним невероятно просто запускать полезные сервисы. Всего в несколько строк кода мож
Что мне нравится в **.NET Aspire** 👇 👉 С ним невероятно просто запускать полезные сервисы. Всего в несколько строк кода можно поднять: - базу данных - Redis - LLM - reverse proxy - message broker Можно даже масштабировать сервисы, чтобы проверить сценарии с конкурентной нагрузкой. Если вы ещё не пробовали построить своё первое Aspire-приложение — у меня есть подробный гайд о том, как я мигрировал свой .NET проект в Aspire. 🟠Читать здесь: https://milanjovanovic.tech/blog/dotnet-aspire-a-game-changer-for-cloud-native-development

🌟 Знаете ли вы, что с помощью информационных атрибутов можно получить информацию о вызывающем методе? @csharp_ci
🌟 Знаете ли вы, что с помощью информационных атрибутов можно получить информацию о вызывающем методе? @csharp_ci

⚡️ .NET-приложения должны быть устойчивыми — и сделать их надежнее реально за пару минут. В .NET 8 и выше есть библиотеки от
⚡️ .NET-приложения должны быть устойчивыми — и сделать их надежнее реально за пару минут. В .NET 8 и выше есть библиотеки от Microsoft и обновлённый API Polly — популярной библиотеки для повышения надёжности и обработки сбоев. С Polly можно легко настроить стратегии: - повтор запросов (Retry) - резервные сценарии (Fallback) - ограничение времени (Timeout) - контроль частоты (Rate-limiting) - автоматическое отключение при сбоях (Circuit breaker) Эти механизмы помогают облачным приложениям оставаться живыми даже в условиях ошибок и перегрузок. Подробный разбор тут

🔥 Лучшая фича C# за последние годы? Pattern Matching Зачем он нужен: Pattern matching позволяет элегантно проверять объект н
🔥 Лучшая фича C# за последние годы? Pattern Matching Зачем он нужен: Pattern matching позволяет элегантно проверять объект на определённые свойства: - ✅ Является null или не null - ✅ Является объектом конкретного типа - ✅ Имеет свойство с определённым значением В связке со switch-выражениями и record-типами это превращает код в лаконичный и выразительный. 📌 Пример:

static string PrintShape(object shape) =>
    shape switch
    {
        null => "Нет объекта",
        Circle c => $"Круг с радиусом {c.Radius}",
        Rectangle { Width: > 0, Height: > 0 } r => $"Прямоугольник {r.Width}x{r.Height}",
        _ => "Неизвестная фигура"
    };

⚡️ dotnet/eShop — справочное .NET-приложение (reference application) 📌 Что это такое - Приложение-пример на .NET, которое ре
⚡️ dotnet/eShop — справочное .NET-приложение (reference application) 📌 Что это такое - Приложение-пример на .NET, которое реализует веб-сайт электронной коммерции (eCommerce) с архитектурой, основанной на сервисах. - Использует .NET 9. - Код лицензирован по MIT. 📌 Как запустить - Клонировать репозиторий. - Установить .NET 9 SDK. - Для Windows: можно использовать Visual Studio (2022 17.10+). - Можно запустить через Docker Desktop. - Через терминал: ```bash dotnet run --project src/eShop.AppHost/eShop.AppHost.csproj 📌 Особенности Пример данных каталога хранится в catalog.json, описания продуктов и брендов — вымышленные. Изображения продуктов сгенерированы с помощью DALL·E 3. Есть версия приложения, подготовленная для деплоя в Azure. 📌 Почему полезно - Подходит как учебный материал для изучения структуры реального .NET-приложения. - Демонстрирует современные практики: архитектура, CI/CD, микросервисы. - Можно использовать как стартовую точку для собственных проектов. #dotnet #eCommerce #ReferenceApp #MIT #Architecture #SampleProject #Microservices Репозиторий: https://github.com/dotnet/eShop

Готовились к LeetCode, но на интервью дали задачу «не по учебнику»? А может, думали, что знаете async/await, но на senior соб
Готовились к LeetCode, но на интервью дали задачу «не по учебнику»? А может, думали, что знаете async/await, но на senior собеседовании вас спросили про ConfigureAwait и CLR? Технические интервью в C# — это всегда стресс и неожиданные повороты. Где-то проверяют умение решать нестандартные задачи, где-то — глубину понимания работы платформы. Важно быть готовым к обоим сценариям. 📅 В сентябре пройдут сразу два бесплатных вебинара в рамках курса «C# Developer. Professional», которые помогут вам: → понять, что делать, если привычные паттерны не работают и идей нет; → прокачать навыки live-coding в реальном времени; → разобраться в тонкостях async/await, CLR и управления памятью; → научиться уверенно отвечать на вопросы уровня senior и проектировать системный дизайн. Вы получите практику и стратегию подготовки к интервью — от первых шагов до экспертных уровней. После вебинаров вы сможете превратить страх перед собеседованиями в уверенность и чётко показать свой уровень на интервью. 👉 Бесплатная регистрация по ссылке — успейте занять место: https://otus.pw/E3c8/?erid=2W5zFHKLZG4 Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚡ .NET Aspire позволяет запускать фронтенд прямо из Vite В Community Toolkit появился пакет `Aspire.Hosting.NodeJS.Extensions
⚡ .NET Aspire позволяет запускать фронтенд прямо из Vite В Community Toolkit появился пакет `Aspire.Hosting.NodeJS.Extensions`, который позволяет интегрировать Node.js-приложения в .NET Aspire. 🔥 Что он даёт: - Запуск Vite-приложений напрямую из Aspire. - Поддержка npm, Yarn и pnpm — выбирай свой пакетный менеджер. - Автоустановка зависимостей перед стартом (`WithNpmPackageInstallation()`, WithYarnPackageInstallation(), `WithPnpmPackageInstallation()`). - Лёгкая интеграция фронтенда и бэкенда: всё управляется из одного места. 📌 Пример кода:

var builder = DistributedApplication.CreateBuilder(args);

builder.AddViteApp("vite-demo")
       .WithExternalHttpEndpoints();

builder.AddViteApp("yarn-demo", packageManager: "yarn")
       .WithExternalHttpEndpoints();

builder.AddViteApp("pnpm-demo", packageManager: "pnpm")
       .WithExternalHttpEndpoints();

builder.Build().Run();
💡 Итог: теперь запуск React/Vue/Angular через Vite можно встроить прямо в Aspire, без лишних шагов и костылей. 📌 Подробнее #dotnet #Aspire #NodeJS #Vite #Frontend

⚡ C# полезный совет Хотите ускорить работу со строками, когда нужно часто их конкатенировать? Не используйте обычный + в цикле — это создаёт лишние объекты в памяти. Вместо этого применяйте `StringBuilder`:

using System.Text;

var sb = new StringBuilder();
for (int i = 0; i < 1000; i++)
{
    sb.Append("строка ").Append(i).AppendLine();
}

string result = sb.ToString();
Console.WriteLine(result);
📌 Что это даёт: - StringBuilder не создаёт новую строку при каждой операции - Сильно экономит память и ускоряет код в циклах - Особенно полезно при работе с большими логами или генерацией отчётов

🔥 Успех в IT = скорость + знания + окружение Здесь ты найдёшь всё это — коротко, по делу и без воды. Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты! AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Собеседования DS: t.me/machinelearning_interview C++ t.me/cpluspluc Docker: t.me/DevopsDocker Хакинг: t.me/linuxkalii Devops: t.me/DevOPSitsec Data Science: t.me/data_analysis_ml Javascript: t.me/javascriptv C#: t.me/csharp_1001_notes Java: t.me/java_library Базы данных: t.me/sqlhub Python собеседования: t.me/python_job_interview Мобильная разработка: t.me/mobdevelop Golang: t.me/Golang_google React: t.me/react_tg Rust: t.me/rust_code ИИ: t.me/vistehno PHP: t.me/phpshka Android: t.me/android_its Frontend: t.me/front Big Data: t.me/bigdatai МАТЕМАТИКА: t.me/data_math Kubernets: t.me/kubernetc Разработка игр: https://t.me/gamedev Haskell: t.me/haskell_tg Физика: t.me/fizmat 💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy 😆ИТ-Мемы: t.me/memes_prog 🇬🇧Английский: t.me/english_forprogrammers 🧠ИИ: t.me/vistehno 🎓954ГБ ОПЕНСОРС КУРСОВ: @courses 📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!

🚫 EF Core + «репозитории» = лишний слой Часто советуют заворачивать EF Core в Repository Pattern. Но на практике это делает
🚫 EF Core + «репозитории» = лишний слой Часто советуют заворачивать EF Core в Repository Pattern. Но на практике это делает код только сложнее: - DbContext уже реализует Repository и Unit of Work - Репозитории со временем превращаются в «монстров» с десятками методов - Каждый новый фильтр = новая копипаста В итоге — абстракция над абстракцией и трудности с поддержкой. --- ✅ Что вместо этого? Specification Pattern Specification = маленький класс, описывающий правило или фильтр. Вы комбинируете их и получаете сложные запросы без раздутых репозиториев. Плюсы: - 🧩 Простая композиция правил - 🔍 Ясный и читаемый код - ♻️ Повторное использование условий - 🧪 Лёгкое тестирование 📌 Пример

// Бизнес-правило: активные клиенты с заказами за последние 30 дней
public sealed class ActiveCustomersSpec : Specification<Customer>
{
    public ActiveCustomersSpec(DateTime since)
    {
        Criteria = c => c.IsActive && c.Orders.Any(o => o.CreatedAt >= since);
        AddInclude(c => c.Orders);
    }
}

// Применение
var spec = new ActiveCustomersSpec(DateTime.UtcNow.AddDays(-30));
var customers = await db.Set<Customer>().Apply(spec).ToListAsync();
💡 Итог: EF Core = уже Repository + UoW Репозитории поверх EF Core → лишняя абстракция Specification Pattern → гибкость и читаемость без «метод-монстров»

C# 1001 notes - Estadísticas y analítica del canal de Telegram @csharp_1001_notes