본문 바로가기

전체 글12

[Android] 몇 가지 안드로이드 패턴들 1. Service안드로이드 Service는 3가지가 존재한다. 포그라운드, 백그라운드, 바인드된 서비스 바인드된 서비스는 액티비티나 프래그먼트에서 마치 ViewModel처럼 특정 기능을 직접 호출하고, 결과를 받을 수 있는 구조로 구현된다.생명주기는 보통 애플리케이션 전체 생명주기에 맞추거나, 특정 화면의 생명주기와 연동해 관리할 수 있다.주로 UI와 긴밀하게 상호작용해야 하는 로직에서 사용된다. ex)음악 재생, 센서 데이터 처리 등. 포그라운드 서비스는 시스템에 의해 강제 종료될 확률이 낮고, 사용자가 인지할 수 있도록 항상 알림(Notification)을 표시해야 한다.여러 컴포넌트(액티비티, 프래그먼트, 브로드캐스트 리시버 등)에서 동시에 연결될 수 있으며, 서비스 자체의 생명주기는 별도로 동작.. 2025. 8. 24.
[Kotlin] suspend 함수에서의 Result는 옳은 패턴인가 go, rust 언어와 같은 경우, 예외를 다루는 try-catch문은 없고 항상 함수의 결과로 실패를 명시적으로 다루게 만든다. 코틀린에서도 예외를 함수형처럼 다룰수있는 Result가 존재한다. 종종 우리는 domain 레이어에서 다음과 같은 코드를 본다.interface UserRepository{ suspend fun getUser(): Result suspend fun updateUser(params:UpdateUserParams): Result} 이와 같은 처리는 다음과 같은 장점이 있다.1. 예외가 발생가능하다는 것을 명시적으로 표시하는 계약으로 작동2. 해당 프로젝트의 표준 패턴으로, 예외처리 누락을 명시적으로 막아 ANR 가능성을 낮춤 하지만 코틀린 코루틴에서는 적용되지 않는 특.. 2025. 7. 10.
[Android] 왜 Repository에서 Flow 패턴을 사용하는가 코드를 수정하면서 느낀점들왜 Repository에서 단일 조회만 하더라도 Flow를 노출하는가? 에 대한 대답왜 리액티브 프로그래밍인가XML 기반의 메인액티비에 로직이 많은 코드를 수정하면서코틀린에서도 단순 suspend함수가 아닌 flow를 사용하는지를 체감하게 되었다.단, 여기서 flow는 핫스트림을 노출해야한다. 1. 기존 명령형 시스템의 한계UI 상태변경시 모든 변경점에서 상태값을 업데이트해야한다.즉, 현재 액티비티가 아닌, 다른 프래그먼트에서 값을 수정시, 메인액티비티의 콜백을 사용해야한다.이로인한 보일러 플레이트코드 과다, 동일한 코드의 복붙으로 관리포인트가 증가한다. 2. 선언형 접근의 이점무엇을 보여줘야하는가(What)를 정의만 하면, 어떻게(How)는 프레임워크가 처리한다.불변성의 개념과.. 2025. 5. 18.
[Android] Ktor Client에서 Jwt 인증 로직 구현하기 1. 서론OkHttp+Retrofit2 조합이 안드로이드에서 보편적으로 쓰이는데,Ktor Client를 사용해보면서, 코드작성시 좀더 코루틴 친화적으로 구현이 가능해서 편했다. 인터셉터부분을 ktor에서 처리하면서 배운 내용들이 있어 작성한다. 2. 프로젝트 설정Ktor CIO 및 k-serialization을 추가한다. [versions]ktor = "3.1.2"kotlin = "2.0.10" [libraries]kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }ktor-client-core = { group = "io.ktor", name = "ktor-client-core".. 2025. 5. 5.
[Kotlin] 코틀린 코루틴과 Flow 코루틴이 안드로이드 비동기프로그래밍에서 표준으로 쓰이고 있다. 코루틴에 대한 정리태초에 콜백이 있었다.콜백코드는 어떻게 구현되어있고 왜 콜백지옥이라고 표현하는가?코틀린에서의 단순한 예시를 보자 fun requestApi(cb: ApiResultCallback) { Thread { try{ val res = api.request() // 블로킹 호출 cb.success(res) }catch(e: ApiException){ cb.fail(e) } }.start()}해당 함수를 호출하는곳에서 다른쓰레드를 만들어서 해당 쓰레드에서 블로킹을 진행하기 때문에이 함수를 호출하는 외부에서는 비동기로 진행되고 블로킹이 .. 2025. 4. 12.
[Java] JVM 밑바닥까지 파헤치기 후기 2.5회독을 통해 읽었다.책을 읽을때마다 어려워서 넘겼던 내용들이 보이기 시작하고, 이해가 되기 시작했다.CS적인 측면에서 설명이 좋다 새로운 시야를 알게해주는것 같다. 1장은 PASS 2장런타임 데이터 영역 :- PC 레지스터 : 스레드 복원에 사용, 자바메서드의 줄번호 표시기- 가상 머신 스택 : 스레드와 라이프사이클이 같다. 데이터타입,객체참조,반환주소타입. 지역변수테이블은 컴파일 시점에 고정된다. 슬롯은 32비트 단위- 네이티브 메서드 스택- 힙 : 모든 스레드가 공유. 인스턴스, 배열 저장. 할당 효율을 위해 스레드 로컬 할당버퍼 여러개 존재. 논리적으로 연속- 메서드 영역(런타임 상수 풀) : 모든 스레드가 공유. 타입정보, 상수, 정적 변수, JIT의 코드 캐시  - 런타임 상수 풀 : 클래.. 2025. 2. 25.
[책] Android 개발자 도서 추천 회사 취업 이후 읽은 책들 안드로이드는 관련 도서가 정말 적고, 자료들이 빈약하다고 느꼈다. Best ⭐️⭐️⭐️⭐️⭐️핵심만 골라 배우는 안드로이드 스튜디오- 전체적으로 쉬운내용으로 60챕터이상이 구성되어있었다.- XML은 건너뛰고 시스템동작 위주로 읽었다.- 초보자의 입장에서 내부동작의 편린을 엿볼 수 있는 내용으로 구성되어있고 난이도 조절이 매끄럽게 되어있다. 안드로이드 아키텍처, AOT, 이벤트큐로 구현되어 있는 안드로이드 이벤트, 4대컴포넌트, 안드로이드 생명주기, 프래그먼트 등무엇을 공부해야 할지를 알 수 있었다.(2025/01/11 ~ 2025/01/12) 코틀린 코루틴- 대학생때 2회독하고, 취업하고 나서도 회사에서 다시 신청해서 봤다.- 코틀린의 작동방식이나, 내부 구현을 정리하기 정말 .. 2025. 2. 25.
[책] 인프라/데브옵스 도서 목록&후기 인프라 관련한 도서 모음집 인프라 관련 책들은 생각보다 책의 종류도 적고, 어려운 책이 많은 것 같습니다. CI/CD, AWS, 경험담인 책들이 많고전반적으로 난이도가 높다고 생각합니다. G.O.A.T. ⭐️⭐️⭐️⭐️⭐️⭐️⭐️컴퓨터 네트워킹 하향식 접근 (N회독)이 책을 한 5번은 대출했다가 반납했던것 같다.쿠버네티스 공부를 하다가, 기초가 너무 부족한거 같아서 동기부여를 빡 받은 상태로 읽을 수 있었다. DNS 실전 교과서 책을 읽고나서 읽으니 확실히 자신감이 생겼다.1,2,3장은 2회독임에도 불구하고 다시 읽는데 속도가 너무 안나왔다.하루에 이 책만 공부한다는 마음가짐으로 공부해도 10~20쪽 읽으면 너무 힘들었다.다시 읽으니 전에는 보이지 않던 지식이 보여서 좋았다. 네트워크를 공부할때는 반드시.. 2025. 1. 2.
[책] 백엔드 개발자 도서 목록&후기 백엔드를 공부하며 읽은 책들 모음집.마음속에 여운을 남겼던, 끝까지 읽었던 책들입니다.여러책들을 읽을수록 더닝크루거가 생기지 않게 도와줘서 좋았습니다. 단 두가지의 책만 읽을 수 있다고 한다면, RealMySQL과 데이터 중심 애플리케이션 설계을 선택하겠습니다.소장하고 싶은 책들7⭐️ 책 모두구글엔지니어는 이렇게 일한다.개발자를 위한 레디스스프링 배치 완벽 가이드엘라스택 스택 개발부터 운영까지AWS 교과서262가지 문제로 정복하는 코딩 인터뷰 in Java G.O.A.T. ⭐️⭐️⭐️⭐️⭐️⭐️⭐️Real Mysql 8.0 (2.5회독)mysql을 알려주는 너무 좋은책. 한국저자인 것이 너무 고맙다. Mysql의 작동 원리, MVCC를 통한 잠금없는 일관된 읽기, 데이터풀, 트랜잭션의 언두로그,리두로그,.. 2025. 1. 1.