Forwarded from PSD | Дизайн-пространство
6 вопросов про менторинг
Полезная статья в формате FAQ, где отвечают на самые частые вопросы о менторинге: чем он отличается от курсов, что входит в работу с ментором, можно ли его менять и как правильно выбрать. Отличный материал для тех, кто рассматривает менторинг как следующий шаг в развитии.
Читать на дизайнерс | #Карьера
Полезная статья в формате FAQ, где отвечают на самые частые вопросы о менторинге: чем он отличается от курсов, что входит в работу с ментором, можно ли его менять и как правильно выбрать. Отличный материал для тех, кто рассматривает менторинг как следующий шаг в развитии.
Читать на дизайнерс | #Карьера
Forwarded from Дизайн-Телега 🔥
Как мы создавали джингл «Додо Пиццы»
Откройте мир звукового брендинга: как звуки могут создавать эмоциональную связь с продуктом
Читать на дизайнерс | #статья
Откройте мир звукового брендинга: как звуки могут создавать эмоциональную связь с продуктом
Читать на дизайнерс | #статья
Forwarded from UI_UX inspiration
Мобильное приложение для фрилансеров
Категория: #приложение
Язык: #en
https://.com/shots/27243753-Freelance-Project-Briefs
Чат UI/UX
Категория: #приложение
Язык: #en
https://.com/shots/27243753-Freelance-Project-Briefs
Чат UI/UX
Forwarded from UI_UX inspiration
Forwarded from Daily Coding 🔥
🛠 PHP VCR —записывайте HTTP-взаимодействия вашего набора тестов и воспроизводите их при последующих запусках для быстрого, детерминированного и точного тестирования.
🌍 Сайт
Daily Coding #инструменты #PHP & Max
🌍 Сайт
Daily Coding #инструменты #PHP & Max
Forwarded from Node.JS [ru] | Серверный JavaScript
Диагностика и устранение гонок данных при конкурентном доступе к
В production сценариях с worker_threads и in-memory SQLite в WAL режиме разработчики часто забывают синхронизировать доступ. Итог —
Проблема: гонка без синхронизации
Несколько воркеров читают и пишут в одну in-memory базу без внешней координации. WAL помогает с параллельным чтением, но не спасает от гонок записи. Типичные проявления: ошибки
Решение: один писатель с явными блокировками
Выделите один воркер для критических записей (например, инкременты). Координируйте через
Production-oriented пример с
Начиная с Node.js 23 используйте
Предупреждение: in-memory WAL не для продакшена
In-memory база теряет данные при краше. Для реальных проектов используйте файловую базу с WAL — это гарантирует персистентность.
Вывод: гонки данных в SQLite лечатся одним писателем и явными блокировками через
node:sqlite из worker_threads через in-memory WAL-режимВ production сценариях с worker_threads и in-memory SQLite в WAL режиме разработчики часто забывают синхронизировать доступ. Итог —
SQLITE_BUSY, рассинхрон данных и дубли в уникальных полях.Проблема: гонка без синхронизации
Несколько воркеров читают и пишут в одну in-memory базу без внешней координации. WAL помогает с параллельным чтением, но не спасает от гонок записи. Типичные проявления: ошибки
SQLITE_BUSY, частичные обновления и потеря данных.Решение: один писатель с явными блокировками
Выделите один воркер для критических записей (например, инкременты). Координируйте через
SharedArrayBuffer и Atomics — это дешевле мьютексов. Воркеры-читатели используют отдельные соединения в WAL.Production-oriented пример с
BEGIN IMMEDIATEНачиная с Node.js 23 используйте
DatabaseSync. Обязательно PRAGMA journal_mode=WAL; и PRAGMA synchronous=NORMAL;:import { DatabaseSync } from 'node:sqlite';
const db = new DatabaseSync(':memory:', { readwrite: true, create: true });
db.exec('PRAGMA journal_mode=WAL;');
db.exec('PRAGMA synchronous=NORMAL;');
function safeUpdate(sql) {
db.exec('BEGIN IMMEDIATE;');
try {
db.exec(sql);
db.exec('COMMIT;');
} catch {
db.exec('ROLLBACK;');
throw new Error('Write failed');
}
}BEGIN IMMEDIATE блокирует запись сразу, избегая гонок. Без него два воркера могут начать транзакции одновременно — ловите SQLITE_BUSY.Предупреждение: in-memory WAL не для продакшена
In-memory база теряет данные при краше. Для реальных проектов используйте файловую базу с WAL — это гарантирует персистентность.
Вывод: гонки данных в SQLite лечатся одним писателем и явными блокировками через
BEGIN IMMEDIATE, давая скорость WAL без потери консистентности.Forwarded from UI_UX inspiration
Прототип дизайна для химчистки
Категория: #приложение
Язык: #en
https://.com/shots/16226238-Washted-Laundry-app-exploration
Категория: #приложение
Язык: #en
https://.com/shots/16226238-Washted-Laundry-app-exploration
Forwarded from UI_UX inspiration
Мобильное приложение персонального планировщика
Категория: #приложение
Язык: #en
https://.com/shots/25109333-Personal-Planner-Mobile-App-Concept
Чат UI/UX
Категория: #приложение
Язык: #en
https://.com/shots/25109333-Personal-Planner-Mobile-App-Concept
Чат UI/UX
Forwarded from Дизайн-Телега 🔥
Китайский чай: как выглядит индустрия, где кофе не главный
Стремление замечать необычное в повседневном и любовь к изучению упаковки в разных странах привели меня к созданию проекта "Дизайн-коммуналка" вместе с Дашей и Катей. Опыт, новые идеи и визуальные решения — вот что вдохновляет меня
Читать на дизайнерс | #статья
Стремление замечать необычное в повседневном и любовь к изучению упаковки в разных странах привели меня к созданию проекта "Дизайн-коммуналка" вместе с Дашей и Катей. Опыт, новые идеи и визуальные решения — вот что вдохновляет меня
Читать на дизайнерс | #статья
Forwarded from PSD | Дизайн-пространство
Китайский чай: как выглядит индустрия, где кофе не главный
Стремление замечать необычное в повседневном и любовь к изучению упаковки в разных странах привели меня к созданию проекта "Дизайн-коммуналка" вместе с Дашей и Катей. Опыт, новые идеи и визуальные решения — вот что вдохновляет меня
Читать на дизайнерс | #статья
Стремление замечать необычное в повседневном и любовь к изучению упаковки в разных странах привели меня к созданию проекта "Дизайн-коммуналка" вместе с Дашей и Катей. Опыт, новые идеи и визуальные решения — вот что вдохновляет меня
Читать на дизайнерс | #статья
Forwarded from Daily Coding 🔥
🛠 Wagtail — это система управления контентом с открытым исходным кодом, созданная на основе Django, с активным сообществом и коммерческой поддержкой. Она ориентирована на удобство использования и предоставляет широкие возможности для дизайнеров и разработчиков.
🌍 Сайт
Daily Coding #инструменты #Python & Max
🌍 Сайт
Daily Coding #инструменты #Python & Max
Forwarded from UI_UX inspiration
Forwarded from UI_UX inspiration
Forwarded from Node.JS [ru] | Серверный JavaScript
Скрытый убийца производительности: синхронный DNS в
Высоконагруженный HTTP-клиент на Node.js внезапно теряет пропускную способность? Event loop залипает при большом количестве параллельных запросов? Чаще всего проблема не в HTTP, а в том, как система разрешает доменные имена.
В чем суть?
Как диагностировать?
1. Подключить
2. Использовать
3.
Как устранить?
Для
Типичная ошибка: использование только
Вывод: блокировка из-за
dns.lookup под нагрузкойВысоконагруженный HTTP-клиент на Node.js внезапно теряет пропускную способность? Event loop залипает при большом количестве параллельных запросов? Чаще всего проблема не в HTTP, а в том, как система разрешает доменные имена.
В чем суть?
dns.lookup (используется http.request, https, axios по умолчанию) при вызове без флагов обращается к системному getaddrinfo через libuv. Этот вызов синхронный и блокирует event loop на время резолвинга. При 1000+ RPS latency одного разрешения (например, 50 мс) превращается в 50 000 мс общего блокирования цикла.Как диагностировать?
1. Подключить
dns.promises и выполнить dns.promises.lookup при нагрузке. Если event loop задерживает микротаски, виновник найден.2. Использовать
process.hrtime.bigint() до и после dns.lookup - разница > 10 мс системного времени указывает на проблему.3.
clinic doctor - на графике async latency видны ступеньки, совпадающие с пиками DNS-запросов.Как устранить?
Для
http(s) агентов - замена на асинхронный DNS:const { createConnection } = require('net');
const dns = require('dns/promises');
const agent = new http.Agent({
createConnection: async (options, cb) => {
const { address } = await dns.lookup(options.hostname);
const socket = createConnection({ ...options, host: address });
cb(null, socket);
},
});Типичная ошибка: использование только
maxSockets или scheduling: 'lifo' снижает частоту новых соединений, но не решает первопричину при множестве уникальных хостов. Проще - библиотеки dns-cache или cacheable-lookup.Вывод: блокировка из-за
dns.lookup - классическая проблема одного потока Node.js на стыке системных вызовов, решается заменой на асинхронное разрешение через dns.promises или кастомный агент.Forwarded from Daily Coding 🔥
Каждый найдет что-то по душе:
1202 ГБ — Python
1811 ГБ — Frontend
1100 ГБ — C / C++ / C#
804 ГБ — Java
411 ГБ — SQL & БД
309 ГБ — DevOps
998 ГБ — ИБ & Хакинг
773 ГБ — Kotlin / Swift
189 ГБ — PHP
201 ГБ — GoLang
170 ГБ — Rust
167 ГБ — QA / Тестирование
310 ГБ — 1C + Лицензии
495 ГБ — Машинное обучение
704 ГБ — Аналитика Данных
991 ГБ — Дизайн
Материалы в закрепе, постоянно пополняются👆🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from UI_UX inspiration
Мобильное приложение с мировым временем
Категория: #приложение
Язык: #en
https://.com/shots/26376023-World-Time-Mobile-App-UI
Чат UI/UX
Категория: #приложение
Язык: #en
https://.com/shots/26376023-World-Time-Mobile-App-UI
Чат UI/UX
Forwarded from UI_UX inspiration
Forwarded from Daily Coding 🔥
🛠 Sugar - модульная библиотека для работы с нативными объектами JavaScript, расширения их прототипов и предоставления разработчикам возможности применять различные полезные функции непосредственно к переменным JS. Методы Sugar используются для самых разных целей, начиная от элементарной математики и заканчивая форматированием даты и проверкой типов.
🌍 Сайт
Daily Coding #инструменты #JavaScript & Max
🌍 Сайт
Daily Coding #инструменты #JavaScript & Max