Skip to content

Commit 1bac1d0

Browse files
committed
Quest 10~11
1 parent 4c0cecc commit 1bac1d0

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

Quest09/README.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
* 이번 퀘스트에서는 서버와 클라이언트의 연동, 그리고 웹 API의 설계 방법론 중 하나인 REST에 대해 알아보겠습니다.
55

66
## Topics
7-
* expressJS
7+
* expressJS, fastify
88
* AJAX, `XMLHttpRequest`, `fetch()`
99
* REST, CRUD
1010
* CORS
1111

1212
## Resources
1313
* [Express Framework](http://expressjs.com/)
14+
* [Fastify Framework](https://www.fastify.io/)
1415
* [MDN - Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
1516
* [MDN - XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)
1617
* [REST API Tutorial](https://restfulapi.net/)
@@ -32,12 +33,14 @@
3233

3334
## Quest
3435
* 이번 퀘스트는 Midterm에 해당하는 과제입니다. 분량이 제법 많으니 한 번 기능별로 세부 일정을 정해 보고, 과제 완수 후에 그 일정이 얼마나 지켜졌는지 스스로 한 번 돌아보세요.
36+
* 이번 퀘스트부터는 skeleton을 제공하지 않습니다!
3537
* Quest 05에서 만든 메모장 시스템을 서버와 연동하는 어플리케이션으로 만들어 보겠습니다.
3638
* 클라이언트는 `fetch` API를 통해 서버와 통신합니다.
3739
* 서버는 8000번 포트에 REST API를 엔드포인트로 제공하여, 클라이언트의 요청에 응답합니다.
3840
* 클라이언트로부터 온 새 파일 저장, 삭제, 다른 이름으로 저장 등의 요청을 받아 서버의 로컬 파일시스템을 통해 저장되어야 합니다.
3941
* 서버에 어떤 식으로 저장하는 것이 좋을까요?
4042
* API 서버 외에, 클라이언트를 띄우기 위한 서버가 3000번 포트로 따로 떠서 API 서버와 서로 통신할 수 있어야 합니다.
43+
* Express나 Fastify 등의 프레임워크를 사용해도 무방합니다.
4144
* 클라이언트 프로젝트와 서버 프로젝트 모두 `npm i`만으로 디펜던시를 설치하고 바로 실행될 수 있게 제출되어야 합니다.
4245
* 이번 퀘스트부터는 앞의 퀘스트의 결과물에 의존적인 경우가 많습니다. 제출 폴더를 직접 만들어 제출해 보세요!
4346

Quest10/README.md

+26
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,34 @@
11
# Quest 10. 인증의 이해
22

33
## Introduction
4+
* 이번 퀘스트에서는 웹에서의 인증에 관해 알아보겠습니다.
5+
46
## Topics
7+
* Cookie
8+
* Session
9+
* JWT
10+
511
## 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+
616
## Checklist
17+
* 쿠키란 무엇일까요?
18+
* 쿠키는 어떤 식으로 동작하나요?
19+
* 쿠키는 어떤 식으로 서버와 클라이언트 사이에 정보를 주고받나요?
20+
* 웹 어플리케이션의 세션이란 무엇일까요?
21+
* 세션의 ID와 내용은 각각 어디에 저장되고 어떻게 서버와 교환되나요?
22+
* JWT란 무엇인가요?
23+
* JWT 토큰은 어디에 저장되고 어떻게 서버와 교환되나요?
24+
* 세션에 비해 JWT가 가지는 장점은 무엇인가요? 또 JWT에 비해 세션이 가지는 장점은 무엇인가요?
25+
726
## Quest
27+
* 이번에는 메모장 시스템에 로그인 기능을 넣고자 합니다.
28+
* 사용자는 딱 세 명만 존재한다고 가정하고, 아이디와 비밀번호, 사용자의 닉네임은 하드코딩해도 무방합니다.
29+
* 로그인했을 때 해당 사용자가 이전에 작업했던 탭들과 마지막으로 활성화된 탭 등의 상태가 로딩 되어야 합니다.
30+
* 세션을 이용한 버전과, JWT를 이용한 버전 두 가지를 만들어 보세요!
31+
* 세션을 이용할 경우 세션은 서버의 메모리나 파일에 저장하면 됩니다.
32+
833
## Advanced
34+
* Web Authentication API(WebAuthn)은 무엇인가요?

Quest11/README.md

+31
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,39 @@
11
# Quest 11. RDB의 기초와 ORM
22

33
## Introduction
4+
* 이번 퀘스트에서는 데이터베이스를 다루는 방법에 대해 알아보겠습니다.
5+
46
## Topics
7+
* RDBMS
8+
* MySQL
9+
* ORM
10+
* Hash
11+
* scrypt
12+
513
## 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+
618
## 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+
730
## Quest
31+
* 이번에는 메모장을 파일이 아닌 DB기반으로 만들어 보고자 합니다.
32+
* 적절한 테이블을 설계해 보세요.
33+
* Sequelize를 이용하여 데이터의 모델을 만들고 어플리케이션에 적용해 보세요.
34+
* 사용자의 비밀번호는 해싱을 통해 저장되어야 합니다.
35+
836
## Advanced
37+
* Object–relational impedance mismatch란 어떤 개념인가요?
38+
* Foreign Key란 무엇인가요? 이것을 사용할 때의 장점과 단점은 무엇일까요?
39+
* 이전에 쓰이던 해시함수들에는 어떤 것이 있을까요? 패스워드 해싱의 추세의 역사는 어떻게 이어져왔나요?

0 commit comments

Comments
 (0)