New
-
VSCode에서 정규표현식(Regex)로 원하는 문자열 치환하기
아스키독 (adoc) 혹은 마크다운 (md) 파일을 작성하다보면 정규표현식을 통해 특정 패턴의 문자들 중 일부만 교체 해야할 때가 종종 있습니다. 이를테면 다음과 같은 경우인데요. 아래와 같은 화면에서 (숫자) 로 되어진 부분들을 <숫자> 로 변경이 필요하다고 하겠습니다. (즉, 괄호안 숫자는 그대로 두고, 괄호 () 만 태그 <> 로 교체하는 것입니다.) 현재 찾고자 하는 패턴을 정규표현식으로 간단하게 표현하면 \([0-9]\) 가..
2021.02.18
-
Slack webhook 으로 Upsource 코드 리뷰 알람 받기 (멀티 슬랙 채널)
현재 Upsource는 Slack과의 통합 (Integration)을 지원하지 않습니다. Integration with slack is not working via webhook 그래서 어쩔 수 없이 Slack의 웹훅을 통해 직접 연동을 구현해야하는데요. 여기서 문제는, Upsource는 웹훅 URL 호출만 지원합니다. 보시는것처럼 URL 호출값만 넣을 수 있습니다. 즉, Upsource의 메세지를 파싱해서 Slack 웹훅 포맷에 맞게 JSON을 만들어 보내는 등의 로직이 있는 형태를 사용할 수가..
2021.02.01
-
Slack Webhook API 생성하기
요즘 대부분의 개발도구들은 Slack과의 통합 (Integration)을 지원하지만, 여전히 미지원 하는 도구들도 많습니다. 이런 미지원 도구들을 Slack에 연동할때 Slack Webhook을 사용합니다. 저도 종종 사용하고, 앞으로도 자주 사용할 것 같아 정리 합니다. 1. Webhook 생성 먼저 본인의 슬랙 서비스를 실행해서 웹훅으로 알람을 받을 채널로 이동합니다. 채널의 화면 상단을 보시면 느낌표 ( ! ) 가 보이실텐데요. 해당 채널에 대..
2021.01.31
-
Spring Batch JpaCursorItemReader 도입되다.
Spring Batch 4.3이 릴리즈 되면서 JpaCursorItemReader 가 도입되었습니다. (Spring Batch 4.3 release notes) 그 전 버전까지 (~4.2.x)는 JpaCursorItemReader가 없었음을 의미하는데요. HibernateCursorItemReader는 존재하는데, 왜 JpaCursorItemReader는 여태 없었던 것이지? 라고 의문이 들 수 있습니다. 이는 JPA 스펙 때문인데, JPA 2.1 전까지는 데이터 스트리밍이 가능한 스펙이 별도로 없었습니다. 그래서 Hibernate..
2021.01.25
-
Spring Batch 파티셔닝 (Partitioning) 활용하기
지난 시간에 소개 드린 멀티쓰레드 Step과 더불어 파티셔닝 (Partitioning)은 Spring Batch의 대표적인 Scalling 기능입니다. 서비스에 적재된 데이터가 적을 경우에는 Spring Batch의 기본 기능들만 사용해도 큰 문제가 없으나, 일정 규모 이상이 되면 (ex: 매일 수백만 row가 추가되는 상황에서의 일일 집계) 서버를 Scalling (Up or Out) 하듯이 배치 애플리케이션 역시 확장이 필요합니다. 이런 문제를 고려해서 Spring Batc..
2021.01.20
-
2. Github Action & AWS Beanstalk 배포하기 - profile=local로 배포하기
지난 시간에 만들어둔 Github Action을 통해 profile=local로 Beanstalk에 배포를 진행해보겠습니다. profile=local, 즉, 운영 DB와 구글&네이버 OAuth 를 사용하지 않는 간단한 테스트 용도로만 배포할 예정입니다. 실제 운영 배포는 다음 시간에 진행할 예정입니다. Github Action과 Beanstalk 연동된 환경 (즉, 이번 시간에 설정된 환경)를 구성하고 이를 기반으로 개선하는 과정으로 진행할 예정입니다. 지난 시간과 마찬가..
2021.01.16
-
IntelliJ (Ultimate & Community) 에서 스프링부트 active profile 설정하기
IntelliJ Community로 스프링부트 환경에서 개발하시는 분들이 종종 질문 주시는 내용이라 정리하게 되었습니다. 스프링부트로 개발을 하다보면 기본 active profile 외에 다른 profile로 실행이 필요할때가 있는데요. ex) local 이 기본 active profile인데, local-real 이란 profile로 실행하고자 할 경우 Ultimate의 경우 이에 대한 기본적인 설정을 지원하지만, Community 버전에서는 별도로 VM Option을 추가해서 진행해야..
2021.01.14
-
Netlify 로 정적 웹 사이트 배포하기
정적 웹 사이트 (js/html/css만 존재하는 형태)로 서비스 제공이 필요할 때 가장 편하게 구축할 수 있는 방법으로 Netlify가 있습니다. 빌드/배포/호스팅까지 정적 웹 사이트를 제공하기 위한 모든 기능을 쉽고 편하게 제공하다보니 많은 분들이 사용하고 계시는데요. GithubAction이나 TravisCI와 같이 별도의 CI 서비스를 구축할 필요도 없다보니 한번쯤 익혀놓으시면 정말 요긴하게 쓰일데가 많습니다. 가격 역시 개인이 무료..
2021.01.04
-
Jest를 IntelliJ (or Webstorm) Debug 모드로 실행하기
VS Code에 비해 Javascript 개발 환경에서 IntelliJ (+ WebStorm)이 갖는 가장 큰 장점은 디버깅 기능입니다. 코드의 호출 스택을 쫓아간다거나, 곳곳의 코드에서 브레이크를 걸고 Expression으로 임시코드를 실행해보는 등 다양한 디버깅 기능을 IntelliJ에서는 사용해볼 수 있는데요. Javascript의 테스트 프레임워크인 Jest를 사용할때도 IntelliJ의 디버깅 기능을 활용할 수 있습니다. 이번 시간에는 IntelliJ에서 Jest를 디..
2021.01.01
-
EC2 (Amazon Linux 2) 에 Jenkins 설치하기
기존에 작성된 EC2 (Amazon Linux 1) 에 Jenkins 설치하기 이 있지만, 현재 AWS에서 Amazon Linux2가 메인 이미지가 되었기에 해당 버전으로 설치하는 법을 진행하겠습니다. 아시다시피 Amazon Linux 2는 CentOS 7.x 호환입니다. 1. 버전 확인 먼저 현재 자신의 서버가 Amazon Linux2가 맞는지 확인합니다. 기억이 안나신다면 서버에서 아래 명령어로 버전을 확인합니다. cat /etc/*release 2. Jenkins 설치 Jenkins 설치는 크게..
2020.12.31
-
1. Github Action & AWS Beanstalk 배포하기 - Github Action으로 빌드하기
기존에 사이드 프로젝트를 만들면 다음과 같은 환경에서 진행을 해왔습니다. TravisCI & AWS Code Deploy TravisCI & AWS Beanstalk 상황에 따라 골라 쓰긴 했지만, 큰 불편함이 없었는데요. 최근 대세가 TravisCI에서 Github Action으로 넘어갔음이 느껴져 Github Action과 Beanstalk 조합에 대한 글을 쓰게 되었습니다. Github Action & AWS Code Deploy 조합은 wbluke님의 시리즈를 참고해주시면 됩니다. AWS Beanstalk의 경..
2020.12.25
-
Mac OS X에서 Multi Tab(\t\t) 정리하기
가끔 외부에서 전달 받은 tsv 파일에 중복으로 탭 ( \t )이 포함될 때가 있습니다. 이럴 경우 해당 tsv파일을 정상적으로 파싱할 수가 없어 ( \t 이 기준을 초과해서) 제대로 활용할 수가 없는데요. (DB에 import시 발생하는 에러메세지) 그래서 이럴 경우 일괄적으로 \t\t 를 \t 로 변경하도록 sed 명령어를 사용해보겠습니다. 1. sed 테스트 tsv 파일의 용량이 1GB이상일 경우도 많아서, 명령어를 먼저 테스트하고 실제 파일에..
2020.12.24
-
AWS Beanstalk Linux2 에서 Nginx 설정이 안될때
기존에 AWS Beanstalk을 사용할 경우 아래와 같이 nginx.config 파일을 교체하라고 가이드를 받는데요. (AWS 공식 문서) 그래서 실제로 프로젝트 구조를 다음과 같이 잡고 배포를 진행합니다. 배포할때 사용하는 스크립트 ( travis.yml 혹은 githubAction.yml ) 역시 이 구조를 그대로 가져가기 위해 다음과 같이 설정합니다. - name: Generate deployment package run: | mkdir -p deploy cp build/libs/*.jar deploy/applicati..
2020.12.22
-
AWS에서 수동으로 ssh 접속을 위한 Pem key 생성하기
자주 있는 일은 아니지만 EC2를 통해 pem키를 생성해본 적 없이, 곧바로 AWS의 Beanstalk을 사용하는 경우를 봅니다. 일반적으로는 EC2를 생성할때 pem키 생성을 함께 진행합니다. 이럴 경우 한번도 pem키를 만들지 않은 상태라서 ssh 접속을 위해서 별도로 pem 키 생성을 진행해야하는데요. 1. Pem Key 생성 먼저 AWS의 서비스로 EC2로 들어갑니다. EC2 대시보드의 좌측 사이드바를 보시면 "네트워크 및 보안 -> 키 페어 -> 키..
2020.12.20
-
(2020.12.16) 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 최신 코드로 변경하기
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (2020.12.16) 작년 11월 말에 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 출판 하였습니다. Spring Boot가 2.1 -> 2.4로, IntelliJ IDEA가 2019 -> 2020으로 오면서 너무 많은 변화가 있다보니, 집필할 때와 비교해 실습에서 지속적으로 문제를 제보 받았습니다. 실무에서 사용할때는 쉽게 버전을 올릴순 없지만, 책을 통한 학습단계에서는 웬만해선 최신 버전을 사용하신다는..
2020.12.16