일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 웹 개발
- 개발
- 스프링
- 파이썬
- Spring Boot
- mysql
- rabbitmq
- django
- 자료구조
- 장고
- 데이터베이스
- 자바
- 스프링부트
- node.js
- 파이썬3
- 디자인 패턴
- 보안
- bytecode
- JPA
- java
- db
- 웹
- Spring
- 안드로이드
- python3
- BCI
- HTTP
- ORM
- 스프링 부트
- Python
- Today
- Total
목록개발/Python (19)
semtax의 개발 일지
개요 이번 포스팅에서는 지난 포스팅에서 작성한, 웹소켓 Consumer를 비동기방식으로 바꾸어 보도록 하겠다. 왜 비동기로 바꾸는가? 사실, 기존의 동기방식은 비동기 방식에 비해, I/O가 끝날때 까지 계속 기다려야 하므로 비효율 적이라는 단점이 존재한다. 하지만, 비동기로 작성하는 경우 I/O가 끝나지 않아도 즉시 결과값이 리턴된다. 따라서, I/O과 완료되면 완료된거에 따른 콜백함수가 호출되는 방식으로 진행된다. 때문에, 계속 다른일을 할 수 있어서 더 효율적이게 된다. 이제 동기 방식으로된 코드를 비동기 방식으로 바꾸어 보자. 여담으로, Django ORM은 동기방식으로 작동한다. 예제 chat/consumer.py 를 아래 처럼 수정해준다. from channels.generic.websocket..
개요 이번 포스팅에서는 실제로 Channel 라이브러리를 이용해서 웹 소켓 요청을 처리하는 부분을 작성하도록 하겠습니다. 웹 소켓? 웹 소켓은 말 그대로, 웹 브라우저에서 서버와 계속 연결을 유지하면서 소켓 통신을 할 수 있게 해주는 프로토콜을 의미한다. 주로 채팅 서버나, 연결을 계속 유지하면서 메시지를 받거나 전송해야 하는 곳(Ex : 푸시 알림, 게임)에 많이 쓰인다. 보통, HTTP/S 등으로, 웹소켓을 연결한다는 메시지와 기본적인 세션정보들을 전송하고, 그 이후에 실제 웹소켓으로 통신하는 방식으로 이루어져 있다. 사실, 기존의 http나 ajax 같은것들이 있는데 굳이 웹소켓 같은 것을 써야하나? 라고 생각하는 사람들이 있을 수 도 있다. 하지만, 푸시 알림이나 서버와 계속 연결을 유지하면서 데..
개요 이번 시리즈 에서는, Django에서 웹 소켓을 쓸 수 있게 해주는 라이브러리인 Channels을 이용해서 채팅서버를 만들어보는 예제를 만들어보도록 하겠습니다. Channels? Channels 공식 홈페이지에 들어가면 아래와 같은 설명이 나와있습니다. Channels is a project that takes Django and extends its abilities beyond HTTP - to handle WebSockets, chat protocols, IoT protocols, and more. It’s built on a Python specification called ASGI. It does this by taking the core of Django and layering a ful..
소개 이번 포스팅에서는, 장고 프레임워크에서 static 파일들(css, js)의 경로를 지정하는 법에 대해서 알아보도록 하겠다. Static File? 스태틱 파일(Static File)은, 말 그대로 변하지 않는 데이터들을 의미한다. 대표적인 스태틱 파일들로는, 사진, 동영상, css, js 등과 같은 자료들이 있다. 사실 사진이나 동영상 같은 경우에는 static 파일이기는 하지만 크기나 너무 크므로, 이러한 파일들을 저장하는데 특화된 CDN(Content Delivery Network) 서비스들을 이용한다. 물론, 요즘에는 css나 js들도 CDN에 보관하는 경우가 매우 많다. 실제로, 우리가 작성한 예제에서 임포트한 부트스트랩관련 라이브러리, 파일들은 모두 CDN을 통해서 가져왔다. 장고(Dja..
소개 이번 포스팅에서는, CSRF가 무엇인지에 대해 다루고 부가적으로 관리자 기능을 활성화 시키는 법에 대해서도 다루도록 하겠다. 문제점 사실, 지난 포스팅 까지 진행 했던 내용을 그대로 실행시키면 에러가 발생 할 것이다. 에러 메시지를 자세히 보면 CSRF 라는 단어와 403 에러가 뜨면서 뭔가 인증에 실패했다라는 말이 보일 것이다. 이제 CSRF가 무엇인지에 대해 알아보자. CSRF CSRF 공격은 Cross-site request forgery 공격의 약자로, 사용자가 자기 의지와는 상관없이 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 방식으로 수행하는 공격이다. 예를 들어 우리가 제작한 스도쿠 사이트를 예를 들면, 공격자가 아래와 같은 스크립트를 작성하여 공격을 할 수 있는것이다. 클릭하..
소개 이번 포스팅에서는, 지금까지 만든 스도쿠 게임에 랭킹 기능을 추가 해보도록 하겠다. 또한, 프로그램이 재시작 되더라도, 랭킹 기록이 계속 남게 하기 위해 데이터 베이스를 이용하여 랭킹기록을 저장하는 것도 다루도록 하겠다. 데이터 베이스? 데이터 베이스는 쉽게 말하면 데이터를 저장하는 공간이다. 데이터를 어디다 저장하는데? 라고 물어 보면, 아래와 같은 대답을 해줄 수 있다. 메모리 파일 로컬파일 네트워크하고 자기 PC에 분산처리 JSON 표 형식으로 XML 그래프(?!) 저 위에서 언급한 종류 모두 실제로 회사에서 사용하는 데이터베이스 종류이다. 게다가 특히, 가장 많이 쓰이는 데이터 베이스는 관계형 데이터베이스(RDBMS) 라는 종류의 데이터 베이스 이다. 관계형 데이터베이스 라고 하면 어려워 보..
소개 이번 포스팅에서는, 지금까지 작성한 프로젝트에, django template를 생성하고 연동하겠습니다. 또한, javascript로 AJAX를 연동하는 시간도 역시 갖도록 하겠습니다. Django 템플릿? Django에서 템플릿은, HTTP Response를 받아서, 사용자가 보는 화면을 그려주는 역할을 담당한다. 다시 말하면, 템플릿이라는 영어단어 의미 그대로, 출력되는 틀을 정해주는것을 말한다. 쉽게 생각해보면 붕어빵 틀 같은것을 생각해보면 된다. 대신 Django는 웹 프레임워크이기 때문에, 붕어빵 대신에, HTML이나, JSON을 만들어준다고 생각하면 된다. 또한, django에서는 이러한 view를 그려주는 템플릿 언어라는것을 지원한다. 그 중에서 특히 가장 많이 쓰는것이, Jinja2 엔..
소개 이번 포스팅에서는, 지난 포스팅에서 작성한 sudoku api와 django view를 연동해보는 시간을 갖도록 하겠습니다. 코드 작성 먼저 sudoku 폴더의 views.py를 열어서, 아래와 같이 코드를 작성 하도록 하겠습니다. 첫번째로, views.py 의 make_sudoku 함수 입니다. from django.http import HttpResponse, JsonResponse from .models import Ranking import json def index(request): return HttpResponse("index page") def ranking(request): return HttpResponse("ranking view page") def get_ranking_list..