오늘따라 젭이 마이 아프네 ^_^;; 계속 튕김당하는 우리들 어리둥절

 

 

1. 어려웠던 부분 : 게임 시작 API 에서 게임 참가자에게 KeywordRepository 에서 랜덤으로 조회된 카테고리에 해당하는 랜덤 키워드를 참여 인원수에 맡게 뿌려주는 부분을 작성해야 했다. 어제 처음 작성한 코드가 너무 길고 하드코드가 되어버린 것 같아 이부분을 queryDSL을 사용해서 좀 더 간결하게 할 수 있을까? 라는 생각에 관련 정보를 찾아봤다. 여러 자료를 찾아보니 아무래도 그냥 native 쿼리를 사용하여 조회하는게 더 좋은 방법일 것 같다는 생각이 들었다. 어찌 저찌 구현은 했는데 코드가 너무 길어져서 더 간결하게 줄일 수 있는 방법이 있는지 연구해봐야 할 것 같다.

다음은 코드 구현 전 작성해본 의사코드 ↓

더보기

<의사코드>

 

// 현재 입장한 게임방의 정보를 가져옴

// 게임 시작은 방장만이 할 수 있음 - 예외처리

// 게임방에 입장한 멤버들 DB(GameRoomMember)에서 가져오기

//게임방의 상태를 start 상태로 업데이트

 

// 멤버들에게 뿌려지게 될 키워드 전체조회 -> 그 중 하나 랜덤 뽑기

// 뽑힌 키워드와 카테고리가 같은 키워드만 모인 어레이리스트만들기

// 만들어진 어레이리스트에 담긴 키워드를 멤버들에게 (랜덤으로) 배당하기

 

// GameStartSet에 해당 방 멤버의 키워드가 어떤 것인지 저장

// StartSet DB에 저장

// 웹소켓으로 방에 참가한 인원 리스트 전달을 위한 리스트 만들기

// 닉네임만 필요하기에 닉네임만 담은 리스트

// 웹소켓으로 전달드릴 content 내용 만들기

// 게임 시작 알림을 방에 구독이 유저들에게 알려줌

 

2. 느낀 점 : 오늘 디자이너님이 게임 컨셉 몇가지를 보여주시고 어떤 컨셉이 좋은지 투표를 했다. 팀원들 모두 매일 새벽까지 공부하고 구현하느라 피곤할텐데도 유쾌해서 나도 덩달아 재미있게 프로젝트를 즐길 수 있는 것 같다. 앞으로 남은 시간들도 계속 이렇게 유쾌한 분위기가 이어졌으면 좋겠다 : )

 

 

3. 새로 알게 된 내용 : 팀원들과 함께 queryDSL과 Redis를 공부하면서 다시한번 JPA 영속성컨텍스트에 대해 복습할 수 있었다. 이전 기수 선배님들의 코드를 보면서 flush() / clear() 를 명시적으로 적어놓은 코드를 보았는데, 이 부분이 궁금했다. 분명히 이영한 선생님이 실제 현업에서 이렇게 사용하지 않는다고 했는데 왜 굳이 적어놓은 걸까? 라는 의문으로 엔티티매니저를 거쳐 DB까지 이르는 과정을 팀원들과 다시한번 보면서 그 구조를 다시한번 이해할 수 있었다. 그래서 결론은 토요일 튜터님에게 여쭤보기로 ...! ㅋㅋ 

 

4. 셀프칭찬 (오늘 잘한 일) : native 쿼리를 사용하여 기능 구현에 성공한 나를 칭찬한다 ! 물론 팀원들의 도움 덕분에 구현에 성공할 수 있었다! 진짜 많이 배울 수 있어서 감사하다.

 

5. 내일 할 일 : 백엔드 코드 합쳐보고 리팩토링하기, 각자 맡은 부분 코드에 주석달기/ 토요일 피드백에 질문할 것 정리하기 


[오늘 공부한 부분] 

 

 

 

 

 

 

 

 

+ Recent posts