본문 바로가기

분류 전체보기

(246)
Poetry 에서 로컬 패키지 add 하기 배경 poetry 를 쓰면 일반적으로 add 명령어로 패키지를 가상 환경에 추가한다. 예를 들어 pandas 를 추가하고 싶으면 다음처럼 하면 된다. $ poetry add pandas 대부분의 경우 이렇게 pypi 에 등록된 패키지를 설치하곤 한다. 그런데 만약 pypi에 등록되지 않은 로컬 패키지를 add 하고 싶은 경우라면 어떨까? 예를 들어 프로젝트 패키지 구조가 다음처럼 되어 있다고 하자. my-project ├── dependencies │ └── my-sub-package │ ├── README.rst │ ├── my_sub_package │ │ ├── __init__.py │ │ └── my_func.py │ └── pyproject.toml └── pyproject.toml my-proj..
2020년 내가 해왔던 것들을 회고하며 0. 들어가며 2020년 올 한해를 되돌아 보며, 무엇을 했고 어떤 고민들을 했으며 어떻게 살아왔는지를 되돌아본다. 딱히 정리된 글은 아니며, 나 역시 글을 쓰면서 올해 초부터의 기억을 하나씩 더듬게 될 거 같다. 1. 쏘카 입사 3월 9일. 첫 출근을 했다. 코로나로 인해 신입 OT를 하지 않고, 내가 소속할 팀이 있는 곳으로 바로 가게 되었다. 데이터 엔지니어링 팀이었다. 내 자리엔 아직 뜯지 않은 새 맥북 박스와 DELL 모니터가 있었다. 내가 고른 새 실버 색상의 맥북과, 자리 위에 놓여진 이름표를 보니 내가 정말 이 회사의 정직원으로 취업했다는 것이 실감났다. 옆 자리에 계신 착한 인상을 가지신 분이 이런저런 것들을 도와주셨다. 녹스라는 분이었다. 이 회사에서 상대적으로 오래 있으셨다고 한다. ..
도메인 주도 설계 철저 입문 5부 - 아키텍처와 앞으로의 학습 이 글은 도메인 주도 설계 철저 입문 (위키북스) 를 읽고 개인적으로 정리한 글입니다. 0. 들어가며 이번 글에서는 DDD와 함께 자주 언급되는 아키텍처에 대해 다룬다. 책에서는 아키텍처에 대해 다음처럼 소개하고 있다. 아키텍처는 간단히 말해 코드를 구성하는 원칙이다. 코드가 어디에 배치돼야 하는지에 대해 답을 명확히 제시하며, 로직이 무질서하게 흩어지는 것을 막는다. 개발자는 아키텍처가 제시하는 원칙에 따르면서 "어떤 로직을 어디에 구현할 것인지"를 고민하지 않아도 된다. 이로써 개발자가 DDD의 본질인 "도메인을 파악하고 표현하는 것"에 집중할 수 있게 해 준다. DDD에서 아키텍처 역할의 핵심은 "도메인 객체"를 지켜내는 것이다. 이것이 가능하다면 다음 아키텍처 중 어떤 것을 사용해도 무방하다. 계..
도메인 주도 설계 철저 입문 4부 - 지식 표현을 위한 고급 패턴 이 글은 도메인 주도 설계 철저 입문 (위키북스) 를 읽고 개인적으로 정리한 글입니다. 0. 들어가며 이번 글에서는 책에서는 고급 패턴이라고 표현되어 있는, 도메인을 더 잘 표현할 수 있는 방법들을 배운다. 1. 애그리게이트 (Aggregate) 1.1. 애그리게이트 예시 먼저 다음 예시를 보자. @dataclass class User: id: UserId = field(init=False, default_factory = UserId) name: UserName = field(compare=False) User 라는 엔티티 객체(Entity)는 UserId 와 UserName 이라는 값 객체(Value Object) 로 구성되어 있다. 여기서 User, UserId, UserName 이라는 3개의 객체..
도메인 주도 설계 철저 입문 3부 - 애플리케이션을 만들기 위한 패턴 이 글은 도메인 주도 설계 철저 입문 (위키북스) 를 읽고 개인적으로 정리한 글입니다. 0. 들어가며 이전 글까지는 도메인 모델을 표현하는 방법과 이를 도메인 모델을 다루는 방법을 배웠다. 이번 글에서는 본격적으로 애플리케이션을 만들기 위한 패턴을 배운다. 즉 이제 만들어 놓은 "값 객체", "엔티티" 그리고 "서비스"를 실제 유저의 관점에서 사용할 수 있도록 유스케이스를 하나씩 만들어나가는 것이다. 1. 리포지토리 (Repository) 1.1. 리포지토리의 역할 리포지토리의 일반적인 의미는 "보관창고"다. 이런 의미에 맞게, 리포지토리 객체는 데이터를 저장하고 필요시 다시 복원하는 역할을 한다. 쉽게 말해 DB와 연결하여 데이터를 DB에 저장하고, 불러오는 일을 맡는다고 생각하면 된다. 다만, 꼭 D..
도메인 주도 설계 철저 입문 2부 - 지식 표현을 위한 패턴 이 글은 도메인 주도 설계 철저 입문 (위키북스) 를 읽고 개인적으로 정리한 글입니다. 0. 들어가며 이번 글에서는 도메인 지식을 어떻게 표현할 것인지에 대한 방법을 배운다. 크게 3가지를 다룬다. 값 객체 (Value Object) 엔티티 (Entity) 도메인 서비스 (Domain Service) 1. 값 객체 (Value Object) 1.1. 값 객체 예시 보통 프로그래밍 언어에는 원시 타입(Primitive) 자료형이 있다. 그리고 이를 이용해 여러 값들을 표현할 수 있다. 예를 들면, "이름"은 다음처럼 string 으로 표현할 수 있다. full_name = "jeon heumsi" 그러나, DDD에서는 이처럼 원시 타입을 사용하지 않고, 도메인에 맞는 객체로 정의해 사용한다. class F..
도메인 주도 설계 철저 입문 1부 - 들어가며 & 목차 이 글은 도메인 주도 설계 철저 입문 (위키북스) 를 읽고 개인적으로 정리한 글입니다. 들어가며 평소 궁금해했던 도메인 주도 설계, 일명 DDD 관련 책이 최근에 나와 읽어보았다. 도메인 주도 설계는 에릭 에반스님의 책이 고전으로 가장 유명한데, 사실 이 책을 읽을 엄두가 안났다. 늘 그렇듯 고전 자체를 읽기란.. 분량도 그렇고, 뭔가 시작부터 쉽지 않기 때문이다. 그러던 차, 나같은 입문자를 위한 "도메인 주도 설계 철저 입문" 이라는 책이 아주 따끈따근하게 나왔으니, 이 책부터 가볍게 읽어보면, DDD에 어렵지 않게 접근할 수 있겠다 싶었다. 분량은 약 350페이지 가량되는데, 내용이 "입문"이라는 단어에 딱 맞게 어렵지 않아 금방 읽는다. 나는 다 출퇴근 + 주말에 읽는데 약 2주가량 걸린 거 같다..
나의 파이썬 환경 구축기 2 - pyenv + poetry 저번 글에 지금까지 써본 것들에 대한 생각을 주저리 주저리 적었고... 이제 내가 현재 사용하는 파이썬 환경 구축 방법에 대해 본격적으로 이야기해보려 한다. 콘다를 쓰고있었다면..? 지우자 내가 제일 처음 한 일은 내 맥북에 깔린 아나콘다를 지우는 것이었다. 이 지긋한 콘다 이제는 보내주자. 공홈에 지우는 방법이 설명되어있다. 순서만 간략히 적으면 다음과 같다. conda install anaconda-clean 로 anaconda-clean 설치 설치 후 anaconda-clean --yes 실행 ~/bash-profile 혹은 ~/zshrc 에서 export PATH="/Users/{user_name}/anaconda3/bin:$PATH" 삭제 후 저장 rm -rf ~/anaconda3 실행 rm -..