RU

Как я написал «Обратную змейку» на чистом Canvas

Начнём с небольшой предыстории: пару недель назад я ждал друга в кафе. Как обычно, он опаздывал примерно минут на сорок. Ноутбук с собой, интернет ест…

Обратная змейкаCanvasJavaScriptпиксель-артзмейкаретро-игрыгеймдевадаптивный дизайнмобильные игрыruvds_статьи
Habr
RU

Большой каталог «на почитать» про $mol, web и не только

Реактивность лучше MobX , виртуализация рендеринга «из коробки» , типизированные стили на TypeScript , локально-первая модель данных через CRDT — эти …

$molреактивное программированиеTypeScriptJavaScriptfrontendReactMobXVueCRDTlocal-first
Habr
RU

Фреймворк-независимые дизайн-системы: практический подход к веб-компонентам

Как построить дизайн-систему без привязки к фреймворку, используя веб-стандарты и веб-компоненты. Пошаговое руководство с примерами кода и документаци…

JavaScriptВеб-разработкаCSSHTMLДизайн интерфейсов и UXФронтендДизайнПереводы
Tproger
RU

Симулятор рисков для крипты: написал инструмент, который считает за меня размер позиции и стресс-тестирует портфель

Большинство трейдеров управляют рисками интуитивно. «Войду на 20% депозита, стоп поставлю пониже» — и пошёл. Исследование 500+ активных криптотрейдеро…

риск-менеджменткриптовалютатрейдингATRстресс-тестированиеDeepSeekJavaScriptбраузерное приложениеуправление капиталомалготрейдинг
Habr
RU

Как попасть во фронтенд и дойти до senior в ВК — интервью с Александром Ламковым

Фронтенд-разработка давно перестала быть просто «вёрсткой сайтов». Сегодня это сложная экосистема: фреймворки, state-менеджмент, TypeScript, оптимизац…

ФронтендReactJavaScriptTypeScriptКарьера в ITTailwindГеймдевВКCSSSenior
Habr
RU

Как TypeScript выводит типы переменных: разбор алгоритма

Разбираем двухфазный алгоритм вывода типовых переменных в TypeScript: сбор кандидатов, разрешение, вариантность, пересечения и NoInfer. Узнайте, почем…

JavaScriptЯзыки программированияКомпиляторыФункциональное программированиеTypeScriptСтатьи
Tproger
RU

Пора прощаться с ESLint? Как Oxlint меняет правила игры в JavaScript-разработке

Oxlint на Rust обгоняет ESLint в 50–100 раз по скорости и требует минимальной настройки. Разбираем бенчмарки и сценарии миграции. — Читать дальше « По…

JavaScriptВеб-разработкаИнструментыФронтендРазработкаСтатьи
Tproger
RU

Как правильно использовать поля HTML-форм: гайд для разработчиков

Разбираем типы полей HTML-форм, правила доступности, ARIA-атрибуты и лучшие практики. Узнайте, как создавать удобные и конверсионные формы для любых у…

JavaScriptДля начинающихВеб-разработкаЛучшая практикаCSSHTMLДизайн интерфейсов и UXФронтенд-разработка с нуляСтатьи
Tproger
RU

Как добавить кнопку «Спроси о нас у ИИ» (Яндекс Алиса, ChatGPT, Claude и другие)

Новый тренд для сайтов - кнопка «Спросите ИИ о нас». Такие кнопки открывают Яндекс Алису, ChatGPT, Perplexity или другие ИИ-поисковики с заранее подго…

AI кнопкиChatGPTClaudeЯндекс АлисаJavaScriptтуториалинтеграцияфронтендвеб-разработкаURL-параметры
Habr
RU

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

Можно ли запустить казуальную HTML5-игру на чистом JS в Яндекс Играх, не зная геймдева и верстки? Спойлер: можно, но придется пройти через 2-3 месяца …

HTML5JavaScriptЯндекс Игрыразработка игринди-разработкапостмортемказуальные игрыпоиск отличийгеймдевмонетизация игр
Habr
RU

Новый Intl.DurationFormat привел к неожиданной ошибке приложения

В этой статье расскажу о свежем баге, который ронял один тип транзакций, пока остальные работали штатно. Если используете @formatjs /intl-durationform…

JavaScriptTypeScriptReactIntlDurationFormatfrontendотладкаполифиллплатёжные системыErrorBoundary
Habr
RU

Как построить эпюры Q и M в многопролётной балке: следующий шаг после построения линий влияния Q и М

В  предыдущей публикации  я представил веб-инструмент для построения линий влияния в многопролётных шарнирных балках. Инструмент позволяет в…

строительная механикалинии влиянияэпюрымногопролётные балкиJavaScriptинженерные расчётыСАПР
Habr
RU

Как я 8 дней ловил утечку памяти в Nuxt 3 SSR, и несколько раз думал, что починил

Всем привет. Я занимаюсь фронтендом в небольшой команде сервиса бронирования отелей. Хочу как я 8 дней ловил утечку памяти на проде, несколько раз дум…

memory leakутечка памятиVue.jsNuxt.jsNode.jsJavaScriptSSRV8
Habr
RU

Линии влияния в многопролётных шарнирных балках: бесплатный веб-инструмент для проверки расчётов

Я занимаюсь разработкой ПО для строительной механики. В процессе работы над одним из проектов возникла потребность в простом инструменте для построени…

строительная механикалинии влияниямногопролётные балкиJavaScriptСАПРинженерные расчётыобразование
Habr
RU

Вы неправильно тестируете асинхронный код: тест проходит раньше, чем выполняется проверка

В статье разберём, как именно раннер решает, что тест прошёл, почему .then без return выполняется уже после теста, почему try/catch в&n…

асинхронное тестированиеавтотестыJestJavaScriptPromiseложноположительные тестыunit-тестытест-раннерAPI-тестирование
Habr
RU

Как я написал E2EE-мессенджер на Spring Boot и WebCrypto — и почему сервер не видит сообщения

Разбор архитектуры E2EE-мессенджера на Spring Boot 3, React и WebCrypto: X3DH, symmetric ratchet, AES-GCM, WebSocket, multi-device и ограничения реали…

APIJavaScriptJavaAndroidStack OverflowGitБезопасностьОпросIDESQLiOSРаботаTorGitHubБазы данныхHRReactDockerMITАлисаRedisQAМессенджер5gПриложениеВзломdevСервер1CPostgreSQLGrafanaСтатьи
Tproger