목록프로젝트 (19)
코드 위의 하루 (A Day on the Code)
💡 팀원이 DB를 써야 한다고?프로젝트가 어느 정도 안정화되고, 로그인/회원가입/마이페이지 기능까지 모두 구현이 끝난 시점이었다.프론트엔드 팀원과 연동을 위해, 그리고 새로운 팀원이 합류하거나 다른 기능을 개발해야 할 상황을 대비해 같은 데이터를 모두가 볼 수 있게 해야 했다.그런데 문득 이런 질문이 들었다."지금 내가 쓰고 있는 이 MySQL DB, 다른 팀원들은 어떻게 써?"이 질문에 답하기 위해, 나는 덤프 파일이라는 개념을 알게 되었고 직접 생성하고, 문서화하며 팀원들과 공유하는 과정을 진행하게 되었다.🔧 덤프 파일을 만들게 된 배경처음에는 단순히 .sql 파일 하나만 있으면 되는 줄 알았다.하지만 실제로는 다음과 같은 일들이 필요했다:Docker 컨테이너로 돌아가는 MySQL에서 데이터를 추..
Docverse 백엔드 개발 중 회원가입 → 로그인 → 마이페이지 구현과 테스트를 순차적으로 진행하면서 다양한 오류를 마주했다. 이 글에서는 그중 마이페이지 기능 테스트 과정에서 발생한 문제들을 중심으로, JWT 인증 문제까지 포함하여 해결 과정을 정리한다.1️⃣ 오류: users_user 테이블이 존재하지 않음💥 에러 메시지django.db.utils.ProgrammingError: (1146, "Table 'bees_db.users_user' doesn't exist") 📌 원인Django가 마이페이지에서 User.objects.get() 쿼리를 실행하려고 했지만, MySQL에 users_user 테이블이 존재하지 않음.🛠 해결 방법마이그레이션이 제대로 되지 않았던 것.아래 명령으로 컨테이너에 ..
Docverse 백엔드 개발에서 핵심 사용자 인증 기능인 회원가입 → 로그인 → 마이페이지 기능을 직접 설계하고 구현한 뒤, 이를 순차적으로 테스트하여 성공적으로 작동함을 검증했다.이번 개발은 단순한 API 작성이 아닌, 실제 서비스 사용자 플로우에 따라 JWT 기반 인증 체계를 구성하고 테스트한 의미 있는 작업이었다. 특히 각 기능마다 다음과 같은 부분을 구체적으로 확인했다:✅ 어떤 API URL로 요청을 보냈는지✅ 어떤 방식(POST / GET / PUT / DELETE)으로 요청했는지✅ 요청 시 포함된 헤더 정보 및 JWT 토큰 처리 방식✅ 정상적인 응답이 어떤 형태로 오는지✅ 실패 상황에 대한 예외 응답이 올바르게 처리되는지단순히 성공 여부만 확인하는 것이 아니라, 중복 데이터 처리 / 필수 항목..
✅ 구현 기능 요약GET /api/users/mypage/ : 사용자 정보 조회PUT /api/users/mypage/ : 닉네임, 자기소개, 프로필 이미지 수정인증 필요(JWT 기반) # views.py class MyPageView(APIView): permission_classes = [IsAuthenticated] def get(self, request): serializer = UserDetailSerializer(request.user) return Response(serializer.data) def put(self, request): serializer = UserUpdateSerializer(request.user, data..
✅ 기능 개요Docverse 프로젝트에서 사용자의 마이페이지를 구현하였습니다. JWT 인증을 통해 로그인된 사용자만 자신의 정보를 조회(GET) 하고, 수정(PATCH) 할 수 있는 기능입니다.🛠️ 구현한 기능조회 (GET /api/users/mypage/):사용자 id, email, nickname, profile_image, introduction, date_joined 등을 반환합니다.인증된 사용자만 접근 가능하도록 IsAuthenticated 권한 사용.수정 (PATCH /api/users/mypage/):사용자는 nickname, profile_image, introduction 값을 수정할 수 있습니다.UserUpdateSerializer를 통해 partial update 처리.🔍 핵심 코..
💭 "암호화를 해도 뚫린다고?"단순 해시만으론 부족한 이유부터, 솔트가 해결책이 되는 원리까지,Django 프로젝트 실습 기반으로 정리합니다!1️⃣ 해시만 하면 안전하지 않다고?해시는 한 방향 암호화 방식입니다.예를 들어 sha256("abcd1234")는 아래와 같은 고정된 결과를 출력하죠."abcd1234" → e99a18c428cb38d5f260853678922e03 하지만 문제는 여기서 시작됩니다.누가 "abcd1234"라는 비밀번호를 쓰든 해시값은 항상 같아요.해커는 미리 "1234", "abcd1234", "password" 등 자주 쓰이는 비밀번호들의 해시값을 사전처럼 저장해둬요.→ 이걸 **무차별 대입 공격(rainbow table attack)**이라고 해요.즉, 해커가 해시값만 보고도..
🧱 프레임워크란 무엇이고, Django는 왜 그렇게 생겼을까?🔧 프레임워크란? 왜 필요한가?웹사이트나 앱을 하나 만들 때 필요한 기능들을 떠올려보자.URL에 따라 화면을 나누고사용자가 입력한 데이터를 저장하고로그인 기능을 만들고HTML로 결과를 보여주고보안도 챙기고, 성능도 고려해야 한다이걸 모두 직접 코딩해서 만들자고 하면?💀 개발자 입장에서는 너무 비효율적이고 위험한 작업이 된다.그래서 등장한 것이 바로 **프레임워크(Framework)**다.📦 프레임워크란?프레임워크는 자주 반복되는 기능들을 미리 구현해둔 **개발용 뼈대(틀)**이다.즉, 개발자가 해야 할 일을 줄이고 핵심 로직에 집중할 수 있도록 도와주는 도구다.📌 예시: 회원가입 기능 만들기기능프레임워크 없이프레임워크(Django 등)..
📝 멘토링 경험 및 배경기획보다 기술이 앞서던 나에게, 스타트업은 결국 시장이 먼저임을 알려준 시간. 개발자에서 창업가로 전환하는 데 필요한 전략과 시선을 멘토링을 통해 처음 배웠습니다.2025년 5월 17일, 콴티파이 인큐베이터의 김민준 책임 멘토님과 함께 진행한 멘토링은 단순한 피드백을 넘어, 창업 아이템을 실제 시장에 적용하고 확장할 수 있는 전략 전반을 깊이 있게 논의하는 시간이었습니다. 멘토링은 약 2시간에 걸쳐 비대면으로 이루어졌으며, 창업경진대회 출품을 앞둔 'Docverse'를 비롯하여 실험적 프로젝트인 '족발보쌈', 감정기록 기반 서비스 '가치록'까지 총 3개의 아이템을 중심으로 멘토링을 받았습니다.멘토링은 단편적인 코멘트가 아닌, 실제 스타트업 실무에서 겪는 수익 모델 구성의 어려움,..