Forwarded from PSD | Дизайн-пространство
Media is too big
VIEW IN TELEGRAM
Сервис для хранения и использования персональных данных. Акцент сайта- интересные иллюстрации
Сайт здесь
Сайт здесь
Forwarded from PSD | Дизайн-пространство
Как проектировать дизайн для продукта, который почти нельзя рекламировать
Статья о натуральном вине, про которое не расскажет реклама. Как выбрать бутылку вина? Узнай, как сомелье помогает любителям находить настоящие вкусы и почему этикетка играет важную роль в выборе напитка
Читать на дизайнерс | #статья
Статья о натуральном вине, про которое не расскажет реклама. Как выбрать бутылку вина? Узнай, как сомелье помогает любителям находить настоящие вкусы и почему этикетка играет важную роль в выборе напитка
Читать на дизайнерс | #статья
Forwarded from Denis Sexy IT 🤖
Media is too big
VIEW IN TELEGRAM
Forwarded from Daily Coding 🔥
🛠 StatsMgr — это расширение для PostgreSQL, предназначенное для эффективного и упорядоченного управления статистикой.
🌍 Сайт
Daily Coding #инструменты #SQL & Max
🌍 Сайт
Daily Coding #инструменты #SQL & Max
Forwarded from Dezzigners
Forwarded from ai.dot(ufna, dev)
Coufal_CV.pdf
178.3 KB
Крутой аниматор сейчас освободился и в поиске проекта на фуллтайм. Рекомендация — моя личная, если вам сейчас нужен аниматор/риггер/моделлер — пишите прямо Косте.
Часть демок есть на https://t-d-kzn.ru/ , но немалое — осталось за кадром.
Часть демок есть на https://t-d-kzn.ru/ , но немалое — осталось за кадром.
Forwarded from Node.JS [ru] | Серверный JavaScript
Теневые блокировки Event Loop от deasync: как найти и устранить
В production падает без видимых причин? Часто виноваты "теневые" блокировки event loop. Самый частый источник -
Механизм блокировки
Выглядит это так: ты вызываешь библиотеку, которая внутри использует
Как найти "тень"
Самый надёжный способ - flamegraphs с
Production-ready решения
Очевидный путь - замена на
* Переписать на асинхронные аналоги
* Вынести синхронные вызовы в Worker Thread
* Вставить
Пример. Вместо
Типичная ошибка
Даже один вызов
Вывод: Избегайте любых синхронных вызовов в production-режиме, заменяя их на асинхронные паттерны или Worker Threads, чтобы p99 latency оставалась стабильной под нагрузкой.
В production падает без видимых причин? Часто виноваты "теневые" блокировки event loop. Самый частый источник -
deasync и её клоны вроде sync-rpc или synchd.Механизм блокировки
Выглядит это так: ты вызываешь библиотеку, которая внутри использует
deasync. Внешне код нормальный, но под капотом - блокировка на уровне C++. Event loop замирает. deasync через node-gyp модуль синхронно ждёт завершения асинхронной операции, игнорируя все остальные события.Как найти "тень"
Самый надёжный способ - flamegraphs с
--perf-basic-prof. Ищи длинные синхронные стектрейсы с deasync::run или uv_run. Второй вариант - process._getActiveHandles(). Если активные хендлы резко падают на пиках, это симптом. Можно повесить custom async_hooks и ловить destroy на таймерах, которые не срабатывают.Production-ready решения
Очевидный путь - замена на
child_process.execSync - не выход. Это та же блокировка. Рабочие варианта:* Переписать на асинхронные аналоги
* Вынести синхронные вызовы в Worker Thread
* Вставить
setImmediate после каждого вызова через timers/promisesПример. Вместо
deasync(promise) пишем await promise. Если сторонняя библиотека - заворачиваем в Worker.const { Worker } = require('worker_threads');
const worker = new Worker('./worker.js');
// p99 latency падает с 1200ms до 45msТипичная ошибка
Даже один вызов
deasync может заблокировать event loop на сотни миллисекунд. Под нагрузкой это смертельно. Проверьте своё production: grep -r "require.*deasync" node_modules - и вы узнаете, кто тихо убивает ваш event loop.Вывод: Избегайте любых синхронных вызовов в production-режиме, заменяя их на асинхронные паттерны или Worker Threads, чтобы p99 latency оставалась стабильной под нагрузкой.
Forwarded from PSD | Дизайн-пространство
Вкус и польза в стиле Neo: новая визуальная концепция бренда DARIO
Новый дизайн упаковки DARIO Wellness Neo – современное и стильное решение для функциональных напитков. Использование натуральных оттенков и креативных коллажей фруктов подчеркивает их целебные свойства
Читать на дизайнерс | #кейс
Новый дизайн упаковки DARIO Wellness Neo – современное и стильное решение для функциональных напитков. Использование натуральных оттенков и креативных коллажей фруктов подчеркивает их целебные свойства
Читать на дизайнерс | #кейс