[프로그래머스 데브코스] TIL - 3주차 DAY2

방울·2024년 4월 23일
0

HTTP method

HTTP 메소드는 웹 서버와 통신할 때 사용자의 의도를 명시적으로 표현하는 방법이다. 각 메소드는 특정 작업을 수행하도록 설계되었다.

  • GET 데이터 조회
  • POST 새로운 데이터 생성(=등록)
  • PUT 기존 데이터 전체적으로 수정(덮어쓰기, 값이 있든없든 바꼈는 말든 무조건 수정)
  • PATCH 기존 데이터 중 일부를 수정(값이 바꼈다면, 바뀐 값만 수정)
  • DELETE 데이터 삭제
  • HEAD, OPTIONS, CONNECT, TRACE 다른 보조적인 기능

cf. PATCH - 부분 수정
개인정보 수정 같이 특정 요소만 바꿈 → 부분 수정!
코드 작성할 때 PATCH는 까다로운 면이 있다.

Node.js 개요

Node.js는 이벤트 기반, 비동기 I/O를 지원하는 JavaScript 런타임 환경이다. 프론트엔드 개발 뿐만 아니라 백엔드 개발에도 사용된다. 대표적인 사례로는 넷플릭스, 에어비앤비, 링크드인, 우버 등등...nasa까지!

Node.js 특징

  • 싱글 스레드: 모든 요청을 단일 스레드에서 처리한다.
  • 이벤트 기반: 이벤트가 발생할 때마다 콜백 함수를 호출한다.
  • 논블로킹 I/O: I/O 작업이 CPU 작업과 동시에 일어날 수 있도록 한다.

여기서도 강사님의 기가막힌 비유!

  • 싱글 스레드 ⇒ 식당에서 단 한 명의 요리사가 여러 주문을 동시에 처리하는 것과 비슷하다. 주문이 계속 밀려들어와도 한명이 어떻게든 처리해야 한다.
    라면 1개, 볶음밥 1개 주문이 들어왔다. 라면 조리 10분 중 물 끓는 시간이 5분이고, 볶음밥 완성하는데 5분이 걸린다면 라면 물 올려놓고 볶음밥 요리하고 라면을 요리하면 효율이 극대화가 될 것이다!
  • 이벤트 기반 ⇒ 주문이 들어와야만 일을 한다.(=주문이 없으면 일을 하지 않음)
  • 논 블로킹 I/O(막히는게 없는 입출력) ⇒ 한 명이 일을 하는데, 요리를 순차적으로 하지 않고 중간중간 비는 시간이 있으면 다른 요리를 한다.

논 블로킹 실습 setTimeout

function first(){
    console.log("첫 번쨰");
}

function second(){
    console.log("두 번쨰");
}

function third(){
    console.log("세 번쨰");
}

first();
setTimeout(second, 2000);
third();

모듈

모듈이란?

재사용 가능한 코드 덩어리를 의미한다. 이는 프로그램의 특정 기능을 담당하는 코드 부분으로, 다른 프로그램에서 쉽게 불러와 사용할 수 있습니다. 모듈화는 코드의 재사용성을 높이고, 관리를 용이하게 하며, 네임스페이스를 분리하여 코드 충돌을 방지합니다.

모듈 종류

  1. 내장 모듈
    프로그래밍 언어나 환경에 기본적으로 내장되어 있는 모듈. (예: Node.js의 http, fs 모듈)
  2. 외장 모듈
    다른 개발자들이 만들어 공유한 모듈로, npm(Node Package Manager)을 통해 설치하여 사용할 수 있다. (예: express, react)

라이브러리 vs 프레임워크

