Pull to refresh
8K+
5
Ayndre@DiRo

User

4
Rating
Send message

Поиск по миллиону товаров на JavaScript: когда сжатый индекс проигрывает массиву

Level of difficultyMedium
Reading time10 min
Reach and readers8.8K

На миллионе синтетических записей в Node.js сжатый индекс обогнал простое пересечение массивов примерно в пять раз — на запросах «редкое + частое». Но перебор редких кандидатов на Uint32Array оказался ещё вдвое быстрее. А поток postings на 9 МиБ удерживал в памяти весь файл на 137 МиБ из-за одной строки с subarray.

Читать далее

Надпись «Откройте камерой» мешала прочитать QR-код

Level of difficultyMedium
Reading time8 min
Reach and readers11K

Один SVG: при 640 пикселях QR не читается, при 320 читается. Разбираю, как локатор принял часть подписи за угол кода, почему удаление букв возвращало чтение и как удалось оставить подпись на месте. С контрольными опытами и исходниками.

Читать далее

Одна цифра сломала QR. Почему успешного чтения недостаточно

Level of difficultyMedium
Reading time8 min
Reach and readers11K

Два QR одинакового размера, одна строка и пять блоков вместо шести. С виду оба исправны, но из одного два декодера не смогли извлечь ничего. Восстанавливаем опечатку, разбираем её путь через кодировщик и проверяем, почему даже успешное чтение не доказывает правильность QR. Шесть иллюстраций, 160 сочетаний версии и уровня коррекции, 960 сравнений с Nayuki и код эксперимента для самостоятельного запуска.

Читать далее

Отдали базу штрихкодов статикой: 1,9 МБ, 1387 шардов, медиана в одну строку

Reading time5 min
Reach and readers8.3K

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

Второй путь: скачать базу один раз, порезать на файлы по префиксу и раздавать статикой. Разбираем, что из этого вышло на 32 772 товарах: 1387 шардов, 1,85 МиБ сырых и 429 КиБ в brotli, худший файл 331 КиБ. И главное — сколько приватности при этом всё равно утекает: запрос к серверу есть, а медиана строк в шарде равна единице, то есть для 722 файлов из 1387 запрос за шардом равен запросу за товаром.

Внутри: фильтр на входе, почему не одним файлом, TSV против JSON с замерами, и что в схеме до сих пор не решено.

Читать далее

Три разных номера из одной книги — и все проходят контрольную цифру

Level of difficultyMedium
Reading time5 min
Reach and readers7.7K

У EAN-13 есть контрольная цифра, и из этого обычно делают вывод: раз проверка сошлась, номер прочитан верно. Вывод неверный. Я получил с одной книги три разных номера, и все три контрольную цифру проходят. Разбираю, почему так выходит, почему у QR такой беды нет и что с этим делать — с кодом, замерами и таблицей, откуда взялась каждая цифра.

Читать далее

Information

Rating
1,252-nd
Registered
Activity

Specialization

Разработчик баз данных
Ведущий
SQL
PostgreSQL
Python
Linux
Английский язык
Базы данных
Алгоритмы и структуры данных
Docker
PHP
Git