전체 글 119

[spring boot] 이미지 파일 업로드 서버 재시작 해야 보이는 오류 해결-프로젝트 외부 경로 파일 가져오기

최근 프로젝트 진행 중 파일 업로드를 구현해야 하는 작업이 있었다.​그러나 파일이 /static 폴더 아래에 저장이 되긴 하는데 html 파일에서 이미지를 불러오기 위해서는 서버를 재시작 해야한다는 엄청난 문제에 직면하고 말았음​ ​​​로컬에서 하는 거라면 상관 없겠지만 배포하고 난 후에 서버를 계속 재시작 한다는 건 말이 안되는 상황따라서 이를 해결할 방법을 찾아야 했다. ​​​원인 이미지는 static폴더안에 넣게 되는데 static이 말그대로 정적파일들을 넣는곳으로 인식이돼서 서버를 껐다가 켜야지 static 폴더안에 사진의 주소가 제대로 반영이 돼서 사진들이 보인다. 짧게 말하면 사진을 올리고 서버를 꼭 껐다가 켜야만 사진이 보임!​= devtools 망치 누르고 나서 사진이 보임이미지 폴더가 프..

[spring boot] swagger API 문서 자동화 하는 방법

이번 외주 프로젝트를 진행하면서 가장 먼저 진행했던 프로세스는 무엇이었냐면 aws 키를 받아 api 서버 오픈 준비를 하는 것이었다. ​​​서버 오픈은 했지만 swagger 문서 ..? 이건 처음 들어봐서swagger 가 뭔지 유튜브/ 블로그 등을 찾아보며 어떻게 하는건지 방법을 찾아봤다​​Swagger 란?Swagger 는 REST API를 설계, 빌드, 문서화 및 사용하는 데 도움이되는 OpenAPI 사양을 중심으로 구축 된 오픈 소스 도구 세트입니다. - About Swagger Specification​Swagger 를 왜 사용할까?​출처 : 어라운드 허브 스튜디오 유튜브* API를 사용해 본 사람은 알겠지만 api 에는 정말 많은 정보가 담겨서 온다 ! 그중에는 엄청 길고 비슷한 영어이름도 많아..

Spring🌱 2024.10.18

[spring boot] let's encrypt 를 활용하여 SSL 무료 인증서 발급받기 (putty, WinSCP)

웹 사이트를 만들고 배포하고 나면 이제 누구든 내 사이트에 들어와 이용 할 수 있게 됩니다 그러나 대부분의 사이트들은 http가 아닌 https 프로토콜을 사용합니다  그 이유는 무엇일까요? HTTP와 HTTPS의 차이점은?출처 입력HTTPS는 TLS 암호화를 갖춘 HTTP입니다. HTTPS는 TLS(SSL)를 사용하여 일반 HTTP 요청과 응답을 암호화 하므로 더 안전하고 보안이 강화됩니다.  즉 HTTPS를 사용하는 웹 사이트는 사용자가 더 신뢰할 수 있습니다.  HTTPS 를 왜 굳이 사용해야할까?출처 입력 단순히 보안적인 이유 때문에 사용하는 것도 있지만 프로젝트 진행 시 프론트엔드와 백엔드 간의 통신이 이루어 질 때 한 쪽만 https 이고 다른 한 쪽은 http 인 경우 mixed conten..

Spring🌱 2024.10.18

[ubuntu] docker를 이용한 iSpy 호스팅 방법

ubuntu docker 설치sudo apt updatesudo apt install [docker.io]()docker image downloadsudo docker search ispy // docker image 검색sudo docker pull doitandbedone/ispyagentdvr iSpy Agent DVR 컨테이너 실행sudo docker run -d --name ispy-agentdvr -p 8090:8090 -v /opt/ispy-agentdvr/config:/agent/Media -v /opt/ispy-agentdvr/recordings:/agent/RecordedFiles dockerspy/ispyagentdvr-p : 호스트의 8090 포트를 컨테이너의 8090 포트에 맵핑-..

Ubuntu 2024.10.18

[Ubuntu] ubuntu 부팅 usb 만들기, hp pc에 ubuntu 설치

01. 우분투 이미지 설치https://releases.ubuntu.com/위 링크에서 버전 선택 후 usb에 서버용 이미지 다운로드   어떤 버전을 설치할까 고민하다 20.04 LTS 는 20년에 출시되서 5년 후인 내년 4월에 지원을 종료한다길래 22 버전을 다운받았다. 02. Rufus 설치https://rufus.ie/ko/위 링크에서 Rufus 설치 03. 부팅 USB 만들기  파티션 구성에 MBR과 GPT가 있는데, GPT가 MBR를 대체하는 최신의 파티션 이라고 한다.그렇다고 무조건 GPT를 선택하면 안 되고, 윈도우의 실행창을 띄워(단축키 : window키 + r) msinfo32 를 입력 후, BIOS 모드가 UEFI로 나올 경우에만 GPT를 선택하고, 레거시로 나온다면 MBR을 선택을 ..

Ubuntu 2024.10.17

[백준/BOJ] Silver4 - 11047번 동전0 (JAVA)

문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 풀이 처음으로 풀어본 탐욕 알고리즘 가장 기본적인 그리디 문제라 할 수 있는 거스름돈 문제를 풀어보았다. 그리디를 적용해서 풀 때의 주의 할 점은 현재 상태에서 최선..

알고리즘 2023.04.23

[백준/BOJ] Bronze2 - 11724번 연결 요소의 개수 (JAVA)

문제 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다. 출력 첫째 줄에 연결 요소의 개수를 출력한다. 풀이 깊이 우선 탐색(DFS)을 사용하는 기본 문제이다. 깊이 우선 탐색에 대한 개념을 배우고 바로 풀어본 문제라 푸는데 시간이 오래걸렸다. 강의에선 스택을 사용하여 구현하였는데 재귀로 푸는게 더 일반적이라고 해서 재귀로 풀어보았다 import java.util.ArrayLis..

알고리즘 2023.04.20

[백준/BOJ] Bronze2 - 2750번 수 정렬하기 (JAVA)

문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 풀이 N의 최댓값이 1000 밖에 되지 않아서 시간복잡도를 고려하지 않고 정렬 중 가장 기본이되는 버블소트로 정렬을 해주었다 i와 j에 대한 범위를 기억하는 것과 swap을 해주는 코드가 포인트 인 것 같다. 버블소트에서 총 라운드와 각 라운드 별 비교 횟수는 다음과 같다. 총 라운드: N-1 각 라운드 별 비교 횟수: N-(라운드 횟수) j A[j+1..

알고리즘 2023.04.15

[백준/BOJ] Silver4 - 2164번 카드2 (JAVA)

문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드는 4가 된다. N이 주어졌을 때, 제일 마지막에 남게 되는 카드를 구하는 프로..

알고리즘 2023.04.14

[백준/BOJ] Silver4 - 1874번 스택 수열 (JAVA)

문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..

알고리즘 2023.04.14