WIL 목적: 나의 성장확인 > 정보 공유 > 공유가 되면 내가 알고 있는 정보 오류 수정? 및 다른 정보 추가습득??
김형진 WIL 1 목적 : 생각정리. 내 위치(주제) 파악. 앞으로 내가 취해야 할 자세 및 방향알기.
순서
- 첫 주를 시작했고 반성하며..
- JWT
- API
- 프로젝트 흐름
- 개선하면 좋을 점
- 마치며..
지금은 제출하기 좋은 작성보다는 내 성장을 위해서 쓰자.
7주차 8주차에는 둘 다 만족시킬 수 있는 WIL을 작성하자!
사실 나는 이번 프로젝트에 참여하지 않은 수준이다.
이해가 너무 부족했고 스스로 겸손하지 못해서 게을리하였다.
근데 그 이해가 부족하다는 것을 프로젝트 초반에 알았는데 정확히 인지하지 못하였고
지금 WIL 작성을 위하여 글을 쓰는 (생각을 정리하는) 지금에서야 확실히 알아챘다.
나는 사실 AJAX, JSON, JWT, API, FLASK, REQUEST 등 어느정도 이해했다고 생각했는데
정말 한심한 생각이었고 직접 적으려고 하니 한글자도 적을 수 없다.
그저 이것들 중 한가지의 사용방법을 체험해봤던 거라고 생각이 든다.
지금보면 당연한 사실인데 왜 조금 안다고 생각했지.. 너무 건방지고 이해가 안된다.
모또없는데 까불지말자!!
여튼 프로젝트 중 이렇게 부족한 사람인데 욕심은 많아서 부족함이 여실히 드러났다.
그리고 그 부족함을 내가 받아들이지 못하여서 혼자 낑낑대고 시간을 아무 의미없이 보냈다.
다른 분들에게는 너무 귀한 시간들이었을테고 더 좋은 페이지를 만들 수 있었는데 말이다!
차근차근 해나가지 못했고 내가 부족한것도 몰랐다는 것이 가장 큰 문제가 아니었을까..
한탄은 여기까지 하고 내 주제를 인정하고 차근차근 해나갈 것을 소소하게 다짐해보자..
JWT와 API가 주제니까 그것에 대해서 써보자!
1. JWT(JSON WEB TOKEN)
JSON : JavaScript Object Notation
경량의 DATA-교환 형식이다. 이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이
object는 name/value 쌍들의 비순서화된 SET이다. object는 {좌 중괄호로 시작하고 }우 중괄호로 끝내어 표현한다. 각 name 뒤에 :colon을 붙이고 ,comma로 name/value 쌍들 간을 구분한다.
최근 서버의 전송, 데이터의 전송 등 많이 이용됨
우리는 몽고db를 이용했는데
몽고DB의 한 row 가 한 객체이다?? 인줄 알았지만 공부를 하면서 답은 아니다 가 맞는듯
한 row는 그냥 데이터고 우리가 한 app.py에서 GET을 할 때 jsonify 가 json 객체화 라고 생각하면 될 것 같은데 맞나?
일단 JWT는 인증방식이다.
그리고 인증방식의 종류는 세션과 JWT가 있다.
그리고 세션에서 사용하는 쿠키가 있다.
이 3가지가 용어로서 가장 많이 사용된다. (뉴비 시선)
비교를 위해서 세션부터 설명합니다.
세션
로그인과 회원가입을 예로 든다.
회원가입
브라우저는 유저회원가입정보를 쿠키를 이용하여 서버에 보낸다.
서버는 그 쿠키를 DB에 저장한다.
로그인
브라우저에 유저정보를 입력하면 쿠키를 이용하여 서버에 보낸다.
서버에서는 DB로 정보를 보내고 DB에서는 일치하는 정보를 찾음 = 유효성검사
그리고 다시 서버로 쿠키를 보내고 서버는 브라우저로 유효성검사가 완료된 쿠키를 보냄
해당 브라우저에서 유저 다음작업 가능! (=로그인 완료!)
특징
서버는 DB 이용하여 유저의 모든 정보 저장
장점
새로운 기능을 추가, 특정유저정보삭제(세셕삭제) 등 직접적인 유저 관리가 가능
넷플릭스 처럼 계정공유숫자 제한 가능 = 로그인 몇명중인지 같은 정보도 알 수 있음
서버가 커지고 직접적인 관리를 하려면 JWT에서 세션으로 바꾸기도 함.
단점
DB를 구매 및 유지,관리 해야한다.
유저가 늘어날수록 DB도 커야겠죠? = 돈이 든다?
쿠키는 브라우저 전용 매개체이기 때문에 앱에서 사용이 불가능하다.
JWT
회원가입 : 브라우저에서 쿠키가 아니라 토큰에 내정보를 담아서 서버로 보낸다.
그리고 서버는 받은 토큰에 인증에 필요한 사인정보를 스트링 형태로 저장한다.
그리고 다시 유저한테 줌.
(특징: JWT는 공간제약이 없어서 세션 아이디보다 훨씬 김
쿠키는 공간제약이 있어 길게 하지못함.)
로그인 :
브라우저에 정보입력해서 지난번에 받은 토큰형식으로 서버에 전달 (세션과 보내는 방식은 같은데 매개체가 다름)
서버는 해당 토큰에 대하여 DB를 거치는 대신 서버에서 유효성검사함 (토큰 조작여부, 사인 유효성 검증)
그 사인한(검사완료된) 토큰(스트링형태)을 유저에게 다시 보냄.
특징
생성토큰을 추적하지 않음
서버가아는것은 오직 토큰이 유효한가에 대해서만 알음
요즘 코로나 QR체크인은 JWT가 들어간 QT코드임.
세션이나 DB없이 유저를 인증하는 방식!
장점
DB없이 유효성 검증이 가능 = DB를 구매할 필요가 없다.
토큰은 쿠키와 달리 앱에서 사용 가능하다.
단점
직접적인 유저관리를 못함 (강제로그아웃, 유저삭제기능 등등) (이유 : 토큰은 만료전까지느 무조건 유효하다!)
누구나 내 토큰 컨텐츠를 볼 수있기 때문에 비밀정보를 JWT 사용하면 안된다.
정리
쿠키, 토큰 : 매개체 ( 쿠키는 브라우저전용, 토큰은 브라우저,앱 모두 사용가능)
세션 방식 : 매개체로 쿠키를 사용하고 인증 정보를 DB에 저장
JWT 방식 : 매개체로 토큰을 사용하고 인증 정보를 토큰에 저장하고 유저에게 줌
2. API
키보드 같은거다.
키보드 : 나 - 컴퓨터의 소통
A를 입력하면(명령하면) 컴퓨터에 A가 나오고
B를 입력하면(명령하면) 컴퓨터에 B가 나옴
방식은 같으나 각자 다른 목적을 가지고 있음
API : 프로그램(코드) - 프로그램(코드)의 소통
로그인페이지에 뭐뭐뭐를 인식하도록 하기
메인페이지에 뭐뭐뭐를 띄우기
방식은 같으나 각자 다른 목적을 가지고 있다고 이해하면 좋다.
1주차 배운 것
깃허브 (따로 업로드 진행)
프로젝트 플로우 체험
jinja2 활용한 GET
AWS EC2 활용
공유 DB 사용법
파일 업로드(확장자 관계없이)
JWT 이론 (부족부족)
배우면 좋을 것이다 했던 것들(순서대로)
깃허브 (원활한 사용)
프로젝트 프로세스( 전체적인 프로세스, 개발 프로세스: 너무 세부적이지는 않더라도)
Rest API
웹,HTTP
SQL, MySQL, SQL join, DB
컴퓨터 사이언스
즐찾기능, 게시판(comment) 아이디 같이 나오게 , 검색기능, 클릭하면 메모장 활성화 및 수정 가능상태 기능
전체적인 프로젝트 흐름 (했던 그대로 쓰되 프로세스를 더 이해해가는 공부필요)
아이디어
> 임무 분담
> 와이어프레임 : 대강 페이지의 틀을 구성
> HTML BODY
> API 설계 + 기능 구현
내가 메인페이지, 상세페이지를 담당하기로 했다.
우선 기능은 메인페이지에서 카페 검색 기능, 카페 리스팅, 카페 클릭하면 상세페이지로 가는기능, 상세페이지에서는 관리자만 뮤직리스트 작성 및 수정할 수 있는 기능, 코멘트 기능(아이디 기재된상태로) 등이 있다.
우선 DB-서버-클라이언트 간에 API 설계를 하였고 기본적인 기능 구현하였다.
사실 나는 여기까지였고, 주어진 양에 30%도 못했다고 생각한다.
> 각자 만든 페이지 병합
> 테스트 진행
> 에러 수정
> 보완점(개선점) 회의 및 적용
> css 적용
> 서버 동기화? 서버 끄고 파일질라에 넣고 다시 서버 키고
> 가비아 적용
> 깃허브 리드미 작성
> 배포
개선하면 좋을 점
더 질문하고 물어볼 수 있는 용기를 가져보자... 사실 지금도 어렵지만 .. 어렵긴하다..
그래도 물어봐보자..
어떻게 하면 동료들에게 더 잘 물어볼 수 있을까?
사실 나는 그런 생각을 가지고 있는 것 같음
질문이 구체적이고 알아듣기 쉬워야 답을 해주기 좋고 좋은 의사소통이라고 생각하는데,
너무 그거에 얶매여 있지 않나 생각이 든다..
사실 내가 모르고 구글링을 해도 모르는 정보들은 떳떳하게 물어볼 수도 있는데,
조금 민폐일 거라는 생각이 자리잡아서 그런게 아닐까.. 생각이 듦
나도 바뀌어야함. 나한테 오는 질문이 완벽한 질문형식이 아니어도 성심성의껏 대답하는 사람이 되자.
나도 질문 잘 못하면서 쓸데없는 관념만 있었네유.
정말 후회되고 아쉬움이 남는다..
다음에 만나면 팀원들에게 은혜를 갚을 수 있는 사람이 되자..!
사실 강의를 듣는 것이 왜 좋았을까? 를 생각해보면 그냥 주어진 정보를 받기만 하면 되서 였지 않았을까
조금은 생각을 바꿀 수 있는 계기가 되었다!
다음 팀 프로젝트 때
: 잘 때 확실히 자고 리듬을 최대한 맞춰보는 것이 좋을 것 같다.
: 와이어프레임을 조금 더 구체적으로 구성하고 소통 많이 하자.
이번 WIL은 너무 감정적인 부분이 많이 들어간 WIL인 듯
다른 WIL 보면 엄청 깔끔하던뒈 ..
여튼 이것도 내 나름의 WIL인 걸지도..?
그래도 다음 WIL에서는 비율을 줄이자.
결론 및 나아갈 방향
순간순간마다 잘해야 할 필요 없고 남들보다 뛰어날 필요도 없고 지금의 나는 그럴수도 없다.
지금은 일단 순간순간 작은 목표에 집중하자.
부족함을 인정하고 공부하자.
99일째의 내가 잘하고 있으면 된다고 생각함.
너무 부족한 글 죄송합니당
2주차 WIL은 더 성장하기를 바라며..!
간바레 ~
추신 :뭔가 다 쓰고나니 정신이 맑아지고 후련하네유. 부족한 사람들에게 이것도 WIL 목표중 하나일지도!?
'TIL & WIL' 카테고리의 다른 글
TIL 생활코딩 web2 javascript (0) | 2021.12.01 |
---|---|
WIL 4week (작성중) (0) | 2021.12.01 |
WIL 항해 99 3주차 (미완) (0) | 2021.11.21 |
WIL 2주차 기록 (0) | 2021.11.14 |
TIL (알고리즘 시작 1일차) (0) | 2021.11.09 |