Рубрика «javascript»

У EAN-13 есть контрольная цифра. Тринадцатая цифра пересчитывается по остальным двенадцати, и если номер прочитан с ошибкой — проверка не сойдётся. Так написано в любом объяснении стандарта, и это правда. Проблема в том, что из этой правды обычно делают неверный вывод: «раз контрольная сошлась, номер прочитан верно».

Не сошлась. Точнее — сошлась, но это ничего не доказывает.

Как это выглядит на практике

Мы делаем бесплатный сканер кодов, который работает прямо в браузере: кадр с камеры разбирается на устройстве, ничего не уходит на сервер. Я навёл его на штрихкод книги и получил три разных результата подряд:

Читать полностью »

Слово «блокчейн» испорчено маркетингом. За десять лет вокруг него наросло столько «революций», «иксов» и «цифрового золота», что нормальный разработчик при его звуке закрывает вкладку — и я его понимаю.

Проблема в том, что за хайпом прячется инженерно интересная конструкция. Если убрать из блокчейна всё маркетинговое и посмотреть на него глазами человека, который каждый день работает с Postgres, Kafka и git, останется знакомая до боли вещь: реплицированный append‑only лог, в котором состояние — это проекция, а запись — платная.

Читать полностью »

Поговорим про микро-оптимизацию. Про, казалось бы, самую безобидную вещь: обычный {}.

[object Object] выглядит почти бесплатной абстракцией. Создал объект, напихал полей в любом порядке, удалил ненужное, передал дальше и забыл. Но, внезапно, одинаковые для тебя объекты могут оказаться разными для V8, порядок присваиваний влияет на машинный код, а “безобидный” delete оставляет после себя совсем не пустое место.

Читать полностью »

Привет, меня зовут Сергей Цибульченко, я fullstack‑разработчик. На хабре уже есть несколько статей про PWA с замахом на исчерпывающее покрытие темы (Разрабатываем PWA. Полная инструкция, PWA вместо приложения: плюсы, минусыЧитать полностью »

В данной статье будет подробно рассмотрен полный цикл деплоя сайта, используюшего Vite в качестве инструмента сборки. Мы напишем многоступенчатый Dockerfile, чтобы собрать образ с готовой статикой, и поднимем контейнер с сервером Caddy, который автоматически выдаст и будет обновлять сертификаты Let's Encrypt.

Нам понадобится

  1. Арендованный или домашний сервер на Ubuntu с публичным IP

  2. Домен, привязанный к IP

  3. Docker

  4. Готовый проект с vite

  5. Терминал

Структура проекта

Читать полностью »

Эта статья не претендует на создание полноценной замены Node.js EventEmitter или других готовых библиотек. Цель — разобраться, как устроен Event Bus и написать собственную минимальную реализацию.

Однажды, размышляя над архитектурой своего приложения, я задался вопросом: как связать модули между собой так, чтобы они оставались полностью автономными? Без импортов и экспорта функциональности.

И решил я написать свою систему коммуникации модулей.

Читать полностью »

От концепт‑дизайна велосипедного магазина до релизной web‑игры на GitHub Pages — и почему документация оказалась важнее промптов.

Kadence — инди-игра о буднях веломастерской.

Kadence — инди‑игра о буднях веломастерской.

Читать полностью »

Про то, как я оцифровал себя без ИИ, чтобы стать видеоблогером - 1

В общем, мой каминг‑аут: я человек, не созданный для камеры, но почему‑то всё равно желающий творческого выброса и немного славы.

Читать полностью »

Конвертируем цвета в JS со скоростью 6 миллиардов операций в секунду

В начале этого года я создал @colordx/core, самую быструю JS‑библиотеку для работы с цветом: парсинг различных форматов, конвертация в OKLAB/OKLCH, проверка попадания в P3-гамут и многое другое. Библиотека весит всего 7 КБ и не имеет внешних зависимостей. Высокую скорость обеспечили оптимизации под V8: мономорфизм, скрытые классы, ноль лишних аллокаций.

Читать полностью »

Полгода я жил в одном и том же цикле. Собираешь скрапер, вечером он проходит все страницы, а к обеду следующего дня отдаёт сплошные капчи и 403. Добавляешь puppeteer‑stealth, сверху ещё десяток заплаток, гонишь трафик через резидентные прокси, и всё равно на третьи сутки прилетает бан. Я устал чинить симптомы и сел разбираться, что именно нас выдаёт.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js