분류 전체보기
-
GraphQL이란?웹 2019. 9. 13. 20:07
GraphQL은 facebook에서 만든 Graph Query Language로 어플리케이션 레이어 쿼리 언어입니다. 다시 말해서 API를 위한 쿼리 언어이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임입니다. GraphQL은 특정한 데이터베이스나 스토리지에 귀속되어 있지 않으며 기존 코드와 데이터에 의해 대체됩니다.GraphQL은 기존에 사용하고 있는 REST API의 한계점을 극복하고자 나온 통신 규약으로 REST API를 대체할 수 있습니다. 아래에서 REST API의 한계점과 GraphQL이 무엇인지 설명합니다.REST API의 한계REST API의 개념을 간단하게 말하자면 모든 Resource들을 하나의 Endpoint에 연결하고 연결된 Endpoint는 Resource와 관련된 내..
-
[Python] 행렬의 곱셈언어/파이썬 & 장고 2019. 9. 12. 21:55
먼저 행렬을 곱하기 위해서는 앞 행렬의 열의 수와 뒤 행렬의 행의 수가 같아야 됩니다. 이러한 조건이 맞다면 행렬의 곱셈의 결과 크기는 (앞 행렬의 행의 수)×(뒤 행렬의 열의 수)가 됩니다. 즉, 앞 행렬이 m X n 이고 뒤 행렬이 n X r 인 경우 곱은 m X r 크기의 행렬이 됩니다.예를 들어, 2x2 행렬의 곱은 아래와 같습니다.이를 식으로 표현하면 아래와 같습니다.따라서 행렬의 곱셈의 복잡도는 O(n^3)입니다.아래는 복잡도 O(n^3)의 행렬의 곱셈을 구하는 파이썬 코드입니다.def solution(arr1, arr2): answer = [] for i in range(0, len(arr1)): temp_row = [] for j in range(0, len(arr2[0])): value ..
-
[Postman] Mock Server / API Documentation 만들기IDE & 에디터 2019. 9. 12. 20:45
예전부터 postman을 사용하여 만든 api를 호출하고 테스트 해왔는데 생각보다 기능들이 많고 손쉽게 만들 수 있어서 아래와 같이 정리를 합니다. 여기서 설명할 내용은 mock server와 api 문서를 만드는 방법입니다. mock server를 만들면서 api 문서화를 같이 진행할 수 있고 그 반대의 경우도 가능하므로 개발자에게 아주 편리한 기능을 제공합니다.1. Mock server 생성하기이미지의 좌측 상단에 있는 New 버튼을 누르면 팝업이 뜨는데 여기서 Mock Server를 눌러줍니다. 누르면 다음 화면이 위와 같이 나오는데 Request Path 부분에 경로를 입력하면 우측 하단의 Next가 활성화가 됩니다. 위에서 지정한 Request Path는 나중에 수정이 가능하므로 일단 test라..
-
[Django] Custom order by 정의하기언어/파이썬 & 장고 2019. 9. 12. 19:42
이전에 PostgreSQL에서 사용자가 원하는 정렬을 하는 로직을 정리했습니다. (https://brownbears.tistory.com/384) 여기서는 Djago ORM을 이용하여 사용자가 원하는 order by를 하는 방법을 설명합니다. PostgreSQL 9.5 이상의 버전이라면 array_position 을 사용해 손쉽게 사용자가 원하는 정렬을 할 수 있지만 Django ORM은 해당 기능을 지원하지 않기 때문에 Case문을 사용해 정의합니다.from django.db.models import Case, Q # 아래의 pk 순서대로 정렬하고자 함 pk_list = [2, 10, 1] preserved = Case(*[When(pk=pk, then=pos) for pos, pk in enumera..
-
데몬(Daemon), 배치(Batch)란?서버 2019. 9. 1. 20:53
배치(Batch)란?배치는 일반 프로세스의 일종으로 일련의 작업을 지정한 특정 시간에 실행합니다. 지정한 시간 이후에는 자원을 거의 소비하지 않는 것이 특징입니다.데몬(Deamon)이란?특정 서비스를 위해 백그라운드 상태에서 계속 실행되는 서버 프로세스입니다. 일반적으로 각 서비스가 사용하는 port를 관리하는 관리하는 데몬이 존재합니다. 데몬은 서버가 부팅될 때 메모리에 로딩이 되고 서버가 죽을 때까지 계속 자원을 할당받고 있습니다. 데몬은 서버가 죽을 때까지 자원을 점유하고 있는 형태여서 많은 데몬이 실행된다면 자원 소비가 큽니다.윈도우에서는 데몬을 서비스라 부릅니다.
-
[Python] 소수 구하기 (에라토스테네스의 체)언어/파이썬 & 장고 2019. 9. 1. 20:32
소수란 1과 자기 자신만을 가지는 정수입니다. 소수를 구하는 알고리즘은 많지만 여기서 설명하는 알고리즘은 에라토스테네스의 체라고 불리는 알고리즘입니다. 에라토스테네스는 고대 그리스의 수학자로서 마치 체로 걸러 내는 것처럼 수를 걸러 낸다고 하여 에라토스테네스의 체라고 부릅니다.이 방법은 아주 단순하지만 소수를 구하는데 효과적인 방법입니다.원리숫자 1 ~ 120 범위 안에 있는 소수를 모두 계산한다고 가정합니다.1은 소수도, 합성수도 아닌 기초수이기 때문에 1을 제거합니다. 2는 소수이므로 2를 다른 곳에 기록합니다.자기 자신(2)를 제외한 2의 배수를 모두 지웁니다.남아있는 수에서 2 다음인 수인 3부터 진행을 시작합니다.3은 소수이므로 2를 기록한 곳에 기록합니다.자기 자신(3)을 제외한 3의 배수를 ..
-
[Python] 반올림 만들기 (오사오입, 반올림 오류 해결하기)언어/파이썬 & 장고 2019. 8. 31. 22:09
파이썬에서 반올림은 보통 아래와 같이 구현합니다. round(0.6) # 1 round(2.4) # 2 round()에 대해 찾아보면 자세한 내용이 있지만 간단하게 우리가 아는 반올림은 사사오입이라고도 불리며 파이썬의 round()는 통계적인 반올림의 결과를 반환합니다. 이 때문에 나오는 결과에 대해서 오사오입 원칙이라고도 하는데 이를 설명하면 반올림 대상의 값이 5이고, 반올림 대상의 앞자리의 숫자가 짝수면 내림, 홀수면 올림을 진행합니다. round(4.5) # 4 round(0.5) # 0 round(5.5) # 6 round(1.5) # 2 위 예시처럼 4.5는 반올림 대상의 앞자리가 짝수이므로 내림이 되었고 5.5에서는 5가 홀수이므로 올림이 되었습니다. 이러한 규칙을 모르고 반올림을 구한다면 ..
-
[Django] Migration 기능언어/파이썬 & 장고 2019. 8. 31. 21:27
장고의 명령어 중, migrate, makemigrations 와 같은 명령어가 있습니다. 이러한 명령어는 models.py에 정의된 모델의 생성/변경 내역을 히스토리 관리, 데이터베이스에 적용 등과 같은 기능을 제공하여 손쉽게 데이터베이스의 구조를 바꿀 수 있습니다.Migration 관련 명령어# 마이그레이션 파일 생성 $ python manage.py makemigrations # 마이그레이션 적용 $ python manage.py migrate # 마이그레이션 적용 현황 $ python manage.py showmigrations # 지정 마이그레이션의 SQL 내역 python manage.py sqlmigrate makemigrations$ python manage.py makemigrations..
-
[Django] Custom FilterSet (FilterSet으로 복잡한 쿼리 실행하기)언어/파이썬 & 장고 2019. 8. 31. 20:34
Django FilterSet 라이브러리는 GET 요청을 받고 쿼리 파라미터를 제어하는 기능을 제공합니다.아래는 기본적으로 filterset을 사용한 예제입니다.http://127.0.0.1:8000/test?name=kim class NameFilter(filters.FilterSet): name = django_filters.CharFilter( name='name', lookup_expr='icontains' ) 만약 위와 같은 구조가 아닌 여러 컬럼에 접근해야 한다면 아래와 같이 method를 지정하여 처리를 하도록 합니다.http://127.0.0.1:8000/test?name=kim class NameFilter(filters.FilterSet): name = django_filters.Cha..
-
서버 인증 (JWT)보안 & 보안 2019. 8. 17. 20:33
JWT JWT(Json Web Token)은 토큰 기반 인증 방식으로, 사용자의 세션 상태를 저장하는 게 아니라 필요한 정보를 토큰 body에 저장해 사용자가 가지고 있고 그것을 증명서처럼 사용합니다. 사용자는 Access Token(JWT Token)을 헤더에 실어 서버로 보내게 됩니다. 토큰을 만들기 위해서는 Header, Payload, Verify Signature가 필요합니다. Header: Header, Payload, Verify Signature 정보를 암호화할 방식(alg), 타입(type) 등이 들어감 JWT인 토큰의 유형이나 HMAC SHA256 또는 RSA와 같이 사용되는 해시 알고리즘이 무엇으로 사용했는지 등 정보가 담김 Payload : 서버에서 보낼 데이터가 들어감. 일반적으로..