어플리케이션에서 설정 값을 쓸때 yml에 직접 넣거나, 이런 방식을 피하기 위해 AWS Parameter store를 사용하게 됩니다. Secrets manager가 Parameter store의 상위 호환처럼 보이기도 하는데 많지는 않지만 비용이 발생하게 됩니다. (자세한 설명은 다른 블로그에서 참고) 사전작업 Secret 생성 db_username, db_password 두개의 시크릿을 생성했다. 별로 어려운건 없으니 이미지 보고 진행. Secret name은 나중에 쓰이기 되니 기억!! 자격증명 생성 IAM -> Users -> 사용자 선택 -> Security Credentials(탭)을 선택, Access keys를 생성해준다. 이때 나오는 Access Key ID와 Secret Access K..
그닥 좋은 방법은 아니지만 알아두면 요긴하게 쓰일떄가 있습니다. 제 경우 스키마를 분리하기가 곤란한 환경일때 아래와 같이 사용한 적이 있으니 내용 참고. class CustomTableStrategy: PhysicalNamingStrategy { private val prefix = "dev_" override fun toPhysicalCatalogName(logicalName: Identifier?, jdbcEnvironment: JdbcEnvironment?): Identifier? { return logicalName } override fun toPhysicalSchemaName(logicalName: Identifier?, jdbcEnvironment: JdbcEnvironment?): Iden..
함수에서 응답을 받을떄 애매하게 값을 여러개 리턴해야 하는 경우가 있는데 이럴떄 귀찮아서 Pair, Triple을 종종 사용하는 편입니다. 보통 1번 사용 예제처럼 Pair.first를 사용하는 경우가 많은데 2번처럼 바로 변수에 바인딩 해서 사용할 경우 코드도 간단해지고 아래쪽에서 first가 뭐였더라 같은 삽질을 할 필요가 없습니다. fun main() { // 1 val widthHeight = getWidthHeight() println("Width: ${widthHeight.first}, Height: ${widthHeight.second}") // 2 // val xyz = getXYZ() // val x = xyz.first // val y = xyz.second // val z = xyz...
평소처럼 restTemplate를 사용하다가 이상하게 연동이 안되는 상황 발생 (서버는 npm의 json-server 사용) fun getTest() { val body = restTemplate.getForEntity("$host/test", String::class.java).body logger.info {"body : $body"} } o.s.web.client.RestTemplate : HTTP GET http://localhost:3020/test o.s.web.client.RestTemplate : Accept=[text/plain, application/json, application/*+json, */*] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpe..
전개구문은 배열처럼 여러 요소가 하나로 관리될때 이를 풀어서 요소들로 나열할떄 사용됩니다. Javascript(Typescript) const arr1 = [0,1,2] const arr2 = [...arr1, 3] const arr3 = [...arr2, 1] console.log(arr3) // 결과 // (5) [0, 1, 2, 3, 1] Kotlin val arr1 = arrayOf(0,1,2) val arr2 = arrayOf(*arr1, 3) val arr3 = arrayOf(*arr2, 1) println(arr3.joinToString()) // 결과 // 0, 1, 2, 3, 1 결론 자바스크립트에 비하면 배열 타입만 사용 가능하기 때문에 리스트 같은 경우 TypedArray로 변환해서 ..
Intellij ideavim 플러그인 사용 시 다음의 파일을 홈 경로에 넣어준다. (윈도우의 경우 C:\Users\donnert\.ideavimrc) 인텔리제이의 경우 액션(:action)을 지원해서 그냥 가져다가 키랑 매핑해서 쓰기만 하면 된다 (https://gist.github.com/zchee/9c78f91cc5ad771c1f5d) 주요기능 세미콜론도 콜론으로 jj : 입력모드 탈출 H : 줄 제일 앞 L : 줄 제일 뒤 컨트롤+H : 뒤로가기 컨트롤+L : 앞으로 가기 gfu : 클래스/메소드 사용하는부분 찾기 gd: 변수 선언으로 이동 gb: 변수 타입 선언으로 이용 grn : 이름 변경(변수 클래스 등) gw : 단어 선택 .ideavimrc " 기본설정 set ignorecase set ..
히카리 풀을 사용하게 되면 housekeeper란 놈이 기본으로 30초마다 풀 상태를 debug모드로 찍고있는데 커스터마이징이 잘 안되서 별도로 찍기로 함 @SpringBootApplication @EnableScheduling class ApiApplication( val dataSource: DataSource) { @Scheduled(fixedDelay = 10000) fun hikariPoolMonitor() { (DirectFieldAccessor(dataSource).getPropertyValue("pool") as HikariPool?)?.let { hikariPool -> logger().info("Pool stats (total=${hikariPool.totalConnections}, a..
다음과 같이 여러개의 작업을 동시에 처리할때 작업1,2가 메인작업과 별개의 작업일때 비동기(@Async)로 던져놓고 메인 작업만 완료 후 응답을 주기도 합니다. (응답시간 0.5초, 작업1,2의 결과 받을 수 없음) 메인작업 : 0.5초 작업1 : 1초 작업2 : 2초 하지만 3가지 작업의 결과가 모두 필요할 경우 동기 처리를 하면 3.5초가 걸리지만 작업1, 2를 비동기로 처리하면 일찍 처리가 끝난 작업은 모든 작업이 완료될때까지 대기 후 응답을 줍니다. (응답시간 2초, 3개의 작업 결과 확인 가능) Kotlin @RestController @EnableAsync class ThreadTest( val taskService: TaskService, val mainService: MainService ..
- Total
- Today
- Yesterday
- Linux
- Eclipse
- resttemplate
- vrapper
- Spring
- Database
- Access
- maven
- 도커
- Shell
- Build
- vim
- oracle
- properties
- IntelliJ
- 맛집
- docker
- Kotlin
- grant
- 합정
- 코틀린
- Tomcat
- mybatis
- 톰캣
- ls
- vi
- Profile
- jQuery
- java
- boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |