Category : javascript

javascript
Движки e‑repa.ru

Часть 1. dub: аудиодиктантАнглийский я преподаю с 1989 года. С 1995 по 2005 год работал старшим преподавателем в Институте иностранных языков Уральского государственного педагогического университета, а с 2001 по 2005 год был там же заведующим отделением перевода и переводоведения. С 2004 по 2006 год был председателем приёмной комиссии Института иностранных языков и составлял экзаменационные материалы для поступающих. С 2005 по 2009 год был старшим преподавателем Института лингвистики Российског…

  • вторник, 10 ноября 2026 г. в 00:00:12
javascript
Как защитить статус оплаты в React от запоздалых ответов

На экране оплаты подписки на закрытый Telegram-канал статус обновляется автоматически. Есть и кнопка «Проверить оплату». Пользователь нажимает её, пока фоновый запрос ещё выполняется. Интерфейс показывает «Оплачено», а через полсекунды возвращается к «Ожидаем оплату». В Network у обоих ответов HTTP 200: ошибка видна только в данных и порядке их прихода.Фоновый запрос прочитал заказ до оплаты, но его ответ задержался. Ручная проверка прочитала заказ уже после оплаты и ответила первой. Если обраб…

  • вторник, 10 ноября 2026 г. в 00:00:10
javascript
Движки e-repa.ru. Часть 2. qb: конструктор вопросов

В первой части я показал, как js-движок dub помогает ученику преодолеть трудность восприятия английской речи на слух: js-движок переводит структуру синтагмы из слухового канала в визуальный. Другая трудность, с которой сталкивается русскоязычный ученик, — английская грамматика, в частности построение вопросительного предложения. Помимо особенностей самого английского вопроса — инверсии, наличия вспомогательного глагола, недопустимости разрыва определения и определяемого слова — ученику трудно р…

  • вторник, 10 ноября 2026 г. в 00:00:10
javascript
Расширение врёт: как я учил Android-приложение открывать двести типов файлов по первым байтам

У каждого файла два имени. Первое написано после точки, и верить ему нельзя: его придумал человек, почтовый клиент или сайт, который «на всякий случай» переименовал вложение. Второе лежит в первых байтах. Вот оно почти никогда не врёт.Я делаю XanderFiles — просмотрщик для Android, который открывает двести с лишним расширений: от PDF и Excel до winmail.dat, подписанных .p7m, RAR с паролем, книг FB2, RAW с фотоаппаратов, билетов Wallet, снимков КТ с диска из клиники и рисунков CorelDRAW. Это стат…

  • воскресенье, 8 ноября 2026 г. в 00:00:09
javascript
Как я не купил терменвокс и сделал его в браузере или Air Theremin

Играю на Air Theremin: Слева - экран телефона: между ладонями натянута струна-осциллограф. Справа - я.Доча посмотрела серию из «Кати и Эфа» и сказала, что видела там прикольный инструмент под названием терменвокс. Я вспомнил, что давно хотел тоже попробовать поиграть на нём. Загуглил, и цены оказались какие-то негуманные для инструмента на полчаса игры.Тут мне пришла мысль сделать аналог терменвокса для телефона, чтобы для игры можно было использовать гироскоп. В современном мире расстояние от …

  • суббота, 7 ноября 2026 г. в 00:00:12
javascript
Мы живём во время, когда создать что-то интересное гораздо проще, чем рассказать людям об этом

Скучные головастикиЯ часто смотрю стримы по «лутер-шутерам» — Escape from Tarkov, Arena Breakout, всё такое. И на многих из них замечал оверлеи для зрителей. Но они все одинаковые и, честно говоря, скучные: по низу экрана ходят «головастики» — болванки со шрифтом чата, дублирующие сообщения зрителей. Зритель написал в чат — его человечек помахал. И всё. Это не игра, это индикатор активности чата.Идея сделать игру жила у меня давно. И в какой-то момент щёлкнуло: а почему бы не совместить одно с …

  • суббота, 7 ноября 2026 г. в 00:00:10
javascript
Как React не даёт несрочному рендеру потеряться: startTransition, useDeferredValue и Suspense

Представьте поиск по каталогу: поле ввода, а под ним список из тысяч товаров. Перестраивать такой список долго, и если делать это на каждое нажатие, поле начнёт тормозить. Поэтому обновление списка можно пометить как несрочное: тогда React покажет символ в поле сразу, а список перестроит потом, урывками, в промежутках между нажатиями клавиш. Но что, если пользователь печатает без остановки: список не обновится никогда? И что видит пользователь, пока новый список считается или грузится с сервера…

  • суббота, 7 ноября 2026 г. в 00:00:09
javascript
Файлы из браузера в браузер и «торрент» без установки: как устроен TFile.io

Привет, Хабр! Я делаю TFile — сервис, который передаёт файлы напрямую между браузерами. Без регистрации, без установки, без загрузки файла на чей-то сервер. Расскажу, как он устроен и на какие грабли я наступил по дороге. Цифры в статье — из реальных замеров.Два режима⚡ Отправить сейчас. Открываете сайт, получаете ссылку вида tfile.io или QR-код. Второй человек открывает её, и дальше можно перетаскивать файлы, целые папки, текст и скриншоты из буфера обмена.🔗 Поделиться позже. Выбираете файлы и…

  • суббота, 7 ноября 2026 г. в 00:00:08
javascript
Взлом Binance через фейковое собеседование: как устроена атака на разработчиков и как проверять тес…

3 ноября Binance опубликовала первый отчёт о взломе 29 октября, в котором пострадали активы примерно на $6,34 млрд. Цепочка началась с заражённой установки Homebrew, найденной через поисковик, и фейкового собеседования с тестовым заданием. Разбираю, что известно об атаке, где в тестовых прячут вредоносный код, и даю два чек-листа: для разработчика и для компании.Что известно на сегодняГлавный источник — отчёт Binance «29 October Binance Security Incident: Initial Findings and Response Update» …

  • суббота, 7 ноября 2026 г. в 00:00:06