ar
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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Библиотека шарписта | 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 أيام
أرشيف المشاركات
📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #garbage_collector
📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #garbage_collector

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

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

Какая концепция 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#

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

😎 Новый тип 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