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 ai.dot(ufna, dev)
А это вы видели? Загружаем модельку вам прямо в браузер!

https://huggingface.co/spaces/webml-community/gemma-4-webgpu-kernels
Forwarded from Daily Coding 🔥
Погрузитесь в ИТ за 5 дней и получите доступ к высокооплачиваемым вакансиям!

Бесплатный короткий курс для тех, кто хочет не просто понять, чем занимаются айтишники, но и получить реальный опыт работы с ИТ‑системами.

Всего за 5 дней вы освоите ключевые компоненты ИТ‑сферы, разберёте 6 профессий и получите возможность выйти на зарплату 150–250 тыс.

Курс полностью практический. 8 мини‑проектов с реальными задачами, где вы научитесь: писать код, работать с инфраструктурой, разбираться в сетях, облаке и защите данных.

Подойдёт новичкам и тем, кто уже в ИТ. Количество мест ограничено — регистрируйтесь по ссылке и начинайте практику.

Реклама. Информация о рекламодателе по ссылкам в посте.
Forwarded from Daily Coding 🔥
📖Collaborative Software Design
🖋Baas-Schwegler Kenny, Van Kelle Evelyn, Verschatse Gien 2025

В книге «Совместное проектирование программного обеспечения» вы познакомитесь с принципами, методами и инструментами, способствующими безопасному общению при выявлении бизнес-проблем, формализации требований и реализации программного проекта. В ней рассказывается о таких признанных инструментах совместного моделирования, как «штурм событий», «составление примеров», «составление карт Уордли» и «сторителлинг предметной области», а также о уникальных подходах к управлению когнитивными искажениями, конфликтами и организационной иерархией. Независимо от того, являетесь ли вы заинтересованной стороной в бизнесе, техническим специалистом или профессиональным координатором, вы научитесь слышать всех участников процесса и извлекать пользу из их вклада.

💾 Скачать книгу

Daily Coding #книги #архитектура & Max
Event Loop Lag при тысячах setTimeout: как очередь таймеров убивает latency в production

Когда на сервере больше 1000 активных setTimeout или setInterval, latency неожиданно растет, I/O начинает тормозить, а пользователи жалуются на задержки. Многие разработчики считают, что таймеры безвредны, но на практике их перебор в одной фазе event loop блокирует весь tick.

Всё упирается в фазы цикла событий:
- timers — коллбеки от setTimeout и setInterval
- pending callbacks — I/O ошибки
- idle, prepare — внутренняя кухня libuv
- poll — новые I/O события
- check — очередь setImmediate
- close callbacks — закрытие соединений

Проблема: когда у вас 10 000 активных setTimeout, фаза timers отрабатывает десятки миллисекунд. Всё остальное стоит в очереди. I/O, новые запросы, ответы — всё ждёт, пока переберутся таймеры.

Реальный случай из практики
Был сервис с heartbeats для клиентов. Каждый клиент держал рекурсивный setTimeout:

function heartBeat(clientId) {
setTimeout(() => {
// Тяжёлая операция с БД + проверка состояния
heartBeat(clientId);
}, 1000);
}


Для 5000 клиентов каждый tick на фазе timers прогонял до 5000 коллбеков. Попутно лагали все остальные запросы — пользователи чувствовали задержки, мониторинг показывал event loop lag > 100ms.

Что с этим делать?
Во-первых, отлаживать. Берём профайлер Node.js:

node --prof app.js


Смотрим лог — находим, сколько времени уходит на фазу timers. Часто это открытие.

Во-вторых, оптимизировать.
- Ограничьте количество активных таймеров. Сгруппируйте несколько heartbeat-задач в один setInterval.
- Там, где возможна замена, используйте setImmediate. Он живёт на фазе check — не блокирует poll и timers.
- Мониторьте event loop lag через process.hrtime или модуль event-loop-stats. Если lag > 50ms — это звоночек.

Можно ещё раскидать тяжёлые таймерные задачи по worker_threads — чтобы они не тормозили главный поток.

Вывод:
Большое количество таймеров — тихий убийца производительности, который часто замечают слишком поздно, но своевременный профилинг и рефакторинг очередей могут снизить latency в разы.
Forwarded from Dezzigners
🧰 Isometric Scene Creator — большой набор (почти 50ГБ) высококачественных мокапов для Photoshop, с помощью которых вы сможете презентовать свой дизайн заказчику или в портфолио

Скачать

Dezzigners
Forwarded from Dezzigners
Forwarded from Dezzigners
Forwarded from Dezzigners
Forwarded from Daily Coding 🔥
This media is not supported in your browser
VIEW IN TELEGRAM
Нейросети уже заменяют носителей языка.

В Telegram быстро набирает популярность ИИ-девушка Chatty, с которой можно голосом практиковать живой разговорный английский и ещё 12 языков на основе новейших моделей искусственного интеллекта. Попробовать можно бесплатно.

