no image
[DB] H2 데이터베이스 설정 초기화
윈도우 기준 1. 보통 c:\users\사용자이름 으로 이동하면 아래와 같이 3개의 파일이 있다. 이 중에서 .mv.db, .trace.db 확장자로 이루어진 파일은 삭제한다. 2. .h2.server.properties 파일을 메모장으로 열어서 아래와 같은 내용을 넣고 저장한다. #H2 Server Properties #Sat Sep 24 23:32:33 KST 2022 10=Generic DB2|com.ibm.db2.jcc.DB2Driver|jdbc\:db2\://localhost/test| 11=Generic Oracle|oracle.jdbc.driver.OracleDriver|jdbc\:oracle\:thin\:@localhost\:1521\:XE|sa 12=Generic MS SQL Server..
2022.09.28
no image
[GIT] GIT 원격 origin 변경 방법
1. 기존의 원격 origin 을 제거한다.$ git remote remove origin 2. 새로운 원격 origin 을 추가한다.$ git remote add origin [GIT저장소주소]
2022.09.21
no image
[IDE] Intellij 패키지 접힘 풀기
기본적으로 패키지 생성할 때 별 다른 파일없이 계속해서 안에다가 패키지를 만들게 되면 아래와 같이 생성된다. 예를 들면 위 사진에서 threadlocal 이라는 패키지를 만든 후 그 아래에 code 라는 패키지를 다시 한 번 만들면 위처럼 된다. 이렇게 되면 저기에 클래스를 만들게 될 때 code 패키지를 기준으로 생성하게 된다. 위 기능을 해제하는 방법이 있다. 프로젝트 탭에서 우측 위의 톱니바퀴 모양의 버튼을 누르고 'Compact Middle Packages' 를 누르면 아래처럼 별도의 패키지로 분리되어 보이게 된다.
2022.09.08
no image
[Spring] Kafka 이용 시 __TypeId__ 에 대하여
Kafka 를 사용하다보면 __TypeId__ 이라는 Header 를 마주하는 경우가 있다. 이 Header 를 보았다면 아마도 JsonSerializer 를 사용하는 Kafka Producer 에서 생성된 메세지의 Header 를 보았을 가능성이 매우 높다. 이 __TypeId__ 라는 헤더는 메세지를 보낼 때의 데이터 객체 타입 이름을 가지고 있다. 아래처럼 Value 타입이 Object 인 JsonSerializer 를 사용하는 Kafka Producer 에서 send 메서드를 통해 메세지를 보낼 때, 메세지 파라미터의 데이터 타입에 따라 해당 데이터의 타입 이름이 들어가게 된다. @Override public ListenableFuture sendQueue(@NonNull final PostKaf..
2022.08.02
[ERROR] Could not write JSON: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)
오류 내용 Could not write JSON: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?) 해결 방안 말 그대로 JSON 으로 변환할 때 Map 객체는 허용하지 않는 의미이다. 아래처럼 Map 인터페이스를 그대로 사용하면서 JSON 으로 직렬화할 때 위와 같은 오류가 생길 수 있다. @Builder @Getter @NoArgsConstructor @AllArgsConstructor public class PostKafkaProxyResponse { private String topic; private int partition; private long offset; private long timestamp; p..
2022.08.02
no image
[Network] Cookie - httpOnly / secure 차이점
직접 Cookie 의 httpOnly 와 secure 속성을 만들어가면서 어떤 차이점이 있는지 알아보았다. 소개 httpOnly - JavaScript 로 쿠키에 접근할 수 없으며, 브라우저의 통신이 일어날 때만 쿠키를 전달 secure - HTTPS 가 아닌 다른 프로토콜을 통해 쿠키를 전달하는 것을 방지 테스트 "teams_test" 라는 이름으로 httpOnly 와 secure 속성을 가진 쿠키를 사용했을 때와 안했을 때를 관찰하고, 그 차이점을 알아보는 것이 목적이다. SSL 인증서를 사용할 수 있는 환경에서 진행했으며, "test" Endpoint (일반 사용자 호스트) → "hack" Endpoint (공격자 호스트) 로 호출하면서 서로 다른 호스트라고 가정하고 실제로는 같은 호스트에서 진행하..
2022.08.02
no image
[Spring] @ModelAttribute 파라미터에서 사용 방법 및 원리
@ModelAttribute 는 클라이언트로부터 일반 HTTP 요청 파라미터나 multipart/form-data 형태의 파라미터를 받아 객체로 사용하고 싶을 때 이용된다. 사용 방법 @ModelAttribute 는 parameter, method 레벨로 두 가지의 방식을 지원하고 있다. @Target({ElementType.PARAMETER, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ModelAttribute { ... } @ModelAttribute 를 이용할 DTO 클래스에서는 아래처럼 생성자를 구현해도 사용할 수 있다. 단, 요청 파라미터와 매개변수 이름이 서로 같아야 한다. pack..
2022.07.30
no image
[Linux] Mac 에서 OpenJDK 17 설치하기 (Homebrew)
아래 명령어를 입력해서 다운로드한다. $ brew install openjdk@17 나타나는 화면에서 다운로드할 때 어떤 버전을 다운로드받고 있는지 확인할 수 있다. 또한 다운로드 후 사용자가 할 수 있는 작업들에 대해서 친절하게 명령어와 함께 설명을 해준다. 시스템에서 openjdk 17 을 찾을 수 있도록 아래 명령어를 입력하여 진행한다. $ sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk zsh 을 이용할 경우 아래처럼 명령어를 입력하여 PATH 에 대해서도 같이 추가해준다. $ echo 'export PATH="/opt/homebrew/opt/ope..
2022.07.27
no image
[GitLab] rsync 를 이용한 cicd 자동화 배포
2019년도에 회사 내에서 GITLAB 을 이용하여 배포 자동화 작업을 하면서 작성했던 내용입니다. 설치형 GitLab 기준으로 작성한 내용이며 gitlab-runner 사용에 대한 내용은 포함되어 있지 않습니다. Apache 내에서 특정 Document Root 를 바라보고 있을 때 rsync 를 이용하여 웹 서비스를 배포하는 내용을 담고 있습니다. 다른 방식으로 배포하는 것을 참고하려면 이 글과는 맞지 않으니 다른 글을 참고하세요. 배포 전략 rsync 를 통해 운영 서버에 업로드하며 롤링 배포를 심볼릭 링크를 이용하여 기존 버전을 교체하는 방식으로 진행할 것이다. 저장소에서 TAG Push 를 통해 배포를 한다. CI/CD 파이프라인 내에서 rsync 를 통해 업로드를 한다. CI/CD Variab..
2022.06.09