일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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)
기록
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bMsW8x/btsJsmeescF/cGRhBrtKiPRW5hNLctOTq0/img.png)
소개이 포스팅에서는 C++ Builder를 사용하여 INI 파일의 경로를 사용자에게 직접 입력받지 않고, 파일 다이얼로그를 통해 선택하도록 하는 방법을 설명합니다. VCL과 Windows API를 이용한 두 가지 방법을 소개합니다.- 이전 포스팅 : 2024.09.05 - [Desktop] - [C++ Builder] INI 파일 다루기 : 파일 쓰기(1)예제 코드1. UI 구성하기먼저, C++ Builder의 폼 디자인에서 다음과 같은 컴포넌트를 추가합니다:TButton: btnOpenFolderVcl (VCL 방식으로 폴더 열기)TButton: btnOpenFolderWin (Windows API 방식으로 폴더 열기)TEdit: edtFilePath (선택된 폴더 경로 표시)2. VCL 방식으로 폴더..
시작하면서QueryDSL을 사용하여 데이터를 조회할 때 DTO를 반환하는 방법에는 크게 두 가지가 있습니다: Projections.constructor를 사용하는 방법과 **new QUserResponse(...)**를 사용하는 방법입니다. 이 글은 새로운 도메인에 대한 쿼리를 작성하려는 과정에서 작성되었습니다. 기존 도메인들을 살펴보니 두 방식이 혼재되어 있어, 어떤 방법을 선택해 DTO를 매핑하는 것이 더 적합할지 고민이 생겼습니다. 1. Projections.constructor 사용Projections.constructor는 QueryDSL이 자동으로 DTO의 생성자를 호출하여 데이터를 매핑합니다. 예를 들어, 사용자 데이터를 단순히 가져와 응답 객체로 매핑하는 경우, 이 방식은 코드가 간결하고 ..
시작하면서소프트웨어 아키텍처는 애플리케이션의 확장성과 유지보수성을 결정짓는 핵심 요소로, 설계 선택에 따라 개발 과정과 결과물에 큰 영향을 미칩니다. Layered Architecture(계층형 아키텍처)와 Hexagonal Architecture(헥사고날 아키텍처)는 서로 다른 설계 철학을 기반으로 한 대표적인 아키텍처 방식입니다. 이 글에서는 두 아키텍처의 이론적 기반과 실무적 차이를 비교하고, Kafka와 MySQL을 활용한 현실적인 예제를 통해 그 특성을 심도 있게 분석합니다.Layered Architecture (계층형 아키텍처)Layered Architecture는 소프트웨어를 여러 계층으로 나누어 설계하는 전통적이고 직관적인 방식입니다. 각 계층은 서로 독립적이면서도 특정한 역할을 수행하며,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6ZJYI/btsLZ1RQ62l/qSHlxxk44sR9RRHLJwekeK/img.png)
시작하면서JPA에서 @Query 어노테이션을 사용하여 쿼리를 작성하던 중 문법 오류를 겪었습니다. 이 오류의 원인은 바로 nativeQuery 옵션의 사용 방식에 있었습니다. nativeQuery는 JPQL(JPA Query Language)이 아닌 네이티브 쿼리(데이터베이스 종속적인 쿼리)를 사용하겠다는 의미입니다. 따라서 JPQL 문법으로 작성한 쿼리가 네이티브 쿼리로 처리되면서 문제가 발생한 것입니다.발생한 오류아래는 실제로 작성한 코드와 테스트 실행 결과입니다.@Query(value = "SELECT o FROM orders o " + "WHERE o.registeredDateTime >= :startDateTime " + "AND o.regist..
1. 서론: hawkBit와 Vaadin의 만남디바이스 소프트웨어 업데이트 관리를 위한 오픈소스 프로젝트인 hawkBit를 분석하는 과정에서 Vaadin 프레임워크를 발견하게 되었습니다. hawkBit은 Java 기반으로 작성된 백엔드와 웹 UI를 제공하는 프로젝트로, UI 구현에 Vaadin 프레임워크가 사용된 것이 인상적이었습니다. 이를 계기로 Vaadin에 대해 더 깊이 알아보고 학습을 시작하게 되었습니다.특히 hawkBit의 /hawkbit-simple-uiGit 주소 저장소는 Vaadin을 사용하여 간단한 배포 화면을 구성하고 있었으며, 다음과 같은 구조로 구성되어 있습니다.위 디렉토리 구조에서 볼 수 있듯이, AboutView.java, ConfigView.java, LoginView.java..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c7C9GD/btsLSrc5Gvl/ZiS4chFwEM46VKJ5boaypK/img.png)
TDD(Test Driven Development)소프트웨어 개발이 점점 복잡해지면서 코드 품질과 유지보수성은 중요한 과제가 되었습니다. TDD(Test Driven Development, 테스트 주도 개발)는 이러한 과제를 해결하기 위해 고안된 개발 방법론으로, 코드 작성 전에 테스트를 먼저 작성하고 이를 통해 개발을 진행합니다.TDD의 핵심 원칙:1. 테스트 작성 → 코드 작성 → 리팩토링을 반복합니다.2. 테스트는 코드의 안정성과 품질을 보장하는 필수 요소입니다.3. 작은 단위로 빠른 피드백을 얻어 점진적으로 기능을 개발합니다.왜 TDD가 중요한가?코드 품질 향상: 테스트가 요구사항을 보장하며, 불필요한 코드 작성을 방지합니다.빠른 피드백: 코드 작성 후 바로 동작 여부를 확인할 수 있어 개발 속도..
1. 테스트하기 어려운 영역: 시간 의존성소프트웨어에서 현재 시간(LocalDateTime.now())에 의존하는 코드는 테스트하기 어렵습니다. 이는 테스트 실행 시점에 따라 결과가 달라질 수 있기 때문입니다. 예를 들어:테스트가 영업 시간 내에 실행되면 성공하지만, 영업 시간 외에 실행되면 실패합니다.동일한 테스트 코드가 실행 시간에 따라 불안정한 결과를 초래합니다.2. 문제점아래의 기존 코드는 현재 시간에 직접적으로 의존하고 있어 테스트 실행 시마다 결과가 달라질 가능성이 있습니다:public Order createOrder() { LocalDateTime now = LocalDateTime.now(); LocalTime currentTime = now.toLocalTime(); if..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uui0f/btsLSQRksAd/k4UuaET6j7QqaGZvvAGEHk/img.png)
1. 해피 케이스와 예외 케이스테스트를 작성할 때 모든 시나리오를 고려하는 것은 어렵습니다. 그래서 해피 케이스와 예외 케이스로 나누어 테스트를 세분화합니다.해피 케이스(Happy Case):시스템이 정상적으로 작동할 것으로 기대되는 일반적인 상황.사용자가 예상대로 행동하고, 입력값이 유효하며, 모든 조건이 만족되는 경우를 테스트.예: 상품 주문 시, 1개 이상의 상품을 정상적으로 추가하는 경우.예외 케이스(Exception Case):시스템이 예상치 못한 입력값이나 동작에 직면했을 때 발생하는 상황.에러, 경고, 또는 비정상적인 상황에 대한 방어 코드를 확인.예: 상품을 0개 추가하려고 시도하거나, 잘못된 시간에 주문하는 경우.필요성:해피 케이스는 시스템이 정상적으로 작동함을 보장합니다.예외 케이스는 ..