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

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

Ir al canal en Telegram

Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

Mostrar más
2025 año en númerossnowflakes fon
card fon
22 354
Suscriptores
-624 horas
-327 días
-14630 días
Archivo de publicaciones
⭐️ Логирование исключений с помощью фильтров Фильтры исключений позволяют выполнить код при срабатывании catch, но при этом не перехватывать исключение. Пример:
try 
{
    await work();
}
catch (Exception ex) when (Log(ex))
{
    // этот блок не выполняется, так как Log возвращает false
}

static bool Log(Exception ex)
{
    // логируем исключение
    return false;
}
Метод Log вызывается один раз при исключении, логирует его и возвращает false, чтобы исключение продолжило всплывать дальше без перехвата. 🔹 Алгоритмы и структуры данных 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸Библиотека шарписта #sharp_view
Mostrar todo...
🤔 12😁 4 2👾 1
🛠 Структурные опциональные параметры в F# 10 В F# 10 появилась возможность использовать структурный тип ValueOption<'T> для опциональных параметров. Это позволяет избежать выделения памяти в куче. Теперь, применяя атрибут [<Struct>], можно указать компилятору использовать ValueOption<'T> — структуру, которая хранится на стеке и не требует дополнительных аллокаций. Раньше:
type X() =
    static member M(?x: string) =
        match x with
        | Some v -> printfn "Some %s" v
        | None -> printfn "None"
Теперь с F# 10:
type X() =
    static member M([<Struct>] ?x: string) =
        match x with
        | ValueSome v -> printfn "ValueSome %s" v
        | ValueNone -> printfn "ValueNone"
