일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CKA 기출문제
- kotlin spring
- Pinpoint
- 정보처리기사실기 기출문제
- 정보처리기사 실기
- 티스토리챌린지
- 기록으로 실력을 쌓자
- IntelliJ
- minikube
- Linux
- kotlin
- Java
- Spring
- Kubernetes
- kotlin coroutine
- 공부
- 코틀린 코루틴의 정석
- 오블완
- AWS EKS
- MySQL
- PETERICA
- CloudWatch
- aws
- AI
- 정보처리기사 실기 기출문제
- kotlin querydsl
- mysql 튜닝
- APM
- Elasticsearch
- CKA
- Today
- Total
목록Programming/Kotlin (69)
피터의 개발이야기
ㅁ 들어가며kotlinOptions { freeCompilerArgs = listOf("-Xjsr305=strict") jvmTarget = "17"}이 글은 내가 자주 보았던 위의 옵셩에 대해서 정리하였다. 즉, Kotlin과 Spring 환경에서 JSR-305 지원에 대해 정리한다. ㅁ JSR-305란 무엇인가요? JSR-305는 Java에서 널(null) 안정성을 향상시키기 위한 어노테이션 표준이다. 이 표준은 코드의 의도를 명확히 하고 널 관련 버그를 줄이는 데 도움을 준다.ㅁ Kotlin에서 JSR-305의 중요성 Kotlin은 기본적으로 널 안정성을 제공하지만, Java와의 상호 운용성을 위해 JSR-305 지원이 필요하다. Java 코드에서 사용된 JSR-305 어노테이션을 Ko..
ㅁ 들어가며ㅇ Kotlin의 채널은 코루틴 간에 데이터를 안전하게 전송하고 공유하기 위한 통신 기본 요소다. 채널은 동시성 프로그래밍에서 매우 유용한 도구로, 생산자-소비자 패턴을 구현하는 데 특히 적합하다. ㅁ 채널의 기본 개념ㅇ 채널은 일종의 파이프라인으로 생각할 수 있다. 개념적으로 큐와 유사하다. 한쪽 끝에서 데이터를 보내고 다른 쪽 끝에서 데이터를 받는다. 이를 통해 여러 코루틴 간의 안전한 통신이 가능해진다. @Testfun should_pass_data_from_one_coroutine_to_another() { runBlocking { // given val channel = Channel() // when launch { // cor..
ㅁ 들어가며ㅇ 지난 글, [Kotlin] Kotlin에서 Long 타입이 null일 때 기본값을 설정하는 방법에서 null 값인 경우 기본값 처리 방법에 대해서 정리하였는데, 이를 응용하여 requestDto.somethingSeq가 null인 경우를 분기 처리하는 방법은 여러 가지가 있어서 그 방법을 정리해 보았다. ㅁ 안전호출 연산자(?)와 엘비스 연산자(?:)val result = requestDto.somethingSeq?.let { seq -> // seq가 null이 아닌 경우 실행될 코드 "Sequence: $seq"} ?: run { // seq가 null인 경우 실행될 코드 "Sequence is null"} ㅁ when 표현식 사용val result = when (..
ㅁ 들어가며ㅇ Kotlin을 2024.5부터 사용하면서, [Kotlin] 널 안정성, Null safety을 정리하였다.ㅇ 실질적인 코딩을 하면서 기본값 세팅하는 방법을 정리하게 되었다.ㅇ 이번 글에서는 Kotlin에서 Long 타입이 null일 때 기본값을 설정하는 방법을 정리해 보았다.ㅁ 엘비스 연산자 (?:) 사용val nullableLong: Long? = nullval result = nullableLong ?: 0L이 방법에서는 nullableLong이 null이면 0L(Long 타입의 0)이 result에 할당된다. ㅁ 안전 호출 연산자 (?.)와 엘비스 연산자 (?:) 조합// Kotlinval nullableLong: Long? = nullval result = nullableLong?..
ㅁ 들어가며ㅇ Java Spring의 Builder 패턴은 복잡한 생성자를 편리하게 생성할 수 있게 해준다.ㅇ Kotlin은 기본적으로 Builder 패턴을 사용하지 않아도 되는 언어적 특징을 가지고 있다.ㅇ 그럼에도 특정 상황에서는 Builder 패턴을 활용할 수 있다.ㅇ Kotlin에서 Spring의 Builder 패턴을 사용하는 방법에 대해 알아보았다. ㅁ Kotlin의 언어적 특징ㅇ Kotlin은 기본 생성자와 함께 named arguments와 default parameters(기본값 선언) 기능을 제공한다. ㅇ 이 두 가지 기능을 활용하면, 자바에서 흔히 사용하는 Builder 패턴 없이도 객체를 유연하게 생성할 수 있다. // 샘플 dtodata class User( val name: ..
ㅁ 들어가며ㅇ [Kotlin] Spring Boot 멀티모듈 프로젝트 구성하기를 수행하였다.ㅇ Kotlin 멀티모듈 프로젝트를 개발하다 보면 특정 모듈을 다른 프로젝트에서 재사용하고 싶을 때가 있다. ㅇ 이때 해당 모듈을 JAR 파일로 배포하면 편리하게 참조할 수 있다. ㅇ 이 글에서는, Kotlin 멀티모듈 프로젝트에서 Gradle을 설정하여 특정 모듈을 JAR 파일로 배포하는 방법을 정리하였다. ㅁ 프로젝트 구조ㅇ 멀티 모듈 프로젝트는 일반적으로 다음과 같은 구조를 가진다kotlin-multi-module│├── build.gradle.kts├── settings.gradle.kts│├── common│ ├── build.gradle.kts│ └── src/main/kotlin/com/pete..
ㅁ 들어가며 Reason: Paging query needs to have a Pageable parameter; Offending method: public abstract org.springframework.data.domain.Pageㅇ Spring Data JPA를 사용하여 페이징 쿼리를 실행할 때 발생하는 오류 메시지이다.ㅇ"Paging query needs to have a Pageable parameter"는 페이징 기능을 사용하려면 Pageable 파라미터가 필요하다는 의미이다.ㅇ 이 문제를 해결하기 위해서는 리포지토리 메서드에 Pageable 파라미터를 추가해야 한다.ㅇ 페이징 처리는 [Kotlin] Spring Boot와 Kotlin으로 QueryDSL 페이징 처리하기 ㅁ Import ..
ㅁ 들어가며ㅇ api, batch, gateway, internel...를 구성하면서, 반복되는 Util, Dto, Entity, Service, Enum...을 만나게 된다.ㅇ 동일한 파일을 여러번 변경하기도 하고, 프로젝트별로 변경된 Util은 공통으로 관리하기도 어렵다.ㅇ 예로, 프로젝트가 10개이면, dto 하나 수정하고 PR 10번 올려야 한다.ㅇ 공통 기능을 모듈화하여 코드의 재사용성을 높이고 의존성 관리를 개선하기 위해 멀티 모듈은 꼭!! 필요하다.ㅇ 이번 글에서는 Kotlin Spring Boot 프로젝트를 멀티모듈로 구성하는 방법을 정리하였다. ㅁ 멀티 모듈 프로젝트의 필요성ㅇ 코드 재사용성 - 공통 기능을 개별 모듈에서 분리하여 공통으로 만들면 재사용이 가능하다. - 중복코드를 ..
ㅁ 들어가며ㅇ 신규 프로젝트에서 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..