본문 바로가기

개발55

spring boot - intercepter 백엔드를 개발하다 보면 특정 유저(관리자, 로그인 한 유저 등)만 사용할 수 있는 api가 있습니다.로그인 한 유저만 사용할 수 있는 controller를 만들어 보겠습니다. intercepter를 이용해 해당 유저만 통과시키도록 하겠습니다.intercepter저희는 intercepter를 만들어서 예외처리를 할 것입니다. 해당 기능을 해 줄 파일 하나를 만듭니다. 그리고 HandlerInterceptor를 상속하고 preHandle를 사용해 controller진입 전에 체크를 해 줄 것입니다. HttpMethod.OPTIONS.matches(request.getMethod()) : 서버와 통신할 때 예비 요청을 보내 잘 통신되는지 확인한 다음 본 요청을 보냅니다. 이때, 예비 요청은 OPTIONS로 보.. 2024. 9. 28.
spring boot - 1 : N 관계 만들기 데이터베이스에서는 두 엔티티가 1:N관계를 이룰 수 있습니다. spring boot에서 이것을 만들어 봅시다.엔티티 만들기todo list를 만든다 가정하겠습니다. 유저는 여러개의 일을 가질 수 있습니다.우선 user와 work db를 간단히 만듭니다. 각 work가 어떤 user와 연결되었는지 알기 위해서 work에 user_id를 넣어줍니다. 이것이 foreign key가 됩니다. spring boot에서는 다음과 같이 만들어 줍니다. user에 @OneToMany 어노테이션을 걸어줍니다.@JoinColumn을 사용해 user_id와 연결된다고 알려줍니다.user에서 user_id를 만들어 주었으니 work에는 따로 만들지 않습니다.데이터user 데이터를 하나 만들어 주겠습니다.  그리고 work 데.. 2024. 9. 25.
spring boot - 환경 변수 작업을 하다 보면 코드나 깃에 들어가면 안되는 변수들(ex. 비밀번호)이 있습니다. 이런 변수들을 잘 관리하기 위해 환경변수를 만듭니다.환경변수 세팅저는 config를 관리하는 패키지에 PropertyConfig파일을 만들었습니다. @Configuration: 세팅 파일임을 선언합니다.@PropertySource("classpath:static/properties/env.properties"): 어떤 파일을 환경변수로 사용할 것인지 정의합니다.지정한 파일에 환경변수 파일을 넣습니다. .gitignore에 해당 파일을 꼭 넣어줍니다. 이것을 빠트리면 모든 비밀번호가 공개됩니다. 만약 gitignore이 동작하지 않는다면git rm -r --cached . 로 캐시를 지우고 다시 진행하 됩니다.사용법저는 s.. 2024. 9. 22.
react - 소스 코드로 페이지 전환 헤더의 우측 상단에 로그인 탭이 있는 경우가 있습니다. 해당 탭을 누르면 로그인 창으로 이동합니다. 해당 기능을 구현해 봅시다.Nav  디자인우선 nav탭을 디자인해 봅시다. Navbar.Text : nav창의 우측 상단에 보여줍니다. text라고 되어 있지만 안에 넣은게 버튼이여도 됩니다.Button : 예쁜 버튼입니다. 그냥 버튼이 아니라 예쁜 버튼입니다.onClick={move} : 클릭 시 move함수를 호출합니다.variant="primary" : 예쁜 파란 버튼을 보여줍니다. 이렇게 하면 화면이 큰 상태에서는 이렇게 보이고 줄어들면  이렇게 보입니다. 오른쪽 위 버튼을 누르면 창이 열리면서 버튼도 함께 보입니다.탭 이동탭은 useNavigate를 이용해서 이동할 수 있습니다. onClick을 .. 2024. 9. 20.
spring boot - 메일 전송 이메일 인증을 통해서 회원 가입을 하는 경우 서버에서 메일을 보낼 수 있어야 합니다. 계정 설정구글 계정 - 보안으로 이동합니다. 그리고 2단계 인증을 해줍니다. 이제 앱 비밀번호를 설정해 주겠습니다. 앱 비밀번호로 가면 아래와 같이 나옵니다.  그럼 16개의 알파벳이 나옵니다. 구글은 이걸 따로 적어두지 않아도 된다고 하지만 이거 나중에 써야 하므로 적어둡니다. 이제 메일을 설정할 것입니다. gmail - 설정으로 갑니다. 전달 및 POP/IMAP로 가서 둘 다 사용으로 체크해 줍니다. 서버이제 서버 설정을 합니다. build.gradle에 다음 의존성을 넣어줍다. implementation 'org.springframework.boot:spring-boot-starter-mail' : 이메일을 보내기.. 2024. 9. 18.
[논문 리뷰] NEfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (EfficientNet) ConvNet을 사용하는 네트워크들은 네트워크의 폭, 깊이, 해상도를 잘 바꾸면 모델의 성능이 향상된다고 합니다. 그럼 가장 성능이 좋은 값을 인공지능이 찾도록 하면 되지 않을까요? 이 논문은 여러 파라미터들을 잘 찾아주는 인공지능에 대한 것입니다.  접근법우선 문제에 대한 정의를 해 봅시다. i번째 Conv레이어는 다음과 같이 정의됩니다. $Y_i=F_i(X_i)$ $Y_i$는 출력 텐서, $F_i$는 연산, $X_i$는 입력 텐서입니다.입력 텐서는 (H_i, W_i, C_i)로 표현되는데 $H_i$는 너비, $W_i$는 높이, $C_i$는 채널 수입니다. ConvNet $N$은 $F_k\odot F_{k-1}\odot... F_1(X_1) = \bigodot_{j=1... k} F_j(X_1)$로 표.. 2024. 9. 15.