uk
Feedback

Не попадись на ботовода! Telemetrio знаходить і позначає такі канали мітками 👉 Хочеш бачити мітку, оформляй підписку

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

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

Відкрити в Telegram

Все самое полезное для 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 538 підписників, посідаючи 6 161 місце в категорії Технології та додатки та 30 446 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 21 538 підписників.

За останніми даними від 29 жовтня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -114, а за останні 24 години на -12, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 15.81%. Протягом перших 24 годин після публікації контент зазвичай збирає 7.41% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 3 406 переглядів. Протягом першої доби публікація в середньому набирає 1 597 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 4.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як .net, шарписта, навигация, await, string.

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

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead”

Завдяки високій частоті оновлень (останні дані отримано 30 жовтня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

21 538
Підписники
-1224 години
-487 днів
-11430 днів
Архів дописів
🎆 Праздники — время лучшего контента 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

🛍 Microsoft Store из терминала Windows 11 получила встроенный CLI для Microsoft Store. Команда store ищет, устанавливает и о
🛍 Microsoft Store из терминала Windows 11 получила встроенный CLI для Microsoft Store. Команда store ищет, устанавливает и обновляет приложения из Store прямо из командной строки. Быстрее winget и с поддержкой платных приложений. Команда store покажет все команды. Работает из коробки на Windows 11 версии preview v22511.1401.5.0. Основные команды Поиск приложений:
store search vlc
store search "notepad++"
store search powertoys
Похожие приложения:
store similar vlc
Установка:
store install vlc
store install 9NBLGGH4NNS1  # ProductId
Список установленных:
store installed
Обновления:
store updates
store upgrade vlc
store upgrade --all
По сути Store CLI - это winget только для Microsoft Store. 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #async_news

🔗 Цепочка конструкторов в C# Конструкторы вызываются при создании объекта. В C# можно связывать их в цепочку: один конструктор вызывает другой. Это убирает дублирование кода инициализации.​ Представьте класс User с тремя конструкторами:
public class User
{
    public string Name { get; set; }
    public string Email { get; set; }
    public int Age { get; set; }
    public DateTime Created { get; set; }

    // Базовая инициализация
    public User()
    {
        Created = DateTime.Now;
        Name = "Гость";
        Email = "guest@example.com";
    }

    public User(string name) 
    {
        Created = DateTime.Now;  // Дублируем!
        Name = name;
        Email = "guest@example.com";
    }

    public User(string name, string email)
    {
        Created = DateTime.Now;  // Снова дублируем!
        Name = name;
        Email = email;
    }
}
Проблема: Created и дефолтные значения повторяются. Изменить в одном месте нельзя. Как работает цепочка с this() Используйте : this(параметры):
public class User
{
    public string Name { get; set; }
    public string Email { get; set; }
    public int Age { get; set; }
    public DateTime Created { get; set; }

    // Главный конструктор - вся логика здесь
    public User(string name, string email, int age = 0)
    {
        Created = DateTime.Now;
        Name = name ?? "Гость";
        Email = email ?? "guest@example.com";
        Age = age;
    }

    // Цепочка к главному
    public User() : this("Гость", "guest@example.com") { }

    public User(string name) : this(name, "guest@example.com") { }

    public User(string name, string email) : this(name, email, 0) { }
}
Тестируем:
var user1 = new User();                    // Гость, guest, 0
var user2 = new User("Иван");             // Иван, guest, 0  
var user3 = new User("Иван", "i@example"); // Иван, i@example, 0
var user4 = new User("Анна", "a@ex", 25); // Анна, a@ex, 25
Все получают Created = Now автоматически Правила цепочки: • Должна быть первой в конструкторе:
public User(string name) : this(name, "default")  // OK
{
    // Дополнительная логика
}
• Нельзя дважды:
public User() : this("a") : base()  // Ошибка!
Идеально для классов с множеством опциональных параметров. Главное: короткие цепочки и главный конструктор с полной логикой. 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #sharp_view

😑 Что выведет код Делегаты в шарпах — штука базовая, но в деталях легко запутаться. Посмотрите на код и предскажите вывод, п
😑 Что выведет код Делегаты в шарпах — штука базовая, но в деталях легко запутаться. Посмотрите на код и предскажите вывод, прежде чем проверять. ➡️ Для любознательных ответ в нашем канале с задачами 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #dotnet_challenge

⏳ Интерполяция строк не бесплатна Строки в горячих участках вашего кода бьют по памяти сильнее чем кажется. В ASP.NET они часто оказываются в топе аллокаторов в профайлере. Что создаёт лишние строки • Интерполяция var key = $"{userId}:{tenantId. Каждый вызов порождает новый string и новый массив char. • string.Format string.Format("{0}-{1}", a, b); работает по той же схеме создаёт новый объект и буфер под символы. • Частые ToString() request.Headers["X-Id"].ToString(); при каждом запросе снова строит строку из заголовка. Как сделать безопаснее • Использовать структурированное логирование
logger.LogInformation("User {UserId} logged in", userId);
В этом случае ILogger не формирует строку когда соответствующий уровень логов отключён, а значения попадают в структурированные поля записи. • Не вызывать ToString() без необходимости Формируйте строку только там где она действительно нужна в ответе или в редком логировании, а не в общем горячем пути. • В особо чувствительных местах использовать Span и ValueStringBuilder Они позволяют собирать текст в переиспользуемом буфере и заметно снизить количество мусора. Если код выполняется на каждом запросе, строковая интерполяция и лишние преобразования в string перестают быть дешёвым сахаром и становятся реальным источником аллокаций. 📍 Навигация: Вакансии • Задачи • Собесы 🐸Библиотека шарписта #il_люминатор