본문 바로가기

분류 전체보기81

[Kotlin] Sealed class 와 Enum class 의 차이가 무엇일까? 면접의 단골 주제로 나오는 Sealed class 와 Enum class 의 차이점에 대해 글을 작성해보려고 한다. 흔히 UiState 와 같이 Ui 상태를 다룰 때 sealed class 를 사용하고 고정된 값을 가진 데이터 집합을 구현할 때 enum class 를 사용하는 것은 알고 있을테지만, 정확히 그렇게 나눠서 사용하고 있는 이유에 대해서 깊게 생각해보지는 않았을 것이다.나의 경우 실무에서는 알고 썻지만 이를 이론적으로 설명하지 못하여 다시 한 번 글을 써내리는 중이다. 글을 보고 다른 이들도 나와 같이 실무에서 적용하는 것 뿐만 아니라 정확히 두 개 사이에서 어떤 차이점이 있는지를 알아내고 이를 설명할 수 있다면 좋겠다.# Sealed Class 란?흔히 데이터 상태의 집합을 나타낼 때 사용하.. 2025. 2. 18.
[Jetpack Compose] Paging3 라이브러리를 활용하여 페이징 및 페이징 데이터 업데이트하는 법을 알아보자 # Paging3 라이브러리?Android Jetpack 에는 Paging3 라는, 대규모 데이터에 대한 페이징 처리를 도와주는 라이브러리가 존재한다. 이 라이브러리를 사용하는 것은 보통 서버에 존재하는 대규모 데이터를 한 번에 내려받기 어려운 상황.예를 들어, 유튜브에 접속하였으나 서버에는 영상 데이터가 10만개가 존재한다. 그렇다면 이 모든 데이터를 사용자에게 보여주려고 한다면? 네트워크 과부하가 생기게 되고 이로 인해 앱 크래시가 발생할 것이다. 그렇기에 페이징 방식을 활용해서 서버측으로부터 데이터를 나눠서 내려받고, 또한 많은 양의 데이터를 받았다고 했을때도 유저에게 한 번에 보여주지 않고 페이지를 나눠 보여준다면 UI 렌더링 비용을 획기적으로 낮출 수 있을 것이다. (속도도 빨라보이고) 어쨋든 .. 2025. 2. 17.
[안드로이드] 멀티 모듈을 사용할 때 Build.gradle.kts 설정을 한 번에 하는법 모듈이라는 것은 소프트웨어를 개발할 때 특정 기능이나 역할을 수행하며, 별도로 컴파일, 테스트, 유지보수가 가능한 코드 집합을 의미한다.그리고 현재 이 글을 보고있는 당신도 이러한 모듈 내의 코드를 개발하여 결과물을 만들어내고 있을 것이다. 이러한 모듈은 단일 모듈만이 아닌 Layer 별 관심사를 분리하여 여러가지 모듈로 분리한 "멀티 모듈" 로 작성할 수도 있는데, 안드로이드 스튜디오에서는 Clean Architecture 와 함께하여 멀티 모듈을 많이들 사용한다. 단 이러한 부분에서 한 가지 귀찮은 부분이 생긴다.바로 모듈이 하나 추가될 때마다 각 모듈별 빌드 설정값을 지정하는 스크립트 파일 "Build.gradle.kts" 가 생성되는 것이다.그리고 이러한 모듈 안에서는 분명 중복으로 사용되는 코드.. 2025. 2. 16.
구글 애드센스 홈페이지 내 사이트 추가 버튼이 보이지 않는 경우 해결법 티스토리를 운영한지 거의 3개월 넘게 지났지만, 애드센스 수익이 이상하게 계속 0원인 현상을 발견하였다.물론 방문자가 하루 10명 내외이기 때문에 그렇다고 하나 3개월동안 0.01 달러도 늘지 않았다는 것은 뭔가 문제가 있다는 얘기 ..그래서 잘 확인을 해보니 애드센스 내에 사이트 추가라는 것을 해줘야한다는 것을 알았고, 이것을 시도하려고 하였으나 사진처럼 내 애드센스 홈페이지에서는 "사이트" 라는 것이 없었다.약 5년전 만들었던 애드센스 계정이었고, 수익도 낸 적이 있었기에 이 과정에서 문제는 없었을 것이라 생각하여 몇 달 동안 이것을 해결하지 못하였으나 오늘 이것을 해결하였다.. # 해결방법나의 해결 방법은 매우 간단했다. 위의 홈페이지에서 애드센스 로그아웃 -> 애드센스 로그인이 아닌, "애드센스 .. 2025. 1. 19.
[Android Studio] Kotlin 2.0.x 버전에서 Unresolved Reference 에러 발생 코틀린 공식 사이트에서 말하는 Kotlin 2.0.0 버전에서의 변화 중 하나인 스마트 캐스트 개선.예제 코드를 보면 변수 선언을 if 문 바깥에서 진행하고, 이 isCat Boolean 값을 통해 animal.purr() 을 호출한다.2.0 이전 버전들에서는 컴파일러에 의해 에러 처리되었지만, 2.0에서는 이것이 개선되어 정상적으로 실행이 가능하게 되었다. 그래서 나는 이것을 한 번 똑같이 따라 구현해보려고 하였으나 고양이인지 확인하는 isCat 변수를 if 조건으로 사용하여 내부 코드에 접근하였음에도 animal.purr() 부분에서 IDE 에 의해 에러가 발생하였다.원인이 무엇인지 몰라 스택오버플로우를 뒤적거리니 다음과 같은 이야기가 있었다. 쉽게 말해서 위의 오류는 컴파일러가 내뱉는 오류가 아닌 .. 2025. 1. 5.
[Android Studio] Kotlin 버전을 2.0.x 으로 마이그레이션 하기 약 반 년전에 출시된 Kotlin 2.0.0 버전이 어느 덧 2.0.20 버전을 바라보고 있다.하지만 그런 와중에도 나의 프로젝트들의 Kotlin 버전은 1.9.0 .. Kotlin 2.0.0 에 적용된 K2 컴파일러의 효과와 수많은 기능 변화를 사용해보기 위해 프로젝트들의 Kotlin 버전들을 올려보려고 한다.(이러한 기능은 아래 주소 참조)https://kotlinlang.org/docs/whatsnew20.html#smart-cast-improvements What's new in Kotlin 2.0.0 | Kotlin kotlinlang.org  우선 시작하기 앞서 빌드 결과물이 .Kotlin 폴더에 포함되므로, gitignore 에 추가할지 설정을 해준다.# gitignore.kotlin 다음으.. 2025. 1. 4.