Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.26K photos
36 videos
85 files
4.42K links
Все самое полезное для C#-разработчика в одном канале.

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

Учиться у нас: https://proglib.io/w/b60af5a4

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
⚙️ Утилиты для асинхронного программирования

AsyncEx — библиотека, которая облегчает работу с асинхронными операциями, предоставляя готовые решения для синхронизации, ожидания и контроля выполнения задач.

Что есть под капотом

• AsyncLock — это асинхронный мьютекс, который позволяет синхронизировать доступ к ресурсу без блокировки потока.

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

• AsyncSemaphore — это асинхронная версия семафора, которая ограничивает количество одновременно выполняющихся задач.

• AsyncLazy — это асинхронная версия Lazy<T>. Она позволяет отложить выполнение ресурсоёмких операций до тех пор, пока они действительно не потребуются, при этом поддерживает асинхронный контекст.

• AsyncConditionVariable— это механизм синхронизации, позволяющий ожидать и уведомлять асинхронные задачи о состоянии ресурса.

• AsyncEvent — это асинхронная версия событий в C#, которая позволяет обрабатывать подписчиков и уведомления асинхронно.

• TaskHelper — утилита для работы с задачами, которая упрощает код для ожидания и обработки результатов асинхронных операций.

Как начать использовать

1. Просто установите библиотеку через NuGet:
Install-Package Nito.AsyncEx


➡️ Глянуть репозиторий либы

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143🔥2😁2
👀 Запускаем Python из C#

Бу, испугались? А мы да. Нашли видео, в котором запускается Python из C# кода, а в коде на Python запускаются либы, написанные на Си.

Звучит пугающе и выглядит не менее устрашающе.

➡️ Смотреть видео

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17🌚5👍2
💡 ИИ в обучении: возможности и ловушки

Сегодня технологии позволяют нам учиться с помощью нейронных сетей, но как не превратить процесс в бессмысленный «вайбкодинг» с GPT и действительно прокачать навыки.

Один из наших подписчиков недавно спросил:
Как вообще можно учиться у нейронки, если обучение превращается в вайбкодинг? Вопрос больше про процесс обучения, нежели про конкретную задачу.

Самый главный совет в такой ситуации — это тренировать выдержку. Если вы можете держать себя в руках, то у вас два пути:

1. Вместо нейросети пользоваться документацией.

Когда вам нужно что-то реализовать сначала подумайте что вам нужно. Декомпозируйте проект на модули а модули на функции.

После декомпозиции можно погуглить как это реализовать. Например, вы хотите принимать данные по REST, значит вам нужна точка входа в сервис.

Гуглите как это сделать. Буквально: «Как передать данные по REST в приложение на .NET». Бегло смотрите по выдаче и находите названия библиотек или инструментов, небольшие куски реализации и ищите по ним документацию.

Первое время это может быть тяжело, особенно после вайбкоддинга.

2. Просить у нейросети пояснение, а не решение.

Прежде чем начать работу с нейросетью можно подготовить промпт. Если вы не хотите видеть реализацию, то так и напишите: «Мне не нужна реализация или готовые куски кода, я хочу увидеть тезисы, которые натолкнут меня на решение. Подсказывай мне библиотеки или паттерны».

💬 Как вы поддерживаете баланс между помощью нейронки и самостоятельным погружением? Поделитесь опытом в комментариях 👇


P.S. Если хотите задать вопрос сообществу или поделиться историей, заполните нашу гугл-форму.

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
👨‍💻 Мгновенная валидация кода

В стремительном темпе разработки важно улавливать ошибки сразу же после правки.

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

Команда дня:
dotnet watch test --filter "Category=Unit"


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

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

Если вы хотите параллельно следить и за интеграционными тестами, достаточно изменить фильтр:
dotnet watch test --filter "Category=Integration"


Ещё и интегрировать со скриптами и конвейерами проще простого.

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍41🥱1
🤖 Знаете, чем настоящий AI отличается от чат-бота?

Чат-бот просит перезагрузить роутер, а настоящий AI уже умеет читать ваши эмоции в чате, включать музыку под ваше настроение, контролировать погрузку руды с точностью Терминатора и даже находить на КТ-снимках то, чего не заметит человеческий глаз.

Современные компании для таких задач всё чаще используют Deep Learning — алгоритмы на основе нейросетей. Но чтобы попасть в эту лигу, нужен фундамент. И имя ему — Machine Learning.

Наш новый курс по ML — это не волшебная таблетка. Это честный и структурированный путь в мир Data Science. Мы дадим вам базу, с которой вы:

разберётесь, как мыслят машины (спойлер: матрицами!);

