게임서버-스파르타코딩NodeJs_7기/CH6 최종 프로젝트26 GEOSEARCH와 GEORADIUS GEOSEARCH와 GEORADIUS는 둘 다 Valkey의 지리 공간 데이터를 활용하는 명령어지만, 사용 목적과 성능 차이 때문에 선택이 달라집니다. ✅ 1. 명령어 차이GEORADIUS: 특정 좌표를 기준으로 반경 내의 위치를 검색합니다.GEOSEARCH: 보다 유연한 검색을 제공하며, 기준 좌표나 특정 지점을 중심으로 다양한 형태의 검색이 가능합니다.✅ 2. 차이점 비교 항목 GEORADIUS GEOSEARCH 기준점 설정좌표 기반좌표 또는 키 기반검색 영역원형 반경 검색원형 또는 사각형 영역 검색정렬거리 기준 정렬거리 기준 정렬 및 필터링 지원반환 데이터위치 이름, 거리 등 선택 가능위치 이름, 거리 등 선택 가능성능단순한 반경 검색에 최적화복잡한 공간 검색에 적합✅ 3. 어떤 상황에서 사용하.. 2025. 3. 20. 최종 발표 후 부스 지키기 🎯 백엔드 개발자의 핵심 포인트🚀 서버 & 인프라서버 부하 줄이는 게 핵심! 🏗️Geo 관련 문제 철저히 해결해야 함. 🌍AWS, GCP 등 클라우드 인프라에 대한 관심 필수. ☁️온프레미스로 이전하는 이유: 비용 절감, 이용 편리성. 💰장애 테스트 & 트래픽 테스트를 고려한 설계 필요. 🛠️오토스케일링 적극 활용. 📈🔥 협업 & 커뮤니케이션프론트팀과의 관계작은 조직(목적 조직): 프론트 & 백엔드 함께 → 사이 좋음 🤝큰 조직(기능 조직): 업무적 관계 → 체계적이지만 친밀도 낮음 🏢협의가 안될 땐?논리를 명확하게! ⚖️협의 후에도 해결이 안되면 팀장에게 보고! 📢정직하고 빠른 신고가 중요. ⏳🏗️ 개발 & 설계설계를 먼저하고 개발 시작! 📝개발 중 문제 발생 시 다시 협의 (필.. 2025. 3. 14. 서브 목록과 유저의 수행목록을 비교하여 해당 업적을 완료하였는지 확인하는 로직 업적 ㄴ 서브업적(업적 상세목록) 유저의 완료 업적(업적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. 테스트코드 작성 - achievement관련 📌 1. NestJS 의존성 주입 실패 문제🔍 질문UserGuard에서 UserService 의존성을 해결하지 못해 테스트가 실패하는 이유는?💡 해결 방법테스트 모듈에 UserService의 목업(mock) 버전을 제공하거나 UserModule을 임포트하여 의존성을 해결할 수 있습니다.테스트의 격리성과 속도를 위해 목업 사용을 추천합니다.목업 예시providers: [ { provide: UserService, useValue: { findUserById: jest.fn().mockResolvedValue({ id: 1, name: 'Test User' }), }, },]🛠 2. TypeScript 타입 불일치 문제 (sub-achievement.repository.t.. 2025. 3. 7. 트렌젝션 적용하는 방법 트렌젝션 적용하는 방법 1. 트랜잭션 적용 요청- 질문: `AchievementPService.post` 메서드에 트랜잭션을 적용해달라는 요청.- 답변: TypeORM의 `QueryRunner`를 사용해 트랜잭션을 구현. `startTransaction`, `commitTransaction`, `rollbackTransaction`을 추가하고, 모든 DB 작업을 트랜잭션 내에서 처리하도록 수정.- 추가 조언: `AchievementPRepository`에 `getQueryRunner()` 메서드가 필요하며, 이를 위해 `DataSource` 주입이 필요함을 언급. 2. `getQueryRunner()` 메서드 추가- 질문: `AchievementPRepository`에 `getQueryRunner(.. 2025. 3. 5. 이전 1 2 3 4 5 다음