Такой код работает быстрее в случаях, когда параметр отсутствует, и уменьшает давление на сборщик. 🔹 Экспресс-курс «Математика для Data Science» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸Библиотека шарписта #sharp_view
Mostrar todo...
2
Photo unavailableShow in Telegram
Не кодь — вайбкодь. Бесплатно 🚀 Сбер представил бесплатный агентный режим GigaCode — нового цифровой разработчика, который берет на себя рутину, чтобы вы могли сосредоточиться на крутых задачах! Что умеет GigaCode в агентном режиме? ⏩Сам находит и открывает нужные файлы ⏩Вносит изменения в код, запускает тесты, собирает проекты и оформляет коммиты в Git ⏩Работает в вашей любимой среде: JetBrains IDE, GigaIDE Desktop, а скоро еще и в VS Code Плюс, в GigaCode появилась новая модель автодополнения кода — GigaCode Inline 4.0. Она мгновенно предлагает нужные фрагменты кода для Python, Java, JavaScript и других языков. Подсказки стали еще точнее, а работа с контекстом — еще лучше. 🖱 Хотите ускорить разработку? Обновленный GigaCode уже доступен на GitVerse. Начать вайбкодить — по ссылке
Mostrar todo...
🥱 16😢 13😁 2🤩 1👾 1
Photo unavailableShow in Telegram
🤨 Как искусственный интеллект помогает писать тесты Создание качественных модульных тестов — важный, но утомительный и затратный процесс. GitHub Copilot Testing для .NET упрощает эту задачу, автоматически генерируя, собирая и выполняя тесты прямо в вашем рабочем процессе. Как начать использовать 1. Установите последнюю версию Visual Studio 2026 Insiders и получите лицензию GitHub Copilot 2. Включите функцию GitHub Copilot Testing через настройки (Tools > Options > GitHub > Copilot > Testing 3. Откройте проект или решение на C# и убедитесь, что оно успешно собирается 4. В чате Copilot напишите команду @Test #target, где #target — имя метода, класса, файла, проекта, решения или #changes для git diff 5. Copilot автоматически проанализирует код, создаст проект с тестами (если его нет), сгенерирует, соберёт и выполнит тесты. Результаты отображаются в Test Explorer и в окне чата, где вы увидите статистику по числу тестов, изменениям в покрытии кода и рекомендации по устранению «тестируемых» пробелов. 🔹 Специалист по ИИ 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸 Библиотека шарписта #sharp_view
Mostrar todo...
👍 7😁 1🤩 1
✏️ Сокращаем код Collection expressions — удобный синтаксис для создания и инициализации коллекций и массивов с помощью квадратных скобок и элементов, разделённых запятыми. Можно использовать spread-элементы (..) для вставки содержимого других коллекций внутрь новой. Пример:
int[] odds = [1, 3, 5, 7];

string[] vowels = ["a", "e", "i", "o", "u"];
string[] consonants = ["b", "c", "d", "f"];
string[] alphabet = [..vowels, ..consonants, "y"];
С помощью выражений коллекций можно легко создавать массивы, списки, Span и другие коллекторные типы. Появились они в C# 12. 🔹 Экспресс-курс «Математика для Data Science» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸Библиотека шарписта #sharp_view
Mostrar todo...
👍 7
🧑‍💻 Новые возможности модификаторов доступа на авто-свойствах в 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
Mostrar todo...
🥱 4 3👾 1
Photo unavailableShow in Telegram
😊 Модернизация .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
Mostrar todo...
🌚 3 2
Photo unavailableShow in Telegram
📊 А правда, что математика в Data Science не нужна? Нет. Без неё вы не пройдёте собес и не поймёте, почему модель ведёт себя странно. Линал, матан и вероятности — это база, без которой работа в ML превращается в угадайку. 🔥 Эту базу можно собрать за 2 месяца на экспресс-курсе «Математика для Data Science». 👩‍🏫 Кто ведёт курс:Мария Тихонова PhD, руководитель исследовательского направления в SberAI, доцент ВШЭ. → Диана Миронидис Преподаватель ВШЭ, автор научпоп-материалов по математике для блога МТС. → Ксения Кондаурова Преподаватель преподаватель T-Банка, автор курсов ЦУ и Edutoria. → Маргарита Бурова Академический руководитель программ по аналитике и ML, Wildberries & Russ. 🎁 Что сейчас доступно: → бесплатный тест, чтобы узнать свой уровень математики; → скидка 40% до 30 ноября; → если оплатить до конца ноября, курс «Базовая математика» в подарок. 👉 Пишите менеджеру, если хотите попасть в поток
Mostrar todo...
✏️ 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_люминатор
Mostrar todo...
👍 13🥱 5
Photo unavailableShow in Telegram
👨‍💻 Какой канал ваш любимый Библиотека — не единственный канал по экосистеме C# (удивительно!). В комментариях можете поделиться своими авторскими каналами или ресурсами и источниками, которыми вдохновляетесь при разработке. 🐸Библиотека шарписта #entry_point
Mostrar todo...
Photo unavailableShow in Telegram
🎆 Скоро Новый Год Если уже считаете дни до Нового Года «+» в чат, а пока вспомним прошедшую неделю. — Перестраиваем процесс сборки и доставки .NET Проект Unified Build меняет подход к созданию и выпуску .NET, делая сборку быстрее, проще и более предсказуемой за счет объединения исходников и управления кодом в едином виртуальном репозитории. — Исходный код Zork I, II и III стал открытым Microsoft открыла исходники легендарных текстовых игр Zork. — В блокноте на Windows 11 появятся таблицыWindows Edge Light в PowerToysGit 2.52 🔸 Математика для Data Science 🔸 Получить консультацию менеджера 🔸 Сайт Академии 🔸 Сайт Proglib 🐸Библиотека шарписта #async_news
Mostrar todo...
Photo unavailableShow in Telegram
🛠 Как создать путь к временному файлу в 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_люминатор
Mostrar todo...
👍 23🥱 7
Photo unavailableShow in Telegram
⭐️ Пост-квантовая криптография в .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
Mostrar todo...
7
👨‍💻 Когда нужна стабильность, а не спешка Представьте фоновую задачу, которая должна срабатывать каждые 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_люминатор
Mostrar todo...
🔥 20👍 8
Photo unavailableShow in Telegram
Mostrar todo...
😁 43 2😢 1
Photo unavailableShow in Telegram
🎉 Большая распродажа Proglib Academy — минус 40% на всё! 📚 Выбирай свой курс: ▫️ «Экспресс-курс по математике для DS» — получи фундамент для построения успешной карьеры в Data Science ▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными; ▫️ «Основы Python» — чтобы начать писать код с нуля; ▫️ «Алгоритмы и структуры данных» — для будущих инженеров; ▫️ «Специалист по ИИ» или «AI-агенты», или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ. ▫️ «Архитектуры и шаблоны проектирования» — чтобы писать гибкий, масштабируемый код как мидл+ разработчик. ▫️ «Основы IT для непрограммистов» — для тех, кто хочет понимать, как устроены технологии, не будучи разработчиком. 🎁 Бонусы ноября: ▫️ Розыгрыш MacBook Pro 14 — купи любой курс и пройди 2 недели обучения до 30 ноября. ▫️ Бесплатный тест по математике — за 5 минут покажет, какие темы стоит подтянуть перед DS. 👉 Выбрать курс со скидкой
Mostrar todo...
1
📎 Частичные события и конструкторы Новый уровень модульности в больших проектах: делим объявление и реализацию. Большие проекты требуют таких гибких способов организации кода. В C# теперь можно объявлять события и конструкторы с модификатором partial. Это значит, что объявление может находиться в одном месте, а его реализация — в другом, обычно в другом файле:
public partial class MyClass
{
    partial void OnInitialized();

    public MyClass()
    {
        OnInitialized();
    }
}
Здесь объявлена частичная функция OnInitialized() без тела — её реализация может появиться отдельно. Также конструктор вызывает эту функцию, если она реализована. Частичные конструкторы поддерживают совместимость с платформами, использующими генерацию кода. 🐸Библиотека шарписта #il_люминатор
Mostrar todo...
🤔 5 2🥱 1
🧑‍💻 Контролируем параллельную работу Представьте ситуацию: у вас есть 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_люминатор
Mostrar todo...
👍 11
Photo unavailableShow in Telegram
⚡️ Директивы #warnon и #nowarn в F# В предыдущих версиях F# часто возникала проблема — как избавиться от мешающих предупреждений без потери важной информации по всему файлу. С выходом F# 10 в язык добавлены новые директивы #warnon и #nowarn, которые позволяют точно управлять уровнем сообщений о предупреждениях внутри конкретных участков кода. Что такое #warnon и #nowarn Это специальные директивы, которые позволяют включать или отключать предупреждения на уровне отдельных блоков кода. Теперь можно не отключать все предупреждения сразу, а подавлять или включать их только там, где действительно нужно — прямо внутри файла или скрипта. Как это работает на практике:
#nowarn 25

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

#warnon 25
// здесь предупреждение активировано снова
Теперь предупреждение FS0025 отключено только в этом участке и не влияет на остальной код. 🔹 Практический интенсив «Архитектуры и шаблоны проектирования» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib 🐸 Библиотека шарписта #sharp_view
Mostrar todo...
🤖 AI сейчас на пике — и математика снова в центре внимания.
«На конференции AIJ только и разговоров, что о AI и математике. Ведь в основе генеративных моделей Gen AI лежит фундаментальная математика.»
Одна из топовых экспертов, кто сегодня участвует на AIJ, преподаёт у нас. Мария Тихонова — PhD по Computer Science, руководитель направления в SberAI и доцент ВШЭ. Она работает с LLM каждый день и объясняет математику так, как она реально применяется в AI. 🔥 Экспресс-курс «Математика для DS» — 8 недель, чтобы закрыть пробелы и уверенно проходить собесы. 🎁 До 30 ноября: → скидка 40% → курс «Школьная математика» в подарок при оплате → бесплатный тест на знание основ математики 👉 Записаться на курс
Mostrar todo...
🥱 7