본문 바로가기

KOTLIN

(13)
Channel 내부 동작 분석을 분석해보자 서론프로젝트에서 API 호출 시 발생하는 네트워크 에러처리에 대한 클래스를 StateFlow에서 Channel에서 변경하게 되었습니다. 기존에 사용하던 StateFlow는 중복된 에러를 방출하지 않는다는 문제가 있었습니다. 단순히 API 호출 실패로 인해 화면 이동이 안된다거나, 특정 동작이 반복될 가능성이 매우 희박한 곳에선 해당 문제를 발견하지 못했지만 이후 북마크 버튼을 클릭같이 단발적으로 반복해서 발생하는 이벤트에 대해선 문제가 발생했습니다.Channel 뜯어보기public fun Channel( capacity: Int = RENDEZVOUS, onBufferOverflow: BufferOverflow = BufferOverflow.SUSPEND, onUndeliveredEle..
Kotlin Value Class With Project Valhalla 오늘 알아볼 주제는 Kotlin의 Value Class와 Vlalue Class가 탄생하게 된 JVM의 Project Valhalla 입니다. 우테코 프리코스의 로또 과제를 진행하면서 다음과 같이 상태 관리를 위한 data Class를 만들었습니다. 이 과정에서 도메인에 특화된 타입을 만들어 Wrapper로 분리할지 아니면 Primitive Type 타입 그대로 사용할지 많은 고민을 했습니다. 미션 제출 당시엔 아래 코드와 같은 형태로 제출했지만 이후 리팩토링 과정에서 Value Class라는 좋은 기능이 있다는 것을 알게 되어 소개해보겠습니다. 이번 글은 "이펙티브 코틀린"의 45장 '불필요한 객체 생성을 피하라'와 47장 '인라인 클래스의 사용을 고려하라'에 대한 내용을 참고하였습니다.data cla..
코틀린 코루틴의 정석, 세 걸음 👩‍💻 오늘의 할 일정말 오랜만에 책을 피는 것 같습니다. 얼레벌레 바빠서 책을 볼 시간이 없었는데 일주일에 한 번씩 스터디 팀원분들에게 이 책을 가지고 코루틴에 대해 알려드릴 수 있는 좋은 기회가 생겨서 꾸준히 읽을 수 있게 되었습니다. 어떤 개념을 내가 정확히 알고 있다고 말하기 위해선 이 개념을 다른 사람에게 설명할 수 있어야 한다고 생각하는데, 감사하게도 부족한 제 이야기를 들어주실 사람이 생겨서 너무 감사하네요. 이번 챕터의 주제는 CoroutineDispatcher입니다. 그동안 제가 알고 있던 CoroutineDispatcher는 작업 스레드를 지정하기 위한 용도라고 알고 있었는데 이외에도 어떤 역할을 하는지 한번 알아보겠습니다. 📖 CoroutineDispatcher란?우선 ..
[Kotlin]Sealed Class란 무엇일까 ? 👩‍💻 오늘의 할 일오늘은 Kotlin의 Sealed Class에 대해 알아보겠습니다. 이전 동아리 면접 질문에서 Sealed Class와 Enum Class의 차이점을 물어봤는데 아예 몰라서 대답을 못했던 경험이 있어서 이 부분에 대해서도 한번 알아보고 가겠습니다. 멋사에서 Kotlin 수업을 들을 때 한 번 들었었는데 좀 더 자세히 알아보려고 합니다.🔥 수업 시간에 배운 Sealed ClassSealed Class는 자기 자신을 상속받은 클래스들을 모아 관리하는 개념입니다. Kotlin의 클래스와 그 멤버 함수들은 final이기 때문에 상속될 수 없습니다.sealed class는 그 자체로 추상적이기 때문에 open 키워드로 메서드를 상속할 수 있습니다fun main() { val obj1..
Coroutine SharedFlow 👩‍💻 오늘의 할 일서버로에서 가져온 데이터를 기반으로 경도와 위도를 사용해서 지도에 마커를 표시해주고 있습니다. 문제는 처음 지도를 보여주는 Fragment가 생성되면 정상적으로  마커가 표시 되지만 BottomNavigation으로 다른 Fragment로 전환 후 다시 지도로 돌아오면 마커가 표시되지 않는 문제가 발생했습니다.서버의 데이터는 ViewModel에서 StateFlow로 받아왔습니다. 그래서 저는 문제의 원인을 StateFlow로 특정했습니다. StateFlow를 원인으로 삼은 이유는 StateFlows는 중복된 값을 방출 하지 않는다는 점 때문입니다. 자세한 글은 앞선 포스팅을 참고해주세요!  지난 1월 15일 작성했던 글을 처음으로 StateFlow를 사용했고 SharedFlow를 ..
StateFlow가 중복된 값을 반환하지 않는 이유(DistinctUntilChanged) 👩‍💻 오늘의 할 일그동안 저는 SateFlow가 같은 값을 방출하지 않도록 설계되어 같은 값이 필요할 경우 SharedFlow를 사용해야 한다고 알고 있었습니다. 오늘은 StateFlow가 왜 같은 값을 방출하지 않는지 낱낱이 파헤쳐 봅시다! distinctUntilChanged  StateFlow는 distinctUntilChanged와 같은 연산을 합니다. 먼저 distinctUntilChanged에 대해 알아보겠습니다. 먼저 함수명 그대로 해석을 해보겠습니다. distinct는 학교에서 DataBase를 배울 때 중복을 제거하고 데이터를 가져올 때 사용했던 기억이 나네요. 그럼 이어 해석을 해보면 distinct Until Changed 즉, 변경될 때까지 중복을 제거한다라고 해석할 수 있겠네..
코틀린 코루틴의 정석, 두 걸음 👩‍💻 오늘의 할 일 책을 얼렁 얼렁 읽고 싶은데 요즘 너무 바쁘네요... 수업 듣고 개인 프젝하고 스터디하고 SOPT 지원서 작성하구... 하루는 왜 24시간이고 내 몸은 하난지 😭 두 번째 쳅터는 코루틴을 연습하기 위한 IDE 환경을 세팅하는 부분과 작업 중인 코루틴이 어떤 스레드에서 실행되는지, 코루틴의 이름을 지정하는 내용입니다. 환경 세팅은 넘어가구 간단하게 나머지 파트를 빠르게 알아본 뒤, 세번째 챕터인 CoroutineDispathcer에 대해 알아보겠습니다. 5장까진 많이 공부했던 내용이라 얼렁 더더더 어려운걸 해보고 싶어요 💪 👨‍💻 2장 코루틴 개발 환경 설정 2-1. 코루틴 디버깅 환경 설정 앞장에서 살펴본 것 처럼 코루틴은 일시 중단 후 작업을 재개할 때 실행 스레드가 바뀔 수 있습..
코틀린 코루틴의 정석, 첫 걸음 👩‍💻 오늘의 할 일 코루틴을 공부하면서 정말 많은 도움을 받았던 블로그의 저자분께서 책을 내신다 해서 한 달 전부터 예약 걸고 기다렸는데 드디어 오늘 도착했습니다. 제가 살다 살다 전공 서적을 이렇게 기다릴 줄은 몰랐네요🤣 그냥 공부하기보단 저자분처럼 직접 글로 쓰고, 그림을 그리며 이해하는 게 가장 좋은 학습 방법이라고 생각해서 오늘부터 꾸준히 글을 남겨볼까 합니다. 해당 책과 블로그는 여기를 참조해 주세요! 코틀린 코루틴의 정석 책 출간 코틀린 코루틴의 정석 책 출간 소식 안녕하세요. '조세영의 Kotlin World' 기술 블로그를 운영 중인 조세영입니다. 이번에 제가 저술한 『코틀린 코루틴의 정석』, 책이 출간되었습니다. 이 책은 많 kotlinworld.com 이제 첫걸음마 단계를 넘어서 어디..