반응형

안녕하세요!

 

오늘은 Springboot 프로젝트를 Jar파일로 만들고, 실행하는 것까지 순서대로 알려드리겠습니다.

 

스프링부트 프로젝트를 JAR 파일로 만들어 배포하는 과정은 다음과 같습니다.

1. IntelliJ에서 프로젝트를 빌드합니다.

  • IntelliJ에서 Maven 또는 Gradle을 사용하여 프로젝트를 빌드합니다.
  • 빌드를 수행하면 프로젝트의 소스 코드가 컴파일되고, 라이브러리 의존성이 해결됩니다.

2. JAR 파일 생성 설정 확인

  • 스프링부트는 기본적으로 JAR 파일로 패키징됩니다. JAR 파일 생성 설정이 되어 있는지 확인합니다.
  • 만약 설정이 되어있지 않다면, pom.xml 파일에 다음과 같이 설정합니다.
<build>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
   </plugins>
</build>
 

3. JAR 파일 빌드

  • IntelliJ에서 Maven 탭을 열고 clean과 package를 차례로 실행합니다.
  • 또는 터미널에서 mvn clean package 명령어를 실행합니다.
  • 빌드가 완료되면 target 폴더에 JAR 파일이 생성됩니다.

4. JAR 파일 실행 확인

  • 생성된 JAR 파일을 실행하여 정상적으로 작동하는지 확인합니다.
  • 터미널에서 java -jar <파일명>.jar 명령어를 실행합니다.

위까지의 과정이 헷갈리신다면, 아래 제가 작성한 다른 글을 한번 보고 오시면 쉽게 이해되실거에요!

https://chunghyup.tistory.com/79

 

IntelliJ 프로젝트를 Jar 로 만들어서 배포하기

안녕하세요. 저번 게시물에서는 IntelliJ에서 Hello world 프로젝트를 만들었죠? https://chunghyup.tistory.com/78 intellij 자바 프로젝트 만들어서 Hello world 실행하기 안녕하세요. 이번에 간단한 스크립트를 짜

chunghyup.tistory.com

 

5. JAR 파일 배포

  • 생성된 JAR 파일을 배포하고자 하는 서버에 복사합니다.
  • 배포된 서버에서 java -jar <파일명>.jar 명령어를 실행하여 서버가 정상적으로 구동되는지 확인합니다.

위의 과정을 따르면 스프링부트 프로젝트를 JAR 파일로 만들어 배포할 수 있습니다.

반응형
반응형

문제

4 × 3 = 12이다.

이 식을 통해 다음과 같은 사실을 알 수 있다.

3은 12의 약수이고, 12는 3의 배수이다.

4도 12의 약수이고, 12는 4의 배수이다.

두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.

  1. 첫 번째 숫자가 두 번째 숫자의 약수이다.
  2. 첫 번째 숫자가 두 번째 숫자의 배수이다.
  3. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.

입력

입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.

출력

각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.

반응형

해설

isFactor 함수와 isMultiple 함수 두가지만 만들면 쉽게 풀 수 있다.

쉬운 문제인 만큼 해설만 있으면 충분할듯

코드

// const dataFile = './data';
const dataFile = '/dev/stdin';
const fs = require('fs');
const inputs = fs.readFileSync(dataFile).toString().split('\n').map(el => el.split(" ").map(el => parseInt(el)));

const run = (inputs) => {
  let i = 0;
  while(true) {
    const input = inputs[i]
    if(isLast(input)) { break; } 
    if(isFactor(input)) {
      console.log("factor")
    } else if (isMultiple(input)) {
      console.log("multiple")
    } else {
      console.log("neither")
    }
    i++;
  }
}

const isLast = (input) => {
  return input[0] == 0 && input[1] == 0;
}

const isFactor = (input) => {
  if(input[0] >= input[1]) {
    return false;
  }

  return input[1]%input[0] == 0
}

const isMultiple = (input) => {
  if(input[1] >= input[0]) {
    return false;
  }

  return input[0]%input[1] == 0
}
run(inputs);
반응형
반응형

Mysql을 통해 환경을 세팅하는 중 가장 흔하게 만날 수 있는 오류가 하나 있다.

 

아래와 같은 오류인데, 이 오류가 무엇인지! 해결방법은 무엇인지 알아보자.

 

Client does not support authentication protocol requested by server; consider upgrading MySQL client

오류의 원인

Mtysql 8부터는 Pluggable Authentication methods를 지원한다. 기본적으로 Caching_sha2_password가 사용이 되고,

우리가 흔히 사용하는 user/password 방법인 mysql_native_password를 사용하는 방법은 default가 아니다.

당연히 SHA2와 같은 암호화 알고리즘을 쓰는 방법은 단순히 Password를 사용하는 방법보다 안전하다.

하지만 Mysqljs에서는 mysql_native_password만 지원을 하기 때문에 위와 같은 문제가 발생한다.

mysqljs를 꼭!! 반드시!! 사용해야한다면 아래 1번 해결방법을 따라하면 된다.

 

반응형

해결방법

해결방법1

특정 사용자에 대해서 mysql_native_password 접근을 허용하면 된다.

아래 SQL문으로 접근을 허용 할 수 있다.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password '비밀번호'

매우 간단하고 효과적인 방법이다. 그리고 Mysqljs에 의존적인 라이브러리를 사용하고 있는 경우 어쩔 수 없이 선택해야 하는 방법이기도 하다. 하지만 이 방법을 사용할때 한가지는 알고있으면 좋을 것 같다.

"더 Secure한 방법이 있지만, 나는 지금 그 이점을 버리고 내가 편한 방법으로 진행중이다"

 

해결방법2

오래된 Mysqljs를 버리고 다른 Library로 교체

https://www.npmjs.com/package/mysql2

 

mysql2

fast mysql driver. Implements core protocol, prepared statements, ssl and compression in native JS. Latest version: 2.3.3, last published: a year ago. Start using mysql2 in your project by running `npm i mysql2`. There are 3243 other projects in the npm re

www.npmjs.com

https://dev.mysql.com/doc/dev/connector-nodejs/8.0/

 

MySQL Connector/Node.js X DevAPI Reference Index

MySQL Connector/Node.js MySQL Connector/Node.js is a MySQL 8 driver for Node.js, officially supported and maintained by Oracle. It contains a pure JavaScript implementation of the X DevAPI, an Application Programming Interface for working with the MySQL Do

dev.mysql.com

 

mysql2의 경우 mysql js를 fork하여 발전시킨 오픈소스 라이브러리이고,

connector-nodejs는 Oracle에서 개발, 유지중인 nodejs mysql driver이다.

 

 

반응형

+ Recent posts