Category : javascript

javascript
Tinted — то, из‑за чего ты захочешь использовать терминал

ВведениеВсем привет! Меня зовут Илья, я frontend‑разработчик.Но сегодня хочу поговорить не о JavaScript, а о терминале.Несмотря на то, что я уже много лет работаю разработчиком, активно пользоваться терминалом я начал всего около года назад. До этого терминал для меня был просто местом, где запускается сборка проекта, немного Git и иногда еще пара команд. Думаю, у многих так же.Обычно мысли о терминале вызывают ступор. Кажется, что это что‑то непонятное, черно‑зеленое и предназначенное только д…

  • вторник, 18 августа 2026 г. в 00:00:03
javascript
От клика до железа: хроника одного запроса. Часть 2

ВведениеВ первой части мы заставили кнопку на веб-странице запустить локальный exe-файл. Обычная страница не может запускать программы на компьютере напрямую. Поэтому между ними появилось расширение Chrome, а локальная программа была зарегистрирована как Native Messaging Host.Native Messaging представляет собой механизм обмена сообщениями между расширением и локальной программой. Chrome запускает эту программу как отдельный процесс и связывает её с расширением через стандартные потоки ввода и в…

  • вторник, 18 августа 2026 г. в 00:00:02
javascript
Часть 1. Как я делаю backend для браузерной игры три в ряд: server-driven контент, транзакции и иде…

Привет, Хабр.Я frontend-разработчик и большую часть времени работаю с Vue и TypeScript. В последнее время мне стало интересно глубже разобраться с backend-разработкой, но делать для этого отдельный учебный CRUD-проект не хотелось. Я уже сделал свою первую игру и написал о ней в этой статье. Новая игра задумывалась уже сложнее по механикам и без серверной работы в ней было не обойтись. Таким образом серверную часть я решил добавить в свою новую игру — 3D-игру три в ряд с персонажами, способностя…

  • понедельник, 17 августа 2026 г. в 00:00:09
javascript
TRON, Aptos и BSC в одной цепочке заражения: расследование JavaScript-загрузчика, связанного с Chai…

Введение16 июня 2026 года исследователи Checkmarx изучили кампанию ChainVeil, использовавшую npm-пакеты для распространения многоступенчатых JavaScript-загрузчиков. И как раз недавно одному из моих знакомых (не)посчастливилось получить один из ранее неизвестных экземпляров.Репозиторий с AI-агентом ему посоветовал... AI-агент. Да, отправной точкой заражения стала рекомендация от AI-помощника, а после клонирования репозитория и локального запуска антивирус прервал выполнение и классифицировал обн…

  • понедельник, 17 августа 2026 г. в 00:00:08
javascript
Когда setState недостаточно: как я написал транзакционный стейт-менеджер на TypeScript

Стейт-менеджеров в JavaScript уже столько, что идея написать ещё один выглядит немного сомнительно. Есть Redux Toolkit, Zustand, MobX, Jotai, XState и десятки менее известных библиотек. Почти для любого способа хранить состояние уже существует готовое решение. Но все же в качестве эксперимента, решил реализовать свою идею.Изначально я не собирался делать ещё один store с методами getState, setState и subscribe.Меня интересовала другая проблема. Во многих приложениях изменение состояния является…

  • понедельник, 17 августа 2026 г. в 00:00:05
javascript
Зачем всё так сложно: постановка и архитектура

Постановка и бизнес-процессИтак, проводится некое соревнование с раздельным стартом, и нам необходимо вести хронометраж. Для этого на старте и финише размещаются судьи, которые фиксируют время старта и финиша каждого участника. После завершения заезда все данные сводятся в итоговый протокол. Выглядит вполне просто и логично (пока что), но давайте погрузимся в детали.Что необходимо для выполнения основной задачиСписок участников с номерами и планируемым временем старта (для формирования протокол…

  • понедельник, 17 августа 2026 г. в 00:00:04
javascript
Смена типа в объекте тоже не бесплатна

В прошлой статье про объекты и скорость доступа к известному полю я рассказал про hidden classes, inline cache и форму объекта. Практический совет там был простой: если поле опциональное, создай его сразу и положи null. Тогда экземпляры сохранят одинаковую форму.Совет рабочий, но неполный. Форма объекта у V8 может остаться прежней, а вот внутренний контракт хранения поля может измениться. Если горячая функция успела прогреться под старый контракт, V8 пометит её на деоптимизацию.Напомню, что для…

  • воскресенье, 16 августа 2026 г. в 00:00:07
javascript
Написал валидатор llms.txt на 64 тестах — и проверил, читают ли этот файл боты

Файл llms.txt предлагают класть в корень сайта с 2024 года: считается, что языковые модели прочитают его вместо того, чтобы разбирать вёрстку. Я написал для него генератор и валидатор, проделал 64 теста для отладки — и параллельно посмотрел, сколько раз ИИ-боты вообще запрашивают этот файл. Значения получились неутешительные, но валидатор всё равно оказался полезным. Ниже — устройство разбора, схема оценки и код.Что такое llms.txt и чем он отличается от llms-full.txtllms.txt — текстовый файл в …

  • суббота, 15 августа 2026 г. в 00:00:21
javascript
Ускоряем drop in replace Next.js в 100 раз. Часть 1

Как говорил классик: в 100 раз за Rust. Кажется, что название является кликбейтом. И такого быть в принципе не может. Но я запланировал цикл из трёх статей, в которых постараюсь рассказать, как достичь такого фантастического результата. Часть 1. Архитектура и бенчмаркиПоследние годы, если мы говорим о BFF, SSR, API routes, React Server Components или server-side fetch, мы почти автоматически думаем про JavaScript runtime. Node.js, Deno, Bun, много маркетинга, но парадигма одна: JS/TS исполняет…

  • суббота, 15 августа 2026 г. в 00:00:19