Forwarded from PSD | Дизайн-пространство
This media is not supported in your browser
VIEW IN TELEGRAM
Дизайн веб-сайта для онлайн магазина походных ножей 🔪
Forwarded from PSD | Дизайн-пространство
Мобильное SaaS-приложение
Категория: #приложение
Язык: #en
https://dribbble.com/shots/23294724-Flowhub-SaaS-Mobile-App
Категория: #приложение
Язык: #en
https://dribbble.com/shots/23294724-Flowhub-SaaS-Mobile-App
Forwarded from PSD | Дизайн-пространство
Media is too big
VIEW IN TELEGRAM
Forwarded from PSD | Дизайн-пространство
B2B-интерфейсы перестают быть ужасными и скучными
Статья о том, как поддерживать здоровье на работе и справляться с повседневным стрессом. Важные советы для успешной работы и баланса между работой и отдыхом
Читать на дизайнерс | #статья
Статья о том, как поддерживать здоровье на работе и справляться с повседневным стрессом. Важные советы для успешной работы и баланса между работой и отдыхом
Читать на дизайнерс | #статья
Forwarded from Node.JS [ru] | Серверный JavaScript
Внутри статьи она подробно расписывает этапы собеседований, лайфхаки и делится учебными ресурсами, которые ей помогли.
Плюс девушка великодушно оставила ссылки на свой Notion с полезными заметками по математике и LLM.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from PSD | Дизайн-пространство
This media is not supported in your browser
VIEW IN TELEGRAM
Неплохая связка ИИ инстурментов 😎 🖤 🤨 , для тех, кто пилит продуктовые концепты.
Midjourney + Krea
Оригинал видео тут
Midjourney + Krea
Оригинал видео тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Daily Coding 🔥
🛠 PostGIS расширяет возможности реляционной базы данных PostgreSQL, добавляя поддержку хранения, индексирования и запросов к геопространственным данным.
🌍 Сайт
Daily Coding #инструменты #SQL & Max
🌍 Сайт
Daily Coding #инструменты #SQL & Max
Forwarded from эйай ньюз
В Vesuvius Challenge впервые прочитали весь обуглившийся свиток
Из-за того что папирус разлагается за несколько сотен лет, за тысячелетия было утеряно большинство текстов из той эпохи. Геркуланумским папирусам в каком-то смысле повезло — из-за извержения Везувия две тысячи лет назад свитки обуглились и были погребены, что позволило им сохраниться.
Уже в наше время вышло сделать трёхмерные сканы свитков при помощи рентгена и использовать нейросети для их "виртуального разворачивания". Таким образом в 2023 году победителям Vesuvius Challenge удалось прочитать небольшой отрывок из одного папируса, после чего нескольких участников наняли заниматься этим на постоянной основе, что привело к реконструкции содержимого всего свитка.
К сожалению, большая часть PHerc. 1667, расшифрованного свитка, была физически уничтожена во время нескольких попыток открыть его в 19 и 20 веке, так что из 19-24 сантиметров свитка, физически уцелело лишь 8. По нему понятно, что это стоический текст датированный 2 веком до нашей эры, у которого удалось идентифицировать автора — Аристокреона, ученика известного стоического философа Хрисиппа.
Остались ещё сотни свитков которые ждут своего часа, команда и не думает останавливаться. Новый текст из свитков в ближайшие годы станет регулярным событием.
Блогпост
@ai_newz
Из-за того что папирус разлагается за несколько сотен лет, за тысячелетия было утеряно большинство текстов из той эпохи. Геркуланумским папирусам в каком-то смысле повезло — из-за извержения Везувия две тысячи лет назад свитки обуглились и были погребены, что позволило им сохраниться.
Уже в наше время вышло сделать трёхмерные сканы свитков при помощи рентгена и использовать нейросети для их "виртуального разворачивания". Таким образом в 2023 году победителям Vesuvius Challenge удалось прочитать небольшой отрывок из одного папируса, после чего нескольких участников наняли заниматься этим на постоянной основе, что привело к реконструкции содержимого всего свитка.
К сожалению, большая часть PHerc. 1667, расшифрованного свитка, была физически уничтожена во время нескольких попыток открыть его в 19 и 20 веке, так что из 19-24 сантиметров свитка, физически уцелело лишь 8. По нему понятно, что это стоический текст датированный 2 веком до нашей эры, у которого удалось идентифицировать автора — Аристокреона, ученика известного стоического философа Хрисиппа.
Остались ещё сотни свитков которые ждут своего часа, команда и не думает останавливаться. Новый текст из свитков в ближайшие годы станет регулярным событием.
Блогпост
@ai_newz
Forwarded from Node.JS [ru] | Серверный JavaScript
Когда await превращается в троттлинг: микрозадачи, которые убивают latency
Event Loop в Node.js — штука предсказуемая. Цикл фаз: таймеры, I/O, poll, check, close. И между каждой макротаской прогоняются все микротаски, которые накопились. Каждый await создаёт микротаску. В спокойном микросервисе это незаметно, но под нагрузкой очередь микрозадач переполняет Event Loop, вызывая рост латентности без нагрузки на CPU.
Проблема: microtask queue overflow
Представь: async-функция в цикле обрабатывает пачку данных:
Каждая итерация пушит микротаску. Под нагрузкой очередь вырастает до десятков тысяч. Event Loop не успевает делать тики — latency растёт, хотя CPU свободен. Типичная ошибка: думать, что async всегда безопасен, и не замечать накладных расходов.
Диагностика: как найти виновника
Симптомы:
* латентность скачет под нагрузкой, но синхронные операции легковесные
* Event Loop utilization показывает всплески в фазе microtask
* таймеры и сокеты отвечают с задержкой, хотя процессор не на 100%
Для диагностики используй:
*
* логирование времени обработки микротаски через хук
Оптимизация: убираем лишние await
1. Не делай await в цикле, если функция синхронная. Вместо:
Просто:
2. Используй
3. Избегай
4. Тяжёлые операции уноси в фоновую очередь (Bull или BullMQ): не грузи Event Loop тем, что можно сделать отдельно.
Почему это критично в микросервисах?
При 5000 RPS и 20 микрозадачах на каждый запрос очередь вырастает до 100к. Чистка занимает миллисекунды — для highload это вечность. Практический совет: если функция могла быть синхронной — не делай её async. async — это не модно, это накладные расходы.
Вывод:
Диагностируй перегрузку Event Loop через мониторинг задержки, а оптимизируй — удалением лишних await и контролем конкурентности в циклах.
Event Loop в Node.js — штука предсказуемая. Цикл фаз: таймеры, I/O, poll, check, close. И между каждой макротаской прогоняются все микротаски, которые накопились. Каждый await создаёт микротаску. В спокойном микросервисе это незаметно, но под нагрузкой очередь микрозадач переполняет Event Loop, вызывая рост латентности без нагрузки на CPU.
Проблема: microtask queue overflow
Представь: async-функция в цикле обрабатывает пачку данных:
async function processBatch(items) {
for (const item of items) {
await processOne(item);
}
}Каждая итерация пушит микротаску. Под нагрузкой очередь вырастает до десятков тысяч. Event Loop не успевает делать тики — latency растёт, хотя CPU свободен. Типичная ошибка: думать, что async всегда безопасен, и не замечать накладных расходов.
Диагностика: как найти виновника
Симптомы:
* латентность скачет под нагрузкой, но синхронные операции легковесные
* Event Loop utilization показывает всплески в фазе microtask
* таймеры и сокеты отвечают с задержкой, хотя процессор не на 100%
Для диагностики используй:
*
perf_hooks.monitorEventLoopDelay() — если задержка растёт вместе с числом микрозадач* логирование времени обработки микротаски через хук
process.nextTick()Оптимизация: убираем лишние await
1. Не делай await в цикле, если функция синхронная. Вместо:
for (const item of items) await syncFunc(item);
Просто:
items.forEach(item => syncFunc(item));
2. Используй
Promise.all с контролем конкурентности:const CONCURRENCY = 10;
for (let i = 0; i < items.length; i += CONCURRENCY) {
await Promise.all(items.slice(i, i + CONCURRENCY).map(processOne));
}
3. Избегай
await с new Promise(resolve => ...) внутри циклов — отложи resolve, если возможно.4. Тяжёлые операции уноси в фоновую очередь (Bull или BullMQ): не грузи Event Loop тем, что можно сделать отдельно.
Почему это критично в микросервисах?
При 5000 RPS и 20 микрозадачах на каждый запрос очередь вырастает до 100к. Чистка занимает миллисекунды — для highload это вечность. Практический совет: если функция могла быть синхронной — не делай её async. async — это не модно, это накладные расходы.
Вывод:
Диагностируй перегрузку Event Loop через мониторинг задержки, а оптимизируй — удалением лишних await и контролем конкурентности в циклах.