Forwarded from Цифровой геноцид
Странные паттерны
Капиллярная чашка НАСА — это чашка для условий невесомости, разработанная астронавтом НАСА Дональдом Петтитом на Международной космической станции. Это открытая питьевая чашка, предназначенная для использования в условиях микрогравитации. Она появилась благодаря желанию Петтита пить воду в космосе без пакета и трубочки.
Основная идея в том, что для того, чтобы отказаться от трубочки, нужно создать внутренний угол чашки, который создает мощное поверхностное натяжение жидкости. Напиток естественным образом притягивается к острому краю и удерживается там, не разлетаясь по космическому кораблю.
https://www.rit.edu/vignellicenter/product-timecapsule/nasa-capillary-cup
При этом всегда понимал, что подобного рода вещи в значительной степени фейк, направленный на характерный маркетинг - космические ручки и тд и тп, вплоть до космических штанов для секса - в значительной степени создавались под влиянием маркетинга - запусти в космос продукт и готовая реклама.
Капиллярная чашка НАСА — это чашка для условий невесомости, разработанная астронавтом НАСА Дональдом Петтитом на Международной космической станции. Это открытая питьевая чашка, предназначенная для использования в условиях микрогравитации. Она появилась благодаря желанию Петтита пить воду в космосе без пакета и трубочки.
Основная идея в том, что для того, чтобы отказаться от трубочки, нужно создать внутренний угол чашки, который создает мощное поверхностное натяжение жидкости. Напиток естественным образом притягивается к острому краю и удерживается там, не разлетаясь по космическому кораблю.
https://www.rit.edu/vignellicenter/product-timecapsule/nasa-capillary-cup
При этом всегда понимал, что подобного рода вещи в значительной степени фейк, направленный на характерный маркетинг - космические ручки и тд и тп, вплоть до космических штанов для секса - в значительной степени создавались под влиянием маркетинга - запусти в космос продукт и готовая реклама.
Forwarded from Daily Coding 🔥
🛠 Zoomove - плагин для jQuery, который позволяет динамически масштабировать изображения при наведении курсора мыши. Он прост в установке и использовании и обладает рядом свойств, с помощью которых можно задать URL-адрес изображения, размер масштабирования и положение курсора. Он совместим с Chrome 42+, Firefox 41+, Safari 9+, Opera 29+ и IE 9+.
🌍 Сайт
Daily Coding #инструменты & Max
🌍 Сайт
Daily Coding #инструменты & Max
Forwarded from PSD | Дизайн-пространство
Айдентика для компании аксессуаров для дальнобойщиков - «КАТЕГОРИЯ Е»
«КАТЕГОРИЯ Е» — это компания, которая производит аксессуары для дальнобойщиков, концентрируясь на том, чтобы привнести уют в их тяжелый быт.
: Борис Заборский
«КАТЕГОРИЯ Е» — это компания, которая производит аксессуары для дальнобойщиков, концентрируясь на том, чтобы привнести уют в их тяжелый быт.
: Борис Заборский
Forwarded from Node.JS [ru] | Серверный JavaScript
process.nextTick: невидимый убийца event loop, который кладет production-сервисы
Кажется, что все знают про process.nextTick, но на практике я регулярно вижу, как он валит продакшен. Проблема в том, что он имеет высший приоритет в микротаск-очереди и выполняется до любого I/O и таймеров. Это делает его опасным при рекурсивном использовании.
Как рекурсивный nextTick убивает таймеры
Event loop после каждого макротаска вычищает все микротаски. process.nextTick — микротаск с наивысшим приоритетом. Рекурсия без выхода блокирует очередь:
После первого макротаска event loop заходит в микротаски. Там recursiveTick добавляет новый nextTick. И так бесконечно. setTimeout и setInterval не запускаются — они в макротасках, а микротаски не кончаются.
Production-кейс с кэшем и БД
У нас система с кэшем при ошибке доступа к БД в nextTick крутила переинициализацию соединения. В ошибочном сценарии — рекурсия. Результат: health-check’и молчали (таймеры не работали), входящие запросы висели, сервис падал веером. Типичная ошибка — думать, что nextTick безопасен для retry-логики.
Практические решения
* Никогда не используйте рекурсивный nextTick. Вместо него setImmediate — он ставит задачу в следующую фазу event loop, давая I/O и таймерам шанс:
* Если очередь нужна, добавьте лимит итераций. После, скажем, 1000 вызовов — принудительный yield через setTimeout(fn, 0).
* Для длинных цепочек используйте библиотеки для backpressure, иначе даже без бесконечной рекурсии производительность упадет.
Вывод:
process.nextTick ломает кооперативную природу event loop, и даже короткая рекурсия может полностью парализовать I/O и таймеры в production.
Кажется, что все знают про process.nextTick, но на практике я регулярно вижу, как он валит продакшен. Проблема в том, что он имеет высший приоритет в микротаск-очереди и выполняется до любого I/O и таймеров. Это делает его опасным при рекурсивном использовании.
Как рекурсивный nextTick убивает таймеры
Event loop после каждого макротаска вычищает все микротаски. process.nextTick — микротаск с наивысшим приоритетом. Рекурсия без выхода блокирует очередь:
function recursiveTick() {
process.nextTick(recursiveTick);
}
recursiveTick();После первого макротаска event loop заходит в микротаски. Там recursiveTick добавляет новый nextTick. И так бесконечно. setTimeout и setInterval не запускаются — они в макротасках, а микротаски не кончаются.
Production-кейс с кэшем и БД
У нас система с кэшем при ошибке доступа к БД в nextTick крутила переинициализацию соединения. В ошибочном сценарии — рекурсия. Результат: health-check’и молчали (таймеры не работали), входящие запросы висели, сервис падал веером. Типичная ошибка — думать, что nextTick безопасен для retry-логики.
Практические решения
* Никогда не используйте рекурсивный nextTick. Вместо него setImmediate — он ставит задачу в следующую фазу event loop, давая I/O и таймерам шанс:
function safeRecursive() {
// логика
setImmediate(safeRecursive);
}* Если очередь нужна, добавьте лимит итераций. После, скажем, 1000 вызовов — принудительный yield через setTimeout(fn, 0).
* Для длинных цепочек используйте библиотеки для backpressure, иначе даже без бесконечной рекурсии производительность упадет.
Вывод:
process.nextTick ломает кооперативную природу event loop, и даже короткая рекурсия может полностью парализовать I/O и таймеры в production.
Forwarded from Dezzigners
This media is not supported in your browser
VIEW IN TELEGRAM
🧰 Tooltip Creator — поможет быстро добавить комментарии и подсказки поверх готовых экранов
Dezzigners
Dezzigners
Forwarded from PSD | Дизайн-пространство
Please open Telegram to view this post
VIEW IN TELEGRAM