kodblog | Unsorted

Telegram-канал kodblog - C# Portal | Программирование

13726

Присоединяйтесь к нашему каналу и погрузитесь в мир для C#-разработчика Связь: @devmangx РКН: https://clck.ru/3FocB6

Subscribe to a channel

C# Portal | Программирование

Как проверить, что список не null и содержит элементы?

Существует несколько способов это сделать:

1. Классический способ
2. Способ с List.Count
3. Способ с Enumerable.Any
4. Способ с pattern matching

Какой из них ты предпочитаешь — или используешь другой подход? 🤔

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

💡 EF Core Tip

При разработке можно включить EnableSensitiveDataLogging(), чтобы видеть реальные значения параметров в SQL-запросах — это помогает понять, что именно уходит в базу

Никогда не включай это в staging или production!

Функция логирует чувствительные данные (например, пароли, email, токены и т.д.), что может привести к утечке

⏩Можешь подробней почитать здесь

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Устали листать запутанный и огромный файл Program.cs?

Вот как сделать его чище и читабельнее

Одно из первых, что мы делаем при создании приложения — это настройка:

⏩Логирования
⏩Базы данных и ORM
⏩CORS
⏩Аутентификации
⏩DI-сервисов
⏩Привязок для API

И всё это сваливается в Program.cs — и быстро превращается в кашу.

Вот тут и приходит на помощь паттерн расширения ServiceCollection

Он помогает организовать конфигурации сервисов в модульные, читабельные и тестируемые куски.
Больше никаких гигантских цепочек методов или запутанных блоков кода настройки.

Читай целый выпуск на эту тему с примерами

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Иногда записи архитектурных решений просто огонь 😗

Примечание: AccountState находится в отношении 1:1 с SubscriptionState, поэтому оба используют один и тот же SubscriptionId в качестве первичного идентификатора.

Слушай, мы могли бы сделать их разными ради "чистого кода" или DDD-мусора, но эти две сущности связаны между собой, и Account будет генерировать события для Subscription — так эта штука работает в реальной жизни.

Так что, вместо того чтобы делать всё запутанным или добавлять лишние шаги только потому, что какой-то блогер сказал нам так делать, мы сделали эту связь очевидной и простой для понимания, особенно если ты уже знаешь, с каким SubscriptionId работаешь.


👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Этот дашборд для отслеживания цен на акции с использованием Cursor + .NET. 🔥

Использовав вайб-кодинг до того, как это стало модным )

Бэкенд получает начальную цену акции с бесплатного API фондового рынка.

Затем есть фоновая задача, которая случайным образом генерирует обновление цены и передает его клиентам с помощью SignalR.

UI — это чистый HTML + JavaScript + Tailwind CSS для стилизации

Потребовалось около ~15 секунд, чтобы добавить поддержку темного режима. 😱

Я с нетерпением жду, как будет развиваться Cursor. Это однозначно самый простой способ быстро создать работающее ПО.

Но поддерживаемость — это то, о чем нужно позаботиться.

В целом, код не плохой. Он работает и читаем. Cursor может даже писать комментарии и рефакторить код.

Я получил лучшие результаты, используя Claude Sonnet 3.5.

А ты уже пробовал Cursor?

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Как управлять задержкой в методе Task.Delay в тестах?

Начиная с .NET 8, вы можете передать объект TimeProvider в метод Task.Delay

TimeProvider будет интерпретировать задержку.

Вы можете использовать FakeTimeProvider, чтобы управлять задержкой в тестах.

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Если нужно подготовиться к тех. интервью

То держи этот сайт с онлайн-тестами и вопросами

Подойдет для всех, кто работает с HTML, JavaScript, C#, Java, PHP, ASP,Net и другими ЯП.

⏩ссылка

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Ах да, этот бесценный "специалист по методам расширения" — что бы мы без тебя делали) 😄

(их сотни в этом проекте)

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Claude 3.7 Sonnet получил серьёзного конкурента

Gemini 2.5 Pro — действительно хорошая модель для кода 👍

