목록전체 글 (39)
코더
문제점 : seat이 a가 있고 matchSeat이 이에대해 자식연관으로 A,B,C 일 때a를 삭제하려 하면 matchSeat이 db에 남게 됨으로 seat이 삭제가 안된다.원하는 구조는 matchSeat이 존재한든 안하든 seat이 삭제가 되어야 하기 때문에 수정을 해주었다. 발생한 문제 :2026-09-10T17:22:09.190+09:00 ERROR 5167 --- [dream_stadium_V2] [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing fa..
배경 : UserCoupon을 owner가 만드는 즉시 customer에게 발급하도록 구조를 만들었다.편하게 하려고 그렇게 구조를 만들었으나 그러면 UserCoupon을 만들 때 마다 수천명 혹은 수만명의 사람들에게 UserCoupon을 발급하게 되는 상황이 오게된다. 과정 :public List createUserCoupon( CustomUserPrincipal customUserPrincipal, UserCouponRequestDto dto) { User user = authRepository.findById(customUserPrincipal.getUserId()) .orElseThrow(() -> new BaseException(ErrorCode...
배경 : docker 배포하는 방법은 알지만 자세하게 어떻게 동작하는지에 대한 지식이 부족해 정리가 필요했다. CASE : 1 mysql:3306 차이 만약에 인텔리제이에서 실행을 하고 내 pc에서 테스트 하려면?jdbc:mysql://localhost:3306/dream_stadium_V2으로 일단 localhost로 yml파일 설정을 한 후 docker compose up -d로 일단 docker-compose.yml 을 빌드를 해준다. 그 후 생긴 컨테이너로 start 하면 된다. docker start dream-stadium-V2 즉, 이렇게 하면 docker-compose.yml 통해 빌드 된것을 통해 docker start로 mysql 만 키는것이다. 즉, 인텔리제이도 실행 + 맨 처..
-------------------로컬에 있는 develop 가져오는 방식---------------------------# 1. 작업 중인 내용 임시 커밋git add .git commit -m "wip: 작업 중"# 2. 다른 사람이 develop에 최신 코드를 올렸다면git switch developgit pull origin develop# 3. 다시 내 작업 브랜치로git switch feature/payment$ 4. 병합git merge develop------------------원격에 있는 develop 가져오는 방식----------------------------# 1. 최신 develop을 내 브랜치에 반영git stash(내 feature/payment에서)git fetch ori..
배경 : 로그인에서 logintype = NAVER, 일 경우 네이버 보안 정책을 따르지만 logintype = LOCAL 인 경우, 해당하는 로그인에 보안 정책 설정을 추가하지 않았기에 구글 recaptcha를 적용하기로 했다. 결과 : 개선 점 :살제 프로젝트라면 return 값을 Void로 설정을 하는게 맞다 생각하는데 아직은 테스트 용이하게 하기위해 응답값에 유저에 대한 token 값을 내렸다.당연하게 실제 프로젝트라면 빈값을 return 하고 쿠키 정보만 내려줘야 한다.(인지는 하고 있어야 한다.)
배경 : 최종 프로젝트에서 한번 더 api 요청 흐름이나 정리가 필요하다 느껴 작성하게 되었다. 발생 오류 : // 해당하는 로그인 요청은 잘 받아왔는데 계속 다른곳으로 리다이렉팅 하며 url이 계속 바뀌는 버그가 일어났다.. 해결 :생각을 해보니 Oauth2.0 검증 완료된 코드 마지막에 / 로 리다이렉팅을 시켜준 후 아무 조치도 취하지 않았다. 아래 코드를 간단하게 추가하니 오류가 해결되었다.@RestControllerpublic class TestStaticController { @GetMapping("/") public String home() { return "로그인 성공"; }} 흐름도 정리 :[OAuth 2.0 인증]네이버 로그인 ↓Authorizati..
개요 : recaptcha 서비스를 브라우저에 간단하게 localhost:8080으로 호출을 하고 실제로 적용되나 테스트를 해보았다. 사용이유 : 사용자가 실제 사람인지, 아니면 악성 봇(매크로)인지 구분하여 보안을 강화하고 쾌적한 환경을 유지하기 위해 사용장: 강력한 봇 차단, 무작위 대입 공격, 스팸 생성, 티켓 매크로 등 악성 봇의 접근을 효과적으로 차단합니다단 : 사용자 경험(UX) 저하가 있고, V3 사용하는 현재는 괜찮지만 이미지 클릭을 하거나 ux가 저하 되고, 비용 문제가 발생 가능 설정 방법 : 1. Recaptcha 기본 설정 Recaptcha https://www.google.com/recaptcha/admin/create?utm_source=chatgpt.com 로그인 - Go..
개요 :jpa, mybatis를 사용하던 중에 문득 jpa는 객체 지향이여서 entity를 기준으로 바라보고 수정을 해주는데 mybatis는 직접 db를 수정하는 구조여서 @Query를 오랜만에 사용하고 내용도 정리를 할겸 글 작성하게 되었다. @Query 구조 설명 @Query(value = "SELECT * FROM users WHERE email = :email", nativeQuery = true)//이 방식보다는 아래방식을 많이 사용함 or @Query("SELECT u FROM USER u WHERE u.email = :email")user findUser(@Param("email") String email);// 이 방식이 직접 sql을 객체 통해 사용자가 조회하고 싶을 때 사용하는 로직..
