en
Feedback
C# 1001 notes

C# 1001 notes

Open in Telegram

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

Show more
6 539
Subscribers
-324 hours
-17 days
-230 days
Posts Archive
🔧 Задача на C# для внимательных разработчиков Что выведет следующий код?

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var actions = new List<Action>();

        for (int i = 0; i < 3; i++)
        {
            actions.Add(() => Console.WriteLine(i));
        }

        foreach (var action in actions)
            action();
    }
}
Варианты ответа: A)

1
2
B)

3
3
C)

0
0
D)

--- ✅ Правильный ответ: B Почему: Лямбда-функции захватывают переменную i по ссылке, а не её значение на каждой итерации. После завершения цикла i == 3, и все замыкания ссылаются на одно и то же i. Это классическая ловушка замыканий в C#.

🛡Хотите строить защищенные и масштабируемые микросервисы с помощью ASP.NET Core? Присоединяйтесь к открытому уроку 17 апреля
🛡Хотите строить защищенные и масштабируемые микросервисы с помощью ASP.NET Core? Присоединяйтесь к открытому уроку 17 апреля в 20:00 МСК и узнайте, как создать безопасные микросервисы с использованием JWT, OpenID Connect, и .NET Aspire. Мы разберем, как защитить API, оптимизировать производительность и внедрить современные подходы к аутентификации и авторизации. ❗️Что разберем: - Принципы и преимущества архитектуры микросервисов. - Защиту API с использованием JWT и OpenID Connect. - Инструменты .NET Aspire для оркестрации сервисов и настройки окружения. - Реальные шаги по созданию микросервисов, настройке безопасности и работе с Docker. 🚀 Урок пройдет в преддверии старта курса «C# ASP.NET Core разработчик». 🎁 Все участники получат скидку на обучение по промокоду: ASP_NET_04. Присоединяйтесь: https://otus.pw/M71Fp/?erid=2W5zFJ19jdJ Промокод действителен до 28.04.2025 Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚡️ .NET: валидация Minimal API В .NET 8 Preview 3 появилась встроенная поддержка валидации для Minimal API — теперь можно исп
⚡️ .NET: валидация Minimal API В .NET 8 Preview 3 появилась встроенная поддержка валидации для Minimal API — теперь можно использовать атрибуты Required, Range, StringLength и другие прямо в минималистичных контроллерах без лишнего кода. ⚙️ Microsoft добавила официальный пример: 🔗 github.com/captainsafia/minapi-validation-support 🧪 В проекте показано: - как включить AddValidation() в Program.cs - как использовать [ValidatableType] для ваших моделей - как обрабатывать ошибки валидации автоматически 🚀 Чтобы запустить пример: cd api dotnet run ✍️ Минимализм + строгая валидация = 🔥 для API! 📌 Github @csharp_1001_notes

🛠 Patroni + PostgreSQL: как обеспечить высокую доступность? Когда база данных — это сердце системы, её отказ может стоить до
🛠 Patroni + PostgreSQL: как обеспечить высокую доступность? Когда база данных — это сердце системы, её отказ может стоить дорого. Как сделать PostgreSQL отказоустойчивым и управляемым? Решение есть — Patroni! 📅 14 апреля в 20:00 (мск) 🎓 Открытый вебинар с Сергеем Кирьяковым 💡 Что разберём? ✅ Как работает Patroni и зачем он нужен для PostgreSQL ✅ Основные компоненты и архитектуру Patroni ✅ Как правильно настроить и конфигурировать Patroni ✅ Практические примеры управления кластером PostgreSQL ✅ Оптимизация, мониторинг и лучшие практики работы 🎯 Что получите? ✔️ Понимание работы Patroni и его роли в HA-кластерах PostgreSQL ✔️ Готовые практические решения по настройке и оптимизации ✔️ Навыки мониторинга и управления отказоустойчивыми базами Присоединяйтесь и узнайте, как обеспечить PostgreSQL надёжностью! 👉 Регистрируйтесь по ссылке: https://otus.pw/0sSi5/?erid=2W5zFJSpPZa Бесплатное занятие приурочено к старту курса Highload Architect, обучение на котором позволит освоить решения, которые выдерживают большое количество запросов в секунду и правильно оптимизировать работоспособность серверов. Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🔥 Awesome на GitHub Это курируемые подборки ресурсов (книг, статей, инструментов, библиотек и многое другое) по конкретным темам, созданные сообществом разработчиков и энтузиастов. Собрали подборку лучших из них. Сохраняйте, чтобы не потерять • C: awesome-c • C++: awesome-cpp • C#: awesome-dotnet • Хакинг: https://github.com/Hack-with-Github/Awesome-Hacking • Информационная безопасность: awesome-security • Базы данных: awesome-database-learning • JavaScript: awesome-javascript • React: awesome-react • Vue: awesome-vue • Angular: awesome-angular • Node.js: awesome-nodes • Typescript: awesome-typescript • Java: awesome-java • Go: awesome-go • Ruby: awesome-ruby • PHP: awesome-php • Kotlin: awesome-kotlin • Rust: awesome-rust • Swift: awesome-swift • iOS-разработка: awesome-ios • Android-разработка: awesome-android • Unreal Engine: awesome-unreal • Unity: awesome-unity3d • Python: awesome-python • Django: awesome-django • Data Science: awesome-datascience • TensorFlow: awesome-tensorflow • Linux: Awesome-Linux-Software • DevOps: awesome-devops • SysAdmins: awesome-sysadmin • Nginx: awesome-nginx • Kubernetes: awesome-kubernetes • Docker: awesome-docker • Автоматизация сетевой инфраструктуры: awesome-network-automation • QA: awesome-testing @cpluscsharp

