Библиотека шарписта | 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
📍 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
🚀 Уже завтра стартует новый поток курса «ИИ-агенты»!

Мы собрали мощнейший состав преподавателей. Учить вас проектировать архитектуру и собирать продакшн-агентов будут инженеры и исследователи из топовых IT-компаний.

Старт уже завтра!

Сомневаетесь, подойдет ли вам программа и подача? Начните с бесплатного демо-урока!

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

🔗 Пройти демо-урок и занять место на курсе
shema_di_lifetimes.png
108.6 KB
👾 Времена жизни сервисов в ASP.NET Core DI

Если постоянно путаете AddSingleton, AddScoped и AddTransient — сохраните эту шпаргалку.

На одной схеме показано:

сколько живёт каждый сервис;
где обычно используется;
какую ошибку чаще всего допускают при работе с DI.

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

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

#схема
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
До окончания поддержки .NET 8 и .NET 9 осталось четыре месяца

Microsoft напомнила, что 10 ноября 2026 года одновременно заканчивается поддержка .NET 8 и .NET 9. После этой даты эти версии больше не будут получать обновления безопасности, исправления ошибок и официальную поддержку.

☝️ При этом существующие приложения продолжат работать.

Почему обе версии завершаются одновременно:

🔵 .NET 8 — LTS с трёхлетним циклом поддержки.

🔵 .NET 9 — STS. После изменения политики Microsoft срок поддержки STS увеличили до 24 месяцев, поэтому его конец совпал с окончанием поддержки .NET 8.


🔜 Если ваши сервисы ещё работают на .NET 8 или .NET 9, Microsoft рекомендует планировать переход на .NET 10 (LTS), который будет поддерживаться до ноября 2028 года.

Перед обновлением стоит:

проверить список breaking changes;
обновить SDK и базовые Docker-образы;
прогнать интеграционные тесты до начала осенней миграции.

Осенью этим наверняка займутся многие команды одновременно, поэтому лучше не откладывать обновление на последний момент.

🔗 Источник

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

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

#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍4😢2
🔥 Стартуем СЕГОДНЯ! Новый поток курса «Разработка ИИ-агентов» открыт

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

Внутри глубокий разбор LLM от Алексея Яндутова (Senior ML-инженер, развивал ответы «Алисы» и «Нейро» в Яндексе). Учимся получать точный результат без галлюцинаций.

Что внутри урока:

- Устройство LLM.
- Рабочие шаблоны промптов (Persona, Chain-of-Thought и др.).
- Разбор реального кейса Яндекса. Как автоматизировать разметку, обойти качество людей на 5% и срезать косты на 60%.


После просмотра вы поймете, когда хватает промпт-инжиниринга, а когда нужен RAG или fine-tuning.

👉Смотреть закрытый урок на YouTube

Понравился урок? Переходите на новый уровень! Оставляйте заявку на курс, чтобы научиться проектировать надежные автономные системы. Обучение началось, но вы еще успеваете присоединиться.

🔗 Занять место на курсе
📌 Списочные паттерны. Разбираем коллекции прямо в switch

Проверка коллекций часто превращается в цепочку условий: сначала Length, потом обращения по индексам, затем ещё несколько if.

В C# 11 появились списочные паттерны (List Patterns), которые позволяют описать форму коллекции прямо в switch.

🅰️ Квадратные скобки задают структуру, .. означает «любое количество элементов», а var позволяет сразу получить нужные значения.


static string Describe(int[] numbers) => numbers switch
{
[] => "пусто",
[var single] => $"один элемент: {single}",
[var first, var second] => $"два: {first} и {second}",
[var first, .., var last] => $"первый {first}, последний {last}",
};


Каждая ветка описывает форму данных, а не последовательность проверок. Не нужно вручную проверять Length и обращаться к элементам по индексам.

🅰️ Особенно удобно разбирать аргументы командной строки или результат Split().


static string Route(string[] args) => args switch
{
["run", var file] => $"запускаем {file}",
["build", .. var rest] => $"сборка с флагами: {string.Join(", ", rest)}",
_ => "неизвестная команда",
};


Обратите внимание на .. var rest: оператор среза не только пропускает элементы, но и позволяет сразу получить их в отдельную коллекцию. Списочные паттерны работают с массивами, списками и другими типами, которые поддерживают индексатор и имеют Length или Count.

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

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

#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18
🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться!

Мы только начали, а первый практический воркшоп пройдет только 23 июля. До этого времени вы спокойно успеете изучить материалы и нагнать группу.

💼 Главная фишка: финальный проект в портфолио:

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


🎁 Упомяните менеджеру специальное предложение «3 курса по цене 1»: Берете VIP-тариф — получаете курс «Разработка ИИ-агентов», хардкорный «AgentOps» и ещё один курс на выбор. Выгода 129.000 ₽!

Двери потока вот-вот закроются окончательно. Успейте забрать стек курсов и начать работу над реальным проектом

🔗 Занять место и забрать 3 курса
3
Что гарантирует readonly struct?

👾 — Что структура хранится только на стеке
👍 — Все поля readonly; методы не могут изменять this, компилятор предотвращает записи и избегает лишних defensive copies для in
🥰 — Автоматическую реализацию IEquatable<T>
⚡️ — Что экземпляры нельзя боксить

Библиотека задач по C#
👍63👾32🤔2🥰1
🫡 Один и тот же запрос к AI можно выполнить двумя способами — и получить совершенно разный результат.

1️⃣ способ — просто попросить написать код. Модель может сгенерировать рабочее решение, но именно на этапе проверки часто всплывают пропущенные edge case’ы, ошибки обработки или проблемы с тестами.

2️⃣ способ — дать агенту цикл Think → Act → Observe. Он не останавливается после первой попытки: планирует действия, проверяет результат и, если находит ошибку, исправляет её и пробует снова.

Самое интересное, что разница здесь не столько в модели Claude, GPT или другая LLM могут быть одинаковыми. Разницу создаёт инженерная система вокруг них.

📅 Именно это разберём 23 июля в 19:00 (МСК) на бесплатном вебинаре с Алексеем Жиряковым (Executive Director в Сбере, GenAI Data Platform, ex-CTO Stream и KION).

На живом демо покажем, как один и тот же запрос работает без агентной системы и с ней 🔥

🔗 Регистрация

🏃‍♀️ Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
3
📍 Курс — это не только темы и домашние задания

Во многом его ценность определяет опыт тех, кто его разрабатывает и ведёт.

Об этом как раз новый пост Proglib Academy 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Учиться агентной разработке — у тех, кто уже внедряет её в бигтехе

Курс «ИИ для разработчиков» ведут практики из ведущих российских IT-компаний 🔥

🔵 Они прошли путь от первых экспериментов с AI до рабочих процессов, в которых агенты помогают команде писать код, готовить PR и быстрее доводить задачи до продакшена.

В ближайшее время познакомим вас с каждым преподавателем. Программа курса — по ссылке 🎹

🏃‍♀️ Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM