1. ORM(Object Relational Mapping) 2. sequelize 사용 방법 1. ORM(Object Relational Mapping) ORM(Object Relational Mapping)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. 객체 지향 언어에서 사용할 수 있는 "가상" 객체 데이터베이스를 구축할 수 있다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다. 객체 모델과 관계형 모델 간에는 불일치가 존재하는데, ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. ORM 장점 (1) 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 ..
1. Web Socket 통신의 이해 2. ws 모듈을 이용한 구현 1. Web Socket 통신의 이해 Web Socket을 사용하기 전에 이것이 어떤 기능을 하고, 왜 사용하는가에 대해서 먼저 생각해 보아야 한다. http는 네트워크를 통해 웹 브라우저가 웹 서버로부터 데이터를 가져오기 위한 통신 방법으로 사용된다. http 통신 이외에도 Web Socket 통신을 이용하여 데이터를 주고받을 수 있다. 그렇다면 http 통신만 사용해도 충분할 것 같은데 굳이 왜 Web Socket 통신도 쓰는걸까? http 통신은 클라이언트의 요청이 있을 때에만 서버가 응답하여 정보를 전송하고, 곧바로 연결을 끊는 방식이다. 즉, 클라이언트가 요청을 보내고 서버가 응답하는 단방향통신 (stateless : 연결상태유..
1. os 내부 모듈 2. path 내부 모듈 1. os 내부 모듈 const os = require('os'); console.log(os.cpus().length); // 4 console.log(os.cpus()); // model, speed, times ... console.log(os.platform()); // linux console.log(os.homedir()); // home/jenny console.log(os.hostname()); // DESKTOP-PUMI14Q console.log(os.freemem()); // 2342322176 console.log(os.totalmem()); // 6120857600 console.log(os.networkInterfaces()); //..
1. Multer 모듈 소개 2. Multer 모듈 설치 및 셋팅 3. 이미지 업로드 구현 1. Multer 모듈 소개 Multer는 파일 업로드를 위해 사용되는 (multipart/form-data를 다루기 위한) Node.js의 미들웨어로, 효율성을 극대화하기 위해 busboy를 기반으로 하고 있다. 2. Multer 모듈 설치 및 셋팅 먼저, 아래의 명령어로 Multer를 설치한다. $ npm i multer 설치가 완료되었다면, server.js에 다음과 같이 입력한다. const express = require('express'); const nunjucks = require('nunjucks'); const multer = require('multer'); const path = require..
1. nodemon 2. cookie-parser 1. nodemon nodemon은 node monitor의 약자로, 노드가 실행하는 파일이 속한 디렉토리를 감시하고 있다가 파일이 수정되면 자동으로 노드 애플리케이션을 재시작하는 확장 모듈이다. 이 확장 모듈을 이용하면 개발 중인 노드 애플리케이션의 소스 코드를 수정할 때마다 매번 노드 명령어를 통해 새로 시작할 필요가 없으므로 매우 편리하다. 설치 npm i -g nodemon nodemon 모듈은 npm 명령어로 쉽게 설치할 수 있다. 노드 애플리케이션을 개발할 때마다 사용할 예정이므로 -g 옵션을 써서 글로벌로 설치한다. 사용방법 nodemon server.js 터미널에서 실행하고자 하는 애플리케이션을 node 명령어 대신 nodemon으로 실행하..
1. 버퍼(buffer) 2. 인코딩(encoding)과 디코딩(decoding) 3. 해시 함수(Hash Function) 4. crypto 모듈을 이용한 암호화 5. 솔트(salt) 6. 토큰 기반 웹 인증 방식 7. JWT(JSON Web Token) 1. 버퍼(buffer) 버퍼(buffer)는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다. 버퍼링(buffering)이란 버퍼를 활용하는 방식 또는 버퍼를 채우는 동작을 말한다. 다른 말로 '큐(Queue)'라고도 한다. 버퍼는 컴퓨터 안의 프로세스 사이에서 데이터를 이동시킬 때 사용된다. 보통 데이터는 키보드와 같은 입력 장치로부터 받거나 프린터와 같은 출력 장치로 내보낼 때 버퍼 안에 저장된..
1. HTTP Connection 2. Connection Pool 3. MySQL 연동을 위한 Connection Pool 코드 구현 1. HTTP Connection HTTP는 TCP 기반으로 만들어진 프로토콜이다. TCP는 신뢰성 연결을 지향하는 프로토콜로, 3-way Handshake를 통해 검증된 클라이언트와 서버 간에 신뢰성 있는 요청/응답이 가능하다. HTTP Connection에는 Multiple Connection과 Persistent Connection이 있다. HTTP 초기 버전에서는 Multiple Connection 방식을 사용했다. Multiple Connection은 매 요청/응답 쌍 마다 새로운 요청을 여는 것을 의미한다. 웹의 초창기에는 웹을 통해 전달해야 하는 사이트의 콘..
1. 요청 시 Body 데이터타입이 string인 경우 2. 요청 시 Body 데이터타입이 JSON인 경우 웹에서 POST로 요청할 때에는 데이터를 Body에 담아서 보낸다. 이때 Body에 담기는 데이터의 데이터타입에 따라 Node.js에서 작성해주는 body-parser 내용에 차이가 있다. 1. 요청 시 Body 데이터타입이 string인 경우 요청(Request) 시 Body에 string 값이 담기는 경우에는 아래와 같이 Node.js에 써주면 된다. $ app.use(express.urlencoded({extended:true})); 이때 요청 헤더에는 'content-type': 'application/x-www-form-urlencoded' 라고 나타난다. 2. 요청 시 Body 데이터타입..
1. Router (라우터) 2. Middleware (미들웨어) 1. Router (라우터) Node.js에서 express 라이브러리를 사용할 때 필수적으로 알고 있어야 하는 개념 중에 라우터와 미들웨어가 있다. Node.js를 접하기 전, 라우터는 OSI 7계층 중 네트워크 계층(제3레이어)의 장비로서 컴퓨터 네트워크 간에 데이터 패킷을 전송하는 네트워크 장비로서의 뜻만 알고 있었다. Node.js에서 쓰이는 라우터라는 용어는 물리적인 어떤 장치나 장비를 뜻하지는 않지만, 본질적인 의미는 동일하다. 라우터는 클라이언트의 요청(Request) 경로를 보고 해당 요청 정보를 처리할 수 있는 곳으로 기능을 전달해주는 역할을 한다. 즉, 클라이언트의 요청 경로에 따라서 그것을 담당하는 함수로 분리시킨다. ..
이전 게시글에서는 쿠키를 이용해서 로그인 기능을 구현했다. 이번에는 세션의 개념을 이용해서 로그인 페이지를 만들어보고자 한다. /user/login에서 privateKey와 useritem을 정의했다. privateKey는 세션을 유지하는 동안 서버에 저장되는 쿠키이고, useritem은 유저들의 정보가 담긴 목록이다. privateKey는 Math.random()이라는 랜덤 함수를 기반으로 만들어진 무작위의 정수이다. user.js의 user는 이미 저장된 유저의 정보를 나타낸다. findUser 함수는 ID와 PW가 모두 기존 회원 정보와 일치하면 true값을 반환하고, 하나 이상 잘못된 정보를 입력하면 false 값을 반환한다. 따라서 [그림 1]의 findUser() 부분을 보면, 틀린 회원 정보..
이번 글에서는 쿠키를 이용하여 로그인 기능을 구현해보겠다. 쿠키와 세션에 대한 개념은 추후 따로 정리해서 글을 쓸 예정이다. user 객체는 이미 존재하는 회원의 ID, PW, 닉네임으로 설정해두었다. 첫 번째 if문은 localhost:3000에 접속했을 때 쿠키 존재 여부에 따라 나누었다. 만약 쿠키가 존재하지 않으면 index.html을 렌더하고, 쿠키가 존재한다면 userid가 leejy2306과 일치하는지 여부를 판단하여 일치하면 isLogin의 값을 true로 할당한다. 로그인 페이지에서 로그인을 할 때 ID와 PW를 모두 제대로 입력했으면 콘솔 로그로 Login Success가 나타나고 Set-Cookie로 login=userid라는 쿠키값을 할당하였다. ID와 PW 둘 중 하나라도 틀리면,..
1. 게시판 제작 전 기본 셋팅 2. 게시판 제작 2.1. Read 2.2. Create 2.3. Delete 2.4. Update 1. 게시판 제작 전 기본 셋팅 $ npm init -y // package.json 파일 생성 $ npm i express // express 패키지 설치 $ npm i nunjucks // nunjucks 패키지 설치 $ code . // 현재 위치에서 VS Code 열기 Ubuntu 환경에서 위의 명령어를 차례로 입력하여 게시판을 만들기 위한 준비를 마친다. 2. 게시판 제작 게시판은 기본적으로 CRUD 기능을 갖고 있다. CRUD 중에서 대체적으로 구현하기 쉬운 순서는 Read, Create, Delete, Update이다. 기존에 있던 게시글들을 표현하기 위해 bo..
- Total
- Today
- Yesterday
- 자료형
- gcc
- Navigator 객체
- window 객체
- DOM
- short
- 키워드
- Char
- c언어
- stdio.h
- 변수
- Browser Object Model
- location 객체
- int
- Document Object Model
- History 객체
- long
- 리액트 #React #props #state #javascript
- keyword
- bom
- 컴파일
- Screen 객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |