Category : javascript

javascript
Ответ фронтендера на «Не занимайтесь преждевременной оптимизацией»

TL;DR: В этой статье я хочу показать, почему распространённая фраза "не занимайтесь преждевременной оптимизацией" почти всегда используется неправильно, особенно в современных фронтенд-проектах. Я посмотрю на исторический контекст, разберу, что именно Кнут называл оптимизацией, и почему многие вещи, которые считаются "преждевременной оптимизацией", на деле — нормальная инженерная дисциплина.Я фронтендер, пишу на React, регулярно делаю код-ревью в проекте, над которым работаю сов…

  • понедельник, 1 декабря 2025 г. в 00:00:02
javascript
Цепочка ошибок в JavaScript: удобная отладка кода с помощью Error.cause

Обработка ошибок в JavaScript всегда была немного хаотичной. Получить ошибку легко, но отследить ее первоисточник бывает очень сложно. Именно здесь и приходит на помощь свойство cause.❯ Проблема классической обработки ошибокВ многоуровневом коде (например, сервисы, вызывающие другие сервисы, функции-обертки, «всплывающие» ошибки и т.д.) легко потерять нить того, что именно пошло не так. Обычно код при этом выглядит примерно так:try { JSON.parse('{ bad json }'); } catch (err) { throw…

  • воскресенье, 30 ноября 2025 г. в 00:00:02
javascript
Как мы улучшили качество сервиса VK Видео на SmartTV

Видео стало неотъемлемой частью нашей жизни: мы смотрим его на смартфонах, ноутбуках и всё чаще — на телевизорах. Несмотря на то, что видеосервисы традиционно ориентировались на мобильные устройства, за длинным контентом пользователи идут именно на большие экраны, и это подтверждается ростом времени просмотра. Сегодня среднее дневное время смотрения VK Видео на Smart TV достигает 216 минут.И тут начинается самое интересное: телевизоры — это особый мир со своими капризами и законами. Официальные…

  • пятница, 28 ноября 2025 г. в 00:00:05
javascript
Как правильно обновлять зависимости в проекте

Казалось бы что может быть проще и банальнее, чем обновить зависимости во фронтенд-проекте? Но зачастую даже опытные мидлы делают это не правильно и ставят себе палки в колеса. Давайте разберемся почему так происходит и как этого избежать.Как обычно происходит обновление?Типичный сценарий выглядит так:Обновляем зависимости в package.json.Чиним то, что сломалось.Что здесь не так? На первом этапе мы не знаем, сколько времени уйдет на устранение багов, которые могут появиться после обновления. Есл…

  • пятница, 28 ноября 2025 г. в 00:00:04
javascript
Генерируем G-code прямо в браузере: как я написал карманную CAM-систему на JS+WebGL, чтобы не запус…

Всем привет. Я в 3D-индустрии уже 30 лет, есть свой фрезерный станок. И, как и многих владельцев ЧПУ, меня преследовала одна и та же боль.Чтобы вырезать простую плоскую деталь — фланец, прокладку, панель управления или нервюру — нужно пройти через "ад" тяжелого софта. Запустить условный Fusion 360 или ArtCAM (пока он загрузится, можно чай заварить), создать проект, импортировать DXF, настроить вектора, настроить инструмены, сохранить... Это избыточно долго для простых 2D-задач.Мне нужен…

  • пятница, 28 ноября 2025 г. в 00:00:03
javascript
Общая концепция локаторов и их специфика в Playwright

Локаторы являются одним из ключевых элементов UI‑автоматизации. От того, насколько устойчиво тест находит нужный элемент, зависит стабильность всего тестового набора. Несмотря на кажущуюся простоту, выбор правильного локатора часто становится самым критичным и самым недооценённым аспектом автоматизации.В этой статье мы разберём общую концепцию локаторов, критерии их качества и ограничения классических подходов. Затем рассмотрим, как Playwright переосмыслил эту философию.Что такое локатор?Локато…

  • четверг, 27 ноября 2025 г. в 00:00:10
javascript
SVG, Canvas, WebGL, WebGPU — кто здесь вообще главный? Большой тест 2D-графики в браузере

В последние годы спрос на 2D/3D-инструменты в веб-сервисах растет довольно стремительно, технологии развиваются, появляются новые подходы и библиотеки — а вместе с ними растёт и путаница: что где использовать, где грань между похожими решениями и почему у разработчиков часто возникают противоположные мнения?Так что я решила устроить небольшой тест 2D-решений: посмотреть, на что они реально способны, понять, почему результаты местами вызывают большое удивление, и ответить себе (и вам) на вопрос:…

  • четверг, 27 ноября 2025 г. в 00:00:09
javascript
ShadowRealm API: изоляция исполнения кода в JavaScript

Джаваскриптеры давно мечтают о безопасной изоляции кода, чтобы можно было выполнить сторонний скрипт или библиотеку в своём песочном замке, без риска повредить глобальные объекты или залезть друг другу в прототипы. Сейчас для этого есть костыли, либо создавать скрытый <iframe> (у которого свой глобальный контекст), либо городить сложные рентаймы. В Node.js есть модуль vm и контексты, но и они далеки от идеала. Но на горизонте замаячило штатное решение от TC39, ShadowRealm API. От названия…

  • четверг, 27 ноября 2025 г. в 00:00:08
javascript
Дроун-эмбиент-нойз синтезатор на Javascript: когда нестабильность работы это фича, а не баг

Речь пойдёт о нюансах использования Web Audio API и Web MIDI API для синтеза звука в браузере, методах датабендинга и сонификации, UX при использовании клавиатуры и мыши в музыкальных целях, а также почему браузер ungoogled-chromium лучше Google ChromeВведение Последние два с половиной года я, в свободное от работы время, разрабатывал небольшой инструмент под названием Binary synth, который переводит любой файл в звук или последовательность MIDI-сообщений. Вы можете найти демо здесь, исходный к…

  • четверг, 27 ноября 2025 г. в 00:00:07