일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- junit
- Reactive
- SWIFTUI
- Animation
- node.js
- node
- rx
- Observable
- databinding
- mvvm
- PagingLib
- Android 13
- SwiftUI Tutorial
- Kotlin
- GCP
- RxKotlin
- 테스트 자동화
- android13
- list
- Koin
- 인앱결제
- google play
- php
- MotionLayout
- Android
- MediaSession
- mysql
- paging
- MediaPlayer
- 동영상
- Today
- Total
목록분류 전체보기 (146)
봄날은 갔다. 이제 그 정신으로 공부하자
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cy8AAb/btq6w6AA4XJ/kfK5ENAKGx65KvkYpLRRYk/img.png)
이번글에서는 업스트림이 방출한 아이템을 “채택” or “무시” 에 초점을 맞춘 필터 연산자에 대해 설명하도록 하겠습니다. 필터 연산자의 종류는 아래와 같습니다. - debounce - distinct - distinctUntilChanged - elementAt - Filter - first - last - ignoreElements - skipXXX - taskXXX debounce debounce() 연산자는 아이템 방출량이 급격히 증가하는 상황에서 충분히 시간이 지난 뒤에 마지막 항목을 가져오기를 원할 때 사용하는 연산자로 사용자가 실제로 원하는 키워드와 일치하는 쿼리를 얻을 수 있을 때까지 입력을 중단하기를 잠시 기다렸다가 다운스트림 연산자에게 전달하는 역할을 수행합니다. fun funExam()..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c0KEwf/btq6rvasrZl/Y9llbxfRgXpiZoWaoyRqUk/img.png)
이번 글에서는 변환 연산자에 대해 설명하도록 하겠습니다. 변환 연산자는 데이터의 흐름을 개발자가 원하는대로 변형할 수 있도록 지원해주는 기능을 수행하는 연산자로 아래와 같이 많은 연산자들이 있습니다. - buffer() - window() - throttle() - map() - flatMap() - concatMap() - switchMap() - cast() - defaultIfEmpty() - switchIfEmpty() - startWith() - sort() - scan() - groupBy() 많네요... ㅠ_ㅠ 그래도 알아야하니까 하나 하나 설명하도록 하겠습니다. ^___^ buffer buffer() 연산자는 방출되는 아이템을 모아서 리스트나 다른 컬렉션 유형으로 전달합니다. 이전 글에서 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qfPkb/btq6NboxBfj/GO0j818kSmeum0L1Ck40Ok/img.png)
지난 글에서 비동기 처리 상황에서 아이템 방출을 제어할 수 있는 흐름 제어 방법에 대해 설명하였습니다. 이번 글에서는 사용 가능한 다양한 연산자를 기능별로 구분해보도록 하겠습니다. 지난 번 글에서부터 제가 함수에 연산자라는 단어를 몇번 사용했었는데, Reactive에서는 함수를 연산자로 지칭하고 있어 저도 앞으로는 함수라는 단어보다는 연산자라는 단어를 사용하도록하겠습니다. Reactive에서 연산자는 하나 이상의 Observable(or Flowable)을 피연산자로 사용해 변환하고 결과로 Observable(or Flowable)을 반환합니다. 연산자는 선행하는 Observable(or Flowable)에 대해 구독자처럼 작동합니다. 연산자는 방출되는 아이템을 기다리다가 변환한 다음 다운스트림 구독자에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dhC4y5/btq6u16aUkP/Fxpmm3BgeKYJaDwRqeD5zk/img.png)
지난 글 까지는 Observable의 종류와 사용 방법에 설명했습니다. 이번 글에서는 비동기 처리 상황에서 발생할 수 있는 문제, 비동기로 동작할 때 Observable이 처리 할 수 있는 처리량보다 더 많은 아이템을 방출하는 경우에 대한 대응, 흐름제어 방법 대해 설명하도록 하겠습니다. 이번 글에서는 리액티브에서 흐름을 제어하는 역할을 하는 BackPressure와 Flowable에 대해 자세히 설명하도록 하겠습니다. backpressure란? Observable은 기본적으로 아이템을 동기적으로 Observer에서 하나씩 방출하도록 동작합니다. 그러나 Observer가 시간을 필요하는 작업을 처리해야 하고 그 처리 시간이 Observable의 방출 시간보다 간격이 긴 경우 문제가 발생할 수 있습니다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brwne5/btq6sdsgXWb/aegBlc1UhNo9bWcLPVs9BK/img.png)
이번 글에서는 동작 방식에 따른 옵저버블의 구분과 Subject에 대해 설명하도록 하겠습니다. Hot & Cold Observable Observable은 그 행동에 따라 두 가지 범주(Hot, Cold)로 구분할 수 있습니다. Cold Observable Cold Observable은 구독 시에 실행을 시작하고 subscribe가 호출되면 아이템을 푸시하기 시작하는데 각 구독에서 동일한 순서로 아이템을 방출 합니다. 즉, 콜드 옵저버블은 수동적이며 subscribe가 호출될 때까지 아무것도 내보내지 않습니다. 이전에 사용한 예제 코드들은 모두 Cold Observable 방식이라고 생각하시면 됩니다. Hot Observable Hot Observable은 Cold Observable과는 반대로 방출을 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfDVaR/btq6llc1vQD/BuEcQlW5wmYtxxCoSlMOtk/img.png)
이번 글에서는 리액티브 주요 구성 요소인 Observable에 대해 심도있게 설명해보도록 하겠습니다. 옵저버블이 무엇인지와 옵저버를 객체를 생성하는 다양한 방법 그리고 구독과 해지 방법에 대해 설명하도록하겠습니다. Observable Observable은 데이터의 흐름을 관장하는 클래스로 데이터의 흐름에 맞게 알림을 보내 옵저버가 데이터 처리를 할 수 있도록 만드는 역할을 수행합니다. 따라서 옵저버블은 일련의 연산자를 거친 아이템을 최종 옵저버로 내보내는 방출 기반의 조합 가능한 Iterator라고 할 수 있습니다. 이 부분을 조금 더 자세히 설명하면 아래와 같습니다. - 옵저버는 옵저버블을 구독합니다. - 옵저버블이 그 내부의 아이템들을 방출하기 시작합니다. - 옵저버는 옵저버블에서 내보내는 모든 아이..
Reactive에 대한 글을 써보려 합니다. ^^;; 병렬 처리 라이브러리 중 하나인 Coroutine에 대한 글은 이전에 작성했었는데 Reactive에 대한 글은 작성한 적이 없더라구요. Reactive에 대한 글을 정리하려는 이유는 정리 안해놓으면 까먹을 것 같아서 입니다. Reactive는 정리할 내용이 많아 차근차근 시리즈로 게시할 예정입니다. 리액티브 프로그래밍이란? 위키피디아에는 아래와 같이 정리하고 있습니다. 리액티브 프로그래밍은 데이터 스트림과 변경 사항 전파를 중심으로하는 비동기 프로그래밍 패러다임이다. 이것은 프로그래밍 언어로 정적 또는 동적인 데이터 흐름을 쉽게 표현할 수 있어야하며, 데이터 흐름을 통해 하부 실행 모델이 자동으로 변화를 전파할 수 있는 것을 의미한다. 데이터와 데이터..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bAy4qz/btq2uasT97f/cv6KQRj0bqtbIfOlWudVc1/img.png)
개인 정보 보호법을 준수하는 서비스를 개발하려면 어떻게 해야 할까요? 답은 간단하지만 그리 쉽지는 않습니다. 우선 우리는 개인 정보 보호법에 대해 알고 그에 맞게 서비스를 개발해야 됩니다. 개인 정보 보호법은 정부에서 친절하게 인터넷에 게시(https://www.law.go.kr/법령/개인정보%20보호법)해 쉽게 찾아 볼 수 있지만 이것을 읽고 이해해 서비스를 개발하는 것은 약간은 지루하고 난해한 일입니다. 그래서 이번 글에서는 개인 정보 보호법 중 서비스 개발에 필요한 부분과 도움이 될만한 정보들을 정리해보았습니다. 벤쳐기업 또는 개인 개발자들이 서비스를 개발하다 흔히 간과하는 부분인 개인정보 보호법 입니다. 이거 생각 외로 중요하고 심각한 부분인데 대부분의 개발자들은 크게 신경 쓰지 않습니다. 나중에..