Spring 에는 주기적인 일을 처리할 수 있도록 스케줄 관련 기능이 포함되어있다. 먼저 스케줄 작업을 처리하기 위해 src/config 패키지 하위에 ScheduleConfiguration 클래스를 작성하자. 그다음에 다음과 같이 작성 하자. @EnableScheduling 어노테이션을 선언함으로써, Spring은 스케줄 관련 기능을 지원하며 스케줄링 관련 어노테이션을 활성화한다. 프로젝트의 메인 클래스인 DemoApplication 클래스에서 @EnableScheduling 어노테이션을 선언하여, 스케줄링 기능을 활성화할 수 있지만, 나는 설정 파일들은 모두 따로 config 패키지 하위에 클래스로 생성하여 관리한다. 이 방법이 좀 더 직관적인 것 같다. 그다음 반복되는 스케줄 작업을 선언하기 위해 ..
* 이 글은 Intellij를 사용하고 있는 개발자분들을 대상으로 합니다. 서버 개발을 하다 보면, 외부 API 또는 자신이 개발하고 있는 API 서버를 대상으로 테스트해봐야 하는 경우가 많이 발생합니다. 이러한 상황에서 테스트를 하기 위해 개발자들은 Http Client 프로그램을 사용하는데, Http Client들 중에 대표적인 프로그램으로 PostMan (포스트맨)을 많이 사용합니다. 테스트를 할때, IDE에서 작업을 하다가 화면을 이동해서 포스트맨을 켜서 테스트를 해보고, 다시 IDE로 돌아와 API 수정을 하고 다시 포스트맨으로 이동해서 테스트를 하는 등 불필요한 화면 이동 작업들이 많이 발생하게 됩니다. 이러한 불필요한 이동 작업을 줄일 수 있는 방법 중에 하나가 Intellij에 내장되어 있..
이번에는 NodeJS 프로그램을 실행 가능한 바이너리 프로그램으로 만들어, 소스가 외부에 공개되지않고 NodeJS 설치 없이 실행할 수 있는 방법을 설명드리겠습니다. Executable file로 만들기 위해서 저는 Pkg 라이브러리를 사용했습니다. 릴리즈 버전이 4.4.0번으로 라이브러리가 어느 정도 안정화 되어있다고 생각됩니다. zeit/pkg Package your Node.js project into an executable. Contribute to zeit/pkg development by creating an account on GitHub. github.com 본 포스트에서 사용하는 예시 프로그램은 블로그에 연재하고 있는 NestJS 기반 API 서버입니다. Typescript 기반으로 간..
최근 몇 주 동안 해당 해결 못했던 이슈를 해결하게 되어 잊지 않고자 글을 작성해본다. 브라우저에서는 현재 접속한 도메인 외에 다른 도메인으로 XMLHttpRequest 요청을 보내는 것을 기본적으로 막고 있다. 가장 주요한 이유로는 현재 사이트에 접속한 사용자의 의도와는 다르게 또는 사용자 몰래, 사용자가 인지하지 못한 다른 서버로 사용자의 데이터를 보낼 수 있기 때문이다. 서버와 달리 웹 클라이언트는 브라우 저상에서 코드가 노출되기 때문에 얼마든지 변조가 가능하다(Uglyfy 라이브러리를 통해 난독화할 경우는 제외하고!). CORS에 대한 자세한 내용은 다음을 참고하자. https://developer.mozilla.org/ko/docs/Web/HTTP/Access_control_CORS HTTP 접..
오늘은 Spring Boot 환경에서 에러 로그 모니터링을 하는 방법에 대해서 설명해보겠습니다. 개발이 완료된 서버를 운영환경에 배포하면, 서버가 잘 동작하고 있는지, 에러가 발생한다면 해당 에러는 어디서 발생하는지 확인이 필요합니다. 그래서 오늘은 이슈 트래킹을 할 수 있는 Sentry를 Spring Boot와 연동해보겠습니다. 이번 포스팅은 연동관련 된 내용만 다룹니다. Sentry에 대한 자세한 내용은 다음 포스팅을 참고해주세요! [DevOps] 로그 수집 및 모니터링 시스템 - Sentry (1탄) [DevOps] 로그 수집 및 모니터링 시스템 - Sentry (2탄) 먼저 Sentry 프로젝트를 다음과 같이 만듭니다. 1. create project 클릭 2. server 탭 클릭 3. LogB..
최근 Spring Boot, Spring Boot Data Jpa, Hibernate를 사용하면서 Spring Boot Data JPA 프로젝트에서 Querydsl을 적용하는 방법에 대하여 알려드리겠습니다. 먼저 Querydsl 관련 플러그인을 다음과 같이 추가해줍니다. 그다음, querydsl 라이브러리를 dependencies에 다음과 같이 추가해줍니다. 이후, gradle에서 querydsl을 통해 Qclass를 생성하기 위하여 QClass가 생성될 디렉토리의 위치와 관련 설정들을 작성하는 Task를 다음과 같이 추가해줍니다. Java 플러그인에는 Source Set이라는 개념이 들어가 있으며, 이는 함께 컴파일과 실행되는 소스 파일들의 그룹들을 뜻합니다. 다음과 같이 자바 코드와 QClass가 같..
1. 말을 잘한다 - 다른 사람과 대화를 할 때 조리 있게 자신의 생각을 잘 말하며 명확하게 의사를 전달한다 (임원 면접 만점 받음) 2. 리액션이 좋다 - 상대방의 말에 잘 반응해주어 말하는 사람의 기분을 좋게한다! (팀장님의 성격이 바뀜) 3. 노래를 잘부른다 - 말이 필요없다. 목소리가 완전 좋고 장기자랑에서 노래를 불러 수상을 여러번 했다! - 춤도 잘춘다 ㅎㅎ 4. 무엇이든 이해하려고 하며, 이해심이 많다 - 어떠한 일이 일어나면 이해하려고 노력하며, 내가 어떤 멍청한짓을 해도 다음에 그러지 말라며 이해해준다 5. 예쁘다 - 진짜 예쁘다. - 말이 필요없이 여신이다. - 덕분에 이상한 사람들이 주변에 많이 꼬인다 (연락처 달라는 둥..) 6. 날씬하다 - 정말 날씬해서 옷 사이즈를 보면 놀랄때가..
저번 포스트에서는 간략하게 Sentry에 대하여 설명을 했는데, 이번에는 직접 NodeJS 프로젝트와 Sentry를 직접 연동해보겠다! 먼저 간단한 Typescript기반의 Nest 프레임워크를 이용한 NodeJS 프로젝트를 만들어보자! # NestJS CLI 를 전역으로 설치 npm i -g @nestjs/cli # NestJS 기반 프로젝트 생성 nest new sentry_example 이후 Sentry와 연동을 도와주는 Raven 모듈을 설치해야 하는데, 요즘 NestJS 프레임워크를 썼기에 좀 더 편하게 적용하기 위해서 NestJS용 Raven 모듈을 다운로드했다. # Raven Library https://www.npmjs.com/package/raven raven A standalone (N..