3장 HTTP 정보는 HTTP 메시지에 있다. HTTP 통신에는 클라이언트에서 서버로 보내는 리퀘스트와 서버에서 클라이언트로 보내는 리스폰스가 있다. 3.1 HTTP 메시지 HTTP에서 교환하는 정보를 HTTP 메시지라고 하고 리퀘스트측 메시지는 리퀘스트 메시지, 리스폰스측 메시지는 리스폰스 메시지라고 한다. HTTP 메시지는 복수행의 데이터로 구성된 텍스트 문자열이고 크게 구분하면 메시지 헤더와 메시지 바디로 구분되며 개행 문자(CR+LF)로 메시지 헤더와 메시지 바디를 구분한다. 메시지 바디가 항상 존재하는 것은 아님(GET, DELETE등) 메시지 헤더: 서버와 클라이언트가 꼭 처리해야 하는 리퀘스트와 리스폰스 내용과 속성등 메시지 바디: 꼭 전송되는 데이터 그 자체 3.2 리퀘스트 메시지와 리스폰..
Next.js 14 버전의 패치노트를 보면 Partial Prerendeing(PPR)이라는 것을 Preivew 단계로 소개하고 있습니다. 간단한 설명으로는 정적 리소스의 빠른 응답과 동적인 컨텐츠의 스트리밍이라고 표현하고 있는데 오묘한 느낌이라 제대로 이해하기 위해 해당 방식을 찾아보았습니다. 앞으로는 Partial Prerendering은 PPR이라고 표현하겠습니다. PPR이란? PPR은 하나의 페이지에서 static한 부분은 사용자에게 바로 보여주고, dynamic한 부분은 fallback을 보여주다가 컴포넌트의 준비가 끝나면 해당 컴포넌트를 보여주게 됩니다. 하나의 페이지에서 static, dynamic한 렌더링을 새로운 API를 학습할 필요 없이 더욱 빠르게 제공할 수 있게 해줍니다. PPR은 ..
창의적인 저자 소개 안녕하세요, 저는 프론트엔드 개발자로 일을 하고 있는 키보드워리어 ‘유승완'입니다. 개발자라는 직업은 단순히 코드를 작성하는 것을 넘어서 좋은 세상을 만들기 위해 고군분투하는 직업이라고 생각을 하고 있습니다. 그리고 그 과정속에서 더 좋은 제품을 만들기 위해서 다른 동료분들과 깊이 고민하고 코드와 싸우는 일을 한다고 생각합니다. 그래서 저는 저를 키보드로 전투를 하는 키보드워리어라고 소개하고 있습니다. 나의 커리어를 행복하게 만들기 나는 왜 개발자를 직업으로 선택했을까 이 질문의 답을 찾기 위해서는 나의 어린 시절을 돌아봐야 할 것 같다. 어릴적의 나는 학원에 다니며 컴퓨터 게임을 좋아하는 평범한 학생이었다. 학교에 다니다 보면 계속 작성해야 했던 것이 있었는데 매년 장래희망을 적는 ..
2장 간단한 프로토콜 HTTP 2.1 HTTP는 클라이언트와 서버 간에 통신을 한다 리소스를 요청하는 쪽이 클라이언트, 리소스를 제공하는 쪽이 서버가 된다. HTTP는 클라이언트와 서버의 역활을 명확히 구분하고 있다. 2.2 리퀘스트와 리스폰스를 교환하여 성립 HTTP는 반드시 클라이언트로부터 통신이 시작되고 그 결과가 서버로부터 돌아온다. 서버측은 리퀘스트를 수신하지 않으면 리스폰스가 발생하는 경우는 없다. 2.3 HTTP는 상태를 유지하지 않는 프로토콜이다 HTTP는 상태를 유지하지 않는 stateless 프로토콜이다. 이전에 보냈던 리퀘스트나 리스폰스에 대해서는 전혀 기억하지 못한다. 로그인 상태를 유지하는 등 상태를 유지하기 위해 쿠키라는 기술이 도입되었다. 2.4 리퀘스트 URI로 리소스를 식별..
1장 웹과 네트워크의 기본에 대해 알아보자 1.1 웹은 HTTP로 나타낸다 웹 브라우저에 www.naver.com을 입력하면 우리는 네이버라는 웹 페이지를 볼 수 있다. 입력란에 지정된 URL을 통해 네이버 서버로부터 index.html이라는 리소스를 받게 되기 때문이다. 요청을 하는 웹 브라우저등을 클라이언트라고 하고 요청을 받아서 응답하는 쪽을 서버라고 한다. 클라이언트와 서버간의 통신은 HTTP라는 프로토콜을 기반으로 이루어진다. 1.2 HTTP는 이렇게 태어났고 성장했다. 1.2.1 웹은 지식 공유를 위해 고안되었다 1989년 3월에 HTTP는 탄생했다. CERN(유럽 입자 물리학 연구소)의 팀 버너스 리는 멀리 떨어져 있는 동료 연구자와 지식을 공용하게 할 수 있는 시스템을 고안하였는데 이것이 ..
2회차 6장 기본적인 리팩터링 함수 추출하기 function printOwing(invoice) { printBanner(); let outstanding = calculateOutstanding(); console.log('...'); console.log('...'); } function printOwing(invoice) { printBanner(); let outstanding = calculateOutstanding(); printDetails(outstanding); } function printDetails(outstating) { console.log(`채무액: ${outstanding}`); } 목적과 구현을 분리한다. 하나의 일, 하나의 책임만 갖도록 만들자. console.log를 어..
나는 왜 개발자를 직업으로 선택했을까 이 질문의 답을 찾기 위해서는 나의 어린 시절을 돌아봐야 할 것 같다. 어릴적의 나는 학원에 다니며 컴퓨터 게임을 좋아하는 평범한 학생이었다. 학교에 다니다 보면 계속 작성해야 했던 것이 있었는데 매년 장래희망을 적는 종이를 받았던 것 같다. 장래희망? 나는 장래희망에 대해 딱히 생각해본 적이 없었다. 부모님께서 나에게 ‘아들, 한의사가 돼서 엄마, 아빠 치료해주면 얼마나 좋을까~?’ 이런 얘기를 하셨는데 그때부터 나의 장래희망란은 한의사라는 단어가 차지했던 것 같다. 중학교를 졸업하고, 고등학교에 진학하게 되었는데 대학에 진학하기 위해서는 내신 점수가 매우 중요하다는 것을 알게 되었고 그 당시의 나는 공부에 크게 흥미가 없었기 때문에 이때부터 장래희망란에 한의사라는..