글 작성자: HEROHJK

[프로토타입]

 

예전에 학교에 다닐때, 군대를 갔다와 복학을 하고보니 재밌는게 생겼습니다.


출석체크를 교수님들이 이름을 불러 체크를 하는게 아니라,


수업 시작전에 강의실 입구에 있는 NFC와 QR코드로 출석체크를 하더라구요.


그때 그게 참 재미있어 보였습니다.


어렵지도않고 적당해 보였구요.


제가 9월달부터 크로스 플랫폼 프레임워크인 Xamarin 공부를 하고 있습니다.


프로젝트를 하나 진행하려 하는데, 뭐가 좋을까? 하다가 문득 그때 생각이 나서 3개월 가까이 개발하고 있습니다.


NFC는 순수하게 읽기만 하면 되니 크게 어려울것이 없고, QR코드 인식은 Google의 ZXing 라이브러리를 이용하면 되고..


모바일로 이용하는것이기에 딱 맞는 프로젝트 였습니다.


현재는 대부분이 완성되었고, 완성하기전에 한번 정리가 필요하겠다 싶어서 이렇게 글을 써 봅니다.

(부지런했으면 매일매일 작업일지를 작성했겠는데.. 이 얘기는 조금 나중에)


머릿속에서 생각한 사용 흐름은 이렇습니다.


1. 수업시작전에, 어플리케이션을 실행한다.


2. NFC에 태그를 하거나, QR코드로 데이터를 읽는다.


3. 데이터가 들어오면, 웹서버로 보내져 출석인지, 지각인지, 무효인지를 판별한다.


4. 결과를 저장하고 모바일로 결과를 다시 보내준다.


5. 관리자용 프로그램에서 출석 정보를 확인한다.


그리고 이렇게 하기위해서 DB를 짜야합니다.


현재 설계한 DB 다이어그램은 이렇습니다.



 

사용자, 강의실, 수업정보, 출석내역에 대한 테이블들입니다.

 

사용자는 말 그대로 사용자의 개인정보를 담고 있고

 

강의실은 해당 수업이 진행되는 강의실(위도, 경도, (NFC or QR코드) 데이터로 구분)

 

수업은 수업 기간, 진행 요일, 강사 등의 정보를 담고 있습니다.

 

처음에는 이것보다 조금 더 간략했지만, 어찌 짜다보니 이렇게 되었네요 ㅎㅎ

 

(더 자세한 정보는 아래 링크 참조)

 

깃헙에도 공개는 해 두었습니다.

 

github - https://github.com/deuluwa

 

git저장소들에 대한 간략한 설명은 다음과 같습니다.

 

Core -

(최대한..)MVC 패턴으로 구현을 하려고 노력했습니다. 그리고 Model과 Controller는 공용으로 쓰이는부분이 조금 있기때문에, 이렇게 따로 뺐습니다. 서버 주소정보, 필요한 모델들, 필요한 연산들 등 내부로직에 필요한 대부분의 코드들이 담겨있습니다.

 

Deuluwa -

본 솔루션의 메인 프로젝트인 모바일입니다.

이곳의 Readme에 이 프로젝트에 대한 거의 모든 명세가 있으며, Xamarin으로 개발한 모바일 Application 소스입니다. 이제는 이것에 대한 개발 마무리를 진행하고 있으며, 마무리가 되는 동시에 프로젝트는 종료됩니다.

 

Admin -

관리자용 WPF Application입니다. 원래는 본 프로젝트 개발을 완료한 후에 WebServer에 웹으로 구현을 하려고 했으나, DB가 커짐에 따라, 프로그램이 개발되어감에 따라 테스트용 샘플데이터들이 필요했고, 일일히 쿼리로 짜기에는 너무 오래걸려서 이렇게 Admin 프로그램을 개발하게 되었습니다.

 

WebServer -

모바일, 관리자용 프로그램에서 요청을 처리하기위해서 Python + django + PostgreSQL로 구현된 웹서버입니다. 현재 RestfulAPI로만 구성되어 있으며, 추후 욕심이 있으면 관리자 프로그램을 이 Web으로 구현해보고 싶습니다.

 

DB -

위 스크린샷에 있는 DB파일을 덤프해 둔 저장소입니다.

 

각 페이지를 들어가보면, readme에 보다 자세한 설명이 나와있습니다.

(게을러서 업데이트 되지 않은것도 있습니다)

 

다만 git저장소를 분리하여 관리함에 따라서, 이런저런 실수가 많이 발생했고(서버정보, 비밀번호 등등) 이를 없애기 위해 저장소를 몇번 갈아 치웠더니 일지들이 삭제되었습니다 ㅠㅠ

 

분명 본 프로젝트는 Xamarin을 위한 프로젝트였으나, 프로젝트가 끝나가는 현재 시점은 django가 너무 매력적으로 제게 다가왔네요..

 

그래서 이 프로젝트를 마친 후에 바로 새롭게 프로젝트를 시작하려 합니다.

 

작업일지를 보다 편리하게 작성하는 프로젝트입니다.

 

현재 조금씩 그림을 그려가는 중인데, 그것은 나중에 따로 포스팅 하겠습니다.

반응형