정말 매번 기억이 나지 않는 git config 설정에 대해서 정리해두려고 한다. git config 설정을 해두지 않으면 github repository 에 push 또는 pull 하는 과정에서 매번 토큰을 입력해주어야 하는 번거로움이 있어 인증 정보를 캐시로 한 번만 설정해 두게 되면 토큰을 입력하지 않아도 자동으로 인증이 되기 때문에 설정을 해주어야 한다. Git 설정 확인git config --list Git 계정 설정하기전역 설정git config --global user.name {username}git config --global user.email {email}로컬 설정 (Repository 마다 다른 계정을 사용할 경우)git config --local user.name {username..
이번에는 API Router 를 만들어서 연결해보려고 한다. API Router 생성하기app 이라는 디렉터리를 생성해서 users 라는 router 를 작성하기 위한 routers 폴더와 users.py 파일을 생성해준다.전체 디렉터리 구조는 다음과 같이 되어있다..├── README.md├── app│ ├── main.py│ └── routers│ └── users.py└── requirements.txt 이때 주의해야할 점은 main 파일이 app 파일 안으로 들어갔기 때문에 uvicorn 을 사용해서 서버를 실행할 때 다음과 같이 main 파일의 경로를 변경해서 실행해야 한다.uvicorn app.main:app --reload users.py 파일에 이렇게 작성해주었다.from..
이제 FastAPI 를 설치하고 사용해보면서 알아가보자. 사전준비FastAPI 를 사용하기 위한 사전 준비를 먼저 하려고 한다. 사전에 준비해야할 것들은 다음과 같다.1. VSCodeFastAPI 를 사용하기 위한 IDE 로 VSCode 를 사용할 예정이다.2. 파이썬 가상 환경 Conda 또는 venv파이썬 환경에서 FastAPI 를 설치하고 필요한 라이브러리들을 설치해서 사용하기 위한 가상 환경을 만든다.3. Python 버전현재 날짜를 기준으로 3.14를 개발중에 있고 3.13 버전까지 나온 것으로 알고 있지만 지금은 3.11 버전을 사용할 예정이다.4. Git Repository 생성하기FastAPI 를 사용하면서 모든 코드를 Github Repository 에 올려 관리하려고 한다.모든 코드는 ..
Python 으로 API 서버를 만들기 위해서는 아래와 같이 다양한 프레임워크를 찾아볼 수 있다.Django FrameworkFlaskFastAPI여러 프레임워크 중에서 FastAPI 에 대해서 알아보고 직접 FastAPI 를 사용해서 API 서버를 만들어보는 과정에서 대해서 정리해보려고 한다. 처음부터 완성하는 것이 아니라 하나씩 살을 붙여가며 만들어가는 과정을 정리할 예정이다. FastAPI 에 대해서먼저 FastAPI 가 무엇인지 알아보자. GitHub - fastapi/fastapi: FastAPI framework, high performance, easy to learn, fast to code, ready for productionFastAPI framework, high performanc..
길고 길었던 임금체불이 잘 마무리되고 이직하고나서 6개월이라는 시간이 흘렀다.6개월 동안 정말 많은 일들이 있었고 빠르게 시간이 흘러간 것 같다. 지난 2024년도 회고에서도 이야기했지만 9월에 입사해 3개월 동안은 회사에 적응하고 수습 기간을 거치느라 정말 빠르게 시간이 흘러갔던 것 같다. 다행히도 임금체불이 잘 마무리되어서 마음 편히 보냈던 것 같기도 하다. 그렇게 힘들었던 24년도를 마무리하고 25년 한 해가 시작되었다. 새 해를 보내고 1월에 내가 속한 조직이 제주도로 워크샵을 가게 되었다. 한 해 고생 많았다는 의미와 새롭게 시작할 한 해를 잘 시작할 수 있도록 매 년 워크샵을 가는 것 같았다. 나는 워크샵을 처음 가는 것이기 때문에 사실 긴장도 많이 되기도 했고 술을 잘 마시지 않다보니 잘 어..
파이썬으로 개발 또는 분석을 하는 과정에서 Jupyter Notebook 을 많이 사용하게 되는데 jupyter notebook 의 커널에서 특정 커널을 선택해서 사용할 수 있다. 만약 사용하고 싶은 라이브러리만 별도로 설치해서 사용하고 싶다면 가상 환경을 설치해서 연결해주는 방법이 있다. 파이썬 가상 환경에는 venv 와 anaconda 를 주로 사용하곤 하는데 나는 conda 를 사용해서 가상환경을 연결해보려고 한다. Conda 가상 환경 생성하기원하는 파이썬 버전을 설정해서 가상 환경을 생성한다.나는 dacon 에서 사용하기 위한 커널을 jupyter notebook 에서 사용할 예정이다.conda create --name dacon python=3.11 ipykernel 설치하기jupyter 에서..
Postgresql 에 데이터를 업데이트하는 과정에서는 insert 를 할 때 on conflict 절에서 고유 키를 사용하여 충돌을 감지하고 충돌이 나는 경우에는 고유 키를 가진 컬럼의 값을 업데이트하고 그렇지 않은 경우 새로운 행을 추가해주게 된다.INSERT INTO {table_name} ({table_columns}) SELECT {update_columns} FROM {update_table}ON CONFLICT ({unique_key}) DO UPDATE SET {update_columns}; 위의 쿼리와 같이 ON CONFLICT 를 통해 고유키를 통해 업데이트의 여부를 결정하게 된다. 위의 쿼리를 통해 데이터를 업데이트 하려고 했는데 고유키 값은 분명 중복이 되지 않는 것을 확인했지만 업..
기본적으로 배열에서 원하는 값을 찾기 위해서 주로 =, >, =, Postgresql 에서는 배열의 값을 찾는 여러 배열 연산자가 있어 정리해보려고 한다. 내가 배열 연산자를 찾게된 이유는 Postgresql 에서 tstzrange 라는 컬럼 타입이 있는데 해당 컬럼은 2개의 timestamptz 값을 가지는 배열의 형태로 되어있다. 따라서 tstzrange 타입의 컬럼 값을 통해서 값을 찾기 위해서는 배열 연산자를 통해 원하는 값을 찾아야 하는데 찾아보니 종류가 생각보다 많아서 정리해보려고 한다. Equal Operator (=)배열이 같은지 비교하는 연산자select array[1, 2] = array[1, 2] as equal_operator, -- True array[1, 2] = array[2..
내가 원하는 일을 한다는 건 무엇을 의미하는 걸까 나는 그저 내가 원하는 일을 하고 싶어서 열심히 준비하고 찾아다녔던 것 같다. 그렇지만 현실은 내가 원하는 대로 흘러가지 않았다. 내가 원하는 것과는 반대로 흘러갔고 반대로 흘러가고 싶지 않아 더 발버둥 친 것 같다. 그러다 결국 지치더라. 도대체 내가 원하는 일을 한다는 건 뭘까.. 왜 항상 내가 하고자 하는 것과는 반대로 하게 되고 가로막히고 불안에 떨어야하며 결국에는 체념에 이르러 받아들이게 된다. 나만 그런 게 아니라 나와 같은 일을 겪는 사람들도 분명히 어딘가에 있을 것이고 알 수는 없지만 정말 힘들게 버티며 나아가고 있을텐데... 분명 나만 그런게 아닌데... 방향이 나의 의지와는 달라졌을 때 다시 방향을 잡기 위해서 하는 행동을 나는 최선이라..
vscode 를 사용하다보면 폴더를 생성하고 그 폴더 하위에 하나의 폴더를 생성하게 되면 다음과 같이 폴더가 겹치는 경우가 발생한다. 이렇게 겹치는 이유는 vscode 에서 기본 값으로 compact folders 설정을 활성화 해두었기 때문이다. 그래서 이 설정을 비활성화 해주면 된다. vscode 에 접속해서 MacOS 기준으로 [Command] + [,] 를 통해 Settings 를 실행한다.그리고 compact 를 검색하면 다음과 같이 Compact Folders 옵션을 확인할 수 있다. 가장 위에 있는 Explorer: Compact Folders 의 체크를 해제해주면 된다. 그럼 다음과 같이 겹쳐져있던 폴더가 풀어서 보여주는 것을 확인할 수 있다.