Category : javascript

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
javascript
Пакуем PHP в PHP, чтобы запаковать в JS, чтобы обернуть в HTML

Прочтя недавний перевод про запаковку БД в exe, решил рассказать об идее, которую реализовал лет 6 назад в своем домашнем проекте. Сам проект недоделал и ценность его в 2026 сомнительна, но речь в статье о реализации архитектуры файлов и их запаковке, а не о проекте.Суть проекта в двух словах: генератор CRUD APIUser case: я хочу на любом самом дешевом хостинге быстро развернуть REST API с типовым набором CRUD операций (создание, изменение, поиск) для произвольной структуры данных. Это API должн…

  • среда, 2 сентября 2026 г. в 00:00:10
javascript
JavaScript и TypeScript в OpenIDE: Node.js, React, Angular, Git и работа с API

Если вы пишете на JavaScript или TypeScript, выбор инструмента обычно начинается с двух знакомых вариантов.VS Code хорош именно своей модульностью: из него можно собрать среду почти под любой проект и точно под себя. Обратная сторона в том, что эту среду сначала придётся собрать. Нужно подобрать расширения для фреймворка, линтеров и форматтера, настроить запуск проекта и остальные инструменты. Тут важно учесть, что многие плагины разрабатывали энтузиасты, и давно забросили, так что фикса бага м…

  • среда, 2 сентября 2026 г. в 00:00:08
javascript
Проверка исходников VSCode

Теперь можно говорить без всяких прикрас: мы выпустили анализатор для языков JavaScript и TypeScript. А значит, это повод испытать его в полевых условиях и посмотреть, что он найдёт в исходном коде хорошо знакомого многим Open Source проекта Visual Studio Code. Если вам интересно узнать, какие ошибки и подозрительные фрагменты кода обнаружил анализатор, — добро пожаловать в статью.О чём будем рассказыватьЭтот раздел будет полезен тем, кто не знаком с нашим форматом статей. Что вас ждёт в статье…

  • среда, 2 сентября 2026 г. в 00:00:07
javascript
TUI-агент включает alt-буфер один раз за сессию. Через 256 КБ вывода это ломает терминал

Короткая версия. Жалоба звучала как «скролл нестабильный»: колесо в панели с агентом то работает, то нет, текст съезжает, кадры дублируются. Виноват не скролл. Claude Code под ConPTY включает альтернативный буфер и отчёты мыши один раз при старте и больше их не переотправляет, а replay-буфер панели ограничен 256 КБ. За долгую сессию эти включения вымывает за границу буфера, и свежий xterm после реаттача остаётся в нормальном буфере, хотя агент давно в альтернативном. Ниже механика, фикс на 60 с…

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