Почему я начал делать эту штуку? От жадности и от лени.Нам начали упорно на работе пропихивать модную игрушку (чтобы мы же её и оплачивали). Ну, как бы, не трудно было заметить, что эта драная обёртка в 10 раз больше цены, чем те модели искусственного интеллекта, которые там реально работают. Ну и к тому же интерфейс с вырвиглазной цветовой схемой не для моего зрения. Главное, конечно, от жадности — не хочется оплачивать «воздух» наглым халявщикам, — чувствуешь себя лохом.Лень — двигатель прогр…
Вы заходите в лифт. Интернет пропадает. WebSocket по-прежнему OPEN. Приложение уверено, что все хорошо. Вы спускаетесь вниз, выходите, старый WebSocket может быть по-прежнему OPEN. Добро пожаловать в мир распределенных систем.Главная проблема: операционная система не обязана мгновенно сообщать приложению, что TCP-соединение перестало передавать данные.Причина неприятностейА вот и первая ошибка:socket.onopen = () => setOnline(true)Событие onopen сообщает, что WebSocket открыт. Оно не сообщает…
Мы делаем сайт с набором небольших браузерных инструментов. Два из них, хэш-калькулятор и генератор паролей, работают целиком на клиенте: введённая строка никуда не отправляется, и это можно проверить на вкладке Network. Расскажу, как они устроены, какие решения оказались неочевидными и как мы нашли у себя ошибку в собственной оценке надёжности.Статья без громких обещаний. В ней много кода, несколько цифр и одна неловкая находка.Часть 1. ХэшиЧто даёт Web Crypto и чего не даётПервая мысль: зачем…
У меня есть друзья, которые присылают голосовые на три минуты. Содержание обычно умещается в одно предложение, но чтобы его достать, нужно прослушать «короче, слушай, тут такое дело…». Голосовое не пробежишь глазами, на созвоне его не включишь, а ночью рядом со спящим человеком тем более.В какой-то момент я решил ответить им так же неудобно. Получился pleasejusttext.me: пишешь ответ текстом, а на выходе MP4, где мультяшные руки не спеша набирают его на телефоне. Меня заставили слушать, пусть те…
10 ноября я рассказал, как работают HTML-виджеты Telegram. Разобрал, как бот отправляет виджет, где выполняется JavaScript и как данные от бота меняют уже отправленное сообщение. А на игре с башней проверил, что вообще влезает в 4 КБ. Про безопасность я тогда написал, что виджет живёт в песочнице без сети и ввода с клавиатуры.На следующий день V12 выложила демонстрацию уязвимости. Моя башня на этом фоне выглядела довольно воспитанной.Что показала V12Демонстрация V12: виджет запускает калькулято…
28 октября Node.js 26 получил статус LTS с кодовым именем Lithium, а в ноябре вышел первый security-релиз этой ветки, 26.13.1. Платформы уже начинают ставить 26 по умолчанию для новых проектов, так что самое время переводить на неё сервисы, которые сейчас живут на 22 или 24.Обычно переход между LTS проходит тихо: поменял версию в .nvmrc и Dockerfile, прогнал тесты, поехали. Тут тоже в основном так, но в 26 окончательно удалили несколько старых API, поменяли ABI нативных модулей, а официальные б…
Потоковая выгрузка из PostgreSQL в CSV: серверный курсор и COPYВ прошлый раз я разобрал самые такие три жизненных примера работы с выгрузками.Наивный способ через память, постраничку через OFFSET/LIMIT и через keyset курсор. Но было бы несправедливо остановиться на этом и не протестировать другие оставшиеся варианты. Два способа, которые я хочу рассмотреть - это серверный курсор pg-query-stream и выгрузка напрямую из базы через COPY. В этой статье дальше будут примеры с кодом, но сам по себе ко…
Одна из проблем для медицинских сайтов заключается в том, что описания процедур и состав препаратов затруднительно размещать на странице сайта, которая посвящена услуге. Особенно на лендинге, где довольно строгая структура, а тексты предельно лаконичны. Но таков закон. Комплаенс требуется для подтверждения легитимности самой клиники и методик, которые она использует.Если помещать блок комплаенса в видимую часть страницы, то это неминуемо приведет к “отказам” - быстрому уходу посетителя с сайта…
При виде панели performance из devtools хрома у любого человека глаза начинают лезть на лоб. Пользуются ей далеко не все фронтенд разработчики, а умеют пользоваться очень немногие. Сразу дополнительно обозначу, что статью писал сам, это не перевод.И я, к сожалению, не отношусь к таким, но некоторые моменты полезные новичкам хочу рассказать, а заодно попрошу опытных людей поделиться опытом использования. Достаточно долго я обходил этого монстра стороной, пугаясь обилия разнородной информации. Но…