240227 TIL

DoDoBest

·

2024. 2. 27. 21:44

오늘 학습한 내용

  1. Kotlin In Action 4.4 남은 부분, 9-3
    - JvmStatic, JvmField의 차이와 Companion Object와 의 관계에 대해 정리해봤습니다.
    https://dodobest.notion.site/JvmStatic-JvmField-5c0bbb1d97af4542ac64e4aa89c19e1b
  2.  CS 학습 : 프로그램 실행 과정 fetch-decode-execute
  3. View가 그려지는 과정
    - 원래는 Custom View를 학습하려고 했으나, 자료가 적고 이미 구현되어 있는 View들의 내부 코드를 보면서 학습하기에는 나의 역량이 부족하다. 그래서 View가 그려지는 과정을 먼저 학습해보는 것을 추천 받았고, 아래 공식 문서 내용을 단어 하나 하나 의미 하는 바를 찾아보면서 학습하고 있다.
    https://developer.android.com/guide/topics/ui/how-android-draws
  4. Android 구현 연습
    RecyclerView ViewHolder에 표시해야 할 이미지 url을 전달하고, bind 되면 이미지를 로딩하도록 구현했다. ViewHolder가 직접 처리하는 것은 아니고, 이것을 처리하는 Object 클래스의 함수를 호출하도록 구현했지만, ViewModel에서 처리하는 것이 좋겠다는 피드백을 받았다. 이유는 다음과 같다.
    - ViewHolder에서 이미지를 로딩하는 과정에서, ViewHolder가 속한 View가 죽으면 어떻게 될까? 메모리 leak이 될까 안될까?
    - 코루틴을 이용해 ViewHolder가 사용자에게 보이지 않을 때 이미지 로딩을 중단하는 기능을 넣을 수 있을까?   -> onViewDetachedFromWindow 함수에서 코루틴을 cancel 하면 가능
    - ViewHolder 또한 UI다. UI가 데이터에 직접 접근하는것은 MVVM 패턴에 위배된다. UI는 사용자와의 interaction에 따른 상태를 ViewModel에 전달하고, 바뀐 Model 값에 따라 UI를 업데이트하는 것이 바람직하다.

    따라서 ViewHolder가 아닌 ViewModel에서 이미지를 로딩하도록 Fragment를 Listener 인터페이스로 Adapter에 전달하여 구현하도록 리팩터링하고 있다.

 

CS 학습 관련 튜터님 피드백

현재 내가 학습하고 있는 키워드들은 백엔드 개발자 기준으로 자주 물어보는 내용들이다. 해당 내용들은 기본적인 것이고, 딥한 부분들은 면접관 분들도 자세히는 모른다. 따라서 가볍게 기본적인 내용을 학습하는 데 중점을 둔다.

중요한 것은 Android와 Kotlin이다. 예를 들어 기술면접에서 Race condition을 질문한다면, 단순히 이 개념에 대한 지식을 묻고자 하는 것이 아니다. Android 구현 과정에서 Race Condition을 직접 경험해봤는지, 그래서 어떻게 해결했는지를 물어보는 것이다. CS 학습의 방향이 애매했었는데, 덕분에 분명해진 것 같다.

코루틴 학습에 대한 튜터님 피드백

현재 코틀린 코루틴 책을 학습하고 있는데, 예제를 쳐보고, 내부 코드를 확인하면서 학습하고 있지만 크게 와닿지는 않는다. 처음에는 원래 그렇다고 한다. 그래서 책의 내용을 간단하게 학습하는 느낌으로 읽어보고, Kotlin 공식 사이트의 코루틴 문서를 읽어보면서 책의 내용을 상기시키는 방향으로 하는 방법을 추천받았다.

 

 

오늘은 계획된 시간에 따라 여러 가지를 학습하려고 했는데, 중간 중간 모르는 것이 나왔을 때, 찾아보는 시간이 많이 소요되어 어중간하게 끝난 것들이 많았다. 기존에는 GPT를 이용해 이러한 시간을 단축했었는데, 오늘은 튜터 님들에게 질문을 통해 해결해봤다. 튜터 님들의 답변이 매우 도움이 되었고, 스스로 더 찾아보는 학습 시간도 단축할 수 있었다. 다만, 모르는 것이 나왔을 때마다 질문을 하기는 그래서 1 ~ 2시간 정도 더 찾아보면서 학습 하는 과정을 거쳤으나, 큰 소득을 얻지는 못했다.

그래서, 자료가 충분하지 않은 내용에 대해 학습할 때는 GPT를 이용해 주어진 내용을 완전히 이해하는 것을 목표로 하고, 그래도 구현이나 더 확장된 이해로 이어지지 않으면 튜터 님에게 질문을 할 예정이다.

'TIL' 카테고리의 다른 글

240229 TIL - 학습 방향  (0) 2024.02.29
240228 TIL  (0) 2024.02.28
240226 TIL  (0) 2024.02.26
240220 TIL  (0) 2024.02.21
240219 TIL  (0) 2024.02.19