들어가기 전 어제 회사에서 세미나를 듣는데 DNS의 CNAME, A Record 키워드가 나왔다. 그런데 어떤 내용인지 정확히 알지 못하기 때문에 부족한 지식을 보충하고자 이 글을 작성한다. DNS IP는 192.0.0.1 같은 형식의 숫자 조합이다. 특정 서버의 주소를 의미하는 값이지만, 연관관계 없는 숫자가 나열되어 있는 형식이기 때문에 사람이 외우기 쉽지 않다. IP 주소를 기억하기 쉽도록 이름을 붙여주는 것을 도메인이라고 한다. DNS 서버는 도메인과 IP 주소 정보를 쌍으로 저장하고 있는 서버를 의미한다. 도메인 IP naver.com 223.130.200.107 google.com 142.250.206.238 이렇게 Key / Value 형식으로 저장되는 값 한 줄을 DNS Record라고 한..
들어가기 전 mTLS는 kubernetes, istio 같은 것들을 이용할 때 많이 등장하는 키워드다. 그런데 정확히 어떤 내용인지 모르기 때문에 간략히 배경 지식을 알아보자. TLS 통신 TLS 통신은 다음과 같이 진행된다. 서버는 자신의 공개키 / 개인키를 만든다. 서버는 인증서에 자신의 공개키를 담아서 배포한다. 클라이언트는 인증서에서 서버의 공개키를 획득한다. 클라이언트는 서버의 공개키를 이용해 랜덤하게 세션키를 생성한 후, 서버에게 전송한다. 서버는 공개키로 암호화된 세션키를 서버의 개인 키로 복호화한다. (서버의 개인키로만 복호화 할 수 있다) 클라이언트 / 서버는 둘다 '세션키'를 가지고 있다. 이제 '암호화 통신'을 할 때, 이 세션키를 이용해 각각 암호화 / 복호화를 하게 된다. 비대칭키..
% 두 코드는 같은 패턴 매칭을 의미함. % 즉, ';'는 'orelse'로 동작 sol(_, _, I1, I2, DP) when I1 == 0 orelse I2 == 0-> sol(_, _, I1, I2, DP) when I1 == 0; I2 == 0-> % 두 코드는 같은 패턴 매칭을 의미함. % 즉, ','는 'andalso'로 동작 sol(_, _, I1, I2, DP) when I1 == 0 andalso I2 == 0-> sol(_, _, I1, I2, DP) when I1 == 0, I2 == 0->
들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다. 코드 : https://github.com/chickenchickenlove/effective-python/tree/master/item35 요약 throw 메서드를 사용하면 제네레이터가 마지막으로 실행한 yield 식의 위치에서 예외를 다시 발생시킬 수 있음. throw를 사용하면 가독성이 나빠짐. 예외를 잡아내고 다시 발생시키는 데 준비 코드가 필요하며, 내포 단계가 깊어지기 때문. 제네레이터에서 예외를 제공하는 더 좋은 방법은 __iter__() 메서드를 구현하는 클래스를 사용하면, 예외적인 경우에 상태를 전이시킬 수 있도록 메서드를 제공하는 것이다. Item 35. 제네레이터 안에서 throw로 상태를 변화시키지 마라. 제네레이터를..
들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다. 코드 : https://github.com/chickenchickenlove/effective-python/tree/master/item34 요약 send()를 이용하면 제네레이터에 데이터를 전송할 수 있음. 즉, 제네레이터와 양방향 소통이 가능함. send() 메서드는 일반적인 이터레이션(For, next())와 다른 방식으로 동작함. 제네레이터가 시작하기 전에 send()를 사용하면, 반드시 None을 입력값으로 전송해야 함. (시작되지 않았기 때문임) 그 이후 send()를 사용할 때는, 원하는 값을 전송할 수 있음. 여러 제네레이터를 합성해서 사용하는 yield from과 send()를 함께 사용하면, 서로 다른 용법 때문에 가독성..