Transaction Outbox: как избежать потери данных в распределённых системах В распределённых системах потеря данных — это не ред
Transaction Outbox: как избежать потери данных в распределённых системах В распределённых системах потеря данных — это не редкость. Как гарантировать целостность информации и обеспечить надёжную передачу сообщений? Transaction Outbox — шаблон, который решает проблему согласованности данных. 📅 7 апреля в 20:00 (мск) 🎓 Открытый вебинар с Олегом Мифле 💡 Что разберём? ✅ Проблемы согласованности данных в распределённых системах ✅ Как работает Transaction Outbox ✅ Как связать локальные базы данных с брокерами сообщений (Kafka, RabbitMQ) ✅ Реальные примеры внедрения шаблона в микросервисную архитектуру 🎯 Что получите? ✔️ Понимание принципов согласованности данных в распределённых системах ✔️ Практические навыки работы с Transaction Outbox ✔️ Готовые решения для построения надёжной микросервисной архитектуры 👉 Регистрация: https://otus.pw/N3xZ/?erid=2W5zFGkyYSk Занятие приурочено к старту курса Highload Architect, обучение на котором позволит освоить решения, которые выдерживают большое количество запросов в секунду и правильно оптимизировать работоспособность серверов. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

✔️ Визуализация алгоритмов сортировки Интерактивный инструмент, который поможет разобраться в работе ключевых алгоритмов сорт
✔️ Визуализация алгоритмов сортировки Интерактивный инструмент, который поможет разобраться в работе ключевых алгоритмов сортировки. Возможности: — сортирует массив трёхзначных чисел; — регулирует скорость; — запускает, останавливает, сбрасывает процесс; — создаёт случайный массив. 🔗 GitHub @csharp_1001_notes

💻Хотите быстро научиться строить интерактивные интерфейсы на C#? Присоединяйтесь к открытому уроку 8 апреля в 20:00 мск, где
💻Хотите быстро научиться строить интерактивные интерфейсы на C#?   Присоединяйтесь к открытому уроку 8 апреля в 20:00 мск, где мы покажем, как сделать ваш код живым и динамичным!  📖Вы научитесь использовать класс System.Console для создания простых, но интересных программ с текстовыми интерфейсами. Например, вы напишете свою версию игры "Крестики-нолики" прямо в консоли. Это легко и увлекательно!  🔥С этим знанием вы сможете не просто выводить данные, а создавать интерактивные приложения, которые смогут реагировать на действия пользователя. ➡️ Зарегистрируйтесь на вебинар и получите скидку по промокоду SHARP_SPEC_4 на большое обучение «C# Developer»: https://otus.pw/Lh8D/?erid=2W5zFJHnQcp Промокод действителен до 30.04.2025 Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

+2
🔥 Claude теперь интегрирован в Unity, Blender и Unreal Engine — MCP-плагины остаются в центре внимания! Теперь для создания игры достаточно лишь клавиатуры.Claude в Unity— генерирует геймплейные механики (физику, цели, таймеры), окружение, эффекты, интерфейсы, миникарты и многое другое. • Claude в Blender — мгновенно создаёт 3D-модели и сцены, превращает фотографии в игровые локации и редактирует их по вашим командам. • Claude в Unreal Engine — создаёт объекты, задаёт им форму и разрабатывает их логику всего за несколько минут. Сохраняйте и пробуйте в деле! 🚀

