LINUX.ORG.RU

Представлен открытый проект Decimen Optical Transfer для передачи файлов через QR-коды

 , , ,


3

2

Разработчик BashAlarmist (Evan Crawley) представил открытый проект под названием Decimen Optical Transfer.

Это решение предназначено для передачи файлов между двумя устройствами с использованием только экрана и камеры через QR-коды с помощью кодов преобразования Луби — первой практической реализации фонтанного кодирования. Исходный код проекта написан на TypeScript и HTML и опубликован на GitHub под лицензией MIT.

Отправляемый файл разбивается на сотни мелких фрагментов (пакетов). Затем для каждого пакета генерируется свой QR-код, который кодирует данные и воссоздаёт их. Принимающее устройство сканирует поток QR-кодов через камеру и собирает файл обратно.

Благодаря фонтанному кодированию камере не нужно ловить каждый кадр по порядку: если камера пропустила пару QR-кодов, файл всë равно соберëтся воедино без битых байтов.

>>> Live-версия

★★

Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 6)
Ответ на: комментарий от ptah_alexs

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

bernd ★★★★★
()

Те же перфокарты только в профиль.

splinter ★★★★★
()

Исходный код проекта написан на TypeScript и HTML

А мне в школе говорили что на html нельзя программировать!

pihter ★★★★★
()
Ответ на: комментарий от ptah_alexs

Могли бы еще цвета пикселям добавить и кратно увеличить ёмкость кода.

А на это нет готовой либы в тайпскрипте - сложна

pihter ★★★★★
()

Хмм... Если скрестить с голубиной почтой, можно построить голубиную электронную почту.

argv_0_ ★★
()
Ответ на: комментарий от vbr

Почему не радиоканал?

А че тебе мешает файл на флешку перекинуть или проводок воткнуть?

Идея использовать айфон без разиомодуля для подписи… Берёшь микроконтроллер, пишешь мало мало софт, подрубаешь к кому как флешку, подписываешь алгоритм ом и ключем с мк, канал - юсб. Даже под одеяло прятаться не надо, ключ никогда не покидает памяти мк… Собсна, все так и делают, Нафиг тут куар коды

pihter ★★★★★
()
Ответ на: комментарий от zanac1

Передача файлов между яблофоном и андроидом когда инет заблокирован…

Флешка. Раньше у всех инет был заблокирован, бай дизайн :)

pihter ★★★★★
()
Ответ на: комментарий от kirill_rrr

Там можно менять fps и размер qr-кода. На 10 fps отлично работает.

Puzan ★★★★★
()
Ответ на: комментарий от pihter

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

bernd ★★★★★
()
Ответ на: комментарий от CrX

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

bernd ★★★★★
()
Последнее исправление: bernd (всего исправлений: 1)
Ответ на: комментарий от pihter

Исходный код проекта написан на TypeScript и HTML

А мне в школе говорили что на html нельзя программировать!

Ну так напрограммировано оно на TypeScript, ты же сам процитировал. А вот «исходный код» — это не только программа на языке программирования, поэтому он написан на TypeScript (программная часть) и HTML (разметочная часть, без которой TypeScript не поюзать). Никаких противоречий тут нет. А исходный код может быть даже у документации (например .tex исходник и результат в .pdf).

CrX ★★★★★
()
Ответ на: комментарий от bernd

«У cat есть начальное состояние? txt-файл заставляет его однозначно изменять это состояние и выводить что-то конкретное в stdout? У cat есть конечное ожидаемое состояние? Ты воспринимаешь txt так просто текст, это действительно так для человека, а для cat это уже программирование.»

CrX ★★★★★
()
Ответ на: комментарий от bernd

Ещё как занимается — он не был выведен в stdout, а теперь выведен.

Ну хорошо, допустим это «не занимается», это «выводит как есть» (хотя cat -v…). Возьми не cat, а man, или там вообще grep, или sort

CrX ★★★★★
()
Ответ на: комментарий от CrX

не сочиняй. если бы ты сказал какой-нить tex я бы подтвердил, что с точки зрения программы вывода это программа как именно надо рендерить документ.

