전체 글

전체 글

    [Ktor] Ktor 프로젝트 생성 - (1)

    이번 포스팅에서는 Ktor 서버 프로젝트를 만드는 방법부터 실행까지 과정을 설명한다.더 나아가 Ktor에 익숙해지기 위해 여러 가지 작업도 추가해보며 연습해 볼 예정이다.Ktor 프로젝트 생성먼저 자신이 사용하고 있는 IntelliJ IDEA의 버전에 따라 생성 방법에 차이가 있다.IntelliJ IDEA CE : 웹 기반의 Ktor project generator를 통해 쉽게 생성할 수 있다.IntelliJ IDEA Ultimate : 전용 Ktor 플러그인을 사용하여 새 프로젝트를 생성할 수 있다.Ktor Project Generator 사용하기Ktor Project Generator를 통해 프로젝트를 만드는 방법에 대해 알아보자.Ktor project generator에 접속한다.Project ar..

    [Android] Compose 런타임 - (3)

    Composer 키우기메모리상의 트리에 노드가 어떻게 추가되는지 알아보자. 예를 들면 Layout Composable은 Compose UI에서 제공하는 모든 UI 컴포넌트의 기반이 된다.코드를 살펴보자.@Suppress(”ComposableLambdaParameterPosition”)@Composable inline fun Layout( content: @Composable () ‑> Unit, modifier: Modifier = Modifier, measurePolicy: MeasurePolicy ) { val density = LocalDensity.current val layoutDirection = LocalLayoutDirection.current ReusableComposeNode>( ..

    [Android] Compose 런타임 - (2)

    변경 목록Composition이 발생할 때마다 소스의 Composable 함수들이 실행되고 방출된다.방출이라는 의미는 슬롯 테이블을 업데이트하고, 구체화된 트리를 만들기 위해 궁극적으로 지연 중인 변경 사항을 생성하는 것의 의미한다.이렇게 생성된 변경 사항들은 목록의 형태로 저장되며 슬롯 테이블에 이미 저장되어 있는 값을 바탕으로 한다.즉, Composable 함수가 실행될 때마다 슬롯 테이블을 확인하고, 현재 사용 가능한 정보에 따라 지연 중인 변경 사항을 생성하고 해당 변경 사항을 모두 변경 목록에 추가한다.그때가 슬롯 테이블을 composition의 최신 정보로 업데이트 하는 순간이고, 단순히 실행되길 기다리는 (지연된) 작업을 사전에 생성해 두는 것만으로 방출 과정을 매우 빠르게 만든다.Recom..

    [Android] Compose 런타임 - (1)

    슬롯 테이블 구조의 인메모리는 composition의 현재 상태릉 저장하는 데 최적화면 구조이다. 최초의 composition이 실행될 때 데이터가 구성되고, recomposition이 실행될 때마다 업데이트된다.Composable 함수가 호출됨으로써 코드의 위치, 매개변수, remember 값, CompositionLocal 등 여러 데이터들이 추적되고 모든 히스토리는 슬롯 테이블에 저장된다.또한 저장되는 과정에서 변경 목록들은 노드 트리에 변경된 값을 적용한다. 이는 Compose Runtime이 최종적으로 트리를 구체화하는 데 사용하는 추상체인 Applier의 책임이다.Applier와 Recomposer는 언제, 어떤 스레드에서 recomposition 할지에 대해서도 다뤄보자.슬롯 테이블 심층 분..

    [Android] Compose 컴파일러 - (8)

    이동 가능한 그룹이동 가능한 그룹이란 정체성을 잃지 않고 재정렬이 가능한 그룹을 의미한다.이 그룹의 특징은 key함수의 내부에서 Composable 함수를 호출하는 경우에만 활용된다 (리스트와 같이)아래 코드를 한번 살펴보자.@Composablefun TalksScreen(talks: List) { Column { for (talk in talks){ key(talk.id) { 고유한 키값을 기준으로 key 함수로 Talk 함수를 감싸서 사용하면 Talk Composable 함수마다의 고유한 정체성이 보장되면서도 이동 가능한 그룹이 생성된다.이 작업은 호출된 각 Composable 함수마다 정체성을 해치지 않으면서도 호출 순서를 변경할 수 있다.key함수가 사용될 때 내부 Composable이 어떻..

    [Back-End] Intellij CE에서 Spring Boot, Ktor 셋팅하기

    공부 겸 안드로이드 앱을 사이드 프로젝트로 만들려고 구상하던 중에 서버의 역할을 Firebase를 통해 구현하지 않고 내가 직접 구현해 보면 어떨까 싶었다.하지만 평소에 백엔드와 관련된 개념들은 어렴풋이만 알고 있었고 구체적으로 뭐가 뭔지는 몰랐다.적당히 어떤 프레임워크로 개발하면 될지 구글링도 해보고 함께 일하는 백엔드 개발자분께도 문의를 드렸다.그 결과 Spring Boot와 Ktor라는 프레임워크를 알게 되었고 대략적인 특징은 아래와 같았다.Spring Boot정형화된 구조정부에서 밀어주는 프레임 워크러닝 커브 존재Ktor유연하고 가벼움프레임워크 자체 Kotlin기반 구현 및 Coroutine사용비교적 접근하기 쉬움둘 중 어떤 프레임워크에 접근해봐야 내게 더 도움이 될지 고민해 보기 위해 프로젝트를..