일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 트라이
- CleanCode
- 가사 검색
- 카카오 인턴
- 알고리즘
- pycon
- 티스토리
- bulk update
- 프로그래머스
- 보행자 천국
- 트라이 #trie #알고리즘
- trie
- Tistory
- Python
- Spring Boot
- Open API
- 불량 사용자
- 징검다리 건너기
- 호텔 방 배정
- 티스토리 open api
- 크레인 인형뽑기 게임
- jdbc
- 튜플
- Today
- Total
목록Django(장고) (19)
택시짱의 개발 노트
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bznLDt/btruHxvigkT/GMLZV1WmsQkV2t4EduBqU1/img.png)
1편 - django 토이 프로젝트에 git action, code cov 적용해보기 (회고 느낌) - 1 오늘은 docker-compose를 이용하여 비동기 아키텍처를 구성해 보려고 합니다. (celery + rabbitmq + flower) 먼저 개념들에 대해 간단하게 알아보고 가시죠 비동기란? 비동기 방식은 현재 작업의 응답과 다음 작업의 요청이 동시에 진행되지 않아도 되는 것으로 응답에 관계없이 바로 다음 동작이 실행되는 것 celery란? celery는 분산 메시지 전달에 기반한 비동기 작업 queue로써 별도로 실행 중인 Worker Process가 Broker로부터 Message를 전달 받아 작업을 대신 수행해 주는 라이브러리이다. rabbitmq란? RabbitMQ는 AMQP(Advance..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NHdcU/btrscN0Zzs7/CmfilCh8NnVzoRIWkZYGik/img.png)
토이프로젝트 시작 이유로는 회사를 다니면서 배운 기술( django code 작성법, test code, CI, elasticsearch, swagger 등등..)을 복습 및 잊어 버리지 않기 위해 시작하게 되었다. 토이 프로젝트는 간단한 API를 설계 하였고 API를 혼자 설계 및 테스트하면 재미가 없기 때문에 나의 api를 사용해줄 android 개발자도 섭외 했다. ( 아래는 현재 진행 중인 토이 프로젝트 github 링크 ) https://github.com/taxijjang/django_shopping_mall_api_project GitHub - taxijjang/django_shopping_mall_api_project: django로 쇼핑몰 API 프로젝트 django로 쇼핑몰 API 프로..
29.1 유틸리티들을 위한 코어 앱 만들기 조금이라도 연관이 있는 앱 하나를 찾아 그곳에 무작위로 유틸리티들을 무작위로 넣었다가는 훗날 유틸리티가 필요할때 찾기 어려운 상황에 봉착할 수 있다. 프로젝트 전반에 걸쳐 쓰이는 함수들과 객체들을 넣어 두는 코어(core)라는 장고 앱을 이용하여 유틸리티들을 보관한다. 예를들어 여러 앱에서 공통으로 이용하는 커스텀 모델 매니저와 custom view mixin 등등 core/ __init__.py # 커스텀 모델 매니저 포함 models.py views.py # 커스텀 뷰 믹스인 포함 - 이때 코어 앱의 구조는 일반 장고 앱의 구성을 따르는게 좋다. 코어 앱 안에 위치한 커스텀 모델 매니저나 뷰의 믹스인을 임포는하는 것은 다른 일반 장고앱을 임포트하는 방법과 같..
비동기 태스크 큐(asynchronous task queue)란 태스크가 실행되는 시점이 태스크가 생성되는 시점과 다르고 태스크의 생성 순서와도 연관 없이 실행되는 작업을 의미한다. 💡 - 태스크 큐 vs 비동기 태스크 큐 장고에서는 이 두가지 비동기 태스크 큐를 의미한다. 장고를 다루면서 태스크 큐(task queue)를 썼다면 일반적으로 이는 비동기 태스크 큐를 의미한다. 브로커(broker) 태스크들이 보관되어 있는 장소. 데이터를 지속적으로 보관할 수 있는 도구라면 무엇이든지 이용할 수 있으나 장고에서는 RabbitMQ와 Redis가 가장 일반적으로 쓰인다. 프로듀서(producer) 나중에 실행될 태스크를 큐에 넣는 코드. 장고 프로젝트를 구성하는 애플리케이션 코드다. 워커(wocker) 태스크..
24.1 정말 (성능이란 것이) 신경 쓸 만한 일일까? 서툰 최적화는 오히려 해가 될 수 있다. 사이트가 아직 종소규모이고 페이지 로딩 속도에 문제가 없다면 이 장을 건너 뛰어도 무방하다. 24.2 쿼리로 무거워진 페이지의 속도 개선 느리게 반응하는 쿼리 때문에 생긴 문제를 해결하는 방안을 다룰 예정 ( 링크 참조 ) 24.2.1 django-debug-toolbar를 이용하여 문제가 되는 쿼리 찾아내기 django-debug-toolbar를 이용하면 쿼리의 출처를 대부분 찾아낼 수 있다. 아래와 같은 병목구간 또한 발견할 수 있다. 페이지에서 중복된 쿼리들 예상한 것보다 많은 양의 쿼리를 호출하는 ORM 호출( call ) 느린 쿼리 여러분의 장고 프로젝트에서 대강 어느 URL부터 해볼지 머릿속에 감이..
장고가 다른 프레임워크에 비교해서 장점은 바로바로 "어드민" 19.1 어드민 기능은 최종 사용자를 위한 것이 아니다 장고 어드민은 사이트 관리자를 위한 기능이지, 최종 사용자를 위한 기능은 아니다. 19.2 어드민 기능의 커스터마이징 대 새로운 뷰 기능 일반적으로 장고의 어드민 기능은 깊은 수준까지 커스터마이징할 필요가 없다. 고객을 위한 고객용 관리 대시보드를 구현하는 것이 어드민 기능을 수정하는 것보다 항상 고객의 요구를 더 충족 시킨다. 19.3 객체의 이름 보여 주기 모든 장고 모델에 대해서 항상 str()메서드를 구현하자. from django.db import models class IceCreamBar(models.Model): name = models.CharField() shell = m..
18장. 장고 코어 모듈을 고체할 때 주의점 장고 코어 부분을 자신만의 것으로 교체했다고 자랑하는 경우가 있는데 굳이 "그럴 필요가 없다" BUT 아래와 같은 경우에는 교체를 할 만한 가치가 있다. 일부 또는 모든 장고 서드 파티 패키지를 포기할 수 있다면 장고 어드민의 강력한 기능을 포기해도 문제가 없다면 장고의 기능을 기반으로 프로젝트를 제작하기 위해 이미 부단히 노력했으나 더는 해결할 수 없는 거대한 장벽에 부딪혔을 때 문제의 원인을 찾기 위해 코드 분석을 끝냈을 경우, 예를 들면 템플릿에서 쿼리를 줄이기 위한 작업을 다했을 경우 캐잇과 비정규화 등 가능한 모든 옵션을 다 고려했을 경우 많은 사용자가 이용하는 상용으로 서비스 중인 프로젝트인 경우, 다시 말해 성급하게 최적화하는 단계가 아닌 경우 S..
왜? 회사에서 현재 순수 Django를 이용해서 웹서비스를 제공하고 있는데. 회사가 점점 성장하면서 하나의 Django project에서 FE, BE 코드 개발을 계속 이어 나가는게 부담스러워 지고 있어 FE, BE를 분리하려고 하고 있는 상황이다. 이때 FE는 vue를 이용하고, BE는 그대로 Django를 이용할 예정인데 이때 Django에서 가장 유명한 django rest framework를 이용하여 FE와 통신할 API를 리팩토링 하면 좋겠다고 생각했다. License에 대한 고민 근데 drf는 open source라 회사에서 수익 창출을 위해 사용하는 즉 상업적인 목적으로 이용할때 license를 생각하지 않을수 없기에.. https://www.django-rest-framework.org/#..