📝 TIL

    [TIL] 9주차 실전 프로젝트ㅣ WebRTC로 게임 준비 로직 구현

    [눈치, 캐치, 코치!] 게임 준비 로직 구현 WebRTC를 이용해 다대다 음성연결까지 성공하였고, 이제 본격적으로 게임 준비부터 시작까지 로직을 구현하려 한다. 팀 내에서 WebSocket Handler를 하나 더 추가하자는 의견이 나왔으나 비교적 사례가 많지 않고, 불필요하다는 의견도 있어서 하나의 Handler에서 게임 로직을 진행하기로 했다. (텍스트 채팅은 STOMP를 활용하여 따로 구현 예정) 클라이언트로부터 받아오는 message type으로 구분하여 분기 처리를 해줄 것이다. 흐름으로 보는 로직은 이러하다. 접속한 유저의 sessionId와 해당 roomId를 GameRoomService에 넘겨서 유저의 ready 상태 변경 (true였다면 false로, false였다면 true로) 해당 ..

    [TIL] 8주차 실전 프로젝트ㅣAPI 명세서, kakao 소셜 로그인, WebSocket

    실전 프로젝트 [눈치, 코치, 캐치!] 진행 상황 API 명세 작성하기 어제 백엔드 팀원들과 작성했던 ERD를 토대로 프론트엔드 팀원들까지 전체 팀원이 모여 API 명세서를 작성했다. 아무래도 리얼타임 게임 서비스이다 보니 WebSocket에 관련된 부분은 명세를 작성하기가 어려웠다😭 일단은 데이터의 흐름만 참고하는 느낌으로 작성해 보았는데 중간에 많은 수정과, 많은 소통이 있을 예정..^^ kakao 소셜 로그인 제일 먼저 완성한 카카오 소셜 로그인 기능을 클라이언트와 맞춰 보았다. 역시나 한 번에 되는 법이 없지! 1) Redirect URI mismatch 처음에 잘못 설정해 주었던 부분은 Redirect URI 부분이었다. 최초 인증 요청 시 요청한 Redirect URI와 토큰 요청의 Redir..

    [TIL] 8주차 실전 프로젝트ㅣ소소한 의사 결정과 WebRTC 시작

    실전 프로젝트 [눈치, 코치, 캐치!] 진행상황 MVP 기준 회원 기능을 넣을지? MVP에는 굳이 회원 기능이 필요 없다 vs 구체적으로 유저에게 피드백을 받을 수 있는 범위가 좁아진다 1) 비회원만 2) 일반 로그인만 3) 소셜 로그인만 4) 일반 로그인 + 소셜 로그인 소셜 로그인만 도입하면? 개발 시간은 짧은 반면 추후 확장성 용이함 → 소셜 로그인만 구현하기로 결정! refresh 토큰의 필요성? → access 토큰의 만료시간을 길게 주기로 결정! 게임의 제시어를 어떻게 운영할지? 우리가 제공 vs 유저한테 받기 그렇다면 제시어를 제공해 주고 변경할 수 있도록! easy 모드는 제시어 강제(명사), hard 모드는 제시어 주되 자유(형용사+명사) 오늘의 나는 WebRTC와 고군분투 중이다. We..

    [TIL] 7주차 실전 프로젝트ㅣ게임 기획에 살 붙이기

    협업은 뭐부터 해야 할까? 기획 회의 와이어프레임, ERD, API명세서 기능 분배 Base Project 생성하여 Github push 코드 컨벤션 (변수명이나 주석 어떻게 작성할지) Github branch 전략 사용, commit 컨벤션 적용 사전 프로젝트까지 총 5번의 팀 프로젝트 끝에 나만의 '협업 체크리스트'가 생겼다. 팀장이라면, 첫 회의 전까지 위의 체크리스트에 대한 큰 그림을 그려야 한다. 여기에 더해서 이번 실전 프로젝트 때는 데일리 스크럼을 도입해 보기로 했다. 아무래도 온라인으로만 진행되는 프로젝트이고, 6주간 지속되어야 하기 때문에 서로의 의견과 상황을 최대한 많이 공유하는 게 중요하다고 생각했다. 매일 10시에 만나 (1) 지금까지 한 일 (2) 앞으로 할 일 (3) 현재 겪고 ..

    [TIL] 7주차 실전 프로젝트ㅣ주간 시작과 기획 회의

    드디어 실전 프로젝트 시작! 대망의 마지막 실전 프로젝트가 시작되었다. 이걸 위해 지금까지 달려왔다고 해도 과언이 아니다. 나는 마음이 잘 맞았던 프론트엔드 한 분과 리더/부리더를 맡아 6주간 실전 프로젝트에 임하게 되었다. 우리 나름대로 앞으로 나아갈 방향, 협업 방식 등을 자주 논의해서 그런지 마음이 좀 든든했다. 앞으로의 세부 일정은 다음과 같다. 12/30 (금) 자정까지 : 팀 노션 생성 및 S.A 대시보드 작성 완료 S.A 제출 팀 노션 생성 12/31 (토) S.A. 서면 피드백 1/21 (토) MVP 중간 발표회 2/10 (금) 최종 발표회 실전 프로젝트 기획 회의 (1) 동영상으로 보내는 롤링 페이퍼 : 롤링 필름 나는 친구의 생일이면 다른 친구들의 축하 영상을 찍어서 보내주곤 했다. 마..

    [TIL] 7주차 클론 코딩ㅣairbnb 클론 코딩 발표

    클론 코딩 [항해 bnb] 발표 1. 프로젝트 소개 🏖️ 에어비앤비 웹서비스를 클로닝한 프로젝트 hanghaebnb hanghaebnb has 2 repositories available. Follow their code on GitHub. github.com 2. 주요 기능 Spring Security, JWT를 이용한 회원가입/로그인 이메일 인증을 통한 로그인 구현 AWS S3를 이용한 다중 이미지 업로드 JPA Pageable을 이용한 페이지 무한 스크롤 타입별, 가격별 필터링 기능 키워드 검색 기능 숙소 좋아요 기능 swagger 적용 숙박 시설 CRUD(조회 시 이미지 preview) 3. 서비스 아키텍처 4. 기술 스택 🎨 Front-end Stack React , javascript Redu..

    [TIL] 7주차 클론 코딩ㅣReact + Spring boot 연동 에러 모음집

    클론 코딩 [항해bnb] 진행 상황 내일 발표를 앞두고, 드디어 오늘! 프론트엔드와 백엔드의 결과물을 합쳐 보기로 했다. 지난 미니 프로젝트 때 React와 Spring Boot 연동을 하면서 너어어어무 많은 에러를 마주쳤기 때문에 이번에도 단단히 각오하고 덤벼들었다. 오늘의 에러 모음집 왜 갑자기 LocalDateTime이 배열로? Postman으로 조회 테스트 중에 생성날짜, 수정날짜 부분이 배열로 나오는 이슈가 발생했다. 팀원분이 빠르게 해결책을 찾아 적용해 주었다. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul") @JsonFormat을 ResponseDto 쪽에 ..

    [TIL] 7주차 클론 코딩ㅣ@Query로 필터링 구현하기

    @Query 어노테이션을 이용한 필터링 에어비앤비에는 카테고리 기능과 가격, 숙소 유형 등으로 필터링해 주는 필터 기능이 있다. 이번 클론 프로젝트에서는 숙소 유형으로 카테고리 기능을 대신하고, 가격 필터까지 적용해 볼 것이다. 현재 전체 조회에는 Pageable을 이용한 페이징이 구현되어 있기 때문에 어떤 방식으로 필터링 기능을 덧붙일까 고민하다가 최대한 Spring Data JPA의 Query Method를 활용하되, 조금 복잡한 쿼리에는 @Query 어노테이션을 사용해 보기로 했다. @Query 어노테이션을 이용하면 쿼리를 직접 정의할 수 있다! RoomRepository public interface RoomRepository extends JpaRepository { Page findByType..