nginx access.log에 email 정보를 masking 하기 위해서 nginx.conf에 map block을 추가하였다. 동작 request가 regex에 match되지 않으면 default로 원래 reqeust를 그대로 리턴한다. request가 regex에 match되면 regex capture 기능을 사용하여 email 부분만 하드코드로 masking하고, email 이전, 이후 부분은 그대로 사용한다. (prefix + **@** + suffix) ex: ?: regex capture block에 match되는 값을 변수로 사용할 수 있다. #nginx min version: 1.11.7 #nginx.conf http { # General include mime.types; default..
[대규모 시스템 설계 기초] 6장 : 키 - 값 저장소 설계 1. 자주 사용되는 key-value repository - Redis, Cassandra, DynamoDB 2. 조건: application과 repository의 특성에 따라 어떤 key-value 저장소를 사용할지 달라진다. - 어느 용도로 사용되나? - 키-value 크기의 제약이 있는가? - 어떤 자료구조 형태를 사용할 수 있는가? - 어느 정도의 가용성을 가질 수 있는가? - 어느 정도의 일관성을 가질 수 있는가? - 어느 정도의 확장성을 가질 수 있는가? - latency는 어느 정도까지 보장할 수 있는가? 3. 성능 개선 - 데이터 압축 - hot, cold 데이터 구분 - scale up or out - bloom filter ..
[대규모 시스템 설계 기초] 1장 : 사용자 수에 따른 규모 확장성 1. 일반적인 서비스 구성 - 일반적인 Application은 아래와 같이 구성된다. 보통 규모의 서비스는 직접 Server를 구매하여 구성하기도 한다. 하지만 대규모 서비스에서는 Application Load Balance, Auto Scaling, Security 등 다양한 기능과, 유연성 때문에 AWS같은 클라우드 사용하여 서비스를 구성하는것이 좋다. 2. 서비스 구조 - 사용자에게 빠르고 안정적인 서비스를 하기위해서 Server, CDN 등은 대륙, 국가, 도시에 존재한다. AWS를 예로들면 아래와 같다. 또한 H/A (high availability) 구성을 위해 여러 지역에 동일한 Application이 배포된다. 때문에 천재..
Lambda // Lambda expression syntax val sum: (Int, Int) -> Int = { x: Int, y: Int -> x + y } val sum = { x: Int, y: Int -> x + y } // Kotlin 규칙에 따르면 함수의 마지막 매개변수가 함수이면 해당 인수로 전달된 람다 표현식을 괄호 외부에 배치할 수 있습니다. val product = items.fold(1) { acc, e -> acc * e } // 람다가 해당 호출의 유일한 인수인 경우 괄호를 완전히 생략할 수 있습니다. run { println("...") } /* it: 단일 매개변수의 암시적 이름 람다 식에 매개변수가 하나만 있는 것은 매우 일반적입니다. 컴파일러가 매개변수 없이 서명을 구..
Function 기본 // Kotlin 함수는 다음 fun키워드를 사용하여 선언됩니다. // 컴파일러에서 리턴타입을 추론할 수 있는 경우 리턴타입을 생략할 수 있다. fun double(x: Int): Int { return 2 * x } // 함수가 단일 표현식인 경우 중괄호를 생략할 수 있고 본문은 =기호 뒤에 지정됩니다. fun double(x: Int): Int = x * 2 // 함수는 표준 접근 방식을 사용하여 호출됩니다. val result = double(2) // 멤버 함수 호출은 점 표기법을 사용합니다. Stream().read() // 함수 매개변수는 파스칼 표기법- 이름 : 유형 을 사용하여 정의됩니다. // 매개변수는 쉼표로 구분되며 각 매개변수는 명시적으로 입력해야 합니다. fu..
add dependency // 명령줄 컴파일러 또는 Ant를 사용하는 IntelliJ IDEA 프로젝트)에서는 기본적으로 추가됩니다. // 명령줄 컴파일러 및 Ant에서 -no-reflect컴파일러 옵션을 사용 kotlin-reflect.jar하여 // 클래스 경로에서 제외할 수 있습니다. dependencies { implementation "org.jetbrains.kotlin:kotlin-reflect:1.6.21" } Class references - The most basic reflection feature is getting the runtime reference to a Kotlin class. To obtain the reference to a statically known Kotlin..
Unchecked casts - 어떤 type이 들어올지 모르는 상황에서 type을 특정해서 사용하면 아래 warn이 발생한다. Warning: Unchecked cast: `Map` to `Map` - 이 warn은 아래 annotation을 추가하여 제거할 수 있다. @Suppress("UNCHECKED_CAST") fun readDictionary(file: File): Map = file.inputStream().use { TODO("Read a mapping of strings to arbitrary elements.") } // We saved a map with `Int`s into this file val intsFile = File("ints.dictionary") // Warning: ..
//기본적으로 not null var a: String = "abc" // Regular initialization means non-null by default a = null // compilation error //null이 들어올 수 있는 경우는 ? 으로 표현 var b: String? = "abc" // can be set to null b = null // ok print(b) // 명확한 조건 val b: String? = "Kotlin" if (b != null && b.length > 0) { print("String of length ${b.length}") } else { print("Empty string") } // null이면 null을 표현 val a = "Kotlin" val..
for for (item in collection) print(item) for (item: Int in ints) { // ... } for (i in 1..3) { println(i) } for (i in 6 downTo 0 step 2) { println(i) } for (i in array.indices) { println(array[i]) } for ((index, value) in array.withIndex()) { println("the element at $index is $value") } while while (x > 0) { x-- } do { val y = retrieveData() } while (y != null) // y is visible here! Returns and j..
if var max = a if (a b) { max = a } else { max = b } // As expression val max = if (a > b) a else b // blocks val max = if (a > b) { print("Choose a") a } else { print("Choose b") b } when when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { print("x is neither 1 nor 2") } } when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("other..
- Total
- Today
- Yesterday
- java EqualsAndHashCode
- Criteria
- RetryTemplate
- spring spel
- java generic
- Property
- SmartLifecycle
- Mapping
- Join Table
- JPA
- Spring JDBC Template
- JPA Criteria
- java Equals
- Charles proxy
- Embedded Mapping
- Typesafe Config
- Akka
- Embeddable Mapping
- DI
- guava
- Sprint RetryTemplate
- docker
- Spring
- @Primary
- Registrar
- Discriminate Mapping
- Spring Registrar
- Query DSL
- 복합키 Mapping
- scikit-learn
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |