본문 바로가기

분류 전체보기

(249)
MacOS Big Sur에서 poetry로 패키지 설치안될 때 배경 BigSur가 나온지 그래도 이제 어느정도 된 듯 싶어 버전 올렸다. UI도 좀 더 둥글둥글 해지고 이뻐져 맘에 들고 있던 차... poetry로 파이썬 패키지를 설치하다가 문제를 발견한다. [다음 버전을 사용 중이다.] - MacOS Big Sur 11.2.3 - Poetry 1.1.4 문제 cryptography 라는 패키지를 poetry 로 설치하면 문제가 등장한다. 이 에러의 끝에 가보면 결국 다음과 같은 에러를 보게된다. error: can't find Rust compiler 찾아보니 공식 문서에 설명되어 있기로 이 패키지를 설치하는데는 Rust compiler가 필요하다고 한다. 그래 뭐 그럴 수 있지... 근데 뭐 그럼 내가 Rust를 설치해야 하는건가? [열 받는거] 열 받는건 Bi..
[DND 4기] 서버 개발 회고 1 - 서비스 소개 및 개요 최근에 약 두 달여간 참여했던 DND 4기 활동을 마무리하며 지난 웹 백엔드 개발 과정을 회고해보려 한다. 백엔드 개발을 진행하며 했던 고민, 선택과 해결 과정, 그리고 좋았던 것과 아쉬웠던 것 등 위주로 적어볼 계획이다. DND 활동 자체에 대한 것이나 서비스 기획 단계, 디자인이나 브랜딩에 대한 것들은 여기서는 다루지 않는다. (다만 이번 글에서만 짧게 소개한다.) 하나의 글에 다 풀어내 볼까 생각했으나, 이전에 감명 깊게 읽은 백엔드가 이정도는 해줘야 함 시리즈 처럼 프로젝트 진행 순에 맞추어 글 하나에 주제를 하나씩 두어 써나가도 좋을 거 같단 생각이 들었다. 이래야 나도 안 지치고 글을 쓸 거 같고... 시간 나는 대로 주말에 틈틈이 써볼 예정이다. 이번 글에서는 만들고자 했던 서비스와 앞으로 ..
Poetry 에서 바로 실행 명령 가능한 패키지 만들기 배경 어떤 파이썬 패키지들을 설치한 뒤 터미널에서 특정 명령어로 바로 실행가능한 경우가 있다. 예를 들면 다음과 같다. # 다음 처럼 패키지를 설치한 뒤 $ poetry add pytest # pip install pytest 로 해도 상관없다. # 다음 처럼 바로 실행 가능하다. $ pytest 이렇게 설치 후 터미널에서 특정 명령어로 바로 실행가능한 poetry 패키지를 만들려면 어떻게 해야할까? 해결 방법 poetry 프로젝트 내에 있는 pyproject.toml 의 [tool.poetry.scripts] 를 활용하면 된다. 간단한 예제로 직접 확인해보자. 이전 포스트 "Poetry 에서 로컬 패키지 add 하기" 의 예제를 그대로 이어서 사용해본다. 프로젝트 구조는 다음과 같다...
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..