본문 바로가기

분류 전체보기

(816)
[JPA] Use @Param for query method parameters Spring JPA에서 Named Parameters 를 사용할 때 아래와 같은 메시지의 예외가 발생하였다. For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. 위의 Spring Data Reference에 보아도 Named Parameters를 사용할 때 @Param를 사용하라고 적혀있다는 것이다. (6.3.6) 이상한 것은 전에는 @Param 없이도 잘 동작했는데 왜 그럴까? 일딴 그 예외를 발생시키는 주체는 ParameterBinder ..
별모양 찍기 : mvp 와 리팩토링 질문 ******* ***** *** * 이렇게 출력해야되는데 for 중첩문을 이용해서 어떻게 하나요.. 일단 제일 궁금한게 공백과 \n을 나타내는 방법 입니다 for 중첩문 궁금합니다 ㅎㅎ 답변 프로그래밍을 하는 방법 중 한 가지는 가장 쉬운 방법으로 일단 동작하게 하고 개선을 하는 방법이 있습니다. 전자를 최소기능제품(Minimum Viable Product, MVP)라고 이야기를 하고, 후자를 리팩토링(Refactoring)이라고 부릅니다. 언어를 처음 배웠다면 Hello World 라는 문장을 출력을 해보았을 것입니다. #include int main(int argc, const char * argv[]) { printf("Hello, World!\n"); return 0; } 위의 코드는 Hel..
Spring MVC integration test 헤더 확인 테스트 아래와 같이 header에 대해 확인을 하는데 아래와 같이 헤더가 없다고 나온다. // when ResultActions result = mockMvc.perform( post("....") // .. // then result.andExpect(status().isCreated()) .andExpect(header().string("location", "https://namocom.tistory.com/10101")); 아래와 같이 ResponseEntity 를 통해 create(..)를 사용하면 location 헤더가 나와야한다. return ResponseEntity.created(uri).build(); 왜냐하면 내부가 아래와 같이 구현이 되어 있기 때문이다. public cla..
Mockito use case 이미 잘 정리가 되어 있어서 링크로 대신... Mocking Exception Throwing (Baeldung)
스프링 캐시 인터셉터 어노테이션 기반의 캐시를 종종 애용해주시는 우기님 덕분에 공부를 하게 되었다. 기회를 제공한 우기님께 감사를 드립니다. @Cacheable 어노테이션이 붙어 있는 메서드를 호출하게 되면 어떤 과정이 수행되어 캐시에 데이터가 저장되고 하는지가 궁금했다. 현상에 대한 디버깅을 통해 분석한 것이라 여러 방법 중에 하나일 수 있다. 디버깅을 하다보면 CacheInterceptor 클래스가 보이는데 아래와 같은 계층 구조로 되어 있다. 아래와 같은 MethodInterceptor 인터페이스를 구현하고 있기에 존재하는 메서드는 invoke 메서드 하나 뿐이다. @FunctionalInterface public interface MethodInterceptor extends Interceptor { Object in..
mac OS 업데이트를 못하는 이유 예전에 Apple 키노트에서 macOS가 Windows를 까는 영상을 본 적이 있다. (혹은 iOS가 Android 보다 낫다는 영상) 그 영상에서 본인의 운영체제가 더 뛰어나다는 것을 최신 운영체제 업데이트 비율로 나타냈다. 2021년 지금 나는 두 대의 mac을 가지고 있다. (실제로는 총 4대이지만 한대는 디스플레이용으로만 쓰고 있고, 한대는 전원케이블 조차 빠져 있는 잠자는 기기라 제외했다.) 2021년 3월 23일, 두 대의 mac 중 MacBook Pro (15-inch, 2018) 의 운영체제를 macOS 10.15 Catalina에서 11.2.3 Big Sur로 업데이트를 했다. 2020년 11월 12일 정식으로 릴리즈 되었으니 4개월만에 미루다 업데이트를 미루다가 한 것이다. 맥북에는 6..
iTerm 3.4.4 - 혹시 PIP 오류의 범인이? 설 연휴 전에 파이썬 패키지 설치시 어려움을 겼은 적이 있었다. home brew의 문제인줄 알고 파이썬을 다시 설치하고 버전 문제인가 이것저것 해서 해결을 하긴 했다. 3.4.4에서 파이선 런타임을 재설치에 대한 요청에 대해 사과를 한다는 것이 제일 첫 줄에 적힌 업데이트가 있었다. 업데이트 내용 3.4.4 Annoying things I'm sorry about - You'll be asked to re-install the Python runtime. This fixes a problem where pip3 would sometimes fail. Instead of creating a symlink of ~/Library/ApplicationSupport we will now use ~/.confi..
[AWS] 오래걸리는 작업 데이터 마이그레이션을 해야해서 작업용 API를 추가했다. 기본 타임아웃 시간인 60초를 초과하다보니 아래와 같은 에러가 응답된다. 504 Gateway Time-out 응답은 되지만 로그가 서버에 남기에 실제로 작업은 계속 수행되는 것으로 알 수 있었다. 504 Gateway Timeout error using Nginx as Proxy 같은 키워드로 검색해보면 대부분 proxy_read_timeout 값을 변경하라고 가이드 한다. 하지만 변경을 했지만 여전히 60초 타임아웃이 발생했다. 심지어 http client로 사용했던 curl의 문제인가 싶어서 --max-time 500 옵션을 붙여주었지만 마찬가이였다. 과거를 찾아보다. 전에 타임아웃을 설정할 때 히스토리를 찾아보니 원인을 알 것 같다. AWS..