C# 1001 notes
Open in Telegram
Регулярные короткие заметки по C# и .NET. Просто о сложном для каждого. admin - @haarrp
Show more6 539
Subscribers
-324 hours
-17 days
-230 days
Posts Archive
6 539
🔧 Задача на 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#.6 539
🛡Хотите строить защищенные и масштабируемые микросервисы с помощью 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.
6 539
⚡️ .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_notes6 539
🛠 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.
6 539
🔥 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
6 539
Transaction Outbox: как избежать потери данных в распределённых системах
В распределённых системах потеря данных — это не редкость. Как гарантировать целостность информации и обеспечить надёжную передачу сообщений? Transaction Outbox — шаблон, который решает проблему согласованности данных.
📅 7 апреля в 20:00 (мск)
🎓 Открытый вебинар с Олегом Мифле
💡 Что разберём?
✅ Проблемы согласованности данных в распределённых системах
✅ Как работает Transaction Outbox
✅ Как связать локальные базы данных с брокерами сообщений (Kafka, RabbitMQ)
✅ Реальные примеры внедрения шаблона в микросервисную архитектуру
🎯 Что получите?
✔️ Понимание принципов согласованности данных в распределённых системах
✔️ Практические навыки работы с Transaction Outbox
✔️ Готовые решения для построения надёжной микросервисной архитектуры
👉 Регистрация: https://otus.pw/N3xZ/?erid=2W5zFGkyYSk
Занятие приурочено к старту курса Highload Architect, обучение на котором позволит освоить решения, которые выдерживают большое количество запросов в секунду и правильно оптимизировать работоспособность серверов.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
6 539
✔️ Визуализация алгоритмов сортировки
Интерактивный инструмент, который поможет разобраться в работе ключевых алгоритмов сортировки.
Возможности:
— сортирует массив трёхзначных чисел;
— регулирует скорость;
— запускает, останавливает, сбрасывает процесс;
— создаёт случайный массив.
🔗 GitHub
@csharp_1001_notes
6 539
💻Хотите быстро научиться строить интерактивные интерфейсы на C#?
Присоединяйтесь к открытому уроку 8 апреля в 20:00 мск, где мы покажем, как сделать ваш код живым и динамичным!
📖Вы научитесь использовать класс System.Console для создания простых, но интересных программ с текстовыми интерфейсами. Например, вы напишете свою версию игры "Крестики-нолики" прямо в консоли. Это легко и увлекательно!
🔥С этим знанием вы сможете не просто выводить данные, а создавать интерактивные приложения, которые смогут реагировать на действия пользователя.
➡️ Зарегистрируйтесь на вебинар и получите скидку по промокоду SHARP_SPEC_4 на большое обучение «C# Developer»: https://otus.pw/Lh8D/?erid=2W5zFJHnQcp
Промокод действителен до 30.04.2025
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
Repost from C# (C Sharp) programming
🔥 Claude теперь интегрирован в Unity, Blender и Unreal Engine — MCP-плагины остаются в центре внимания! Теперь для создания игры достаточно лишь клавиатуры.
• Claude в Unity— генерирует геймплейные механики (физику, цели, таймеры), окружение, эффекты, интерфейсы, миникарты и многое другое.
• Claude в Blender — мгновенно создаёт 3D-модели и сцены, превращает фотографии в игровые локации и редактирует их по вашим командам.
• Claude в Unreal Engine — создаёт объекты, задаёт им форму и разрабатывает их логику всего за несколько минут.
Сохраняйте и пробуйте в деле! 🚀
6 539
☸️Хотите узнать, как деплоить ASP.NET-приложения в Kubernetes?
📅26 марта в 20:00 мск на открытом вебинаре мы разберем:
– PersistentVolume
– ConfigMap
– Secret
– Развернем БД в кластере и обсудим, почему секреты не такие уж секретные.
С Kubernetes ваши ASP.NET Core-приложения станут масштабируемыми и гибкими.
➡️ Регистрируйтесь на вебинар и получите скидку на курс «C# ASP.NET Core-разработчик»: https://otus.pw/0EoO/?erid=2W5zFHAfL96
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
В этом блоге рассказывает о новой функции Visual Studio, которая автоматически генерирует комментарии документации с помощью GitHub Copilot. Главные моменты:
▪ При вводе три слэшей (например, «///») редактор предлагает готовые комментарии, которые включают краткое описание функции, её параметры и возвращаемое значение.
▪ Функция доступна в Visual Studio 17.14 Preview 2 для проектов на C# и C++, с возможностью настройки стилей комментариев (XML или Doxygen для C++).
▪ Для использования требуется подписка на GitHub Copilot.
▪ Microsoft призывает разработчиков тестировать нововведение и оставлять обратную связь для дальнейшего улучшения инструмента.
Эта функция существенно упрощает процесс документирования кода и повышает продуктивность работы разработчиков.
Читать
6 539
❓Хотите стать C#-разработчиком, но боитесь, что будет сложно?
Подготовьтесь заранее и освойте Git — ключевой инструмент командной разработки!
На открытом вебинаре 31 марта в 20:00 мск разберем:
◽️ Систему контроля версий
◽️ Основные команды
◽️ Принципы работы с репозиториями
◽️ Эти знания помогут вам уверенно работать в команде и подготовиться к следующему этапу.
С Git вы сможете эффективно управлять кодом, вести проекты и двигаться к позиции Junior и Middle.
🔗 Регистрируйтесь на вебинар и 🎁 получите скидку на большое обучение «C# Developer»: https://otus.pw/RCqW/?erid=2W5zFG81u9J
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
6 539
🎯 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
6 539
🚀Как построить отказоустойчивый и надежный кластер с 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.
6 539
⚡️ 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 с определением уязвимых пакетов, историей слоев, идентификацией базового образа и фильтрацией ложных срабатываний
📌 Релиз
6 539
🖥 Числовой StringComparer появится в .NET 10!
🌟 Это позволяет сравнивать числа на основе их числового значения, а не лексикографического порядка!
@csharp_ci
6 539
⚡️ 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
6 539
Первый день стажировки. Внутренние сервисы падают один за другим...
Инженеры Контура выпустили захватывающий детективный подкаст «Загадка хранителя зоопарка». Это история стажёра, который пришёл в самое сердце разработки, команду базовой инфраструктуры, и поневоле стал участником одного из самых серьёзных инцидентов в истории компании.
В подкасте вы сможете по-настоящему прожить тот день вместе с разработчиками и докопаться до причины факапа.
Слушайте все 5 эпизодов на одном дыхании в канале!🎙
16+. Реклама. АО «ПФ «СКБ Контур», ОГРН 1026605606620. 620144, Екатеринбург, ул. Народной Воли, 19А. Erid:2SDnjcxHmPA
6 539
🚀 "PagingTagHelper" на mostlylucid.net рассказывает о создании и использовании собственного PagingTagHelper для ASP.NET Core.
▪ Цель статьи: объяснить, как реализовать механизм пагинации в веб-приложениях с помощью tag helper-ов.
▪ Ключевые моменты:
• Разбор принципов работы tag helper-ов в ASP.NET Core.
• Пошаговое создание кастомного PagingTagHelper, который генерирует HTML-разметку для навигации по страницам.
• Примеры кода и объяснения параметров, позволяющих настраивать внешний вид и функциональность пагинации.
▪ Полезность:
• Помогает разработчикам быстро интегрировать удобную пагинацию в свои проекты.
• Обеспечивает более гибкое и кастомное управление навигацией по большим наборам данных.
Статья будет полезна всем, кто хочет улучшить пользовательский интерфейс своего ASP.NET Core приложения с помощью собственных решений для пагинации.
📌 Читать
6 539
🖥 В этой статье автор рассматривает использование делегирующих обработчиков для расширения функциональности HttpClient в ASP.NET Core!
🌟 Делегирующие обработчики позволяют внедрять дополнительное поведение при отправке HTTP-запросов, аналогично тому, как middleware обрабатывают входящие запросы.
🔗 Ссылка: *клик*
Available now! Telegram Research 2025 — the year's key insights 
