DevNotes Live
6 subscribers
84.2K photos
12K videos
195 files
35.4K links
Автоматический агрегатор IT ресурсов в Telegram (@devnotes_robot)
Информация: https://t.me/devnotes_live/121
Download Telegram
Айдентики телеком-оператора «Летай»

Летай — крупнейший универсальный оператор связи Республики Татарстан с штаб-квартирой в Казани,

Образ бренда точно отражает его ценности: скорость, открытость, надежность и удобство решений.
Forwarded from Daily Coding 🔥
🛠 Acra обеспечивает шифрование полей данных на уровне приложений, многоуровневый контроль доступа, защиту от утечки данных из баз и возможности обнаружения вторжений в рамках одного пакета. Acra была специально разработана для распределенных приложений (веб-приложений, серверных и мобильных), которые хранят данные в одной или нескольких базах данных / хранилищах данных.

🌍 Сайт

Daily Coding #инструменты #SQL & Max
Forwarded from Dezzigners
This media is not supported in your browser
VIEW IN TELEGRAM
🧰 Dominant Color Toolk — создаёт цветовые палитры на основе доминирующих оттенков изображения и автоматически применяет их к слоям

Dezzigners
AbortController в Node.js production: сквозные дедлайны, cleanup ресурсов и защита от «висящих» операций

AbortController важен не как таймаут для fetch, а как контракт жизненного цикла операции. В production частая ошибка - клиент уже ушел, SLA истек, а сокеты, стримы и временные файлы продолжают жить.

Сквозной дедлайн
У HTTP-запроса, джобы или RPC должен быть один бюджет, который прокидывается вниз: handler - сервис - БД - внешний API - stream - timer.

const client = new AbortController();

req.on('close', () => {
client.abort(new Error('client disconnected'));
});

const signal = AbortSignal.any([
client.signal,
AbortSignal.timeout(1500)
]);

try {
const r = await fetch(reportUrl, { signal });
await pipeline(r.body, createWriteStream(file), { signal });
} finally {
await rm(tmpDir, {
recursive: true,
force: true
}).catch(() => {});
}


Типичная ошибка
Не ставьте независимые timeout: 1000 в каждом слое. Так запрос легко живет 3+ секунды, хотя общий SLA был 1 секунда. Практический совет: передавайте сверху signal, а локальный меньший бюджет делайте через AbortSignal.any().

Abort кооперативен
Он работает только там, где API принимает signal: fetch, timers/promises, stream.pipeline, часть fs, http, child_process, клиенты БД. Предупреждение: Promise.race() с таймаутом не отменяет реальную работу, он только перестает ждать результат.

Cleanup обязателен
abort() не удалит временные файлы, не вернет connection в pool и не снимет listeners. Освобождайте ресурсы в finally и прокидывайте внутрь signal, а не controller.

Вывод:
Сильный production-паттерн - один сквозной AbortSignal, понятный signal.reason и гарантированный cleanup каждой операции.
Forwarded from Designdealer
This media is not supported in your browser
VIEW IN TELEGRAM
HONOR представила MagicOS 11.

Если вам показалось, вам не показалось.