TIL
-
TIL.73 Github / Git 충돌(Conflict) 발생 해결TIL 2020. 12. 20. 23:29
Git에서 master(main)의 brach를 만들고 작업을 하다보면 pull request 시 Confilct(충돌)이 나는 경우가 있다. (또는 Github에서도 확인이 가능하다) Conflict 발생이유 내가 pull origin main을 한 후 다른 작업자가 나와 같은 라인을 수정하고, 수정한 내역을 main과 Merge할 경우 발생한다. 이때 Git 충동을 해결하는 2가지 방법이 있다고 한다. 1. Merge --> Merge로 해결을 하였다. 2. Stash --> '책갈피' 개념으로 생각, 지금의 코드를 만들어내긴 했는데 뭔가 오류가 생기게 됩니다. 하지만 그렇다고 코드를 날려버리기엔 아까울 때, 백업 및 책갈피 개념으로서 이 명령어를 쓴다고 한다. Merge 나의 로컬 master(ma..
-
TIL.72 select_related 와 prefetch_relatedTIL 2020. 12. 19. 23:37
이전 JsonResponse를 활용하여 모든 데이터를 응답으로 보내보았다. codermun-log.tistory.com/category/TIL 'TIL' 카테고리의 글 목록 성실과 기본기를 중요시하는 백엔드 개발자입니다. codermun-log.tistory.com 하지만 언급하였듯 위와 같은 코드는 전혀 개발자스럽지 못한 코드이다. Django 의 ORM을 이용하여 DB에 접근하며 내가 원하는 정보를 가져와야한다. 이때 로직을 어떻게 구성하느냐에 따라 DB에 몇 번 접근해야하는지에 대한 효율을 따져볼 수 있게 된다. 당연히, DB에 자주 접근하게 될 수록 속도는 느려지며 비효율적인 코드라 할 수 있다. 또한, Django ORM을 이용해 DB에 접근하여 Queryset objecst를 가져올때 얼마나 ..
-
TIL.71 JsonResponse 활용TIL 2020. 12. 18. 21:53
프로젝트 진행 중 확인한 내용으로 어떻게 JsonResponse 활용할 수 있는지 알아보자. JsonResponse JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs) HttpResponse의 subclass로, JSON-encoded response를 생성할수 있게 해 줌. 대부분의 기능은 superclass에서 상속받음 첫번째 인자로는 전달할 데이터로서 반드시 dictionary 객체여야 함. 디폴트 Content-type 헤더는 application/json임 encoder는 데이터를 serialize할 때 이용됨. json_dumps_params는 json.dumps()에 전달할 딕셔너리..
-
TIL.70 auto_now VS auto_now_add 차이TIL/Django 2020. 12. 17. 13:18
Django의 ModelField 중 DateField , DateTimeField 필드의 옵션으로 사용되는 auto_now 와 auto_now_add의 차이에 대해 알아보자. 먼저 DateField 와 DateTimeField는 언제 사용하는지 알아보자. DB 에서 CURRENT_TIMESTAMP 로 생성되야하는 정보일때 해당 필드를 사용하는데 예를 들어 게시물을 작성한 시간, 리뷰를 작성한 시간, 작성한 게시물을 수정한 시간, 리뷰의 리뷰를 작성할때의 시간 등 DB에 Timesatamp로 생성되어 저장되어야 하는 정보의 column 값을 지정해줄때 위와 같은 필드를 사용한다. 보통 최초 생성 시간 (created_at) 과 수정 시간 (updated_at) 2가지를 모두 구성해주는것이 컨벤션이다. D..
-
TIL.69 FloatField 활용하기TIL/Django 2020. 12. 16. 21:18
장고를 이용해 데이터모델링을 구성할때 아래와 같은 평점은 어떻게 구현 할 수 있을까? 따라서 리뷰에서 평점 모델링을 구성한다고 했을 경우 아래의 예시와 같이 작성할 수 있다. import json from django.views import View class ReView(View): rate = models.IntegerField() class Meta: db_table = 'reviews' 평점은 대략 0.5 ~ 5.0까지의 실수! 로 표현되는게 일반적이다. 따라서 소수 첫번째자리 까리 표현할 수 있으며 여기서 IntegerField 사용은 어울리지 않다 아래와 같이 FloatField를 사용하며 Djanog의 validators 모듈을 사용하여 평점의 범위를 지정해 줄 수 있다. import jso..
-
TIL.68 __str__은 무엇일까TIL/Django 2020. 12. 15. 14:55
Django 모델링 공부시 거의 대부분 __str__ 메서드가 사용되는 것을 어렵지 않게 볼 수 있다. 그럼 __str__ 메서드를 왜 사용하는지 알아보자. __str__ 해당 클래스로 만들어진 인스턴트를 자체를 출력할 때, 문자열로 설명해주기 위한 메서드이다. Django의 models.py에서는 class가 admin 페이지에서 어떻게 출력되는지 정의해주는 역할이라 볼 수 있겠다. 아래와 같은 Question 클래스의 3가지 column이 있는 상황을 생각해보자 class Question(models.Model): subject = models.CharField(max_length=200) content = models.TextField() create_date = models.DateTimeFiel..
-
TIL.67 Trello 다루기TIL 2020. 12. 14. 22:00
팀 프로젝트의 첫 시작인 Trello (협업 관리 Tool)에 대해 알아보자. 스크럼으로 효율적인 프로젝트 관리를 하기 위한 많은 협업 툴 중에서 Trello를 사용하여 프로젝트를 진행한다. 먼저 개발팀 및 멘토분들을 모두 멤버로 초대하여 프로젝트 팀을 함께 구성한다. Trello의 Board 화면은 아래와 같이 구성된다. Backlog / This week / I progress / Done 1. Backlog 백로그(Backlog)는 제품 개발에 필요한 모든 요구사항을 우선순위에 따라 나열한 목록으로, 이를 작성한 뒤 사용자 스토리를 기반으로 전체 일정 계획인 릴리즈 계획을 수립한다 백/프론트 개발간 계획을 세분화하여 작성한다. 2. This Week 우리팀은 1 sprint 을 1주일 기준으로 잡았..
-
TIL.66 스크럼(Scrum)TIL 2020. 12. 13. 21:04
스크럼(Scrum)이란? 프로젝트 관리를 위한 상호,점진적 개발방법론이며, 애자일 소프트웨어 개발 중의 하나이다. 스크럼(Scrum)은 소프트웨어 개발 프로젝트를 위하여 고안되었지만, 소프트웨어 유지보수 팀이나 일반적인 프로젝트/프로그램 관리에서도 적용될 수 있다. (출처 : wikipedia) 스크럼(Scrum)이란 원래 럭비에서 반칙으로 경기가 중단된 경우 양 팀의 선수들이 럭비공을 가운데 두고 상대팀을 밀치기 위해 서로 대치해 있는 대형을 말한다. 이처럼 팀이 중심이 되어 개발의 효율성을 높인다는 의미가 내포된 용어로 스크럼은 애자일(Agile) 방법론을 기반으로 한 기법, 방법, 프로세스 라 할 수 있겠다 고객(클라이언트)의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발..