목록BackEnd (14)
Will find a way

CORS(Cross-Origin Resource Sharing) 란?- 교차 출처 자원 공유라는 말로 서로 다른 출처간에 리소스를 공유하는 것을 허용하는 정책을 의미한다.- 서로 다른 출처 공유에 대해서는 기본적으로 제한되어있다. (이를 SOP라 한다.) *SOP (Same-Origin Policy) : 같은 출처끼리만 리소스를 공유할 수 있다는 정책HTML태그를 통한 이미지, CSS, Script 요청은 SOP에 제한이 되지 않음 Origin : 출처를 의미하며, URL구조 / 프로토콜 + 호스트 + 포트를 합친 것을 말함Port가 다른 경우에 다른 출처로 인식한다.HTTP 포트 : 80 / HTTP 포트 : 443 생략 가능 CORS가 정의된 이유SOP(Same-Origin Policy)의 장점동일..
https://jakapark.tistory.com/68 [디자인 패턴] MVC 패턴에 대해서 간단히 알아보는 글들어가기 전백엔드와 DB 기본을 공부하던 중 기초 디자인 패턴중인 MVC 패턴에 대해서 알게 됐다. 디자인 패턴이란 기존 환경 내에서 반복적으로 일어나는 제들을 어떻게 풀어나갈 것인가에 대jakapark.tistory.com 며칠 전에 MVC 패턴에 대해서 알아보았다. (윗글 참고)오늘은 MVC 패턴 예제 코드를 작성해보려고 한다. MVC에 대해서 간단히 알아보자면Model : 데이터를 처리View : 유저가 보이는 화면Controller : Model과 View를 이어주며 유저의 요청을 담당한다 .env 파일DB_CONNECT = "MongoDBURI"Config.js [./config/db..

const http = require("http");// createServer 메서드가 생성한 서버를 변수나 상수로 지정해야함const server = http.createServer((req, res) => { const { url, method, headers } = req; console.log(url, method, headers); // 서버에 요청을 보내지 않으면 안됨 // res (response : 응답) 우리가 반송해야할 데이터 res.setHeader('Content-type', 'text/html'); // setHeader : 새로운 헤더 설정 / Content-type은 브라우저가 알고 이해하며 받아들이는 디폴트 헤더 // 응답에 헤더를 붙이게 되고, 컨텐츠 ..

목차1. MySql 모듈2. mysql 모듈 설치3. mysql 모듈 사용 1. MySql 모듈MySql 은 NodeJs의 외장 모듈을 통해 이용할 수 있으며 MySql 자체는 아니다.NodeJs와 이어주는 역할, 쉽게 말해 드라이버라 생각하면 된다. 특징- MySql 콜백방식- MySql2 Promise 기반으로 사용- MySql2 공식문서에서도 권장하는 모듈 2. MySql 모듈 설치npm i mysql2 3. MySql 모듈 사용- require로 MySql2 외장 모듈 가져오기const mysql = require("mysql2"); - createConnection : 연결 요청을 보내고 반환받은 객체를 통해 쿼리문을 요청할 수 있는 메서드를 제공한다.- user : 유저 이름- password..

목차1. 템플릿 엔진 (EJS)2. EJS 설치 및 사용 방법1. 템플릿 엔진우리가 많이 쓰는 HTML은 정적인 언어다. 정적인 페이지는 주어진 기능만 사용할 수 있는 한계가 있고직접 기능을 추가할 수 없다. (자바스크립트를 사용해야만 한다.) 반면에 템플릿 엔진은 자바스크립트를 사용하여 HTML을 렌더링 할 수 있다.HTML 과 문법이 거의 흡사하지만 자바스크립트의 문법이 들어갈 수 있다는 특징이 있다.(서버측에서 html을 만들어서 응답해주는 것이다.) 템플릿 엔진에는 여러가지가 있는데 우리가 알아볼 것은 그 중 EJS다. 2. EJS 설치 및 사용 방법ejs 설치npm i ejs 문법은 다음과 같다. 문법이 다소 난해하다. 밑에서 어떻게 사용하는지 예를 들어보자 server.js// ejs를 re..

