Библиотека шарписта | C#, F#, .NET, ASP.NET
21.8K subscribers
2.84K photos
41 videos
88 files
5.27K links
Все самое полезное для C#-разработчика в одном канале.

Как запустить своего ии-агента: https://clc.to/tvpmDQ

По рекламе: @proglib_adv

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
Уже сегодня в 19:00 (МСК) стартует открытый урок!

Тема:

«Мультиагентные системы: почему большинство архитектур переусложнены»


🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа.

Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт.

🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.

🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».

👉 Успей присоединиться к уроку
4🥱3👍1
😐 AutoMapper жив или уже пора на пенсию?

Ещё несколько лет назад AutoMapper был почти стандартом для .NET-проектов. Сегодня всё чаще встречаются ручной маппинг, Mapperly, Mapster и другие source generators.

Одни не хотят тащить дополнительную магию ради пары присваиваний. Другие не готовы писать одинаковый код для десятков DTO.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🤔1🌚1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
🤖 Используешь AI для написания кода? В Яндексе покажут, как применять AI для реальных задач разработки.

23 июня в 19:00 совместно с Яндексом проведём открытый урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов».

Спикер — Ольга Лукьянова, руководитель команды поиска и навигации по коду в SourceCraft. Более 18 лет развивала инструменты для разработчиков в JetBrains и руководила разработкой IDE в Huawei.

Что получишь на уроке:

— поймёшь, как использовать AI-ассистентов и облачных агентов в работе;
— научишься быстрее разбираться в новых проектах и кодовой базе;
— узнаешь, какие задачи стоит отдавать AI и как получать качественный результат;
— увидишь полный workflow работы с AI: от постановки задачи до код-ревью.

На уроке — живой разбор реального проекта с кодом. Ольга покажет промпты из рабочих сценариев и ответит на ваши вопросы в Q&A.

⚠️ Количество мест ограничено

🗓️ Когда: 23 июня, 19:00 (МСК)

👉 Занять место на открытом уроке
4🥱1
🤖 Мы тут подготовили небольшую игру по ИИ-агентам

В ней нужно собрать AI-агента на LangGraph: выбрать узлы, пройти развилки и запустить собственный workflow.

Никакой теории — сразу практика. Можно наглядно увидеть, как работают агентные системы, проверьте свои знания или показать другим как это всё работает 🔥

🎁 За прохождение получите персональную скидку на курс. Чем больше баллов наберете — тем больше будет скидка.

Плюс сейчас действует предложение: покупаешь 1 курс, получаешь еще 2 любых в подарок. Для этого надо будет оставить заявку на сайте академии после прохождения игры.

🚀 Собрать своего AI-агента
🔥1
💡 Как посмотреть результат работы JIT прямо в Rider

После установки плагина .NET Disassembler становится доступно окно ASM Viewer, где можно посмотреть нативный код, который сгенерировали:

🈂️ JIT
🈂️ ReadyToRun
🈂️ NativeAOT

Поддерживаются x86, x64 и ARM64.

Это удобно, когда нужно проверить:

произошёл ли инлайнинг
как JIT оптимизировал код
какое влияние оказывают PGO и Tiered Compilation
почему одна реализация работает быстрее другой


Раньше для такого анализа обычно использовали BenchmarkDotNet, специальные флаги рантайма или сторонние утилиты. Теперь дизассемблированный код можно открыть прямо в IDE.

📌 Для работы понадобится установить плагин .NET Disassembler

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥4
👋 Ищем разработчиков, которые недавно проходили IT-курсы

Если за последние 2 месяца вы где-то покупали курс или проходили интенсив, хотим узнать о вашем опыте 🔥

После какого обучения вы почувствовали реальный прогресс? А после какого осталось ощущение, что потратили время или деньги зря?


❗️ Ваш опыт поможет нам создавать программы, которые действительно приносят пользу разработчикам.

👉 Напишите в бот, о каком курсе можете рассказать и мы пришлем небольшой опросник: @proglibrary_feedback_bot

Нам нужны 10-15 человек, готовых поделиться своим опытом.

🎁 В благодарность — подписка на Cursor, Claude или другой AI-инструмент до 3 000₽, либо денежное вознаграждение.
🔥1
🔊 5 возможностей .NET 11 Preview 5, которые могли пройти мимо вас

Пока все обсуждают C# 15, в .NET 11 Preview 5 приехало несколько полезных улучшений библиотек и SDK.

🈶 JSON Lines в System.Text.Json

