분류 전체보기 129

분석 마비

주의 - 소프트웨어 공학에서 이야기하는 “분석 마비(Analysis Paralysis)” 와 그 해결책으로 나온 애자일 개발 방법론과는 약간 다른 주관적인 관점에서 느낀 내용을 바탕으로 이야기함.현재까지 내가 생각한 소프트웨어 개발의 과정과, 그 모순일반적인 소프트웨어 개발 과정: 설계 → 검증 → 구현검증만 두번 하는 것 같다는 생각을 하게 됨설계를 검증하는 걸 이미 가운데 단계에 했으니구현은 생산적인 결과를 도출하지 않는 무의미한 과정이 되어버림자꾸 좀 더 완벽한 설계만을 찾게 되는 문제 발생.문제점과 그 핵심근데 오만한 생각임. 자료구조를 검증하지 않음.근데 사실 검증하는 타겟 자체가 다름자료구조의 설계 검증 → 구현을 통해서 가능구현력에 따라 자료구조 설계의 검증 결과가 달라짐알고리즘의 논리 검증..

스프링 시큐리티 stack overflow

느낀점진짜 단위테스트 통합테스트가 진짜 중요하구나버그 찾기 진짜 까다로워지네문제 분석java.lang.StackOverflowError: null at java.base/java.lang.Exception.(Exception.java:103) ~[na:na] at java.base/java.lang.ReflectiveOperationException.(ReflectiveOperationException.java:90) ~[na:na] at java.base/java.lang.reflect.InvocationTargetException.(InvocationTargetException.java:68) ~[na:na] --------무한루프 시작-------- at java.base..

스프링 시큐리티 인증 아키텍처

전체 구조AuthenticationFilter : AuthenticationManager = N : 1AuthenticationManager : AuthenticationProvider = 1 : NSecurityContextHolder - Spring Security에서 인증된 사용자의 세부 정보를 저장하는 곳입니다. 이는 현재 애플리케이션의 보안 컨텍스트에 대한 중앙 저장소 역할을 합니다.SecurityContext - SecurityContextHolder에서 얻을 수 있으며, 현재 인증된 사용자의 Authentication 객체를 포함합니다. 이는 현재 실행 중인 스레드와 연관된 보안 정보를 담고 있습니다.Authentication - 두 가지 주요 목적으로 사용됩니다:AuthenticationM..

스프링 시큐리티 아키텍처

Spring Security 아키텍처Spring Security는 서블릿 기반 애플리케이션에서 서블릿 필터를 사용합니다.HTTP 요청이 들어오면 컨테이너는 FilterChain을 생성합니다.FilterChain은 요청 URI 경로를 기반으로 처리할 Filter 인스턴스들과 Servlet을 포함합니다.여러 Filter가 요청을 가로채거나 수정할 수 있으며, 최종적으로 하나의 Servlet이 요청을 처리합니다.Filter의 순서가 매우 중요하며, 이는 보안 로직의 순서를 결정합니다.DelegatingFilterProxy서블릿 컨테이너의 생명주기와 Spring의 ApplicationContext를 연결하는 역할을 합니다.서블릿 컨테이너에 표준 방식으로 등록되지만, 실제 작업은 Spring Bean으로 등록된 ..

Div.2 #965 C

k제일 큰 수에 1이 있으면?그냥 그거 쭉 늘리면 됨제일 큰 수에 1이 없으면?1이 붙은 수 중 가장 큰 수를 늘리거나큰수와의 차이만큼 낭비그 후 효율 떡상(1)중간값을 늘리거나효율 갈수록 안좋아짐이거 이분탐색 되려나?그래프가 ~자 모양이 됨효율 이김/안이김 이분탐색?몰빵보다 좋음/안좋음?이건 몰빵한테 따이는 시점 이분탐색인데중간값을 늘리는 시도를 점차 증가시켜본다?왜 그게 그렇게 되지?왜 최대 원소가 효율을 뽑기 시작하거나k 개 중 x개를 투자하면그 이후 k - x 개는 무조건 큰 수에 넣는게 제일 고효율이다문턱값을 넘으면 그 이후는 거기에 몰빵하는게 무조건 이득중간값을 올리는데 전부 몰빵하거나문턱값 안넘을거면 그냥 중간값 올리는데 몰빵이 나음그럼 중간값을 어떻게 올리지?순서가 동적으로 바뀌는데정해진 ..

PS/Codeforces 2024.09.27

Div.2 #967 C

트리 구조로 되어있는 숨겨진 그래프n-1 개의 간선을 찾아야 함15n 개의 쿼리를 통해n≤1000트리 구조의 특성상, 임의의 두 노드 사이의 경로는 유일하다한번에 하나씩 컴포넌트를 합쳐나가면?유니온 파인드 이용사이에 모르는 컴포넌트가 나오면?그냥 그거 찾지 뭐...?중요한건 임의의 두 컴포넌트를 "연결" 하고자 하는 것거리가 절반씩 줄어드니, logN서로 다른 두 컴포넌트 찾는 법유니온 파인드import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;//Change Class Name to ..

PS/Codeforces 2024.09.27

Div.2 #968 D1

mex를 사용하여 입력받은 값을 최대로 만드는 문제mex는 두번 사용하면 최대로 커지므로, 이를 이용해 달성 가능한 가장 큰 값을 리스트를 순회하며 확인한다.만약 한번만 사용가능했다면 그래프 문제가 됐을 것 같다.맨날 전역에 동적 메모리 할당하고, 오랜만에 PS하느라 까먹었는데메모리 할당도 할당된 크기만큼 시간이 든다!시간복잡도 터지는것에 주의하자.import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.*;//Change Class Name to Proble..

PS/Codeforces 2024.09.27

Div.2 #953 C

k 번마다 전구가 on-off 됨시간 - 스타트시간/k 의 값이짝수이면 켜진 시점홀수이면 꺼진 시점무조건 모든 전구가 한번이라도 켜진 시점 이후 k시간 안에 전구가 켜져야됨이후는 반복되는 패턴(x - a_i) / k 의 패리티가 모두 짝수인 가장 작은 x최대와 최소 사이 공간이 존재하냐를 묻는 문제로 바뀜((x - a_i) / k) % 2 == 1x += k - (x - a_i) % k(x - a_i) / k % 2 == 0y = min(y, x + k - (x - a_i) % k)import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import..

PS/Codeforces 2024.09.27

쿠키, XSS, CSRF, SOP, CORS

쿠키 개념Name (이름): 쿠키의 고유 식별자입니다.Value (값): 쿠키에 저장되는 실제 데이터입니다.Expires/Max-Age: 쿠키의 유효 기간을 설정합니다.Expires: 정확한 만료 날짜와 시간Max-Age: 쿠키가 유효한 초 단위 시간Domain: 쿠키가 전송될 수 있는 도메인을 지정합니다.set-Cookie 시 앱웹 서버가 직접 지정하여우리 사이트 전용 쿠키라는 것을 지정해둔다.Path: 쿠키가 유효한 서버의 경로를 지정합니다.Secure: HTTPS 연결에서만 쿠키를 전송하도록 합니다.HttpOnly: JavaScript를 통한 쿠키 접근을 방지합니다.SameSite: 크로스 사이트 요청에 대한 쿠키 전송 제어:StrictLaxNoneXSS사용자 브라우저에 스크립트를 실행시켜 정보를 ..