1편 : https://velog.io/@bernoyoun/kotlin-deepshallowwide-dive-deep-suspend-1그러면 이제 state machine이 뭔지를 좀 알아보자.혹시 state pattern(상태 패턴)이라는걸 design pattern 공부할때 본 적이 있는 사람이 있을 수 있다. 그래도 우리 같이 복습하는 의미로 다시 봐보자.https://refactoring.guru/design-patterns/state기본적으로는 FSM(finite-state machine)에서 컨셉을 상당히 가져온 것 같다.간단히 요약해보면각 상태에 대해서는 유한한 개수(finite)하게 존재함각 상태에 따라서 행동이 달라지며 미리 결정됨현재 상태에서 다른 상태로 전환을 할 수 있고 안할 수 도..
JAVA
ref: https://kotlinlang.org/docs/coroutines-basics.html#suspending-functions이미 코루틴을 사용해봤고 약간 알고 있다고 가정하겠습니다.다시 처음부터. suspend가 뭐라고?그니까 멈추게 할 수 있다! 이거다. 그니까 만약 suspend fun foo(): Int { return 0;}와 같은 함수가 존재한다면 컴파일 되면서 요렇게 변한다.fun foo(continuation: Continuation): Any???? : 파라미터가 있으면요?suspend fun foo(param1: Param): Int { return 0;}와 같이 있었다면fun foo(param1: Param, continuation:Continuation): An..
https://velog.io/@bernoyoun/kotlin-deepshallowwide-dive-wide-lateinit-%EA%B3%BC-lazy [kotlin deep/shallow/wide dive] wide - lateinit 과 lazykotlin을 사용하다 보면 나중에 초기화를 하기 위해 lateinit 과 lazy를 사용하곤 하는데 그래서 이게 뭐가 다르다고?일단 공식문서에서 다시 한번 lateinit과 lazy by에 대해서 슥 읽어보자.https://kotlinlangvelog.io
0. 이 글을 작성하는 이유누군가 당할 수 있고 나도 당했기 때문에 정말 아주 짧고 간단히 정리를 해보기 위함 1. 코드도 최소한으로, 하지만 상상력을 당신에게 부여하며오늘도 서버개발자는 평화롭게 코딩을 하던 중 클라이언트 파트에게 연락이 왔다. 클라 : 님 아니 우리 boolean은 앞에 is붙이기로 했잖아요 왜 갑자기 안 붙여서 보내요서버 : ????? 저 건든 거 없어요클라 : 아니 진짜 안붙어서 온다니까서버 : 리스폰스 줘봐요클라 : { "expiryDate": 1741527664.202672300, "name": "tester1", "age": 444, "paid": true, "ageAvailable": true, "dateAvailable": true}서버 :..
0. 이 글을 작성하는 이유 토이 프로젝트를 진행하면서 gRPC를 사용하려는데 rpc파일들은 submodule로 관리를 하려고 한다. 일단 붙이긴 해서 여기서 더 효율적인 gradle내용과 이쁘게 하기 위해 수정은 해야겠지만 기록 및 공유하기 위함 1. 일단 왜 gRPC를 붙이려고 했는가? 토이 프로젝트가 MSA환경으로 구축하고 있는데 각 서비스 간 통신을 하기 위해 gRPC를 택했다. 2. 그래서 gradle은 어떻게 했는가? 인터넷 짜집기를 좀 많이 했다. 분명 수정해야 할 것들이 존재할 거다. 내가 작성한 gradle은 아래와 같다. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import com.google.protobuf.gradle.* pl..
0. 이 글을 작성하는 이유 Spring API Gateway를 사용하며 정리하기 위해 1. 이전 글에서 좀 달라진 점 이전 글 : https://developer-youn.tistory.com/174 Spring Cloud Netflix Zuul을 바라보며 0. 이 글을 작성하는 이유 회사에서 API Gateway에 Spring Cloud Netflix Zuul이 적용되어 있는데 이게 뭐 하는 놈인지 간단하게 알고 가기 위함(추후 더 자세히 작성되는 글이 올라올 수도..) 1. Spring Cloud와 developer-youn.tistory.com 토이프로젝트에서 kotlin + jdk17 + spring boot3을 사용하며 API Gateway를 사용하려고 했는데 netflix-zuul의 경우 더..
0. 이 글의 목적 테스트 환경에서 H2를 사용하다 보니 jsonb같은 dialect를 이해하지 못하는 상황이 발생함 Postgresql95Dialect로 dialect에 대해 설정하는 등 다양한 방법을 시도해 보았으나 실패하다 테스트 DB자체를 바꾸면 되는 거 아닌가 하는 생각으로 구글링과 함께 스타트 1. 동작 방식 요약 postgresql 도커 컨테이너를 내부적으로 띄워서 h2가 아닌 이 컨테이너와 통신하며 테스트를 진행하는 방식입니다. 초기 이미지 pulling으로 인해 시간이 조금 더 걸릴 수 있습니다. 2. gradle 설정 testImplementation("org.testcontainers:testcontainers:1.17.3") testImplementation("org.testcont..
0. 이 글을 작성하는 이유 회사에서 API Gateway에 Spring Cloud Netflix Zuul이 적용되어 있는데 이게 뭐 하는 놈인지 간단하게 알고 가기 위함(추후 더 자세히 작성되는 글이 올라올 수도..) 1. Spring Cloud와 Spring Cloud Zuul 우선 Spring Cloud는 MSA를 구축할 때 도움이 되는 여러 기능들을 제공한다. Spring Cloud의 프로젝트 안에 다양한 프로젝트들이 존재하는데 그중 Spring Cloud Netflix가 존재한다. Spring Cloud Netflix에는 Zuul이 포함되어 있다. 정확히는 Spring Cloud Zuul이 아닌 Netflix Zuul이고 이를 Spring Cloud에서 활용한 기술이 활용한 기술이 Spring ..
0. 이 글을 작성하는 이유 코틀린의 Class에서 상속을 받는 경우 ()를 붙이는 경우가 있고 안 붙이는 경우가 있다. 어떤 차이가 있는지 약간의 부연 설명을 더해서 정리하기 위해 1. Kotlin에서의 상속과 구현 Kotlin은 Java와는 다르게 extends나 implements키워드 없이 : 키워드 하나로 모든 것을 처리하고 있다. class Animal : AnimalInterface { } class Carnivore : Animal(),CarnivoreInterface { } 여기서 Java 사용자가 두 가지 부자연스럽게 느끼는 부분이 생겼다. 왜 갑자기 빨간 줄이 생겼으며 소괄호를 만들었는가 2. Kotlin의 Open키워드 Java에서는 기본적으로 클래스 생성 시 모든 접근 제어자가 d..
0. 이 글을 작성하는 이유 코틀린에서 TODO가 재미있어 보여서 간단하게 정리하기 위함 1. TODO? 기존 JAVA에 익숙한 사람이라면 //TODO “impl sort logic” 같이 뭔가를 해야하는 것들에 대해 주석을 달아본 경험이 있을 것이다. Kotlin에서는 TODO라는 객체가 존재한다. 둘 다 IDE(Intellij 기준) Project의 TODO로 검색이 되는 것은 동일하다. 그렇다면 객체에는 어떤 내용이 있을까 2. TODO 객체 TODO는 2가지로 오버로드 되어있는데 단순히 에러를 던지는 메서드와 내용을 담아 던지는 메서드 2개가 있다. 이렇게 되면 상당히 직관적으로 TODO를 사용할 수 있게 된다. TODO(”이거 구현해야함”)을 넣은 경우 아직 구현되지 않은 것에 대해 NotImp..