본문 바로가기

전체 글30

[VS Code] Polacode (소스 코드를 이미지로 변환) Polacode는 작성 중인 코드를 드래그하면 이미지로 변환해주는 VS Code의 extension이다. Polacode-2022 - Visual Studio Marketplace Extension for Visual Studio Code - 📸 Polaroid for your code marketplace.visualstudio.com 아쉽게도 테마는 선택할 수 없다. 상세히 커스텀 하고 싶다면 아래 사이트를 활용해보자... Carbon | Create and share beautiful images of your source code carbon.now.sh 🙄 참고) 기존의 Polacode extension은 오류가 있고 더 이상 개발되지 않고 있다. VS Code markplace에서 Polaco.. 2022. 8. 24.
[HTTP] HTTP/2는 정말로 HOL blocking를 해결했을까? HOLB(Head of line blocking) HOLB란 패킷을 전송하고 싶은데 이전 패킷을 전송하는데 지연이 발생해 패킷을 전송하지 못하는 상황을 의미한다. 말 그대로 패킷을 보내고 싶은데 blocking이 발생한 것이다. HOLB in HTTP/2 HTTP/2는 클라이언트와-서버 간 하나의 연결을 사용한다. 그리고 요청-응답을 스트림으로 관계를 맺어 병렬로 데이터를 전송한다. HTTP 상에서는 병렬로 데이터를 전송하기 때문에 HOLB가 없다. 단, 애플리케이션 레이어 한정이다. HOLB in TCP 그런데, HTTP가 어느 layer 위에서 동작하는지 생각해보자. HTTP(L7)는 TCP(L4)/IP(L3) 기반에서 동작한다. TCP는 패킷이 유실되거나, 오류가 있을 때 재전송한다. 재전송 과정에.. 2022. 7. 22.
[OS] 인터럽트와 시스템 콜 사용자 영역과 커널 영역 운영체제는 크게 사용자 영역과 커널 영역으로 구분된다. 여기서 커널이란 메모리(주기억 장치)에 상주하여 HW, SW 자원을 관리하는 주체이다. 커널 영역이 별도로 분리되어 있는 이유는 시스템의 자원을 보호하고, 효율적으로 관리하기 위함이다. 인터럽트와 시스템 콜 인터럽트(Interrupt)는 "방해하다, 중단시키다" 정도의 의미를 가지고 있다. OS에서 인터럽트는 CPU가 현재 실행 중인 작업을 중단하고, 발생한 상황을 처리하는 기능이라고 할 수 있다. 인터럽트는 하드웨어와 소프트웨어에서 모두 발생할 수 있다. 만약 현재 사용중인 노트북의 전원에 문제가 생긴 경우는 하드웨어에 의해 발생한 인터럽트이다. 만약 JavaScript로 파일 READ/WRITE 프로그램을 작성하면 소프트.. 2022. 7. 22.
[IP] IP fragmentation, reassembly * 참고) L4는 Transport Layer, L3는 Network Layer, L2는 Data Link Layer을 의미합니다. Maximum Transmission Unit(MTU) [byte] MTU는 Data Link Layer(L2)에서 최대로 전송 가능한 프레임의 크기이며 단위는 바이트이다. L2에 해당하는 프로토콜(d, Wi-Fi 등)은 각자의 MTU를 가지고 있다. (예) Ethernet의 MTU는 1500, Wi-Fi는 약 2300) IP fragmentation IP 단편화(IP fragmentation)는 L3의 패킷이 L2의 MTU를 초과하는 경우, MTU의 크기를 단위로 패킷을 분할하는 행위이다. 예를 들어, 4000 Byte의 패킷을 1500 MTU에 맞게 단편화하면 3개의 독.. 2022. 7. 18.
[TCP] Fast Retransmission Timeout TCP로 연결된 각 호스트는 송신 버퍼(Send Buffer)와 수신 버퍼(Receive Buffer)를 가지고 있다. 송신 버퍼는 Window Size 만큼 패킷을 한 번에 보내며, Timeout을 통해 패킷의 유실을 확인한다. 3 duplicate ACKs and Fast Retransmission 3 duplicate ACKs은 특정 ACK 패킷을 응답받은 후, Timeout 전 동일한 ACK를 3번 응답받은 경우를 의미한다. 즉, 총 4번 동일한 ACK을 응답받아야 한다. 빠른 재전송(Fast Retransmission)은 3 duplicate ACKs을 통해 패킷의 유실을 확인하면, 해당 패킷을 Timeout 전 다시 전송하는 방법이다. RFC에도 기술되어 있으며, 의무는 아니고 .. 2022. 7. 18.
[JavaScript] 호이스팅(Hosting) 호이스팅 호이스팅은 변수의 선언부와 함수의 선언문이 스코프의 최상단으로 끌어 올려지는 현상을 의미합니다. 스코프는 변수의 유효범위를 의미하며, 변수 선언 방식에 따라 다른 스코프를 가집니다. var은 function 스코프, let과 const는 block 스코프를 가지게 됩니다. // (1) scope of x var x; { // scope of y let y; { // scope of z let z; } } 변수의 생성 과정 변수의 생성 과정은 선언 -> 초기화 -> 할당으로 3단계를 거칩니다. 위에서 살펴본 호이스팅은 변수의 선언 단계에 해당합니다. 단, var은 호이스팅 중 undefined로 초기화가 동시에 발생합니다. let과 const는 선언만 발생합니다. TDZ(Temporal Dead .. 2022. 7. 16.