File tree 3 files changed +61
-1
lines changed
3 files changed +61
-1
lines changed Original file line number Diff line number Diff line change 4
4
* 이번 퀘스트에서는 서버와 클라이언트의 연동, 그리고 웹 API의 설계 방법론 중 하나인 REST에 대해 알아보겠습니다.
5
5
6
6
## Topics
7
- * expressJS
7
+ * expressJS, fastify
8
8
* AJAX, ` XMLHttpRequest ` , ` fetch() `
9
9
* REST, CRUD
10
10
* CORS
11
11
12
12
## Resources
13
13
* [ Express Framework] ( http://expressjs.com/ )
14
+ * [ Fastify Framework] ( https://www.fastify.io/ )
14
15
* [ MDN - Fetch API] ( https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API )
15
16
* [ MDN - XMLHttpRequest] ( https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest )
16
17
* [ REST API Tutorial] ( https://restfulapi.net/ )
32
33
33
34
## Quest
34
35
* 이번 퀘스트는 Midterm에 해당하는 과제입니다. 분량이 제법 많으니 한 번 기능별로 세부 일정을 정해 보고, 과제 완수 후에 그 일정이 얼마나 지켜졌는지 스스로 한 번 돌아보세요.
36
+ * 이번 퀘스트부터는 skeleton을 제공하지 않습니다!
35
37
* Quest 05에서 만든 메모장 시스템을 서버와 연동하는 어플리케이션으로 만들어 보겠습니다.
36
38
* 클라이언트는 ` fetch ` API를 통해 서버와 통신합니다.
37
39
* 서버는 8000번 포트에 REST API를 엔드포인트로 제공하여, 클라이언트의 요청에 응답합니다.
38
40
* 클라이언트로부터 온 새 파일 저장, 삭제, 다른 이름으로 저장 등의 요청을 받아 서버의 로컬 파일시스템을 통해 저장되어야 합니다.
39
41
* 서버에 어떤 식으로 저장하는 것이 좋을까요?
40
42
* API 서버 외에, 클라이언트를 띄우기 위한 서버가 3000번 포트로 따로 떠서 API 서버와 서로 통신할 수 있어야 합니다.
43
+ * Express나 Fastify 등의 프레임워크를 사용해도 무방합니다.
41
44
* 클라이언트 프로젝트와 서버 프로젝트 모두 ` npm i ` 만으로 디펜던시를 설치하고 바로 실행될 수 있게 제출되어야 합니다.
42
45
* 이번 퀘스트부터는 앞의 퀘스트의 결과물에 의존적인 경우가 많습니다. 제출 폴더를 직접 만들어 제출해 보세요!
43
46
Original file line number Diff line number Diff line change 1
1
# Quest 10. 인증의 이해
2
2
3
3
## Introduction
4
+ * 이번 퀘스트에서는 웹에서의 인증에 관해 알아보겠습니다.
5
+
4
6
## Topics
7
+ * Cookie
8
+ * Session
9
+ * JWT
10
+
5
11
## Resources
12
+ * [ MDN - HTTP 쿠키] ( https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies )
13
+ * [ Cookies and Sessions] ( https://web.stanford.edu/~ouster/cgi-bin/cs142-fall10/lecture.php?topic=cookie )
14
+ * [ JWT] ( https://jwt.io/ )
15
+
6
16
## Checklist
17
+ * 쿠키란 무엇일까요?
18
+ * 쿠키는 어떤 식으로 동작하나요?
19
+ * 쿠키는 어떤 식으로 서버와 클라이언트 사이에 정보를 주고받나요?
20
+ * 웹 어플리케이션의 세션이란 무엇일까요?
21
+ * 세션의 ID와 내용은 각각 어디에 저장되고 어떻게 서버와 교환되나요?
22
+ * JWT란 무엇인가요?
23
+ * JWT 토큰은 어디에 저장되고 어떻게 서버와 교환되나요?
24
+ * 세션에 비해 JWT가 가지는 장점은 무엇인가요? 또 JWT에 비해 세션이 가지는 장점은 무엇인가요?
25
+
7
26
## Quest
27
+ * 이번에는 메모장 시스템에 로그인 기능을 넣고자 합니다.
28
+ * 사용자는 딱 세 명만 존재한다고 가정하고, 아이디와 비밀번호, 사용자의 닉네임은 하드코딩해도 무방합니다.
29
+ * 로그인했을 때 해당 사용자가 이전에 작업했던 탭들과 마지막으로 활성화된 탭 등의 상태가 로딩 되어야 합니다.
30
+ * 세션을 이용한 버전과, JWT를 이용한 버전 두 가지를 만들어 보세요!
31
+ * 세션을 이용할 경우 세션은 서버의 메모리나 파일에 저장하면 됩니다.
32
+
8
33
## Advanced
34
+ * Web Authentication API(WebAuthn)은 무엇인가요?
Original file line number Diff line number Diff line change 1
1
# Quest 11. RDB의 기초와 ORM
2
2
3
3
## Introduction
4
+ * 이번 퀘스트에서는 데이터베이스를 다루는 방법에 대해 알아보겠습니다.
5
+
4
6
## Topics
7
+ * RDBMS
8
+ * MySQL
9
+ * ORM
10
+ * Hash
11
+ * scrypt
12
+
5
13
## Resources
14
+ * [ MySQL 101 – The basics] ( https://www.globo.tech/learning-center/mysql-101-basics/ )
15
+ * [ Sequelize] ( https://sequelize.org/ )
16
+ * [ 안전한 패스워드 저장] ( https://d2.naver.com/helloworld/318732 )
17
+
6
18
## Checklist
19
+ * RDBMS 테이블의 정규화는 무엇인가요?
20
+ * MySQL 외의 RDB에는 어떤 것들이 있나요?
21
+ * Relational Database 외에 다른 DB에는 어떤 것들이 있을까요?
22
+ * RDBMS에서 테이블의 인덱싱은 무엇인가요? 인덱싱을 하면 어떤 점이 다르며, 어떤 식으로 동작하나요?
23
+ * ORM을 사용하는 것은 사용하지 않는 것에 비해 어떤 장단점을 가지고 있나요?
24
+ * 자바스크립트 생태계의 ORM에는 어떤 것들이 있나요?
25
+ * 모델간의 1:1, 1: N , N: M 관계는 각각 무엇이고 어떨 때 사용하나요?
26
+ * DB에 사용자의 암호를 평문으로 저장하지 않고도 사용자의 암호를 인증하는 것이 가능한 이유는 무엇일까요?
27
+ * 해시 함수에는 어떤 것이 있나요?
28
+ * 사용자의 암호를 해싱하여 저장할 때 어떤 식으로 저장하는 것이 보안에 좋을까요?
29
+
7
30
## Quest
31
+ * 이번에는 메모장을 파일이 아닌 DB기반으로 만들어 보고자 합니다.
32
+ * 적절한 테이블을 설계해 보세요.
33
+ * Sequelize를 이용하여 데이터의 모델을 만들고 어플리케이션에 적용해 보세요.
34
+ * 사용자의 비밀번호는 해싱을 통해 저장되어야 합니다.
35
+
8
36
## Advanced
37
+ * Object–relational impedance mismatch란 어떤 개념인가요?
38
+ * Foreign Key란 무엇인가요? 이것을 사용할 때의 장점과 단점은 무엇일까요?
39
+ * 이전에 쓰이던 해시함수들에는 어떤 것이 있을까요? 패스워드 해싱의 추세의 역사는 어떻게 이어져왔나요?
You can’t perform that action at this time.
0 commit comments