
Data-in-QR은 자체 데이터가 담긴 QR 라벨을 만들어 인쇄하는 도구다. 라벨을 스캔하면 브라우저에서 내용을 확인하고 복사할 수 있으며, 백엔드 데이터베이스를 유지하거나 전용 앱을 설치할 필요가 없다.
사용하려면 id라는 열이 포함된 작은 CSV 파일을 만든다. 예시는 다음과 같다.
id,make,model,s/n,notes 101,Acme,Widget X-1,81273812,Tool bench unit 102,Logi,MX Master 3S,637213672,Desk setup 103,Bosch,Laser Measure,63172171,Field toolkit
파일을 데모 페이지에 끌어다 놓고 ‘Generate QR code’를 누르면 된다. 생성된 QR 코드를 스캔해 내용을 확인한다.
이 프로젝트는 QR 코드에 데이터를 직접 담아 전달하는 데이터베이스 없는 구조를 구현한다. QR 코드에는 정적 웹페이지 주소와 URL 해시 조각이 함께 인코딩된다. 예를 들면 [http://www.example.org/foo.html#bar](http://www.example.org/foo.html#bar)와 같은 형태다. 기본 주소는 GitHub Pages 같은 정적 호스팅에 올린 HTML·자바스크립트 리더를 가리킨다. 해시 조각은 클라이언트 측에서만 처리되므로 데이터가 서버로 전송되지 않는다.
사용자가 QR 코드를 스캔하면 모바일 브라우저가 정적 리더 스크립트를 불러오고, URL 해시(#bar)에 담긴 데이터 값을 해석한다. 스크립트는 내용을 모바일 화면에 맞춰 표시하고, 개별 필드와 전체 내용을 한 번에 복사하는 버튼을 제공한다. CSV 파일을 끌어다 놓아 표준 접착 라벨 양식에 맞춘 인쇄용 라벨을 만드는 HTML·자바스크립트 생성기도 포함돼 있다.
이 프로젝트는 서버 데이터베이스에서 레코드를 불러오는 대신 QR 코드 자체에 레코드를 담는다. 스프레드시트나 텍스트 편집기로 데이터를 준비하고 브라우저에서 라벨을 생성할 수 있다. 리더에 접근할 수 있는 사람은 전용 앱 계정 없이도 데이터를 확인하고 복사할 수 있다. 비교적 변동이 적은 정보라면 호스팅 데이터베이스의 이용 가능 여부와 관계없이 인쇄된 라벨에 레코드를 보존할 수 있으며, QR 코드 하나에 식별자나 URL만이 아니라 여러 필드로 된 작은 구조화 데이터를 넣을 수 있다.
다만 QR 코드가 데이터를 직접 저장하는 방식 자체는 새로운 것이 아니며, 모든 일반적인 QR 솔루션이 데이터베이스를 필요로 하는 것도 아니다. 이 프로젝트의 특징은 CSV 기반 생성, 인쇄용 라벨, QR 코드에 내장하는 구조화 데이터, 재사용 가능한 브라우저 리더를 결합한 점이다.
데이터는 정적이므로 레코드가 바뀌면 보통 QR 코드를 다시 생성해 라벨을 인쇄해야 한다. QR 코드의 저장 용량에는 한계가 있어 레코드가 커질수록 코드가 복잡해지고, 특히 작은 라벨에서는 스캔이 어려워질 수 있다. 전체 레코드를 찾아보는 기능도 내장돼 있지 않다. 라벨을 스캔하면 그 코드에 담긴 레코드가 표시될 뿐, 생성된 모든 레코드를 자동으로 검색하지는 않는다.
데이터는 기밀이 아니다. Base64URL은 암호화가 아니라 인코딩 형식이므로 QR 코드를 얻은 사람은 내용을 해독할 수 있다. 비밀번호나 비밀 정보, 민감한 데이터는 넣지 말아야 한다. 오프라인 사용 여부는 리더를 이용할 수 있는지에 달려 있다. 호스팅된 리더는 해당 URL에서 불러와야 하며, 인터넷 없이 스캔하려면 적절한 환경에서 리더 페이지와 필요한 파일을 캐시했거나 로컬에서 이용할 수 있어야 한다. CSV 파일과 인쇄된 라벨, 다른 애플리케이션 사이의 변경 사항을 자동으로 동기화하는 기능도 제공하지 않는다.
따라서 이 프로젝트는 작고 비교적 안정적이며 민감하지 않은 레코드에 적합하다. 실시간 재고 수량, 출입 통제, 감사 기록이나 중앙에서의 업데이트가 필요한 작업에는 적합하지 않다.
프로젝트 파일은 다음과 같다.
csv_to_qr_generator.html: CSV 데이터를 가져오고 QR 코드를 미리 보며 라벨 출력을 만드는 생성기 인터페이스다.index.html: 내장된 데이터 값을 해독해 레코드를 표시하는 리더 페이지다.qrcode.js: 브라우저에서 QR 코드를 로컬로 생성하는 자바스크립트 라이브러리다. 자세한 내용은 아래 참고 링크에 있다.pdf-lib.js: 브라우저에서 라벨 시트를 만드는 자바스크립트 라이브러리다. 자세한 내용은 아래 참고 링크에 있다.
자바스크립트 라이브러리는 HTML 파일이 예상하는 위치에 있어야 한다. 프로젝트는 다음 오픈소스 클라이언트 측 라이브러리를 사용한다.
추가 인쇄용 라벨 양식, 다양한 용도의 예제 CSV 파일, 리더 인터페이스와 문서 개선, 여러 브라우저·휴대전화·프린터에서의 테스트, 도구를 더 쉽게 사용할 아이디어에 대한 제안과 기여를 받는다. 새 이슈를 열기 전에 저장소의 이슈 트래커가 활성화돼 있는지 확인하고, 관련 제안을 함께 논의할 수 있도록 기존 이슈를 살펴보도록 안내한다. 이용·수정·배포 조건은 저장소의 라이선스 파일에서 확인할 수 있다.
Avery는 Avery Products Corporation의 상표다. 이 소프트웨어는 Avery Products Corporation과 제휴하거나 후원·승인을 받은 제품이 아니다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요