[Kotlin] for 루프에서 리스트에 원소 추가, 루프 끝나고 원소 하나 더 추가 => 오류 발생

forEachIndexed 블록 안의 for 루프 안에서 리스트에 원소를 추가하였다. 이 루프가 끝나고 그 리스트에 원소를 하나 더 추가하자 오류가 발생했다( java.lang.IndexOutOfBoundsException). if 문을 써서 문제를 해결했다. for 루프 밖에서 원소를 하나 더 추가하자 오류 발생 val numbers: MutableList<MutableList<Int>> // numbers 는 이미 다른 곳에서 초기화 되어 있다. val intervals: MutableList<MutableList<Int>> = mutableListOf() for (i in … 더 읽기

내가 하공진 처지였으면

고려거란전쟁을 보고, 내가 거란 황제의 회유를 받는 처지의 하공진이었으면 어떻게 했을지 상상력을 펼쳐본다. 드라마에서는 산 채로 하공진의 간을 꺼냈다는 식으로 묘사하던데 극적인 각색인 듯하다. 각색이었기를… 너무 끔찍해서… 그러나 거란 황제를 모욕해서 살해됐다는 말은 백과사전에도 나오니 사실이었나 보다. 거란왕은 온갖 악형과 회유로 신하가 될 것을 요청하였으나 이를 완강히 거절하였을 뿐만 아니라, 나중에는 심한 모욕적인 말로 응대하여 … 더 읽기

[Kotlin][deep copy] 리스트의 마지막 원소가 사라져 버렸다.

Kotlin 코드에서 deep copy 를 하지 않은 채 원본을 clear 하니까 리스트의 마지막 원소가 사라지는 문제가 발생했다. 리스트의 마지막 원소만 사라진다. val testList: MutableList<Int> val listOfTestList: MutableList<List<Int>> .forEach 블록 내에서 testList 를 몇 개 생성하면서 listOfTestList 에 추가하였다: listOfTestList.add(testList) 나중에 listOfTestList 를 출력해 보니 감쪽같이 마지막 원소만 사라졌다. 마지막 element 가 [] 이렇게 빈 채로 … 더 읽기

[해결]error.NonExistentClass: Hilt 로 ViewModel 에 Proto DataStore 인스턴스 전달할 때

Proto DataStore 에 Hilt 를 적용할 때 컴파일 오류가 발생하여 해결한 방법을 공유한다. Hilt + Proto DataStore + ViewModel 에서 문제 발생 지난 글에서 build.gradle.kts 를 공개한 이후 Proto DataStore 를 익혔다(지난 글: https://hhtt.kr/103026). 그런데 코드에 ViewModel Factory 를 이용해서 DataStore 인스턴스를 ViewModel 에 넣어주도록 되어 있어서 Hilt 로 주입하도록 바꾸려고 했다. 이 때, Preferences … 더 읽기

[Attachment] build.gradle.kts for Compose + Retrofit + KSP + Room + Hilt

In order to apply Hilt to my project, I modified build.gradle.kts and updated Compose, Retrofit, KSP, Room, Hilt, etc. to the latest. Both build.gradle.kts are provided in an attachment. Korean version of this posting: https://hhtt.kr/103026 I decided to use Hilt. After struggling for over a day to apply HIlt to my project, I succeeded the … 더 읽기

[첨부] build.gradle.kts for Compose + Retrofit + KSP + Room + Hilt

프로젝트에 Hilt 를 적용하기 위해서 build.gradle.kts 를 수정하고, 내친김에 Compose, Retrofit, KSP, Room, Hilt 등을 최신으로 판올림하였다. 두 build.gradle.kts 를 첨부 파일로 제공한다. Korean version of this posting: https://hhtt.kr/103039 Hilt 를 사용하기로 했다. 내 프로젝트에 HIlt 를 적용하기 위해서 하루 넘게 씨름을 하다가 그저께 저녁에 성공했다. 내가 목표한 것은, container 에 담긴 채 ViewModel Factory … 더 읽기

Jetpack Compose, how to force recomposition manually

There are times when Jetpack Compose does not allow necessary recomposition right away. In this case, let’s find out how to force immediate recomposition manually. I changed the state value, but why doesn’t the button appear? What I wanted was for when I press a button, another button would appear somewhere else. I thought the … 더 읽기

Jetpack Compose, 수동으로 recompose 하는 방법

내가 원하는데 Jetpack Compose 가 바로 recompose 해주지 않을 때가 있다. 이 때 수동으로 즉시 recompose 되게 하는 방법을 알아본다. 상태값을 바꿨는데 왜 단추가 안 나타나는 거지? 내가 원했던 것은, 내가 어떤 단추를 눌렀을 때 다른 곳에 다른 단추가 나타나게 하는 거였다. 논리는 맞다고 생각했는데 단추는 나타나지 않았다. 혹시나 해서 화면을 옆으로 돌려 보았다. 그러자 … 더 읽기

전기레인지(하이라이트) 2구 GM202 대체품 웰치 리안츠 LH-202 직접 교체 설치함

2구짜리 전기레인지 GM202 상판이 파손되었는데 같은 제품을 살 데가 없었다. 다행히 거의 비슷한 규격의 대체품 웰치 리안츠 LH-202 를 찾아서 주문하여 직접 교체 설치하였다. 전기레인지(하이라이트) 2구 GM202 상판이 깨졌다. 어머니가 쓰는 전기레인지 상판이 깨졌다. 상판에 Grand Master GM202 라고 적혀 있다. 이 제품을 살 수 있는지, 예전에 검색해 본 적이 있었다. 아무리 검색해 보아도 파는 … 더 읽기