ru
Feedback
Библиотека шарписта | C#, F#, .NET, ASP.NET

Библиотека шарписта | C#, F#, .NET, ASP.NET

Открыть в Telegram

Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

Больше

📈 Аналитический обзор Telegram-канала Библиотека шарписта | C#, F#, .NET, ASP.NET

Канал Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 21 866 подписчиков, занимая 6 209 место в категории Технологии и приложения и 30 824 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 21 866 подписчиков.

Согласно последним данным от 11 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -95, а за последние 24 часа — -6, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 12.48%. В первые 24 часа после публикации контент обычно набирает 7.13% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 2 729 просмотров. В течение первых суток публикация набирает 1 560 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 9.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как .net, шарписта, навигация, await, string.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

Благодаря высокой частоте обновлений (последние данные получены 12 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

21 866
Подписчики
-624 часа
-237 дней
-9530 день
Архив постов
🎮 Память в Unity и лаги, что реально чинит FPS Мы делились этой статьей, и сейчас напомним. Главная мысль простая, лаги част
🎮 Память в Unity и лаги, что реально чинит FPS Мы делились этой статьей, и сейчас напомним. Главная мысль простая, лаги часто приходят не из за рендера, а из за памяти и резких скачков GC. ➡️ В статье объясняют, почему аллокации и сборщик мусора могут давать фризы и как с этим жить 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #лучшее_из_библиотеки_2025

⚡️ Асинхронная обработка в C# Тогда мы уже рассказывали про IAsyncEnumerable и await foreach. Сейчас повторяем, потому что эт
⚡️ Асинхронная обработка в C# Тогда мы уже рассказывали про IAsyncEnumerable и await foreach. Сейчас повторяем, потому что это одна из тех фич, которую многие видели, но мало кто применяет осознанно. Асинхронные потоки IAsyncEnumerable позволяют эффективно обрабатывать последовательности данных, поступающих с задержками. В целом это положительно влияет на пользовательский опыт и скорость работы приложения 1. Базовый синтаксис:
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

static async IAsyncEnumerable<int> GenerateSequenceAsync(int count, [EnumeratorCancellation] CancellationToken token = default)
{
    for (int i = 0; i < count; i++)
    {
        // Симулируем асинхронную задержку
        await Task.Delay(100, token);
        yield return i;
    }
}

static async Task ConsumeAsync()
{
    await foreach (var item in GenerateSequenceAsync(5))
    {
        Console.WriteLine($"Получено значение: {item}");
    }
}
• Ключевое слово async перед IAsyncEnumerable<T>. • yield return внутри асинхронного метода. • await foreach для потребления. 2. Обработка отмены и ошибок:
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(1));
try
{
    await foreach (var item in GenerateSequenceAsync(10, cts.Token).WithCancellation(cts.Token))
    {
        Console.WriteLine(item);
    }
}
catch (OperationCanceledException)
{
    Console.WriteLine("Операция была отменена.");
}
• Передаём CancellationToken через атрибут [EnumeratorCancellation]. • Используем метод расширения .WithCancellation(token) для явной поддержки отмены в await foreach. 3. Советы по применению • Всегда учитывайте семантику отмены: пробрасывайте CancellationToken до источника потока. • Избегайте долгих синхронных операций внутри цикла генерации — это сведёт на нет преимущества асинхронности. • При больших объёмах данных комбинируйте с буферизацией через Channel<T> для сглаживания пиковой нагрузки. 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #лучшее_из_библиотеки_2025

#️⃣ Async Task в Unity против корутин Мы уже делились этим разбором в марте, и сейчас самое время напомнить. В статье хорошо
#️⃣ Async Task в Unity против корутин Мы уже делились этим разбором в марте, и сейчас самое время напомнить. В статье хорошо объясняют, что корутины это не настоящая параллельность, они просто размазывают выполнение по кадрам и все равно живут в основном потоке. Поэтому если внутри корутины сделать блокирующую работу, игра встанет. ➡️ Освежить статью в памяти 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #лучшее_из_библиотеки_2025

