본문 바로가기

Python18

[DevOps] Jenkins로 Flask 웹 서버 컨테이너 CI/CD 구현하기 Jenkins 젠킨스는 오픈소스 CI 툴이다. 원 제작자는 카와구치 코스케이고 JAVA로 제작되었으며 MIT License를 따른다. 원래 목적은 자바 프로젝트의 CI였지만 여기서는 팀에서 제작한 Pluto 프로젝트의 컨테이너를 빌드하고 Docker Hub에 업로드 하여 버전 관리와 컨테이너 배포까지 (반)자동으로 이루어지도록 아래처럼 간단한 CI/CD를 작성해보았다. Python 프로젝트 컨테이너화 시키기 먼저 팀 프로젝트의 결과물인 Pluto(Flask 웹 서버)를 자동 배포하기 위해 서버를 컨테이너화 시켰다. 컨테이너화가 어렵게 느껴질 수 있지만 내가 했던건 이미 만들어진 우분투 컨테이너에 필요한 조치를 하고 서버를 올리는 스크립트(?)를 작성한게 전부다. 아래는 파이썬 프로젝트를 Ubuntu:20.. 2022. 10. 10.
[백엔드] Flask에서 JWT 토큰 생성하기 flask_jwt_extended flask에선 flask_jwt_extended라는 이름으로 jwt 토큰에 대한 기능을 제공해준다. 토큰 인증에 대한 테스트는 POSTMAN으로 했고, JWT에 대한 내용은 아래 글을 참고하면 좋을 것 같다. https://hwan001.tistory.com/277 [python] JWT 모듈 JWT (Json Web Token) JWT는 웹 표준(RFC 7519) 으로 두 개체 사이에서 JSON을 사용하여 정보를 안전성 있게 전달해준다. 웹에서 로그인을 하거나 인증을 받게되면 보통 세션을 사용하여 인증 정보를 기 hwan001.co.kr Access 토큰 생성하기 config.py flaskJwt_secret_key = "secret_key" flask_admin_id.. 2022. 9. 18.
[python] JWT 모듈 JWT (Json Web Token) JWT는 웹 표준(RFC 7519) 으로 두 개체 사이에서 JSON을 사용하여 정보를 안전성 있게 전달해준다. 웹에서 로그인을 하거나 인증을 받게되면 보통 세션을 사용하여 인증 정보를 기록하는데, JWT는 토큰 내부의 Signature에 해당 정보를 기록한다. JWT를 사용할 경우 인증을 위해 웹 브라우저의 세션 공간을 사용하지 않고 인증 여부를 알 수 있기 때문에 확장성이 좋다. 또한 생성 시 권한을 지정할 수 있어 각 토큰별로 기능을 제어할 수 있고 플랫폼에 종속적이지 않다. JWT의 구조는 Header.Payload.Signature로 나뉘어져 있다. Header는 토큰의 typ(해당 토큰의 타입)과 alg(해싱 알고리즘)을 Payload는 토큰에 담을 정보를 .. 2022. 9. 13.
[Python] Yahoo_fin 모듈 Yahoo_fin 모듈 yahoo_fin은 시가총액, 배당수익률, 종목에 대한 최신 정보를 제공하는 Python 3 패키지이며, 아래 추가 기능들을 제공한다. 손익 계산서/ 대차 대조표/ 현금 흐름표/ 재무 상태 표 보유자 정보 및 분석가 데이터 스크래핑 가상자산(암호화폐) 데이터 현재 거래일 실시간 주가 및 거래 상위 종목 옵션 가격 및 만료 날짜 검색 모듈 수입 캘린더 기록 금융 뉴스 RSS 피드 스크랩 yahoo_fin은 stock_info module, options module 두 가지 모듈로 구성된다. 자세한 옵션이 궁금하면 아래 링크들에서 찾아보자. https://algotrading101.com/learn/yahoo-finance-api-guide/ Yahoo Finance API - A .. 2022. 9. 11.
[Python] Paramiko 모듈 Paramiko 원격 장치에 대한 보안 연결을 위한 모듈로 SSH/ SFTP 연결 시에 사용한다. 만약 설치 중 에러 발생 시 pip를 업그레이드하고 의존성이 있는 라이브러리를 설치해준다. 코드 pip install paramiko # requirements.txt - paramiko import sys import subprocess try: import paramiko except: subprocess.check_call([sys.executable,'-m', 'pip', 'install', '--upgrade', 'pip']) subprocess.check_call([sys.executable,'-m', 'pip', 'install', '-r', 'requirements.txt']) import p.. 2022. 7. 7.
[Python] 데코레이터 (@, Decorator) 파이썬의 데코레이터란? 먼저 Decorate는 '장식하다' 라는 의미가 있고, 따라서 직역하면 '장식자'라는 의미가 된다. (구글 번역기에서는 a person who decorates something. 로 정의되어 있다.) 파이썬에서도 원래 뜻과 비슷한 의미로 사용되는데 @ 기호로 표현 할 수 있으며, 클래스나 메소드를 정의할 때 많이 사용되어 진다. 데코레이터는 직접 정의하여 사용하거나 미리 정의된 내용을 가져와 사용이 가능하다. (정의된 데코레이터는 @property, @classmethod, @staticmethod 등이 있다.) 데코레이터를 작성하면 원본 메소드의 내용을 수정하지 않고 여러 기능을 추가할 수 있게 된다. 메소드(함수)의 실행시간 측정 실행과 종료에 로그 기능 추가 ... 메소드 .. 2022. 3. 21.
[Python] min, max 함수 min (max) 함수 파이썬에서는 여러 대상들(리스트 등) 중 가장 큰 값 또는 가장 작은 값을 구하는 함수가 있다. min, max 함수인데, 아래 방법을 사용하면 이런 함수들을 좀 더 잘(?) 활용할 수 있다. 함수 Parameter에 key=func 주기 list_num = [1, 2, 5, 4, 5, 5, 6, 7, 8, 1] print(max(list_num, key=list_num.count)) # count가 가장 많은 5가 출력 위 코드는 list_num.count를 list_num을 대상으로 실행하고, 해당 값들의 최대값을 출력한다. 따라서 list_num 내부에 가장 개수가 많은 5가 출력된다. 2022. 3. 10.
[python] lambda 표현식 1. lambda 표현식 요약 - 함수를 하나의 식으로 표현한 것으로 다른 함수의 매개변수로 전달이 가능함 - 함수의 이름이 없기 때문에 익명 함수라고도 불림 - 함수 표현식 사용할 경우 속도가 저하된다고 함 (정확하지 않음, 재확인 필요) 2. 사용법 # Case 1. lambda 함수 정의 후 매개변수 전달 function_lambda = lambda x : x + 1 print("result : ", function_lambda(1)) # result : 2 # Case 2. 한번에 매개변수 전달 print("result : ", (lambda x : x + 1)(1)) # result : 2 # Case 3. 외부 변수 활용 y = 1 print("result : ", (lambda x : x +.. 2022. 1. 7.
[Python] FinanceDataReader 모듈 1. 조회 가능 범위 한국거래소(KRX)에 상장된 주식종목 리스트와 코넥스(비상장)에 있는 주식종목 리스트: 'KRX', 'KOSPI', 'KODAQ', 'KONEX' 글로벌 주식종목 리스트: 'NASDAQ', 'NYSE', 'AMEX' and 'S&P500', 'SSE'(상해), 'SZSE'(심천), 'HKEX'(홍콩), 'TSE'(도쿄) 한국거래소의 상장폐지종목과 관리종목 리스트: 'KRX-DELISTING'(상장폐지종목), 'KRX-ADMINISTRATIVE' (관리종목) 한국, 미국, 일본의 ETF 리스트: 'KR', 'US', 'JP' 주가(KRX): '005930'(삼성전자), '091990'(셀트리온헬스케어) ... 주가(Word wide): 'AAPL', 'AMZN', 'GOOG' 지수: .. 2021. 7. 31.
미국 주식 시뮬레이터 ** 참고, 아래 내용과 코드는 테스트용으로 시뮬레이터로 실제 거래 목적이 아닙니다. 목적 yfinance, yahoo_fin 등의 Python 라이브러리로 시장 정보를 받아와 작성된 알고리즘을 테스트한다. Ticker 별로 적합한 형태의 트레이딩 알고리즘을 개발하여 시뮬레이션해본다. 최적/최고 수익을 내는 파리미터와 알고리즘, 티커를 찾아내어 실거래에 적용한다. 알고리즘 존버, 물타기 기본적인 알고리즘의 전체 구조는 투자시 일반적으로 사용되는 존버(대기)와 물타기(추가 매수) 등을 기반으로 시작했다. 처음 작성된 알고리즘은 거래 시작 시점부터 현재까지 누적된 비율을 계산하여 미리 입력해둔 특정 값에 맞춰졌을 경우 매도 또는 매수를 판단하여 알려준다. 예를들면 아래 코드에서는 '변화심한그래프.거래행동판단.. 2021. 7. 25.
Python으로 UiPath Custom Activity 만들기 (Captcha) 1. 목적 및 내용 요약 Captcha 이미지를 읽어 내용을 알려주는 신경망 모델을 Python으로 작성하여 UiPath Activity 형태로 만들어준다. 2. Captcha 이미지 수집기 제작 3. 이미지 Dataset 만들기 3-1) 폴더 구성 - C:\RPA\Captcha_ImageCollector\origin : 위에서 수집기가 수집한 파일들 위치 - C:\RPA\Captcha_ImageCollector\separate : 분리된 파일들 생성 - C:\RPA\Captcha_ImageCollector\complete : 분리가 완료된 파일 이동 3-2) 이미지 분리용 코드 import tensorflow as tf import cv2 import os import PIL.Image as pimag.. 2021. 7. 17.
[Python] pykrx 모듈 1. 개요 pykrx : https://github.com/sharebook-kr/pykrx - KRX 거래소 서버에서 값 받아옴 - 국내 KOSPI, KOSDAQ, KONEX 정보 확인 가능 sharebook-kr/pykrx KRX 주식 정보 스크래핑. Contribute to sharebook-kr/pykrx development by creating an account on GitHub. github.com 2. 설치 pip install pykrx 3. 코드 from pykrx import stock # 원하는 조건의 티커 목록 얻어오기, market 설정 안해줄 경우 기본은 KOSPI # 아래 조건은 2021년 6월 1일 기준의 KOSDAQ 상장사들의 티커를 받아옴 tickers = stock... 2021. 5. 27.
[Python] yfinance 모듈 1. 개요 yfinance : https://pypi.org/project/yfinance/ - API와 티커 값을 사용해서 해외 주가 정보를 받아올 수 있다. - 야후에서 제공 (무료) - 특정 종목(티커)에 해당하는 과거 시점의 모든 데이터를 얻어올 수 있음 - Date, Open, High, Low, Close, Volume, Dividends, Stock Split 정보를 포함 - 애널리스트 평가 정보 가져오기 가능 yfinance Yahoo! Finance market data downloader pypi.org 2. 설치 pip install yfinance 3. 사용 yf_GoogleA = yf.Ticker("GOOGL") # AAPL, TSLA, GOOGL ... yf_Tesla = yf... 2021. 5. 27.
[Python] pycryptodome 모듈 1. 개요 pycryptodome : https://pycryptodome.readthedocs.io/en/latest/ - 파이썬에서 RSA, hash 등 암호화 관련 기능 제공 Welcome to PyCryptodome’s documentation — PyCryptodome 3.9.9 documentation pycryptodome.readthedocs.io 2020. 9. 26.
얼굴 인식 장치 ** TensorFlow 2.0부터는 라이브러리 구조가 변경되어 아래 코드를 바로 사용할 수 없음. 1. AI_PI.py - 사전에 학습된 가중치 파일과 모델을 라즈베리파이에 설치하여 작동 - 판단 이후는 GPIO를 통하여 외부 장치(LED) 등으로 결과를 알려줌 (미구현) # python 3.4 from socket import * from matplotlib.image import imread import tensorflow as tf import numpy as np # SOCKET HOST = '' PORT = 12345 SIZE = 2048 MSGLEN = 0 # NETWORK learning_rate = 0.001 n_input = 30000 n_classes = 2 dropout = 0.75.. 2017. 6. 17.
[Python] 원 나누기 1. 개요 - 돌림판에 사용될 원 그리기 2. 코드 # -*- coding: utf-8 -*- import sys import pygame import math from pygame.locals import * PI = 3.14159265359 R = 200 screenX = 410 screenY = 410 Ox = screenX / 2 Oy = screenY / 2 # 초당 프레임수를 정의 TARGET_FPS = 30 clock = pygame.time.Clock() # 색 정의 BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) WHITE = (255, 255, 255) # 실수를 더하기 위해서 만들어줌 def myra.. 2016. 10. 3.
[Python] 돌림판 1. 개요 - pygame 라이브러리를 사용하여 윈도우를 그림 - 스페이스 바로 돌림판의 회전과 정지를 정함 - 정지 시 천천히 멈춤 (회전각을 0까지 빼줌) 2. 코드 #-*- coding: utf-8 -*- import sys import pygame from pygame.locals import * import time # 초당 프레임수를 정의 TARGET_FPS = 30 clock = pygame.time.Clock() # 색 정의 BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) WHITE = (255, 255, 255) # 라이브러리 및 디스플레이 초기화 pygame.init() screen = pygame.d.. 2016. 10. 3.
[Python] 키로거 + 스크린샷 1. 개요 - 현재 포커스를 가지고 있는 프로세스를 파악 - 키 다운 이벤트 발생한 버튼이 프린트스크린이면 전체 화면을 캡쳐한 후 파일로 저장 2. 코드 from ctypes import * import pythoncom import pyHook import win32clipboard import win32gui import win32ui import win32con import win32api user32 = windll.user32 kernel32 = windll.kernel32 psapi = windll.psapi current_window = None def screenshot(): # win32API를 사용해서 전체 화면의 스크린샷을 파일로 만들어줌 hdesktop = win32gui.GetDe.. 2016. 9. 18.