본문 바로가기
반응형

프로그래밍 개발247

MongoDB - Index Index Index는 MongoDB에서 데이터 쿼리를 더욱 효율적으로 할 수 있게 해준다. 인덱스가 없이는, MongoDB는 collection scan – 컬렉션의 데이터를 하나하나 조회 – 방식으로 스캔을 하게 돤다. 만약 document의 갯수가 매우 많다면, 많은 만큼 속도가 느려지며 이 부분을 향상시키기 위하여 인덱스를 사용하면 더 적은 횟수의 조회로 원하는 데이터를 찾을 수 있다. Index의 종류 기본 인덱스 _id 모든 MongoDB의 컬렉션은 기본적으로 _id 필드에 인덱스가 존재한다. 만약에 컬렉션을 만들 때 _id 필드를 따로 지정하지 않으면 mongod드라이버가 자동으로 _id 필드 값을 ObjectId로 설정해준다. _id 인덱스는 unique(유일)하고 이는 MongoDB 클라.. 2021. 1. 20.
Express - 페이스북 로그인 구현 페이스북 로그인 구현 회원정보를 보관하는 것은 회원입장에선 불편하고, 서비스 입장에선 부담되는 일입니다. 이런 문제를 해결하기 위해서 최근에는 페이스북이나 구글과 같은 기업들이 로그인 연동 기능을 제공한다. 이를 Federated Identity라고 하고 Passport.js를 이용하면 이를 쉽게 구현할 수 있다. npm install -s passport-facebook 위의 코드를 입력하여 페이스북 로그인 구현을 위한 모듈을 다운로드한다. var = FacebookStrategy = require('passport-facebook').Strategy; passport.use(new FacebookStrategy({ clientID: FACEBOOK_APP_ID, clientSecret: FACEBOO.. 2021. 1. 20.
MongoDB - Document 수정 Document 수정 update() 메소드 MongoDB에서는 update() 메소드를 통하여 데이터를 수정 할 수 있다. db.collection.update( , , { upsert: , multi: , writeConcern: } ) Collection 안의 document(들)을 수정한다. 이 메소드를 통하여 특정 field 를 수정 할 수도 있고 이미 존재하는 document를 대체(replace) 할 수도 있다. update() 메소드의 기본 옵션으로는 단 하나의 document를 수정한다. *query document 업데이트 할 document의 criteria 를 정합니다. find() 메소드 에서 사용하는 query 와 같다. *update document document에 적용할 변.. 2021. 1. 19.
Express - 비밀번호 암호화 비밀번호 암호화 아래와 같이 회원정보가 들어있는 파일에 비밀번호가 암호화 되어있지 않는다면 보안에 심각한 문제를 초래할 수 있다. 아래 링크 페이지에 자세한 사용설명이 존재한다. www.npmjs.com/package/bcrypt bcrypt A bcrypt library for NodeJS. www.npmjs.com npm install -s bcrypt 비밀번호를 암호화하는 프로그램 모듈이 따로 존재하기에 위의 명령어를 입력하여 프로그램을 다운받는다. syntax/bcrypt.js //따로 bcrypt 프로그램을 구동시킬 코드를 모아둔 파일 만듬. var bcrypt = require('bcrypt'); //bcrypt 모듈 연동 const saltRounds = 10; const myPlaintex.. 2021. 1. 19.
Express - 다중 사용자 구현(회원가입) 다중 사용자 구현(회원가입) 1. 회원가입 UI 구현 lib/auth.js module.exports = { isOwner: function(request, response){ if(request.user){ return true; } else{ return false; } }, statusUI: function(request, response){ //register UI 추가 var authStatusUI = 'login | Register' if(this.isOwner(request, response)){ authStatusUI = `${request.user.nickname} | logout`; } return authStatusUI; } } lib/template.js module.exports .. 2021. 1. 19.
MongoDB - Document Query(조회) 2 Document Query(조회) 2 find() 메소드 활용 sort(), limit(), skip() orders 라는 데이터 추가 db.orders.insert[ ... { "_id": 1, "item": { "category": "cake", "type": "chiffon" }, "amount": 10 }, ... { "_id": 2, "item": { "category": "cookies", "type": "chocolate chip" }, "amount": 50 }, ... { "_id": 3, "item": { "category": "cookies", "type": "chocolate chip" }, "amount": 15 }, ... { "_id": 4, "item": { "category.. 2021. 1. 18.
MongoDB - Document Query(조회) Document Query(조회) find() 메소드 articles라는 데이터 베이스 추가 db.articles.insert([ { "title" : "article01", "content" : "content01", "writer" : "Velopert", "likes" : 0, "comments" : [ ] }, { "title" : "article02", "content" : "content02", "writer" : "Alpha", "likes" : 23, "comments" : [ { "name" : "Bravo", "message" : "Hey Man!" } ] }, { "title" : "article03", "content" : "content03", "writer" : "Bravo", .. 2021. 1. 18.
Express - passport.js로 로그인 기능 적용하기 passport.js로 로그인 기능 적용하기 인증구현 app.post('/auth/login_process', //로그인 프로세스 경로로 설정 passport.authenticate('local', { successRedirect: '/', //로그인 완료 후 등장할 경로 설정 failureRedirect: '/auth/login' })); //로그인 실패 후 등장할 경로 설정 로그인 폼에서 전송한 데이터를 받는 쪽을 passport로 전환하기 위해서는 일단 위의 코드를 main.js에 붙여넣기 해야한다. 경로 또한 로그인을 할 수 있도록 하는 process 쪽으로 해줘야한다. 자격확인 main.js //로그인 정보를 main.js로 가져옴 var authData = { email: 'k0502s2nav.. 2021. 1. 18.
Express -passport.js 설치하기 passport.js 설치하기 passport.js는 트위터나 페이스북 등등을 외부 사이트에서 로그인하고 연동할 수 있는 기능이라고 할 수 있다. www.passportjs.org/packages/ 위의 사이트에 가면 passport.js의 설치 및 사용 설명서가 있다. $ npm install passport 일단 npm을 이용하여 passport 프로그램을 다운받는다. $ npm install passport-local 일단 passport.js 기능으로 로그인 할때 아이디와 패스워드를 사용할 것이므로 위의 명령어를 입력하여 프로그램 다운한다. 페이스북, 트위터 등 같이 다른 기능들을 사용하려면 다른 프로그램을 다운받아야 한다. var passport = require('passport') , Loc.. 2021. 1. 18.
Express - session을 이용한 로그인 인증 구현 session을 이용한 로그인 인증 구현 로그인 기능을 구현하여 올바른 값을 입력하여 로그인이 되면 생성 및 수정을 할 수 있는 권한을 주었고 또 로그인을 하면 설정해둔 닉네임이 웹 화면상에 등장하도록 하였다. 로그인을 하지 않았다면 생성 및 수정을 할 수 없도록 제한을 걸어두는 간단한 로그인 기능들을 구현하였다. main.js var express = require('express'); var app = express(); var fs = require('fs'); var bodyParser = require('body-parser'); var compression = require('compression'); var helmet = require('helmet') app.use(helmet()); v.. 2021. 1. 16.
Express - express-session의 기본 개념 express-session 쿠키로만 로그인 기능을 구현하면 보안상 매우 치명적인 결함이 존재한다. 로그인을 할 수 있는 정보인 쿠키값이 그대로 노출되기 때문이다. 이때 express의 미들웨어인 session을 이용하면 이러한 문제점을 보안할 수 있다. 아래 사이트에서 세션에 대한 사용방법과 예가 나와있다. http://expressjs.com/en/resources/middleware/session.html Express session middleware express-session Installation This is a Node.js module available through the npm registry. Installation is done using the npm install comman.. 2021. 1. 16.
MongoDB - 생성 및 제거하기 생성 및 제거하기 Database 생성 use DATABASE_NAME 명령어를 통하여 Database를 생성 할 수 있다. 생성 후, 생성된 데이터베이스를사용하게 되고, 데이터베이스가 이미 존재하는 경우엔 현존하는 데이터베이스를 사용한다. > use k0502s switched to db k0502s 위와 같이 몽고DB을 실행시킨 후 명령어를 입력하면 생성을 할 수 있다. > db k0502s 현재 사용중인 데이터베이스를 확인하려면 db 명령어를 입력하면 된다. > show dbs local 0.000GB 만든 데이터베이스 리스트들을 확인하려면 show dbs 명령어를 입력하면 된다. Database 제거 Database를 제거할땐 db.dropDatabase() 명령어를 사용한다. 이 명령어를 사용하.. 2021. 1. 15.
Express - 쿠키를 이용한 인증 기능 구현하기 쿠키를 이용한 인증 기능 구현하기 main.js var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); var template = require('./lib/template.js'); var path = require('path'); var sanitizeHtml = require('sanitize-html'); var cookie = require('cookie'); //쿠키를 사용하기 위한 추가 //올바른 쿠키 데이터이 들어오면 isOwner가 false에서 true가 되도록 하는 함수 따로 만듬. function authIsOwner(request, resp.. 2021. 1. 15.
Express - 쿠키의 옵션 쿠키의 옵션 Session 쿠키 와 Permanent 쿠키 웹브라우저를 끄면 사라지는 휘발성 쿠키를 Session cookie라고 하고 웹브라우저를 꺼도 사라지지 않는 쿠키를 Permanent cookie라고 한다. var http = require('http'); var cookie = require('cookie'); http.createServer(function(request, response){ console.log(request.headers.cookie); var cookies = {}; if(request.headers.cookie !== undefined){ cookies = cookie.parse(request.headers.cookie); } console.log(cookies.yum.. 2021. 1. 15.
Express - 쿠키의 기본 개념 쿠키의 기본 개념 쿠키란 하이퍼 텍스트의 기록서의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다. HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다. 이 기록 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다. 쿠키 생성 var http = require('http'); http.createServer(function(request, response){ response.writeHead(200, { 'Set-Cookie':['yummy_cookie=choco', 'tasty_cookie=strawberry'] }); response.en.. 2021. 1. 15.
MongoDB - 기본 설치 및 개념 기본 설치 및 개념 MongoDB란? MongoDB는 C++로 작성된 오픈소스 문서지향(Document-Oriented) 적 Cross-platform 데이터베이스이며, 뛰어난 확장성과 성능을 자랑하며 또한, 현존하는 NoSQL 데이터베이스 중 인지도 1위를 유지하고있다. NoSQL란? Not Only SQL 라는 의미이며 기존의 RDBMS의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터저장소이다. 관계형 DB가 아니므로, RDMS처럼 고정된 스키마 및 JOIN 이 존재하지 않는다. Document와 Collection 몽고 DB는 Document Oriented 데이터베이스라는 것인데 Documen로 데이터를 다룬다고 말 할수 있다. 데이터 구조는 한개이상의 key-value pair 으로 이뤄져.. 2021. 1. 14.
Express - 라우터의 파일로 분리 정리 라우터의 파일로 분리 정리 관리하는 페이지가 많아짐에 따라서 코드의 복잡도가 급격히 높아지게 된다. 복잡도를 낮추는 방법이 라우터다. 주소체계변경 main.js var express = require('express') var app = express() var fs = require('fs'); var path = require('path'); var qs = require('querystring'); var bodyParser = require('body-parser'); var sanitizeHtml = require('sanitize-html'); var compression = require('compression') var template = require('./lib/template.js').. 2021. 1. 14.
Express - 에러처리 에러처리 app.use(function(req, res, next) { res.status(404).send('Sorry cant find that!'); }); app.use(function (err, req, res, next) { console.error(err.stack) res.status(500).send('Something broke!') }); 위의 코드들을 맨 아래에 적용하면 에러 발생시 설정한 값이 뜨도록 설정할 수 있다. main.js const express = require('express') const app = express() const port = 3000 var fs = require('fs'); var qs = require('querystring'); var templ.. 2021. 1. 14.
Express - 정적인 파일의 서비스 정적인 파일의 서비스 express에서 이미지, 자바스크립트, CSS와 같은 파일을 서비스하는 방법이 있다. app.use(express.static('public')); 위 코드를 추가시켜줘야 정적인 파일을 적용할 수 있다. main.js const express = require('express') const app = express() const port = 3000 var fs = require('fs'); var qs = require('querystring'); var template = require('./lib/template.js'); var path = require('path'); var sanitizeHtml = require('sanitize-html'); var bodyParse.. 2021. 1. 14.
Express - 미들웨어 미들웨어 미들웨어는 누군가 미리 만들어 놓은 코드를 부품을 쓰듯이 생산성을 높이기 위하여 쓸 수 있는 기능이라고 말할 수 있다. express 자체가 미들웨어로 구성되어있다고 해도 무방하다. 미들웨어 사용하기 body-praser라는 node.js 코드를 더 간결하고 간단하게 해주는 미들웨이로 예를 들어 보겠다. expressjs.com/en/resources/middleware/body-parser.html Express body-parser middleware body-parser Node.js body parsing middleware. Parse incoming request bodies in a middleware before your handlers, available under the req.. 2021. 1. 14.
Express - Express 홈페이지 구현 적용 Express 홈페이지 구현 적용 홈페이지 기본 구현 onst express = require('express') const app = express() const port = 3000 var fs = require('fs'); var template = require('./lib/template.js'); app.get('/', (request, response) => { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var list = template.list(filelist); var html = template.HTML(title, list, `${tit.. 2021. 1. 14.
Express - 기본 세팅 시작 기본 세팅 시작 npm install exppress --save 위 코드를 node.js가 실행된 상태에서 터미널에 명령하여 express 프로그램을 다운로드한다. expressjs.com/ko/starter/hello-world.html Express "Hello World" 예제 Hello world 예제 기본적으로 이 앱은 여러분이 작성할 수 있는 가장 간단한 Express 앱일 것입니다. 이 앱은 하나의 파일로 된 앱이며 Express 생성기를 통해 얻게 되는 앱과는 같지 않습니다. (이 예제 expressjs.com 위 사이트에 들어간다. express가 실행되는지 확인하는 간단한 코드가 주어진다. const express = require('express') const app = expres.. 2021. 1. 14.
Node.js and Mysql - 저자 관련 기능 구현 저자 관련 기능 구현 1. 저자 목록 보기 기능 구현 main.js var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); var template = require('./lib/template.js'); var db = require('./lib/db'); var topic = require('./lib/topic'); var author = require('./lib/author'); var app = http.createServer(function(request,response){ var _url = request.url; var queryData = url... 2021. 1. 12.
Node.js and Mysql - Node.js 정리정돈 Node.js 정리정돈 1. DB 설정정보 정리정돈 이제 정리정돈의 첫 시작으로 mysql을 연동시켰던 코드를 따로 분리하여 파일을 만들고 그 안에 따로 만들어 놓는다. 그리고 모듈화를 통해 main.js와 연동시켜준다. 위와 같이 db.js 파일을 main.js에 연동시켜주었다. 2. Node.js 코드의 정리정돈 (topic) topic.js라는 파일을 따로 만들어 mysql을 사용하여 node.js에 적용한 코드들을 그대로 따로 만든 파일에 옮긴 후 모듈화시켜 더욱 복잡하지 않게 하여 업무의 효율성을 더욱 높여주었다. 보기에도 깔끔하고 가독성이 좋아졌다. main.js var http = require('http'); var fs = require('fs'); var url = require('ur.. 2021. 1. 11.
Node.js and Mysql - My SQL join을 이용해서 구현하기 My SQL join을 이용해서 구현하기 mysql에 들어있는 위 두 테이블 데이터를 JOIN 기능을 Node.js에 적용하여 더 효율적으로 코드를 작성할 수 있다. 1. My SQL join을 이용해서 상세보기 구현 Main.js var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); var template = require('./lib/template.js'); var path = require('path'); var sanitizeHtml = require('sanitize-html'); var mysql = require('mysql'); var db = .. 2021. 1. 11.
Node.js and Mysql - Node.js에 My SQL 구현하기 Node.js에Nodejs에 My SQL 구현하기 1. mysql npm 세팅 $ npm install mysql 터미널에 위의 코드를 입력하여 mysql의 npm을 설치한다. mysql npm 홈페이지에서 복사해올 수 있는 세팅 코드를 js 파일 하나를 만들어 삽입한다. 주의할 점은 user, password, database의 mysql에서 설정했던 값들을 잘 입력해야한다. 이제 터미널에 $ npm install mysqljs/mysql을 입력하면 mysql의 데이터베이스 입력 데이터들이 쭉 나열되는 것을 확인 할 수 있다. 2. Node.js에 mysql 코드 설정 main.js var http = require('http'); var fs = require('fs'); var url = requi.. 2021. 1. 11.
Mysql - 테이블 분리하기와 JOIN 테이블 분리하기 테이블 분리하기를 구현하기 위하여 아래와 같이 테이블을 각자 만들어주었다. mysql> DESC topic; +-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | title | varchar(30) | NO | | NULL | | | description | text | YES | | NULL | | | created | .. 2021. 1. 9.
ReactJs - 배열을 다루는 CRUD 구현 배열을 다루는 CRUD 구현 생성과 렌더링 리액트애서는 state 내부의 값을 직접적으로 수정하면 절대로 안된다. 이를 불변성 유지라고 하는데, push, splice, unshift, pop 같은 내장함수는 배열 자체를 직접 수정하게 되므로 적합하지 않는다. 그 대신에, 기존의 배열에 기반하여 새 배열을 만들어내는 함수인 concat, slice, map, filter 같은 함수를 사용하면된다. App.js import React, { Component } from 'react'; import PhoneForm from "./components/PhoneForm"; import './App.css'; class App extends Component { id =2 state = { information.. 2021. 1. 7.
ReactJs - input input PhoneForm.js import React, { Component } from 'react'; class PhoneForm extends Component { state = { name: '' } handleChange = (e) => { this.setState({ name: e.target.value }) } render() { return ( {this.state.name} ); } } export default PhoneForm; App.js import React, { Component } from 'react'; import PhoneForm from "./components/PhoneForm"; import './App.css'; class App extends Componen.. 2021. 1. 6.
ReactJs - LifeCycle API LifeCycle API 이 API 는 컴포넌트가 브라우저에서 나타날때, 사라질때, 그리고 업데이트 될 때, 호출되는 API 이다. 컴포넌트 초기 생성 컴포넌트가 브라우저에 나타나기 전, 후에 호출되는 API 들이 있다. constructor constructor(props) { super(props); } 컴포넌트 생성자 함수이다. 컴포넌트가 새로 만들어질 때마다 이 함수가 호출한다. componentDidMount componentDidMount() { // 외부 라이브러리 연동: D3, masonry, etc // 컴포넌트에서 필요한 데이터 요청: Ajax, GraphQL, etc // DOM 에 관련된 작업: 스크롤 설정, 크기 읽어오기 등 } 이 API는 컴포넌트가 화면에 나타나게 됐을 때 호출.. 2021. 1. 6.
반응형