Category : javascript

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
javascript
Рефакторинг моего Obsidian: как я перестроил хранилище после предыдущей статьи

ПредысловиеКакое-то время назад я выкладывал статью на Хабр про свое obsidian хранилище.Я получил хороший фидбэк и некоторые идеи. Также я понял, что довольно большая часть моего obsidian нуждается в оптимизации и структуризации. В итоге нашел свободный выходной, чтобы немного перестроить хранилище. Я все это сделал и тут расскажу, как теперь выглядит мой obsidian.Кроме простой структуризации и удаления лишнего, я также провел некоторые махинации над кодом dataviewjs своей библиотеки книг и дод…

  • пятница, 28 августа 2026 г. в 00:00:04
javascript
Self‑hosted вместо подписок: асинхронная очередь для ИИ‑агента на n8n и Redis

В прошлой статье я показал, как простой дебаунс на Redis спасает бюджет от дробных сообщений: клиент строчит «привет» — «сколько стоит» — «а есть другой размер» пятью сообщениями подряд, а LLM получает один склеенный промпт.Дисклеймер: в статье упоминается Meta: организация признана террористической и запрещена в РФ) Схема, код и цифры взяты из продакшена; название проекта и префиксы ключей изменены. Статья не является рекламой/самопиаром и тому подобное.Сегодня я поделюсь уровнем ниже. Дебаунс…

  • четверг, 27 августа 2026 г. в 00:00:06