bernd ★★★★★
()
Последнее исправление: bernd (всего исправлений: 1)
Ответ на: комментарий от bernd

в универе тебе должны были рассказать

Собсна, из первого сообщения можно понять что ещё в школе рассказали

pihter ★★★★★
()
Ответ на: комментарий от pihter

Флешка.

Рабочий опасный костыль. Передача напрямую через WiFi - самый быстрый безопасный способ.

zanac1
()
Ответ на: комментарий от bernd

если бы ты сказал какой-нить tex

Проблема в том, что tex действительно является языком программирования, в отличие от html.

с точки зрения программы вывода это программа как именно надо рендерить документ.

HTML — это семантика, там не говорится о том, как именно надо рендерить документ. «Как» описывается в CSS. Есть, конечно, некоторые общепринятые, так сказать, традиции, что например <em> по умолчанию рендерится курсивом, а <strong> — жирным, но это чисто выбор большинства браузеров, и строго говоря, никто этому следовать не обязан.

HTML — это язык разметки. Как и Markdown, которым мы сейчас тут пишем, равно как и BBCode/LORCODE, или, скажем, RTF.

Да и «plain text» по сути тоже. Например, что \n или \r\n кодируют «перевод строки» — это точно такая же разметка, а не «текст как он есть, посимвольно». Это даже без привлечения юникода с его модификаторами для цвета кожи последующего эмодзи, или какими-нибудь переключателями RTL, даже в обычном ASCII plain text нет полного соответствия «один байт = одно знакоместо», а присутствует разметка в виде переводов строк и табуляций.

В HTML разметка чуть сложнее и разнообразнее, но это всё ещё просто разметка. Если можно «программировать браузер при помощи HTML», то можно и «программировать терминал при помощи TXT». Не, термины выдумать можно, конечно, любые — о них не спорят, а договариваются, но звучит это всё же для большинства как бред, а главное не позволяет отделять разные понятия друг от друга.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от CrX

Ну так напрограммировано оно на TypeScript, ты же сам процитировал

Оспади, да это же шутка была, там же воскл знак, типа я не просто тупняк пишу, а ещё и нарочито-восторженно

Тут, по-моему, вся новость только как повод постебаться висит :)

pihter ★★★★★
()
Ответ на: комментарий от pihter

Оспади, да это же шутка была, там же воскл знак, типа я не просто тупняк пишу, а ещё и нарочито-восторженно

Ну ок, значит я не выкупил (и как оказалось, не только я…).

Тут, по-моему, вся новость только как повод постебаться висит :)

Принимается :)

CrX ★★★★★
()
Ответ на: комментарий от vbr

через qr-коды передается на первый, на первом она подписывается

Напоминает оффлайн chipTAN устройства размером с кредитную карточку, которые банки используют уже лет 15 (для второго фактора авторизации). Сначала там были мерцающие коды (и возможность вручную ввести цифры), потом добавились QR-коды, анимационная графика.

gag ★★★★★
()
Ответ на: комментарий от bbc69

и потом его собирает - этот какая-то фантастика для современного инженера?

Ну или вайбкодингом, или нужно быть весьма специфическим инжинером... Но главное ведь не это, а прилагаемая к протоколу скорость! Я даже не знаю, там порядка 10 или 40Кб/с, это не принципиально, это всё равно на 3 порядка медленнее чем нужно.

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

Всё было замечательно, пока где то после 5-9 андроидов не начали добавлять креативные функции безопастности на пути пользователя. Не знаю даже где всё пошло не так, но 13-й уже можно только пингануть, но постучаться на него со стороны модема нельзя. Или можно, но нужно очень хорошо знать как и куда.

kirill_rrr ★★★★★
()
Ответ на: комментарий от bernd

С полочками смартфонов, хранящих данные пока батарейка не вздуется и не лопнет?

kirill_rrr ★★★★★
()
Ответ на: комментарий от bernd

Ой не факт! Это самое «фонтанное кодирование» намекает, что можно по циклу крутить набор чанков на экране и если отвернуть смартфон-приёмник в процессе передачи секунд на 10 то от процесса сборв ты потеряешь не намого больше 10 секунд. Никаких «начинай сначала». Хз как это работает, но почему бы и нет? Вероятно это возможно.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от pihter

