gRPC에 통신 암호화를 적용해보자!! 이번 프로젝트에서 서버 부분을 맡게 되었는데, gRPC를 써 볼 기회가 생겨서 공부한 후 사용하게 되었습니다. 먼저. gRPC에서 제공하는 Greeting Service의 예제 코드를 가지고 insecure한 통신을 하는 소스코드입니다 저는 gRPC python을 사용하고 있습니다. TLS란? TLS란, Transport Layer Security의 약자이며 통신 계층 보안을 담당하는 프로토콜입니다. SSL(Secure Socket Layer)에서 탄생한 기술이고 옛날에는 SSL이라고 불렸지만 지금은 TLS로 정식 명칭이 변경된 상태입니다. 인터넷을 사용해서 신뢰할 수 있는 통신을 하려면 통신 당사자(서버, 클라이언트)가 모두 신뢰할 수 있는 자임을 확인해야합니다...
Ubuntu에 Docker를 설치해보자 설치 기준 Ubuntu 18.04 LTS를 사용했습니다. $ sudo apt update $ sudo apt install apt-transport-https ca-certificates curl software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" $ sudo apt update $ apt-cache policy docker-ce Ubuntu에서는 cur..
Educational Codeforces Round 70 (Rated for Div. 2) Dashboard - Educational Codeforces Round 70 (Rated for Div. 2) - Codeforces codeforces.com A. You Are Given Two Binary Strings... $S_k$은 0과 1로 이루어진 문자열(2진수로 나타낸 수) $f(x)$를 $k$번만큼 밀어낸 2진수 문자열과 와 $f(y)$의 합이다. 여기서, $k$는 우리가 임의로 정할 수 있는 수이다. 문제에서 요구하는 것은 이 $S_k$를 뒤집은 문자열(앞으로 $revS_k$라고 하겠다)이 $k$에 따라 여러가지 생길 수 있는데 그 중에서 가장 사전 순으로 앞서는 문자열을 만들기 위한 $k$값..
AtCoder Beginner Contest 136 AtCoder Beginner Contest 136 - AtCoder AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp 굉장히 오랜만에 참여한 AtCoder이었다. 역시 AtCoder답게 문제는 전반적으로 깔끔하고 쉬웠다. 하지만, D번에서 Solve속도가 굉장히 지체되 레이팅이 많이 오르지 않아 조금 아쉬웠던 Round이다. A. Trasfer 1번 병은 B리터가 담겨있는 용량 A리터의 병이고 2번 병은 C리터가 담겨있는 병이다. 이때, 2번 병의 물을 1번 병에 최대한..
Codeforces Round #577 (Div. 2) Dashboard - Codeforces Round #577 (Div. 2) - Codeforces codeforces.com 새벽 1시 30분에 열린 Codeforces였다. 졸려서 조금 퍼포먼스가 많이 떨어진 것도 있지만 요 전에 레이팅이 굉장히 많이 떨어졌기 때문에 2문제만 늦게 풀어도 레이팅이 오르더라.. A. Important Exam $N$명의 학생들이 $M$개의 문제를 푸는데, 정답이 공개되지 않은 상황에서 어떻게 정답 처리를 해야 학생들의 점수 합이 최대가 되는지 묻는 문제였다. 당연하게, 각 문제마다 학생들이 가장 많이 답한 문제를 정답으로 처리하면 되는 쉬운 문제였다. 주어진 배점과 각 문제마다 optimal한 정답을 답한 학생들의..
오늘은 boj slack을 눈팅하다가 알게된 Convex Hull을 구하는 알고리즘을 소개하려고 합니다. Convex Hull이란? Convex Hull은, 평면의 경우 입력으로 들어온 정점들 중 일부를 꼭지점으로하는 볼록 다각형입니다. Convex Hull을 구하는 알고리즘 Graham Scan Graham스캔은 먼저, 아무 정점이나 하나 잡습니다(보통, y좌표가 가장 작은 점을 기준점으로 잡는다고 합니다. 그리고 이 점은 반드시 Convex Hull에 포함됩니다.) 그리고 이 점들을 기준으로 CCW방향으로 정렬을 해줍니다. 무슨 뜻이냐 하면, 선택한 한 점이 x축 위에 있다고 가정하고 그 점과 그 점을 제외한 모든 점이 이루는 각도를 계산합니다. 그 다음, 계산한 각도가 작은 순으로 나열하면 CCW방..
HTML에서 사용하는 스타일 특성(attributes) HTML 태그의 스타일을 설정하는건 style 특성을 사용하면 할 수 있습니다. style 특성은 아래와 같은 문법을 따릅니다. 이 style attribute에서, property는 CSS의 property이고, value는 CSS의 value입니다. 배경색 바꾸기(Background Color) style의 color라는 특징은 HTML의 배경을 바꿉니다. 사용법은 다음과 같습니다. This is a heading This is a paragraph. 위 태그로 문서를 작성하면, 브라우저의 뒷배경이 하늘색으로 바뀝니다. powderblue와 같은 140가지의 표준 색상명이 아닌, HEXA Code로 된 색상도 추가가 가능합니다. #ff0000 #..
원문 HTML Paragraphs(문단) HTML의 tag는 문단을 나타내는 태그입니다. This is a paragraph. This is another paragraph. 알아두기 : 브라우저는 만약 와 같은 end tag가 없어도 자동으로 추가해줍니다. 또한, 문단이 하나 등장하면 다음 문단 사이에 약간의 여백을 추가합니다. HTML Paragraph의 특징 아래의 코드를 봅시다 This paragraph contains a lot of lines in the source code, but the browser ignores it. This paragraph contains a lot of spaces in the source code, but the browser ignores it. 위와 같이 ..
원문 HTML의 Headings(제목) HTML은 부터 까지 제목을 담당하는 tag가 있습니다. 부터 까지 중요도 순으로, 크기가 변합니다. 예시는 아래와 같습니다 Heading 1 Heading 2 Heading 3 Heading 4 Heading 5 Heading 6 알아두기 : 브라우저는 제목 태그 다음 자동으로 약간의 여백을 삽입합니다. Heading을 하는 경우엔 같은 태그만 사용하는게 좋습니다. 단순히 텍스트를 크게하거나 진하게하는 기능을 사용하지 않는게 좋습니다. 더 큰 Headings(제목) 각 HTML 제목은 기본 크기가 정해져있는데, 이 크기를 style attribute로 변경할 수 있습니다. Heading 1 구분선 넣기 이라는 태그는 HTML 문서에 구분선을 삽입할 수 있게 해줍니..