분류 전체보기

스프링시큐리티 401에러와 body가 빈 상태코드 200리턴
상황 스프링시큐리티, JWT를 사용해서 로그인을 구현했다. SecurityConfig와 JwtFilter, JwtSecurityConfig등 필요한 파일을 추가하고 가입과 로그인하면 토큰이 발급되는지도 확인했다. 문제는 .do가 붙지않은 요청을 보낼 때 401에러가 발생했다. 인증이 되지 않아서 발생한 문제고 무엇이 문제인지 확인해보았다. 시도한 방법 로그인해서 발급한 토큰을 postman에 등록했다. tests에 변수를 등록하면 자동으로 등록이 된다는데 임시로 이렇게 했다. 저기 토큰에 들어가는건 로그인했을 때 발급한 토큰을 넣으면 된다. 토큰정보를 담아서 요청을 보냇는데 마찬가지로 401이 떳다. 액세스토큰을 보내면 안됐나?싶어서 리프레시토큰을 담아서 보냇는데도 마찬가지였다. 뭐가 문젠지 한참을 고민..

AWS EC2 서버 이전시 발생한 이슈들 -SQLGrammarException: could not extract Result Set
상황 부트캠프에서 제공해주는 EC2의 기간이 끝났다. 이 서버를 aws 프리티어로 옮기는 과정에서 여러 이슈들이 발생했다. 서버에서 설치한 파일, 설정한 명령어 모두를 기록해놔서 어려움이 없을 줄 알았는데 굉장히 많은 시행착오가 발생했다. 기존과 달라진 것들 프리티어 무료 버전이라는 것과 기존에는 ec2에 mysql을 설치해서 workBench로 연결 후 사용했다면 이번에 옮길 때는 AWS RDS를 연결해서 사용했다. 이슈 1. 프리티어 램 용량 부족 - 자바파일을 빌드하기에 프리티어 램 용량이 부족했다. 램과 ec2저장공간의 메모리 스왑을 해서 이슈를 해결했다.(최대 2기가인데 1기가만 스왑 하니 메모리가 부족했다.) 2. 프론트 빌드 메모리 부족 - 기존에 빌드 방식은 sh파일을 사용해서 npm ru..
여행경로 자바
https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 여행경로 L3 첫 접근 for문을 수행해서 ICN인경우 dfs를 수행하고 방문처리를 한다. dfs를 수행하면서 리스트에 값을 담고 다 순회했는지 확인한다. 다 순회했는지 확인하는건 visited를 for문 돌려서 참인 경우 2차원 리스트에 해당 리스트를 반환한다. 위 방법으로 하려고 했지만 구현에 실패했다. -> 실패코드 public class 여행경로 { static List list = new..

SQL 조인 개념
조인은 다른 테이블을 연결할 때 사용한다. 조인조건을 기준으로 두 테이블을 하나로 합친다. Inner Join 서로다른 테이블에 있는 데이터를 가져올 때 사용한다. ex) 특정 게시글에 작성된 댓글내용을 가져온다. 1번 게시글에 달린 댓글내용과 사용자명을 가져오자 SELECT 댓글내용, 사용자명 FROM comments JOIN users ON users.id = comments.id WHERE comments.posts_id = 1 작동방식 JOIN~ON절에서 =기호로 같은 조건인 복수개의 데이터만 남는다. users.id 1, comments.posts_id 1 ~~~ user.id 1, comments.posts_id 2 ~~~~ user.id 1, comments.posts_id 1 ~~~~ us..

AWS EC2 ubuntu 배포 스프링부트 + React
ubuntu에 디비, 엔진엑스, 스프링부트, react를 이용해서 수동 배포를 진행해보자 이 게시글의 1차목표는 인간젠킨스가 돼서 수동 배포를 완료하는 것! ec2를 발급받고 터미널은 ubuntu, 탄력적 Ip를 발급받았다는 기준으로 설명하겠다. 1. ec2 등록 Aws에서 ec2 pem키를 발급받았고 탄력적IP를 등록했다면 MobaXterm을 설치하자 https://mobaxterm.mobatek.net/download.html MobaXterm free Xserver and tabbed SSH client for Windows The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more! ..

