분류 전체보기

    [Django, Vue]Django + Vue 연동하기 1 - Front end

    지난번 포스팅에서 Djagno CRUD 서버를 만들었으니 이제 Vue를 이용하여 프론트 화면을 만들고, 장고 서버로 CRUD 기능을 요청하는 프론트 작업을 해볼 것이다. Vue 설치하기 Vue를 이용하는 방법에는 크게 두가지가 존재한다. CDN 방식 : 프로토 타이핑또는 학습 목적이라면 아래와 같은 코드를 html에 포함하여 최신 버전의 vue를 이용할 수 있다. NPM install 방식 : Vue를 사용하여 대규모 애플리케이션을 구축할 때 NPM을 이용한 설치가 권장된다. # 최신 안정화 버전 $ sudo npm install -g @vue/cli Vue CLI는 Vue.js 프로젝트 생성을 돕는 vue 공식 CLI 다. 이것을 이용해 vue 명령어를 사용할 수 있고 프로젝트를 생성하거나 관리를 할 ..

    [백준]1436번 영화감독 숌 - 완전 탐색

    https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net n = int(input()) cnt = 0 check = 666 while True: if '666' in str(check): cnt += 1 if cnt == n: print(check) break check += 1 코드 설명 가장 작은 수는 666이 되기 때문에 초기값을 666으로 한 cehck 변수를 설정하여 준다. check 값을 1씩 증가시켜가면서 666이라는 값이 들어있을 경우에..

    [Django]REST API CRUD Server 만들기 2 - DRF

    지난번 포스팅을 통하여 API Server 를 만들기 위한 준비를 전부 하였다. 이제부터는 Serializer를 활용하여 데이터를 주고 받을 수 있는 페이지를 만들어 볼 것이다. Serializer 생성 # app이름/serializer.py 생성 from rest_framework import serializers # serializer import from .models import User # 선언한 모델 import class UserSerializer(serializers.ModelSerializer): class Meta: model = User # 모델 설정 fields = ('id', 'username', 'age', 'city') # 필드 설정 Serializer를 위해 app의 하위 폴..

    [Django]REST API CRUD Server 만들기 1 - DRF

    지난 포스팅에서 Django + Nginx + Gunicorn 을 연동하였으니 이제는 장고의 Rest Framework 를 이용해 간단하게 CRUD 할 수 있는 API Server를 만들어 볼 것이다. 우선 장고의 Rest Framework 에 대해 알아보자. django-rest-framework 공식 Documentation -> www.django-rest-framework.org Django REST Framwork (DRF) DRF란 Django 안에서 RESTful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리(프레임워크)이다. DRF 사용 이유 웹 브라우저 API는 범용성이 큼, 개발을 쉽게 만들어 줌 ORM & non-ORM 에 대해 모두 Serialization 기능을..

    [WAS, WSGI, CGI]WAS, WSGI, CGI 란?

    WAS (Web Applicaiton Server) WAS는 웹서버가 동적으로 가능하면 WAS이다. 즉, Webserver + CGI 가 WAS 라는 소리이다. CGI (Common Gateway Interface) 웹 서버에서 애플리케이션을 작동시키기 위한 인터페이스다. 정적인 웹서버를 동적으로 만들기 위해 등장하였다. 서버 프로그램과 외부 프로그램간의 인터페이스가 CGI 라고 볼 수 있다. WSGI (Web Server Gateway Interface) 파이썬에서 애플리케이션(파이썬 스크립트)이 웹 서버와 통신하기 위한 인터페이스이다. Django, Flask와 같은 것이 WSGI 를 지원하는 웹 애플리케이션이다. WSGI Server (Middleware) Web server와 WSGI를 지원하는 ..

    [Django]Django + Nginx + Gunicorn 연동하기 2

    지난번 시간에 Django + Gunicorn 을 연동하였으니 이제는 Nginx 도 붙여 하나의 서비스를 하기 위한 준비들을 해볼 것이다. 먼저 Nginx의 특징을 간단하게 알아보고 설치를 진행할 것이다. Nginx 란? Nginx 웹서버는 러시아의 이고르 시셰프가 개발한 무료 오픈소스 웹서버 소프트웨어다. 가벼움과 높은 성능을 목표로 하고 웹서버, 리버스 프록시, 메일프록시등의 기능을 가지고 있다. Nginx 특징 기존의 웹서버(Apache)는 하나의 쓰레드에서 하나의 클라이언트를 처리함 -> 정보를 읽고 쓰고 가공하는데 지연시간이 존재 Single Thread 기반으로 context switching 을 하지 않음 Nginx는 이벤트 지향 아키텍처(Event-driven Architecture) 방식..

    [백준]1018번 체스판 다시 칠하기 - 완전 탐색

    https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net n, m = map(int, input().split()) chess = [[0] * m for i in range(n)] for i in range(n): chess[i] = list(input()) change = 32 # 가장 최대로 많이 바꾸는 경우 for i in range(n): for j in range(m): if i + 8

    [Django]Django + Nginx + Gunicorn 연동하기 1

    저번 포스팅에서는 가상환경 설정과 그 위에 Django 를 설치하였다. 이번에는 Django, Nginx, Gunicorn 을 서로 연동하는 작업을 해볼 것이다. Gunicorn 사용 이유 "Django의 내장서버 (runserver)는 실서비스에 부적합하다" Django 에는 개발용으로 runserver 라는 내장 서버를 탑재하고 있다. 실제 서비스를 하기 전에 개발을 하면서 이용하게 되는 서버이다. 특징 중 하나는 소스코드의 수정이 이루어지면 이를 detect 하여 바뀐 것이 있을 경우 서버를 reload 하게 된다. 하지만 실제 서비스를 하기에 성능상의 한계, 보안 등 다양한 문제점이 존재해 was + wsgi 조합(Nginx + Gunicorn)을 사용하게 된다. Django.core.server..

    [백준]7568번 덩치 - 완전 탐색

    n = int(input()) person = [[0] * 2 for i in range(n)] answer = [1] * n # 순위 카운트 for i in range(n): person[i][0], person[i][1] = map(int, input().split()) for i in range(n): for j in range(n): if person[i][0] < person[j][0] and person[i][1] < person[j][1]: # 자신보다 키 몸무게 클 경우에만 answer[i] += 1 # 카운트를 함 for i in range(n): print(answer[i] , end=' ') # 출력 코드 설명 몸무게와 키를 저장하기 위한 person, 순위를 매기기 위한 answer..

    [백준]2231번 분해합 - 완전 탐색

    n = int(input()) for i in range(1, n + 1): a = list(str(i)) if i + sum(map(int, a)) == n: print(i) break if i == n: print(0) 코드 설명 반복문은 1부터 n 까지 진행한다. 입력을 받을때 숫자를 분해시켜 저장하기 위해 str() 로 변환후 list() 함수를 이용한다. 만약 본래의 숫자 + 분해시켜 저장한 숫자의 합이 n 과 같다면 그 수를 출력시키고 종료한다. 마지막 반복인 i == n 이 될 경우에는 생성자가 없으므로 0을 출력한다. Point : 숫자를 분해하는 작업을 위해 list 형으로의 변환이 필요하다. 또한 1부터 반복되기에 조건을 만족하면 그것이 바로 가장 작은 생성자가 된다.