Флешки + андроид? Этот нелицензионный заменитель ОС до сих пор использует для них фат32, давным-давно разучился их отмонтировать, монтировать нормально никогда и не умел, и прекрасно защищён от использоания флешек пользователем постоянными сменами протоколов ограничения доступа приложений к дискам - невозможно создать приложение которое будет просо работать на всех андроидах.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

! Я даже не знаю, там порядка 10 или 40Кб/с, это не принципиально, это всё равно на 3 порядка медленнее чем нужно

Вангую куар-кодами ещё хуже будет. 40-я версия 3 кБ в одной картинке вмещает. Это если она в экран влезет. 20-я, например, только 0,8 кБ. 10-я - 0,3 кБ. И вряд ли там 10 кадров в секунду будет. Скорее 3-5. Вот и считай.

bbc69
()
Ответ на: комментарий от bbc69

Ну... Вот тут в демке достигли 128Кб/с. Возможно именно для такой задачи в современных смартфонах ставят 8-и ядерники с кучей мультимедиа-сопроцессоров и гигатонны памяти.

kirill_rrr ★★★★★
()
Ответ на: комментарий от CrX

Или html5? Я понимаю что js очень популярен, но «язык разметки» превратили в страшное нечто, позволяющее создавать очень сложне штуки при отключенном js.

kirill_rrr ★★★★★
()
Ответ на: комментарий от CrX

можно и терминал программировать тхт, все зависит от точки зрения. перевод каретки тож самое, что двинуть манипулятором робота.

bernd ★★★★★
()
Ответ на: комментарий от kirill_rrr

Вот тут в демке достигли 128Кб/с.

Я современным маркетинговым цифрам не особо люблю верить. Потому спрошу ехидно: Это полезная нагрузка или общие данные вместе со служебными? Про телефон Вы сами сказали. Как оно себя покажет на средних телефонах?

Глянул тут скорость по блютусу, до 1 Мбит/с. Сильно Вы его обители.

bbc69
()
Ответ на: комментарий от kirill_rrr

Или html5? Я понимаю что js очень популярен, но «язык разметки» превратили в страшное нечто, позволяющее создавать очень сложне штуки при отключенном js.

Матчасть учи. В html5 добавили <canvas>, необходимый для этого самого webgl, а также <video>. Никакого программирования на HTML там не добавили. Переусложнения языка там тоже не произошло — добавили пару элементов. Усложнение произошло на уровне того, что требуется поддерживать браузерами, в том числе то же video. Чисто на уровне HTML это просто один тег, та же разметка, а на уровне браузера надо добавлять поддержку кодеков (чисто как до этого для <img> надо было добавлять поддержку jpeg или png, только больше и сложнее). С canvas ещё сложнее, но логика там вся на JS (ну или webasm). Никакой логики на HTML там как не было, так и не появилось.

CrX ★★★★★
()
Ответ на: комментарий от bbc69

Ты пишешь о том когда повреждена часть одного QR кода, а там может потеряться целиком 1 или 2 QR кода, из последовательности QR кодов, целиком. Так что нет восстановление данных там обязано быть на уровне избыточного дублирования данных в пределах нескольких последовательных QR кодов, а не за счёт механизма коррекции ошибок. Он конечно тоже работает, но только в рамках одного QR кода, ну типа когда камеру шатнул и часть кода в камеру не попала, но не когда камеру на секунду отвёл в сторону и 1~2 кода вообще не попали, следоваетельно последующие QR обязаны кодержать и текущие + 2 предыдущих блока данных как минимум, так как механизма синхронизации никакого нет.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Gonzo

Это один из вариантов, но не факт что там именно так.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Какая разница. В любом алгоритме с коррекцией используются блоки данных + блоки коррекции. Что внутри одного qr, что между кадрами. Избыточные данные тоже можно условно поделить на сами данные и коррекцию. Понятно, что алгоритмы могут быть разными, но это не так важно, как по мне.

bbc69
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.