전체 글 1185

[Python] filter - iterable 조건 필터링

개요현재 Python 개발을 진행 중인데, 딕셔너리의 키가 특정 조건을 만족하는 것만 필터링하려고 한다. 적당한 방법을 찾아보다 python 내장 함수인 filter 함수에 대해 알게 되어 기록해 둔다.  filter특정 조건을 만족하는 요소들로 이루어진 iterator를 반환한다.filter(function, iterable) 바로 사용 예시를 보는 편이 이해하기 좋을 것 같다. 다음과 같은 숫자로 이루어진 리스트가 있다고 하자.numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]이 리스트에서 짝수에 해당하는 값만 추출하고 싶다. 그러면 아래와 같이 짝수인 경우가 참이 되는 함수를 정의하여 전달하면 된다.def is_even(num): return num % 2 == 0filtere..

Python 2024.12.11

[Python] Dictionary 키 삭제

개요이전에 2021.10.03-[자료 구조] 동명이인 찾기 / 딕셔너리에서 딕셔너리 내의 특정 키 값을 삭제하는 방법을 적어두었었다. 그런데 삭제하려는 키의 값이 딕셔너리에 항상 있을 거라는 보장이 없는 경우도 있을 수 있다.관련해서 딕셔너리 내의 키 값을 안전하게 삭제하는 방법을 몇 가지 더 알아본다.   DEL먼저 기존에 알았던 방법을 다시 적어둔다. del 키워드를 사용하면 특정 변수나 딕셔너리 내의 키 값을 삭제할 수 있다. test_data = {k:k for k in range(5)}del test_data[0]  poppop 함수를 사용하면 딕셔너리에서 키 값을 삭제하면서 값을 반환받을 수 있다.test_data = {k:k for k in range(5)}test_data.pop(4)이 때..

Python 2024.12.10

[Python] hashlib - 해시 함수 다루기

HashingHashing이란 임의 길이의 데이터를 고정된 길이의 데이터로 변화시켜 저장하는 것을 말한다.해싱을 수행하는 함수나 알고리즘을 해시 함수, 해시 알고리즘이라 하고, 해시 함수의 결과를 해시 값, 해시 코드, 해시 체크섬 또는 해시라고 일컫는다.해시는 빠른 데이터 검색을 위한 해시 테이블이라는 자료 구조에 사용하거나, 해시 값으로는 원문을 알아내기 힘들다는 점을 이용해 값을 암호화하는 데 사용할 수도 있다. 또는 전송된 데이터의 무결성을 확인하는 데 사용하기도 한다.  hashlibPython에서 해시 함수를 사용할 때는 hashlib라는 모듈을 사용한다. hashlib에는 암호화 알고리즘인 SHA1, SHA224, SHA256, MD5 등등의 여러 알고리즘을 포함하고 있다.별도 설치 없이 바..

Python 2024.12.09

[Python] 비동기 - asyncio.create_task

개요2024.06.26-[Python] asyncio - 비동기 프로그래밍에서 asyncio.run, 그리고 await을 이용한 코루틴 실행 방법을 알아보았다. 사실 코루틴 실행 방법은 한 가지 더 존재하는데, 바로 create_task 함수를 이용하는 방법이다.이번 글에서는 create_task를 이용한 비동기 프로그래밍을 정리한다.  create_taskasyncio.create_task(coro, *, name=None, context=None)전달받은 코루틴으로 Task 객체를 생성하고 실행을 예약한다. Task 객체를 반환한다.Task는 get_running_loop으로 반환된 이벤트루프에서 실행되고, 현재 스레드에 실행 중인 이벤트 루프가 없으면 RuntimeError가 발생한다.보통 여러 개..

Python 2024.12.06

[Git] Shallow Clone - 저장소의 일부 이력만 받아오기

개요간혹 몇 년에 걸쳐 유지되어 용량이 엄청 커진 Git 저장소를 클론 할 때가 있는데, 전송해야 하는 데이터의 양이 너무 많아 시간이 아주 오래 걸리거나 중간에 실패하는 경우가 발생할 수 있다.만약 저장소의 전체 이력이 필요하지 않다면 저장소의 일부 이력만 받아오는 Shallow Clone이 방법이 될 수 있다. 이번 글에서는 git clone 또는 fetch 시 일부 이력만 받아오는 방법을 적어둔다.  depthgit clone 또는 git fetch 명령어를 사용할 때 --depth 옵션을 통해 받아올 이력, 즉 커밋의 수를 지정할 수 있다.git clone --depth=Ngit fetch --depth=N최신 이력부터 지정한 수의 커밋을 받아오게 된다. 즉, depth를 1로 주면 최신 1개의..

