Category : javascript

javascript
Достаточно «Искры» одной…

Почему я начал делать эту штуку? От жадности и от лени.Нам начали упорно на работе пропихивать модную игрушку (чтобы мы же её и оплачивали). Ну, как бы, не трудно было заметить, что эта драная обёртка в 10 раз больше цены, чем те модели искусственного интеллекта, которые там реально работают. Ну и к тому же интерфейс с вырвиглазной цветовой схемой не для моего зрения. Главное, конечно, от жадности — не хочется оплачивать «воздух» наглым халявщикам, — чувствуешь себя лохом.Лень — двигатель прогр…

  • понедельник, 16 ноября 2026 г. в 00:00:09
javascript
WebSocket в лифте: соединение есть, но приложение не работает

Вы заходите в лифт. Интернет пропадает. WebSocket по-прежнему OPEN. Приложение уверено, что все хорошо. Вы спускаетесь вниз, выходите, старый WebSocket может быть по-прежнему OPEN. Добро пожаловать в мир распределенных систем.Главная проблема: операционная система не обязана мгновенно сообщать приложению, что TCP-соединение перестало передавать данные.Причина неприятностейА вот и первая ошибка:socket.onopen = () => setOnline(true)Событие onopen сообщает, что WebSocket открыт. Оно не сообщает…

  • понедельник, 16 ноября 2026 г. в 00:00:07
javascript
Хэши и пароли в браузере: что умеет Web Crypto, где нужна своя реализация и какие грабли мы собрали

Мы делаем сайт с набором небольших браузерных инструментов. Два из них, хэш-калькулятор и генератор паролей, работают целиком на клиенте: введённая строка никуда не отправляется, и это можно проверить на вкладке Network. Расскажу, как они устроены, какие решения оказались неочевидными и как мы нашли у себя ошибку в собственной оценке надёжности.Статья без громких обещаний. В ней много кода, несколько цифр и одна неловкая находка.Часть 1. ХэшиЧто даёт Web Crypto и чего не даётПервая мысль: зачем…

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

У меня есть друзья, которые присылают голосовые на три минуты. Содержание обычно умещается в одно предложение, но чтобы его достать, нужно прослушать «короче, слушай, тут такое дело…». Голосовое не пробежишь глазами, на созвоне его не включишь, а ночью рядом со спящим человеком тем более.В какой-то момент я решил ответить им так же неудобно. Получился pleasejusttext.me: пишешь ответ текстом, а на выходе MP4, где мультяшные руки не спеша набирают его на телефоне. Меня заставили слушать, пусть те…

  • понедельник, 16 ноября 2026 г. в 00:00:05
javascript
«Уязвимости нет, и мы её исправили»: первая неделя HTML-виджетов в Telegram

10 ноября я рассказал, как работают HTML-виджеты Telegram. Разобрал, как бот отправляет виджет, где выполняется JavaScript и как данные от бота меняют уже отправленное сообщение. А на игре с башней проверил, что вообще влезает в 4 КБ. Про безопасность я тогда написал, что виджет живёт в песочнице без сети и ввода с клавиатуры.На следующий день V12 выложила демонстрацию уязвимости. Моя башня на этом фоне выглядела довольно воспитанной.Что показала V12Демонстрация V12: виджет запускает калькулято…

  • воскресенье, 15 ноября 2026 г. в 00:00:14
javascript
Node.js 26 стал LTS: пять мест, где переезд с 24 ломается, и как найти их заранее

28 октября Node.js 26 получил статус LTS с кодовым именем Lithium, а в ноябре вышел первый security-релиз этой ветки, 26.13.1. Платформы уже начинают ставить 26 по умолчанию для новых проектов, так что самое время переводить на неё сервисы, которые сейчас живут на 22 или 24.Обычно переход между LTS проходит тихо: поменял версию в .nvmrc и Dockerfile, прогнал тесты, поехали. Тут тоже в основном так, но в 26 окончательно удалили несколько старых API, поменяли ABI нативных модулей, а официальные б…

  • воскресенье, 15 ноября 2026 г. в 00:00:13
javascript
Потоковая выгрузка из Postgres в CSV часть 2

Потоковая выгрузка из PostgreSQL в CSV: серверный курсор и COPYВ прошлый раз я разобрал самые такие три жизненных примера работы с выгрузками.Наивный способ через память, постраничку через OFFSET/LIMIT и через keyset курсор. Но было бы несправедливо остановиться на этом и не протестировать другие оставшиеся варианты. Два способа, которые я хочу рассмотреть - это серверный курсор pg-query-stream и выгрузка напрямую из базы через COPY. В этой статье дальше будут примеры с кодом, но сам по себе ко…

  • воскресенье, 15 ноября 2026 г. в 00:00:11
javascript
Как в ответы ИИ попасть медицинскому сайту с комплаенсом

Одна из проблем для медицинских сайтов заключается в том, что описания процедур и состав препаратов затруднительно размещать на странице сайта, которая посвящена услуге. Особенно на лендинге, где довольно строгая структура, а тексты предельно лаконичны. Но таков закон. Комплаенс требуется для подтверждения легитимности самой клиники и методик, которые она использует.Если помещать блок комплаенса в видимую часть страницы, то это неминуемо приведет к “отказам” - быстрому уходу посетителя с сайта…

  • воскресенье, 15 ноября 2026 г. в 00:00:10
javascript
Как читать графики из панели performance devtools chrome

При виде панели performance из devtools хрома у любого человека глаза начинают лезть на лоб. Пользуются ей далеко не все фронтенд разработчики, а умеют пользоваться очень немногие. Сразу дополнительно обозначу, что статью писал сам, это не перевод.И я, к сожалению, не отношусь к таким, но некоторые моменты полезные новичкам хочу рассказать, а заодно попрошу опытных людей поделиться опытом использования. Достаточно долго я обходил этого монстра стороной, пугаясь обилия разнородной информации. Но…

  • воскресенье, 15 ноября 2026 г. в 00:00:08