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

📊 受众指标与增长动态

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

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

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

📝 描述与内容策略

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

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

21 687
订阅者
-1224 小时
-177 天
-5630 天
帖子存档
Теперь разработчики смогут вести разработку с удобного устройства из любой локации Устали носить с собой тяжелые устройства д
Теперь разработчики смогут вести разработку с удобного устройства из любой локации Устали носить с собой тяжелые устройства для разработки? Можно про это забыть — разработчикам стала доступна российская облачная среда для разработки GigaIDE Cloud со встроенным AI-ассистентом. Среда позволит добавить мощности вашему устройству благодаря возможностям облака для хранения кода и выполнения тяжелых вычислений, редактировать репозитории мгновенно и не тратить время на настройку каждого нового проекта. В GigaIDE Cloud интегрирован AI-ассистент, который автоматизирует рутинные процессы, дает советы и подсказки в реальном времени. Пользуйтесь автодополнением кода, оптимизируйте и исправляйте ошибки с поддержкой AI! Начать пользоваться GigaIDE Cloud — по ссылке.

🌳 Бинарное дерево поиска (BST) BST — это бинарное дерево, где: • Значение в левой ветви меньше значения в узле. • Значение в
🌳 Бинарное дерево поиска (BST) BST — это бинарное дерево, где: • Значение в левой ветви меньше значения в узле. • Значение в правой ветви больше значения в узле. Такое свойство обеспечивает эффективный поиск, вставку и удаление — в среднем за O(log n). Пример реализации:
class Node
{
    public int Value;
    public Node Left;
    public Node Right;

    public Node(int value)
    {
        Value = value;
        Left = Right = null;
    }

    // Вставка нового значения в дерево
    public void Insert(int value)
    {
        if (value < Value)
        {
            if (Left == null)
                Left = new Node(value);
            else
                Left.Insert(value);
        }
        else if (value > Value)
        {
            if (Right == null)
                Right = new Node(value);
            else
                Right.Insert(value);
        }
    }

    // Поиск значения в дереве
    public Node Search(int value)
    {
        if (value == Value)
            return this;
        if (value < Value && Left != null)
            return Left.Search(value);
        if (value > Value && Right != null)
            return Right.Search(value);
        return null;
    }

    // Обход дерева в порядке (LNR - InOrder)
    public void InOrderTraversal()
    {
        if (Left != null)
            Left.InOrderTraversal();
        
        Console.Write(Value + " ");

        if (Right != null)
            Right.InOrderTraversal();
    }
}
Как это работает? 1️⃣ Вставка: • Если значение меньше текущего узла, идём в левое поддерево. • Если больше — в правое. • Если узел пуст, создаём новый. 2️⃣ Поиск: • Сравниваем искомое значение с текущим. • Меньше — идём влево, больше — вправо, равное — нашли. 3️⃣ Обход: • In-order обход (LNR) обходит узлы в отсортированном порядке. 💬 А вы уже реализовали BST? Делитесь опытом и вопросами в комментариях! 🐸Библиотека шарписта

🎙Месяц на тесты В обновлении .NET MAUI Community Toolkit от 17 января появилось офлайн-распознавание речи – теперь можно пре
🎙Месяц на тесты В обновлении .NET MAUI Community Toolkit от 17 января появилось офлайн-распознавание речи – теперь можно преобразовывать голос в текст без интернета на Android 33+ и iOS 13+. Также разработчики исправили работу StatusBar на iOS, улучшили CameraView, MediaElement и Maps. 💭 Если вы уже тестировали новые фичи, как впечатления? Делитесь в комментариях👇 🖇 Почитать про релиз 🐸Библиотека шарписта

🚃 Фоновые задачи с Quartz.NET Quartz — это открытая библиотека для планирования задач в .NET приложениях. Она позволяет разр
🚃 Фоновые задачи с Quartz.NET Quartz — это открытая библиотека для планирования задач в .NET приложениях. Она позволяет разработчикам выполнять фоновые задачи в определенное время или с заданными интервалами. Благодаря кластеризации, Quartz может выполнять задачи на нескольких серверах, что особенно важно для систем с высокой нагрузкой. Кроме того, он поддерживает хранение задач в базе данных. Вот так выглядит регистрация задачи с запуском каждые 10 секунд:
var jobKey = new JobKey("MyBackgroundJob");

