목록전체 글 (103)
우찬쓰 개발블로그
저자 조세영 코루틴 관련 문서나 책은 많이 읽었지만, 이렇게 깔끔하게 정리된 책은 처음보는것 같다. 덕분에 머리에서 정리가 잘 안되어 있거나 헷갈리던 부분을 다시 되짚어 볼 수 있었다. 아래는 자주 잊어버리는 부분만 정리. 코루틴은 스레드 블로킹을 해결하기 위해 등장했다. 스레드를 양보할 수 있다. - 코루틴을 쓰레드로 보내기 위한 역할 Dispatchers.IO - 쓰레드 수 = JVM 프로세서수 or 64 중 큰 수 Dispatchers.Default - 쓰레드 수 = CPU 코어수 - CPU연산(CPU 바운드 작업)에 주로 사용. - CoroutineName - CoroutineDispatcher - Job - CoroutineExceptionHandler 코틀린 취소는 자식으로 전파됨 예외 thr..
Pull Request 에 Sonar 를 붙여서 새로운 코드의 Test Coverage가 60%가 넘지않으면 fail이 뜨도록 하는 Sonar 설정을 깃헙에 붙여서 쓰고있었다. 잘 쓰고 있던 와중에, 이상한 현상이 하나 발견되었는데, 내 로컬에서는 분명이 문제없게 돌아가는 테스트코드가 Pull Request Sonar를 깃 액션으로 돌리면, 특정 테스트코드의 ViewModel 생성부에 constructor에 Repository하나를 넣지않았다고 계속 컴파일 에러를 뱉는 것이었다. 그래서 pullRequest.yml에 빌드옵션도 넣어보고 캐시도 날려보고 별짓을 다했다. 거쳤던 사고회로 1. 깃 러너캐시가 꼬였나? 2. 내 로컬의 캐시가 꼬여서 안되야할 코드가 돌아갔나?(? 사실 돌아보면 말도안됨) 3. 소..
저자 마이클 투히크, 클라리사 옹 완벽주의는 결국 나의 스트레스의 주 원인이다. 왜 완벽주의를 쫒게 되었을까? 아마 사람들에게 받고 싶은 인정, 필요한 사람이 되기 위해서, 성취감이 좋아서.. 그런데 목표를 타인과 묶게되면 결과를 알기가 너무 어렵다. 이게 결국 스트레스의 주 원인이다. 가치를 쫒으라고 책이 얘기하는데, 가치가 타인에게 있으면 결국 타인을 쫒게된다. 그 타인이 내 질문에 귀찮아하거나 제대로 된 피드백을 주지 않으면 또 상처받는다. 그렇다면 결국 가치를 바꿔야 한다. 나의 행복을 가치로 두고 싶지만 그 행복 조차도 타인과 엮이는 경우가 대다수이다. 가정이 있다면 내 가정을 가치로 두고싶은데, 가정은 아직 꾸리지 못했다. 내 존재가치에 의미부여를 해주는 것에 가치를 두고싶은게 양보할 수 없는..
저자 - 마틴 파울러 추천을 많이 받아서 책은 가지고 있었으나 뒤늦게 읽게 된 책. 회사에서 레거시 코드 리팩토링을 할 일이 많아져서 휴가 기간동안 정독했다. 주니어때 읽었다면 많은 도움이 되었을거 같은데, 지금은 이미 거의 당연한 내용이 대부분이라 술술 훑었다. 개인적으로 생각한 가장 중요한 포인트는 테스트 코드가 꼭 있어야 된다는 점과 가독성을 신경써야한다는 점이다. 특히나 성능에서 조금 손해를 보더라도 가독성에 더 노력을 가하는게 좋다는 점이 매우 공감이 많이 된다. 변수명과 함수명을 지을때에도, 이 코드를 처음보는 개발자가 책읽듯 읽힐 수 있게 코드를 짜는 방향이 제일 좋아보인다.
1년에 한번 정도씩 까먹을때쯤 관련 이슈가 일어나서 그냥 정리해두기로.. LaunchMode Standard (default) - 항상 새로 생성. [push A] A [push B] A - B [push A] A - B - A [push A] A - B - A - A SingleTop - 최상단에 이미 그 Activity가 있을경우 그대로 사용. - 새로 호출시 onCreate 대신 onNewIntent가 호출됨. [push A] #SingleTop A [push B] A - B [push A] #SingleTop A - B - A [push A] #SingleTop A - B - A SingleTask - 같은 taskAffinity의 어떠한 Task stack 내에 이미 그 Activity를 가지고..
적당한 그림을 항상 못찾아서.. 저장용 refer https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-iii-fragments-afc87d4f37fd The Android Lifecycle cheat sheet — part III : Fragments In this series: * Part I: Activities — single activity lifecycle * Part II: Multiple activities — navigation and back stack * Part III… medium.com
저자 - Jorge Castillo Compose 구조를 알고싶어서 정독했다. 아쉽지만 영어 원서여서 좀 독해가 부족했을듯. 몇가지 정리사항 Compose는 리액트JS에서 영감을 받았다. Compose는 UI를 설명하는 트리이다. Composable 함수들은 프로그램 로직을 쓰도록 디자인된게 아니라 노드 트리의 변경사항을 설명하도록 디자인되었다. Compose는 Annotation Processor를 통하지 않음. Kotlin Compiler임 하드코딩 되는 뷰를 위해서는 @ReadOnlyComposable 를 적극적으로 사용할 수 있을듯. Subcomposition은 독립적인 invalidation을 위한것이다. 여러가지 반응형 애니메이션을 위해서 LookaheadLayout 을 사용할 수 있다. Mo..
ViewModel의 테스트 코드를 짜다가 ViewModel.launch에 delay가 있을경우, 시간차 문제로 테스트 코드가 도달하지 못하는 문제를 마주했다. advanceUntilIdle() 를 사용하면 해결될줄 알았건만 애석하게도 테스트코드는 계속 delay()의 다음으로 도달하지 못했다. 곰곰히 생각해보니 결국 Coroutine의 Context 와 관련된 문제일것 같아서 내 코드를 훑어보니, 아무생각없이 @Before에 넣어둔 아래 코드가 문제였다. Dispatchers.setMain(Dispatchers.Unconfined) StandardTestDispatcher() 로 교체 Dispatchers.setMain(StandardTestDispatcher()) 이후 advanceUntilIdle()..
TV보면서 코드짜다가 이것때문에 3시간을 날렸다.. 진짜 멍청하게도 이것때문에 Chat GPT한테까지 물고 늘어지고 있었다.. 해답은 굉장히 가까운 곳에 있었다. 문제는 webViewClient를 세팅 하기전에 loadUrl()을 했던것.. (내가 왜 이런짓을..) 어쨋든 문제는 해결했다 어휴..
저자 - 마르친 모스칼라 자바에서 코틀린으로 넘어가는 사람들중 어느정도 익숙해진 사람에게 추천하고 싶은책. 요즘엔 코틀린으로 시작하는 사람들도 많지만 자바개발을 하다가 코틀린으로 넘어가는 경우가 많은데, 그럴경우 자바스럽께 코틀린을 짜는 사람이 많은것 같다. 그런 사람들에게 특히나 코틀린의 장점을 살리면서 코드를 짤 수 있도록 굉장히 많은 도움을 주는 책이다. 회사의 해외개발자 동료들과 함께 영어로 스터디 하면서 모든 챕터를 꼼꼼히 공부했었고, 개발 능력 향상에 직접적으로 도움을 준 책이다. 다른 안드로이드 개발자들에게 책을 추천한다면 당연코 이 책을 제일 먼저 추천할것 같다.