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 701 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 701 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 701
Obunachilar
-624 soatlar
-57 kunlar
-4830 kunlar
Postlar arxiv
😵‍💫 Усиль свои позиции на собесе в Data Science знаниями математики! Чем важна математика расскажет Мария Тихонова - кандидат компьютерных наук, руководитель исследовательского направления SberAI, доцент факультета компьютерных наук и преподаватель НИУ ВШЭ на курсе «Математика для Data Science» от Proglib Academy. 👀 Мария - человек, который реально работает с LLM и делает так, чтобы модели понимали человеческую речь, а не делали вид. 📌 Добавь в свое портфолио проект, выделись среди конкурентов Курс предусматривает выполнение практического проекта с фидбеком от экспертов. За проект можно взять темы: • обучите градиентный спуск для предсказания цен на квартиры • создадите классификатор тональности или тематики текста • построите простую рекомендательную систему на матричных разложениях Бонусы: - скидка 40% до 30 ноября - если оплатить до конца ноября, получите курс «Базовая математика» в подарок ➡️ Пройти бесплатный тест на знание математики 👇👇👇 Записаться на курс

⚡️ Быстрая фишка Когда тип переменной явно указан, можно опускать его в инициализации с помощью target-typed new:
Dictionary<string, int> scores = new();
Вместо повторения полного типа справа, достаточно просто написать new(). Фича доступна с C# 9. 🐸Библиотека шарписта #sharp_view

⚙️ nameof теперь понимает несвязанные обобщения Удобство и гибкость метапрограммирования — теперь nameof работает для обобщений без аргументов. Благодаря новой поддержке можно получить имена обобщенных типов без указания параметров:
Console.WriteLine(nameof(List<>));  // Выведет "List"
🐸Библиотека шарписта #sharp_view

🎓 Экспресс-курс «Математика для Data Science» стартует 4 декабря Этот курс для вас, если вы: 🧑‍💻 Программист Когда нужно п
🎓 Экспресс-курс «Математика для Data Science» стартует 4 декабря Этот курс для вас, если вы: 🧑‍💻 Программист Когда нужно понять, что происходит «под капотом» ML-алгоритмов. 📊 Начинающий DS / аналитик / студент Чтобы закрыть теорию, подтянуть фундамент и собрать портфолио. 📈 Смежный специалист Чтобы уверенно работать с моделями, статистикой и гипотезами. 🎁 Сейчас лучший момент стартовать: — скидка 40% на курс до конца ноября — можно пройти бесплатный тест на знание основ математики 👉 Записаться на курс

💡 PowerToys может получить Windows Edge Light Команда Microsoft обсуждает интеграцию Windows Edge Light в PowerToys. Это неб
💡 PowerToys может получить Windows Edge Light Команда Microsoft обсуждает интеграцию Windows Edge Light в PowerToys. Это небольшая утилита для освещения лица во время видеоконференций, которая нужна, когда вокруг вас темно, а вебкамера плохо справляется с автоматическими настройками. Сейчас Windows Edge Light работает как отдельное приложение: вы запускаете его перед видеозвонком, и оно подсвечивает лицо через экран вашего монитора. Инструмент простой, но продуманный — можно менять интенсивность света, использовать горячие клавиши для быстрого включения-отключения, удерживать окно поверх других приложений и даже кликать через него, не закрывая фокус на основном приложении. ➡️ Новость ➡️ Репозиторий Windows Edge Light 🐸Библиотека шарписта #async_news

😍 Сериализация и API контракты по умолчанию Records созданы для API контрактов и DTO. System.Text.Json работает с ними без дополнительных конфигураций — просто как есть.
public record WeatherData(string City, decimal Temperature, string Condition);

var data = new WeatherData("Москва", 15.5M, "Облачно");
var json = JsonSerializer.Serialize(data);
Console.WriteLine(json);
// {"City":"Москва","Temperature":15.5,"Condition":"Облачно"}

var deserialized = JsonSerializer.Deserialize<WeatherData>(json);
Ни лишних конструкторов, ни public setters, ни аннотаций. Десериализация понимает init-only свойства и positional параметры. Это делает API слой минималистичным и надёжным. Работает и с Newtonsoft.Json, и с gRPC. Records — это естественный способ определения контрактов между системами. 🐸Библиотека шарписта #sharp_view