builder.Services.AddQuartz(q =>
{
    q.AddJob<MyBackgroundJob>(opts => opts.WithIdentity(jobKey));

    q.AddTrigger(opts => opts
        .ForJob(jobKey)
        .WithIdentity("MyBackgroundJob-trigger")
        .WithSimpleSchedule(schedule => schedule
            .WithIntervalInSeconds(10)
            .RepeatForever()));
});
Пример cron-выражения — каждый день в 3 утра:
q.AddTrigger(opts => opts
    .ForJob(jobKey)
    .WithIdentity("DailyTrigger")
    .WithCronSchedule("0 0 3 * * ?"));
➡️ Подробности на сайте инструмента 🐸Библиотека шарписта

👉 Интенсив «Архитектуры и шаблоны проектирования» для middle и senior-разработчиков Проверьте свои знания, ответив на 8 вопр
👉 Интенсив «Архитектуры и шаблоны проектирования» для middle и senior-разработчиков Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/08af6203 🧐 Кому подойдет? Разработчикам, которые знают любой объектно-ориентированный язык программирования и хотят углубиться в архитектурные паттерны. 🎮 Как проходит обучение? В течение всего интенсива вы будете создавать игру «Звездные войны» и применять ключевые архитектурные паттерны. В процессе изучите: – Как строить гибкую архитектуру, которая не замедляет разработку – Как применять IoC-контейнеры и писать модульные тесты – Как использовать SOLID за пределами ООП – Как внедрять CI/CD и снижать технический долг 👉 Подробная программа обучения А по промокоду MIDDLE до 28 февраля вы получите дополнительную скидку на обучение

Документация PostgreSQL — лучший источник знаний о СУБД. Но она отличается огромным объемом: не каждый разработчик осилит 302
Документация PostgreSQL — лучший источник знаний о СУБД. Но она отличается огромным объемом: не каждый разработчик осилит 3024 страницы формата А4. Опытный бэкендер составил список самых важных сведений, которые ему самому хотелось бы знать перед началом работы с PostgreSQL. Эта подборка сэкономит вам несколько недель изучения документации, и скорее всего, пригодится для работы с другими СУБД. 👉 Список самого важного

🛡 Поздравляем героев C#-программирования: ▪️ LINQ — спецназовец по зачистке коллекций. Девиз: «Зачем писать 20 строк, когда
🛡 Поздравляем героев C#-программирования: ▪️ LINQ — спецназовец по зачистке коллекций. Девиз: «Зачем писать 20 строк, когда можно всё сделать в одну нечитаемую?» ▪️ async/await — командир отряда асинхронных операций. Спас целое поколение программистов от callback-ада. ▪️ garbage collector — главный санитар полка. Прибирается за всеми, но всегда в самый неподходящий момент. Под чьей защитой ваш код выживает в продакшене? Докладывайте в комментариях 👇

⚙️ Паттерн Saga в микросервисах Saga — это паттерн управления распределёнными транзакциями, который помогает сохранить целост
⚙️ Паттерн Saga в микросервисах Saga — это паттерн управления распределёнными транзакциями, который помогает сохранить целостность данных без монолитных блокировок и традиционных ACID-ограничений. Вместо единой транзакции мы разбиваем процесс на последовательность локальных операций, каждая из которых выполняется в отдельном сервисе. Два подхода к реализации 1️⃣ Оркестрация • Управляется централизованным координатором. • Каждый шаг транзакции выполняется только после получения команды от оркестратора. • Минус: если оркестратор падает, всё останавливается. • Плюс: понятный контроль за процессом, легче отлаживать. 2️⃣ Хореография • Нет центрального контроллера, сервисы реагируют на события друг друга. • Нет узкого места в виде оркестратора. • Минус: сложнее управлять, можно запутаться в каскаде событий. •Плюс: масштабируемость, нет единой точки отказа. Оркестрация проще в управлении, но менее гибкая. Хореография масштабируется лучше, но сложнее в отладке. ➡️ Подробнее про паттерн в источнике 🐸Библиотека шарписта

