Category : javascript

javascript
Как я собрал браузерный хоррор на Three.js: GLB-контракт, аномалии и PS1-рендеринг для слабых устро…

Привет, Хабр.Я frontend-разработчик и большую часть времени работаю с интерфейсами. В какой-то момент мне стало интересно, можно ли на привычном для меня веб-стеке сделать не демо с вращающимся кубом, а законченную 3D-игру — с загрузкой сцены, управлением, звуком, меню, мобильной версией и публикацией на платформе.Так появилась Taproom 8 — браузерная игра, в которой нужно искать аномалии в мрачном баре.Играть: Taproom 8 в Яндекс ИграхИсходный код: GitHubНиже расскажу не столько о самой игре, ск…

  • четверг, 13 августа 2026 г. в 00:00:23
javascript
SOP & CORS

Ситуация, в которой видно сутьДержите открытыми две вкладки. В одной — интернет-банк, куда вы залогинены и где на экране висит ваш баланс. В другой — какой-то сайт, на который вы забрели по ссылке из выдачи, ничего особенного. Теперь вопрос, который на первый взгляд кажется надуманным, а на деле упирается в фундамент всей веб-безопасности: что мешает скрипту со второго сайта взять и прочитать ваш баланс из первого?Разберёмся, что технически ничего не мешает. Обе вкладки живут в одном браузере, …

  • четверг, 13 августа 2026 г. в 00:00:22
javascript
Реалтайм на WebSocket со сквозной типизацией: TypeScript, Bun, React, Point0

Бывает так: есть фулстек проект, и в нём всё хорошо. Откуда-то есть сквозные типы (tRPC, генерация из OpenAPI), есть авторизация, есть основной функционал. А потом вы решаете добавить реалтайм: уведомление о новом посте в ленте, чат между пользователями, интерактивную доску. И появляется целый новый слой абстракций, в котором надо заново изобрести всё, что в проекте уже есть, только на новый лад. И дальше поддерживать две разные системы.В своём фреймворке Point0 я добавил четыре новых реалтайм-…

  • четверг, 13 августа 2026 г. в 00:00:22
javascript
История одного архитектурного круга: реактивность Vue

Vue снова меняет способ обновления интерфейса. Во фреймворке появляется Vapor — режим рендеринга, который позволяет точечно менять страницу без виртуального DOM. Для разработчика привычный код при этом почти не меняется. Возникает логичный вопрос: если прежняя модель работала, зачем Vue понадобилось снова переделывать одну из ключевых частей фреймворка?Возможно, ответ в том, что Vue сделал круг в своём развитии. Его первые версии обновляли конкретные части страницы напрямую. Затем фреймворк пер…

  • среда, 12 августа 2026 г. в 00:00:13
javascript
Автоматизированное тестирование Webauthn с помощью Playwright

Авторизация — это сложно… Хотя казалось бы — самая часто используемая фича в мире. Очень многие процессы завязаны на авторизации и аутентификации. Начиная от ваших любимых соцсетей и заканчивая редакторами кода.Часть 1. Описание проблемыОбычной почты/пароля должно было хватать. А потом у нас появился social login (login via google, yandex, vk, facebook*). А совсем недавно начался тренд на использование 2-х факторной аутентификации, ибо безопасность — ничего не имею против. Я, как и все мы, наде…

  • среда, 12 августа 2026 г. в 00:00:07
javascript
Как не начать кодить слишком рано?

Часто разработка начинается с кода. Есть идея - мы открываем IDE, создаём проект и начинаем писать. Не задумываясь о том, что в этот момент мы ещё можем не понимать, какую проблему решаем и что вообще должна делать система.В этой статье разберём путь от пользовательской потребности до реализации: UCD → FR/NFR → KISS → компонентная разработка → код.С чего начинается задача?Представим, заказчик приходит с простой формулировкой:Нам нужен сайт, на котором студенты смогут смотреть расписаниеНа первы…

  • среда, 12 августа 2026 г. в 00:00:05
javascript
Kotlin? Swift? Flutter? Нет, кириллица: пишем production-приложение с картой и push-ами на 1С: Элем…

Привет, Хабр! (И тебе, 1С-ник, который открыл статью только чтобы убедиться, что пока точно не надо изучать новый продукт. И тебе, питонист, который сейчас будет морщиться. И тебе, мобильный разработчик, который уверен, что без Kotlin/Swift нормальное приложение не родится - держи кружку крепче.)Эта статья будет посвящена технологии, на которой можно написать своё мобильное приложение за пару дней. И я вам на примере реализованного мною полноценного проекта логистического приложения покажу, что…

  • вторник, 11 августа 2026 г. в 00:00:10
javascript
Размытая граница между состояниями CSS и событиями JavaScript

CSS «слушает» нас. Нет, не в буквальном смысле. Суть в том, что в CSS появляется все больше псевдоклассов, которые позволяют реагировать на события JS без необходимости писать сам JS. Формально псевдоклассы отслеживают состояния, а не события, но порой они настолько похожи на обработчики событий, что разница становится почти незаметной (хотя в контексте CSS это не так уж важно).Впрочем, что вообще сегодня представляет собой CSS? Например, в спецификации Animation Triggers есть предложение добав…

  • вторник, 11 августа 2026 г. в 00:00:09
javascript
Agent Skills в npm-пакетах: доставка агенту знаний о библиотеке

Когда ИИ-агент сталкивается с незнакомой библиотекой, он обычно исследует установленный пакет: находит точку входа, читает типы и исходный код, ищет README, примеры и тесты. Так можно разобраться практически с любой зависимостью.Но исходный код рассказывает о библиотеке слишком подробно и только со стороны реализации. По нему приходится восстанавливать назначение компонентов, публичные границы, порядок подключения, принятые соглашения и типичные ошибки. Агент тратит на это время и контекст моде…

  • вторник, 11 августа 2026 г. в 00:00:07