2025/01 18

[Python] context manager - 리소스 관리

개요Python에서 파일을 다룰 때는 파일을 열고 닫는 작업이 필요하다.file = open('somefile', 'w')try: file.write('Hola')finally: file.close()일반적인 프로그래밍에서 연 파일은 반드시 닫는 작업을 해야 하는데, 명시적으로 close 함수를 호출하는 불편함을 해소하기 위해 with 문을 사용할 수 있다.with open("asd.txt", "r") as file: lines = file.readlines() ...이 때 with문을 context manager라고 한다. 그럼 대체 context manger라는 게 뭘까? 알아보자.  Context managerContext Manger는 Python의 독특한 기능 중 하나로, ..

Python 2025.01.31

[FastAPI] Lifespan - 이벤트 처리

개요2025.01.13-[FastAPI] startup, shutdown 이벤트 처리에서 FastAPI가 제공하는 on_event 데코레이터를 사용해 애플리케이션 시작 및 종료 시 처리해야 하는 작업을 정의하고 적용했다. 그런데 공식 문서에 의하면 on_event 데코레이터는 deprecated 되고, Lifespan이라는 개념으로 대체되었다고 한다.이번 글에서 Lifespan을 사용하는 방법에 대해 정리해 둔다.  LifespanLifespan은 전체 애플리케이션의 수명주기를 다루며, 애플리케이션이 시작되기 전에 실행되어야 하고, 애플리케이션이 종료될 때 실행되어야 하는 작업을 정의할 수 있게 한다. 주로 전체 애플리케이션에 사용해야 하는 자원, 요청 간 공유 자원, 정리해야 하는 자원을 설정하는 데 ..

Python 2025.01.24

[FastAPI] startup, shutdown 이벤트 처리

개요여타 다른 애플리케이션처럼 FastAPI 애플리케이션 또한 처음 실행을 시작할 때 필요한 설정값을 읽는다던가, 실행을 종료할 때 데이터를 정리하는 등의 작업이 필요할 수 있다. FastAPI는 이러한 종류를 작업을 지원하기 위해 @FastAPI.on_event라는 데코레이터를 제공한다. 이번 글에서 사용 방법을 간단히 알아본다.  @FastAPI.on_eventFastAPI.on_event 데코레이터는 애플리케이션이 시작하기 전이나 종료될 때 실행되어야 하는 이벤트 핸들러를 정의한다. startup, shutdown 이벤트에 대한 핸들러만 정의할 수 있으며, 이벤트 핸들러는 두 개 이상 정의할 수 있다. 참고로 startup 이벤트 핸들러의 경우 모든 이벤트 핸들러가 완료될 때까지 애플리케이션은 요청..

Python 2025.01.23

[백준] 3004 - 체스판 조각

문제문제 : https://www.acmicpc.net/problem/3004상근이는 체스판을 톱으로 자르려고 한다. 체스판은 최대 N번 자를 수 있고, 변에 평행하게만 자를 수 있다. 또 자를 때는 체스판의 변의 한쪽 끝에서 다른 쪽 끝까지 잘라야 하며, 자른 후에는 조각을 이동시킬 수 없다.이때 최대 몇 조각을 낼 수 있는지 구하여라.   풀이체스판 조각이 최대가 되기 위해서는 가로와 세로를 번갈아가면서 잘라야 한다.체스판 조각의 수는 가로 조각의 수와 세로 조각의 수를 곱한 값에 해당하며, 자를 때마다 조각은 1개씩 증가한다. 또한 가로 조각과 세로 조각이 모두 증가하기 위해서는 2번 잘라야 한다.때문에 가로 조각은 N을 2로 나눈 몫에 1을 더한 값, 그리고 세로 조각은 N을 2로 나눈 몫에 나머..

카테고리 없음 2025.01.22

[Python] Async - signal 처리하기

개요2025.01.09-[Python] signal - 프로그램 종료 처리에서 Python 프로그램의 프로그램 종료 등의 처리를 위한 signal 모듈 사용방법에 대해 알아보았다. 그런데 이제는 비동기로 프로그래밍된 Python 프로그램의 종료 시에 처리해야 할 작업이 생겼다. 이번 글에서는 Python async를 사용할 때에 signal 수신 및 처리 방법을 알아보자.   loop.add_signal_handlerPython은 asyncio라는 고수준 라이브러리로 비동기 프로그래밍을 쉽게 할 수 있지만, signal 처리와 같은 세부 제어를 하기 위해서는 이벤트 루프를 직접 다루어야 한다.이벤트 루프는 시그널 처리를 위한 add_signal_handler라는 함수를 제공한다.loop.add_signa..

