본문 바로가기

전체 글

[Jenkins] 젠킨스로 자동 빌드하기 1. Jenkins에 Git 설정 추가 1) 젠킨스 홈 - 왼쪽 메뉴 Jenkins 관리 - System 하단으로 스크롤 하면 GitHub 관련 설정 메뉴가 있음 2) GitHub 서버 추가 - GitHub 서버 를 클릭하고 GitHub servers 정보 입력하기 GitHub servers 정보 입력 Name: 깃허브 서버 이름을 사용하고싶은대로 입력해줌 API URL: GitHub 서버 API 엔드포인트. 공개 github.com을 사용하려면 기본값에서 변경하지말고 GitHubEnterprise를 사용하는 경우 API 엔드포인트를 지정해야함.(GitHubEnterprise를 사용하지 않기 때문에 변경안함! Credentails: 아래에서 생성! 처음엔 없어서 none으로 보이고 아래+Add 버튼을 눌.. 더보기
[Jenkins] 도커(docker) 젠킨스 설치 1. docker hub에서 pull 받을 jenkins 버전 확인 https://hub.docker.com/r/jenkins/jenkins Docker hub.docker.com 2. 젠킨스 설치 docker pull jenkins/jenkins:lts-jdk17 pull 받은 이미지 확인 docker images 3. 컨테이너 실행하기 docker run -d -p 8080:8080 -p 50000:50000 -v /var/docker/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins:lts-jdk17 -d: 백그라운드 실행 -p: 젠킨스의 웹 인터페이스에 접근하기 위한 포트 설정, 젠킨스는 기본적으로 8080포트를 사용함. 호스트의 808.. 더보기
[Springboot] 스프링부트 로그로 클라이언트IP 확인하기(Nginx를 프록시로 사용하는 경우) MDC에 클라이언트 IP를 넣는 코드로 수정을 하고 테스트중 VM에 올려서 서버 실행하는데 모든 요청이 172.17.0.3으로 IP가 찍혔음 생각해보니 백엔드 서버로 들어오기전에 Nginx를 거쳐서 들어오니까 Nginx의 IP가 남는 것을 깨닫게 되었음 그리고 검색하다가 Header에 들어오는 값들 중 X-Forwarded-For에는 실제 클라이언트 IP가 들어온 다는 것을 확인 하지만 이것도 프록시 서버에 설정을 해줘야함 일단 XFF(X-Forwarded-For) 헤더란? 프록시 서버나 로드 밸런서를 통해 웹 서버에 도달하는 HTTP 요청에서 실 클라이언트 IP 주소를 식별하는데 사용함 설정 방법 Nginx 설정파일 nginx.conf를 수정 http { # 기존 설정 내용... # 프록시 설정 se.. 더보기
[GitHub] 템플릿(Template) 리포지토리 만들기 1. 템플릿 리포지토리란? GitHub에서 제공하는 Template Repository 기존 리포지토리를 템플릿으로 만들어서 자신과 다른 사용자가 동일한 디렉터리 구조, 분기 및 파일을 사용하여 새 리포지토리를 생성하게해주는 서비스 프로젝트를 계속 진행하는데 패키지 구조, 로그 설정, 예외 처리, 공통 응답 클래스 등 필수로 들어가는 코드를 계속 반복해서 복붙하거나 또는 조금 변경해서 사용했는데, 시간 낭비라는 생각이 들어서 방법을 찾아보다 알게된 기능 2. 사용 방법 1) 리포지토리 생성 2) 생성한 리포지토리에 Settings 탭 -> 왼쪽 메뉴에 General로 이동 Template repository에 체크를 해준다. Template repository에 체크가 된 리포지토리라면 오른쪽에 Use .. 더보기
[Spring boot] MDC(Mapped Diagnostic Context) 클라이언트 요청IP 넣기 기존 구현한 코드 import jakarta.servlet.*; import org.slf4j.MDC; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.UUID; /* @Component: 스프링 컨텍스트에서 클래스를 빈으로 등록, Filter를 구현한 이 클래스를 스프링 빈으로 관리 @Order: 빈의 우선순위 설정 Ordered.HIGHEST_PRECEDENCE: 가장 높은 우선 순위 */ @Component @Order(.. 더보기
[Springboot] MultiartFile 유효성 검사 방법 1. Validator 클래스 사용 직접 Validator 클래스를 작성하여 유효성 검사 스프링에서 제공하는 표준 방법으로 유효성 검사를 수행할 수 있음 Validator 인터페이스를 구현하여 재사용 가능한 유효성 검사 로직을 작성할 수 있음 단순한 유효성 검사에 적합함 1) Validator 클래스 객체의 유효성을 검사하기 위한 인터페이스 유효하지 않은 경우 예외를 발생시키거나 특정 동작을 수행하는 등의 작업을 수행함 Spring Framework에서는 Validator 인터페이스를 사용하여 데이터 바인딩 전에 유효성을 검사할 때 사용 주로 폼 데이터나 API 요청 데이터의 유효성을 검사하는데 활용됨 2) 적용하기 Validator 클래스 작성 import org.springframework.stere.. 더보기
[Java] try-with-resources 1. try-with-resources 구문 Java7 부터 도입된 기능으로, 자원을 명시적으로 닫아주는 코드를 간소화 하기 위한 구문 주로 파일, 네트워크 연결, 데이터베이스 연결 등의 자원을 사용한 후에 반드시 닫아주어야 하는 경우 활용됨 AutoCloseable 인터페이스를 구현한 자원을 효과적으로 사용할 수 있음 AutoCloseable은 close() 메서드를 제공하는 인터페이스로 이를 구현한 클래스는 try-with-resources문에서 사용될 수 있음 2. 기본 구조 try (자원의 생성 및 할당) { // AutoCloseable을 구현한 객체를 생성하고 할당, 블록 실행 전에 자원 초기화 // 자원을 사용하는 코드 작성 // 블록이 끝나면 자동으로 close() 메소드가 호출되어 자원이.. 더보기
[ES] 엘라스틱 서치 텍스트 분석(Text Analysis) 1. 역 인덱스(inverted index) Elasticsearch는 '역인덱스' 라는 구조를 만들어 저장함 역 인덱스는 책의 맨 뒤에 있는 찾아보기 페이지에 비유할 수 있음 역 인덱스가 있다면 키워드를 포함하고 있는 도큐먼트의 id를 얻어올 수 있음 데이터가 늘어나도 찾아가야 할 행이 늘어나는 것이 아닌 역 인덱스가 가리키는 id의 배열값이 추가되는 것 뿐이기 때문에 큰 속도의 저하 없이 빠른 속도로 검색 가능 역 인덱스를 데이터가 저장되는 과정에서 만들기 때문에 엘라스틱서치는 데이터를 입력할 때 저장이 아닌 색인을 한다고 표현함 텀(term): 엘라스틱 서치에서 추출된 각 키워드 전문 검색(Full Text Search) 2. 텍스트 분석(Text Analysis) 문자열 필드가 저장될 때 데이터에.. 더보기