Home
Gom Log
Cancel

Spring: Mapstruct SubclassMapping 사용법

Mapstruct? class mapping을 구현하기위해 주로 ModelMapper를 사용했었는데 퍼포먼스 이슈(특히 nested + polymorphic collection)가 있어서 대체제를 찾던중 codegen 방식의 MapStruct를 발견하여 채택 reflection 기반의 ModelMapper와 달리 annotation proces...

안드로이드 자동배포(CI&CD) 구현 with GithubAction, AWS S3, Slack

목표 github에 새로운 release가 생겼을 때 signed apk(release)를 생성하여 AWS S3에 업로드하고 관련 메세지를 slack에 전송한다. 해결하고자하는 것 기존에도 s3에 debug apk를 업로드하게 구현해뒀으나, 실제 배포환경과 동일한 테스트를 위해 signing apk 배포 필요 p...

AWS: Typescript + serverless aws lambda 배포

목적 nodejs 환경에서 TypeScript로 작성된 어플리케이션을 serverless framework를 활용하여 람다에 배포 요구사항 REST + AWSGatewayProxy POST with json body API KEY 기반 인증 local 환경에서의 테스트 람다 함수 내부에서 API 외부 호출 (node-...

Spring: Querydsl 환경설정 및 용례

QueryDsl? HQL(JPQL) 또는 native SQL을 사용 할 때 런타임에서만 query validation이 가능한 문제가 있다. JPA 2.0 부터 Criteria Query API가 제공되긴하지만 복잡한 쿼리를 작성하기에는 한계점이 있고 작성한다 해도 가독성이 매우 떨어지는 형태가 된다. 이러한 ORM framework의 문제점들을 ...

Kotlinx-serialization: PolymorphicSerializer

들어가며 본 글에서는 kotlinx-serialization을 사용할 때 Custom Serializer - PolymorphicSerializer 를 사용하는 방법에 대한 정리. retrofit에서 CustomConvertor를 추가하는 내용과 동일한 목적을 가진다. PolymorphicObject interface IPolymorhicTyp...

Android: Compose Text dp 적용하기

Dp for Text UI 디자인상 sp unit을 적용하지 못하는 영역이 있다.(최대한 피해야되긴하지만..) 하지만, Compose의 Text에서 사용되는 fontSize unit이 sp로 고정되어있어 dp 값을 사용할 수 없다. 이를 해결하기위해 주어진 dp값을 sp값으로 변환하여 사용하는 방법 정리 Extensions @Composabl...

선언형 UI 개론

Declarative vs Imperative 본글에서는 선언형 UI에 대한 정의와 명령형 UI와의 차이점과 장점에대해 정리해보고자한다. Simple Login Button 현재 로그인상태의 유저의 경우 profile 이미지와 alarm badge를 보여주고 비로그인상태면 로그인 버튼을 노출하는 간단한 UI를 구현한다고 가정해보자 Im...

Android: Compose TextField wrap content

TextField wrap content TextField UI의 경우 일반적으로 Fixed width로 디자인되나, 간혹 wrap_content처럼 작성한 text에 따른 width를 가지는 구현이 필요할 때가있다. 이 때, EditText에서는 wrap_content attribute를 활용하여 해결되지만 Compose의 TextField에서는...

Android: Compose Custom Layout - Quad Layout

QuadLayout? 자식 View개수에 따라 전체 영역을 4분할 하여 노출해주는 뷰를 구현해보자. 약간만 수정하면 2,3개인경우 빈공간을 PlaceHolder로 채워주는 형태로 수정가능하니 참고. 단일 아이템 아이템 4개 구현 @Composable fun Quad( modifier: Modifier, gap: Dp = 1.dp...

Android: Compose Custom Layout - Basic

Intro 이번 글에서는 Compose의 Layout에 대한 정리와 대표적인 Custom Layout 사용방법에 대해 정리한다. Composable함수는 Composer를 통해 Composition이 진행된다. 이때 ElementTree(contained CompositionData)가 생성되며 이를 통해 Layout → Drawing 과...