Category : javascript

javascript
Геймплей от всего сердца, или как я решил превратить Bluetooth-пульсометр в игровой контроллер прям…

Всем привет! Меня зовут Павел Барсуков, я frontend-разработчик в компании «Программный Продукт».ПредисловиеПомимо программирования, я давно увлекаюсь настольным теннисом. А еще – анализом тренировок по нему. После каждой тренировки я записываю свои мысли: что получилось, какие элементы стоит доработать, как менялась игра по ходу занятия. Вместе с этим, я всегда отслеживаю пульс, чтобы понимать, насколько интенсивной была нагрузка.Долгое время для этого хватало смарт-часов. Но у оптических датчи…

  • пятница, 13 ноября 2026 г. в 00:00:12
javascript
Как я ускорил загрузку графиков Vigo Pulse в 2 раза

Последний год я переписываю Vigo Pulse, аналитический продукт с большим количеством метрик и разрезов. Пользователь может выбирать фильтры, группировки и период, а на одном графике могут оказаться сотни линий. Загрузка и отрисовка такого объёма данных давно были проблемной областью.Я отвечаю за фронтенд и BFF на Node.js. При переработке приложения я решил пересмотреть весь путь от выбора фильтров до появления графика на экране. Для этого нужно было понять, как выбирать данные, в каком виде пере…

  • пятница, 13 ноября 2026 г. в 00:00:11
javascript
Как уместить генератор обложек, визиток и постеров в один HTML-файл: Canvas, миллиметры и никакого …

Каждый раз после написания статьи я ещё полчаса возился с обложкой: открыть редактор, подобрать шрифт, выровнять заголовок, экспортировать. В какой-то момент я решил, что обложка — это функция от заголовка, и её должна рисовать программа. Так появился небольшой инструмент, который сначала делал только картинку 1200×630, а потом оброс визитками, открытками, закладками и постерами A4 с PDF для типографии.В статье расскажу, как он устроен: один HTML-файл без сборки, отрисовка на Canvas, перевод ми…

  • пятница, 13 ноября 2026 г. в 00:00:09
javascript
Что расширение Chrome может узнать о сайте, а что нет: грабли Manifest V3

Я написал расширение, которое показывает код ответа открытой страницы на значке, а по нажатию: цепочку редиректов, время ответа, срок SSL-сертификата и срок регистрации домена. Задача выглядела простой: у Chrome есть webRequest, он видит все запросы, осталось красиво показать.На деле половина пунктов упёрлась в ограничения, о которых документация либо молчит, либо говорит одной строкой. Сертификат сайта расширению не отдают, хотя API для этого есть. Срок домена в зоне .ru из браузера не узнать.…

  • пятница, 13 ноября 2026 г. в 00:00:08
javascript
Делаю олдскульную браузерную 3D MMORPG: открытый мир без знания программирования

Задача проекта — собрать честную олдскульную 3D MMORPG в браузере (на Three.js и WebGL) с механикой классической Lineage 2 (C1–C4), в оригинальном стимпанк‑сеттинге. Всё началось с простого чувства: современные онлайн‑игры перестали вызывать эмоции. Ты заходишь в новую MMO, а тебя берут за руку, ведут по светящейся стрелочке на полу, включают автобой, автоквест и засыпают сундуками с блестящей мишурой. Смерть персонажа не значит вообще ничего, управление свелось к попсовому слэшеру на WASD, а м…

  • четверг, 12 ноября 2026 г. в 00:00:17
javascript
Добавляем перегрузки функций в JavaScript

Во многих языках можно объявить несколько функций с одним именем, если у них разные сигнатуры. Это называется перегрузкой функций. Пример перегрузки в C# -class Calculator { // Два целых числа public static int Sum(int a, int b) { return a + b; } // Два дробных числа public static double Sum(double a, double b) { return a + b; } // Три целых числа public static int Sum(int a, int b, int c) { return a + b + c; } } К сожале…

  • четверг, 12 ноября 2026 г. в 00:00:15
javascript
Режем, сжимаем и конвертируем видео прямо в браузере: WebCodecs, mp4box.js и грабли, на которые мы …

Нам понадобилось сделать на сайте простые видеоинструменты: обрезать ролик, сжать его под лимит мессенджера, перегнать MOV в MP4 или WEBM, убрать звук. Обычный путь — загрузить файл на сервер и прогнать через ffmpeg. Но видео тяжёлое: ролик с телефона на 2 ГБ надо сначала долго заливать, а сервер должен его хранить и пережёвывать. Да и не каждому хочется отправлять личное видео на чужой сервер.Поэтому основной путь у нас — обработка прямо в браузере: файл никуда не уходит, всё делает компьютер …

  • четверг, 12 ноября 2026 г. в 00:00:14
javascript
В джунглях флоры: как складывалась архитектура фронтенда

ФЛОРА - это цифровая платформа по управлению дилерским бизнесом со сложной бизнес-логикой. Над ней работают 25+ продуктовых команд и несколько платформенных. Фронтенд системы состоит из более чем 65 микрофронтендов (далее МФ), и их количество постоянно увеличивается: регулярно появляются новые направления, функционал расширяется. Каждый МФ (или группа МФ) может иметь свой роутинг, стейт, набор sharing-модулей и типов. Группы МФ объединяются в целые подсистемы со своим жизненным циклом и экосист…

  • четверг, 12 ноября 2026 г. в 00:00:12
javascript
«Задача о трёх соседях», или динамические сайты на облачном хранилище

Привет, хабровчане! В этой статье хотел бы поднять вопрос, над которым мы с командой ведём дискуссии уже на протяжении нескольких месяцев, а конкретно с февраля этого года, когда я лично столкнулся с неудобствами белых списков.Наверное, глупо рассказывать что единственное и главное неудобство этих самых списков заключается в том, что мобильный интернет ограничивается и вся инфраструктура "вне" отваливается. Логично, что все ресурсы внутри белых списков контролируются некоей организацией…

  • четверг, 12 ноября 2026 г. в 00:00:11