🇬🇧 Английский: @ChattyTutorBot
🇩🇪 Немецкий: @ChattyGermanBot
🇪🇸 Испанский: @ChattySpanishBot
🇫🇷 Французский: @ChattyFrenchBot
🇮🇹 Итальянский: @ChattyItalianBot
🇵🇹 Португальский: @ChattyPortugueseBot
🇨🇳 Китайский: @ChattyChineseBot
🇯🇵 Японский: @ChattyJapaneseBot
🇰🇷 Корейский: @ChattyKoreanBot
🇸🇦 Арабский: @ChattyArabicBot
🇹🇷 Турецкий: @ChattyTurkishBot
🇷🇺 Русский: @ChattyRussianBot
🇵🇱 Польский: @ChattyPolandBot
Forwarded from Dezzigners
This media is not supported in your browser
VIEW IN TELEGRAM
Нейросети уже заменяют носителей языка.

В Telegram быстро набирает популярность ИИ-девушка Chatty, с которой можно голосом практиковать живой разговорный английский и ещё 12 языков на основе новейших моделей искусственного интеллекта. Попробовать можно бесплатно.

🇬🇧 Английский: @ChattyTutorBot
🇩🇪 Немецкий: @ChattyGermanBot
🇪🇸 Испанский: @ChattySpanishBot
🇫🇷 Французский: @ChattyFrenchBot
🇮🇹 Итальянский: @ChattyItalianBot
🇵🇹 Португальский: @ChattyPortugueseBot
🇨🇳 Китайский: @ChattyChineseBot
🇯🇵 Японский: @ChattyJapaneseBot
🇰🇷 Корейский: @ChattyKoreanBot
🇸🇦 Арабский: @ChattyArabicBot
🇹🇷 Турецкий: @ChattyTurkishBot
🇷🇺 Русский: @ChattyRussianBot
🇵🇱 Польский: @ChattyPolandBot
Forwarded from Design Board
☕️
СФЕРА RGB В FIGMA ЗА 7 МИН.

Урок по созданию сферы RGB в Figma.


#Урок
Forwarded from Daily Coding 🔥
📖Learning GitHub Copilot
🖋Laster Brent 2025

Повысьте продуктивность написания кода с помощью генеративного искусственного интеллекта GitHub Copilot. В этом практическом руководстве автор Брент Ластер расскажет, как использовать генеративный искусственный интеллект для более быстрого написания качественного кода, простого создания тестов, безупречной документации на любом этапе разработки и многого другого. Вы также узнаете о более продвинутых способах использования, таких как использование функции Copilot Agent для автономного добавления функций и автоматического просмотра запросов на включение изменений.

💾 Скачать книгу

Daily Coding #книги #Git & Max
process.nextTick в дебаунсерах: как сделать Event Loop неубиваемым?

Кажется, что process.nextTick быстрее setTimeout(fn, 0), поэтому его часто используют в дебаунсерах. Но в production это может заблокировать Event Loop, превратив приложение в тормознутый монолит. Ошибка в том, что разработчики путают микрозадачи с макрозадачами и не видят последствий.

Почему nextTick опасен в дебаунсере?

process.nextTick выполняется до всех фаз Event Loop, включая I/O и таймеры. Если дебаунсер вызывает nextTick рекурсивно или на каждое событие, микрозадачи забивают очередь, и Event Loop не может перейти к другим фазам. Результат: CPU 100%, запросы висят, приложение умирает.

* nextTick никогда не даст выполниться I/O, пока его очередь не опустеет.
* Это убивает производительность при частых событиях, например, в WebSocket или resize.

Что происходит под капотом?

Когда вы пишете:

function badDebounce(fn) {
let pending = false;
return function() {
if (!pending) {
pending = true;
process.nextTick(() => {
pending = false;
fn();
});
}
};
}


То при каждом вызове кладется микрозадача. Если событие приходит каждую миллисекунду, Event Loop не успевает обработать I/O, таймеры или setImmediate. Это классический starvation.

Как диагностировать проблему?

* Используйте node --inspect и CPU profiling: ищите много вызовов nextTick в стеке.
* Clinic.js покажет, как микрозадачи занимают 100% цикла.
* Старый трюк — замер времени через process.hrtime.bigint(): если setImmediate выполняется с большой задержкой, значит, nextTick блокирует.

Правильный дебаунс — через setTimeout

function debounce(fn, delay) {
let timer = null;
return function() {
clearTimeout(timer);
timer = setTimeout(() => fn.apply(this, arguments), delay);
};
}


Это макрозадача, которая не блокирует Event Loop. setTimeout корректно обрабатывает события на I/O фазе и не вызывает starvation.

Когда nextTick оправдан?

Только для синхронной обработки ошибок или действий, которые должны выполниться строго до следующей фазы. В дебаунсерах — никогда.

Если приложение тормозит на событиях, первым делом проверяйте дебаунсеры на наличие process.nextTick. Это частая причина падения производительности в Node.js.

Вывод:
process.nextTick в дебаунсере блокирует Event Loop и приводит к starvation I/O, используйте setTimeout как единственно правильный вариант, чтобы не убить производительность в production.
Forwarded from Dezzigners
This media is not supported in your browser
VIEW IN TELEGRAM
🧰 Draw Connector — плагин, позволяющий вести стрелки между частями вашего проекта

Dezzigners