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

Наши курсы: https://clc.to/y3LDtw

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

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
pattern matching in csharp.jpg
69.9 KB
❗️ Pattern Matching — одна из тех возможностей C#, которая делает код заметно чище

Вместо проверки типа с последующим приведением можно выполнить обе операции сразу в одном выражении. Меньше шаблонного кода, безопаснее приведение типов и лучше читаемость.

На картинке — простой пример, который стоит взять на вооружение, если ещё пишете код «по-старому» 👀

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

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

#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🥱5🔥1
🚀 Не уверены, стоит ли переходить на зрелую ИИ-инженерию? Начните с демо-урока!

Вот-вот стартует наш курс AgentOps. Если вы сомневаетесь в формате, просто оставьте заявку и получите бесплатный демо-урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов».

Для тех, кто готов мощно прокачать портфолио, прямо сейчас действует предложение «3 любых курса по цене 1»:
— При покупке VIP-тарифа (осталось 4 места) нового потока «ИИ-агенты» вы получаете в подарок доступ к курсу «AgentOps» + ещё один любой курс Академии на выбор

— В деньгах это два топовых курса по автоматизации и контролю ИИ всего за 134.000 ₽ вместо 263.000 ₽ 🔥 А за счет третьего курса (например, можно выбрать «Математику») вы соберете мощный стек и освоите целое востребованное направление.

— Платеж можно разбить на несколько частей с помощью беспроцентной рассрочки.


👉 Получить демо-урок и зафиксировать спецпредложение 3 в 1
🔥32🥱2
⭐️ Асинхронность постепенно переезжает в рантайм

Начиная с C# 5, async/await работал за счёт компиляторной машины состояний. Компилятор превращал каждый асинхронный метод в специальную структуру, которая хранила состояние между точками await.

В .NET 11 появилась Runtime Async — новая реализация, которая переносит значительную часть этой инфраструктуры в сам рантайм. Библиотеки .NET уже начинают использовать новый механизм там, где он поддерживается.

Что это даёт:

более чистые стек-трейсы без лишних кадров машины состояний;
меньше служебного кода и накладных расходов;
более эффективное возобновление выполнения после await.

В документации Microsoft приводится синтетический бенчмарк с большим количеством приостановок и возобновлений, где время выполнения снизилось примерно с 6357 мс до 457 мс 🌈

Пока функция находится в статусе preview. Для своих проектов её можно включить через секцию Features с параметром runtime-async=on. Для net11.0 отдельный флаг EnablePreviewFeatures уже не требуется.

🔗 Microsoft Learn — What’s new in .NET 11 Runtime

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

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

#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥255
⚠️ Уже завтра стартует курс AgentOps!

Мы собрали на потоке сборную из мастеров IT-рынка. Практики из BigTech научат вас контролировать и отлаживать ИИ-агентов, чтобы они работали предсказуемо и не сливали бюджет на API.

🔥 Заберите 3 курса по цене 1:
● При покупке VIP-тарифа (осталось 4 места) нового потока «Разработка ИИ-агентов» получаете в подарок курс «AgentOps» + ещё один любой курс Академии (например, «Математика для разработки AI», чтобы глубже освоить направление).

● Три курса обойдутся вам всего в 134.000 ₽ вместо 263.000 ₽.

● Доступна удобная беспроцентная рассрочка, платеж можно разбить на несколько комфортных частей.


Хотите прокачать свое портфолио продакшн-кейсом, но пока сомневаетесь? Пройдите наш бесплатный демо-урок, чтобы протестировать формат перед покупкой.

👉 Забрать 3 курса по цене 1 и получить демо-урок
2
📌 Hexagonal Architecture за 5 минут

Эта схема кажется перегруженной только на первый взгляд. На самом деле она показывает одну из самых популярных архитектур современных .NET-приложений.

Здесь собраны ключевые идеи: Ports & Adapters, DDD, CQRS, инверсия зависимостей и разделение приложения на доменную логику и инфраструктуру.

