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 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 – современное и стильное решение для функциональных напитков. Использование натуральных оттенков и креативных коллажей фруктов подчеркивает их целебные свойства

Читать на дизайнерс | #кейс
Surfjedi Туры серфинга
Ссылка на проект

Поиск по теме:
#путешествия #туризм
Forwarded from Daily Coding 🔥
🛠 Color Info - плагин, который предоставляет вам различную информацию о цветах, которые вы использовали в своем CSS. Наведя курсор на цвет, вы можете увидеть увеличенное изображение того, как он выглядит, а также информацию о его переводе во все форматы (hex, rgb, hsl и cmyk).

🌍 Сайт

Daily Coding #инструменты #CSS & Max
Диагностика и устранение deferred reference cycles в WeakRef и FinalizationRegistry: кэши и пулы в долгоживущих процессах

С WeakRef и FinalizationRegistry в Node.js можно получить скрытые утечки памяти, когда объекты в кэшах и пулах соединений не освобождаются из-за циклических ссылок через cleanup-функции. В production это проявляется как постепенный рост heap в долгоживущих процессах.

Ловушка deferred cycles
Основная проблема - передача объекта (например, socket) в FinalizationRegistry как heldValue внутри cleanup-функции, которая замыкается на тот же объект. Пока cleanup висит в очереди, GC не может освободить объект, так как registry его удерживает.
const registry = new FinalizationRegistry((heldValue) => {
heldValue.socket.destroy();
});

class CachedConnection {
constructor(socket) {
this.socket = socket;
registry.register(this, this); // цикл: this как heldValue
}
}


Диагностика
- Используй heap snapshots через --inspect: ищи цепочку WeakRef -> Object -> FinalizationRegistry
- Следи за process.memoryUsage().heapUsed при простое - рост без причины признак deferred cycle
- Логируй вызовы FinalizationRegistry: если cleanup не происходит после удаления всех внешних ссылок, цикл активен

Production-ориентированный совет
Для пулов соединений храни только идентификаторы в WeakRef, а реальные объекты - в отдельном Map с таймаутом.
registry.register(this, this.socket.id); // примитив, разрывает цикл

Или используй явную отписку:
registry.unregister(this) // перед удалением ссылки


Типичная ошибка
Передача в registry объекта с методами, которые держат ссылки на другие ресурсы. Это создает неявные циклы, которые GC не распознает.

Вывод: Deferred reference cycles - это скрытые утечки, которые требует диагностики через heap snapshots и разрыва замыканий через примитивы в FinalizationRegistry.
Фича в портфолио, которую почти никто не делает — хотя все хотят выделиться

Автор разбирает одну простую, но крайне редкую «фичу», которую почти никто не добавляет в портфолио — хотя именно она сильно помогает выделиться. Если вы устали от однотипных кейсов и хотите, чтобы ваше портфолио запоминали, стоит прочитать.

Читать на дизайнерс | #Карьера #Продуктовыйдизайн
Forwarded from Denis Sexy IT 🤖
Нашел классный АИ-проект из опенсорса за ~60$

1. Raspberry Pi слушает ваш балкон/оуно и определяет птиц которые были рядом

2. txt2img нейронка генерирует иллюстрацию этой птицы

3. сгенерированные птицы собираются в интерактивный коллаж, где на каждую можно кликнуть, почитать, посмотреть как в полете выглядит и тп

4. если вывести на отдельный экран, будет ваш персональный постер птиц

Тут исходники и инструкция:
https://github.com/Twarner491/AvianVisitors

А тут пример дашборда с птицами:
https://bird.onethreenine.net