본문 바로가기

전체 글

(56)
[25] mutsa-SNS-2 6일차 - (2) Swagger api 정보 추가 swagger api에 대한 정보를 추가해 보았다. endpoint에 설명 추가 Api 이름과 설명 추가 Configuration SwaggerConfig @Configuration @RequiredArgsConstructor public class SwaggerConfig { private final TypeResolver typeResolver; @Bean public Docket api() { return new Docket(DocumentationType.OAS_30) //문서 설명 .apiInfo(new ApiInfoBuilder() .title("MutsaSNS Swagger") .description("로그인, 포스트, 댓글, 좋아요, 알림 기능") .version("1.0.0") .buil..
[24] mutsa-SNS-2 6일차 - (1) 알람 기능 test code 알람 기능의 controller의 test code를 추가하였다. 해당 test는 아래 두가지로 진행하였다. 알람 목록 조회 성공 알람 목록 조회 실패 - 로그인하지 않은 경우 AlarmControllerTest @WebMvcTest(AlarmController.class) class AlarmControllerTest { @Autowired MockMvc mockMvc; @MockBean AlarmService alarmService; @Test @DisplayName("알람 목록 조회 성공") @WithMockUser void alarm_get_success() throws Exception { when(alarmService.getAlarm(any(), any())) .thenReturn(Page...
[23] mutsa-SNS-2 5일차 - 알람 기능 추가 알람 기능을 추가해 보았다. 로그인 한 유저에게 달린 모든 댓글과 좋아요를 page형태로 return 자신이 자신의 글에 댓글과 좋아요를 달 시 알람 x 좋아요 취소후 재등록시 알람 x 1. Domain Alarm (Entity) @Builder @AllArgsConstructor @NoArgsConstructor @Getter @Setter @Table(name = "alarm") @Entity @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) public class Alarm extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id..
[06] 230108 게임 개발 일지 - 활 스킬 구현 제일 미뤄놨던 활 스킬을 구현할 차례가 왔다... 역시역시나 생각한 대로 좀 복잡했다. 활 스킬을 어떻게 구현할지 기획자 엉님과 의논 결과, 아래와 같이 구현하기로 했다. 바라본 방향에서 위 아래로 45도 이내에 가장 가까운 타겟을 잡아 자동으로 발사한다. 타겟이 없으면 그냥 바라본 방향으로 직선으로 화살을 날린다. 타겟을 잡을 때 오랜만에 수학공식을 쓰려하니... 기억이 나지 않는다... 좌표계 이동... 극좌표계... 삼각함수... 음... 이걸 다시 꺼내다니... 저번 통계쪽 계산할때도 그렇고 은근 쓸일이 있구나 하고 느꼈다. 타겟을 잡는 간단 로직은 아래와 같다. 원하는 픽셀 내의 몬스터를 갖고온다. 몬스터의 x,y좌표를 캐릭터의 x,y 좌표를 기준으로 좌표계 이동을 해준다. 캐릭터가 바라보고 있..
[22] mutsa-SNS-2 4일차 - 마이 피드 기능 test code 마이 피드 기능 test code를 추가하였다. 아래의 case를 테스트 해보았다. 마이피드 조회 성공 마이피드 조회 실패 - 로그인 하지 않은 경우 PostControllerTest @WebMvcTest(PostController.class) class PostControllerTest { @Autowired MockMvc mockMvc; @MockBean PostService postService; @Autowired ObjectMapper objectMapper; ... @Test @DisplayName("마이피드 조회 성공") @WithMockUser void myFeed_get_success() throws Exception { when(postService.getMyFeed(any(), any..
[05] 230108 게임 개발 일지 - 직업 특수 스킬 구현 직업별 특수 스킬을 구현해 보았다 1. 도발 사용 시 5초간 어그로 1순위가 된다. 몬스터 AI 함수에서 몬스터가 피격 될 시 실행되는 함수에, 타겟 순위를 도발 버프가 있을 때 1순위로 지정한다. 도발건 유저가 없으면, 때린 유저가 어그로가 지정된다. 이렇게 지정하면, 도발이 없을 때 여러 유저가 몬스터를 때릴때마다 어그로가 계속 갱신될 것 같다. 내부 타이머를 설정해서 일정 시간동안 어그로가 고정되도록 해야 하나 고민중이다... 일단 어그로가 풀릴 때의 함수 지정은, 몬스터 AI함수에서 2초마다 자동 실행되는 함수에, 타겟으로 잡은 유저가 도발 버프가 없다면 어그로를 해제한다. 로 설정했지만, 도발한 유저가 없을 때, 그냥 때린 유저도 어그로가 풀리는데, 이게 2초마다 실행되는 함수가 피격 기준으로 ..
[21] mutsa-SNS-2 3일차 - (2) 마이 피드 기능 구현 내가 쓴 글 리스트를 보여주는 마이피드 기능을 구현했다. 내가 작성한 글만 보이는 기능 제목, 글쓴이, 내용, 작성날짜가 표시 목록 기능은 페이징 기능이 포함 (Post 조회와 동일) 단지 Post 전체 조회와 다른 것이 user로 post를 검색하는 로직 추가 밖에 없어 간단히 구현했다. 1. Repository PostRepository public interface PostRepository extends JpaRepository { Page findAllByUser(User user, Pageable pageable); } 해당 User로 post를 검색하여 page에 담아 return하는 method를 추가했다. 2. Service PostService @Service @RequiredArgsC..
[20] mutsa-SNS-2 3일차 - (1) soft delete 관련 리펙토링 (@Transactional 이슈) post가 delete될 때, 그와 관련되어 있는 comment와 like도 soft delete처리를 추가해 주었다. 이 과정에서 생겼던 Transactional 관련 이슈와 그로 인해 jpql method를 줄이고 jpa를 사용하기 위해 리펙토링 한 과정을 적어보았다... 1. @Transactional jpa의 경우 더티체킹을 지원한다. 이는 상태 변경에 대한 검사라 생각하면 된다. JPA로 엔티티를 조회하게 되면, 엔티티 조회 상태 그대로 스냅샷을 만들게 되고, 엔티티를 수정하여 트랜젝션을 커밋 할 때, flush가 일어나게 되는데, 그 때 초기 조회 상태의 스냅샷과 비교하여 변화가 발생하면, update query를 날리게 된다. 이로 인해 따로 save를 해주지 않아도 update query가..