인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
Node.js/Node Package

[NODE] 📚 bcrypt 모듈 암호화 원리 & 사용법

암호화 모듈 암호화 종류 SHA-2(Secure Hash Algorithm 2) 미국 NSA에서 설계한 암호화 해시 함수. digest size는 224, 256, 512 bit로 해시함수로 구성되어졌음. GPU를 이용한 연산속도가 매우 빠르기 때문에 password 암호화에 권장되지 않음 GPU 연산속도가 빠를수록 공격자의 하드웨어를 통한 오프라인 brute force에 더 취약하다. 빠른 해시를 사용하여 암호화를 진행시 공격자는 오프라인 공격으로 초당 수십억개의 해시를 계산할 수 있다. PBKDF2 pbkdf2_hmac(해시함수(sha256..), password, salt, iteration, DLen) 해시함수의 컨테이너 역할을 한다. 검증된 해시함수만을 사용한다. 해시함수와 salt를 적용 후 ..

category_image
인파_
2021.12.03
(0)
Node.js/Sequelize

[ORM] 📚 sequelize-cli 모듈 사용하기

sequelize-cli 모듈 [sequelize-cli] 데이터베이스가 구축되지않더라도, 프로젝트만 받아서 설정하고 서버실행만 하면 알아서 데이터베이스 테이블 생성해주는 라이브러리이다. 누군가의 프로젝트를 받아서 빠르게 was환경을 돌릴상황이면 좋은 선택지다. 모델 코드 작성 → 자동 create문 변환 → RDB 테이블 생성 [sequelize-auto] 데이터베이스를 이미 구축한 상태라면, 쓸모있는 라이브러리다. 이미 구축된 데이터베이스 스키마를 바탕으로 orm 모델을 자동으로 생성해준다. 힘들게 sql짜고 orm코딩 하는 두번의 번거로움을 없애준다. 이미 짜여진 테이블을 기반으로 → 자동으로 모델 코드 생성 sequelize-cli 사용 설정 > npm i sequelize sequelize-cl..

category_image
인파_
2021.12.02
(0)
Node.js/Sequelize

[ORM] 📚 sequelize-auto 모듈 사용하기

sequelize-auto 모듈 [sequelize-cli] 데이터베이스가 구축되지않더라도, 프로젝트만 받아서 설정하고 서버실행만 하면 알아서 데이터베이스 테이블 생성해주는 라이브러리이다. 누군가의 프로젝트를 받아서 빠르게 was환경을 돌릴상황이면 좋은 선택지다. 모델 코드 작성 → 자동 create문 변환 → RDB 테이블 생성 [sequelize-auto] 데이터베이스를 이미 구축한 상태라면, 쓸모있는 라이브러리다. 이미 구축된 데이터베이스 스키마를 바탕으로 orm 모델을 자동으로 생성해준다. 힘들게 sql짜고 orm코딩 하는 두번의 번거로움을 없애준다. 이미 짜여진 테이블을 기반으로 → 자동으로 모델 코드 생성 sequelize-auto 설치 Sequelize-auto는 Sequelize cli와 ..

category_image
인파_
2021.11.28
(0)
Node.js/Mongoose

[ORM] 📚 Mongoose 사용법 정리 (Node.js - MongoDB)

Mongoose 모듈 몽구스(mongoose)는 시퀄라이즈와는 달리 릴레이션이 아닌 도큐멘트를 사용하므로 ORM이 아니라 ODM (Object Document Mapping) 이라고 불린다. 몽구스는 노드 프로젝트에서 몽고디비를 다루기 위해 탄생되었다. 그런데 몽고디비 자체가 이미 자바스크립트인데 왜 굳이 자바스크립트 객체와 매핑해서 사용할까? 이는 몽고디비에 없어서 불편한 점들을 몽구스가 보완해주어 서버단에서 NoSQL DB를 프로그래밍하는데 최적화 해주기 때문이다. 먼저 몽고디비에 없던 스키마라는 개념이 생겼다. (database의 스키마를 말하는 것이다) 원래 몽고디비에는 테이블 개념이 없어(collection) 자유롭게 데이터를 넣을 수 있지만, 이 자유분방함이 오히려 독이될 수도 있다. 실수로 ..

category_image
인파_
2021.11.16
(0)
Node.js/Nunjucks

[Nunjucks] 📚 넌적스 super (템플릿 상속)

넌적스 super() - 템플릿 상속 템플릿에서 {% block %}과 {% endblock %} 사이에 내용이 있을 경우, {% extends %}가 실행되면 기존 내용은 사라집니다. 만약 기존 내용을 유지하고, 이어서 내용을 삽입하고 싶을 때는, 템플릿을 불러오는 쪽에 super()를 삽입하면 됩니다. 그리고 한 파일에, 여러개의 {% block %}을 지정해 줄 수 있습니다. 다만 블록 이름에 주의하면 됩니다. layout.njk {% block slide-script %} {% endblock %} {% block slide %} This is a test! {% endblock %} slide.njk {% extends “./layout.njk” %} {% block slide-script %}..

category_image
인파_
2021.11.16
(0)
Node.js/Nunjucks

[Nunjucks] 📚 넌적스 기본 문법 💯 총정리

