안녕하세요. 오랫만입니다. 이번 시간에는 제가 출제한 가희와 비행기 문제를 보도록 하겠습니다. 문제를 다 이해하셨다면, 구하려고 하는 것은 그리 어렵지 않음을 알 수 있습니다. 김포 공항에서 김해 공항까지 수평 거리가 d일 때, 조건에 맞게 비행할 수 있는 가짓수를 구하는 것인데요. x인 지점에서 비행기의 고도가 h라고 해 보겠습니다. 그러면 x-1인 지점에서부터 고도가 1만큼 하강하거나, 혹은 고도가 1만큼 상승하는 이 두 가지 경우밖에 없습니다. 그래서, dp[x][h]를 x인 지점에서 고도가 h인 경우라고 정의하면, dp[x][h]는 dp[x][h-1] + dp[x][h+1]이 됩니다. 그런데, 예외가 있습니다. 중간에 착륙하는 경우는 없다고 했어요. 그렇기 때문에, x가 0이거나 d가 아닐 때, ..
전체 글 검색 결과
logback의 MDC에 대해서 문서를 보면서 공부하고 있습니다. 내부적으로 ThreadLocal을 이용을 한다는 것을 질문 답변 글에서 확인하였고, 그것 때문에 이 부분에 대해서도 공부를 하게 되었어요. 저는, 최근에 토이 프로젝트에서 요청을 날린 client의 ip를 로그에 추가하도록 바꾸었는데요. 이 과정에서 MDC를 이용하게 되었어요. 제 logback은 1.2.9 버전을 쓰고 있습니다. logback-spring.xml에서 encoder의 pattern을 %X{AAA} - %msg%n 이렇게 설정을 하였습니다. 여기서 제가 궁금했던 것은 %X라는 친구가 어떤 식으로 내부적으로 동작을 해서, MDC에 있는 것을 읽어오느냐는 것이였습니다. 이 %X는 MDC에서 AAA를 key값으로 가지는 value..
안녕하세요. 도서관 토이 프로젝트에서 logging을 하는 기능을 추가하려고 했습니다. 이 중에, client의 ip address와 Host name, 그리고 요청 id 등을 추가해야 했는데요. 이를 어떻게 처리해야 하나 찾던 도중에 logback의 MDC를 알게 되었습니다. 그리고, 이것이 어떤 식으로 동작하는지 간단하게 질문글들을 찾아보니, 내부적으로 ThreadLocal을 쓴다는 답변이 있었습니다. java의 ThreadLocal은 처음 들어봤는데요. 꽤 오래 전부터 있었던 듯 해서, 이번 기회에 간단하게 정리해 보았습니다. 먼저, ThreadLocal에는 get, set, remove 이 정도밖에 없어요. 저 3개를 쓰는 간단한 예제 먼저 보고, 어떤 식으로 동작하는지 간단하게 내부만 보도록 하..
저는 우분투를 쓰고 있어요. 저번 시간에 openjdk를 설치하면서 apt search 명령어를 이용했는데요. 어떻게 쓰는지 간단하게 알아보겠습니다. 먼저 apt에 대한 설명을 보면, package management system의 CLI 인터페이스라고 되어 있어요. 패키지 관리를 할 때 많이 쓰는 명령어인가 봅니다. 이 중에서, 제가 jdk를 설치할 때 썼던 search를 보겠습니다. 이것을 보면, regex를 이용해서 패키지를 찾을 수 있다고 되어 있어요. 정규 표현식을 이용해서 찾을 수 있다는 말은 ^openjdk 이런 식으로 패턴을 먹일 수도 있다는 의미입니다. 저것의 의미는 openjdk로 시작하는 패턴을 의미합니다. 그러면, apt search elastic은 elastic 패턴을 가지는 패키..
저번에 update-alternatives 명령어를 쓰면서, 이런 의문이 들었습니다. javac의 버전? 비슷한 것을 선택할 수 있는 것은 어디서 정보를 얻어올까? 보통 파일을 열고 닫는 연산을 하게 되면, open 이나 close 같은 시스템 콜 함수는 호출하게 되어 있으니, strace로 간단하게 보도록 하겠습니다. strace update-alternatives --config javac를 쳐 보겠습니다. 그러면 execve 같은 시스템 콜 함수들이 잔뜩 보일 텐데요. 제가 관심있는 것은 open 계열의 함수들입니다. 쭉 보니까, /var/lib/dpkg/alternatives/javac 파일을 열어버리는 게 보입니다. 제가 데비안 계열의 우분투를 쓰고 있긴 하니, 이해는 가네요. /var/lib/..
최근댓글