분류 전체보기

· 오류해결
해당 게시글은 스프링 시큐리티 5.7 이하 버전으로 진행했습니다. 오늘 스프링 시큐리티를 만지면서 로그인 시도를 하면 쿠키에 존재하는 CSRF 토큰이 자꾸 갱신돼서 CSRF 토큰 불일치 문제가 발생했었다.(해결에만 5시간을 쏟았다.)  CSRF의 경우 아래처럼 쿠키에 저장하도록 설정했다. 이렇게 설정하면 CSRF 토큰이 쿠키로 만들어져서 저장이 된다. 클라이언트는 해당 쿠키를 서버로 넘겨서 서버의 CSRF와 일치하는지 판단..csrf(csrf -> csrf .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()))  가상의 시..
· CS지식
매번 스프링 시큐리티 + JWT를 사용했어서 항상 아래의 코드는 default로 깔고 들어갔었다..csrf(AbstractHttpConfigurer::disable) 즉 csrf는 기본적으로 disable을 하고 들어갔기에 자세한 내용을 다루지도 않았었다.  그런데 이번에 회사에서 SESSION을 사용하는데 스프링 시큐리티를 도입하면서 CSRF 토큰을 사용하기 시작했다.(세션 vs JWT는 현재 정리 중에 있습니다.) 그래서 CSRF가 무엇인지, CSRF 토큰은 무엇인지, 스프링 시큐리티에서는 어떤 기능을 제공해 주는지 짚고 넘어가려고 한다. CSRF(Cross Site Request Forgery) 공격 Cross Site Request Forgery, 즉 사이트 간 요청 위조 공격이라고 한다. 의미를..
· 회고
전문대학교로 시작해서 결국 28살에 취업을 성공했다.  내가 취준을 하면서 느꼈던 생각과 과정을 아래 글로 풀어보려고 한다.   반도체 -> SW 개발자 전환 전문대학교 전자과 2학년에 반도체 중견 기업에 일학습병행제를 했었는데 그 당시 선배님, 대리님의 조언으로 편입을 결심했다. 편입 이후 큰 격차에 스트레스를 많이 받으며 다니다가 결국 무난 무난하게 졸업했다.(이때 졸업 작품으로 SW를 다뤄봤던 경험이 너무 재밌어서 4년 동안 준비했던 반도체에서 SW 개발직으로 직무 전환을 결심) 개발을 독학으로 하기에는 무리가 있다 판단해서 졸업 작품을 같이 했던 동생과 삼성 청년 소프트웨어 아카데미(SSAFY) 9기를 준비했다. (정말 운이 좋게도 한 번에 붙었다.)   삼성 청년 소프트웨어 아카데미 1학기 27..
예전에 버퍼 풀의 사이즈를 8MB -> 128MB로 상향 조정해서 조회 성능을 끌어올렸던 적이 있었다.(이후에 128MB -> 4GB로 또 상향 조정을 했다.) https://qkrqkrrlrl.tistory.com/118 0.026초)" data-og-description="api_request_history에 50만 개의 데이터를 넣어두고 SELECT * FROM api_request_history ORDER BY request_date DESC; 해당 쿼리를 날려보자. request_date에 인덱스가 걸려있는 상태다. 1.32초면 나쁘진 않군요! SELECT count(*) " data-og-host="qkrqkrrlrl.tistory.com" data-og-source-url="https://q..
개발자에게 유명한 CS repo를 만드신 VSFe님의 세미나를 오늘 다녀왔다.(아래 repo의 주인)https://github.com/VSFe/Tech-Interview GitHub - VSFe/Tech-InterviewContribute to VSFe/Tech-Interview development by creating an account on GitHub.github.com  평소에도 안산님 단톡방에서 다양한 도움을 많이 받았었고 redis 특강, cs 특강, 알고리즘 특강에 이어 이번에는 오프라인 세미나까지 주최하셔서 막 강남에 다녀왔다. 일단 점심을 먹기 위해 강남 파이브가이즈를 갔는데 웬 앞에 땅콩만 있고 사람은 빽빽하고 키오스크도 없어서 20초 고민하다가 후퇴했다.(서브웨이의 공포가 느껴져서 ..
RESTful API 프로젝트는 아래와 같은 아키텍처를 가지고 있다. 가난한 나는 ec2 프리티어를 사용하고 있어서 하나의 서버에 백엔드, 젠킨스, DB가 전부 올라가 있는 상태다. 여기서 고민이 '만약에 DB 컨테이너에 갑자기 문제가 생긴다면?' 혹은 '데이터가 날아간다면?' 사실 DB 백업은 가장 먼저 고민했어야 하는 점인데... 그래서 지금이라도 백업을 통해 불상사를 대비하려고 한다.  백업은 cron을 통해서 주기적인 스케줄링을 진행한다. 나는 하루에 4번 데이터 백업을 진행한다.(6시간 간격)또한, 5일이 지난 데이터는 삭제하도록 한다.(무분별한 백업 데이터가 쌓이지 않도록) 우선 아마존리눅스2는 기본적으로 cron이 설치되어 있지 않다. 그래서 아래 명령어로 설치를 진행.sudo yum ins..
유저가 GPT API를 호출하면 RestTemplate을 통해 동기로 처리를 진행했다.그 이유는 gpt의 응답으로 DTO를 생성해서 유저한테 넘겨줘야 하기 때문에 RestTemplate를 선택했었다. 우선 RestTemplate을 바꾸려는 이유는 지원이 중단됐기 때문이다.(많은 블로그에서 RestTemplate이 Deprecated가 되어 다음 버전에서 빠진다고 하는데 절대 아니다.) 예전 스프링 주석에는 Deprecated 내용이 적혀있었다지만, 이후에는 없어지고 유지보수 모드로 동작한다고 바뀌었다. 자세한 내용은 아래의 토비 님 유튜브를 보면 된다.https://www.youtube.com/watch?v=S4W3cJOuLrU   스프링 6.1부터 동기 HTTP 처리를 위해 RestClient라는 것을..
· JAVA
만약에 String 값을 int로 변환해야 한다면 뭘 선택할 건가? 대부분 알고리즘을 풀다 보면 parseInt를 쓰는 사람, valueOf를 쓰는 사람 둘로 나뉜다. 그래서 차이점을 찾아보면 공통적으로 하는 말들이 parseInt는 int로 반환하고, valueOf는 Integer로 반환해서 null을 받을 수 있다. 이게 끝이다. 내부적으로 동작하는 캐싱에 대한 이야기는 들어있는 글이 별로 없었다. 나도 예전에 Long값을 변환하면서 valueOf를 사용하다가 문제를 마주쳤던 경험이 있었기에 내부 로직을 파보려고 한다. Integer.parseInt 아래 코드는 가장 많이 작성하는 문자열 -> 정수 변환 코드다.int i = Integer.parseInt("123"); 내부적으로 먼저 한 단계 들어가..
indeep
'분류 전체보기' 카테고리의 글 목록 (4 Page)