🔜 Сохраните, если давно хотели разобраться, почему доменная модель не должна зависеть от EF Core, HTTP или RabbitMQ.

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

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

#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥2😁1
ОПРОС: Ответьте на пару вопросов и получите промокод на все наши курсы! 🎁

Команда Prоglib.аcаdemy готовит к запуску новые продукты, и нам нужна ваша помощь. Мы хотим создавать обучение, которое будет решать ваши реальные карьерные задачи и бить точно в цель.

Поделитесь своим опытом и ожиданиями, чтобы мы сделали наши курсы еще полезнее именно для вас! Заполнение анкеты займет буквально 2–3 минуты, а с нас — скидка на любой наш курс!

👉 Пройти опрос в Яндекс Формах и забрать промокод
🔥1
⭐️ Автоматическая регистрация Minimal API через DI

Вместо того чтобы вручную вызывать десятки MapGet() и MapPost(), можно зарегистрировать все endpoint автоматически.

Идея простая:

1️⃣ каждый endpoint реализует общий интерфейс;
2️⃣ приложение находит все реализации через DI;
3️⃣ при запуске вызывает Map() для каждой.

В результате Program.cs сводится буквально к двум строкам:


builder.Services.AddEndpoints(typeof(Program).Assembly);

app.MapEndpoints();


Чем больше проект, тем заметнее становится преимущество такого подхода.

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

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

#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰43💯2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
📹 Что должен делать агент-оркестратор?

Посмотрите короткий отрывок из вебинара с Дмитрием Юдиным, внутри концентрат инсайтов о ии-агентах. А если хотите погрузиться в тему с головой, у нас доступна и полная запись этого эфира.

Готовы перейти от теории к практике и собрать свой первый продакшн-кейс?

Прямо сейчас действует мощная акция «3 курса по цене 1»:

🔥 При покупке VIP-тарифа нового потока «Разработка ИИ-агентов» вы получаете в подарок хардкорный курс «AgentOps» + ещё один любой курс Академии на ваш выбор!

Выгода в цифрах: два топовых курса по созданию и контролю агентов обойдутся вам всего в 134.000 ₽ вместо 263.000 ₽. Плюс третий курс бонусом (например, можно подтянуть математику для AI). Ваша чистая экономия — 129 000 ₽!

Сомневаетесь, подойдет ли вам формат? Оставьте заявку и пройдите бесплатный демо-урок, чтобы протестировать платформу перед покупкой.

👉 Пройти демо-урок и забрать 3 курса по цене 1
🎬 Как ИИ ускоряет разработку и где ломаются архитектуры

Мы провели открытый вебинар, где разобрали реальные боли проектирования автономных систем. Ольга Лукьянова на практическом кейсе показала, как использовать ИИ-ассистентов для реальных задач. Вы просили запись встречи — она уже в открытом доступе!

Что внутри:

— Как с помощью ИИ быстрее разбираться в незнакомом коде и готовить пулл-реквесты;
— Критерии выбора между одним агентом и мультиагентной системой;
— Разбор популярных архитектурных ошибок и ограничений современных ИИ;
— Практические рекомендации по проектированию и внедрению облачных агентов.

👉 Посмотреть полную запись можно тут:
VK
YouTube

🚀 Хотите пойти дальше открытого вебинара? Если вы готовы перейти от простых промптов к проектированию надежных, отказоустойчивых ИИ-систем, которые не сливают бюджет компании на API, приходите на курс AgentOps. Поток уже стартовал, но двери еще приоткрыты!

👉 Успеть на курс AgentOps
💡 25 .NET-советов, которые пригодятся почти в любом проекте

На одной картинке собрали практики, которые регулярно встречаются в реальных .NET-приложениях: от async/await и LINQ до EF Core, DI, производительности и работы с памятью.

Что особенно стоит запомнить:

• не блокируйте асинхронный код через .Result и .Wait();
• не создавайте HttpClient вручную — используйте IHttpClientFactory;
• для запросов только на чтение не забывайте про AsNoTracking();
• материализуйте коллекции (ToList()) как можно позже;
• прежде чем оптимизировать код — измерьте его с помощью BenchmarkDotNet.


