전체 글

읽기 쉬운 코드를 짜기 위해 노력합니다. 좋은 코드는 단순하고 이해하기 쉬워야 한다고 생각합니다.
해당 글은 DRF를 사용하는 사람의 관점에서 적었습니다. 다른 프레임 워크와 다를 경우가 있습니다프론트와 네트워크 관련 내용 정리1. request 관련 내용https://doit-dodu.tistory.com/entry/Request-%EA%B4%80%EB%A0%A8-%EB%82%B4%EC%9A%A9 Request 관련 내용DRF 중심의 내용입니다! 혹시 다른 프레임워크는 다를 수 있습니다 url을 통한 파라미터를 통해서 값 들을 받는 방법get을 통해서는 단일 값을 받고 getlist를 통해서는 같은 키 값을 통해서 리스트doit-dodu.tistory.com
· Django/utils
구글 맵으로 lat, lng를 받아 올 일이 있어서 구현해본 API입니다 def edit_place_coord(request, place_id): place = get_object_or_404(Place, id=place_id) if request.method == 'POST': lat = request.POST.get('lat') lng = request.POST.get('lng') if lat and lng: place.coord = f'POINT({lng} {lat})' # PointField 형식으로 변환 place.save() # return redirect('place_detail', plac..
구글 맵으로 해당 lat, lng를 받아 올 일이 있어서 구현해봤습니다 {{ place.name }} - 위치 수정 주소: {{place.address}} {% csrf_token %} 위도: 경도: 저장
· Django/orm
회사에서 비정규화를 할 일이 있었는데 데이터가 10만건이 넘어서 실 서버에 db히트 하는 만큼 성능에 신경을 써야됬습니다.그래서 쿼리를 불러 올 때 가장 빠르게 처리하는 방식이 무엇일 지 궁금해졌습니다.count(), annotate(Count()), len(prefetch)를 떠올렸고 비교해 봤습니다.count().count()의 경우 db에서 count를 해서 가져오는 방법입니다db에서 연산을 끝낸 후 가져오는 만큼 cpu와 메모리에는 부담이 없습니다. .count()는 일단 조건을 사용 할 수  없습니다. 연관 된 모든 객체를 count하기 때문에 soft delete된 것이나 filter 조건을 넣을 수 없습니다. soft 삭제를 구현하고 있는 테이블이라 필터 조건이 필요한 만큼 사용 할 수는 없..
처리율 제한 규칙domain: authdescriptors: - key: auth_type Value: login rate_limit: unit: minute requests_per_unit: 5 상세 설계 그림클라이언트가 요청을 보내면 먼저 처리율 제한 미들웨어를 통하고 제한 규칙을 캐시에서 가져온다(빈번한 요청이 생김으로 캐시에 보관)처리율 제한이 걸리면 429 too many requests, 아니면 API 서버로 동작 분산 환경에서 구현단일 서버의 경우는 쉽겠지만 여러 대의 서버와 병렬 스레드의 경우 경쟁조건과 동기화의 문제가 있다경쟁 조건위와 같이 병행성이 심한 경우에서 경쟁 조건 이슈가 발생한다해결 방안으로1. 락을 건다(시스템 성능을 상당히 ..
네트워크 시스템에서 처리율 제한장치는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치이다특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한한다사용자는 초당 2회 이상 새 글을 올릴 수 없다.같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없다.같은 디바이스로는 주당 5회 이상 리워드를 요청할 수 없다.이점DoS 공격에 의한 자원 고갈을 방지비용 절감서버 과부하를 막는다설계클라이언트와 API 서버 사이에 처율을 체크하는 장치를 둔다 처리율 제한 알고리즘 종류토큰 버킷누출 버킷고정 윈도 카운터이동 윈도 로그이동 윈도 카운터1. 토큰 버킷 알고리즘간단하여 이해도가 높고 많은 기업들이 보편적으로 사용토큰 버킷은 지정된 용량을 갖는 컨테이너, 사전에 설정된 양의 토큰이 버킷에 ..
· Django/orm
update_or_createDjango orm을 다루며 객체가 있으면 객체로 불러와서 사용하고 없으면 create를 해서 사용하려고 하는데 create 시 필수 값을 넣어줘야 했습니다. 그래서 if 문을 통해 분기를 하면 코드가 길어져 가독성이 떨어졌습니다.그래서 다른 방법이 있나 찾다가 update_or_create를 발견했습니다. Django의 update_or_create 메소드는 객체를 업데이트하거나 존재하지 않으면 생성하는 작업을 간편하게 처리할 수 있는 메소드입니다.update_or_create(defaults=None, **kwargs) defaults: 객체를 생성하거나 업데이트할 때 사용될 필드와 값을 포함하는 사전(dict).**kwargs: 객체를 조회할 때 사용할 필터 조건을 키워..
Spring BootSpring Boot는 Java 기반의 오픈 소스 프레임워크로, 신속하고 간편하게 독립 실행형의 프로덕션급 스프링 애플리케이션을 만들 수 있도록 도와줍니다. Spring Boot를 사용하면 복잡한 설정을 최소화하고, 개발에 집중할 수 있어 생산성을 극대화할 수 있습니다. 이번 글에서는 Spring Boot의 주요 특징과 장점에 대해 알아보겠습니다.주요 특징1. 내장 서버Spring Boot는 Tomcat, Jetty, Undertow와 같은 내장 서버를 제공하여, 별도의 서버 설정 없이도 애플리케이션을 실행할 수 있습니다. 이를 통해 개발 환경 설정이 간소화되고, 배포 과정이 더욱 쉬워집니다.2. 자동 설정Spring Boot는 다양한 스타터 패키지를 제공하며, 이를 통해 필요한 의존..
두잇 두두
두두 DB