Или история о том, как 5 408 байт обфусцированного JavaScript, прилетающих в HTTP‑заголовке, превращаются в свободный доступ к GPT, Claude, Mistral и генерации картинок если построить браузерный манекен на чистом JS.Пролог: та самая ошибкаВсё началось с невзрачного сообщения в логах:Ошибка API (ddg_haiku): Error code: 500 - {'error': 'no x-vqd-hash-1 token'}Если вы когда‑нибудь пробовали написать прокси к duck.ai встроенному в DuckDuckGo AI‑чату, где под капотом живут GPT и Clau…
Может он и быстр, только экосистема нулевая. Ну и ещё система модулей кастомная, что полностью убивает любые готовые инструменты. Так что $mol — по сути одной ногой в могиле.Это как nextjs: что-то дефолтное собрать легко. Делаешь шаг в сторону, и чёт в коленке дырка появляется, ходить неудобно.$my_details $mol_view sub / <= Pager $mol_paginator value? <=> page? 0 Ну и вот этот шлак писать/генерировать/ревьювить… value? офигенно. Есть шпаргалка с мнемониками, удобными только авто…
Представьте ситуацию: человек полчаса собирал важный отчёт в веб-таблице или подбирал сложную комбинацию фильтров, нажал «Сохранить» или «Применить» — и страница намертво зависла. Курсор превратился в колесико, меню не открывается, прокрутка не работает. В голове пользователя мгновенно паника: «Всё зависло? Мои данные пропали? Нажать ещё раз? Перезагрузить страницу?!»Причина проста: если вычисления выполняются в основном потоке (Main Thread), страница будто «подвисает». JavaScript в браузере од…
Если у вас Mac и электронная подпись на Рутокене, вы наверняка знаете ритуал: чтобы войти на Госуслуги по ЭЦП, отчитаться в личном кабинете ФНС или подписать документ в Диадоке, нужно открыть Chrome. Госплагин, Контур.Плагин и КриптоПро ЭЦП Browser plug‑in официально работают только в Chromium‑браузерах и Firefox. У КриптоПро есть старое Safari App Extension, но в актуальных версиях Safari оно даже не появляется в настройках.Я захотел, чтобы всё это работало в Safari, и в итоге получилось три н…
Привет, Хабр!Принято считать, что JSON — самая скучная часть системы. Формат простой, парсер есть в любом языке, сломаться там нечему. Скорее спорят, как назвать поле, чем о том, что оно значит.На деле JSON описывает синтаксис и почти ничего не говорит о смысле. Что делать с двумя одинаковыми ключами в одном объекте, сколько знаков держит число, можно ли записать NaN — на всё это стандарт отвечает «на усмотрение реализации». Каждая библиотека усмотрела по‑своему. Пока JSON пишет и читает один и…
Стартовый кадр мультика от Sol 6.1Я тут посмотрел на свои заметки и понял, что они как каша из терминов. А как бы я объяснил это своей бабушке? Вот, к примеру, векторные мультики на JavaScript / HTML, которые нейронки сейчас делают со скоростью 1 к 30 (за полчаса - минута анимации) и копеечной стоимостью. Как бы я объяснил, почему у меня радости полные штаны?Привет, бабушка, я тут научился делать мультики на нейронке. Нееет, это не те, как кино со Штирлицем и котиками, которые разговаривают …
Казалось бы, написать простого Telegram‑бота в 2 026 году — задача на один вечер. Но как только пет‑проект вырастает из «эхо‑бота» во что‑то с сохранением состояния, базой данных и тем более полноценным Telegram Mini App, начинается классическая инфраструктурная рутина: арендовать VPS, настроить веб‑сервер и SSL‑сертификаты для вебхуков, поднять базу данных, настроить деплой статики для фронтенда и следить, чтобы всё это не упало в самый неподходящий момент.Недавно команда Telegram выкатила реш…
Привет, Хабр!Давайте начнём с простого вопроса. Под полем регистрации написано «ник, не больше 12 символов». Что здесь значит слово «символ»? Если вы сейчас мысленно ответили «ну, символ», то вы в хорошей компании: браузер, бэкенд и колонка в базе тоже уверены, что знают ответ. Просто у каждого он свой. Так вышло из‑за возраста языков. Java и JavaScript проектировали в середине 90-х, когда Unicode помещался в 16 бит, и длину строки они до сих пор считают в 16-битных единицах. Go и Rust хранят с…
В этой статье я соберу свой аналог Gravity Defied для браузера — той самой мобильной игры про мотоциклиста-стикмена. Игра написана на чистом JavaScript и Canvas, без сторонних библиотек, и работает как на компьютере, так и на телефоне, где управление сделано через джойстик — по итогам прошлой статьи. Статья состоит из нескольких частей. Во введении коротко расскажу о мотивации и о самой игре. В основной части разберу создание клона: сначала то, что видит игрок, потом внутреннюю кухню и сложност…