Category : javascript

javascript
Lighthouse 100 / 100: как мы повесили GTM, GA4, Яндекс.Метрику и Clarity на статический сайт — и не…

Когда маркетологи хотят всё: сырые данные в GA4, запись сессий в Метрике, хитмапы в Clarity и при этом «Lighthouse 100» в PageSpeed Insights — приходится изобретать. Расскажу, как мы это сделали на небольшом проекте и во что это обошлось по времени и нервам.Проект — нишевый агрегатор российских хостинг-провайдеров. Более 120 страниц в sitemap, 31 статья, десятки категорий услуг, живые цены, сравнения. Стек: Astro 6 + Strapi 5 + Tailwind 4, плюс Partytown, PostgreSQL, Nginx и обычный VPS на Ubun…

  • вторник, 2 июня 2026 г. в 00:00:13
javascript
Как я сделал игру «Найди 250 отличий» на чистом JS и выложил в Яндекс Игры: цифры, грабли и доход

Часть кадр из игры (уровень 39)Можно ли запустить казуальную HTML5-игру на чистом JS в Яндекс Играх, не зная геймдева и верстки? Спойлер: можно, но придется пройти через 2-3 месяца модерации.Под катом — честный постмортем инди-проекта, созданного по вечерам на коленке. Рассказываю про костыли SPA-архитектуры на тегах <div>, продвижение и реальные графики трафика и доходов за первые недели.Если вам не терпится пощупать проект руками и не хочется читать долгие тексты — держите. Ну а для тех…

  • вторник, 2 июня 2026 г. в 00:00:11
javascript
DI в TypeScript без декораторов: почему это будущее

Если вы пишете на TypeScript больше пары лет, то наверняка привыкли к классическому паттерну внедрения зависимостей. Вы создаете класс, помечаете его декоратором @Injectable(), прописываете токеновые декораторы в параметрах конструктора и включаете emitDecoratorMetadata в tsconfig.json. После этого фреймворк берет всю магию на себя.Для 2015 года, когда декораторы только появились, это было отличным решением. Однако сегодняшний TypeScript ушел далеко вперед, превратившись в мощный инструмент с C…

  • вторник, 2 июня 2026 г. в 00:00:05
javascript
Назирокодил утилиту на Kotlin и JavaScript для создания аккордов в любой тональности

Пробовали когда-нибудь сочинять свои аккорды на гитаре, укулеле или на клавишных? Не всякий аккорд подходить к любому другому, так? Например, ре-мажорный аккорд (D) не очень-то ладит с фа-минорным (Fm). То есть просто "слепить" любые аккорды друг с другом в одну последовательность не получится. Тем более, что хочется, чтобы их было больше 2-х. И повторять до бесконечности Am Dm Em не хочется, так?Для решения этой проблемки написал, используя ИИ, утилиту на JavaScript, доступную по URL:h…

  • понедельник, 1 июня 2026 г. в 00:00:10
javascript
Я сделал Vite-плагин, который сохраняет изменения CSS прямо в исходники

Это моя первая статья на Хабре. Буду рад конструктивной критике в комментариях.Каждый раз, когда я хотел поправить отступ или цвет в процессе разработки, я делал одно и то же:открыл DevTools → нашёл элемент → поменял значение → понравилось → скопировал → переключился в редактор → нашёл файл → вставил.Это семь шагов ради однострочного изменения. Я сделал LiveStyleSync, чтобы это был один шаг.Что это такоеLiveStyleSync добавляет небольшую панель поверх вашего Vite-приложения в режиме разработки. …

  • воскресенье, 31 мая 2026 г. в 00:00:07
javascript
Как построить эпюры Q и M в многопролётной балке: следующий шаг после построения линий влияния Q и …

В предыдущей публикации я представил веб-инструмент для построения линий влияния в многопролётных шарнирных балках. Инструмент позволяет визуализировать линии влияния поперечных сил Q, изгибающих моментов M и реакций опор R, а также получать численные значения для любого заданного сечения.Теперь — следующий шаг.Я хочу поделиться идеей, как с помощью уже работающего инструмента автоматически строить эпюры Q и M для всей балки целиком. На данный момент это концепция и алгоритм, который я планирую…

  • воскресенье, 31 мая 2026 г. в 00:00:06
javascript
Заброшенные репозитории на GitHub. Какие языки теряют разработчиков и когда код перестают обновлять

Автор: Иван Богданов, Технический писатель ВведениеВ прошлой статье на основе данных GitHub мы провели анализ популярности языков программирования по числу новых репозиториев поквартально. Получилось любопытно. JavaScript впереди, TypeScript растет втрое, Ruby проседает. Тот рейтинг отвечал на вопрос, где сейчас создают новое. За кадром осталось всё остальное, а именно что происходит со старыми проектами, живут они или тихо превращаются в цифровую археологию. Инструменты разработчика на вашем с…

  • суббота, 30 мая 2026 г. в 00:00:12
javascript
Редактор, в котором главный — терминал: как я делал лёгкую IDE под эпоху ИИ-агентов

Последний год я почти перестал печатать код руками. Чаще просто диктую задачу агенту в терминале - Claude Code, Codex, Qwen, что под рукой. И в какой-то момент посмотрел на свой здоровенный IDE и понял: он превратился в дорогую рамку вокруг одного-единственного окна - терминала. Все эти панели, индексаторы, плагины придумывались под сценарий “человек сам пишет проект”. А я уже не пишу. Я направляю и проверяю.Голый терминал, даже в tmux, тоже не спасает, когда проектов несколько. Не видно, какой…

  • суббота, 30 мая 2026 г. в 00:00:11
javascript
Три мажора, две ошибки: проектирование API приостановки для интерпретатора машины Тьюринга

За последние две недели я выкатил подряд четыре ломающих мажорных релиза @turing-machine-js/machine — v3, v4, v5, v6 — и самое интересное здесь было не в какой-то одной фиче. Интересно было смотреть, как один и тот же участок API (хук приостановки/брейкпоинта в управляющем цикле) переделывался дважды за три версии, и каждый раз потому, что в прошлый раз там выпирало то, что выпирать не должно.Этот пост — разбор полётов. Если вы проектируете API приостановки/шага/брейкпоинта для интерпретатора н…

  • суббота, 30 мая 2026 г. в 00:00:10