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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
😋 Подборка вакансий для шарпистов

C# developer — Удалёнка.

Senior Full Stack Developer (C#/.NET & React/Redux) — 190 000 ₽, удалёнка.

Senior .NET разработчик — Удалёнка.

Team Lead C# (.net) — Удалёнка.

Разработчик C# — 210 000 ₽, гибрид (Москва).

Разработчик C# (WPF, EF+SQL) — 180 000 ₽, удалёнка.

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

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

В зоопарке 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🔥2😁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 всё равно далеко не уедешь.

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

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

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

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

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
💯5🔥2