전체 글 36

[알고리즘] Floyd's Tortoise and Hare Algorithm (LeetCode #141)

Floyd's Tortoise and Hare Algorithm Floyd's cycle-finding algorithm은 다른 속도를 가진 두 개의 포인터를 사용하는 포인터 알고리즘이다. Tortoise and Hare 알고리즘을 통해 순환 여부를 알 수 있다. 1. 포인터 2개를 선언한다. (slow, fast) 2. slow 포인터는 한 번에 한 칸씩 이동한다 3. fast 포인터는 한 번에 두 칸씩 이동한다. 4. 만약 두 포인터가 어느 순간에 만나게 된다면, cycle이 존재한다. 더 쉽게 이해를 해보려면, 트랙을 달리고 있는 두 사람을 생각해보면 된다. 트랙은 cycle이 존재하는 원형 모양이다. A는 빠른 속도로, B는 느린 속도로 달리고 있다. 두 사람이 같은 지점에서 달리기를 시작했을 때..

[Django] DRF JWT 인증 방식을 이용한 회원가입 & 로그인 (3. 이메일 로그인/로그아웃)

로그인 내가 진행한 프로젝트에서는 이메일과 비밀번호로 로그인을 진행하였다. 그래서 username이 아닌 email로 로그인 / 로그아웃을 구현해보았다. 일단 코드를 보기에 앞서, 로그인 과정은 email & password 입력 -> 회원가입한 user인지 인증 -> token 발급 -> token을 쿠키에 저장 순서로 진행된다. 로그인을 username이 아닌 email로 진행하기 때문에 회원가입한 user인지 인증하는 과정에서 기본 authenticate()이라는 로그인 인증 함수가 제대로 작동하지 않았다. 그래서 authentication() 함수를 custom하여 사용하였다. 1. authentication() custom 하기 accounts/backends.py from django.cont..

Django 2023.09.01

[Django] DRF JWT 인증 방식을 이용한 회원가입 & 로그인 (2. 이메일 회원가입)

지난에 생성한 custom User를 사용하여 회원가입을 구현해보자. 앞서 말했던 것처럼 email을 이용한 회원가입, 로그인을 진행할 예정이다. 1. Signin API 작성 accounts/views.py import jwt from django.contrib.auth import authenticate from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView from rest_framework_simplejwt.serializers import TokenObtainPairSerializer, TokenRefreshSerializer from a..

Django 2023.08.18

[Django] DRF JWT 인증 방식을 이용한 회원가입 & 로그인 (1. User Custom)

Django로 프로젝트를 진행하면서 User 작업은 피할 수 없다. 사실 혼자 데베 프젝을 하면서 jwt 토큰을 이용하여 회원관리를 구현한 적이 있었는데, 데베와 연동을 하다보니 오류를 고치는 데에만 몇 시간이 걸렸다.. (물론 이번에도 마찬가지 였지만..) 그 때는 DB로 생성한 user 테이블을 이용하여 기능을 구현했는데 그러다 보니 필드가 서로 맞지 않아 생기는 오류가 너무 많았다. 그래서 이번엔 user custom을 통해 좀 더 디테일하게 만들었다. 1. 라이브러리 설치 pip install djangorestframwork pip install djangorestframework-simplejwt djangorestframework-jwt 라이브러리가 더이상 업데이트 되지 않아 DRF 공식 문..

Django 2023.08.18

[혼공컴운/컴구] CH1. 컴퓨터 구조 시작하기

컴구, 운체 공부를 다시 하게 된 이유) 컴퓨터공학과 3학년.. 컴구와 운체 수업을 모두 들었지만.. 컴구는 수강신청 실패로 인한 외국인 교수님 수업으로 내 머릿 속엔 컴구에 대한 지식이 거의 남지 않았고.. 1학기에 들었던 운체 또한 수강신청 후 갑자기 사라져버린 대참사로 인해 평점 1점 대의 강의를 듣게 되어 운체 또한 시험 당일 벼락치기로만 수강을 해버린 탓에 제대로 된 운체 지식을 얻지 못한 채 한 학기가 마무리 되었다. 문제는 다음 학기에 듣고 싶은 Unix 프로그래밍이기에 (심지어 빡센 교수님) 뒤늦게 방학이 끝나기 전에 뭐라도 머리에 채워 넣어 보자! + 지도 교수님 상담 때 운체를 매우매우 강조하셨기 때문에 공부를 해볼까~ 하여 혼공컴운 책을 사서 공부하기로 했다 (내돈내산임) CH1. 컴..

Django - mariaDB (MySQL) 연동하기

프로젝트를 진행하기 위해서 기존에 구축해놓은 DB를 이용하기 위해 django와 mariaDB를 연동하여야 한다. mariaDB가 mySQL를 기반으로 만들어진 DB라 그런지 mySQL과 연동 방식이 같다. 1. 'mysqlclinet' 설치 Django와 MySQL을 연결시켜주는 'mysqlclient'를 설치한다. 'mysqlclient'는 mySQL과의 통신을 도와주는 python interface라고 한다. pip install mysqlclient 2. 'my_settings.py' 생성 manage.py 파일이 있는 디렉토리에 my_settings.py 파일을 생성한다. 처음 django 프로젝트를 생성하였을 때를 기준으로는 가장 상위 폴더에 생성하면 된다. touch my_settings.p..

Django 2023.07.26