본문 바로가기

wecode/TIL 정리36

Django TIL - 2. Select Related, Prefetch Related 중요한 개념이고, 위코드 2차 프로젝트를 진행하면서 쿼리 시간 단축을 위한 여러 방법들을 사용하다보니 이 개념에 대한 이해가 너무 부족했다는 점을 알게 되었다. Select Related와 Prefetch Related 두 방법 모두 관계를 통해서 여러개의 테이블에 있는 데이터들을 사용할 수 있도록 하는 방법들이다. 나중에 까먹더라도 이 포스트보면 다시 기억할 수 있도록 작성해봐야겠다. Select Related? SQL 문법 중 Join을 실시하는 Django의 ORM이다. 일반적인 Many to One 또는 One to One 관계의 외래키 컬럼을 사용해서 참조관계에 있는 테이블을 지정한다. 정참조 관계에 있는 테이블에 사용한다. 사용하면 Join을 완료한 데이터를 DB로 부터 가져온다. 하나의 쿼리.. 2020. 9. 17.
자료구조 TIL - 4. Tree Tree의 개념 선형적인 관계의 데이터가 아닌 계층적인 관계를 가진 데이터를 저장하고 다루기 위한 자료구조의 하나 ex) 회사의 인사조직 데이터, OS의 파일 시스템 구조 등등 데이터가 부모 - 자식 관계의 계층적 구조로 표현이 된다. 대표적인 형태 이진 트리 - 부모 노드가 가진 자식 노드가 2개를 넘지 않는 형태의 트리 일반 트리 - 이진 트리와 다르게 자식 노드의 갯수에 제한이 없는 형태의 트리 Tree에서 사용하는 용어 노드(Node) - 트리 구조를 이루는 기본적인 요소 루트 노드(Root Node) - 트리의 시작점이 되는 노드 부모 노드(Parent Node) - 자식 노드들과 연결되고, Level이 1 작은 노드를 해당 자식 노드의 부모 노드라고 말함. 자식 노드(Children Node).. 2020. 9. 3.
Django TIL - 1. Unit Test Testing Pyramid 피라미드를 나누고 있는 각각의 요소가 특정 테스트 방법 E2E > python manage.py test Creating test database for alias 'default'... System check identified no issues (0 silenced). .. ---------------------------------------------------------------------- Ran 2 tests in 0.664s OK Destroying test database for alias 'default'... tests.py 코드 분석 일단 일련의 테스트 과정에서 사용할 데이터 세트를 미리 선언한 후에 테스트에 사용했다. user App에 구현한 회원가입.. 2020. 8. 22.
자료구조 TIL - 3. Stack, Queue Stack 기본적이고 잘 알려진 자료구조 순서를 가진 데이터를 저장하는데에 사용할 수 있다. Stack의 가장 대표적인 특성인 LIFO(Last In First Out) 가장 마지막에 입력된 값이 가장 먼저 출력된다. 이 특성으로 인해서 특정한 목적에 따라서 사용하는 편. Stack에 데이터를 입력하는 동작을 Push, 데이터를 출력하는 동작을 Pop라고 부른다. 읽은 데이터는 Stack에서 삭제한다. 파이썬에서는 List라는 Stack를 사용하기에 아주 적당한 자료형이 존재한다. 예전에 C를 쓸때에는 Stack의 특성을 구현한 함수들을 꼭 써야 했는데, 파이썬에서는 pop(), append()라는 내장 메소드를 통해서 간단하게 Stack를 구현해서 사용할 수 있다. ####################.. 2020. 8. 22.
자료구조 TIL - 2. Set, Dictionary, Hash Set Array나 List와 같은 순열 자료구조(Collection) 단, 순서의 개념이 존재하지 않음 Set를 사용하면 좋은 상황 중복된 값을 골라내야 할 때 빠른 Look up을 수행해야 할 때 순서가 상관 없을 때 특징 데이터를 비순차적으로 저장할 수 있는 순열 자료구조 삽입(Insertion) 순서대로 저장되지 않음, 특정한 순서를 기대할 수 없는 자료구조 수정이 가능합(Mutable) 같은 값을 여러번 입력할 수 없다. 여러번 입력할 경우 하나의 값만 저장 Fast Lookup이 필요할 때 주로 사용됨 Set의 구조 요소들이 저장될 때의 순서는 Hash를 통해서 정해진다. 저장할 요소의 Hash 값을 구한다. 해쉬값에 해당하는 공간(Bucket)에 값을 저장한다. 순서가 없다는 것은 Index.. 2020. 8. 12.
위코드 Foundation - Bcrypt, JWT 테스트 Bcrypt 현재 진행 중인 파이썬 장고 기반의 백엔드 서버 개발에서 사용하기로 결정한 함수 pip를 사용해서 설치를 진행했다. -> Conda 환경에서 뭔가 에러가 나는데 뭐가 문제인지는 추후 알아볼 것 ex) pip3 install bcrypt # bcrypt_test.py import bcrypt#모듈 임포트 password = 'password1234' hash_pw = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())# 해시 진행 input_pw = 'password1234' wrong_pw = 'password123' if bcrypt.checkpw(input_pw.encode('utf-8'), hash_pw):# checkpw는 bcryp.. 2020. 8. 12.
위코드 Foundation - 인증과 인가 인증과 인가 인증과 인가는 API에서 가장 자주 구현하는 기능이다. Private한 API는 물론이고, Public한 API에서도 기본적인 인증과 인가 과정을 요구 인증(Authentication) 인증이란 사용자의 Identification을 확인하는 일련의 절차 로그인 절차가 인증과정에 해당된다. 유저의 아이디와 비밀번호를 만든다. 만든 아이디와 비밀번호를 DB에 저장하는데 이때 비밀번호의 경우 암호화를 진행한 후 저장한다. 이후 유저가 로그인을 위해서 아이디와 비밀번호를 입력한다. 입력된 아이디와 비밀번호를 DB에 저장된 데이터와 비교, 이때에도 입력받은 비밀번호는 암호화 후 비교 일치하면 로그인 성공으로 판단 클라이언트로 Access Token을 전달 유저는 로그인에 성공한 이후에는 Access .. 2020. 8. 11.
위코드 Pre Course - Django 개념과 흐름 Django란? MVC/MVT 패턴의 웹 서비스의 백 레이어를 구성하는 웹 프레임워크 MVC/MVT 패턴? Model - 데이터와 관련된 모든 것 또는 데이터 자체를 다루는 요소 View - 어떻게 사용자에게 데이터를 보여줄지를 다루는 요소 Control/Template - Model과 View를 제어하는 요소 Django의 구조 Model - MVC 패턴의 Model 역할 Django 프로젝트의 models.py 소스의 로직이 역할을 함 View - MVC 패컨의 View 역할 Django 프로젝트의 views.py 소스의 로직이 역할을 함 Template - MVC 패턴의 Controller 역할 이 부분은 프론트엔드의 영역이라고 볼 수 있을 것 같다. Django의 특징? App라는 기능으로 구분할.. 2020. 8. 8.
위코드 Foundation - HTTP RESTful API의 기본 REpresentational State Tranfer - REST 웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식 보통 GET과 POST만 사용하는 편이다. "리소스를 어떻게 한다."의 구조를 깔끔하게 표현해내는 것을 말한다. RESTful API의 장점 Self-Descriptiveness 가 가장 명확한 장점 해당 API에 대한 설명을 API를 사용하는 방법으로 사용하는 것 API 자체만 봐도 해당 API의 목적을 쉽게 이해할 수 있다. RESTful API를 개발할 때 유의점 /(slash)는 계층 관계를 나타낼 때 사용한다. URI에 _(underscore)는 주로 포함하지 않고 영어 대문자보다는 소문자를 쓰는 편이고, 긴.. 2020. 8. 8.