🌐 Avalonia UI — универсальный UI-фреймворк Avalonia UI — это открытый фреймворк для создания настольных, мобильных и встраив
🌐 Avalonia UI — универсальный UI-фреймворк Avalonia UI — это открытый фреймворк для создания настольных, мобильных и встраиваемых (IoT) приложений. Он поддерживает Windows, macOS, Linux, iOS, Android и даже WebAssembly. Почему Avalonia UI ➖ Совместимость с XAML – привычный синтаксис WPF, но с дополнительными возможностями, которые делают разработку удобнее. ➖ Native AOT — компиляция в нативный код делает приложения лёгкими, быстрыми и не требующими .NET Runtime. ➖ Малый размер приложений — без тяжёлых зависимостей, в отличие от Electron. ➖ Открытый исходный код — сообщество активно развивает фреймворк, исправляет ошибки и добавляет новые функции без привязки к корпорациям. ➖ Гибкость в разработке — легко интегрируется с различными архитектурными паттернами (MVVM, ReactiveUI) и сторонними библиотеками. ➖ Простота в развертывании — поддержка автономных исполняемых файлов, публикация без сложных зависимостей. ➖ Современные технологии — обновляется, развивается и адаптируется под нужды разработчиков, предлагая передовые решения для UI в .NET. ➡️ Документация по фреймворку 🐸Библиотека шарписта

🐳🔍 Как найти утечки памяти в контейнере с .NET Инструмент dotMemory от JetBrains помогает диагностировать и анализировать п
🐳🔍 Как найти утечки памяти в контейнере с .NET Инструмент dotMemory от JetBrains помогает диагностировать и анализировать потребление памяти в .NET-приложениях, даже если они работают в контейнерах. Как использовать dotMemory 1️⃣ Запускаем приложение в контейнере 2️⃣ Подключаемся через dotMemory dotMemory позволяет собирать дампы памяти прямо из работающего контейнера. Например, с помощью dotMemory CLT:
dotmemory start --save-to=memory_dump.dmp
3️⃣ Ищем утечки Используем dotMemory, чтобы определить: • Удерживаемые объекты . • Долгоживущие объекты, которые не очищаются сборщиком мусора. • Утечки, связанные с событиями и подписками. 💬 Боролись с утечками памяти в контейнерах? Какие инструменты использовали? Делитесь в комментариях ⬇️ ➡️ Подробности в статье 🐸Библиотека шарписта

👨‍💻 Microsoft анонсировала Chroma DB C# SDK Теперь разработчики на C# и .NET могут легко интегрировать Chroma DB в свои AI-
👨‍💻 Microsoft анонсировала Chroma DB C# SDK Теперь разработчики на C# и .NET могут легко интегрировать Chroma DB в свои AI-приложения — Microsoft анонсировала официальный SDK для работы с векторными базами данных. Что такое Chroma DB Chroma — это векторная база данных, предназначенная для поиска по эмбеддингам. Она используется в приложениях с искусственным интеллектом, аналитикой данных и RAG-моделями (Retrieval Augmented Generation). Как это использовать в C# 1. Добавляем Chroma в проект:
dotnet add package ChromaDB.Client
2. Подключаем Chroma в C#-коде:
using ChromaDB.Client;

var configOptions = new ChromaConfigurationOptions(uri: "http://localhost:8000/api/v1/");
using var httpClient = new HttpClient();
var client = new ChromaClient(configOptions, httpClient);
3. Создаём коллекцию и добавляем данные:
var collection = await client.GetOrCreateCollection("movies");
var collectionClient = new ChromaCollectionClient(collection, configOptions, httpClient);
Chroma DB C# SDK — ещё один шаг к тому, чтобы .NET-разработчики легко создавали мощные AI-приложения. ➡️ Подробнее в блоге разработчиков 🐸Библиотека шарписта

🚨 Ошибка GroupBy в Entity Framework 9 Ошибка возникает, когда после GroupBy выполняется сортировка: OrderBy, ThenBy и другие
🚨 Ошибка GroupBy в Entity Framework 9 Ошибка возникает, когда после GroupBy выполняется сортировка: OrderBy, ThenBy и другие. В EF9 обработка таких запросов изменилась, из-за чего неожиданно ломаются стандартные сценарии группировки. Пример проблемного кода:
var result = dbContext.Orders
    .GroupBy(o => o.CustomerId)
    .OrderBy(g => g.Key)
    .Select(g => new { CustomerId = g.Key, TotalOrders = g.Count() })
    .ToList();
