일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Compose
- pandas
- 백준
- android
- GitHub
- boj
- MiTweet
- 암호학
- Coroutine
- textfield
- Codeforces
- androidStudio
- Kotlin
- Coroutines
- relay
- livedata
- 쿠링
- Rxjava
- architecture
- AWS
- 코루틴
- MyVoca
- 프로그래머스
- Gradle
- Python
- 코드포스
- activity
- TEST
- ProGuard
- Hilt
- Today
- Total
목록분류 전체보기 (379)
이동식 저장소
모듈을 여러 개 작성하다 보면 ``build.gradle`` 파일이 복잡해지곤 한다. 같은 라이브러리를 여러 번 작성하다 보면 오타가 날 수도 있고, 버전 관리가 힘들어지기도 한다. 당장 위의 ``:database`` 모듈에서도 junit 라이브러리를 하나만 사용함에도 불구하고 bom으로 선언하는 오류가 있다. Gradle의 기능을 사용하면 버전 관리를 쉽게 할 수 있다. 이름하여 Version Catalog! Version Catalog 카탈로그는 상품 목록 등을 한 곳에 모아놓아 보기 쉽게 정리한 것이다. 단어 그대로 Version Catalog는 앱에서 사용하는 라이브러리를 모아놓은 파일이다. 라이브러리를 사용하고 싶다면 catalog에서 선택하기만 하면 된다. 버전 관리는 catalog에서 알아서..
모듈화란 코드를 여러 부분으로 나누어 느슨하게 의존하도록 만드는 것이다. 각 모듈은 자신이 맡은 기능만을 수행하며, 다른 모듈은 신경쓰지 않는다. 다만 외부에 노출할 인터페이스만을 제공한다. 모듈을 나누는 방법에는 여러 가지가 있겠지만, 나는 맡은 역할에 따라 레이어로 나눈 후 기능별로 다시 나누는 편이다. 예를 들어 데이터를 저장하는 Data 모듈을 정의하고, 저장하는 데이터에 따라 ``:data:meal``과 ``:data:schedule`` 모듈을 정의하는 것이다. Android 팀에서 권장하는 방법이다. (Android Dev Summit '22 영상 참고) 앱을 모듈화하면 코드를 재사용하기 쉬워지고, 외부와의 인터페이스를 제외한 나머지를 숨길 수 있으며, Google Play의 기능을 사용하여 ..
``LazyList`` 계열 composable인 ``LazyColumn``과 ``LazyRow``에는 ``contentPadding``이라는 매개변수가 있다. 일반적인 ``Modifier.padding()``과 어떻게 다른지 알아보자. @Composable @ComposableTarget public fun LazyColumn( modifier: Modifier, state: LazyListState, contentPadding: PaddingValues, reverseLayout: Boolean, verticalArrangement: Arrangement.Vertical, horizontalAlignment: Alignment.Horizontal, flingBehavior: FlingBehavior,..
Job 코루틴에서 백그라운드 작업을 나타내는 인터페이스이다. 인터페이스이긴 하지만 동명의 함수로 Job 객체를 만들 수 있다. interface Job : CoroutineContext.Element public fun Job(parent: Job? = null): CompletableJob = ... Job은 부모-자식 관계로 정렬될 수 있다. 부모 Job이 종료되면 자식 Job도 재귀적으로 모두 종료되며, 자식 Job에서 exception이 발생하면 그 Job의 부모도 즉시 종료되고, 부모의 모든 자식이 재귀적으로 종료된다. 부모의 cancel과 다르게 자식의 failure는 부모 쪽으로 전파되지는 않으며, 자신의 부모에만 영향을 미친다. Job 객체를 얻는 방법은 크게 두 가지이다. 위에서처럼 ``..
다음 글을 읽고 정리하였습니다. Effective state management for TextField in Compose TL;DR — The Compose roadmap reflects the work that the team is doing on multiple fronts, in this case Text Editing Improvements and… medium.com 텍스트를 동기적으로 갱신해야 한다 ``TextField``는 내부적으로 state를 3곳에 저장한다. Keyboard: 맞춤법 검사나 다음 단어 추천 등의 로직을 수행하기 위해 state를 저장한다. State holder: 사용자가 정의한 state이다. ``mutableStateOf("state")`` 등이 해당된다. Int..