분류 전체보기
-
Git: pull strategy(전략, 종류)git 2021. 5. 23. 10:14
git pull이란? 다른 레포지토리 또는 로컬 브랜치를 가져와서 통합하는 것이다. 쉽게 말하면 git pull은 git fetch 후 git merge하는 것이다. git pull = git fetch + git merge 실제로 git pull에 대한 도움말을 보면 git pull --help DESCRIPTION Incorporates changes from a remote repository into the current branch. In its default mode, git pull is shorthand for git fetch followed by git merge FETCH_HEAD. 원격 저장소의 변화들을 현재 브랜치로 통합한다. git pull은 git fetch와 git merge..
-
ASGI(Asyncronous Server Gateway Interface)란?파이썬/Etc. 2021. 5. 8. 15:43
WSGI가 나오게 된 동기 파이썬은 현재 다양한 웹 애플리케이션(django, flask, fast api 등)을 자랑한다. 그러나, 이러한 폭 넓은 선택들은 새로운 파이썬 사용자에게 문제가 될 수 있다. 일반적으로 웹 프레임워크를 선택하면 사용가능한 웹 서버의 선택이 제한되고 그 반대도 마찬가지이기 때문이다. 따라서 WSGI는 웹 서버와 웹 프레임워크간의 구현에 구애받지 않는 인터페이스로 만들어져 이식가능한 웹 애플리케이션 개발을 할 수 있다. WSGI의 한계 웹소켓을 사용할 수 없다. wsgi.websocket을 사용할 수 있으나 표준화되지 않았다. HTTP/2(Concurrency) 동시성을 적용할 수 없다. Can't use async and await: 파이썬의 비동기를 사용할 수 없다. 비동기..
-
[Django] RestFramework 페이지네이션 종류파이썬/Django 2021. 5. 5. 23:32
모든 DRF Pagination 추상 클래스 BasePagination을 상속 받는다. 1. PageNumberPagination page_query_param과 page_size_query_param을 사용해서 페이지네이션하는 가장 기본적인 방법 기본적으로 장고의 Paginator를 사용한다. 주어진 쿼리셋에서 [(페이지넘버 - 1) * 페이지사이즈:(페이지넘버 - 1) * 페이지사이즈 + 페이지사이즈] 를 슬라이싱하여 페이지네이션된 쿼리셋을 반환한다. 데이터를 조회할 때 select * from article limit 10 offset 20 같은 식으로 조회를 한다. 따라서 쿼리에서 limit은 페이지사이즈가 되고 offset은 (페이지넘버 -1) * 페이지사이즈 가 된다. 2. LimitOffse..
-
[공부] 파이썬 코딩의 기술 책 정리 #7-3파이썬/책 정리 2021. 4. 21. 12:56
58. 동시성과 Queue를 사용하기 위해 코드를 어떻게 리팩터링 하는지 이해하라. queue 내장 모듈의 Queue 클래스를 사용해 파이프라인을 스레드로 실행하게 구현하는 것이다. 일반적인 접근 방법은 필요한 병렬 I/O의 숫자에 맞춰 미리 정해진 작업자 스레드를 만든다. 프로그램은 이를 통해 자원 사용을 제어하고, 새로운 스레드를 자주 시작하면서 생기는 부가 비용을 덜 수 있다. from queue import Queue class ClosableQueue(Queue): ... in_queue = ClosableQueue() out_queue = ClosableQueue() in_queue에서 원소를 소비하는 스레드를 여러 개 시작할 수 있다. 각 스레드는 game_logic을 호출해 원소를 처리한 ..
-
[공부] 파이썬 코딩의 기술 책 정리 #7-2파이썬/책 정리 2021. 4. 21. 12:38
55. Queue를 사용해 스레드 사이에서 작업을 조율하라 동시성 작업을 처리할 때 가장 유용한 방식은 함수 파이프라인이다. 파이프라인은 순차적으로 실행해야 하는 여러 단계가 있고, 각 단계마다 실행할 구체적인 함수가 정해진다.작업은 매 단계 함수가 완료될 때마다 다음 단계로 전달되며, 더 이상 실행할 단계가 없을 때 끝난다. queue 내장 모듈에 있는 Queue는 새로운 데이터가 나타날 때까지 get 메서드가 블록되게 만들어서 작업자의 바쁜 대기 문제를 해결한다. 큐에 입력 데이터가 들어오기를 기다리는 스레드를 하나 시작한다. from queue import Queue my_queue = Queue() def consumer(): print('소비자 대기') my_queue.get() # 다음에 보여..
-
[공부] 파이썬 코딩의 기술 책 정리 #7-1파이썬/책 정리 2021. 4. 21. 12:34
7. 동시성과 병렬성 동시성 컴퓨터가 같은 시간에 여러 다른 작업을 처리하는 것처럼 보이는 것을 말한다. 동시성은 어떤 특정 유형의 문제를 해결하기 위한 도구로 사용된다. 동시 프로그램은 문제를 해결하는 과정이 동시에 독립적으로 시행되는 것처럼 보이게 한다. 병렬성 같은 시간에 여러 다른 작업을 실쩨로 처리하는 것을 말한다. 병렬성과 동시성의 가장 핵심적인 차이는 속도 향상에 있다. 어떤 프로그램의 서로 다른 두 실행 경로가 병렬적으로 진행되면 걸리는 시간이 반으로 줄어든다. 그러나 동시성 프로그램은 겉으로 볼 때는 병렬적으로 실행되는 것처럼 보이나, 전체 작업에 걸리는 시간은 빨라지지 않는다. 파이썬을 사용하면 다양한 스타일로 동시성 프로그램을 쉽게 작성할 수 있다. 스레드는 상대적으로 적은 양의 동시..
-
[공부] 파이썬 코딩의 기술 책 정리 #6파이썬/책 정리 2021. 4. 7. 14:12
6. 메타클래스와 애트리뷰트 메타클래스는 어렴풋이 이 개념이 클래스를 넘어서는 것임을 암시한다. 메타클래스를 사용하면 파이썬의 class 문을 가로채서 클래스가 정의될 때마다 특별한 동작을 제공할 수 있다. 메타 클래스와 애트리뷰트를 잘 사용하기 위해서는 최소 놀람의 법칙 을 따르고 잘 정해진 관용어로만 사용해야 한다. 최소 놀람의 법칙이란? 함수나 클래스는 다른 프로그래머가 당연하게 여길 만한 동작과 기능을 제공해야 한다는 뜻이다. 44. 세터와 게터 메서드 대신 평법한 애트리뷰트를 사용하라. 클래스에 게터나 세터 메서드를 명시적으로 정의하곤한다. class OldResister: def __init__(self, ohms): self._ohms = ohms def get_ohms(self): retu..
-
[Django] Elastic Beanstalk에 AWS Elasticache Redis 사용하기파이썬/Django 2021. 4. 5. 13:25
Django Elastic Beanstalk 배포 환경에 AWS 레디스를 사용하는 방법을 소개해드리도록 하겠습니다! 1. Redis란?? Redis는 키-값 구조의 저장소로써 리스트, 해시, 셋 등 여러 자료구조를 지원하는 NoSQL입니다. 주로 RDBMS의 캐시 솔루션에 주로 사용됩니다. 자세한 특징은 여기에서 볼 수 있습니다. 2. AWS Elasticache Redis 클러스터 만들기 Elasticache 콘솔에 들어갑니다. Elasticache 대시보드의 Redis에 들어간 후 생성 버튼을 누릅니다. 엔진은 Redis를 사용하고 위치는 Amazon 클라우드를 선택합니다 이름과 설명을 써주시고 노드 유형는 저는 가장 싼 노드인 t2의 micro를 선택했습니다. 복제본은 1-5로 사용자가 알맞게 선택..