본문 바로가기

전체 글

(68)
퀴즈봇 만들기 - 1 환경 setting 하기 !! flake8과 black을 설치를 진행해보겠습니다. flake8은 린터라고 한다고합니다. 린터란 소스코드를 분석하여 의심스럽거나, 에러를 발생하기 쉬운 코드에 표시(flag)를 달아 놓는 것을 말하며, 원래는 C 언어에서 사용하던 용어였으나 지금은 다른 언어에서도 일반적으로 사용된다고 합니다. black은 Formatter 라고 합니다. 코드의 스타일을 강제로 변경을 해주는 역할을 해줍니다. black을 사용하는 이유는 바로 코드의 스타일을 통일하기 위해서 사용을 합니다. 사람 마다 코드 스타일이 다르기 때문에 black을 사용해서 이를 일치 시켜 준다고 합니다. black을 만든 곳이 PSF(Python Software Foundation)라고 하네요 !!(파이썬 제단에서..
WSL2: nvidia-container-cli mount error, libnvidia-ml.so.1: file exists: unknown 리눅스 서버에서 docker container를 쓰다가 WSL2 환경에서 사용할 때 위와 같이 libnvidia-ml.so.1라는 파일이 이미 존재란다는 error가 발생하고 docker container를 사용하지 못하는 경우가 발생을 합니다. 해당 error의 문제는 린눅스 서버에서 사용하는 nvidia 그래픽 드라이버의 버전과 WSL2에서 사용하는 nvidia 드라이버 버전이 달라서 생기는 문제입니다. libnvidia-ml.so.1에 걸려있는 링크의 버전이 WSL2에 드라이버 버전과 달라서 생기는 문제 발생한 Error: docker: Error response from daemon: failed to create task for container: failed to create shim task..
미들웨어 - 2 미들웨어 - 1에 이어서 작성해 보겠습니다. 미들웨어 - 1에서는 fastapi에 있는 미들 웨어를 사용했는데, 이번에는 미들웨어를 직접 작성해 보겠습니다. main.py 입니다. import time from fastapi import FastAPI, Request app = FastAPI() @app.middleware("http") async def add_process_time_header(request: Request, call_next): start_time = time.time() response = await call_next(request) process_time = time.time() - start_time response.headers["X-Process-Time"] = str(pr..
미들웨어 - 1 WSGI는 파이썬으로 만든 웹 어플리케이션을 웹 서버와 연결하는 프로그램입니다. 이와 마찬가지로 미들웨어는 서버와 애플리케이션 사이를 중계하는 일종의 프로그램으로 이해하시면 됩니다. 다음은 리스트는 클라이언트 웹 서버, CGI, Web Application Server, Web Application을 구분해 보았으니 !! 참고 하시면 됩니다. Client: Firefox, Chrome, Safari, Edge 등(웹 브라우저만 클라이언트인 것은 아닙니다) Web Server: Apache, nginx, IIS 등 CGI: FastCGI, SCGI, WSGI 등 Web Application Server(WAS): Tomcat, Gunicorn, Tornado 등 Web Application: Spring ..
백그라운드 작업 - 2 백그라운드 작업 - 1에 이어서 글을 작성해 보겠습니다. 백그라운드 작업 - 1 오늘은 백그라운드 작업에 대해서 끄적여 보겠습니다 ! API에서 단순히 DB에 대한 CRUD 뿐만아니라 메일을 작성한다 던가, 로그를 작성한 다던가 크롤링을 하거나 머신 러닝과 딥러닝등 다양한 작 kbgw2001.tistory.com 이번 글에서는 백그라운드 작업에 의존성 주입을 적용해 보겠습니다. 우선, 백그라운드 작업에서 의존성 주입을 적용한 예시 main.py 입니다. import uvicorn import time from typing import Optional from fastapi import BackgroundTasks, FastAPI, Depends, status app = FastAPI() def write..
백그라운드 작업 - 1 오늘은 백그라운드 작업에 대해서 끄적여 보겠습니다 ! API에서 단순히 DB에 대한 CRUD 뿐만아니라 메일을 작성한다 던가, 로그를 작성한 다던가 크롤링을 하거나 머신 러닝과 딥러닝등 다양한 작업을 수행 할 때가 있습니다. 이런 경우, 시간이 오래 걸리기 때문에 빠르게 응답을 할 수 가 없습니다. 이때, 사용가능한 가장 쉬운 작업이 백그라운드 작업입니다. 백그라운드 작업을 하기 위해서 멀티프로세싱을 하거나 python에서는 서브 프레세스 모듈을 사용하게 됩니다. 다만, FastAPI에서는 백그라운드 작업을 하기 위해서 BackgroundTasks라는 것을 사용해서 간단하게 구현할 수 있습니다. 백그라운드에 대한 작업을 수행하기 위한 매우 간단 main.py 코드입니다. import uvicorn imp..
[drm:nv_drm_master_set [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to grab modeset ownership sudo dmesg 명령어를 통해서 이와 같은 error가 나타난다면 다음과 같이 해결할 수 있다고 합니다. sudo dmesg 발생한 error [drm:nv_drm_master_set [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Failed to grab modeset ownership 해당 명령어를 실행해서 나타나는 3개의 파일에 있는 nvidia-drm modeset=1 파일들을 주석처리하면 위와 같은 error들을 해결 할 수 있다고 합니다. grep --include=*.conf -rnw ‘/’ -e “nvidia-drm” 2>/dev/null 위 명령어 실행 결과 아래과 같은 결과가 나왔다면, 각 파일들에 위치로가서 " nvidia-drm..
인증 웹 서비스들의 가장 대표적인 기능 중 하나인 인증입니다. 정말 다양한 웹 인증 방식이 존재하고 이름도 비슷해 보이입니다. OAuth, OAuth2, OpenID, OpenID Connect 등 똑같이 생겼지만 사실 다른 방식들입니다. 웹 인증 방법은 지금도 바뀌고 있습니다. 간단하게 철저히 서버 사이드 개발자 입장에서 그 역사를 간단히 훑겠습니다. 읽지 않고 다음으로 넘어가셔도 괜찮습니다 초창기에는 Form에 아이디와 비밀번호를 입력 받아 서버에 전송을 했습니다. 당연하게도 패킷을 살펴보면 그 내용이 전부 보였고 심각한 보안 이슈였습니다. 물론, SSL(TSL)을 추가한 HTTPS가 퍼져 지금은 그렇지 않습니다. SSL은 패킷을 암호화 하기 때문에 공격자는 내용을 볼 수 없습니다. 그러니 HTTPS를 사..