개발 일지 168

[Web] HTTP Messages

HTTP(HyperText Transfer Protocol)는 HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜이다. 웹 브라우저와 웹 서버의 소통을 위해 디자인 되었으며, HTTP는 특정 상태를 유지하지 않는 특징(Stateless, 무상태성)이 있다. HTTP messages는 클라이언트와 서버 사이에서 데이터가 교환되는 방식으로 타입은 요청(request)과 응답(response)이 있다. 요청과 응답은 다음과 같이 비슷한 구조를 가진다. start line : 요청이나 응답의 상태를 나타낸다. 항상 첫 번째 줄에 위치하며 이 줄은 한 줄로 끝난다. 응답에서는 status line이라고 부른다. HTTP headers : 요청에 대한 설명 혹은 메시지 본문에 대한 설명이..

개발 일지/CS 2023.01.26

[Web] AJAX

AJAX(Asynchronous JavaScript And XMLHttpRequest)는 JavaScript, DOM, Fetch, XMLHttpRequest, HTML 등의 다양한 기술을 사용하는 웹 개발 기법이다. 기본적으로 HTTP 프로토콜은 화면의 내용을 갱신하기 위해서는 클라이언트 쪽에서 request를 보내고 서버 쪽에서 response를 받으면서 페이지 전체를 갱신하게 되는데, 이런 경우 자원과 시간의 낭비가 발생한다. 하지만 AJAX는 페이지 전체가 아닌 일부분만 갱신할 수 있기 때문에 그만큼의 자원과 시간을 아낄 수 있다. 가장 큰 특징으로는 웹 페이지에 필요한 부분에 필요한 데이터만 비동기적으로 받아올 수 있다는 것이다. 이러한 '비동기성'을 통해 사용자의 Event가 있으면 전체 페이..

개발 일지/CS 2023.01.26

[Web] SSR / CSR

SSR(Server Side Rendering) SSR은 JavaScript가 웹 페이지를 브라우저에서 렌더링 하는 대신에, 서버에서 렌더링 한다. 브라우저가 서버의 URI로 GET 요청을 보내면 서버는 정해진 웹 페이지 파일을 브라우저로 전송한다. 그리고 서버의 웹 페이지가 브라우저에 도착하면 완전히 렌더링 된다. 만약 웹 페이지의 내용에 데이터베이스의 데이터가 필요한 경우, 서버는 데이터베이스의 데이터를 불러온 다음 웹 페이지를 완전히 렌더링 된 페이지로 변환하여 브라우저에 응답으로 보낸다. SSR은 다음의 경우에 사용한다. SEO(Search Engine Optimization)가 우선순위일 경우 웹 페이지의 첫 화면 렌더링이 빠르게 필요한 경우 웹 페이지가 사용자와 상호작용이 적은 경우 SSR은 ..

개발 일지/CS 2023.01.26

[Web] 웹 애플리케이션

웹 애플리케이션(web application)은 인터넷을 통해 웹 브라우저에서 이용할 수 있는 응용 프로그램이다. 웹사이트(website)와 헷갈릴 수 있지만, 웹 개발 영역에서 웹사이트는 일반적으로 정적 페이지들의 집합체를 의미한다. 만약 웹사이트가 정적 페이지들 뿐 아니라, 동적 페이지를 포함하게 된다면 웹 애플리케이션이 된다. 사실 오늘날 만들어지는 대부분의 웹사이트는 웹 애플리케이션이라고 할 수 있다. 유저가 웹브라우저에서 요청을 하면 애플리케이션의 다양한 요소들이 상호작용을 한다. 수많은 유저들의 다양한 요청과 입력에 대해 알맞은 응답을 하기 위해 웹 애플리케이션 서버는 많은 부분 요소와 외부 애플리케이션 또한 공유하여 설계된다. 웹 애플리케이션은 인터넷에 공개되는 순간부터 글로벌 네트워크의 막..

개발 일지/CS 2023.01.26

[Web] 클라이언트-서버 아키텍처

웹에서 제공되는 서비스는 주로 서비스를 이용하는 클라이언트와 서비스를 제공하는 서버로 나뉜다. 즉 리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리시킨 것을 클라이언트-서버 아키텍처(2티어 아키텍처)라고 부른다. 리소스를 사용하는 앱이 '클라이언트', 리소스를 제공(serve)하는 곳이 '서버'이다. 클라이언트는 사용자가 직접 이용하기 때문에 사용 편의성이나 휴대성 등을 고려하여 개발이 이루어지며, 서버는 사용자와 직접적 접점이 없기 때문에 편의성보다는 기능에 중점을 두고 개발이 이루어진다. 클라이언트와 서버는 요청과 응답을 주고 받는 관게이며, 요청을 해야 응답이 오고 요청없이 응답이 오는 경우는 없다. 일반적으로 서버는 리소스를 전달해주는 역할만을 담당한다. 그리고 리소스를 저장하는 공간을 '데이터..

