가상머신 만들고 다룰때 유의할 사항을 모아 포스팅한다. 

 

우분투 가상머신의 디스크 크기를 10GB로 잡은 바람에... 크기를 재할당하는데도 애를 먹어서 가상머신을 다시 올리게 된 적이 있다. 

 

앞으로 디스크 크기는 항상 32GB 이상으로!

 


우분투 가상머신 설치 (virtual box 사용)

 

https://hiiambk.tistory.com/482

 

1. 가상머신(VirtualBox)에 우분투 설치(Ubuntu 16.04)

http://releases.ubuntu.com/16.04/ ubuntu-16.04.6-desktop-amd64.iso 다운로드 1시간 이상 소요 D:\Ubuntu16.04 폴더 생성 새로 만들기 이름 설정_종류와 버전은 자동 선택됨, 확인 메모리 크기 설정(4096..

hiiambk.tistory.com

 

 

가상머신 화면사이즈 조정

 

가상머신 실행 후, 버추얼박스의 메뉴 중 [장치 > 게스트 확장 CD 이미지 삽입]을 선택한다.

실행해서 root암호를 넣는다. 

설치가 끝나면 enter 치고 재부팅한다. 

재부팅후에 까만화면만 나오는 경우가 있는데, 가상머신 화면을 드래그로 죽 늘여보거나 하면 제대로 켜진것을 확인할 수 있었다.

참고 - https://technote.kr/157

 

버추얼박스의 메뉴 중 [보기 > 가상화면1 > 원하는해상도 클릭] 하면 편하다. 

 

 

영문 디렉토리명으로 변경

 

터미널을 연다 (ctrl + alt + t )

ls 명령으로 현재 디렉토리명이 한글로 되있는지 확인한다. '다운로드'이런식이면 영문으로 바꾸자. 

아래와 같은 명령 두줄을 입력한다. 

$export LANG=C

$xdg-user-dirs-gtk-update 

 

Update 버튼을 누르자. ls 명령어로 디렉토리명이 제대로 변경되었는지 확인하자. 

 

 

한글 사용 세팅 

 

fcitx를 설치한다. 

# sudo apt-get install fcitx-hangul

 

한영키를 설정한다. 

 

Setting -> Text Entry 에 가서 Korean이 아니라, Hangule 을 추가해놓는다.

 

https://gomcine.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-1604-LTS-%ED%95%9C%EA%B8%80-%EC%84%A4%EC%B9%98-%EB%B0%8F-%ED%95%9C%EA%B8%80%EC%A0%84%ED%99%98-%EC%84%B8%ED%8C%85

728x90

오늘 한 일 

 

node.js와 mysql 로 CRUD 하는 것을 복습했다. 

우분투 가상머신의 용량 늘리는 것을 다시 시도해봤는데 아직 해결이 안됬다. windows 에서는 vBoxmanager로 용량을 늘리고, 가상머신에서도 작업을 해줘야 하는데, 둘 다 검색결과 설명대로는 진행이 안됬다.

역시 얼른 새로 설치해버리는것이 좋겠다. 

 

프로젝트 회의에 다녀왔다. 

회의 때 내가 1시간 정도 팀원들에게 node.js 의 라우팅, 모듈 사용과 작성법, DB와 연동해서 CRUD 하는 방법에 대한 설명을 했다. 

아무래도 탄탄한 준비(?)없이 아는 것을 전달하는 수준으로 진행되서 걱정이  됬는데, 

생각보다 반응이 좋아서 아주 기뻤다.

이해가 잘 됬다고 도움이 됬고 정말 고맙다는 말을 들으니까 최근 그 어떤 일보다 기뻤다. 

윈도우에 설치한 MySQL 이 제대로 동작하지 않아서 해결못하고 끙끙댔었는데, 오늘 일로 힘이 난다. 

 

 

생각거리 

 

백엔드 기능 완성 데드라인이 미뤄져서 1주가 아니라 2주안에 완성하면 된다. 

살짝 빠듯하게 느껴졌었는데, 잘된건가 싶기도 하다.

