9818
Авторский канал по разработке на C# и Unity. Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Автор: @energy_it РКН: https://clck.ru/3SBaT3 Реклама на бирже: https://telega.in/c/csharp_ready
👩💻 Добавляем полупрозрачный текстовый водяной знак!
Скрипт автоматически наносит прозрачную надпись в нижний правый угол любого изображения.
В этой задаче:
• Обработка любых форматов изображений без лишних зависимостей;
• Надпись автоматически располагается точно в нужном углу кадра;
• Прозрачность текста легко регулируется для любого фона.
☕️ The Morning Brew — это ежедневный блог-сборник ссылок по .NET-разработке!
Он публикует отобранные статьи, заметки и инструменты по C#, ASP․NET, облачным сервисам и другим темам .NET-мира. Отлично подойдёт разработчикам, которые хотят быстро и удобно быть в курсе новостей и полезных материалов сообщества.
📌 Оставляю ссылочку: The Morning Brew
➡ C# Ready | #ресурс
👩💻 Разбираем RandomNumberGenerator — криптографический источник случайных чисел для паролей, токенов и шифрования!Он надёжно работает на любой платформе, не раскрывает внутреннее состояние и минимизирует аллокации, делая защиту данных простой и безопасной.
➡️ C# Ready | #шпора
👩💻 ASCII-гистограмма символов: превращаем строку в наглядную статистику прямо в консоли!
Мини-приложение, которое читает текст и рисует частотную диаграмму.
В этой задаче:
• Принимаем строку и приводим буквы к одному виду.
• Считаем сколько раз встречается каждый знак кроме пробелов.
• Рисуем полоски так, чтобы самые частые были длиннее.
👩💻 Сегодня покажу вам Addressables — контент по запросу в Unity!
Они подгружают ассеты именно тогда, когда они нужны, — движок находит их локально или скачивает с CDN по назначенному адресу, поэтому билд получается компактнее.
Ключевые моменты:
• Загружает только нужные ресурсы, экономит место и память.
• Делит файлы на локальные и сетевые для гибкости.
• Позволяет обновлять игру без переустановки и долгих ожиданий.
Release, делая игру плавной даже на слабых устройствах.
Срезы коллекций — когда нужна часть, а лишнее не нужно!
Иногда требуется взять только кусок массива или строки: первые элементы, последние — или вырезать середину. Раньше ради этого писали Substring, Skip / Take и плодили лишние аллокации.
В C# 8 появились операторы диапазонов .. и индексов с конца ^, которые делают такие операции короче и нагляднее.
Создадим массив данных:
int[] data = { 10, 20, 30, 40, 50, 60 };int[] middle = data[1..3]; // {20, 30}int[] lastTwo = data[^2..]; // {50, 60}int[] withoutEdges = data[2..^2]; // {30, 40}string text = "Range & Index";
string word = text[^5..]; // "Index"
Range и Index делают код короче, читаемее и позволяют работать с Span<T> без копирования: меньше аллокаций — выше производительность!
👍 CSharpTutorials — топовый ресурс для изучения C# и .NET
Пошаговые материалы: от азов синтаксиса и первых консольных программ до мини-проектов Guess the Number и Hangman; многочастная серия «The Essential C#/.NET Handbook», статьи об асинхронности async/await, LINQ, partial-методах и коллекциях
📌 Оставляю ссылочку: csharptutorials.com
➡ C# Ready | #ресурс
ℹ️ Держите совет по чистому коду:
Используйте описательные методы вместо сложных условных операторов IF
Чтение длинных и запутанных условий в IF-операторах может быть затруднительным.
Лучше всего вынести логику проверки в отдельный метод (или переменную) с понятным и выразительным именем.
Имя метода должно четко отражать суть проверки, чтобы любой разработчик мог легко понять, что происходит в коде.
➡️ C# Ready | #ресурс
ПРИМИ УЧАСТИЕ В SMOLATHON 2025 🚀
Любимый многими хакатон возвращается!
16-17 октября 2025 года в Смоленске пройдет масштабный хакатон по созданию цифровых решений для городской среды!
Хакатон проходит в рамках международного молодежного ИТ-форум [Свой код].
[Свой Код] — это новая площадка для молодежи, которой интересны технологии и инновации, которая хочет расти и развиваться профессионально в технологической среде, заинтересована в построении своей карьеры или хочет стать технологическим предпринимателем. В рамках форума предусмотрены развлекательная программа, лекции и мастер-классы, выставка технологий.
На этот раз участникам предстоит разработать веб-платформу для Центра организации дорожного движения Смоленской области.
🚨 Обрати внимание, в этом году хакатон пройдет в два этапа. Прояви себя в отборочном этапе и пройди в финал крутого IT-события осени!
Сохраняй даты:
• Отборочный онлайн-этап: 22 сентября - 3 октября 2025 года
• Очный финал: 16-17 октября для лучших 20 команд
💡 Тебя ждет:
• Решение актуальной задачи для города
• Призовой фонд 500 000 рублей
• Новые знакомства с IT-сообществом
👥 Собери dream team из 2-5 человек и покажи, на что способны настоящие разработчики.
📌 Важно: каждый участник регистрируется индивидуально на сайте https://clck.ru/3PEq8F, а капитан команды отмечает свой статус при регистрации.
Успей зарегистрироваться до 20 сентября 2025 года.
👩💻 Разберем MemoryMappedFile — быстрая общая память без копирования данных!
Позволяет разным процессам моментально делиться состоянием и постранично работать с большими файлами, не загружая их полностью в RAM.
Что важно знать:
• Один участок памяти доступен сразу разным приложениям;
• Всегда закрывайте ресурсы, иначе память останется занята;
• Выбирайте размер области, учитывая расход оперативной памяти.
😎 DevTut — компактный справочник по языку и экосистеме!
На одной странице собрано 160 лаконичных рецептов: от азов (переменные, условные операторы, коллекции) до продвинутых приёмов LINQ, async/await, TPL, DI, рефлексии и Roslyn.
📌 Оставляю ссылочку: devtut.io
➡ C# Ready | #ресурс
Прерываем длительные задачи с CancellationToken!
Иногда задача «зависает», и нужно прервать её заранее — при закрытии окна, нажатии «Отмена» или по таймеру. Раньше мы делали так:
bool cancel = false;
if (cancel) break; // громоздко
await. Теперь делаем цивильно — через CancellationTokenSource.using var cts = new CancellationTokenSource();
// отмена через 3 секунды
cts.CancelAfter(3000);
await Task.Run(async () =>
{
for (int i = 1; i <= 10; i++)
{
cts.Token.ThrowIfCancellationRequested(); // 💥 если отменили
Console.WriteLine($"Шаг {i}/10…");
await Task.Delay(1000, cts.Token); // отменяемое ожидание
}
});
try/catch, чтобы красиво сообщить о прерывании.catch (OperationCanceledException)
{
Console.WriteLine("Задача отменена");
}
👩💻 Разбираем Parallel — инструмент для ускорения работы программ!Он позволяет выполнять несколько действий одновременно и эффективно распределять нагрузку. Подходит для обработки данных, работы с циклами и ускорения запросов.
➡️ C# Ready | #шпора
👩💻 Default Interface Methods (DIM) — эволюция интерфейсов в C# 8.0 без переписывания кода!
Это механизм, который позволяет объявлять реализацию прямо в интерфейсе, сохраняя совместимость со старыми реализациями и упрощая развитие API.
Что важно знать:
• Метод интерфейса теперь может иметь тело, при этом обязателен модификатор доступа;
• Класс-реализация может переопределить такой метод, но не обязан;
• Новые методы можно добавлять в интерфейс, не ломая существующие реализации.
Прерываем длительные задачи с CancellationToken!
Иногда задача "зависает", и нам нужно прервать её выполнение заранее. Например, при закрытии окна, нажатии "Отмена" или по таймеру.
Раньше приходилось использовать флаги и вручную проверять отмену в каждом шаге:
bool cancel = false;
if (cancel) break;
CancellationToken с таймером отмены и try/catch:using var cts = new CancellationTokenSource();
// отмена через 3 секунды
cts.CancelAfter(3000);
await Task.Run(async () =>
{
for (int i = 1; i <= 10; i++)
{
cts.Token.ThrowIfCancellationRequested();
Console.WriteLine($"Шаг {i}/10...");
await Task.Delay(1000, cts.Token);
}
});
catch (OperationCanceledException)
{
Console.WriteLine("Задача отменена");
}
👩💻 Фоновые задачи по расписанию: два триггера на Quartz․NET
Консольное приложение, которое выводит строку каждые 30 с и отчёт раз в 5 мин
В этой задаче:
• Подключаем NuGet-пакет Quartz одной командой.
• Пишем HelloJob и ReportJob, реализующие IJob.
• Настраиваем SimpleSchedule, CronSchedule и затем ScheduleJob / Start / Shutdown.