본문 바로가기

분류 전체보기52

평행선의 성질 지난주, 동생이 내게 질문했다. 형, 엇각이 같으면 두 직선이 평행해? 당연하다. 중학교 때 그렇게 배웠으니까. 하지만 다음 질문은 며칠을 고민하게 만들었다. 왜? ...... 기억이 안 난다. 이유를 배우긴 했나? 이 글에서는 다음을 논증 기하의 방식으로 밝히고자 한다. 직선 \(l\) 이 두 직선 \(m, n\) 과 각각 한 점에서 만날 때, (1) \(m \parallel n\) 일 필요충분조건은 동위각이 같은 것이다. (2) \(m \parallel n\) 일 필요충분조건은 엇각이 같은 것이다. 우선 둘 중 하나가 참이면 나머지 하나는 맞꼭지각의 성질에 의해 자동으로 참이다. 조금 찾아보니, 굉장히 직관에 의존하는 설명들이 많았다. 겹치면 포개진다, 평행하니까 당연히 각이 같을 것이다, 동위각이 .. 2021. 5. 5.
1년 뒤 다시 찾아본 인터넷 편지 사이트 이 글은 작년에 쓴 글 [육군훈련소에서 인터넷 편지 편하게 받기] 이후의 이야기입니다. 육군훈련소에서 인터넷 편지 편하게 받기 2020년 5월 14일부터 6월 11일까지 육군훈련소에서 기초군사훈련을 받았다. 입소하게 되면 인터넷 편지만큼 재미있는 것이 없다던데, 육군훈련소 훈련병에게 인터넷 편지를 보내는 방법은 생각보 calofmijuck.tistory.com 어느새 훈련소를 다녀온지도 1년이 지났다. 인터넷 편지 사이트를 운영했던 서버에 들어가 보니 cron 으로 돌려놓았던 인편 프로그램은 여전히 자신의 본분을 다하며 하루에 한 줄씩 로그를 꾸준하게 찍고 있었다. 그동안 참 많은 일이 있었다. 내가 훈련소에 다시 들어갈 일은 특별히 없을 것이기에, 솔직히 말하면 잊고 지냈던 프로젝트이긴 하다. 급하게 .. 2021. 5. 3.
Chapter 9. Deployments: updating applications declaratively 주요 내용 Deployment 를 사용하여... 무중단 배포를 하는 방법 롤백하는 방법 9.1 Updating applications running in pods 만약 서비스/앱을 업데이트하고 싶다면 2가지 방법이 있다. Pod 를 모두 지운 후, 업데이트 된 pod 로 새롭게 시작 새로운 pod 를 시작한 뒤 새로운 pod 가 요청을 처리할 준비가 되면 기존 pod 를 지운다. 두 방법 모두 장단이 있다. 1번의 경우 잠시 서비스가 중단된다는 문제가 있고, 2번의 경우 배포 중에 2가지 버전의 서비스가 동시에 존재하게 되므로 이를 잘 처리하기 위해서 서비스/앱 단에서 처리해줘야 한다. (하위 호환성) 9.1.1 삭제 후 새롭게 생성 ReplicationController / ReplicaSet 의 경우.. 2021. 4. 30.
Chapter 8. Accessing pod metadata and other resources from applications 주요 내용 Pod 나 컨테이너의 metadata 를 전달하는 방법 컨테이너 안의 앱이 Kubernetes API 와 통신하고 클러스터의 리소스를 생성/수정하는 방법 8.1 Passing metadata through the Downward API 앱의 config data 는 pod 생성 전에 결정되기 때문에 환경 변수나 configMap, secret volume 을 이용해 전달할 수 있었다. 하지만 pod 가 시작 되어야 알 수 있는 정보들도 있다. (Pod IP, 실행 중인 노드의 이름, pod 자체의 이름 등) 이런 정보를 얻기 위해서 Downward API 가 존재하며, 이 API 를 호출하면 pod 나 실행 환경과 관련된 정보를 얻을 수 있다. 얻은 정보는 환경 변수로 전달되거나, downwa.. 2021. 4. 18.
Chapter 7. ConfigMaps and Secrets: configuring applications 거의 대부분의 앱은 설정(configuration)이 필요하다. 개발 서버, 배포 서버의 설정 사항 (접속하려는 DB 서버 주소 등)이 다를 수도 있고, 클라우드 등에 접속하기 위한 access key 가 필요하거나, 데이터를 암호화하는 encryption key 도 설정해야하는 경우가 있다. 이러한 경우에 해당 값들을 도커 이미지 자체에 넣어버리면 보안 상 취약하고, 또 설정 사항을 변경하는 경우 이미지를 다시 빌드해야하는 등 불편함이 따른다. 이번 장에서는 Kubernetes 에서 돌아가는 어플리케이션에 설정 사항을 넘겨주는 방법을 알아본다. 7.1 컨테이너화 된 어플리케이션 설정하기 보통 어플리케이션의 설정 사항을 관리할 때에는 configuration file 이 존재하게 된다. (.propert.. 2021. 4. 18.
Chapter 6. Volumes: attaching disk storage to containers 컨테이너가 재시작되면 기존 작업 내역이 모두 사라지게 될 수 있으므로, 컨테이너의 작업 내역을 저장하고 같은 pod 내의 다른 컨테이너가 함께 사용하는 저장 공간이다. 6.1 Introducing volumes Pod 의 한 구성 부분으로 pod spec 에 정의되어 있다. 또 standalone Kubernetes object 가 아니라서 독립적으로 생성되거나 삭제될 수 없다. Pod 내의 모든 컨테이너로부터 접근이 가능하지만, 그렇게 하려면 mount 해줘야 한다. 6.1.1 Volume 예시 6.1.2 Available volume types 종류가 굉장히 많은데, 다 알지는 않아도 괜찮다고 한다. Volume types emptyDir: 빈 폴더로 일시적인 데이터 저장에 사용 hostPath: 노.. 2021. 4. 7.
Chapter 5. Services: enabling clients to discover and talk to pods 많은 앱들이 request (요청) 을 받아 서비스를 제공하는 형태인데, 이런 요청을 보내려면 IP 주소를 알아야 한다. 한편 Kubernetes 를 사용하게 되면 pod 의 IP 주소를 알아야 하는데, Kubernetes 의 pod 들은 굉장히 동적이므로 이들의 IP 주소를 알아낼 방법이 필요하다. Pod 들은 스케쥴링 되고 스케일링 되기 때문에 IP 주소가 자주 바뀔 수 있으며, pod 가 시작된 후 IP 주소가 할당될 뿐만 아니라, 하나의 서비스를 위해 pod 를 여러 개 사용하는 경우 하나의 IP 를 사용하여 여러 개의 pod 에 접근할 방법이 필요하다. (쿠버네티스를 사용하지 않으면 고정 IP 등을 사용하거나 따로 설정된 주소로 요청이 가도록 했을 것이다) 5.1 Services 소개 Servi.. 2021. 4. 7.
2021 February ~ March 2월이 끝나고 귀찮아서 회고를 안 썼는데, 다행인 것은 2~3월 동안은 그래도 무슨 날에 무슨 일이 있었는지 기록을 해 뒀어서 정리하기 아주 수월했다. 묶어서 정리해보려고 한다. 독서 2~3월에는 와 코스톨라니의 투자 총서 3권, 을 읽었다. (와! 5권!) 는 읽으면서 모르는 단어가 나오면 찾아서 정리해뒀다. 나중에 다시 보면서 단어 공부하자는 마음에 정리했지만, 단어 공부를 좋아하지 않는 내 특성 상 언제 다시 볼지는 잘 모르겠다. 코스톨라니 투자 총서는 이모부께서 선물해 주셔서 읽게 되었는데 재미있게 읽었다. 투자에 대해서 아는 것은 하나도 없지만 확실하게 알게 된 것은 단타는 좋지 않다는 것이다 ㅋㅋ 은 회사 PM님께서 선물해주신 책인데 대략 기술과 감각의 조화를 얘기하고 싶은 듯 하다. 단순히 .. 2021. 4. 5.
Autodiff with Julia 예~~전에 짜둔 코드인데, 친구가 안 예쁘다고 해서 조금 코드를 손봤다. 손 보고 나니 전체적으로 깔끔해서 매우 마음에 들었다. Autodiff 에 대한 전반적인 내용은 이전 글 (https://calofmijuck.tistory.com/28) 을 참고하면 될 것이다. 바로 구현으로 들어가자! 객체 정의 우선 DiffObject struct 를 정의해야 한다. Julia 문법이지만 대충 무슨 말인지 이해는 되니 너무 신경쓰지는 않아도 괜찮을 듯 하다. struct DiffObject 2021. 3. 22.