라이브러리와 프레임워크는 코드 재사용을 돕는 도구지만, 사용 방식에 차이가 있다.

  • 라이브러리(Library)
    라이브러리는 개발자가 필요에 따라 선택적으로 사용할 수 있는 도구 모음.
    개발자가 프로그램의 흐름을 제어하며, 필요할 때 특정 기능을 라이브러리에서 호출하여 사용.
    (예: jQuery, Lodash)
  • 프레임워크(Framework)
    프레임워크는 전체적인 애플리케이션의 구조(틀)를 제공.
    프레임워크가 프로그램의 흐름을 제어하고, 개발자는 프레임워크가 정한 규칙에 따라 코드를 작성.
    프레임워크는 필요한 모든 라이브러리를 포함하고 있을 수 있다.
    (예: Angular, Spring)

라이브러리는 상세 주제의 한권의 책을 골라내는 것. 내가 원하는 기준에 맞춰서!
장점은 내가 원하는 걸 빌릴 수 있고, 단점은 고르기가 힘들 수도 있다. 찾는 시간 오래걸리고 도서관 가는 시간 등 고려해야할 게 많다.
라이브러리도 똑같은 미리 만들어놓은 모듈, 코드를 직접 찾아 선택해서 사용할 수 있음(빌려서 프로젝트에 적용해볼 수 있는 것)

라이브러리=모듈

프레임워크는 틀 안에서 일을 하는 것
내가 원하는(만들고싶은) 서비스 만들기(구현하기) 위한 모든 일을 틀 안에서 하는 것
프레임워크는 필요해보이는 라이브러리(모듈)를 미리 다 틀 안에 넣어뒀다!
프레임워크가 지원하는 라이브러리 사용

npm, figlet 사용해보기

npm(Node Package Manager)

npm은 Node.js의 패키지 관리자로, Node.js와 함께 자동으로 설치된다. npm을 사용하면 다양한 자바스크립트 라이브러리와 모듈을 쉽게 설치, 관리, 삭제할 수 있다.

주요 기능

npm install [패키지명] 또는 npm i [패키지명]: 패키지 설치
npm install -g [패키지명] (전역 설치): 글로벌 설치
npm uninstall [패키지명]: 패키지 제거
package.json: 프로젝트의 의존성을 관리하는 파일
package-lock.json: 설치된 모든 패키지의 정확한 버전을 기록하여 의존성을 일관되게 유지하는 파일
node_modules: 설치된 모든 npm 패키지가 저장되는 폴더

npm | Home

figlet 모듈 사용하기

figlet은 ASCII 아트를 생성하는 데 사용되는 npm 모듈이다. 텍스트를 스타일리시한 아트 형식으로 변환해주는 도구.
npm: figlet

npm i figlet
var figlet = require("figlet");

figlet("Bang Subeen!", function (err, data) {
  if (err) {
    console.log("Something went wrong...");
    console.dir(err);
    return;
  }
  console.log(data);
});

함수의 매개변수로 변수 또는 값을 전달하는 것이 아니라, 함수를 전달하는 것! 콜백 함수라고 부르는 바로 그것.

함수 이름 없이 익명 함수 매개변수로 넘겨준다.(익명 함수 쓰는 이유는 이 함수를 쓸 일이 다른 데는 없어 한 번만 사용하기 때문)

첫 번째 매개변수 문자열을 받아서 아스키 아트를 만든 다음에 두 번째 매개변수 function 함수를 실행 = 콜백!

Node.js 서버 예제

let http=require('http');

function onRequest(request, response){
    response.writeHead(200,{'Content-Type':'text/html'});
    response.write('Hello Node.js');
    response.end();
}

http.createServer(onRequest).listen(8888);

이 스크립트는 8888 포트에서 서버를 실행하고, 웹 브라우저에서 접근할 경우 "Hello Node.js" 메시지를 표시한다. http.createServer() 메소드는 요청을 처리할 콜백 함수를 매개변수로 받는다.

let, const 및 템플릿 문자열

  • let: 블록 범위의 지역 변수를 선언하며, 선언된 블록 내에서만 유효하다.
  • const: 블록 범위의 상수를 선언하며, 선언 후에는 값을 변경할 수 없다.
  • 템플릿 문자열: 백틱을 사용하여 문자열을 표현하며, ${expression} 형태로 표현식을 문자열 안에 삽입할 수 있다.
profile
방울방울

0개의 댓글