목록2020/03 (9)
훈훈훈
이번에는 회원가입 시 입력 값을 체크하는 함수를 정리하려고 한다. 먼저, 회원가입 시 이메일과 패스워드만 입력 받는다는 가정하에 진행하려고 한다. 아래 코드를 살펴보면 validate_special_char는 이메일 입력 값을 그리고 validate_password 는 패스워드 입력 값을 검증하는 함수이다. 이메일 검증을 하는 함수 이름에 char 단어를 넣은 이유는 해당 함수는 실행 시키기 이전에 이메일 형식인지 검증해주는 모듈을 먼저 실행 시킨 후 해당 함수를 이용해 @ 앞에 있는 입력 값에 대한 검증을 진행할 목적으로 만들었기 때문이다. 해당 함수를 살펴보면 정규표현식으로 알파벡 소(대)문자 그리고 숫자 이외에는 허용하지 못하도록 작성하였다. 그 다음 패스워드를 검증하는 validate_specia..
이번 포스팅은 장고(Django)로 회원가입 시 인증 이메일을 보내는 API Code를 정리 해보려고한다. 회원가입 API 기반으로 작성하기 때문에 회원가입/로그인에 관한 자세한 내용은 아래 링크를 참고 바란다. https://wave1994.tistory.com/65?category=872868 API 구현하기에 앞서 Gmail SMTP(Simple Mail Transfer Protocol)을 사용하기 위해 아래와 같은 설정을 하였다. # 사전 설정 1. IMAP 설정 - 이메일 클라이언트에서 Gmail을 사용할 수 있게 IMAP 설정을 1단게로 설정한다. https://support.google.com/mail/answer/7126229?hl=ko&rd=3&visit_id=1-6362818115668..
# 업비트 Open API 이용 - Example URL : https://crix-api-endpoint.upbit.com/v1/crix/candles/기간단위/기간?code=CRIX.UPBIT.마켓-암호화폐기호&count=데이터수&to=최종시세데이터일시 # 스크랩핑 코인 종류 - BTC, ETH, BSV 등등 # 과거 데이터 크롤링 - 1분, 3분 5분, 1일, 1주 단위 등등 # Pandas 활용하여 csv 파일로 output import requests import pandas as pd from bs4 import BeautifulSoup coin_list = ['BTC', 'ETH', 'BSV', 'XRP', 'BCH', 'EOS'] time_units = ['days', 'weeks'] mi..
이번에는 python 코드를 이용하여 데이터베이스에 csv파일을 넣는 방법을 작성하려고한다. 이번 글에서는 생성한 앱에서 City 라는 클래스를 임포트 후 해당 테이블에 데이터를 넣는 작업을 위한 코드를 작성하였다. 아래 코드를 사용하면 데이터는 물론 foreign key 까지 모두 넣을 수 있다. 단, foreign key에 데이터를 넣기 위해서는 테이블 칼럼명에 "_id"를 붙여줘야 넣을 수 있다. import csv import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "[ProjectName].settings") django.setup() from [AppName].models import City CSV_PATH = '/..
이번에 프로젝트를 진행하면서 REST API를 만들어 backend 서버를 AWS를 사용하여 배포하게되었다. 처음에는 로컬 환경에서 진행하듯이 python manage.py runserver 명령어를 사용하였지만, 터미널 종료 후에 서버도 같이 종료되는 현상이 발생하였다. 만약 실제 서비스를 제공하고 있다면 서버가 다운되는 현상은 기업 입장에서 매우 큰 크리티컬일 수 밖에 없다. 따라서 다음과 같은 조건을 만족 시켜야 한다. # Django 배포 조건 1. Terminal 이 종료되어도 서버는 24/365 유지되어야한다. 2. Request 혹은 Response 시 로그가 남아야한다. 이제 아래와 같은 배포 방법을 소개하려고 한다. # 배포 방법 1. gunicorn - gunicorn 이란 ? pyth..
# 글을 쓴 계기 - 프로젝트 진행 중 지인의 RDS에 저장된 Scheme가 랜섬웨어에 감염되었다는 소식을 듣게 된다 ........ # 원인 1. Security Group 상에서 any open 정책 2. 아주 간단한 password 사용 그렇기 때문에 해커가 간단하게 RDS서버에 접근하지 않았나 싶다 .. # 대응 방안 1. MySQL Default Port 변경 RDS 생성 시 Default Port가 3306으로 설정되어있다. 따라서 RDS서버에는 3306포트가 오픈되어 있다는 점은 예상하기 쉽다. 따라서 AWS Console에서 포트를 하는 것이 좋다. 필자는 15001 포트로 변경하였다. 참고로 MySQL Default Port를 번경하였다면, my_settings.py에 등록된 Port도 ..
1. EC2 인스턴스에 mysqlclient 모듈 설치 Django에서 mysql을 연동하기 위해서는 mysqlcinent 모듈이 필요하다. 로컬환경에서는 pip 로 바로 설치가 가능하지만, EC2 인스턴스에서는 gcc 및 libmysqlclient-dev 설치가 선행되어야한다. 이 두개가 설치 되었다면, git에서 받은 파일에 첨부된 requirement.txt 파일에 있는 리스트들을 그대로 설치하거나, pip install mysqlclient를 진행해주면 된다. sudo apt install gcc sudo apt install libmysqlclient-dev /*conda 가상환경에서 */ pip install -r requirement.txt 2. my_settings 생성 및 설정 보통 gi..
1. Key.pem file 권한 설정 파일 소유자 읽기 권한으로 설정 chmod -R 400 [KEY_NAME.pem] 2. EC2 인스턴스 접속 ssh -i [KEY_NAME] ubuntu@[EC2.IP] 3. Mini conda install conda env 상에서 Django server를 실행 시키기 위해 Mini conda install 필요 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh chmod -R 755 Miniconda3-latest-Linux-x86_64.sh ./Miniconda3-latest-Linux-x86_64.sh 4. conda 가상 환경 생성 #파이썬3 버전의 환경만들기 conda ..