최근에 카카오 로그인을 Django에서 REST API를 이용하여 구현해 보았다.카카오 로그인은 다음과 같은 과정으로 진행된다. 카카오 웹사이트로 사용자를 리다이렉트 -> 사용자가 로그인하면 인가코드와 함께 미리 지정한 Redirect URI로 302 Redirect -> 받은 인가코드를 통해 토큰 받기 이러한 방법을 시도하며 마주한 문제점은, 바로 리다이렉트 되는 사이트가 제한되어 있다는 것이었다. 다시 돌아올(리다이렉트)될 사이트는 아래와 같은 쿼리스트링으로 전달하기에 단지 쿼리스트링에 돌아올 사이트의 값을 바꿔주면 되지 않나? 싶긴 하다.https://kauth.kakao.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&r..
장고에서 SECRET_KEY는 보안상 중요하고 외부에 유출되면 안되는 값이다. 그렇기에 새로 SECRET_KEY를 생성해야 하는 일이 있는데, 이럴때 외부에서 제공하는 웹사이트에서 생성하자니 보안의 우려가 있고, 또 무작위로 써넣기도 애매하다. 그러나 장고에서는 SECRET_KEY를 생성하는 기능을 포함해 두었다. 방법은 다음과 같다. python manage.py shell 위와 같이 shell을 실행해준다. from django.core.management.utils import get_random_secret_key get_random_secret_key() 다음과 같이 함수를 실행해주면 무작위 SECRET_KEY를 얻을 수 있다.
LF와 CRLF 중 어떤 것을 사용해야 할까요? 결론부터 말하자면, LF를 사용해야 합니다. LF, CRLF LF와 CRLF에 대해 알아보게 된 계기는 이전에 git을 사용하여 협업을 진행할 때 CRLF와 LF로 인해 코드 충돌이 일어났었을때 찾아보게 되었습니다. CR은 캐리지 리턴(Carriage Return)을 의미하며, LF는 라인 피드(Line Feed)를 의미합니다. 보통 우리가 '\n'으로 표시하여 문자열 출력 시 줄바꿈을 표현하는 것이 바로 LF입니다. 또한, CR은 '\r'로 커서를 맨 앞으로 이동시키는 역할을 합니다. 그렇다면 LF와 CRLF의 차이는 무엇일까요? 두 개는 모두 줄바꿈을 표현하는 것을 의미합니다. 그러나 운영 체제에 따라 줄바꿈을 나타내는 표준이 다릅니다. LF: Linu..
최근에 Github Copilot 무료 사용이 만료되었습니다. 다시 Github Edu로 어찌어찌 연장해보려 하다가 귀찮아져서, 이전에 AWS의 코드 도우미가 개인용으로 무료로 제공된다는 소식을 들어본적이 있어서 사용해보기로 결심했습니다. AWS CodeWhisperer https://docs.aws.amazon.com/codewhisperer/latest/userguide/whisper-setup-indv-devs.html Setting up CodeWhisperer for individual developers - CodeWhisperer In order to use CodeWhisperer, all individual developers must sign up through the procedure..
SvelteKit에서 환경변수 사용법 SvelteKit에서 환경변수를 사용하는 방법은 여러 가지가 있다. JS기반으로 라이브러리를 사용할 수도 있고, Vite에 있는 기능이나 dotenv 등을 사용할 수도 있다. 그러나 SvelteKit에는 자체적으로 제공하는 환경변수 기능이 있다. 이를 사용하면 보안 등에서 이점이 있다. SvelteKit에는 2가지 기준으로 분류해 4가지의 환경변수 기능을 지원한다. Static / Dynamic값인지, Public / Private 한지를 따져 4가지 방식으로 사용할 수 있다. 우선 환경변수 저장파일인 .env를 프로젝트 루트에 생성해 준다. 아래에 Private Key와 Public Key를 예시로 작성했다. # .env # Private SECRET_API_KEY..
이진 트리는 노드들이 최대 2개의 자식 노드를 가지는 트리를 말합니다. 이러한 이진 트리를 순회하는 방법에는 전위 순회, 중위 순회, 후위 순회가 있습니다. 전위 순회 (Pre-order traversal) : 루트 노드부터 시작하여, 루트를 방문하고 왼쪽 서브 트리를 순회하고, 오른쪽 서브 트리를 순회합니다. 순서는 루트 -> 왼쪽 -> 오른쪽입니다. (예시: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8) 중위 순회 (In-order traversal) : 왼쪽 서브 트리부터 시작하여, 왼쪽 서브 트리를 순회하고, 루트를 방문하고, 오른쪽 서브 트리를 순회합니다. 순서는 왼쪽 -> 루트 -> 오른쪽입니다. (예시: 3 -> 2 -> 5 -> 4 -> 6 -> 1 -> 8 -> 7)..
Django의 유저 모델들 Django에서는 기본적으로 유저 모델 django.contrib.auth.models의 User를 제공하고, 이를 통해 간편하게 인증 등을 처리할 수 있다. 또한 기본제공되는 유저모델을 확장할 수 있게 다음과 같은 다양한 방법이 있다. User에 기반한 Proxy Model 생성하기 1:1 로 User에 연결된 모델 만들기 AbstractUser 상속받아 커스텀 유저 모델 만들기 AbstractBaseUser 상속받아 커스텀 유저 모델 만들기 AbstractUser 모델 기본적으로 제공하는 django.contrib.auth.models의 User을 사용하더라도, 이후에 유저 모델을 수정할 일이 생길수있다. 그런데 이후에 이를 수정한다면 그 과정이 매우 힘들기에, 기본적으로 ..