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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

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

Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 21 698 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 5 943-o'rinni va Rossiya mintaqasida 30 267-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 21 698 obunachiga ega bo‘ldi.

29 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -48 ga, so‘nggi 24 soatda esa -6 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 16.72% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 7.84% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 3 628 marta ko‘riladi; birinchi sutkada odatda 1 702 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 23 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent .net, шарписта, навигация, await, string kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

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

Yuqori yangilanish chastotasi (oxirgi ma’lumot 30 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

21 698
Obunachilar
-624 soatlar
-57 kunlar
-4830 kunlar
Postlar arxiv
⏱️ Как ускорить асинхронный код в C# Частая ошибка — писать асинхронные вызовы последовательно: await GetUser(); await GetOrd
⏱️ Как ускорить асинхронный код в C# Частая ошибка — писать асинхронные вызовы последовательно:
await GetUser();
await GetOrders();
await GetRecommendations();
Каждая операция ждёт предыдущую и если каждый запрос занимает по секунде, общее время = 3 секунды. А можно иначе:
var userTask = GetUser();
var ordersTask = GetOrders();
var recsTask = GetRecommendations();

await Task.WhenAll(userTask, ordersTask, recsTask);
Все задачи стартуют сразу. Теперь общее время = 1 секунда (ожидание самой длинной операции). Маленький приём — большая разница во времени выполнения. 🐸Библиотека шарписта #sharp_view

❔ Отдохнуть или покушать Давайте помечтаем — ваш работодатель даёт вам выбор: 1 sick-day (отгул с сохранением ЗП) или оплата
Отдохнуть или покушать Давайте помечтаем — ваш работодатель даёт вам выбор: 1 sick-day (отгул с сохранением ЗП) или оплата одного обеда в неделю. 💬 Что вы выберете? Почему? Ждём в комментариях 👇 🐸Библиотека шарписта #entry_point

💡 Domain Validation в .NET и DDD — просто о сложном В .NET-проектах часто пишут валидацию прямо в контроллере или сервисе: — проверили, что поле не пустое, — число больше нуля, — email подходит по формату. Это правильно, но есть проблема — бизнес-правила остаются размазаны по коду. В итоге можно случайно создать объект в некорректном состоянии (например, заказ без товаров). В идеале должно быть два уровня валидации Application Validation И Domain Validation. В одном проверяются входные данные, а в другом строится защита сущностей от нарушения бизнес-правил. Пример проверки на уровне приложения:
public record CreateOrderDto(string CustomerEmail, List<OrderItemDto> Items);

public class OrderApplicationValidator
{
    public static void Validate(CreateOrderDto dto)
    {
        if (string.IsNullOrWhiteSpace(dto.CustomerEmail))
            throw new ArgumentException("Email is required");

        if (!dto.CustomerEmail.Contains("@"))
            throw new ArgumentException("Email format is invalid");

        if (dto.Items == null || dto.Items.Count == 0)
            throw new ArgumentException("Order must contain at least one item");
    }
}
Здесь мы проверяем только корректность ввода. А вот внутри домена мы защищаем бизнес-правила:
public class OrderItem
{
    public string ProductName { get; }
    public int Quantity { get; }
    public Money Price { get; }

    private OrderItem(string productName, int quantity, Money price)
    {
        ProductName = productName;
        Quantity = quantity;
        Price = price;
    }

    public static OrderItem Create(string productName, int quantity, Money price)
    {
        if (string.IsNullOrWhiteSpace(productName))
            throw new InvalidOperationException("Product name cannot be empty");

        if (quantity <= 0)
            throw new InvalidOperationException("Quantity must be greater than zero");

        return new OrderItem(productName, quantity, price);
    }

    public Money GetTotal() => Money.Create(Quantity * Price.Amount);
}
Когда правила закреплены в домене, они становятся частью самой логики, а не зависимыми от внешних слоёв. Это гарантирует, что объект в принципе невозможно построить в некорректном виде. 🐸Библиотека шарписта #il_люминатор

Стань участником МТС True Tech Champ 2025 — масштабного ИТ-чемпионата по программированию с призовым фондом 10 250 000 рублей
Стань участником МТС True Tech Champ 2025 — масштабного ИТ-чемпионата по программированию с призовым фондом 10 250 000 рублей. Соревнования пройдут в двух треках: 1. Алгоритмические задачи Покажи индивидуальное мастерство в работе со структурами данных и написании алгоритмов. Чтобы успешно справиться с заданиями, пригодится опыт решения олимпиад. 2. Программирование роботов Оживи робота с помощью кода, чтобы он прошел лабиринт быстрее всех. Трек будет интересен разработчикам: С++, Go, Python, JS, Java, C# и не только. Участвовать могут школьники, студенты, начинающие ИТ-специалисты и опытные разработчики. Отборочные этапы пройдут онлайн, шоу-финал — 21 ноября в МТС Live Холл в Москве. Ты можешь выйти на арену как участник или наблюдать за чемпионатом как зритель. Регистрируйся до 20 октября по ссылке.

🔢 Когда числа становятся понятными UnitsNet — .NET-библиотека, которая превращает «голые» числа в осмысленные физические вел
🔢 Когда числа становятся понятными UnitsNet — .NET-библиотека, которая превращает «голые» числа в осмысленные физические величины. Пример: вместо double speed = 27.8; вы пишете Speed speed = Speed.FromMetersPerSecond(27.8); и работаете уже с километрами в час, милями или узлами — без ручных пересчётов. В UnitsNet поддерживается более сотни единиц измерения — от времени и массы до температуры и силы. Вам не нужно держать в голове коэффициенты и вручную пересчитывать из одной системы в другую: библиотека сделает это сама. Ещё один плюс — читаемость кода. Ваши расчёты выглядят как документация: сразу видно, где давление, где скорость, а где длина. ➡️ Попробовать либу 🐸Библиотека шарписта #sharp_view

❗ Сегодня премьера В 19:00 МСК стартует бесплатный вебинар с Максимом Шаланкиным — «ИИ-агенты: новая фаза развития искусствен
❗ Сегодня премьера В 19:00 МСК стартует бесплатный вебинар с Максимом Шаланкиным«ИИ-агенты: новая фаза развития искусственного интеллекта». В программе: — почему агенты ≠ чат-боты; — живое демо простого агента; — и как эта тема встроена в курс, который разработан под руководством Никиты Зелинского. Это прямой эфир: подключиться можно через лендинг курса.

📎 Где заказать курсовую по программированию Курсовые по программированию сегодня можно заказать в пару кликов — рынок перепо
📎 Где заказать курсовую по программированию Курсовые по программированию сегодня можно заказать в пару кликов — рынок переполнен сервисами, готовыми взять на себя любую задачу. За простотой скрываются и подводные камни: сомнительное качество, завышенные цены и риск нарваться на недобросовестных исполнителей. По ссылке топ площадок, которые зарекомендовали себя в 2025 году. ➡️ Узнать, где лучше 🐸Библиотека шарписта

🤩 Live Preview без дебага В Visual Studio 2022 v17.14 появилась функция для .NET MAUI — XAML Live Preview теперь доступен пр
🤩 Live Preview без дебага В Visual Studio 2022 v17.14 появилась функция для .NET MAUI — XAML Live Preview теперь доступен прямо во время дизайна, без запуска отладки. Изменения сразу видны, можно пользоваться Hot Reload и инструментами инспекции. Поддержка работает не только для Windows, но и для Android-эмуляторов, а вместе с GitHub Copilot Vision можно прикрепить картинку макета и получить готовый XAML-код, который отобразится в Live Preview. 🔗 Подробнее 🐸Библиотека шарписта #async_news

⚙️ Почему async void ломает ваш код В C# у async void есть дурная репутация, и не зря. Такой метод не возвращает Task, а значит, его нельзя await-ить, нельзя встроить в пайплайн и невозможно корректно отследить завершение. Исключения из него не ловятся обычным образом — они пробиваются в синхронизационный контекст или в пул потоков, где легко превращаются в необработанные и могут уронить процесс.
// Контроллер ASP.NET Core
[HttpPost]
public async void Create() { await _svc.DoAsync(); } // Исключения мимо pipeline

// Библиотека
public async void SaveAsync(Item item) { await _repo.Save(item); } // Вызывающему не сконтролировать
Правильно — всегда возвращать Task:
[HttpPost]
public async Task<IActionResult> Create() { await _svc.DoAsync(); return Ok(); }

public Task Invoke(HttpContext ctx) => _next(ctx);

public Task SaveAsync(Item item) => _repo.Save(item);
Единственный сценарий, где async void уместен, — обработчики событий в UI-фреймворках вроде WPF или WinForms, где сигнатура задаётся самим фреймворком. Там приходится мириться, но даже там стоит ловить исключения локально и логировать их. 🐸Библиотека шарписта #sharp_view

💡 Что скрывается под капотом IReadOnlyList В .NET есть интерфейс IReadOnlyList<T>. На первый взгляд, он обещает нам неизменяемый список. Но это полуправда. Определение интерфейса:
public interface IReadOnlyList<out T> : IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable
{
    T this[int index] { get; }
}
Интерфейс наследует IReadOnlyCollection, а тот, в свою очередь, наследует IEnumerable. Таким образом, он даёт доступ: к элементам через индекс (this[int index]), к свойству Count, и к итерации через foreach. ⚠️ Важный нюанс: IReadOnlyList не делает коллекцию реально readonly. Если у вас есть List<int> и вы приведёте его к IReadOnlyList<int>, изменять список по-прежнему можно — просто не через эту ссылку. Пример:
var list = new List<int> { 1, 2, 3 };
IReadOnlyList<int> ro = list;

list.Add(4);  // ro теперь "видит" 4
То есть IReadOnlyList — это контракт для чтения, а не гарантия неизменности. Если нужна настоящая защита — используйте ImmutableArray или ReadOnlyCollection. 🐸Библиотека шарписта #il_люминатор

🔥 Не пропустите событие осени для AI-комьюнити 24 сентября, 19:00 Мск — бесплатный вебинар с Максимом Шаланкиным «ИИ-агенты:
🔥 Не пропустите событие осени для AI-комьюнити 24 сентября, 19:00 Мск — бесплатный вебинар с Максимом Шаланкиным «ИИ-агенты: новая фаза развития искусственного интеллекта» 😤 Пока все спорят, «боты это или нет», мы покажем, как работают настоящие агенты: с планированием, инструментами и памятью. За час Максим разберёт: — почему ИИ-агенты сейчас на пике инвестиций — чем они отличаются от ChatGPT и обычных моделей — цикл агента: восприятие → планирование → действие → обучение — живое демо простого агента — как бизнес уже получает ROI до 80% ⚡️ Хотите спросить у Максима всё, что обычно остаётся «за кадром»? Ловите шанс — только в прямом эфире.Мест мало, регистрация закроется, как только забьём комнату

⚙️ Когда Hash Join быстрее Nested Loops Внутри SQL-движка соединение таблиц — это не магия, а конкретный алгоритм. Сравним два подхода к соединению таблиц. Nested Loops работает буквально так, как звучит: берём строку из первой таблицы и ищем совпадения во второй. Если вторая таблица имеет подходящий индекс, поиск по нему будет очень быстрым, и такой алгоритм блестяще справляется с задачей маленькое соединяется с большим. Hash Join подходит там, где Nested Loops захлёбывается. Он сначала строит хэш-таблицу по одной из входных таблиц, а затем пробегается по второй и ищет совпадения через хэш-функцию. Это даёт огромный выигрыш, когда нужно соединить два больших набора данных, и когда индексов для ускорения поиска нет. Цена такого подхода — расход памяти. В итоге — если речь идёт о маленьком наборе строк против большого и есть индекс, Nested Loops окажется быстрее. Но если обе таблицы крупные и индексы не спасают, Hash Join чаще всего становится оптимальным выбором. 💬 Как вы бы ответили на такой вопрос на собеседовании? 🐸Библиотека шарписта #dotnet_challenge

👇 Вектор следующей недели
Anonymous voting

➡️ Выбираем направление на неделю Давайте собирать библиотеку вместе. Выбираем тему, которая станет главным фокусом контента на ближайшие 7 дней. 👇 🐸Библиотека шарписта #entry_point

📰 Недельная подборка Прошла неделя и мы снова собрали для вас материалы для прочтения на досуге. — Cake.Sdk теперь умеет dot
📰 Недельная подборка Прошла неделя и мы снова собрали для вас материалы для прочтения на досуге. — Cake.Sdk теперь умеет dotnet publish Вышла бета Cake.Sdk 5.0.25257.82, и главная новость — поддержка dotnet publish. Теперь можно собирать self-contained бинарники и даже контейнеры прямо из Cake-скриптов, без необходимости ставить .NET Runtime на целевой машине. — Цена пропущенного ? в C# На примере open source-проекта Stability Matrix автор показывает ошибки в конструкторах и инициализации, где невинный ? или проверка на null могли бы предотвратить баги и NaN в расчётах. — Кто такие Unit-лид и Technical OwnerMicrosoft увеличивает срок поддержки релизовWolverine 5.0 🐸Библиотека шарписта #async_news

⚙️ Разбор .NET rc1 Недавно мы делились новостью о выходе .NET 10 RC1. Теперь пришло время посмотреть глубже: что именно измен
⚙️ Разбор .NET rc1 Недавно мы делились новостью о выходе .NET 10 RC1. Теперь пришло время посмотреть глубже: что именно изменилось, какие улучшения можно опробовать уже сейчас. Повышение производительности без усилий • Улучшения в рантайме и JIT-компиляторе, благодаря которым уже существующий код работает быстрее при перекомпиляции, без изменения кода. • «Deabstraction»: устранение накладных расходов за счёт оптимизации интерфейсов, лямбд, async, итераторов и др. • Расширенный «escape analysis», позволяющее небольшие объекты размещать в стеке, а не на куче, что уменьшает нагрузку на garbage collector. Улучшения рантайма и GC • Поддержка AVX 10.2 инструкций — подготавливает платформу к современному железу. • Оптимизация фонового GC, улучшение сжатия памяти и управления фрагментацией. Безопасность и квантовая устойчивость • Внедрение апи для пост-квантовой криптографии. • Новый алгоритм цифровой подписи ML-DSA (основанный на решёточных структурах), стандартизированный NIST. Новые возможности для разработчиков и приложенийASP.NET Core: более детальная телеметрия/метрики по аутентификации, токенам и двухфакторке, что облегчает выявление атак типа «credential stuffing», брут форс и др. • EF Core: поддержка векторного поиска и нативного JSON в SQL Server — полезно для AI и полуструктурированных данных. • .NET MAUI: метрики на уровне UI-layout операций (Measure, Arrange) — помогает обнаружить ботлнеки интерфейса. C# 14 — язык становится дружелюбнее и эффективнее • Возможность использовать params не только с массивами, но и со Span для уменьшения аллокаций. • Новый field-контекст в свойствах упрощает код, убирает явное объявление «backing field» — меньше шаблонов, меньше шума. Язык и среда .NET движутся в сторону объединения удобства и производительности: абстракции остаются, но их накладные расходы всё больше уходят. 🐸Библиотека шарписта #il_люминатор

🦸 Wolverine 5.0: релиз 1 октября В новой версии будет реализована поддержка Redis как транспортного механизма для сообщений,
🦸 Wolverine 5.0: релиз 1 октября В новой версии будет реализована поддержка Redis как транспортного механизма для сообщений, улучшена совместимость с различными хранилищами сообщений и проведена работа над Dead Letter Queue в рамках проекта CritterWatch. После релиза Wolverine 5.0 проект CritterWatch станет основным техническим фокусом Джереми Миллера и JasperFx на оставшуюся часть года. ➡️ Блог разработчика 🐸Библиотека шарписта #async_news

😊 Как сделать GitHub Copilot умнее GitHub Copilot теперь можно настроить с помощью Instruction Files и Prompt Files, чтобы AI генерировал код в соответствии с вашими стандартами и требованиями проекта. Файлы с инструкциями задают общие правила для репозитория: стиль кода, соглашения по именам, обязательные тесты, ограничения на изменения и инструкции по CI/CD. Их удобно использовать для командной работы и open-source-проектов, чтобы все предложения Copilot соответствовали принятым стандартам. ➡️ Раскочегарить Copilot 🐸Библиотека шарписта #sharp_view