일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Rxjava
- Gradle
- 코드포스
- TEST
- MiTweet
- textfield
- 백준
- androidStudio
- Codeforces
- android
- Coroutine
- Python
- Kotlin
- MyVoca
- GitHub
- 쿠링
- livedata
- boj
- architecture
- relay
- 암호학
- pandas
- ProGuard
- 프로그래머스
- Compose
- AWS
- activity
- 코루틴
- Coroutines
- Hilt
- Today
- Total
목록분류 전체보기 (379)
이동식 저장소
kapt란?Java annotation processor를 Kotlin에서 사용할 수 있게 해주는 도구이다. Dagger나 Data Binding 등을 Kotlin 프로젝트에서도 사용할 수 있다는 것. 안드로이드에서는 대표적으로 Hilt, Room 등의 라이브러리와 함께 사용한다. 내부적으로는 annotation 처리가 필요한 클래스마다 Java stub을 만드는 방식으로 구현되어 있다. 그런데 이 과정에서 Kotlin 코드를 Java로 변환하고, 변환된 코드에 Java annotation processor를 적용하기 때문에, 코드를 거의 두 번 컴파일하는 셈이다. 당연히 빌드 속도에는 좋지 않다. kapt의 단점을 해결하기 위해 KSP(Kotlin Symbol Processing)가 개발되었다. KSP..
Kotlin K2 컴파일러가 드디어 stable 출시되었다! 주요 변경점들을 하나씩 알아보자.Kotlin 2.0.0 변경점그 외의 변경점 중 재밌어 보이는 것들을 정리해 보았다. What's new in Kotlin 2.0.0 | Kotlin kotlinlang.orgSmart cast 확대Smart cast는 비교문 등에 의해 변수가 자동으로 형변환되는 것을 말한다. 예를 들어 if 조건문에서 어떤 변수가 null이 아니라는 것을 확인했다면, if문 안에서는 해당 변수가 non-null로 간주된다. Kotlin 2.0에서는 이것이 확대되어, 컴파일러가 비교문을 통해 변수의 타입을 자동으로 추출하는 등 고급 smart cast 기능을 제공한다. class Cat { fun purr() { ..
지난 5월 16일, 쿠링 2.0이 배포되었다. 내가 속한 안드로이드 팀을 비롯하여 서버, iOS, 디자인, PM 등 팀원 모두가 함께 이뤄낸 값진 성과라고 할 수 있다.10개월 가까이 2.0을 작업하면서 세 번의 계절을 보냈고, 나는 어느새 졸업... 이 글에서는 내가 속한 안드로이드 팀을 중심으로, 쿠링 2.0 작업을 되돌아보고자 한다.2.0쿠링 2.0의 핵심은 디자인 업데이트이다. 그러나 당시 안드로이드 코드는 전혀 모듈화되지 않았고, ``:app`` 모듈 안에서 참조 관계가 너무 복잡해지고 있었기 때문에 안드로이드 팀은 모듈화 작업을 함께 수행하기로 결정했다.모듈화모듈화 작업은 아래 글에서 자세히 돌아보았다. MAU 세 자릿수 서비스 모듈화한 썰 푼다이전 글에서는 쿠링을 ``DAU 세 자릿수 서비스..
Compose는 기존 view 시스템과의 상호 운용을 위해 ``AndroidView`` composable을 제공한다. Compose 네이티브 컴포넌트가 없는 WebView 등을 사용할 때 활용할 수 있다. 내부적으로는 composition 트리 안에 view 노드를 직접 만드는 방식으로 구현되어 있다. 오버로딩 1@Composable@UiComposablefun AndroidView( factory: (Context) -> T, modifier: Modifier = Modifier, update: (T) -> Unit = NoOpUpdate)``factory``는 view를 만드는 람다이다. ``factory`` 블럭은 composition 단계에서 view를 만들기 위해 단 한 ..
Compose UI의 성능을 최적화하기 위한 몇 가지 best practice를 알아보자.복잡한 계산은 remember하기Composable은 대단히 자주 실행될 수 있다. 극단적으로는 애니메이션의 매 프레임마다 실행될 수 있다. 따라서 composable 내부에서는 되도록 복잡한 계산을 하지 않는 것이 좋다. 부득이하게 복잡한 계산을 해야 한다면, ``remember``를 활용하여 계산 결과를 오랫동안 기억해야 한다. ``remember``를 사용하면 같은 값에 대해 계산을 두 번 이상 수행하지 않는다. 예를 들어, 다음과 같이 ``LazyColumn`` 내부에서 리스트를 정렬하면 안 된다.@Composablefun ContactList( contacts: List, comparator: ..