Forwarded from PSD | Дизайн-пространство
This media is not supported in your browser
VIEW IN TELEGRAM
Coca-Cola выпустила новую традиционную рождественскую рекламу, но она полностью создана при помощи ИИ🥤❄️
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Node.JS [ru] | Серверный JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Daily Coding 🔥
Изучите ИИ за несколько вечеров — и начните делать работу вдвое быстрее
Пока одни тратят часы на рутину, другие уже используют ИИ и освобождают время. Навыки работы с ИИ сегодня помогают работать меньше, а зарабатывать больше.
На бесплатном мини-курсе вы научитесь:
— Делать свою работу быстрее
— Делегировать ИИ тексты, аналитику и маркетинг
— Автоматизировать рутинные задачи
— Расти в профессии и карьере
Без сложного кода и бесконечной теории — только практика, мини-проекты и быстрые результаты. Переходите по ссылке и регистрируйтесь бесплатно.
Реклама. Информация о рекламодателе по ссылкам в посте.
Пока одни тратят часы на рутину, другие уже используют ИИ и освобождают время. Навыки работы с ИИ сегодня помогают работать меньше, а зарабатывать больше.
На бесплатном мини-курсе вы научитесь:
— Делать свою работу быстрее
— Делегировать ИИ тексты, аналитику и маркетинг
— Автоматизировать рутинные задачи
— Расти в профессии и карьере
Без сложного кода и бесконечной теории — только практика, мини-проекты и быстрые результаты. Переходите по ссылке и регистрируйтесь бесплатно.
Реклама. Информация о рекламодателе по ссылкам в посте.
Forwarded from Daily Coding 🔥
📖AI for Everyday IT
🖋Abshire Brandon, LeMaire Chrissy 2025
Что, если бы вам больше никогда не приходилось писать отчеты об инцидентах, шаблонный код или аналитические обзоры с нуля? Используйте инструменты на основе искусственного интеллекта, такие как ChatGPT, Claude, Gemini и Copilot, и вы сэкономите себе часы времени, а то и больше! AI for Everyday IT рассказывает, как с помощью генеративного искусственного интеллекта автоматизировать десятки повседневных ИТ-задач.
💾 Скачать книгу
Daily Coding #книги #AI & Max
🖋Abshire Brandon, LeMaire Chrissy 2025
Что, если бы вам больше никогда не приходилось писать отчеты об инцидентах, шаблонный код или аналитические обзоры с нуля? Используйте инструменты на основе искусственного интеллекта, такие как ChatGPT, Claude, Gemini и Copilot, и вы сэкономите себе часы времени, а то и больше! AI for Everyday IT рассказывает, как с помощью генеративного искусственного интеллекта автоматизировать десятки повседневных ИТ-задач.
💾 Скачать книгу
Daily Coding #книги #AI & Max
Forwarded from Node.JS [ru] | Серверный JavaScript
Как temporal.io SDK ломает V8 heap snapshot в длительных Workflow
Если ваш Workflow Execution живёт неделями, готовьтесь к сюрпризам: V8 перестаёт адекватно собирать мусор, а heap snapshot превращается в помойку из ретейнеров. Частая ошибка — считать, что GC справится сам, но Temporal SDK активно мешает ему.
Почему GC не работает
SDK держит один V8 isolate на весь Worker. Пока Workflow крутится, Temporal сохраняет историю состояний и коллбэки. V8 честно чистит память, но SDK не даёт объектам уйти через замыкания в таймерах и маппингах.
Production-кейс: Map на миллион элементов
Пишете долгий воркфлоу с
Практические советы
* Обновляйтесь до
* Чистите
* Дёргайте
* Мониторьте heap через
Вывод: В длительных Workflow явное управление памятью важнее надежды на GC — закладывайте очистку структур данных и рестарты Worker в архитектуру с самого начала.
Если ваш Workflow Execution живёт неделями, готовьтесь к сюрпризам: V8 перестаёт адекватно собирать мусор, а heap snapshot превращается в помойку из ретейнеров. Частая ошибка — считать, что GC справится сам, но Temporal SDK активно мешает ему.
Почему GC не работает
SDK держит один V8 isolate на весь Worker. Пока Workflow крутится, Temporal сохраняет историю состояний и коллбэки. V8 честно чистит память, но SDK не даёт объектам уйти через замыкания в таймерах и маппингах.
WeakRef и FinalizationRegistry в детерминированном коде — отдельная боль: GC просто не видит, что объекты уже никому не нужны. В результате в heap зависают ретейнеры вроде WorkflowContext и ActivityContext.Production-кейс: Map на миллион элементов
Пишете долгий воркфлоу с
Map на миллион элементов, потом ставите Workflow.sleep('1 year'). Этот Map останется в памяти до перезапуска воркера. Почему: SDK замораживает каждое состояние через Object.freeze(), и ссылки на объекты в V8 heap остаются. V8 считает их живыми, пока isolate жив — heap аккумулируется, RSS ползёт вверх, GC тормозит.Практические советы
* Обновляйтесь до
@temporalio/workflow >=1.8.0 — там появился явный context.reset().* Чистите
Map и Set руками: largeMap.clear().* Дёргайте
maxWorkflowCachedExecution, чтобы принудительно пересоздавать isolate.* Мониторьте heap через
process.memoryUsage() и рестартуйте Worker, если память перевалила за лимит.Вывод: В длительных Workflow явное управление памятью важнее надежды на GC — закладывайте очистку структур данных и рестарты Worker в архитектуру с самого начала.
Forwarded from Node.JS [ru] | Серверный JavaScript
На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранение проблем»
В программе только важные аспекты:
— troubleshooting Docker и образов
— диагностика сетевых проблем
— настройка readiness/liveness probes
— отладка pod’ов, деплоев и ingress
— анализ логов контейнеров и кластера
— разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других
Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам
48 часов доступен со скидкой 25%
↗️ Пройти курс на Stepik
В программе только важные аспекты:
— troubleshooting Docker и образов
— диагностика сетевых проблем
— настройка readiness/liveness probes
— отладка pod’ов, деплоев и ingress
— анализ логов контейнеров и кластера
— разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других
Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам
48 часов доступен со скидкой 25%
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Daily Coding 🔥
📖Video Game Design For Dummies
🖋Mandeville Alexia 2025
Книга «Разработка видеоигр для чайников» расскажет вам, что нужно для создания игр — от разработки концепции до завершения проекта. Вы изучите теорию, лежащую в основе создания увлекательных игр, и познакомитесь с инструментами, которые помогут воплотить ваши игровые идеи в жизнь. Опытный разработчик видеоигр научит вас основам игрового дизайна, а также тому, как мотивировать игроков и вовлекать их в процесс. Выбирайте подходящие игровые движки и инструменты для разработки любого проекта и получайте пошаговые рекомендации по тестированию и отладке созданных вами игр.
💾 Скачать книгу
Daily Coding #книги #gamedev & Max
🖋Mandeville Alexia 2025
Книга «Разработка видеоигр для чайников» расскажет вам, что нужно для создания игр — от разработки концепции до завершения проекта. Вы изучите теорию, лежащую в основе создания увлекательных игр, и познакомитесь с инструментами, которые помогут воплотить ваши игровые идеи в жизнь. Опытный разработчик видеоигр научит вас основам игрового дизайна, а также тому, как мотивировать игроков и вовлекать их в процесс. Выбирайте подходящие игровые движки и инструменты для разработки любого проекта и получайте пошаговые рекомендации по тестированию и отладке созданных вами игр.
💾 Скачать книгу
Daily Coding #книги #gamedev & Max
Forwarded from Node.JS [ru] | Серверный JavaScript
False Sharing в SharedArrayBuffer на NUMA: скрытый убийца производительности Node.js
Параллельная обработка данных через worker_threads с SharedArrayBuffer часто даёт неожиданное падение производительности вместо ожидаемого ускорения. Причина — false sharing, который на NUMA-системах с несколькими сокетами может снижать пропускную способность в десятки раз, оставаясь незамеченным в обычных профилировщиках.
Суть проблемы
Когда два воркера пишут в разные элементы одного Int32Array, но они попадают в одну кэш-линию (64 байта = 16 int32), процессор инвалидирует кэш у соседнего ядра. Протокол MESI создаёт лавину обменов между L1-кэшами, а на NUMA это усугубляется межсокетными задержками.
Диагностика через аппаратные счётчики
Используйте perf для выявления:
Резкий рост LLC misses при добавлении воркеров — явный признак. На NUMA добавьте проверку uncore_imc событий для обнаружения межсокетных обращений.
Устранение: padding и привязка к NUMA
Разделите данные на границы кэш-линии — отступ в 16 элементов для Int32Array:
Это устраняет конфликт, но не решает проблему доступа к памяти другого сокета. Привяжите воркеров к локальным нодам через numactl или модуль numa-bindings:
Типичная ошибка
Многие разработчики используют Atomics.store/load каждую итерацию, пытаясь синхронизировать данные. Это лишь добавляет барьеры памяти и усугубляет false sharing. Используйте редкую синхронизацию (раз в N итераций) или локальные буферы с периодическим слиянием.
Production-совет
На высоких нагрузках (8+ ядер) комбинация padding + привязка к локальной памяти даёт прирост 5-10 раз. Для 4-сокетных систем используйте распределение SharedArrayBuffer через libnuma: массив делится на сегменты по числу нод, каждый воркер пишет только в свой сегмент.
Вывод: False sharing на NUMA требует обязательного выравнивания по кэш-линии и привязки worker_threads к локальным нодам памяти — только так можно получить реальный прирост от параллельной обработки.
Параллельная обработка данных через worker_threads с SharedArrayBuffer часто даёт неожиданное падение производительности вместо ожидаемого ускорения. Причина — false sharing, который на NUMA-системах с несколькими сокетами может снижать пропускную способность в десятки раз, оставаясь незамеченным в обычных профилировщиках.
Суть проблемы
Когда два воркера пишут в разные элементы одного Int32Array, но они попадают в одну кэш-линию (64 байта = 16 int32), процессор инвалидирует кэш у соседнего ядра. Протокол MESI создаёт лавину обменов между L1-кэшами, а на NUMA это усугубляется межсокетными задержками.
// Проблемный код: data[0] и data[1] в одной кэш-линии
const sharedBuffer = new SharedArrayBuffer(4 * 1024);
const data = new Int32Array(sharedBuffer);
// Worker 1: data[0]++ | Worker 2: data[1]++
Диагностика через аппаратные счётчики
Используйте perf для выявления:
perf stat -e cache-misses,cache-references,LLC-load-misses node app.js
Резкий рост LLC misses при добавлении воркеров — явный признак. На NUMA добавьте проверку uncore_imc событий для обнаружения межсокетных обращений.
Устранение: padding и привязка к NUMA
Разделите данные на границы кэш-линии — отступ в 16 элементов для Int32Array:
const CACHE_LINE = 16;
const realIndex = workerId * CACHE_LINE;
Это устраняет конфликт, но не решает проблему доступа к памяти другого сокета. Привяжите воркеров к локальным нодам через numactl или модуль numa-bindings:
// Привязка к NUMA-ноде 0
worker.setEnvironment({ 'NODE_NUMA_NODE': '0' });
Типичная ошибка
Многие разработчики используют Atomics.store/load каждую итерацию, пытаясь синхронизировать данные. Это лишь добавляет барьеры памяти и усугубляет false sharing. Используйте редкую синхронизацию (раз в N итераций) или локальные буферы с периодическим слиянием.
Production-совет
На высоких нагрузках (8+ ядер) комбинация padding + привязка к локальной памяти даёт прирост 5-10 раз. Для 4-сокетных систем используйте распределение SharedArrayBuffer через libnuma: массив делится на сегменты по числу нод, каждый воркер пишет только в свой сегмент.
Вывод: False sharing на NUMA требует обязательного выравнивания по кэш-линии и привязки worker_threads к локальным нодам памяти — только так можно получить реальный прирост от параллельной обработки.
Forwarded from PSD | Дизайн-пространство
Media is too big
VIEW IN TELEGRAM
Один из сайтов Spotify, созданный для сближения и объединения людей. Живой пример инклюзивности в дизайне. Небольшой сайт с 3D объектами и вложенными в них историями и видео от разных пользователей, учатников и создателей Spotify.
Сайт тут
Сайт тут