Не попадитесь на накрученные каналы! Узнайте, не накручивает ли канал просмотры или подписчиков Проверить канал на накрутку
Прикрепить Телеграм-аккаунт Прикрепить Телеграм-аккаунт

Телеграм канал «C# 1001 notes»

C# 1001 notes
704
457
405
4
0
Регулярные короткие заметки по C# и .NET.

Просто о сложном для каждого.

admin - @haarrp
Подписчики
Всего
6 688
Сегодня
+1
Просмотров на пост
Всего
661
ER
Общий
9.88%
Суточный
11.62%
Динамика публикаций
Telemetr - сервис глубокой аналитики
телеграм-каналов
Получите подробную информацию о каждом канале
Отберите самые эффективные каналы для
рекламных размещений, по приросту подписчиков,
ER, количеству просмотров на пост и другим метрикам
Анализируйте рекламные посты
и креативы
Узнайте какие посты лучше сработали,
а какие хуже, даже если их давно удалили
Оценивайте эффективность тематики и контента
Узнайте, какую тематику лучше не рекламировать
на канале, а какая зайдет на ура
Попробовать бесплатно
Показано 7 из 704 постов
Смотреть все посты
Пост от 26.10.2026 13:37
299
0
9
В C# наконец появились union-типы

Разбираем C# 15 и .NET 11: union-типы, закрытые иерархии через closed, аргументы в коллекционных выражениях, extension-индексаторы и именованные break и continue.

Разработчики на C# просили размеченные объединения (discriminated unions) почти десять лет. Обсуждение в репозитории языка годами оставалось одним из самых популярных, а команды тем временем писали свои OneOf, Result и иерархии из абстрактных record с бесконечными default: throw. В C# 15, который выходит вместе с .NET 11, союзы наконец становятся частью языка. Вместе с ними приходят закрытые иерархии, аргументы в коллекционных выражениях, extension-индексаторы и именованные break/continue. Разберём, что из этого реально пригодится в коде уже сейчас.

https://uproger.com/csharp-15-union-types/
Пост от 16.10.2026 11:53
165
0
5
🛠 У .NET появился свой аналог rustup и nvm

Microsoft представила dotnetup: менеджер для установки и обновления .NET SDK и рантаймов. Пока в публичном превью.

Всё устанавливается в папку пользователя, без sudo и прав администратора. Можно держать стабильные версии, превью и ежедневные сборки рядом, а закрепление SDK через global.json сохраняется.

Несколько полезных команд:


dotnetup init # Настроить окружение
dotnetup list # Показать установленные версии
dotnetup update # Обновить отслеживаемые версии
dotnetup sdk install preview # Установить превью SDK


Можно отслеживать обновления внутри конкретной ветки или закрепить точную версию. При обновлении ненужные компоненты очищаются автоматически.

https://devblogs.microsoft.com/dotnet/introducing-dotnetup/
Пост от 14.10.2026 20:16
121
0
2
Helm-чарты прямо из C#, без запуска `helm` 🛠

HelmSharp позволяет рендерить шаблоны и управлять релизами Kubernetes внутри .NET-приложения.

Что умеет:

• Загружать чарты из папки и .tgz.
• Объединять values.yaml с пользовательскими параметрами.
• Упаковывать чарты и работать с HTTP-репозиториями.
• Устанавливать, обновлять, откатывать и удалять релизы.
• Хранить историю релизов в Kubernetes Secrets, совместимых с Helm v3.

Для начала:


dotnet add package HelmSharp.Action


Поддерживает .NET 8, 9 и 10, лицензия MIT.

Пригодится для собственных панелей управления и сервисов деплоя на C#. Совместимость с Helm пока частичная: свои чарты стоит проверить, особенно если они используют сложные шаблонные функции или расширения.

https://github.com/GaTTGeng/HelmSharp
Пост от 14.10.2026 12:04
129
0
2
Тестировщик fullstack: C#-автоматизация и ручные тесты

Если вы хотели работать на сильном продукте в гибком графике – это вакансия для вас.

