전체 글

뭐 그렇게 됐다
데브코스

[6주차 - DAY4] cookie, jwt 설정

JWT 설정 유효 기간과 발행자 설정 토큰을 발행하는 sign 메서드의 마지막 인자에는 토큰의 설정을 적는다. 토큰의 유효 기간은 expiresIn이며, 초 단위의 숫자 또는 기간을 나타내는 문자열이어야 한다. 문자열로 작성할 때는 '1d', '1h', '30m'과 같이 작성하면 된다. issuer은 토큰의 발행자를 적는다. const token = jwt.sign({ email: loginUser.email, name: loginUser.name }, process.env.PRIVATE_KEY, { expiresIn: '30m', issuer: 'ncherryu' }); 아래 사진은 발행한 토큰을 복호화한 결과다. Payload에서 exp는 토큰의 유효 기간, iss는 토큰의 발행자를 의미한다. coo..

데브코스

[6주차 - DAY3] JWT를 이용한 인증 및 인가

next() next() 메서드는 다음 할 일을 하러 가라고 명령하는 기능을 한다. 여기서 다음 할 일이라는 것은 미들웨어나 콜백 함수 같은 것들을 말한다. 아래 코드는 유효성 검사를 위해 추가할 미들웨어이다. const validate = (req, res, next) => { const err = validationResult(req); if (err.isEmpty()) { return next(); } else { return res.status(400).json(err.array()); } } 만약 if문안에 return next()를 적지 않았다고 해보자. validate 미들웨어를 실행한 후 다음 할 일이 있다고 말해주지 않은 것과 같기 때문에 콜백 함수를 실행하지 않게 되고, 결과적으로 콜백..

코딩테스트

[JS] 연속된 부분 수열의 합

난이도: Lv. 2 정답률: 51% 문제: https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 sequence의 첫 번째 값을 sum에 저장하고, 시작 인덱스와 끝 인덱스를 0으로 지정한다. sum과 k의 관계에 따라 시작 인덱스와 끝 인덱스를 조정한다. 끝 인덱스가 sequence 배열의 끝에 도달할 때까지 반복한다. sum이 k보다 작을 경우 끝 인덱스를 1 증가시키고 그 인덱스에 해당하는 값을 sum에 더한다. sum이 k보다 클 ..

데브코스

[6주차 - DAY2] 유효성 검사

유효성 검사 사용자가 입력한 값이 유효한 값인지 확인하는 일이다. 예를 들자면 비밀번호가 몇 자리 이상, 연락처에는 문자가 입력될 수 없다 등의 검사를 하는 것이다. Express 유효성 검사 모듈 설치 우리가 유효성 검사를 하는 모듈을 만들어서 쓸 수도 있지만 Express의 유효성 검사를 해주는 외부 모듈이 있기 때문에 이것을 사용해 보자. 터미널에서 아래 명령어를 입력하여 유효성 검사를 위한 외부 모듈을 설치해 준다. npm i express-validator 모듈 불러오기 body와 param은 각각 request의 body, param을 의미하고, validationResult는 오류를 받아주는 기능을 한다. const { body, param, validationResult } = requir..

데브코스

[6주차 - DAY1] RESTful API 개발 실습

DB 모듈화 users.js와 channels.js 두 파일에서 DB에 접근할 수 있어야 하므로 중복된 코드를 줄이기 위해 DB를 모듈화 한다. const mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'Youtube', password: 'root', dateStrings: true }); module.exports = connection; 사용자 개별 조회 이메일로 사용자를 조회한다. 쿼리에 변수를 적는 정석적인 방법은 물음표를 사용하는 것이다. 변수가 들어가야 할 부분에 물음표를 쓰고, query 메서드의 두 번째 파라미터로 해당하는 물음표에 ..

데브코스

[5주차 - DAY5] Workbench 사용 및 DB 연동

DB 커넥션 생성 아래 화면에서 플러스 버튼을 누른다. Connection Name을 입력하고 Test Connection 클릭해서 커넥션이 생성될 수 있는지 확인한다. 경고창은 무시하고 계속 진행하면 되고, OK 버튼을 누른다. Hostname이 기본적으로 127.0.0.1로 설정되어 있는데, 127.0.0.1로 하니까 에러가 나서 localhost로 해주었더니 정상적으로 잘 동작했다. 127.0.0.1로 해보고 안되면 localhost로 하면 된다. 스키마(데이터베이스) 생성 생성한 커넥션을 클릭해서 들어오면 아래와 같은 화면을 볼 수 있다. 왼쪽 SCHEMAS의 빈 공간을 우클릭해서 Create Schema를 클릭한다. Name에 원하는 스키마 이름을 입력하고, Apply 버튼을 누른다. 그러면 아..

