전체 글
-
[Spring boot] 리눅스 환경에서 마주한 TemplateInputException: Error resolving templateProgramming/Spring boot 2021. 6. 7. 19:37
프로젝트를 진행 하던 중 프론트의 원할한 작업과 실제 배포 환경을 연습하기 위한 개발 서버를 구성하였다. window 기반 local 환경에서 프로젝트를 진행했을 때 큰 문제 없이 thymeleaf의 화면이 적절히 랜더링 되는 것을 확인하였다. 하지만 ec2를 활용한 amazon linux 2 기반의 개발 서버에서는 아래와 같은 에러를 맞닥뜨리게 되었다. Error resolving template [/fragments/admin-header.html] 현재 프로젝트 구조를 보면 html의 head 부분과 body의 header, footer 부분을 fragments로 나누어 사용하고 있다. 새롭게 페이지를 구성할 때 위와 같은 fragments들을 적절히 배치하여 작성하고 있었다. example.htm..
-
[INFRA] EC2에서 nginx 설치Programming/infra 2021. 5. 26. 02:22
개요 프로젝트를 진행하던 중 배포가 중단되지 않는 무중단 배포를 구현하기 위해 nginx 설치 방법을 정리한다. nginx의 경우 가장 저렵하고 쉽게 적용가능하기 때문에 큰 이점을 가지고 있다. 이글은 아마존 리눅스 2를 기반으로 작성되었다. 1. nginx 설치 아마존 리눅스 2의 경우 yum을 활용하여 nginx의 설치가 지원되지 않는다. 그렇기 때문에 amazon-linux-extras를 활용하여 nginx를 설치해야 한다. $ sudo amazon-linux-extras install nginx1 설치가 완료되면 -v 옵션을 활용하여 확인 과정을 거친다. $ nginx -v nginx version: nginx/1.18.0 2. nginx 서비스 시작하기 $ sudo service nginx st..
-
[INFRA] amazon EC2 초기 설정Programming/infra 2021. 5. 24. 22:39
개요 Java 기반의 웹 애플리케이션을 작동시키기 위한 서버설정을 정리한다. 이글은 아마존 리눅스 2를 기반으로 작성되었다. 1. Java 설치하기 아마존 리눅스 2는 기본적으로 jdk가 설치되어 있지 않다. java 8 설치 $ sudo yum install -y java-1.8.0-openjdk-devel.x86_64 java 11 설치 $ sudo amazon-linux-extras install java-openjdk11 java version 변경 $ sudo /usr/sbin/alternatives --config java java version 확인 $ java -version openjdk version "11.0.11" 2021-04-20 LTS OpenJDK Runtime Environ..
-
[JPA] n + 1 문제와 inner join, outer joinProgramming/JPA 2021. 5. 10. 21:56
개요 프로젝트를 진행하던 도중 말로만 듣던 n + 1 문제와 마주하게 되었다. 이에 대한 해결방안으로 공부한 것은 fetch join과 Spring Data JPA 사용 시 @EntityGraph 애노테이션을 활용하는 방법이다. 하지만 두 가지 방법에는 아주 큰 차이가 있었다. 그 둘의 차이점을 알아보기 위해 예시를 작성하였다. 프로젝트 구조 Person.java package me.hyeonic.join.domain; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.ToString; import javax.persistence.Entity;..
-
-
[SpringMVC] 인터셉터(interceptor) 적용 - sessionProgramming/Spring MVC 2021. 4. 22. 19:36
개요 프로젝트를 진행하던 중 개발 중인 가입된 유저만 접근이 가능하도록 제한하기 위한 접근 권한이 필요하였다. Spring에서는 Spring Security와 같이 애플리케이션의 보안을 담당하는 하위 프레임워크가 존재한다. 하지만 워낙 양과 자료가 방대하여 배울 내용이 많았기 때문에 적용하는데 어려움이 많았다. 그렇기 때문에 다른 차선책을 찾아야만 했다. 관련 키워드를 검색하던 중 Spring interceptor에 대하여 알게되었다. interceptor는 말 그대로 무언가를 가로채는 역할을 한다. Interceptor 흐름도 interceptor는 위와 같은 흐름으로 Controller(Handler) 로 가기전에 요청을 가로채는 preHandle, controller 처리 후 postHandle, ..
-
[Baekjoon Online Judge] 17219번: 비밀번호 찾기문제 풀이/Baekjoon Online Judge 2021. 4. 21. 20:20
17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 요구사항 - 2019 HEPC - MAVEN League의 "비밀번호 만들기"와 같은 방식으로 비밀번호를 만든 경민이는 한 가지 문제점을 발견하였다. 비밀번호가 랜덤으로 만들어져서 기억을 못 한다는 것이었다! 그래서 경민이는 메모장에 사이트의 주소와 비밀번호를 저장해두기로 했다. 하지만 컴맹인 경민이는 메모장에서 찾기 기능을 활용하지 못하고 직접 눈으로 사이트의 주소와 비밀번호를 찾았다. 메모장에 저장된 사이트의 수가 늘어나면서 경민..
-
[Baekjoon Online Judge] 10974번: 모든 순열문제 풀이/Baekjoon Online Judge 2021. 4. 21. 19:34
10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 요구사항 - N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. 입력 - 첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다. 출력 - 첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다. DFS를 활용하여 풀이하였다. 순열을 사전순으로 출력해야 하기 때문에 입력이 3인 경우 첫 자리는 1, 2, 3이 올 수 있다. DFS를 활용하여 depth를 높여가며 output을 하나씩 방문해준다. 만약 depth의 깊이가 3과 같아지면 3개의 항목을 채웠다고 가정하고 즉시 출력해준다. 그 다음 방문기록을 f..