Munseong's dev;

Written by@Munseong Cheon
좋은 코드로 좋은 제품을 만드는 것을 추구하는 안드로이드 개발자 천문성입니다.

GitHubLinkedIn

[Android] Okio 동작 방식 이해하기

개요 Okio: Source, Sink Okio: Buffer Okio: Segment 쓰기 동작 방식 읽기 동작 방식 데이터 이동 방식 성능 비교 개요 안드로이드 앱 개발시 흔하게 사용하는 네트워크 라이브러리인 retrofit, okhttp와 serialize 라이브러리인 moshi는 모두 내부적으로 okio를 기반으로 IO 스트림을 처리한다. ja…

[Android] MVI 아키텍처로 마이그레이션 및 설계 살펴보기

0. 배경 1. mvvm에서 mvi로 2. 기본 MVI 패턴 살펴보기 3. Reducer 4. Action Processors 5. 결론 0. 배경 작년에 신규 프로젝트를 시작함에 따라 아키텍쳐를 조사하였다. 기존에는 MVVM + 클린아키텍처로 적용하였는데, 앱의 요구사항이 늘어남에 따라 상태관리에 점점 한계를 느끼게 되었다. 아키텍처 조사 중에 MVI에…

[Kotlin] K2 Compiler란?

1. Compiler란 2. Kotlin Compiler란 3. Kotlin Compiler Frontend 3.1 Old Frontend 3.2 New Frontend 3.3 Desugaring 4. Kotlin Compiler Backend 4.1 Old Backend 4.2 New Backend 5. K2 Compiler 1. Compiler란 ko…

[회고] 2023년의 로그

블로그 처음 블로그를 만들었던건 21년도였던거 같다. 열정을 가지고 내 브랜딩이라는 생각으로 도메인도 사고, 템플릿을 이용해 나의 블로그를 만들었다. 하지만 바쁘다는 핑계로 방치해두다가 23년부터 다시 시작하였다. 1년이 지난 지금 약 10개 정도의 글이 포스팅 되었다. 블로깅을 놓지 않고 꾸준히 했다는거에 의의를 둔다. 예전에는 글을 쓰는것 자체가 …

[Book] Real MySQL 8.0 1권 리뷰

📚 책을 읽게 된 계기 작년 하반기부터 스프링으로 서버 개발에 투입되었다. 이후로 앱 개발과 서버 개발을 2:8 정도로 업무를 진행하고 있는것 같다. 안드로이드 개발 시 로컬 디비를 사용할때느 SQLite를 추상화한 RoomDB를 사용하였고, 스프링 서버 개발시 JPA를 사용한다. 결국 앱이던 서버든 객체 지향 언어를 사용해서 개발한다면 거의 필수적으…

[Kotlin] Inline Function에 대해 이해해보기

Inline Function이란 Inline Function의 제약 CrossInline 코루틴과 Inline Function Inline Function이란 inline 키워드에 대해서는 개발을 하다보면 라이브러리 내부에서 많이 볼수 있습니다. 흔하게 쓰는 collection내부에서도 사용된 함수를 많이 볼수 있습니다. inline 함수를 알아보기 …

[인프라] terraform으로 cloud function 배포하기

테라폼이란 테라폼 파일 정의하기 공통 코드 관리하기 후기 테라폼이란? Terraform은 사람이 읽을 수 있는 구성 파일을 사용하여 클라우드,온프레미스 resource 인프라를 코드로 관리할 수 있는 도구이다. GCP나 AWS와 같은 곳에서 서비스를 만들 때 웹 콘솔에서 마우스 클릭으로 구성을 했을 것이다. 또는 커맨드 라인 툴로 명령어를 치며 관리를 했…

[Kotlin] runTest로 코루틴을 테스트 해보자

RunTest runTest는 테스트 코드를 단일 스레드에서 실행할 수 있게 해주는 함수이다. 테스트 코드에서 suspend 함수를 호출하기 위해서는 코루틴 블록에서 호출해야 한다. Coroutine 1.6 이전 버전에서 코루틴을 테스트하기 위해서 runBlockingTest를 통해 테스트를 했었지만 1.6 이후 부터는 runBlockingTest가 De…

[Android] SSL Pinning을 왜 적용해야 할까?

최근 회사에서 SSL Pinning을 우회해서 패킷을 캡쳐하는 방법에 세미나를 들었다. 세미나를 들으면서 https, ssl 등 개념에 대해 부족함을 느꼈다. 부족한 개념을 채우고, ssl pinning을 해야하는 이유에 대해 정리하고자 글을 작성한다. ssl pinning에 대해서 먼저 한줄로 소개하자면 앱과 서버가 통신할때, 중간자 공격(mitm)…

[Android] Macrobenchmark로 앱 성능 측정하기

Macrobenchmark란? StartUp, UI 인터렉션, 애니메이션 등 사용자와 end-to-end 요소에 대한 성능을 측정해주는 도구 코드를 직접 호출하지 않고, UiAutomator를 통해 터치, 클릭, 스와이프 등 사용자와 인터렉션을 하듯이 성능을 측정 앱 시작, 프레임 시간, 추적된 코드 섹션을 직접 측정하도록 애플리케이션의 컴파일, 시작, …