![[Datagrip] MySQL sqldump Export & Import](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZAyox%2FbtsIZWnvGC5%2Fkd0CPlKAX2qvFo3LhRbFz0%2Fimg.png)
사전 준비덤프 파일을 생성할 Mysql 서버가 데이터그립에 연결되어 있어야 합니다mysqldump 파일 사용을 위하여 로컬 환경에 Mysql이 설치되어 있어야 합니다.생성된 덤프파일을 통하여 데이터를 불러올 스키마가 필요합니다.이 본문은 스키마 전체를 Export하고 Import 하는 것을 예제로 사용하였습니다. 따라해보실 경우에 참고해주세요. Export sqldump1. dump 파일을 생성할 스키마 우클릭 > Import/Export > Export with ‘mysqldump’ 2. 덤프 옵션 설정 옵션들이 복잡해보이지만, 하나하나 따져보면 그리 복잡하지 않습니다. 아래의 설명을 보시고 위 각각의 옵션들에 대하여 설명은 다음과 같습니다. `Path to mysqldump` : mysqldump 파..
도커로 젠킨스 설치, 설정 가이드 https://hub.docker.com/r/jenkins/jenkins 도커허브 사이트에서 Jenkins 검색 → 사용하고자 하는 JDK 버전의 태그가 달린 docker pull 명령어를 입력한다. 나같은 경우 자바 11버전이기에 태그가 latest-jdk11인 이미지를 다운로드 받았다. docker pull jenkins/jenkins:latest-jdk11 젠킨스 도커 공식 사이트 : https://github.com/jenkinsci/docker 위 링크에서 docker run 명령어 몇가지 예시를 살펴볼 수 있다. 나는 백그라운드에서도 실행을 유지하기 위하여 -d 옵션을 붙이고, -—name 옵션으로 컨테이너의 이름을 jenkins-server로 주어서 실행시켰..
Util클래스 또는 상수형 클래스는 객체생성을 막자 어플리케이션 개발을 진행하다보면 자주 쓰이는 성격이 비슷한 메소드들을 묶어 Util성 클래스로 만들거나, 상수값들을 모아놓은 클래스를 만들 일이 있습니다. 이러한 클래스들은 static 메소드와 static 변수들을 제공해주기 때문에, 객체생성은 의미가 없습니다. 따라서 기본생성자를 private로 지정하여 객체생성을 막는것이 바람직합니다. public final class StringUtils { public static String utilmethod(String str) { // util 로직... return result; } // 객체생성 금지! private StringUtils() { }; } Lombok 라이브러리를 사용한다면 @NoArg..
보통 lombok을 사용하기위하여 build.gradle에 다음 코드를 추가한다. build.gradle // lombok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' 그러나 위 부분만을 추가한다면 테스트코드에서는 lombok을 사용할 수 없는데, 이럴 땐 build.gradle에 다음의 코드를 추가하면 된다. build.gradle // 추가 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok'
Intro 본 포스팅은 박우빈님의 Practical Testing: 실용적인 테스트 가이드 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. Section 1. 테스트는 왜 필요할까? 테스트는 귀찮다. 당연하다. 그렇다면 테스트코드는 왜 작성해야할까? 먼저, 올바른 테스트코드에 대하여 알아보자. 올바른 테스트코드란? 자동화 테스트로 비교적 빠른 시간 안에 버그를 발견할 수 있고, 수동 테스트에 드는 비용을 크게 절약할 수 있다. 소프트웨어의 빠른 변화를 지원한다. 팀원들의 집단 지성을 팀 차원의 이익으로 승격시킨다. 가까이 보면 느리지만, 멀리 보면 가장 빠르다. Section 2. 단위테스트(Unit test..
스프링 핵심원리 고급편 본 포스팅은 김영한님의 스프링 핵심원리 고급편 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. 로그추적기 버전 3 개발 이번에는 모든 요구사항을 만족은 하였으나, 실제 애플리케이션에 적용하기에는 너무 번거로웠던 버전 2를 개선하여 버전 3를 개발하여 보겠습니다. 먼저 LogTrace 인터페이스를 작성해줍니다. 이 인터페이스 에는 기존 로그추적기의 메소드에서 public으로 공개된 begin(), end(), exception()만 선언해줍니다. LogTrace public interface LogTrace { TraceStatus begin(String message); void end..
스프링 핵심원리 고급편 본 포스팅은 김영한님의 스프링 핵심원리 고급편 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. 로그추적기 버전 2 개발 버전 1에서는 로그에서 레벨을 표현하지 못하고, 고유한 HTTP 트랜잭션 ID 를 표현하지 못한다는 치명적인 단점이 있었습니다. 그래서 버전 2에서는 HelloTrace를 좀 더 개선하여 만족하지 못한 요구사항을 만족할 수 있도록 해보겠습니다. HelloTraceV2.java @Slf4j @Component public class HelloTraceV2 { private static final String START_PREFIX = "-->"; private stati..
스프링 핵심원리 고급편 본 포스팅은 김영한님의 스프링 핵심원리 고급편 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. 로그추적기 버전 1 개발 프로토타입 버전의 로그추적기를 먼저 만들고, 애플리케이션에 적용해봅시다. TraceId.java public class TraceId { private String id; //요청 트랜잭션 ID private int level; //메서드 깊이 level public TraceId() { this.id = createId(); this.level = 0; } private TraceId(String id, int level) { this.id = id; this.lev..
스프링 핵심원리 고급편 본 포스팅은 김영한님의 스프링 핵심원리 고급편 을 수강하면서 개인적으로 정리한 내용입니다. 참고용도로만 봐주시길 바라며, 더 자세한 내용이 궁금하신분들은 직접 강의를 수강하시길 권장드립니다. 상황 개요 회사에 입사를 했다고 가정합니다. 회사에서 개발하고 있는 애플리케이션의 규모가 점점 커져 코드는 수십만라인에 클래스는 수백개에 달하게 되었습니다. 이럴 때 장애상황에 빠르게 대응하기 위하여 로그를 미리 남겨놓으려고 하는데 각각의 기능마다 수동으로 로그를 남겨놓아도 되지만 이렇게 개발하게 된다면 비즈니스 로직에도 영향을 주고, 코드의 변경도 너무 많이 일어나기 때문에 좀더 효율적으로 개발하여야 합니다. 이런 상황을 가정하고 기존 애플리케이션에 영향을 주지 않으면서 로그를 남겨놓을 수 ..
Intro저는 현재 로컬환경에서만 개발을 진행하고 Front 부분과 따로 개발, 배포를 진행해본 경험이 없기 때문에 CORS 이슈를 만나본 적은 없지만, 언젠가 CORS 이슈를 겪게될 것은 자명한 사실이기 때문에 여러 사이트를 참고하여 간단하게 개념들을 정리해보고자 합니다. CORS, SOP란?SOP (Same-Origin Policy, 동일 출처 정책)자바스크립트 엔진 표준 스펙의 보안 규칙으로 하나의 출처(Origin)에서 로드된 자원(문서나 스크립트 등)이 호스트나 프로토콜, 포트번호가 일치하지 않는 자원과 상호작용하지 못하도록 요청 발생을 제한하고, 동일 출처(Same Origin)에서만 접근이 가능한 정책입니다. CORS (Cross-Origin Resource Sharing)CORS는 한 도메..
Intro 최근 CORS에 대하여 공부를 해보고, Spring에서 CORS 설정은 어떻게 하는지에 대하여 공부에 본 뒤, 직접 적용하는 코드를 작성하고 간단하게 정리하고자 합니다. 모든 코드는 https://github.com/DevCHW/spring-cors-example 에서 확인하실 수 있습니다. 혼자 공부하여 정리한 내용이라 틀린 부분이 있을 수 있습니다. 이 점 유의하여 읽어주시고 틀린 부분이 있다면 고쳐주시면 감사하겠습니다! Spring CORS 설정 방법 3가지 어노테이션 활용 WebConfig에서 글로벌하게 설정 Spring Security 설정 어노테이션 활용 Controller 클래스에서 @CrossOrigin 어노테이션을 이용하여 CORS를 적용할 수 있습니다. 클래스레벨에 어노테이션..
XSS란?XSS는 Cross Site Scripting의 약자로, 원래는 CSS가 맞지만 Cascading Style Sheet의 약자 CSS가 널리 사용되고 있으므로, 혼동하지않기위해 XSS라고 합니다.간단하게 공격자가 웹사이트에 자바 스크립트와 같은 스크립트 코드를 삽입해 사용자를 공격할 수 있는 방법입니다.XSS는 Reflected XSS, Stored XSS, DOM Based XSS 세 가지의 공격 형태로 분류할 수 있습니다. 이 포스팅에서는 Reflected XSS, Sotred XSS 두가지에 대하여만 정리해보겠습니다. Stored XSS (저장형 XSS)게시판과 같은 텍스트를 입력하고 서버에 저장되는 웹사이트에 공격자가 악의적인 스크립트 코드 를 삽입하여 사이트 서버에 저장시킵니다.그 후,..