날짜: 2025. 12. 22.주제: Jotai Persistence, JWT Customization, TypeScript Refactoring, Django DRF환경 설정 및 아키텍처프로젝트 루트와 프론트엔드 디렉터리에 각각 존재하는 .gitignore 파일을 정리하고, TypeScript 설정을 최신 표준에 맞게 수정했다..gitignore 계층화 전략:루트의 설정 파일과 프론트엔드 전용 설정 파일을 병합하지 않고 유지했다. 모듈화 된 구조를 통해 추후 프론트엔드 디렉터리의 이동이나 분리 배포 시 설정 종속성을 최소화하기 위해서였다.루트에는 IDE 및 OS 설정, 프론트엔드에는 Next.js 빌드 및 의존성 관련 설정을 분리하여 관리 효율성을 증대했다.tsconfig.json 최신화:TypeScr..
날짜: 2025. 12. 20.주제: Next.js(App Router), DRF, Design System, TypeScript백엔드 안정화 및 환경 정비개발 서버 구동 시 발생하는 경고를 제거하고, 데이터베이스 스키마와 애플리케이션 설정을 동기화했다.PK 모델 경고 해결 및 마이그레이션 (Django Settings):장고 3.2 버전 이후 권장되는 BigAutoField를 명시하여 잠재적인 ID 정수 오버플로우를 방지하고, 시스템 체크 경고를 제거하여 터미널 로그의 가독성을 확보했다.DEFAULT_AUTO_FIELD 설정 및 마이그레이션 적용을 통해 데이터베이스와 모델 구조를 일치시켰다.프론트엔드 컴포넌트 설계 및 상태 관리페이지 중심의 코드에서 컴포넌트 기반 아키텍처로 전환하여 유지보수성과 재사용..
날짜: 2025. 12. 19.주제: DRF 필터링 전략 수립, 이미지 처리 로직, 마이페이지 쿼리셋 최적화게시판 기능 고도화 (Community App Enhancement)CRUD 구현 이후 확장성과 유지보수성을 고려한 기술 스택을 도입하여 기능을 고도화했다.검색 및 필터링 전략 (Search & Filter Strategy):기술적 의사결정: 기존의 request.query_params를 하나씩 받아 if문으로 분기 처리하는 방식(Imperative)은 필드 수가 늘어날수록 뷰 로직이 비대해지는 문제가 있었다. 이를 해결하기 위해 선언적(Declarative) 방식인 django-filter와 DRF의 FilterBackend를 도입했다.구현:DjangoFilterBackend: 카테고리(categ..
작성일: 2025. 12. 17.주제: 이메일 인증 트러블 슈팅, 게시판 CRUD 구현, 그리고 커스텀 권한(Permission) 관리학교 이메일 인증 구현과 403 에러 해결지난번에 이어 simplejwt를 활용한 로그인 시스템을 구축하고, 실제 학교 이메일로 인증 코드를 발송하는 테스트를 진행했다.Google SMTP를 연동하여 메일 발송을 시도했는데, 예상치 못한 403 Forbidden (CSRF verification failed) 에러를 마주했다.문제 상황: Postman으로 이메일 전송 요청 시 CSRF 토큰이 없다며 거부당함.원인 분석: 요청을 보낸 URL이 API 엔드포인트가 아닌, Django 관리자 페이지(admin/) 주소였다. 브라우저 기반의 관리자 페이지는 CSRF 토큰 검증이 ..
날짜: 2025. 12. 16.주제: JWT 인증 시스템 구축, 개발 환경 트러블 슈팅, 게시판 데이터베이스 모델링1. JWT 로그인 시스템 구축 (Authentication)회원가입 이후 실질적인 유저 식별을 위해 로그인 시스템을 구현했다.djangorestframework-simplejwt 라이브러리를 사용하여 JWT(JSON Web Token) 발급 구조를 잡았다. 세션 대신 JWT를 선택한 이유: 추후 AWS Lambda(Serverless) 배포 환경을 고려했을 때, 서버가 상태를 저장하지 않는 Stateless 구조가 필수적이었다. React 프론트엔드 및 향후 모바일 앱 확장을 고려하여 쿠키/세션 방식보다는 헤더 기반의 토큰 방식이 CORS 및 호환성 면에서 유리하다고 판단했..
날짜: 2025. 12. 09.주제: 이메일 인증 시스템 코드 구현, URL 연결, 회원가입 API 연동이메일 인증 시스템 로직 구현회원가입 후 수행할 '학교 이메일 인증' 기능을 위한 핵심 코드를 작성했다. 아직 실제 발송 테스트 전 단계다. Serializer (users/serializers.py 생성): 기본 UserSerializer 외에 인증 데이터 검증을 위한 EmailVerificationSerializer, CheckCodeSerializer를 새로 작성했다. View (users/views.py): SendEmailVerificationView: 도메인 파싱 및 인증 코드 생성, 메일 발송 로직 작성. VerifyCodeView: 입력된 코드 검증 및 유저 권한(is_stu..
날짜: 2025. 12. 08.주제: 기술 스택 선정, 보안 설정, 회원가입 API 구현프로젝트 시작 및 스택 변경대학생 익명 커뮤니티 '메이트(Mate)' 개발을 시작했다. 핵심은 '학교 인증'을 통한 신뢰성 확보다.기술 스택은 고민 끝에 FastAPI에서 Django로 변경했다. 변경 이유: 생산성: 1인 개발이라 리소스가 부족하다. Django의 Admin 기능과 내장 Auth 시스템을 활용해 개발 속도를 확보하기 위함이다. 보안: 커뮤니티 필수인 SQL Injection, XSS 방지 처리가 기본적으로 되어 있어 안전하다. 배포: 추후 AWS Lambda(Zappa)로 서버리스 배포가 가능하므로 비용 효율성도 챙길 수 있다. 개발 환경 구축 (Monorepo)GitH..
준비물EC2 접속용 키 파일 (.pem)EC2 퍼블릭 IP 또는 퍼블릭 DNSEC2 인스턴스 보안 그룹 inbound rulePEM 권한 설정chmod 400 my-key.pem3. 로컬 → EC2 파일 업로드scp -i my-key.pem /로컬/파일/경로 ubuntu@EC2_IP:/EC2/저장할/경로예시:로컬 파일 app.jar를 EC2 /home/ubuntu/로 전송:scp -i my-key.pem app.jar ubuntu@ec2-3-38-12-123.ap-northeast-2.compute.amazonaws.com:/home/ubuntu/나의 경우 AWS linux 환경이었기 때문에scp -i my-key.pem app.jar ec2-user@ec2-54-224-82-140.compute-1.a..
문제Find Pivot Index - LeetCode설명Given an array of integers nums, calculate the pivot index of this array.The pivot index is the index where the sum of all the numbers strictly to the left of the index is equal to the sum of all the numbers strictly to the index's right.If the index is on the left edge of the array, then the left sum is 0 because there are no elements to the left. This also applie..
문제Removing Stars From a String - LeetCode설명You are given a string s, which contains stars *.In one operation, you can:Choose a star in s.Remove the closest non-star character to its left, as well as remove the star itself.Return the string after all stars have been removed.Note:The input will be generated such that the operation is always possible.It can be shown that the resulting string will a..