일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kotlin querydsl
- Elasticsearch
- AWS EKS
- PETERICA
- Spring
- 정보처리기사실기 기출문제
- mysql 튜닝
- CKA
- 정보처리기사 실기 기출문제
- aws
- Pinpoint
- 정보처리기사 실기
- kotlin
- Java
- IntelliJ
- 티스토리챌린지
- AI
- 오블완
- APM
- CKA 기출문제
- kotlin spring
- CloudWatch
- 공부
- 기록으로 실력을 쌓자
- Linux
- kotlin coroutine
- Kubernetes
- MySQL
- 코틀린 코루틴의 정석
- minikube
- Today
- Total
목록Programming (188)
피터의 개발이야기
ㅁ 들어가며 Kotlin의 스프레드 연산자(*)는 배열이나 컬렉션의 요소를 개별 인자로 전달할 때 유용하게 사용되는 기능이다. 이 연산자를 통해 코드를 더 간결하고 읽기 쉽게 만들 수 있다. ㅁ 기본 사용법val numbers = arrayOf(1, 2, 3, 4, 5)println(*numbers) // 출력: 1 2 3 4 5ㅇ 스프레드 연산자는 배열이나 컬렉션 앞에 별표(*)를 붙여 사용한다. ㅁ 함수 호출에서의 사용fun sum(vararg numbers: Int): Int = numbers.sum()val numbers = intArrayOf(1, 2, 3, 4, 5)println(sum(*numbers)) // 출력: 15ㅇ 여러 인자를 받는 함수에 배열이나 컬렉션의 요소를 개별 인자로 전달할..
ㅁ 들어가며ㅇ [Git] 깃허브(Github) 프로필 README 추가방법하는 방법을 정리하였다. ㅇ 최근 GitHub Actions에서 Node.js 버전과 관련된 에러가 발생하고 있다.ㅇ 이 문제는 GitHub가 기본 Node.js 버전을 16에서 20으로 업그레이드하면서 발생한 것이다.ㅇ 에러 메시지를 보면 다음과 같다 ㅁ 빌드 실패The following actions uses Node.js version which is deprecated and will be forced to run on node20: actions/checkout@v3, actions/setup-python@v3. For more info: https://github.blog/changelog/2024-03-07-github..
ㅁ 들어가며 Resilience4j는 마이크로서비스 아키텍처에서 내결함성을 제공하는 라이브러리로, 서킷브레이커 패턴을 쉽게 구현할 수 있게 도와준다. 여기서는 Resilience4j를 사용하여 서킷브레이커 패턴을 구현하는 방법을 예제 코드와 함께 설명한다. ㅁ 서킷브레이커 패턴이란?ㅇ 서킷브레이커 패턴은 시스템의 일부에서 장애가 발생했을 때, 그 장애가 전체 시스템으로 확산되는 것을 방지하기 위한 패턴이다. ㅁ 서킷브레이커의 세 가지 상태ㅇ 닫힘(CLOSED): 정상 상태로, 모든 요청이 통과한다.ㅇ 열림(OPEN): 장애 상태로, 모든 요청이 즉시 실패한다.ㅇ 반개방(HALF-OPEN): 테스트 상태로, 일부 요청만 통과하여 성공 여부를 확인한다. ㅁ Resilience4j 설정dependencies ..
ㅁ 들어가며ㅇ Kotlin Spring에서 API 요청에 대해 즉시 성공 응답을 반환하고, 비동기로 특정 작업을 실행하는 코드를 작성해았다.ㅇ @Async 대신 Kotlin의 코루틴을 사용하여 비동기 처리를 구현하였다. import kotlinx.coroutines.CoroutineScopeimport kotlinx.coroutines.Dispatchersimport kotlinx.coroutines.launchimport org.springframework.http.ResponseEntityimport org.springframework.web.bind.annotation.PostMappingimport org.springframework.web.bind.annotation.RequestBodyimpo..
ㅁ 들어가며ㅇ Kotlin에서 엔티티 리스트에서 ID만 추출하여 새로운 리스트를 만드는 방법을 정리하였다. ㅁ 엔티티 예제 코드// 엔티티 클래스가 다음과 같다고 가정data class Entity(val id: Long, val name: String)// 엔티티 리스트가 있다고 가정val entityList: List = listOf( Entity(1, "First"), Entity(2, "Second"), Entity(3, "Third"))// ID만 추출하여 새로운 리스트 만들기val idList: List = entityList.map { it.id }// 또는 더 명시적으로 entity 주입받기val idList: List = entityList.map { entity -> e..
ㅁ 들어가며ㅇ QueryDSL 환경구성을 하면서 발생한 에러에 대해 트러블 슈팅과정을 정리하였다. ㅁ 에러java.lang.NoSuchFieldError: TREATED_PATH at com.querydsl.jpa.JPQLTemplates.(JPQLTemplates.java:147) at com.querydsl.jpa.JPQLTemplates.(JPQLTemplates.java:51) at com.querydsl.jpa.JPQLTemplates.(JPQLTemplates.java:46) at com.querydsl.jpa.impl.JPAProvider.(JPAProvider.java:59) at com.querydsl.jpa.impl.JPAQuery.(JPAQuery.java:48) at com.quer..
ㅁ 들어가며ㅇ Kotlin Spring 프로젝트에서 MapStruct와 Lombok을 사용할 때 isCompleted가 null로 넘어오는 문제가 발생하였다.ㅇ 이를 해결하면서 Lombok과 MapStruct의 충돌에 대해서 알게 되어 이를 정리하였다.ㅇ 우선 나의 문제와 해결방법을 정리하고, 원인을 분석하는 과정에 다른 글에서 null일 수 있는 경우도 정리하였다.관련글: [Kotlin] 코틀린 MapStruct ㅁ 문제상황ㅇ reqDto.isComplated가 swagger에 보이지 않음.ㅇ MapStruct 구현부에서 isComplated가 entity로부터 값을 set받지 못하여 null.ㅇ resDto.isComplated이 결과 JSON에서 아예 키까지 빠져있음.// RequestDto: S..
ㅁ 들어가며ㅇ 대량의 파일을 JVM에서 처리할 경우 OOME의 위험이 있어, 커널에서 직접 처리하기로 결정되었다.ㅇ kotlin에서 커널에 명령을 줄 수 있고, 이를 Kotlin에서 간편하게 쓸 수 있는 방법을 찾고 있다.ㅇ kotlin으로 shell 명령어를 사용하여 파일을 복사하고 압축하는 util을 만들어 보았다. ㅁ ShellUtil.ktimport java.io.Fileobject ShellUtil { /** * cp 명령을 사용하여 파일을 복사한다. * 원본 파일 경로와 대상 경로를 인자로 받는다. * -r: 디렉토리 복사(없으면 생성) */ fun copyFile(source: String, destination: String): Boolean { ..
ㅁ 들어가며ㅇ 대량 압축작업 시 OOME(Out Of Memory Exception)의 발생을 방지하기 위한 방법을 찾는 중이다.ㅇ 지난 글, [Kotlin] ManagementFactory을 이용한 JVM 모니터링 방법에서는 JVM의 메모리 사용량을 검토하여 서킷브레이크 패턴을 적용하려고 검토하였다.ㅇ 하지만 JVM의 힙메모리를 넘어서는 경우 커널에서 압축을 진행하는 방법도 검토하게 되면서 Kotlin에서 shell을 실행하는 방법을 공부하였다. ㅁ shell 실행코드fun runCommand(command: String) { try { val process = Runtime.getRuntime().exec(command) // 명령어 실행 결과 읽기 val ..
ㅁ 들어가며ㅇ 대부분의 일자 데이터들은 YYYY-MM-DD, 년월일의 형태를 띄고 있지만, 오늘 개발했던 데이터는 YYYY-MM의 형태였다.ㅇ Kotlin에서 Querydsl을 사용하여 YYYY-MM 형태의 날짜를 between 조건으로 검색하자, 파싱 에러가 발생하였다. ㅁ Querydsl에서 YYYY-MM로 검색하는 방법ㅇ Kotlin에서 Querydsl을 사용하여 YYYY-MM 형태의 날짜를 between 조건으로 검색하는 방법먼저 YYYY-MM 형태의 문자열을 날짜 객체로 변환한다.해당 월의 시작일과 종료일을 계산한다.between 조건을 사용하여 쿼리를 작성한다. ㅁ YYYY-MM 검색 예시import com.querydsl.jpa.impl.JPAQueryFactoryimport java.ti..