MVC패턴
MVC탄생 배경 기존에 만들었던 서블릿은 모든 기능을 혼자서 처리한다. 서블릿이 데이터를 처리하고 화면을 작성하며 비즈니스 로직도 작성했다. 규모가 커지면 분업해야한다. 회사 규모가 커지면 직무별로 나누듯 개발도 기능별로 나누어야 유지보수하기 편하다. 이렇게 기능을 나눈 것을 MVC라고 한다. MODEL, VIEW, CONTROLLER라는 기능으로 분리해서 개발을 진행한다. 기존에 서블릿 혼자서 담당하던 일을 세 컴포넌트가 처리한다. 올인원 방식때보다 설계 시간은 오래 걸리지만 유지보수와 확장측면에서 큰 이점이 있다. 헷갈리기 쉬운 점 MVC모델을 봤던 사람이라면 MVC의 뜻은 안다. 하지만 서로서로 어떻게 연결이되는지, 또 M,V,C 세개의 컴포넌트인데 CONTROLLER, DAO, DTO, SERVI..
백준 1003 피보나치 함수 자바
https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 틀린 줄 알았는데 맞았다. 접근 아이디어 0의 개수와 1의 개수를 출력해야한다. 피보나치에 dp를 접목시키는 방식은 배열안에 피보나치의 값을 넣어서 값이 있다면 배열을 리턴하는 방식으로 문제를 푼다. 하지만 이 문제는 도통 감이 잡히지 않았다. 막연하게 n만큼 배열을 만들고 n이 가지고 있는 0의 개수와 1의 개수를 리턴하는 식으로 구하면 되지 않을까?? 라고 생각했다. 구현 방식이 깔끔하지 못하고 매번 배열을 리턴하는 방식이 맞는가 싶은 의구심이 들었는데 맞았다. 0과 1은 함수내에서 구현하..
백준 14889 자바 스타트와 링크
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 접근 아이디어 조합으로 풀었다. tgt배열에 true false값을 넣어서 조합의 절반만 순회하도록 하고 절반을 순회했다면 연산을 했다. 2중for문에 j = i+1을 하면서 대각선기준 아랫방향은 접근하지 않도록 하고 ij와 ji를 더해서 최솟값을 갱신하는 방식으로 풀었다. 잘 한 부분 조합을 생각한 것과 절반만 순회하는 아이디어를 잘 떠올렸다. 합칠 때도 양쪽을 한번에 구하는 방식을 어렵지 않게 구현했다. 부족한 부..
백준 14888 자바 연산자 끼워넣기
접근 아이디어 연산자 배열이 2, 3, 0, 1 이렇게 주어졌다면 하나씩 줄이고 재귀로 탐색한다. 숫자 배열을 매번 연산해서 재귀 탐색을 진행할 것이므로 depth는 1부터 시작하고 0번째 값을 sum이라는 인자로 보낸다. for문으로 연산자를 하나 선택했다면 calculrator함수를 이용해서 바로 연산을 진행한 뒤 재귀를 수행한다. 잘 한 부분 크게 어렵지 않았고 연산을 따로 함수로 구분해서 보기 편하게 코드를 짯다. 부족한 부분 연산자를 감소시키고 재귀를 돌렸으면 다시 증가시켜야 하는 부분을 깜박했다. package backjon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; i..
백준 2580 스도쿠 자바
https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net nQueen문제를 이해했다면 충분히 풀 수 있는 문제다. 쉽게 풀진 못했고 2가지 케이스 때문에 많은 고생을 했다. 접근 아이디어 배열을 입력받을 때 0인 배열의 위치 값을 list에 넣는다. 그 후 백트래킹을 하면서 하나하나 값을 확인한다. 해당 자리에 가능한 숫자 배열을 만들고 그 숫자를 하나하나 넣어가며 백트래킹을 한다. 다른 분 코드를 보니 배열을 만들지 않고 숫자를 넣어서 체크하던데 그 ..