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 699 名订阅者,在 技术与应用 类别中位列第 5 999,并在 俄罗斯 地区排名第 30 489

📊 受众指标与增长动态

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

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

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

📝 描述与内容策略

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

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

21 699
订阅者
-824 小时
-267
-5130
帖子存档
Server GC или Workstation GC. Что выбрать? В .NET сборщик мусора работает в двух режимах, и выбор между ними влияет на производительность приложения. Workstation GC рассчитан на клиентские приложения. Он экономнее расходует память и старается не занимать все доступные ядра. ➡️ Server GC ориентирован на высокую нагрузку. Он использует несколько управляемых куч и потоков GC, что позволяет эффективнее справляться с большим количеством аллокаций на многоядерных машинах. Цена — более высокое потребление памяти.
Ещё одна особенность — Background GC. Во время сборки старших поколений он позволяет сократить длительные паузы, выполняя значительную часть работы параллельно с приложением.
Server GC настраивается через свойство ServerGarbageCollection, хотя многие серверные шаблоны уже используют его по умолчанию. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #il_люминатор

💡 EF Core научился переводить FullJoin в FULL OUTER JOIN В .NET 11 Preview 6 EF Core получил поддержку трансляции нового LIN
💡 EF Core научился переводить FullJoin в FULL OUTER JOIN В .NET 11 Preview 6 EF Core получил поддержку трансляции нового LINQ-оператора FullJoin в SQL. Теперь запросы могут выполняться целиком на стороне базы данных, без ручных обходных решений.
Сам оператор FullJoin появился в .NET 11 раньше, но сначала работал только для LINQ to Objects. Теперь EF Core умеет преобразовывать его в FULL OUTER JOIN для реляционных провайдеров, которые поддерживают этот оператор.
Это удобно для задач, где нужно сохранить все строки из обеих таблиц, включая несовпавшие: поиск расхождений, сверка данных, объединение нескольких источников или построение отчётов. Раньше такие запросы часто приходилось собирать вручную из нескольких JOIN и UNION либо писать сырой SQL. ⚠️ Пока это часть .NET 11 Preview 6. До финального релиза в ноябре поведение ещё может измениться. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #async_news

🧑‍💻 Сёрфить .NET без Blazor Можно ли запустить .NET-приложение в браузере без Blazor? Да, существуют несколько альтернативн
🧑‍💻 Сёрфить .NET без Blazor Можно ли запустить .NET-приложение в браузере без Blazor? Да, существуют несколько альтернативных методов, которые могут подойти для различных проектов.
Один из таких методов — это WebAssembly. Эта технология позволяет компилировать .NET-код в байткод, который выполняется в браузере. Однако WebAssembly не поддерживает все возможности .NET, а настройка может быть сложной. Если нужна большая гибкость, можно использовать JavaScript Interop. Этот подход позволяет обмениваться данными между JavaScript и .NET, что дает возможность интегрировать их в одно приложение.
Это решение для тех, кто хочет сохранить существующий JavaScript-код, но при этом использовать возможности .NET в клиентской части. Также можно использовать инструменты вроде Mono и CoreRT для компиляции .NET-приложений в WebAssembly, или платформы, такие как Ooui и Uno Platform, которые упрощают перенос .NET-кода в браузер. ➡️ Подробнее про запуск с WebAssembly можно почитать в статье 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #il_люминатор

🚀 Анализ изменений с git log Команда git log позволяет понять, как эволюционировал код — просмотреть последовательность комм
🚀 Анализ изменений с git log Команда git log позволяет понять, как эволюционировал код — просмотреть последовательность коммитов и метаданные. Просмотр истории:

git log
История коммитов построчно:

git log --oneline
Граф веток + метки (ветки, теги) для всех веток:

git log --graph --decorate --all
Показать diff последних двух коммитов:

git log -p -2
Коммиты за последние 2 недели от указанного автора:

git log --since="2 weeks ago" --author="ProgLib»
Настраиваемый формат: короткий хеш, дата, сообщение, автор:

git log --pretty=format:"%h %ad | %s%d [%an]" --date=short
💬 Вы смотрите историю log'ом или используете сторонние инструменты? 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #sharp_view

