분류 전체보기
-
[NodeJS] 몽구스(Mongoose) 사용하여 CRUD 해보기Server/NodeJS 2020. 10. 23. 02:57
MySQL에 Sequelize가 있다면 몽고디비에는 Mongoose가 있다. 몽구스는 시퀄라이즈와 달리 ODM(Object Document Mapping)이라고 불린다. 몽고디비 자체가 이미 자바스크립트인데도 굳이 자바스크립트 객체와 매핑하는 이유는 몽고디비에 없어서 불편한 기능들을 몽구스가 보완해주기 때문이다. 먼저 스키마(Schema)라는 것이 생겼다. 몽고디비는 테이블이 없어서 자유롭게 데이터를 넣을 수 있지만, 형식이 자유롭기 때문에 때로는 불편함을 초래한다. 몽구스는 몽고디비에 데이터를 넣기 전에 노드 서버 단에서 데이터를 한 번 필터링 하는 역할을 한다. 프로젝트 생성 및 모듈 설치 express 프로젝트이름 ex) express NodeJS_MongoDB cd NodeJS_MongoDB np..
-
[NodeJS] Sequelize를 이용하여 CRUD 해보기Server/NodeJS 2020. 10. 23. 00:44
이번 글에서는 Sequelize를 이용해서 간단히 유저, 댓글의 CRUD(Create: 생성, Read: 읽기, Update: 갱신, Delete: 삭제)를 해보려 한다. Sequelize 기본 세팅 여기에서 Sequelize의 기본적인 개념과 세팅을 한 후에 이 글을 읽으면 좋을 것 같다. Express 프로젝트 구조는 위와 같다. 그리고 routes 패키지 아래에 comment.js를 추가 하자. index.js const express = require('express'); const router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: '..
-
[Github] Pull Request를 통하여 프로젝트에 기여하기Github/Github 2020. 10. 22. 02:38
이번 글에서는 다른 사람의 레포지토리에 Pull Request를 보내는 방법에 대해서 소개하려 한다. 먼저 Github에 들어가서 본인이 Pull Request를 보내고 싶은 레포지토리에 들어가보자. 나는 SOPT-SERVER-WIKI라는 레퍼지토리에 pull Request를 보낼 것이다. 그러기 위해서는 먼저 해당 레포지토리를 Fork를 한 후에 자신의 Github으로 복사를 하자. 그러면 본인의 Github 저장소에 위와 같이 만들어진 것을 확인할 수 있다. 그리고 이제 해당 프로젝트를 자신의 로컬 PC에 Clone을 받아서 작업을 진행해보자. 위와 같이 Code를 누른 후에 뜨는 화면에서 복사버튼을 누르면 주소가 복사가 된다. 위와 같이 git clone을 이용해서 복사한 주소를 뒤에 넣으면 해당 ..
-
[NodeJS] Sequelize : ORM(Object-relational Mapping) 사용하기Server/NodeJS 2020. 10. 18. 03:17
노드에서 MySQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리가 있다.(이번 글에서는 MySQL을 사용할 것이다) 바로 시퀄라이즈(Sequelize)이다. 시퀄라이즈는 ORM(Object-relational-Mapping)이다. ORM은 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다. 시퀄라이즈를 쓰는 이유는 자바스크립트 구문을 알아서 SQL로 바꿔주기 때문이다. 따라서 SQL 언어를 직접 사용하지 않아도 자바스크립트만으로 MySQL을 사용할 수 있다. (하지만 SQL을 모르는 채로 Sequelize를 사용하는 것은 매우 비추이다) 1. Express 프로젝트 생성하기 Express 프로젝트이름 ex) Express NodeJS_ORM 그러면 위와 같이 Express 프로젝트 구조가..
-
[Spring Boot] AWS S3를 이용하여 파일 업로드Server/Spring Boot 2020. 9. 8. 22:29
AWS S3 설정과 키 발급은 다 되어 있다고 가정하고 글을 진행하려 한다. pom.xml org.springframework.cloud spring-cloud-starter-aws 2.0.1.RELEASE org.springframework.cloud spring-cloud-aws-context 1.2.1.RELEASE org.springframework.cloud spring-cloud-aws-autoconfigure 1.2.1.RELEASE 먼저 프로젝트는 Maven으로 진행되며 pom.xml에 위의 의존성을 추가해주자. application.properties cloud.aws.credentials.accessKey=엑세스 키 ID (AWS S3에서 발급 받은 키) cloud.aws.credent..
-
[Spring Boot] 스프링 부트에서 비밀번호 암호화하기Server/Spring REST API 2020. 8. 27. 17:59
이번 글에서는 비밀번호 암호화 개념에 대해 정리하고 스프링부트를 이용해서 비밀번호 암호화를 하여 DB에 저장하는 방법에 대해 정리해보려 한다. 단방향 해시 함수 보통 비밀번호를 저장하는 방법은 2가지 정도가 있다. 단순 텍스트(plain text) 단방향 해시 함수(one-way hash function)의 다이제스트(digest) 단순텍스트로 패스워드를 저장하는 것은 범죄를 저지르는 것이나 다름없다. DB가 해킹당하는 순간, 비밀번호를 그대로 해커들에게 넘겨주게 되기 때문이다. 그러면 DB를 해킹당하지 않으면 되지 않나? 라고 할 수 있다. 물론 애초에 DB를 해킹당하지 않도록 보안에 신경써야 겠지만 해야겠지만, 다양한 변수의 상황들이 존재하기 때문에 언제든 해킹 당할 가능성이 존재한다. 따라서 해시함..
-
[Spring] 스프링 웹 계층이란?Server/Spring MVC 2020. 8. 26. 10:44
이번 글에서는 스프링은 어떤 계층이 존재하는지와 계층의 역할을 무엇인지, 프로젝트시 패키지를 어떻게 나누는 것이 좋은지에 대해 정리해보려 한다. 스프링의 계층은 Presentation Layer, Business, Layer, Data Access Layer 크게 3개로 나눌 수 있다. 프레젠테이션 계층 - 브라우저상의 웹 클라이언트의 요청 및 응답을 처리 - 서비스계층, 데이터 엑세스 계층에서 발생하는 Exception을 처리 - @Controller 어노테이션을 사용하여 작성된 Controller 클래스가 이 계층에 속함 서비스 계층 - 애플리케이션 비즈니스 로직 처리와 비즈니스와 관련된 도메인 모델의 적합성 검증 - 트랜잭션 관리 - 프레젠테이션 계층과 데이터 엑세스 계층 사이를 연결하는 역할로서 ..
-
[Java] 빌더 패턴(Builder Pattern)Language/Java 2020. 8. 26. 01:47
1. 빌더 패턴(Builder pattern) Builder 패턴은 인스턴스를 생성할 때 생성자(Constructor)만을 통해서 생성하는데는 어려움이 있어서 고안된 패턴이다. 클래스에 생성자 인자가 많다면 Builder 패턴을 사용하면 좋다. 왜냐하면 생성자 인자가 너무 많다면 어떠한 인자가 어떠한 값을 나타내는지 알기 어렵기 때문이다. 코드를 보면서 이해해보자. public class User { private int userIdx; // 선택 private String name; // 필수 private String part; // 필수 private int age; // 선택 private String email; // 선택 } 위와 같은 User 클래스에서 필수적으로 받아야 하는 정보, 선택적으..