분류 전체보기(93)
-
Kotlin 플러그인 All-open 파헤치기 (feat, JPA Fetch)
All-open 코틀린의 클래스와 메소드들은 기본적으로 final 입니다.예를 들어 아래와 같은 Parent 클래스가 있다고 하면class Parent { fun hello() = "hello world!"} 이제 Parent 클래스를 상속하지 못합니다. 말 그대로 final 이기 때문에 건드릴 수 없죠 클래스를 open 시켜준다고 한들open class Parent { fun hello() = "hello world!"} 마찬가지입니다. 따라서 아래와 같이 모두 open 키워드를 달아주어야 상속하거나 오버라이드 할 수 있습니다.open class Parent { open fun hello() = "hello world!"} all-open 플러그인은 사전에 정해둔 어노테이션을 클래..
2024.05.18 -
인증 & 인가 서비스를 위한 Swagger 기반의 ERD 그리기 2
Server 이전 글에서는 Path를 설계해봤었다.Path는 어디로부터 왔는 지 알기 위해 서버 출처가 필요하다.를 만족시키기 위해 서버를 관계시켜뒀는데, 이번 글에서는 해당 테이블을 설계해볼 것이다. 가장 먼저 떠오른 핵심적인 건, 서버 이름이다.사용자가 API를 등록할 때 서버 이름을 보고 해야되기 때문이다. 따라서 겹치지 않도록 고유하게 만들어둬야 한다.이제 뭐가 더 필요할까... 를 고민할 때 점점 그림이 복잡해지므로좋은 설계는 실제 현상을 기반으로 만든다. 원칙을 떠올려서 사용자 시나리오를 만들어보자.에서 서버가 필요한 부분은 여기다아래처럼 구분해두면 조회 성능에서 큰 차이가 있을 것이기 때문이다.그리고 관리자 입장에서 서버로 구분해두면 편리하다.특히 서버 도큐먼트 주소를 입력하는 부분을 어느정..
2024.05.14 -
인증 & 인가 서비스를 위한 Swagger 기반의 ERD 그리기 1
Drawing 나름 Swagger 결과 데이터를 보면서 만든 인터페이스를 소개하자면interface SwaggerPath { path: string; method: string; operationId: string; parameters?: SwaggerPathParameter[]; requests?: SwaggerPathRequest[]; responses: SwaggerPathResponse[]; tags: string[];}interface SwaggerPathParameter { name: string; required: boolean; type: string;}interface SwaggerPathRequest { contentType: ..
2024.05.14 -
좋은 설계를 시작하면서
Scratch 좋은 설계 카테고리의 시작은 Swagger API를 이용해 인증 & 인가 서비스를 만드는 것에서 출발했다.아래는 나름 Swagger 결과 데이터를 분석해 만든 다이어그램이다.먼저 한 일은 Swagger 결과 데이터를 타입스크립트 기반으로 파싱하는 일이었는데, 결과는 뻔하지만 좋았다.구조적으로 잘 분리했기 때문에 테스트 코드나 케이스를 만드는 것도 어렵지 않았다.여기서 느꼈던 점은좋은 설계는 쉽고 정확하게 코드를 작성하게 해준다. 사실 위와 같은 구조를 만드는 것도 어렵지 않았다. 실제 팩트(fact)를 보면서 만들었기 때문이다.이런 관점에서 본다면 빠져나갈 예외 케이스도 없었다. 만족할 만한 구조가 나온 것이다.두 번째로 느낀점은좋은 설계는 실제 현상을 기반으로 만든다. 역시 ..
2024.05.14 -
SpringBootTest에 HSQL 데이터베이스 적용기
HSQL? Spring 문서의 Data 항목을 보면 간단하게 만들 수 있는 Embeded DataSource를 소개해줍니다. DataThe Spring Framework provides extensive support for working with SQL databases, from direct JDBC access using JdbcClient or JdbcTemplate to complete “object relational mapping” technologies such as Hibernate. Spring Data provides an additional level ofdocs.spring.io 그냥 쉽게 말해 외부 데이터베이스 연결 없이 자체 구축되는 데이터베이스라고 이해하고 있습니다.후보군은 ..
2024.05.03 -
테스트 시 발생하는 위험 메시지 무시해보기
Background 사실 이 글을 작성하면서 조금 께름칙하네요.모름지기 시스템에서 뱉는 불편하다는 메시지는 잘 알고 해결해야될 듯 한데,이번 경우는 더 파고들어도 뭐가 안 나오고, 크게 걱정 없다는 조언? 들이 있어서 무시해보기로 합니다. 우리 시간은 소중하고, 짜증나는 빨간색 글씨를 없애기 위함이죠 A Java agent has been loaded dynamically 첫 번째 Warning입니다.WARNING: A Java agent has been loaded dynamically (/home/park/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.14.12/be4984cb6fd1ef1d11f218a648889df..
2024.05.01