본문 바로가기

전체 글154

[Node.js] 익스프레스로 웹 서버 만들기 1 - 익스프레스 서버와 미들웨어 노드로 가장 기본적인 웹 서버를 만드는 법을 알아보고 클라이언트에 응답을 보내 웹 페이지를 띄우는 법을 알아보겠습니다. 목차 익스프레스 서버 만들기 미들웨어로 클라이언트에 응답 보내기 익스프레스로 서버 만들기 익스프레스 모듈을 사용하기 전에 노드에 기본으로 들어있는 http 모듈을 사용하여 서버를 만드는 법을 보겠습니다. 급하신 분들은 express를 사용한 부분만 봐도 됩니다. var http = require('http'); // 웹 서버 객체 만들기 var server = http.createServer(); // 웹 서버를 시작하여 3000번 포트에서 대기 var port = 3000; server.listen(port, function(){ console.log('웹 서버가 시작되었습니다 %d .. 2021. 1. 14.
[Node.js] 뷰 템플릿 적용하기 - ejs 뷰 익스프레스에서 뷰 템플릿을 적용하는 법을 알아보겠습니다. 목차 MVC 패턴과 뷰 엔진 ejs 뷰 템플릿 사용 1 ejs 뷰 템플릿 사용 2 MVC 패턴과 뷰 엔진 MVC 패턴이란 Model, View, Controller로 구성되는 구조입니다. 눈에 보이는 부분을 뷰, 뷰로 표현되는 데이터를 제공하는 것은 모델, 처리되는 과정을 담당하는 것을 컨트롤러라 합니다. 뷰 에서는 모델에서 얻는 데이터와 뷰 템플릿을 바탕으로 사용자에게 응답할 웹문서를 만들어 응답합니다. ejs 뷰 템플릿 사용 1 ejs란 embedded javascript의 약자로 html 문서 내에 자바스크립트 코드를 넣을 수 있게 해 줍니다. 위의 그림에서 를 통해 userid란 변수를 사용한 것 처럼 말입니다. 이 ejs를 통해 뷰를 구현.. 2021. 1. 11.
[Node.js] windows에서 노드 버전 변경 - downgrade/upgrade 사용해야되는 모듈이 현재 node 버전을 지원하지않아서 버전 downgrade를 해야됐습니다. linux나 mac 환경에서 노드 버전 관리 방법은 정리해주신 분들이 많았지만, 윈도우 환경에서 방법을 정리해주신 분은 없어서 작성합니다. 일단 노드 버전 관리를 위해 nvm을 사용하는데, 불행히도 윈도우 환경에선 작동하지 않았습니다. 그래서 검색한 결과 윈도우용 nvm을 제작하신분이 있었습니다. Releases · coreybutler/nvm-windows A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows github.com 먼저 위의 링크로 들어가 nvm-setup.zip을 받.. 2021. 1. 11.
[Node.js] 익스프레스에서 몽고디비 사용법 4 - 비밀번호 암호화 저번 몽고디비 사용법 3에 이어서 알아보겠습니다. 목표 암호화 과정 몽구스 스키마의 virtual 메소드 비밀번호 암호화하여 저장 암호화 과정 데이터베이스를 암호화 하여 저장하기 위해선 다음과 같은 절차가 필요합니다. 1. 사용자로부터 비밀번호를 받음 2. 암호화를 위한 salt 값을 생성함 3. 비밀번호를 암호화 함 4. 암호화한 비밀번호와 salt 값을 저장 암호화하기전 비밀번호를 받기위해 virtual 메소드를 사용합니다. 이를 사용하면 스키마에 가상으로 속성을 설정하여 값을 받을 수 있습니다. 그리고 virtual 메소드 내에서 받은 값을 암호화하여 데이터베이스에 저장할 수 있습니다. salt 값은 암호화를 위한 key입니다. 같은 비밀번호, 같은 salt를 encryptPassword 메소드에 .. 2021. 1. 8.
[Node.js] 익스프레스에서 몽고디비 사용법 3 - 몽구스로 DB 다루기 저번 몽고디비 사용법 2에 이어서 알아보겠습니다. 목표 몽구스와 스키마 몽구스로 DB 연결 및 모델 정의 몽구스로 DB 문서 추가와 조회 몽구스와 스키마 몽고디비는 한 컬렉션에 여러 문서를 저장하는데, 이 문서들의 속성이 제각각으로 저장할 수도 있습니다. 이렇게 되면 문서가 어떤 속성을 갖고있는지 알기 힘들기 때문에 데이터를 조회할 때 어려움이 생깁니다. 이 때문에 문서를 저장할 때 일정한 틀이 있어야하는데 이를 제공하는 대표적인 모델이 몽구스(mongoose)입니다. 그리고 이런 틀을 스키마(Schema)라고 합니다. 몽구스로 스키마를 정의하고, 이를 사용할 컬렉션과 매핑하기 위해 모델을 정의합니다. 그리고 이 모델을 통해 문서를 저장할 수 있습니다. 몽구스로 DB 연결 및 모델 정의 먼저 % npm .. 2021. 1. 7.
[백준] 1697(숨바꼭질) 파이썬 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 풀이 및 리뷰 전형적인 BFS 문제이므로 풀이는 크게 어렵지 않다. .. 2021. 1. 5.
[Node.js] 익스프레스에서 몽고디비 사용법 2 - 문서 추가와 조회 저번 몽고디비 사용법 1에 이어서 알아보겠습니다. 목표 몽고 셸에서 문서 추가와 삽입 익스프레스에서 문서 추가와 삽입 몽고 셸에서 문서 추가와 조회 먼저 간단하게 몽고디비에서 데이터베이스(DB)가 어떻게 구성되는지 알아보겠습니다. 몽고디비의 DB는 NoSQL 방식의 DB로 컬렉션(collection)의 집합입니다. 컬렉션은 많은 문서(document) 객체들로 이뤄져있습니다. 문서 객체에는 하나의 객체에 대한 정보들이 있습니다. 이번 글에서 DB의 추가와 검색은 한 컬렉션에서 문서를 추가하고 검색하는 것을 의미합니다. % use local // local 데이터베시스를 사용 % db.users.insert({name:'짱구', age:5}) // users 컬렉션에 name과 age 속성을 갖는 문서 추.. 2021. 1. 5.
[Node.js] 익스프레스에서 몽고디비 사용법 1 - 데이터베이스 연결 목표 몽고디비 설치 및 DB생성 익스프레스에서 몽고디비 DB 연결 몽고디비 설치 및 DB생성 mongodb 공식 사이트에서 MongoDB Community Server를 다운받아 기본 설정으로 설치해줍니다. 기본 설정으로 설치하면 C:\Program Files\MongoDB\Server\4.4 폴더에 몽고디비가 설치됩니다. 이를 PATH 환경 변수에 추가합니다. 다음은 DB 생성 및 실행을 하겠습니다. 원하는 곳에 database 폴더를 생성하고 cmd 창을 키고 다음 명령을 실행합니다. (database 폴더로 이동, local은 DB이름) % cd /Users/user/database % mongod --dbpath /Users/user/database/local 'local' DB를 생성 및 실행하.. 2021. 1. 4.