전체 글

안녕하세요 💻
개요저번 글에는 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..
저는 Android 모바일 개발 직무에 지원했던 지원자입니다.2024년에 Android 개발 직무 지원 공고가 뜨지 않았고, 23년과 25년에 뜬것 보면 매년 채용 공고가 열리는 것 같지는 않다고 느꼈습니다.요즘 채용 시장이 그렇고 특히 Android 개발 직무에 대한 채용이 정말 얼어있는 와중에 소중한 공고였던것 같습니다. 채용 프로세스 일정은 짧고 단순한게 매력적이었습니다. 5단계로 이루어진 채용 프로세스였고, 각 프로세스마다의 기간이 짧아서 지원자입장에서 좋았다고 느꼈습니다. 서류전형서류 전형은 자기소개서로, 다른 기업에 비해 굉장히 친절하다는 느낌을 많이 받았습니다.해당 기업에 대한 인식? 성격의 장단점 등 문항의 제목을 들을 때부터 힘들었던 다른 기업에 비해 지원자를 많이 배려한다는 느낌을 받았..
· 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..
생성패턴팩토리 메서드 패턴은 생성 패턴에 속해 있다.기존 코드의 유연성과 재사용을 증가시키는 다양한 객체 생성 메커니즘들을 제공팩토리 메서드문제물류 관리 앱을 개발하는 상황을 예로 들어보겠습니다.초기 버전에서는 트럭(Truck) 운송만 지원하며, 대부분의 코드는 Truck 클래스에 의존합니다.이후 해상 물류 기능이 요구되면서 Ship 클래스를 추가해야 하지만, 기존 코드가 Truck 클래스와 강하게 결합되어 있어 수정이 어렵습니다.새로운 운송이 추가될 때마다 조건문과 코드 수정이 반복되어 코드가 복잡해지고 유지보수가 어려워집니다.이러한 문제점을 해결하기 위해 팩토리 메서드를 사용합니다.의도팩토리 메서드 패턴은 부모 클래스에서 객체를 생성할 수 있는 인터페이스를 제공하면서, 자식 클래스가 생성되는 객체의 ..