커스텀 어노테이션이 필요한 상황 지금 구현하고 있는 프로젝트에서는 거의 대부분의 기능을 소셜 로그인 후 사용 가능하다. 따라서 거의 모든 API에서 JWT 토큰 인증 후 토큰에 있는 정보를 가지고 member의 정보(id, email 등등)을 추출하는 로직이 필요한데, 이를 컨트롤러에서 중복되는 코드를 계속 작성하기에는 너무 지저분하기도 하고, 깔끔하게 어노테이션 하나로 선언적으로 표현하고 싶어서 커스텀 어노테이션인 @AuthUser를 만들기로 했다. @AuthUser 어노테이션 @AuthUser는 여러 도메인에서 글로벌하게 사용할 어노테이션이므로, ./global/auth 아래에 만들어 주었다. 코드는 아래와 같다. (참고로 interface 앞의 @는 오타가 아니라, 어노테이션 타입이라는 뜻이다.) ..
분류 전체보기

build.gradle에 종속성 설정 먼저, 우리는 OpenFeign을 쓸 것이므로, 다음과 같이 build.gradle에 종속성을 설정해준다. ext { set('springCloudVersion', "2023.0.0") } dependencies { //FeignClient implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } 여기서 중요한 점은 이 버전의 Spring Cloud(OpenFeign)을 쓰려..

카카오 로그인 시퀀스 다이어그램 카카오에서 제공하는 카카오 로그인 시퀀스 다이어그램은 다음과 같다. 나는 여기서 Step 1: 인가 코드 받기는 프론트엔드 단에서 처리하고, Step 2~Step 3는 백엔드단에서 처리하려고 한다. 사용자 정보를 조회한 후에는 백엔드에서 해당 사용자 정보를 기반으로 자체 JWT 토큰 및 DB에 사용자 정보 저장을 통해 로그인/회원가입을 처리할 것이다. Kakao Developers에서 내 애플리케이션 만들기 먼저 Kakao Developers에 가입한 후, “내 애플리케이션”에서 애플리케이션 추가하기를 선택한다. 어플리케이션에 대한 정보를 입력한다. Kakao Developers에서 카카오 로그인 활성화 애플리케이션을 만든 후에는, 왼쪽 탭에서 "카카오 로그인" 항목을 찾..

build.gradle에 종속성 설정 먼저, 우리는 OpenFeign을 쓸 것이므로, 다음과 같이 build.gradle에 종속성을 설정해준다. ext { set('springCloudVersion', "2023.0.0") } dependencies { //FeignClient implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } 여기서 중요한 점은 이 버전의 Spring Cloud(OpenFeign)을 쓰려..

keras.layers.GlobalAveragePooling1D 레이어란? 다른 사람이 만든 AI 모델 코드를 보는데, 마지막에 output을 내놓기 전에 바로 이 GlobalAveragePooling1D를 거치고 있는데 이게 무슨 뜻인지 모르겠어서 찾아보게 되었다. GlobalAveragePooling1D에 대한 설명을 보면, "시계열 데이터에 대한 전역 평균 풀링 작업"이라고 나와있다. 이렇게만 들으면 알기 어렵다. 다시 풀어서 설명하자면 시계열 데이터를 받아서 각 채널별로 평균(즉 전역 평균) 을 계산해 고정된 길이의 출력을 생성하는 역할을 한다. 이 레이어가 있으면 서로 다른 길이의 입력들이 주어져도 Average 값만을 선택함으로써 output를 고정된 길이로 만들 수 있다. 📌참고: pooli..