Передача данных через QR-коды — когда Wi-Fi недоступен

11 Mar, 2026
1,558
🔱 96
👥 9

Помните мем про установку Windows через QR-коды? Казалось бы — шутка, но команда qifi-dev создала реально работающее решение для передачи любых данных через последовательность QR-кодов. Проект Qrs набирает популярность — уже 1.3k звёзд на GitHub.

Что это за «магия»?

Qrs использует алгоритм Luby Transform (разновидность Fountain Code) для разбиения данных на части и кодирования их в QR-коды. Принцип напоминает торренты:

  • Данные делятся на блоки
  • Генерируется множество QR-кодов (больше, чем исходных блоков)
  • Для восстановления файла достаточно отсканировать достаточное количество кодов

Пример передачи данных

Кому это нужно?

Необычный способ передачи пригодится в ситуациях:

  1. Офлайн-передача — между устройствами без общего подключения
  2. Ограниченные среды — где запрещены Bluetooth/Wi-Fi
  3. Резервное копирование — например, важные ключи на бумаге
  4. Образовательные цели — наглядная демонстрация работы кодирования

Как это работает технически?

Под капотом:

Реклама
  • Luby Transform — алгоритм из теории информации, устойчивый к потерям данных
  • Прогрессивная декодировка — можно начать восстанавливать данные до получения всех кодов
  • Автоматическое определение — система понимает, какие коды уже отсканированы
// Пример генерации кодов
import { encode } from '@qifi/generate';

const data = new Uint8Array([...]);
const qrStream = encode(data, { chunkSize: 100 });

Практическое применение

  1. CLI-версия — передача файлов через терминал
  2. Web-деможивой пример
  3. Библиотеки — интеграция в свои проекты

Видео демонстрации:

Как попробовать?

Установка проста:

npm install -g pnpm
pnpm install
pnpm run dev

Qrs — не просто технический эксперимент, а практичное решение для специфичных сценариев передачи данных. Особенно рекомендую:

  • Разработчикам, работающим с офлайн-сценариями
  • Энтузиастам теории информации
  • Всем, кому интересны нестандартные способы передачи данных

Проект активно развивается и ждёт ваших кейсов применения!

Репозиторий на GitHub

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.