일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 정보처리기사 실기 기출문제
- IntelliJ
- PETERICA
- aws
- kotlin spring
- Linux
- mysql 튜닝
- MySQL
- Elasticsearch
- AWS EKS
- CloudWatch
- 기록으로 실력을 쌓자
- Java
- CKA
- Kubernetes
- 공부
- 티스토리챌린지
- kotlin querydsl
- 정보처리기사 실기
- CKA 기출문제
- minikube
- 정보처리기사실기 기출문제
- AI
- kotlin coroutine
- Pinpoint
- Spring
- 코틀린 코루틴의 정석
- APM
- 오블완
- kotlin
- Today
- Total
목록전체 글 (777)
피터의 개발이야기
ㅁ 들어가며ㅇ 신규 프로젝트에서 Kotlin JDSL을 사용하게 되어, 관련 공부를 하면서 참조 목록과 주요 문법을 정리해 보았다. ㅁ Kotlin JDSL란? Kotlin JDSL은 Kotlin의 DSL(Domain Specific Language) 기능을 활용하여 JPA Criteria API를 더 직관적이고 간결하게 작성할 수 있도록 한다. KProperty를 사용하여 메타모델을 사용하지 않고도 안전한 코드를 작성할 수 있다. ㅁ 주요문법@Entitydata class Order( @Id @GeneratedValue val id: Long, val purchaserId: Long, val amount: Double)ㅇ Order를 가정해 보자. val query = queryF..
ㅁ 들어가며ㅇ QueryDSL의 Q클래스 생성 과정에서 Entity를 참조하지 못하는 문제가 발생하여, 주요 원인과 해결 방법을 정리하였다. ㅁ 에러/Users/peterseo/study/kotlin/spring-jpa-query-dsl/build/generated/source/kapt/main/org/peterica/springjpaquerydsl/domain/QProductsEntity.java:16: error: cannot find symbolpublic class QProductsEntity extends EntityPathBase { ^ symbol: class ProductsEntityㅇ 빌드 시 Q..
ㅁ 들어가며ㅇ Kotlin으로 Spring 프로젝트를 개발할 때, all-open과 no-arg 플러그인은 매우 유용하다. ㅇ 이 두 플러그인의 필요성과 역할을 잘 정리한 Kotlin으로 Spring 개발할 때을 보고 정리하였다. ㅁ all-open 플러그인의 필요성ㅇ Kotlin은 기본적으로 클래스와 메서드가 final로 선언된다. ㅇ 이는 상속을 막기 때문에 Spring의 CGLIB Proxy와 같은 기능을 사용할 때 문제가 발생한다. ㅇ CGLIB Proxy는 대상 클래스를 상속하여 프록시 객체를 생성하기 때문에, 대상 클래스가 open 상태여야 한다.ㅇ all-open 플러그인은 특정 어노테이션이 붙은 클래스에 대해 자동으로 open 키워드를 추가해준다. allOpen { annotatio..
ㅁ 들어가며ㅇ 리플렉션(Reflection)은 자바 프로그래밍 언어에서 실행 중인 프로그램이 자신의 구조를 검사하고 수정할 수 있는 기능이다.ㅇ 이를 통해 클래스, 인터페이스, 필드, 메서드 등의 정보를 런타임에 동적으로 접근하고 조작할 수 있다.ㅇ 리플렉션은 주로 컴파일 시점에 알 수 없는 객체를 다룰 때 유용하게 사용된다. ㅁ 리플렉션의 주요 기능필드 접근하기class Person {var name: String? = null var age: Int? = null constructor() // 기본 생성자 constructor(name: String) { this.name = name } constructor(age: Int) { this.age ..
ㅁ 들어가며ㅇ Elasticsearch와 연동하는 작업 중에 SSL 인증서 에러가 발생하였다. ㅇ 이를 분석하고 해결하는 과정을 글로 남긴다. ㅁ 에러 내용Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetㅇ SSL 통신을 위해서는 인증서를 교환해야하지만, 인증서를 찾을 수 없다는 에러 메시지이다.ㅇ [Elasticsearch] Elasticsearch + Kibana 설치하기 with Docker에서 curl로..
ㅁ 들어가며ㅇ Spring Data Elasticsearch를 Kotlin으로 예제 코드를 작성해보겠다. ㅇ 이 글은 Kotlin과 Spring Boot를 사용하여 Elasticsearch에 데이터를 저장하고, JPA로 등록 조회 방법을 정리하였다. ㅁ 관련 글ㅇ [kotlin] Spring Data Elasticsearch 샘플코드ㅇ [Elasticsearch] Elasticsearch + Kibana 설치하기 with Dockerㅇ [Elasticsearch] Docker로 Elasticsearch 설치 및 테스트하기ㅇ [Elasticsearch] Kibana Query Language 사용법 정리 ㅁ Elasticsearch API-KEY 생성ㅇ Elasticsearch와 통신하기 위해서 api-k..
ㅁ 들어가며ㅇ Spring Data JPA를 사용할 때 개발자들이 자주 마주치는 고민 중 하나는 데이터베이스 스키마를 어떻게 관리할 것인가 하는 점이다. ㅇ 특히 개발 과정에서 엔티티 클래스가 자주 변경되는 경우, 이를 데이터베이스 스키마에 반영하는 작업이 번거로울 수 있다.ㅇ 이런 상황에서 JPA의 ddl-auto 기능은 매우 유용한 도구가 된다. ㅁ 관련 글ㅇ [Spring] JUnit5 조건부 테스트 실행방법 ㄴ JPA의 ddl-auto 기능과 함께 사용하면 개발환경 별 자동 테스트 환경을 구축할 수 있다. ㅁ ddl-auto란?ㅇ ddl-auto는 JPA가 제공하는 기능으로, 애플리케이션 실행 시 데이터베이스 스키마를 자동으로 관리해주는 옵션이다. ㅇ 이 기능을 사용하면 엔티티 클래스의 변경사항..
ㅁ 들어가며ㅇ 새로운 프로젝트에서 코틀린을 처음 쓰게 되었다.ㅇ 또한 Querydsl도 사용하고 있어서 연습을 위해 프로젝트를 생성하는 과정을 정리하였다.ㅇ Querydsl은 SpringBoot 버전 마다 설정법이 달라 참조하는 설명마다 설정 방법이 달랐다.ㅇ 내가 성공한 기준으로 이력을 남겨놓는다. ㅁ 프로젝트 생성ㅇ Spring Data JPA와 MySQL Driver, Elasticsearch를 추가하였다. ㅁ 의존성 추가import org.jetbrains.kotlin.gradle.tasks.KotlinCompileplugins { id("org.springframework.boot") version "3.1.0" id("io.spring.dependency-management") ve..
ㅁ 들어가며ㅇ Kotlin Spring 프로젝트를 Gradle로 빌드할 때 다음과 같은 경고 메시지가 나타나 이를 해결하는 과정을 이력으로 남겨 본다.ㅇ 검색을 해보니 인텔리제이 변경, Gradle 경고 모드 변경, Gradle 버전 변경 방법들이 있어 각각 적용해 보았다. ㅁ 경고 메시지Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.ㅇ 이 경고는 프로젝트에서 사용 중인 Gradle 기능 중 일부가 더 이상 사용되지 않으며, Gradle 9.0과 호환되지 않을 수 있음을 나타낸다. ㅇ 이 문제를 해결하기 위한 몇 가지 방법을 찾아 보았다. ㅁ해결 방법 1: IntelliJ IDEA 설정 변..
파일 폴더를 압축하고 에러 처리가 가능한 shell(tar 버젼)#!/bin/bash# 압축할 폴더와 결과 파일 이름을 인자로 받음SOURCE_DIR="$1"OUTPUT_FILE="$2"# 함수: 에러 메시지 출력 및 종료error_exit() { echo "에러: $1" >&2 exit 1}# 인자 개수 확인if [ $# -ne 2 ]; then error_exit "사용법: $0 "fi# 소스 디렉토리 존재 확인if [ ! -d "$SOURCE_DIR" ]; then error_exit "지정한 폴더가 존재하지 않습니다: $SOURCE_DIR"fi# 출력 파일 이름이 .tar.gz로 끝나는지 확인if [[ "$OUTPUT_FILE" != *.tar.gz ]]; then O..
ㅁ 들어가며ㅇ Kibana Query Language(KQL)는 Elasticsearch 데이터를 효과적으로 검색하고 필터링하기 위한 강력한 쿼리 언어다. 이 글에서는 KQL의 주요 기능과 사용법을 정리하였다. ㅁ 관련 글ㅇ [kotlin] Spring Data Elasticsearch 샘플코드ㅇ [Elasticsearch] Elasticsearch + Kibana 설치하기 with Dockerㅇ [Elasticsearch] Docker로 Elasticsearch 설치 및 테스트하기ㅇ [Elasticsearch] Kibana Query Language 사용법 정리 ㅁ 기본 구문field:valueㅇ 예를 들어 username:john은 username이 john인 데이터를 조회한다. ㅁ 와일드카드 검색*..
ㅁ 들어가며ㅇ [Elasticsearch] Docker로 Elasticsearch 설치 및 테스트하기에서 Elasticsearch를설치하였다.ㅇ 공식 문서 - Install Elasticsearch with Docker의 내용을 토대로 docker 설치과정을 맥미니에서 수행해 보았다.ㅇ 테스트 용으로 단일 노드 클러스터로 진행하였다. ㅁ 관련 글ㅇ [kotlin] Spring Data Elasticsearch 샘플코드ㅇ [Elasticsearch] Elasticsearch + Kibana 설치하기 with Dockerㅇ [Elasticsearch] Docker로 Elasticsearch 설치 및 테스트하기ㅇ [Elasticsearch] Kibana Query Language 사용법 정리 ㅁ elasti..
ㅁ 들어가며ㅇ ktlint는 Kotlin 코드의 스타일을 체크하고 포맷팅하는 도구다.ㅇ 이 글에서는 Spring Boot와 Kotlin을 사용하는 프로젝트에 ktlint를 설정하는 방법을 설명한다. ㅁ build.gradle.kts 파일 수정plugins { id("org.jlleitschuh.gradle.ktlint") version "12.1.0"}ktlint { verbose.set(true) outputToConsole.set(true) coloredOutput.set(true) reporters { reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.CHECKSTYLE) reporter(..
ㅁ 들어가며ㅇ [Kotlin] Spring Boot와 Kotlin으로 QueryDSL 페이징 처리하기을 작성하면서 Circular view path 에러가 발생하여 해결방법을 정리하였다. ㅁ 에러 내용jakarta.servlet.ServletException: Circular view path [products]: would dispatch back to the current handler URL [/products] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)ㅇ REST API 컨트롤러에서 뷰 리졸버(View Reso..
ㅁ 들어가며 지난 글, [Spring] Kotlin으로 JPA Querydsl 세팅에서 Spring Boot와 Kotlin을 사용하여 QueryDSL을 적용한 프로젝트를 구성하였다. QueryDSL을 사용하면 동적 쿼리를 쉽게 작성할 수 있으며, Spring Data의 페이징 기능을 활용하면 대량의 데이터를 효율적으로 처리할 수 있다. 이번 글에서는 Spring Boot와 Kotlin을 사용하여 QueryDSL을 적용한 프로젝트에서 페이징 처리를 구현하는 방법을 정리하였다. ㅁ Repository 인터페이스 생성import org.springframework.data.domain.*import org.springframework.data.jpa.repository.JpaRepositoryinterfac..