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

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

Open in Telegram

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

Show more

📈 Analytical overview of Telegram channel Библиотека шарписта | C#, F#, .NET, ASP.NET

Channel Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) in the Russian language segment is an active participant. Currently, the community unites 21 701 subscribers, ranking 5 943 in the Technologies & Applications category and 30 267 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 21 701 subscribers.

According to the latest data from 29 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -48 over the last 30 days and by -6 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 16.72%. Within the first 24 hours after publication, content typically collects 7.84% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 3 628 views. Within the first day, a publication typically gains 1 702 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 23.
  • Thematic interests: Content is focused on key topics such as .net, шарписта, навигация, await, string.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

Thanks to the high frequency of updates (latest data received on 30 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

21 701
Subscribers
-624 hours
-57 days
-4830 days
Posts Archive
🧑‍💻 Новые возможности модификаторов доступа на авто-свойствах в F# 10 До F# 10, чтобы создать свойство с публичным геттером и приватным сеттером, приходилось писать много кода с явным объявлением полей и методов. Теперь это стало проще — можно задавать разные уровни доступа прямо на авто-свойствах. Раньше подобное требовало большого количества шаблонного кода:
type Ledger() =
    [<DefaultValue>] val mutable private _Balance: decimal
    member this.Balance with public get() = this._Balance and private set v = this._Balance <- v
В F# 10 достаточно написать:
type Ledger() =
    member val Balance = 0m with public get, private set
Особенности • Модификатор доступа можно назначить либо на всё свойство, либо отдельно на геттер или сеттер. • В сигнатурах .fsi это пока не поддерживается, ограничения остаются Теперь можно писать меньше шаблонного кода, сохраняя чёткое разграничение прав собственности. 🔹 ML для старта в Data Science 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸 Библиотека шарписта #sharp_view

😊 Модернизация .NET приложений с GitHub Copilot Обновление устаревших .NET приложений часто превращается в мучительный проце
😊 Модернизация .NET приложений с GitHub Copilot Обновление устаревших .NET приложений часто превращается в мучительный процесс с долгими исправлениями и конфликтами зависимостей. С GitHub Copilot модернизация стала проще и быстрее — этот инструмент помогает автоматизировать всё главное, сокращая время работы с недель до нескольких часов. Как начать модернизацию 1. Откройте проект или решение в Visual 2. Запустите агент-сессию: через контекстное меню Modernize или в GitHub Copilot Chat используя команду @modernize 3. Выберите путь модернизации: обновление версии .NET, миграция в Azure или другие опции 4. Проведите оценку и спланируйте • Copilot анализирует код и зависимости • Задаёт вопросы для настройки плана под ваши цели • Генерирует Markdown-план модернизации для согласования и редактирования Как проходит обновление • После утверждения плана Copilot обновляет файлы, корректирует импорты и синтаксис автоматически • Циклично исправляет ошибки сборки и запускает тесты для обеспечения стабильности • Каждый крупный шаг фиксируется в Git с возможностью отката • В случае сложных проблем, Copilot останавливается и запрашивает ваш ввод ➡️ Источник 🔹 Специалист по ИИ 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸 Библиотека шарписта #sharp_view

📊 А правда, что математика в Data Science не нужна? Нет. Без неё вы не пройдёте собес и не поймёте, почему модель ведёт себя
📊 А правда, что математика в Data Science не нужна? Нет. Без неё вы не пройдёте собес и не поймёте, почему модель ведёт себя странно. Линал, матан и вероятности — это база, без которой работа в ML превращается в угадайку. 🔥 Эту базу можно собрать за 2 месяца на экспресс-курсе «Математика для Data Science». 👩‍🏫 Кто ведёт курс:Мария Тихонова PhD, руководитель исследовательского направления в SberAI, доцент ВШЭ. → Диана Миронидис Преподаватель ВШЭ, автор научпоп-материалов по математике для блога МТС. → Ксения Кондаурова Преподаватель преподаватель T-Банка, автор курсов ЦУ и Edutoria. → Маргарита Бурова Академический руководитель программ по аналитике и ML, Wildberries & Russ. 🎁 Что сейчас доступно: → бесплатный тест, чтобы узнать свой уровень математики; → скидка 40% до 30 ноября; → если оплатить до конца ноября, курс «Базовая математика» в подарок. 👉 Пишите менеджеру, если хотите попасть в поток

✏️ Null-условное присваивание В обыденной работе с объектами часто приходится проверять, не равен ли объект null, прежде чем присваивать значение его свойствам. Это приводит к громоздким конструкциям с множеством if. Теперь с null-условным присваиванием можно написать проще и понятнее. Операторы условного доступа ?. и ?[] теперь поддерживают использование слева от оператора присваивания. Раньше для безопасного присваивания требовалось писать так:
if (customer is not null)
{
    customer.Order = GetCurrentOrder();
}
С null-условным присваиванием можно упростить до одной строки:
customer?.Order = GetCurrentOrder();
Особенность в том, что правая часть вычисляется только если левая часть не равна null. Если customer равен null, метод GetCurrentOrder() вызван не будет. Это оптимизирует производительность и упрощает логику. Также это работает с составными операторами присваивания: +=, -=, *=, но не поддерживается для инкремента и декремента.
customer?.Total += 100;
// Но нельзя так:
// customer?.Total++;
🐸Библиотека шарписта #il_люминатор

👨‍💻 Какой канал ваш любимый Библиотека — не единственный канал по экосистеме C# (удивительно!). В комментариях можете подел
👨‍💻 Какой канал ваш любимый Библиотека — не единственный канал по экосистеме C# (удивительно!). В комментариях можете поделиться своими авторскими каналами или ресурсами и источниками, которыми вдохновляетесь при разработке. 🐸Библиотека шарписта #entry_point

🎆 Скоро Новый Год Если уже считаете дни до Нового Года «+» в чат, а пока вспомним прошедшую неделю. — Перестраиваем процесс
🎆 Скоро Новый Год Если уже считаете дни до Нового Года «+» в чат, а пока вспомним прошедшую неделю. — Перестраиваем процесс сборки и доставки .NET Проект Unified Build меняет подход к созданию и выпуску .NET, делая сборку быстрее, проще и более предсказуемой за счет объединения исходников и управления кодом в едином виртуальном репозитории. — Исходный код Zork I, II и III стал открытым Microsoft открыла исходники легендарных текстовых игр Zork. — В блокноте на Windows 11 появятся таблицыWindows Edge Light в PowerToysGit 2.52 🔸 Математика для Data Science 🔸 Получить консультацию менеджера 🔸 Сайт Академии 🔸 Сайт Proglib 🐸Библиотека шарписта #async_news

🛠 Как создать путь к временному файлу в C# В C# для работы с путями к файлам существует класс Path, который предлагает метод
🛠 Как создать путь к временному файлу в C# В C# для работы с путями к файлам существует класс Path, который предлагает методы для объединения частей путей и получения системных директорий. Один из таких методов — GetTempPath(). Он возвращает путь к папке, предназначенной для временных файлов на текущей системе. Другой полезный метод — Combine(). Он соединяет несколько частей пути, учитывая особенности слэшей в Windows, Linux и macOS. Вместо ручного склеивания строк и риска ошибок, Combine() гарантирует правильный формат. Пример:
using System;
using System.IO;

class Program
{
    static void Main()
    {
        // Получаем путь к системной временной папке и добавляем имя файла
        var path = Path.Combine(Path.GetTempPath(), "report.csv");
        Console.WriteLine("Путь к временному файлу: " + path);

        // Здесь можно сохранить файл, открыть или выполнить другие операции
    }
}
Использование Path.GetTempPath() и Path.Combine() — простой способ получить корректный путь к временному файлу без ошибок и с учётом особенностей операционных систем. 🔸 Основы IT для непрограммистов 🔸 Получить консультацию менеджера 🔸 Сайт Академии 🔸 Сайт Proglib 🐸Библиотека шарписта #il_люминатор

⭐️ Пост-квантовая криптография в .NET 10 релизе .NET 10 Microsoft активно внедряет поддержку алгоритмов PQC, чтобы обеспечить
⭐️ Пост-квантовая криптография в .NET 10 релизе .NET 10 Microsoft активно внедряет поддержку алгоритмов PQC, чтобы обеспечить будущее безопасных приложений уже сегодня. Термин «пост» в PQC не означает, что квантовые компьютеры уже здесь. Это про алгоритмы, которые будут устойчивы к атакам со стороны мощных квантовых вычислительных систем, которые могут создать угрозу традиционным методам шифрования, таким как RSA и ECC. В .NET 10 представлены четыре ключевых алгоритма PQC с поддержкой стандартов NIST и IETF: • ML-KEM — алгоритм для захвата ключа, поддерживаемый NIST FIPS 203, класс MLKem в .NET • ML-DSA — алгоритм цифровой подписи, поддерживаемый NIST FIPS 204, класс MLDsa в .NET • SLH-DSA — алгоритм цифровой подписи, поддерживаемый NIST FIPS 205, класс SlhDsa в .NET • Composite ML-DSA — композитный алгоритм цифровой подписи, поддерживаемый IETF Draft, класс CompositeMLDsa в .NET Переход на PQC заставил переосмыслить архитектуру криптографических классов. Старый базовый класс AsymmetricAlgorithm не соответствовал современным требованиям, например, свойство KeySize стало менее уместным для новых алгоритмов. 🔹 Экспресс-курс «Математика для Data Science» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸Библиотека шарписта #sharp_view

👨‍💻 Когда нужна стабильность, а не спешка Представьте фоновую задачу, которая должна срабатывать каждые 5 секунд: проверка очереди, синхронизация данных, отправка метрик. Можно, конечно, использовать Task.Delay, но это хрупко — если одна итерация длится дольше, чем ожидалось, ритм собьётся. PeriodicTimer решает эту проблему иначе:
var timer = new PeriodicTimer(TimeSpan.FromSeconds(5));
Создаём таймер, который будет срабатывать каждые 5 секунд. Точка отсчёта — момент создания.
while (await timer.WaitForNextTickAsync(ct))
{
    await DoWork(ct);
}
WaitForNextTickAsync ждёт следующего тика таймера. Когда он приходит — выполняем работу. Если работа заняла 1 секунду, следующий тик всё равно придёт через 5 секунд от начала цикла, а не через 6. Это стабильный интервал, а не интервал между завершением одной работы и началом другой. 🔹 Практический интенсив «Архитектуры и шаблоны проектирования» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸Библиотека шарписта #il_люминатор

🎉 Большая распродажа Proglib Academy — минус 40% на всё! 📚 Выбирай свой курс: ▫️ «Экспресс-курс по математике для DS» — пол
🎉 Большая распродажа Proglib Academy — минус 40% на всё! 📚 Выбирай свой курс: ▫️ «Экспресс-курс по математике для DS» — получи фундамент для построения успешной карьеры в Data Science ▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными; ▫️ «Основы Python» — чтобы начать писать код с нуля; ▫️ «Алгоритмы и структуры данных» — для будущих инженеров; ▫️ «Специалист по ИИ» или «AI-агенты», или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ. ▫️ «Архитектуры и шаблоны проектирования» — чтобы писать гибкий, масштабируемый код как мидл+ разработчик. ▫️ «Основы IT для непрограммистов» — для тех, кто хочет понимать, как устроены технологии, не будучи разработчиком. 🎁 Бонусы ноября: ▫️ Розыгрыш MacBook Pro 14 — купи любой курс и пройди 2 недели обучения до 30 ноября. ▫️ Бесплатный тест по математике — за 5 минут покажет, какие темы стоит подтянуть перед DS. 👉 Выбрать курс со скидкой

📎 Частичные события и конструкторы Новый уровень модульности в больших проектах: делим объявление и реализацию. Большие проекты требуют таких гибких способов организации кода. В C# теперь можно объявлять события и конструкторы с модификатором partial. Это значит, что объявление может находиться в одном месте, а его реализация — в другом, обычно в другом файле:
public partial class MyClass
{
    partial void OnInitialized();

    public MyClass()
    {
        OnInitialized();
    }
}
Здесь объявлена частичная функция OnInitialized() без тела — её реализация может появиться отдельно. Также конструктор вызывает эту функцию, если она реализована. Частичные конструкторы поддерживают совместимость с платформами, использующими генерацию кода. 🐸Библиотека шарписта #il_люминатор

🧑‍💻 Контролируем параллельную работу Представьте ситуацию: у вас есть 1000 элементов для обработки, и вы хотите запустить это параллельно. Но если просто запустить все одновременно, приложение упадёт — будет слишком много одновременных подключений к БД, API или файловой системе. Здесь помогает SemaphoreSlim. Как это работает Создаём семафор с лимитом 4. Это значит, что максимум 4 потока могут находиться внутри защищённого блока одновременно.
await gate.WaitAsync(ct);
Поток ждёт в очереди, пока не появится "место". Если уже 4 потока внутри — новичок подождёт:
await gate.WaitAsync(ct);
После обработки обязательно вызываем Release() — это освобождает место для следующего потока. finally гарантирует, что это произойдёт даже если операция упадёт:
try { await Process(x, ct); }
finally { gate.Release(); }
Вместо 100 одновременных загрузок будет ровно столько, сколько вы укажете. 🔹 Алгоритмы и структуры данных 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸Библиотека шарписта #il_люминатор

⚡️ Директивы #warnon и #nowarn в F# В предыдущих версиях F# часто возникала проблема — как избавиться от мешающих предупрежде
⚡️ Директивы #warnon и #nowarn в F# В предыдущих версиях F# часто возникала проблема — как избавиться от мешающих предупреждений без потери важной информации по всему файлу. С выходом F# 10 в язык добавлены новые директивы #warnon и #nowarn, которые позволяют точно управлять уровнем сообщений о предупреждениях внутри конкретных участков кода. Что такое #warnon и #nowarn Это специальные директивы, которые позволяют включать или отключать предупреждения на уровне отдельных блоков кода. Теперь можно не отключать все предупреждения сразу, а подавлять или включать их только там, где действительно нужно — прямо внутри файла или скрипта. Как это работает на практике:
#nowarn 25

let f (Some a) = 
    // тут предупреждение FS0025 отключено
    ...

#warnon 25
// здесь предупреждение активировано снова
Теперь предупреждение FS0025 отключено только в этом участке и не влияет на остальной код. 🔹 Практический интенсив «Архитектуры и шаблоны проектирования» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸 Библиотека шарписта #sharp_view

🤖 AI сейчас на пике — и математика снова в центре внимания.
«На конференции AIJ только и разговоров, что о AI и математике. Ведь в основе генеративных моделей Gen AI лежит фундаментальная математика.»
Одна из топовых экспертов, кто сегодня участвует на AIJ, преподаёт у нас. Мария Тихонова — PhD по Computer Science, руководитель направления в SberAI и доцент ВШЭ. Она работает с LLM каждый день и объясняет математику так, как она реально применяется в AI. 🔥 Экспресс-курс «Математика для DS» — 8 недель, чтобы закрыть пробелы и уверенно проходить собесы. 🎁 До 30 ноября: → скидка 40% → курс «Школьная математика» в подарок при оплате → бесплатный тест на знание основ математики 👉 Записаться на курс

Video message00:42

🤩 Модификаторы параметров в лямбдах С# 14 упрощает определение лямбда-выражений с модификаторами, без лишних повторений. Теперь можно использовать ref, out, in и другие модификаторы в параметрах лямбд без обязательного указания типа:
delegate bool TryParse<T>(string text, out T result);
TryParse<int> parse = (text, out result) => int.TryParse(text, out result);
Ранее можно было добавлять модификаторы к параметрам лямбда-выражений только при условии, что для всех параметров явно указывались типы. 🐸Библиотека шарписта #sharp_view

⚡️ ConfigureAwait(false) — зачем это нужно Вы пишете библиотеку на C#, используете async/await, и всё работает. Но потом ваша библиотека попадает в веб-приложение, мобильное приложение, или какой-то другой контекст — и начинаются странные deadlock'и или даже зависания. Проблема вот в чём: когда код выходит из await, он хочет продолжить выполнение в том же контексте, в котором был запущен. Если это UI-приложение, контекст одноточечный — только главный поток может работать с UI. Если ваша библиотека захватит этот контекст и не отпустит — приложение зависнет. А если написали синхронный код, который вызывает async библиотеку, и она захватит контекст — будет deadlock. ConfigureAwait(false) как раз говорит: «Мне вообще всё равно, в каком контексте продолжать. Возьми любой поток из thread pool'а«. И вот это спасает приложения от проблем:
await stream.WriteAsync(buffer, ct).ConfigureAwait(false);
Результат: библиотека не блокирует контекст, не создаёт deadlock'и, работает везде одинаково. Когда НЕ нужен ConfigureAwait(false): В приложениях можно писать без него, если вам нужен контекст:
// В ASP.NET контроллере — можно без ConfigureAwait(false)
[HttpGet]
public async Task<IActionResult> GetData()
{
    var data = await service.GetDataAsync(); // Контекст нужен для логирования, etc
    return Ok(data);
}

// В UI приложении — нужен контекст
private async void Button_Click(object sender, EventArgs e)
{
    var data = await LoadDataAsync(); // Нужно вернуться в UI поток
    UpdateUI(data);
}
🐸Библиотека шарписта #il_люминатор

Реактивное программирование в C# Advanced: сложные операторы, обработка ошибок и холодные/горячие Observable Асинхронность в
Реактивное программирование в C# Advanced: сложные операторы, обработка ошибок и холодные/горячие Observable Асинхронность в C# может быть простой, если знать, как с ней работать правильно. На открытом вебинаре курса OTUS C# Developer. Advanced Елена Сычева покажет, как реактивное программирование помогает избавиться от Callback Hell и писать код, который сам реагирует на данные и события. → 26 ноября, 20:00 Реактивное программирование в C# Advanced — продвинутые операторы Rx.NET: Switch, GroupBy, Buffer, Throttle — устойчивые к сбоям системы: Catch, Retry, Finally — холодные и горячие Observable: Publish, Replay, RefCount — управление подписками и жизненным циклом реактивных компонентов Вебинар будет полезен разработчикам на C#, работающим с асинхронным кодом, потоками данных и событиями. Участники узнают, как проектировать реактивные системы, способные восстанавливаться после ошибок, и писать декларативный, читаемый и эффективный код. → Зарегистрируйтесь: https://clc.to/U2plGA Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🤓 Что нового в Git 2.52 В Git 2.52 появились полезные новинки для повседневной работы и поддержки больших репозиториев. Кома
🤓 Что нового в Git 2.52 В Git 2.52 появились полезные новинки для повседневной работы и поддержки больших репозиториев. Команда внедрила новую команду git last-modified, с помощью которой теперь можно быстро увидеть, какие коммиты последними изменяли каждый файл в папке. Для тех, кто заботится о здоровье репозиториев, git maintenance получил новый режим geometric, который экономит время при репаках. Ещё одна заметная особенность — экспериментальная команда git repo, которая помогает получать разную информацию о репозитории, например, сколько в нём веток или тегов. ➡️ Анонс обновления 🐸Библиотека шарписта #async_news