👀 Какую IDE выбрать для C# в 2026 Мы уже поднимали тему выбора IDE. Сейчас повторим, потому что смена IDE часто совпадает с
👀 Какую IDE выбрать для C# в 2026 Мы уже поднимали тему выбора IDE. Сейчас повторим, потому что смена IDE часто совпадает с переходом на новый проект или новый стек. 👍 За Visual Studio 🔥 За Rider Остальное в комменты 👇 💬 Что у вас сейчас в роли основной IDE и что бесит больше всего в выбранном варианте? 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #лучшее_из_библиотеки_2025

🎆 Праздники — время лучшего контента 2025 Новый год наступил, но мы не уходим на каникулы. Все праздники публикуем топовые п
🎆 Праздники — время лучшего контента 2025 Новый год наступил, но мы не уходим на каникулы. Все праздники публикуем топовые посты года — те, что вы сохраняли в закладки и пересылали коллегам. ➡️ Ежедневные порции лучшего по хэштегу #лучшее_из_библиотеки_2025 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта

🎄 С Новым годом, шарписты! var year = new Year(2026); year.Wishes = new[] { "чистый код", "нулевой техдолг", "стабильный про
🎄 С Новым годом, шарписты!
var year = new Year(2026);
year.Wishes = new[] { "чистый код", "нулевой техдолг", "стабильный прод" };

while (year.InProgress)
{
    await you.Ship(Features.Amazing);
    await you.Avoid(Bugs.Critical);
    you.Happiness++;
}
🐸Библиотека шарписта

❓ У вас есть ёлка дома
Anonymous voting

🎄 Социальный опрос айтишников Есть два типа людей: те, кто ставит ёлку в начале декабря и наслаждается атмосферой целый меся
🎄 Социальный опрос айтишников Есть два типа людей: те, кто ставит ёлку в начале декабря и наслаждается атмосферой целый месяц, и те, кто украшает её 31-го под бой курантов. 💬 Скидывайте фото своих ёлок в комменты 👇 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #entry_point

📅 Даты и время в .NET без сюрпризов В .NET есть разные типы под разные задачи, и из этого обычно и растут ошибки. DateTime это просто дата и время, но без явного смещения. DateTimeOffset хранит дату, время и смещение от UTC, поэтому однозначно задает момент времени. Для часовых поясов используйте TimeZoneInfo, Microsoft прямо пишет, что для новой разработки лучше TimeZoneInfo вместо старого TimeZone.
var nowUtc = DateTimeOffset.UtcNow;
var moscow = TimeZoneInfo.FindSystemTimeZoneById("Europe/Moscow");
var nowMoscow = TimeZoneInfo.ConvertTime(nowUtc, moscow);

Console.WriteLine(nowUtc);
Console.WriteLine(nowMoscow);
TimeZoneInfo умеет переводить время между часовыми поясами, а DateTimeOffset делает момент переносимым между машинами и окружениями. Еще два полезных типа. DateOnly для календарной даты без времени, например отпуск или дата рождения. TimeOnly для времени без даты, например расписание.
var vacation = new DateOnly(2026, 1, 10);
var standup = new TimeOnly(10, 30);

Console.WriteLine(vacation);
Console.WriteLine(standup);
DateOnly и TimeOnly заменяют костыли с DateTime и TimeSpan, когда вам не нужен момент времени. 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #sharp_view

🤔 Не знаете, в чём встречать Новый год? Не беда! Tproger как раз собрал стек новогодних нарядов, чтобы вы сияли ярче, чем лю
🤔 Не знаете, в чём встречать Новый год? Не беда! Tproger как раз собрал стек новогодних нарядов, чтобы вы сияли ярче, чем любая гирлянда. Скорее заходите в виртуальную примерочную и выбирайте скин! 💃 Реклама. ИП Михайлишина Гузель Фаниловна. ИНН 165042823905. Erid 2VtzqukJLdp

📎 Методы вместо сеттеров Открытые геттеры и сеттеры кажутся удобными, но позволяют внешнему коду разрушить внутреннюю логику объекта. Можно предоставлять методы, которые гарантируют соблюдение правил. Например, в заказе количество позиций не должно быть отрицательным. Но с сеттером любой вызовет orderItem.setQuantity(-1000). Объект становится некорректным, а баги проявятся позже. Создайте метод, который принимает ID товара и новое значение. Внутри проверьте, что число положительное, обновите поле и пересчитайте сумму. Пример:
public void ChangeQuantity(string itemId, int newQuantity) {  
    if (newQuantity < 0) throw new ArgumentException("Количество не может быть отрицательным");  
    var item = items.FirstOrDefault(i => i.Id == itemId);  
    if (item != null) {  
        item.Quantity = newQuantity;  
        RecalculateTotal();  
    }  
}  
Так внешний код не может нарушить правила. Можно ограничить сеттер проверкой, но множество проверок может сломать принцип единой ответственности. 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #il_люминатор

👨‍💻 Ложная иммутабельность Часто новички в функциональном программировании думают, что сделали иммутабельный код. Берут список, вызывают ToList() или Select() и радуются новому списку. Но в C# это ловушка. Проблема в ссылочных типах. var copy = original.ToList() создаёт новый List, но все элементы внутри — те же самые объекты. Меняете свойство через copy, и оригинал тоже меняется. Правило трёх • Records с init-only свойствами для value-like поведения • ImmutableList<T> из System.Collections.Immutable — настоящие неизменяемые коллекции • Struct только для маленьких типов 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #sharp_view

📂 Files для Windows 11 получил интеграцию с PowerToys Files это популярный сторонний файловый менеджер для Windows 11. В нов
📂 Files для Windows 11 получил интеграцию с PowerToys Files это популярный сторонний файловый менеджер для Windows 11. В новости пишут, что он получил интеграцию с одной из самых удобных утилит PowerToys, которая делает быстрый предпросмотр файлов. Речь про Peek. Вы выделяете файл и жмёте Ctrl плюс Space, и файл открывается в лёгком окне предпросмотра. Это работает как быстрый просмотр, без запуска отдельного приложения. ➡️ Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #async_news

⛄️ Путь к мечте продолжается Пока вы думаете, что «не хватает времени» или «сложные обстоятельства» — Стас перенёс две нейрох
⛄️ Путь к мечте продолжается Пока вы думаете, что «не хватает времени» или «сложные обстоятельства» — Стас перенёс две нейрохирургические операции, собирает себя по кусочкам, при этом проходит курс по C++, пилит проекты для портфолио и откликается на вакансии. ➡️ Читать продолжение пути Стаса 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта

🌐 Постоянные редиректы в ASP.NET RedirectPermanent работает в контроллерах MVC и Core. Метод отправляет статус 301 Moved Permanently, браузеры кэшируют такой редирект и сразу переходят на новый адрес без повторных запросов к старому. В контроллере это выглядит просто:
public IActionResult OldPage()
{
    return RedirectPermanent("/new-page");
}
Здесь запрос на /old-page уйдет на /new-page с кодом 301. Поисковики обновят индекс и перестанут индексировать старый адрес. Разница с обычным Redirect в статусе ответа. Redirect (302) говорит «временно перемещено», браузер каждый раз проверяет старый URL. RedirectPermanent (301) фиксирует «навсегда», что экономит трафик и улучшает SEO. 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #sharp_view

AI-агенты: почему LangChain и ReAct — это must-have для шарписта 🛠️ Интеграция ИИ в корпоративный софт больше не ограничивае
AI-агенты: почему LangChain и ReAct — это must-have для шарписта 🛠️ Интеграция ИИ в корпоративный софт больше не ограничивается вызовом API. Нужно строить сложные системы с памятью и автономной логикой. На курсе мы разберём передовой стек разработки мультиагентных систем. Ключевые темы: — реализация логики «Reasoning + Acting» для полной автономности; — использование n8n как мощного визуального оркестратора процессов; — применение протокола MCP от Anthropic для надёжной связи; — построение масштабируемого RAG для работы с Big Data. Создайте систему из нескольких агентов, которая возьмёт на себя сложную аналитику и поддержку клиентов. Старт курса 🚀

👨‍💻 Рабочее место админа пепси-кодера 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #garbage_collector
👨‍💻 Рабочее место админа пепси-кодера 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #garbage_collector

👥 Дайджест 2025 Год завершается, самое время подвести итоги. 2025 принёс нам .NET 10 — юбилейный LTS-релиз. ↪️ .NET 10 Релиз
👥 Дайджест 2025 Год завершается, самое время подвести итоги. 2025 принёс нам .NET 10 — юбилейный LTS-релиз. ↪️ .NET 10 Релиз состоялся 11 ноября 2025 года. Сами Microsoft называет его самым производительным, современным и безопасным выпуском платформы. • Улучшения JIT-компилятора: инлайнинг, девиртуализация методов, оптимизация генерации кода для struct-аргументов. • Поддержка AVX10.2 для Intel и Arm64 SVE для продвинутой векторизации. • Улучшения NativeAOT: меньше размер, быстрее запуск. • Стековая аллокация для маленьких массивов фиксированного размера. • Встроенная поддержка AI через новый Microsoft Agent Framework • Постквантовая криптография: добавлена поддержка алгоритмов ML-KEM (FIPS 203), ML-DSA (FIPS 204) и SLH-DSA (FIPS 205). ↪️ C# 14 C# 14 обновили большим количеством фич: ключевое слово field, блоки расширений, partial-конструкторы и события, оператор null-conditional assignment, перегрузку составных операторов присваивания, модификаторы параметров в лямбдах без указания типа. ↪️ F# 10 У нас был цикл постов про обновления F#. От подавления предупреждений до авто-свойств. ↪️ Entity Framework Core 10 • Полная поддержка типа данных vector и функции VECTOR_DISTANCE() для Azure SQL Database и SQL Server 2025 • EF Core 10 добавляет first-class поддержку операторов LeftJoin и RightJoin • Теперь можно назначать имена фильтрам и управлять ими по отдельности ↪️ ASP.NET 10 и Blazor • Декларативное сохранение состояния через атрибут [PersistentState] • Circuit state persistence — пользователи могут возобновить сессию после дисконнекта. • blazor.web.js теперь сжимается: размер уменьшился на 76% — со 183 KB до ~43 KB. • Встроенная страница NotFound.razor в шаблонах. • Полная поддержка OpenAPI 3.1 и YAML-формата для API-документации. ↪️ .NET MAUI 10 • XAML компилируется во время сборки, а не парсится в runtime • Новый шаблон проекта для интеграции MAUI с .NET Aspire • Экспериментальная возможность использовать CoreCLR вместо Mono .NET Aspire • Команды aspire new, aspire run, aspire config и preview-команды aspire publish/deploy • Можно определить Aspire AppHost без традиционного project file • Типизированные клиентские библиотеки для GitHub Models, Azure AI Foundry и OpenAI ↪️ Visual Studio 2026 • Более 5000 исправленных багов и 300 реализованных фич. • Запуск приложений до 30% быстрее по сравнению с VS 2022 • IDE отвязана от build tools — можно обновлять IDE без влияния на toolchain • Полная поддержка .NET 10 и C# 14 Год получился насыщенным. Все события можно найти по хэштегу #async_news. 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #async_news

🌐 Перенаправляем запросы в ASP.NET Redirect в ASP.NET перенаправляет пользователя на другой URL с кодом 302 Found. Это временное перемещение, когда браузер каждый раз проверяет исходный адрес. Основные примеры использования:
// 1. Абсолютный путь
return Redirect("https://example.com");

// 2. Относительный путь
return Redirect("/admin/dashboard");

// 3. Действие контроллера
return RedirectToAction("Edit", "User", new { id = model.Id });

// 4. URL с параметрами
return Redirect($"/products?category={categoryId}");
Redirect подходит для временных переходов. Для постоянных ссылок переходите на RedirectPermanent. 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #sharp_view