본문 바로가기

안드로이드

컴포즈 스터디 1차 Compose 이해 Compose 이해 구글문서의 Compose 이해 문서를 요약한 내용이다. Compose 의 소개 영상의 도입부에서 컴포즈에대해서 대략적인 소개를한다. Compose는 선언형 UI 프레임워크로 UI가 표시해야할 상태값을 관리하면 이를 컴포즈가 핸들링하는 형식이란다.(데이터 바인딩도 마찬가지 아닌가?) 이는 기존 뷰를 다루는 방식과 굉장히 다르다고 한다. 그래서 그 다른점과 어떤 관점으로 컴포즈를 다뤄야하는지 이 동영상에서 다뤄본다고 한다. 컴포즈 답게 생각하기(Thinking in Compose) 뷰를 사용한다면 xml 작성후 어떤방식으로든 뷰를 찾아와서 setter를 통해서 원하는 값을 지정해준다고 한다.(누가 요즘 이런방식으로해 너무 억까아님? 물론 set하는걸 숨기고 하지만 그건 컴포즈도 마찬가지자.. 더보기
컴포즈 스터디 1차 시작 튜토리얼 정리 Compose 기본사항 시작 앞으로 다룰 내용들은 Android 개발자를 위한 jetpack compose 문서를 학습한 내용이다. 일간 시작점인 compose 기본사항의 항목을 따라가보자 1. 시작 듀토리얼 1.구성 가능한 함수 compose, composable 등등 이제 새로운 용어가 튀어나오니 얼탱이 없는 번역도 같이 튀어나올것이다. 기존에 activity가 활동, fragment 가 조각이였던것 처럼 이제 compose는 구성가능한 이라는 말을쓴다. 구성가능한이라니 그래도 기존것들보다는 선녀인것 같다. 이제 내용을 보자면 compose는 composable함수들을 중심으로 만들어졌다고 한다. 이러한 함수를 사용하면 UI의 구성 과정(요소 초기화, 상위 요소에 연결 등)에 집중하기보다는 앱 모양을.. 더보기
리플렉션으로 DI를 만들어보자 2 부제 자동 DI를 위한 여정이였던것 -> 테스트 편의성만 남음 자 이번 여정도 고난이다. 사실 2편에서는 안드로이드 컴포넌트 생명주기관련 특화기능 테스트 편의성을 위한 처리 힐트의 좋은 부분 뽑아오기(어노테이션을 좀 활용해야할듯 -> 미션임) 창의적인 추가기능 서비스로케이터와 DI에 대한 고찰 이런 주제에 대해서 전부 다루려 했다. 하지만 이중 2번과만 다루게 될것 같다. 왜냐하면 2번만 너무 빡셌기 때문이다. -> 미션 제출날 까지 씨름중 (사실 4번 창의적인 추가기능에 대한 내용이있지만 시간에 쫓겨서 학습을 마무리하지 못하여 당장 블로그 글은 작성하지 못할것같다. 언젠간 작성해야지 키워드는 진정한 자동 DI를 위한여정 Dalvik도 나오고 classLoader 등 첨보는것 투성이의 내용이다.) 일단 .. 더보기
리플렉션으로 DI를 만들어보자 DI 진하게 맛봐볼래? 우아한테크코스의 꽃인 레벨4의 첫 주제는 "DI툴을 직접 만들어보라"였다. 이를 통해 라이브러리가 전지전능한 존재가 아니라 직접 구현해 볼 수 있는 것임을 느끼고 겸사겸사 DI도 진하게 학습하는것이 목표였다. 또한 DI는 개발 전반에 제일 중요한 개념 중 하나이고 안드로이드 진영만해도 Dagger,Hilt(Dagger 기반이지만), Koin, Kodein??(사실 글쓴다고 자료조사 하면서 첨봄) 등등 라이브러리가 정말 많다. 만약 자동 의존성 주입 라이브러리를 손수 빚어본다면 본질을 파악할 수 있으므로 어느 툴을 쓰던 강력하게 사용할수 있으니 바퀴를 한번 만들어보라였다. 사실 취준을 해야겠다고 생각했던 나에게 너무나도 달콤한 주제라서 그냥 넘어갈수가 없어서 글을 쓰게되었다. 들어가.. 더보기
오류처리의 시작은 의미있는 로그와 그것을 부릅뜨고 관찰하는 개발자이다 꼼꼼한 오류처리 달성하셨나요? 우테코에서 진행한 Trip Draw 프로젝트의 제1 목표로 삼은것이 꼼꼼한 오류처리였다. 물론 원래도 오류처리를 좋아하지만 이번에는 혼신을 다해서 진짜 기존까지 했던 기술들을 총동원하자는 목표가 있었다. 물론 우테코 특성상 레벨 3가 끝난 2023.08.22 시점에 Crashlytics 를 통한 모니터링 환경 구축(추가 작업 필요), sealed class 로 경우의 수를 나눈 callAdpater, callAdapter를 거쳐나온 코드의 보일러 플레이트를 제거하며 default handler 를 제공할 수 있는 util 함수 process 밖에 적용하지 못했다.(그래도 process 를 직접 손으로 빚어가며 만든 예쁜 내새끼라 맘에든다.) 그래서 이번 프로젝트의 오류처리에.. 더보기
안드로이드 비동기처리 어떻게하세요?(enqueue vs future) 비동기처리 뭐 쓰세요?(Thread pool은 어떻게 관리할까?) 내가 제일 좋아하는 주제가 나왔다. 내가 제일 좋아하는 "비동기처리, 오류처리, 그리고 레트로핏 라이브러리 까보기" 뭔가 이름이 ‘이브, 프시케 그리고 푸른 수염의 아내’ 같다 ㅋㅋㅋㅋㅋㅋ 어쩃든 주제가 무엇인가? 비동기처리 Thread관리에 따른 성능차이이다. // 이 글을 쓰기 시작한 시작한 날로부터 한달이 넘게 지나도록 학습하고있는 2023/07/10 기록 이 글을 쓰다가 이렇게 오래걸리고 돌아올줄 몰랐는데 이글은 결론적으로 Thread pool의 관리개념과 최적화 관련글이 되어버렸다.(얼탱이가 없네) 이 글 또한 오류처리처럼 방대한 개념을 모았고 학습기간도 오래되었기 때문에 글이 두서없을 가능성이 크다 그러므로 키워드 위주로 뽑아보.. 더보기
레트로핏은 어떤식으로 비동기처리를 할까? 부제: 레트로핏의 Thread pool 관리 및 어떤 Thread가 작업에 관여하는가? 서론 Retrofit은 아주 강력한 라이브러리라고 하는데 내부적으로 어떻게 쓰레드 관리,비동기처리를 하는지 궁금한적이 있지 않는가? Okhttp3를 사용하다가 Retrofit을 사용한 경험이 있는 사람들은 OkHttp에서는 callBack으로 넘겨주는 함수가 worker Thread에서 동작하여 ui를 변경하는 작업을 매번 runOnUiThread()를 붙여서 작업해야 했던 경험이 있을것이다. 신기하게도 Retrofit을 사용한 이후 callback 함수가 Main쓰레드에서 동작해서 runOnUiThread를 안붙여도 되었는데 그 이유는 무엇일까? 또한 enqueue의 인자로 넘겼던 callback 들은 어떤 과정을 .. 더보기
아키텍처 패턴에 대한 고찰 (MVC,MVP) 아키텍처 패턴을 정의할수 있는 사람이 과연 있을까? 우테코를 진행하며 아키텍처 패턴에 대해서 많은 논의를하고 학습을 진행하였지만 각 아키텍처 패턴은 무엇이며 어떠한 조건을 지켜야하는가 라는 정의에 대한 부분은 종교처럼 과연 실체가 있는건가 라는 생각이 계속 들었다. 레벨1을 진행하며 콘솔 프로그래밍 레벨에서 MVC 아키텍처 패턴을 학습하며 리뷰어 분들에게 계속된 피드백을 받았다. 이때까지만 해도 그냥 나의 학습이 부족하니까 모르는거지 하면서 비판없이 수용만 했던것같다.(특히 아키텍처 패턴에 대한것은) 하지만 리뷰어분들 끼리도 의견이 많이 다르고 아무리 구글링해보고 해도 뚜렷이 이것이 기준이다 나를 따르라 같은것이 없었다. 그래서 각 아키텍처 패턴별로 시작점(아키텍처 패턴의 시작)에 대해 뭐가 본질인가를 .. 더보기