Kotlin flow를 이용한 DTO / Domain class간 Mapping 처리 방법 이 글은 Medium의 "Redundant DTO-Domain Mapping in Kotlin Flow"를 번역 / 의역한 글입니다.[1] Project 내부에서 깔끔하고 side effect이 없는 코드를 만들기 위해 각 기능별 또는 모듈별로 Layer를 만들어 사용합니다. 예를들어 데이터를 fetching하는 네트워크 API나, DB의 정보를 가져오는 Room같은 경우 전달받는 날것 그대로의 데이터를 담기 위해 DTO 클래스를 만듭니다. 다만 실제 데이터를 가용하는 부분에서 이 DTO 클래스를 직접 넘겨받아 access하지 않습니다. 이 데이터를 실제로 사용되는 코드에서는 날것의 정보가 아닌 원하는 형태로 변환된 Domain class를 따로 정의하여 사용합니다. 즉 사용하는 부분의 layer를 나누.. 개발이야기/Kotlin 3년 전
[Kotlin] Flow Quick Note 이글은 medium의 19 Things to Know About Kotlin Flow - A Quick Note를 번역 및 의역한 글입니다.[1] https://blog.canopas.com/19-things-to-know-about-kotlin-flow-a-quick-note-1b90eb74f3b0 19 Things to know about Kotlin Flow — A quick note Flow is an asynchronous data stream that sequentially emits values and completes normally or with an exception. (We already know this very… blog.canopas.com 필요한 경우 위 링크에서 원문 확인이 .. 개발이야기/Kotlin 3년 전
[Coroutine] Callback을 Flow로 변환 - callbackFlow coroutine을 정리하면서 같이 정리했던 flow 부분에 유용한 변화들이 발생하여 추가된 flow들에 대해서 추가적인 정리를 하려고 합니다. 기존 글을 작성했을 당시 (2019.11) coroutine이 v1.3.2 정도였는데, 벌써 v1.6.0-RC가 나온 상태입니다. 곧 정식 1.6.0이 나오겠지만, 그사이 추가된 coroutine 관련 api들을 시간 날 때마다 추가하여 정리하도록 하겠습니다. 예제 생성 callbackFlow는 Flow라기 보단 flow builder라는 표현이 더 맞을것 같습니다. 이름에서 보이듯이 callback을 flow로 변경합니다. 기존에는 비동기 처리를 위해 callback 구조를 많이 사용하기도 했고, 여타 라이브러리들나 SDK들이 callback으로 응답을 주는 .. 개발이야기/Kotlin 3년 전
[Android, MVVM, Coroutine] 활용 #2 - Room에서 Coroutine 사용 이전 포스팅에서 Android에서 Coroutine이 사용 가능하도록 설정 된 상태라면 Room에서 coroutine을 이용한 DB 접근방법에 대해서 알아봅니다. 상세내용이 담긴 포스팅 2019/11/25 - [개발이야기/Android] - Android Room & Coroutines 2019/11/04 - [개발이야기/Kotlin] - [Kotlin] 코틀린 - 코루틴#10- Asynchronous Flow(1/2) 2019/11/16 - [개발이야기/Kotlin] - [Kotlin] 코틀린 - 코루틴#11- Asynchronous Flow(2/2) room 2.1에서 부터 coroutine을 지원하기 시작했고 room 2.2부터 Flow를 지원합니다. 실제로 이 두가지를 어떻게 호출하고 사용하는지 .. 개발이야기/Android 5년 전
Android Dev Summit 2019 - What's new in Room 안드로이드 2019 Dev Summit에서 발표된 Testing Coroutines 자료를 정리합니다. Room history Async QueriesRoom에서는 Rx에 대한 지원을 제공합니다. 2.1부터 coroutines에 대한 suspend function을 제공했고, 2.2에서 observable한 Flow를 제공하면서 완벽한 coroutine을 지원합니다. FlowFlow는 kotlin에서 새로이 제공하는 coroutine builder입니다. (1.2.0에는 없었는데..1.3.2를 보니 갑자기 생겨 있더군요..) 비동기로 동작하며 Cold stream이기 때문에 lazy하게 동작시킬 수 있습니다. 또한 intermediate operator와 terminal operator가 존재합니다.co.. 개발이야기/Android 5년 전
[Kotlin] 코틀린 - 코루틴#11- Asynchronous Flow(2/2) 이 글은 아래 링크의 내용을 기반으로 하여 설명합니다.https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md이 블로그 포스팅 당시의(2019.11.04) coroutine 버전은 1.3.2 입니다. 첫번째 글에 이어 포스팅 합니다.Flow 첫번째 정리 포스팅: https://tourspace.tistory.com/258 Flow contextflow로 만들어진 collection은 이를 호출한 caller의 coroutine context에서 수행되며, 이를 context preservation(context 보존) 이라고 부릅니다.따라서 collect() 함수 또는 기타 terminal api를 호출하는 coroutine.. 개발이야기/Kotlin 5년 전
Android Dev Summit 2019 - Testing Coroutines on Android 안드로이드 2019 Dev Summit에서 발표된 Testing Coroutines 자료를 정리합니다. Coroutines-first안드로이드 UI Component를 개발할때 코루틴을 염두해 두고 개발합니다.New APIs : 만약 새로운 API가 추가된다면 코루틴에 맞는지 살펴보고, API 대해 코루틴을 잘 지원할수 있는지 검토합니다.Jetpack Library: 라이브러리를 빌드할 때도 코루틴을 사용하며, 라이브러리중 일부에서는 이미 그렇게 하고 있습니다.Documentation: 안드로이드에서 코루틴을 사용하는 방법에 대한 develop.android.com에 문서화 작업을 진행하고 있습니다.이미 4개의 라이브러리에서 안정적으로 즉시 사용 가능한 코루틴을 지원합니다 또한 나머지 기능들 역시 안정적.. 개발이야기/Android 5년 전
[Kotlin] 코틀린 - 코루틴#10- Asynchronous Flow(1/2) 오랬만에 코루틴 페이지에 들어갔더니 coroutine builder가 추가되었네요.그리고 channel도 experimental flag가 떼졌습니다.(너무 오랬만에 들어가 봤나요?) 여튼 channel 사용이 가능해 지면서 actor의 사용도 가능해 졌으니, 동기화 부분에서도 좀더 코틀린 스럽고 코루틴스럽게 작성이 가능해 졌습니다.그럼 새로 추가된 builder들에 대해서 알아봅니다. 이 글은 아래 링크의 내용을 기반으로 하여 설명합니다.https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md이 블로그 포스팅 당시의(2019.11.04) coroutine 버전은 1.3.2 입니다. Asynchronous FlowSuspen.. 개발이야기/Kotlin 5년 전