Библиотека шарписта | C#, F#, .NET, ASP.NET
Все самое полезное для 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) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
Ещё одна особенность — Background GC. Во время сборки старших поколений он позволяет сократить длительные паузы, выполняя значительную часть работы параллельно с приложением.Server GC настраивается через свойство ServerGarbageCollection, хотя многие серверные шаблоны уже используют его по умолчанию. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #il_люминатор
Сам оператор FullJoin появился в .NET 11 раньше, но сначала работал только для LINQ to Objects. Теперь EF Core умеет преобразовывать его в FULL OUTER JOIN для реляционных провайдеров, которые поддерживают этот оператор.Это удобно для задач, где нужно сохранить все строки из обеих таблиц, включая несовпавшие: поиск расхождений, сверка данных, объединение нескольких источников или построение отчётов. Раньше такие запросы часто приходилось собирать вручную из нескольких JOIN и UNION либо писать сырой SQL. ⚠️ Пока это часть .NET 11 Preview 6. До финального релиза в ноябре поведение ещё может измениться. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #async_news
Один из таких методов — это WebAssembly. Эта технология позволяет компилировать .NET-код в байткод, который выполняется в браузере. Однако WebAssembly не поддерживает все возможности .NET, а настройка может быть сложной. Если нужна большая гибкость, можно использовать JavaScript Interop. Этот подход позволяет обмениваться данными между JavaScript и .NET, что дает возможность интегрировать их в одно приложение.Это решение для тех, кто хочет сохранить существующий JavaScript-код, но при этом использовать возможности .NET в клиентской части. Также можно использовать инструменты вроде Mono и CoreRT для компиляции .NET-приложений в WebAssembly, или платформы, такие как Ooui и Uno Platform, которые упрощают перенос .NET-кода в браузер. ➡️ Подробнее про запуск с WebAssembly можно почитать в статье 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #il_люминатор
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Главное правило — не блокируйте потоки пула. Когда код вызывает .Result или .Wait() для незавершённой задачи, поток простаивает, но остаётся занятым. Если таких потоков становится много, возникает голодание пула (ThreadPool starvation): новые задачи ждут свободных потоков, а приложение начинает «подвисать».Пул умеет создавать новые потоки, но делает это постепенно, чтобы не тратить ресурсы впустую. Поэтому большое количество блокирующих вызовов особенно болезненно. 💡 Используйте await вместо .Result и .Wait(), а длительную блокирующую работу не держите на потоках пула. Это поможет избежать голодания и сохранить отзывчивость приложения. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #il_люминатор
В .NET 7 появился атрибут [GeneratedRegex]. Достаточно объявить частичный метод, а генератор исходного кода создаст реализацию ещё на этапе сборки.Если шаблон известен заранее и используется регулярно, выбирайте [GeneratedRegex]. Если регулярное выражение приходит от пользователя или из конфигурации во время работы программы — остаётся обычный Regex. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #sharp_view
Одни мокают почти всё вокруг проверяемого класса. Такие тесты быстрые, изолированные и падают только из-за логики самого кода.
Другие предпочитают реальные зависимости: базу в контейнере, настоящие сервисы и интеграционные сценарии. Да, такие тесты медленнее, зато они лучше показывают, как код ведёт себя в реальных условиях.На практике многие выбирают компромисс: внешние API и нестабильные сервисы мокают, а свои компоненты стараются тестировать вместе. 💬 А как у вас? 👍 — максимум моков, главное скорость и изоляция. 🔥 — минимум моков, лучше реальные зависимости. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #entry_point
В итоге станет понятнее, сколько ресурсов выделять на запуск, когда его останавливать и в какой момент лучше изменить подход 🔍До 31 июля курс можно купить со скидкой, а все материалы останутся в бессрочном доступе. 🔗 Узнать подробности о курсе 🏃♀️ Proglib Academy
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Впереди 7 недель работы со своим репозиторием. Вебинары проходят вживую и остаются в записи.Стартуем 31 августа. До конца июля можно присоединиться по ранней цене, а доступ к материалам останется бессрочным 😀 🔗 Посмотреть, что будет на курсе 🏃♀️ Proglib Academy
Но есть и цена: каждое изменение — это новая аллокация. Поэтому для сборки текста в циклах используют StringBuilder, а не +.🔜 Ещё одна особенность — интернирование строк. CLR хранит пул уникальных строк, поэтому одинаковые строковые литералы обычно ссылаются на один объект. Строки, созданные во время выполнения программы, в этот пул автоматически не попадают, но их можно добавить через string.Intern(). StringBuilder помогает избежать лишних аллокаций, а интернирование стоит использовать только там, где действительно много повторяющихся строк. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #il_люминатор