Задачи

• Разрабатывать автотесты на C# и улучшать тестовый фреймворк
• Проводить полный цикл тестирования и отчитываться по релизам
• Разбирать инциденты вместе с заказчиком

Какие навыки нужны

• Опыт в тестировании веб-приложений от 2 лет
• Автоматизация на C#, знание REST API, SQL/NoSQL, брокеров сообщений и CI/CD

Условия

• Зарплата в рынке и премия по результатам работы
• Полная удалёнка или гибридный график (есть ИТ-хабы в Москве, Санкт-Петербурге и Екатеринбурге)
• Поддержка сообщества QA Talks
• Технический трек развития

Оставляйте отклик по ссылке.
Пост от 13.10.2026 12:02
160
0
7
🔐 Passkeys можно использовать как второй фактор в ASP.NET Core.

Пользователь вводит пароль, затем подтверждает вход через Touch ID, Windows Hello или аппаратный ключ. Без SMS и шестизначных кодов.

Маартен Баллиау показал реализацию на ASP.NET Core Identity в .NET 10: провайдер второго фактора, временная cookie и два эндпоинта для запроса и проверки passkey.

Есть важный нюанс: `PasskeySignInAsync()` выполняет прямой вход и обходит отдельный этап 2FA. Поэтому в таком сценарии нужно проверить, что passkey принадлежит именно пользователю, который уже прошёл проверку пароля.

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

https://blog.maartenballiauw.be/posts/2026-10-01-using-aspnet-core-passkeys-for-second-factor-authentication/
Пост от 07.10.2026 16:37
133
0
2
🔐 Как аутентифицировать SSE в ASP.NET Core?

SSE работает поверх обычного HTTP и поддерживает аутентификацию. Подвох в браузерном `EventSource`: он не позволяет задать заголовок Authorization.

В статье Paul Karam разобраны варианты:

• Cookies: браузер отправляет их автоматически для своего origin. Для другого нужны withCredentials: true и корректный CORS.
• Одноразовый короткоживущий токен в URL: при переподключении придётся получить новый.
• `@microsoft/fetch-event-source`: позволяет передать Bearer-токен в заголовке.
• `HttpClient`: вариант для .NET-клиентов с обычными заголовками аутентификации.

Долгоживущий access token в URL может утечь через логи сервера или прокси. На сервере SSE-эндпоинт защищается стандартными средствами ASP.NET Core, например .RequireAuthorization() при cookie-аутентификации.

https://tiger4589.github.io/2026/10/02/sse-with-authentication.html
Пост от 05.10.2026 17:02
287
0
2
Задачка по C# 14: сколько раз вызовется Next()?


int calls = 0;
int Next() => ++calls;

Box? a = null;
Box b = new();

a?.Value = Next();
b?.Value = Next();
a?.Value += Next();
b?.Value += Next();

Console.WriteLine($"{calls} {b.Value}");

class Box
{
public int Value
{
get;
set => field = value * 10;
}
}


Варианты:


A) 4 120
😎 2 120
C) 2 30
D) Код не скомпилируется


Ответ: B) 2 120

Здесь сразу две фичи C# 14.

Первая: null-conditional assignment. Теперь ?. можно ставить слева от присваивания, в том числе составного. Главный подвох в том, что если объект слева равен null, правая часть вообще не вычисляется. Поэтому для a функция Next() ни разу не вызывается, и счётчик доходит только до 2, хотя вызовов в коде четыре.

Вторая: ключевое слово `field`. Геттер остаётся автоматическим, а сеттер умножает значение на 10, обращаясь к скрытому полю без ручного объявления.

Считаем по шагам:

```
b?.Value = Next() → Next() = 1, сохраняем 1 * 10 = 10
b?.Value += Next() → читаем 10, Next() = 2, 10 + 2 = 12, сохраняем 120
```

Бонусный подвох: b?.Value++ уже не скомпилируется. Составное присваивание с ?. разрешено, а инкремент и декремент нет.
Смотреть все посты