일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Today
- Total
목록전체 글 (359)
기록
1. 문제 상황얼마 전, Kafka Consumer가 특정 메시지를 받아 DB에 저장하는 기능을 담당하는 서비스를 운영하던 중 Dto를 수정하는 일이 생겼습니다. 테스트 코드를 위해 생성자가 필요했고, 이에 DTO 클래스에 @Builder 어노테이션을 추가했습니다. 이를 통해 테스트 코드에서 MyDto.builder().dataId("testId").name("testName").build()와 같이 편리하게 객체를 생성할 수 있었습니다.수정된 코드는 다음과 같습니다:@Getterpublic class MyDto { private String dataId = "11111"; private String name = "22222"; // 추가 시작 @Builder public M..
1. Mock을 사용하는 상황과 사용하지 않는 상황1.1 Mock을 사용하는 상황외부 시스템과 연계되는 테스트에서 Mock 객체를 사용하면 외부 의존성을 제거하고 독립적으로 동작을 검증할 수 있습니다. 예를 들어, 이메일 전송, API 호출 등 외부 서비스에 의존하는 로직은 Mock 객체로 대체하여 테스트에서 외부 시스템의 영향을 배제해야 합니다.1.2 Mock을 사용하지 않는 상황내부 로직만 검증하는 테스트에서는 실제 객체를 사용하여 테스트를 수행하는 것이 적합합니다. 이 경우 실제 객체의 동작을 통해 로직의 정확성을 확인할 수 있습니다.1.3 Classicist vs Mockist 논쟁Mock 사용 여부와 관련된 논쟁으로 Classicist 접근법과 Mockist 접근법이 있습니다.Classicist..
CQRS 개념CQRS(Command Query Responsibility Segregation)는 소프트웨어 아키텍처 스타일 중 하나로, 시스템의 명령(Command)과 조회(Query)를 분리하여 각자의 책임을 명확히 정의합니다. 이는 대규모 애플리케이션에서 복잡성을 줄이고 성능을 최적화하기 위한 강력한 설계 방식으로, 다음과 같은 특징이 있습니다:명령(Command): 데이터 변경 작업을 처리하며, 데이터베이스에 새로운 데이터를 삽입하거나 기존 데이터를 수정 및 삭제하는 역할을 합니다. 이러한 작업은 주로 비동기적으로 처리되며, 트랜잭션을 통해 데이터의 일관성을 보장합니다.조회(Query): 데이터를 읽는 작업으로, 시스템 상태를 변경하지 않고 필요한 정보를 클라이언트에게 반환합니다. 조회 작업은 일..
시작하면서Spring Framework에서는 Bean Validation을 통해 데이터 유효성을 간편하게 검증할 수 있습니다. 이 글에서는 주요 어노테이션, Validation 적용 위치, 그리고 실제 사용 사례를 중심으로 Spring Bean Validation을 활용하는 방법을 알아보겠습니다.1. 주요 어노테이션Bean Validation에서 자주 사용되는 어노테이션은 다음과 같습니다:@NotNull: 값이 null이 아니어야 함.@NotEmpty: 빈 문자열("")이나 null이 아닌 값이어야 함 (컬렉션, 배열 등도 지원).@NotBlank: 공백만으로 이루어진 문자열이 아닌 값을 검증.@Positive: 양수 값만 허용.@Size(min = , max = ): 문자열, 컬렉션, 배열 등의 크기 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bETsAH/btsJr1hFmI4/v4AWwnWhXKSVC5xXVqErKK/img.png)
시작하면서이 포스팅에서는 C++ Builder를 사용하여 파일을 읽고 그 내용을 화면에 표시하는 기능을 구현하는 예제를 소개합니다. 간단한 사용자 인터페이스(UI)를 설정하고, 파일을 선택하고 읽을 수 있는 버튼을 추가하여 사용자가 쉽게 파일 내용을 확인할 수 있도록 합니다.SourceUI 설정(1) TEdit을 하나 만들고, EdtFilePath로 name을 지정한다.(2) TButton을 하나 만들고, BtnOpenFile로 name을 지정한다.(3) TButton을 하나 만들고, BtnRead로 name을 지정한다.(4) TMemo를 하나 만들고, MmResult로 지정한다.Open fileBtnOpenFile 버튼을 더블클릭하여 이벤트 함수를 작성합니다.void __fastcall TFormMai..
시작하면서Spring 애플리케이션에서 각 레이어는 명확한 책임 분리를 통해 유지보수성과 테스트 가능성을 향상시키며, 각 레이어에 적합한 테스트 전략을 적용할 수 있습니다. 예를 들어, Controller Layer는 클라이언트 요청을 처리하고 Service Layer를 호출하며, Service Layer는 비즈니스 로직을 처리하고 Repository Layer는 데이터 접근을 담당합니다. 아래는 Controller, Service, Repository 레이어 각각의 테스트 방법과 그 전략을 설명합니다.1. Controller Layer역할:클라이언트의 요청(Request)을 수신하고, 적절한 Service를 호출하여 응답(Response)을 생성합니다.입력값 검증과 같은 최소한의 논리만 처리합니다.테스트..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cDpozy/btsLE4ofgtW/WcWhsVyNgtxd7tpv7yqask/img.png)
1. 들어가며웹 애플리케이션 개발에서 프론트엔드와 백엔드를 통합하는 방식은 개발자에게 중요한 선택 중 하나입니다. Java 생태계에서는 Spring Boot와 같은 백엔드 프레임워크가 널리 사용되고, 프론트엔드에서는 React, Angular, Vue.js와 같은 자바스크립트 프레임워크가 주류를 이루고 있습니다.하지만 Vaadin을 사용하면 Java만으로 프론트엔드와 백엔드를 모두 개발할 수 있습니다. 이 글에서는 Vaadin의 특징을 소개하고, 간단한 게시판 애플리케이션 예제를 통해 실제로 Vaadin이 어떻게 동작하는지를 보여드리겠습니다. 2. Vaadin이란 무엇인가?Vaadin은 Java 기반의 풀스택 웹 프레임워크로, 백엔드와 프론트엔드 개발을 통합할 수 있는 강력한 도구입니다. 주요 특징은 다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/euwGfS/btsL1FC0mjU/0gsYmSCkYQPRwZ3CJwexJ0/img.png)
개요로컬에서 환경 설정 파일을 관리할 때, .gitignore를 이용해 민감 정보가 Git에 업로드되지 않도록 할 수 있습니다. 하지만 로컬에서 직접 관리하다 보면 파일 갱신을 동료에게 수동으로 공유해야 하는 불편함이 있었습니다. 이를 해결하기 위해 여러 대안을 검토했고, 최종적으로 AWS Systems Manager Parameter Store를 활용하기로 결정했습니다.1. 기존의 문제점로컬 환경 변수 관리의 불편함기존에는 .env 파일을 .gitignore에 추가하여 관리했습니다.하지만 팀원 간 환경 변수를 공유할 때, 별도의 방식(메신저, 이메일 등)으로 전달해야 했습니다.파일 업데이트 시 동기화가 어려웠으며, 실수로 Git에 올라가는 경우도 발생할 위험이 있었습니다.보안 문제환경 변수 파일을 안전..