mingkeJul 24, 2024Ruff - Rust로 만들어진 Python linter & formatter 알아보기Python 프로젝트를 관리하다 보면 코드 스타일을 일관되게 유지하는 것이 중요합니다. 이것을 도와주는 파이썬에 다양한 linter와 formatter가 있습니다. 저는 그동안 flake8과 black의 조합으로 사용해왔습니다. 그러다가 이번에 Ruff로 옮기게 되어 Ruff에 대해 간단하게 정리해보려고 합니다.Python
mingkeJul 22, 2024Python 데코레이터 만드는 방법 - 오름캠프파이썬 데코레이터는 함수나 클래스를 감싸서 꾸며주는 기능을 합니다. 공통된 기능을 데코레이터로 만들어 중복을 줄여 재사용성을 높일 수 있습니다.Python오름캠프
mingkeJul 20, 2024Python PDM 사용법 알아보기FastAPI Repository에서 PDM이 사용되고 있는걸 발견했는데 궁금해서 저도 한 번 써봤습니다.Python
mingkeJul 12, 2024CLI 터미널 출력 테스트 하기(feat.pytest)이번 프로젝트에서는 pytest로 테스트 코드를 작성해보았습니다. 터미널에 출력된 값을 테스트하는 것을 잘 몰랐는데요. 알아보니 아주 쉽게 할 수 있는 방법이 있어서 그 방법을 이번 포스팅에서 정리해보려고 합니다.PytestPython
mingkeJul 11, 2024Typer를 이용한 Python CLI 만들기Typer 타입힌트를 기반으로하는 CLI 개발 라이브러리입니다. FastAPI 개발자분이 만들었습니다. FastAPI와 비슷한 패턴으로 개발할 수 있다는 것이 아주 매력적입니다Python
mingkeJul 10, 2024Python datetime 라이브러리 사용법 - 오름캠프어제 공부 중에 파이썬에서 날짜와 시간을 다루는 것이 있었고 datetime 라이브러리를 사용하고 있었습니다. 좀 더 자세한 설명으로 알려드리기 위해 이 글을 작성합니다.Python오름캠프
mingkeJul 2, 2024오름캠프 - Python 처음 배우는 파이썬 클래스최근 오름캠프에서 Python class 진도를 나갔습니다. 많은 분들이 class를 어려워하셨습니다. Python은 객체지향프로그래밍 언어로 class를 잘 아는 것은 기본입니다. 객체를 만드는 틀이 class이기 때문입니다. 서브강사로서 자습시간에 훈련생 분들과 class 복습을 했습니다. 관련 내용을 블로그에 포스팅하려고 합니다.Python오름캠프
mingkeJun 27, 2024오름캠프 - Python 팁 자잘한 거 몇가지 공유 v1자습시간에 훈련생 분들과 문제풀기 연습을 진행했었습니다. 같이 문제 풀다가 이런건 자잘하지만 공유하면 좋긴 좋겠다 싶은 것들을 포스팅 해보려고 합니다. 몰라도 문제 없지만 그래도 알아둬서 나쁠거 없는 그런것들을 공유 해보겠습니다.Python오름캠프
mingkeJun 26, 2024오름캠프 - map함수와 list comprehension 비교map이냐 List Comprehension이냐는 개인 취향 같습니다. 그리고 둘 다 코드가 간결해지긴 하지만 너무 생략하면 오히려 가독성이 떨어지는 경우도 많아서 일반 for문을 사용하는 경우도 많습니다.Python오름캠프
mingkeJun 23, 2024오름캠프 - Python 변수 공부하기변수는 파이썬만의 특징은 아닙니다. 변수는 데이터를 저장하고 참조할 수 있는 이름을 가진 메모리 공간입니다. 대부분의 프로그래밍 언어에서 변수를 사용합니다. 파이썬에서 모든 데이터는 객체(object)입니다. 객체는 특정 클래스로부터 생성된 인스턴스(instance)라고도 불립니다.Python오름캠프
mingkeJun 10, 2024python 문자열 템플릿 알아보기문자열 템플릿을 만드는 방법은 f-string 같은 포맷팅 방법 이외에 따로 파싱을 구현하여 사용할 수 있었습니다. 정규표현식을 사용을 위한re 라이브러리나 string 라이브러리를 이용하면 가능합니다.Python
mingkeJun 9, 2024FastAPI lifespan asynccontextmanager 직접 구현하기 (feat.__aenter__, __aexit__)FastAPI에서 startup 이벤트와 shutdown를 구현하는 방법으로 lifespan을 사용하는 방법이 있습니다. 이번 포스팅에서 좀 더 객체지향적이고 사용성 좋은 방법으로 구현해보았습니다.FastAPIPython
mingkeJun 1, 2024Rust로 Python 라이브러리 만들어보기(PyO3)취미로 Rust를 공부하고 있습니다. 이제 어느 정도 기본적인 문법을 익혔고, Rust코드를 조금은 읽을 수 있게되었습니다. 그래서 Rust로 Python 라이브러리 만들기 Hello World 정도를 한 번 해보려고 합니다.PythonRust
mingkeMay 28, 2024FastAPI에서 Scheduler 사용하기백엔드 개발하다보면 Scheduler를 개발해야할 때가 종종 있습니다. FastAPI를 사용할 때 복잡하지 않은 Scheduler라면 apscheduler 라는 라이브러리를 사용하면 됩니다.간단하게 알아보도록 하겠습니다.FastAPIPython
mingkeMay 15, 2024Python 클래스 딕셔너리처럼 만들기 (매직메소드 활용)Dictionary 이야기를 하려는 것은 아니고 Python의 클래스를 dict 처럼 만들어 사용할 수 있는데 문득 이 내용을 가볍게 정리하고 싶어 포스팅합니다.Python
mingkeApr 8, 2024Python 비동기 - 이벤트 루프 간단 정리이전 글에 이벤트 루프 기반의 비동기와 멀티 스레딩 기반의 비동기를 비교하는 글을 작성했습니다. 이번 글에서는 비동기 프로그래밍의 핵심 요소, 이벤트 루프에 대해 자세히 알아보겠습니다.Python
mingkeApr 4, 2024Python 비동기 이벤트루프 방식과 멀티스레딩 방식 비교Python에서 비동기 프로그래밍은 효율적인 I/O 작업과 고성능 애플리케이션 구축에 많이 사용됩니다.최근 면접에서 ‘Python 비동기에서 이벤트루프 방식과 멀티스레딩 방식이 어떻게 다른지 설명해 보시오’ 라는 질문을 받았습니다. 오늘은 이와 관련해서 포스팅을 해보려고 합니다.Python
mingkeMar 13, 2024Python ThreadPoolExecutor - concurrent.futures 파이썬 비동기오늘은 Python에서 어떠한 작업들을 동시에 처리할 수 있는 방법들 중에 하나인 ThreadPoolExecutor에 대해서 알아보도록 하겠습니다. 멀티스레딩을 쉽게 구현할 수 있게 해주며, 주로 I/O 바운드 작업에서 성능을 개선하기 위해서 사용됩니다. I/O 바운드 작업은 프로그램의 실행 속도가 입출력 작업에 의해서 결정되는 작업입니다. 디스크에 접근하거나, 네트워크 통신을 하는 경우를 말합니다. 이 정도 개념만 알고 코드 넘어가겠습니다.Python
mingkeFeb 9, 2024python calendar 파이썬 달력 다루기 - python 표준 내장 라이브러리Python에서 제공하는 calendar 라이브러리에 대해서 알아보려고 합니다. calendar라이브러리는 날짜 관련 작업을 간편하게 사용할 수 있도록 제공해주는 라이브러리입니다. 최근 하고 있는 업무가 어드민 관련 기능을 만드는 것이 많이 있는데요. 아무래도 관리자들이 사용하는 것이다 보니 날짜와 관련된 내용을 다루게 되었습니다. 그래서 calendar에 대해서 블로그에 기록해보려고 합니다.Python
mingkeJan 21, 2024python pathlib 파일 경로 다루기 - python 표준 내장 라이브러리오늘은 python에서 파일 경로를 다루는 방법을 알아보려고 합니다. 파이썬을 처음 배울 땐 os.path를 이용해서 다루곤 했는데요. 이젠 python 내장 라이브러리인 pathlib도 많이 사용합니다. pathlib은 파일 시스템 경로를 객체로 취급하며, 경로 관련 작업을 효율적이고 직관적으로 수행할 수 있게 해줍니다.Python
mingkeJan 20, 2024python secrets - python 표준 내장 라이브러리secrets 는 이름에서 알 수 있듯, 보안과 관련해서 난수를 생성하는데 도움을 주는 라이브러리입니다. 3.6 버젼부터 추가되었습니다. “난수 생성은 random 라이브러리 사용하면 되는거 아님?” 이라고 생각할 수 있는데 random은 PNRG(Pseudo-Random Number Generator)를 사용해서 SEED값에 따라 랜덤이지만 순서가 정해집니다. 따라서 SEED값을 알면 순서를 알 수 있기 때문에 안전하지 않습니다Python
mingkeJan 16, 2024Python 암호화 AES-128-CBC 암호화 구현하기 - pycryptodome과 cryptography 사용하기암호화는 데이터 보안의 중요한 측면 중 하나입니다. 그리고 AES(Advanced Encryption Standard)는 가장 널리 사용되는 대칭 키 암호화 알고리즘 중 하나입니다. 최근 데이터를 암호화 할 일이 있었습니다. 하지만 저는 암호학에 대해 아는게 없습니다. 하지만 Python 라이브러리를 이용하면 쉽게 구현할 수 있습니다Python
mingkeJan 13, 2024Python QRCode 생성하기QRCode를 Python으로 간단하게 만들어봅니다. qrcode 라이브러리를 이용하면 아주 쉽게 만들수 있습니다.Python
mingkeJan 10, 2024SQLAlchemy ORM 속도 측정하기최근 FastAPI + Async SQLAlchemy 조합으로 백엔드 개발을 주로하고 있습니다. 며칠전까지 별 문제 없었는데 어제 API 응답 속도가 좀 느려진 것을 감지했습니다. 원인을 파악하던 도중에 ORM 속도를 측정봐야겠다고 생각했습니다. Async SQLAlchemy ORM의 Query를 실행하는데 걸리는 시간을 측정하는 데코레이터를 만들어보았습니다.PythonSQLAlchemy
mingkeJan 5, 2024Poetry - Python dependency 매니저 알아보기Poetry는 Python 프로젝트 관리의 많은 작업을 간소화하는 아주 강력한 의존성 관리 및 패키징 도구입니다. 최근 poetry를 사용하지 않는 팀원에게 poetry를 사용하는 방법을 알려줬었는데, 블로그에도 글로 한 번 남겨봅니다.Python
mingkeJan 3, 2024Python - ast, Abstract Syntax Tree 추상 구문 트리AST는 소스 코드의 구조를 트리 형태로 나타내는 것으로, 코드의 구조를 분석하고 다양하게 조작하는 데 사용할 수 있습니다. 오늘은 ast를 간단하게 알아보고 사용경험을 공유하고자 합니다.Python
mingkeDec 22, 2023FastAPI - 나만의 FastAPI 라이브러리 만들기FastAPI는 microframework라서 개발하다보면 자유도가 참 높다고 느껴지는것 같습니다. 백엔드를 개발하는데 정말 필수적인 것들만 있고 나머지는 원하는 대로 만들어서 쓰면 되는것 같습니다.FastAPIPython
mingkeDec 13, 2023Openpyxl으로 엑셀 파일 Python으로 쉽게 다루기Python에는 Pandas라는 강력한 데이터분석 라이브러리가 있습니다. Excel역시 pandas를 이용하면 쉽게 읽고 데이터를 가져올 수 있습니다. 하지만 pandas는 사이즈가 큰 라이브러리이기 때문에 Excel만 읽고 쓰고 하려 한다면 pandas를 설치하는것은 낭비일 수 있습니다. 오늘은 openpyxl을 이용하여 python으로 excel을 다루는 것을 익혀보려고 합니다. openpyxl은 xlsx확장자 파일의 엑셀을 읽고 쓸수있는 라이브러리입니다.Python
mingkeDec 6, 2023Boto3 - ECS 서비스 실행 및 종료하기AWS 콘솔에 들어가서 서비스를 삭제할 수도 있고 AWS CLI 를 통해서 할 수도 있고 다양한 방법이 있겠지만 Boto3를 이용해서 실행 및 종료하는 어드민 API를 만들기로 결정했습니다. 개발자가 아니더라도 권한이 있는 사람이라면 쉽게 가능할 수 있도록 하기 위해서 내린 결정이었습니다.AWSPython
mingkeNov 30, 2023파이썬 비동기 소켓통신 연결 방법오늘은 비동기 소켓통신의 구현 방법을 알아보겠습니다. 동기적으로 소켓 통신을 구현 하면, 외부 통신 시 I/O 바운드 작업으로 인해 블로킹이 발생하여 지연이 생길 수 있습니다. 그러나 비동기 방식을 사용하면 동시성이 향상되어 좀 더 빠르고 효율적으로 실행할 수 있게 됩니다.Python
mingkeNov 23, 2023aiohttp 비동기로 API 호출하기Python의 비동기 HTTP 클라이언트/서버 프레임워크입니다. 이것은 Python의 비동기 프로그래밍 기능을 활용하여, 동시에 여러 HTTP 요청을 처리할 수 있게 해주는 강력한 도구입니다. 동시에 여러 네트워크 요청을 처리할 때 I/O 대기 시간을 효율적으로 관리할 수 있게 해줍니다.Python