그동안 막연하게 알고 있었던 웹과 인터넷을 간단하게 정리해보고, 공부해보자.
HTTP란 무엇일까? HyperText Transfer Protocol의 약자로 OSI 7계층 중 어플리케이션 레이어에서 사용되는 일종의 통신 규약이다. (나중에 OSI 7계층 모델에 대해서 따로 글을 작성해야겠다.) 웹 브라우저와 웹 서버간의 통신을 위해 설계됐지만
파싱과 변환에 대한 과정을 간단하게 알아보자
브라우저의 작동원리
파서는 이전 글에서 봤듯이, 데이터(문서 파일)이 왔을 때 이것을 컴퓨터가 이해할 수 있게끔 구조를 재구성하는 단계라고 이해하면 되겠다. 파서는 우선 문서가 오게되면 이 문서를 토큰이라는 유효성이 있는 단어 단위로 나누어 분해하고, 이것을 언어구문규칙에 따라 파싱트리로
이전에 브라우저가 리소스를 가져와서 파서를 이용해서 파싱트리를 구성하고, 파싱트리를 컴파일러를 통해서 기계어로 번역하는 과정까지 살펴봤다. 그 과정에서 HTML이라는 마크업 언어는 유연하기 때문에 파싱이 어렵다는 사실까지 알았다. 그렇다면 내부에서 파싱이 일어날때 어떤
네트워크의 사전적 의미는 전선이나 혈관, 통로 등으로 이루어진 망형 조직이다. '네트워크'라는 용어는 방송사 네트워크, 인맥을 의미하는 휴먼 네트워크(Human Network) 등 다양한 의미로 사용하는데, 그 중 가장 많이 쓰이는 의미는 컴퓨터와 컴퓨터를 연결해주는
데이터베이스(DB, Database)는 서로 연관성있는 데이터들의 모임을 이야기한다. 일반적으로 우리가 관심 있는 데이터베이스는 컴퓨터에 저장되어 있는 데이터이며, 또한 데이터 용량이 방대하며 주기억장치에는 저장이 불가능하여 2차저장장치인 하드디스크 또는 플래시 메모리
데이터 베이스의 인스턴스와 스키마는 데이터베이스 분야에서 사용하는 용어인데, 프로그래밍에서의 변수의 값과 타입(type)에 대응되는 유사한 개념이다. 인스턴스(instance)는 실질적인 데이터 리소스를 이야기하고, schema는 데이터베이스의 구조를 의미하니, 거의
SQL은 RDBMS에 저장된 데이터와 통신하기 위해 필요한 프로그래밍 언어다. SQL문법은 영어와 유사하게 만들어져서 쉽게 읽고 쓰고 해석할 수 있다.데이터 조작어는 데이터베이스 사용자 또는 응용 프로그램 소프트웨어가 컴퓨터 데이터베이스에 대해 데이터 검색, 등록, 삭
운영체제(Operating System)란? > 운영체제란 컴퓨터 하드웨어(입출력 장치, CPU)의 리소스를 관리해주면서 동시에 여러 애플리케이션이 작동할 수 있는 환경을 제공해주는 소프트웨어다. OS는 프로그램들이 리소스를 필요로 할 때 필요 리소스를 할당해준다.
현대 운영체제의 기본 요구조건은 프로세스 관리운영체제는 프로세스에게 자원을 할당하고(인터리빙, 세마포어), 프로세스들이 정보를 공유하고 교환, 각 프로세스의 리소스를 다른 프로세스로부터 보호하고, 프로세스들간에 동기화(세마포어) 시킨다.이러한 요구조건을 만족시키기 위해
HTTPS와 HTTP? HTTP 인터넷 상에서 정보를 주고받는 통신목적으로 사용되는 프로토콜이다. 리소스를 받는 쪽을 클라이언트(Client)가 되고, 리소스를 보내주는 쪽이 서버(Server)가 된다. HTTP에 관련된 내용은 이전에 공부한 이전 글 - 클라이언트와
NestJS는 효율적이고 확장가능한 NodeJS Server-Side 어플리케이션을 만들기 위한 프레임워크이다. 내부적으로 ExpressJS를 사용하며, 초기 설정을 통해서 Fastify를 사용할 수 있다. NestJS > NodeJS 및 Server Side JS
컨트롤러는 들어오는 요청(request)를 처리하고 응답(response)를 클라이언트에 돌려주는 역할을 맡는 중심적인 모듈이다. (API).controllers.ts와 같은 파일명으로 작성하게되고, API 디렉토리에 저장하게 된다.컨트롤러의 목적은 애플리케이션에 대한
Swagger는 API 문서 자동화도구이다. Nest를 실질적으로 프로젝트에 적용한 적이 없었기 때문에 이전에는 DB를 기록하는 방식으로 DBdiagram이라는 웹 서비스를 이용했었다. API의 변경사항이 있을때마다 수기로 작성해서 변경시켜
NestJS는 내장된 종속성 주입을 사용해서 쉽게 테스트 코드를 작성할 수 있도록 도와준다! 종속성 주입은 일반적으로 클래스가 아닌 인터페이스를 기반으로하지만, TypeScript에서 인터페이스는 런타임이 아닌 컴파일 타임에만 존재한다.(런타임에는 인터페이스는 증발함.
Testing 테스트가 자동화되어있으면 차후에 유지관리 측면에서 혹은 문제가 발생하거나 했을 때의 개발차원의 자원이 과도하게 들어가는 것을 막을 수 있기때문에 필수적으로 취급된다. 자동화를 통해 개발중에 개별 유닛으로 테스트하거나 테스트 스위트를 쉽게 빠르고 반복할 수
프로바이더는 Nest의 기본이 되는 개념이다. 이해가 쉽지 않아서 공식문서를 보며 정리하고 있는 중이다. 대부분의 기본 Nest 클래스는 서비스, 리포지토리, 팩토리, 헬퍼등 프로바이더로 분류된다. 이렇게 구분하는 방식 자체가 프로바이더(Provider)인 것 같다.