E D R , A S I H C RSS

NH Dormitory Alarm

Difference between r1.11 and the current

@@ -10,7 +10,7 @@


== 참가하는 사람 ==
[이승현], [민준홍]
[이승현], [민준홍], [홍성현]


== 앱 제작의 배경 및 목적 ==
@@ -25,80 +25,35 @@

== 진행 상황 ==

=== 3월 17일까지의 진행상황 ===
** 3월 17일까지의 진행상황

1. express, passport를 통해서 Dashboard 로그인구현 및 기본적인 설정이 가능하게 만들어두었습니다.
(테스트해보실 분들은, http://leesnhyun.iptime.org 에 test/test 로 로그인 가능합니다. 추후삭제 및 css 적용예정 ㅠㅠ)
(테스트해보실 분들은, http://leesnhyun.iptime.org 에 test/test 로 로그인 가능합니다. 추후삭제 및 css 적용예정 ㅠㅠ)

2. github에 올라가있는 소스에서 확인할 수 있듯이, 현재 MQTTService는 구현을 완료했으며, 대쉬보드에서 푸쉬전송을 하면 받아볼 수 있습니다.

3. 현재 'test' 토픽(topic)만을 구독(subscribe)하게 해두었지만, 나중에는 토픽을 잘게 세분화할 예정입니다.
소스상에서는 subscribe 뿐만아니라 publish, unsubscribe도 구현이 되어있으며, 상황에따라 호출할 수 있도록 할 예정입니다.
=== 서버 ===
현재 기숙사내에 라즈베리파이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. 푸쉬는 GCM,APN을 사용하지 않고, MQTT Protocol을 사용하여 푸쉬할 생각입니다.
 
6. 공지사항이 나와있는 페이지를 주기적으로 파싱하여, 새로운 글이 등록될경우 Push메세지를 보내야 합니다.
(현재 15분간격으로 Polling하도록 되어 있으나, Long-polling으로 구현하면 더 좋겠다는 생각입니다.)
 
7. 한 서버에서 모든 것을 처리하는 것은 문제가 있을 것 같지만, 여건이 안되어 한군데에서 다 처리합니다.
 
 
 
=== 클라이언트 ===
==== 공통 ====
안드로이드와 iOS 어플리케이션을 제작해야합니다.
 
현재 농협장학관의 총 인원은 500명정도로, 아이폰 유저가 더 많을 것으로 예상합니다.
 
==== 안드로이드 ====
사실 이전에 제작했던 '농협장학관 식단조회'라는 어플이 구글Play에 등록이 되어있습니다.
 
하지만, 이 어플리케이션의 내부구조가 매우 좋지 않아 리팩토링겸 그냥 새로 만들어서 배포할 생각입니다.
소스상에서는 subscribe 뿐만아니라 publish, unsubscribe도 구현이 되어있으며, 상황에따라 호출할 수 있도록 할 예정입니다.

물론 필요한 부분은 유지할 생각입니다.(기존 사용자의 UI저항 방지)
4. DexClassLoader (Java 에서의 ClassLoader)를 이용하여, main apk에서 sub apk파일의 함수를 호출할 수 있도록 해두었습니다. 
이는 어플자체의 업데이트를 피하고, stealth update를 위한 장치이고, 보안과 관련된 부분은 파일의 무결성검사(hash값)를 통해서 해결해볼 생각입니다.


우선, 기존의 어플리케이션의 구현방식에 대해서 소개하자면 다음과 같습니다.
** 3월 30일까지의 진행상황

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. Mosquitto broker와 Mysql을 연동하여 ACL(Access List) table 만들었습니다. (원래 Mosquitto에서는 파일(.db) 작성함.)

하지만 위의 방식으로 구현했을 경우, 작업의 효율성저하 보안문제도 덤으로 가지고 있기 때문에 필요한 부분은 외부라이브러리를 통해서 해결할 생각입니다.
2. 하지만, ACL에 쿼리하기 위해 HTTP Request를 이용하는데, 클라이언트(안드로이드)에서의 부담이 있는 같습니다.
따라서 Mosquitto broker를 수정해 서버내부에서 쿼리를 날리도록 수정해보겠습니다.

따라서 새로운 어플리케이션은 다음과 같은 기능을 갖도록 구현할 생각입니다.
3. 임의의 유저가 푸쉬서버에 접근하지 못하게 하기 위해서, MQTT Protocol의 인증기능을 사용.

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를 통해서 간단한 실시간 업데이트 진행.
4. DB설계를 잘못해서, 멀티디바이스가 지원이 안될뻔했으나 지금은 수정하여, 멀티 Device도 지원됨. , 농협재단의 id는 하나이므로 여러개의 디바이스에는 동시에 같은 푸쉬가 전송되도록 했습니다.

디자인은 [이승현]이 하겠습니다 (ㅠㅠ)
5. 클라이언트의 보안강화 (SharedPreference 암호화 및 민감한 정보들은 sha256 + salt로 암호화)

==== iOS ====
iOS개발은 처음이므로 공부해나가면서 개발할 생각입니다. (Objective-C)
6. ~~Fragment에서 getActivity()가 null이 되는 상황이 간헐적으로 발생하여 수정중에 있습니다.~~ 수정했습니다.


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

== 댓글 ==
[이승현] 새벽에 잠결에 써서 내용이 뒤죽박죽입니다.
또한, 현재 알고 있는 지식이 얼마 없어서 조언과 도움이 많이 필요합니다. 감사합니다.
* 이거 완성되면 재단하고 계약 ㄱㄱ - [kerokim]





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

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

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

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


1. 참가하는 사람

2. 앱 제작의 배경 및 목적

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

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

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

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


3. 진행 상황


** 3월 17일까지의 진행상황

1. express, passport를 통해서 Dashboard 로그인구현 및 기본적인 설정이 가능하게 만들어두었습니다.
(테스트해보실 분들은, http://leesnhyun.iptime.org 에 test/test 로 로그인 가능합니다. 추후삭제 및 css 적용예정 ㅠㅠ)

2. github에 올라가있는 소스에서 확인할 수 있듯이, 현재 MQTTService는 구현을 완료했으며, 대쉬보드에서 푸쉬전송을 하면 받아볼 수 있습니다.

3. 현재 'test' 토픽(topic)만을 구독(subscribe)하게 해두었지만, 나중에는 토픽을 잘게 세분화할 예정입니다.
소스상에서는 subscribe 뿐만아니라 publish, unsubscribe도 구현이 되어있으며, 상황에따라 호출할 수 있도록 할 예정입니다.

4. DexClassLoader (Java 에서의 ClassLoader)를 이용하여, main apk에서 sub apk파일의 함수를 호출할 수 있도록 해두었습니다.
이는 어플자체의 업데이트를 피하고, stealth update를 위한 장치이고, 보안과 관련된 부분은 파일의 무결성검사(hash값)를 통해서 해결해볼 생각입니다.


** 3월 30일까지의 진행상황

1. Mosquitto broker와 Mysql을 연동하여 ACL(Access List) table 을 만들었습니다. (원래 Mosquitto에서는 파일(.db)에 작성함.)

2. 하지만, ACL에 쿼리하기 위해 HTTP Request를 이용하는데, 클라이언트(안드로이드)에서의 부담이 있는 것 같습니다.
따라서 Mosquitto broker를 좀 수정해 서버내부에서 쿼리를 날리도록 수정해보겠습니다.

3. 임의의 유저가 푸쉬서버에 접근하지 못하게 하기 위해서, MQTT Protocol의 인증기능을 사용.

4. DB설계를 잘못해서, 멀티디바이스가 지원이 안될뻔했으나 지금은 수정하여, 멀티 Device도 지원됨. 단, 농협재단의 id는 하나이므로 여러개의 디바이스에는 동시에 같은 푸쉬가 전송되도록 했습니다.

5. 클라이언트의 보안강화 (SharedPreference 암호화 및 민감한 정보들은 sha256 + salt로 암호화)

6. Fragment에서 getActivity()가 null이 되는 상황이 간헐적으로 발생하여 수정중에 있습니다. 수정했습니다.


=

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:49
Processing time 0.0394 sec