전체 글

안녕하세요. 고민하는 개발자가 되고 싶은 Hayden 입니다. 초보 개발자의 공부 과정을 기록하는 블로그입니다. 현재 Spring boot에 관심을 가지고 공부하고 있습니다.
·Spring/Spring Boot
00. 서버에서 클라이언트로 이벤트를 보내야 하는 필요성서버에서 클라이언트에게 이벤트 처리를 해주어야 하는 경우는 생각보다 쉽게 떠올릴 수 있다. 예를 들어 네이버 카페에서의 채팅 기능을 생각해보자.클라이언트가 특정 유저에게 채팅을 보내면, 해당 정보는 상대방에게 바로 가지 않고 먼저 서버로 전송된다.이후 상대 유저가 채팅 내용을 얻기 위해서 서버에 해당 채팅 내용을 요청해야한다.여기서 한가지 쟁점은 상대 유저는 자신에게 채팅이 온 사실을 어떻게 인식하는가? 이다.이러한 상황에서는 서버에서 클라이언트에게 이벤트를 전송해야한다.서버가 채팅 전송 요청을 받으면, 상대 유저에게 채팅이 왔다는 이벤트 처리를 해주면 위의 문제가 해결된다.이 외에도 푸쉬알림, 메일, 공지사항 등 다양한 기능에서 서버의 이벤트 처리..
·Spring/Spring Boot
00. 문제 상황배포 전에는 멀쩡히 인식되던 이미지가, ec2 배포 후에는 계속 이미지 경로를 인식 못함01. 문제 원인윈도우 환경에서는 파일 절대 경로에서 디렉토리를 구분할 때 백슬래시()를 사용함그래서 기존 프로젝트에서는 이미지 경로를 백슬래시를 사용해서 지정해놨음하지만 Linux 등 Unix 환경에서는 백슬래시가 아닌 슬래시(/)를 사용하여 디렉토리 구분그래서 기존의 이미지 경로를 인식하지 못했음02. 해결슬래시(/)를 사용하여 경로 작성 이미지가 무사히 표시됨
00. 상황JWT 인증 방식에서 Access Token의 취약한 부분을 보완하기 위해 Refresh Token을 추가로 사용한다.이때 Refresh Token은 비교적 안전하지만, 긴 생명 주기를 가지기 때문에 한번 탈취될 경우를 대비하여 서버에서 직접 관리를 할 필요가 있다.이를 위해 내가 진행중인 프로젝트에서는 Refresh Entity를 정의하여, 토큰이 발급될 때마다 DB에 저장하는데, 이때 만료된 토큰이 제거되지 않고 계속 쌓이는 문제점을 발견했다.이를 해결하기 위해 스케줄러를 사용하여, 자동으로 만료된 Refresh Token을 제거하는 로직을 도입했다.01. 스케줄러 사용법스케줄러 사용법은 간단하다.1. Application.java@SpringBootApplication@EnableJpaA..
·Spring/Spring Boot
01. ORS란?기본적으로 동일 출처 정책(SOP, Same-origin policy) 웹 통신 시, 다른 도메인 주소끼리는 통신을 하지 못한다.이때, 다른 도메인 주소 끼리 통신을 하기 위해서는 CORS를 통해야한다.이때 CORS(Cross-origin Resource Sharing, 교차 출처 리소스 공류)는 서로 다른 도메인끼리 자원을 요청할 수 있도록 허락을 받는 체제를 의미한다.02. Spring boot에서 CORS 설정하기기본적으로 스프링부트에서 CORS를 설정하는 방법은 1. 전역적으로 설정하기, 2. 각 Controller에 직접 설정하기 가 있다.여기서는 전역적으로 설정하는 방법을 사용했다.@Configurationpublic class WebConfig implements WebMvc..
·Git
Localgit branch -d  Remotegit push --delete
·Git
00. 문제 상황내 깃허브 Repo에서 받은 PR을 병합하려고 봤는데 이번에도 어김없이 충돌이 발생했다.평소처럼 Resorve conflicts 버튼을 눌렀는데 충돌이 너무 많아서 웹에디터로는 병합할 수 없다더라.. 잘 봐보니 커맨드라인으로 해결해야 한다고 해서 이번엔 깃 콘솔로 에러를 해결해 보려고 한다.다행히도 충돌 병합 과정을 나름 상세히 알려줘서 따라해보고자 한다. 01. 깃 Repo 클론해오기충돌이 발생한 레포를 클론 후 해당 경로로 이동한다. 02. 새로운 브랜치 생성이후 새로운 브랜치를 생성 후 backend 브랜치의 내용을 가져오려 하는데 에러가 발생했다.내용을 읽어보니 backend 브랜치가 없어서 발생한 오류 같다.브랜치를 확인해보면 backend 브랜치가 원격에만 존재하고 local에..
Im_Hayden
Hayden의 개발 일지