목록분류 전체보기 (106)
훈훈훈
이번에는 탐색 유형 중 하나인 회문 문자 검사(대소문자를 구분하지 않음) 유형에 대해 정리해보려고 한다. 회문 문자는 문자를 뒤로 뒤집어서 읽어도 같은 문자열이며, 문자열 중앙을 기준으로 대칭인 특징이 있다. 따라서 해당 유형의 알고리즘을 풀떄도 이러한 특징을 이용해서 풀어보려고 한다. # 풀이 과정 먼저 대소문자를 구분하지 않기 때문에 리스트에 있는 모든 요소들을 대문자 혹은 소문자로 변환하는 작업이 필요하다. 필자는 " .lower() " 메서드를 사용하여 모두 소문자로 변환하였다. 그 다음 아래와 같이 대칭되는 요소들을 비교하였다. Input으로 주어지는 문자열의 길이를 2로 나눈 후 그 횟수 만큼 아래와 같이 비교하면 된다. 문자열이 홀수로 주어지더라도 가운데 값은 비교하는데 의미가 없기 때문에 ..
이번에는 회원가입 시 입력 값을 체크하는 함수를 정리하려고 한다. 먼저, 회원가입 시 이메일과 패스워드만 입력 받는다는 가정하에 진행하려고 한다. 아래 코드를 살펴보면 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..