⏩качество кода действительно высокое
⏩контекст 1M токенов
⏩нативная мультимодальность
⏩генерация длинного кода
⏩понимание крупных кодовых баз

Чувак на видео использовал его вместе с Windsurf для создания приложения поискового агента с ИИ

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

3 различных архитектурных подхода к организации компонентов в приложении

1. Классическая трёхслойная архитектура

Включает три уровня:

🟡MyApp.Web (контроллеры, взаимодействие с пользователем)

🟡MyApp.Business (бизнес-логика)

🟡MyApp.Data (доступ к данным)

PoliciesController использует IPolicyService, который, в свою очередь, использует IPolicyRepository для работы с базой данных.

Классическая, но может приводить к сильной связанности.

2. CQRS-подход

🟡Использует паттерн Command Query Responsibility Segregation (CQRS)

🟡PoliciesController вызывает RenewPolicyCommand, который обрабатывается RenewPolicyHandler

🟡RenewPolicyHandler взаимодействует с IPolicyRepository, который работает с PolicyRepository

Улучшает разделение команд и запросов, подходит для сложных систем.

3. Компонентный подход

🟡Компоненты объединены в единый модуль MyApp.Policies.

🟡PoliciesController использует IPolicyComponent, который включает в себя PolicyComponent, PolicyService и PolicyRepository

Даёт больше гибкости, но требует продуманной структуры

Как вы упаковываете свои компоненты? 🤔

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Есть такой инструмент — SharpRedirect

С ним можно легко перехватывать и перенаправлять сетевой трафик

Он принимает входящие TCP-подключения на локальный порт и пересылает их на указанный удалённый хост и порт.

😍 Поддерживает двустороннюю передачу данных в полном дуплексе, обеспечивая стабильную и асинхронную работу для повышения производительности.

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Copilot, дружище, твои знания по C# отстают на год, а может и два 😄

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Нашел для вас отличный репозиторий — Unity Clean Code

Это сборка лучших практик написания чистого кода в Unity, которые помогут сделать ваш проект структурированным и удобочитаемым.

Следуя рекомендациям, вы улучшаете архитектуру своих игр, упрощаете поддержку кода и учитесь писать более эффективные и понятные решения.

💬 Отличный выбор для всех, кто работает с Unity

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

В C# скоро появятся Dictionary Expressions?

Это как продолжение фичи Collection Expressions из C# 12 — только теперь для словарей. Но пока что на стадии предложения

Как тебе идея? 🤔

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Минимальный пример приложения с поддержкой валидации в Minimal API — тык

Поддержка валидации в Minimal API будет добавлена в dotnet preview 3, который должен выйти совсем скоро

Пример показывает, как использовать атрибуты валидации, такие как Required, Range и StringLength, для проверки входных данных в минимальных API. Для запуска приложения перейдите в каталог api и выполните команду dotnet run

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Как с помощью .NET 8 грамотно настроить ролевую авторизацию в многоуровневых приложениях

Всё это — с примерами кода и лучшими практиками, чтобы приложение было и безопасным, и масштабируемым.

⏩Читать тут

👉 @KodBlog | #cтатья

Читать полностью…

C# Portal | Программирование

"EF Core медленный."

Нет. EF Core, вероятно, лучший фреймворк для доступа к базе данных среди всех языков прямо сейчас.

Но он не исправит плохой код или ваши плохие запросы.

Недавно я разбирал один проект, где тестировщики и разработчики жаловались:
"Наш .NET API тормозит в продакшене. Мы думаем, что EF Core — узкое место."

Я взглянул на код. Вот что я нашёл:

var users = await _context.Users.ToListAsync();


Это использовалось внутри пагинированной конечной точки. Без фильтров. Без Skip(). без Take()
И что ещё хуже — я видел это внутри циклов. API загружал 100 000+ записей на каждый запрос.

Конечно, оно было медленным.

EF Core — мощный инструмент, но он не защищает вас от типичных ошибок. А я их вижу постоянно:

