개발(93)
-
03.27 Redis 사용하는 이유
높은 성능 Redis는 메모리 데이터 구조 서버로써 매우 높은 성능을 보입니다. 특히 데이터의 읽기와 쓰기 속도가 빠르며, 대규모 데이터의 처리도 용이합니다 다양한 데이터 구조 Redis는 다양한 데이터 구조를 지원합니다. 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 구조의 데이터를 지원하므로, 다양한 용도로 활용할 수 있습니다. 확장성 Redis는 매우 높은 확장성을 가지고 있습니다. 클러스터링이 가능하므로 대규모 데이터의 처리도 용이하며, 샤딩을 통해 노드의 수를 늘릴 수 있습니다. 영속성 Redis는 영속성을 지원하므로, 메모리에 저장된 데이터를 디스크에 저장할 수 있습니다. 이를 통해 데이터의 안정성을 높일 수 있습니다. 다양한 언어 지원 Redis는 다양한 프로그래밍 언어를 지원합니다. ..
2023.03.27 -
03.25 TIL
이메일 인증 성공하고 나중에 실행하니 갑자기 2023-03-25 03:11:54.205 ERROR 12640 --- [nio-8080-exec-1] c.s.p.exception.ExceptionHandling : Error resolving template [mail], template might not exist or might not be accessible by any of the configured Template Resolvers (템플릿 [/mail]을(를) 확인하는 동안 오류가 발생했습니다. 템플릿이 없거나 구성된 템플릿 확인 프로그램에서 액세스할 수 없습니다.) 2시간 동안 코드를 다시 짜고 GPT부터 구글링을 쳐봐도 못찾았습니다. 그러다가 머리아파서 잠깐 쉬다가 와서 다시 봤는데 프로젝트..
2023.03.25 -
03.24 이메일 인증(feat. 네이버,구글)
1. 시작하기에 앞서 프로젝트에서 일반 회원가입에서 회원의 인증을 위해서 이메일 인증 기능을 넣게 되었다. 기능을 구현하면서 진행했던 절차들을 정리해보도록 하겠다. google SMTP 서버, Naver SMTP 서버등 다양한 서버를 사용하여 메일을 전송할수 있는데 이번 프로젝트에서는 Naver SMTP 서버를 이용하여 메일 인증을 진행하였다. 하지만 Google SMTP 서버도 설정하여 사용해보았다. 절차나 단계는 거의 유사하다고 볼수 있다. 또한 스프링에서 기본적으로 제공해주는 API를 사용하여 어렵지 않게 구현할수 있었다. ❗ 나중에 정리할것 1. SMTP 프로토콜에 대해서 2. JavaMailSander는 동기? 비동기? 처리 2. SMTP용 계정 설정 추후 Spring에서 해당 SMTP 서버를 ..
2023.03.24 -
03.17 QueryDSL 기본문법
기본적인 조회 Member findMember = queryFactory .select(member) .from(member) .where(member.username.eq("member1")) .fetchOne(); QueryDSL을 이용한 기본적인 where절을 이용한 조회이다. QMember와 같이 QType 클래스를 static import하여 사용하면 간결한 코드를 구성할 수 있다. 별칭을 다르게 두어야 한다면 새로 선언하자. 검색조건 Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.age.between(10, 30))) .fetchOne(); where절에는 an..
2023.03.17 -
Nginx와 Let's Encrypt로 HTTPS 웹 서비스 배포하기 (feat. Certbot)
목표 우리의 목표 우리의 목표는 위 그림과 같다. 클라이언트와 WAS 사이에 리버스 프록시 서버를 둔다. 클라이언트는 웹서버처럼 리버스 프록시 서버에 요청하고, WAS는 리버스 프록시로부터 사용자의 요청을 대신 받는다. 클라이언트는 리버스 프록시 서버 뒷단의 WAS의 존재를 알지 못한다. 이로인해 보안이 한층 강화되었다. 이때, 리버스 프록시 서버에 SSL 인증서를 발급해두어 HTTPS를 적용한다. WAS 서버가 여러대로 늘어나도 SSL 인증서 발급을 추가로 하지 않아도 되니 확장성이 좋을 것 이다. 또한 WAS 서버가 SSL 요청을 처리하는데 드는 비용도 들지 않는다. 이때, 리버스 프록시 서버는 Nginx를 사용한다. WAS는 Spring Boot를 예시로 이미지를 만들기는 했는데 사실 node.js..
2023.03.16 -
03.08 multipart 이미지 파일 리사이징 해서 파일 만들기
public File resizeImage(MultipartFile file, int targetWidth, int targetHeight) throws IOException { //1. MltipartFile 에서 BufferedImage로 변환 BufferedImage originalImage = ImageIO.read(file.getInputStream()); //2. Graphics2D 로 리사이징 BufferedImage resizedImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB); Graphics2D graphics2D = resizedImage.createGraphics(); graphics2D...
2023.03.08