Git | GitLab 2024.12.05

[FastAPI] 백그라운드 작업 수행

개요API 서버는 클라이언트에 대한 요청을 처리하고 응답을 반환한다. 하지만 데이터 처리나 IO 작업과 같이 처리해야 하는 작업이 오래 걸리는 경우에는 응답을 반환한 후 작업을 백그라운드로 수행하도록 처리할 수도 있다.FastAPI는 애플리케이션이 응답을 반환한 후에 실행할 백그라운드 작업을 정의할 수 있도록 제공하고 있다. 방법을 알아본다.  BackgroundTasksFastAPI는 BackgroundTasks라는 클래스를 사용하여 애플리케이션에서의 백그라운드 작업을 지원한다. 임포트는 아래와 같이 하면 된다.from fastapi import BackgroundTasksFastAPI는 BackgroundTasks 객체를 생성하고, 경로에 매핑된 함수에 매개변수로 전달하는 방식으로 사용하게 된다.  ..

Python 2024.12.04

[FastAPI] request body 예시 추가하기

개요최근 FastAPI로 API 개발을 하고 있는데, API 문서에 API 요청 방법에 대한 예시가 있으면 좋을 것 같다. 확인해 보니 요청 데이터 예시를 추가할 수 있는 방법이 있어 이번 글을 통해 정리해두려고 한다.  Pydantic 모델에 추가Pydantic 모델에 json_schema_extra 설정으로 examples을 추가하면 예시 request body를 지정할 수 있다.예시 request body는 딕셔너리 리스트로 전달한다. (여러 개를 전달해도 API 문서에는 하나만 표시되는 것 같다.)from fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Item(BaseModel): name: str de..

Python 2024.12.03

[FastAPI] API 문서 접근 시 404 Not Found 현상 해소

현상FastAPI는 API 문서를 자동으로 생성하는 기능을 제공하고 있어 기본적으로 /docs, /redoc 경로로 접근하면 개발한 API의 문서를 확인할 수 있다.최근 개인 컴퓨터가 아니라 별도의 개발 환경에서 FastAPI를 사용해 개발을 진행하고 있는데, API 문서를 확인하려고 했더니 아래와 같은 화면과 함께 오류가 발생했다.현상을 해결해 보자.  원인이 현상은 prefix가 제거된 프록시가 있을 때 발생한다. prefix가 제거되었다는 것은 FastAPI 내에서는 root 아래에서 제공하고 있는 경로가 FastAPI 외에서는 경로가 추가된 상태고 제공하고 있는 것을 의미한다. 예로 들면 FastAPI에서 /app 경로를 선언했으나, 실제 서비스에서는 /api/v1이라는 prefix를 추가하여 /..

카테고리 없음 2024.12.02

[Azure] 로컬 환경에서 Function 개발하기

개요2024.11.15-[Azure] Functions 이란에서 Azure Function에 대한 개념을 알아보았다. Azure Function은 Azure Portal에서 개발하고 테스트를 수행할 수 있지만, 이번 글에서는 로컬 환경에서 개발하고 테스트를 수행하는 방법을 적어둔다. 사용한 환경은 Ubuntu 20.04.5 LTS이다.   Core Tool 설치로컬 환경에서 Azure Function을 개발하고 테스트하기 위해서는 Core Tool을 필수적으로 설치해야 한다. 1. Microsoft 패키지 리포지토리 GPG 키 설치curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpgsudo mv micr..

Azure 2024.11.29

[Azure] AI Search - 인덱스

개요2024.10.29-[Azure] AI Search 란에서 Azure의 AI Search라는 서비스가 검색 서비스를 만들 수 있는 인프라와 도구를 제공하는 PaaS라는 것을 알았다.이번 글에서는 AI Search 서비스의 기본 개념인 인덱스에 대해서 알아보려고 한다.  인덱스인덱스는 인덱싱, 전체 텍스트 검색, 벡터 검색, 하이브리드 검색 및 필터링된 쿼리를 수행하는 검색 엔진에서 사용할 수 있는 검색 가능한 콘텐츠이다. 쉽게 말해 데이터를 구조화해서 검색할 수 있게 만든 데이터의 목록이라고 할 수 있다. 데이터를 구조화해서 저장하는 핵심 개념으로, 빠르고 정확하게 데이터를 검색하는 것을 목적으로 한다.일반적으로 데이터베이스의 테이블에 많이 비유된다. 인덱스는 크게 데이터 구조를 정의하는 Schema..

Azure 2024.11.28