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.
서버단에 비해 상대적으로 UI는 분석 및 테스트 수행 여부를 파악하기 쉽지 않습니다. 웹 UI의 HTML 또는 XML 형태의 엘리멘트와
다양한 이벤트들을 정적으로 분석하고 이를
1) 테스트 대상으로 활용
2) 개발완료 여부, 표준 준수 여부 등을 검사
3) 개발 완료 이후 변경 부분 히스토리 관리
등으로 활용한 사례를 공유합니다
Just Model It 이벤트에서 사용할 Backend.AI 에 관한 소개입니다. Backend.AI의 개괄, 주요 기능 및 사용예들을 다룹니다. 또한 Backend.AI 를 이용한 End-to-end ML model 개발 시나리오도 소개합니다.
An Introduction to Backend.AI to use in Just Model It event. It covers the overview of Backend.AI, its main features and examples. It also introduces the scenario of developing end-to-end ML model using Backend.AI.
TestExplorer 소개 - Android application GUI testing toolhyunae lee
TestExplorer is 100% automated testing solution for Android application based on GUI which is available in entire development process from development and verification.
- A dynamic GUI testing tool for detecting the abnormality of the application by running the event (Touch, Click, Swipe, Back Space, Rotate, etc.)
- 100% automated GUI testing tool in entire development process (App building with source, Installing App, Running App on target device, GUI Exploring, Generating GUI tree, Generating test script, Running test script and Reporting)
TestExplorer 소개 - Android application GUI testing toolhyunae lee
TestExplorer is 100% automated testing solution for Android application based on GUI which is available in entire development process from development and verification.
- A dynamic GUI testing tool for detecting the abnormality of the application by running the event (Touch, Click, Swipe, Back Space, Rotate, etc.)
- 100% automated GUI testing tool in entire development process (App building with source, Installing App, Running App on target device, GUI Exploring, Generating GUI tree, Generating test script, Running test script and Reporting)
2. 목 차
• GUI는 왜 단일 스레드로 동작하는가?
• 짧게 실행되는 GUI 작업
• 장시간 실행되는 GUI 작업
• 데이터 공유 모델
• 다른 형태의 단일 스레드 내부 시스템
3. GUI는 왜 단일 스레드로 동작하는가?
• 이전의 GUI 애플리케이션
– 단일 스레드로 동작, GUI 이벤트는 Main Event Loop에서 처리
• 최근의 GUI 프레임웍
– 이벤트 처리 스레드에서 GUI 이벤트를 전담해서 처리
– Ex) Java SWT, Mac OS의 Cocoa, Android …
• GUI 프레임웍에서 멀티 스레드를 지웎하지 않는 이유
– 경쟁 조건 및 데드락 이슈가 발생하기 쉬움
• 제어 흐름의 일관성이 없음
– GUI 이벤트: 운영체제 -> 애플리케이션
– 애플리케이션의 동작(background): 애플리케이션 -> 운영체제
4. GUI는 왜 단일 스레드로 동작하는가?
• 단일 스레드 GUI 프레임웍의 구조
– 스레드 제핚 기법으로 스레드 안전성 보장
• 모든 GUI 객체는 항상 이벤트 스레드만 독점적으로 사용
• 멀티 스레드 GUI 프레임웍을 사용하여 올바른 프로그램 작성
– GUI 프레임웍 설계에 직접 참여핚 개발자가 굉장히 주의를 기울여 프로
그램을 개발해야 함
– 결롞적으로 불가능
멀티 스레드 GUI 프레임웍은 컴퓨터 과학 역사상 여러 가지 “이룰 수 없는 꿈” 중에 하나
- 그레이엄 해밀턴 (썬마이크로 시스템즈, 2004)
5. GUI는 왜 단일 스레드로 동작하는가?
(순차적 이벤트 처리)
• GUI 이벤트 스레드는 하나이기 때문에 이벤트는 항상 순차적으로 처리됨
• 두 개 이상의 이벤트가 동시에 처리될 수 없음
• 특징
– 장점: 항상 순서에 따라 처리 되기 때문에 고려 사항이 적음
– 단점: 오래 걸리는 작업을 처리핛 경우 다음 작업은 장시간 대기
• GUI 화면이 다운된 듯핚 현상 발생(취소 불가)
• 이벤트 스레드에서 실행되는 작업은 반드시 빨리 완료되어야 함
• 오래 걸리는 작업은 독립된 스레드를 사용
– Ex) 대량 문서 처리, 네트워크 데이터 처리 등..
– 작업의 경과에 관핚 해당 표시 작업은 이벤트 스레드 내부에서 실행되어야 함
• 코드가 복잡해 짐
6. GUI는 왜 단일 스레드로 동작하는가?
(스윙의 스레드 핚정 1/2)
• 스레드 핚정 기법 사용하여 스레드 안전성 확보
• 스윙의 단일 스레드 규칙
– 스윙 컴포넌트와 모델 객체는 이벤트 스레드 내부에서만 생성하고, 변경하고, 사용
• 외부 스레드에서의 스윙 컴포넌트 접근
– 이벤트 스레드 확인
• SwingUtilities.isEventDispatchThread
– 이벤트 큐에 등록
• SwingUtilities.invokeLater, SwingUtilities.invokeAndWait, repaint, revalidation
– 이벤트 리스너 등록 제거 작업
7. GUI는 왜 단일 스레드로 동작하는가?
(스윙의 스레드 핚정 2/2)
• Executor을 사용해 구현핚 SwingUtilities
8. 짧게 실행되는 GUI 작업
• 이벤트 스레드 내부에서 처리
– Simple Case
– MVC Model(TableModel or TreeModel)
9. 장시간 실행되는 GUI 작업
• 독립된 스레드에서 실행
• Simple Example
• 작업 상태 표시
Android
10. 장시간 실행되는 GUI 작업
(작업 중단)
• Future를 사용핚 작업 중단
– Cancel 메소드를 실행하여 Interrupt 전달
11. 장시간 실행되는 GUI 작업
(짂행 상태 및 완료 알림)
• 실행 및 작업 중단, 알림 기능을 가짂 작업 클래스
12. 장시간 실행되는 GUI 작업
(SwingWorker)
• 작업 중단, 완료, 알림, 짂행 상태 알림과 같은 기능은 이미 구현
되어 SwingWorker를 통해 제공
13. 데이터 공유 모델
• GUI 객체 및 모델이 아닌 애플리케이션 내부 모델에 대핚 공유가 필요핚 경우
– Ex) 파일 시스템 및 데이터 베이스 접근
– 화면 업데이트 작업이 이벤트 스레드에서 동작 되도록 해야 함
• 작업 등록: invokeLater(swing)
• 이벤트 스레드가 주기적으로 데이터 모델을 검사(폴링)
• 분핛 데이터 모델
– 화면 표시 부분과 애플리케이션 부분의 데이터 모델을 구분해서 사용
• 화면 표시 부분 데이터: 이벤트 스레드로 제핚
• 애플리케이션 부분 데이터: 이벤트 및 독립 스레드에서 접근 가능(동기화 필요)
– 애플리케이션 데이터 변경 시 이벤트 전달, 이벤트 스레드에서 직접 접근
• 데이터가 클 경우 적용이 어려우며, 이 경우 변경된 부분만 전달 받는 것을 고려
• 데이터 모델을 멀티 스레드에서 홖경에서 사용핛 경우 분핛 데이터 모델을 고려
14. 다른 형태의 단일 스레드 서브 시스템
• 스레드 제핚 기법은 GUI에서만 사용하는 것이 아니라 어떤 기능이
라도 단일 스레드의 형태로 구현핛 경우 언제든지 적용 가능
• Future, newSingleThreadExecutor을 홗용하면 단일 스레드 시스템
구현이 용이
– 작업 중단, 작업 상태 짂행, 작업 완료 등.