본문 바로가기

코틀린9

[주니어 개발자의 두 번째 라이브러리 개발기] 도메인 특화 언어(DSL)을 만들어 보자! DDL-DSL 개발기 -3. ALTER 및 DROP 구현- 안녕하세요 오랜만입니다 ㅎㅎ1년차 포트폴리오를 채우자마자 바로 블로그 관리에 너무 소홀해져 버렸네요. 앞선 두 편의 글에서 DDL-DSL 라이브러리의 개발 배경과 CREATE TABLE 구현에 대해 다루었는데요.이번에 제가 만든 DDL-DSL 라이브러리가 적용된 타 팀의 프로젝트가 첫 프로덕션 출시를 앞두고 있습니다.때문에, 프로덕션에 나가기전 부랴부랴 마이그레이션 기능을 개발중에 있습니다.해서 먼저, 이번 편에서는 마이그레이션시 꼭 필요한 '테이블 구조(칼럼 포함)를 변경하고 삭제하는 기능의 구현'에 대해 다루어보겠습니다.1. ALTER TABLE 구현1.1 기본 설계데이터베이스의 테이블 구조를 변경하는 작업은 매우 신중하게 이루어져야 합니다.특히 여러 데이터베이스를 지원해야 하는 상황에서는 각 데이터.. 2025. 2. 13.
[신입 개발자의 '0' 번째 라이브러리] Dialect와 Adapter 패턴의 활용 - EPSON 써멀 프린터 라이브러리 제작기(1) 들어가며여태까지 제가 만들었던 세 가지 라이브러리 제작기를 다루었는데, 생각해보니 너무 옛날이라 깜빡 잊고 있던 라이브러리가 있더라구요 ㅎㅎ;바로 입사 2개월 차였던 2023년 11월, 주방 주문서 출력을 위한 EPSON 써멀 프린터 라이브러리 입니다.이 라이브러리의 주요 과제는 다음과 같았습니다:Epson 프린터의 명령어 셋(Command Set)을 체계적으로 관리네트워크 소켓, 시리얼 연결, 안드로이드용 Epson SDK 등 다양한 연결 방식 지원확장 가능하고 유지보수가 용이한 구조 설계사실, 처음에는 네트워크 연결만 구현하면 되는, 나름대로 단순한(?) 요구사항이었습니다.하지만 저는 조금 다르게 생각했습니다. 프린터와의 통신은 결국 동일한 명령어 셋을 전달하는 것이고, 단지 전달 방식만 다를 뿐이었.. 2024. 12. 15.
[신입 개발자의 세 번째 라이브러리] 컴파일 타임에 클래스의 FQCN 알아내기 - persistence-code-generator 개발기(4) 들어가며이전 편에서는 ValuedEnum 처리와 타입 안전성 확보에 대해 다뤘습니다.이번 편에서는 @WithConverter 구현 과정에서 마주친 문제와 그 해결 방법을 공유하고자 합니다.@WithConverter(converter: Kclass)를 통해 받은 클래스 리터럴을 통해 메타데이터에 접근할 수 없는 문제@WithConverter는 다음과 같이 구현된 간단한 어노테이션입니다:@Target(AnnotationTarget.PROPERTY)@Retention(AnnotationRetention.RUNTIME)annotation class WithConverter( val converter: KClass>)하지만 이 간단한 어노테이션의 구현 과정에서 한 가지 어려운 점에 직면했습니다.컴파일 타임 .. 2024. 12. 7.
[신입 개발자의 세 번째 라이브러리] 타입 안전한 Enum 변환과 확장성 - persistence-code-generator 개발기(3) 들어가며이번 편에서는 persistence-code-generator를 작성하며, 기본 기능 외에도 디테일한 표현이 가능하도록 신경을 쓴 부분인 ValuedEnum 처리와 컨버터 등록 어노테이션인 @WithConverter에 대해 다루어 보겠습니다.ValuedEnum: 값을 가진 열거형먼저 ValuedEnum의 개념과 그 필요성부터 이해해보겠습니다.ValuedEnum은 실제 데이터베이스에 저장될 값을 가지는 형태의 enum입니다.저는 키오스크나 포스와 같은 클라이언트 솔루션을 개발하는 개발자로서, 결제 데이터를 취합하고, 통계 데이터를 보여주는 서버(이하 '집계 서버')와의 API 통신 코드를 짤 때가 많았는데요.이 때 ValuedEnum의 유용함을 느꼈습니다.왜냐하면, 집계 서버는 단일 문자열 값으로 .. 2024. 12. 6.
728x90