Luavis' Dev Story

생계코딩 이야기

  • 커밋메세지 수정

    Mar 23, 2016

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

  • amed commit 취소

    Mar 16, 2016

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

  • A20 gate

    Dec 2, 2015

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

  • Linux Virtual Memory

    Nov 23, 2015

    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 3, 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와...