DevNotes Live
6 subscribers
84.3K photos
12K videos
195 files
35.4K links
Автоматический агрегатор IT ресурсов в Telegram (@devnotes_robot)
Информация: https://t.me/devnotes_live/121
Download Telegram
Forwarded from ai.dot(ufna, dev)
Чет не те игры мы делаем. Епрст.
Media is too big
VIEW IN TELEGRAM
Сервис для хранения и использования персональных данных. Акцент сайта- интересные иллюстрации
Сайт здесь
Как проектировать дизайн для продукта, который почти нельзя рекламировать

Статья о натуральном вине, про которое не расскажет реклама. Как выбрать бутылку вина? Узнай, как сомелье помогает любителям находить настоящие вкусы и почему этикетка играет важную роль в выборе напитка

Читать на дизайнерс | #статья
Forwarded from Denis Sexy IT 🤖
Media is too big
VIEW IN TELEGRAM
Приятно видеть как в руках талантливых людей нейроарт уже не слоп, а арт

Отсюда
Forwarded from Daily Coding 🔥
🛠 StatsMgr — это расширение для PostgreSQL, предназначенное для эффективного и упорядоченного управления статистикой.

🌍 Сайт

Daily Coding #инструменты #SQL & Max
Forwarded from Dezzigners
🧰 PICON — плагин, который бесплатно генерирует изображение по текстовому описанию

Dezzigners
Forwarded from ai.dot(ufna, dev)
Coufal_CV.pdf
178.3 KB
Крутой аниматор сейчас освободился и в поиске проекта на фуллтайм. Рекомендация — моя личная, если вам сейчас нужен аниматор/риггер/моделлер — пишите прямо Косте.

Часть демок есть на https://t-d-kzn.ru/ , но немалое — осталось за кадром.
Теневые блокировки Event Loop от deasync: как найти и устранить
В 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 оставалась стабильной под нагрузкой.
Вкус и польза в стиле Neo: новая визуальная концепция бренда DARIO

Новый дизайн упаковки DARIO Wellness Neo – современное и стильное решение для функциональных напитков. Использование натуральных оттенков и креативных коллажей фруктов подчеркивает их целебные свойства

Читать на дизайнерс | #кейс