Category : javascript

javascript
Внутри Telegram Serverless: код, БД и Mini App из коробки

Казалось бы, написать простого Telegram‑бота в 2 026 году — задача на один вечер. Но как только пет‑проект вырастает из «эхо‑бота» во что‑то с сохранением состояния, базой данных и тем более полноценным Telegram Mini App, начинается классическая инфраструктурная рутина: арендовать VPS, настроить веб‑сервер и SSL‑сертификаты для вебхуков, поднять базу данных, настроить деплой статики для фронтенда и следить, чтобы всё это не упало в самый неподходящий момент.Недавно команда Telegram выкатила реш…

  • среда, 21 октября 2026 г. в 00:00:09
javascript
Сколько символов в нике «Аня»? Шесть языков, три ответа, и ни одного правильного

Привет, Хабр!Давайте начнём с простого вопроса. Под полем регистрации написано «ник, не больше 12 символов». Что здесь значит слово «символ»? Если вы сейчас мысленно ответили «ну, символ», то вы в хорошей компании: браузер, бэкенд и колонка в базе тоже уверены, что знают ответ. Просто у каждого он свой. Так вышло из‑за возраста языков. Java и JavaScript проектировали в середине 90-х, когда Unicode помещался в 16 бит, и длину строки они до сих пор считают в 16-битных единицах. Go и Rust хранят с…

  • среда, 21 октября 2026 г. в 00:00:08
javascript
Gravity Defied: стик-человечек на мотоцикле

В этой статье я соберу свой аналог Gravity Defied для браузера — той самой мобильной игры про мотоциклиста-стикмена. Игра написана на чистом JavaScript и Canvas, без сторонних библиотек, и работает как на компьютере, так и на телефоне, где управление сделано через джойстик — по итогам прошлой статьи. Статья состоит из нескольких частей. Во введении коротко расскажу о мотивации и о самой игре. В основной части разберу создание клона: сначала то, что видит игрок, потом внутреннюю кухню и сложност…

  • среда, 21 октября 2026 г. в 00:00:06
javascript
Мониторинг WordPress-сайтов на бесплатном Cloudflare Workers: 8 подводных камней

Недавно на одном сайте пропали превью ссылок в Telegram. Кидаешь ссылку в чат, а вместо заголовка и картинки пустота. Разметка на месте, сайт открывается, ошибок нет. В логах сервера за десять дней не нашлось ни одного запроса от Telegram: похоже, его робота отсекает хостинг еще до сайта. Никаких писем и предупреждений при этом не было, заметили случайно.Это самый неприятный вид поломки: сайт вроде бы работает, а что-то важное тихо сломано. С WordPress-сайтами таких историй три самые частые. Са…

  • среда, 21 октября 2026 г. в 00:00:05
javascript
Вес 0.7000000000000001 кг: откуда в JavaScript берутся такие числа

Вес роутера 0.7000000000000001 кг на М.Видео. Штемпель 0.30000000000000004×2.5 см на Wildberries. Эти числа никто не вводил руками: где-то значение посчитали и забыли округлить.Если вы хоть раз выкатывали в прод что-то вроде0.1 + 0.2;то знаете, какие отзывы бывают после этого.Разберёмся, откуда берутся такие числа:0.30000000000000004 0.7000000000000001Ровно они и попали в карточки выше.Постараюсь объяснить понятно, а не исчерпывающе. Цель в том, чтобы разобраться мог и дизайнер, и тестировщик, …

  • среда, 21 октября 2026 г. в 00:00:04
javascript
От HTML-таймера к TypeScript. Как менялась Kapsula

У меня Kapsula началась с таймера рабочего дня. Один HTML-файл, который написал ИИ. Открываешь, нажимаешь кнопку, он отсчитывает время. Потом гаснет экран телефона — и выясняется, что с напоминанием всё сложнее, чем казалось в браузере.Про будильники и устройство оболочки я уже рассказывал. С тех пор приложение дошло до версии 0.5, и задача немного сдвинулась. Теперь в нём можно запускать отдельные JavaScript- и TypeScript-файлы, редактировать сохранённый код и возвращаться к своим данным после…

  • вторник, 20 октября 2026 г. в 00:00:16
javascript
Как я подружил блок‑головоломку с Шопеном на WebAudio

Я делаю Blocturne, головоломку с блоками для Telegram. Механика знакомая по Block Blast: поле 8×8, три фигуры в лотке, собираешь ряды и столбцы. Сверху прикручен подсчёт как в Balatro: фишки умножаются на множитель, между раундами лавка с предметами. Но рассказать хочу про звук, потому что с ним я провозился дольше, чем со всем остальным.Хотелось, чтобы звуки ходов попадали в музыку, а не играли поверх неё. В итоге получился маленький музыкальный движок, отдельный режим для слабых Android и пар…

  • понедельник, 19 октября 2026 г. в 00:00:09
javascript
Среда исполнения JavaScript в браузере по стандарту HTML: агенты, event loop, task'и и микрозадачи

Это продолжение статьи «Модель исполнения JavaScript по спецификации ECMAScript: call stack, контексты, окружения и замыкания». Если ты её не читал, лучше начать с неё: агент, Realm Record, execution context, execution context stack и Job здесь заново не объясняются.Обычно браузер представляют так: у каждой вкладки свой поток и свой event loop, а промис срабатывает раньше таймера, потому что микрозадачи приоритетнее макрозадач. На практике этого хватает, но в стандарте HTML всё устроено иначе. …

  • понедельник, 19 октября 2026 г. в 00:00:08
javascript
3D гоночки от GLM 5.3 Flash с нулевым уровнем размышлений

Простите, что без пафоса. Просто сидел на созвоне и увидел, что в OpenCode раздают бесплатные китайские нейронки GLM 5.3 Flash и DeepSeek 4.1 Flash. Решил попробовать, скачал, взглянул — мама родная, там с thinking вообще не пробиться, сервера падают с ошибкой.Ладно, думаю, посмотрим, что будет с нулевым уровнем размышлений. Без всякой надежды, ради смеха и во имя Фрэнсиса Бэкона просто закидываю тупейший промпт, от одного вида которого у вас должны закровоточить глазаНапиши 3D игру — машина ед…

  • воскресенье, 18 октября 2026 г. в 00:00:06