В одном из наших проектов бот записывает видеовстречи из Яндекс Телемоста, сохраняет их в формате WebM и отправляет на backend. После обработки запись появляется в личном кабинете пользователя и воспроизводится через Video.js.На стенде заметили проблему - если начать смотреть запись с самого начала, то все работает нормально. Перемотка на несколько минут тоже без вопросов. Но после перемотки, например, сразу на десятую минуту, плеер надолго уходил в загрузку. Браузер продолжал подтягивать данны…
JS — однопоточный язык, но асинхронный код нередко описывают как «выполняющийся параллельно» — и это не совсем так. В статье разберёмся, что на самом деле происходит, когда вы вызываете fetch или setTimeout, и почему настоящая многопоточность в браузере — это отдельная история про Web Workers, а не про промисы.ОднопоточностьОчень скоро после первого знакомства с JS вы сталкиваетесь с концепцией однопоточности. Легко догадаться из самого слова, что оно означает: код выполняется в одном потоке.Дл…
localStorage существует только в браузере. App Router может подготовить HTML на сервере и для Client Component. Код с директивой use client получает состояние, эффекты и обработчики событий, но первый рендер всё ещё может пройти без window и localStorage. И возникают два сбоя. Прямое чтение localStorage падает на сервере. Проверка через typeof window возвращает разные данные на сервере и в браузере. Сервер строит пустое избранное, браузер видит сохранённые id, React получает разные деревья при …
Вступление:Всем привет. На днях моя техническая статья с open source кодом про написание нейросети с нуля на Node.js вышла из песочницы Хабра благодаря НЛО, набрала 8К+ просмотров и получила крутой фидбек от ML-сообщества. Но за 2 дня до этого я решил провести эксперимент и выложить этот же open-source материал на VC.ru (выкладывал на Хабр, затем на VC), чтобы поделиться кодом с местными инженерами. Итог — моментальный пожизненный бан без объяснения причин в первые 15 минут и снос статьи.Ссылка…
Excel удобен не только тем, что показывает данные. В нём можно самостоятельно менять формулы, добавлять расчёты, перестраивать таблицы, фильтровать строки и проверять гипотезы. Поэтому, несмотря на большое количество специализированных систем, Excel продолжают использовать практически везде.Когда я работал в крупном банке, среди руководителей периодически возникала идея запретить Excel. Предполагалось, что сотрудники должны работать только в корпоративных и специализированных приложениях.Но сот…
Профиль на Хабрахабре: рейтинг — крохотная цифра рядом с именем, подписчиков столько, что можно перечислить по именам. Комментариев ноль, зато минусы прилетают быстрее, чем первый прочитавший дочитает до середины.Я неизвестный автор. Над моими статьями нет плашки «Блог компании». И минусуют меня стабильно. Вот реальные причины, которые я собрал под своими статьями на Хабрахабре:«Низкий технический уровень материала» — рассуждение про open source. «Личная неприязнь к автору или компании» — расск…
Это моя личная книга по аутентификации. Она представляет собой сборник руководств, рекомендаций и примеров по внедрению аутентификации в веб-приложениях, основанный на моем личном опыте. Книга совершенно бесплатна и не содержит рекламы. Надеюсь, она будет полезна всем, кто хочет узнать больше об аутентификации, безопасности и веб-технологиях в целом.Как следует из названия, эта книга в значительной степени посвящена системе аутентификации и авторизации для веб-приложений. Более общие вопросы бе…
Все привыкли, что есть какой-то call stack и работает он по LIFO: последним зашёл — первым вышел. Вызвал функцию — кадр лёг на вершину, функция вернулась — кадр сняли. Дальше этого знание обычно и не идёт.Ровно та же история — с асинхронной половиной: про event loop, микротаски и макротаски слышал почти каждый, все знают, что промисы «бегут вперёд» setTimeout. А на «почему именно так и где это вообще записано» ответа обычно нет. Её мы тоже разберём — но под самый конец: живёт она уже за границе…
Полгода назад я закрывал технический долг по производительности на клиентском проекте. Обычная история: интернет‑магазин, мобильный Performance в PageSpeed — 29, владелец каждую неделю спрашивает, когда будет зелёная зона. Мы сделали всё, что делают в таких случаях. Перегнали изображения в WebP и AVIF, вынесли критический CSS в инлайн, убрали три подключения Google Fonts на self‑host, порезали неиспользуемый JavaScript, настроили кэширование на уровне Nginx, подключили CDN. Работы на два месяца…