본문 바로가기

전체 글19

[MapleTrust] 메이플 신뢰도 사이트 만들기(3) - pre-commit 설치 및 사용법 1. 개요지난 포스팅에서는 uv와 같은 패키지 관리 도구를 사용하는 이유와 사용법에 대하여 다루었습니다. 이번 포스팅은 지난 포스팅에서 예고한대로 pre-commit에 대해서 다루겠습니다. pre-commit은 commit을 할 때, commit이 남기 전 git hook 기반으로 코드 스타일 검사나 포맷팅 등 다양한 기능을 수행하도록 도와주는 도구입니다. 사람들이 놓치기 쉬운 것들을 잡아주어서 코드 품질을 유지하고, 코드 스타일 유지에 도움이 됩니다. 실제로 다른 사람과 작업을 진행할 때 pre-commit을 통하여 코드의 일관성을 구축하였습니다. 과한 규칙은 불편할 수 있지만, 일정 수준의 일관성을 유지하기 위해서는 매우 유용한 도구라고 생각합니다. 이번 포스팅에서는 pre-commit을 설치하는 방.. 2025. 12. 11.
[MapleTrust] 메이플 신뢰도 사이트 만들기(2) - uv 특징, 사용법 1. 개요첫 번째 포스팅에서는 FastAPI 기반의 개발 환경을 세팅하고, 프로젝트의 기본 뼈대를 구성했습니다.이번 글에서는 핵심 요소 중 하나인 uv에 대해서 알아보겠습니다.해당 포스팅에서는 uv와 같은 패키지 관리 도구를 사용하는 이유와 uv의 장점 및 기본적인 사용법에 대해서 알아보겠습니다.2. 패키지 관리 도구란?패키지 관리 도구라 함은 Python 프로젝트의 의존성을 관리해 주는 도구입니다. 개발을 진행하다 보면 fastapi, uvicorn 등 여러 패키지를 설치하게 됩니다. 해당 프로젝트에서도 필요한 패키지만을 다운받았지만, uv pip list라는 명령어로 확인해 보면 벌써 20여 개가 넘는 패키지가 설치되어 있습니다. 이런 패키지들을 직접 관리하게 된다면 피로가 커집니다.특히 여러 사람이.. 2025. 10. 22.
[MapleTrust] 메이플 신뢰도 사이트 만들기(1) - uv, pre-commit 1. 개요오늘은 MapleTrust 프로젝트 첫 번째 일지입니다.본격적으로 기능 구현에 들어가기 전, 프로젝트의 기반이 될 개발 환경 세팅에 대해 알아보겠습니다.이 프로젝트는 최종적으로 FE, BE 모두 포함하는 형태로 발전할 예정이지만, 아직은 FE를 해본 경험이 없기 떄문에 백엔드 MVP를 우선 완성하는 것을 목표로 할 예정입니다.이번 글에서는 프로젝트를 시작하며 어떤 환경을 구성했는지, 그리고 어떤 도구를 선택하였는지 정리하겠습니다. 2. Python & FastAPI백엔드 언어는 Python, 프레임워크는 FastAPI를 선택하였습니다.선택 이유는 아래와 같습니다.비동기 지원 : 동시에 여러 API를 호출할 구저에 적합하다고 판단빠른 테스트 : 타입 힌트 기반 Swagger를 제공경험 기반 : 최.. 2025. 10. 20.
[MapleTrust] 메이플 신뢰도 사이트 만들기(0) 1. 개요새로운 프로젝트를 하나 해야겠다는 고민을 하였습니다. 올여름, 메이플스토리에 붐이 일면서 저도 친구들과 함께 즐기게 되었습니다. 메이플에 대한 관심이 높아지다 보니 메이플 인벤에 들어가서 정보를 구하게 되었고, 한 가지 문제를 반복적으로 목격했습니다.바로 "개인 간 거래에서 상대가 사기를 치고 도망가는 문제"였습니다.(보상 먹튀, 대리 천장, 카르마 잠재 등) 이를 해결할 방법이 있을까 고민하던 끝에, 해당 프로젝트를 시작하게 되었습니다. 2. 문제 인식메이플스토리는 파티격과 아이템 거래가 활발한 게임입니다. 하지만 이러한 거래가 플레이어 간 직접 신뢰에 의존한다는 점이 문제입니다. 사기는 생각보다 빈번하게 발생하며, 피해자는 복구나 대응이 어려웠습니다. 피해자들은 사기를 당한 후 메이플 인벤에.. 2025. 10. 19.
코린이의 GitHub action을 활용한 docker이미지 배포 1. 개요본 포스팅에서는 GitHub action, Docker, AWS EC2를 활용하여, 반쪽짜리 CI/CD를 구축하는 방법에 대해서 알아보겠습니다.코드가 필요하신 분은 "3. Docker란?" 목차로 넘어가시면 됩니다.근 한 달간을 투자한 프로젝트의 마감일이 다가왔습니다. 해당 프로젝트를 배포하기 위해 조언을 얻던 중, 수작업으로 배포를 하는 것보다 쉬운 CI / CD 구축 방법이 있다고 해서, 따라하게 되었습니다. 이번글의 목적은 다양한 내용을 다루기 때문에 구체적인 방법과 개념에 대해서는 간략하게 설명하고 넘어가겠습니다.2. CI / CD란?코딩에 막 입문한 분이시라도, CI / CD에 대해서 많이 들어보셨으리라. 생각합니다. 본 포스팅에서는 흐름을 다루기 때문에 자세하게 다루지 않습니다. 따라.. 2024. 10. 11.
[HTTP] 자주 사용되는 상태 코드 알아보기(짤막팁 3편) 1. 개요본 포스팅에서는 자주 사용되는 HTTP 상태 코드에 대해서 알아보겠습니다.현재 DRF를 기반으로 한 'ict 교육 플랫폼'만들기 프로젝트를 진행하고 있습니다. 백엔드 부분에서 어떤 status를 반환해야할지 알아보고, 프론트엔드와 연동할 때를 대비하기 위해서 작성되었습니다.2. 200번대200번대의 코드는 성공을 나타냅니다.200 OK요청에 대해 서버가 정상적으로 요청을 처리했을 때 반환HTTP메서드(GET, POST, PUT, DELETE)에 대한 201 Created요청이 성공적으로 처리되었으며, 새로운 리소스가 생성되었음을 나타냄주로 POST 요청에 사용204 No Content요청이 성공적으로 처리되었으며, 반환할 데이터가 없음을 나타냄주로 DELETE 요청에 사용3. 300번대리다이렉션.. 2024. 9. 27.
[Django] select_related(), prefetch_related()란?(N+1문제 해결법) 1. 개요본 포스팅에서는 N+1문제가 무엇인지에 대해 알아보겠습니다. 이후 select_related와 prefetch_related메서드란 무엇인지 다루고, 이를 활용하여 N+1문제를 해결하는 방법에 대해 알아보겠습니다. 지난번 포스팅에서는 annotate메서드에 대해서 다루었습니다. 해당 메서드를 공부는 과정에서  select_ralated와 prefetch_related메서드를 접하게 되었습니다. 따라서, 이번 포스팅을 작성하게 되었습니다. annotate에 대한 추가적인 정보는 아래 링크를 통하시면 됩니다.[Django] annotate()란? - annotate 사용법(with. only(),values() 쿼리 최적화) 2. N+1 문제란?select_related와 prefetch_relat.. 2024. 9. 19.
[Django] annotate()란? - annotate 사용법(with. only(),values() 쿼리 최적화) 1. 개요지난주에 Django를 활용한 블로그 만들기 프로젝트를 진행하였습니다. 다른 분들의 코드가 궁금하여, GitHub에 있는 코드를 리뷰했습니다. 사용해 본 적 없었던 annotate() 메서드를 사용한 코드가 있었습니다. 이 메서드는 카테고리와 태그별로 작성된 포스트의 숫자를 쿼리셋에 추가하기 위해 사용되었습니다. 처음 본 annotate() 메서드를 공부해 보았고, Django의 ORM에 있어서 몰라서는 안 되는 유용한 기능이란 사실을 알게 되었습니다. 본 포스팅에서는 annotate()가 무엇인지 알아보고, 프로젝트에서 어떻게 사용되었는지 살펴보겠습니다. 이후 쿼리 최적화에 대한 내용을 다루고 포스팅을 마치겠습니다.2. annotate()란?영어 사전에서 annotate를 검색하면, 주석을 달.. 2024. 9. 13.
[Django] F객체, Q객체란? - ORM에서 F,Q 사용하기(짤막팁 2편) 1. 개요이번 포스팅은 Django의 ORM에서 사용되는 F객체와 Q객체에 대해 알아보겠습니다.2. F객체2.1 F객체란?DB 레벨에서 데이터를 직접 연산하거나 참조할 수 있도록 도와주는 객체입니다. 이를 사용하면 데이터를 메모리로 쿼리셋 형태로 불러오지 않습니다. 연산은 DB에서 직접 수행하기 때문에 효율적입니다. 주로 다음과 같은 세 가지 목적을 위해 사용합니다.필드 간의 값 비교필드 값을 이용한 계산필드 값의 업데이트2.2 F객체 사용법예시로 사용할 Product 모델의 코드와 테이블 구조입니다.from django.db import modelsclass Product(models.Model): name = models.CharField(max_length=255) # 상품 이름 sto.. 2024. 9. 8.
[Django] Signals 사용법 - 프로필 자동 생성, 좋아요 숫자 갱신(signal 표로 정리) 1. 개요지난주에 Django를 활용한 웹 블로그 만들기 프로젝트를 진행하였습니다. 계정 생성 시 자동으로 프로필이 생성되고, 좋아요 숫자가 자동으로 갱신되는 기능을 구현하기 위해 Django의 signals라는 기능을 사용했습니다. 이 기능을 활용하기는 했지만, signals에 대해 충분히 이해하지 못하였기에, 정리할 겸 포스팅을 남기기로 하였습니다. 본 포스팅에서는 signals가 무엇인지 알아보고, 프로젝트에서 사용된 실제 코드를 보며 사용 예시를 살펴보겠습니다. 또한 장단점을 파악해보며 포스팅을 마치겠습니다.2. Signals란?영어 단어 뜻 그대로 신호입니다. Django에는 "signal dispatcher"라는 기능이 포함되어있습니다. 이 기능은 특정 발신자(sender)에서 지정한 동작이 .. 2024. 9. 5.