템플릿 오류 로컬에서는 정상적으로 매핑이 되는 어플이, 배포후 매핑이 안된다. 이에 대해 경험상 return "/뷰이름" 에서 /를 제거해주면 된다는 것을 알고 있었으나, 이미 /가 없는 상태였다. 이 문제를 가지고 한참을 머리를 싸매고 고민했다. 어이 없게도 대, 소문자로 인한 오타였다. 이를 진작 알아차리지 못한 이유는 로컬에서는 소문자 j가 알아서 대문자 J로 변환되서 알맞은 html파일을 찾아왔기 때문이다. 거의 두시간 넘게 날린것 같다. 카테고리 없음 2023.07.18
배포 deploy.sh 문제 의 도움을 받아 배포를 시도하고있다. 배포 코드중 현재 실행중인 jar파일의 프로세스를 찾아오는 PID=$(pgrep -f ${PROJECT_NAME}*.jar) 명령어가 제대로 작동하지 않아 한참을 해맸다. chat GPT와 구글링을 병행한 결과, 아마도 AWS Linux2와 책의 코드간의 호환성? 그런 문제로 추측된다. 확인해볼 방법이 없다. ps -ef | grep -v "grep" | grep "원하는 프로세스 이름" | awk "{print $2}" 해당 명령어로 찾아올수 있었다. 카테고리 없음 2023.07.18
인텔리제이 DB Navigator - AWS RDS 접속 오류 name값으로 인한 오류가 발생하여 접속이 되지 않는다. 결론: 구글링해본 결과, mariaDB와 DB Navigator간의 호환성 문제가 발생한다고 한다. 즉, 툴 자체의 문제로 rds설정이나 마리아db설정의 문제가 아니다. 사이드 프로젝트/코인 거래 내역 추적기 2023.07.18
ajax통신 오류 해당 코드는 정상적으로 작동한다. dataType: text로 보내고, 이를 별도의 어노테이션없이 Map형태로 받아오는 것이 가능하다. 그러나 아래의 코드는 작동을 안한다. 브라우져 개발자 도구-네트워크 페이로드에서 정상적으로 데이터가 전송이 되는 것은 확인했으나, 서버측에서는 {} 로 받아온다. 아래 코드와 위의 코드에 차이점이 없어서 더더욱 원인을 파악하지 못하겠다. 결국 Map대신 HttpServeltRequest로 받아왔다. 문제를 해결했다기 보다는 회피한쪽에 가까운것 같다. 사이드 프로젝트/코인 거래 내역 추적기 2023.07.18
html 테이블 문제 내가 원하는 것은 컬럼명인 th단을 제외하고, td만 스크롤이 생기는 것이다. 그러나 이를 적용하면 th단과 td단을 따로 따로 tbody로 묶어줘야만 하는데, 이렇게 구현하면 각기 다른 tbody인 탓인지 th크기가 td크기와 달라진다. 자기 멋대로 커지거나, 작아지거나, 칸이 안맞거나 한다. td나 th에 width를 줘서 조정해보려고도 했지만, 무슨 이윤지 내가 주는 width보다 실제 width가 더 커지면서 여전히 안맞는다. 복창 터져 죽겠다. 하루 종일 온갖 난리부르스를 치고 검색한 결과가 이거다... 이놈의 css는 진짜 나하고 안맞는것 같다. 머리가 아프다. 사이드 프로젝트/코인 거래 내역 추적기 2023.07.16
403오류 해결 옳바르게 post요청을 날리고 post맵핑으로 받아도 계속 오류가 발생했다. 문제는 관리자 도구 -> 네트워크 창에서 test 요청을 더블 클릭 했을때 사진처럼 405 오류가 발생해서 오류의 원인을 찾는데 시간이 걸렸다. application.properties에 디버그 로그를 출력하도록 설정하고 프로그램을 실행시켜본 결과, 아래와 같은 오류 원인을 파악할수 있었다. 결과: csrf토큰을 넣지 않은 post요청이여서 오류가 발생했던 것. csrf토큰을 무력화 시키니 해결됐다. 이 문제를 해결하려고 거의 3시간을 붙잡고 있었네.... 평소에는 항상 프로젝트 시작시 csrf토큰을 disable상태로 만들어놓고 시작해서 전혀 생각도 못하고 있었다. 별것도 아닌 문제에 시간을 이리 소모했다보니 좀 당황스럽다.... 사이드 프로젝트/코인 거래 내역 추적기 2023.07.11
진작 쓸걸... 진행도 80% 진작 중간중간 진행도와 오류 내용, 해결법 등을 정리했으면 좋았을 것이라는 생각이 든다. 이미 늦었지만, 늦었다고 아무것도 안하는 것보다는 쓰는게 그나마 나으니 일단 쓴다. 목적: 각 거래소의 api를 활용해 서로 다른 거래소에서의 거래 기록과 보유 코인을 한눈에 보기 쉽게 관리하기. 진행도 : 80% - 바이낸스, 업비트, 코인원 3개 거래소를 만들기로 계획했고, 바이낸스를 제외한 나머지 두개 구현 완료 마주친 문제들: 대부분 바이낸스쪽의 문제. 바이낸스는 코드 예시도 정확히 없을 뿐더러, 설명이 불친절하고 다른 거래서 api에서 제공하는 기능을 제공하지 않는 경우가 많았음(ex) 내가 산 가격 정보 등). 이를 해결하기 위해 진행 시간의 50%이상을 소요함. 현재 문제: 스프링 시큐리티 문제. 시큐리.. 사이드 프로젝트/코인 거래 내역 추적기 2023.07.11
(9)빈 스코프 스코프란? 빈의 존재 방식을 말한다. 스코프 종류에 따라 빈은 컨테이너에게 관리받는 시점을 조절하거나 객체가 유지되는 기간을 설정할수 있다. 스코프의 종류 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다. application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다 스코프의 등록법 @Scope("[스코프 종류]") 를 사용하면 된다. 자동 등록 빈이건 수.. 카테고리 없음 2023.06.05
(8) 빈 생명주기 콜백 스프링 빈(싱글톤)의 생명 주기 스프링 컨테이너 생성 -> 스프링 빈 생성(생성자 함수 실행, 생성자 주입 실행) -> 의존관계 주입(생성자 주입을 제외한 의존관계 주입) -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 초기화 콜백, 소멸전 콜백은 스프링에서 자체적으로 지원하는 기능이다. 코드로 예시를 살펴보자. #AutoConnect public class AutoConnect { private String fieldA; public AutoConnect() { System.out.println("AutoConnect 객체 생성됨"); System.out.println("field=" + fieldA); connect(); call("초기화 연결 메시지"); } public void s.. 카테고리 없음 2023.06.05
(7)의존 관계 주입 의존 관계 주입의 4가지 방법 의존 주입에는 4가지 방법이 존재한다. 1. 생성자 주입 2. 수정자 주입(setter 주입) 3. 필드 주입 4. 일반 메서드 주입 1. 생성자 주입 생성자 함수를 통한 주입 방법으로, 주입받는 의존관계 객체가 코드가 진행되는 동안 불변하며 필수적일 경우 사용한다. public class TowAlphabet { private final Alphabet first; private final Alphabet second; @Autowired public TowAlphabet(Alphabet a, Alphabet b) { first = a; second = b; } } 만약 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동주입이 된다. public class To.. 카테고리 없음 2023.05.22