🛠 Натуральные преобразования для Span и ReadOnlySpan C# 14 позволяет неявно преобразовывать между Span<T>, ReadOnlySpan<T> и массивами, упрощая манипуляции с данными и повышая скорость:
ReadOnlySpan<char> roSpan = "hello";
Span<char> span = roSpan;
char[] array = roSpan.ToArray();
Типы Span теперь могут выступать как принимающие методы расширения, то есть станут получателями вызова таких методов. Они также могут комбинироваться с другими типами преобразований. 🐸Библиотека шарписта #il_люминатор

💬 На чьей стороне вы 🐸Библиотека шарписта #garbage_collector
💬 На чьей стороне вы 🐸Библиотека шарписта #garbage_collector

🚀 В IT ценится не перфекционизм, а движение вперёд, и если вы давно откладывали обучение — самое время начать. ❤️ Proglib Ac
🚀 В IT ценится не перфекционизм, а движение вперёд, и если вы давно откладывали обучение — самое время начать. ❤️ Proglib Academy продлевает розыгрыш MacBook Pro 14 до 30 ноября! Что нужно: ⚡️ выбрать курс; ⚡️ пройти минимум две недели обучения (можно за два вечера); ⚡️ написать куратору #розыгрыш; ⚡️ забрать макбук. 🎓 Курсы, которые участвуют 👉 Участвовать

🖥 Pattern matching как в функциональных языках Records идеально сочетаются с pattern matching. Вы получаете алгебраические типы данных, которые раньше были только в функциональных языках вроде F#. Представьте, что вам нужно рассчитать площадь разных фигур:
public abstract record Shape;
public record Circle(double Radius) : Shape;
public record Rectangle(double Width, double Height) : Shape;

double CalculateArea(Shape shape) => shape switch
{
    Circle(var r) => Math.PI * r * r,
    Rectangle(var w, var h) => w * h,
    _ => throw new ArgumentException("Неизвестная фигура")
};
Никаких is checks, никаких кастов, никакого боксинга. Компилятор знает структуру и гарантирует полноту проверки всех случаев. Можете комбинировать с проверками свойств:
if (shape is Rectangle { Width: > 100, Height: > 100 })
    Console.WriteLine("Большой прямоугольник");
Это делает бизнес-логику выразительнее и безопаснее. Вместо цепочки if-else с кастами получаете элегантный switch:
public abstract record OrderStatus;
public record Pending : OrderStatus;
public record Shipped(DateTime Date) : OrderStatus;
public record Cancelled(string Reason) : OrderStatus;

string Describe(OrderStatus status) => status switch
{
    Pending => "Ожидает отправки",
    Shipped(var date) => $"Отправлен {date:d}",
    Cancelled(var reason) => $"Отменён: {reason}",
};
🐸Библиотека шарписта #sharp_view

❓ Признавайтесь, что вас зацепило на этой неделе
Anonymous voting

⭐️ Дайджест недели Неделю взяли Microsoft со своей конференцией и обновлениями. — .NET Conf. День 1 и день 2 — Doom теперь в
⭐️ Дайджест недели Неделю взяли Microsoft со своей конференцией и обновлениями. — .NET Conf. День 1 и день 2 Doom теперь в TelegramЮбилейный .NETОбновления .NET и .NET Framework В ноябрьском обновлении 2025 года вышли новые релизы .NET 8.0.22 и .NET 9.0.11, включающие набор безопастностных и технических исправлений. 🐸Библиотека шарписта #async_news

⚡️ Ключевое слово field упрощает свойства Управление данными в свойствах теперь проще с новым ключевым словом для доступа к автоматически созданному полю. Раньше для добавления логики установки значения использовалось отдельное поле и аксессоры:
private string _msg;
public string Message
{
    get => _msg;
    set => _msg = value ?? throw new ArgumentNullException(nameof(value));
}
Сейчас field ссылается на поле, которое создает компилятор, сокращая код:
public string Message
{
    get;
    set => field = value ?? throw new ArgumentNullException(nameof(value));
}
Минимум кода — максимум контроля: write-only свойства снаружи и строгая логика внутри. 🐸Библиотека шарписта #il_люминатор

❓ Признавайтесь, что вас зацепило на этой неделе
Anonymous voting

🔍 Как увидеть вакансии, которые потерялись в ленте LinkedIn и других сайтов Большинство кандидатов видят только популярные в
🔍 Как увидеть вакансии, которые потерялись в ленте LinkedIn и других сайтов Большинство кандидатов видят только популярные вакансии, а те, что скрыты, остаются незаметными из-за дефектов поиска и плохих фильтров. Булевые операторы помогают создавать точные запросы, которые учитывают и исключают нужные параметры. Гитхаб и Google — дополнительные инструменты для охоты на вакансии, особенно стартапы, которые редко выкладывают открытые позиции на обычных сайтах. ➡️ Найдите вакансии, которые скрыты от других 🐸Библиотека шарписта

