E D R , A S I H C RSS

NHDormitoryAlarm (rev. 1.3)

NH Dormitory Alarm



이름과 설명은 거창해보이지만, 실상은 관련된 정보를 모바일형태로 제공하고 있으므로 안드로이드 및 iOS 어플제작이 주가 되는 프로젝트입니다. (난이도는 CAUScheduler와 비슷할 것으로 예상합니다.)

농협장학관(농협재단)의 팀장님으로부터 부탁(명령)을 받아 진행하게된 프로젝트이고, 아직 구두로만 필요한 기능을 전달받아 제작을 진행하고 있습니다. 추후 대면하여 논의하게 되면 적절한 보수가 있을 수도 있습니다.

혹시나 프로젝트 진행 경험을 쌓고 싶거나 혹은 (실시간 채팅(푸쉬))앱 제작 및 서버에 관심이 있으신 분들은 자유롭게 참여하시면 좋을 것 같습니다.

(단, 너무 많은 인원으로는 진행이 어려울 듯하여 적절한 인원이 모이게 되면, 더 이상 모집할 수 없을 것 같습니다.)


1. 참가하는 사람

2. 앱 제작의 배경 및 목적

농협장학관의 현재 공지(행사 및 소식)전달 방식은 현재 (대부분)벽보 및 (중요한 내용은)문자메세지(MMS)로 알리고 있습니다.

또한, 인터넷 사이트(http://jaedan.nonghyup.com/site/mobile )의 공지사항을 통해서도 전달하고는 있습니다.

하지만, 장학관내의 사생들에게 효율적으로 전달이 안되는 탓인지 공지된 내용을 이행하지 않는 경우가 많이 발생하고 있습니다.

따라서 이러한 문제를 해결하기 위한 한가지 방안으로, 농협장학관의 어플리케이션을 제작하여 좀 더 효율적으로 공지사항 전달 수단으로 사용할 예정입니다.


3. 진행 상황

3.1. 서버

현재 기숙사내에 라즈베리파이2(B+모델, sdCard:16GB)을 통해 서버를 구축해두었습니다. (http://leesnhyun.iptime.org (DDNS설정))

1. 현재 서버의 구성은
Nginx(proxy server, static file) + NodeJS(WAS, api server(DB 등..)) 를 이용하여 구성되어 있으며
추가적으로 Mosquitto broker가 설치되어있습니다. (DBMS로는 MySQL을 설치해두었습니다.)

2. NodeJS의 Express framework를 사용하여 RESTful API서버를 제작할 계획입니다.

3. 또한 웹 상에서 푸쉬를 보낼 수 있도록, 간단한 관리자패널(Dashboard)을 제작해야합니다.

4. Mosquitto broker는 MQTT Protocol을 지원하는 대표적인 오픈소스 Broker입니다. 자세한 내용은 구글링하셔도 좋고 혹은 이 페이지에 주소를 추가하겠습니다.

5. 공지사항이 나와있는 페이지를 주기적으로 파싱하여, 새로운 글이 등록될경우 Push메세지를 보내야 합니다.
(현재 15분간격으로 Polling하도록 되어 있으나, Long-polling으로 구현하면 더 좋겠다는 생각입니다.)

6. 한 서버에서 모든 것을 처리하는 것은 문제가 있을 것 같지만, 여건이 안되어 한군데에서 다 처리합니다.


3.2. 클라이언트

3.2.1. 공통

안드로이드와 iOS 어플리케이션을 제작해야합니다.

현재 농협장학관의 총 인원은 500명정도로, 아이폰 유저가 더 많을 것으로 예상합니다.

3.2.2. 안드로이드

사실 이전에 제작했던 '농협장학관 식단조회'라는 어플이 구글Play에 등록이 되어있습니다.

하지만, 이 어플리케이션의 내부구조가 매우 좋지 않아 리팩토링겸 그냥 새로 만들어서 배포할 생각입니다.

물론 필요한 부분은 유지할 생각입니다.(기존 사용자의 UI저항 방지)


우선, 기존의 어플리케이션의 구현방식에 대해서 소개하자면 다음과 같습니다.

0. Splash화면에서 버전체크. (서버의 버전과 클라이언트의 버전이 다를경우, 업데이트 유도)
1. http://jaedan.nonghyup.com/site/mobile 에 자동로그인 할 수 있는 기능.(SharedPreference에 값 저장)
2. id & pw 를 POST전송하여 나온 cookie도 역시 SharedPreference 에 저장하여, 세션유지.
3. 식단페이지, 외박신청페이지, 상벌점페이지를 읽어(Asynctask) 정규식으로 필요한 내용 파싱.
4. View를 꾸며서 이쁘게 보여줌.
5. GingerBread(2.3, API:10)부터사용가능하도록 만듦.

하지만 위의 방식으로 구현했을 경우, 작업의 효율성저하 및 보안문제도 덤으로 가지고 있기 때문에 필요한 부분은 외부라이브러리를 통해서 해결할 생각입니다.

따라서 새로운 어플리케이션은 다음과 같은 기능을 갖도록 구현할 생각입니다.

1. 호환성(android) : GingerBread(API 10) ~ MashMellow(API 23)
2. 주로 사용할 라이브러리(예상) : Volley Framework, Jericho Parser, Paho MQTT v3
3. 푸쉬구현 (Google GCM 사용X, 이유는 아래 서술예정)
4. 간단한 게시판을 통해서, 사생들간 소통의장 마련. (새글알람 푸쉬구현)
5. 열람실 및 독서실의 여석안내.
6. Reflection API를 통해서 간단한 실시간 업데이트 진행.

디자인은 이승현이 하겠습니다 (ㅠㅠ)

3.2.3. iOS

iOS개발은 처음이므로 공부해나가면서 개발할 생각입니다. (Objective-C)


밤이 깊어서, 내일 중으로 다시 수정하겠습니다. 감사합니다.

4. 댓글

이승현 새벽에 잠결에 써서 내용이 뒤죽박죽입니다.
또한, 현재 알고 있는 지식이 얼마 없어서 조언과 도움이 많이 필요합니다. 감사합니다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:49
Processing time 0.0275 sec