Теперь IAsyncEnumerable<T> можно сериализовать в формате JSON Lines без ручной сборки строк. Полезно для логов, событий и потоковой обработки данных.


🈶 EqualityComparer.Create по селектору ключа

Новая перегрузка позволяет быстро создавать компараторы для HashSet, Distinct и GroupBy без собственного IEqualityComparer<T>.


🈶 StringBuilder.MoveChunks

Передаёт накопленный текст в другой StringBuilder без копирования символов. Особенно интересно для генераторов кода и других сценариев с большими объёмами текста.


🈶 Улучшения производительности библиотек

В Preview 5 продолжается работа над уменьшением аллокаций и ускорением базовых API платформы.


🈶 Подготовка к C# 15

SDK и инструменты продолжают получать поддержку новых возможностей языка ещё до финального релиза .NET 11.


🔗 Подробнее

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
4
💡 StartsWith('s') лучше, чем StartsWith("s")

Если ищете один символ, используйте перегрузку с char:


text.StartsWith(’s’);


вместо:


text.StartsWith(«s»);


То же самое касается:


text.EndsWith('s');
text.IndexOf(’s’);


Перегрузки с char обычно немного эффективнее и сразу показывают, что поиск идёт по одному символу.

📌 Для одного символа — char, для строки или подстроки — string.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64🥱4
Уже сегодня в 19:00 (МСК) стартует наш открытый урок!

Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдыхают 😅, мы предлагаем без лишней конкуренции прокачать свой workflow и начать закрывать тикеты в три раза быстрее.

Тема:
«AI-инструменты в разработке: пишем код быстрее»


Мы покажем живой разбор реального проекта: как с помощью AI-ассистентов мгновенно разбираться в чужой кодовой базе, искать нужные участки и собирать Pull Request. Только рабочие промпты, которые сэкономят вам часы рутины.

🎙 Спикер — Ольга Лукьянова, руководитель команды в SourceCraft (18+ лет развивала инструменты в JetBrains и Huawei).

👉 Узнать, как ускорить разработку с AI
LINQ in Csharp - beyond the basics.jpeg
85.5 KB
🔗 LINQ за пределами Where() и Select()

Большинство разработчиков регулярно используют лишь небольшую часть LINQ. Но за последние версии .NET коллекция операторов заметно выросла.

На шпаргалке собраны методы, которые часто упрощают код:

🔹 DistinctBy() — убрать дубликаты по ключу
🔹 Chunk() — разбить последовательность на пачки
🔹 MaxBy() / MinBy() — получить элемент по максимальному или минимальному значению ключа
🔹 CountBy() — посчитать элементы по группам
🔹 AggregateBy() — агрегировать данные по ключу за один проход
🔹 SelectMany() — развернуть вложенные коллекции
🔹 ToLookup() — построить быстрый lookup по ключу
🔹 Zip() — объединить две последовательности попарно


📌 Если до сих пор используете GroupBy(...).Count() или пишете собственную логику для поиска максимального элемента — возможно, в LINQ уже есть готовый оператор.

🔗 Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#схема
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱4👍2
🤷‍♂️ Почему сборщик мусора делит объекты на поколения

GC в .NET не сканирует всю кучу при каждой сборке. Он опирается на простое наблюдение: большинство объектов живут очень недолго. Временные строки, локальные коллекции, промежуточные результаты вычислений часто умирают почти сразу после создания.

Поэтому управляемая куча разделена на поколения.

🟢 Gen0 — сюда попадают новые объекты. Сборка происходит часто и быстро.

🟢 Gen1 — промежуточное поколение для объектов, переживших сборку Gen0.

🟢 Gen2 — долгоживущие объекты: кеши, синглтоны, крупные структуры приложения. Проверяется значительно реже.


Такой подход позволяет GC большую часть времени работать только с небольшим количеством свежих объектов, не тратя ресурсы на всю кучу целиком.

🔜 Отдельно существует LOH (Large Object Heap). Туда попадают крупные объекты размером примерно от 85 КБ, чаще всего большие массивы. LOH обычно не уплотняется при обычных сборках, поэтому со временем может фрагментироваться.

Практический вывод:

уменьшайте количество временных объектов на горячих путях;
избегайте лишних аллокаций в циклах;
переиспользуйте большие буферы через ArrayPool<T>, чтобы не нагружать LOH.

📚 Что почитать дальше:

«Фундаментальные основы сборщика мусора .NET» — один из лучших материалов для понимания поколений, LOH, режимов работы GC и причин пауз при сборке мусора.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1