170703-0709_TIL

|

7월 9일 (일)

  • 패캠 인스타그램 연습 repository 커밋 로그를 하나씩 따라가면서, 다른 사람이 작성한 코드를 읽고 Django를 공부했다.
    • 내가 작성한 인스타그램 코드와 다르게 구현한 부분이 많아서 도움이 될 것 같다.
    • 프로젝트 레이아웃 방식부터 달랐다. Two Scoops of Django 3장에 나온 것처럼 구성되어 있었다.
      • settings.py 파일은 configuration_root (config) 폴더 안에 위치
      • 프로젝트 레벨에서 공통으로 사용하는 static, template 폴더는 django_project_root 폴더 내에 위치 (manage.py 파일이 위치한 곳)
  • Pycharm을 사용하기 시작했다. 그동안 사용하던 atom과는 단축키가 많이 달라서 불편하지만, python 개발에는 pycharm이 많이 사용되는 것 같아 일부러라도 익숙해지려고 한다. 가장 마음에 드는 기능은 jump to source 기능이다. django 모듈 import시에 해당 소스코드가 궁금하면 바로 확인해 볼 수 있었어서 좋다. 그동안 Django repository에 들어가서 직접 하나씩 찾아봤던 것에 비교하면 훨씬 편리한 것 같다.

7월 8일 (토)


7월 7일 (금)

  • AWS Elastic Beanstalk를 활용하여 배포를 연습해보았다.
    • 웹 콘솔에 프로젝트 zip 파일을 업로드하여 배포를 진행하고, 수정 사항을 반영하여 재배포를 진행했다.
    • CLI 인터페이스 환경에서 Elastic Beanstalk 배포를 진행했다.

7월 6일 (목)

  • Two Scoops of Django 1~3장을 읽었다.
    • 1장 코딩스타일
    • 2장 최적화된 장고 환경 꾸미기
    • 3장 어떻게 장고 프로젝트를 구성할 것인가
  • 3장의 프로젝트 레이아웃 부분은 내가 그동안 사용했던 방법과는 다른 부분이 있어서 신기했다. 현업 개발자 분들꼐 물어보니 책에 있는 내용처럼 사용 하신다고 한다. 나도 새로운 연습 프로젝트를 진행할 때는 새로운 레아아웃을 적용해서 진행해 봐야겠다.
    • settings.py 파일이 포함된 폴더명을 config로 지정 (이러려면 django-admin startproject config로 항상 프로젝트를 시작해야겠다.)
    • 프로젝트 레벨에서 공통을 사용하는 template, static 파일은 project root 레벨 폴더에 저장 (manage.py 파일이 위치하는 곳)
  • flake8 을 활용해서 그동안 작성한 파이썬 파일의 코드스타일을 검사했는데 결과가 처첨했다. pycharm을 사용하면 자동으로 검사해주도록 설정 가능하다고 하다. 찾아보니 atom에도 flake8 패키지가 있었다. 앞으로 코드 스타일에도 좀 더 신경을 쓰면서 코드를 작성해야겠다는 생각을 했다.
  • 8퍼센트 두숟갈 스터디에 참여하고 후기를 작성했다.
    • Pull Request는 처음이라 방법을 찾아보고 시도해보는데 시행착오를 조금 겪었다.
    • 가장 많은 도움을 받은 자료 (당장 PR을 해야하는 상황에서 이해하기 쉽고 간단한 설명이었다.)

7월 5일 (수)

  • 연습 프로젝트를 진행하며 Django를 학습했다. (repository)
    • 배포 관련 강의를 들었다.
    • requirements.txt, settings.py 를 실행환경(개발/배포)에 따라서 분리하였다.
  • 예전에 풀었던 알고리즘 문제들을 다시 풀었다. 2달 전에 풀었고 이번이 벌써 3번째 반복해서 푸는 문제인데, 비교적 간단하지만 개선방법에 대해서 아직 고민할 여지가 있다고 느꼈다. 이걸로 연습이 좀 되면 예전에 풀었던 codility 문제들을 다시 풀어봐야겠다.
  • 장고를 사용하면서 계속 느끼는 점은 파이썬에 대한 이해도를 높이면 장고에 대해서도 더 잘 이해할 수 있겠다는 점이다. 프레임워크 사용에 익숙해져서 파이썬 언어에 대한 감을 잃지 않도록 꾸준히 공부해야겠다.

7월 4일 (화)

  • 연습 프로젝트를 진행하며 Django를 학습했다. (repository)
    • django-allauth 라이브러리를 활용하여 Facebook 로그인 기능을 구현했다.
    • 회원가입 시에 User 모델과 1:1 관계인 Profile 모델의 인스턴스를 함께 생성하도록 하는 부분에서 시간이 많이 걸렸다.
    • 해당 이슈는 DefaultSocialAccountAdapter 을 상속받은 class를 정의하고 save_user 메소드를 오버라이딩 하여 해결하였다.
    • PostgreSQL을 적용하였다.
    • Tag 검색결과가 없는 경우, 인기 Tag 리스트를 함께 노출하는 기능을 추가하였다.
      • Tag 모델과 M:N 관계인 Post의 갯수를 기준으로 Tag 리스트를 가져와야하는 이슈가 있었다.
      • 이는 Queryset의 annotate() 절을 활용하여 해결하였다.
      • 관련하여 Aggregation 공식 문서를 읽었다. Django ORM을 잘 활용할 수 있었으면 좋겠다.

7월 3일 (월)

  • 연습 프로젝트를 진행하며 Django를 학습했다. (repository)
    • 배포를 하고나니 오류가 발생해도 자세한 로그를 확인할 수 없는 문제가 발생했다. (개발중에는 터미널을 통해서 오류 로그를 확인할 수 있었다.)
    • sentry 라는 서비스를 활용하여 해당 문제를 해결하였다. (이제 내가 모르는 사이에 실서버에서 오류가 발생해도 E-mail로 로그를 받아볼 수 있다!)
    • Azure를 활용하여 다시 한번 배포 연습을 진행하였다.
    • 소소한 각종 버그를 수정했다.
  • 배포까지 진행하고 나니 앞으로 어떻게 공부할까에 대한 고민이 생겼다. 인스타그램 말고 또 새로운 서비스를 유사한 방식으로 만들지, 아니면 책과 강의를 통해서 지식을 추가해 나갈지 등 무엇이 더 좋은 방법일지에 대한 고민이다.
    새로운 프로젝트를 진행하는 것도 좋겠지만, 지금 만든 인스타그램 프로젝트를 계속 개선해 나가는 방식으로 Django를 학습하려고 한다. 생각해보면 아직 개선의 여지가 많아서 한동안은 이걸로도 충분히 연습을 할 수 있을 것 같다.
  • 전부터 읽고 싶었던 Two Scoops of Django를 주문했다.