목록전체 글 (18)
히콩쓰 개발 일지
import java.util.*;class Solution { public int[] solution(String[] genres, int[] plays) { ArrayList answer = new ArrayList(); HashMap genresCnt = new HashMap(); // 장르별 총 재생횟수 HashMap> musicCnt = new HashMap(); // 장르별, 인덱스별 for(int i = 0; i index = new HashMap(); index.put(i, plays[i]); musicCnt.put(genres[i], index); } else..
보호되어 있는 글입니다.

새로운 프로젝트를 진행하면서, CI/CD 작업을 진행하겠다고 했다.CI/CD 라고 하지만, 정확히 어떤 의미인지 잘 모르고 썼던 것 같아 제대로 알아보았다.CI (Continuous Integration) : 지속적 통합- 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것CD (Continuous Delivery & Continuous Deployment) : 지속적 배포..

프로젝트를 진행하면서, 아래와 같이 보안에 민감한 정보를 application.properties(yml) 에 String 형태로 직접 작성했었다. DB URL, Password JWT Secret Key OAuth Client Key 하지만 이런 민감한 정보들은 모두 숨겨야 마땅하다. 튜터님께서 말씀해주신 방법은 아래와 같이 총 세 가지이다. 1. 환경변수를 통해, 어플리케이션 최초 시작시 동적으로 값을 넣어준다. 2. ApplicationRunner 같은 인터페이스를 통해, 어플리케이션 최초 시작 시 AWS SecretsManager 등 외부 스토리지에 저장된 값을 읽어와 적용한다. 3. Configuration Server라는 것을 별도로 두고, 해당 서비스와 통신하여 그 값을 적용하도록 한다. 이..
백준의 Silver5_2563_색종이 문제를 풀었다. https://www.acmicpc.net/problem/2563 처음에는 수학적 사고로 접근했다. x축끼리 뺐을 때, y축끼리 뺐을 때 등 다양한 상황을 고려해야 해서 구현에 실패했다. 하지만, 넓이를 구하는 문제는 그렇게 하지 않아도 된다는 "준영" 님의 피드백을 받았다. 이 문제는, 2차원 배열을 선언해서 한 칸씩 칠해가는 방식으로 접근하면 된다고 말씀해주셨다. 그래서, 흰색 도화지가 100 * 100 이므로 101씩 boolean 타입으로 선언해주고, 이는 기본값이 False이니 x, y 좌표에 해당하는 index를 true로 표시하고 칸당 넓이 1로 계산하여 sum을 더해주었다. import java.io.BufferedReader; impo..

카카오 OAuth로 로그인, 로그아웃 등의 기능을 구현하면서 인증받은 User 객체를 Userdetails에 담아 SecurityConfig에서 권한을 확인한 뒤 API 접근을 허가하고자 아래와 같이 WebSecurityConfig 코드를 작성하였다. @Configuration @EnableWebSecurity @RequiredArgsConstructor public class WebSecurityConfig { private final UserDetailsServiceImpl userDetailsService; private final AuthenticationConfiguration authenticationConfiguration; private final RestTemplate restTempla..

UnsatisfiedDependencyException : 직역_만족되지 않은 종속성 예외 프로젝트 구현 중, 위와 같은 에러를 마주했다. 에러 코드를 읽어보니, Bean 생성에 실패한 것이었고, 구글링 해보니 대부분 @Service @Controller @Component 의 Annotation 관련 오류였다. 하지만, 구현된 코드에는 Annotation이 적절하게 작성되어 있었고, 혹시나 하여 파일 위치까지 잘 살펴봤지만 별다른 문제를 발견하지 못했다. 그런데 왜 Service와 Controller 모두 Bean 생성이 되지 않는 것인지 도무지 알 수 없었고, 단순히 Annotation 문제라고 생각했던 자신을 책망하며 에러코드를 뜯어보기 시작했다. 에러코드를 천천히 살펴보니, 가장 아래쪽에서 그 원..

Controller 테스트 코드를 작성하던 중 authentication에 userDetails를 넣어줬음에도 불구하고 403 forbidden 에러가 발생했다. 에러 코드를 살펴보니, 아래 사진과 같이 MockHttpServletRequest에 CSRF 토큰이 들어간 것을 확인할 수 있었다. 하지만 본 프로젝트에서는 아래와 같이 WebSecurityConfig 에서 csrf를 사용하지 않도록 설정했기 때문에 CSRF 토큰이 설정된 것이 더욱 이상하다고 생각했다. Controller 테스트를 위해 강의에서 나온대로 코드를 작성했고, 이 과정에서 WebSecurityConfig가 제외된 것을 확인할 수 있다. 결과적으로, WebSecurityConfig가 제외되면서 csrf를 disable한 것이 같이 제..