목록전체 글 (16)
Shunz Android Dev Note
비동기 프로그래밍은 애플리케이션을 개발할 때 Main Thread를 블럭킹하지 않고 시간이 오래 걸리는 작업 (예 : 원격 저장소에서 데이터를 가져오기, I/O 작업) 등 여러 작업을 동시에 수행할 수 있도록 해주는 중요한 테크닉입니다. 코틀린은 Android App 및 Backend 개발을 위해 강력한 언어로서 kotlin coroutine을 통해 비동기 프로그래밍을 탁월하게 지원합니다. 이번 포스팅에서는 비동기 프로그래밍을 쉽게 만드는 kotlin coroutine의 세 가지 필수 기능인 async{}, await, awaitAll의 개념에 대해 알아보겠습니다. 빌더 함수 async {} kotlin coroutine에서 async{}는 새로운 코루틴을 시작하는 코루틴 빌더로, 비동기 연산을 시작한다..
독자는 Android 앱을 개발하면서 LiveData를 자주 사용 해 보았을것입니다. LiveData는 사용하기 쉽고, UI에 표시하기 위하여 필요한 상태를 옵저빙함에 있어 안전하게 라이프 사이클을 관리 할 수 있도록 도와주는 편리한 툴입니다. 생성하기도 쉽고 업데이트하기도 쉽습니다. 또한 옵저빙하기도 쉽습니다. 그래서 개발자들이 간단한 옵저빙이 필요한 모든 곳에서 사용하는 것일 수 있다고 생각합니다. Presentation(UI) 계층에는 괜찮거나, 클린코드 관점에서의 죄책감도 들지 않고, 해가 되지는 않습니다. 하지만 Domain 이나 Data 계층에서는 더 나은 솔루션이 있습니다. 사실, 이런 주제가 나온 것은 처음이 아닙니다. 블로그 게시글, 샘플 및 책에서 좋은 솔루션으로 제공되는 reposit..
마지막으로 다루게 될 Flow 타입은 SharedFlow의 하위 항목인 StateFlow입니다. SharedFlow에 대해 자세히 알아보려면 여기서 이전 게시글을 확인해주세요. 이제 StateFlow를 특별하게 만드는 방법에 대하여 알아보겠습니다. 아래 다이어그램을 바로 이해하지 못하더라도 본 게시글을 모두 읽어 보셨다면 충분히 이해 할 수 있을것으로 기대합니다. StateFlow는 특별한 SharedFlow Flow와 SharedFlow의 차이점과는 다르게, SharedFlow와 StateFlow는 매우 많은 공통점이 있습니다. 사실, 특별한 속성들(properties)을 가지는 SharedFlow를 만들어서 독자만의 StateFlow를 만들 수 있습니다. 먼저 replay value를 1로 설정하여 ..
이전 포스팅에서 Flow에 대하여 살펴보았습니다. 이번 포스팅에서는 Flow의 child에 속하는 SharedFlow에 대하여 살펴보려고 합니다. 이 타입은 FRP(Functional Reactive Programming) 스타일로 프로그래밍을 할때 더욱 많은 가능성을 열어줍니다. 이전 포스팅에서 다루었던 많은 내용들이 이 포스팅에서 이어지겠지만, SharedFlow는 Flow와 비교할 때 몇가지 주요 차이점이 있습니다. 아래 다이어그램을 바로 이해하지 못하더라도 본 게시글을 모두 읽어 보았다면 충분히 이해 할 수 있을것으로 기대합니다. Hot Flow 첫 번째이자 가장 중요한 차이점은 SharedFlow가 콜드(cold)가 아니라 핫(hot) 스트림이라는 점입니다. 이는 SharedFlow에서 컬렉션이..
이전 포스팅에서 반응형 프로그래밍이 무엇인지에 대하여 다루었습니다. 이번 포스팅에서는 코틀린의 Flow 타입을 활용하여 설명을 이어가보려고 합니다. 이 포스팅에서 독자를 Flow 전문가로 만들 의도는 없지만, 독자가 Flow를 사용하는 이유와 시기를 이해하고 Flow와 함께 작성된 코드를 읽을 수 있을 만큼의 수준의 내용은 제공하려고 합니다. 다음 샘플 코드는 글 전체에서 참조, 반복 및 리믹스하게 됩니다. 마지막에는 독자 모두가 완전히 이해할 수 있기를 바랍니다. flow { emit(1) emit(2) }.map { value -> "방출된 값 : $value" }.collect { value -> println(value) } 정의 Flow는 비동기적으로 생성되는 순차적인 값들의 스트림을 나타냅니다..
이번 포스팅은 코틀린의 함수형 반응형 프로그래밍(이하 FRP, Functional Reactive Programming)과 코틀린 Flows 작업에 대하여 몇가지 시리즈로 작성해보려고 합니다. 시리즈의 첫 번째 주재로 함수형 프로그래밍과 반응형 프로그래밍의 개념을 소개하는것부터 시작하겠습니다. 절차적 프로그래밍 (Procedural Programming) 우선 FRP의 일반적인 대안을 설명하는 것부터 시작하는 것이 중요한데 그것이 바로 명령형 프로그래밍 또는 절차적 프로그래밍 패러다임이라고 볼 수 있습니다. 절차적 프로그래밍은 해결책을 찾기 위해 일련의 과정을 단계적으로 동작시켜 코드에 작업을 수행하는 방법과 수행할 작업을 알려주는 것을 포함합니다. 여기 절차 코드 블록의 예가 있습니다. 읽기 쉽지만 매..
2부로 구성된 이 블로그 시리즈에서는 Jetpack Compose 텍스트 필드의 과거, 현재, 미래에 대하여 자세히 다룹니다. 새로 도입된 BasicTextField2에 대해서 알아보세요. Compose 텍스트 팀은 차세대 TextField API를 개발하고 있습니다. 여러분들은 지금 당장 사용(시험)해 볼 수 있습니다. BasicTextField2는 text2 패키지의 foundation 1.6.0 알파버전에서 이용 가능합니다. 1편 요약 1편에서는 다음 방법을 다루었습니다. 상태 동기화 문제를 방지하기 위해 새로운 API로 상태를 관리 데코레이터와 라인 제한을 포함한 기본 스타일링 상태를 관찰하고 비즈니스 규칙을 적용할 때 일반적인 시나리오를 해결 TextFieldBuffer를 사용하여 프로그래밍 방..
2부로 구성된 이 게시글은 Jetpack Compose에서 제공하는 TextField에 대하여 자세히 다룹니다. 과거, 현재 그리고 미래에 어떻게 변화가 되는지 전반적으로 다루도록 합니다. 새롭게 도입된 BasicTextField2에 대하여 알아보도록 해봐요 :-) 요약 구글의 Compose F/W팀에 속한 Text 관련 개발 팀은 차세대 TextField API를 개발하고 있습니다. 지금 당장 사용 해볼 수 있는데요. BasicTextField2는 text2 패키지에 속해 있는 최신 Foundation 1.6.0 알파 버전으로 이용이 가능합니다. 2부 게시글의 마지막에 명시한 다양한 채널을 통해서 개발팀에게 피드백을 남겨주세요. 경고 Compose는 아래와 같은 레이어로 빌드가 됩니다. Material..