전체 글

오늘은 장고 REST Framework에서 swagger를 통해 API를 문서화 해보자. 먼저 drf-ysag에 대한 문서는 아래의 링크를 통해 이동할 수 있다. 상세한 정보를 원한다면 공식 문서를 활용하자. https://drf-yasg.readthedocs.io/en/stable/ drf-yasg — drf-yasg 1.21.7 documentation © Copyright 2018, Cristi V. Revision db42d356. drf-yasg.readthedocs.io install 가상환경을 활성화 하고 install 하자. pip install -U drf-yasg settings.py settings.py에 다음이 추가되어야 한다. INSTALLED_APPS = [ ... 'django..
· Database
데이터베이스 데이터베이스는 조직에 필요한 정보를 얻기 위해서 논리적으로 연관된 데이터들을 모아 구조적으로 통합해둔 것을 말한다. 즉 데이터베이스는 여러사람이 공용으로 사용하기 위해서 통합하고, 저장한 운영 데이터의 집합을 말한다. 데이터베이스 시스템(DBMS) 데이터베이스 시스템은 각 조직에서 사용하던 데이터를 통합하고 공유할 때 생기는 장점을 이용하는 시스템이다. 데이터베이스 시스템은 아래 세가지로 구성된다. DBMS: 사용자와 데이터베이스를 연결하는 소프트웨어 데이터베이스: 데이터를 모아둔 집합 데이터모델: 데이터 저장 기법 관용적으로 데이터베이스 시스템을 DBMS라 표현하기도 한다. 정보 처리 기술의 발전 현재까지 정보 처리 기술의 발정 양상 예시를 살펴보자. 시기 단계 정보통신 기술 특징 1970..
· Compiler
컴파일러를 만든다면 한땀한땀...직접 코드를 넣어야 하는걸까? N개의 언어를 사용할 수 있고, M개의 컴퓨터에서 동작하게 하려면 우리는 NxM개의 컴파일러를 작성해야 한다. 완전 무리..! 하지만 우리에게는 컴파일러 자동화 도구, 컴파일러 생성기가 있습니다. (컴파일러의 컴파일러) 컴파일러 생성기는 컴파일러의 전 과정이나 각 단계를 자동 생성하는 도구들을 말한다. 컴파일러 생성기 컴파일러 생성기는 목적 기계에 대한 기계 표현을 입력으로 받아서 하나의 컴파일러를 출력하게 된다. 이렇게 출력된 컴파일러는 소스 프로그램을 입력으로 받아 목적 기계의 코드로 번역하는 컴파일러이다. Lexical Analyser Generator 어휘 분석기 생성기는 어휘분석기를 자동생성하는 도구이다. 토큰에 대한 표현을 입력으로..
· Compiler
컴파일러는 고급 언어로 쓰인 프로그램을 어떤 특정 컴퓨터에서 직접 실행이 가능한 형태의 프로그램으로 번역해주는 컴퓨터 프로그램이다. 일반 컴파일러 구조 컴파일러의 일반적인 구조는 다음과 같이 생겼다. 크게 프론트 앤드와 백앤드로 나눌 수 있다 프론트앤드: 소스 언어에 의존하는 부분으로, 소스 프로그램을 분석하고, 중간 코드를 생성한다. 백엔드: 목적 기계에 의존하는 부분으로, 중간 코드를 특정 기계를 위한 목적 코드로 번역한다. 프론트앤드 프론트앤드는 언어에 의존하므로, 각 언어마다 하나씩 필요하다. 기계에 비하면 언어의 문법이 명확히 정의되어있기 때문에 프론트앤드는 잘 정립되어있는 부분이다. 프론트앤드의 기능에 대해 살펴보자면, 프론트앤드의 역할은 소스 프로그램을 읽어들이고, 어휘분석, 구문 분석을 통..
· Compiler
번역기 번역기란 하나의 프로그래밍 언어로 작성된 프로그램을 입력으로 받아 동등한 의미를 갖는 다른 프로그래밍 언어로 된 프로그램을 출력하는 시스템 프로그램을 말한다. 여기서 입력되는 프로그램을 소스 프로그램이라 하고, 출력되는 프로그램을 목적 프로그램(목적 언어로 작성된)이라 한다. 번역기의 종류 번역기는 입력과 출력 프로그램에 따라 여러 종류로 나뉘게 된다. Preprocessor 프리프로세서의 경우 #include같은 지시문이 있는 경우 이를 처리해 확장된 프로그램을 출력한다. 따라서 이 경우에는 소스와 목적 프로그램의 언어가 모두 고급 언어가 된다. 여기서 "확장"은 매크로 처리 기능, 조건부 컴파일 기능(Conditional Compile), 헤더파일이 포함된 파일 포함 기능(File includ..
오늘은 파이썬을 통해 완전 탐색을 하는 방법에 대해 알아본다. 완전 탐색의 방법으로 단순한 brute force와, 순열의 활용, BFS/DFSk에 대해서 알아본다. Brute Force for문과 if문을 활용하여 모든 가능한 경우를 검사하는 방법이다. 코테에서 brute force는 사실 많이 나오는 풀이방법은 아니지만, 풀이 과정에서 간단하게 활용할 수 있다. 순열의 활용 파이썬으로 순열을 사용하는 방법은 아래의 포스팅에 소개되어있다. https://he-kate1130.tistory.com/70 [python] "코테"를 위한 기초 파이썬 (5) - 순열, 조합, 중복 순열, 중복 조합 파이썬에서는 iterpools라이브러리에서 순열과 조합, 중복 순열과 중복 조합에 대한 메서드를 제공하고 있다...
이분탐색 문제에 대해 알아보자. Binary Search 이분탐색은 기본적으로 탐색하려는 대상이 정렬되어있다는것이 가정된다. 즉, 정렬된 상태의 데이터를 효율적으로 탐색하기 위한 방법이다. 탐색 대상 리스트의 가장 중간지점을 확인하고, 타겟이되는 값이 오른쪽, 왼쪽에 있을지 판단하여 점차 탐색대상을 절반으로 줄여나간다. 이분탐색의 시간 복잡도는 O(logN)이다. 기존의 순차탐색이 O(N)임 기억한다면 정렬된 상태에서는 이분탐색을 활용하는것으로 상당히 빠르게 문제를 해결할 수 있다는 것을 알 수 있다. 만약 이분탐색을 사용하고자 한다면, 먼저 정렬된 데이터인지 꼭 확인 후에 탐색해야 한다. 정렬되어있지 않다면 경우에 따라 순차탐색과 같은 다른 방법이 더 효율적일 수 있다. def binarySearch(..
파이썬에서는 iterpools라이브러리에서 순열과 조합, 중복 순열과 중복 조합에 대한 메서드를 제공하고 있다. 라이브러리의 코드가 직접 구현실행하는 것 보다 몇배는 빠르기 때문에 숙지하고, 탐색 알고리즘 등에 활용하도록 하자. 순열 permutation from itertools import permutations my_List = [1,2,3,4,5] for _,elements in enumerate(permutations(my_List,2)): print(elements) #(1, 2) #(1, 3) # ... #(5, 3) #(5, 4) 중복 순열 product from itertools import product list_1 = [1,2,3] list_2 = '45' # list_1과 list_..
mingyung
KATE.log