Programming-[Backend] (421) 썸네일형 리스트형 파이썬 itertools.groupby 주의사항. 키가 연속으로 붙어있어야함 조회해온 객체를 같은 키값을 가진 것끼리 묶어서 그루핑하고 로직을 처리할려고 파이썬의 itertools.groupby를 사용 grouped_students = groupby(students, key=lambda x: (x.school, x.grade)) 학생들을 학교, 학년별로 묶음 그런데 잘 작동하지 않아 확인해보니, itertools의 groupby는 순회하면서 하나씩 비교하기 때문에 key값이 같은 요소들끼리 연속적으로 붙어있어야 정상 동작함 sorted(students, key=lambda x: (x.school, x.grade)) 로 먼저 정렬 후 groupby를 적용해야함 패킷분석 - Wireshark 강의 정리(+ Fiddler 간단히만) 배경 User(ex. Chrome) -> Kernel -> Network Interface Card(NIC) -> H/W 구조로 패킷이 전송된다. 패킷은 Frame으로 둘러싸여있으며, 최대용량 MTUrk 1500 바이트 정도가 일반적이다. Kernel에서 NIC로 넘어가는 곳에 Filter가 있고 특별한 역할을 하지 않는 경우 Sensor로써 그냥 패킷이 거쳐가는 역할을 한다. Wireshark는 이 Sensor에 쌓이는 정보들을 Npcap을 활용하여 로그에 대한 검색 등의 각종 기능을 제공한다. 패킷은 1500 바이트씩 엄청나게 많으므로 이 내용들을 검색해주는 기능이 핵심이다 Wireshark은 2개의 filter를 갖고 있으며, 1개는 패킷 수집용 필터, 1개는 검색 등을 위한 디스플레이 필터이다 예.. Django nested Serializer update 시 선언되지 않은 field 문제 1. 문제점 부모 - 자식의 구조를 갖는 Nested된 Serializer 구조를 사용했는데, update 메서드를 Django에서 지원하지 않는다고 하면서 아래 같은 에러 메시지가 뜬다. AssertionError: The `.update()` method does not support writable nested fields by default. Write an explicit `.update()` method for serializer `...`, or set `read_only=True` on nested serializer fields. 2. 해결 방안 필드를 사용할 때 반드시 Model에서 역참조로 related_name 값으로 정의한 이름으로 사용해주어야 한다. School : People .. 국가별, 언어별 코드 표준: ISO 3166-1, ISO639-1, Accept-Language header 국가별 코드는 두 자리수로 표기하고, ISO 3166-1을 따른다. https://www.iso.org/iso-3166-country-codes.html ISO - ISO 3166 — Country Codes Avoid confusion when referring to countries and their subdivisions with this standard. www.iso.org 언어별 코드는 ISO 639-1을 따른다. 그리고 브라우저에서 제공하는 Accept-Language값은 이 ISO 639-1을 따른다. https://www.iso.org/iso-639-language-code ISO - ISO 639 — Language code Describe languages in an internati.. Stream 방식의 이해: RTSP, RTMP, HLS, WCS(Web Call Server), CCTV 접속 방식 1. Stream의 다양한 프로토콜 정리는 참조 페이지에 잘 나와있다! https://jee00609.github.io/live%20stream/Live-Stream/ 데이터 인터넷에서 실시간 Stream 영상을 보는 것은 일반적인 간단한 데이터를 주고 받는 것이 아니라 실시간으로 전송되는 바이너리 데이터를 기반으로 이루어진다. 그리고 이 바이너리 데이터는 보통 '영상' 부분과 '오디오' 부분이 분리되어서 전송된다. 그러면 이걸 받는 쪽에서 합쳐서(Muxing) 타임라인에 맞게 영상-오디오를 동기화해서 재생하는 방식이다. 프로토콜 HTTP 같은 규약을 통해서 이루어지는 것이 아니라 RTSP(Real-Time Streaming Protocol), RTMP(Real-Time Messaging Protocol.. reverse relationship: _set 호출 시 get_ 메서드에서 N+1 발생 문제 reverse relationship을 가진 속성값을 _set을 통해서 호출할 때, get_ 메서드에서 N+1 문제가 발생했다. 해결 예를 들면 아래 예시 코드에서, student_set을 통해 Related Manager로 set을 불러올 때 .all()을 사용하면 안되고 .first()등으로 특정 로우를 한정해야한다. 그렇지 않으면 여러 개의 School -> 여러 개의 Student가 호출되면서 N+1 문제가 필연적으로 발생한다. class SchoolListSerializer(serializers.ModelSerializer): latest_student_name = serializers.SerializerMethodField() def get_latest_student_name(self, .. API Throughput, health check fail: async 요청이 한 번에 많이 들어올 때 문제 및 원인 특정 컨테이너의 health check가 주기적으로 fail이 발생했다. 다행히 운영환경은 아니고 테스트 환경이였는데, 로그를 추적해보니 클라이언트 쪽에서 비동기 요청을 한 번에 10개 가량 요청하여(10개 이상/ 1초) 서버에 요청 처리가 쌓인 상태에서 /health 로 헬스 체크가 들어오면 헬스 체크에 실패하는 상황이였다. 문제는 헬스 체크 실패 시 해당 컨테이너를 재시작하는 설정이 적용되어 있어서 컨테이너가 죽다보니 클라이언트에서도 문제가 있다고 알려주었다. 그리고 monitoring 툴인 Pixie로 HTTP 지연을 관찰했을 때 순간적으로 지연이 엄청 늘어나는 것을 볼 수 있었다. 해결 및 원리 1. gunicorn worker, thread 개수 늘리기 파이썬은 인터프리터로 싱글 .. Decorator 개념과 적용, @wraps Decorator decorator는 함수를 파라미터로 받아서 그 함수를 실행하면서 다른 기능들을 실행할 수 있도록 해주는 패턴이다. 여기서 다른 기능들이란 인자로 받는 함수의 실행 전, 후로 로그인, try-catch문 등 반복적으로 수행되는 작업을 의미한다. 참조1의 예시가 가장 이해하기 좋고 일반적인 예제인것 같다. decorator_exam 메서드에서 인자로 받아오는 함수 func를 내부 함수 decorator_func에서 다른 기능들과 함께 실행한 후 리턴하도록 만들어준다. 그러면 @decorator_exam을 위에 써준 함수들을 실행했을 때, 해당 기능이 작동한다. def decorator_exam(func): def decorator_func(): print('함수 시작') func() pr.. 이전 1 ··· 11 12 13 14 15 16 17 ··· 53 다음