본문 바로가기
[RxJava] #5 스케줄러 5.1. 스케줄러 개념 배우기 -스케줄러는 스레드를 지정할 수 있게 해준다.단순히 새로운 스레드를 생성하거나 기존의 Executors 를 활용하는 것을 넘어 새로운 방식으로 우리를 맞이한다.그동안 어렵게 다루어야 했던 비동기 프로그래밍이 간결한 코드로 다시 태어난다. -String[] objs = {“1-S”, “2-T”, “3-P”}; Observable source = Observable.fromArray(objs) .doOnNext(data -> Log.v(“Original data = “ + data)) .subscribeOn(Schedulers.newThread()) // 발행부터의 thread 지정 .observeOn(Schedulers.newThread()) // 불리는 순간부터의 threa.. 2019. 6. 7.
[RxJava] #4 리액티브 연산자의 활용 4.1. 생성 연산자 -생성 연산자의 역할은 데이터 흐름을 만드는 것이다.간단하게 Observable, Single, Maybe 객체 등을 만든다고 생각하면 된다. 4.1.1. interval() 함수 -일정 시간 간격으로 데이터 흐름을 생성한다.주어진 시간 간격으로 0부터 1씩 증가하는 Long 객체를 반환한다. -interval() 함수는 기본적으로 영원히 지속 실행되기 때문에 폴링 용도로 많이 사용된다.수행은 RxComputationalThreadPool 에서 수행된다.interval 값이 초기 지연값으로도 활용된다. 4.1.2. timer() 함수 -interval 함수와 유사하지만 한 번만 실행하는 함수.일정 시간이 지난 후에 한 개의 데이터를 발행하고 onComplete() 이벤트가 발생한다... 2019. 6. 5.
[RxJava] #3 리액티브 연산자 입문 - ReactiveX 문서의 연산자 부분을 살펴보면 다양한 연산자(operator)함수가 존재한다. 이 연산자들은 버전이 높아지면서 계속 늘고 있다. 이 연산자들을 모두 알아야 리액티브 프로그래밍을 할 수 있는 것은 아니다. - for, if while 문처럼 프로그래밍 언어에서 제공하는 키워드들을 사용하는 대신 RxJava 의 연산자로 비동기 프로그래밍에 필요한 주요 로직을 만들 수 있다. - 리액티브 연산자의 특징은 언어 특성과 크게 연관이 없다. 리액티브 연산자는 함수라고 한다. 형식만 놓고 보면 Observable 등의 클래스에 포함되어 있으므로 자바 관점에서는 메서드이다. 하지만 함수형 프로그래밍의 원리에 따르면 리엑티브 연산자는 부수 효과가 없는 순수 함수(pure function)이다. - .. 2019. 6. 4.
[RxJava] #2 Observable 처음 만들기 - Observable 은 데이터 흐름에 맞게 알림을 보내 구독자가 데이터를 처리할 수 있도록 한다. RxJava 프로그래밍은 Observable 에서 시작해 그것으로 끝난대고 해도 과언이 아닐 정도로 중요한 개념이다. - Rajava 1.x 에서는 데이터 소스를 Observable 과 Single 클래스로 구성했다. RxJava 2 에서는 Observable 클래스를 상황에 맞게 세분화해 각각 Observable, Maybe, Flowable 로 나뉘었고, Single 도 그대로 존재한다. - Maybe 클래스는 Reduce() 함수나 firstElement() 함수와 같이 데이터가 발행될 수 있거나 혹은 발행되지 않고도 완료되는 경우를 의미한다. - Flowable 클래스는 Observable 에서 .. 2019. 6. 3.
[RxJava] #1 리액티브 프로그래밍 소개 -RxJava 라이브러리는 1.x 버전을 거쳐 2016년 10월에 점면 개편된 RxJava 2.0 을 출시. 1.1. 리액티브 프로그래밍 -리액티브 프로그래밍은 데이터 흐름과 전달에 관한 프로그래밍 패러다임.명령형(imperative) 프로그래밍은 주로 컴퓨터 하드웨어를 대상으로 프로그래머가 작성한 코드가 정해진 절차에 따라 순서대로 실행된다.그러나 리액티브 프로그래밍은 데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 수식이 업데이트되는 방식. -명령형 프로그래밍 방식은 변경이 발생했다는 통지를 받아서 자료를 다시 가져오는 pull 방식이지만, 리액티브 프로그래밍은 데이터 소스가 변경된 데이터를 함께 주는 push 방식이다.일종의 옵저버 패턴이다. -리액티브 프로그래밍은 1990년대에.. 2019. 5. 31.
[android] Logcat 에서 로그를 제대로 찍지 않아요! [android] Logcat 에서 로그를 제대로 찍지 않아요! - for(i 1..10){ Log.e("cklee", "MMM gamza") } Kotlin 으로 위와 같은 코드를 짜서 돌려보았더니... MMM gamza 가 두번만 찍힌다... - 이 무슨 기괴한 일인가 싶어 "MMM gamza $i" 와 같이 i 값을 포함해서 찍도록 했더니.. 안정적으로 1~10 까지 찍힌다.. - 사실 처음 이 현상을 접할때는 coroutine 에서 이 로직을 돌렸기 때문에.. coroutine 관련된 compile 버그인가 싶었는데.. 단순 kotlin 코드만 돌렸는데도 동일현상이 보여서 kotlin 버그인가 싶었다. 그런데.. 사실 이렇게 간단한 로직을 버그를 낼 정도로 멍청한 kotlin 은 아니라고 믿고, .. 2019. 5. 24.
[android] dialog style 속성 [android] dialog style 속성 -안드로이드로 밥벌이를 하고 있음에도, 안드로이드에 대해 모르는 것이 너무 많은 것 같다.오늘은 코드를 보다가 마딱뜨린 dialog 의 몇 가지 속성들에 대해 정리해보았다. (어렴풋이 아는 것도 확실히 정리하자는 측면) -android:windowDrawsSystemBarBackgrounds LOS 부터 사용 가능하다. (v21) true : full screen 을 사용할 때 상단 System 영역(Status bar)까지 그리는 것을 허락해준다.window 가 floating 상태가 아니면, system bar 들은 transparent bg 로 그려지는데, statusBarColor 와 navigationBarColor 가 있으면 해당 값으로 그려진다... 2019. 4. 27.
[android] concurrent document에 대해 알아본다. [android] concurrent document에 대해 알아본다. https://www.youtube.com/watch?v=4Y3JMvbcxQEhttps://developer.android.com/guide/topics/manifest/activity-element#dlmode -안드로이드 LOS 부터 concurrent document 라는 새념이 생겼다.이는 런타임 시에 앱의 테스크를 몇 개라도 동적으로 생성할 수 있게 된다. -concurrent document 를 적극 활용하는 대표적 앱은 google drive 가 있겠다. -concurrent document 를 하는 방법은 두가지가 있다.첫째는 startActivity 시 Intent 의 flag 로 FLAG_ACTIVITY_NEW_DO.. 2019. 4. 25.
[android] QUOTED-PRINTABLE 의 예외처리 =\r\n [android] QUOTED-PRINTABLE 의 예외처리 =\r\n -QUOTED_PRINTABLE 은 모든 문자를 =XX 형태로 표시하는 encoding 방법이다.XX 는 hexadecimal 문자가 들어간다. 다시 말해, 0~9 또는 A~F 가 들어간다는 이야기이다.알파벳의 경우 대문자만 인정하고 있다.예를 들면 12 는 =0C 로, 61 은 =3D 로 표시되는 그런 형태이다. -그런데 Spec 에 잘 정의되지 않아서(혹은 내가 대충 읽어서) 개발자를 애먹이는 녀석이 하나 있는데 바로 =\r\n 이다.QUOTED-PRINTABLE 로 encoding 할 때 길다 싶으면 line wrap 을 하곤 하는데 이 때 사용하는 기호가 “=\r\n” 이다. 그래서 QUOTED_PRINTABLE 을 vcard.. 2019. 4. 10.
반응형