Development
![[Django] 카카오 로그인 구현하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsCTpf%2FbtrJSX5yOxP%2FXzFi2F9Fc892pIImsVIC0K%2Fimg.png)
[Django] 카카오 로그인 구현하기
구글, 페이스북, 애플, 깃헙, 네이버, 카카오등 여러 대형 서비스들에서 OAuth 2.0 기반의 소셜 로그인 기능을 제공해줍니다. 친절한 공식문서를 제공해주기때문에 개발자들은 제시되어있는 가이드를 따르면 어렵지 않게 소셜로그인 기능을 구현 할 수 있습니다. 비슷한 키워드로 구글링시 많이 볼 수 있었던 djaogn-allauth, django-rest-auth, dj-rest-auth 와같은 OAuth인증관련 라이브러리는 사용하지 않았습니다. 기능구현은 빠르고 편하게 도와주지만, 어쩌면 라이브러리에 의존한다면 상대적으로 소셜로그인의 과정을 깊게 이해하지 않아도 구현할 수 있다고 생각했습니다. 또한 프론트엔드없이 개인적으로 진행한 프로젝트에 적용을했지만, 프론트엔드개발자와 같이 개발하는것을 전제로 해서 구..

pre-commit 사용하기 - 3
1. isort, black, flake8 사용하기 - 1 2. isort, black, flake8 설정하기 - 2 3. pre-commit 사용하기 - 3 이전 포스트들에서 isort, black, flake8의 기본적인 사용법과 설정하는 법을 알아보았습니다. pre-commit은 git 관련 작업에 사용하는 훅(hook)입니다. 이번 포스트에서는 해당 훅을 사용해 3가지의 패키지를 한 번에 실행할 수 있게끔 구성해보겠습니다. 예시는 pipenv를 사용하였습니다. 사전에 필요한 세팅 훅을 실행할 3개의 패키지 - isort - black - flake8 Pipfile에서 확인했을때 3개의 패키지가 설치되어있습니다. pre-commit 설치 pipenv install pre-commit pre-comm..

isort, black, flake8 설정하기 - 2
1. isort, black, flake8 사용하기 - 1 2. isort, black, flake8 설정하기 - 2 3. pre-commit 사용하기 - 3 이전 포스트에서 isort, black, flake8를 간단히 사용해보았습니다. 이 패키지들은 코드스타일코드 스타일 일치를 위해 도와주는 툴입니다. 그리고 코드스타일에는 정답이 없습니다. 당연히 설정을통해 원하는 스타일을 추가하거나, 무시할 수 있습니다. 설정 파일 생성하기 3개의 패키지 설정 파일 모두 보통 .gitignore가 위치하고, manage.py가 위치하는 곳에 생성하시면 됩니다. 설정 파일이 3개여야 할 것 같은데, 두 개밖에 보이지 않습니다. 그 이유는 각 패키지들의 지원하는 설정파일 확장자에 관련이 있습니다. black - pyp..

isort, black, flake8 사용하기 - 1
1. isort, black, flake8 사용하기 - 1 2. isort, black, flake8 설정하기 - 2 3. pre-commit 사용하기 - 3 여러 개발자와 협업을 진행하면서, 코드의 스타일과 컨벤션을 일정하게 맞추기란 결코 쉽지 않습니다. 아무리 유념하며 코드작성을 해보아도 어쩌면 간단한 실수로도 놓칠 수 있는것이 이러한 컨벤션입니다. 아래 소개해드릴 세가지 도구들을 적절히 사용한다면 아주 쉽게 코드의 일관성을 지키며 개발자들은 코드 작성 자체만 집중할 수 있도록 도와줍니다. isort - import를 알파벳순, 유형별, 섹션별로 자동으로 정렬해줍니다. black - PEP8을 기반으로 가독성이 더 좋은 코드스타일로 자동으로 변환해주는 포맷터입니다. flake8 - black과 유사하..
Pipenv로 가상환경과 패키지를 한번에 관리하기
파이썬뿐만아니라 다른 언어와 프레임워크에서도 라이브러리, 패키지, 모듈 혹은 디펜던시라고 불리우는것들을 설치하고 관리하곤합니다. 여기서 모듈(module)은 함수, 변수, 클래스를 모아놓은 것을 말합니다. 모듈은 하나의 .py파일을 의미합니다. 패키지(package)는 특정 기능에 연관되어있는 여러개의 모듈을 묶은것을 패키지라고 합니다. 라이브러리(library)는 패키지의 모음입니다. 엄밀히 따지자면 Library > Package > Module입니다만, 패키지와 라이브러리는 자주 혼용되어 사용되곤합니다. 디펜던시(Dependency)는 위와는 다른 접근법으로, 해당 프로젝트가 의존하고있는 라이브러리들이라는 뜻에서 디펜던시라고도 불리웁니다. 아래에서는 편의를위해 패키지로 통일하겠습니다. https:/..
TDD (테스트 주도 개발)
TDD? Test Driven Development, 즉 테스트 주도 개발의 의미의 여러 소프트웨어 개발방법론 중 하나이다. 보통의 소프트웨어 개발 방식은 코드를 먼저 작성하고, 완성했다고 생각 할 때 테스트코드를 작성하곤 한다. TDD는 이것의 반대의 순서로 개발하는 방식을 말한다. 또한 TDD는 TFD(Test First Development) + Refactoring으로 설명되곤 한다. TDD의 장점 테스트 코드를 먼저 작성하기 때문에 내가 지금 무엇을 해야하는지 분명히 정의하고 개발을 시작하게 된다. 또한 테스트 시나리오를 작성하면서 다양한 예외상황에 대해 생각해 볼 수 있으며 이는 완성도 높은 설계로 이어진다. 따라서 치명적인 예외상황이 생길 확률을 상당히 줄일 수 있으며, 소프트웨어의 전반적인..