본문 바로가기

개발이야기

(10)
Data Modeling 및 Validation을 위한 Pydantic Python은 데이터를 다루는 언어 중 아주 유연한 언어 이지만, 모델링 또는 데이터 유효성 검사 시 불편한 점이 있다. 아주 훌륭한 Dict, List 등의 자료형으로 많은 일들을 할 수 있지만 여전히 모델링을 하기엔 다소 부족한 점이 있다. Pydantic 이란? Pydantic은 Python에서 사용할 수 있는 데이터 직렬화 도구 이다. 이를 사용하면, 데이터 모델을 생성하고 그에 맞는 유효성 검사를 할 수 있다. 역시나 Pythonic 하게 Type hinting을 사용해 아주 간결하고 가독성이 좋게 만들 수 있게 도와 준다. 요즘 핫한 Python web framework인 FastAPI에서 데이터의 모델을 정의할 때 사용하고 있다. Pydantic 설치 pip install pydantic P..
Python 프로젝트 구성 끝판왕 Pyenv + Poetry Python으로 많은 것들을 할 수 있다. 단순한 프로그램 부터, 웹, ML 등 많은 프로젝트들을 Python을 사용해 만들어낼 수 있다. 보통 프로젝트를 시작하는 경우는 내가 처음 프로젝트를 시작하거나, 아니면 다른 사람이 먼저 시작한 프로젝트에 참여하거나.. 두가지 경우가 있을거같다. Python은 기본적으로 아주 느슨한 의존성 관리툴을 탑재하고 있다. (pip, requirements.txt..) Python프로젝트를 다른 사람과 같이 진행하다 보면 "어? 내 PC에서는 동작하는데?" 를 시전하는 경우가 적지 않다. 패키지 의존성 문제나, 서로 다른 Python 버전을 사용하는 경우 이런 Case가 발생한다. Pyenv와 Poetry를 같이 사용하면 위와 같은 문제를 대부분 해결 할 수 있다. Py..
Django에서 Request Log를 쉽게 확인해보자 현재 현업에서 Django를 사용해 Test에서 활용할 수 있는 Mock 서버를 만들어 사용 중 이다. Mock 서버에는 자동화 Test에서 여러 요청 들이 들어오는데 언제 어떤 요청이 들어왔는지 확인이 필요할 때가 있다. 그럴 때 마다 Docker logs를 사용해 귀찮고 눈이 아프게 확인했었는데 여간 불편한 일이 아니었다. 그래서, Django에 기본 Logger를 적용하고 이를 쉽게 확인 할 수 있는 방법을 적용해보려고 한다. 먼저 Django 기본 Logger 부터 적용해보자. Django 기본 Logger Django 기본 Logger 는 Django runserver 를 실행해보면 확인 해볼 수 있다. 서버 실행 부터 Exception, Request 정보 등 Debugging에 필요한 내용들..
Docker를 사용해 Django 서버 SSL(HTTPS) 적용하기 이 글에서는 Let's Encrypt와 Nginx를 사용해 docker/django 환경에서 SSL인증서를 적용해 HTTPS를 사용하는 방법을 다뤄보겠다. SSL? SSL은 Secure Socket Layer로 인터넷에서 서버와 클라이언트 사이에서 전송되는 데이터를 암호화 하고 보호하기 위한 보안 표준 기술이다. 다른 사람이 전송되는 데이터를 보거나 탈취하는 것을 방지한다. SSL의 핵심은 암호화다. 전송되는 데이터를 암호화 하기 위해 인증서가 필요한데, 이 글에서는 인증서를 발급받고 Django 서버에 적용하는 방법에 대해 알아보겠다. Let's Encrypt 내가 운영하는 서버에 HTTPS를 사용하려면 CA(인증 기관)에서 SSL 인증서를 가져와야 한다. 이를 발급받기 위해서는 인증기관..
Pyenv 설치와 사용법 - Python 버전 관리 도구 Pyenv는 Python 버전 관리 도구로, 여러 프로젝트에서 다른 버전의 Python을 사용할 수 있도록 해준다. 설치 방법: pyenv를 설치하려면 Git를 설치해야 한다. Git를 설치한 후, 터미널에서 다음 명령어를 입력하여 pyenv를 설치한다. $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv 설치 후 환경 변수를 설정해야 한다. (bash shell 기준) $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile $ echo -e 'if command -v pyenv 1>/dev..
FastAPI에 SQLAlchemy 연동하기 2022.09.16 - [개발이야기/Python] - 정말 빠른 Fast API 2023.01.18 - [개발이야기/Python] - FastAPI로 CRUD 구현하기 지난 2개의 포스팅에서 FastAPI를 사용해 CRUD를 구현하는 방법에 대해 알아 보았다. 이젠 실제 Database를 사용하여 Data를 다뤄보도록 하겠다. FastAPI에서 Database를 사용하려면 ORM이 필요하다. 여기서는 SQLAlchemy를 사용하겠다. 먼저 SQLAlchemy를 설치 하자. pip install sqlalchemy db.py Database와 연동하기 위한 파일을 작성해보겠다. main.py 와 같은 위치에 db.py 파일을 만들고 아래와 같이 작성해보자. #db.py from sqlalchemy impo..
FastAPI로 CRUD 구현하기 1부에서는 간단하게 FastAPI에 대해 소개하고 Hello world 를 작성해봤다. 2022.09.16 - [개발이야기/Python] - 정말 빠른 Fast API What things to do 블로그의 Back-end를 구현 블로그의 게시글을 조회하고, 생성하고, 업데이트하고 삭제하는 CRUD를 구현 GET POST PUT DELETE 1. GET 먼저 main.py에 아래와 같이 추가 작성해보자. # main.py from typing import Optional from fastapi import FastAPI fake_db = [] app = FastAPI() @app.get('/') def helloworld(): return {'message':'Hello World'} @app.get(..
Java에서 정규표현식 사용하기 정규표현식은 String을 다루는데 아주 중요한 역할을 하고 있다. 일정한 패턴으로 쏟아지는 정보 중 필요로 하는 정보만 쏙 빼온 다던지, 내가 원하는 패턴으로 정보들이 들어오는지 확인하는 등 여러가지로 사용되어 질 수 있다. 이 글에서는 Java에서 정규표현식을 사용하는 간단한 방법을 얘기해보려고 한다. 먼저, 아래와 같은 URL이 있다. https://some.domain.com/token/randomstringtoken?params=true 위 URL에서 token에 해당하는 randomstringtoken 을 정규표현식을 사용해 추출 해보도록 하겠다. 먼저 randomstringtoken의 규칙을 먼저 파악해보자 randomstringtoken 모두 소문자인 영문이면서 token/ 과 ? 사이에 ..