Open Devik0213 opened 7 years ago
질문1 여러 조건의 비동기 처리를 어떻게 할것인가.
cache : http://reactivex.io/documentation/operators/replay.html maze : https://github.com/importre/kotlin-maze
사용자 인터뷰를 어떻게하나??ㅋㅋ변화에 잘 대응할 수 있는 코드는 무엇인가? 변화가있어도 코드 변화가 적어야한다.(주장)
클린 아키택쳐 https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
밑으로 갈수록 의존성이 낮은 코드가 된다.
https://github.com/android10/Android-CleanArchitecture 내용을 리뷰하고있음.
Presentation
Data
Domain(서비스로직)
Entity Model 같은걸 말하는것 같음. 모델이 어디서 쓰이고 어떻게 핸들리 되는지
BaseFragment 가 아니면 어캄? 의존성문제를 해결하지못하지않나. 프레젠테이션단이아니고, 로메인까지도 영향이있는게아니각... 그런 룰을 모든 플랫폼에서 어떻게 처리함?
NoSQL key:value json형태라고 생각하면됨. 너무 간단해서.. table 이 간단해서, join 이나, multi condition 을 처리하는게 어렵다. 간단한 데이터는 넣어둘수이지만, 디비설계가 힘들다.
개인화된 서비스를 적용하는데는 의미가있을것같은데? 가령 내 개인 공간(최근읽은 글, 책..등) = 목적성이 정확한 테이블 사용자의 패턴을 모두 저장해서, event 로깅을 따로한다.
Cloud Function
App배포없이, 운영영역을 만들어서 실시간으로 바뀌는걸보여주자.
지속적인 통합, 전달, 디플로이 http://www.devops4all.com/2016/04/continuous-integration-continuous.html
Continuous Integration:(CI)
Jenkins 는..그래서;;;; 앱빌드때 문제가 많음, 빌드툴, 자바버전, 그래들버전. 이거 맞추기가 어렵다.
관련 글 : [커니] http://kunny.github.io/lecture/quality/2016/10/03/android_quality_part1_circleci/
- ciclre.yml 을 통해서 서클CI의 값을 이용해 할 수 있다.
- keysrote를 dropbox에 넣어두고, 다운로드 하는 스크립트를 만들어서 한다.
https://www.bitrise.io/ UI로 관리할만큼, 관리가 편함 워크플로우를 내 맘대로 설정할수 있고, 연동서비스도 편함 bitrise.xml 을 서비스에 놓아서한다. 특히 키스토어를 따로 저장하여 가능하다. (Secret Env 로 지정을 하여 정보보안도 신경씀)
arr관리, https://www.jfrog.com/ 같은걸 이용한다고함
넓은 테스트 범위 적은 인력 빠른 테스트 클라우드로 테스트(다양한 실제기기)
에스프레소라면, (화이트박스 테스트)코드를 알아야지 작동할수있다. UIAuto 는 (블랙박스 테스트) 를 이용해 사용자처럼 테스트하게된다.
dependencies {
androidTestCompile 'com.android.support.test:runner:0.5'
// Set this dependency to build and run UI Automator tests
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
}
안드로이드테스트에 넣어서 Instrument Test 이다.
UiDevice#findObject[s] : 단일찾을꺼냐, 복수개 찾을꺼냐.
recyclerView같은경우 스크롤을 충분히 해주고나서 해야한다.
새로만드는 기능이나, 기존의 앱들을 테스트 로직을 미리 몇개 만들어보면 좋겠다. 리스트의 선택은 어떻게하는가?
public class MainactivityTest extends BaseTest {
@Before
@Overrie
public void before() threos Exception {
session.setAccessToken(neill);
super.before();
@Test
public void testPressBack(){
mDevice.pressBack();
assertFlase(....);
}
}
}
testSignUpAsAProButto(){
findButton(R.string.signg)
.clickAndWait(Until.newWIndow(), 디폴트타입);
assertHas(button(R.string.start);
}
}
다음화면의 있을조건까지 테스트에 넣어야함.
Until.newWindow(), Until.scollFinished() 같은 비동기처리. 비동기 처리는 반드시 동기화를 해줘야함. searchCondition permission 설정을 통해서, 애니메이션을 꼭 꺼줘야한다. gradle설정을 통해서 퍼미션설정 넣어야한다.
AWS, ~~ Firebase, Xamarin ~~
AWS를 이용해, 할껀데, ./gredle assembleTest apk생성해서 올린다. Ui오토메이터 쓰지말자(1이니깐)
여러가지 설정을하고, 테스트 실행 테스트시간 설정
동영상, 스크린샷 버그 체크에 굉장히 편하다.
빠른이유.. 무복제, Java hydrate 를 통해 데이터를 자바 오브젝트로 만드는 비용을 줄임.
반복적인 메모리작업을, Annotation Proccessing Tool 을 이용해 단순화해보자.
![Uploading 스크린샷 2017-03-25 오전 10.15.35.png…]()
Rx & Kotlin
Rx : Observable 을 이용해, 단순한 I/O을 이용한, Functional Programming Kotlin : JVM 에서 돌릴수있는 프레임 워크
Kotlin
UI작업에 대한Kolin Extention 을 이용해 View를 쉽게 바인딩할수있게 해줌. RxBinding, subcribe(action)
Rx
switchMap : (flatMap(여러 인터랙션을 취소하기 위한 기법인건가.. 이벤트 처리 정책같음)
비동기 작업에 대한 처리 CompositeDisposable()
BaseAct, Fragment 등에, life-cycle에 맞춰서 관리해주는 걸 만들어놔야한다.
apply{ } : 오브젝트의 작업이 끝난뒤, 할 작업에 대한 callback 정의를 할수있다.
configurationChanged 에서, save/restore
그래서 cache/subject 를 이용해 하였다.
kotlin maze : 그래서 만든 비동기처리에 대한 프레임웤인듯 combineLatest.
이를통해서, test 짜기가 좋다.
간단히 사용할수 있다.
재사용성을 높인다,
학습비용이 높다.
state를 코드에 둘것이냐, 여러 인풋에대한 처리가 우선순위 처리가 결국 stream에서 받은 데이터에 대해서도, 어렵지않나요? 한화면에서 3가지 조건 http3가지, 액션 2가지라고한다면..간단히 생각하면 쉽겠찌만- 결국 상태를 체크하는 로직이 내부에 들어가게되지않는가. 이게 더 편한방식인지 궁금.