KOTLIN
-
Enum의 property로 Json 변환 대상 특정하기KOTLIN 2023. 11. 1. 00:01
@JsonValue 어노테이션을 사용하면 된다. enum class Role(val value: String, val description: String) { SYSTEM("system", "시스템 설정"), USER("user", "사용자"), ASSISTANT("assistant", "ai 응답자"), FUNCTION("function", "함수 설정"); @JsonValue fun value(): String { return value } } 참고 https://www.baeldung.com/jackson-annotations#5-jsonvalue>
-
코틀린에서 Data클래스에 JPA를 사용할 때 주의해야 할 점KOTLIN 2022. 11. 27. 14:27
코틀린의 data 클래스를 JPA와 함께 사용하려던 도중 몇가지 문제가 발생하여 알아보았다. 기본생성자 코틀린에서 data타입을 이용한 객체를 구현하여 JPA를 사용할 때 기본생성자를 작성해주어야한다. 이전 자바 공부할 때 배웠듯이 JPA의 경우 reflection을 이용해서 구현되기 때문에 기본생성자가 필수이다. @Entity data class Restaurant( @Id @GeneratedValue(strategy = GenerationType.AUTO) var id: Long? = null, @Column(unique = true, nullable = false) var name: String ) { constructor() : this(null, "") } 하지만 매번 기본생성자를 생성하기 위한..
-
코틀린에서 테스트 하기 (⏳)KOTLIN 2022. 11. 27. 14:16
자바에서 실행했던 인수테스트와 API테스트를 코틀린에서도 적용하는 방법을 알아보자. API 테스트 먼저 API테스트는 간단하게 mock()을 주입해줌으로서 구현할 수 있다. 먼저 dependency에 추가해준다. dependencies { testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc") testImplementation("io.mockk:mockk:1.12.0") testImplementation("org.jetbrains.kotlin:kotlin-test-junit5:1.6.20") test..
-
📕 코틀린 동시성 프로그래밍 - Ch.2) Coroutine in ActionKOTLIN 2022. 11. 11. 15:29
스레드 생성 코틀린에서는 직관적인 프로세스로 손쉽게 스레드를 생성할 수 있다. 현재 챕터에서는 하나의 스레드로 충분하지만, 다른 챕터에서 CPU-bound, I/O-bound 작업을 효율적으로 실행하기 위한 스레드 풀을 생성한다. CoroutineDispatcher 코루틴에서 스레드는 손쉽게 생성할 수 있지만, 스레드에 직접적으로 접근하거나 통제하는 것은 불가능하다. 스레드의 가용성, 부하, 구성에 따라 코루틴을 분배하는 작업은 CoroutineDispatcher가 통제하여 수행한다. 예를 들어 ThreadPoolDispatcher를 사용하여 하나의 스레드만을 이용하여 코루틴이 실행되도록 설정할 수 있다. 코루틴에 Dispatcher를 지정하기 Dispatcher가 존재한다면 Dispatcher를 사용하..
-
📕 코틀린 동시성 프로그래밍 - Ch.1) Hello, Concurrent World!KOTLIN 2022. 11. 8. 14:04
코틀린 동시성에 대해서 공부하기 위해 '코틀린 동시성 프로그래밍 ' 책을 읽고 정리하기로 하였다. 이번엔 챕터1 부분을 읽고 정리하였다. 프로세스 프로세스란 실행되고 있는 어플리케이션의 인스턴스를 의미한다. 프로세스는 자원, 프로세스 ID 데이터, 네트워크 연결과 같은 상태를 가지고 있고 프로세스 안의 스레드는 이러한 데이터에 접근이 가능하다. 앞으로 말할 내용은 단일 프로세스안에서 여러개의 스레드를 가질 때 생길 수 있는 문제에 대해 다룬다. 스레드 스래드의 실행은 프로세스를 실행할 지시들을 포함한다. 프로세스는 기본적으로 어플리케이션을 실행할 시작점을 가진 스레드 하나를 가지는데 프로세스에 포함된 각각의 스레드는 프로세스가 가진 자원에 접근하고 변경할 수 있고 고유의 쓰레드 로컬 저장소라고 불리는 저..
-
코프링(코틀린 + 스프링부트) + 구글 스프레드 시트로 슬랙봇 만들기 - ④ 구글 스프레드 시트 사용하기KOTLIN 2022. 10. 22. 15:13
이제 구글 스프레드 시트를 데이터베이스로 사용하기 위해서 프로젝트와 연동하자. 👍 영상 → https://www.youtube.com/watch?v=8yJrQk9ShPg 사이트 → https://joanne.tistory.com/m/45?category=975630 Interact with Google Sheet API from JAVA (1) 시트 자동화를 해야하는 상황에 처했다. 🥲 TODO 👊 1. MySQL DB에 쿼리를 날려 결과를 조회한다. 2. 받아온 결과를 적절하게 Google Spreadsheet에 자동으로 입력한다. 3. 이때, 결과는 실행 시점 기준 오 joanne.tistory.com 사이트 → https://joanne.tistory.com/m/46 Interact with Goo..
-
코프링(코틀린 + 스프링부트) + 구글 스프레드 시트로 슬랙봇 만들기 - ③ 슬랙으로 메세지, view 보내기KOTLIN 2022. 10. 22. 14:30
이번에는 슬랙앱을 통해서 사용자에게 메세지, view를 보내는 방법을 확인하자. 참고한 사이트는 다음과 같다. ↓ api 공식 문서 확인하기 → https://api.slack.com/methods Web API methods | Slack api.slack.com chat.postEphemeral 확인하기 → https://api.slack.com/methods/chat.postEphemeral#text_usage chat.postEphemeral API method Sends an ephemeral message to a user in a channel. api.slack.com 이번엔 간단하게 메세지를 보내는 방법을 확인하자. 메세지 보내기 1) 채널에 메세지 보내기 단순하게 채널에 공개적으로 메세..
-
코프링(코틀린 + 스프링부트) + 구글 스프레드 시트로 슬랙봇 만들기 - ② 슬랙으로 요청받기KOTLIN 2022. 10. 22. 14:28
이번엔 슬랙으로 들어오는 요청을 확인하는 방법을 알아보자. 간단한 실행 구조 확인하기 간단하게 요청을 받고 메세지를 보내는 구조는 다음과 같다. // 간단하게 메세지 보내보기 val client = Slack.getInstance().methods() runCatching{ client.chatPostMessage{ it.token("oAuth 토큰") .channel("앱 등록 채널") .text("보낼 메세지") } }.onFailure{e-> e.printStackTrace() } // app config를 이용하여 주석 요청 확인하기 val config = AppConfig.builder() .signingSecret("signing secret") .singleTeamBotToken("oAuth..