전체 글

· Python
접근평범한 BFS 문제라고 생각했는데 조금 다른 부분이 있었다. 기존에 많이 풀어봤던 땅 문제들과 다르게 단순히 땅의 개수가 아닌 가장 높은 높이를 기준으로 땅을 세는 방식이다. 초반에 산봉우리와 인접한 격자는 모두 산봉우리의 높이보다 작아야 한다 이 부분을 잘못봐서 조금 헤멨다. 결국 생각해보니 특정 지점이 가장 높다면 산봉우리로 볼 수 있다는 것으로 해석이 가능하다. 그러려면 순차 탐색으로는 찾기 어려울 수 있다. 왜? 산봉우리라고 생각했던 지점이 실은 인접한 격자일 수 있기 때문이다. 그렇다면 '차라리 값을 기준으로 최대힙으로 저장해놓고, 이를 꺼내서 사용하는 방법은 어떨까?'하는 생각이 들었고 이 방향으로 진행했다. 여기서 "인접하다"의 정의는 X좌표 차이와 Y좌표 차이 모두 1 이하일 경우로 정..
java.lang.NullPointerException: Cannot invoke "org.example.springsecuritystudy.repository.JpaTokenRepository.findTokenByIdentifier(String)" because "this.jpaTokenRepository" is null왜인지 모르겠다..생성 시 CustomCsrfTokenRepository를 잘 연결한다. 처음에는 @Autowired 문제인 줄 알았는데 POST로 접속하게 되면 정상적으로 로그가 다 찍힌다. 그래서 뭐가 문제인지 찾아보았다.이 글 마지막에 있는 Spring Security 6 변화점을 통해 힌트를 얻었다. 공식 문서에서 해당 문구를 찾은 결과 아래와 같이 바뀐점을 찾아 볼 수 있었다...
스프링 시큐리티 인 액션 9장 공부 이후 필터에 @Component어노테이션을 걸고 Config 클래스에서 기본 인증 필터 위치에 등록했었다.@Component // 여기가 문제public class StaticKeyAuthenticationFilter implements Filter { private String authorizationKey; public StaticKeyAuthenticationFilter(@Value("${authorization.key}") String authorizationKey) { this.authorizationKey = authorizationKey; } @Override public void doFilter(ServletRequ..
· Java/Spring
인증 논리를 담당하는 부분은 AuthenticationProvider 이다. AuthenticationManager는 HTTP 요청을 수신하고 AuthenticationProvider에게 인증 책임을 위임한다. 이 단원에서는 인증 결과가 두 가지인 인증 프로세스를 살펴본다.요청하는 엔티티가 인증되지 않는다애플리케이션이 사용자를 인식하지 못해 권한 부여 프로세스에 위임하지 않고 요청을 거부한다. 일반적으로 이 경우 클라이언트에 HTTP 401 Unauthorized 응답이 반환된다.요청하는 엔티티가 인증된다요청자의 UserDetails 가 SecurityContext에 저장되어 애플리케이션이 이를 권한 부여에 이용할 수 있다.AuthenticationProvider의 이해어떠한 시나리오가 주어지더라도 구현..
greatwhite
우직하게