일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- racecondition
- DjangoRestFramework
- Git
- EC2
- database
- 코루틴
- Coroutine
- aws
- 백준
- CI
- dry-yasg
- aggregate
- Transaction
- F객체
- CD
- django
- to_attr
- Python
- annotate
- docker
- QuerySet
- nestedfunction
- DjangoCache
- Prefetch_related
- DRF
- apitestcase
- Continuous Delivery
- 도커
- Continuous Deployment
- testcase
- Today
- Total
목록분류 전체보기 (68)
BackEnd King KY

✔️ 문제 문제 출처 : https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net ✔️ 첫 풀이 n = int(input()) x = n//3 y = n//5 vl = [] for i in range(x+1): for j in range(y+1): if 3*i + 5*j == n: vl.append(i+j) if vl: print(min(vl)) else: print(-1) 처음에 3x+5y=n 이라는 방정식을 중점으로 생각했었습니다. 그래서 x가 될 수 있는 최..

✔️Intro 백엔드 개발자 채용공고에서 빠질 수 없는 문구가 있습니다 바로 "RESTful API 기반 설계"입니다. 저 역시 위코드에서 프로젝트를 하기 위해 RESTful API에 대해 배웠습니다. 저희 회사의 경우, 일부 URL이 RESTful API의 규칙에 조금 맞지 않는 게 있어서 수정이 필요한 상황이었으며 회사 사수분이 RESTful API에 대한 지식을 넓힐 수 있는 방법으로 이 책을 추천해주셨습니다. ✔️기본배경 제가 위코드에서 배웠던 RESTful API 규칙은 크게 아래 다섯가지입니다. url은 페이지 기준이 아닌 자원 기준으로 작성한다. 동사로 작성하지 않는다. HTTP Method를 정의하기 때문에 url에 add, search 같은 걸 쓰지 않는다. 검색 키워드는 body를 통해..

기본세팅이 되었으니, 채팅을 할 수 있는 방을 만들어보겠습니다. chat/templates/chat에 room.html 파일을 생성하고 코드는 아래와같이 입력합니다. {{ room_name|json_script:"room-name" }} 만든 html을 불러올 수 있게 views.py에도 로직을 짜야겠죠? views.py에 아래와 같이 입력해줍니다. def room(request, room_name): return render(request, 'chat/room.html', { 'room_name': room_name }) 그 다음, 요청을 보낼 수 있게 URL을 설정해야 합니다. from django.urls import path from . import views urlpatterns = [ path..

✔️Intro 이전 포스팅인 WSGI & ASGI에서 동기/비동기에 대해 알아봤는데, 바로 이걸 위한 빌드업이었습니다. Django Channels란, 비동기 형태의 view를 제공하며, HTTP뿐만 아니라 기간 연결이 필요한 프로토콜(WebSocket, MQTT, 챗봇 등)도 처리할 수 있습니다. 공식문서를 참고하여 한 번 구현해보겠습니다. ✔️Install 아래 명령어를 입력하여, Channels를 설치해줍니다. python -m pip install -U channels 그다음 settings.py의 INSTALLED_APPS에 channels를 추가해줍니다. INSTALLED_APPS = [ 'django.contrib.auth', ... 'channels' ] 추가되었다면, asgi.py에 ap..

✔️Intro 코로나가 정말 기승입니다. 저희 회사는 1주일동안 재택근무로 전환되었습니다. 인생 첫 재택근무인데 편하긴 하네요 허허 이번 포스팅에선 Django 프로젝트를 시작하면 보이는 wsgi/asgi부터 비동기구현까지 해볼 예정입니다. ✔️웹 서버 웹 서버는 웹 브라우저의 정적 요청과 동적 요청을 처리하는 서버입니다. 대표적인 웹 서버에는 Apache, Nginx 등이 있습니다. Django는 Nginx가 잘 어울리며, 저희 회사에서도 Nginx를 사용하고 있습니다. 그리고 서버에 요청할 때, 정적 페이지와 동적 페이지에 요청을 합니다. 정적페이지에 대해 쉽게 설명하자면 css, js, jpg같은 파일을 요청하는 걸 정적페이지 요청이라고 합니다. 그리고 응답이 수시로 바뀌는 요청을 동적 페이지 요청..

✔️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 스레드가 동시에 작동할 수 없게됩니다. 둘 중 하..

✔️Intro 오늘은 제가 위코드 초기 때, 제 머리를 아프게 했던 CORS에 대한 내용입니다. 출처로 Mozilla와 PyPi 를 참고하였습니다. ✔️Cross Origin Resource Sharing CORS의 풀네임이며, 의미로는 추가 HTTP헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 알려주는 브라우저 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(Origin)와 다를 때 교차 출처 HTTP 요청을 실행합니다. 제가 겪은 실제 사례를 예로 들자면, 위코드에서 프로젝트를 앞두고 프론트엔드-백엔드 통신을 하는 세션이 있었습니다. 프론트엔드는 리액트를 사용하였고, fetch함수에 제가 설정한 URL로 요청을 보냈는데 Cr..