Библиотека шарписта | C#, F#, .NET, ASP.NET
Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Больше📈 Аналитический обзор Telegram-канала Библиотека шарписта | C#, F#, .NET, ASP.NET
Канал Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 21 701 подписчиков, занимая 5 932 место в категории Технологии и приложения и 30 116 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 21 701 подписчиков.
Согласно последним данным от 14 сентября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -21, а за последние 24 часа — 3, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 18.75%. В первые 24 часа после публикации контент обычно набирает 8.20% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 4 069 просмотров. В течение первых суток публикация набирает 1 779 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 16.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как .net, шарписта, навигация, await, string.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Все самое полезное для C#-разработчика в одном канале.
Наши курсы: https://clc.to/y3LDtw
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead”
Благодаря высокой частоте обновлений (последние данные получены 15 сентября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
var task = GetDataAsync();
// забыли await
Use(task);
Это режим «запустил и забыл» (fire-and-forget). Последствия:
• выполнение продолжается немедленно
• зависимость не обеспечивается
• исключения выходят за пределы логического стека вызовов
Что может произойти с приложением
⚠️ Забытый await может привести к классическому состоянию гонки: код продолжает выполнение до завершения критической операции, например, проверки прав доступа, открывая окно для эксплуатации.
Атакующий может успеть получить доступ к данным между моментом начала проверки и её завершением.
⚠️ Когда исключения выходят за пределы логического стека вызовов, они могут быть проглочены без логирования. Это маскирует неудачные попытки аутентификации, SQL-инъекции или другие атаки.
⚠️ Истощение пула потоков как вектор DoS-атаки. При высокой нагрузке неправильное использование async/await приводит к истощению пула потоков. Злоумышленник может намеренно генерировать запросы, эксплуатирующие блокирующие операции.
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#il_люминатор.NET Core на .NET 11
В C# 15 можно описать тип с несколькими допустимыми вариантами:
public union IntOrString(int, string);
Такой endpoint может вернуть либо число, либо строку:
app.MapGet("/max-unavailable", () => new IntOrString(2));
JSON останется обычным:
2 или: "25%"Без $type и дополнительных обёрток. Главный плюс — компилятор проверяет, что switch обработал все варианты union. Поддерживается в Minimal APIs, MVC, SignalR, Blazor и OpenAPI. 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #async_news
RuleFor(x => x.ShippingAddress)
.NotEmpty()
.When(x => x.DeliveryMethod == "Express");
RuleFor(x => x.CreditCard)
.NotEmpty()
.Unless(x => x.PaymentMethod == "PayPal");
When проверяет условие перед правилом. Express доставка требует адрес, PayPal не требует карту. Логика в одном месте без if-else в контроллере.
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#sharp_viewЧто реально хочется разобрать? Где чаще всего застреваете? Что пробовали, но так и не получилось нормально внедрить?🤩 Пишите вопросы в комментариях — самые залайканные разберём на вебинаре в первую очередь. Задавайте всё, что давно хотелось спросить 📍 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта
→ C# 15 стал default для .NET 11 — union types и closed hierarchies больше не preview; → runtime получил новые возможности для диагностики и оптимизации, включая crash reporting на Unix и аппаратное ускорение System.Half; → обновились SDK, MSBuild, NuGet, ASP.NET Core, MAUI и WinForms.🌞 Финальный .NET 11 запланирован на 10 ноября и будет STS-релизом. А 10 ноября заканчивается поддержка .NET 8 и .NET 9. Для них уже вышли сентябрьские security updates: 8.0.31, 9.0.20 и 10.0.12. 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #async_news
int Double(int x) => x * 2; var result = Double(21);Но JIT может решить, что отдельный вызов здесь вообще не нужен. При inlining тело метода встраивается непосредственно в вызывающий код: 🔴 До:
call Double ↓ x * 2🔴 После:
21 * 2Зачем? Меньше накладных расходов на вызов метода, а главное — JIT получает больше кода для последующих оптимизаций. Но inline не означает «метод маленький → обязательно встроить». JIT учитывает размер метода, частоту вызовов, доступность кода для анализа и другие эвристики. Поэтому даже небольшой метод может не попасть в inline. 📍 А атрибут:
[MethodImpl(MethodImplOptions.AggressiveInlining)]— это подсказка JIT, а не приказ. И наоборот, иногда большой метод всё-таки может быть встроен, если JIT считает это выгодным. Вот почему производительность C# нельзя оценивать только по исходному коду: между C# и CPU есть ещё один слой — JIT и его оптимизатор. 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #il_люминатор
<PublishAot>true</PublishAot>
В итоге можно прогнать тесты в тех же AOT-условиях, в которых будет работать приложение.
Особенно полезно для проектов, где Native AOT — часть production-сборки.
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#async_news
var users = new Dictionary<int, string>
{
[1] = "Ada",
[2] = "Linus",
[3] = "Grace"
};
var frozenUsers = users.ToFrozenDictionary();
После создания frozenUsers нельзя изменить. Зато структура оптимизируется именно под быстрый поиск.
🟡 Хороший сценарий — конфигурация, справочники, таблицы маршрутизации или наборы разрешений, которые загружаются один раз и затем используются тысячи раз.
FrozenDictionary не означает «быстрее любого Dictionary». Создание такой коллекции дороже, поэтому выигрыш появляется именно там, где чтений много, а изменений нет.
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#sharp_view
string s = "😊";
Console.WriteLine(s.Length); // 2, не 1
Length считает не символы, а UTF-16 кодовые единицы. Эмодзи и многие Unicode-символы занимают две единицы — суррогатную пару.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#sharp_viewConsole.WriteLine(nameof(List<>)); // Выведет "List"
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#sharp_view[includeIf "gitdir:~/work/"] path = .gitconfig-corpЛичные репозитории получат ваш домашний email автоматически:
[includeIf "hasconfig:remote.*.url:https://github.com/вашеимя/**"] path = .gitconfig-personalЗабудьте про git config --global user.email каждый раз. 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #sharp_view
— Flex работает с .NET 8, 9 и 10 в isolated-модели; — функции масштабируются независимо друг от друга; — можно настраивать память инстанса; — появилась интеграция с VNet; — есть Always Ready-инстансы для снижения cold start; — деплой идёт через blob storage, а не старый zip-deploy.📍 Переключить существующий Linux Consumption App на Flex «на месте» нельзя. Нужно создать новое Function App в Flex, перенести конфигурацию и задеплоить код. Для миграции Microsoft уже предлагает отдельный CLI:
az functionapp flex-migration start
Он создаёт Flex-приложение на основе существующего Linux Consumption App.
🔗 Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#async_news
bool found = false;
foreach (var warehouse in warehouses)
{
foreach (var bin in warehouse.Bins)
{
if (bin.Sku == requestedSku)
{
found = true;
break;
}
}
if (found)
break;
}
🤩 В C# 15 можно обозначить внешний цикл и выйти из него напрямую:
scan: foreach (var warehouse in warehouses)
{
foreach (var bin in warehouse.Bins)
{
if (bin.Sku == requestedSku)
break scan;
}
}
Никаких found, дополнительного if и лишнего состояния.
C# 15 сейчас доступен в .NET 11 Preview 7.
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#sharp_view