NHN NEXT 휴먼디자인 프로젝트 수업 중간 발표자료로 작성한 피피티 입니다.
프로젝트를 한달정도 진행하면서 겪은 삽질을 공유하기 위해 작성하였습니다.
Token을 이용한 인증에 관한 이슈, MVC패턴에 대한 고민, HTTP 오픈소스에 관한 고민등을 간단히 담았습니다.
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulBansook Nam
Suggest a new pattern "How to divide your Activity & Fragment".
Shows "Lotto - App" sample.
Youtube: https://www.youtube.com/watch?v=_-yZPjf9HLo
Hope it would help to understand Andoird Architecture Pattern.
RxMVVM-DataCenter is iOS app architecture to remove dependencies among ViewControllers. If you see the result which is made by using RxMVVM-DataCenter at https://github.com/skyfe79/RxGitSearch. You can know there is no dependencies among ViewControllers and how to use Rx techniques.
RxMVVM-DataCenter 은 어떻게 하면 의존성을 제거할 수 있을까에 대한 고민에서 시작된 프로젝트입니다. RxGitSearch라는 작은 예제를 만들어서 ViewController간에 의존성을 제거하였고 Rx를 사용하여 앱을 유연하게 변화에 빠르게 대응할 수 있도록 구현하였습니다.
안드로이드 앱/플랫폼 개발자가 알아야 할 종합 보안 안내서
안드로이드는 전 세계에서 가장 인기 있는 모바일 플랫폼으로 거의 모든 개인 정보의 허브가 되었다. 이미 해커들의 제1 공격대상이 된 안드로이드에서 신뢰받는 서비스로 성공하려면 플랫폼뿐 아니라 앱 개발자도 보안에 대해 적극적으로 배우고 대처해야 한다.
이 책은 안드로이드의 '앱 권한'과 '샌드박스 모델', '보안 강화 안드로이드'는 물론이고 좀처럼 정보를 얻기 힘든 dm-verity와 같은 기능까지 훌륭히 설명한, 안드로이드 개발자에게 꼭 필요한 지침서다.
- 지은이 : 니콜라이 옐렌코프
- 옮긴이: 강권학
- ISBN : 978-89-6848-197-0 93000
- 발행일 : 2015년 6월 1일
- 페이지수 : 488
- 정가 : 38,000원
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulBansook Nam
Suggest a new pattern "How to divide your Activity & Fragment".
Shows "Lotto - App" sample.
Youtube: https://www.youtube.com/watch?v=_-yZPjf9HLo
Hope it would help to understand Andoird Architecture Pattern.
RxMVVM-DataCenter is iOS app architecture to remove dependencies among ViewControllers. If you see the result which is made by using RxMVVM-DataCenter at https://github.com/skyfe79/RxGitSearch. You can know there is no dependencies among ViewControllers and how to use Rx techniques.
RxMVVM-DataCenter 은 어떻게 하면 의존성을 제거할 수 있을까에 대한 고민에서 시작된 프로젝트입니다. RxGitSearch라는 작은 예제를 만들어서 ViewController간에 의존성을 제거하였고 Rx를 사용하여 앱을 유연하게 변화에 빠르게 대응할 수 있도록 구현하였습니다.
안드로이드 앱/플랫폼 개발자가 알아야 할 종합 보안 안내서
안드로이드는 전 세계에서 가장 인기 있는 모바일 플랫폼으로 거의 모든 개인 정보의 허브가 되었다. 이미 해커들의 제1 공격대상이 된 안드로이드에서 신뢰받는 서비스로 성공하려면 플랫폼뿐 아니라 앱 개발자도 보안에 대해 적극적으로 배우고 대처해야 한다.
이 책은 안드로이드의 '앱 권한'과 '샌드박스 모델', '보안 강화 안드로이드'는 물론이고 좀처럼 정보를 얻기 힘든 dm-verity와 같은 기능까지 훌륭히 설명한, 안드로이드 개발자에게 꼭 필요한 지침서다.
- 지은이 : 니콜라이 옐렌코프
- 옮긴이: 강권학
- ISBN : 978-89-6848-197-0 93000
- 발행일 : 2015년 6월 1일
- 페이지수 : 488
- 정가 : 38,000원
9. Android 개발 - 삽질 1 : Authorization
Device ID를 대신 할 수 있는 Unique한 ID는 없을까?
java.util의
UUID(Universally Unique Identifier)클래스를 사용해
UUID를 랜덤으로 뽑습니다.
10. Android 개발 - 삽질 1 : Authorization
“UUID를 누군가 관리하면서,
중복되지 않게 할당해 주어야 하는게 아닌가요?”
“랜덤으로 만든 값을 쓰다보면, 누군가와 겹치지 않을까요?”
11. Android 개발 - 삽질 1 : Authorization
로또 당첨 확률
약 8000000 분의 1
12. Android 개발 - 삽질 1 : Authorization
UUID 2개가 중복될 확률
“16자리의 16진수가 순서에 맞게 같아야 한다.”
약 350000000000000000000000000000000000000분의 1
13. Android 개발 - 삽질 1 : Authorization
Server Client
첫 진입
POST
{UUID : %@#$}UUID를
DB저장,
암호화된
token 발행 RESPONSE
{token : ^$@!}
SharedPreference로
token을 로컬에 저장
HTTP Header
Authorization : token
이후 네트워크 통신 시
HTTP Header에
token을 함께 보냄
HTTP Header에서
token정보를 가져와
사용자 식별
14. Android 개발 - 삽질 2 : Network
Android 네트워크 삽질의 추억…
“어, 왜 5.0에서만 POST가 보내지지??”
“4.2, 4.3은 안되고 또 4.1은 되네.. 뭐지???ㅠㅠ”
“왜 두번 클릭해야 POST를 하지??”
대 체 왜 !!!
오픈 소스 사용하자!!!
15. Android 개발 - 삽질 2 : Network
“오픈소스 뭐 쓰지?”
여러 라이브러리를 고르던 중,
Android에 특화되어 가벼운 용량과 간편한 사용법이 장점인
Async-HttpClient를 사용하기로 결정!
17. Android 개발 - 삽질 2 : Network
이렇게 URL과 call back만 구현하면 끝!
18. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
MVC… 듣기는 많이 들어 봤는데, 어떻게 설계 해야 하나??
19. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
일단 패키지를 나눠서 MVC와 Entity, Network를 구분해보자!
M
C
V
Entity
Network
깔끔한데??
20. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
깔끔하긴 하지만… MVC로 구조를 짜는 이유는 뭘까?
조금 더 아래에 깔려 있는 원칙은??
“Component 단위의 분리”
21. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
“Component 단위의 분리”를 통해
유지, 보수를 하기가 쉬워진다!
즉, 하나의 컴포넌트를 수정함에 있어
다른 컴포넌트에 영향을 최소화하기 위함!
22. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
ViewModel
Controller
Model과 View를 생성
View의 이벤트를 처리할
Listener 인터페이스 구현
내부 인터페이스
Listener를 선언
Model Listener를 구현
내부 인터페이스
Model Listener를 선언
23. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
ViewModel
Controller
Model과 View를 생성
View의 이벤트를 처리할
Listener 인터페이스 구현
내부 인터페이스
Listener를 선언
Model Listener를 구현
내부 인터페이스
Model Listener를 선언
사용자에게
이벤트를 받아
Controller로 넘기면
24. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
ViewModel
Controller
Model과 View를 생성
View의 이벤트를 처리할
Listener 인터페이스 구현
내부 인터페이스
Listener를 선언
Model Listener를 구현
내부 인터페이스
Model Listener를 선언
Controller는
Listener인터페이스의
구현에 따라
Model을 호출
25. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
ViewModel
Controller
Model과 View를 생성
View의 이벤트를 처리할
Listener 인터페이스 구현
내부 인터페이스
Listener를 선언
Model Listener를 구현
내부 인터페이스
Model Listener를 선언
Model의 변화를
View가 감지하고
Model Listener의
구현에 따라
화면 변경
26. Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계
이렇게 나눠놓으니 확실히 코드 변경이 쉬워졌습니다!
27. Android 개발 - 그 외 삽질들
그 외에도 JSON Parser로
어떤 라이브러리를 사용할까를 선택하는 과정,
인터넷 폰트를 적용하는 것 등등
사소하지만 해보지 않았던 부분들을
삽질해 보았습니다.
28. Android 개발 - 그 외 삽질들
아직 진행중인 무한스크롤 이슈와
이미지 Resizing에 관한 이슈 등 훨씬더 다양한 삽질로
학기말에 공유하도록 하겠습니다.