Python 2025.01.21

[Python] signal - 프로그램 종료 처리

개요2025.01.08-[Python] KeyboardInterrupt - 프로그램 종료 처리에서 키보드 입력에 의한 프로그램 종료를 처리하는 방법을 알아보았는데, 프로그램은 동작 중 예기치 않게 종료되거나 SIGTERM 등의 시그널에 의해 종료될 수도 있다. 이번 글에서는 Python 프로그램에서 시그널을 처리하는 방법을 적어둔다.   signal.signalPython의 signal 모듈의 signal 함수는 시그널을 수신받을 때 실행할 사용자 정의 처리기를 정의하고 등록할 수 있게 한다. signal.signal(signalnum, handler)매개변수로 수신받을 시그널 값과 처리한 작업이 정의된 함수 hander를 전달한다. hander는 signum(시그널 번호)과 frame(현재 스택 프레임..

Python 2025.01.20

[Python] KeyboardInterrupt - 프로그램 종료 처리

개요프로그램을 개발하다 보면 프로그램 종료 시 처리되어야 하는 몇 가지 작업이 있을 수 있다. 이번 글에서는 Python 애플리케이션을 종료시킬 때 필요한 작업을 처리할 수 있도록 하기 위한 방법 중 KeyboardInterrupt를 활용한 방법을 정리해 둔다.  KeyboardInterruptKeyboardInterrupt는 사용자가 키보드 동작(ctrl + c, SIGINT)을 사용하여 프로그램 실행을 종료할 때 발생시키는 내장 예외이다. 동작하는데 많은 시간을 필요로 하는 프로그램을 제어할 때 필요할 수 있다. KeyboardInterrupt는 예외이기 때문에 try ~ except 구문으로 처리할 수 있다.try: 작업except KeyboardInterrupt: 종료 작업다만 Keyboa..

Python 2025.01.17

[Azure] Blob Storage 생성

개요2025.01.06-[Azure] Storage Account 만들기에서 Azure의 스토리지 서비스를 사용하기 위한 Storage Account를 생성해보았다. 이번 글에서는 Azure Portal에서 Blob Storage를 생성하는 방법을 적어둔다.  컨테이너 생성Azure Blob Storage에서 데이터에 해당하는 Blob은 Container에 저장된다. 먼저 Container부터 만들어보자. 1. 컨테이너를 생성할 스토리지 계정으로 이동 2. 스토리지 계정 메뉴에서 컨테이너 선택메뉴 > 데이터 스토리지 > 컨테이너로 이동하면 된다. 3. 새 컨테이너 만들기 버튼 클릭 4. 컨테이너 설정 및 생성컨테이너 이름 규칙에 맞게 이름을 지정하고, 익명 액세스 수준 등의 다른 설정을 지정한다. 5. ..

Azure 2025.01.16

[Azure] Storage Account 만들기

개요2025.01.05-[Azure] Blob Storage 란에서 Azure의 개체 스토리지 서비스인 Blob Storage에 대해서 알아보았는데, 이제 실제로 Blob Storage를 구성하고 사용해보려고 한다. 이번 글에서는 Blob Storage를 구성하기 위해 필요한 Storage Account를 생성해보려고 한다.  Storage AccountStorage Account는 2024.12.30-[Azure] Storage 서비스에서 간략하게 설명했으나 여기서 좀 더 자세히 설명한다.Storage Account란 Azure Storage 서비스를 그룹화하는 컨테이너로, 여러 데이터 서비스를 그룹으로 관리할 수 있게 한다.Storage Account 생성 시 지정하거나 생성 후 변경한 설정 사항은 ..

Azure 2025.01.15

[Azure] Blob Storage 란

개요2024.12.30-[Azure] Storage 서비스에서 Azure에서 제공하는 스토리지 서비스의 여러 종류에 대해서 알아보았다. 이번 글에서는 그중 개체 스토리지에 해당하는 Blob Storage에 대해서 알아보려고 한다.  Azure Blob StorageAzure Blob Storage는 클라우드 개체 스토리지로, 텍스트나 이진 데이터 같은 대량의 비정형 데이터를 저장하는데 최적화되어 있다. 또한 분산 접근용 파일 저장, 비디오 및 오디오 스트리밍, 로그 파일 쓰기, 백업/보관용 데이터 저장, 브라우저에 이미지 또는 문서 직접 제공 등의 처리를 위해 설계되었다.사용자는 HTTP/HTTPS를 사용해 Blob Storage에서 접근할 수 있고, 개발자는 Java, Python, Go와 같은 프로그..

Azure 2025.01.14
1 2