💡 RxJava에서의 스케줄러와 비슷한 기능을 하는 코루틴 디스패처에 대하여 학습하였습니다. CoroutineDispatcher코투린 디스패처는 코루틴을 스레드로 보내는 역할을 합니다.모든 작업은 스레드 위에서 실행돼야 하고, 코루틴 또한 작입이므로 스레드 위에서만 실행될 수 있습니다.우리가 코루틴을 만들어 CoroutineDispatcher로 코루틴 실행을 요청하면, CoroutineDispatcher는 자신이 사용할 수 있는 스레드풀의 스레드 중 하나에 코루틴을 보냅니다.기본 디스패처디스패처를 설정하지 않으면 기본적으로 Dispatchers.Default가 설정됩니다.CPU를 많이 사용하는 작업에서 실행합니다.이 디스패처는 코드가 실행되는 컴퓨터의 CPU 개수와 동일한 수(최소 2개 이상)의 스레드..
💡 코루틴의 생명 주기를 제어하는 데 도움을 주는 코루틴 스코프 함수에 대하여 학습하였습니다.코루틴 스코프코루틴 스코프의 필요성아래 작업은 중단 함수에서 중단 함수를 호출하며, 작업이 동시에 진행되지 않는다는 문제가 있습니다.하나의 앤드포인트에서 데이터를 얻는 데 1초씩 걸리므로 총 2초 소모suspend fun getUserProfile() : UserProfileData { val user = getUserData() // 1초 후 val notifications = getNotifications() // 1초 후 return UserProfileData( user = user, notifications = notifications, )}두 중단 함수..
💡 중단 함수를 사용하는 코루틴에서 취소를 통해서 자원 낭비와 메모리 누수를 줄일 수 있는 방법에 대하여 학습하였습니다.cancellation중단 함수를 사용하는 몇몇 클래스와 라이브러리는 항상 취소를 지원합니다.단순히 스레드를 죽이면, 연결을 닫고 자원을 해제하는 기회가 없기 때문에 최악의 취소 방법이 됩니다.개발자들이 상태가 액티브한지 확인하지 않아도 되고, 간단하고 안전한 방식으로 취소할 수 있도록 코루틴은 이를 지원하고 있습니다.기본적인 취소Job 인터페이스는 cancel 메서드를 통해서 취소를 지원합니다.cancel()이를 호출한 코루틴은 첫 번째 중단점에서 잡을 끝냅니다.잡이 자식을 가지고 있따면 그들 또한 취소되며, 부모는 영향을 받지 않습니다.잡이 취소되면, 취소된 잡은 새로운 코루틴의 ..
💡 코루틴 빌더에서 활용되는 코루틴 컨텍스트에 대하여 학습하였습니다.코루틴 컨텍스트코루틴 빌더의 정의를 보면 첫 번째 파라미터가 CoroutineContext임을 알 수 있습니다.fun CoroutineScope.launch( context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, block: suspend CoroutineScope.() -> Unit): Job리시버뿐만 아니라 마지막 인자의 리시버도 CoroutineScope 타입이며, 중요한 개념으로 활용되는 CoroutineContext의 정의를 알아야 합니다 !CoroutineContext 인터페이스Corou..
💡 다양한 비동기 처리 방법에 대하여 알아보고, 예제를 통해서 학습하였습니다.코투린이 없다면?일반적인 비동기 로직일반적인 프론트엔드(안드로이드) 단에서 애플리케이션 로직을 구현하는 방법은 아래와 같습니다.다양한 소스로부터 데이터를 받음API, 뷰 구성요소, 데이터베이스, 다른 앱데이터 처리가공된 데이터로 작업뷰 동기화데이터베이스 저장API로 전송일반적인 비동기 연산 라이브러리는 아래와 같이 사용됩니다.fun onCreate() { val news = getNewsFromApi() val sortedNews = news .sortedByDescending { it.publishedAt } view.showNews { sortedNews }}안드로이드에서는 하나의 앱에서 뷰를 ..
💡 도메인 특화 언어인 DSL의 개념에 대하여 알고, 간단한 실습을 진행하였습니다.DSL?특정 업무나 문제 해결을 위해 최적화된 언어로, 해당 도메인에서 일반적으로 사용되는 개념과 연산을 간결하고 직관적으로 표현할 수 있게 해줍니다.Domain Specific Language의 약자로, 특정 도메인에 국한해 사용하는 언어입니다.반대 개념으로는 General Purpose Language가 있으며, C, C++, Kotlin, Swift 등의 프로그래밍 언어들이 이에 해당합니다.DSL vs GPLDSL웹 페이지 레이아웃, 데이터베이스 쿼리, 빌드 자동화 등 작업을 쉽게 하기 위해 설계되었습니다.생산성과 가독성이 좋고, 복잡한 작업을 간단하게 표현할 수 있습니다.하지만 범용적이지 않아서 다른 도메인에 적용..