소개
이해하기 쉬운 개발강의를 만들기 위해 노력하고 있습니다.
* 냉동코더의 유튜브
https://www.youtube.com/channel/UC6V7LBEgcoTZUUgUU0Jv3xg
* 냉동코더의 기술블로그
강의
전체4수강평
- 배울 것이 많고 도움이 많이 되었습니다.
vsvx13
2024.01.10
0
- 흥미로운 내용으로 가득합니다 최고!
zion. lab
2023.02.14
0
게시글
질문&답변
2024.01.28
Coroutine, Flow 질문
올려주신 코드를 실행시켜보시면 반환값은 다음과 같이 나오게 됩니다. I'm not blocked 1 1 I'm not blocked 2 2 I'm not blocked 3 3 https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS45LjIyIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbnguY29yb3V0aW5lcy4qXG5pbXBvcnQga290bGlueC5jb3JvdXRpbmVzLmZsb3cuKlxuXG5cbmZ1biBtYWluKCkgPSBydW5CbG9ja2luZzxVbml0PiB7XG4gICAgLy8gTGF1bmNoIGEgY29uY3VycmVudCBjb3JvdXRpbmUgdG8gY2hlY2sgaWYgdGhlIG1haW4gdGhyZWFkIGlzIGJsb2NrZWRcbiAgICBsYXVuY2gge1xuICAgICAgICBmb3IgKGsgaW4gMS4uMykge1xuICAgICAgICAgICAgcHJpbnRsbihcIkknbSBub3QgYmxvY2tlZCAka1wiKVxuICAgICAgICAgICAgZGVsYXkoMTAwKVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbGxlY3QgdGhlIGZsb3dcbiAgICBzaW1wbGUoKS5jb2xsZWN0IHsgdmFsdWUgLT4gcHJpbnRsbih2YWx1ZSkgfVxuLy8gICAgIHByaW50bG4oXCJ0ZXN0XCIpIFxufVxuXG5mdW4gc2ltcGxlKCk6IEZsb3c8SW50PiA9IGZsb3cgeyAvLyBmbG93IGJ1aWxkZXJcbiAgICBmb3IgKGkgaW4gMS4uMykge1xuICAgICAgICBkZWxheSgxMDApIC8vIHByZXRlbmQgd2UgYXJlIGRvaW5nIHNvbWV0aGluZyB1c2VmdWwgaGVyZVxuICAgICAgICBlbWl0KGkpIC8vIGVtaXQgbmV4dCB2YWx1ZVxuICAgIH1cbn0ifQ==
- 0
- 1
- 90
질문&답변
2024.01.21
Transformations import 안됨
디펜던시 버전이 올라가면서 사용법이 좀 더 직관적으로 바뀐게 맞는 것 같네요. 공식문서의 예제에 따라 사용하시면 됩니다. Transformations 을 사용하면 새로운 객체를 만들어서 사용하게 되는데, 이렇게 해야 ViewModel과 데이터 레이어 의 결합관계가 약해져서 앱 구조가 견고해집니다. 원본 데이터 값에 변형을 가해서 사용하고 싶은 경우에 Transformation 을 사용하면 됩니다. MainActivity 에서 myViewModel.liveCounter.value = myViewModel.liveCounter.value?.plus(1)로 값을 증가시킨 것은 원본 데이터를 수정한 것이 맞습니다. 실제 앱으로 생각하면 repository를 통해 데이터를 수정한 것인데, 이 영상의 시점에서는 아직 repository가 소개되지 않았기 때문에 설명의 간략화를 위해 viewmodel에서 데이터를 수정하는 기능을 구현했습니다.
- 0
- 1
- 135
질문&답변
2024.01.17
moshi관련 질문입니다.
확인해 봤는데 codegen 버전을 업그레이드했더니 정상적으로 빌드됩니다 :-) kapt ( "com.squareup.moshi:moshi-kotlin-codegen:1.15.0" )
- 0
- 2
- 181
질문&답변
2024.01.14
searchBooks() 에서 북 검색 입력을 너무 빨리 할 경우 마지막 글자로 검색이 안돼요.
Handler 는 메인 스레드에서 동작하므로, 만약 검색 동작이 시간이 오래 걸리는 경우 UI가 응답하지 않을 수 있습니다. 차라리 코루틴으로 searchJob 을 정의해서 작업을 제어 해 보세요.
- 0
- 1
- 109
질문&답변
2024.01.12
안드로이드에서 아키텍처 패턴
우선 MVC, MVP, MVVM은 안드로이드가 나오기도 전부터 있었던 굉장히 오래된 개념이라는 것을 알아주시기 바랍니다. 강의에서도 설명했지만 MVC는 1970년대, MVP는 1990년대에 나온 아키텍처이므로 이 아키텍처에서 말하는 View 혹은 ViewModel이란 어떤 구조를 설명하기 위한 의도에서 만들어 낸 개념이지, 그것이 안드로이드의 View와 ViewModel에 정확히 1:1로 대응되는 무언가가 아닙니다. 안드로이드의 Activity라는 개념부터가 View와 Controller를 섞은 상태로 만들수도 있고, 또 따로 분리하여 만들 수도 있는 어중간한 클래스이기 때문입니다. 또 강의 마지막에서 언급했듯이 아키텍처의 개념은 과학적으로 입증되어 불변인 개념이 아니므로, 집단에 따라 생각하는 형태나 구조가 조금씩 다를 수 있습니다. 제가 강의에서 보여드린 그림은 인터넷에서 아키텍처 구조를 검색하면 대표적으로 찾을 수 있는 그림으로 여러 블로그나 기사에서 이 그림으로 아키텍처 구조를 설명하고 있습니다만, [1]번 질문에서 하신것 처럼 인풋을 뷰가 받는다고 생각하는 사람도 있습니다. 아키텍처 속에서 화살표의 방향이 어떻게 되느냐는 것은 이 얘기의 본질이 아니며 정답이라는 게 없을 뿐더러 정답이 무엇인가 하는 게 중요한 것도 아닙니다. 중요한 것은 코드의 일관성을 유지하고 유지보수성을 높이기 위한 방법에 대해 과거로부터 사람들이 계속 고민을 해 왔고 그것이 모델의 개선 혹은 변화라는 형태로 이어져 왔다는 것을 아는 것입니다. 다만 3번으로 질문하신 것의 대답을 드리면 제가 강의에서 설명한 것처럼 MVC에서 중간에 인터페이스를 추가한 것의 의도는 관심사를 분리(separation of concerns, SoC)하는 효과를 얻는 것입니다. 관심사를 분리하기 위한 여러가지 설계의 원칙을 정리한 것이 SOLID이며, SOLID를 구현하기 위한 여러가지 방법 중의 하나가 의존성 주입이라고 생각하시면 됩니다. 이 부분에 대해서는 섹션10. Dependency Injection 기초 영상을 참고하시기 바랍니다.
- 0
- 1
- 126