서론 최근 trackpurchase 라는 프로젝트를 진행 중이다. 다양한 쇼핑 플랫폼에서 결제기록을 한번에 조회 할 수 있고, 또 쉽게 확장해서 원하는 플랫폼의 크롤러를 구현 할 수 있도록 돕는 npm 라이브러리이다. 기술 스택은 다음과 같다. puppeteer jest jest-puppeteer 사실 JS / TS 를 사용해 프로젝트를 진행한 경험이 거의 없어서, 각 기술스택을 고를 때는 가장 많이 사용되고 있는 라이브러리들을 골랐다. 그런데.. 아래와 같은 문제가 발생했다. [cov 사진] 나는 공식 문서를 제대로 읽지 않은 죄로 이틀을 날리게 되었다.. 본론 공식 문서만 봐도 한번에 알 수 있는 내용이긴하다. 그런데 그 공식 문서를 꼼꼼히 못본 탓에 놓쳤어서 이렇게 기록해둔다. 공식 문서의 맨 위를..
Tiangolo, the FastAPI Tiangolo 는 FastAPI 를 비롯해 유명한 여러 오픈소스 도구들을 만든 프로그래머다. FastAPI 가 cool 하다고 생각해서, 문득 그걸 만든 사람은 어떤 사람일지 궁금해졌다. 그에 대해서 먼저 그의 웹페이지를 들어가면 다음과 같은 내용을 볼 수 있다. Hey! I'm @tiangolo (Sebastián Ramírez) 👋 I'm a software developer from Colombia. 🇨🇴 I currently live in Berlin, Germany. 🇩🇪 I have been building APIs and tools for Machine Learning and data systems, in Latin America, the Middle..
최근 회사를 다니며 좋은 사수분 덕에 많은 Django 를 많이 배우고있다. 우리 회사에서는 Django 와 Graphene 을 사용하는데, 그 덕분에 Django 와 DRF 를 동일시 하던 사고 방식이 많이 깨진것같다. 원래도 할 줄은 알았지만, advanced 하게 사용하지는 못했던 것 같아서 반성하는 한편, 많이 배우고 있던 참이다. 개인 프로젝트를 진행하다보니 Django 와 DRF 의 경계가 더욱 명확하게 보였고, 그래서 더 명확히 코드를 작성하고 분리 할 수 있게 되었던것 같았다. 오늘은 그 내용들을 정리해 적어보려한다. Signal Django ORM 으로 DB 에 데이터를 저장하려고 한다. 그런데, 다음과 같은 상황이라면? 좋아요를 누를 때 그 좋아요 수를 올리는것과 같이 저장하려는 데이터..
최근 회사에서 테스트 관련 최적화 작업을 진행하고 삽질하면서 몇 가지 소소한, 그리고 소중한 팁들을 얻게되었다..! 그 내용들을 정리해볼까 한다. 먼저 엄청 쉬운 팁부터. 테스트하는데 pdb를 써보고 싶어.. VSCode 는 불편해.. vscode 의 기본 테스트 기능에는 pytest 와 통합되어 작동하는 기능이 있다. 테스트의 실행결과를 콘솔 비슷하게 볼 수는 있는데 그 안에서 입력은 불가능 하다. 그래서 만약 pdb 같은걸로 set_trace 를 해서 테스트를 하려면 pytest 명령어를 셸에서 직접 입력해야 한다. 그렇다면 보통 시도하는 접근이 파일명을 옵션으로 줘서 해당 파일을 실행하는것인데, 그 안의 하나의 테스트만을 실행하고 싶다면 -k 옵션을 활용해 볼 수 있겠다. pytest -vv "파일..
요즘 즐겁게 TDD 를 하며 Django 개발을 하는 중이다. 코드짜는게 너무 편하고 즐거워졌다! 그런데 mocking 을 하려는데 몇가지 문제가 생겨서 정리해보고자 한다. 결론부터 말하자면, 파이썬에서 namespace 로 import 해야하는 함수에 대한 mocking 은 불가능하다고 보는것이 맞아보인다..! 다음과 같은 구조로 프로젝트가 되어있다고 해보자. 프로젝트 루트에는 hello.py 가, hello/world/ 에는 amazing.py 가 있다. 다음은 hello/world/amazing.py 의 내용이다. def printer(): print("hello world") 그리고 다음은 hello.py 의 내용이다. from hello.world.amazing import printer pri..
김연규라는 사람 기억은 흐릿하지만 유치원때, 초등학교때의 저는 참 이상한 사람이었을거에요. 컴퓨터 게임하길 좋아하는 평범한 잼민이 학생의 면도 있었지만, 뭔가 항상 어색하게 행동한다거나, 친하게 어울려 지내지 못한다거나, 혼자 무언가에 빠져서 자기 하고픈 이야기만하는 그런 사람이었어요. 아마 그때는 크레이지아케이드, 마이크로소프트, 빌게이츠 같은것들에 빠져있었을거에요. 그리고 처음으로 여자친구가 생긴 그때에는 여자친구한테 엄청 빠져있었던 기억도 나요. 그때의 친구들에게 물어보면, 정말 많이 좋아하는걸로 보였대요. 그때는 페이스북보다는 카카오스토리를 썼는데, 제 스토리에는 여자친구 얘기가 주를 이뤘던거같아요. 누군가는 오글거린다고도 하고, 누군가는 저를 이상한 눈으로 쳐다보면서 멀리하기도 했었던 기억이나요..
Github Action이 털렸다 Github Action이 뭔데? 깃허브에는 Github Action 이라는 기능이 있습니다. Test, 빌드, CI/CD 구축, 작업 실행 예약 등 다용도로 사용 할 수 있는 좋은 도구입니다. Features • GitHub Actions Easily build, package, release, update, and deploy your project in any language—on GitHub or any external system—without having to run code yourself. github.com 저장소의 .github/workflows 에 yaml 로 된 파일을 업로드하면, 해당 파일의 규칙에 따라 그 안에서 정의된 작업들을 실행시켜주는 고마..
서론 최근 저는 MSA를 공부중입니다. 각 마이크로서비스에 go, 특히 gin을 사용해서 개발하는것을 선호합니다. 그 이유는 다음과 같습니다. golang 너무 재밌음 컴파일 언어여서 바이너리 하나만 배포하면 됨 grpc 를 활용하기 용이함 최근 자주 사용하는 DB인 PostgreSQL과 gin을 활용하는 템플릿을 구성했습니다. 이 템플릿을 구성하며 Docker 이미지 최적화를 했습니다. 그 과정에서 Docker 이미지 크기를 99.2%나 줄이게 되었습니다. 다시 원래의 사이즈로 돌리면 무려 12921%가 증가합니다. (떡상) Docker 이미지의 사이즈를 줄이면 다음의 장점이 있습니다. 컨테이너 레지스트리(컨테이너 이미지 저장소)의 용량 절감 배포 프로세스의 소요시간 감소 실제 예제를 보시려면 http..