TIL
-
TIL.65 알고리즘과 선형_이진 탐색TIL/Algorithm 2020. 12. 12. 22:15
먼저 알고리즘이란 무엇일까 Algorithm : 알고리즘(라틴어, 독일어: Algorithmus, 영어: algorithm 알고리듬[*], IPA: [ǽlɡərìðm])은 수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미한다. 알고리즘은 연산, 데이터 마이닝(기계 학습) 또는 자동화된 추론을 수행한다. 산법(算法), 셈법, 계산 절차 등으로 번역되기도 한다. (출처 : wikipedia ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98) 알고리즘 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 알고리즘(라..
-
TIL.64 (Token)_AuthenticationTIL/Django 2020. 12. 11. 23:16
Westagram Project를 하며 회원가입, 로그인, 게시물, 댓글 등의 기능을 구현해보았다. 오늘은 로그인 당시 부여한 Access_token을 이용한 회원가입/로그인 인증 구현을 마쳐놓은 상태이다. 이제 인증을 마쳤으니, 발행한 토큰을 이용해 유저가 요청하는 request를 실행할 수 있는 권한이 있는 유저인가를 확인하는 절차(인가)를 구현해보자 먼저 인가를 구현하기 위한 방법으로 크게(?) 2가지가 있다고 생각한다. 1. Django REST Framework 에서 지원하는 Authorization 4가지를 이용하는 방법 www.django-rest-framework.org/api-guide/authentication/ Authentication - Django REST framework ww..
-
TIL.63 try_except 구문의 중요성TIL/Python 2020. 12. 10. 22:37
예외(exception) = 코드를 실행하는 중에 발생한 에러를 뜻함 어떠한 예외가 발생했을 때도 스크립트 실행을 중단하지 않고 계속 실행하게 해주는 예외 처리 방법으로 try, except구문을 사용한다. 참고 :: codermun-log.tistory.com/89 TIL.37 예외처리하기(try, except) ## 예외 처리 사용하기 ## 예외(exception) == 코드를 실행하는 중에 발생한 에러를 뜻함 def ten (x): return 10 / x print(ten(2)) # 5.0 ## 분모를 0으로 넣게 될 경우 실행 젱어가 발생하.. codermun-log.tistory.com 내가 작성한 westagram 프로젝트의 PR 리뷰를 진행하였다. 내가 원하고자하는 로직으로 동작시 예기치 ..
-
TIL. 62 회원가입, 로그인 _ HTTP 통신TIL 2020. 12. 9. 23:32
내가 만든 백엔드 서버와 이미 구현되어있는 프론트 서버를 서로 연결하여 실제로 통신이 잘 되는지 에러 및 DB 접속은 원활한지 확인하는 시간을 가졌다. 복기 차원에서 하나하나씩 되짚어보도록하자 1. 혼자서 Project 진행 당시 httpie 로 요청을 보낼때 POST 메서드와 GET 메서드로 URL 요청을 분리하여사용하였다. POST 요청시 -> Signup View로 연결 GET 요청시 -> Signin View 로 연결 해주었다. 따라서 혼자 로컬서버를 띄워보고 통신할때는 문제가 없었으나 회원가입의 엔드포인트와 로그인의 엔드포인트는 모두 POST 메서드를 통해 요청이 들어왔다 이에 따라 SigninView를 새로 클래스를 구성하여 같은 POST 메서드에서도 URL 엔드포인트에 따라 알맞는 View로..
-
TIL.61 Bcrypt, Pyjwt (암호화)TIL 2020. 12. 8. 16:40
사용자의 비밀번호를 암호화하여 데이터베이스에 저장하고 저장된 데이터베이스의 비밀번호화 사용자가 로그인할때 입력하는 비밀번호가 어떻게 같은지 검증하는법을 알아보자. 비밀번호를 암호화 하기 위해 Bcrypt 와 사용자 로그인시 함께 전달할 JWT Token을 만들기 위해 Pyjwt를 먼저 설치하자 pip install bcrypt pip install pyjwt 비밀번호 암호화 'Bcrypt bcrypt는 단방향 해시 알고리즘으로 Salting 및 Key Stretching 하면 복호화가 거의 불가능에 가깝다 salting과 key stretching을 이용해 암호화를 하기 위해 Bcrypt에선 hashpw 함수를 사용한다 hashpw( 기준 문자열(type : bytes) , bcrypt.gensalt()..
-
TIL.60 인증 & 인가 (Hash/Hashing)TIL 2020. 12. 7. 15:01
인증과 인가는 API에서 가장 자주 구현되는 가운데 하나이다. 먼저 로그인 절차부터 차근차근 알아보자. 로그인 절차 유저 아이디와 비번 생성 유저 비번 암호화 해서 DB에 저장. 유저 로그인 -> 아이디와 비밀번호 입력 유저가 입력한 비밀번호 암호화 한후 암호화되서 DB에 저정된 유저 비밀번호와 비교. 일치하면 로그인 성공 로그인 성공하면 access token을 클라이언트에게 전송. 유저는 로그인 성공후 다음부터는 access token을 첨부해서 request를 서버에 전송함으로서 매번 로그인 해도 되지 않도록 한다. 유저 비밀번호 암호화 유저의 비밀번호는 절대 비밀번호 그대로 DB에 저장 하지 않는다. DB가 해킹을 당하면 유저의 비밀번호도 그대로 노출 된다. 외부 해킹이 아니더라도 내부 개발자나 ..
-
TIL.58 Django Rest Framework_serializer(직렬화)TIL/Django 2020. 12. 6. 23:43
클라이언트의 Request(요청)에 대한 Response(응답)을 백엔드서버에서 보내줘야한다. 이러한 Http 통신은 이전에는 XML(Extensible Markup Language) 형식을 사용하였었다. 하지만 XML은 장황하고 복잡하였으며, 많은 태그들과 문자량이 늘어나 응답시간이 느린 무거운 방식이었다. 이에 대안으로 JSON(Javascript Object Notation)이 등장하였으며, 현재는 대부분 JSON 형식을 사용하고 있으며 http 통신은 JSON 형태로 이루어지고 있다. 따라서 클라이언트 Tool(Httpie) 또한 JSON 형식으로 데이터를 주고 받는다. 자 그럼 본격적인 Serializer 란 무엇일까? Serializer라는 DJango Rest Framework에서 나온 새로..
-
TIL.57 null=True 와 blank=True 의 차이(Django)TIL/Django 2020. 12. 5. 15:26
Django에서 Model을 구성할때 null=True 와 blank=True 의 차이는 뭘까? null 과 blank 는 둘 다 기본값이 False 입니다. 이 두 설정은 모두 필드(열) 수준에서 동작합니다. 즉, 필드(열)를 비워두는 것을 허용할 것인지를 설정합니다. null=True 는 필드의 값이 NULL(정보 없음)로 저장되는 것을 허용합니다. 결국 데이터베이스 열에 관한 설정입니다. date = models.DateTimeField(null=True) blank=True 는 필드가 폼(입력 양식)에서 빈 채로 저장되는 것을 허용합니다. 장고 관리자(admin) 및 직접 정의한 폼에도 반영됩니다. title = models.CharField(blank=True) # 폼에서 비워둘 수 있음. 데이..