본문 바로가기

Back-End (web)48

[Spring] Spring Cloud Config 정리 개요 MSA 아키텍처에서는 환경설정 파일을 외부에서 관리하여 설정이 바뀐 경우 서비스의 수정, 재컴파일 없이 여러 환경에서 이를 적용할 수 있게 해줍니다. 이를 위해 Spring 프레임워크는 Spring Cloud Config를 제공합니다. 기본 세팅 컨피그 서버를 사용하는 경우 구조는 [그림 1]과 같습니다. 컨피그 파일 repository가 존재하며 컨피그 서버는 뜰 때 해당 레포를 바라봅니다. 서비스들은 배포될 때 컨피그 서버에서 배포 시 환경의 환경설정 정보를 가져와서 서버를 띄워줍니다. spring boot actuator 의 refresh endpoint를 이용하여 config file의 변경점이 있다면 서버 재시작을 하지 않고도 미리 명시해둔(@RefreshScope) 컨피그들은 변경된 정보.. 2022. 5. 15.
[Kotlin] Collection - Fold, Reduce 참고 : https://kotlinlang.org/docs/collection-aggregate.html#fold-and-reduce Fold와 Reduce는 컬렉션 요소들의 연산결과를 누적해서 다음 연산에서 사용한다. 차이점은 Reduce는 처음 연산 때 첫번째, 두번째 element를 가져와서 연산을 하는 반면, Fold는 init 인자와 첫번째 element를 가져와서 연산을 한다. val list = listOf(1, 2, 3, 4, 5) list.reduce { prev, ele -> println("$prev, $ele") (prev + ele) } // 1, 2 // 3, 3 // 6, 4 // 10, 5 list.fold(0) { prev, ele -> println("$prev, $ele.. 2022. 1. 16.
PyCharm 입출력 파일 설정 https://withhamit.tistory.com/100 Visual Studio 명령 인수로 입출력 파일 설정 visual studio에서 디버깅시 파일입출력 or 콘솔에서 입출력을 하지않고 입력을 받는 방법. 디버깅 시 긴 입력값을 매번 입력하지 않을 수 있다. 프로젝트에 입력으로 받을 파일과 출력값을 저장할 withhamit.tistory.com c++ 알고리즘 코딩 시 input output을 콘솔로 입력, 출력하지 않고 파일로 입출력하게 설정하는 방법을 포스팅한 적이 있다. 이번엔 python으로 알고리즘 작성 시 사용하는 PyCharm에서 파일로 입출력을 받고 싶을 땐 어떻게 하는지에 대한 내용이다. 알고리즘 작성용 프로젝트를 하나 만든다. main.py엔 코드를 작성할 것이고 input... 2022. 1. 8.
[Kotlin] Collection - associateBy, associateWith, associate AssociateBy collection 요소에 파라미터 함수에서 반환된 값을 키 값, 요소를 value로 하는 map을 반환한다. data class Member( val no: Int, val name: String ) fun main() { val members = listOf( Member(no=10, name="A"), Member(no=20, name="B"), Member(no=30, name="C"), Member(no=40, name="D"), Member(no=50, name="E"), ) val associateMembers = members.associateBy{it.no} println(""" ${associateMembers::class.simpleName} keys : ${as.. 2021. 12. 30.
[Kotlin] Collection - all, any, count, find All collection 의 원소들이 모두 조건을 만족하는지 println(""" 모든 원소가 조건을 만족하는지 홀수인지 [1, 3, 5, 7] : ${listOf(1, 3, 5, 7).all{ it%2 == 1 }} 홀수인지 [1, 3, 5, 7, 8] : ${listOf(1, 3, 5, 7, 8).all{ it%2 == 1 }} """.trimIndent()) 모든 원소가 조건을 만족하는지 홀수인지 [1, 3, 5, 7] : true 홀수인지 [1, 3, 5, 7, 8] : false Any collection 안에 조건을 만족하는 원소가 존재하는지 println(""" 홀수가 있는지 [1, 3, 5, 6] : ${listOf(1, 3, 5, 6).any{ it%2 == 0 }} [1, 3, 5] .. 2021. 12. 29.
[Kotlin] Sealed Class Sealed Class 의 구현체들은 컴파일 시간에 알 수 있습니다. sealed class SealClass { abstract val no: Int } class A: SealClass() { override val no: Int = 12 } fun main() { // Sealed types cannot be instantiated // val sealClass = SealClass() val a = A() .also { println(it.no) } } sealed class는 abstract 멤버를 가질 수 있습니다. sealed class는 그자체로 객체가 될 수 없습니다. (Sealed types cannot be instantiated 에러 뱉음) internal class SealedCl.. 2021. 12. 28.