-
[📋] QR 구현 방안 생각해보기Project/Extra 2024. 7. 17. 12:12
개요
[회의] BackEnd 2차 회의
개요일시2024.07.16 (화)주제ERD 보완 및 DB 선정지난 회의 후 과제였던 DB 조사와 WebSocket 조사를 나누고 DB를 선정하는 시간을 가졌다.DB 선정여러 가지 DB에 대한 장단점이랑 RDBMS, NoSQL 등을 확인하면
je0301.tistory.com
QR & 요구 사항 이해
QR 코드?
QR 코드: 텍스트, URL, 연락처 정보, 이미지, 동영상 등 다양한 정보를 저장할 수 있는 2차원 바코드
- QR 코드 작동 방식
- QR 코드 인식 : 카메라로 QR 코드 이미지 캡처 → QR 코드 이미지 패턴과 모듈 분석
- 이미지 처리 : 스캔한 이미지 정제, 정보 추출
- 디코딩 및 오류 수정 : 왜곡 및 손상된 부분 수정, 인코딩 정보를 바이너리 데이터에서 추출 (디코딩)
- 작업 수행 : 디코딩된 코드에 저장된 데이터에 따라 지정된 작업 수행
- QR 코드 유형
- 고정형 QR 코드
- 수정 불가능
- 만료되지 않음
- ex. 와이파이 비밀번호
- 변동형 QR 코드
- 수정 가능 - 짧은 URL 랜딩 페이지에 데이터 저장
- 다양한 미디어 유형 허용 - 오디오, 비디오
- 스캔에 사용된 시간, 위치, 디바이스 등의 스캔 지표를 수집할 수 있음
- 비밀번호 보호
- 타겟 재설정 가능
- 만료 날짜 설정
- 이메일 알림
- 고정형 QR 코드
요구 사항
- 개인의 출퇴근 시간 확인
- 특정 이벤트(식사, 모임) 등에 참여 여부 및 시간 확인
- 출근 시간, 퇴근 시간이 업체 측에서 공지한대로 진행
- 예시
- 5시에 모이기로 함
- 보조 출연자들이 4시30분 ~ 5시에 모임
- 버스를 타고 다 같이 이동
- 버스에서 내릴 때 QR 찍음
- 출근 시간은 업체 측에서 결정할 수 있음
- 여기서는 6시라고 가정
- 출근, 6:00 정보를 저장해야 함
- 출근 시간 및 정보 저장됨
- 아침 식사 또는 점심 식사 진행 + QR으로 출석 확인
- 식사 시간 및 참여 여부 저장됨
- 퇴근
- 업체에서 시간을 정해줌
- 20:00가 퇴근 시간이라고 가정
- QR을 찍고 퇴근
- 출근, 퇴근, 아침 or 점심 식사 등의 정보가 전부 저장되서 확인할 수 있음
- 원하는 데이터의 모습
- A - 출석, 점심식사만 오고 / B - 출석, 아침식사, 점심식사 / C - 출근 안함 이렇게 왔으면
- A, 출석, 점심식사, 06:00출근, 20:00퇴근 / B, 출석, 아침식사, 점심식사, 06:00출근, 20:00퇴근 / C
고민 사항
1. 누가 QR 코드를 만들고 찍는 건지
- 업체에서 QR을 만든다.
- 개인이 업체 관리자가 제공하는 QR을 찍는다.
- 개인이 QR을 만든다
- 업체 관리자가 개인의 QR을 찍는다
2. 저장되는 시점
- QR 사진을 찍는 순간에 찍히나?
이럴 경우 딱히 QR에 시간 정보를 저장할 필요가 없을지도?
실제 지정 시간이랑 사진이 찍히는 시간 둘 다 저장해야할까? 이런 로직이 처음이라.. 좀 생각해봐야할 것 같다 - QR에 시간 정보를 저장해야 한다
이러면 QR을 찍고 QR의 그 정보만 저장하면 될 것 같은데, 매번 QR을 새로 만들어야 해서..
개인이 QR을 만들어야 하면 너무 많은 QR을 새로 만들어서 제공해줘야 하고, 업체에서 하는 방향으로 가야지 될 것 같다
3. 예상 동작 방식
- 관리자가 특정 시간과 기능에 맞게 정보를 주면, 그 정보를 포함한 QR을 만들어준다
- 출근, 06:00 정보 저장
- 해당 QR을 찍으면, 그 정보를 request body에 담아서 전송한다
- 업체가 QR을 만들고 그걸 개인이 찍으면, url을 통해 간다
- 순수 url이 아닌 url + 여러 정보까지 전달할 수 있는지 확인해 봐야할듯
- url이랑 사용자 정보를 담아서 보낼 수 있다고는 하는데.. 프론트에서 얼마나 해줄 수 있는지에 따라 뺄 거 빼고, 넣을 거 넣어야 할 것 같다는 생각
- 아니면 아예 url을 정보가 아니라 사용자 정보만 담아서 주자
- QR 자체는 순수 url이긴 해도, 그걸 프론트에서 담아서 다른 정보랑 함께 주는 거는 할 수 있을 것 같다?
- 일단 QR url 정보 스캔, 그 url으로 이미 프론트에 저장되어 있는 userId, 역할id나 일정id, 이벤트 종류(식사, 출퇴근), 시간 등을 함께 보내주면 되지 않을까하는
- 전달된 데이터를 저장한다
- 출석한다
4. 외부 api가 아닌 직접 QR 생성하는 건 안되는 걸까?
QR 코드는 바이트 배열이기 때문에, 인코딩이랑 디코딩만 잘하면 QR을 아예 만들어 줄 수 있지 않을까 하는 생각
구글 라이브러리 zxing을 사용하면 직접 만들어 줄 수 있음.
https://zxing.github.io/zxing/apidocs/com/google/zxing/qrcode/package-summary.html
com.google.zxing (ZXing 3.5.3 API)
This object extends LuminanceSource around an array of YUV data returned from the camera driver, with the option to crop to a rectangle within the full data.
zxing.github.io
QR 정보까지 저장할 필요가 있을까 싶지만, 이러면 QR 정보 또한 저장할 수 있음
실행 흐름을 간단히 정리해볼 수 있을 것 같아서
- 실행 흐름
- size(width, height 200) 설정
- Bitmatrix에 encoding 정보 포함하기
- url을 주면, url이랑 여러 정보를 포함해서 QR 코드를 만들어 줄 수 있음
참고
https://www.qrcode-tiger.com/ko/how-do-qr-codes-work
https://nordvpn.com/ko/blog/what-is-a-qr-code/
QR코드란 무엇인가? QR코드 예시 및 원리 | NordVPN
QR코드는 빠른 응답 코드라는 의미의 정사각형 모양의 그래픽 바코드입니다. 스캔하면 웹사이트, 결제 링크, 앱 등으로 연결되지요. 이 글에서 QR코드에 관한 모든 것을 자세히 알아보세요.
nordvpn.com
Spring) QR-Code Login을 구현해보자
개요 >Telegram 과 같은 채팅어플을 개발중에 QR-LOGIN을 구현하는 기획이 있었다. 방법 찾기 > 나는 NAVER에서 구현한 QR-LOGIN이 어떤방식으로 로그인처리를 하는지 알고싶어서 파헤치기 시작했다. 1.
velog.io
[웹 개발 프로젝트] 8. 스프링 Spring QR 코드로 출석 체크 기능
[웹 개발 프로젝트] 8. 스프링 Spring QR 코드로 출석 체크 기능
경기 시작 30분 전부터 경기 리더 화면에서 QR 코드를 띄울 수 있다.참가 인원들은 이 QR 코드를 촬영하여 출석 체크를 한다.오픈 소스인 zxing 을 사용하였다. 코드가 간결해서 사용하기 쉬웠다!buil
velog.io
[Springboot/Java] QR 코드 생성/저장/출력
[Springboot/Java] QR 코드 생성/저장/출력
Java, Oracle, Spring boot 환경에서 백엔드로 구축 1. Mapper 설계 1 2 3 4 5 6 7 8 9 @Mapper public interface QrCodeMapper { /** * 아래의 매개변수를 DB에 QR코드 정보로 삽입하는 역할 * @param link * @param qrCode */ void insertQ
isshosng.tistory.com
Springboot로 Url을 QR코드로 제작하기
항상 카카오톡이나 네이버 인증 또는 QR코드를 웹사이트와 연결시켜주는 광고 등을 보면서 궁금증이 많은 저에게 궁금한 호기심이 생겼습니다. 항상 신기해하고, 궁금한 내용이라 QR코드를 어떻
velog.io
'Project > Extra' 카테고리의 다른 글
[📋] WebSocket(1) (0) 2024.07.17 [📋] MariaDB 연동 시도 (1) 2024.07.17 [회의] BackEnd 2차 회의 (0) 2024.07.17 [📋] DB 선정 (0) 2024.07.16 [회의] BackEnd 1차 회의 (3) 2024.07.16 - QR 코드 작동 방식