목록전체 글 (153)
Dazzling 개발 노트
Jenkins - GitHub - Docker 연동을 위해 필요한 AccessKey를 생성하고, Jenkins Credential에 등록한다. 총 4개의 AccessKey, 혹은 token을 발급하여 Jenkins Credential에 등록했다. 1. GitHub Access Token 2. Docker Access Token 3. Slack Access Token 4. ec2-ssh 시작하기 전에 먼저 강조하자면, 모든 토큰은 생성 후 다시 볼 수 없기 때문에 발급된 화면에서 바로 메모장이나 노션에 잘 저장하도록 한다. 1. GitHub Access Token 발급하기 GitHub 접속 후 프로필 아이콘 클릭 -> Settings > Developer settings > Personal access t..
Jenkins - GitHub - Docker 연동을 위해 필요한 플러그인을 설치한다. 사용된 플러그인은 다음과 같다. - Docker : docer 사용을 위해 설치 - Docker Pipeline : docker 사용을 위해 설치 - GitHub plugin : GitHub 사용을 위해 설치 - Generic Webhook Trigger Plugin (선택) : GitHub에서 특정 branch에서 push가 일어나는 경우에만 배포되도록 설정하기 위해 설치 - SSH Agent Plugin (선택) : CI/CD 중에 ssh 접속을 위해 설치 - Slack Notification Plugin (선택) : Slack으로 알림을 받기 위해 설치 선택을 제외한 나머지 플러그인은 최소한으로 반드시 설치해야 ..
CI/CD 구현하는 과정을 직접 해보며 정리했다. 각 과정마다 게시글을 나누어 작성했으니 만약 이해가 가지 않을땐 앞, 뒤 게시글을 참고하기 바란다. CI/CD를 구현하는 도구는 다양하지만, 필자는 Jenkins와 GitHub, Docker를 사용했다. Jenkins - GitHub - Docker(WAS-SpringBoot) 여기서 Jenkins는 서버에 바로 배포하고 WAS는 docker를 통해 컨테이너로 배포한다. 사용한 서비스와 기술은 다음과 같다. AWS Ec2 (2개) Jenkins GitHub Docker Slack SpringBoot Gradle Java 인스턴스 생성하기 AWS에 접속하여 로그인한다. EC2 > 인스턴스 > 인스턴스 시작 인스턴스의 이름 입력, OS 선택, 인스턴스 유형 ..
노드의 정의 배열의 시간복잡도는 중간 삽입과 삭제의 시간 복잡도가 O(N)이다. 삽입과 삭제를 매우 자주 해야 하는 상황에서 배열은 비효율적이다. 이 문제를 해결하기 위해 삽입과 삭제가 잦은 상황에서는 연결 리스트 자료구조를 사용한다. 탐색은 O(N)으로 느리지만 삽입과 삭제 연산은 O(1)로 굉장히 빠르다. 연결 리스트에서는 노드라는 개념에 대한 이해가 필요하다. 노드란 '정보를 담는 하나의 창구'라고 이해하면 쉽다. 일반적으로 연결 리스트에서 하나의 노드는 데이터와 다른 노드로 이동하는 경로를 갖고 있다. 연결 리스트는 여러개의 노드가 모여서 형성되는 구조라고 생각하면 된다. 요약하자면 연결 리스트에서 노드란 정보를 담는 하나의 창구로, 연결 리스트는 노드 간의 연속적인 연결로 구성되어 있다. 정의하..
[코드트리] 정수 명령 처리 5 (Java) 문제 https://www.codetree.ai/missions/6/problems/process-numeric-commands-5?&utm_source=clipboard&utm_medium=text 풀이/후기 입력을 StringTokenizer로 받아서 token이 1개인지 2개인지 구별했다. 그 안에서 명령이 어떤 것인지, 수행할 값이 무엇인지 확인해 배열에 넣거나 값을 출력한다. 직접 코드를 보는 것이 이해가 더 빠를 것 같다. 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Buffere..
[코드트리] 배열의 이해 Java에서 배열을 선언하기 위해서는 다음과 같이 선언했었습니다. int[] a = new int[100]; 이렇게 선언하여 만들어지는 배열을 정적 배열이라고 부릅니다. 정적 배열의 경우에는 배열의 선언과 동시에 그 크기를 정해줘야 하며, 한번 선언된 이후부터는 크기를 바꿀 수 없습니다. 하지만 자주 길이가 바뀌는 경우라면, 명확히 메모리를 낭비하고 있는 것이 아닐까요? 이러한 문제를 해결하기 위해 나온 것이 바로 동적 배열입니다. 동적 배열은 자유롭게 길이가 줄어들고 늘어날 수 있습니다. 즉, 정확히 사용하고 싶은 만큼만 공간을 차지하여 사용하는 방식입니다. 동적 배열에서 삽입, 삭제, 탐색하는 과정은 모두 정적 배열과 동일하기 때문에 시간복잡도는 완전히 일치하지만, 메모리를 ..
1. Spring Boot 프로젝트 생성 https://start.spring.io/ 의존성까지 추가한 후에 Generate 클릭 시 압축파일이 다운된다. 압축을 해제한다. 2. Intelij에서 다운받은 파일의 경로를 Open 한다. 프로젝트가 정상적으로 열린 경우, 위와 같은 directory를 확인할 수 있다. 3. 프로젝트 실행 jdk를 선택한 후 intelij에서 설정 준비가 완료되면 src > main > java 내에 Application.java 파일을 실행할 수 있게 된다. 초록색 실행 버튼을 눌러 프로젝트를 실행한다. 4. 프로젝트 실행 확인 프로젝트가 정상적으로 실행되면 아래와 같은 콘솔을 확인할 수 있다. 8080포트를 통해 확인한다. 번외). 프로젝트 실행 시 오류 발생 아래와 같..
Port 0000 was already in use는 자주 발생하는 오류 중 하나이다. 사용중인 포트를 종료하고 다시 시작해주면 된다. Windows # 사용중인 포트의 PID 확인 netstat -ano | findstr 8080 # 사용중인 포트를 PID로 종료시키기 taskkill /F /pid 4460 # 액세스가 거부되는 경우 cmd를 관리자 권한으로 열어서 실행 Mac lsof -i tcp:8080 sudo kill -9 PID명