Luavis' Dev Story

생계코딩 이야기

  • Stream Identifiers 스트림들은 31비트의 정수형 문자로 식별된다. 클라이언트에 의해서 생겨나는 stream의 식별자는 홀수로, 서버에 의해서 생기는 스트림은 짝수로해야한다. stream의 식별자 0은 connection control을 위한 메세지에 사용된다. HTTP/2로 이동하기 위한 HTTP/1.1의 request는 stream identifier 0x1로 응답된다. HTTP/2로 버전업이 완료된 후에는 0x1의 stream 식별자는 클라이언트에게 half-closed (local)상태이다. 따라서, 0x1은 HTTP/1.1에서 버전업 된...

  • HTTP/2의 시작 HTTP/2에서는 전송계층의 프로토콜로 HTTP/1과는 다르게 TCP를 사용한다고 명시되어 있다. 또한 HTTP/2는 http와 https의 URI scheme을 HTTP/1.1과 동일하게 사용하고 포트 번호도 기본 설정을 80번 https는 443번을 사용한다. HTTP/2는 1.1과 동일하게 TLS위에서 동작하는 h2와 cleartext TCP위에서 동작하는 h2c로 나뉘게된다. h2: HTTP/2에서는 TLS 1.2버전 혹은 그 이상의 버전을 요구하고 있다. 이...

  • Streams and Multiplexing HTTP 2.0에서의 스트림은 양방향성의 독립된 client와 server frame을 교환할 수 있는 통로입니다. 스트림들은 몇가지 중요한 특징이 있습니다. 하나의 HTTP/2 connection에는 여러개의 stream이 있을 수 있습니다. 각각의 endpoint에서는 frame을 multistream으로 보낼 수 있습니다. stream은 설치될 수 있고, 일방적으로 사용되거나 클라이언트나 서버가 공유할 수 있습니다. stream은 각각의 endpoint에서 닫을...

  • HTTP 1.1은 HTTP 1.0의 부족한 점을 보강하고자 정해진 표준으로 1999년에 RFC 2616으로 등록되어 있다. 1.0의 HTTP 버전 설명에 나와있듯, 몇 가지 용어에 대해서 정의가 변경되거나, 확장되었을 뿐 기본적인 프로토콜의 메세지 구조는 똑같다.(다른 그것을 보고 싶다면 HTTP/2를…) 따라서 이 장에서는 전체적인 해석보다는 부분적으로 달라진 점에 대해서 확인해 볼 것이다. Missing Charset...

  • Request HTTP-message = Simple-Request ; HTTP/0.9 messages | Simple-Response | Full-Request ; HTTP/1.0 messages | Full-Response Full-Request = Request-Line ; Section 5.1 *( General-Header ; Section 4.3 | Request-Header ; Section 5.2 | Entity-Header ) ; Section 7.1 CRLF [ Entity-Body ] ; Section 7.2 Full-Response = Status-Line ; Section...

  • HTTP VERSION HTTP 버전은 <major version>.<minor version> 으로 이루어 진다. <minor>가 올라가는 경우는 파싱 알고리즘의 차이는 없고, 헤더의 추가나 기능의 추가를 나타낸다. <major> 프로토콜의 파싱 알고리즘에 큰 변화가 있을 경우에 올라간다. HTTP의 버전은 "HTTP" "/" "1*DIGIT" . "1*DIGIT"같은 형식으로 표기한다. 또한, HTTP/2.4는 HTTP/2.13에 비해 낮은 버전이다 minor version은 소숫점이 아니라...

  • Python 코드 작성 시 일반적인 컨벤션에 대해서 서술하고 있는 PEP 8에 대해서 한번 읽어보는게 좋다. 하지만 이걸 외우면 좋겠지만 사람인지라 실수를 할 수도 있어, 그걸 잡아주는 유틸인 Flake8이 있다. Note: 이런 기능을 하는 유틸리티에는 PyFlakes 외에 PyLint PyChecker등 여러가지 lint 유틸리티가 존재한다. Flake8은 여러가지 에디터 플러그인 형태로 지원하지만, 제가 주로...

  • Python string concat

    Jul 29, 2015

    Python으로 string concat할 일이 많아 질 것으로 보여서 미리 찾아 봤는데, 역시나 str 객체에 += 연산자로 concat하는 방식은 객체를 계속 재생산하는 방식이다.. 사이트를 뒤져보니 여러 제안이 있고 테스트 코드도 작성되어 있어서 조금 커스텀해서 작성했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

  • Sublime에서 syntax설정이 python으로 되어 있을때, for문을 입력하면 자동 완성으로 1 2 for x in xrange(1,10): pass 이렇게 완성되는데 xrange와 그냥 range의 차이에 대해서 궁금해 졌고 stackoverflow에 같은 질문을 한 글을 볼 수 있었다. 중요한건 언제나 답변인데, range creates a list, so if you do range(1, 10000000) it creates a list...

  • HTTP2 Frame HTTP2의 Frame에 대해서 공부하고 포스팅 안한 부분에 대한 공부까지 합쳐서 일단 코드를 짜고 보았다. 개인적으로 Flow control을 보고 있지만 빠른 시간내로 포스팅 할 것을 목표로하고 일단 코드를 써봤는데.. python으로 작성했고 Frame이란 클래스를 작성하여 추후에 코드 재사용을 목표로 하고는 있지만… 여튼 frame의 사이즈 제한 정책에 따라 data를 설정할 때...