Расширяем типы по-новому В C# 14 расширяется концепция расширений: можно создавать не только расширенные методы для экземпляров типов, но и свойства расширения, а также расширения, которые относятся к самому типу как к статическому элементу. Пример:
public static class EnumerableExtensions
{
    extension<TSource>(IEnumerable<TSource> source)
    {
        public bool IsEmpty => !source.Any();  // Расширенное свойство
    }

    extension<TSource>(IEnumerable<TSource>)
    {
        public static IEnumerable<TSource> Combine(IEnumerable<TSource> first, IEnumerable<TSource> second) 
            => first.Concat(second);  // Статический метод расширения
    }
}
Конструкция extension<TSource>(IEnumerable<TSource> source) — это новый синтаксис блока расширения для экземпляра типа: здесь определяются расширяющие члены, которые «прикрепляются» к объекту IEnumerable<TSource>. Внутри блока объявлено свойство IsEmpty, которое возвращает true, если последовательность пуста (!source.Any()). Второй блок extension<TSource>(IEnumerable<TSource>) — расширение для самого типа IEnumerable<TSource> как статического члена. Внутри него определён статический метод Combine, который принимает две последовательности и объединяет их с помощью Concat. Как это использовать:
var list = new List<int> { 1, 2, 3 };

bool empty = list.IsEmpty; // false — вызов расширенного свойства как у экземпляра

var combined = Enumerable<int>.Combine(new[] { 1 }, new[] { 2, 3 }); // {1, 2, 3}
🐸Библиотека шарписта #il_люминатор

📘 Хочешь в Data Science, но есть пробелы в знаниях математики? Мы сделали экспресс-курс «Математика для Data Science», котор
📘 Хочешь в Data Science, но есть пробелы в знаниях математики? Мы сделали экспресс-курс «Математика для Data Science», который за 2 месяца даст тебе фундамент, без которого ни одна ML-модель не взлетит 🚀 Что тебя ждёт: 🔹 живые вебинары с экспертами (НИУ ВШЭ, SberAI, Wildberries&Russ); 🔹 практика в Python, квизы и проверка заданий экспертами; 🔹 матрицы, регрессии, вероятности и статистика: всё на примерах из реальных задач; 🔹 старт — 4 декабря. 🔥 Не упусти халяву: сейчас 40% до 30 ноября 👉 Записаться на курс

🆚 Лаконичный стиль или привычный блок В C# есть конструкция using, которая помогает правильно освобождать ресурсы. Но выгляд
🆚 Лаконичный стиль или привычный блок В C# есть конструкция using, которая помогает правильно освобождать ресурсы. Но выглядеть она может по-разному, и сейчас можно выбрать, какой стиль использовать. Старый добрый способ с блоком:
using (var connection = new SqlConnection(connString))
{
    connection.Open();
    // Сюда кладём код работы с ресурсом
} // Dispose вызывается автоматически при выходе из блока
Чётко, понятно, но возникают лишние скобки и с отступами порой становится сложнее. Особенно, если таких блоков много. А теперь взгляд современного разработчика:
using var connection = new SqlConnection(connString);
connection.Open();
// Здесь код с использованием ресурса
// Dispose вызовется автоматически при выходе из области видимости метода
Минимализм, читаемость, меньше шума. Но важно помнить, что Dispose произойдёт в конце метода, а не сразу после строки. 💬 Что выбираете вы? Старый стиль с блоками или лаконичный using? 🐸Библиотека шарписта #entry_point

👍 Распаковка данных в одну строку Records автоматически поддерживают деструкцию благодаря основному конструктору. Это позволяет распаковать свойства объекта прямо при присваивании. Вместо того чтобы обращаться к каждому свойству отдельно:
public record Point(int X, int Y);

var point = new Point(15, 20);
int x = point.X;
int y = point.Y;
Просто распакуйте:
var (x, y) = new Point(15, 20);
Console.WriteLine($"Координаты: {x}, {y}");
Это особенно удобно в сочетании с pattern matching и switch выражениями:
public record User(string Name, int Age);

if (new User("Боб", 25) is { Age: > 18 })
    Console.WriteLine("Взрослый пользователь");

var (name, age) = new User("Алиса", 30);
Вместо трёх строк получаете одну строку и респект от коллег не факт. 🐸Библиотека шарписта #sharp_view