# stackoverflow
사이드 프로젝트를 마치며,,

[Trouble Shooting] Spring Security 403 Forbidden 해결
본 포스팅은 Spring Boot 3.1.1 기반으로 작성된 글이며, 인증 방식으로는 Spring Security Session-Cookie 방식을 사용했습니다. 문제 상황 토이프로젝트로 도서판매시스템을 개발하던 중. myPage로 USER 권한이 있어야 들어갈 수 있게 했고, 회원가입을 하는 순간 USER 권한을 부여해줌. 그 이후 당연히 될 것 이라고 생각하고 myPage로 들어가는 순간! 403 forbidden 등장.. 403 Forbidden? > HTTP 403 Forbidden 클라이언트 오류 상태 응답 코드는 서버에 요청이 전달되었지만, 권한 때문에 거절되었다는 것을 의미합니다. > > > 이 상태는 401과 비슷하지만, 로그인 로직(틀린 비밀번호로 로그인 행위)처럼 반응하여 재인증(re-authenti

왜 스택오버 플로우는 모놀리식을 선택했을까?[feat. Scaling Monolith]
Intro 아키텍처란 무엇인가? 시스템 구성 및 동작 원리를 나타내고 있다. 시스템 구성 요소(부품)에 대해 설계 및 구현을 지원하는 수준으로 자세히 기술된다. (IEEE 1471 또는 TOGAF 등) 구성 요소 간의 관계 및 시스템 외부 환경과의 관계가 묘사된다. 요구 사양 및 시스템의 전체 수명주기를 고려한다. 시스템 전체(하드웨어와 소프트웨어를 포괄한 것)에 대한 논리적인 기능 체계와 그것을 실현하기 위한 구성 방식이며, 시스템의 전체적인 최적화를 목표로 한다. 위의 내용을 보면 무엇이 떠오르는가? 다양하다면, 위의 정의는 이미 실패한 것이나 마찬가지거나, 단순하게 정의할 수 있는 게 아니라는 것을 의미한다. 실제로, 나도 모놀리식 아키텍처
재귀와 스택 오버플로우
스택 오버플로우와 재귀의 상호 작용 이해하기 재귀는 많은 알고리즘과 자료구조에서 필수적인 개념이지만, 스택 메모리에 의존하기 때문에 무제한 호출은 스택 오버플로우를 초래할 수 있습니다. 예를 들어, 팩토리얼 계산을 위한 간단한 재귀 함수를 보겠습니다. 이 코드에서 factorial(n) 함수가 호출될 때마다 새로운 스택 프레임이 생성됩니다. 이 프레임들이 계속 쌓이면 스택 메모리가 과부하를 겪게 되고, 스택 오버플로우가 발생하게 됩니다. 스택 오버플로우가 발생하면 프로그램은 강제 종료되므로, 이를 방지하는 것은 우선적인 과제가 됩니다. 재귀 함수의 스택 프레임 *이미지 출처: [코딩의 시작, TCP School](https://www.google.com/url?sa=i&url=http%3A%2F%2Fwww.tcpschool.com%2Fc%2Fc_memor

[Spring Security] 스프링 시큐리티 - java.lang.StackOverflowError 발생
역시 또 사소한 오류로 몇 시간 삽질을 했다...ㅠㅠ 바로 JWT 검증 필터인 JwtAuthenticationFilter에서 StackOverflow가 자꾸 발생하는 것이었다. 아예 Authorization 헤더가 없거나, JWT 검증에 실패하거나 하는 경우에는 내가 설정한 대로 예외를 던지고 있는데 JWT 검증에 성공한 경우에는 어김없이 StackOverflow가 발생했다. 일단 Spring Security를 적용하면서 생긴 수정사항을 살펴보자. 기존에는 JwtAuthenticationFilter 클래스가 OncePerRequestFilter를 상속받던 것에서 BasicAuthenticationFilter를 상속받도록 수정하였다. 그리고 JWT가 유효한 것이어서 Decoded된

java.lang.StackOverflowError: null
주로 재귀호출을 사용하는 메소드가 무한 루프에 빠져서 일어나는 에러이다 . 데이터베이스에는 양방향으로 설정해두었는데 엔티티에서 관계설정을 한쪽에서만 해주어서 나왔던 에러였던것 같다.
230316 - 순환 참조
목차 순환 참조 문제 1. 순환 참조 문제 각 모듈이 서로를 의존하고 있는 상태 스프링을 사용하다보면, JPA 뿐만 아니라 다양한 위치에서 간혹 경험하게 됨 스프링 컴포넌트끼리 참조하는 경우 JPA에서 가장 흔하게 발생하는 순환 참조:toString() (lombok) 해결방법: 한 쪽의 참조를 제거하는 것으로 간단히 해결됨 > lombok @ToString 한 쪽을 제거

[2/27~3/5] 개발 분야 주간 인기 TOP 5 게시물 | 커리어리
안녕하세요, 요즘 개발자들의 커뮤니티 커리어리에서 지난 한 주간 개발자 분들에게 도움이 된 글 5개를 공유합니다. 여러분들에게 도움이 되었으면 좋겠습니다! [1] 자주 보는 개발 설계 패턴 19가지 1탄 개발자라면 꼭 알아야 할 소프트웨어 개발 설계 패턴 19가지에 관해 알아보자! [2] stackoverflow.com 서버는 어떻게 이뤄져 있을까? 전세계 사람들이 사용하는 Q&A 서비스는 어떤 기술스택과 서버로 이뤄져 있을까요? [[3] 질문하고 부탁할 때 저평가, 거절, 민폐의 두려움 이겨내기](h
ssh 오류(agent: agent refused operation) 해결법
새로이 마련한 컴퓨터에서 설정을 복사해와 ssh 연결을 시도하던 중 오류가 발생했다. 스택오버플로우에서 이 문제의 해결법을 제시하였는데, 그것을 조악하게나마 번역해보고자 한다. ssh-add 혹은 ssh-add -l 명령어를 실행한다. 단, sudo를 사용하지 않아야 한다. ssh 설정은 로컬 계정을 불러오기 때문에, root에서 불러오는게 아니므로 sudo를 사용하여서는 안된다. 1번으로 해결이 되지 않는 경우, 파일 접근 권한을 수정한다. .ssh 폴더는 700으로, .ssh/*은(.ssh 안에 있는 모든 파일) 600으로 조정한다.

JSON 직렬화 순환 참조
순환 참조 ??? JPA 에서 양방향으로 연결된 엔티티를 JSON 형태로 직렬화 하는 과정에서, 서로의 정보를 계속 순환하며 참조하여 StackOverFlowError를 발생시키는 현상을 말한다. 직렬화 ??? 객체/데이터를 바이트 형태로 변환하여 네트워크를 통해 송수신할 수 있도록 만드는 것을 말한다. 문제 상황 아래 코드를 보면 PostResponseDto 에서 comments 를 생성자를 통해 초기화할 때,List를 넣어준다. 코드 자체는 문제가 없다고 생각을 했는데, 막상 실행을 해보니 StackOverFlowError... 처음보는 에러에 당황을 했다. 어디선가 Dto 를 생성하는 방법을 이용해서 진행했다고 했는데, 괜한 오기로
[Pre-Project] 2주차 마무리 회고(KPT) ;;작성중
Keep 팀원들과 소통을 위해, 매일 오전과 오후 회의를 진행했다. 코드컨벤션을 잘 지켰다. Problem 처음 목표했던 기능을 전부 완성하지 못했다. Try

[Pre-Project] 문제 해결 모음
1. 로그인 화면 구현 다 했는데, 인풋에 글자를 입력하면 깜박거렸다. 구글링 해보니까 FOUC 즉, 화면 깜박임 현상으로 외부의 CSS가 불러오기 전에 잠시 스타일이 적용되지 않은 웹 페이지가 나타나는 현상 이라고 했다. (출처: https://string.tistory.com/103) 해결책을 읽어보니 @import의 사용을 자제해야 한다 라고 되어 있었다. 해결방법 : Lazy, Suspense로 소셜 로그인컴포넌트를 필요할때 마다 불러와 사용되도 록 했었는데, 글자를 입력할때마나 불려와지는것 아닐까? 하고 상단에 임포트하고 lazy, suspense 를 지우니 문제가 해결되었다 2. 'data' is missing in props validation 이라는 에러가다른 컴포넌트에 pro

[문제해결] stackoverflow 첫 질문 발행
개발자의 영원한 친구, stackoverflow 현재 혼자 공부하는 SQL 책으로 MySQL 및 데이터베이스에 대해 공부하고 있습니다. 다만 아직 초반이라 그런지 궁금한 점도 많고 해결되지 않는 부분도 많고 그렇습니다. 질문 테이블에서 자동 증가를 위한 설정인 auto_increment 값을 변경하려고 합니다. 처음에 alter table [테이블명] auto_increment = 100; 으로 설정하니 잘 바뀌더군요. 다만 다음에 200으로 변경하려고 하니 200에서 시작하는 것이 아니라 201에서 시작하고, 300으로 설정하니 301에서부터 시작하더군요. 어찌된 영문인지 몰라 stackoverflow에 접속해 질문을 올렸습니다. 첫 질문이네요. 왜 첫 단어가 항상 씹히는 걸까요?
[Stackoverflow] 주피터 노트북에서 !와 %의 차이점은 무엇인가?
What is the difference between ! and % in Jupyter notebooks? 질문 내용 !과 % 둘다 Jupyter Notebook에서 Shell 명령어를 실행하는 것을 허용합니다. %는 IPython 커널에서 제공하며 또 "매직 명령어"를 실행하게끔 해주는데, 이는 잘 알려진 Shell 명령어도 포함되어있습니다. !는 Jupyter에서 제공되는 것인데, 셀 안에서 실행될 수 있도록 Shell 명령어를 사용할 수 있게 합니다. cd와 같은 간단한 쉘 명령어 같이, 저는 이 둘 사이의

[p-p] 변수명 중복을 주의하자! (클론코딩 5일차)
클래스이름 container를 top_container로 바꾼 후 > #### %로 바꾸고 반응형인데도 왜 자꾸 컴포넌트가 움직이지??? 처음엔 Rem으로 CSS를 작성했었는데 이상하게 자꾸 깃 리파짓토리로 머지하고 보면 내가 만든 컴포넌트가 다른 곳에 이동해있었다. 도대체 왜 머지할 때마다 자꾸 위치가 바뀌지..? 자꾸 다른 컴포넌트를 침범하고 디자인도 안 이뻐서 머지할 때마다 다시 맞춰서 바꿔주었고 계속 바꿔줘야하니 스트레스였다. 같이 머지 할 때마다 화면에 내 컴포넌트들이 어떻게 변할지 무서웠다. > #### 레이아웃을 늦게 설정해서 그런가?? 이렇게 팀을 이뤄서 같이 pull request하고 Merge하는 경험이 처음이라 미숙해서 각자 맡은 페이지를 만들면서도 실수가 잦았다. 보통은
[Stackoverflow] java.io.File 클래스와 java.nio.Files 클래스 중 어느 것이 선호되는가?
Q : java.io.File 클래스와 java.nio.Files 클래스 둘 중 새로운 코드에서 어느 것이 선호되는가? 그리고 그렇게 함으로써 장단점은 무엇인가? java.io.File vs java.nio.Files which is the preferred in new code? 1 ` 하나의 좋은 이유는 파일 작업을 위한 파일 스트림들의 용이한 사용을 위해서이다. 예를 들면 파일의 목록을 스트림으로 읽을 때 ArrayList로 읽는 것 보다 낫다. - Umesh ` 2 `NIO인 경우

리액트 질문 있으신 분? 🙋♀️
리액트 질문 있으신 개발자 분들에게 도움이 될 소식을 전합니다 :) 이번에 커리어리에서 리액트 qna를 오픈했어요. 커리어리는 개발자들을 위한 sns 서비스로, 다양한 현직자 분들께서 개발 트렌드나 커리어 노하우 등을 공유해 주시는 공간이에요. (현재 50,000명이 넘는 개발자 분들이 함께하고 계십니다!) 커리어리에는 현직자 qna라는 이름으로 다양한 개발자 분들께 질문을 남길 수 있는 공간이 있는데, 최근에 React 질문하기 베타 탭을 오픈했어요! 베타 기간 동안에는 리액트 질문을 올리면 거의 바로 답변을 받을 수 있답니다 :) 매일 다양한 질문들이 올라오고 있는 만큼, 질문을 남겨 보시는 건 어떨까요? 사수 없이 리액트 개발하시다가 어려움이 있으셨던 분들, 리액트 독학하시는 분들께 도움이 되길 바랍

Error: Could not find or load main class
Error: Could not find or load main class in intelliJ IDE 🔥 문제 스프링을 띄우기 위해 프로젝트 Application 클래스를 실행 시켰더니 다음과 같은 에러가 발생했다. Error: Could not find or load main class 🧯 해결 구글링을 해서 나온 방법대로 프로젝트를 다시 빌드 했더니 정상적으로 스프링이 띄워졌다.
[React]이벤트 버블링, 이벤트 위임
react children element click parent element 이벤트 버블링, 이벤트 위임 내용 정리 stackoverflow 답변 > if(e.currentTarget != e.target ) return; event.stopPropagation() stopPropagation() 웹 API > function logEvent(event) { event.stopPropagation(); } if(event.target == event.currentTarget){ event.stopPropagation() .... } 이벤트 위임 - Event Delegation 이벤트 위임을 한 문장으로 요약해보면 ‘하위 요소에 각각 이벤트를 붙이지 않고 상위 요소에서 하위 요소의 이벤트들을 제어하는 방식’입니다. 🐔참고문헌 Stackoverflow(react children element click parent element 구
selenium AttributeError 'Webdriver' object has no attribute 'find_element_by_id'
와 미친 셀레니움 업그레이드 돼서 selenium 문법 바뀜 findelementby_id findelementbytagname 이 문법을 사용하면 이런 오류가 나온다. 왜냐면! selenium 이 업데이트 되면서 findelementby_* 이런 문법은 사라졌기 때문! 그럼 어떻게 쓰냐? find_element("*", "$$$") 이렇게 써야함. 위에 이미지 맨 위에 있는 ("id", "query") 처럼 이미지 아래쪽에 tag_name 은 원래 쓰던 문법이고 위에 있는 id 는 바뀐 문법으로 사용한 것. >아무튼 결론은 업데이트 되면서 문법이 바뀌었다. 참고: https://stackoverflow.com/questions/7277320