데브코스

[5주차 복습 발표] DB 설계 및 실습

DBMS vs RDBMS DBMS 데이터베이스를 생성, 저장, 관리할 수 있는 기능들을 제공하는 시스템(프로그램)이다. RDBMS 데이터 간에 관계를 가지고 있는 DBMS이다. 데이터 간에 관계를 맺고 있기 때문에 찾고 싶은 데이터가 내가 지금 보고 있는 곳에 없더라도 거기에 있는 힌트를 사용해서 원하는 것을 찾아낼 수 있다. 데이터 중복·불일치를 최소화할 수 있고, 데이터의 보안, 일관성·무결성 유지의 장점이 있다. 비교 DBMS RDBMS 저장 형식 파일(계층적, 탐색 형식) 테이블(PK 식별자 사용) 정규화 여부 X O 데이터 보안 X O 적합한 데이터 처리 양 작음 큼 예시 파일시스템, XML MySQL, Oracle MySQL DATETIME vs TIMESTAMP 두 자료형 모두 날짜와 시간을..

데브코스

[5주차 - DAY4] DB 테이블 생성

MySQL(mariadb) 날짜/시간 자료형 type format DATE 날짜 YYYY-MM-DD DATETIME 날짜 + 시간 YYYY-MM-DD HH:MM:SS TIME 시간 HH:MM:SS TIMESTAMP 날짜 + 시간 YYYY-MM-DD HH:MM:SS DATETIME vs TIMESTAMP DATETIME과 TIMESTAMP의 가장 큰 차이점은 데이터 저장 방식이다. TIMESTAMP는 UTC(협정 세계시)로 저장한다. 우리나라는 협정 세계시보다 9시간 빠르다(UTC+9). 우리나라에서 오후 9시에 글을 작성하고, UTC 기준 국가 중 하나인 영국에서 그 게시물을 본다고 가정해 보자. DATETIME을 사용하면 오후 9시로 보이고, TIMESTAMP를 사용하면 오후 12시로 보인다. 따라서 ..

데브코스

[풀 사이클 개발 데브코스 회고] 3월 회고

배운 것 Git 전공생이지만 부끄럽게도 나는 깃을 전혀 할 줄 몰랐다. 깃을 써야 할 일이 있어서 잠깐 써본 적이 있었는데 그때는 뭣도 모르고 구글에 나오는 대로 따라 치기만 했다. 내가 만든 레포지토리도 아니어서 GUI로 접근도 못하고 에러는 자꾸 나는데 어떻게 해결해야 하는지도 모르고 절망만 했었다. 하지만 첫 주에 들었던 강사님의 좋은 강의 덕분에 그때 왜 그렇게 헤맸었는지, 깃을 사용하는 방법에 대해 전체적으로 알게 됐다. HTTP 모듈 휴학하고 유데미에서 웹 개발 강의를 들었었는데 그 강의는 express.js만 다뤘어서 이번에 http 모듈을 처음 써봤다. express에서는 코드 몇 줄로 만들 수 있던 기능이 http 모듈만 사용하니까 파일도 여러 개로 쪼개야 하고 응답과 요청을 처리하는 게..

코딩테스트

[JS] 큰 수 만들기

난이도: Lv. 2 정답률: 51% 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 주어진 문자열에 있는 숫자들을 차례로 스택에 넣는다. 문자열을 모두 순회했거나 k번만큼 제거했다면 반복문을 멈춘다. (스택의 맨 위에 있는 숫자 < 넣을 숫자) 이면 넣지 않고 스택을 pop() 한다. 위의 경우가 아니라면 스택에 넣는다. 위의 반복문을 실행하고 나면 두 가지 경우가 있다. 덜 제거했는데 문자열을 모두 순회한 경우 k번만큼 숫자를..

미안하다 강림이 좀 늦었다
어제 내 스택이 무너졌어