[sw정글 0주차] 깃, 인증, 0주차프로젝트-꿀팁

Date:     Updated:

카테고리:

태그:

📚SW정글 0주차로부터 알게된 내용

개념_get

  • merge conflict3-way-merge시 발생할 수 있다.
  • merge conflict해결을 위해 vscode(내부)mergetool 혹은 P4Merge tool을 사용하면 편하다
  • DAG의 방향! 화살표가 가르키는 방향이 부모 커밋이다(더 예전 커밋)이다 개발_get
  • 깃헙 collaborator 이더라도, 동일하게 풀리퀘스트 & confirm 과정을 가져갈 수 있다.
  • main에다가 너도 나도 commit하지 말고, 브랜치 나누어서 개발하다 한명이 머지 하고, pull_request 받아서 처리하는게 더 편하다.
  • 애초에 기능별로 잘 설계를 해서 쪼개는게 훨씬훨씬 편하다.
  • 환경 충돌
    • 애초에 branch 나누어두면 생기지 않는다.
    • gitignore로 개발환경관련 패키지들 전부다 제외시켜두면 편하다. 그리고 gitignore.io(링크)에서 편하게 설정할 수 있다.
    • 빠진 개발환경은 requirements.txt로 따로 올려두면 된다.
      • 현재 내 환경기준 requirements.txt 생성하기:
        • $ pip freeze > requirements.txt
      • requirements.txt를 사용해서 내 환경에 해당 패키지 설치하기
        • $ pip install -r requirements.txt

HTML

개념_get

  • 애니메이션을 위해 DOM 변경시, component단위 병경을 넘어가면 렉이 생긴다.
  • 단순 이미지를 띄워주는 것이라면… display로 조작하기 보다, visibility로 조작하는것이 변경 단위가 적다. 따라서 image를 깔아두고, visibility를 조절하는 방식으로 표현하는것이 좋다.

개발_get

  • for문 속에 setTimeout을 넣어줄 때, 딜레이를 계속 늘려주지 않으면, 비동기처리 큐가 한번에 실행된다. 따라서 for문을 돌 때 마다, delay를 늘려주어야 하며, 애니메이션이 실행될 타이밍을 정해주어야 하는데 이를 멈추기 위해서는 promise를 통해 비동기 큐를 지워주어야 한다.
  • position: absolute를 사용할 때, 부모DOM에서 움직이게 하려면 부모도 position: relative를 적용시켜주어야 한다.
  • 부모 position 변경사항 없을 시, 통상 아는 Document를 기준으로 absolute position이 적용된다.

인증

개념_get

  • 쿠키만 있는 경우
    • 쿠키의 값을 그대로 보내므로, 해커가 슥~ 보면 개인정보 슥~ 다 털릴 수가 있다. 또한, 크롬, 웨일, 인터넷 익스플로러, safari 등 쿠키의 지원 형식이 모두 다르므로 브라우저 간 공유가 어려워서 귀찮아진다.
  • 그래서 쿠키 & session
    • 인증 할 때 마다 세션정보가 담겨있는 쿠키를 서버로 슝~ 보내주는 방식이다. “서버님..? 여기 세션ID 보이시죠? 내가 로그인 했었던 사람입니다~ 들여보내주시죠?” 와 같은 방식이다. 해커가 슥~ 본다고 해서 개인정보를 슥~ 털어갈 수가 없다. 그냥 출입증만 가져갈 수 있을 뿐이다. 하지만 그 출입증(세션정보)으로 클라이언트인척 위장할 수 있다는 한계가 여전히 존재한다.
    • 서버 입장에서는 세션ID가, 서버에 있는지만 보고 그냥 통과시켜주면 되니까 매번 회원정보를 체크할 필요가 없다.
  • JWT 기반 인증
    • 일단 암호화 해서 이것저것 넣을 수 있으니까 확장성이 훨씬훨씬 좋다. 그리고 세션 때 처럼, 접속할 수 있는 사용자들의 정보를 서버에 일일히 저장하지 않아도 되니까 서버에도 부담이 없다.
    • 엄청나게 긴 글을 작성중이였는데 토큰이 만료된다면? 글이 날아가버린다.
      • 그래서 사용자가 서비스를 계속 사용중이라고 판단되면 새로운 토큰을 발급해 주는 방식 적용 해 볼 수 있다.
    • 토큰을 빼앗기면…. 만약에 토큰을 빼앗기게 된다면… 대처가 어렵다. 세션으로 쓸 때야, 해커가 힘겹게(?) 얻어낸 ID를 서버에서 슥~ 삭제해 버리면 해커가 어차피 해당 세션ID를 사용 할 수 없다. 하지만 JWT토큰은 뭐 어떻게 할수가 없네…
      • 그래서 토큰 만료기한을 애초에 짧게 설정하고, 사용자가 요청하는게 있으면 새로운 토큰을 발행 해 주는 방법으로 대처
    • 토큰이 길어질수록 네트워크에 부하가 걸림

개발_get

  1. JWT와 pyJWT가 둘 다 있어야 한다. 하나는 인코딩, 다른 하나는 디코딩 역할을 한다. 대부분의 친구들이 서버에서 배포를 할 때, 가상환경 세팅시 두 패키지 중 하나를 까먹어서 시간을 많이 날렸다.
$ pip install jwt
$ pip install pyJWT

JWT와 pyJWT모두 설치 해 주도록 하자

  1. 로그아웃 기능을 어떻게 구현하지 라고 생각하다, 우리팀 경우에는 해당 토큰을 black-list에 추가하였다. black-list가 담겨져있는 DB가 점점 차올랐지만, 날짜별로 모아 비워주면 괜찮을 것 같다.

jinja2

  • jinja2에서 html로 변수전달이 이루어지면, 굳이 ajax속에 쓸 필요가 없음
  • js에서 jinja2변수를 불러오면 << >>등과 같은 잔여물이 딸려오는데 ‘’ 와 같은 방법으로 불러오면 파싱이 가능하다
  • 하지만 굳이굳이 필요한 경우가 아니라면 js에서 불러올 필요가 없다. 의미가 퇴색된다. 그럴바에는 서버에서 처리하거나, html내로 넣어서 쓰면 될 것 같다.


😵배우면서 깨달은 내용을 정리해 보았습니다. 틀린 것 같은 개념을 아래 댓글에 달아주시면 감사합니다😵

🌜 Thank you for reading it. Please leave your comments below😄

맨 위로 이동하기

swjungle survive 카테고리 내 다른 글 보러가기

댓글 남기기