728x90
최근 Python 연습할 겸 이것저것 고민하면서, 레포지토리 하나를 셋업했다.이번 연습에서는 Python 프로젝트 관리 도구들을 적용하는 것 또한 목표여서 하나씩 찾아보고 있었는데, 그 중 가상 환경(패키징) 관리 도구로써 Pixi를 접할 수 있었고, 사용 경험이 괜찮은 것 같아서, 이에 대한 소개와 사용하는 방법을 공유하고자 한다. 사용 환경은 다음과 같다.OS : Windows 11CPU : AMD 5600XShell : Bash (Git)추가적으로 Code Quality Watcher로 ruff를 셋업해두어서 pyproject.toml은 사전에 구성되어 있는 환경이다.(ruff는 공부 더 하고 포스팅하는걸로..)Pixi란? Pixi by prefix.devNonepixi.sh Pixi는 자신을 모..
원래 Macbook Air M1으로 공부하거나 간단한 작업들을 진행해왔는데, 램도 8GB고 디스크도 최소 사이즈여서 최근들어 cursor를 돌리거나 컨테이너를 올리면 힘들어 하는게 눈으로 보여서, HW 스펙이 조금 넉넉한 윈도우 환경에 익숙해지려고 노력하고 있다. CMD 명령어들을 따로 공부하거나 하는 정도는 아닌.. 과정상에 Python으로 간단하게 돌려보고 싶은게 있어서, 가상환경 세팅하는 중에 git bash에서는 리눅스 명령어(bash shell)가 먹지만, conda는 CMD나 전용 프롬프트로 진행하고 있어서, 나름대로 불편하다 생각했다. 사소한 부분이지만 원래 자주 사용하는 명령어들을 alias 걸어두고 사용하는 편인데, 윈도우에서는 .bat 파일 만들고 PATH 경로에도 추가하고 하는 부분이..
*본 게시물은 강의를 협찬받아 작성하였습니다. 오랜만에 옵시디언 관련 포스팅을 진행합니다. 감사하게도 구요한 교수님의 옵시디언 바이블(Obsidian Bible) 강의를 지원받을 수 있었고, 강의를 수강하여 옵시디언을 AI와 통합하여 본인의 지식들을 체계적으로 관리할 수 있는 방법을 배울 수 있었습니다. 해당 포스팅에서는 강의 후기와 장점들, 플러그인 & AI 도구들을 사용한 개인적인 경험을 공유하려합니다. 포스팅 최하단에 본인이 수강한 옵시디언 바이블 (Obsidian Bible) 강의를 15% 할인하여 구매할 수 있는 할인 쿠폰을 제공하니, 참고해 주시면 좋을 것 같습니다.# 강의 후기강의를 수강하면서 가장 인상 깊었던 점은 "실제로 적용 가능한 지식 관리 시스템"을 구축할 수 있다는 점이었습니다. ..
비즈니스 로직을 작성하면서 정상 로직을 생각하는 것도 중요하지만, 예외 상황과 엣지 케이스에 대한 방어로직을 작성하는 데 신경을 더 쓰는 것은 당연할 것이다.try-catch문으로 예외를 잡아서 처리하는 것 뿐만 아니라, 커넥션, 메모리 등의 자원을 반환하거나 초기화 등을 수행하기 위해 finally 블럭을 사용하게 된다.김영한님의 중급 자바 강의를 들으면서 추가적으로 Java7에 도입된 try-with-resources 기능이 있음을 알게되었고, 추후에 업무에 사용할 수 있도록 차이점과 장점을 기록하는 것이 이번 포스팅의 목적이다. # 예시 시나리오차이점과 장점을 알아보기 위해 간단한 시나리오를 작성한다. Reader- 파일을 쓰기 위한 기본 기능 제공하는 메소드- 파일 열기, 쓰기, 닫기 메소드 존재..
이번 포스팅에서는 MongoDB 다중 업데이트 로직을 구현하면서 마주한 성능 개선의 필요성과 이를 풀어나간 방법들을 공유하고자 한다. 사용 환경은 다음과 같다.Spring 2.3.2MongoDB 5.0JDK 1.8.0Kotlin# 최초 기능 개발 - saveAll()해당 업무에서는 상태를 기반으로 Entity를 관리하며 비즈니스 로직을 태우는 프로세스를 구축하는 것이 필요했다.신규로 생성된 데이터들을 PENDING으로, 처리를 진행할 때는 PROGRESS, 처리 다 되면 SUCCESS & FAILED 등으로 관리한다. 그중 처리를 진행할 때 대상들을 일괄적으로 PENDING -> PROGRESS로 변경하는 작업이 필요했는데, 해당 과정에서 여러개의 데이터에 대한 업데이트를 진행했다. 최초 로직은 가장 ..
매번 회고적인 내용의 포스팅을 작성할 때 ~~~ 회고 이런식으로 타이틀을 잡는 것보단, 특정 주제를 통해 작성하는게 더 진정성 있고 작성하기도 원할하다 생각하여 작성 방식의 변주를 준 첫번째 포스팅이다. 이번 포스팅에선 현재 팀에 조인한 지 약 6개월이 넘은 시점의 나에게 성장했을까? 에 대한 질문을 던져 잘한 점과 못한 점을 짚어보려한다. 시간의 흐름에 따라 기억에 남는 것들을 위주로 경험해갔던 일들을 작성해보고자 한다.# 적응의 과정당연하게도 본인의 역할과 해야할 일, 팀의 목적과 제공하는 서비스에 대한 전반적인 사항들, 어떤 방식으로 업무를 진행해야하는지 등에 대한 온보딩으로 적응의 과정이 시작됐다. 이 시기에는 팀원분들께서 지금 업무가 몰린 시기라 신경을 많이 써주지 못한 것 같다고 말씀해주시는 ..
# 서론최근 개발한 데이터 파이프라인을 운영 환경에 적용하기 전 요구사항을 반영하는 과정에서, Airflow 스케줄링을 걸 때 catchup 값을 잘못 설정해서, 과거부터 현재 시점 사이에서 실행되지 않았던 DAG가 모두 실행되는 상황이 발생했다.catchup 설정 자체는 알고 있었지만, 버전업이 되면서 바뀐 설정 방법을 사용하지 않아 DAG Backfill이 발생해 특정 파티션 데이터를 Hive 테이블에 중복으로 인입시켰다.해당 Hive 테이블을 복원하면서 사용한 방법과 Airflow의 Backfiil 발생 원인을 정리하여 앞으로 이런 일을 반복하지 않도록 반성의 시간을 갖고 혹시 비슷한 이슈를 겪으신 분들에게 도움이 되고자 이를 공유한다.# 상황최근 구축했던 Data Pipeline를 최종 운영하기 ..
근황요즘 통 블로그를 쓸 시간(여유)이 없었는데, 간만에 프리한 주말이여서 포스팅을 작성하며 못했던 이야기를 적어보려 한다. 연 초 다짐은 일주일에 두 개씩 포스팅을 올리는 것이였을 텐데, 막상 일을 시작하고 나니 그럴만한 여유가 없었던 것 같다.정확하게는 여유가 없었다기 보단, 동기가 부족했던 것으로.. 근황을 먼저 간단히 작성해보면, 나름 바빳지만 엄청나게 쫓기고 힘들었던 시기는 아니였다. 올 초에 현재 회사에 입사하게 되면서 인생 처음으로 제대로된 경제 활동을 시작하게 되었고, 열심히 따라가기 위해서 노력했었다. 디테일한 부분은 블로그에 공유하기 어렵지만, 현재 팀에서 일을 하면서 백엔드 개발자 커리어를 확실하게 바라볼 수 있는 계기가 되었고, 관련하여 직 & 간접적인 경험을 쌓을 수 있는 상황이 ..
# 목적Python을 사용한 업무를 진행할 때, 대부분의 메소드에 @staticmethod와 @classmethod를 사용하고 있는데, 두 어노테이션이 갖는 의미와 차이점, 사용 방법 등을 정확하게 정리하는 것이 이번 포스팅의 목적이다. 추가로, 업무하면서 두 어노테이션을 쓰다 인스턴스 변수와 클래스 변수를 생각 안하고 짯던 경험이 있어서, 이슈 상황과 차이점 또한 간단히 정리하고자 한다.@staticmethodhttps://docs.python.org/3/library/functions.html#staticmethod Built-in FunctionsThe Python interpreter has a number of functions and types built into it that are alwa..
# 목적업무를 하면서 Dataclass를 컨벤션 중 하나로 사용하고 있었는데, 기존 개발자 분들께서 Dataclass를 왜 사용하셨는지를 이해하는 과정이 필요했다. 이번 포스팅에서 Dataclass의 개념과 장점에 대해서 공부한 내용을 정리하고 공유하고자 한다. 현재 Python 3.7 환경을 사용하고 있어, 3.7 버전을 기준으로 정리했다.# Dataclasses 패키지 Dataclass는 Dataclasses 모듈에서 제공하는 기능이다. Dataclasses 모듈은 3.7 버전에서 공식적으로 추가되고 3.12 버전에서도 관리되는 패키지이다. Dataclasses 모듈은 Dataclass 데코레이터 및 함수를 제공하여, 클래스 선언 시 __init__, __repr__, __eq__ 등의 메소드를 클..