Category : javascript

javascript
У моего героя нет здоровья, ключей и очков. Есть масса, и это всё сразу

Я делаю браузерный 3D-платформер. Игрок катает красный желейный куб по каменным плитам, парящим в небе. У куба нет полоски здоровья, нет инвентаря с ключами и нет счётчика очков.Не потому что я минималист и не потому что так задумывал с самого начала. А потому что в какой-то момент посмотрел на черновик спецификации и понял, что мне придётся писать, отлаживать и балансировать три отдельные системы. Одну я осилить был готов. Три - не очень.Куб на каменных плитахВот он. Красный, желейный, никаког…

  • суббота, 29 августа 2026 г. в 00:00:10
javascript
Эра инженерной зрелости: как выглядит стек JS-разработки в 2026 году глазами сообщества

Хайп-цикл фронтенда, кажется, наконец-то выдохся. Мы вышли из фазы бесконечного переизобретения колеса, где каждый месяц появлялся «убийца React», и вошли в эпоху убийцы Fable инженерной зрелости. Сегодня опытного инженера сложно впечатлить очередным фреймворком: ценность сместилась в сторону предсказуемости, скорости поставки (delivery) и снижения когнитивной нагрузки. Привет, меня зовут Паша Востриков, и я — архитектор веб-направления в «Лаборатории Касперского». В этой статье хочу разобрать …

  • суббота, 29 августа 2026 г. в 00:00:08
javascript
Картинку в моей игре вытянули не шейдеры. Самой полезной правкой оказались две строки конфига

Есть распространённый способ сделать игру красивее: пойти изучать шейдеры. Я так и сделал, потратил на это прилично времени и получил желейный куб, которым доволен.А потом посмотрел на два скриншота рядом и понял неприятное: большую часть разницы дали не шейдеры. Её дали пять довольно тупых правок, каждая из которых занимает от двух до тридцати строк.Ниже они по порядку - от самой выгодной к менее. Игра браузерная, на Three.js и Rapier, но четыре пункта из пяти к движку вообще не привязаны.Было…

  • суббота, 29 августа 2026 г. в 00:00:07
javascript
Калькулятор плитки научился ёлочке и плану всей квартиры — что поменялось за месяц

Прошлый раз я рассказал, как написал свой калькулятор раскладки плитки, потому что замучился считать ванную в столбик. Тот пост был про версию 1.2 — база, прямая/диагональная раскладка, смета, PDF, нумерация плиток. Комменты были классные, фидбек пошёл сразу, и за месяц я выкатил ещё три версии. Самое заметное — ёлочка и общий план квартиры, где все комнаты лежат на одном полотне. Про это и пишу.## Ёлочка (v1.4.0)Ёлочка — это когда плитка кладётся под углом друг к другу, как паркет. Спросили в …

  • суббота, 29 августа 2026 г. в 00:00:07
javascript
AWG-Easy 3: как с помощью вайб-кода сделал простую панель для AmneziaWG 3.x

Привет, Хабр!Я не программист и не разработчик. Мне ближе системное администрирование: развернуть сервис, разобраться с сетью, найти конфликт портов, проверить маршрутизацию и добиться, чтобы всё это пережило повторную установку. Но благодаря нейросетям у людей вроде меня появилась возможность не только описывать идеи, но и доводить их до работающего кода.Так появился AWG-Easy 3 — небольшая Docker-панель для AmneziaWG 3.x с управлением клиентами, изоляцией Home/Guest, IPv6, диагностикой соедине…

  • пятница, 28 августа 2026 г. в 00:00:10
javascript
Как я заставил HTML из ChatGPT будить телефон: песочница, точные будильники и мост из пяти методов

В июле я попросил Claude написать мне таймер рабочего дня: 45 минут сидя, две минуты у турника, 45 стоя, обед, и так до вечера. Один HTML-файл, ноль зависимостей, открыл в браузере — работает. Я назвал его «Смена» и честно прожил с ним день. К обеду выяснилось главное: телефон его не будит. Экран погас — вкладка уснула, setTimeout заморозился, никакого сигнала. Web Notifications на мобильном не ринг-тон, а строка в шторке, и то если вкладка жива. Push требует сервер и подписку. PWA на iOS — отд…

  • пятница, 28 августа 2026 г. в 00:00:08
javascript
Почему рекламный пост в Telegram нельзя публиковать через copyMessages

Если бот копирует один и тот же пост в десять каналов, в Google Analytics все клики свалятся в одну кучу. URL у скрытой ссылки живёт не в тексте, а в MessageEntity, а copyMessages копирует его как есть. Ниже — как пересобрать пост под каждую площадку, не сломав жирный шрифт, эмодзи и health‑check.Telegram умеет одно очень удобное действие: copyMessages. Берёте сообщение из чата A, кладёте в чат B — форматирование, медиа, альбом, скрытые ссылки, всё на месте. Для рассылок и зеркал это идеальный …

  • пятница, 28 августа 2026 г. в 00:00:07
javascript
«Я собрал приложение за выходные». Почему вайбкодинг в проде опаснее, чем кажется

Где заканчивается прототип и начинается инженерия, почему «работает у меня» не равно «готово для бизнеса», и за что на самом деле платят опытной команде.Иллюстрация 1. Ожидаемый результат против ответсвенности.Коротко. Vibe coding хорош для прототипа, но в production скорость генерации кода не заменяет архитектуру, security review,тестирование, наблюдаемость и эксплуатационную ответственностьЗа последний год я несколько раз слышал одну и ту же формулу: «Зачем мне команда разработки? Я найду чел…

  • пятница, 28 августа 2026 г. в 00:00:06
javascript
Мой vault стал планетой: как я сделал 3D-граф знаний для Obsidian на Three.js

Плагин CosmoGraph 3D визуализирует vault Obsidian как интерактивную планету заметокЯ люблю встроенный граф Obsidian. Первые секунд тридцать.Пока заметок немного, он действительно помогает увидеть связи. Потом vault подрастает, граф превращается в клубок из сотен точек и линий, а я снова открываю поиск и набираю имя файла руками. Всё вроде бы связано, но пользоваться этой картиной как картой уже трудно.В какой-то момент мне захотелось не просто видеть, что заметка A связана с заметкой B. Хотелос…

  • пятница, 28 августа 2026 г. в 00:00:04