profile
어려울수록 기본에 미치고 열광하라
태그 목록
전체보기 (114)android(26)kotlin(22)swift(21)스위프트(21)iOS(21)RxJava(17)반응형 프로그래밍(16)rxkotlin(16)비동기 데이터 스트림(15)RX(15)CS(13)observable(12)Reactive X(11)코틀린(10)Java(6)reactivex(6)안드로이드(6)coroutine(6)코루틴(5)동시성(5)비동기(5)디자인 패턴(4)Thread(4)JVM(3)Design Pattern(3)RecyclerView(3)Apollo client(3)graphql(3)Android Component(3)TCP/IP(3)View(3)MVVM(2)상속(2)Broadcast Receiver(2)자바(2)정렬 알고리즘(2)Generics(2)멀티 쓰레딩(2)Map(2)RxAndroid(2)추상화(2)취준(2)SOLID(2)OOP(2)context(2)네트워크(2)dependency injection(2)di(2)jetpack(2)제너릭 함수(2)알고리즘(2)lifecycle(2)Observer(2)List(2)garbage collection(2)GC(2)자료구조(2)객체지향 프로그래밍(2)제너릭 클래스(2)카카오페이(2)다형성(2)제너릭(2)service(2)scope function(2)클린 아키텍처(2)회고(2)Adapter(2)의존성 주입(2)Flowable(2)스코프 함수(2)동기화(1)날먹(1)stack(1)소마 면접(1)garbage collector(1)CustomType(1)레포지(1)process(1)data class(1)heap(1)Activity(1)inline function(1)카카오(1)Inflating(1)junit(1)Cache(1)Local Data(1)Handler(1)velog(1)구조화된 동시성(1)Mutext(1)onDraw(1)quicksort(1)delegate pattern(1)callback(1)Hash Collision(1)캡슐화(1)Thread Pool(1)Frameworks(1)연말(1)RecyclerView.Adapter(1)with(1)임계 영역(1)andoird(1)clean architecture(1)input(1)requestLayout()(1)캐시 메모리(1)debounce(1)LRU(1)high order function(1)by(1)BST(1)tistory(1)hasFixedSize(1)Use Cases(1)RxBinding(1)티스토리 단점(1)브로드캐스트 리시버(1)Content Provider(1)composition(1)신입 개발자(1)콘텐트 프로바이더(1)Datastore(1)network(1)scheduler(1)XML(1)고차함수(1)entity(1)ip(1)tcp(1)퀵 소트(1)Looper(1)layout(1)데드락(1)LRU Cache(1)Hashing(1)Open Addressing(1)객체지향 패러다임(1)double linked list(1)test code(1)PendingIntent(1)명령형 프로그래밍(1)CustomTypeAdapter(1)2021년(1)hash function(1)notifyDataSetChanged()(1)Apollo-graphql(1)Application Context(1)꿀팁(1)ANR(1)싱글톤 패턴(1)커스텀 타입(1)DiffUtil(1)Deadlock(1)application(1)onLayout(1)interface(1)Runtime Data Areas(1)when(1)Collection(1)슬라이딩 윈도우(1)Day(1)jetbrains(1)뮤텍스(1)취업준비(1)dagger(1)GitHub 소스코드(1)flow(1)Adapter Pattern(1)HashTable(1)인라인 함수(1)Broadcast(1)가비지 컬렉션(1)Enum(1)VS Code(1)세마포어(1)Process Control Block(1)Chaining(1)inflate(1)소마 지원 팁(1)AAC(1)절차적 프로그래밍(1)Spring boot(1)HashMap(1)inline(1)main thread(1)LayoutInflater(1)이진 트리(1)이진 탐색 트리(1)SharedPreferences(1)수습기간(1)listview(1)환승(1)notification(1)array(1)안드로이드 개발(1)TCP 통신(1)어댑터 패턴(1)Application Not Responding(1)Intent(1)Method Area(1)교착상태(1)github(1)toString(1)Executor(1)ViewHolder(1)병합 정렬(1)EditText(1)다크모드(1)ExecutorService(1)Class Loader(1)mutation(1)view lifecycle(1)SW 마에스트로(1)Android view(1)Kotlin 유용한 함수(1)객체지향 프로그래밍 설계원칙(1)합병 정렬(1)sealed(1)UI Test(1)Field Injection(1)Drivers(1)AlarmManager(1)delegate(1)Critical Section(1)깃허브(1)시간 복잡도(1)Activity Context(1)Android Studio(1)흐름제어(1)운영체제(1)LRU 알고리즘(1)Singleton(1)RxKoltin(1)소프트웨어 마에스트로(1)set(1)run(1)Listener(1)CustomView(1)OS(1)배압현상(1)브로드캐스트(1)스프링 부트(1)ScalarType(1)Native Method Stack(1)비동기 처리(1)function(1)UI thread(1)페이지 교체(1)프로세스(1)유닛 테스트(1)key-value(1)Interface Adapters(1)infix(1)3 Way-Handshake(1)unit test(1)file upload(1)MergeSort(1)VSC(1)서비스(1)Pair(1)Kotlin Function(1)Night(1)다크모드 비활성화(1)Semaphore(1)소마(1)쓰레드(1)패킷 교환(1)소마 코테(1)PublishSubject(1)Wrapper Pattern(1)Subject(1)4-way Handshake(1)apollo(1)옵저버 패턴(1)안드로이드 스타일(1)Backpressure(1)네트워킹(1)PCB(1)Context Switching(1)
post-thumbnail

[RxJava] 팔방미인 Subject 알아보기

