목록전체 글 (140)
시배's Android
KSP (Kotlin Symbol Processing) Kotlin 심볼 처리의 줄임말인 KSP는 Kotlin 에코시스템에 도입된 비교적 새로운 어노테이션 처리 프레임워크입니다. 이 프레임워크는 Java 및 Kotlin 개발에 사용되는 기존 어노테이션 처리 방식의 몇 가지 한계를 해결하기 위해 설계되었습니다. KSP는 몇 가지 고유한 기능을 제공합니다: Strong Typing : KSP는 강력한 타이핑 기능을 제공하므로 코드 생성 로직에서 직접 Kotlin 유형으로 작업할 수 있습니다. 따라서 복잡한 유형 변환이 필요하지 않으며 코드 생성의 전반적인 안전성이 향상됩니다. Improved Performance : 기존 어노테이션 처리와 비교하여 KSP는 Kotlin의 컴파일러 인프라를 활용하여 향상된 성..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xGeyf/btsut4ENJD5/78wwiuST11uHSOC2iPa261/img.png)
목록 및 그리드 | Jetpack Compose | Android Developers 목록 및 그리드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 많은 앱에서 항목의 컬렉션을 표시해야 합니다. 이 문서에서는 Jetpack Compose에서 이 작업을 효 developer.android.com Lazy lists 많은 수의 항목(또는 길이를 알 수 없는 목록)을 표시해야 하는 경우 열과 같은 레이아웃을 사용하면 모든 항목이 표시 여부와 관계없이 구성되고 배치되므로 성능 문제가 발생할 수 있습니다. Compose는 컴포넌트의 뷰포트에 표시되는 항목만 컴포넌트를 작성하고 레이아웃하는 컴포넌트 세트를 제공합니다. 이러한 컴포넌트에는 LazyColumn과 LazyRow가 포함됩니..
객체를 상태, 행동, 식별자를 지닌 실체로 보는 것이 가장 효과적이다. 객체란 식별 가능한 개체 또는 사물이다. 객체는 자동차처럼 만질 수 있는 구체적인 사물일 수도 있고, 시간처럼 추상적인 개념일 수도 있다. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다. 소프트웨어 안에서 객체는 저장된 상태와 실행 가능한 코드를 통해 구현된다. 상태를 이용하면 과거에 얽매이지 않고 현재를 기반으로 객체의 행동 방식을 이해할 수 있다. 상태는 근복적으로 세상의 복잡성을 완화하고 인지 과부하를 줄일 수 있는 중요한 개념이다. 객체의 상태를 구성하는 모든 특징을 통틀어 객체의 프로퍼티라고 한다. 상태는 특정시점에 객체가 가지고 있는 정보의 집합으로 객체의 구조적 특징을 표현한다. 객체의 상태는 객..
1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가 www.acmicpc.net import kotlin.math.max private fun main() { val N = readLine()!!.toInt() val box = readLine()!!.split(" ").map { it.toInt() } val dp = IntArray(N) var count = 0 for(i in 0 until N){ dp[i] = 1 for(j in 0 until i){ if(box[j] < box[i]){ dp[i] = max(dp[j]+1, dp[i]) } }..
15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net private fun main() { val (n, m) = readLine()!!.split(" ").map { it.toInt() } val arr = readLine()!!.split(" ").map { it.toInt() }.sorted() fun go(i: Int, s: List) { if (s.size == m) { println(s.joinToString(" ")) return } for (j in i until n) { if (j == i || ..
2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net private fun main() { repeat(readLine()!!.toInt()) { readLine()!! val A = readLine()!!.split(" ").map { it.toInt() }.toSet() readLine() println(readLine()!!.split(" ").map { if (it.toInt() in A) "1" else "0" }.joinToString("\n")) } }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Ghw8x/btst6NrJ3sf/3ikkgC9yx9gptM8CiwY7X1/img.png)
끊임없이 진화하는 안드로이드 개발 세계에서 유지 관리가 가능하고 확장 가능하며 구조가 잘 짜여진 애플리케이션을 구축하는 것은 매우 중요합니다. 모델-뷰-모델(MVVM) 아키텍처는 이러한 과제를 정면으로 해결하는 가장 강력한 디자인 패턴 중 하나로 부상했습니다. MVVM은 우려 사항을 명확하게 분리하고 테스트 가능성을 높임으로써 안드로이드 개발자들 사이에서 널리 채택되고 있습니다. 이 포괄적인 가이드에서는 안드로이드 MVVM 아키텍처의 복잡성을 자세히 살펴보고, 주요 구성 요소, 장점 및 모범 사례를 살펴보고, 안드로이드 프로젝트에서 MVVM을 마스터할 수 있는 지식을 갖추도록 도와드립니다. Understanding MVVM Architecture MVVM 아키텍처는 고전적인 모델-뷰-컨트롤러(MVC) 패..
Compose 내 테마 분석 | Jetpack Compose | Android Developers Compose 내 테마 분석 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Jetpack Compose의 테마는 여러 개의 하위 수준 구성과 관련 API로 이루어져 있습니다. 이러한 developer.android.com 젯팩 컴포즈의 테마는 여러 하위 수준 구성 요소와 관련 API로 구성됩니다. 이러한 구성 요소는 MaterialTheme의 소스 코드에서 확인할 수 있으며 사용자 정의 디자인 시스템에서도 적용할 수 있습니다. Theme system classes 테마는 일반적으로 공통된 시각적 및 행동 개념을 그룹화하는 여러 시스템으로 구성됩니다. 이러한 시스템은 테마 값을..