이번주 주말까지 기능 완성하고, 다음주에는 부족한점 제대로 보완해야겠다. 

만들면서 배운점은 그때그때 기록하면서 잊지 않도록 해야겠다. 

 

728x90

'일상 > Today I Learn(TIL)' 카테고리의 다른 글

2020-04-16 TIL  (0) 2020.04.16
2020-04-15 TIL  (0) 2020.04.15
2020-04-12 TIL  (0) 2020.04.12
2020-04-10 TIL  (0) 2020.04.10
2020-04-08 TIL  (0) 2020.04.08

오늘 한 일 

 

쿠키를 이용한 인증 기능 구현을 알아봤다. 

가상머신 디스크 용량 늘리는 것에 실패했다. DB관련 진행을 못해서 아쉽다. 아무래도 우분투를 다시 설치해야겠다.

 

728x90

'일상 > Today I Learn(TIL)' 카테고리의 다른 글

2020-04-15 TIL  (0) 2020.04.15
2020-04-13 TIL  (0) 2020.04.13
2020-04-10 TIL  (0) 2020.04.10
2020-04-08 TIL  (0) 2020.04.08
2020-04-07 TIL  (0) 2020.04.07

쿠키를 이용한 인증 기능을 구현한다. 

728x90

'프로그래밍 > Node.js' 카테고리의 다른 글

could not apply the stored configuration for monitors  (0) 2020.04.16
Virtual box에서 우분투 가상머신 만들고 세팅  (0) 2020.04.15
HTTP Cookie  (0) 2020.04.11
Node.js npm pm2  (0) 2020.04.05
MySQL 명명 규칙  (0) 2020.03.23

쿠키란?

서버가 사용자의 웹브라우저에게 보내는 작은 데이터 조각.

인증, 개인화, 트래킹을 위해 쓰인다. 

 

쿠키의 용도 

세션 관리 : 서버에 저장할 로그인, 게임 스코어 등의 정보 관리 

개인화 : 사용자 선호, 테마 등의 세팅

트래킹 : 사용자 행동 기록 및 분석 

 

 

MDN 에서 http cookie를 찾아본다. 

https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies

 

HTTP 쿠키

HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각입니다. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이터를 함께 전송합니다. 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용합니다. 이를 이용하면 사용자의 로그인 상태를 유지할 수 있습니다. 상태가 없는(stateless) HTTP 프로토콜에서 상태 정보를 기억시켜주기 때문입니다.

developer.mozilla.org

 

 

쿠키 생성

 

쿠키는 서버가 사용자에게 응답할 때 실어보내는 것이므로, response의 헤더쪽 안에 작성한다. 

key-value 형태로 여러 쿠키를 보낼 수 있다.

쿠키의 Name은 yummy_cookie이고 Value는 choco 이다. (크롬 기준, F12를 눌러서 개발자 도구의 Network에서 확인해보자.)

var http = require('http');

http.createServer(function(request, response){
    response.writeHead(200, {
        'Set-Cookie':['yummy_cookie=choco', 'tasty_cookie=strawberry']
    })
    response.end('Cookie!!');
}).listen(3000);

 

 

쿠키 읽기

 

생성한 쿠키를 웹브라우저가 서버쪽으로 쿠키를 다시 요청하는 것을 확인해보자. 

 

쿠키를 다루는 NPM 모듈이 있는지 검색해보자.

npm install cookie --save 로 cookie 모듈을 설치한다. 

 

쿠키는 요청의 헤더 안에 있다. 

아래와 같이 request의 headers에서 cookie를 가져온다. 

cookie의 parse() 함수를 이용하여 데이터를 파싱한다. parse()는 undefined를 처리 못하는 함수이므로 if문 내에서 처리한다. 

response.writeHead() 안에 쿠키 값을 여러개 넣을 수 있다. 

var http = require('http');
var cookie = require('cookie');

