프로젝트를 설계하면서 기존에 사용하던 queryDsl 설정을 그대로 가져와서 새로 만든 spring boot 3.1.2 에 넣어 놓았다. 하지만 저를 매일 괴롭히는 빨간 글씨가 또 등장했습니다. Unable to load class 'javax.persistence.entity' this is an unexpected error. please file a bug containing the idea.log file. JPA 도 다시 설정 바꿔보고 여러 블로그를 돌아다니며 queryDsl의 설정을 변경해보았지만 도저히 complieQueryDsl이 실행되지 않았습니다. 끝끝내 방법을 찾았습니다. 이를 공유 드리겠습니다. 다른 코드말고 제가 queryDsl에서 사용한 설정값만 보여드리겠습니다. plugins ..
전체 글
IT, 인프라, Java, C# 개념정리 블로그입니다.해당 글은 제가 인턴 업무 중 이메일 서비스를 구현할 때 만났던 문제와 구현했던 방식에 대해서 기술하려고합니다. 많은 문제들을 해결해 나가며 결국 이메일이 전송되었을 때에 그 쾌감은 잊지 못합니다..ㅠ 많은 블로그에서 이메일 서비스 구현에 대한 블로깅을 해놓았지만, 제가 원하는 기능은 찾아보기가 어려워 애를 많이 먹었습니다. 이 글에서는 정말 Class 하나하나 곱씹어 가며 정리한 글이기 때문에 만약에 코드만 필요하시다면 맨 밑 으로 가시면 제가 구현한 Code 만 올려드리겠습니다. (보시면 더 좋고...😅) Gmail 설정 우선 Gmail 에 설정을 해놓아야 이메일 전송이 가능합니다. 여기서는 이메일 전송에 대한 부분을 집중적으로 작성하려고 하기 때문에 설정 관련 부분은 제가 참고한 블로그를 올려드리겠..
최근에 개인 프로젝트를 진행하면서 조회수 증가 로직을 해당 게시글을 작성한 유저만 조회수 가 증가하지 않게 설정하였습니다. 하지만 위의 사진에 보이듯이 NullPointException 문제가 발생하였고 당장 기능을 구현하기가 급급해서 굴러가게만 만들어 놨습니다. 그래서 저는 글의 작성자, 다른 유저, 익명 사용자 모두 조회 수를 증가하게 하지만 중복방지를 구현해보고 싶었습니다. 제가 알고 있던 방법은 총 두가지 였습니다 세션 vs 쿠키 1. 세션 우선 세션 방식을 생각 했습니다. 세션의 특징은 사용자 정보를 서버에서 관리하는 것입니다. 장점 1. 사용자 정보를 서버에 둔다는 뜻은 쿠키보다 보안에 좋습니다. 단점 2. 서버에 데이터를 저장한다는 것은 서버의 리소스를 사용하는 것 이기 때문에 세션 양이 많..
이 글을 작성하게 된 계기는 CI/CD와 무중단 배포의 차이점에 대해 궁금하게 되어 시작하게 되었습니다. 우선 CI/CD와 무중단 배포의 개념을 설명 한 후 어떤 점이 다른지 설명하겠습니다. CI/CD 란? 신입 개발자들이 처음에 개발을 진행할 때에는 서버에 코드를 올리는 것이 아닌 보통 로컬에서 진행하게 됩니다. 하지만 개발자는 결국 결과물을 보여줘야하는 직업이기에 제작한 소프트웨어를 서버에 올려 배포한 후 사용자에게 제공해야 합니다. 어떻게 하면 사용자에게 소프트웨어를 제공할 수 있을까? 아래의 순서를 따라 제공하게 됩니다. 1. 컴파일 우선, 우리가 만든 코드를 컴파일 합니다. 컴파일이란? - 우리가 만든 프로그래밍 언어를 기계가 이해할 수 있는 기계어로 변환하는 작업 우리가 사용한 Java, C ..
HTTP(Hypertext Transfer Protocal)는 무엇인가? HTTP는 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기본적인 프로토콜 입니다. 주로 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용됩니다. HTTPS(Hypertext Transfer Protocal Secure)는 무엇인가? HTTP에 SSL을 사용한 것입니다. HTTP의 문제점은 전송되는 데이터가 암호화 되지 않는다는 단점을 가지고 있는데, 이것을 보완한 프로토콜 입니다. SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 민감한 정보를 주고 받을 때, 해당 정보가 도난 되는것을 막아줍니다. 그렇다면 왜 HTTPS를 사용해야 하나요? 1. 보안성 문제 ..
대학교 기말 프로젝트에서 프론트와 협업을 하던 도중 CORS에러를 만나게 되었습니다. 그 때는 아 이런 문제가 있구나 하고 해결책을 찾은 후에 넘어 갔지만, 다시 생각해보니 정리를 한번 해야 할 것 같아서 정리를 하려고합니다. CORS가 뭐에요? CORS는 Cross-Origin Resource Sharing의 약자로 직역하면 "교차 출처 리소스 공유" 입니다. 즉, 동일한 출처가 아닌 다른 출처에서 데이터를 주고 받는 것을 허용하는 정책입니다. 제가 멈추었던 부분이 여기까지 였습니다. 왜냐하면 아 이것때문에 문제가 발생했고 이렇게하면 고칠 수 있겠구나 라고요. 하지만 저희는 여기서 더욱 사고 해야합니다. "왜 이러한 정책이 필요할까?" 이 문제를 이해하려면 "동일 출처 정책" 에 대해서 알아야 합니다...
Generic의 사전적인 의미는 "포괄적인, 총칭의, 회사 이름이 붙지 않은, 일반 명칭으로 판매되는" 즉, 딱 하나를 정하지 않고 범용적이고 포괄적이라는 의미입니다. Java 에서 Generic은? Data type을 특정한 type 하나로 정하지 않고 사용할 때마다 변경 할 수 있게 범용적이고 포괄적으로 지정한다는 의미입니다. "그렇다면 왜 사용해야 할까?" 제일 큰 이유는 Object 클래스의 한계 때문입니다. List list = new ArrayList(); list.add("hello"); String str = list.get(0); System.out.println(list); 위의 코드는 정상으로 작동 할까요? 아닙니다, 3번째 줄에서 오류가 발생합니다. list의 데이터 타입은 Obje..
프레임워크의 정의 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미합니다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 class, method들을 구현하면 됩니다. 프레임워크의 장단점 장점 가이드를 제공함으로써 프로그램을 체계적으로 관리할수 있다 기본적인 설계와 라이브러리를 제공하여 개발 속도를 향상시킨다 코드의 재 사용성이 높고 확장성이 좋다 단점 각 프레임워크에 따른 공부가 필요하다 자유롭고 유연한 코드를 개발이 불가능하다( 프레임워크가 짜놓은 틀 안에서 개발해야 하기 때문에) 프로젝트의 용량이 증가한다 라이브러리의 정의 소프트웨어를 개발할 때 컴퓨터 프로그램..