전체 글

전체 글

    [Django] 카카오 로그인 구현하기

    [Django] 카카오 로그인 구현하기

    구글, 페이스북, 애플, 깃헙, 네이버, 카카오등 여러 대형 서비스들에서 OAuth 2.0 기반의 소셜 로그인 기능을 제공해줍니다. 친절한 공식문서를 제공해주기때문에 개발자들은 제시되어있는 가이드를 따르면 어렵지 않게 소셜로그인 기능을 구현 할 수 있습니다. 비슷한 키워드로 구글링시 많이 볼 수 있었던 djaogn-allauth, django-rest-auth, dj-rest-auth 와같은 OAuth인증관련 라이브러리는 사용하지 않았습니다. 기능구현은 빠르고 편하게 도와주지만, 어쩌면 라이브러리에 의존한다면 상대적으로 소셜로그인의 과정을 깊게 이해하지 않아도 구현할 수 있다고 생각했습니다. 또한 프론트엔드없이 개인적으로 진행한 프로젝트에 적용을했지만, 프론트엔드개발자와 같이 개발하는것을 전제로 해서 구..

    pre-commit 사용하기 - 3

    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

    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

    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의 장점 테스트 코드를 먼저 작성하기 때문에 내가 지금 무엇을 해야하는지 분명히 정의하고 개발을 시작하게 된다. 또한 테스트 시나리오를 작성하면서 다양한 예외상황에 대해 생각해 볼 수 있으며 이는 완성도 높은 설계로 이어진다. 따라서 치명적인 예외상황이 생길 확률을 상당히 줄일 수 있으며, 소프트웨어의 전반적인..

    CI/CD

    인턴을 했던 회사에 CI/CD가 구축되어있었습니다. PR을 올린 후 merge를 하면 대략 5~10분내에 자동으로 스테이징 서버에배포가 되는 시스템이였는데, 해당 개념인 CI/CD를 알아보았습니다. CI/CD? CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하기 위한 솔루션이다. CI (Continuous Integration) CI(지속적 통합)는 소스코드를 통합하고 빌드하고 테스트하는 과정을 자동화하여 지속하는 것을 의미한다. 성공적인 CI를 구현한다면 새로 추가되거나 변경 사항이..

    Git과 Git을 활용한 Workflow

    개발을 처음 접했을 때 개인적으로 꽤 생소했던 개념이 바로 깃(Git) 혹은 깃허브(GitHub)였다. 여러 개발자들이 꼭 알아야 하는 중요한 개념이라고 강조를 하곤 했는데, 이제는 꽤 익숙해졌다고도 생각하는 시점에서 정리를 해보려 한다. 더 자세한 이론적인부분은 이곳에 잘 정리되어있습니다. https://git-scm.com/book/ko/v2 Git 깃(Git)은 리눅스의 창시자인 리누스 토르발스(Linus Torvalds)가 개발한 소스 코드 관리 시스템이다. 깃은 다음과 같은 대표적인 기능을 가지고 있다. 버전 관리 이력서나 과제등을 작업하다보면, 최종이라고 저장한것이 이후엔 진짜최종이되고, 최최최종이되고..와 같은 상황은 다들 겪어보셨을것이라 생각된다. 깃을 이용하면 문서를 수정할 때마다 시기와..