Category : javascript

javascript
Centrifugal. Fluid UI для создания standalone веб‑приложений

Всем привет! Меня зовут Евгений, я фронтенд‑инженер с большой экспертизой в разработке современных веб‑приложений. Сегодня хочу рассказать про свой очередной open‑source проект для построения веб‑приложений на основе Angular.За последние годы я провел не мало успешных экспериментов с высокопроизводительными веб‑интерфейсами, что дало мне четкое понимание структуры и архитектуру для проекта, о котором пойдет дальше речь.Итак, встречайте Centrifugal. Посмотрите официальный сайт проекта, там очень…

  • пятница, 4 сентября 2026 г. в 00:00:08
javascript
V8 startup snapshot: как правильно запустить JS-код на сервере

Представьте типичную ситуацию. У вас есть сервер на каком-то языке (сейчас какой именно для нас не важно, но допустим, это Rust). И в нём по каким-то причинам нужно исполнить JavaScript-код. Например, фронтенд написан на React, и вы хотите рендерить HTML на сервере (SSR). Или есть бизнес-логика, которая проще пишется на JS. Или библиотека, которая существует только в npm, и переписывать её на Rust нет ни сил, ни желания. Таких примеров можно привести множество: markdown, dompurify, highlight.js…

  • пятница, 4 сентября 2026 г. в 00:00:06
javascript
HTTP 200 на несуществующий адрес: пять способов, которыми Telegram обманул мои проверки

ПостановкаЕсть список публичных адресов Telegram. По каждому надо ответить на два вопроса: существует ли он и что это за сущность. Дальше у каналов прочитать публичное превью и классифицировать содержимое.Никакого API: MTProto для такой задачи избыточен, а веб-превью Telegram отдаёт всё нужное обычным GET. Казалось бы, сорок строк на fetch и разбор.Ловушка 1. Несуществующий адрес отвечает 200Первое предположение: раз имя свободно, будет 404. Не будет.GET https://t.me/zzqqxx_not_a_real_channel_9…

  • пятница, 4 сентября 2026 г. в 00:00:05
javascript
Как DevSpace ускорил проверку микрофронтендов

Я фронтенд-разработчик и в основном работаю с Angular. Проекты, над которыми я работаю, находятся в монорепозитории, развёрнуты в Kubernetes, и часть из них использует микрофронтендную архитектуру: основное приложение (хост) загружает отдельные микрофронтенды.Суть проблемыПри разработке всегда требуется проверка выполненной работы. Для изолированной проверки визуала и бизнес-логики микрофронтенд можно запустить локально как обычное приложение, а вызовы АПИ замокать. Но этого недостаточно для ин…

  • пятница, 4 сентября 2026 г. в 00:00:04
javascript
Тест проходил за миллисекунды. На настоящем файле тот же код думал минуту

Тест проходил за миллисекунды. На настоящем файле тот же код думал минутуЭто знает каждый, кто писал на JavaScript:"привет".length // 6 "👋".length // 2 "🇺🇿".length // 4 length считает не символы, а кодовые единицы UTF-16. Эмодзи занимает две, флаг — четыре. Обрезать такую строку через slice(0, 20) значит однажды разрубить символ пополам и показать пользователю ромб с вопросительным знаком.Дальше все делают одно и то же: пишут честную функцию, которая ходит…

  • четверг, 3 сентября 2026 г. в 00:00:11
javascript
Вы скопировали команду с сайта. В буфер попало не то, что вы выделили

Ставил утилиту по инструкции с сайта проекта: блок с командой, кнопка «скопировать», вставка в терминал. Перед Enter посмотрел на строку — вставилось не то, что было в блоке.Проблема в том, что сайт полностью контролирует, что окажется в буфере обмена. Показать он может одно, положить — другое. И у страницы есть несколько способов сделать это так, что при вставке вы ничего не заметите.Способ первый: подмена при копированииБраузер даёт странице событие copy, и обработчик может записать в буфер ч…

  • четверг, 3 сентября 2026 г. в 00:00:10
javascript
Когда все тесты зелёные, а баги едут в прод

Статья подготовлена в рамках курса «Автоматизатор тестирования на JavaScript». Привет, Хабр!Меня зовут Андрей Бирюков. Я — независимый эксперт в области ИТ и ИБ, преподаю в учебных центрах и пишу статьи и книги.Вы когда‑нибудь получали от ИИ тесты, которые «идеально проходят», а через неделю ловили баг в том самом месте, которое должно быть покрыто? Это не случайность — это симптом тавтологического тестирования.Для того, чтобы понять суть проблемы, давайте представим себе функцию расчёта налога…

  • среда, 2 сентября 2026 г. в 00:00:14
javascript
Как устроено состояние в React.js

Что поисковики и ИИ предлагают учить перед собеседованиями? Чаще всего — что-то в духе списка вопросов с гитхаба.github.com/sudheerj/reactjs-interview-questionsИ как это учить? Тупо нажимать на каждый ответ и заучивать разницу в синтаксисе?А на собесе потом:— Расскажите про состояние на фронте.— useState нужен для маленького состояния, useContext — для чуть больших приложений. Для совсем больших берём Redux. Иногда можно и Jotai.— А в чём разница?— Для useState не нужен <Provider>, для Re…

  • среда, 2 сентября 2026 г. в 00:00:12
javascript
Один пакет — один мини-плеер: почему мы перенесли голос БОЛТУНа в AudioWorklet

В прошлой статье мы разбирались, почему после сборки БОЛТУНа на Tauri трещал голос, автокалибровка вмешивалась в разговор, а демонстрация экрана через минуту превращалась в чёрный прямоугольник.После тех исправлений мы продолжили разбирать звуковой тракт и нашли ещё одну проблему. Сам аудиопакет мог прийти вовремя, успешно декодироваться и содержать нормальные сэмплы — а на выходе всё равно появлялся короткий щелчок.Причина оказалась не в сети и не в кодеке. Мы слишком буквально превратили сете…

  • среда, 2 сентября 2026 г. в 00:00:11