Nunjucks 넌적스는 템플릿 엔진 중 하나로 모질라 재단에서 만든 템플릿 입니다. Express에서 따로 설치과정없이 바로 쓸수있는 PUG와 달리 넌적스는 따로 설치가 필요합니다. Node.js의 대표적은 템플릿 엔진 으로는 pub와 nunjucks가 있습니다. 다만 개인적인 생각으로는 pug보다는 nunjucks가 활용도가 뛰어난 것 같습니다. 성능면에서는 pug가 렌더링 속도가 nunjucks보다 빠르지만, pug는 따로 html태그를 pug용 문법으로 변환해야 되지만 넌적스는 html 문법을 그대로 차용이 가능하기 때문에 호환성이 매우 좋기 때문입니다. 예를 들어 넌적스는 남이 만들어놓은 시맨틱 태그 구조를 그대로 복붙하여 사용하면 되지만, pug는 따로 변환작업을 해줘야 하죠. 어차피 프론트는..

category_image
인파_
2021.11.15
(0)
Node.js/Express

[EXPRESS] 📚 req.params / req.query / req.body 🤔 차이 정리

req.params 라우터의 매개변수 예를 들어 /:id/:name 경로가 있으면 ":id"속성과 ":name"속성을 req.params.id, req.params.name으로 사용할 수 있다. www.example.com/post/1/jun 일 경우 1과 jun을 받는다. // 요청온 url : www.example.com/public/100/jun router.get('/:id/:name', (req, res, next) => { //../100/jun 부분이 담기게 된다. console.log(req.params) // { id: '100', name: 'jun' } }); req.query 경로의 각 쿼리 문자열 매개 변수에 대한 속성이 포함 된 개체다. (주로 GET 요청에 대한 처리) 예를 들..

category_image
인파_
2021.11.11
(0)
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 - 쿼리 문법 정리

시퀄라이즈 쿼리문 CRUD 작업을 하기 위해선 먼저 시퀄라이즈 쿼리를 알아야한다. SQL문을 자바스크립트로 생성하는 것이기 때문에, 시퀄라이즈의 방식을 사용해야 한다. 시퀄리아지 쿼리문을 비동기로 돈작하며 프로미스 객체를 반환하므로, then을 붙여 결과값을 받을 수 있다. 그래서 async/await 문법과 함께 사용할 수도 있다. 테이블 조회 (findAll, findOne) findAll 쿼리 결과를 배열 객체로 반환 모든 데이터를 조회하고 싶으면 findAll 메서드를 사용한다. const { User } = require('./models'); // users테이블 전체를 조회해서 그 결과값을 객체로 만들어 user변수에 넣어준다. const user = User.findAll({}); // u..

category_image
인파_
2021.11.10
(0)
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 - 모델(테이블) 정의하기

Mysql 테이블 생성 구문 create schema `nodejs` default character set utf8; use nodejs; drop table if exists comments; drop table if exists users; create table nodejs.users ( id int not null primary key auto_increment, name varchar(20) not null, age smallint unsigned not null, married tinyint not null, -- tinyint는 0과 1 불리언 용 comment text null, -- 자기 소개 created_at datetime not null default now(), unique i..

category_image
인파_
2021.11.10
(0)
Node.js/Sequelize

[ORM] 📚 시퀄라이즈 초기 구성 & DB 연결 (MySQL)

Sequelize 란? 시퀄라이즈는 nodejs에서 데이터베이스를 쉽게 다룰 수 있도록 도와주는 라이브러리로, ORM(Object-relational Mapping)으로 분류된다. sql 작성법을 모르더라도 데이터베이스 관리가 가능하다. ORM이란 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다. 시퀄라이즈는 MySQL 외에도 MariaDB, PostgreSQL 등등 다른 데이터베이스에도 쓸 수 있다. 문법이 어느 정도 호환되므로 프로젝트를 다른 SQL 데이터베이스로 전환할 때도 편리하다. 시퀄라이즈는 자바스크립트 구문을 알아서 SQL로 바꿔준다. 그래서 자바스크립트만으로 MySQL을 조작할 ..

category_image
인파_
2021.11.10
(0)
Node.js/Pug

[PUG] 📚 HTML 템플릿 엔진 pug 란?

템플릿 엔진 이란? 웹페이지 구성 시 가장 기본적으로 쓰이는 마크업 언어인 HTML은 정적인 언어이다. 주어진 기능만 사용할 수 있으며, 직접 기능을 추가할 수 없다. 그러나 자바스크립트와 함께라면 가능하다. 템플릿 엔진은 자바스크립트를 사용하여 HTML을 렌더링할 수 있게 해준다. 따라서 기존 HTML과 문법이 살짝 다를 수도 있고, 자바스크립트 문법이 들어가기도 한다. 템플릿 엔진에는 대표적으로 퍼그 (Pug), 넌적스 (Nunjucks), EJS, Handlebars 등이 있다. PUG 설치 & 설정 PUG 는 HTML 을 PUG 문법으로 작성하면 HTML 로 바꿔주는 기능을 한다. pug 는 express의 패키지 view engine이다. $ npm install pug Getting Start..

category_image
인파_
2021.11.03
(0)
Node.js/Express

[EXPRESS] 📚 에러처리 미들웨어 렌더링 문법

에러 처리 미들웨어 에러 발생 시 템플릿 엔진과 상관없이 템플릿 엔진 변수를 설정하고 error 템플릿 문서를 렌더링. Node // ... // 404 에러 내용부분만 만들어서 최종 처리를 에러 미들웨에 보낸다. app.use((req, res, next) => { const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`); error.status = 404; next(error); // 에러미들웨어로 점프 }); // ... app.use((err, req, ers, next) => { res.locals.message = err.message; // 템플릿 엔진 변수 설정 res.locals.rror = process.env.NODE_ENV !=..

category_image
인파_
2021.11.03
(0)