Какая концепция C# позволяет объекту принимать различные формы и, следовательно, отображать соответствующее поведение? 👾 — Полиморфизм 👍 — Инкапусляция 🥰 — Абстракция ⚡️ — Ничего из вышеперечисленного Библиотека задач по C#

Как устроен пул потоков и почему его нельзя блокировать Большая часть CPU-bound работы и продолжений после await в .NET выполняется на потоках из ThreadPool. Именно поэтому проблемы с производительностью часто начинаются здесь. ➡️ Пул хранит набор рабочих потоков и несколько очередей задач. У каждого потока есть своя локальная очередь, а также существует общая. Если поток остаётся без работы, он может забирать задачи из очередей других потоков. Этот механизм называется work stealing и помогает равномерно загружать все ядра.
Главное правило — не блокируйте потоки пула. Когда код вызывает .Result или .Wait() для незавершённой задачи, поток простаивает, но остаётся занятым. Если таких потоков становится много, возникает голодание пула (ThreadPool starvation): новые задачи ждут свободных потоков, а приложение начинает «подвисать».
Пул умеет создавать новые потоки, но делает это постепенно, чтобы не тратить ресурсы впустую. Поэтому большое количество блокирующих вызовов особенно болезненно. 💡 Используйте await вместо .Result и .Wait(), а длительную блокирующую работу не держите на потоках пула. Это поможет избежать голодания и сохранить отзывчивость приложения. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #il_люминатор

💡 Компилируйте регулярки заранее Обычный new Regex("...") разбирает шаблон при первом использовании уже во время работы прог
💡 Компилируйте регулярки заранее Обычный new Regex("...") разбирает шаблон при первом использовании уже во время работы программы. Если регулярное выражение используется часто, это лишние накладные расходы, а ошибки в шаблоне обнаружатся только в рантайме.
В .NET 7 появился атрибут [GeneratedRegex]. Достаточно объявить частичный метод, а генератор исходного кода создаст реализацию ещё на этапе сборки.
Если шаблон известен заранее и используется регулярно, выбирайте [GeneratedRegex]. Если регулярное выражение приходит от пользователя или из конфигурации во время работы программы — остаётся обычный Regex. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #sharp_view

😑 Мокать зависимости или тестировать на настоящих? Один из главных споров в тестировании.
Одни мокают почти всё вокруг проверяемого класса. Такие тесты быстрые, изолированные и падают только из-за логики самого кода.
Другие предпочитают реальные зависимости: базу в контейнере, настоящие сервисы и интеграционные сценарии. Да, такие тесты медленнее, зато они лучше показывают, как код ведёт себя в реальных условиях.
На практике многие выбирают компромисс: внешние API и нестабильные сервисы мокают, а свои компоненты стараются тестировать вместе. 💬 А как у вас? 👍 — максимум моков, главное скорость и изоляция. 🔥 — минимум моков, лучше реальные зависимости. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #entry_point

😱 Знакомо? Лимит уже закончился, а задача всё ещё не готова. Часть токенов могла уйти на повторное чтение файлов, лишний кон
😱 Знакомо? Лимит уже закончился, а задача всё ещё не готова. Часть токенов могла уйти на повторное чтение файлов, лишний контекст и неудачные попытки. ⚡️ Этому посвящён отдельный блок курса «ИИ для разработчиков». Вы разберёте расходы на собственных проектах, сравните подходы и найдёте места, где агент выполняет лишнюю работу.
В итоге станет понятнее, сколько ресурсов выделять на запуск, когда его останавливать и в какой момент лучше изменить подход 🔍
До 31 июля курс можно купить со скидкой, а все материалы останутся в бессрочном доступе. 🔗 Узнать подробности о курсе 🏃‍♀️ Proglib Academy

Самая дорогая часть агентной разработки — не всегда код 🥳

Какой из следующих методов используется для реализации наследования в C#? 👾 — class Derived : Base 👍 — class Derived inherits Base 🥰 — class Derived extends Base ⚡️ — Ничего из вышеперечисленного Библиотека задач по C#

😎 Новый тип Lock в .NET 9. Пора забыть про object? В .NET 9 появился специальный тип System.Threading.Lock, созданный именно
😎 Новый тип Lock в .NET 9. Пора забыть про object? В .NET 9 появился специальный тип System.Threading.Lock, созданный именно для синхронизации.

private readonly Lock _sync = new();

public void Add(int x)
{
    lock (_sync)
    {
        _items.Add(x);
    }
}
Синтаксис lock не изменился, но компилятор распознаёт тип Lock и использует его напрямую, без перехода через Monitor. Это делает код более явным и позволяет снизить накладные расходы. При необходимости блокировку можно взять и без оператора lock:

using (_sync.EnterScope())
{
    _items.Add(x);
}
⚠️ Важно: не приводите Lock к object. В этом случае компилятор предупредит, а оператор lock снова будет работать через старый механизм на базе Monitor. Для нового кода System.Threading.Lock — рекомендуемый способ реализации взаимного исключения в .NET 9 и новее. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #sharp_view

😳 Documentation Driven Development звучит как ещё один модный термин. Пока не попробуешь объяснить свой проект AI. Агент раб
😳 Documentation Driven Development звучит как ещё один модный термин. Пока не попробуешь объяснить свой проект AI. Агент работает только с тем контекстом, который ему дали. Если документация неполная или устарела, он начинает додумывать — отсюда появляется неверный код. 🔘 На курсе «ИИ для разработчиков» эту тему разбирает Арсений Харланов. Он покажет, как подготовить документацию и контекст, чтобы агент понимал архитектуру проекта, ограничения и связи между компонентами. Также разберём, как выбирать модель под задачу: Claude, DeepSeek, Qwen и другие ✏️
Впереди 7 недель работы со своим репозиторием. Вебинары проходят вживую и остаются в записи.
Стартуем 31 августа. До конца июля можно присоединиться по ранней цене, а доступ к материалам останется бессрочным 😀 🔗 Посмотреть, что будет на курсе 🏃‍♀️ Proglib Academy

🦴 Хорошая документация сегодня экономит время не только коллегам, но и AI. Почему она стала важнее, чем кажется, — в посте ниже 👇

🎹 Почему строки в .NET неизменяемы и что такое интернирование string в .NET нельзя изменить. Любая конкатенация, замена или обрезка создаёт новый объект. Благодаря этому строки безопасно использовать из нескольких потоков, удобно хранить в качестве ключей словаря, а оператор == сравнивает их содержимое.
Но есть и цена: каждое изменение — это новая аллокация. Поэтому для сборки текста в циклах используют StringBuilder, а не +.
🔜 Ещё одна особенность — интернирование строк. CLR хранит пул уникальных строк, поэтому одинаковые строковые литералы обычно ссылаются на один объект. Строки, созданные во время выполнения программы, в этот пул автоматически не попадают, но их можно добавить через string.Intern(). StringBuilder помогает избежать лишних аллокаций, а интернирование стоит использовать только там, где действительно много повторяющихся строк. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #il_люминатор

Чем BackgroundService отличается от IHostedService? 👾 — Предназначен только для таймеров 👍 — Это базовый класс с циклом ExecuteAsync; IHostedService — лишь интерфейс Start/Stop без цикла 🥰 — Запускается только в Debug ⚡️ — Не поддерживает отмену CancellationToken Библиотека задач по C#

🤢 Чем больше разработчиков в команде начинают пользоваться Claude Code, тем заметнее одна проблема: кодовая база перестаёт в
🤢 Чем больше разработчиков в команде начинают пользоваться Claude Code, тем заметнее одна проблема: кодовая база перестаёт выглядеть как работа одной команды. Где-то есть тесты, где-то их забыли. Где-то агент следует архитектуре проекта, где-то предлагает решение, которое с ней не сочетается. ⚠️ И это не проблема Claude Code. Он просто следует тому контексту, который получает от каждого разработчика. Завтра покажем, как передать AI инженерный контекст команды и не превратить его внедрение в ещё один источник хаоса. 🗓 23 июля, 19:00 МСК Бесплатно. 60 минут доклада + 30 минут вопросов. 🔗 Занять место на вебинаре и разобраться, почему так происходит 🏃‍♀️ Proglib Academy