MVVM Movie App with Coroutine, LiveData, Retrofit 2 & Dagger-Hilt
https://www.youtube.com/watch?v=mGziXLbKAy4
https://github.com/IsaiasCuvula/tv_show_app_details
이번에 유튜브 보고 따라해본 샘플앱!
근데, 코루틴은 없었던거 같은데..? 아! 뷰모델에서 레트로핏 통신하는거에서 하나 쓰긴하구나..
- 영상 40분
- 따라하는데 2시간
- 별점 4점 why? 아주 아주 간단한 앱이라서, 영상에서 설명이 없음에도 뭔가.. 편안하고 좋았다, 여기에 설명까지 좀 해줬으면 5점..?
초간단 mvvm을 배울 수 있었다.
(별점 쓰는거 귀찮아서 일단 이렇게 써둠.)
(블로그 열심히 쓰려면 어떻게 해야할까..;;)
===================================
깨달은거
=============
// ‘Callback’을 카멜표기법으로 안쓰는걸 보니까 합성어가 아니고 한 단어인가보다.
// 이 사람은 리싸뷰어댑터 구현을 홀더 먼저 쓰고 자잘한거 넣고, 그다음에 어댑터 구현을 하는데,
어떻게 보면 이렇게 작성하는게 순서대로 읽어지는거니 얼추 유용하겠다?
// 노션에서 마크다운, 명령어 비활성화 하는거는 어떻게 할까..
-> 없는듯
==================================
ChatGpt에게 물어본거
================
// Q. 노션 관련 질문이 있습니다.
안드로이드 스튜디오 코드 편집기에서 소스코드를 노션으로 붙여넣기하면,
노션에 붙여넣은 텍스트가 편집기에 있는 글자색과 배경으로 스타일이 입혀지는데, 이거는 노션에서 글자색이랑 글자배경 수정도 안되는데, 스타일 안 입혀진채로 붙여넣기 하는 방법이 없나
-> A. gpt가 스타일 수정된다고 우기지만, 수정은 안되었다. 근데 다른 방법 하나를 알려주는데,
맥이든 윈도우든, 붙여넣기 할 때 shift를 누르면, 스타일이 없는 일반 텍스트로 들어간다는 것이다.. gpt는 천재다.
=================
// Q. URL 뒤에 /를 붙이고 안붙이고에 따라 response가 다르던데 무슨 차이일까?
https://api.tvmaze.com/shows
https://api.tvmaze.com/shows/
A.
(GPT의 답변)
웹사이트 URL에서 마지막에 슬래시를 붙이는 것과 안 붙이는 것은 서버의 파일 시스템 구조와 관련이 있습니다.
대개 웹 서버는 요청된 URL 경로와 일치하는 파일이나 폴더를 찾습니다. 만약 URL에 슬래시(/)가 없다면, 서버는 해당 URL 경로를 파일로 처리하려고 시도합니다. 즉, URL이 파일 경로로 인식되어 파일 리소스를 반환하려고 시도합니다.
반면에 URL에 슬래시(/)가 있으면, 서버는 해당 URL 경로를 폴더로 처리하려고 시도합니다. 즉, URL이 폴더 경로로 인식되어 폴더 내에 있는 파일 목록이 반환됩니다.
예를 들어, https://api.tvmaze.com/shows와 https://api.tvmaze.com/shows/는 다음과 같은 응답을 반환할 수 있습니다.
- https://api.tvmaze.com/shows
- 서버는 해당 URL 경로를 파일로 인식하여 파일 리소스를 반환하려고 시도합니다. 하지만 해당 파일이 없으므로 404 에러가 발생합니다.
- https://api.tvmaze.com/shows/
- 서버는 해당 URL 경로를 폴더로 인식하여 폴더 내에 있는 파일 목록이 반환됩니다. 따라서 폴더 내에 있는 파일들의 정보를 가져올 수 있습니다.
따라서 URL에 슬래시를 붙이는 것과 안 붙이는 것은 서버가 요청을 처리하는 방식에 차이가 있으므로, 두 URL의 응답 결과는 서로 다를 수 있습니다.
gpt얘기는 참고만하고, 추측을 해보면, 웹서버쪽에 라우트 구현이 슬래시 붙인거로는 안되어 있어서 그런듯하다
=================
// retrofit에서 base url맨뒤에 슬래시 붙이는 이유에 대해서 물어보았다.
일단, 그리고 레트로핏 문서를 보면,
baseurl은 https://api.tvmaze.com/ 슬래시까지 붙인다.
그리고 endpoint? 시작에는 슬래시를 안붙이는 것 같다.
Q.
안드로이드 레트로핏 api사용에서, base url의 url맨뒤에 /를 붙여야하는가 안붙여야하는가? 붙이거나 안붙이는 이유는? 예를 들면
- https://api.tvmaze.com/
- https://api.tvmaze.com 1번과 2번중에 어떤게 맞는방법이고 이유는 무엇인가?
그리고 End point의 시작에 /를 붙여야하는가 안붙여야하는가? 붙이거나 안붙이는 이유는?
- shows
- /shows 1번과 2번중에 어떤게 맞는방법이고 이유는 무엇인가?
A.
일반적으로, URL의 끝에 슬래시를 붙이는 것은 해당 URL이 디렉토리(폴더)를 가리키고 있음을 나타내며, 슬래시가 없는 경우 해당 URL이 파일을 가리키고 있다는 것을 나타냅니다. 따라서 RESTful API에서도 이러한 원칙이 적용됩니다.
보통 base URL에서 슬래시를 붙이는 것이 좋습니다. 이유는 HTTP 요청 시에는 URL 경로가 "/"로 시작하기 때문입니다. 슬래시가 없는 경우에는 URL 경로의 첫 번째 요소가 base URL과 함께 연결되기 때문에, 경로 요소의 순서에 대한 혼란을 방지하기 위해 base URL의 끝에 슬래시를 추가하는 것이 좋습니다. 따라서 1번인 https://api.tvmaze.com/가 더 적합한 방법입니다.
또한, 일반적으로 endpoint 시작에 슬래시를 붙이는 것이 좋습니다. 이유는 API가 디렉토리 구조와 유사하게 동작하기 때문입니다. 이 경우, 슬래시가 없으면 경로가 상대적인 경로로 인식되고, 슬래시가 있는 경우 절대 경로로 인식됩니다. 즉, 슬래시를 붙이는 것이 경로에 대한 명확성을 제공하기 때문입니다. 따라서 2번인 /shows가 더 적합한 방법입니다.
(gpt선생님말은 적당히 믿고 문서대로 사용하면 될 듯 함)
// endpoint?앞에 슬래시 넣는 예시를 알려주는데 이게 맞으려나..????????
https://stackoverflow.com/a/38785498/12728552
// 이거를 보면 레트로핏이 trailing slash를 넣어두면 강제로 relative url의 leading slash를 없앤다는것 같은데..? 중복적용 된다는 말이 있는거 같고..? 머리가 아프다. 레트로핏의 문서대로!
https://stackoverflow.com/a/27304517/12728552
==================
//
Q. ScrollView에서 fillViewport 옵션이 무슨 역할이지?
A. gpt
ScrollView의 fillViewport 옵션은 ScrollView의 viewport(보이는 영역)을 ScrollView의 전체 영역으로 채우는 역할을 합니다.
ScrollView는 보통 내용이 viewport의 크기보다 클 경우 스크롤이 가능하도록 되어 있습니다. 하지만 fillViewport 옵션을 사용하면 내용이 작더라도 ScrollView가 전체 영역을 채우게 됩니다.
예를 들어, ScrollView에 ImageView를 추가하고 fillViewport를 true로 설정하면, 이미지가 축소되지 않고 ScrollView의 전체 영역을 채우게 됩니다.
fillViewport 옵션은 화면 크기가 다른 디바이스에서 앱의 레이아웃이 일관성 있게 유지되도록 하는 데 도움이 됩니다. 그러나 매우 작은 내용을 표시할 때는 불필요하게 ScrollView의 크기를 늘리기 때문에 오히려 부적합한 경우도 있을 수 있습니다.
( 뷰포트라는게 보이는 영역이고, 스크롤뷰가 보이는 만큼 꽉차게 된다..? 이런 느낌이네? )
====================
//
Q. android개발에서 리싸이클러뷰에 AsyncListDiffer가 뭐지?
A.
AsyncListDiffer는 Android Jetpack 라이브러리의 일부로, RecyclerView의 데이터 세트를 비동기적으로 비교하고 업데이트하는 데 사용됩니다.
RecyclerView는 데이터가 변경될 때마다 갱신됩니다. 하지만 대규모 데이터 세트의 경우 모든 데이터를 비교하고 업데이트하는 것은 비효율적이며 성능 문제를 일으킬 수 있습니다.
AsyncListDiffer는 비동기적으로 데이터 세트를 비교하고 업데이트하여 RecyclerView를 최신 상태로 유지합니다. 이를 위해 데이터 세트를 백그라운드 스레드에서 비교하고, 이전 데이터 세트와 새 데이터 세트 간의 차이를 계산한 다음 UI 스레드에서 적용합니다.
또한 AsyncListDiffer는 RecyclerView.Adapter 클래스와 함께 사용됩니다. Adapter 클래스는 RecyclerView와 데이터를 연결하는 역할을 하며, AsyncListDiffer는 Adapter 클래스에 데이터 세트의 변경 사항을 알리고, 변경된 데이터를 UI에 업데이트하도록 지시합니다.
AsyncListDiffer를 사용하면 대규모 데이터 세트의 경우도 부드러운 스크롤링 및 업데이트를 제공할 수 있습니다. 또한, DiffUtil 클래스를 사용하여 데이터 세트의 변경 사항을 효율적으로 비교하고, 필요한 경우 애니메이션을 적용할 수 있습니다.
( 블로그 게시글 까지 좀 보긴했는데, 완전히 이해는 안된다, 피곤해서 여기까지만 봐야겠다. )
==================================
검색해서 찾은거
================
// 구글 크롬에 확장프로그램인지 json 깔끔띠하게 보여주는게 있는거 같은데 뭘까?
https://www.appletong.com/entry/크롬-JSON-Viewer-플러그인
Json Viewer라는 확장 프로그램이 있다.
(궁시렁꿍시렁..)
그리고 노션에서 티스토리 편집기로 텍스트 붙이려니,
노션의 스타일이 이상하게 붙거나, 일반텍스트로 하면 마크다운이 풀려서 나오거나 하는데.
노션이 역시 별로인가..?
티스토리 편집기가 복붙해 넣을때, 텍스트양이 크면 붙여넣기가 안되는것 같기도 하고...
블로그 쓰기가 여간 귀찮은게 아니다.
평소에 궁금했던거 많은데,
gpt가 꽤나 잘 알려줘서 편하고 좋다..
앞으로 할 거)
- 분명.. 개인 프로젝트 하려 했는데 왜 이걸보고 있지..? 도움이 되긴한다.
- 구글의 유명한 샘플앱 sunflower나, now in android도 한 번 열어보고 싶은데.. 그러면 프로젝트 언제하나..?
'공부 자료 리뷰 (책 서평, 인강리뷰)' 카테고리의 다른 글
아토믹코틀린(Atomic Kotlin) 후기 리뷰 서평 (3) | 2024.02.13 |
---|---|
차라투스트라는 이렇게 말했다. 리뷰 (0) | 2023.09.13 |
유튜브로 안드로이드 공부를 해보자 (0) | 2023.04.29 |
구글 코드랩이 어딨냐면.. (0) | 2023.02.15 |
이펙티브 코틀린 (서평 & 리뷰 & 후기 & 일기) (0) | 2023.02.11 |