분류 전체보기(24)
-
CI/CD 툴 비교분석 - Jenkins vs Github Actions
Jenkins 설정에 자신이 있다면 선택하기 좋음(깃허브 액션보다 복잡) -> 젠킨스 빌드를 위해 서버 하나를 띄어야 하므로 구성이 어려움 서버 설치 필요 작업 또는 작업이 동기화되어 배포하는 데 더 많은 시간이 소요 계정 및 트리거를 기반으로 하며, github 이벤트를 준수하지 않는 빌드를 중심으로 함 환경 호환성을 위해 도커 이미지에서 실행해야 함 캐싱 메커니즘 지원을 위해 플러그인을 사용할 수 있음 장애가 나서 서비스가 내려간다면 그동안 git webhook 이벤트를 받을 수 없음 깃허브에 접근하기 위해 자격증명을 위한 설정이 필요함 JVM으로 인해 사용중이지 않을 때에도 메모리를 잡아먹으며 클라우드 환경에서는 불필요한 비용 발생 플러그인을 최신 상태로 유지해야 하며, 업데이트 하지 않을 경우 장..
2023.06.22 -
[Spring Boot] 회원가입, 비밀번호 재설정 시 이메일로 인증 구현(SMTP)
예전부터 프로젝트에 회원가입/비밀번호 재설정 시 이메일로 인증 받는 기능을 구현해보고 싶었는데, 드디어 구현해보게 됐다. 그 과정을 정리해보려 한다. 환경설정1 - Gradle에 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-mail:2.7.1' Spring Boot Starter Mail 라이브러리를 임포트해준다. 환경설정2 - 네이버 메일 설정 '네이버 메일 > 환경설정> POP3/IMAP 설정' 으로 들어간다. SMTP 서버명, SMTP 포트, 아이디 확인 후 아래 사진과 같이 환경 설정을 마친다. 환경설정3 - application.yml 설정 application.yml 파일에 따로 추가하지 않고 config 파일을 만들..
2023.05.23 -
[Git] error : 다음 파일의 로컬 변경 사항을 체크아웃 때문에 덮어 쓰게 됩니다
문제 상황 프로젝트의 기능 개발을 위해 이슈를 생성하고 이슈 관련 브랜치를 만들어 작업했다. 작업을 완료하고 pr한 뒤 작업을 끝낸 브랜치를 내버려두었다. 새로운 작업을 위해 해당 브랜치에서 checkout하고 새로운 브랜치를 만드려고 하는데 ! 오류가 발생했다. 발생 이유 이 에러는 로컬에 변경 사항이 있는데 그를 커밋하거나 저장하지 않고 다른 브랜치로 checkout하려는 경우 발생한다. 만약 작업 내용을 커밋하지 않고 다른 브랜치로 변경하면 변경사항이 같이 따라가거나 conflict가 일어난다. 해결 git stash >> stash 명령어를 사용하면 working directory에서 작업중인 모든 파일을 임시로 스택에 저장할 수 있다. 이제 git checkout main && git pull ..
2023.05.16 -
[Algorithm] 유니온 파인드(Union-Find) 알고리즘
유니온 파인드(Union-Find) 그래프/트리의 대표적인 알고리즘이다 상호 배타적 집합(Disjoint-set)이라고도 부른다 하나의 원소가 둘 이상의 집합에 속하지 않는 서로소 집합으로 표현하기 때문이다 여러 노드가 있을 때, 두 노드가 같은 그래프(집합)에 속해 있는지 판별하는 알고리즘이다 union 연산과 find 연산으로 이루어져 있다 union 연산 : 두 원소가 속한 각 집합을 합치는 연산 find 연산 : 주어진 원소가 포함된 집합의 부모 노드를 구하는 연산 시간복잡도 : O(log N) 평균적으로 트리의 높이만큼을 탐색한다 Union 연산 다음과 같은 두 집합이 있다고 하자. 집합은 모두 대표노드가 존재하며, 대표 노드는 집합에서 최종 부모 노드, 즉 가장 값이 작은 노드이다. 따라서 노..
2023.02.18 -
[Algorithm] 이분탐색(Binary Search) 알고리즘이란- 개념, 특징, 구현방법
이분탐색(이진탐색, Binary Search) 정의 정렬된 자료를 절반씩 쪼개어 탐색하는 방법이다 순차탐색보다 빠른 탐색을 위해 나온 방법이다 탐색을 진행할 때마다 탐색 범위가 반으로 줄어드므로, 분할 정복 알고리즘의 일종이다 데이터가 고정되어 있는 경우에 적합하다 삭제 또는 삽입이 빈번한 경우에는 적합하지 않다 장점 시간 복잡도가 O(log N) 으로 빠른 탐색 속도를 갖는다 모든 값을 순차적으로 탐색하는 순차적 탐색방법(O(N))에 비해 시간 복잡도가 낮다 적용 가능한 경우 1. 원소가 정렬되어 있는 경우 원소가 정렬된 경우에만 mid 인덱스의 수와의 비교를 통해 탐색 범위를 줄일 수 있다. 따라서 오름차순 혹은 내림차순으로 정렬이 되어 있어야만 이분탐색이 가능하다. 2. 원소의 Random Acce..
2023.02.13 -
[백준/JAVA] 9663번 : N-Queen(BackTracking, 백트래킹)
문제 https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 백트래킹 문제이다. 체스판에서 퀸이 공격할 수 있는 위치는 상하좌우와 대각선상의 모든 위치이다. 4x4 체스판의 (0,0) 위치에 퀸 하나를 두었을 때, 퀸이 공격 가능한 위치를 그림으로 나타내면 다음과 같다. 즉, nxn의 판에서 퀸 n개를 모두 서로 공격할 수 없는 위치에 놓으려면 각 퀸들이 상하좌우 대각선 중 어느 곳에도 위치해서는 안된다. 이 조건을 분해해보면, 1. 각 행에는 무조건 퀸이 존재..
2023.02.12