🧑💻 Как выбрать интерфейс для списка
В зоопарке
Логика выбора интерфейсов
1.
2.
3.
4.
Такой подход делает контракты честными и код предсказуемым, а лишние
🐸 Библиотека шарписта
#буст
В зоопарке
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
👍16❤4
Недавний разбор 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 получаешь бесплатно.
👉 Апгрейд от «вайба» до «оффера» тут
Настоящее портфолио — это не стикеры на крышке, а проект с чистым кодом, README и рабочей демкой.
Не знаешь, как такой собрать? Научим. Наш курс «ML для старта в Data Science» — это пошаговый гайд к проекту, за который не стыдно.
ОСТАЛАСЬ НЕДЕЛЯ, чтобы забрать его по старой цене в 44.000 ₽. С 1 сентября — всё.
🎁 И да, при покупке курса ML до 1 сентября — курс по Python получаешь бесплатно.
👉 Апгрейд от «вайба» до «оффера» тут
🥱1
⚡️ Кому платят больше, а кому обещают
Статистика радует цифрами, но разработчики чувствуют стагнацию. Рост есть на графиках, а в кошельках — тишина.
Собрали в карточках факты и тенденции, которые формируют IT-рынок сегодня.
➡️ Читать статью
🐸 Библиотека шарписта
Статистика радует цифрами, но разработчики чувствуют стагнацию. Рост есть на графиках, а в кошельках — тишина.
Собрали в карточках факты и тенденции, которые формируют IT-рынок сегодня.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2
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 сентября. Ничего личного, просто математика.
👉 Принять предложение
Вы покупаете себе курс «Математика для Data Science» от преподавателей ВМК МГУ, а мы дарим второй такой же курс вашему другу.
Предложение действует только до 1 сентября. Ничего личного, просто математика.
👉 Принять предложение
😁5❤1🥱1
💬 Сколько у вас кабачков в зарплате?
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
📢 Какой сетап идеально подойдёт для разработки AI-агента?
Голосуйте за свой вариант и пишите в комментариях, в каком режиме вы реально кодите.
❤️ — 1
👍 — 2
⚡️ — 3
👏 — 4
🔥 — 5
🎉 — 6
😁 — 7
😍 — 8
🤩 — 9
Какой бы сетап ни был, без AI-агентов в 2025 всё равно далеко не уедешь.
👉 Научим, как строить агентов, которые кодят с тобой
Голосуйте за свой вариант и пишите в комментариях, в каком режиме вы реально кодите.
❤️ — 1
👍 — 2
⚡️ — 3
👏 — 4
🔥 — 5
🎉 — 6
😁 — 7
😍 — 8
🤩 — 9
Какой бы сетап ни был, без AI-агентов в 2025 всё равно далеко не уедешь.
👉 Научим, как строить агентов, которые кодят с тобой
🎉47🔥17🤩12❤7⚡4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9👍1🥰1
Наткнулись на видео в котором объясняются тонкости правильной отправки электронных писем через .NET.
Это не просто использование стандартного SMTP-клиента или API — здесь раскрывают, как правильно подходить к отправке email на глубоком уровне, чтобы понять, что происходит за кулисами.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
💯7🔥3
👨💻 ImmutableCollection и многозадачность в C#
При разработке многозадачных приложений важнейшей задачей является безопасная работа с общими данными, особенно когда несколько потоков одновременно обращаются к коллекциям.
Таким вопросом и задался наш подписчик:
Когда не стоит использовать:
• Каждый раз при изменении коллекции создается новая копия, что может снизить производительность.
• Частое создание новых коллекций может привести к большим затратам памяти. При ограниченных ресурсах может стать проблемой.
Когда ImmutableCollection — это идеальный выбор:
• Когда данные не изменяются часто
• Когда важна безопасность многозадачности
• В функциональном программировании
💬 Как вы используете
🐸 Библиотека шарписта
#междусобойчик
При разработке многозадачных приложений важнейшей задачей является безопасная работа с общими данными, особенно когда несколько потоков одновременно обращаются к коллекциям.
ImmutableCollection
помогает решить эту задачу, предоставляя коллекции, которые нельзя изменять после их создания. Но стоит ли использовать их везде?Таким вопросом и задался наш подписчик:
Как ImmutableCollection помогает при разработке многозадачных приложений? Стоит ли использовать их везде, где возможно?
Когда не стоит использовать:
• Каждый раз при изменении коллекции создается новая копия, что может снизить производительность.
• Частое создание новых коллекций может привести к большим затратам памяти. При ограниченных ресурсах может стать проблемой.
Когда ImmutableCollection — это идеальный выбор:
• Когда данные не изменяются часто
• Когда важна безопасность многозадачности
• В функциональном программировании
💬 Как вы используете
ImmutableCollection
? Поделитесь опытом в комментариях 👇#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
В .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