일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Prefetch_related
- DjangoCache
- 백준
- nestedfunction
- QuerySet
- database
- annotate
- docker
- to_attr
- 도커
- Continuous Delivery
- Transaction
- 코루틴
- Continuous Deployment
- CD
- aws
- F객체
- aggregate
- EC2
- CI
- Git
- apitestcase
- dry-yasg
- testcase
- racecondition
- django
- Python
- DjangoRestFramework
- DRF
- Coroutine
- Today
- Total
목록django (12)
BackEnd King KY

EC2 인스턴스 Pull받기 EC2 생성도 했으니, 제 프로젝트를 서버로 띄어보겠습니다. 티스토리가 보기 불편할 경우, Github에서 보실 수 있습니다. 생성된 EC2에서 연결을 누르면 인스턴스의 연결이 모달로 나옵니다. 저는 독립 실행형 SSH 클라이언트를 선택했습니다. Continue Connecting 물음에는 yes 입력 후 연결합니다. 그러면 이렇게 화면이 전환되는데, 이걸 확인하셨으면 접속이 잘 된 것입니다. 제 프로젝트를 Clone 받기 위해 아래 명령어를 입력합니다. sudo yum update -y sudo yum install git -y -y는 update, install 과정에서 발생하는 모든 질문에 대해 yes라고 응답하겠다는 의미입니다. 그리고 clone을 받으면 이렇게 프로젝..

DRF APITestCase Django에서 기본적으로 TestCase를 이용해 테스트를 할 수 있도록 제공하는 Unit Test가 있지만, DRF에서는 그에 상응하는(?) 기능으로 APITestCase가 있습니다. 사용해보니, Django에서 제공하는 기본적인 단위테스트와는 동일합니다. View 우선, 테스트를 하기 위해 View로직을 알아야 합니다. API는 영화리스트 조회(MovieListView), 특정 영화조회(MovieDetailView) 두 개가 있습니다. 여기선 MovieListView의 테스트 경우만 보겠습니다. MovieListView Test 영화 리스트의 경우, 위의 이미지같은 형태로 나오게 됩니다. 그러면 테스트 코드 역시, 값을 비교할 때 위와 같은 형태가 나와야 한다는 의미입니..

✔️Cache 웹 사이트를 이용해보며 한 번쯤은 캐시라는 단어에 대해 들어보셨을 겁니다. 저 역시 개발자가 되기 이전에도 캐시에 저장한다 같은 말은 들어봤었고, 개발자가 되어 직접 사용할 일이 생겼습니다. 그래서 공부할 겸 포스팅도 진행하게 되었습니다. 캐시란 데이터나 값을 미리 복사해 놓는 임시 장소를 말합니다. 기존의 데이터에 접근하는 데 시간이 오래 걸릴 경우 값을 미리 복사해 놓으면 더 빠르게 계산이나 접근 시간을 줄여줄 수 있다는 장점이 있습니다. 이 부분은 장고 캐시 공식문서에 아래와 같이 나와 있습니다. Each time a user requests a page, the web server makes all sorts of calculations – from database queries t..

✔️경쟁조건 Race Condition을 번역하면 경쟁조건이라는 말이 됩니다. 경쟁조건이란 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과 값에 영향을 줄 수 있는 상태를 말합니다. 조회수를 예로 들어보겠습니다. 현재 조회수는 1입니다. 만약 A라는 스레드와 B라는 스레드가 동시에 클릭을 한다면? 이론 상 조회수는 3이 되어야 하지만 그렇지 않습니다. A, B 모두 기존의 조회수는 1이었으므로 조회수가 2가 됩니다. 이렇게 타이밍이나 순서에 결과 값에 영향을 주는 이런 상황을 경쟁 조건이 발생했다고 하는 것 입니다. 그래서 이 상황을 피하기 위해 사용하는 것이 트랜잭션입니다. 트랜잭션을 설정하면 ACID의 I에 해당하는 고립성의 특징때문에 A, B 스레드가 동시에 작동할 수 없게됩니다. 둘 중 하..

✔️What is Indexing? 위키백과에 따르면, 인덱싱이란 테이블에 대한 동작 속도를 높여주는 자료 구조를 일컫는 말입니다. 인덱스는 테이블 내의 1개의 컬럼 혹은 여러 개의 컬럼을 이용하여 생성될 수 있습니다. 고속 검색뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공합니다. 인덱스를 저장하는 데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작습니다. 왜냐하면 보통 인덱스는 키-필드만 갖고 잇고, 테이블의 다른 세부 항목들은 갖고 있지 않기 때문입니다. 그래서 인덱스로 지정된 컬럼에 대해 조회를 할 때 별도로 저장된 디스크에서 먼저 찾고 저장된 실제 테이블로 찾아갑니다. 말 그대로 목차 그 자체라고 볼 수 있습니다. 책에서 목차를 통해 원하는..

✔️ Intro Django는 비밀번호 관리를 위해 다양한 기능들을 제공합니다. 오늘은 어떻게 Django가 비밀번호를 저장하는지, 어떻게 스토리지 해싱을 구성하는지 알아보겠습니다. 그리고 해쉬화된 비밀번호와 함께 작동하는 유용한 기능들에 알아보겠습니다. 모든 출처는 공식문서입니다. ✔️ How Django stores passwords Django는 능동적인 비밀번호 저장 시스템을 제공하며, 기본적으로는 PBKDF2라는 걸 기본옵션으로 사용합니다. PBKDF2는 암호화 함수 중 하나입니다. 일단 지금은 저장 시스템 중 하나로 PBKDF2라는 걸 사용하는구나 정도로 알고 계시면 될 것 같습니다. Django auth에서 제공하는 기본적인 User 모델의 비밀번호는 아래와 같은 형태를 보입니다. $$$ ..

✔️ ACID RDBMS는 트랜잭션의 기능을 보장할 수 있도록 ACID라고 하는 4가지 성질을 제공합니다. A : 원자성(Atomicity) 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력입니다. 아마 트랜잭션에서 가장 많이 드는 예시 중 하나인 계좌이체로 예시를 들겠습니다. 계좌이체는 성공할 수도, 실패할 수도 있지만 보내는 쪽에서 돈을 빼오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안됩니다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것입니다. 즉, 트랜잭션의 작업들이 데이터베이스에 모두 반영되던가 아니면 아예 반영이 안된다는 뜻입니다. C : 일관성(Consistency) 트랜잭션이 성공적으로 완료되면 언제나 일관성있는 ..

Intro 객체지향을 공부하실 때 다형성은 많이 들어보셨을겁니다. 이 다형성이라는 단어를 영어로 바꾸면 바로 Polymorphic이 됩니다. 정확한 단어는 phism인데, 이 부분은 유도리있게 넘기도록 하겠습니다. 하나의 객체가 여러 가지 타입을 가질 수 있다는 뜻인데, 요즘 이 부분에서 문제가 생겨서 작업에 들어갈 예정입니다. 그래서 미리 공부할 겸 포스팅하게 되었습니다. 모든 출처는 공식문서입니다. Polymorphic Start! 첫 번째로, django-polymorphic을 설치해줍니다. pip install django-polymorphic 두 번째로, settings.py의 INSTALLED_APPS에 설치한 polymorphic을 추가해줍니다. INSTALLED_APPS = [ ..., "..