Skils

개요저번 글에는 Compose의 Layout에 대해서 다뤄봤습니다.사실 SubComposeLayout을 다루기 위해서 먼저 Layout을 다뤄본 것입니다.즉 SubComposeLayout을 이해하기 위해선 Compose의 Layout 과정을 숙지하고 있어야 합니다. [Android] - Jetpack Compose Layout취업 이후 첫 글인 것 같네요.개발 실력이 모자라 배우느라 바쁘기도 했지만, 개발 외적으로 회사의 프로세스를 적응하고 이해하는데 많은 시간을 쏟고 있는 요즘입니다. 최근엔 서서히 적응을jja2han.tistory.com단순한 레이아웃은 기본 제공 컴포저블(Row, Box, Column)이나 Layout 함수만으로 충분히 구현할 수 있습니다.하지만 하위 레이아웃의 크기나 상태에 따라 ..
개요compose navigation을 활용해서 프로젝트를 진행 중인데요, 생각보다 보일러 플레이트 코드가 많이 발생하더라고요.그래서 어떻게 구조를 바꿀 수 있을까 하다가 KSP를 활용해서 Navigation 코드를 자동화하는 라이브러리를 찾게 되었고, 적용해 봤습니다.Compose Destinations설명Compose Destinations는 Jetpack Compose를 위한 Type-Safe Navigation을 제공하는 라이브러리입니다.해당 라이브러리에서 강조하는 점은 Compose Navigation의 복잡함과 보일러플레이트 코드를 크게 줄여준다는 점입니다. 첫 Stable 한 버전은 1.9.50으로, 23년 10월 자 라이브러리이다.https://github.com/raamcosta/com..
취업 이후 첫 글인 것 같네요.개발 실력이 모자라 배우느라 바쁘기도 했지만, 개발 외적으로 회사의 프로세스를 적응하고 이해하는데 많은 시간을 쏟고 있는 요즘입니다. 최근엔 서서히 적응을 하고 있고, 마인드맵 프로젝트부터 관심이 있었던 Custom Layout을 Jetpack Compose에선 어떻게 구현하고 있을지 궁금했고, 그에 관한 내용을 적어볼까 합니다. Jetpack Compose Layout을 설명하기 전 CustomLayout을 만들기 위해서 View(Xml)에선 어떻게 하고 있었을까요?과거(Xml)class CustomLayout(context: Context) : ViewGroup(context) { override fun onMeasure(widthMeasureSpec: Int, h..
· Skils/Kotlin
이전 글[코루틴의 정석] - 예외 전파 제한(Chapter 8-1)[코루틴의 정석] 구조화된 동시성(Chapter7)[코루틴의 정석] async와 Deferred(Chapter5)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-2)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-1)[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1) 개요이전 글에서는 코루틴이 어떻게 예외를 전파하고, 또 그 예외 전파를 어떻게 방지할 수 있는지에 대해 적어봤습니다.이번 글에서는 이렇게 전파된 에러를 어떻게 처리하는지, 그리고 코루틴은 어떠한 에러 처리 방법을 제공하는지 적어보겠습니다.  CoroutineExcept..
누적합이란?누적합(Prefix Sum)은 배열이나 리스트에서 특정 구간의 합을 빠르게 계산하기 위해 사용하는 알고리즘 기법입니다.일반적으로 입력 배열의 첫 번째 원소부터 특정 위치까지의 합을 저장한 배열을 말하며, 사용됩니다.즉, 배열의 원소들을 더한 중간 결과를 미리 저장함으로써, 반복 계산을 최소화하고 효율성을 높입니다. 예시 그림을 살펴보면 이해가 쉬울 것입니다.  입력으로 [2,4,6,8,10] 이라는 배열이 주어진다면, 누적합은 위와 같이 구할 수 있습니다. 그렇다면 왜 누적합을 사용해야 할까요? 누적합을 사용하는 이유효율적인 구간 합 계산일반적으로 배열에서 특정 구간의 합을 구하려면, 해당 구간의 원소를 하나씩 더해야 합니다.이 경우 시간복잡도는 구간의 길이인 O(n)이 됩니다.하지만 누적합 ..
· Skils/Kotlin
이전 글[코루틴의 정석] 구조화된 동시성(Chapter7)[코루틴의 정석] async와 Deferred(Chapter5)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-2)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-1)[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1)  개요우리가 사용하고, 개발하는 애플리케이션은 여러 상황에서 에러에 노출됩니다. 예외가 발생했을 때 예외가 적절히 처리되지 않으면 예측하지 못한 방향으로 동작하거나 비정상 종료될 수 있습니다.따라서 안정적인 애플리케이션을 위해선 예외를 적절하게 처리하는 것이 중요합니다. 같은 맥락에서 비동기 작업을 수행하는 코루틴의 예외 처리..
· Skils/Kotlin
이전 글 [코루틴의 정석] async와 Deferred(Chapter5)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-2)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-1)[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1) 개요구조화된 동시성의 원칙이란 비동기 작업을 구조화함으로써 비동기 프로그래밍을 보다 안정적이고 예측 가능할 수 있게 만드는 원칙이다.코루틴은 부모-자식 관계로 구조화함으로써 보다 안전하게 관리되고 제어될 수 있도록 한다. 코루틴을 부모-자식 관계로 구조화하는 방법은 간단하다.부모 코루틴을 만드는 코루틴 빌더의 람다식 속에서 새로운 코루틴 빌더를 호출하면 된다.fun main..
· Skils/Kotlin
이전 글[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-2)[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-1)[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1)개요launch 코루틴 빌더를 통해 생성되는 코루틴은 기본적으로 작업의 결과를 반환하지 않는다.코루틴으로부터 결과를 수신해야 하는 상황이 생길 것이다. 예를 들어 네트워크 통신 이후, 응답을 받아 처리해야 할 경우 네트워크 통신을 실행하는 코루틴으로부터 결과를 수신받아야 한다. 코루틴 라이브러리는 비동기 작업으로부터 결과를 수신해야 하는 경우를 위해 async 코루틴 빌더를 통해 코루틴으로부터 결괏값을 수신받을 수 있도록 한다.launch..
· Skils/Kotlin
이전 글[코루틴의 정석] 코루틴 빌더와 Job(Chapter4-1)[코루틴의 정석] CoroutineDispatcher(Chapter3)[코루틴의 정석] 스레드 기반 작업의 한계와 코루틴의 등장(Chapter1)코루틴의 취소 확인cancel 함수나, cancelAndJoin 함수는 코루틴을 즉시 취소하는 것이 아닌 취소 요청을 보내는 함수이다. 취소 요청을 받은 코루틴이 요청을 확인하는 시점에 비로소 취소가 된다. 만약 코루틴이 취소 요청을 확인하지 않는다면 영원히 취소되지 않는다.그렇다면 이 코루틴들은 언제 취소를 확인할까? 코루틴이 취소를 확인하는 시점은 일반적으로 일시 중단 지점이나 코루틴이 실행을 대기하는 시점이며, 이 시점들이 없다면 코루틴은 취소되지 않는다.fun main(): Unit = r..
재한
'Skils' 카테고리의 글 목록