전체 글 142

[AWS][RDS] RDS MariaDB 프리티어 인스턴스 생성 및 DBeaver 연결

EC2에 DB를 설치하고 모니터링, 알람, 백업 등등을 직접 하는 것은 너무 어렵고 번거롭기 때문에 AWS에서 지원하는 RDS를 사용해서 EC2에 연결하기로 했다. RDS생성 서비스-데이터베이스-RDS를 선택한다. 데이터베이스 생성을 클릭한다. MariaDB를 사용할 것이기에 MariaDB를 선택해준다. 설정에서 정보들을 기입한다. 마스터 사용자 이름은 MariaDB에서는 root라서 root로 적어주었다. 중요!! 인스턴스 클래스가 기본은 t3으로 되어있는데 t2로 바꾸어야 과금이 되지 않는다고 한다. 스토리지 자동 조정 활성화의 경우도 과금이 발생할 수 있어 체크해제해준다. EC2 컴퓨팅 리소스에 연결 안 함 퍼블릭 액세스->예 체크 추가구성-데이터베이스 옵션에서 초기 데이터베이스 이름을 입력한다. ..

Study/AWS 2023.07.22

[AWS][EC2] 윈도우로 SSH접속 및 JAVA 11설치, 타임존 변경, HOSTNAME 변경

배포를 위해 AWS를 사용하기로 했다. 그래서 EC2 인스턴스도 생성하고 접속을 하려고 했는데 윈도우의 경우 프로그램이 필요하다. https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html PuTTY를 사용하여 Windows에서 Linux 인스턴스에 연결 - Amazon Elastic Compute Cloud 프라이빗 키의 암호는 추가 보호 계층입니다. 프라이빗 키가 노출되더라도 암호 없이 사용할 수 없습니다. 암호문 사용의 단점은 인스턴스에 로그온하거나 인스턴스에 파일을 복사하기 위해 사 docs.aws.amazon.com 이 공식문서에서 친절하게 설명되어 있지만 나중에 또 할 일이 생길 것 같아 설명해보는걸로 ^^ https://www...

Study/AWS 2023.07.21

[JPA] Validation failed for query for method public abstract 오류

회원 탈퇴 시 회원이 작성한 게시글도 모두 삭제되게 하기 위해 postsRepository에 쿼리를 작성했다. @Modifying @Query("DELETE FROM Posts WHERE user_id = :userId") void deletePostsByUserId(@Param("userId") Long id); posts 테이블에 user_id컬럼이 있어서 탈퇴 회원의 id를 받아 그 회원이 작성한 게시글을 삭제하는 쿼리이다. 그런데 Validation failed for query for method public abstract 에러.... 그래서 검색해보니... @Modifying @Query(value = "DELETE FROM Posts WHERE user_id = :userId" , nati..

Study 2023.07.18

[디자인패턴] MVC, MVP, MVVM 개념과 비교

자바로 프로젝트를 할 때 가장 많이 사용했던 패턴이자 가장 유명한 패턴은 MVC패턴이었다. 그런데 MVC패턴 말고도 여기서 파생된 다른 패턴들이 있다. 오늘은 MVC, MVP, MVVM 패턴의 개념을 정리하고 비교해보기로 한다. MVC (Model+View+Controller) Model : 모델은 애플리케이션의 데이터와 비즈니스 로직을 담당한다. 데이터베이스와 상호 작용하거나 데이터를 조작하는 작업들이 이곳에서 처리된다. View : 뷰는 사용자에게 데이터를 시각적으로 표현하는 부분으로, 주로 사용자 인터페이스를 담당한다. 사용자의 입력을 받아 컨트롤러에 전달하거나 모델로부터 받은 데이터를 사용자에게 보여준다. Controller : 컨트롤러는 사용자 입력을 받아 해당하는 모델을 호출하고, 결과 데이터..

[JavaScript] input type=file 파일업로드 ajax로 전송하기

썸네일 업로드 기능을 구현하던 중에 문제가 발생했다. (또...) 썸네일 컬럼은 상품 게시글 테이블 내에 있었고, 이미지 업로드시 이미지 정보가 들어가는 테이블은 따로 만들었다. 그리고 이미지 테이블은 id, 파일명, 파일경로 (파일경로+uuid+파일명) 컬럼으로 이루어져 있다. 어제 구현한 대로 이미지경로+썸네일컬럼 으로 썸네일을 가져오기 위해서는 이미지 테이블에 있는 uuid+파일명이 필요했다. 그래서 아래 쿼리를 사용하여 이미지를 가져오는 것에는 성공했지만, 문제가 있었다. 이미지가 로컬에 업로드되고 db에 저장되는 것보다 쿼리가 먼저 실행되어 파일명을 찾지 못하는 것이었다. 이 친구도 썸머노트 이미지 업로드처럼 글 등록 버튼을 누르기 전에 비동기로 파일을 먼저 전송하면 될 것 같았다. 파일업로드 ..

Study/JavaScript 2023.07.13

[Spring Boot] 스프링부트 이미지 외부경로 설정하기

프로젝트에 상품 리스트 게시판을 만들었는데, 카드 형식으로 썸네일을 보이게 만들었다. 글 작성시 썸네일을 선택하면 메인화면에서 보이는 형식... 그리고 컨트롤러에서 enum파일에 있는 IMGPATH (=/img/)경로를 가져와 model.addAttribute로 전달해주었다. 그렇게 전달받은 경로+썸네일 파일명으로 로컬에 저장된 파일을 가져오려 했으나........ 정상적으로 이미지가 로컬경로에 저장되고 db에도 파일명이 잘 들어갔지만 게시글 업로드 후 리스트에 들어가보면 이미지가 엑박으로 나옴 -> 서버를 재실행하면 정상적으로 보임 이라는 문제가 생겼다... 찾아보니 타임리프에서 외부경로를 사용하지 않고 static폴더 내부에 있는 경로를 사용하면 이미지 변경사항이 바로 반영되지 않는다고 한다. 그럼 ..

Study/spring 2023.07.12

[JavaScript] JS파일 코드 변경사항이 반영되지 않는 문제

프로젝트를 진행하면서 생각보다 머리아프게 하는 부분이 자바스크립트의 변경사항이 제대로 반영되지 않는 문제였다. 이번 프로젝트에서는 게시글 CRUD부터 회원가입까지 AJAX를 사용해서 /api 경로로 넘겨주는 방식을 사용하는데, 새로 함수를 추가하거나 오타 등을 수정하거나 했는데 제대로 반영되지 않아 버튼을 눌러도 반응이 없거나 고치기 전 코드 내용으로 에러를 뱉곤 했다. 기존에 자바스크립트의 ajax를 불러올 때는 버튼의 id명을 통해 ajax를 실행시키는 방식이었다. 그래서 따로 js파일 경로를 가져와서 매핑할 필요는 없었다. 하지만 계속 변경사항이 제대로 반영되지 않아서 구글링을 했고... ajax가 들어있는 js파일의 경로를 입력해서 매핑한 후, 경로 뒤에 ?ver=버전명 을 사용해서 새롭게 캐시를..

Study/JavaScript 2023.07.08