본문 바로가기

전체 글

(43)
JIRA에 이슈 한번에 대량 등록하기 이번 프로젝트를 진행하며 JIRA에 이슈를 대량으로 한번에 등록해야 하는 일이 생겼다.하나의 api 작업에 대해서 서비스단 / 컨트롤러단 / 리포지토리단 3번에 나눠서 반복해서 이슈를 등록해야 하는 상황이다.일일이 등록하기에는 많은 양이어서 일괄로 등록하는 방법을 활용하였다. 등록하는 과정 자체는 어렵지 않은데, 다음에 또 사용할 일이 있을 것 같아 기록을 위해 정리하였다.  먼저, 이슈 일괄 등록을 할 때 기존에 프로젝트에 등록된 이슈들을 이용할 것이 때문에 이슈 탭에서 내보내기를 눌러 csv 파일을 내려받는다.위의 'csv 내보내기 (내 기본값)'을 선택하여 내려받았다.  그리고 내려받은 csv 파일을 구글 스프레드 시트를 통해서 필요한 부분을 수정하였다.위의 내보내기를 하면 모든 이슈가 다 저장되는..
Java에서 데이터 중심 프로그래밍을 지원하는 기능들 Java에서는 최근에 데이터 중심 프로그래밍(Data-Oriented Programming, DOP)을 지원하는 기능들이 도입됐다. 특히 Java 17 이후 이러한 기능들이 더욱 강화되면서 데이터를 보다 직관적이고 효율적으로 다룰 수 있게 되었다. Java에서 지원하는 4가지 주요 DOP 기능(Sealed Types, Records, Pattern Matching, Smart Switch Expressions)을 소개하고, 각각의 기능이 어떻게 활용될 수 있는지 예시와 함께 알아보려고 한다.1. Sealed Types (봉인된 타입)Sealed Types는 클래스 계층 구조를 제어할 수 있게 해주는 기능이다. 어떤 클래스가 특정 클래스나 인터페이스를 확장할 수 있는지를 명시적으로 제한한다. 이를 통해 상..
[인프런 X VMware Tanzu] Spring Boot 밋업 with Josh Long 참석 후기 https://www.inflearn.com/course/offline/josh-long-meetup [지금 무료] [인프런 X VMware Tanzu] Spring Boot 밋업 with Josh Long | 인프런 - 인프런인프런 | , 자바 챔피언, 스프링 개발자 애드버킷Josh Long과 함께하는 특별한 Spring Boot 밋업! 인프런 퇴근길 밋업 with Josh Long 안녕하세요, 인프런입니다.9월 9일, 인프런은 VMware Tanzu와 협업하여 특www.inflearn.com 인프런에서 진행하는 퇴근길 밋업에 감사하게도 참가자로 선정되어 지난 9월 9일 월요일에 다녀왔다. 판교 테크노밸리의 스타트업캠퍼스에서 7시에 진행되어 퇴근 후 판교로 이동했다.  밋업 프로그램 안내에 적힌 발표 ..
54회 SQLD 준비 + 시험 후기 어제 54회 SQLD(SQL 개발자) 자격시험을 보고 왔다.SQLD 시험에 도전하고자 하는 분들께 조금이나마 도움이 되길 바라는 마음으로 준비 기간, 공부 방법, 시험 후기 등을 정리해 보려고 한다. 사전 지식SQL 기본 지식(DDL, DML, DCL, TCL, 약간의 함수 등)은 국비학원 교육을 통해 배워서 알고 있는 상태였다.업무에서는 SQL(mySQL)을 자주 사용하는데 주로 SELECT 문을 사용해서 db를 조회하는 쿼리 작성이 대부분이다. SQLD 준비 목적백엔드 업무를 하며 복잡한 쿼리 작성이 어려웠고 인덱스, 쿼리 튜닝 등의 개념을 알게 되며 SQL 공부에 대한 필요성을 느꼈다.programmers에서 mySQL 코딩 테스트 문제를 풀며 쿼리를 작성하는 연습을 시작했다. 쿼리 공부를 하는 김..
스프링부트 코틀린 프로젝트에 jsp 띄우기 이번에 프로젝트에 jsp 파일을 연동하는 설정이 필요했다. 그런데 이 프로젝트 설정에서부터 쉽지 않았기에 간단하게나마 해결 과정을 기록하고자 한다. 프로젝트 구성프로젝트는 멀티 모듈 프로젝트이고, 애플리케이션을 실행시키는 bootstrap 모듈과 connector 모듈 두 가지가 존재한다. 문제상황먼저 문제점은 설정을 다 마쳤음에도 jsp 페이지를 포워드하는 컨트롤러를 호출할 때 404 에러를 뱉어낸다는 것이었다.컨트롤러 함수 호출까지는 정상적으로 되나 그 이후 jsp 파일을 못 찾는 현상이었다. jsp 파일 404 키워드로 구글링을 해서 첫 몇 페이지는 모두 읽어보고 적용해 보고 많은 시간 삽질을 했다. jsp 의존성 추가 및 설정connector 모듈 build.gradledependencies { ..
설정 파일을 통한 환경별 Property 관리 개요 : 설정 파일을 통한 환경별 Property 관리 필요성이번에 알림톡, 푸시 알림 기능을 프로젝트에 추가하였다. 개발 환경에서 테스트를 할 때 실제 사용자들에게 알림톡, 푸시 알림이 가는 것을 방지해야 한다.물론 일반적으로는 개발 환경에서는 개발용 DB를 따로 사용할 것이다.그런데 현재 개발용 DB로 운영 DB를 덤프 떠서 사용 중이다.따라서 개발 환경에서 알림톡, 푸시 알림 관련 로직을 실행할 때 목적지를 개발자의 핸드폰으로 바꿔주는 절차가 필요했다. 환경별로 다른 설정 파일 로드하기Spring Boot에서는 프로파일을 사용하여 환경별로 다른 설정 파일을 로드하고 애플리케이션을 실행할 수 있다.프로파일별 yml 파일 작성 각 프로파일에 맞는 application-{profile}.yml 파일을 작..
FCM 푸시 알림 (코틀린, 스프링부트) docshttps://firebase.google.com/docs/cloud-messaging?hl=ko 이번에 FCM(Firebase 클라우드 메시징)을 통하여 모바일앱 푸시 알림을 보내는 기능을 만들었다. 예전에 대부분의 기업들이 모바일앱을 만드는 이유가 푸시 알림 때문이라고 배웠던 기억이 난다.하루에도 핸드폰으로 수많은 푸시 알림 메시지를 받아보지만 이걸 어떻게 보낼까 생각해본 적은 없었다. 이에 대하여 살펴볼 수 있는 좋은 기회였다. 환경: 스프링부트 + 코틀린 환경에서 개발 중, 다른 언어로 작성된 서비스중인 프로젝트에서 이미 푸시 알림 기능을 사용하고 있음(즉 Firebase 프로젝트 이미 존재, 토큰 발급할 수 있는 클라이언트 앱 존재)개요Firebase docs에서 ‘클라우드 메시징’, ‘..
Nexus Repository 도입하기 sonatype Nexus3 설치하고 리포지토리 생성하기최근에 프로젝트에 Nexus Repository를 도입하였다. 프로젝트는 멀티 모듈 프로젝트로, 각 기능별로 독립적으로 동작하는 여러 독립 모듈들이 존재한다. Nexus 도입 목적라이브러리와 외부 의존성 관리의 중앙화빌드 속도와 안정성 향상Docker Compose로 Nexus3 실행하기로컬 환경에서 테스트하기 위하여 도커를 사용하였다. 다음과 같이 compose.yaml 파일을 생성하였다.version: '3'services: nexus_oss: image: sonatypecommunity/nexus3 container_name: nexus3 ports: - 8085:8081 restart: always vol..