일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- jQuery
- SQL
- Cookie
- Ajax
- 웹소켓
- JSP
- websocket
- 배포
- docker
- autowired
- CSS
- tiles.xml
- JavaScript
- 알고리즘
- model1
- AWS
- 블록체인
- 도커
- node.js
- express
- 암호화
- HTML
- EC2
- Servlet
- PL/SQL
- Spring
- 비트코인
- phaser
- RDS
- 웹게임
- Today
- Total
목록Web/Node.js (22)
記錄
d
Node.js 교과서국내도서저자 : 조현영출판 : 길벗 2018.08.01상세보기 좋은 Node.js 강의를 찾았는데 이 강의가 위 책을 기반으로 한 강의였다. 물론 강의는 저 책이 없어도 진행이 되지만 강의를 다 듣고 괜찮으면 책을 사서 복습을 할 계획이다. 경험상 인터넷 강의는 핵심만 짚고 넘어가는 편이고 책을 보면 더 자세하게 나와있었다(물론 정보의 과잉 제공인 경우도 있는 것 같다) 강의는 유투브에 개설되어 있는데 8월 중으로 인프런에 유료로 올라간다고 하니 따로 여기 링크를 달지는 않고 듣다가 유료로 전환 되거나 유료로 전환되기 전에 다 듣게 되면 인프런 url을 출처로 올려야겠다
이번 강의에서는 라우트 분리하기를 배웠다. 사실 요청이 많아지면 컨트롤러를 어떻게 관리하나 궁금했었는데 딱 마지막 수업에 이런 코너가 있었다. 패키지로 나누는 것이 아니고 파일로 나누는 것이었는데 현업에서도 이런 식으로 분리해서 사용하는지 궁금해졌다. 라우트의 기능은 특정한 요청 주소를 잡아서 한 곳으로 돌리는 기능을 한다. 그래서 코드를 깔끔하게 정리하는데 사용할 수 있다. moduleTest.jsvar express = require('express');var app = express(); var shopping_fruit = require('./route/fruit')();app.use('/fruit', shopping_fruit); var shopping_drink = require('./rout..
이번 강의에서는 모듈을 배웠다. 늘 require() 를 통해 모듈을 불러서 app.use() 앱에 모듈을 붙이고 사용해 왔었는데 이번에는 모듈을 내가 정의하고 필요할 때에 사용하는 방법에 대해서 배웠다. 특별한 것은 없었다. 1. 사용할 모듈을 정의한 .js파일을 만들고 아래와 같이 exports 할 자원들의 이름과 기능을 정의한다.2. 컨트롤러에서 require('경로')로 모듈.js를 call 한 뒤에 함수를 끌어다 쓴다. module.jsmodule.exports.plus_jk = function(a, b){ return a + b;} module.exports.minus_jk = function(a, b){ return a - b;} moduleTest.js var module = require..
위에서 배웠던 jade 모듈의 extends 기능에 대해 배웠다. 스프링에서의 tiles와 유사하다. app.jsvar express = require('express');var app = express(); app.set('view engine', 'jade');app.set('views', './views'); app.get('/first', function(req,res){ res.render('first');}); app.get('/second', function(req,res){ res.render('second');}); app.listen(3003, function(){ console.log('Connected 3003 port!!!');}); layout.jadehtml head body ..
암호화에 관련하여 좋은 포스트를 찾았다(아래 링크)(https://d2.naver.com/helloworld/318732) 이번 강의에서 배운 것은 pbkdf2 이다. pbkdf2는 salt를 자동 생성해주고 조금더 많은 경우의 수를 통해 보안 수준을 강화한 암호화 기법이다. 위키를 찾아보니 brute force attacks의 리스크를 낮추는 것을 목표로 만들어졌다고 한다.var express = require('express');var bkfd2Password = require("pbkdf2-password");var hasher = bkfd2Password();var app = express(); var pwd = { password : '12345asd'}; app.get('/pbkfd2_test..
이번 강의에서는 암호화에 대해서 배웠다. 설계상의 결함으로 인해 더 이상 암호화에 md5를 사용하진 않는다고 한다. 하지만 강의에서 md5를 이용해서 강의를 했기 때문에 일단 md5를 포스팅 한다. 다만 강의 후반부에서 md5대신 sha256을 사용하며 이젠 md5를 사용하지 않고 sha를 사용해야 한다고 하는데 이것 역시 변할 수 있다며 언급한다. sha256을 쓰려면 아래 코드에서 md5를 sha256으로만 바꿔주면 작동한다. 복호화 관련해서 아무래도 md5가 너무 쉽게 뚫리게 되어서 더 이상 md5를 사용하지 않는 것 같다.(그냥 근거없는 내 추측이다) salt는 md5만 단순히 거치게 되면 해킹의 우려가 있어 소금을 치듯이 md5를 거치기전에 암호화할 정보에 붙이는 임의의 문자열을 의미한다. 다중..
이번 강의에서는 express에서 session을 활용하는 법에 대해서 배웠다. 스프링과 달랐던 점은 굳이 플러그인을 설치해야 한다는 것 말고는 특별히 다른 것이 없었다. 생각해보면 스프링에서 import 하는 모든 것들이 npm에서 install 하는 것과 같은 것 같다. var express = require('express');var session = require('express-session');var app = express(); app.use(session({ // session 값 저장에 쓰이는 암호화 key secret: '1234DSFs@adf1234!@#$asd', // 접속 할 때마다 매번 새로운 session 발행 여부 resave: false, // 세션이 저장되기 전에 unin..
cookie에 저장하는 정보가 민감하고 private 한 정보라면 암호화할 필요성이 있다.개발자 도구에서 cookie를 눌러보면 정보가 다 보이기 때문이다. 물론, jsp를 배울때도 마찬가지고 node.js를 배울 때도 마찬가지고 사실 민감한 정보 자체를 cookie에 저장할 일은 없는데항상 괜히 session을 배우기 전에 cookie를 배우면서 이런 개념을 알려준다(어느 인강이나 비슷한 것 같다) 아무튼 암호화 자체도 스프링보다 훨씬 가볍고 쉬웠다 암호화 전 암호화 후 cookie의 값을 보안상의 이유로 암호화 할 수 있는데 방법은 다음과 같다. const express = require('express');const cookieParser = require('cookie-parser');const ..
이번 강의에서는 Express에서의 cookie 활용에 대해 배웠다. 스프링과 좀 달랐던 점은 더 간편하다는 것이다.확실히 node.js 환경 자체가 스프링에서 하던 것 보다 모든 것이 가볍고 간편한 느낌이다. const express = require('express');const cookieParser = require('cookie-parser');const app = express(); app.use(cookieParser()); app.get('/count',function(req, res){ let count; if(req.cookies.count){ // cookie 에서 가져오는 값은 모두 String type이 디폴트 count = parseInt(req.cookies.count); } ..
이번 강의에서는 간단하게 파일 업로드를 하는 방법에 대해서 배웠다.const express = require('express');const bodyParser = require('body-parser'); // multer 모듈 추가const multer = require('multer'); // multer 모듈을 통해 미들웨어를 리턴해주고 upload에 할당// dest는 destination의 줄임말로 경로 설정을 한다const upload = multer({ dest: 'uploads/' })const app = express(); app.locals.pretty = true;app.set('view engine', 'jade');app.set('views', './views');app.use(e..
세이브를 기준으로 코드의 변화를 감지해서 자동으로 서버를 껐다가 켜주는 기능을 Watch라고 한다고 한다. 그리고 Watch 기능을 가진 여러가지 소프트웨어가 있지만 그 중 이번 강의에서 소개된 프로그램은 supervisor 이다. 1. 설치npm install supervisor -g(전역으로 사용할 수 있도록 설치) 2. 사용supervisor app.js (node app.js (X)) 서버가 올라가게 되고 이제 코드에 변화가 있으면(변화만 해서는 안되고 save를 해야 감지) supervisor가 변화를 감지하고 서버를 알아서 내렸다가 다시 올리게 된다
이번 강의에서는 Express 에서 post 방식으로 데이터를 보내고 이를 컨트롤러에서 받는 것을 해보았다.스프링과 약간 다른 점이 있었다. 가장 큰 차이점이라고 한다면 굳이 post로 넘어온 데이터를 인식하기 위해서 따로 플러그인을 설치해줘야 한다는 점이었다.순서대로 정리한다. const express = require('express'); // bodyParser라는 모듈을 가져오게 된다const bodyParser = require('body-parser'); const app = express(); app.locals.pretty = true;app.set('view engine', 'jade');app.set('views', './views');app.use(express.static('publ..
Node.js 에서 쿼리스트링으로 보낸 값을 어떻게 받는지에 대한 간단한 수업이었다. 스프링과 크게 다를 것은 없었으나 어떤 객체에서 뽑아내는지 알아두는 것이 좋았다 query string (쿼리 문자열, 쿼리 스트링)- 데이터를 전달하기 위한 URL의 일부분 - GET 방식 파라미터 전달 문자열 1. 요청http://localhost:3000/querystring?id=12. 응답app.get('/querystring', function(req, res){ res.send(req.query.id);});이해를 돕기 위해 전체 플로우를 다시 짚고 넘어가자면 app.get()에서 첫번째 파라미터로 설정한 요청을 express가 받게 되면 해당 요청에 대해 매핑된 function()(둘째 파라미터)이 cal..
이번 강의에서는 템플릿 엔진을 사용하는 방법을 배웠다. 템플릿 엔진은 말 그대로 템플릿을 제공하는 데에 본질적인 목적이 있다. 템플릿을 왜 제공하냐고 물어본다면 결국 반복을 최소화 하여 더욱 편하게 프로그래밍 하도록 해준다고 대답할 수 있다. 강의에서는 Jade로 쓰고 있는데 express 공식 사이트에서는 pug로 설명하고 있었다. 그래도 강의를 따라 Jade로 install 시켰는데 deprecated가 떴다. 그래서 찾아보니 Pug가 구Jade 인데 저작권 문제로 강제 개명(?) 당했다고 한다. 아무튼 일단 강의를 따라 했으니 Jade로 포스팅 한다. 1. npm을 통해 jade install 한다(이젠 jade 대신 pug를 써야 할 것)npm install jade --save 2. 내부적으로 ..
const express = require('express');const app = express(); app.use(express.static('public')); app.get('/dynamic', function(req, res){ let li_tag = ''; for(let i = 0; i
const express = require('express');const app = express(); app.use(express.static('public')); app.get('/home', function(req, res){ res.send('Welcome! ');}); app.listen(3000, function(){ console.log('Connected 3000 port!')}); Node.js 에서 정적인 파일을 서비스하고 싶을 경우 Express에서 기본으로 제공하는 미들웨어 함수인 express.static을 사용하면 된다. 아래 코드와 같이 express.static()의 파라미터로 '폴더'를 설정한다. 경로를 설정한다는 것이다. 그러면 웹 상에서 파일 명을 주소창에 쳐서 직접 접..
강의에서는 Express의 기초 강의를 위해 엄청나게 간단한 웹앱을 만들고 있다. 그 내용을 여기 옮긴다.const express = require('express');const app = express(); app.get('/', function(req, res){ res.send('Welcome');}); app.get('/login', function(req, res){ res.send('login page');}); app.listen(3000, function(){ console.log('Connected 3000 port!')}); 초기에 했던 코드보다 express를 쓴 코드가 조금 더 간단해졌다.const express = require('express');const app = expres..
MEAN Stack의 전반적인 플로우 자꾸 이것 저것 하다보면 내가 지금 공부하는 것이 어떤 과정인지 큰 흐름을 놓칠 때가 많다. 그래서 용어에 대한 분명한 정의가 중요한 것 같다. 큰 그림에 대한 이해도 없이 부분 부분만 공부하는 것은 뭔가 불완전한 학습이라는 느낌이 들기 때문이다.Express에 대한 학습을 하던 중 정확히 이게 무엇인지에 대한 명쾌한 답을 못내리는 나 자신을 발견하고 MEAN Stack 전반에 대해 짚고 넘어가야 겠다는 생각이 들었다.그래서 처음 찾아본 것은 Node.js이고 W3school이 매우 잘 설명해놓은 것 같아서 여기 옮긴다 What is Node.js?Node.js is an open source server environmentNode.js is freeNode.js ..
(콜백 함수 플로우) Callback(콜백) 함수Callback(콜백) 함수란 이벤트 핸들러(함수)가 특정 이벤트가 발생 했을때 Call 당하는 함수를 의미한다. 중요한 것은 콜백 함수가 실행되는 시점이다. 콜백 함수의 실행 시점은 콜백 함수를 파라미터로 사용한 원래 함수가 끝난 시점이다. 즉, 원래 함수의 body가 끝나고서 콜백 함수가 실행된다는 의미이다. 그런 의미에서 Callback 함수는 "Call at the back" 함수라고 할 수 있다. 비동기로 뒤에서 멀티 쓰래드로 실행된다는 것이다. 적절한 설명이 stackoverflow에 있었다.(https://stackoverflow.com/questions/824234/what-is-a-callback-function) Callback(콜백) 함..
Node Package Manager(NPM)자바스크립트 프로그래밍 언어를 위한 패키지 관리자. 스프링에서 pom.xml 에 이것 저것 원하는 dependency를 추가한 것과 같은 원리이다. NPM에서 원하는 패키지를 찾아서 나의 소프트웨어의 일부로 사용할지 전역적이고 독립적인 소프트웨어로 사용하기 위해 가져올지를 정해서 npm 명령어를 통해 install 한다.독립적인 소프트웨어로 설치하여 전역적으로 사용하고 싶으면 npm install -g로 설치하면 된다.그렇지 않고 자신의 소프트웨어의 모듈로서 사용하고 싶다면 npm istall --save 로 설치한다.단, 후자의 경우로 설치할 경우 working directory에 초기 패키지 설정을 해주어야 하는데 이를 위한 시동어는 'npm init' 이..
IP Address와 Port예전에 한 번 개념을 정립했었는데 이번에 강의에 나와서 다시 정리한다. 무척 쉽지만 항상 그냥 지나쳤던거라.. 흔히 IP 라고 하는 것은 사실 'IP 주소'(IP Address)를 줄여서 우리가 그냥 편하게 쓰는 용어다. 컴퓨터 네트워크 상에서 컴퓨터 장치가 서로를 인식하는 유일키 같은 개념이 IP Address이다. 전화번호와 같은 것이라고 보면 된다. 그리고 Port는 0 ~ 65535개가 존재하는데 컴퓨터가 네트워크 데이터 송수신을 위해 활용하는 '창구'나 '통로'같은 개념이다. 강의에서 나왔듯이 '항구'로서의 개념도 이해하기가 쉽다.정리하자면 IP Address로 컴퓨터를 구분하여 접속하고 Port를 통해 서버를 구분하는 것이다. 예를 들어 http://jk.com:1..