8주간 4개의 글을 작성하는 2024 연말 블로그 챌린지의 1회차 결과를 한번에 공유합니다.
아래 설명에는 perplexity을 사용하여 요약한 내용이라 오류가 있을 수 있음.
크게 회고, 개발관련, 설계와 관련, 딥다이브로 나눠집니다.
회고
작성자 류기민
- 퇴사 결심과 의미: 9년간의 회사 생활을 마치며, 개인의 주관적인 삶을 찾는 계기로 삼음.
- 이직 준비 과정: 명확한 비즈니스 모델과 큰 사용자 기반을 갖춘 회사를 목표로 지원 준비, 면접 실패와 자기 반성 과정.
- 새로운 기회와 배움: 여러 실패를 겪으며 면접 준비 방식을 개선, 스스로의 역량을 높이며 더 나은 회사를 찾기 위해 노력.
- 링크 - (이직 회고 #1) 첫 퇴사, 그리고 첫 이직
작성자 세렌시스
- 이 글은 세렌시스님의 캠핑 일대기를 담고있습니다.(수동 요약)
- 링크 - 나의 캠핑 일대기
개발관련
작성자 skydoves
- 최근 안드로이드 개발자 면접 질문에 자주 출현하는 면접 질문 9가지 (안드로이드, 코틀린, 컴포즈 각각 3개씩)를 다루고 있습니다.(직접 요약)
- 아래는 perplexity에서의 요약
- 이 글은 안드로이드 개발자 면접에서 자주 나오는 상위 9개의 질문들을 소개하고 있습니다.
- 각 질문에 대한 적절한 답변과 함께 관련된 안드로이드 개발 개념들을 설명하고 있을 것입니다.
- 이 정보는 안드로이드 개발자 지원자들이 면접 준비를 하는 데 도움이 될 수 있는 중요한 내용을 담고 있을 것입니다.
- 링크 - Top Nine Android Developer Interview Questions You Should Know(영문)
작성자 태환
- 이 글은 개발에서의 데이터 흐름에 대해 다루고 있으며, 주요 내용은 다음과 같이 요약할 수 있습니다:
- 함수의 blocking과 nonblocking 개념을 설명하고, 코루틴을 활용한 비동기 처리 방법을 소개합니다.
- Observer 패턴과 스트림을 결합한 데이터 흐름 개념을 설명하며, HotFlow/ColdFlow, RxJava, StateFlow, LiveData 등의 개념을 비교합니다.
- 단방향 데이터 흐름(UDF)의 개념을 소개하고, 이를 아키텍처와 서버 통신에 적용하는 방법을 설명하며, 리액트의 리덕스 개념과의 유사성을 언급합니다.
- 링크 - 데이터 흐름(Data flow)을 이해해 보는 데 있어 필요한 것은? 짝퉁 개발자처럼 논하기
아키텍처
작성자 이지훈
- 이 글은 Slack에서 개발한 MVI 프레임워크인 Circuit에 대해 소개하고 있으며, 주요 내용은 다음과 같이 요약할 수 있습니다:
- Circuit은 Compose를 기반으로 한 Kotlin 앱 개발 프레임워크로, AAC ViewModel 대신 Presenter를 사용하며 자체 네비게이션 시스템을 제공합니다.
- Circuit의 장점으로는 보일러플레이트 코드 감소, 직관적인 네비게이션, 테스트 용이성 등이 있지만, 기존 개발 방식과의 차이로 인한 학습 곡선과 마이그레이션 비용이 높을 수 있습니다.
- 글쓴이는 Circuit을 실제 프로젝트에 적용해보며 경험한 장단점을 공유하고, AAC ViewModel을 사용하지 않는 새로운 개발 접근 방식에 대한 견해를 제시합니다.
- 링크 - [Android / Compose] Circuit 찍먹 해보기
작성자 정찬호
- 이 글은 MVVM에서 MVI로의 전환에 대해 다루고 있으며, 주요 내용은 다음과 같이 요약할 수 있습니다:
- MVVM의 핵심인 View와 비즈니스 로직의 분리를 설명하고, 비대한 ViewModel 문제와 해결 방법을 소개합니다.
- 우아한 테크코스의 자동차 경주 게임 과제를 MVI 패턴으로 구현한 예시를 제시하며, 상태와 이벤트 정의, StateReducer 활용 등을 설명합니다.
- MVI 구현을 돕는 Orbit 라이브러리의 주요 개념과 사용법을 소개하고, intent와 orbit 함수의 내부 동작 원리를 분석합니다.
- 링크 - MVVM에서 MVI로
설계와 관련한
작성자 김수현
- 이 글은 Jetpack Compose에서 UI 컴포넌트를 조합하는 방법에 대해 다루고 있으며, 주요 내용은 다음과 같이 요약할 수 있습니다:
- 조건문을 사용한 UI 구성의 한계를 설명하고, Slot 패턴과 Compound Component 패턴을 소개하여 더 유연하고 재사용 가능한 UI 구조를 만드는 방법을 제시합니다.
- Slot 패턴은 컴포넌트의 특정 영역을 외부에서 구성할 수 있게 하고, Compound Component 패턴은 상태 관리와 UI 표현을 분리하여 복잡한 UI를 효과적으로 구성할 수 있게 합니다.
- 각 패턴의 장단점을 설명하며, 상황에 따라 적절한 패턴을 선택해야 하고, 때로는 단순한 조건문이나 중복을 허용하는 것이 더 나은 선택일 수 있다고 결론짓습니다.
- 링크 - Jetpack Compose UI 조합(Composition)하기 심화
작성자 이태희
- 이 글은 “Effective Kotlin” 책을 읽고 Jetpack Compose에 적용한 내용을 다루고 있으며, 주요 내용은 다음과 같이 요약할 수 있습니다:
- 가변성 제한과 불변성 유지의 중요성을 강조하며, Compose의 Snapshot 시스템이 이를 어떻게 지원하는지 설명합니다.
- 지식의 반복을 피하고 단일 책임 원칙(SRP)을 준수하는 방법을 소개하며, Compose의 Slot API를 활용한 유연한 UI 설계 방법을 제시합니다.
- 추상화를 통한 코드 보호와 상태 관리의 중요성을 강조하며, StateFlow와 mutableStateOf를 활용한 Compose에서의 효과적인 상태 관리 방법을 설명합니다.
- 링크 - Effective Kotlin 읽고 Compose에 적용하기
딥다이브
작성자 박명범
- 이 글은 Java/Kotlin의 HashSet과 HashMap의 내부 구현에 대해 상세히 설명하고 있으며, 주요 내용은 다음과 같이 요약할 수 있습니다:
- HashMap은 해시 테이블을 기반으로 구현되며, 해시 충돌 시 체이닝 방식을 사용하고 버킷 크기에 따라 링크드 리스트나 트리 구조로 데이터를 관리합니다.
- get(), put(), remove() 등의 주요 메서드들의 내부 동작 원리를 코드 레벨에서 상세히 설명하며, 이 과정에서 equals()와 hashCode() 메서드의 중요성을 강조합니다.
- HashMap의 성능 최적화 기법으로 버킷 크기 조정(resize)과 트리 구조 변환 등을 소개하며, 이를 통해 효율적인 데이터 관리와 검색이 이루어짐을 설명합니다.
- 링크 - [Kotlin/Java] HashSet, HashMap 내부 구현 살펴보기