목록전체 글 (771)
컴공생의 다이어리
[GitHub Action] workflow 재사용하기GitHub Action 워크플로우를 작성하다 보면 동일한 프로세스의 워크플로우가 반복되는 경우가 있다. 일부 로직이 변경될 때, 동일한 워크플로우를 모두 수정하거나 변경 사항을 놓치는 경우가 발생할 수 있다. 이로 인해 추가로 수정하고 커밋해야 하는 번거로움이 발생한다. 이런 불편함으로부터 워크플로우를 재사용할 필요성에 대해 느꼈고 이 글에서 워크플로우 재사용하는 방법에 대해 정리하고자 한다. workflow 재사용을 적용해볼 example 워크플로우 재사용을 적용해볼 예시는 다음과 같다. 같은 워크플로우에 client-check와 admin-check job은 실행 조건과 작업 디렉토리 설정 값을 제외한 나머지 로직이 동일하다. 재사용..
Burp Suite(버프 슈트) 설치 Burp Suite(버프 슈트)는 PortSwigger라는 회사에서 개발된 웹 애플리케이션의 침투 테스트에 사용되는 소프트웨어 보안 애플리케이션이다. 클라이언트와 서버가 통신을 주고 받을 때 전달되는 패킷을 중간에 가로채서 확인할 수 있다. 이 글에서는 버프 슈트의 설치 방법과 실행 방법에 대해 정리하고자 한다. 설치 방법 1. PortSwigger(버프 슈트 제품 회사) 홈페이지에 접속한다. Web Application Security, Testing, & Scanning - PortSwigger PortSwigger offers tools for web application security, testing, & scanning. Choose from a range..
PuTTY 출력 라인 수 늘리기 PuTTY를 실행하여 Window로 이동 후 Lines of scrollback 부분에 출력하고자 하는 라인 수로 변경하면 출력 라인 수를 변경할 수 있다. 방금 변경한 출력 라인 수 설정을 일시적으로 사용하는 것이 아닌 기본 설정으로 사용하고 싶다면 Session으로 가서 아래와 같이 Default Settings를 클릭 후 Save 버튼을 눌러 설정을 저장해주면 된다.
[SQL] WITH 절 WITH 절은 복잡한 쿼리문에서 반복되는 서브쿼리를 임시 테이블처럼 활용할 수 있는 가상 테이블의 개념이다. 일종의 이름을 붙인 서브쿼리라고 할 수 있다. 주요 RDBMS(MySQL, Oracle, Postgresql...)에서 제공하는 기능이다. WITH 절을 사용하면 반복되는 블록을 재사용함으로써 코드 가독성을 높일 수 있으며 실행 속도 시간을 최적화할 수 있다. WITH 절은 아래와 같이 별칭(서브쿼리의 이름)을 지정하고 별칭에 해당하는 쿼리문을 지정해주면된다. WITH 별칭1 AS (SELECT 문), 별칭2 AS (SELECT 문) ... SELECT FROM 별칭1, 별칭2 ...; # example WITH LIST AS ( SELECT * FROM TEST_TB WH..
[Oracle] 오라클 실수로 삭제 후 커밋한 데이터 복구 - AS OF TIMESTAMP 최근 실수로 데이터를 삭제하고 커밋(commit)해버려 엄청 당황스러웠던 일이 있었다. 어떻게 복구할 수 있을까 찾던 중 AS OF TIMESTAMP 를 활용하여 복구하는 방법에 대해 알게 되었고 그 방법에 대해 이 글에 정리하고자 한다. FlashBack은 DB에서 데이터 수정 및 삭제를 하고 커밋을 한 이후더라도 특정한 시간이나 특정 시점으로 되돌릴 수 있는 기능이다. Oracle 9i 이후부터 지원되는 기능으로 잘못된 DML operation으로 인한 복구를 쉽게 할 수 있다. FlashBack 기능을 통해 AS OF TIMESTAMP를 활용하여 삭제 전 데이터를 조회할 수 있으며 이를 활용하여 데이터 복구가..
@Profile 빈이나 컴포넌트에 프로필을 구분하여 빈을 로드하고 싶은 경우 @Profile을 활용하면 된다. 아래와 같이 @Profile을 통해 프로필(profile)이 active될 때 어떤 빈 혹은 컴포넌트를 등록할지 결정할 수 있다. @Configuration @Profile("prod") public class ProdConfig{ @Bean public DataSource dataSource(){ // ... 생략 } } @Configuration @Profile("dev") public class DevConfig{ @Bean public DataSource dataSource(){ // ... 생략 } } 프로필 이름 앞에 NOT 연산자인 !를 접두사로 붙여 프로필에서 제외시킬 수 있다. ..
[Infra] 스케일 업(Scale-up), 스케일 아웃(Scale-out) 서버의 용량이나 성능을 높이기 위해서 인프라를 업그레이드 하는 방법으로 스케일 업과 스케일 아웃이 있다. 스케일 업(Scale-up) 기존 서버의 사양을 업그레이드해 시스템을 확장하는 것 추가적인 네트워크 연결없이 사양만 증강하고 한 대의 서버를 관리하면 되기 때문에 비교적 간단 성능 향상에 따른 비용부담이 큼 단일 서버이기 때문에 서버 교체시 다운타임 발생 및 장애 발생시 큰 타격 하드웨어적인 예) 성능이나 용량 증강을 목적으로 하나의 서버에 디스크를 추가하거나 CPU나 메모리를 업그레이드시키는 것 소프트웨어적인 예) AWS의 EC2 인스턴스 사양을 micro에서 small, small에서 medium 등으로 높이는 것 스케일..
[MySQL] 한번에 여러개의 데이터 삽입(insert) 첫번째로 VALUES 로 아래와 같이 여러 데이터를 한번에 삽입하는 방법이 있다. INSERT INTO TEST (col1, col2, ...) VALUES ('v1', 'v2', ...), ('v1', 'v2', ...), ... ('v1', 'v2', ...); 두번째로 SELECT 문을 활용하여 SELECT 된 결과를 삽입 방법이 있다. 여러 테이블의 결과를 단일 테이블에 저장하거나 하나의 테이블의 일부 컬럼을 조회하여 저장하는 경우에 활용된다. INSERT INTO TEST SELECT * FROM TEMP WHERE 조건; SELECT INTO TEST SELECT A, B, C, D FROM TEMP WHERE 조건;
[AWS] 예산(Budgets) 제한 설정 AWS에서 청구서가 날아와 '왜 이런 금액이 청구되었지?' 하고 갑작스럽게 놀라기 전에 미리 요금 폭탄을 예방할 수 있는 방법에 대해 소개하고자 한다. 바로 AWS의 예산(Budgets) 설정 서비스이다. 우선 AWS console에서 Budgets를 검색 후 들어간다. 아래와 같이 나오면 예산 생성 버튼을 클릭한다. 다음과 같이 예산 유형을 선택하면 된다. 프리티어 서비스로만 이용하고 싶은 경우 제로 지출 예산 템플릿을 선택시 간단하게 예산 생성이 가능하다. 조금 더 예산에 대한 구체적인 설정(예산 금액 설정, 예산 범위, 알림 임계값...)을 하고 싶다면 템플릿을 사용하지 않고 사용자 지정(고급)을 선택하여 커스텀하면 된다. 예산 생성 후 Budgets(예산..
[스프링 부트, Spring Boot] 테스트 실행환경 분리 이번 글에서는 테스트 실행환경 분리를 위한 방법에 대해 정리하고자 한다. 제일 먼저 application.yml(환경변수) 파일에 테스트 환경을 추가해준다. # application.yml spring: config.activate.on-profile: default --- spring: config.activate.on-profile: test 이때, 테스트 환경에 대한 환경 변수 파일을 test 하위에 분리해주는 방법도 있다. 환경 변수 파일을 test 하위에 만들어주면 자동으로 main 하위의 환경 변수 파일보다 우선적으로 적용된다. 그리고 분리한 테스트 환경을 적용시켜주기 위해 테스트 클래스에 @ActiveProfiles를 아래와 같이 ..