научитесь строить работающие модели, а не карточные домики;

получите трамплин для прыжка в Deep Learning.

Хватит смотреть, как другие запускают ракеты. Пора строить свой собственный космодром.

Начните с фундамента на нашем курсе по Machine Learning!
😁6🥱31
🐶 Ваш секретный козырь для резюме

Фриланс и pet-проекты часто оказываются в тени при составлении резюме, но именно этот опыт может стать ключевым фактором, который выделит вас на фоне других кандидатов.

Умение грамотно презентовать такой опыт и показать его ценность для постоянной работы — важный навык, который стоит развивать.

➡️ Узнайте, как превратить pet-проекты в мощное преимущество

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
😁51
🔥 Знакомьтесь, преподаватель нашего нового курса по ML — Мария Жарова.

В карточках рассказали, чем Мария занимается и какие советы даёт тем, кто хочет расти в IT и Data Science ☝️

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

👉 Записывайтесь на курс
2👍1
🚦 Долгосрочное планирование: мираж или необходимость

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

Почему планирование — это опасная ловушка:

• Сложно предсказать технологические тренды.

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

• Конкуренты не спят и могут испортить ваши планы.

Когда планирование полезно:

• Крупные проекты не могут плавать вечно, им нужен фундамент и горизонт запланированных действий.

• Долгосрочные планы показывают инвесторам, что компания думает о будущем и готова к масштабированию.

💬 Какой у вас горизонт планирования? Нужно ли долгосрочное планирование в IT? Делитесь мыслями в комментариях 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
📰 Новости семи прошлых дней

Прошла неделя и мы снова собрали для вас то, что могло уйти из вашего инфополя.

.NET 10 Preview 6

Microsoft представила шестую предварительную версию .NET 10, снова улучшения и фиксы.

MCP-сервер на .NET и публикация его на NuGet

С помощью новых шаблонов .NET 10 и SDK ModelContextProtocol разработчики могут создавать мощные серверы, расширяющие возможности AI, и делиться ими с сообществом через NuGet.

Как защитить поставки ПО

Рекомендации по защите цепочки поставок программного обеспечения. Разумно ли внедрение Software Bill of Materials (SBOM), практик DevSecOps и принципа Zero Trust.

Ваш секретный козырь для резюме

Как продвинуть резюме в ТОП на HeadHunter

🐸Библиотека шарписта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Вы ещё можете застать старый добрый Proglib — с вечным доступом к курсам.

С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.

-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)

Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.

📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
1
Какой из методов интерфейса IEnumerator должен быть реализован для поддержки итерации в C#?

👾 — MoveNext()
👍 — MovePrevious()
🥰 — ResetCurrent()
⚡️ — Advance()

Библиотека задач по C#
👾137🤩2🌚2
🍺 Подборка вакансий для шарпистов

.NET Developer
— 100 000 ₽, Удалёнка.

Middle C# backend разработчик — до 2 000 $, Удалённо.

C# / .NET Core Backend Разработчик — от 140 000 до 180 000 ₽, Удалёнка.

Senior .NET Developer — от 225 000 до 365 000 ₽, Удалёнка.

.NET‑разработчик (стажер) — Гибрид (Москва).

Бустер — Удалённо (в любом городе мира).

➡️ Еще больше топовых вакансий — в нашем канале С# Jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱5👍2🤩1
🛠 Кастомная обработка событий

NEsper — это библиотека для .NET, предназначенная для сложной обработки событий.

Она позволяет анализировать потоки данных в реальном времени с минимальной задержкой, используя принципы, похожие на SQL, но для событий.

Основные возможности:

• Обрабатывайте события по мере их поступления, выявляйте аномалии или интересные паттерны без задержки.

• Язык для описания правил обработки событий, чем-то похож на SQL, что делает его удобным для разработчиков.

• Поддерживает распределённые системы и интегрируется с Кафкой и RabbitMQ.

Пример использования:
using EsperTech.NEsper;
using EsperTech.NEsper.Client;
using EsperTech.NEsper.Config;

var config = new Configuration();
config.AddEventType("MyEvent", typeof(MyEvent));

var epService = EPServiceProviderManager.GetDefaultProvider(config);
var epStatement = epService.EPAdministrator.CreateEPL("select * from MyEvent where value > 100");

epStatement.Events += (sender, e) =>
{
foreach (var ev in e.NewEvents)
{
Console.WriteLine($"Detected event: {ev.Get("value")}");
}
};


В этом примере создаётся обработчик событий, который срабатывает, когда значение события превышает 100.

Такой шустрый инструмент пригодится в финансах, мониторинге и для обнаружения аномалий.

➡️ Обработать все события

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3