Такой код работал в предыдущих версиях EF, но теперь выбрасывает исключение. ➖ Как исправить Можно принудительно выполнить запрос перед сортировкой, чтобы GroupBy обрабатывался в памяти:
var result = dbContext.Orders
    .GroupBy(o => o.CustomerId)
    .Select(g => new { CustomerId = g.Key, TotalOrders = g.Count() })
    .ToList() // Выполняем в памяти
    .OrderBy(g => g.CustomerId) // Теперь сортируем
    .ToList();
Ошибка, вероятнее всего, будет исправлена в Entity Framework 10. ➡️ Суть проблемы в оригинале 🐸Библиотека шарписта

🌳 LSM-дерево в C# LSM-дерево (Log-Structured Merge Tree) – одна из самых мощных структур для баз данных, кэширования и key-v
🌳 LSM-дерево в C# LSM-дерево (Log-Structured Merge Tree) – одна из самых мощных структур для баз данных, кэширования и key-value хранилищ. В отличие от B-деревьев, которые часто используются в реляционных БД, LSM-дерево отлично справляется с высоконагруженными системами благодаря журналированию и периодической компактификации данных. Как работает LSM-дерево 1️⃣ Запись идёт в память (MemTable) – все операции сначала попадают в быстрое RAM-хранилище. 2️⃣ Данные записываются в WAL (Write-Ahead Log) – чтобы не потерять их при сбое. 3️⃣ Сброс в SSTables (Sorted String Tables) – периодически MemTable записывается на диск. 4️⃣ Компактификация – старые файлы объединяются, а удалённые ключи стираются. Пример реализации в C#:
class LSMTree
{
    private SortedDictionary<string, string> memTable = new();
    private const string WAL_FILE = "wal.log";

    public LSMTree()
    {
        LoadFromWAL();
    }

    public void Put(string key, string value)
    {
        memTable[key] = value;
        File.AppendAllText(WAL_FILE, $"{key}:{value}\n");
    }

    public string Get(string key)
    {
        return memTable.TryGetValue(key, out var value) ? value : "Not found";
    }

    private void LoadFromWAL()
    {
        if (File.Exists(WAL_FILE))
        {
            foreach (var line in File.ReadAllLines(WAL_FILE))
            {
                var parts = line.Split(':');
                if (parts.Length == 2)
                    memTable[parts[0]] = parts[1];
            }
        }
    }
}
Где используется • NoSQL базы данных: LevelDB, RocksDB, Cassandra • Поисковые системы: Elasticsearch, Apache Lucene • Хранилища для логов и кэшей ➖ Преимущества LSM-дерева • Быстрая запись – все изменения сначала пишутся в память • Эффективное хранение – используется сжатие и компактификация • Масштабируемость – отлично работает при больших объёмах данных Но есть нюансы • Медленный поиск — требуется слияние уровней • Утилизация ресурсов — периодическая компактификация требует CPU 🔗 Как вы храните данные в своих проектах? Делитесь в комментариях! ⬇️ 🐸Библиотека шарписта

Вакансии «Библиотеки программиста» — ждем вас в команде! Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем: 👉контент-менеджеров для ведения телеграм-каналов Подробности тут Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴 Ждем ваших откликов 👾

🤣 Как разыграть коллег Попробуйте повторить пранк из видео. Создайте отдельный класс, который дублирует имя всеми используем
🤣 Как разыграть коллег Попробуйте повторить пранк из видео. Создайте отдельный класс, который дублирует имя всеми используемого системного класса и внедрите его в стандартный namespace. Вы можете заложить внутрь неожиданную логику, а коллеги будут ждать совершенно другого результата. 🐸Библиотека шарписта

⚙️ Погружение в Глубину Алгоритм поиска в глубину (DFS) является одним из фундаментальных методов обхода графов. Он используе
⚙️ Погружение в Глубину Алгоритм поиска в глубину (DFS) является одним из фундаментальных методов обхода графов. Он используется для решения множества задач, таких как поиск пути, обнаружение циклов и топологическая сортировка. ➖ Что такое DFS DFS (Depth-First Search) — это алгоритм обхода графа, который начинает с начальной вершины и исследует как можно глубже вдоль каждого ветви, прежде чем возвращаться назад. Алгоритм использует стек для отслеживания посещенных вершин. В рекурсивной реализации стек заменяется стеком вызовов функции. Основные Шаги DFS 1️⃣ Начинаем с начальной вершины. 2️⃣ Помечаем текущую вершину как посещенную. 3️⃣ Исследуем все смежные вершины, которые еще не были посещены. 4️⃣ Повторяем процесс для каждой смежной вершины. 5️⃣ Если все смежные вершины посещены, возвращаемся назад. Реализация DFS в C#:
class Graph {
    private int V;
    private List<int>[] adj;

    public Graph(int v) {
        V = v;
        adj = new List<int>[v];
        for (int i = 0; i < v; i++) 
            adj[i] = new List<int>();
    }

    public void AddEdge(int v, int w) {
        adj[v].Add(w);
    }

    public void DFS(int start) {
        bool[] visited = new bool[V];
        DFSUtil(start, visited);
    }

    private void DFSUtil(int v, bool[] visited) {
        visited[v] = true;
        Console.Write(v + " ");

        foreach (int n in adj[v]) {
            if (!visited[n])
                DFSUtil(n, visited);
        }
    }
}
🐸Библиотека шарписта

Погружение в Глубину Алгоритм поиска в глубину (DFS) является одним из фундаментальных методов обхода графов. Он используется для решения множества задач, таких как поиск пути, обнаружение циклов и топологическая сортировка. ➖ Что такое DFS DFS (Depth-First Search) — это алгоритм обхода графа, который начинает с начальной вершины и исследует как можно глубже вдоль каждого ветви, прежде чем возвращаться назад. Алгоритм использует стек для отслеживания посещенных вершин. В рекурсивной реализации стек заменяется стеком вызовов функции. Основные Шаги DFS Начинаем с начальной вершины. Помечаем текущую вершину как посещенную. Исследуем все смежные вершины, которые еще не были посещены. Повторяем процесс для каждой смежной вершины. Если все смежные вершины посещены, возвращаемся назад.

🧑‍💻 Юнит-тесты в .NET с NUnit NUnit — это фреймворк для модульного тестирования в экосистеме .NET, предоставляющий разработ
🧑‍💻 Юнит-тесты в .NET с NUnit NUnit — это фреймворк для модульного тестирования в экосистеме .NET, предоставляющий разработчикам инструменты для создания и выполнения тестов. В экосистеме .NET Core одним из самых популярных инструментов для этого является NUnit. Что умеет NUnit: • Параметризованные тесты: запускайте один тест с разными входными данными через атрибут [TestCase]. • Асинхронная поддержка: легко тестируйте async/await методы. • Интеграция с инструментами: совместим с Visual Studio, Rider и CLI-командой dotnet test. • Чистый синтаксис: удобные утверждения через Assert.That(result, Is.EqualTo(42)). Пример теста:
using NUnit.Framework;

namespace MyProject.Tests;

[TestFixture]
public class CalculatorTests
{
    private Calculator _calculator;

    [SetUp]
    public void Setup()
    {
        _calculator = new Calculator();
    }

    [Test]
    public void Add_WhenCalled_ReturnsSum()
    {
        int result = _calculator.Add(2, 3);
        Assert.That(result, Is.EqualTo(5));
    }
}
Пара советов по эффективному тестированию: • Изолируйте тесты: используйте [SetUp] и [TearDown] для подготовки и очистки данных. • Избегайте зависимостей: мокируйте внешние сервисы с помощью Moq или NSubstitute. 📎 Подробные примеры кода 💬 Делитесь в комментариях своим опытом работы с NUnit 🐸Библиотека шарписта

📚 Основы алгоритмов: полный гайд Competitive Programmer’s Handbook — это книга для всех, кто хочет освоить соревновательное
📚 Основы алгоритмов: полный гайд Competitive Programmer’s Handbook — это книга для всех, кто хочет освоить соревновательное программирование. Что внутри: ➖ Основы алгоритмической сложности. ➖ Структуры данных: стеки, очереди, деревья. ➖ Алгоритмы поиска и сортировки. ➖ Динамическое программирование, графы и многое другое. ➡️ Ссылка на книгу 🐸Библиотека шарписта