💻dev

문제 발생 Spring Security로 로그인 기능 구현 당시 SecurityConfig 클래스를 WebSecurityConfigurerAdapter를 통해 Override하려고 했다. 그러나... 더 이상 사용되지 않는다고 한다... 어디로 가야하죠 아저씨... Deprecated 된 클래스가 처음인가요... 해결 공식 문서에 답이 있다! https://docs.spring.io/spring-security/site/docs/5.7.0-M2/api/org/springframework/security/config/annotation/web/configuration/WebSecurityConfigurerAdapter.html WebSecurityConfigurerAdapter (spring-securit..
@Builder로 객체를 안전하게 생성하기 Lombok은 수많은 어노테이션을 지원한다. Builder 어노테이션을 이용해서 엔티티 객체를 Builder 패턴으로 생성해준다. 이 패턴을 알아보고 안전하게 객체를 생성하는 방법을 소개한다. Builder 패턴의 장점은 다음과 같다. 다양한 빌더를 구현하여 다양한 종류의 유연성 있는 객체 생성 가능 빌더를 사용하여 객체를 생성하면 코드의 가독성이 향상 예시) Member 엔티티를 @Builder로 생성 @Builder @Entity @Getter public class Member{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; pr..
보기 좋은 커밋 메시지는 당신의 시간을 단축해줍니다. 혼자 개발할 때는 알 수 없지만 협업을 하는 순간 커밋 메시지를 읽는 작업은 중요해진다. 그런데 커밋 메시지가 file 수정 이렇게만 적혀있다면?... 뭐가 어떻게 수정됐는지 파일을 눌러봐야만 알 수 있다... 이것은 많은 사람들의 스트레스를 유발하므로! 꼭! 프로젝트 시작 전에 개발 인원끼리 커밋 메시지 규칙을 정하도록 하자 아래는 현재 진행중인 팀 프로젝트에서 사용하는 커밋 메시지 규칙이다. : #이슈번호 - 형식으로 작성하며 제목은 최대 50글자 정도로만 입력 제목 끝에 마침표 금지, 무엇을 했는지 명확하게 작성 ################ 본문(추가 설명)을 아랫줄에 작성 ################ 꼬릿말(footer)을 아랫줄에 작성 #..
문제 발생 프로젝트 도중 특정 API를 호출시 500에러가 뜬다고 프론트 측에서 요청을 받음 처음에는 샘플 데이터가 아예 없어서 생기는 오류인 줄 알고 샘플 데이터를 넣었으나 여전히 500에러... 대체 뭔데.. 하고 로컬에서 돌려보니 생각도 못한 오류가 발생했다 바로... Ambiguous handler methods mapped for HTTP path 오류! 원인 처음 보는 오류인데 아주 간단 명료한 원인이 있었다. 말 그대로 HTTP 경로에 대해 '모호한' 핸들러 메서드가 매핑되었다는 것이다. 좀 더 쉽게 말하자면 API의 경로가 동일한 메서드가 여러개 있다는 뜻이다. 해결 @GetMapping("/{id}") public getReviews1(@PathVariable Long id){} @Get..
Optional을 사용하게 된 계기 바야흐로 프로젝트에서 Repository 개발 단계였다. 기존 엔티티 단건 조회는 단순하게 엔티티로 반환하고 있었고, 담당한 UserRepository를 테스트하다가 NPE를 만나게 된다. NPE(Null Pointer Exception) 개발자들이 가장 많이 마주치는 에러가 아닐까 싶다. (만나기. 싫어요. 제발). NPE는 Null 반환 자체도 문제지만 추적할 수 없어 오류 핸들링이 더 어렵다는 극악무도한 점이 있다. 아무튼 내 케이스에서 원인은 없는 User 엔티티를 반환하려다 보니 발생한 에러였고, 이를 좀 더 쾌적하게 핸들링 하기 위해 Optional을 처음 사용하게 되었다. 기존 다른 코드에도 엔티티 단건 조회는 전부 엔티티를 반환하고 있었기에 이를 계기로 ..
문제 설명 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다. "[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다. 채팅방에서 닉네임을 변경한다. 닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다. 예를 들..
문제 설명 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. (), [], {} 는 모두 올바른 괄호 문자열입니다. 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다. 대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return ..
문제 설명 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] 2개의 자연수로 이루어져 있으며, 이는 전력망의..
쁜새
'💻dev' 카테고리의 글 목록 (5 Page)