http.createServer(function(request, response){
    console.log(request.headers.cookie);

    if(undefined !== request.headers.cookie){
        var cookies = cookie.parse(request.headers.cookie);
    }

    console.log(cookies.yummy_cookie);
   
   response.writeHead(200, {
        // 쿠키를 key-value 형태로 생성한다. 
        'Set-Cookie':['yummy_cookie=choco', 
                    'tasty-cookie=strawberry'
        ]
    })
    response.end('Cookie!!');
    
}).listen(3000);

 

 

[ Session 쿠키와 Permanent 쿠키 ]

 

Session 쿠키 : 웹 브라우저를 종료하는 순간 사라진다.

 

Permanet 쿠키: 쿠키가 살아있는 기간을 정할 수 있어서, 웹 브라우저 종료에 영향을 받지 않는다.

Expires, Max-Age 와 같은 설정이 필요하다. 둘 중 하나를 쓰면 된다.   

 

Expires : 쿠키 소멸 시점을 명시한다. (예시 : 2020년 4월 20일까지 살아있어라.)

Max-Age : 현재 부터 얼마동안(1시간, 1달..) 살아있을지 '기간'을 명시한다. 

 

var http = require('http');

http.createServer(function(request, response){
    response.writeHead(200, {
        'Set-Cookie':['yummy_cookie=choco', 'tasty_cookie=strawberry']
    })

    console.log(request.headers.cookie);

    if(undefined !== request.headers.cookie){
        var cookies = cookie.parse(request.headers.cookie);
    }

    //console.log(cookies.yummy_cookie);
    response.writeHead(200, {
        // 쿠키를 key-value 형태로 생성한다. 
        'Set-Cookie':['yummy_cookie=choco', 
                    'tasty-cookie=strawberry',
                    `Permanent=cookies; Max-Age=${60*60*24*30}`
        ]
    })
    response.end('Cookie!!');
}).listen(3000);