📌 Сохраните шпаргалку — она пригодится и начинающим, и опытным C#-разработчикам.

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

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

#схема
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩64👾2👍1😁1
🔥 Открытое занятие по AgentOps — курс стартовал!

Сегодня в 19:00 по МСК пройдет первое занятие нового потока, на которое может прийти каждый. Оцените пользу нашего подхода на ретрансляции урока в VK!

👨‍💻 Спикер: Андрей Носов

Тема: Архитектура управления: state machine для AI-агентов

Будем разбираться, как использовать State machine в качестве главного оружия против стохастики (непредсказуемости) LLM.

Что в программе:

● State machine: инварианты и терминальные состояния;
● Паттерны маршрутизации: Supervisor, ReAct, Plan-and-Solve;
● Детекция циклов и настройка аварийных выходов;
● Абстракция от модели: как сделать каркас, который переживет смену LLM/провайдера;
● Адаптация графов под ограничения локальных моделей;
● Версионирование графов и миграции стейта.

Результат занятия: Вы поймете, как спроектировать надежный каркас агента с жестким контролем исполнения и переходов.

👉 Подписывайтесь на нашу группу ВКонтакте, чтобы не пропустить старт трансляции!
📍 Task.WhenAll: когда нужно дождаться всех задач

Если несколько операций не зависят друг от друга, не запускайте их по очереди. Запустите сразу все и дождитесь завершения.


var usersTask = LoadUsersAsync(ct);
var ordersTask = LoadOrdersAsync(ct);
var catalogTask = LoadCatalogAsync(ct);

await Task.WhenAll(usersTask, ordersTask, catalogTask);

var users = await usersTask;
var orders = await ordersTask;
var catalog = await catalogTask;


Такой подход позволяет выполнять операции параллельно и уменьшает общее время ожидания.

💡 Несколько советов:

— передавайте CancellationToken во все методы;
— если операций очень много, ограничивайте параллелизм через SemaphoreSlim;
— Task.WhenAll завершится с ошибкой, если хотя бы одна из задач завершилась исключением.

Используйте WhenAll, когда итоговый результат нужен только после завершения всех операций.

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

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

#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
_Что_должен_знать_Senior_NET_разработчик_в_2026_году.jpeg
298 KB
🧩 Чек-лист Senior .NET-разработчика на 2026 год

Какие темы действительно стоит знать, если хотите уверенно чувствовать себя на позиции Senior?

На этой схеме собрали ключевые направления, которые чаще всего встречаются в современных .NET-проектах:

• C# и новые возможности языка;
• async/await, многопоточность и управление памятью;
ASP.NET Core и проектирование API;
• EF Core, Dapper, SQL и Redis;
• производительность, CLR, JIT и Native AOT;
• безопасность, OWASP Top 10 и Identity;
• OpenTelemetry, логирование и мониторинг;
• DDD, System Design и распределённые системы;
• Docker, Kubernetes и CI/CD.


📌 Это не список «что нужно выучить за неделю», а удобный ориентир, который поможет оценить свои сильные стороны и понять, что стоит подтянуть дальше.

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

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

#схема
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Что делает await Task.Yield()?

👾 — Переносит работу на отдельный поток пула
👍 — Отдаёт управление планировщику и асинхронно продолжит после yield (в текущем контексте, если он есть); не offload’ит работу
🥰 — Усыпляет поток на один квант
⚡️ — Гарантирует переключение на UI-поток

Библиотека задач по C#
👍645👾2🎉1
🔥 ИИ-выходные: Собери своего AI-агента за 2 дня

Хватит просто читать про ИИ, пора собирать автономные системы руками! 1–2 августа пройдет хардкорный онлайн-интенсив для junior-middle разработчиков.

Формат: теория ➡️ сразу практика. Вы будете управлять AI-инструментами.

🛠️ Как всё пройдет:

День 1 (Суббота): разбираем анатомию агента, подключаем инструменты (shell, GitHub, Postgres) и дебажим трейсы.
День 2 (Воскресенье): собираем собственного агента под вашу задачу, настраиваем Eval + Guardrails (чтобы бот не галлюцинировал) и проводим демо.


