전체글139 신입 기술공부 멘토링 후기 회사 다닌지 꽤 됐지만 신입을 처음 멘토링해봤다. 이전팀에서는 계속 막내였고, 지금팀은 주니어들이 많지만 내가 멘토링할 위치는 아녔다. 최근에 신입사원 1명을 대상으로 기술공부 멘토링을 진행했다. 위에서 시키지도 않았는데 내가 자진해서 나섰다. 지금 생각해보면 기초 공부를 다시 하고 싶은 욕구가 컸던거 같다. 그래서 멘토링을 매개로 욕구를 충족 시켰다. 스터디는 짧고 굵게 하는것을 선호해서 HTTP 완벽가이드 2~3장, 토비 스프링 1~6장만 진행하기로 했다(총 6주). 신입사원이 책을 읽고 정리해서 나에게 발표하고, 나는 부족한 설명들을 채우고 도움이 될만한 이야기를 해주는 방식으로 진행했다. 나도 매주 책을 보면서 다시 공부했는데 여러번 봤던 내용들이지만 오랫만에 보니까 또 새로웠다. 어떤점이 새로웠.. 2022. 10. 26. 유한체 곱셈과 나눗셈 곱셈 유한체에서 닫혀 있는 덧셈 $+_f$ 을 정의했듯이 유한체에서 닫혀 있는 곱셈도 정의할 수 있다. 이를 이용하여 같은 숫자를 여러 번 곱하는 거듭제곱도 정의할 수 있다. 예를들어, 위수 19의 유한체 $F_{19}$ 에서 보면, $5 *_f 3$ = (5 * 3)%19 = 15 $8 *_f 17$ = (8 * 17)%19 = 3 곱셈 결과가 직관적이지 않다. 그러나 그 때문에 곱셈에 대해서 닫혀 있게 된다. 곱셈의 결과는 항상 집합 {0, 1, ...., p-1} 에 속하게 된다. 다시 말해 유한체 안에서 정의된 연산 결과는 항상 그 유한체 안에 속해야 한다. 그리고 유한체에서도 나머지 연산을 이용하여 거듭제곱 을 할 수 있다. $F_{19}$ 에서, $7^3$ = (7 * 7 * 7)%19 = 1.. 2022. 10. 24. 유한체 덧셈과 뺄셈 유한체에서의 덧셈을 정의할 때 그 결과가 여전히 유한체에 속해 있도록 해야 한다. 즉 수학 용어로 유한체에서 덧셈이 닫혀 있도록 해야 한다. 아래와 같이 19를 위수로 하는 유한체가 있다고 해보자. $F_{19} = {0, 1, 2, ... , 18}$ 여기에서 덧셈에 닫혀 있다는 뜻은 다음과 같다. $a +_f b \in F_{19}$ 일반 정수에서의 덧셈과 구별하기 위해 + 가 아닌 $+_f$ 로 표기한다. 나머지 연산을 사용하면 앞의 식이 항상 만족하는 것을 보장 할 수 있다. cf) 위수 p로 나머지 연산 $a +_f b$ = (a+b)%19 예를 들면, $7 +_f 8$ = (7+8)%19 = 15 $11 +_f 17$ = (11+17)%19 = 9 즉 우리만의 덧셈 연산을 만든거다. 뺏셈도 비.. 2022. 10. 13. 유한체 정의 1. 유한체 정의 수학에서 유한체(finite field) 는 아래 성질을 만족하는 2개의 연산자 (+ 덧셈, * 곱셈) 를 가진 집합이며 그 집합의 원소 수가 유한하다는 특징이 있다. 집합의 원소 갯수가 유한하기 때문에 집합 크기를 표현하는 p 값을 정할 수 있다. 이 값을 집합의 위수(order) 라고 한다. 1) a 와 b 가 집합에 속해 있으면, a+b 와 a*b 도 집합 안에 있다(집합 위에 두 연산 +, * 이 닫혀 있음). => 1번 성질로 집합은 덧셈과 곱셈에 대해 닫혀 있다. 그 의미는 덧셈과 곱셈 연산의 결과가 그 집합 안에 있도록 두 연산을 정의해야 한다는 뜻이다. 예를 들어 집합 {0, 1, 2} 는 덧셈에 대해 닫혀 있지 않다. 왜냐하면 1+2=3 이고 3 은 집합 안에 없기 때문.. 2022. 10. 13. WebClient + Retry + CircuitBreaker WebClient 를 이용할 때, Retry 기능과 CircuitBreaker 기능을 추가할 수 있다. 구체적인 방법과 함께 테스트 코드는 어떻게 만드는지 알아보자. 먼저 전체 코드를 간단히 훑어보고 뒤에서 자세히 설명하겠다. 응답 status code 가 501 이상이면, CircuitBreakerException 을 만들어서 넘긴다. 하지만 timeout 에러면 0.5초 간격으로 1번 retry 를 수행한다. retry 를 수행해도 에러가 발생하면 RetryExhaustedException 으로 감싸져서 나오기 때문에 onErrorMap 으로 잡아서 cause 를 빼내 뒤로 전달한다. .exchangeToMono(clientResponse -> { if (clientResponse.rawStatusC.. 2022. 9. 24. WebClient 사용할때 주의 (8편) 1. WebClient config 기본 구조 설명 WebClient 를 사용하기 위해선 WebClientBuilder 를 활용해 만드는데 clientConnector 인자로 ReactorClientHttpConnector 객체를 생성해 넣어준다. return webClientBuilder.baseUrl(apiClientProperties.getUrl()) .clientConnector( // ReactorClientHttpConnector 를 넣어줘야함 ) .build(); cf) ReactorClientHttpConnector 객체를 생성하기 위해선 reactorResourceFactory 가 필요한데, 따로 빈 등록해야한다. 물론 없어도 객체 생성이 가능하지만 내가 만든 코드에서는 필요했다. @Be.. 2022. 9. 18. 이전 1 ··· 5 6 7 8 9 10 11 ··· 24 다음