[Git] 특정 코드 변경 사항 검색하기

Intro Pebble Template 에는 Macro라는 기능이 있습니다. 특정 콘텐츠 블록을 재 사용 가능한 함수처럼 만들어 주는 건데, 이전에 코드를 수정하다 보니 macro를 통째로 날려버렸는지 사용하는 부분만 남아있고 선언된 부분이 없어서 코드가 깨져 있는 부분을 발견했습니다. facet() 이라는 이름의 매크로인데, 어디에 선언되어 있었는지를 정확히 알지 못해서 커밋 히스토리를 찾아내는데 어려움을 겪고 있었습니다. Git 로그에서 파일 변경 내용 중 특정 키워드를 검색하는 방법에 대해서 알아보겠습니다. Git grep 단순 git grep 을 활용하면 해당 검색 조건이 포함된 파일들을 찾아 줍니다. 예를 들어 아래와 같이 입력 하면 git grep shane shane 이라는 텍스트가 들어간 ..

Development/Git 2022.09.15
[Spring] mockMvc 스프링 시큐리티와 연동하기. @AuthenticationPrincipal 파라미터 전달 해결

Intro mockMvc를 통해 api 테스트를 진행 하는데, 스프링 시큐리티를 연동 하기 전에는 괜찮았는데 연동을 한 후에 테스트가 제법 까다로웠습니다. 일단 단순 로그인 여부만 체크하는 부분은 간단하게 넘어갈 수 있었는데, @AuthenticationPrincipal 어노테이션을 걸고 파라미터로 컨트롤러에서 로그인 정보를 받아오는 부분까지 테스트 하려니 쉽지 않았습니다. 제가 코틀린으로 토이 프로젝트를 하고 있다보니 코드는 코틀린이 대다수지만 사실 자바와 차이가 없기 때문에 자바로 진행하고 계신 분들도 같은 맥락으로 문제 해결을 하실 수 있으며, 마지막에는 자바 코드도 조금 첨부 해 두었습니다. MockMvc NoSecurity 일단 처음으로, 따로 시큐리티 인증 과정이 없는 api의 mockMvc ..

Programming/JPA ⁄ Spring 2022.09.13
[Kotlin] 코틀린에서 Validation 이 안될때 해결방법

문제 create를 위한 DTO를 생성 해서 자바에서 사용했던 것 처럼 validation을 해 보려 했는데 밸리데이션이 전혀 먹히지가 않았습니다. QuizCreateDto.kt data class QuizCreateDto( @NotBlank val description: String, @NotBlank val answer: String, @NotBlank val explanation: String, val examples: Array ) { override fun equals(other: Any?): Boolean { if (this === other) return true if (other !is QuizCreateDto) return false if (description != other.descr..

Programming/Kotlin 2022.09.07
[Spring Boot JPA] P6Spy 활용해 쿼리 로그 확인하기

Intro 스프링부트와 JPA로 프로젝트를 진행하다 보면 실제 쿼리가 어떻게 나갈지 눈으로 확인을 하고 싶을 때가 참 많습니다. JPA가 참 편하긴 한데 개발자가 직접 쿼리를 작성하지 않았다 보니 실제로 어떤 쿼리가 나갈지는 눈으로 확인 하기 전까지는 정확히 알기 힘들고, 가끔씩은 의외의 쿼리가 나가는걸 보고 놀라기도 합니다. 제 기준에 쿼리를 꼭 확인해야 할 상황이 크게 두가지 정도가 있었는데요 의도한대로 작동하지 않아서 쿼리가 의심될 때 N+1 문제가 발생하고 있는지 확인이 필요할 때 그러다보니 항상 테스트 설정에서는 쿼리가 전부 출력되게 설정 해두고 테스트 코드들을 실행 시키고 있습니다. 확실히 쿼리가 눈으로 확인이 되면 마음의 안정이 좀 오는 것 같아요. 쿼리 로그를 확인하는 방법을 단계별로 개선..

Programming/JPA ⁄ Spring 2022.09.03