분류 전체보기

    Gunicorn에 대해 알아보자.

    gunicorn은 WSGI의 일종이다. 그렇다면 WSGI는 무엇일까? 1. WSGI란? WSGI는 Web Server Gateway Interface의 약자입니다. 여러 언어 사용자들의 다양한 요청을 이해할 수 있도록 이를 공통된 규칙으로 변환하는 관문 역할을 한다. 즉 웹서버와 애플리케이션 서버 간의 게이트웨이트 역할을 하는 인터페이스이다. 필자가 이해한대로 풀어쓴다면 Web Server(ex. nginx)로 요청이 온 Http request를 WSGI가 Application Server(Django)가 이해할 수 있도록 데이터 형식을 변환하고 응답할 때도 반대로 변환하는 역할을 맡는다. 초기에는 이런 게이트웨이의 역할로 CGI를 썼지만 이는 요청이 들어올 때마다 파이썬 스크립트를 처음부터 실행하게 되..

    [Python] GIL이 뭐죠?

    오늘 면접 보다가 GIL 관련 얘기가 나왔다. 이름은 들어봤다. 보기도 봤고, 하지만 설명할 수 없었다. 그럼 모르는 거지.... GIL이 뭔지 파헤쳐보자. 1. GIL이란? GIL은 Global Interpreter Lock의 약자이다. 이게 뭔고 하니 Python 문서에서 살펴보니 다음과 같이 설명한다. In CPython, the global interpreter lock, or GIL, is a mutex that protects access to Python objects, preventing multiple threads from executing Python bytecodes at once. Python 개체에 대한 엑세스를 보호하며 여러 스레드가 Python 바이트 코드를 한 번에 실행하는..

    [Pytest] - TestRunner 설정하기

    Pycharm에서 Debuging을 하기 위해 mange.py 에서 test를 실행할 때 pytest로 돌리고 싶었다. 물론 Pycharm 설정에서 test runner를 설정하는 방법도 있지만 다양한 IDE에서 같은 설정으로 하고 싶어서 찾던 중 testrunner를 변경하는 방법을 찾았다. 자세한 문서는 여기 FAQ — pytest-django documentation © Copyright 2022, Andreas Pelme and contributors. Revision 42b7db2f. pytest-django.readthedocs.io Pycharm에서 디버깅을 해봤다. 잘된다.

    [Pytest] - django-dotenv 와 pytest-dotenv 오류

    1. 문제 상황 테스트 코드를 짜 보려고 pytest를 설치했다. 근데 해당 테스트 코드를 실행하는 도중 예기치 못한 문제를 맞닥뜨렸다. django-dotenv와 pytest-dotenv의 naming conflict가 발생했다. 해당 글에서 댓글에는 이렇게 적혀있다. Warning to Django Users: If you're using django-dotenv to call dotenv.read_dotenv() from your manage.py module, this library will break it. This library requires python-dotenv, which also uses the 'dotenv' namespace, and you'll end up a ModuleNot..

    [모두의 네트워크] 20장 네트워크 주소와 브로드캐스트 주소의 구조

    컴퓨터에 할당할 수 없는 IP 주소인 네트워크 주소와 브로드캐스트 주소에 대해 알아본다. 1. 네트워크 주소와 브로드캐스트 주소란? 이 두 주소는 특별한 주소로 컴퓨터나 라우터가 자신의 IP로 사용하면 안 된다. 네트워크 주소는 호스트 ID가 10진수로 0이고, 2진수면 00000000인 주소이다. 또한 브로드캐스트 주소는 호스트 ID가 10진수로 255고, 2진수면 11111111인 주소이다. 2. 쓰임새 2.1 네트워크 주소의 쓰임새 네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별하는 데 사용된다. 호스트 ID가 10진수로 0이면 그 네트워크 전체를 대표하는 주소가 된다. 즉 전체 네트워크의 대표 주소라고 생각하면 된다. 2.2 브로드 캐스트 주소의 쓰임새 네트워크에 있는 컴퓨터나 장비 모두에..

    Django Queryset - Method annotate, aggregate, alias 살펴보기(1)

    Django에서 지원하는 다양한 QuerySet Method를 살펴보고자 한다. 1. annotate() 1.1 개요 Queryset의 각 개체에 제공된 query 표현식 목록을 annotate로 표시한다. 표현식은 단순한 값, 모델의 필드(또는 관련 모델)에 대한 참조 또는 집계 표현식(Avg, Sum, Count) 일 수 있다. annotate()에 대한 각 인수는 반환되는 QuerySet의 각 개체(중요하다. aggregate와의 차이점)에 추가된다. 즉 keyword 인수로 지정하면 그 key를 가지고 value를 가져올 수 있다. 예를 들어 >>> from django.db.models import Count >>> q = Blog.objects.annotate(Count('entry')) # ..

    [DRF] - Serializers Class 알아보기(1)

    DRF의 다양한 Serializers Class를 알아보겠다. 공식문서를 바탕으로 이 포스팅은 작성되었다. 1. Declaring Serializers 공식 문서의 예제를 살펴보자 from datetime import datetime class Comment: def __init__(self, email, content, created=None): self.email = email self.content = content self.created = created or datetime.now() comment = Comment(email='leila@example.com', content='foo bar') 우선 직렬화할 모델과 개체를 선언했다. 그리고 이걸 Serializer Class로 선언해보자. f..

    Lv.2 - 예상 대진표

    정답률 60% 짜리 문제이다. 문제 읽으면서 떠오르는 대로 코드를 짰다. 문제는 여기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 요구사항 분석 N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다..

    [DRF - Django Rest Framework] Serializer Field 톺아보기(3)

    오늘은 Composite Fields를 살펴보겠다. Composite Fields 1.1 ListField 개체 리스트의 유효성을 검사하는 필드 클래스이다. 이해한 바로는 List를 반환해주고 그 안의 개체들이 선언한 필드인지 아닌지 유효성 검사를 한다. 인수는 다음과 같다 child - 목록에서 개체의 유효성을 검사하는 데 사용되는 필드 인스턴스이다. 설정하지 않으면 개체의 유효성이 검사되지 않는다. allow_empty - 말 그대로 빈 리스트를 허용할지 말지를 설정한다. min_length - 최소 개수를 설정한다. max_length - 최대 개수를 설정한다. 코드를 살펴보자. 예제는 해당 사이트에서 가져왔다. # import serializer from rest_framework from res..

    [탐색 알고리즘] - DFS 이해하기

    코테를 하면서 dfs랑 bfs를 이해하기가 좀 어려웠다. 그래도 머리가 좀 굵어져서인지 최근에는 코테 문제를 풀면서 dfs를 어느 정도 활용할 수 있게 되었다. 오늘 이 시간에는 dfs에 대해 이해하면서 코테 사이트에서 본 문제를 예제 삼아 어떻게 풀었는지에 대해 흐름을 따라가고자 한다. 1. DFS 1.1 정의 탐색 알고리즘 종류 중의 하나이다. Depth First Search. 줄여서 DFS로 불리며 우리나라 말로는 '깊이 우선 탐색'으로 표기할 수 있다. 말 그대로 탐색 시 깊숙이 들어가서 우선 탐색한다. 1.2 구현 일반적으로 재귀호출을 사용하여 구현하지만, 단순한 스택 배열로 구현하기도 한다. 갈림길이 나타날 때마다 '다른 길이 있다'는 정보만 기록하면서 자신이 지나간 길을 지워나간다. 그러다..