Luavis' Dev Story

생계코딩 이야기

  • tl;dr 이 글은 Instagram의 블로그 글을 번역하고, 저의 개인적인 생각을 담은 글입니다. 혹시 이전 시리즈에 대한 번역은 이 문서에서 확인할 수 있습니다. Instagram팀은 GC를 끔으로써 이슈를 해결했던 방법이 문제점이 있는 것을 파악하고 새로운 API를 추가해서 이를 해결했습니다. 해당 API는 Python 3.7에 새롭게 들어간 gc.freeze입니다. 해당 API가 어떤 맥락에서 추가되었는지 어떤...

  • 넷플릭스의 Linux performance analysis in 60,000ms에 대해서 부분적으로 번역한 글입니다. 리눅스 서버에 성능 이슈로 인해서 로그인했을 때 우리가 가장 먼저 체크해봐야할 사항은 어떤것들일까? 넷플릭스는 많은 사람들이 알고 있는것 처럼 아마존 EC2 리눅스 서버를 사용하고 있다. 이런 대규모 서버를 모니터링하고 성능을 체크하는데에는 툴을 사용하는데 클라우드 전체의 모니터링에는 Atlas, 하나의 EC2 instance의...

  • tl;dr Python은 pymalloc이란 이름의 커스텀 메모리 관리법이 있습니다. 메모리를 arena란 이름의 큰 블럭을 만들고 그 안에 풀을 다시 만들어서 512바이트 보다 작은 오브젝트에 대해서는 대부분 이곳에 생성합니다. 문제의 서막 친구가 매우 흥미로운 글 하나를 번역한 뒤에 포스팅하여 읽어보았다. 파이썬에서 bytes로 객체를 하나 생성하고 이를 /proc/../mem을 이용해서 수정하는 이야기에 관한 글이다....

  • Logistic Regression

    Jun 2, 2017

    이전부터 간단한 머신러닝 기법(Decision tree, Random forest, XGBoost, ..)은 활용할 수 있었지만, 딥러닝을 공부해보고 싶은 욕심에 조금 더 다양하고 기본이 되는 알고리즘을 공부해보고 있습니다. 이를 위해 한국어 글로는 조대협님의 블로그 글을 읽고 좀 더 자세한 정보를 위해서는 Andrew Ng의 Machine learning 강의를 보면서 Machine learning을 공부하고 있습니다. Logistic regression 알고리즘은...

  • tl;dr pex는 Python application을, 하나의 실행파일로 만들어주는 라이브러리입니다. 설치는 pip을 이용하거나 github.com에 있는 manual을 이용해서 빌드 설치도 가능합니다. 간단한 사용법을 살펴보면. $ pex requests flask 'psutil>2,<3' -o flask-python 위와 같은 방법으로 requests와 flask 특정 버전의 psutil이 기본 설치된 flask-python이라는 이름의 python 실행 바이너리를 얻을 수 있습니다. 아래와 같이 위에서 생성한...

  • 이번에 블로그 디자인을 리뉴얼하면서 스크롤 이벤트에 따른 애니메이션이 들어가게되었고, 이를 위해서는 JS를 이용한 애니메이션기법 외에는 답이 없다는 판단을 했습니다. 따라서 JS를 이용한 고전적인 event를 받고 이를 top값을 바꿔 움직이는 애니메이션을 구현했습니다. transform을 이용하면 조금 더 간단하고 성능도 우월한 개발이 가능하지 않을까 생각하여, 코드를 수정해서 퍼포먼스를 비교해봤습니다. 처음 웹을 공부할때만 해도...

  • TL;DR 이 글은 Instagram의 블로그 글을 번역하고, 저의 개인적인 생각을 담은 글입니다. GC를 없애면 Instagram에서는 10%의 성능 향상을 얻었다고 합니다. 이는 GC를 사용하지 않은것인데요, CPU LLC cache hit율을 높이고 메모리 사용률을 줄일 수 있다고 주장합니다. Instagram에서 서버가 동작하는 방법 Instagram의 웹서버는 Django의 multi-process mode로 동작합니다. application 서버는 pre-fork모드를 이용해서 uWSGI...

  • Os Barebone with Go

    Mar 6, 2017

    OS Barebone with Go 잡담 아주 오랜만에 블로그 글을 써보기 시작했다. 사실 방학기간동안 ASGI나 JIT에 관해서 글을 쓰고 지우고 쓰고 지우는 바람에 글을 완벽하게 완성하지 못하고 Go에 대한 관심이 최근에 다시 갖게되어서 어떤것을 만들 수 있을까 생각해보던 중 Go를 이용해서 간단한 운영체제 틀을 제작할 수 있다는 글을 읽어보고 직접해보면서 블로깅을...

  • 너무느렸다… 최근에 아이맥 레티나 5K 27인치(중급형)를 구매하고 퍼포먼스에는 크게 문제를 못 느끼면서 사용하고 있었다. 램 부족 증상을 느껴서 32GB 램을 구매해서 장착한 이후에는 크롬탭으로 램 구이(?)를 해도 크게 문제를 느끼지 못했다. 하지만 이전에는 데스크탑으로 작업해오던 Lightroom 사진작업을 아이맥에서 하는 순간 이게 왜 이럴까 싶을 정도로 심각한 퍼포먼스 문제를 겪었다. 이전에...

  • ADB와 Genymotion

    Aug 19, 2016

    사실 안드로이드 쪽은 주력 분야도 아니고 간단 간단하게 개발할때만 사용했지만 일신상의 이유로 이번에 react-native의 버프를 받아 좀 더 힘차게 개발하고 있다. 하지만 역시나 수 많은 버그가 떨어졌고(사실 react-native로는 아이폰만 개발하는게 정신건강에 이로운듯 하다.. 아직까지는), 조금 황당한 문제가 생겨서 해결법을 올려본다. 문제의 발생 react-native를 사용하면서 adb 커맨드와 친해졌는데 $ adb start-server...

  • GPG RSA가 개발되고 나서 취약했던 프로토콜들이 RSA 암호화 기술을 덮어 씌워져서 비교적 안전한 통신이 가능하도록 만든 사례가 많다. 우리가 쉽게 발견할 수 있는 사례로는 HTTPS가 있다. GPG의 원조격인 PGP(Pretty Good Privacy)는 원래 이메일을 RSA로 암호화 해주는 프로그램이였고 이 아이디어를 바탕으로 오픈소스로 개발된것이 GPG(Gnu Privacy Guard)다. 한국에서도 샾메일이라고 메일 암호화를 개발한적이...

  • Github에서 지원하는 Two-factor password(2차 비밀번호) 가장 활발하게 많은 오픈소스 프로젝트들이 운영되고 있는 Github에서는 보안성을 위해서 OTP형식의 2차 비밀번호를 지원한다. 나 또한 외주 프로젝트를 비롯해서 소프트웨어 마에스트로 등 여러 활동에서 생성한 프로젝트를 관리하기 위해서 github를 이용하기 때문에 보안에 문제가 생기면 안된다. 구글 계정 같은 경우에는 예전부터 2차 비밀번호를 사용했고 github 계정도...

  • 커밋메세지 수정

    Mar 22, 2016

    사건의 경위 소마에서 아는 사람이 팀원으로 있는 프로젝트 팀이 있었다. 이 팀의 repository의 커밋 메세지가 순위권에 들어갈 만큼 좋지 않은 이름의 커밋 메세지를 볼 수 있었다. 나는 지나가다가 이것을 수정해볼것을 의뢰받았지만 커밋메세지를 수정해본적은 없기때문에, (amend commit과 같이 바로 이전 커밋에 오타가 있어 수정하고 싶은 경우정도는 있었다.)(이런 흑마법은 쓰지 말라고 배웠습니다…!!)...

  • amed commit 취소

    Mar 16, 2016

    사건의 경위 소마에서 게임 프로젝트를 진행 중인데 언리얼 엔진을 사용 중이고 이를 git과 git lfs를 이용해서 소스제어를 하고 있었다. 오늘 아침 너무 피곤한데 수업도 재미없어서 rdp를 연결하고(이것도 학교에서 포트를 막아둬서 ssh 터널링을 이용해서 연결할 수 있었다.). 이전에 작업해둔걸 커밋을 올리는데 나오는 메시지의 내용은 초기 커밋시 user.email 정보와 user.name 정보를 설정해주세요....

  • 허브 허브 = mutiport + repeater 10Mbps, 100Mbps 허브가 있음(최근에는 기가비트도 있음) 동작방식 5개의 단말이 한 허브에 연결되어있는 상태를 가정하고 1번 단말이 2번 단말에 데이터를 보내고 싶은 경우 모든 단말에 데이터를 허브가 보내고 이를 단말은 수신 MAC을 보고 필터링을 한다 이더넷 허브에서는 각기다른 단말이 데이터를 보내고 있을때 콜리전이 발생할 수...

  • A20 gate

    Dec 1, 2015

    A20 Gate 최근 OS공부를 하면서 실습을 해보고 있는데요.(github.com/Luavis/PotatOS) 가장 무난한 platform이 x86이다 보니 x86으로 작성중입니다. 아직 보호모드로의 접근밖에 안되는 만든것도 아닌상태이지만 보호모드로 접근하고 나니 A20 게이트라는 특이한 기능을 보았습니다. A20게이트는 21번째 address bus line에 있는 and gate를 말합니다. 문제는 이곳에 왜 and 게이트가 있는가입니다. IBM이 PC를 만들던 시절인 80년대를 거슬러...

  • Golang 탐방..

    Nov 25, 2015

    마스코트가 참 적당하게 생겼다.. Golang을 배워보고 싶어졌습니다! 이유는 별거 없습니다. strict type이고 그러면서도 유연해 보이고, 성능도 어느정도 받쳐주고 무엇보다 구글이 support하고 있다는점이 마음에 들어서였습니다.. Golang을 배우려면 우선 go 컴파일러를 설치해야겠지요. OS X에서는 brew를 이용해서 비교적 손쉽게 설치할 수 있었는데, 이는 다른 블로그에 자료가 많으니 참고하면 될 듯 합니다. 개인적으로 언어를...

  • SW Maestro 6th 연수를 진행하면서 멘토님에게 들은 리눅스의 가상메모리 관련 정보를 정리해보고자 작성해봤습니다. 아래글은 Intel Arch와 linux x64 커널울 기준으로 서술한 내용이지만 대부분의 아키텍쳐와 커널레벨에서 유사하게 동작합니다. 가상메모리는? Intel기준으로 리얼모드(real mode, 16bit)에서 보호모드(protect mode, 32bit)로 넘어가면서 새롭게 생긴 기능으로 ARM, PPC 등 다양한 마이크로 프로세서에서 지원하는 기능입니다. 이 기능을 이용해서...

  • Mosh(Mobile shell)

    Oct 4, 2015

    Tech video Mosh SSH의 진화된 대체품으로 개발된 Mosh라 하는 애플리케이션에 대해서 SSH에 비해서 좋은 점과 간단한 사용법을 알아보겠습니다. What is Mosh? Mosh는 원격터미널 애플리케이션으로(SSH와 같은..) 로밍이나 네트워크 상황이 좋지 않은 상황에서도 훌륭하게 돌아가는것을 목표로하고 있습니다. SSH는 일단 커넥션을 맺고 사용자의 키 입력이 있으면 이를 지속적으로 서버에 전송하면서 응답을 대기하고 변경사항만이...

  • HTTP/2의 전체적인 동작방식 일단 글쓴 나도 솔직히 아직 전 text를 다 읽지 않고 앞부분과 구현에 필요한 부분만 조각조각 읽어 완벽하지는 않지만, 여태까지 쓴 글들이 거의 직번역인 글이 많고 두서없이 쓴 경우가 대부분이라… 전체적으로 정리해서 써보기로 했다. HTTP/2는 표준에 서론부분에서도 이야기하고 있듯이 의미적인 부분보다는 데이터를 주고 받는부분에서 큰 변화가 있다. 기본적으로는...

  • PUSH_PROMISE PUSH_PROMISE frame(type=0x5)는 피어에게 31bit의 stream identifier를 주어 앞으로 push할 스트림의 id를 알려준다, 또한 푸시할 stream의 내용에대한 헤더정보도 같이 보낸다. PUSH_PROMISE는 stream을 idle상태에서 reserved된 상태로 만들게 된다. 구조 +---------------+ |Pad Length? (8)| +-+-------------+-----------------------------------------------+ |R| Promised Stream ID (31) | +-+-----------------------------+-------------------------------+ | Header Block Fragment (*) ... +---------------------------------------------------------------+ | Padding (*)...

  • HTTP/2에서는 Frame을 기본 단위로 하여 통신을 한다. 이런 Frame에는 여러가지의 타입이 있는데 현재 정의되어 있는 타입은 전체 10개다. 이 타입은 Frame의 구조에 Type(8 bit)에 표시되어 있고 각 타입마다 Frame 구조의 Payload에 들어가는 구조가 따로 정의되어 있다. flag는 지정된 값을 0에서 부터 하나하나 더하여(OR연산을 구현해도 비트수가 각기 다르기 때문에 더하기와 같은...

  • HPACK 기존 http에서는 content-encoding header를 통하여 http 통신에서 주고 받는 contents를 gzip혹은 deflate 압축을 통하여 압축할 수 있었다. 하지만 웹의 발전과 함께 cookie나 user-agent같은 헤더들의 값이 굉장히 커짐에 따라 비효율적인 통신이 지속되게 되었다. 이러한 문제점을 보강하기 위하여 http2에서는 헤더의 압축과 indexing을 지원하고 있고 이 기술을 hpack이라 부르고 이를 RFC7541에 기술해두었다....

  • Python PEP 3333

    Aug 2, 2015

    PEP 3333은 WSGI에 대해서 설명하고 있는 PEP 문서이다, 원 버전은 PEP 0333인데, python 3.x의 지원과 community errata addenda clarifications을 추가한 문서이다. Overview WSGI는 “server” 혹은 “gateway” 측과 “application”, “framework” 두가지로 나누어진다. server side에서는 appliction side에서 제공된 object를호출한다. 이 런 object들이 어떻게 제공되는지에 대한 spec은 server side에 나온다. 추가로, 순수한 server/gateway와...

  • 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 28, 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를 설정할 때...

  • Python PEP 8

    Jul 25, 2015

    PEP 8에대해서 번역된 글이 있어 퍼왔습니다. 약간 수정된 사항이 있지만 jekyll에서 보기 편하도록 몇가지 Markdown 문법을 수정한것 외에는 내용상 차이는 없습니다. 원본을 확인하고 싶거나 번역에 참여하고 싶다면 아래 번역링크에 들어가서 확인해주시기 바랍니다. --- 이 문서는 현재 여기에서 공동 번역이 이루어지고 있습니다. 관심 있는 분들의 참여 부탁드립니다. PEP: 8 Title: Style...

  • Frame Size frame의 payload의 최대 사이즈는 수신자 측의 SETTINGS_MAX_FRAME_SIZE만큼으로 제한되어 있다. 이 설정은 2^14 (16,384)과 2^24-1 (16,777,215) 값 사이에 정해져야한다. 모든 HTTP/2.0의 구현체는 9바이트의 frame 헤더와 2^14바이트의 payload의 길이를 최소한 받을 수 있어야한다. frame header의 크기는 frame 사이즈에 포함되어 있지 않다. Note: PING과 같은 frame의 타입은 payload data의 사이즈에는 프레임에...

  • RFC 7540(HTTP 2) Frame

    Jul 25, 2015

    용어 설명 client: HTTP/2의 끝부분에서 커넥션을 시작하는 부분입니다. Client는 HTTP 요청을 보내고 응답을 받습니다. endpoint: connection의 Server와 client를 말한다. connection: 두 endpoint간의 전송계층의 연결을 말한다. connection error: HTTP/2 연결에서 발생하는 모든 에러. frame: HTTP/2 connection의 가장작은 단위의 통신 메세지이다. peer: 특정 endpoint를 말할때, 이야기하고 있는 endpoint의 remote를 이야기한다. receiver: frame을...

  • 이 외의 pytest 관련 문서 Python fixture Python hoook Changing directory recursion ini-file에 norecursedirs을 이용하여 테스팅 파일 찾는 것을 막을수 있다. setup.cfg가 프로젝트의 루트 폴더에 있다면: content of setup.cfg [pytest] norecursedirs = .svn _build tmp* 이를 통하여 .svn이나 tmp가 붙는 directory에는 접근하지 않는다. Changing naming conventions 테스트 코드를 찾는 naming...

  • 이 외의 pytest 관련 문서 Python fixture Python hoook 설치 설치는 pip이나 easy_install 같은 명령어를 이용하여 설치할 수 있다. pip install -U pytest # or easy_install -U pytest 설치 후 올바른 버전이 설치되었는지를 확인해보기 위해서는 $ py.test --version –version 옵션을 이용하여 확인할 수 있다. Our first test run Let’s create...

  • 이 외의 pytest 관련 문서 Python fixture Python hoook – @pyetst.mark.userfixture pytest는 pythons에서 기본지원하는 unittest와의 연동을 지원한다. 예를들어 pytest의 fixture를 unittest에서 사용할 수 있다. 그래서 아래와 같은 예제를 만들어 보았다. import pytest import unittest @pytest.fixture(scope="class") def fixt_test(request): request.cls.test = "Test fixture with unittest" @pytest.mark.usefixtures("fixt_test") class Unittest(unittest.TestCase): def test_case(self): assert 0,...

  • 이 외의 RFC 1945 관련 문서 HTTP Terminology HTTP overall operation ABNF는 Augmented Backus-Naur Form로 BNF(RFC 822)이 확장된 것이다. ABNF 또한 이미 RFC로 정의되어 있지만(RFC 2234), 그보다 이전인 HTTP/1.0 스펙인 RFC 1945에서 이미 간략하게 다루고있다. 우리는 RFC 1945, section 2.1에 나와있는 스펙에 대해서 간략하게 정리하였다. Contents Constructs Basic Rules Constructs...

  • http 발표자료

    Jul 20, 2015

    5월달에 동아리 내에서 세미나 발표를 위해 2주정도 준비했던 HTTP에 대한 발표자료이다. 나름 정리해보려고 만들었지만 사이즈를 생각하면 실패했다고 생각된다...ㅠ Http from Luavis Kang

  • Python pytest hook

    Jul 19, 2015

    이번 문서에서는 Pytest의 hook 기능에 대해서 알아보고자 Pytest 공식 사이트의 latest 버전의(2.4) hook reference 페이지를 번역해 보기로 했다. Note: Hook 함수들은 conftest.py에 추가해야 동작한다. 이 외의 pytest 관련 문서 Python fixture Pytest with unittest Contents Hook specification and validation Initialization, command line and configuration hooks Generic “runtest” hooks Hook specification...

  • Python pytest fixture

    Jul 19, 2015

    우리가 흔히 사용하는 라이브러리에서는 일반적으로 unit test기반의 테스팅 파일을 설치시 정상적인 설치가 되었는지 또 라이브러리를 PR할 시에 이 라이브러리의 확장이 버그 없이 확장된것인지를 확인해주기 위해서 함께 업로드해 준다. python에서는 보통 Pytest를 사용하는데, 그 중 Fixture 기능에대해서 정리해보기 위해 Pytest 공식 사이트의 latest 버전의(2.4) fixture 기능에 대해 나와있는 페이지를 번역해 보기로...

  • 두번째 파트에서는 HTTP의 전체적인 동작의 흐름에 대해서 정리해보았다. 이 외의 RFC 1945 관련 문서 HTTP Terminology HTTP ABNF Request request는 전 파트인 용어 설명에 번역되어 있듯이 클라이언트의 통신 요청이다. RFC 1945에서는 이때에 Request에 수반되는 data들의 항목에 대하여 나열해 놓고 있다. Reuqest 방법 (request method) i.e. GET, POST, HEAD URI (Uniform...

  • 이 외의 RFC 1945 관련 문서 HTTP overall operation HTTP ABNF 우리가 지금 사용하고 있는 웹에서 가장 흔하게 볼 수 있는 프로토콜 중 하나를 뽑으라 하면 대부분의 개발자들이 주저없이 HTTP를 선택할 것이다. 이 HTTP의 기본적인 사양을 내포하고 있는 버전인 1.0을 이번에 공부하기 위해 HTTP/1.0의 spec들에 관하여 서술하고 있는 RFC 1945를...