Для кого: Вы пишете на Python, работаете с Git и терминалом. (С нуля не подойдет, темп очень быстрый!)

Артефакт на выходе: Рабочий репозиторий с вашим агентом, который не стыдно показать команде.
👨‍💻 Спикер: Алексей Жиряков (Сбер, GenAI).

Места ограничены!

👉 Изучить программу и занять место
1
Как устроен Dictionary внутри, и почему важен GetHashCode

Dictionary<TKey, TValue> обеспечивает поиск в среднем за O(1) благодаря хешированию.

🔵 Чем равномернее GetHashCode() распределяет ключи по бакетам, тем быстрее работает поиск. Если множество ключей попадает в один бакет, возникают коллизии, цепочки становятся длиннее, и производительность постепенно приближается к O(n).

При росте словарь увеличивает внутренние массивы и перераспределяет элементы, поэтому при известном размере коллекции стоит заранее указать capacity.

🔤 Ещё одно важное правило — ключ должен быть неизменяемым. Если после добавления изменить поле, участвующее в GetHashCode() или Equals(), словарь может перестать находить этот элемент.

💡 Для собственных типов ключей удобно использовать record, record struct или ValueTuple — для них корректные реализации Equals() и GetHashCode() генерируются автоматически.

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

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

#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🤨 Как заставить AI-агента не ломать архитектуру, а нормально писать код?

Мы привыкли общаться с ИИ промптами, но для автономных систем это путь к бесконечным циклам и сливу бюджета. Чтобы убрать хаос, инженеры переходят на Spec-Driven Development (SDD).

Вот как этот подход меняет работу агента на практике:

🔹Контракт вместо текста. Сначала пишется строгая спецификация (JSON-схема/OpenAPI) и автотесты. Агент зажат в рамки интерфейсов, за которые физически не может выйти.
🔹Контроль на шагах. Внутри петли Think-Act-Observe агент сверяет действия со спецификацией.
🔹Саморефлексия. Если ИИ нарушил типы или «додумал» лишнее, тест падает. Агент получает ошибку в контекст и сам правит код, не выходя за рамки ТЗ.

Это лишь база того, как укротить ИИ-разработку. Если вы хотите глубоко внедрить эту методологию, научиться проектировать архитектурные контракты и собирать отказоустойчивые системы — оставляйте заявку на наш новый курс по Spec-Driven Development. Стартуем совсем скоро🙂
👍1
🤔 Что выведет этот код?


double a = 0.1 + 0.2;

Console.WriteLine(a == 0.3);
Console.WriteLine(a);


👇 Пишите свои варианты в комментариях.

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

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

#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱8😁72
Media is too big
VIEW IN TELEGRAM
🔥 Не называйте любого продвинутого чат-бота «ИИ-агентом»!

Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru, наглядно разбирает уровни абстракции ИИ-продуктов и убирает путаницу в понятиях.

Что внутри видео:

- Почему ассистент и агент принципиально разные сущности;
- Как ассистент может быть просто «обёрткой» над LLM, а может скрывать под капотом сложнейшую мультиагентную систему;
- Как понимать архитектуру глубже, чтобы проектировать сильные решения.

Начните создавать агентные системы с нашего бесплатного демо-урока. Всего за 2 часа разберем внутреннее устройство агента, научим его чинить свой собственный код и сохранять контекст после перезапуска.

🔗 Забрать бесплатный демо-урок
2
Правильный ответ к задаче:

False
0.30000000000000004

Почему:

Тип double использует стандарт IEEE 754 и хранит числа в двоичном формате. Значения 0.1 и 0.2 нельзя представить в нём точно, поэтому после сложения получается число, немного отличающееся от 0.3.

Если нужна точная работа с десятичными дробями (например, денежные расчёты), используйте decimal.

А значения типа double сравнивайте с допуском:

Math.Abs(a - b) < epsilon

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

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

#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6🥰3🥱32