반응형

분류 전체보기 175

AWS Lambda 환경에서 S3 Presigned URL이 만료되는 문제 해결기

문제 발견어드민 페이지에서 매니저가 제출한 증빙서류 이미지가 엑박으로 표시되는 버그가 보고되었다. 일부 이미지는 정상적으로 보이는데, 특정 이미지들만 엑박이 뜨는 상황이었다.엑박이 뜨는 이미지의 URL로 직접 접속해보니 S3에서 다음과 같은 에러를 반환하고 있었다. ExpiredToken The provided token has expired.시스템 구조프로젝트는 Django 기반 REST API 서버로, AWS Lambda + API Gateway 환경에서 운영되고 있다. 이미지 파일은 S3에 저장되며, 조회 시 Presigned URL을 생성하여 응답한다.[클라이언트] → [API Gateway] → [Lambda (Django)] → [S3 Presigned URL 생성] ..

Obsidian Claudian 플러그인 설치 및 트러블슈팅 가이드

요즘 나의 제 2의 뇌를 만들기 위해 하루 일과나 있었던 일들 그리고 나의 감정들을 옵시디언에 기록하고 있다. 너무 재밌음.나중에는 이 기록들을 내가 자연어로 물어보기만 하면 답변을 바로 받을 수 있게끔 하기 위해서 클로디안 이라는 플러그인을 찾아냈다.이게 뭐냐면..바로 그냥 옵시디언 앱에서 클로드를 활용할 수 있다는 플러그인이었다.이번 포스팅에서는 내가 직접 Obsidian에서 Claude Code를 사이드바 채팅으로 사용할 수 있는 Claudian 플러그인을 설치하면서 겪은 문제들과 해결 과정을 정리했다.환경macOS (Apple Silicon)Obsidian 최신 안정 버전Claude Code 2.1.39 (Native Binary)Claudian 1.3.63Claudian이란?Claudian은 C..

Claude Code에서 MySQL MCP 서버 SSL 연결 문제 해결하기

Claude Code를 사용하다 보면 MCP(Model Context Protocol) 서버를 통해 다양한 외부 서비스와 연동할 수 있다. 그중에서도 MySQL 데이터베이스 연결은 개발 작업에 꽤 유용한데, 최근 AWS RDS MySQL에 연결하려다 꽤나 고생했던 경험을 공유하려고 한다.문제 상황어느 날 claude mcp list 명령어를 실행했더니 MySQL MCP 서버만 연결에 실패하고 있었다.$ claude mcp listcontext7: https://mcp.context7.com/mcp (HTTP) - ✓ Connectedsequential-thinking: npx @modelcontextprotocol/server-sequential-thinking - ✓ Connectedmysql: npx..

Django ORM aggregate Sum이 NULL을 반환할 때

오늘 코드 리뷰 받다가 알게 된 내용 정리.발단프라임타임 점수 계산 로직에서 이렇게 썼었다:def calculate_score_for_stadium(self, stadium_id: int) -> int: result = ( FixedMatch.objects.prime_time_weekday() .for_stadium(stadium_id) .aggregate(total_score=Sum(self._build_score_case_expression())) ) return result["total_score"] or 0 # _build_score_case_expression()에서 이미 default=Value(0)을 설정했는데, or 0이 필요한지 의문..

Django ORM __in 조회에 딕셔너리 전달하면 어떻게 될까?

오늘 코드 리뷰 받다가 알게 된 내용 정리.발단프라임타임 점수 계산 로직을 짜면서 이렇게 썼었다:SCORE_BY_HOUR = { 19: 1, 20: 2, 21: 1,}# 이렇게 썼음FixedMatch.objects.filter( match_time__hour__in=list(self.SCORE_BY_HOUR.keys()), # [19, 20, 21])그런데 리뷰에서 list() 변환이 불필요하다는 피드백을 받았다.# 이렇게 해도 된다고?FixedMatch.objects.filter( match_time__hour__in=self.SCORE_BY_HOUR, # dict 자체를 전달)왜 동작하는가?Python 딕셔너리의 기본 동작Python에서 딕셔너리를 iterate하면 기본..

2025 뉴발 run your way 대회 후기

