서론
- 7.11~ 부터 본격적인 항해99 프로젝트 시작
- 아침 9시 ~ 저녁 9시까지 하루 총 12시간(+알파)
일정
- 7.11 (월): 미니 프로젝트팀 배정 및 OT
- 7.11 (월) ~ 7.14 (목): 미니 프로젝트 제작
- 7.15 (금) : 알고리즘 문제 풀이 팀 배정 및 OT
- 7.15 (금) ~ 7.16 (토): javascript 알고리즘 문제 풀이 (난이도 하, 하중)
미니 프로젝트
- 항해99를 하기 전 부여받은 웹개발 프로젝트 강의를 바탕으로 회원가입, REST API 기능을 구현
- 코로나19상황도 풀렸지만 항해99 참여 덕분에 갈 수 없는 여행을 웹서비스에 녹여보자 생각
- 글/이미지 서버단에 올리기, 로그인/회원가입, 댓글 작성, 페이지 전환(URL 파라미터), 글 삭제 기능 구현
- Python, Flask, Jinja2, Ajax, HTML, JS, CSS
미니프로젝트 간단 설명
- 메인페이지 : 유저들이 올린 사진과 글을 한눈에 볼 수 있는 페이지
- 글작성 페이지 : 글/사진을 업로드하여 메인페이지에 카드 생성
- 댓글 작성 및 보기 페이지 : 자신이 가입한 아이디로 댓글을 작성하고 카드마다 올린 댓글을 보여주는 페이지
- 로그인/회원가입 페이지 : 회원가입으로 아이디 생성 후 로그인 시 글 작성 및 댓글 기능이 가능
- 글 삭제 : 메인페이지에서 원하지 않는 카드를 삭제하기
최종적으로 구현한 기능들
- 글/이미지 서버단에 올리기, 로그인/회원가입, 댓글 작성, 페이지 전환(URL 파라미터), 글 삭제 기능 구현
- 기술 스택 : Python, Flask, Jinja2, Ajax, HTML, JS, CSS, AWS, MongoDB
- Git: https://github.com/changhyeonlee-0703/hanhe99_fristProject
- Youtube: https://youtu.be/FMlhL29LUaI
배운점
- 팀원들과의 협업
- GitHub/ Git
- github/git의 pull / commit / push 등의 흐름을 살펴보고 사용해봄.
- branch의 기능을 알고 왜 쓰는지를 알게됨.(main에 넣을 시 프로젝트가 폭파됨을 확인함ㅋㅋ)
- JWT vs 세션 - 쿠키 (로그인/ 로그아웃)
- JWT은 Json Web Tocken의 약자
- 구성 방식은 Encoded Header + "." + Encoded Payload + "." + Verify Signature 로 구성 ( "."이 얘네들을 구분함) - 보통 Header에는 암호화한 방식, 타입 / Payload에는 id와 exp(유효 기간) / verify Signature에는 Secret Key, Base64방식으로 인코딩한 헤더와 페이로드가 들어간다.
- 진행 방식 : 사용자가 로그인하면 서버에서 JWT를 생성 후 클라에게 쿠키에 첨부하여 발급 > 클라는 JWT를 저장했다가 인증이 필요할 때 쿠키에 JWT를 첨부하여 서버에 전송 > 서버는 Verify signature를 Secret Key로 복호화 후 조작여부나 유효기간을 따져 검증이 완료되면 Payload를 디코딩하여 사용자에게 맞는 데이터를 가져온다.
- 장/단점 : 편하다, 세션처럼 별도의 저장소가 필요가 없다!, 확장성이 뛰어나다.(토큰기반이면 다른 시스템에도 접근이 가능하다 - 서버들끼리 협의를 봤을 때...왠만한 협의 바랍니다. 3주후에 뵙죠.) / 이미 발급된 JWT를 돌이킬 수 없다.(유효기간이 끝날때까지 사용 가능) , 이 시간 동안 악의적인 사용자는 정보를 탈탈 털 수 있다고함, 토큰의 길이가 겁나게 김
- 구성 방식은 Encoded Header + "." + Encoded Payload + "." + Verify Signature 로 구성 ( "."이 얘네들을 구분함) - 보통 Header에는 암호화한 방식, 타입 / Payload에는 id와 exp(유효 기간) / verify Signature에는 Secret Key, Base64방식으로 인코딩한 헤더와 페이로드가 들어간다.
- Session
- 진행 방식 : 클라가 로그인 요청할 때, 서버는 확인 후 사용자의 고유한 ID값을 부여하여 세션 저장소에 저장 후 클라에게 쿠키에 세션 ID를 첨부하여 전송함 > 클라는 서버에게 필요할 때마다 세션ID를 쿠키에 첨부하여 보냄 > 서버는 쿠키의 세션ID를 받아 세션 저장소에서 대조한 후 대응되는 정보를 가져옴 > 인증이 완료되면 서버는 클라에게 맞는 데이터 전송
- 장/단점 : 세션ID자체에 유의미한 값이 없어서 안전함, ID,PW를 한번 확인하면 세션ID를 생성하기 때문에 일일이 회원정보를 확인할 필요가 없이 세션저장소에서 세션ID만 확인함 / 세션ID를 탈취당해도 안에 정보가 없어서 안전하지만 그 ID를 이용해서 서버에 클라인척 정보를 요청할 수 있음(세션 하이재킹 공격), 서버에 세션저장소가 필요하기에 서버의 부하가 높아짐
- 진행 방식 : 클라가 로그인 요청할 때, 서버는 확인 후 사용자의 고유한 ID값을 부여하여 세션 저장소에 저장 후 클라에게 쿠키에 세션 ID를 첨부하여 전송함 > 클라는 서버에게 필요할 때마다 세션ID를 쿠키에 첨부하여 보냄 > 서버는 쿠키의 세션ID를 받아 세션 저장소에서 대조한 후 대응되는 정보를 가져옴 > 인증이 완료되면 서버는 클라에게 맞는 데이터 전송
- JWT은 Json Web Tocken의 약자
- API
- API는 서버와 클라가 서로 통신할 수 있게 하는 일종의 약속된 메커니즘? 이라 생각한다.
- 다양한 통신 방법이 있는데 대표적인 걸로 GET, POST방식이다.
- GET은 클라가 정보를 주지 않고 요청하여 서버가 데이터를 클라에게 전송해준다.
- POST는 클라가 가진 정보를 주면서 요청하면 서버는 그에 알맞게 데이터를 클라에게 전송해준다.
- Ajax나 Jinja2 등 다양한 통신 방법이 있음(Jinja2는 html 문서 내에서 파이썬 언어를 쓸 수 있게 해줌)(
- Ajax는 js 단에서 작성되는 듯)
- 이 두가지 요청으로 삽입, 삭제, 수정 등 다양한 것들이 가능하다.
- Mongo DB
- JQuery, Jinja2 템플릿
- CSS, 부트스트랩, Bulma
나의 생각과 이야기
- 이제 본격적인 시작을 느꼈다. 9to9는 정말 사람을 피폐하게 만든다. 그만큼 공부하는 양도 많기에 건강과 정신을 갉아 실력을 쌓는 느낌
- 새로운 분들과 바로 프로젝트를 하는 것이 예전 대학생 때의 조별과제 같지만 함께 해야할 업무를 수행하는 직장 동료느낌이 강하다. 협업의 느낌을 체험하고 있다.
- 나의 빈약한 의지를 알아서 챙겨준다ㅋㅋㅋㅋ WIL도 강제적이라 좋다 ㅎㅎㅎ ㅋㅋㅋㅋㅋ
- 다들 열심히 하는 분위기이기 이 분위기에 휩쓸리기 너무 좋다. 좋은 환경은 사람을 변화시키지
- 잘하는 분들이 너무 많다. 나름 열심히 했음에도 불구하고 깔끔하게 코딩하고 깔끔한 결과를 보여준 조들이 많다. 함께 하려면 분발해야겠다....
- 금요일부터 주특기 언어로 알고리즘 문제풀이가 시작됐다. 난이도가 낮은 것들이라 예전에 조금 했던 것들이 도움이 되지만 한편으론 걱정이다. 다음 주에 시작될 주특기를 사전에 공부해야 하는 것 아닐까...Node.JS
- 첫 프로젝트를 진행한 동료들에게 고마움을 느낀다. 열심히 해주셨고 즐겁게 했다.
- 또한 알고리즘 팀도 재밌다 ㅋㅋㅋ 드립을 잘 쳐보고 싶다.
'항해99 > WIL' 카테고리의 다른 글
[항해 99] WIL 6주차 - 첫 협업(잘 못했던 점...) (0) | 2022.08.21 |
---|---|
[항해 99] WIL 5주차 (0) | 2022.08.14 |
[항해 99] WIL 4주차 - 주특기 숙련, 주특기 심 (후기) (0) | 2022.08.07 |
[항해 99] WIL 3주차 - 주특기 입문, 주특기 숙련 (후기) (0) | 2022.07.31 |
[항해 99] WIL 2주차 - 알고리즘, 주특기 입문 (후기) (0) | 2022.07.24 |
댓글