안드로이드 단위 테스트 (1)

소프트웨어 개발에서 테스트는 종종 저평가 되거나 무시되버리곤 한다. 모바일앱에서 테스트 코드를 하나도 작성하지 않고 앱을 출시하는 경우도 허다 합니다.   대부분 개발자가 유닛테스트를 적용하지 않는 이유는? 모바일 앱은 프론트앤드니까 대부분은 백엔드에서 테스트해야 되지! 모바일은 유닛테스트부분에서는 좀 달라, 왜냐면 대부분의 로직이 UI랑 연결되어있거든! 기껏해봐야 넌 UI 테스트만 신경쓰겠지. 백엔드랑 비교하면 모바일앱은 더보기…

글쓴이 Charlezz,

테스트 더블

테스트 더블(test double) 테스트 작성시, 테스트 대상 코드와 상호작용하는 객체   테스트 더블의 역할 테스트 대상 코드를 격리한다. 테스트 속도를 개선한다. 예측불가능한 실행 요소를 제거한다. 특수한 상황을 시뮬레이션한다. 감춰진 정보를 얻어낸다.     테스트 더블의 종류 1. Dummy 가장 기본적인 테스트 더블 유형. 구현이 포함되어 있지 않고, 주로 매개 변수 값으로만 더보기…

글쓴이 Charlezz,

[패스트캠퍼스] iOS 세미나

섹션 1. RxSwift, 오진성 – 카카오 데이터의 흐름에 따라 코딩을하며, 코드의 길이와 로직이 명령형 프로그래밍에 상대적으로 간결해집니다. 반응형 프로그래밍을 해야하는 이유. 예를 들어 서버로부터 두가지 이상의 API를 호출하여 결과를 받아서 처리를 해야한다면 어떻게 할까요? 보통 생각하는 방법 : 1번 API호출 -> 1번 응답 성공 -> 2번 API 호출 -> 2번 더보기…

글쓴이 Charlezz,

(AnimatedVectorDrawable) Turn Record Button into StopButton

AnimatedVectorDrawable? AnimatedVectorDrawable 클래스는 VectorDrawable, ObjectAnimator 또는 AnimatorSet과 함께 동작하는 애니메이션 효과 주는 클래스입니다 API25레벨 이전에는  UI 쓰레드에서 동작했던것과는 달리, API 25레벨부터는 RenderThread에서 동작합니다. 그래서 UI 쓰레드에 작업량이 많아도 동작이 매우 부드럽습니다. UI쓰레드가 응답하지 않아도 UI쓰레드가 다음 프레임을 처리할수 있을 때까지 계속 애니메이션을 적용 할 수 있습니다. 따라서 RenderThread 가 활성된 더보기…

글쓴이 Charlezz,

자바 버전 다운그레이드 9->8 for mac only

회사에서 쓰는 아이맥 Android Studio에서 gradlew 커맨드를 쓰려고 하니, java 9.0.x에서는 알아들을수 없는 커맨드라고 나온다… 난 자바를 업데이트한적이 없는데…   왜 인지 모르겠지만 다운그레이드 하기로 맘먹고 자바8을 설치했지만 여전히 9.0.x버전이 건재하다.   그래서 다음 순서대로 셋팅했다.   Step 1: Install Java 8 다운로드: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Step 2: 자바8을 설치한뒤, 모든 설치된 자바 더보기…

글쓴이 Charlezz,

소프트웨어 아키텍처 패턴 요약

빌더 패턴 제품을 구성하는 구성 요소들을 먼저 결정 하고 이를 조합하는 식으로 객체를 만들수 있다. 객체를 만드는 요소들이 독립적일 때 빌더객체에 살을 붙여나가는식으로 손쉽게 추가하고 확장할 수 있다. 실제제품은 최종적인 빌더 객체로부터 산출할 수 있다. 팩토리 패턴과 유사하나 차이점은, 빌더 패턴은 복잡한 객체의 단계별 생성에 중점을 두고, 팩토리패턴은 제품의 유사군들이 더보기…

글쓴이 Charlezz,

Screen Recorder 만들기

ScreenRecorder 화면 녹화 프로세스 비디오 코덱으로 부터 얻은 Surface를 통해 VirtualDisplay를 생성하였다면, 비디오코덱의 출력버퍼로부터 부호화된 프레임 버퍼를 얻을수 있다. AudioRecord로 부터 얻은 오디오 버퍼(PCM)를  오디오 코덱의 입력버퍼에 넣고 큐에 넣는다면, 출력버퍼로부터 부호화된 오디오 버퍼를 얻을수 있다. MediaMuxer에 비디오와 오디오트랙을 추가하고, start() 한다. muxer.writeSampleData(trackIndex, buffer) 메소드를 통해 먹싱을 한다. 녹화를 중지하고 더보기…