본문 바로가기

게임서버-스파르타코딩NodeJs_7기201

Jest 테스트 트러블슈팅 1. Jest 설치 및 실행 방법설치npm init -ynpm install --save-dev jestnpm install --save-dev jest @types/jest ts-jestnpm install bcryptnpm install --save-dev @types/bcrypt테스트 실행 스크립트 추가 (package.json 수정){ "scripts": { "test": "jest" }}테스트 실행 방법전체 테스트 실행npm run test특정 테스트 파일 실행npx jest user.service.spec.ts2. 단위 테스트 작성 규칙독립적(Independent)이어야 한다다른 테스트에 의존하지 않고 개별적으로 실행 가능해야 함.격리(Isolation)되어야 한다Ajax, Local.. 2025. 3. 20.
GEOSEARCH와 GEORADIUS GEOSEARCH와 GEORADIUS는 둘 다 Valkey의 지리 공간 데이터를 활용하는 명령어지만, 사용 목적과 성능 차이 때문에 선택이 달라집니다. ✅ 1. 명령어 차이GEORADIUS: 특정 좌표를 기준으로 반경 내의 위치를 검색합니다.GEOSEARCH: 보다 유연한 검색을 제공하며, 기준 좌표나 특정 지점을 중심으로 다양한 형태의 검색이 가능합니다.✅ 2. 차이점 비교 항목 GEORADIUS GEOSEARCH 기준점 설정좌표 기반좌표 또는 키 기반검색 영역원형 반경 검색원형 또는 사각형 영역 검색정렬거리 기준 정렬거리 기준 정렬 및 필터링 지원반환 데이터위치 이름, 거리 등 선택 가능위치 이름, 거리 등 선택 가능성능단순한 반경 검색에 최적화복잡한 공간 검색에 적합✅ 3. 어떤 상황에서 사용하.. 2025. 3. 20.
최종 발표 후 부스 지키기 🎯 백엔드 개발자의 핵심 포인트🚀 서버 & 인프라서버 부하 줄이는 게 핵심! 🏗️Geo 관련 문제 철저히 해결해야 함. 🌍AWS, GCP 등 클라우드 인프라에 대한 관심 필수. ☁️온프레미스로 이전하는 이유: 비용 절감, 이용 편리성. 💰장애 테스트 & 트래픽 테스트를 고려한 설계 필요. 🛠️오토스케일링 적극 활용. 📈🔥 협업 & 커뮤니케이션프론트팀과의 관계작은 조직(목적 조직): 프론트 & 백엔드 함께 → 사이 좋음 🤝큰 조직(기능 조직): 업무적 관계 → 체계적이지만 친밀도 낮음 🏢협의가 안될 땐?논리를 명확하게! ⚖️협의 후에도 해결이 안되면 팀장에게 보고! 📢정직하고 빠른 신고가 중요. ⏳🏗️ 개발 & 설계설계를 먼저하고 개발 시작! 📝개발 중 문제 발생 시 다시 협의 (필.. 2025. 3. 14.
트러블슈팅 - 토큰 1. 미들웨어 동작 및 토큰 검증 관련 문제문제 상황:토큰이 전달되지 않거나 "Bearer" 형식이 아닌 경우토큰이 만료되었거나 위조된 경우환경 변수로 전달된 시크릿 키가 올바르지 않거나 누락된 경우점검 항목 및 해결책:헤더 형식 확인:요청 시 헤더에 Authorization: Bearer 형식으로 전달되고 있는지 확인.환경 변수 검증:.env 파일이나 환경 설정에서 JWT_SECRET_KEY, ACCESS_TOKEN_EXPIRY, REFRESH_TOKEN_EXPIRY 등이 올바르게 설정되었는지 확인.토큰 검증 로직 디버깅:jwtService.verify 메서드 사용 시 시크릿 키가 올바르게 전달되고 있는지, 토큰 생성 시 payload와 일치하는지 로그를 통해 확인.예외 처리:미들웨어에서 발생한 예외.. 2025. 3. 13.
서브 목록과 유저의 수행목록을 비교하여 해당 업적을 완료하였는지 확인하는 로직 업적 ㄴ 서브업적(업적 상세목록) 유저의 완료 업적(업적C) ㄴ 수행한 세부 업적(업적 P)  // src\achievement-p\achievement-p.service.ts // 서브업적과 업적 진행상황을 비교하여 업적C 추가하기 // 비교 방법 // 1. 두 배열의 길이 비교(쉬움) // 2. P 안에 subId가다 있는지 검증(정확) // in 함수 사용 // includes() // every() // javascript in? // 서브 배열(sub_id 모음)과 P배열(Pid 모음)의 길이가 같다 // P배열(Pid 모음)안에 서브 배열(sub_id 모음)이 모두 존재한다 // 두 조건을 만족한 경우 C에.. 2025. 3. 11.
트러블슈팅 - 유저위치로 북마커추가 버튼 만들기 트러블슈팅유저위치로 북마커추가 버튼 만들기1. 북마커 추가 후 서버에서 해당 위치에 접근했음은 뜨지만 클라이언트에서 캐치핑크몽 이벤트가 발생하지 못함.테스트버튼클릭 후 10분 대기버튼 클릭 후 새로고침, 10분 대기버튼 클릭 후 새로고침 여러번, 10분 대기-> 동일 위치에 데이터가 중복되는 경우 새로고침, 긴 시간 기다려야함(왜지) 데이터 1개만 있으면 버튼 클릭 후 1분안에 뜸. 2. 중복 데이터 제거하기(유저 당 위치 하나 씩 만들기)패치 오타get 메서드는 바디값 못받음. 쿼리 파라미터로 전달/pinkmong-appear-location/getOne?user_email=${encodeURIComponent(decodedToken.email)}fetch 요청에서 method: 'get'을 사용하고 .. 2025. 3. 10.