스프링 부트(Spring Boot) 미디 플레이어 만들기 (1): Timidity++, LAME을 이용해 미디(midi) 파일을 mp3로 변환하는 메소드 만들기

제가 예전에 자바스크립트의 MIDIjs라는 라이브러리를 이용해 미디 플레이어를 만든 적이 있습니다. 자바스크립트: 인터넷에서 미디(MIDI) 파일을 바로 재생하는 라이브러리(http://www.midijs.net/) + 예제: 미디 플레이어   여기서 다른 스마트폰에서는 테스트해보지 않았지만 아이폰에서는 사파리 창을 닫으면 재생이 되지 않습니다. 컴퓨터에서는 문제가 없습니다만, 아이폰에서는 제가 사용하면서 이 점이 매우 불편했습니다. 그런데 외부 라이브러리를 사용했기 때문에 더보기…

자바(Java) 8: 자바스크립트 람다 예제로 알아보는 Stream 사용법

자바 8 이상부터 도입된 Stream이라는 타입은 람다식을 이용해 컬렉션 자료의 순회, 필터링 등을 할 수 있습니다. 자바스크립트에서는 ES5 도입 이후 자주 쓰이는 형태인데 자바의 Stream은 상대적으로 사용법이 낯설기 때문에 동일한 로직의 코드를 비교해가면서 사용법을 알아보도록 하겠습니다. 자바스크립트에서는 배열에서 바로 사용할 수 있지만 자바에서는 List, Set 등 Iterable을 구현하는 자료형이 forEach()만을 더보기…

자바(Java) 8: 람다식에서 콜론 두개 (:: – 이중 콜론 연산자, 메소드 참조 표현식)의 용도와 사용법

자바8 람다식: 자바(Java): 람다식 (Lambda Expression) 기초 (Java 8 이상)   콜론 두개 (:: – 이중 콜론 연산자)의 정식 명칭은 메소드 참조 표현식(method reference expression)이며, 결론부터 말하자면 람다식에서 파라미터를 중복해서 쓰기 싫을 때 사용합니다. 말 그대로 람다 표현식(expression)에서만 사용 가능하고, 사용 방법은 [인스턴스]::[메소드명(또는 new)]으로 사용하는데, 예제를 통해 보는 것이 이해가 빠릅니다. 더보기…

스프링 부트(Spring Boot): 구글 로그인 연동 (스프링 부트 스타터의 oauth2-client) 이용 + 네이버 아이디로 로그인

  이 방법은 JSTL, Thymeleaf, Mustache 등 서버 사이드 템플릿 엔진을 사용하는 로그인 방법입니다. SPA에서 사용할 수 있는 소셜 로그인 연동 방법은 아래 글을 참고하세요, 스프링 부트(Spring Boot): SPA에서 사용할 수 있는 OAuth2 소셜 로그인 (구글, 페이스북, 깃허브) 순서 build.gradle에 디펜던시 추가 application-oauth.properties 작성 + .gitignore 등록 Role enum 클래스 더보기…

스프링 부트(Spring Boot): 웹 페이지를 정상적으로 렌더링하는지 단위 테스트

스프링 부트 버전: 2.3.1 Gradle 버전: 6.4.1 웹 페이지를 정상적으로 렌더링하는지 테스트하는 과정입니다. 모의 서버 환경을 만들고, 그 서버에서 웹 페이지를 요청한 후 반환되는 텍스트에 특정 내용이 포함이 되어있는지 확인합니다. 렌더링 엔진은 Thymeleaf 입니다.   참고: 프로젝트 구조, View 파일, 컨트롤러 IndexController.java package com.example.awsboard.web; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public 더보기…

자바(Java): 빌더 패턴(Builder Pattern) 일반 + 롬복(Lombok) + 단위 테스트

참고 블로그   자바(Java)에서 객체를 생성할 때 사용하는 패턴이 여러 가지가 있습니다. 그 중 가장 대표적안 생성자 패턴(constructor pattern)은 지금 채워야 할 필드가 무엇인지 명확히 지정할 수 없습니다. 하지만 빌더 패턴(builder pattern)을 사용하면 어느 필드에 어떤 값을 채워야 할지 명확하게 지정할 수 있습니다.   일반적인 생성자 패턴의 예시는 다음과 같습니다. 더보기…

Spring Boot: Spring JPA + H2 데이터베이스 기초 + 단위 테스트

롬복(Lombok)이 설치되어 있는것을 전제로 합니다. 스프링 부트 버전: 2.3.1 Gradle 버전: 6.4.1 스프링 부트 Spring Boot: Spring JPA + H2 데이터베이스 기초 + 단위 테스트   1. build.gradle에 디펜던시 추가 dependencies { … // Spring JPA implementation ‘org.springframework.boot:spring-boot-starter-data-jpa’ runtimeOnly ‘com.h2database:h2’ // https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api // 프로젝트에 javax.persistence 가 없는 경우 설치 compile 더보기…

Spring Boot: Gradle 버전 5 이상에서 롬복 설치 + 단위 테스트

스프링 부트 버전: 2.3.1 Gradle 버전: 6.4.1 1. Gradle 버전 확인 Gradle 버전이 5 이상인 경우 아래와 같이 진행하고, 4 이하라면 다른 방법으로 진행해야 합니다.   2. build.gradle에 롬복 부분 추가 dependencies { … // lombok annotationProcessor(“org.projectlombok:lombok”) compileOnly(“org.projectlombok:lombok”) … }   3. 롬복 플러그인 설치 (인텔리제이 아이디어 기준)   4. 더보기…

Spring Boot: JUnit 단위 테스트 기초 (GetMapping 테스트, 인텔리제이 기준)

스프링 부트(Spring Boot) 버전 2.3.1, Gradle 6.4.1 기준입니다. 1. 패키지를 생성 (예: com.example.awsboard.web) 2. 컨트롤러 및 GetMapping 예제 작성 package com.example.awsboard.web; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class BasicController { @GetMapping(“/hell”) public String hello() { return “Hell”; } }   3. 동일한 패키지를 src > test > java 에 패키지 더보기…

macOS 인텔리제이(IntelliJ) 커뮤니티 버전 설치 + 스프링 부트 프로젝트 생성

원래 인텔리제이 프로그램은 유료로 구독해야 하지만 커뮤니티 버전은 인텔리제이 정품의 일부 기능을 제거하고 무료로 제공합니다. 인텔리제이 (IntelliJ) 커뮤니티 버전 설치 젯브레인 툴박스 설치 – https://www.jetbrains.com/ko-kr/toolbox-app/ 젯브레인 툴박스 실행 후 타이틀바에 있는 아이콘 클릭 후, 인텔리제이 커뮤니티 버전을 설치합니다. 테마 선택 등 초기 설정을 진행합니다. 스프링부트 프로젝트 만들기 (인텔리제이 커뮤니티 버전) spring 더보기…