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

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

前往频道在 Telegram

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

显示更多

📈 Telegram 频道 Библиотека шарписта | C#, F#, .NET, ASP.NET 的分析概览

频道 Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 21 701 名订阅者,在 技术与应用 类别中位列第 5 943,并在 俄罗斯 地区排名第 30 267

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 21 701 名订阅者。

根据 29 八月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -48,过去 24 小时变化为 -6,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 16.72%。内容发布后 24 小时内通常能获得 7.84% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 3 628 次浏览,首日通常累积 1 702 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 23
  • 主题关注点: 内容集中在 .net, шарписта, навигация, await, string 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

凭借高频更新(最新数据采集于 30 八月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

21 701
订阅者
-624 小时
-57
-4830
帖子存档
🔄 Что нового в .NET 10 Оптимизации JIT-компиляции и улучшенная генерация кода ускоряют работу приложений. Добавлена поддержк
🔄 Что нового в .NET 10 Оптимизации JIT-компиляции и улучшенная генерация кода ускоряют работу приложений. Добавлена поддержка новых инструкций AVX10.2 и NativeAOT. Появились новые API для криптографии с поддержкой пост-квантовых алгоритмов и расширенными возможностями по ML-DSA. Улучшена поддержка глобализации, сериализации, работы с числовыми данными и ZIP-файлами. Добавлена поддержка WebSocketStream и TLS 1.3 для macOS, а также расширены возможности управления процессами Windows. .NET 10 SDK позволяет создавать контейнерные образы нативно и предлагает улучшенную CLI с генерацией табуляционных сценариев. Новые инструменты SDK поддерживают разные платформы и расширяют возможности для devops и cloud-разработки. Улучшения Blazor, OpenAPI, расширенная проверка форм и поддержка Passkey для Identity. C# 14 получил новые возможности: доступ к backing fields в свойствах, улучшения в nameof для generic-типов, более гибкая работа с Span<T> в лямбдах, расширенные статические методы и операторы, а также новые частичные конструкторы и события. F#, Visual Basic, .NET MAUI, EF Core, Windows Forms и WPF обновились с улучшениями производительности, юзабилити и новым функционалом. ➡️ Блог Microsoft 🐸Библиотека шарписта #async_news

🤨 Что стоит за обещаниями гибкого графика и карьерного роста в IT-вакансиях Читать вакансии нужно внимательно, иначе можно н
🤨 Что стоит за обещаниями гибкого графика и карьерного роста в IT-вакансиях Читать вакансии нужно внимательно, иначе можно не заметить, что под модными словосочетаниями скрываются нестандартные условия труда или неожиданные обязательства. Например, если описана свобода выбора графика, это почти всегда значит, что появятся поздние звонки или потребуется работать когда угодно. Формулировки про перспективы развития часто переводятся на постоянную работу в режиме форсированного многозадачия, где на поддержку рассчитывать не придется. ➡️ Узнать, что работодатели имеют в виду 🐸Библиотека шарписта

📎 Копирование с with Records поддерживают выражение with, которое создаёт изменённую копию объекта без изменения оригинала:
public record Person(string FirstName, string LastName);

var original = new Person("Анна", "Смирнова");
var updated = original with { LastName = "Петрова" };

Console.WriteLine(original.LastName);   // Смирнова
Console.WriteLine(updated.LastName); // Петрова
Особенно полезно в event sourcing, CQRS или Redux-подобных архитектурах, где вы дериватизируете новые состояния без мутации исходных данных:
public record Order(int Id, string Status);

var first = new Order(1, "Ожидает");
var second = first with { Status = "Обработан" };
var third = second with { Status = "Отправлен" };

// Все три состояния существуют независимо
Это гарантирует, что никаких побочных эффектов, никаких неожиданных изменений в другой части кода. История состояний становится явной. 🐸Библиотека шарписта #sharp_view

👀 .NET Conf 2025 — День 2 Скоро начнётся второй день .NET Conf 2025. Среди тем — использование Azure для разработки с контей
👀 .NET Conf 2025 — День 2 Скоро начнётся второй день .NET Conf 2025. Среди тем — использование Azure для разработки с контейнерами, Kubernetes, функциями и AI-сервисами, построение собственных интеграций с помощью Remote MCP серверов, а также интеграция Redis с .NET. ➡️ Трансляция 🐸Библиотека шарписта #async_news

💻 Сравнение по значению автоматом Вы знаете, что с классами сравнение — это боль? Два объекта с одинаковыми данными считаются разными, потому что сравнивается идентичность. Иначе работают Records:
public record Person(string FirstName, string LastName);

var p1 = new Person("Иван", "Иванов");
var p2 = new Person("Иван", "Иванов");

Console.WriteLine(p1 == p2); // true
Без переопределения Equals, без GetHashCode, без перегрузки оператора ==. Record сам сравнит все свойства и даст правильный результат. В словарях, в списках, при проверке условий — везде это работает как вы интуитивно ожидаете. Не будет случайных багов, когда один экземпляр не равен другому из-за того, что вы забыли переопределить Equals.
var users = new HashSet<User>();
users.Add(new User("Мария", "maria@example.com"));
users.Contains(new User("Мария", "maria@example.com")); // true — работает!
Value-based семантика — это основа, на которой строятся остальные возможности Records. 🐸Библиотека шарписта #sharp_view

💻 Скриншоты текста — зло для разработчиков Когда видишь скриншот с кодом или ошибкой, хочется плакать — приходится вручную п
💻 Скриншоты текста — зло для разработчиков Когда видишь скриншот с кодом или ошибкой, хочется плакать — приходится вручную переписывать, тратить время и допускать ошибки. Почему бы просто не вставить текст? Отказ от удобств в угоду ленью — плохой тренд. 💬 Пробовали ли вы объяснять коллегам, почему скриншоты текста — это неудобно? Есть ли похожий опыт? Делитесь болью в комментах 👇 🐸Библиотека шарписта #entry_point

🛒 Black Friday от Proglib.academy! Только до 30 ноября — скидка 40% на ВСЕ курсы. Пора добавить в корзину не носки, а новые
🛒 Black Friday от Proglib.academy! Только до 30 ноября — скидка 40% на ВСЕ курсы. Пора добавить в корзину не носки, а новые скиллы: Python, математика для Data Science, AI, алгоритмы и структуры данных, ML. 🎓 Выбирай курс, который реально двинет тебя в карьере, и учись со скидкой. 👉 Учиться со скидкой

👀 .NET Conf 2025 — День 1 Сегодня начинается 15-я ежегодная виртуальная конференция .NET Conf 2025. В первый день будут докл
👀 .NET Conf 2025 — День 1 Сегодня начинается 15-я ежегодная виртуальная конференция .NET Conf 2025. В первый день будут доклады по C# 14, производительности .NET 10, обновлениям Blazor, фреймворку Aspire, Agentic Development и .NET MAUI. Второй день посвящён облачной разработке с Azure, интеграциям Remote MCP серверов, Redis, расширениям Aspire и новому фреймворку тестирования Microsoft.Testing.Platform ➡️ Трансляция 🐸Библиотека шарписта #async_news

⭐️ Иммутабельность без танцев с бубном Records — это ссылочный тип, который упростил жизнь разработчикам, привыкшим писать иммутабельные классы вручную. Вот зачем они нужны. Раньше иммутабельный класс требовал много кода: readonly свойства, отключённые сеттеры, кастомные конструкторы. И всё равно где-то находилась лазейка. С Records это просто исчезает:
public record User(string Name, string Email);

var user = new User("Алексей", "alex@example.com");
// user.Name = "Новое имя"; — Ошибка компиляции
Все свойства автоматически получают init-accessor. Установить значение можно только при создании объекта. Это не просто синтаксический сахар — это гарантия от багов состояния, которые трудно найти. Если вам нужен объект инициализатор, Records это поддерживают:
public record Product
{
    public string Name { get; init; }
    public decimal Price { get; init; }
}

var book = new Product { Name = "C# Deep Dive", Price = 49.99M };
Проще тестировать, проще рассуждать о коде, проще избежать багов в многопоточной среде. А ошибки, связанные с неожиданным изменением состояния, просто перестают существовать. 🐸Библиотека шарписта #sharp_view

💻 Хочешь MacBook Pro? Просто начни учиться! Да-да, вы не ослышались: Proglib.academy дарит макбук за учёбу! Всё просто: — ку
💻 Хочешь MacBook Pro? Просто начни учиться! Да-да, вы не ослышались: Proglib.academy дарит макбук за учёбу! Всё просто: — купи любой курс Академии до 15 ноября; — пройди 2 недели обучения (можно за два дня); — напиши куратору в чате курса хэштег #розыгрыш. 📚 Выбирай свой курс: ▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными; ▫️ «Основы Python» — чтобы начать писать код с нуля; ▫️ «Алгоритмы и структуры данных» — для будущих инженеров; ▫️ «AI-агенты» или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ. 👉 Участвовать в розыгрыше

⚡️ Когда важна производительность В C# цикл foreach часто воспринимается как самая удобная и красивая форма для обхода коллек
⚡️ Когда важна производительность В C# цикл foreach часто воспринимается как самая удобная и красивая форма для обхода коллекций. Но в вопросах производительности foreach не всегда оптимален. Почему лучше избегать foreach:foreach использует итератор — для массивов его оптимизируют, но для списков, словарей и других коллекций создаётся объект или struct-итератор. • под капотом foreach может создавать временные объекты, что увеличивает нагрузку на сборщик мусора и снижает производительность. • foreach всегда выполняет проверки и гарантирует корректность обхода, но это стоит некоторой производительности. Что использовать вместо foreach: Цикл for с индексом, особенно для массивов:
for (int i = 0; i < data.Length; i++)
{
    // работа с data[i]
}
Span<T> и его методы — для обхода данных без выделения памяти и избыточных проверок:
var span = data.AsSpan();
for (int i = 0; i < span.Length; i++)
{
    // работа с span[i]
}
Когда можно использовать foreach: • Если цикл выполняется нечасто или количество элементов небольшое. • Для обхода коллекций, где критичен чистый и понятный стиль программирования. 🐸Библиотека шарписта #sharp_view

Управление зависимостями в ASP.NET Core: меньше рутины, больше автоматизации. Ручное добавление сервисов через AddScoped и Ad
Управление зависимостями в ASP.NET Core: меньше рутины, больше автоматизации. Ручное добавление сервисов через AddScoped и AddSingleton превращает Program.cs в бесконечный список регистраций. Но есть способ проще — библиотека Scrutor. На открытом вебинаре курса OTUS C# ASP.NET Core разработчик Михаил Дмитриев покажет, как автоматизировать регистрацию сервисов и расширить стандартный IoC контейнер. 📌 18 ноября, 20:00 Управление зависимостями в ASP.NET Core с помощью Scrutor — массовая регистрация сервисов по правилам — использование паттерна декоратор — добавление кэширования без переписывания кода — реальные примеры для продакшн-проектов Вебинар бесплатный и будет полезен ASP.NET Core-разработчикам, которые хотят упростить настройку зависимостей и сделать код чище. 👉 Регистрируйтесь: https://clc.to/kM8GpA Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🤩 Doom теперь в Telegram В Telegram появился порт классической игры Doom, а также Doom II, который теперь запускается прямо
🤩 Doom теперь в Telegram В Telegram появился порт классической игры Doom, а также Doom II, который теперь запускается прямо внутри WebView виджета. ➡️ Поиграть 🐸Библиотека шарписта #async_news

💻 ВАЖНО: макбук ещё не забрали! Proglib.academy продолжает розыгрыш MacBook Pro 14» (M3 Pro, 36 Гб, 1 Тб SSD). Что нужно для
💻 ВАЖНО: макбук ещё не забрали! Proglib.academy продолжает розыгрыш MacBook Pro 14» (M3 Pro, 36 Гб, 1 Тб SSD). Что нужно для участия? — Берёшь любой курс Академии до 15 ноября. — Проходишь хотя бы 2 недели обучения (можно за два дня). — Пишешь куратору #розыгрыш. Всё — ты в игре! Что за курсы? ▫️Алгоритмы и структуры данных — если хочешь готовиться к собесам в Яндекс, FAANG и не сидеть на джуне вечно. ▫️Архитектуры и шаблоны проектирования — учат думать как senior, а не просто писать код. ▫️ Python, математика для DS, основы IT и другие темы — можно стартовать с нуля или усилить то, что уже знаешь. 👉 Влетай, не думай!

❓ Накидайте плюсиков лучшему контенту недели
Anonymous voting

📰 Дайджест недели Вспоминаем что произошло за последние три рабочих дня и четыре выходных — Релиз SQLite 3.51.0 В новой верс
📰 Дайджест недели Вспоминаем что произошло за последние три рабочих дня и четыре выходных — Релиз SQLite 3.51.0 В новой версии SQLite оптимизирована работа с запросами, расширена поддержка SQL и исправлены критичные ошибки. — Управление доступом в .NETDemystifierДорожная карта Visual StudioСкоро .NET Conf 2025 🐸Библиотека шарписта #async_news

👨‍💻 IOptions vs IOptionsSnapshot vs IOptionsMonitor В .NET существует несколько интерфейсов для работы с настройками: IOptions, IOptionsSnapshot и IOptionsMonitor. Помогаем разобраться, какой из них когда нужен. IOptions — загружает конфигурацию однажды при запуске и всегда возвращает одно и то же значение:
public class MyService
{
    private readonly MySettings _settings;

    public MyService(IOptions<MySettings> options)
    {
        _settings = options.Value;
    }

    public void PrintSettings()
    {
        Console.WriteLine($"API Key: {_settings.ApiKey}");
    }
}
Это подходит для статичных настроек, которые не меняются во время работы приложения. IOptionsSnapshot — создаётся на каждый запрос или скоуп и предоставляет новые значения при каждом новом запросе:
public class MyScopedService
{
    private readonly MySettings _settings;

    public MyScopedService(IOptionsSnapshot<MySettings> options)
    {
        _settings = options.Value;
    }

    public void PrintSettings()
    {
        Console.WriteLine($"Timeout: {_settings.Timeout}");
    }
}
Подходит для веб-приложений, где конфигурация может меняться между запросами. IOptionsMonitor — позволяет подписаться на изменения и получать обновления конфигурации в реальном времени:
public class MyMonitorService
{
    private MySettings _settings;

    public MyMonitorService(IOptionsMonitor<MySettings> monitor)
    {
        _settings = monitor.CurrentValue;
        monitor.OnChange(updatedSettings =>
        {
            _settings = updatedSettings;
            Console.WriteLine("Settings updated!");
        });
    }

    public void PrintSettings()
    {
        Console.WriteLine($"LogLevel: {_settings.LogLevel}");
    }
}
Подходит для длительно работающих приложений, которые должны реагировать на изменения конфигурации без перезапуска. 🐸Библиотека шарписта #sharp_view

Что-то неладное.. 🐸Библиотека шарписта #garbage_collector
Что-то неладное.. 🐸Библиотека шарписта #garbage_collector