2024 연말 블로그 챌린지 - 2회차

By thdev

2024 연말 블로그 챌린지의 2회차 결과를 한 번에 공유합니다.

아래 설명에는 ChatGpt, Gemini, perplexity 사용하여 요약한 내용이라 오류가 있을 수 있음.

2회차 챌린지 결과

주요 주제

  • kotlin
  • Coroutines
  • 아키텍처
  • 트러블 슈팅
  • Compose

kotlin

작성자 skydoves

제목 : A Developer’s Roadmap to Mastering Kotlin Multiplatform

  • Kotlin Multiplatform(KMP)은 비즈니스 로직을 여러 플랫폼에서 공유하면서 플랫폼별 UI를 구현할 수 있는 크로스 플랫폼 개발 솔루션입니다.
  • KMP는 Android, iOS, Desktop, Web 등 다양한 플랫폼을 지원하며, Compose Multiplatform을 통해 UI 코드도 공유할 수 있습니다.
  • KMP 생태계는 Coroutines, Ktor, Room, DataStore 등 다양한 라이브러리를 지원하며, Android 개발자들이 쉽게 접근할 수 있는 장점이 있습니다.

링크 - A Developer’s Roadmap to Mastering Kotlin Multiplatform(영문)

작성자 박명범

제목 : [Kotlin/Java] HashSet, HashMap 내부 구현 살펴보기2 — RBT를 사용한 최적화

  • HashSet는 HashMap을 내부적으로 사용하며, 중복 제거를 위해 hashCode()와 equals() 메서드를 활용합니다.
  • HashMap은 해시 충돌을 처리할 때 separate chaining 기법을 사용하고, 트리 구조인 RBT(Red-Black Tree)로 성능을 최적화합니다.
  • LinkedHashMap은 삽입 순서를 보장하며, Doubly-Linked List 구조로 데이터를 관리합니다.

링크 - [Kotlin/Java] HashSet, HashMap 내부 구현 살펴보기2 — RBT를 사용한 최적화

작성자 정찬호

제목 : Kotlin Value Class With Project Valhalla

  • Kotlin의 Value 클래스는 래퍼 클래스의 오버헤드를 줄여 성능을 개선합니다. 값은 컴파일 시 래핑된 값으로 대체되어 메모리와 런타임 효율성을 높입니다.
  • 프로젝트 발할라는 JVM 성능 향상을 목표로, 객체 식별자와 힙 메모리 비효율성을 해결하는 다양한 기능을 제공합니다.
  • 사용 사례에서는 PurchasePrice 클래스 예시로, 유효성 검사와 함께 최소한의 메모리 오버헤드를 유지하면서 성능을 최적화하는 방법을 설명합니다.

링크 - Kotlin Value Class With Project Valhalla

Coroutines

작성자 권태환

제목 : Kotlin Coroutines Flow의 Cold/Hot flow(Stream)의 데이터 흐름(Data flow) 이해해 보기

  • Flow의 개념: Kotlin의 Flow는 비동기 스트림을 처리하는 방법으로, 데이터를 순차적으로 처리하고 결과를 받는 방식을 제공합니다.
  • Cold와 Hot Flow: Cold Flow는 소비될 때마다 데이터를 새로 생성하며, Hot Flow는 항상 데이터를 발생시키고 소비자가 이를 받을 수 있습니다.
  • 데이터 흐름 관리: Flow는 효율적인 데이터 흐름을 위해 suspend 함수와 결합되어 비동기적으로 데이터를 처리하고 전달합니다.

링크 - Kotlin Coroutines Flow의 Cold/Hot flow(Stream)의 데이터 흐름(Data flow) 이해해 보기

아키텍처

작성자 이지훈

제목 : [Android / Compose] Circuit rememberRetained, produceRetainedState 함수 분석

작성자 직접 요약

  • Circuit은 rememberRetained, rememberRetainedSaveable, produceRetainedState 함수를 통해 다양한 상황에서 상태를 효율적으로 유지하고 관리합니다.
  • 이러한 상태 관리 함수들은 AAC ViewModel과 savedStateHandle을 대체할 수 있으며, Presenter 패턴으로 비즈니스 로직을 분리할 수 있습니다.
  • Rin 라이브러리를 통해 Circuit 전체 도입 없이도 이러한 기능을 활용할 수 있으며, DroidKaigi 앱에서 실제 적용 사례를 확인할 수 있습니다.

링크 - [Android / Compose] Circuit rememberRetained, produceRetainedState 함수 분석

작성자 이태희

제목 : [Android] MVI 패턴에 대한 고찰

  • MVI 패턴은 UI 상태 관리에서 데이터 흐름을 단방향으로 처리하여 복잡성을 줄이고 유지보수를 용이하게 만듭니다.
  • UI 상호작용을 명확히 정의하고 상태를 관리하는 데 유리하며, 복잡한 애플리케이션에 적합합니다.
  • MVP, MVVM과 비교할 때, MVI는 UI의 일관성을 높이고 오류를 줄이기 위한 효과적인 방법으로 강조됩니다.

링크 - [Android] MVI 패턴에 대한 고찰

트러블 슈팅

작성자 류기민

제목 : Content access is protected by token : Sonatype OSSRH 401 배포 문제 해결법

  • Sonatype OSSRH의 “401 Content access is protected by token” 오류는 Maven과 같은 도구에서 배포 시 인증 토큰이 없을 때 발생합니다. 이는 보안을 강화하려는 Sonatype의 정책 변경 때문입니다​.
  • 문제를 해결하려면 Sonatype 계정으로 로그인하여 사용자 프로필에서 인증 토큰을 생성하고, 이를 Maven의 settings.xml 파일에 추가해야 합니다​.
  • 관리자는 필요시 “User Tokens” 기능을 비활성화하여 일반 사용자명과 비밀번호로도 인증할 수 있도록 설정을 변경할 수 있습니다​.

링크 - Content access is protected by token : Sonatype OSSRH 401 배포 문제 해결법

Compose

작성자 김수현

제목 : LazyColumn 작동 방식 이해하기

  • LazyColumn은 Jetpack Compose에서 대규모 데이터 목록을 효율적으로 표시할 수 있는 구성 요소로, 화면에 보이는 항목만 렌더링합니다.
  • LazyListScope DSL을 사용하여 항목을 정의하고, item()이나 items() 함수를 통해 목록 항목을 추가할 수 있습니다.
  • LazyColumn과 LazyRow를 사용하여 수직 및 수평 스크롤 가능한 목록을 만들 수 있으며, 복잡한 레이아웃에서도 성능을 최적화할 수 있습니다

링크 - LazyColumn 작동 방식 이해하기

작성자 강경완

제목 : Compose 컴포넌트 성능 개선: 람다와 Canvas 활용법

  • LazyColumn 최적화: key와 contentType을 활용하여 리스트 항목의 불필요한 recomposition을 방지하고 성능을 극대화하는 방법을 다룹니다​.
  • 상태 관리 문제: 무한 루프와 같은 상태 업데이트 문제를 피하기 위해 remember와 runningReduce를 활용하는 방법을 설명합니다​.
  • 람다 함수 최적화: 람다 사용 시 발생할 수 있는 불필요한 recomposition을 줄이는 기법을 소개합니다​.

링크 - Compose 컴포넌트 성능 개선: 람다와 Canvas 활용법

Prev

Next

Tags: blog