본문 바로가기

전체 글88

[포스코x코딩온] 풀스택 부트캠프 4차 프로젝트 -6 api 어드레스를 작성하면서 한 가지 의문이 들었다. 일단 프론트와 연동을 안해놔서 그런가 그동안 별 생각 없었는데 내가 짠 api에서 클라이언트 측은 내가 이 사용자라는 것을 증명하기 위해서 userIndex 또는 userid를 보내야 한다. 이게 만약 세션에서는 그냥 세션에 있는 userid 정보를 이용하면 된다. 하지만 restAPI에서는 계속 정보를 줘야한다. 게다가 어떤건 index, 어떤건 id를 줘야해서 조금 헷갈릴 것 같았다. 다만 이와 똑같이 모든 요청마다 userid가 담겨있는 정보를 보내는 곳이 존재한다. 그건 accessToken이다. access token에는 마침 subject에 userid가 담겨있기도 하다. 유저 정보가 필요한 모든 요청에 access token을 디코딩해서 .. 2024. 3. 19.
[포스코x코딩온] 풀스택 부트캠프 4차 프로젝트 -5 논리삭제를 구현했다. 논리삭제의 대상은 유저와 코디, 옷장으로 정했다. 좋아요 같은 경우는 쌓인 데이터가 별다른 기능을 하지 않을 것 같았고, 좋아요를 취소하는 경우는 대부분 잘못 누른 것이기 때문에 쌓인 데이터로 무엇을 할 수 있을 거라고는 생각하지 않기 때문이다. 그래서 acitve column을 하나씩 만들고 default를 true로 설정, 삭제 시에는 active를 false로 하고, 모든 fetch 요청에서는 active가 true인 값만 가져오게끔 하면서 구현할 수 있었다. 이거 하면서 회원탈퇴하고 다시 회원가입 하는 경우, 같은 아이디로 회원가입이 불가능 했던 걸로 기억하는데 그게 논리삭제 때문이지 않을까 생각했다. 그렇게 게시글이나 코디같은 경우도 회원 탈퇴를 하는 경우 active = .. 2024. 3. 18.
백준 10448 배워두면 쓰기 좋은 개념이 나와서 써본다. 배열로 어떠한 조건이 맞는지 아닌지 확인할 때는 이렇게 boolean의 배열을 만드는 게 좋다. 이런 배열을 여러번 쓸 때는 이런 조건을 한번만 정의해두면 되기 때문에 시간복잡도에서 굉장히 유리하다. 아이디어는 다음과 같다. 삼각수 두개를 합한 배열 + 삼각수를 합한 배열 == 삼각수 세개를 합한 배열 1. 삼각수 두개를 합한 boolean의 배열을 만든다. 2. .삼각수 세개를 합한 boolean의 배열을 만든다. 3. 입력된 수의 index가 tripleOfEuraka에 속하는지 확인한다. (배열 인덱스가 입력된 수이고, 그에 대한 true, false로 알 수 있다.) package programers; import java.util.Scanner; pub.. 2024. 3. 14.
[포스코x코딩온] 풀스택 부트캠프 4차 프로젝트 -4 알고보니까 지금까지 구현한 jwt는 내가 좀 이상하게 만든 거였다. oauth2.0이 jwt를 지원해준다고 해서 이거 썼는데 이건 구글, 카카오 로그인 같은데서 쓰는 용도로 만들어진 프로토콜이고 나는 그냥 커스텀으로 만들어서 써야 했다. 어쩐지 오류 투성이더라... 그리고 chatGPT도 거짓말 투성이다. 걸러들어서 다행이지. 신포도 할 뻔했다. access token은 oauth에서, refresh token은 jjwt에서 만든 것까지는 눈치 못채고 , 이게 당연한 거라고 생각했었는데 (oAuth에서는 당연하다는 것 같다.) 저거 구현할 수 있는 기발한 방법을 찾고자 hasRole 함수를 썼는데, role 자체를 전부 인식을 못해서 403에러가 떴다. 물론 오류코드는 아무것도 안 알려줬다. 그래서 조금.. 2024. 3. 13.
백준 3273 번 - 자바 아마 이 문제는 이중포인터로 풀라고 만든 것 같은데 나는 먼저 생각난게 TreeSet이라서 트리셋으로 풀었다. 집합은 뭘 해도 시간복잡도가 낮으니까. 아이디어는 이거다. 1. 어차피 중복을 허용하지 않으니까 더한 값이 x가 될 때 짝은 무조건 하나밖에 없으므로 모두 지우면서 result++해준다. 2. a + b > x라면, 가장 작은 수인 a랑 더해도 큰거기 때문에 b를 삭제한다. 3. a + b < x라면, 가장 큰 수인 b랑 더해도 작은거기 때문에 a를 삭제한다. 인덱스가 하나거나 없으면 break; TreeSet은 집합이지만 알아서 정렬이 되는 자료구조다. 참고하자. 왜인지 모르겠는데 set.size가 1일 때는 어차피 처음에는 계속 NoSuchElementException이 떴는데 이유를 모르다.. 2024. 3. 12.
[포스코x코딩온] 풀스택 부트캠프 4차 프로젝트 -3 주말동안 JWT 배워와서 적용해봤다. 일단 기본적으로 JWT같은 경우는 Express에서 구현해봤었기 때문에 작동하는 구성방식은 대충 알고 있었는데 자바에서는 Spring Security가 대신해줄 수 있다는 란가 센세의 강의를 보면서 내 프로젝트에 적용했다. 근데.. 이사람 자기는 강의마다 최신화가 굉장히 잘 된다고 한 것 치고는 deprecated된 함수들이 되게 많아서 하나씩 구글링하면서 적용했다. 다만 한가지 주의할 점이 이 사람은 embedded database인 H2를 이용했지만 나는 jpa를 이용해야 한다는 점이었다. 근데 sping boot가 복잡하긴 하지만 일단 매력적인게 설명은 잘되어있다. 이런식으로 User Entity가 미리 설정되어 있고 이걸 UserDetails을 implemen.. 2024. 3. 11.