Today I Learned
-
2023 - 06 - 22 SQL (MySQL), 관계형 데이터베이스 (RDB), 비관계형 데이터베이스 (NoSQL)Today I Learned/TIL 06 2023. 6. 22. 01:03
데이터베이스 데이터를 잘 저장하고 잘 찾기위해 만들어진 소프트웨어 database management system (DBMS) 관계형 데이터베이스 (RDB) relational database 데이터 형식이 정해져있고, 데이터끼리 관계를 맺어 모순이 없는 데이터를 유지할수 있도록 도움 mySQL 등이 대표적이다. (스키마가 있고, 관계가 있다) 비관계형 데이터베이스 (NoSQL) non relational database 관계형 데이터베이스에 속하지 않는 모든 데이터베이스. 데이터 형태가 고정되어있지 않고 유연하게 확장할수있다 하지만 저장되는 데이터를 제대로 관리하지 않으면 데이터베이스에 저장된 데이터를 신뢰할수 없다. MongoDB등이 대표적이다. 테이블 형식이 자유로운 비관계형 데이터베이스와는 달리,..
-
2023 - 06 - 21 엑세스 토큰 (Access Token)과 리프레쉬 토큰 (Refresh Token)Today I Learned/TIL 06 2023. 6. 21. 17:50
AccessToken 사용자의 권한이 있는지 확인되었을 때, 해당 사용자를 인증하는 용도로 발급 Cookie로 jwt를 발급하고, 설정한 Expire 기간이 지날 때 인증이 만료되게 하는 것 또한 Access Token이라고 할 수 있다. 사용자가 AccessToken을 갖고 인증을 요청할 경우 Token을 생성할 때 사용한 비밀키(Secret key)를 갖고 인증하기 때문에, 복잡한 설계없이 코드를 구현할 수 있고, 여러 분기를 거치지 않아도 된다는 장점이 있다 Access Token의 경우 Stateless(무상태) 즉 Node.js서버가 죽었다 살아나더라도 동일한 동작을 하는 방식이다 즉 jwt를 이용해 사용자의 인증여부는 확인할수 있으나, 처음 발급한 사용자 본인인지 확인할수는 없다 Access ..
-
2023 - 06 - 20 JWT (Json Web Tokens)Today I Learned/TIL 06 2023. 6. 20. 01:19
JWT란 JSON 형태의 데이터를 안전하게 교환하여 사용할 수 있게 해준다. 인터넷 표준으로써 자리잡은 규격이다. 여러가지 암호화 알고리즘을 사용할 수 있다. header.payload.signature 의 형식으로 3가지의 데이터를 포함한다. (개미처럼 머리, 가슴, 배) 때문에 JWT 형식으로 변환 된 데이터는 항상 2개의 . 이 포함된 데이터여야 한다. header(머리)는 signature(배)에서 어떤 암호화를 사용하여 생성된 데이터인지 표현한다. payload(가슴)는 개발자가 실제 만들고 원하는 데이터를 저장한다. signature(배)는 이 토큰이 변조되지 않은 정상적인 토큰인지 확인할 수 있게 도와준다. JWT는 비밀 키를 모르더라도 복호화(Decode)가 가능하다. 변조만 불가능 할 뿐..
-
2023 - 06 - 19 쿠키 (Cookie)와 세션 (Session)Today I Learned/TIL 06 2023. 6. 19. 14:13
Node.js는 프로그래밍 언어가 아니라, 자바스크립트를 브라우저없이 단독으로 실행할 수 있는 하나의 플랫폼이다. npm은 node.js에서 오픈소스 라이브러리를 쉽게 사용하기 위해 개발된 '패키지 관리자' 형식의 프로그램이다. express는 서버가 아니라, 우리가 쉽게 서버 프로그램을 구성할 수 있게 만들어진 오픈소스 라이브러리 이다. HTTP는 우리가 일반적으로 데이터를 주고받을 때 사용하는 통신규약이다. 웹 브라우저(익스프레스, 파이어폭스, 크롬 등)는 HTML로 이루어진 데이터를 읽어서 화면에 그려주는 역할을 한다. 단순히 웹문서를 가져와 보여주는 것 뿐만 아니라, 여러가지 프로토콜 (http, ftp, file 등)을 지원하여 다른 웹서버에 데이터를 보낼수도 있다. -쿠키 (Cookie) 쿠키..
-
2023 - 06 - 18 프론트엔드와 백엔드Today I Learned/TIL 06 2023. 6. 18. 11:52
프론트엔드 : 디바이스에서 해석하는 프로그램 백엔드 : 서버에서 해석하는 프로그램 프론트엔드 언어 : 디바이스에서 해석할 수 있는 언어 백엔드 언어: 서버에서 해석할 수 있는 언어 iOS / Android > 프론트엔드입니다! (디바이스에서 해석하기 때문에) java, kotlin > 프론트엔드 언어이자 백엔드 언어 express 프레임워크 통신 : 정보를 주고 받는 것 요청(request) 과 응답(response) 에 의해서 주고 받는 것 요청(request) 하는 컴퓨터 : 클라이언트 (client) 응답(response) 하는 컴퓨터 : 서버 (server) => HTML 형식으로 준다 엑셀 : 스프레드시트를 해석해 주는 프로그램 포토샵 : pdf라는 이미지 파일을 해석해서 그림처럼 보여 주는 프..
-
2023 - 06 - 17 MongoDB, Mongoose, 몽구스, Schema 스키마, model, populate, Queries 쿼리Today I Learned/TIL 06 2023. 6. 17. 11:33
NoSQL 데이터베이스로 분류되는 MongoDB는 가장 유명한 NoSQL데이터베이스 시스템이다. Mongoose Mongoose는 Node.js와 MongoDB를 연결해주는 ODM이다. **ODM(Object Document Mapping) : 객체와 문서를 1대1로 매칭하는 역할 MongoDB의 ODM은 다양하지만 Mongoose가 가장 유명하다. 패키지 설치npm install mongoose --save yarn add mongoose위와 같이 노드 패키지 매니저 npm 혹은 yarn을 통해 설치할 수 있다. MongoDB 연결하기 (둘중 하나)1) require을 이용하는 방법const mongoose = require('mongoose'); mongoose.connect("mongodb://lo..
-
2023 - 06 - 16 HTTP와 웹 서버 & 패키지매니저 (Package Manager)Today I Learned/TIL 06 2023. 6. 16. 09:34
오늘 할일 node 입문 강의듣기, 개인과제 하기 오늘 배운 것 HTTP와 웹 서버 & 패키지매니저 (Package Manager) HTTP : 통신규약 (프로토콜, protocol) HTTP를 이용하여 서버나 클라이언트(브라우저)끼리 의사소통할 수 있다. 모든 브라우저는 HTTP 프로토콜을 기본으로 지원한다.HTTP 디지털 세상에서 네트워크가 의사표현 수단이고, 통신규약이 의사표현의 방법. HTTP에서는 언제나 Request, Response라는 개념이 존재한다. 1. 브라우저가 서버에게 HTTP request를 한다. method : GET / path : /index.html 2. 서버가 브라우저에게 response를 한다. status : 200 / content-type : text/html /..
-
2023 - 06 - 15 클래스 Class, 생성자 Constructor, this와 프로퍼티 (property), 인스턴스, 부모클래스 자식클래스 상속Today I Learned/TIL 06 2023. 6. 15. 02:35
오늘 할일 node 강의듣기 개인과제하기 오늘 배운것 클래스 Class, 생성자 Constructor, this와 프로퍼티 (property), 부모클래스 자식클래스 상속 class User { // class : 무언가를 생성하기 위한 틀 } 클래스(Class)는 현실과 비슷한 개념(객체)를 나타내기 위한 도구. 클래스를 미리 정의해놓으면 필요할때마다 해당 클래스로 동일한 틀을 가진 객체를 만들 수 있다. 여기서 동일한 클래스를 이용해 생성한 객체를 인스턴스(Instance)라고 한다. 예를들어. 아래 const user = new User();에서 왼쪽의 user는 User()를 통해 만든 변수이자 인스턴스이다. const user = new User(); // 왼쪽의 user는 User()를 통해 ..