작년 처음으로 시작한 10km 대회를 올해에도 운이 좋게 참여할 수 있었다대회 약 일주일 전, 패키지가 도착했고 역시 메이저 대회 답게 패키지 구성이 너무 알찼다패키지 구성은 제대로 사진찍어놓지 않아서 없음 ,,,아무튼 대회 당일날이 되었고, 이게 웬일.. 대회날에 비가오는 거다..우중 대회는 첨이라서 걱정이 많았지만 일단 가~,,~ 어떻게든 되겠지~~대회장에는 역시 많은 사람들이 있었다.대회 장소는 여의도공원!도착해서 잠시 비를 피하면서 편의점에서 우비를 하나 사서 우비를 입고 대회 시작하면 벗을 생각이었다.우비를 진짜 오랜만에 입어본듯 체온 유지에 짱~ 나는 출발 그룹이 B 그룹이었고 꽤나 앞쪽에서 출발했었다.B 그룹의 45분 페이스 메이커와 같이 출발하려고 했는데 그건 실패했다... 그래서 초반에 ..

혼자여도 맛있고, 간단하게 - 밥풀

약 한달 간의 여정으로 배포에 성공한 밥풀 ios 앱을 출시하게 되었다.!데이트 코스 추천 웹 서비스를 개발하다가 러닝 날씨 정보 관련 앱을 만들어 보다가 결국 돌고 돌아서 요리를 자주하게 되면서 만들게 된 나의 첫 번째 앱flutter로 언젠가는 만들어보겠다는 다짐을 성공..~아직 많이 부족하지만 이렇게나 많이 붙여보고 싶은게 있으니 차근차근 해봐야겠다~밥풀 앱 다운로드

[바이브 코딩 #8] 데이트 코스 추천 서비스 개발기

DAY8: 고급 추천 알고리즘 시스템 개발 완료 보고서📋 프로젝트 개요코스모스 플랫폼의 핵심 기능인 지능형 데이트 코스 추천 알고리즘을 고도화하여 사용자 경험을 극대화하고 개인화된 추천 서비스를 제공하는 시스템을 개발했습니다.🎯 주요 기능 요구사항1. 다단계 필터링 시스템지역 기반 필터링: 사용자 선택 지역 내 활성 장소만 조회시간대 적합성 필터링: 선택한 시간대에 운영하는 장소 우선 선별활성 상태 검증: is_active = true인 장소만 추천 대상에 포함2. 위치 기반 중복 제거 시스템GPS 좌표 그룹화: 100m 반경 내 동일 장소 통합 처리대표 장소 선정: 그룹 내 최적 장소를 대표로 선택우선순위: admin 등록 > 높은 평점 > 최신 등록그룹 크기 고려: 동일 위치 등록 수를 인기도 지..

Remix에서 Server Action과 Client UI 간 데이터 흐름 버그 해결하기

문제 상황비밀번호 재설정 기능을 구현하던 중, 성공 메시지와 카운트다운 타이머가 전혀 동작하지 않는 버그를 발견했습니다. 코드를 살펴보니 성공 UI와 관련된 로직이 완전히 데드코드(Dead Code)가 되어 있었습니다.// 이 코드는 절대 실행되지 않았습니다{actionData && 'success' in actionData && ( 비밀번호가 성공적으로 변경되었습니다! 로그인 페이지로 이동합니다... {countdown > 0 && ` (${countdown}초)`} )}// 이 useEffect도 마찬가지로 실행되지 않았습니다useEffect(() => { if (actionData && 'success' in actionData) { setCountdown(3) // 카..

[바이브 코딩 #7] 데이트 코스 추천 서비스 개발기

DAY7: 달력 컴포넌트, 관리자 유저 관리, 마케팅 동의 시스템 구축📋 개요DAY6에서 이미지 업로드 시스템과 장소 등록 기능이 완전히 완성된 후, DAY7에서는 여러 핵심 기능을 동시에 개발했습니다. 사용자 경험 개선을 위한 달력 컴포넌트 구현, 관리자 유저 관리 기능 강화, 마케팅 정보 수신 동의 시스템 구축, 그리고 전체적인 UI/UX 통일 작업까지 진행했습니다.🎯 DAY7 목표주요 개발 영역달력 컴포넌트 시스템: 기존 HTML date input을 한국어 친화적 달력으로 교체관리자 유저 관리 시스템: 유저별 장소 수 집계, 권한 관리 기능 완성마케팅 동의 관리: 개인정보보호 강화를 위한 마케팅 정보 수신 동의 토글 시스템프로필 시스템 확장: 내정보 페이지 추가 및 사용자 프로필 관리UI/UX..

반응형