개발 일지/CS 2023.01.26

[Network] URL

URL(Uniform Resource Locator)은 웹에 게시된 어떤 자원을 찾기 위한 브라우저에서 사용되는 메커니즘이다. 쉽게 말해 웹 페이지를 찾기 위한 주소도 포함되어 있으며, 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있다. 브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다. URL은 scheme, hosts, url-path로 구분할 수 있다. scheme : 통신 방식(프로토콜) 결정 hosts : 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타냄 url-path : 웹 서버에서 지정한 루트 디렉토리로부터 시작해 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타냄 URI(Uniform Resource Identi..

개발 일지/CS 2023.01.26

[Network] TCP / UDP

TCP와 UDP는 TCP/IP 4계층 모델을 기준으로 IP 프로토콜의 계층인 인터넷 계층의 상위에서 동작한다. 전송계층에 속하는 TCP와 UDP는 2계층에서 동작하는 IP와 4계층에서 동작하는 애플리케이션(http 등)을 중개하는 역할을 한다. 전송계층은 송수신자를 연결하는 통신서비스를 제공하는 계층이며, 쉽게 말해 데이터의 전달을 담당한다. 여기서 데이터를 보내기 위해 사용하는 프로토콜이 바로 TCP와 UDP이다. TCP와 UDP는 중개하는 역할을 하는 점에서는 동일하지만 서로 다른 특징을 가지고 있다. TCP(Transmission Control Protocol) TCP는 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이며, 다음과 같은 특징을 가지고 있다. 연결 지향..

개발 일지/CS 2023.01.26

[Network] 인터넷 프로토콜(Internet Protocol, IP)

IP란, 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약을 의미한다. 컴퓨터는 사용하는 운영체제도 다르고 프로그램마다 구현된 언어가 다르기 때문에 멀리 떨어진 컴퓨터들끼리 서로 소통하기 위해서는 규약이 필요하다. 이러한 공통된 약속을 프로토콜이라 하며, TCP/IP 프로토콜이 주로 사용하는 약속이다. 주소(Address) IP 주소 IP 주소란, 네트워크 환경에서 컴퓨터끼리 통신하기 위해 각 컴퓨터에 부여된 네트워크 상 주소체계이다. LAN 네트워크 내부에서 사용되는 것은 Private IP 주소이고 Public IP 주소는 인터넷에서 사용된다. 인터넷에 연결된 모든 PC는 IP 주소체계를 따라서 네 덩이의 숫자로 구분되는데, 이렇게 구분된 IP 주소체계를 IPv4(Inter..

개발 일지/CS 2023.01.26

[자료구조] 힙 트리(Heap Tree)

heap tree는 배열의 원소를 정렬하기 위한 자료구조이다. 일반적인 트리 구조와는 달리 우선순위에 따라서 빠르게 자료를 검색할 수 있다. 특징 heap tree는 최대 힙과 최소 힙으로 구현한다. 최대 힙은 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리이다. 반대로 최소 힙은 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리이다. 완전 이진 트리로 구성되어 있다. 이는 삽입 / 삭제 시 성능을 위해서이다. 중복된 값을 저장할 수 있다. 단순히 최댓값 / 최솟값을 찾아내기 위한 구조이기 때문이다. 구현 heap tree는 완전 이진 트리로 구현되어 배열로 표현할 수 있다. 루트 노드부터 높이 순서대로 배열에 모두 정렬이 가능하다. 일반적으로 배열의 0번..

개발 일지/CS 2023.01.21

[자료구조] 해시 테이블(Hash Table)

해시 테이블(Hash Table)이란, 검색하고자 하는 키(key) 값을 입력받아서 해시 함수(hash function)를 통해 얻은 해시를 배열의 색인(index)으로 환산해서 데이터(value)에 접근하는 자료구조이다. 즉, 필요한 데이터의 키를 해시함수를 사용해 별도의 해시로 바꾸고 해당하는 데이터를 함께 저장하는 자료구조이다. 해시 테이블은 주소록(Address Book), 블록체인(Blockchain), 크롬, V8 등에 사용된다. 구조 해시 테이블은 키, 해시 함수, 해시, 데이터로 이루어져 있다. 키(key) : 고유한 값으로 해시 함수의 입력값이 된다. 해시 함수(hash function) : 키를 해시로 바꿔주는 역할을 한다. 해시(hash) : 해시 함수에 의해 얻어지는 값이다. 데이터..

개발 일지/CS 2023.01.21