자바스크립트 변수를 넣기 위해 ( ` ) 그레이브 엑센트를 썼다. 

 

 

[ 쿠키 옵션 ]

1. Secure

웹브라우저가 HTTPS를 사용하는 경우에만 쿠키를 전송한다는 뜻이다. 

'Secure=Secure; Secure'

쿠키의 이름과 값이 둘다 Secure이고, 끝에 붙인 Secure 가 중요한 키워드이다. 

 

2. HttpOnly

웹브라우저와 웹서버가 통신할 때 만 쿠키를 발행하는 것이다. 

자바스크립트를 통해서도 쿠키값을 읽을 수 있다. 이를 방지하기 위해서 Http를 이용하여 통신할 때만 쿠키가 보이도록 한 것이다. 

 

var http = require('http');
var cookie = require('cookie');

http.createServer(function(request, response){
    console.log(request.headers.cookie);

    if(undefined !== request.headers.cookie){
        var cookies = cookie.parse(request.headers.cookie);
    }

    //console.log(cookies.yummy_cookie);
    response.writeHead(200, {
        // 쿠키를 key-value 형태로 생성한다. 
        'Set-Cookie':['yummy_cookie=choco', 
                    'tasty-cookie=strawberry',
                    `Permanent=cookies; Max-Age=${60*60*24*30}`,
                    'Secure=Secure; Secure',
                    'HttpOnly=HttpOnly; HttpOnly'
        ]
    })
    response.end('Cookie!!');
}).listen(3000);

 

[ 쿠키 확인 하기 ] 

Chrome 브라우저를 기준으로 F12 개발자도구를 열고 Console에서 

document.cookie를 입력하면 쿠키 데이터를 확인할 수 있다. 

3. path

특정 디렉토리에서만 쿠키가 활성화되도록 하고싶을 때 사용한다. 

(그 디렉토리 하위에서도 활성화된다. )

 

쿠키에 Path를 추가해본다. 

Path값은 /cookie로 한다.

var http = require('http');
var cookie = require('cookie');

http.createServer(function(request, response){
    console.log(request.headers.cookie);

    if(undefined !== request.headers.cookie){
        var cookies = cookie.parse(request.headers.cookie);
    }

    console.log(cookies.yummy_cookie);
    response.writeHead(200, {
        // 쿠키를 key-value 형태로 생성한다. 
        'Set-Cookie':['yummy_cookie=choco', 
                    'tasty-cookie=strawberry',
                    `Permanent=cookies; Max-Age=${60*60*24*30}`,
                    'Secure=Secure; Secure',
                    'HttpOnly=HttpOnly; HttpOnly',
                    'Path=Path; Path=/cookie'
    ]
    });
    response.end('Cookie!!');
}).listen(3000);

http://localhost:3000/로 접속해보자. (루트 디렉토리로 접속) 

 

Response Cookies 를 보자. (서버의 응답 쿠키들)

아래와 같이 Path라는 이름의 쿠키가 추가되었고, Path값이 /cookie 임을 확인할 수 있다. 

 

'Set-Cookies' 코드 전체를 주석처리 하고 서버를 재시작해보자. 

http://localhost:3000/ 접속해보자.  Path라는 이름의 쿠키가 안보인다. 

 

다시 http://localhost:3000/cookie로 접속해보자. Path라는 쿠키가 보인다. 

 

/cookie/sub 디렉토리에서도 Path라는 쿠키가 보인다. 즉, /cookie의 하위 디렉토리에서도 보인다는 것.

 

 

4. domain 

특정 도메인 에서만 쿠키를 살아남도록 하는 옵션이다. 

 

 

728x90

'프로그래밍 > Node.js' 카테고리의 다른 글

Virtual box에서 우분투 가상머신 만들고 세팅  (0) 2020.04.15
쿠키를 이용한 인증 기능 구현  (0) 2020.04.11
Node.js npm pm2  (0) 2020.04.05
MySQL 명명 규칙  (0) 2020.03.23
MySQL 웹앱 - 글목록  (0) 2020.03.21

오늘 한 일 

 

쿼리스트링에서 데이터를 가져와서 input 폼에 넣는 작업을 했다. 

크롤링 기능에서, 검색 결과가 없을 경우의 예외 처리를 구현 했다.

내일은 회원가입 기능을 완성할 계획이다.  

728x90

'일상 > Today I Learn(TIL)' 카테고리의 다른 글

2020-04-13 TIL  (0) 2020.04.13
2020-04-12 TIL  (0) 2020.04.12
2020-04-08 TIL  (0) 2020.04.08
2020-04-07 TIL  (0) 2020.04.07
2020-04-06 TIL  (0) 2020.04.06

오늘 한 일 

 

깃헙 사용법을 다시 정리했다.

node.js와 express 프레임워크를 익히면서 만든 코드를 깃헙 레포지토리에 업로드했다.

 

쿼리스트링에서 데이터 가져오는 것을 팀장님 도움받아서 진행했다. 

크롬 개발자 도구를 적극 사용해야겠다.

 

 

생각거리

 

인프런을 찬찬히 둘러보니 좋은 강의가 많은 것 같다.

일단 생활코딩 이고잉님의 node.js , express 강의 도움을 많이 받았다. 코드스쿼드 정호영님의 github 강의도 조금 들었다. 

전보다 컨텐츠가 훨씬많아졌고 사람들이 후기도 자세하게 남겨서 도움이 된다. 

시간을 내서 C++강의, 알고리즘 강의, 선형대수학 강의를 들어야겠다.  

 

특히 선형대수학은, 딥러닝 할 때 기본기로서 중요한 부분이다. 

예전에 딥러닝을 사용하기에 바빴지만, 이번에 시간을 내서 기본기를 다지고 싶다. 

모델 설계를 연습해서 작년에 도전 못했던 캐글에 도전해보고 싶다.

728x90

'일상 > Today I Learn(TIL)' 카테고리의 다른 글

2020-04-12 TIL  (0) 2020.04.12
2020-04-10 TIL  (0) 2020.04.10
2020-04-07 TIL  (0) 2020.04.07
2020-04-06 TIL  (0) 2020.04.06
2020-04-04 TIL  (0) 2020.04.04

+ Recent posts