목차1. Express란?2. Express 설치3. Express 사용 1. Express란?NodeJs의 프레임워크로써 http net으로 구현 가능한 네트워크 TCP를 모던한느낌으로 외장모듈로 라이브러리를 구현한것이다.NodeJs로만 사용하여 라우팅을 처리하려면 상당히 번거로운 작업을 해야했다.Express를 사용하면 HTTP 모듈 기능 외에도 다양한 기능이 포함되어 있어서 유용하게 쓸 수 있다 1) 라우팅HTTP 모듈을 사용할 때는 if 문이나 switch 문으로 요청 메서드나 요청 URL에 따라 라우팅 해야했다. 2) 미들웨어Express에는 미들웨어라는 개념이 있어서 요청과 응답 사이에서 여러가지 기능을 실행할 수 있다.(미들웨어가 많아서 가져와서 사용이 가능) 3) 템플릿 엔진HTML 페이지..
fs 모듈이란파일을 읽거나 쓰거나 생성 삭제 등을 할 때 사용하는 내장 모듈 파일시스템내장 모듈이기 때문에 별도의 라이브러리 설치 없이 사용이 가능하다. 모듈 불러오기const fs = require("fs"); 비동기 함수 vs 동기 함수fs 모듈에서 제공하는 비동기 메서드는 마지막 인자로 콜백함수를 받고 아무 값도 반환하지 않는다.반면에 동기 메서드는 결과값을 반환(return)하며 예외를 일으킬 수 있다.(동기 메서드는 sync로 끝난다. 동기 / 비동기 메서드 구분이 가능) 폴더가 있는지 없는지 확인하는 법 (existsSync)let folder = fs.existsSync("test");console.log(folder);// test라는 폴더가 있으면 true 없으면 false 폴더 ..

3-Way-Handshake란?TCP는 데이터를 전송하기 전에 송신자와 수신자 간에 연결을 설정한다. 이 과정을 3-way-handshake라고 한다. 순서1. 클라이언트가 서버에 연결 요청(SYN)을 보낸다.2. 서버가 클아이언트의 요청을 승인하고 연결 수락(SYN-ACK)을 보낸다.3. 클라이언트가 서버의 수락을 확인(ACK)한다 일단 3-way-handshake를 구현하기 위해서는클라이언트와 서버가 있어야한다.서버와 클라이언트에 해당하는 코드를 구현해보자. 서버 (server)// net 내장모듈 사용const net = require("net");const server = net.createServer(() => {});// connection -> 서버측에서 서버 연결됐을 때 3-way-hand..
Node.js에서 파일 시스템 모듈(fs)과 스트림 모듈을 사용하여, 파일 'test.txt'를 읽고, 그 내용을 대문자로 변환한 후, 'test2.txt'라는 새로운 파일에 저장하는 예제. // 1. 필요한 모듈 로드// 'stream' 모듈에서 'Transform' 객체를 가져온다.// 'Transform' 스트림은 입력 데이터를 받아 변환 후 출력할 수 있는 스트림// 'fs' 모듈은 파일 시스템을 조작하기 위해 사용되며, 여기서는 파일을 읽고 쓰는데 사용된다.const { transform } = require("stream");const fs = require("fs");// 2. 청크 크기 설정// 청크 크기를 설정한다. 이 예제에서는 64Kb로 설정했다.// 스트림은 데이터를 일정크기(청크)..
목차1. 버퍼객체2. 문자 집합 2 - 1 아스키 코드 (ASCII) 2 - 2 유니코드 (Unicode) 2 - 3 인코딩 규칙3. 스트림과 버퍼 1. Buffer 객체NodeJs의 내장 객체 Buffer 공식문서바이너리 데이터의 스트림을 읽거나 조작하는 메커니즘 octet 스트림(일반적으로 8bit 형식으로 된 데이터를 의미) 과의 상호작용을 가능하게 하기 위해 만들어졌다.Buffer 클래스는 Binary Data 들의 스트림을 직접 다루기 위해 NodeJs API에 추가된 것 Binary Data2진수 참고 자료https://jakapark.tistory.com/38 2진수와 비트 / 16진수목차1. 비트(bit)란?2. 2진수3. 16진수 1. 비트(bit)란?비트는 컴퓨터에서 데이터를 표현..