[Django]SetUpTestData의 격리 지원 (feat. Django > 3.2)
·
SW개발/Django
지난번 Side effect를 방지하는 테스트 코드 작성법에서 언급했던 내용이 Django 3.2 버전 업그레이드를 통해 변경된 것이 있어 포스팅을 추가적으로 작성하게 되었습니다. 지난 포스팅 https://leffept.tistory.com/415 [Django]Side effect 를 방지하는 테스트 코드 작성법 Side effect 를 방지하는 테스트 코드 작성 테스트 코드 작성의 중요성을 깨닫고 난 후부터 신경을 써서 테스트를 작성하고 있습니다. 오늘은 Django로 테스트를 작성하면서 Side effect가 발생했던 경 leffept.tistory.com SetUpTestData 의 격리 지원 기존에는 SetUpTestData에 선언한 클래스 프로퍼티의 경우 테스트 메소드간의 격리를 지원하지 않..
[Django]get_or_create() 란?
·
SW개발/Django
이번 포스팅에서는 Django QuerySet API 중 하나인 get_or_create에 대해서 알아보겠습니다. get_or_create() 란? get_or_create는 모델 객체를 생성할 때 이미 있는 객체라면 가져오고 없으면 생성하는 QuerySet API 중 하나입니다. 간단하게 사용법을 알아보겠습니다. 기본 사용법 class Leffe(models.Model): name = models.CharField(max_length=30) ... obj, created = Leffe.objects.get_or_create(name='leffe') 위 코드는 leffe 라는 이름을 가진 객체가 있다면 가져오고 없다면 객체를 생성하여 줍니다. 또한, created 라는 값을 통해 객체의 생성 여부도 파악..
[Django]DateField의 auto_now_add 옵션, 정확히 알아보기
·
SW개발/Django
이번 포스팅에서는 DateField의 auto_now_add 옵션을 사용하다가 이슈를 겪었던 경험과, 잘 모르고 있던 내용에 대해서 정리해보겠습니다. auto_now_add 옵션을 True로 설정하면 얻게되는 효과는 너무 간단합니다. 현재 시간을 기준으로 값이 설정되도록 하는 것입니다. 따라서 보통은 created_at 처럼 객체가 생성된 시각을 기록하는 필드에 사용합니다. 너무 단순하게 생각했던 나머지 세부적인 사항에 대해서는 잘 알지 못했습니다. 코드를 통해 자세히 알아보겠습니다. 문제가 생겼던 코드 Event 모델이 존재하고, 속성으로 이벤트가 시작하는 시간과 종료되는 시간이 있다고 가정하겠습니다. class Event(models.Model): name = models.CharField(max_l..
사이드 프로젝트, 어플리케이션 출시 회고
·
SW개발/개발이야기
지난번 어플 출시 소개에 이어 오늘은 출시까지의 과정, 경험에 대한 리뷰입니다. 약 4개월간 회사일과 병행하면서 느꼈던 점들을 주로 적었습니다! 사이드 프로젝트 기획 & 시작 🚀 배달비가 나날이 비싸지는 와중에, 절약하기 위한 방법이 뭐가 있을까 하면서 생각났던 아이디어로 어플을 출시하는 것을 기획하게 되었습니다. 바로 근처의 사람들과 파티를 만들어 공동 주문을 통해 배달비를 1/N 하는 것입니다. 처음에는 친구와 2인으로 시작하였지만, 사정상 혼자하게 되었습니다. 어플 출시 목표 ✨ 처음에는 스토어에 출시하는 것 자체에만 목표를 두었습니다. 출시 프로세스를 경험해본 적이 없었기에 좋은 경험이 될 것 이라고 생각했습니다. 기술 스택은..? ⚒️ 사이드 프로젝트이기 때문에 많은 시간을 할애할 수는 없었습니..
[SQLAlchemy]dict 타입의 값 변경을 감지하지 못하는 이슈, 트러블 슈팅
·
SW개발/개발이야기
안녕하세요, 오늘은 SQLAlchemy에서 지원하는 Mutation Tracking을 사용하던 중 겪었던 이슈에 대한 해결 과정을 공유하려고 합니다. 설명하기 앞서, Mutation Tracking이란 무엇인지 알아보겠습니다. https://docs.sqlalchemy.org/en/14/orm/extensions/mutable.html#module-sqlalchemy.ext.mutable Mutation Tracking — SQLAlchemy 1.4 Documentation Mutation Tracking Provide support for tracking of in-place changes to scalar values, which are propagated into ORM change events o..
[Python]PEP 570을 보며.. (feat. 커뮤니티의 중요성 & 커뮤니케이션)
·
SW개발/개발이야기
안녕하세요, 이번 포스팅에서는 지난 Function Parameter, Argument를 공부하면서 읽게 된 문서와 느낀점을 써보려고 합니다. 지난 포스팅 https://leffept.tistory.com/418?category=927799 [Python]Function Parameter, Argument 에 대하여 파이썬은 매우 자유도가 높은 언어이다. 따라서 함수를 사용하면서 인자값에 대해 큰 신경을 쓰지 않아도 에러 없이 편하게 프로그래밍을 할 수 있다. 하지만 그러다가 non-default argument follows def leffept.tistory.com PEP (Python Enhancement Proposals)란? 파이썬에는 PEP 라는 "파이썬을 개선하기 위한 개선 제안서" 라는 것..
배공파용 플레이스토어 출시 (feat. 배달비 공유 & 사이드 프로젝트)
·
SW개발/개발이야기
안녕하세요, 블로그 주인장입니다. 오랜만에 인사 드리네요! 다름이 아니라 그간 열심히 글을 올리지 못했었는데 이번에는 새로운 소식을 가지고 돌아왔습니다! 약, 4개월간 사이드 프로젝트로 진행하며 개발했던 어플리케이션이 드디어 구글 플레이스토어에 출시가 되었습니다. 회사일과 사이드 프로젝트를 병행 하다보니 힘든 점도 많았는데요, 굳은 의지를 가지고.. 출시까지 완료 하였습니다 😄 어플리케이션 소개 긴말 필요없이 어플리케이션부터 소개하도록 하겠습니다. 배공파용 - 배달비 공유 (구글 플레이스토어) 배공파용 - 배달비 공유 - Google Play 앱 주변의 파티에 참여하여 배달 음식을 같이 시켜요 play.google.com 요즘처럼 배달비가 비싼 시대에는, 커피 한잔, 치킨 한마리 먹으려고 배달비 3~7천..
[Python]Function Parameter, Argument 에 대하여
·
SW개발/Python
파이썬은 매우 자유도가 높은 언어이다. 따라서 함수를 사용하면서 인자값에 대해 큰 신경을 쓰지 않아도 에러 없이 편하게 프로그래밍을 할 수 있다. 하지만 그러다가 non-default argument follows default argument 라는 에러를 마주하게 되었고, 이번 기회에 파이썬 함수의 Paramter, Argument의 처리에 관해서 자세히 공부해보기 위해 포스팅을 작성하게 되었다. https://docs.python.org/ko/3.10/glossary.html 의 parameter, argument 참조. 용어집 — Python 3.10.4 문서 같은 형의 두 인자를 수반하는 연산이 일어나는 동안, 한 형의 인스턴스를 다른 형으로 묵시적으로 변환하는 것. 예를 들어, int(3.15)..
[Django]Side effect 를 방지하는 테스트 코드 작성법
·
SW개발/Django
Side effect 를 방지하는 테스트 코드 작성 테스트 코드 작성의 중요성을 깨닫고 난 후부터 신경을 써서 테스트를 작성하고 있습니다. 오늘은 Django로 테스트를 작성하면서 Side effect가 발생했던 경험을 공유해보려고 합니다. 우선 제가 늘 지키는 테스트의 원칙 중 하나는 아래와 같습니다. 테스트는 서로 의존적이지 않아야 한다. 즉, 테스트 케이스를 수정하여도 다른 테스트 케이스의 실행은 보장되어야 한다. 사건은 코드를 리팩토링 하는 일이 생기면서 테스트 케이스 또한 같이 수정하는 작업에서 시작됩니다. 리팩토링도 마무리 짓고 테스트에 대한 수정도 끝나 테스트를 돌리는 순간이었습니다. 분명히 수정했던 부분과는 연관이 되지 않은 다른 테스트 케이스의 결과가 깨지기 시작했습니다. 😕 도저히 코드..
명확하고 간결한 주석에 대하여 (feat. 읽기 좋은 코드가 좋은 코드다)
·
SW개발/개발이야기
지난번 포스팅에 이어 주석에 관련된 책의 내용을 정리해보려고 합니다. 주석 역시 협업을 하다보면 필연적으로 작성하게 됩니다. 없는 것보다는 있는 것이 좋은 주석이지만 때로는 없는 것보다도 못한 존재가 되기도 합니다. 주석을 명확하고 간결하게 다는법을 알아봅시다. 지난 포스팅 https://leffept.tistory.com/412 좋은 변수명을 짓는 것에 대하여 (feat. 읽기 좋은 코드가 좋은 코드다) 개발자라면 늘 고민하게 되는 부분이 있습니다. 바로 "변수명, 함수명을 어떻게 지어야 할까?" 에 대한 이야기 입니다. 변수명을 짓는 것에 늘 고민이 많은 것은 사실이지만, 대부분은 습관에 의 leffept.tistory.com 명확하고 간결한 주석 달기 주석을 간결하게 하라 // 💥 불필요한 주석 /..