분류 전체보기
-
데몬(Daemon), 배치(Batch)란?서버 2019. 9. 1. 20:53
배치(Batch)란?배치는 일반 프로세스의 일종으로 일련의 작업을 지정한 특정 시간에 실행합니다. 지정한 시간 이후에는 자원을 거의 소비하지 않는 것이 특징입니다.데몬(Deamon)이란?특정 서비스를 위해 백그라운드 상태에서 계속 실행되는 서버 프로세스입니다. 일반적으로 각 서비스가 사용하는 port를 관리하는 관리하는 데몬이 존재합니다. 데몬은 서버가 부팅될 때 메모리에 로딩이 되고 서버가 죽을 때까지 계속 자원을 할당받고 있습니다. 데몬은 서버가 죽을 때까지 자원을 점유하고 있는 형태여서 많은 데몬이 실행된다면 자원 소비가 큽니다.윈도우에서는 데몬을 서비스라 부릅니다.
-
[Python] 소수 구하기 (에라토스테네스의 체)언어/파이썬 & 장고 2019. 9. 1. 20:32
소수란 1과 자기 자신만을 가지는 정수입니다. 소수를 구하는 알고리즘은 많지만 여기서 설명하는 알고리즘은 에라토스테네스의 체라고 불리는 알고리즘입니다. 에라토스테네스는 고대 그리스의 수학자로서 마치 체로 걸러 내는 것처럼 수를 걸러 낸다고 하여 에라토스테네스의 체라고 부릅니다.이 방법은 아주 단순하지만 소수를 구하는데 효과적인 방법입니다.원리숫자 1 ~ 120 범위 안에 있는 소수를 모두 계산한다고 가정합니다.1은 소수도, 합성수도 아닌 기초수이기 때문에 1을 제거합니다. 2는 소수이므로 2를 다른 곳에 기록합니다.자기 자신(2)를 제외한 2의 배수를 모두 지웁니다.남아있는 수에서 2 다음인 수인 3부터 진행을 시작합니다.3은 소수이므로 2를 기록한 곳에 기록합니다.자기 자신(3)을 제외한 3의 배수를 ..
-
[Python] 반올림 만들기 (오사오입, 반올림 오류 해결하기)언어/파이썬 & 장고 2019. 8. 31. 22:09
파이썬에서 반올림은 보통 아래와 같이 구현합니다. round(0.6) # 1 round(2.4) # 2 round()에 대해 찾아보면 자세한 내용이 있지만 간단하게 우리가 아는 반올림은 사사오입이라고도 불리며 파이썬의 round()는 통계적인 반올림의 결과를 반환합니다. 이 때문에 나오는 결과에 대해서 오사오입 원칙이라고도 하는데 이를 설명하면 반올림 대상의 값이 5이고, 반올림 대상의 앞자리의 숫자가 짝수면 내림, 홀수면 올림을 진행합니다. round(4.5) # 4 round(0.5) # 0 round(5.5) # 6 round(1.5) # 2 위 예시처럼 4.5는 반올림 대상의 앞자리가 짝수이므로 내림이 되었고 5.5에서는 5가 홀수이므로 올림이 되었습니다. 이러한 규칙을 모르고 반올림을 구한다면 ..
-
[Django] Migration 기능언어/파이썬 & 장고 2019. 8. 31. 21:27
장고의 명령어 중, migrate, makemigrations 와 같은 명령어가 있습니다. 이러한 명령어는 models.py에 정의된 모델의 생성/변경 내역을 히스토리 관리, 데이터베이스에 적용 등과 같은 기능을 제공하여 손쉽게 데이터베이스의 구조를 바꿀 수 있습니다.Migration 관련 명령어# 마이그레이션 파일 생성 $ python manage.py makemigrations # 마이그레이션 적용 $ python manage.py migrate # 마이그레이션 적용 현황 $ python manage.py showmigrations # 지정 마이그레이션의 SQL 내역 python manage.py sqlmigrate makemigrations$ python manage.py makemigrations..
-
[Django] Custom FilterSet (FilterSet으로 복잡한 쿼리 실행하기)언어/파이썬 & 장고 2019. 8. 31. 20:34
Django FilterSet 라이브러리는 GET 요청을 받고 쿼리 파라미터를 제어하는 기능을 제공합니다.아래는 기본적으로 filterset을 사용한 예제입니다.http://127.0.0.1:8000/test?name=kim class NameFilter(filters.FilterSet): name = django_filters.CharFilter( name='name', lookup_expr='icontains' ) 만약 위와 같은 구조가 아닌 여러 컬럼에 접근해야 한다면 아래와 같이 method를 지정하여 처리를 하도록 합니다.http://127.0.0.1:8000/test?name=kim class NameFilter(filters.FilterSet): name = django_filters.Cha..
-
서버 인증 (JWT)보안 & 보안 2019. 8. 17. 20:33
JWT JWT(Json Web Token)은 토큰 기반 인증 방식으로, 사용자의 세션 상태를 저장하는 게 아니라 필요한 정보를 토큰 body에 저장해 사용자가 가지고 있고 그것을 증명서처럼 사용합니다. 사용자는 Access Token(JWT Token)을 헤더에 실어 서버로 보내게 됩니다. 토큰을 만들기 위해서는 Header, Payload, Verify Signature가 필요합니다. Header: Header, Payload, Verify Signature 정보를 암호화할 방식(alg), 타입(type) 등이 들어감 JWT인 토큰의 유형이나 HMAC SHA256 또는 RSA와 같이 사용되는 해시 알고리즘이 무엇으로 사용했는지 등 정보가 담김 Payload : 서버에서 보낼 데이터가 들어감. 일반적으로..
-
서버 인증 (세션/쿠키 기반)보안 & 보안 2019. 8. 17. 20:31
인증은 왜 필요할까? A와 B의 유저가 은행 사이트에서 각 본인의 잔액을 확인하기 위해 로그인을 하고 본인들의 잔액을 확인할 수 있습니다. 여기서 로그인은 A와 B를 구분하는 인증으로 볼 수 있습니다. 또한, A의 잔액을 B나 다른 사용자에게 노출시키면 안되므로 보안으로도 볼 수 있습니다. 현재 가장 많이 사용하는 통신 방식은 HTTP 방식입니다. HTTP의 특징으로 stateless가 있습니다. 이러한 특징으로 인해, 만약 은행 사이트에 인증과 관련된 내용이 없다면 로그인을 한 뒤에 메인 페이지로 이동했을 시, 정보가 사라져 어느 사용자인지 알 수 없습니다. 따라서 사용자마다 다른 정보를 노출하고 저장할 때, 인증은 필수적으로 가져가야 합니다. 아래에서는 다양한 인증 방식과 장단점을 설명합니다. 헤더에..
-
[Python3] ElasticSearch 사용하기언어/파이썬 & 장고 2019. 2. 17. 20:16
1. 기본 세팅엘라스틱 서치 설치 : https://www.elastic.co/kr/downloads/elasticsearch한글 형태소 분석기 노리 설치: https://www.elastic.co/kr/blog/nori-the-official-elasticsearch-plugin-for-korean-language-analysis파이썬3 엘라스틱서치 패키지 설치: https://elasticsearch-py.readthedocs.io/en/master/2. 파이썬 Elastic Search 세팅아래는 위에서 설치 받은 한글 형태소 분석기인 nori를 특정 필드에 적용도록 하는 세팅 방법 입니다.from elasticsearch import Elasticsearch # es 실행 기본포트: 9200, 기..
-
라이브러리, 모듈, 프레임워크 란공부 2019. 2. 5. 21:30
무심코 사용하고 있는 용어들이 너무 햇갈린다...라이브러리(Library)와 모듈(Module)모듈의 의미는 구성 단위, 구성부분 이고 라이브러리는 도서관이라는 뜻을 가지고 있습니다. 개발에서는 라이브러리와 모듈을 동일한 의미라고 생각하면 됩니다. 자주 사용하게 되는 코드를 하나의 함수나 클래스라는 단위로 묶어서 코드를 재사용하게 됩니다. 즉, 이러한 함수 또는 클래스들을 모아서 라이브러리(library) 또는 모듈(module)이라 부릅니다. 라이브러리 또는 모듈은 개발자가 직접 만들 수도 있고 다른 사람이 만든 것을 설치받아 사용할 수도 있습니다. 다시 말해, 라이브러리와 모듈은 동일한 개념으로 재사용이 가능한 코드의 집합으로 볼 수 있습니다. 프레임워크(Framework)라이브러리와 모듈을 공통적으..
-
crontab 초 단위 실행하기서버 2019. 2. 2. 22:39
crontab의 최소 실행시간은 분입니다. 하지만 편법으로 초 단위로 실행할 수 있습니다. 아래는 30초마다 스크립트를 실행하는 예제입니다.* * * * * /home/test.sh & sleep 30;/home/test.sh; sleep을 사용하여 test.sh 스크립트가 1번 실행된 후, 30초 멈춘 다음 다시 세미콜론으로 연결된 test.sh 스크립트를 실행하는 방법입니다. 아래는 10초 마다 스크립트를 실행 한 후, 성공과 실패 로그를 파일에 쓰는 예시입니다.* * * * * /home/test.sh > /home/success.log 2>/home/err.log & sleep 10; /home/test.sh > /home/success.log 2>/home/err.log & sleep 10; /..