☸️Хотите узнать, как деплоить ASP.NET-приложения в Kubernetes? 📅26 марта в 20:00 мск на открытом вебинаре мы разберем: – Per
☸️Хотите узнать, как деплоить ASP.NET-приложения в Kubernetes?  📅26 марта в 20:00 мск на открытом вебинаре мы разберем: – PersistentVolume – ConfigMap – Secret – Развернем БД в кластере и обсудим, почему секреты не такие уж секретные. С Kubernetes ваши ASP.NET Core-приложения станут масштабируемыми и гибкими. ➡️ Регистрируйтесь на вебинар и получите скидку на курс «C# ASP.NET Core-разработчик»: https://otus.pw/0EoO/?erid=2W5zFHAfL96 Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

В этом блоге рассказывает о новой функции Visual Studio, которая автоматически генерирует комментарии документации с помощью
В этом блоге рассказывает о новой функции Visual Studio, которая автоматически генерирует комментарии документации с помощью GitHub Copilot. Главные моменты: ▪ При вводе три слэшей (например, «///») редактор предлагает готовые комментарии, которые включают краткое описание функции, её параметры и возвращаемое значение. ▪ Функция доступна в Visual Studio 17.14 Preview 2 для проектов на C# и C++, с возможностью настройки стилей комментариев (XML или Doxygen для C++). ▪ Для использования требуется подписка на GitHub Copilot. ▪ Microsoft призывает разработчиков тестировать нововведение и оставлять обратную связь для дальнейшего улучшения инструмента. Эта функция существенно упрощает процесс документирования кода и повышает продуктивность работы разработчиков. Читать

❓Хотите стать C#-разработчиком, но боитесь, что будет сложно? Подготовьтесь заранее и освойте Git — ключевой инструмент коман
❓Хотите стать C#-разработчиком, но боитесь, что будет сложно?  Подготовьтесь заранее и освойте Git — ключевой инструмент командной разработки! На открытом вебинаре 31 марта в 20:00 мск разберем: ◽️ Систему контроля версий ◽️ Основные команды ◽️ Принципы работы с репозиториями ◽️ Эти знания помогут вам уверенно работать в команде и подготовиться к следующему этапу. С Git вы сможете эффективно управлять кодом, вести проекты и двигаться к позиции Junior и Middle. 🔗 Регистрируйтесь на вебинар и 🎁 получите скидку на большое обучение «C# Developer»: https://otus.pw/RCqW/?erid=2W5zFG81u9J Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🎯 NVIDIA k8s-device-plugin Этот репозиторий содержит NVIDIA Device Plugin для Kubernetes. Он позволяет автоматически обнаруживать и предоставлять GPU-ресурсы NVIDIA в кластере Kubernetes. 📌 Поддерживаемые функции: - Автоматическое обнаружение GPU - Выделение GPU для контейнеров - Поддержка Multi-Instance GPU (MIG) - Интеграция с nvidia-container-toolkit - Гибкая настройка через параметры и конфигурации Установка плагина осуществляется через манифесты, доступные в папке deployments/. Проект активно развивается и поддерживается NVIDIA. Полезен, если вы работаете с ML/AI-ворклоудами в Kubernetes и хотите использовать ресурсы GPU эффективно и прозрачно. https://github.com/NVIDIA/k8s-device-plugin

🚀Как построить отказоустойчивый и надежный кластер с RabbitMQ ? 🔥26 марта в 20.00 (мск) приглашаем на открытый вебинар “ От
🚀Как построить отказоустойчивый и надежный кластер с RabbitMQ ? 🔥26 марта в 20.00 (мск) приглашаем на открытый вебинар “ Отказоустойчивый и высокодоступный кластер RabbitMQ”, на котором разберем: ✔️запуск и настройку кластера с Quorum Queues, Mirrored Queues (синхронная репликация), синхронизация очередей ✔️dead letter queue, настройки duralibility ✔️баланс при отправке: настройки гарантий для Producer ✔️asynchronous cluster-to-cluster message routing - exchange federation and shovels 🎁Все участники получат шаблон, который позволит быстро запустить и настроить кластер RabbitMQ Присоединяйтесь и делайте свои сервисы надежными и масштабируемыми! 👉 Регистрируйтесь по ссылке: https://otus.pw/w398/?erid=2W5zFGMEjVS  Бесплатное занятие приурочено к старту курса Highload Architect, обучение на котором позволит освоить решения, которые выдерживают большое количество запросов в секунду и правильно оптимизировать работоспособность серверов. Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚡️ Google представил OSV-Scanner v2 Новая версия OSV-Scanner значительно расширяет возможности для разработчиков: • Теперь сканируются проекты на .NET, Python, Java, JS, Go, Haskell — включая такие форматы, как deps.json, uv.lock, bun.lock, Uber Jars и др. • Сводка по уязвимостям с фильтрами по критичности, пакетам, слоям в виде интерактивного HTML-отчёта • Если вы используете Java с Maven, инструмент подскажет, как безопасно обновить уязвимые зависимости с минимальными рисками. • Анализ образов Debian, Ubuntu и Alpine с определением уязвимых пакетов, историей слоев, идентификацией базового образа и фильтрацией ложных срабатываний 📌 Релиз

🖥 Числовой StringComparer появится в .NET 10! 🌟 Это позволяет сравнивать числа на основе их числового значения, а не лексик
🖥 Числовой StringComparer появится в .NET 10! 🌟 Это позволяет сравнивать числа на основе их числового значения, а не лексикографического порядка! @csharp_ci

⚡️ Wait4X — это высокоэффективный инструмент без внешних зависимостей, который обеспечивает ожидание готовности сервисов пере
⚡️ Wait4X — это высокоэффективный инструмент без внешних зависимостей, который обеспечивает ожидание готовности сервисов перед продолжением работы. ▪ Поддержка различных протоколов и сервисов: делает его незаменимым для: CI/CD конвейеров: гарантирует, что все зависимости доступны перед запуском тестов. Оркестрации контейнеров: проверяет работоспособность служб перед стартом приложения. Процессов развертывания: удостоверяется в готовности системы до начала деплоя. Инициализации приложения: проверяет доступность внешних сервисов. Локальной разработки: упрощает контроль готовности локального хоста. ▪ Основные возможности: Поддержка нескольких протоколов: TCP, HTTP, DNS. Интеграция с сервисами: Redis, MySQL, PostgreSQL, MongoDB, RabbitMQ, InfluxDB, Temporal. Обратная проверка для выявления свободных портов или неготовых служб. Параллельная проверка нескольких сервисов одновременно. Экспоненциальное повторение попыток с увеличивающимися задержками для повышения надежности. Интеграция с CI/CD для автоматизации рабочих процессов. Кроссплатформенность: единый двоичный файл для Linux, macOS и Windows. Импорт пакетов Go в приложения на Go. Выполнение команд после успешного прохождения проверок. Узнайте больше на GitHub: https://github.com/atkrad/wait4x

Первый день стажировки. Внутренние сервисы падают один за другим... Инженеры Контура выпустили захватывающий детективный подкаст «Загадка хранителя зоопарка». Это история стажёра, который пришёл в самое сердце разработки, команду базовой инфраструктуры, и поневоле стал участником одного из самых серьёзных инцидентов в истории компании. В подкасте вы сможете по-настоящему прожить тот день вместе с разработчиками и докопаться до причины факапа. Слушайте все 5 эпизодов на одном дыхании в канале!🎙 16+. Реклама. АО «ПФ «СКБ Контур», ОГРН 1026605606620. 620144, Екатеринбург, ул. Народной Воли, 19А. Erid:2SDnjcxHmPA

🚀 "PagingTagHelper" на mostlylucid.net рассказывает о создании и использовании собственного PagingTagHelper для ASP.NET Core
🚀 "PagingTagHelper" на mostlylucid.net рассказывает о создании и использовании собственного PagingTagHelper для ASP.NET Core. ▪ Цель статьи: объяснить, как реализовать механизм пагинации в веб-приложениях с помощью tag helper-ов. ▪ Ключевые моменты:   • Разбор принципов работы tag helper-ов в ASP.NET Core.   • Пошаговое создание кастомного PagingTagHelper, который генерирует HTML-разметку для навигации по страницам.   • Примеры кода и объяснения параметров, позволяющих настраивать внешний вид и функциональность пагинации. ▪ Полезность:   • Помогает разработчикам быстро интегрировать удобную пагинацию в свои проекты.   • Обеспечивает более гибкое и кастомное управление навигацией по большим наборам данных. Статья будет полезна всем, кто хочет улучшить пользовательский интерфейс своего ASP.NET Core приложения с помощью собственных решений для пагинации. 📌 Читать

🖥 В этой статье автор рассматривает использование делегирующих обработчиков для расширения функциональности HttpClient в ASP
🖥 В этой статье автор рассматривает использование делегирующих обработчиков для расширения функциональности HttpClient в ASP.NET Core! 🌟 Делегирующие обработчики позволяют внедрять дополнительное поведение при отправке HTTP-запросов, аналогично тому, как middleware обрабатывают входящие запросы. 🔗 Ссылка: *клик*