Subject 지금까지 Observable, Single, Flowable 등의 데이터 스트림에 대해 알아보았다. 이번 포스팅에서 알아볼 녀석은 Subject 라는 녀석인데, 이는 관찰 가능한 데이터 스트림과 관찰자(구독자)의 성격을 모두 갖고 있는 특이한 녀석이다. 즉 Observable 과 Observer 를 모두 구현한 추상 타입으로, 하나의 소스로부터 다중의 구독자에게 멀티 캐스팅이 가능하다는 특징을 갖고 있다. Observer 를 구현한다는 특징때문에, onNext(), onError(), onComplete() 등의 이벤트를 수동으로 발생하여 구독자들에게 전달해줄 수 있다. 그럼, 다양한 Subject 의 종류 중 몇 가지에 대해 하나씩 알아보도록 하자. PublishSubject PublishSubject 는 가장 단순한 Subject 구현체중 하나이다. 구독자들에게 **이벤

2021년 10월 25일
·
4개의 댓글
·
post-thumbnail

[RxJava] Scheduler 설정하기

Scheduler (스케줄러) RxJava 는 다양한 문제를 해결할 수 있는 범용적인 솔루션이다. 특히 멀티 쓰레딩과 같은 비동기 작업을 효율적으로 구현할 수 있는 환경을 제공해준다. 이는 스케줄러라는 녀석을 활용하게 된다. 스케줄러는 데이터 스트림이 어떤 쓰레드에서 데이터를 발행하는지, 구독자는 어떤 쓰레드에서 이벤트 발생을 통보받는지에 대해 지정해줄 수 있다. RxJava 에서는 Schedulers 클래스에서 제공하는 정적 패토리 메소드를 통해 스케줄러를 설정해줄 수 있다. Scheduler 종류 >### Single 스케줄러 Single 스케줄러는 단일 쓰레드를 생성하여 이를 계속 재사용하는 방식을 활용한다. RxJava 내부에서 쓰레드를 별도로 생성하여, 한 번 생성된 쓰레드를 활용하며 여러 작업을 처리하게 된다. >### IO 스케줄러 이 녀석은 네트워킹 작업이나 **DB 트랜잭션, 파일 시스

2021년 10월 20일
·
0개의 댓글
·
post-thumbnail

[RxJava] Observable 오류 처리하기

🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다 공식 문서를 참고하여 작성된 포스팅입니다. 이전 포스팅과 이어집니다. Observable 오류 처리하기 데이터가 발행되다보면, 은연중에 오류가 발생할 수도 있는 것이다. 그런데 보통 데이터 스트림에서 오류가 발생하면, 즉시 데이터 스트림이 종료되기 때문에 따로 조치를 해주어야 하는 상황이 있을 수 있다. 이번 포스팅에선 Observable 에서 발생할 수 있는 에러를 핸들링하는 방법 몇 가지를 알아보자. onError() Consumer 등록하기 이전에 Observable 에서 에러가 발생하면 **`E

2021년 9월 9일
·
1개의 댓글
·
post-thumbnail

[RxJava] Observable 결합하기

🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다 공식 문서를 참고하여 작성된 포스팅입니다. 이전 포스팅과 이어집니다. Observable 결합하기 여러 개의 Observable 데이터 스트림을 하나의 Observable 로 만들 수 있다. 여러 데이터를 이용하여 가공해서 사용하는 경우, 혹은 HTTP 통신의 응답들을 한 번에 묶어서 받고 싶은 경우 등에 사용하게 된다. 이번 포스팅에선 이러한 동작을 하는 Observable 결합 연산자들 중 몇 가지를 알아보고자 한다. 설명만 들어서는 헷갈릴 수 있는 파트다. 마블 다이어그램과

2021년 9월 8일
·
0개의 댓글
·
post-thumbnail

[RxJava] Observable 필터링하기

🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다 공식 문서를 참고하여 작성된 포스팅입니다. 이전 포스팅과 이어집니다. Observable 필터링하기 필터링 연산자는 Observable 이 뱉는 데이터들을 어떤 기준에 의해 거른 후 발행하도록 한다. 이번 포스팅에선 Observable 필터링 연산자 중 자주 사용되는 몇 가지를 알아보며, 개념을 익혀보도록 하자. debounce() 메소드 이 녀석은 특정 시간동안 더 이상 데이터가 발행되지 않을 때에 데이터을 발행하는 연산자이다. ![](https://images.velog.io/im

2021년 9월 8일
·
0개의 댓글
·
post-thumbnail

[Reactive X] Observable 개념 날먹하기

Observable 녀석의 정체 Reactive X 세계에서는 어떤 데이터 흐름을 '관찰'하는 데에 포커스를 두고, 비동기적으로 다양한 동작을 수행할 수 있다. 그냥 메인 쓰레드는 자기 할 일 하고 있다가, 어떤 데이터가 나왔을 때 이를 감지하여 원하는 특정 동작을 수행할 수 있다. 이 때, 이 '관찰할 수 있는' 데이터 스트림을 Rx 에서는 Observable 이라고 부른다. 보통 Observable 은 어떠한 순차적인 데이터를 갖게 된다. 이 데이터 스트림을 관찰하게 되는 '옵저버'들은 'Observable' 이 발행하는 '데이터'에 즉각 반응을 할 수 있다. 바로 '옵저버 패턴'을 이용해서 말이다. 옵저버 패턴 되짚어보기 이전에 옵저버 패턴에 대하여 [포스팅](https://velog.io/@haero_kim/%EC%98%B5%EC%A0%80%EB%B2%84-%E

2021년 8월 22일
·
0개의 댓글
·