2024/05 6

[Django-Ninja] API 문서 Docs 커스텀

Ninja Docs기본적으로 Ninja에서는 가벼운 설정으로 Swagger나 Redoc을 지원하며https://django-ninja.dev/guides/api-docs/ 문서를 관리하기 위한 다양한 부가 기능들이 존재한다.문서 권한 설정문서 숨기기커스텀 태그 (openapi_extra 속성 v1이상 지원)커스텀 Docs 만들기 (링크) 등 도 가능하다. 문서 숨기기기본적으로 /api/openapi.json 을 바탕으로 -> /api/docs 의 문서를 생성해준다. 이를 Production 등에 활용시 다음과 같이 설정하면, url을 감춰준다.from ninja import NinjaAPIapi = NinjaAPI(docs_url=None) 참고 링크https://github.com/vitalik/dja..

[Utils] Python 메모리 프로파일러 (memory_profiler)

배경특정 API를 호출시 계속 서버의 메모리가 폭증하는 현상 발생-> loop 혹은 DB 데이터가 Python 메모리로 불러오는 과정에서 문제가 있을 것으로 생각하고 프로파일링을 통해 원인을 찾아 보기로 하였다. 결과적으로 API에서 비효율적으로 파이썬 메모리를 사용하는 로직을 찾아 수정하여서 해결하였다. memory_profiler  외부 패키지 라이브러리메모리를 개괄적으로 프로파일링 할 수 있는 외부 패키지 라이브러리docs 링크 : https://pypi.org/project/memory-profiler/ memoy-profilerA module for monitoring memory usage of a python programpypi.org 패키지 설치pip install memory_profi..

카테고리 없음 2024.05.05

[디자인패턴] 행동 패턴 - 상태(State) 패턴

상태 (State) 패턴이란State 패턴은 행동 패턴 중 하나로 내부 상태가 변경될 때 객체의 행동을 교체한다. 객체가 상태(값)을 변경하여, 행동의 변화를 유발함으로서 클래스 자체가 변경된 것 처럼도 보일 수 있다.  등장 배경[초안, 검토, 출판본]의 상태를 가진 문서 객체가 있다고 가정할 때, 발행(publish)라는 메서드는 각 상태(State) 마다 다르게 작동할 것이다. 초안: 검토 상태로 변경 검토: 공개 상태로 변경 / 관리자만 가능출판본: 이미 발행되었기에, 아무것도 하지 않음  이 처럼 유한한 범위의 상태를 가지고 있는 프로그램에 상태 변화에 따라 다르게 행동할 수 있도록 설계 되는 것이런 변경(transition)이라고 불리는 원칙은 유한한 범위이고, 미리 결정 되어야 한다.  예시..

[디자인패턴] 행동 패턴 - 전략(Strategy) 패턴

전략 (Strategy) 패턴이란행동 패턴 방법 중 하나로 동일한 레벨의 다양한 알고리즘을 정의 및 캡슐화 하고, 런타임시 동적으로 해당 알고리즘을 선택할 수 있게 하는 디자인 패턴이다. 이로서, 복잡한 알고리즘 내용을 비즈니스 로직에서 분리 하여 감출 수 있고, 클라이언트는 런타임 중 자유롭게 알고리즘을 수행하고 변경 할 수 있다. 등장 배경 예시로여행자들이 목적지 까지 가기 위한, 다양한 방법(대중교통, 차량 등등)에 대해 네비게이션을 통해 볼 수 있다고 가정여행자들은 원하는 방법을 선택할 때 마다, 해당 방법으로 목적지 까지 가는 방법을 보여 줄 수 있다.  예시 구조1. 목적지 까지 가기 위한 전략(알고리즘, Strategy) 들은 다 캡슐화를 한다.ex. RouteStrategy 인터페이스를 상..

[디자인패턴] 행동 패턴 - Command 패턴

Command (커맨드) 패턴이란커맨드 패턴은 행동 패턴 중 하나로, 요청을 요청 정보를 가지고 있는 독립 실행 객체로 전환하는 패턴을 말한다. 이 변환을 통해, 요청을 메서드 파라미터로 넘기거나, 요청의 실행을 지연 또는 큐에 넣기, 되돌리기 기능 등을 지원 가능한 패턴한다. 등장 배경텍스트 에디터 앱 제작시 (좌) 각 버튼들에 공통된 기능이 추가가 필요하다고 가정 (ex. 툴 바를 위한 핸들러)  가장 간단한 방법은 버튼 종류 마다 중복된 코드를 작성하는 것. 해결책비즈니스 로직과 UI 분리 처럼, GUI 객체가 요청을 직접 보내는 대신에, 요청 디테일을 추출하고, 호출되는 객체, 메서드 이름, 파라미터 리스트를 해당 요청을 발생 시키는 분리된 커맨드 클래스로 옮겨 진행.  즉 커맨드 객체는 여러 G..

[디자인패턴] 행동 패턴 - 옵저버 패턴

옵저버 패턴 이란?Observer 패턴은 관찰 중인 개체(주제, subject)에 이벤트가 발생시, 다른 개체들(구독자, observer)에 알리는 메커니즘으로 주제에 변화가 있으면 갱신 내용을 observer에 전달한다. 한 객체의 상태가 바뀌었을 때, 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식은 일(주제)대다(구독자)의 의존성을 가진다고도 정의할 수 있다. 이러한 메커니즘을 구독 메커니즘이라고도 하며, Subject, Observer / Subscriber - Publisher 라고도 많이 지칭한다.기술적인 예시는 메세지 큐(Message Queue) 시스템 활용시 / Event-Driven Systems 등에서 사용 될 수 있다.  특징Subscriber(구독자)와..