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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
🧑‍💻 Как выбрать интерфейс для списка

В зоопарке IEnumerable, IReadOnlyCollection, IList легко потеряться. Разберёмся, зачем существует IReadOnlyList и другие, а также в чём их сила.

Логика выбора интерфейсов

1. IEnumerable — объект можно «пройти в foreach». Отлично подходит для ленивых источников данных: стриминг строк из файла, результаты SQL-запроса.

2. IReadOnlyCollection — то же самое, что IEnumerable, но добавляет индексатор.

3. IReadOnlyList — это уже полноценный «read-only список»: доступ по индексу и Count гарантированы. Интерфейс хорош, если ваш метод или сервис работает именно со списком.

4. IList — даёт полный доступ и чтение, и запись. Подходит для внутренней логики, но в публичных контрактах часто избыточен.

//  Когда реально нужен индекс и Count — просим IReadOnlyList<T>
int SumAtOddIndices(IReadOnlyList<int> items)
{
var sum = 0;
for (int i = 1; i < items.Count; i += 2)
sum += items[i];
return sum;
}

// Публичный контракт, где важно "списочно и read-only"
public interface IOrderService
{
IReadOnlyList<Order> GetRecent();
// клиент может перебирать и индексировать,
// но не может добавить/удалить заказы
}

// Стриминг из источника — только перечислить
public static IEnumerable<string> ReadLines(Stream s)
{
using var r = new StreamReader(s);
while (!r.EndOfStream)
yield return r.ReadLine()!;
}


Такой подход делает контракты честными и код предсказуемым, а лишние .ToList() уходят в прошлое.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164
👨‍💻 MVU-подход для .NET MAUI: горячая перезагрузка и декларативный UI

Недавний разбор MauiReactor в блоге Microsoft показал, как можно писать UI в стиле React/Flutter — декларативно и с горячей перезагрузкой.

MauiReactor выступает как тонкий слой над MAUI, минимизируя зависимость от XAML и обеспечивая высокую продуктивность при создании UI.

➡️ В блог разработчиков

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2🤔1🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
Так, владелец макбука. Хватит позировать в кофейне.

Настоящее портфолио — это не стикеры на крышке, а проект с чистым кодом, README и рабочей демкой.

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

ОСТАЛАСЬ НЕДЕЛЯ, чтобы забрать его по старой цене в 44.000 ₽. С 1 сентября — всё.

🎁 И да, при покупке курса ML до 1 сентябрякурс по Python получаешь бесплатно.

👉 Апгрейд от «вайба» до «оффера» тут
🥱1
⚡️ Кому платят больше, а кому обещают

Статистика радует цифрами, но разработчики чувствуют стагнацию. Рост есть на графиках, а в кошельках — тишина.

Собрали в карточках факты и тенденции, которые формируют IT-рынок сегодня.

➡️ Читать статью

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2
👨‍💻 Запуск C#-кода на GPU

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

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

Как установить:
dotnet add package ComputeSharp


Пример кода:
using ComputeSharp;

public partial struct MultiplyByTwoShader : IComputeShader
{
[ThreadGroupSize(256)]
public void Execute()
{
// Умножаем каждый элемент на два
}
}


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

➡️ Репозиторий либы

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3😁1
Мы сделаем вам предложение, от которого невозможно отказаться 🤌

Вы покупаете себе курс «Математика для Data Science» от преподавателей ВМК МГУ, а мы дарим второй такой же курс вашему другу.

Предложение действует только до 1 сентября. Ничего личного, просто математика.

👉 Принять предложение
😁51🥱1
💵 Посчитали среднюю зарплату шарписта в необычном эквиваленте

💬 Сколько у вас кабачков в зарплате?

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
📢 Какой сетап идеально подойдёт для разработки AI-агента?

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

❤️ — 1
👍 — 2
⚡️ — 3
👏 — 4
🔥 — 5
🎉 — 6
😁 — 7
😍 — 8
🤩 — 9

Какой бы сетап ни был, без AI-агентов в 2025 всё равно далеко не уедешь.

👉 Научим, как строить агентов, которые кодят с тобой
🎉47🔥17🤩1274
📩 Как работать с почтой в .NET

Наткнулись на видео в котором объясняются тонкости правильной отправки электронных писем через .NET.

Это не просто использование стандартного SMTP-клиента или API — здесь раскрывают, как правильно подходить к отправке email на глубоком уровне, чтобы понять, что происходит за кулисами.

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

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
💯7🔥3
👨‍💻 ImmutableCollection и многозадачность в C#

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

ImmutableCollection помогает решить эту задачу, предоставляя коллекции, которые нельзя изменять после их создания. Но стоит ли использовать их везде?

Таким вопросом и задался наш подписчик:
Как ImmutableCollection помогает при разработке многозадачных приложений? Стоит ли использовать их везде, где возможно?


Когда не стоит использовать:

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

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

Когда ImmutableCollection — это идеальный выбор:

• Когда данные не изменяются часто
• Когда важна безопасность многозадачности
• В функциональном программировании

💬 Как вы используете ImmutableCollection? Поделитесь опытом в комментариях 👇

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
⚡️ One-shot execution для CLI-инструментов

В .NET 10 Preview 6 появилась новая фича — one-shot execution для .NET-инструментов. Больше не нужно ставить глобальные или локальные tools, если нужно просто один раз запустить утилиту.

Как это работает

dotnet tool exec <packageId> [args]
Скачивает инструмент из NuGet, кэширует и сразу запускает.

dnx <packageId> [args]
Короткий алиас для удобного вызова (аналог npx в мире Node.js).

— Если рядом есть dotnet-tools.json → подтянет версию из него. Если нет, то возьмёт последнюю доступную.

— При первом запуске спросит подтверждение, потом будет использовать уже закешированную версию.

Пример:
# Запуск dotnet-outdated без установки
dotnet tool exec dotnet-outdated -- --version

# То же самое, но короче
dnx dotnet-outdated --version


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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
🌈 Рецепт идеального праздника

Часто корпоративы превращаются в скучную обязаловку. Но это легко исправить: достаточно заранее продумать сценарий и детали.

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

➡️ Читать статью

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