본문 바로가기

전체 글15

[Kotlin] 코틀린 코루틴 정리 코루틴이 안드로이드 비동기프로그래밍에서 표준으로 쓰이고 있다. 코루틴에 대한 정리태초에 콜백이 있었다.콜백코드는 어떻게 구현되어있고 왜 콜백지옥이라고 표현하는가?코틀린에서의 단순한 예시를 보자 fun requestApi(cb: Callback) { val th = Thread { val res = api.request() // 블로킹 호출 cb.success(res) } th.start()}해당 함수를 호출하는곳에서 다른쓰레드를 만들어서 해당 쓰레드에서 블로킹을 진행하기 때문에이 함수를 호출하는 외부에서는 비동기로 진행되고 블로킹이 되지 않는다. 함수를 호출한 흐름과 다른 흐름에서 콜백이 실행된다. 콜백 기반 비동기 프로그래밍의 근본적인 문제는 제어 흐름의 역전(.. 2025. 4. 12.
[Android] Jetpack Compose에서 Props drilling을 피하는 패턴 실무 코드를 보면서 고민한 내용들안드로이드에서도 JetpackCompose를 사용하면서점차 선언형 프로그래밍이 대세로 들어섰다. 그러나, 복잡한 도메인이나 구조를 짜면서 Callback을 넘겨주는 상태호이스팅을 사용할때,호이스팅이 항상 정답은 아니다. 도메인이 복잡하거나, 요구사항으로 인해 로직구조가 여러군데서 파편화되거나,같은 화면인데, 컴포넌트간 거리가 먼경우, props drilling이 매우 깊어질 수 있다. 즉 컴포즈함수를 5~7군데 이상이나 들어가는 복잡하고 유지보수가 어려운 구조가 생길 수 있다. 이에 대한 해결법은 무엇이 있을까?1. 호이스팅을 그대로 사용// 최상위 컴포저블@Composablefun ParentScreen(viewModel: ParentViewModel = viewMod.. 2025. 4. 11.
[Android] 선언형과 리액티브 프로그래밍을 왜 사용하는가 코드를 수정하면서 느낀점들왜 리액티브 프로그래밍인가XML 기반의 메인액티비에 로직이 많은 코드를 수정하면서코틀린에서도 단순 suspend함수가 아닌 flow를 사용하는지를 체감하게 되었다. 1. 기존 명령형 시스템의 한계- UI 상태변경시 모든 변경점에서 상태값을 업데이트해야한다.- 즉, 현재 액티비티가 아닌, 다른 프래그먼트에서 값을 수정시, 메인액티비티의 콜백을 사용해야한다.- 이로인한 보일러 플레이트코드 과다, 동일한 코드의 복붙으로 관리포인트가 증가한다. 2. 선언형 접근의 이점- 무엇을 보여줘야하는가(What)를 정의만 하면, 어떻게(How)는 프레임워크가 처리한다.- 불변성의 개념과 함께 사용되므로, SideEffect에 대해서 걱정할 필요가 없어진다.   특히 체감되는 부분은 다음 예제와 같.. 2025. 4. 7.
[2025 SK m&s 인턴십] 안드로이드 최종 합격 회고 25년 1월부터 2월까지 2개월간 진행한 TMAP AUTO 과제 회고. 인턴기간 동안 총 3개의 과제를 수행했다.개발과제1, 알고리즘, 개발과제2. 인턴십 내내 불안감을 안가지고 싶어도 마음속에 계속 안고갔었다.채용연계형 인턴십이라는 부담x100 아래서 근무하는 모두가 잘되기를 바란다.이력서이력서에는 크게학력/경력/활동/논문/수상/자소서/추가자료들로 구성되어있었고추가자료에는 평소에 원티드에 작성하는 이력서를 첨부했다.지금 다시 이력서를 보면 너무나 부끄러운 내용들밖에 없는데,서류에서 학력,학점,자격증들을 통해서 붙은게아닐까라는 생각을 해본다.솔직하게 질문에 답변했고, 멋있는 말들로 쓰지 못해서 아쉽기도 하다.SKCTncs문제들로 시간압박이 매우 심한 상태에서 여러영역을 풀었다.앞에 3개 주제에서는 뒷문제.. 2025. 3. 7.
[Java] JVM 밑바닥까지 파헤치기 후기 2.5회독을 통해 읽었다.책을 읽을때마다 어려워서 넘겼던 내용들이 보이기 시작하고, 이해가 되기 시작했다.CS적인 측면에서 설명이 좋다 새로운 시야를 알게해주는것 같다. 1장은 PASS 2장런타임 데이터 영역 :- PC 레지스터 : 스레드 복원에 사용, 자바메서드의 줄번호 표시기- 가상 머신 스택 : 스레드와 라이프사이클이 같다. 데이터타입,객체참조,반환주소타입. 지역변수테이블은 컴파일 시점에 고정된다. 슬롯은 32비트 단위- 네이티브 메서드 스택- 힙 : 모든 스레드가 공유. 인스턴스, 배열 저장. 할당 효율을 위해 스레드 로컬 할당버퍼 여러개 존재. 논리적으로 연속- 메서드 영역(런타임 상수 풀) : 모든 스레드가 공유. 타입정보, 상수, 정적 변수, JIT의 코드 캐시  - 런타임 상수 풀 : 클래.. 2025. 2. 25.
[책] Android 개발자 도서 추천 안드로이드 신입으로 회사에 입사하며,현업 업무에 필요하여서 읽게된 책들 모음집. 안드로이드는 관련 도서가 정말 적고, 자료들이 빈약하다고 느꼈다.대부분의 자료들이 5년전~10년전 자료들이 많고 양질의 자료를 찾기 힘들었다. 공부하려면 무조건 공식문서를 참고하자..Best ⭐️⭐️⭐️⭐️⭐️핵심만 골라 배우는 안드로이드 스튜디오- 전체적으로 쉬운내용으로 60챕터이상이 구성되어있었다.- XML은 건너뛰고 시스템동작 위주로 읽었다.- 초보자의 입장에서 내부동작의 편린을 엿볼 수 있는 내용으로 구성되어있고 난이도 조절이 매끄럽게 되어있다. 안드로이드 아키텍처, AOT, 이벤트큐로 구현되어 있는 안드로이드 이벤트, 4대컴포넌트, 안드로이드 생명주기, 프래그먼트 등무엇을 공부해야 할지를 알 수 있었다.(2025/.. 2025. 2. 25.
[Android] 아키텍처 정리 안드로이드는 유독 react, flutter와는 아키텍처구조가 참 특이하다. 안드로이드 특성상 웹이랑은 코드 작성 방식도 다르고, 통신을 다루는 방법, DI, class와 같은 것들이 너무나 다르다. 가장 큰 차이를 만들어내는 이유는 싱글쓰레드와 멀티쓰레드로 인한 구조적 차이 때문인것 같다. 궁금했던 점들을 적어본다. repository 패턴의 network vs local_db의 추상화안드로이드에서는 repository로 외부를 인터페이스로 막아버리고 내부에서 remoteDatasource, localDatasoure를 두고 또다시 remote에서는 retrofit, local에서는 room을 쓰는 경우가 많다.클래스가 과도하게 많다고 느껴졌다. 내가 생각하는 해당 구조의 단점은 다음과 같았다. ✅ .. 2025. 1. 31.
[Android] Navigation 정리 프론트엔드 입문이나 프로젝트 세팅에서 가장 중요한거는 네비게이션 세팅이라고 생각한다. 2025년 현재 안드로이드 컴포즈에서 가장 기본적인 네비게이션에 필요한 개념들은 다음과 같다.- NavController- NavBackStackEntry- SavedHandleState- ViewModel  📌 ViewModel과 SavedStateHandle의 관계 1. ViewModel은 기본적으로 프로세스 종료 시 유지되지 않음 • ViewModel은 구성 변경(Configuration Change)(예: 화면 회전) 시에도 유지되는 특징이 있다. • 하지만, 안드로이드 시스템이 앱을 강제로 종료했다가 다시 복원하는 경우 ViewModel도 사라짐. 1. 사용자가 홈 버튼을 눌러 앱을 백그라운드로 보냄2. 안드.. 2025. 1. 30.
[회고] 2024년 취준과 회고 ✏️ 1. 공부백엔드1월~올해 1월부터 백엔드에 본격적으로 입문하였다.백엔드 첫 시작은 작년 11월 해커톤에서 무작정 백엔드로 참가해서 나 스스로에게 일정압박을 걸고 학기 중에 공부를 했다.기초지식들은 영한님의 인프런 강의로 배웠고, 시간이 부족하다고 생각해 3배속으로 들었다.2024년 부터, 스프링부트 공부를 본격적으로 시작해서여러 프로젝트를 하면서 코드카타들을 완성해갔던거 같다.EC2로 배포하는거도 이번에 재대로 알게되었다.6월~여름방학때, 동아리에서 RealMySQL 스터디를 모집했다.총 4명이였고, 2달간 주당 2번씩 만나서, 한 차시 당 70페이지 정도 읽고, 토론식으로 스터디를 운영했다.19시에 만나서 맨날 막차시간때까지 2,3시간 정도 정말 몰입해서 했던거 같다.스터디원들과 정말 열심히 했고.. 2025. 1. 3.