본문 바로가기

Backend

(76)
Kotlin 랜덤 숫자 000000~999999 입맛에 맞게 커스텀하게 바꿔서 사용하시면 됩니다. 요런 랜덤 숫자는 보통 휴대폰 인증번호에 많이 사용하지요. 숫자 0부터 999999까지 랜덤하게 숫자를 추출한 후 문자로 변환 n자리가 아닌 숫자인 경우 0으로 채움 fun generateCertificationNumber(number: Int = 999999) = (0..number).random() .toString() .padStart(number.toString().length, '0') 4자리 랜덤 숫자 위의 function 그대로 사용하시면 되구, 요렇게 보내면 0000부터 9999까지 랜덤으로 만들어질거에요. generateCertificationNumber(9999)
Spring Boot Reactive Redis Transaction Spring Boot Reactive Redis를 사용할 때 Transaction 동작시키는 코드에요. RedisConfiguration.java @Configuration @RequiredArgsConstructor public class CouponRedisConfiguration { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Bean public RedisClient redisClient() { return RedisClient.create(RedisURI.builder() .withHost(this.host) .withPort(this.port) .build(..
Gradle 서브프로젝트 Dependencies 복사 모든 디펜던시를 복사하기 때문에 거의 무조건 버전 충돌이 일어나요. 이 점 주의하고 적용하도록 합시다. dependencies { implementation fileTree(dir: "${buildDir}/libraries", include: '*.jar') dependenciesToCopy project(':sample-domain') } configurations { dependenciesToCopy } task copyDependencies(type: Copy) { from configurations.dependenciesToCopy into "${buildDir}/libraries" }
Spring Boot Gradle Multi Modules 초간단 Spring Initializr에서 프로젝트를 생성합니다. 그리고 저는 주로 사용하지 않을 src 폴더를 삭제합니다. build.gradle을 먼저 작성해볼게요. build.gradle buildscript { ext { springBootVersion = '2.6.3' dependencyManagementVersion = '1.0.11.RELEASE' } repositories { mavenCentral() } dependencies { dependencies { classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}" classpath "io.spring.gradle:dependency-management-p..
Ktor Ktorm DB 연동 (매우 간단) Ktor Framework에서 DB 연동해볼게요. 이런 저런 샘플 예제들이 있는데 복잡하더라구요. 아래 코드가 기반이며 이를 바탕으로 확장한 된 것이라 보시면 되요. DatabaseConnection.kt DB 설정 부분이에요. import org.ktorm.database.Database object DatabaseConnection { val database: Database = Database.connect( url = "jdbc:mysql://localhost:3306/demo", driver = "com.mysql.cj.jdbc.Driver", user = "root", password = "1234", ) } Member.kt 스키마를 작성해줍니다. import org.ktorm.entity...
Ktor Install Gson Ktor Framework에서 개발한 API에서 Json을 응답하고 싶어요. 기본적으로 세팅이 되어있지 않아 Gson을 설치해줘야 하더라구요. 해결 방법은 간단해요. 설정되어 있지 않을 경우 routing 안의 API에서 List나 Object를 리턴하면 아래와 같은 오류를 접하실거에요. Response pipeline couldn't transform 'class java.util.ArrayList' to the OutgoingContent java.lang.IllegalArgumentException: Response pipeline couldn't transform 'class java.util.ArrayList' to the OutgoingContent at io.ktor.server.engine..
Ktor Application 빌드 오류 시 (Shadow Plugin) Ktor Application을 IntelliJ에서 실행할 땐 잘되는데 gradle로 단순히 빌드하고 실행하면 오류가 발생해요. 이게 오류 그대로 jvm에서 jar 파일의 main 메소드를 찾지 못했다는 오류입니다. main 메소드는 manifest에 있기 때문에 no main manifest attribute라는 문구로 알려줍니다. no main manifest attribute, in build/libs/ktor-sample-0.0.1.jar 해결 방법은 다양한대요. 구글링해보시면 build.gradle.ts 에 Main 클래스를 정의해줌으로써 간단히 해결이 가능합니다. 크게 문제될 일은 없지만 추천하는 방법은 아닙니다. Ktor 문서에서 위의 문제를 해결하기 위한 가이드를 제공합니다. Gradle ..
Ktor Framework 프로젝트 생성 Ktor Framework 알게된 후부터 지켜보기만 하고 있었어요. 귀찮아서 프로젝트도 만들어 본 적이 없었죠.. 여기저기서 쓰고 좋다는 평이 많아서 일단 세팅하고 써보려고 합니다. 툴은 IntelliJ를 사용할거에요. IntelliJ에서 하셔도 되고 아래 URL에서 프로젝트를 세팅하실 수도 있어요. https://start.ktor.io/ Generate Ktor project start.ktor.io 기본적인 프로젝트 정보입니다. 그 다음에 이런저런 플러그인들이 나오는데 스프링 부트를 써보셨으면 대강 머가먼지 이해가 쉬우실거에요. 그래도 먼가 애매해서 선택안하고 완료해봅시다. 패키지 구조 이런 모습입니다. 제가 무언가를 잘못한 건 없는 것 같은데 .gitignore 파일은 안 만들어주는 것 같네요? ..