Скрипт автоматически наносит прозрачную надпись в нижний правый угол любого изображения.
В этой задаче:
• Обработка любых форматов изображений без лишних зависимостей;
• Надпись автоматически располагается точно в нужном углу кадра;
• Прозрачность текста легко регулируется для любого фона.
Получите аккуратный водяной знак без дополнительных усилий.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥7❤6🤝1
❤10👍5🔥5😁1
Библиотека упрощает управление параллельными операциями, автоматизируя планирование и обработку ошибок.
Что важно знать:
• Задачи выполняются одновременно без сложной настройки потоков;
• Можно легко отменять задачи и обрабатывать возникающие ошибки;
• Работа равномерно распределяется по всем доступным ядрам процессора.
Получаете простой, быстрый и надёжный параллельный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍6❤4🤝1
Организуем неблокирующий продюсер–консюмер с ChannelReader/Writer!
При обмене данными между задачами часто нужно передавать данные по мере готовности, без блокировок и ручных очередей. Вместо
Сначала создаём канал без ограничений на размер — данные будут накапливаться в памяти:
Запускаем продюсера: он будет отправлять сообщения в канал с небольшой задержкой:
Теперь читаем данные по мере поступления через
🔥 Получаем асинхронную очередь: безопасную, читаемую и без ручных синхронизаций.
➡️ C# Ready | #практика
При обмене данными между задачами часто нужно передавать данные по мере готовности, без блокировок и ручных очередей. Вместо
lock или BlockingCollection используем Channel — асинхронный и безопасный способ обмена сообщениями.Сначала создаём канал без ограничений на размер — данные будут накапливаться в памяти:
var channel = Channel.CreateUnbounded<string>();
Запускаем продюсера: он будет отправлять сообщения в канал с небольшой задержкой:
_ = Task.Run(async () =>
{
for (int i = 1; i <= 5; i++)
{
await Task.Delay(500);
await channel.Writer.WriteAsync($"Msg #{i}");
Console.WriteLine($"Отправлено: Msg #{i}");
}
channel.Writer.Complete();
});
Теперь читаем данные по мере поступления через
await foreach — потребитель не блокируется и реагирует на каждое новое сообщение:await foreach (var msg in channel.Reader.ReadAllAsync())
{
Console.WriteLine($"Принято: {msg}");
}
🔥 Получаем асинхронную очередь: безопасную, читаемую и без ручных синхронизаций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3❤1
Выбирай подходящий луч, чтобы мгновенно находить препятствия и держать плавную работу игры.
Что важно знать:
• Тонкий луч точен, толстый учитывает размеры цели;
• Фильтрация слоёв спасает от лишних проверок и нагрузки;
• Методы без выделений экономят память и стабилизируют кадры;
Правильный луч даёт точность и экономию ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥14❤6🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
С его помощью можно изучать исходный код сборок, исследовать внутренности библиотек и разбирать чужие проекты без доступа к исходникам. Поддерживает просмотр C#, IL-кода, поиск по сборкам и плагины для расширения функциональности.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤4👍3👎1
Он позволяет легко загружать XML из файла или строки, сохранять документ, добавлять новые элементы и работать с XPath для выборки узлов. Удобен для работы с конфигурациями, API-ответами и встроенными ресурсами.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤5🤝5👍2