본문 바로가기

전체 글14

[python] asyncio 비동기 프로그래밍의 기초 서두 이글은 FastAPI를 사용하다가, 비동기를 좀더 깊이 알고자 작성하게 되었다. python3 에서는 비동기 프로그래밍을 지원하고 있다. 구체적으로는 python3.4 에서는 asyncio 모듈이 추가되었고, python 3.5 에서는 async, await 키워드가 추가 되어서 비동기 프로그래밍을 지원하고 있다. 이를 간단히 설명해보고자 한다. (더 자세한 설명은 아래에 참고 링크를 참고 바랍니다) 설명 순서는 1-1. iterator → 1-2. generator → 2-1. coroutine → 2-2. yield from → 3. future, tasks → 4. event loop → 5-1. asyncio → 5-2. async,await 이다 iterator와 generator 는 as.. 2023. 1. 30.
[python] 의존성 주입 (Dependency Injection) 기초와 FastAPI 서두 여기서는 의존성주입(Dependency Injection) 의 기초에 대해 간단히 알아보고, Python Dependency Injector + FastAPI 를 통해 간단한 예제를 구현해보자. 기초 지식 Dependency Injection 은 객체지향의 5대 원칙 SOLID 중 DIP(Dependency Inversion Principle) 을 만족시키기 위해 사용하는 방식이다. DIP 는 간단히 말하면 추상 클래스가 구체 클래스에 의존하는게 아니라, 구체 클래스가 추상클래스에 의존하도록 하여 프로그램을 확장 가능하도록 개발하기 위한 방법론이다. 설명이 어려우니 예를 들어보자. 우리가 게임 캐릭터를 생성하는데, 캐릭터는 여러 무기를 가질 수 있다고 가정해보자. 이 때, 만약 Character 클.. 2023. 1. 27.
[공통] Makefile 의 기초에 대해 알아보자 서두 이 글은 회사에서 makefile을 사용하여 프로젝트의 에러 체크, 빌드, 배포 등을 관리하고 있어서 정리하게 되었다. makefile이란? 프로젝트(프로그램)를 관리할때 초기 컴파일과 재컴파일 시 유용한 기능을 제공하는 도구이다. 일련의 과정을 직접 해야 하는 경우에 shell script를 짜도 되는데 왜 makefile 써야하는지 물어볼 수 있다. makefile은 incremental build라는 강력한 기능을 제공한다! 이는 코드 수정 발생 시 변경된 소스에 의존성이 있는 코드만 다시 빌드하는 기능이다. 빌드 대상별로 의존성을 명시해 주면 이후부터는 의존성이 있는 코드들만 다시 빌드하게 되는데, 초기에는 그리 유용하지 않지만, 프로젝트가 커지면 빌드 시간이 굉장히 오래걸리고, 이는 꼭 필.. 2023. 1. 27.
[DE] File / Block / Object Storage 비교 시작 오늘날 데이터의 폭증으로 저장 방식에도 변화가 일어나고 있다. 이렇게 데이터가 많아지면서 올바른 방식의 저장소를 사용하는 것은 매우 중요해졌다. 이에 스토리지의 종류를 알아보고자 한다. (공부하며 정리한 것으로 틀린 부분 지적은 언제나 환영합니다!) 파일 스토리지 말 그대로 데이터를 파일로 저장하여 관리한다. 파일들의 집합은 계층 구조로 관리가 되고, 경로를 알아야 접근이 가능하게 된다. 우리가 pc에서 흔히 사용하는 익숙한 방식이다. 파일은 저장시 날짜, 크기 등의 제한된 메타데이터를 가질 수 있다. 그렇기 때문에 아주 대용량의 파일들이 있는 경우 폴더를 샅샅히 뒤지는게 어려워 관리하는데는 비효율적이다. 파일을 한 HW 에서 계층을 나누어 관리하기 좋지만, 용량이 가득차 확장하려면 단순히 HW를 .. 2023. 1. 25.