Category : javascript

javascript
Почему O(1) не гарантирует высокую скорость: четыре структуры данных для графа signal – effect

Привет, Хабр!Меня зовут Егор Козельский. Я фулстек-разработчик, в основном занимаюсь backend-системами и производительностью графических приложений. В этой статье разберу один вопрос из устройства реактивных систем: как хранить связь между источником данных и её потребителем.Само понятие реактивности используется в очень широком списке самых разных систем: от игровых движков и графов зависимостей до систем с логикой подписок и фронтенда.Предполагаю, что сравнение реактивности игровых движков и …

  • суббота, 10 октября 2026 г. в 00:00:07
javascript
Я несколько месяцев изучал теорию категорий. Вот зачем она оказалась нужна мне как программисту

Несколько месяцев назад я зачем-то полез изучать теорию категорий. Причины были примерно те же, по которым нормальные люди иногда решают разобраться в квантовой механике по роликам на YouTube: звучит умно, выглядит загадочно, а главное – можно потом с важным лицом употреблять слово «эндофунктор» в компании людей, которые не могут проверить, несёшь ты ахинею или нет. В моём случае ситуацию усугубляла любовь к функциональному программированию, поэтому рано или поздно столкновение с теоркатом было…

  • суббота, 10 октября 2026 г. в 00:00:06
javascript
Обновления GigaIDE за сентябрь 2026

Как и в предыдущие месяцы, по итогам сентября мы решили рассказать про то, как изменилась GigaIDE за прошедший месяц. Ниже — краткий обзор обновлений Pro-функциональности GigaIDE, которую можно найти на нашем маркетплейсе.Как стать пользователем GigaIDE ProСейчас GigaIDE Pro доступна только для корпоративных потребителей. Чтобы получить дополнительную информацию, нужно оставить заявку на сайте.GigaIDE Pro станет доступна всем пользователям в этом году позже. Следите за новостями!Для Js/Ts-разра…

  • суббота, 10 октября 2026 г. в 00:00:04
javascript
Как мы научили JavaScript анализатор понимать поток управления

Недавно в статический анализатор PVS-Studio была добавлена поддержка JavaScript/TypeScript, и он на старте умеет искать ошибки, связанные с потоком управления. Причём тут граф потока управления, как мы его добавили и чем это полезно — читайте в этой статье.Граф потока управления?Я уже затрагивал эту тему, в частности, в моей серии про taint-анализ в Java, но кратко напомню. Исходный код, попадая в статический анализатор, преобразуется в абстрактное синтаксическое дерево (AST). Оно почти полност…

  • суббота, 10 октября 2026 г. в 00:00:04
javascript
Вышел Next.js 16.4

Эта статья перевод оригинальной статьи «Next.js 16.4».Также я веду телеграм канал «Frontend по‑флотски», где рассказываю про интересные вещи из мира разработки интерфейсов и AI.ВступлениеВ релизах ветки 16.x мы постепенно внедряли новую модель разработки, которая решает многие проблемы, с которыми вы сталкивались с самого появления App Router:Обеспечивает быструю первоначальную загрузку даже персонализированных страниц.Делает клиентские переходы в приложениях с серверным рендерингом мгновенными…

  • пятница, 9 октября 2026 г. в 00:00:04
javascript
Как узнать длительность видео по ссылке, скачав 7% файла, и почему в заголовке MP4 бывает ноль

Пользователь загрузил ролик на 37 мегабайт и получил ответ: «Не удалось определить длительность видео». Ролик был обычный, открывался в любом плеере, ffprobe показывал 18 секунд. В логах ошибок при этом не было вообще. Под катом разбор того, как устроена длительность в MP4, почему в заголовке файла она бывает нулевой и как достать её тремя HTTP‑запросами без ffmpeg.Зачем мерить длительность на сервереЯ делаю Aigena, сервис, где нейросети генерируют и правят видео. Обработка там стоит денег за к…

  • четверг, 8 октября 2026 г. в 00:00:04
javascript
Как React учился батчингу и как научить его «летать»?

Каждый лишний рендер — удар по перформансу. В React с его культом иммутабельности (который тянется с 2013 года) эта проблема знакома каждому, кто пристально наблюдал за тем как ведут себя перф и метрики.ТеорияПуть от костылей к микрозадачамПод капотом React при каждом изменении стейта строит свежий Virtual DOM для компонента и всех его “детей”, а потом запускает диффинг со старым деревом. Процесс не бесплатный — готовьтесь греть CPU и забивать Main Thread пользователя.До 18-й версии батчинг нат…

  • четверг, 8 октября 2026 г. в 00:00:03
javascript
От RTSP-камеры до истории событий: настраиваем видеоаналитику через JavaScript Viewer

Привет, Хабр! В первой статье я разбирал внутреннее устройство real-time-конвейера на C++20: почему медленный YOLO не должен останавливать RTSP и зачем между этапами нужны ограниченные слоты последнего значения. Теперь посмотрим на ту же систему с другой стороны — глазами пользователя, который подключает камеру и должен получить не просто видео с рамками, а управляемый и проверяемый результат.Я покажу практический порядок настройки своей платформы видеоаналитики через браузерный JavaScript View…

  • среда, 7 октября 2026 г. в 00:00:04
javascript
Строим стены в SCAD++ в турбо режиме

Многим конструкторам приходится ковыряться с сеткой конечных элементов в SCAD++ именно внутри программы. Очень много удобных функций там есть, но очень бы хотелось иметь кнопочку, нажав на которую программа бы построила стену (КЭ оболочки) по аналогу. То есть уже по нарисованной стене рядом.Обычно без кнопочки это происходит следующим образом:Измеряются высоты конечных элементов с аналога (выписываются)Выделяются узлы плиты, где должна быть новая стена.Узлы копируются на выписанные расстояния.С…

  • вторник, 6 октября 2026 г. в 00:00:11