본문 바로가기
반응형

전체글396

VSCode에서 정규표현식(Regex)로 원하는 문자열 치환하기 아스키독 (adoc) 혹은 마크다운 (md) 파일을 작성하다보면 정규표현식을 통해 특정 패턴의 문자들 중 일부만 교체 해야할 때가 종종 있습니다. 이를테면 다음과 같은 경우인데요. 아래와 같은 화면에서 (숫자) 로 되어진 부분들을 로 변경이 필요하다고 하겠습니다. (즉, 괄호안 숫자는 그대로 두고, 괄호 () 만 태그 로 교체하는 것입니다.) 현재 찾고자 하는 패턴을 정규표현식으로 간단하게 표현하면 \([0-9]\) 가 됩니다. 그래서 찾는 패턴은 \([0-9]\)로 두고, 어떻게 변환할지만 정하면 되는데요. 여기서 아래와 같이 입력해서 변경을 시도해보실 수 있습니다. \([0-9]\) 괄호를 escape 처리 하기 위해 backslash (\) 를 괄호 앞에 붙였습니다. VS Code에서는 replac.. 2021. 2. 18.
Slack webhook 으로 Upsource 코드 리뷰 알람 받기 (멀티 슬랙 채널) 현재 Upsource는 Slack과의 통합 (Integration)을 지원하지 않습니다. Integration with slack is not working via webhook 그래서 어쩔 수 없이 Slack의 웹훅을 통해 직접 연동을 구현해야하는데요. 여기서 문제는, Upsource는 웹훅 URL 호출만 지원합니다. 보시는것처럼 URL 호출값만 넣을 수 있습니다. 즉, Upsource의 메세지를 파싱해서 Slack 웹훅 포맷에 맞게 JSON을 만들어 보내는 등의 로직이 있는 형태를 사용할 수가 없습니다. 그래서 Upsource -> Slack 사이에서 Upsource의 알람을 받아 파싱해서 Slack 웹훅을 호출해주는 중간 애플리케이션이 필수가 됩니다. 단순히 코드리뷰 알람을 위해 별도의 서버를 구축.. 2021. 2. 1.
Slack Webhook API 생성하기 요즘 대부분의 개발도구들은 Slack과의 통합 (Integration)을 지원하지만, 여전히 미지원 하는 도구들도 많습니다. 이런 미지원 도구들을 Slack에 연동할때 Slack Webhook을 사용합니다. 저도 종종 사용하고, 앞으로도 자주 사용할 것 같아 정리 합니다. 1. Webhook 생성 먼저 본인의 슬랙 서비스를 실행해서 웹훅으로 알람을 받을 채널로 이동합니다. 채널의 화면 상단을 보시면 느낌표 (!) 가 보이실텐데요. 해당 채널에 대한 여러 설정들을 보여주는 버튼입니다. 아래와 같이 Add apps 를 클릭합니다.여러 앱들이 나올텐데, 웹훅 App이 안나올 수 있으니, View App Directory를 클릭해서 App 검색 페이지로 이동합니다.웹 페이지가 새로 열리는데요. 해당 웹 페이지의.. 2021. 1. 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의 상태 비저장 세션 (StatelessSession)과 유사한 개념이 JPA에는 없어서 Cursor 기능을 구현할 수 없었습니다. 상태 비저장 세션 (StatelessSessi.. 2021. 1. 25.
Spring Batch 파티셔닝 (Partitioning) 활용하기 지난 시간에 소개 드린 멀티쓰레드 Step과 더불어 파티셔닝 (Partitioning)은 Spring Batch의 대표적인 Scalling 기능입니다. 서비스에 적재된 데이터가 적을 경우에는 Spring Batch의 기본 기능들만 사용해도 큰 문제가 없으나, 일정 규모 이상이 되면 (ex: 매일 수백만 row가 추가되는 상황에서의 일일 집계) 서버를 Scalling (Up or Out) 하듯이 배치 애플리케이션 역시 확장이 필요합니다. 이런 문제를 고려해서 Spring Batch 에서는 여러 Scalling 기능들을 지원하는데요. 대표적으로 다음과 같습니다. Multi-threaded Step (Single process / Local) 단일 Step을 수행할 때, 해당 Step 내의 각 Chunk를 별.. 2021. 1. 20.
2. Github Action & AWS Beanstalk 배포하기 - profile=local로 배포하기 지난 시간에 만들어둔 Github Action을 통해 profile=local로 Beanstalk에 배포를 진행해보겠습니다. profile=local, 즉, 운영 DB와 구글&네이버 OAuth 를 사용하지 않는 간단한 테스트 용도로만 배포할 예정입니다. 실제 운영 배포는 다음 시간에 진행할 예정입니다. Github Action과 Beanstalk 연동된 환경 (즉, 이번 시간에 설정된 환경)를 구성하고 이를 기반으로 개선하는 과정으로 진행할 예정입니다. 지난 시간과 마찬가지로 모든 애플리케이션 코드 (Java & Gradle)는 저의 저서 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 기반으로 합니다. 2020.12월 기준이기 때문에 시간이 지나면 AWS의 UX 변경이 있을 수 있습니다. 최대한 키워.. 2021. 1. 16.

728x90