Computer Science

    프레임워크(Framework)와 라이브러리(Library) 정의

    프레임워크와 라이브러리 단어를 사용하면서, 내가 정말 알고 사용하는가에 의문이 많이 들었습니다. 엄연히 다른 단어이고 다른 뜻일텐데 혼용해서 사용하는게 아닌지 싶어 정리를 시작했습니다. 프레임워크 (Framework) - 사전적 의미 컴퓨터 프로그래밍에서, 소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다. 소프트웨어 환경에서 사용할 수 있게 만들어 준다. 프레임워크는 프로그램을 개발하기 위한 큰 틀을 제공해준다고 생각합니다. ex) Java - Spring, Python - Django 라이브러리 (Library) - 사전적 의미 소프트웨어 개발 시 사용되는..

    [HTTP] Status Code / Request Methods 정리

    1. HTTP/2 순서 HTTP/2는 TCP 기반이며 HTTP/3는 UDP 기반 입니다. HTTP/2 순서 1. TCP connection을 통하여 Client와 Sever 연결 확인 2. Client에서 request(요청)하여 GET(request메소드)을 통한 URL(정보를 받기위한 경로), headers(정보)으로 서버에 요청 3. Sever에서 response(응답) 통하여 status code와 관련된 파일을 보낸다. 4. TCP connection이 닫힌다. 2. HTTP Status Code 정리 참고 자료 HTTP 상태 코드 - HTTP | MDN HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답..

    [네트워크] 웹 캐시

    1. 캐시의 기본 원리 및 적용 캐시(cache)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킵니다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용합니다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있습니다. 브라우저에 캐시를 저장할 땐 헤더에 cache-control 속성을 통해 캐시가 유효한 시간을 지정할 수 있습니다. 이 경우 60초로 설정한다면 60초 동안은 해당 캐시가 유효하다는 의미가 됩니다. 두 번째 요청에선 캐시를 우선 조회하게 됩니다. 캐시가 존재하고 아직 60초가 지나지 않아 유효한 캐시라면 해당 캐시에서 데이터를 가져옵니..

    [네트워크] HTTP 헤더

    1. 표현 헤더(Representation Headers) HTTP 메시지는 헤더와 바디로 구분할 수 있습니다. HTTP 바디에서는 데이터 메시지 본문(Message body)을 통해서 표현(Representation) 데이터를 전달합니다. 여기서 데이터를 실어 나르는 부분을 페이로드(Payload)라 합니다. 표현은 요청이나 응답에서 전달할 실제 데이터를 뜻하며 표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공합니다. HTTP 헤더 HTTP 메시지는 헤더와 바디로 구분할 수 있습니다. HTTP 바디에서는 데이터 메시지 본문(Message body)을 통해서 표현(Representation) 데이터를 전달합니다. 여기서 데이터를 실어 나르는 부분을 페이로드(Payload)라 합니다. 표현은 요청이나..

    [네트워크] 인터넷 프로토콜 (IP, TCP/UDP, HTTP)

    네트워크 흐름을 이해하기 위해서는 웹 통신을 가능하게 한 HTTP 통신의 흐름을 파악하는 것이 중요합니다. 1. IP와 IP Packet 복잡한 인터넷 망 속 수많은 노드들을 지나 어떻게 클라이언트와 서버가 통신할 수 있는 것은, 출발지에서 목적지까지 데이터가 무사히 전달되기 위해선 규칙이 있기 때문입니다. (여기서 노드는 하나의 서버 컴퓨터를 의미합니다.) 그래서 흔히 말하는 IP(인터넷 프로토콜) 주소를 컴퓨터에 부여하여 이를 이용해 통신합니다. IP는 지정한 IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터 전달을 합니다. IP 패킷에서 패킷은 pack과 bucket이 합쳐진 단어로 소포로 비유할 수 있습니다. IP 패킷은 이를 데이터 통신에 적용한 것이라고 보면 됩니다..

    [Server] Express, Middleware

    Express.js 소개 MERN stack은 JavaScript 생태계에서 인기 있는 프레임워크인 MongoDB, Express, React, Node를 지칭하는 말입니다. 이 중에서 Express.js는 Node.js 환경에서 웹 서버, 또는 API 서버를 제작하기 위해 사용되는 인기 있는 프레임워크입니다. Express로 구현한 서버가 http 모듈로 작성한 서버와 다른 점은 다음과 같습니다. 미들웨어 추가가 편리하다. 자체 라우터를 제공한다. 공식 문서를 따라 Express로 간단한 웹 서버를 만들 수 있습니다. 순수한 node.js 코드로 라우팅을 구현한 아래의 코드 const requestHandler = (req, res) => { if(req.url === '/lower') { if (re..

    [CS] 웹 서비스에서 캐시

    유튜브 영상에서 정말 설명을 잘해주셔서 처음 접하는 내용이면, 글 읽는거보다 훨씬 나은거 같습니다 링크는 글 아래에 있습니다. 처음에는 램과 비슷한 개념이라고 생각했지만 미묘하게 다른것을 알게 되었습니다. 1. 캐시? 많은 시간이나 연산이 필요한 작업의 결과를 저장해두는 것을 의미합니다. (데이터나 값을 미리 복사해 놓는 임시 장소) 컴퓨팅에서 캐시는 일반적으로 일시적인(temporarily) 데이터를 저장하기 위한 목적으로 존재하는 고속의 데이터 저장공간입니다. 첫 작업 이후에 이 데이터에 대한 요청이 있을 경우, 데이터의 기본 저장공간에 접근할 때보다 더 빠르게 요청을 처리할 수 있습니다. 캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있습니다. 2. 캐시의 일반적인 작동원..

    [CS] 가비지 컬렉션

    가비지 컬렉션 가비지 컬렉션은 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것입니다. 동적 할당된 메모리 영역 가운데 더 이상 사용할 수 없게 된 영역을 탐지하여 자동으로 해제하는 기법입니다. 더 이상 사용할 수 없게 된 영역이란, 어떤 변수도 가리키지 않게 된 영역을 의미합니다. 자바, C#, 그리고 일부 스크립트 언어들은 처음부터 쓰레기 수집 기법을 염두에 두고 설계되어, 언어 정의에 쓰레기 수집이 포함되어 있다. C, C++ 등의 프로그래밍 언어는 수동 메모리 관리를 가정하고 설계되었으나 지원하는 구현도 존재한다. 가비지 컬렉션의 방법 트레이싱: 한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag에 표시 후 삭제하는 mark and sweep 방법입니다. 객체에 in-u..

    [CS] 스레드(Thread), 멀티 스레드(Multi-Thread)

    1. 스레드(Thread) 스레드는 사전적 의미로 한 가닥의 실이라는 뜻입니다. 한 가지 작업을 실행하기 위해 순차적으로 실행한 코드를 실처럼 이어 놓았다고 해서 유래된 이름입니다. 하나의 스레드는 코드가 실행되는 하나의 흐름이기 때문에, 한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미입니다. 스레드의 특징 프로세스 내에서 실행되는 흐름의 단위 각 스레드마다 call stack이 존재(call stack: 실행중인 서브루틴을 저장하는 자료 구조) 스레드는 다른 스레드와 독립적으로 동작 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상..

    [CS] 운영체제, 프로세스

    참 많이 들어본 용어이고 그냥 어렴풋이 알고 있는 단어들이지만 설명이나 정확하게 알고 있지는 않았는데 그 단어의 의미를 알게 되어 좋은 기회 였던것 같습니다. 자체(하드웨어)는 스스로 할 수 있는 일이 없습니다. 하드웨어의 설계를 바탕으로 하드웨어에게 일을 시켜야만 그 의미가 있습니다. 하드웨어에게 일을 시키는 주체가 바로 운영체제입니다. 그냥 운영체제 하면 윈도우, 맥 떠올리기 쉽지만 이렇게 정의해서 설명하기 쉽지 않습니다. 1. 운영체제 운영체제가 없다면, 응용 프로그램이 실행될 수 없습니다. 응용 프로그램은 컴퓨터를 이용해 다양한 작업을 하는 것이 목적인고, 운영체제는 응용 프로그램이 하드웨어에게 일을 시킬 수 있도록 도와줍니다. 하드웨어를 구성하는 일을 하는 CPU, 자료를 저장하는 RAM, 디스..