⏩Ранний вызов ToList(), ломающий композицию запроса
⏩Отсутствие AsNoTracking() в сценариях с преобладанием чтения
⏩Ленивые загрузки в циклах, вызывающие проблему N+1
⏩Использование Include() повсюду, даже когда в этом нет нужды
⏩Отсутствие проекции только нужных столбцов через Select()
⏩Регистрация DbContext как Singleton (так делать нельзя)
⏩Отсутствие индексов в базе данных
и тд.

EF Core даёт гибкость, производительность и тесную интеграцию с .NET.

Но он предполагает, что вы знаете, что делаете.

Если ваши запросы EF Core медленные — проблема, скорее всего, в вас.

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

AutoMapper и MediatR переходят на коммерческую модель 😡

То есть, проекты больше не будут полностью open source. Джимми пишет, что делает это, чтобы обеспечить долгосрочную устойчивость своих OSS-проектов. Ну и сразу уточняет: «нет, это не первоапрельская шутка».

Короче, ещё один популярный open source — в платку. Тренд последних лет продолжается.

Вот источник

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Тип OrderedDictionary существует в .NET с ранних версий

.NET 9 представляет его обобщенный аналог

Он создает словарь, в котором сохраняется порядок пар «ключ-значение».

Ты когда-нибудь использовал OrderedDictionary? 🤔

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Я никогда не знал об этом! Вы можете открыть VS Code прямо в браузере из репозитория на GitHub.

Просто нажмите клавишу "." (точка)" в репозитории на GitHub. Это откроет репозиторий в веб-версии VS Code. Можно редактировать и коммитить изменения одним кликом.

Это работает даже если вы не владеете репозиторием! 😱

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Вы устали писать один и тот же шаблон конструктора в каждом сервисе?

Объявить поле → Внедрить зависимость → Присвоить → Повторить 🔁

Здесь на помощь приходят первичные конструкторы в C# 12 — и они значительно упрощают код.

Я использовал их в статических сервисах и вот что заметил:

Плюсы:

☑ Меньше шаблонного кода, больше ясности
☑ Нет лишних полей и присваиваний
☑ Отлично подходят для Minimal API и DI
☑ Держат небольшие сервисы лаконичными и читаемыми

Минусы:

❌ Невозможность объявлять private readonly поля

Вы уже пробовали первичные конструкторы в реальных проектах?

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Это правильный способ реализации посева данных в ваших .NET-приложениях

EF Core 9 значительно упростил этот процесс.

Больше не нужно переопределять OnModelCreating или вручную управлять скриптами заполнения данных.

EF 9 представил методы UseSeeding и UseAsyncSeeding, которые предоставляют удобный способ заполнения базы данных начальными данными.

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

А что скажут разработчики F#?

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Как создать HttpClient в .NET?

Рекомендуемый способ — использование IHttpClientFactory

Вы можете использовать IHttpClientFactory напрямую.

Недостаток в том, что вам придется настраивать HttpClient каждый раз.

Если вам нужен заранее настроенный HttpClient, вы можете использовать именованные или типизированные клиенты.

Вот правильный способ работы с HttpClient в .NET: тык

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

💡 В .NET 8 появился новый интерфейс IExceptionHandler, который упрощает глобальную обработку исключений в aspnetcore.

Раньше обработчики исключений часто становились сложными и запутанными, так как в одном методе приходилось учитывать множество разных типов ошибок. Теперь же IExceptionHandler позволяет создавать отдельные обработчики для конкретных исключений, делая код чище и удобнее.

Достаточно реализовать метод TryHandleAsync, подключить его через UseExceptionHandler — и всё готово.

Это чисто. Модульно. Поддерживаемо. И, честно говоря, давно пора.

⏩Подробно читай в статье: тык

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

EF Core — это потрясающе, но давайте будем честными. Перебор записей в цикле для их обновления — не очень.

Обновление тысяч строк по одной — верный способ замедлить работу и перегрузить базу данных.

Есть способ получше — массовые обновления. 😎

👉 @KodBlog

Читать полностью…
Subscribe to a channel