could not find 'java' executable in java_home or path. 에러가 꼭 sonarqube를 사용할 때만 발생하는 것은 아니지만 내 경우 sonarqube scanner를 사용하려고 할 때 저 에러가 발생하였다. [bluesky-boot maven deploy] $ /var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube_Scanner/bin/sonar-scanner -Dsonar.host.url=http://172.18.97.117:9000 "-Dsonar.projectBaseDir=/var/jenkins_home/workspace/bluesky-boot/bluesky-boot mav..
Toast UI Editor는 NHN에서 만든 오픈 소스 에디터이다. 2020년 3월 달에 2.0이 출시되었는데 jQuery 의존성이 제거되었고 Chart, Grid, Calendar 같은 유용한 기능들을 제공해준다. https://ui.toast.com/weekly-pick/ko_20200318/ TOAST UI Editor 2.0 출시 TOAST UI Editor는 문서 편집을 위한 자바스크립트 라이브러리로, 마크다운(Markdown)과 위지윅(WYSIWYG) 2가지 모드의 에디터를 제공하여 사용자가 편의에 따라 자유롭게 에디터를 선택할 수 있도록 도와줍니다. ui.toast.com 또한 jquery, react, vue에서 사용할 수 있도록 Package를 제공해주고 있어 자신의 환경에 맞게 사용할..
JDK의 버전별 변경 사항은 이곳을 참고하세요. Spec Java SE 14 Platform JSR 389에 정의된 바와 같이 JSR 389 구현이 목표 실제 Spec은 Final Release Specification 문서를 참고해야 함 Final Release Specification Feature Summary 전체 JEP Feature 목록은 OpenJDK의 JDK 14 문서로 확인할 수 있다. Component Feature specification / language Pattern Matching for instanceof (Preview) hotspot / runtime Helpful NullPointerExceptions specification / language Records (Prev..
Docker는 개인 공부하면서 쓰는 정도라 전문적인 사용법을 알고 있지는 않다. 자주 쓰는 명령어를 기록해 둔다. docker 19.03.5 기준 작성 기본적인 Docker 명령어 사용 # docker [COMMAND] docker docker 명령어는 모두 docker [COMMAND]의 형태이다. 'docker' 명령어만 실행하면 사용할 수 있는 명령어가 모두 나열된다. docker를 사용하면 docker hub에서 docker image를 가져와서 container를 만든다. 수많은 명령어가 있는데 자주 쓰는 명령어는 다음과 같다. 모든 명령어의 자세한 내용을 확인하고 싶은 경우 docker COMMAND --help를 추가하면 된다. 예를 들어 run 명령어의 자세한 내용은 다음과 같이 확인할 수..
Spring Framework 5.2.3.RELEASE, Spring Boot 2.2.4.RELEASE 기준으로 작성됨 Spring webmvc를 사용하는 경우에 대한 설명 Spring Framework를 쓰면 @ExceptionHandler를 사용하여 전역 에러 처리를 한다. (기존 작성한 글 참조) 2019/04/30 - [Study/Java] - Spring Boot 전역 에러 처리 Spring Boot 전역 에러 처리 Spring 5.1.6, Spring Boot 2.1.4 기준 문서 정리 Spring framework는 전역 에러를 처리하기 위해 아래의 인터페이스를 제공한다. 제공되는 interface servlet (webmvc) HandlerExceptionResolver reacitve (..
Release Train Naming 여러 라이브러리를 묶어서 그룹 단위로 배포하는 프로젝트의 경우 상위 모듈에서 하위 모듈에 대한 버전을 관리하게 된다. 상위 모듈이 만들어지면 이 상위 모듈에 대해서도 버전 관리를 해야 하는데 하위 모듈의 여러 버전을 관리하는 모듈의 버전이기 때문에 release train이라 부르고 상위 모듈의 버전에 대한 release train naming은 보통 알파벳 순서를 많이 쓴다. Spring Project의 release train naming Spring Project의 경우 이런 release train이 여러 묶음이 있다. Spring Data Spring Data의 release train naming은 유명한 컴퓨터 공학자들의 이름을 따서 명명되었다. (rel..
YAGNI - You aren't gonna need it 당장 필요하지 않은 것은 미리 구현하지 말자. 기능이 실제로 필요하기 전까지는 추가하지 않는 것이 좋다는 익스트림 프로그래밍(XP) 원칙 처음부터 필요 이상의 기능을 추가하면 설계가 복잡해진다. 또한 실제 해당 기능을 사용하려는 시점에 설계에 변경이 생겨 기존 코드를 다시 재작성해야 해서 일이 더 많아지게 되는 경우가 있다. KISS - Keep it simple, stupid 단순하게 하라. 처음부터 복잡하게 준비하지 말아야 한다. 가장 단순한 것이 확장하기 쉬운 것이다. 역할에 맞는 적절한 위치의 코드인지, 단순하고 명료해서 타인이 봐도 이해가 쉽게 되는 지를 고민해야 한다. 이 후에 확장해서 쓰려고 할 때 기존 코드를 고치기 힘들거나 많이 ..
이전에 RestTemplate을 사용하면서 List 같은 Collection 형태로 반환받기 위한 방법에 대해 소개하는 글을 썼다. 2018/11/16 - [Study/Java] - RestTemplate list 반환하기 RestTemplate list 반환하기 요청을 반환받는 클래스가 다음과 같다고 가정한다. @Data public class ResultClass { private long idx; private String name; } List로 리턴 받는 방법 - 문제가 있음. 비추천 List list = restTe.. luvstudy.tistory.com 해당 방법은 ParameterizedTypeReference를 사용해서 리턴 값을 설정하는 방법인데 대략 다음과 같이 사용한다. List ..
reactor reference 문서의 Appendix A: Which operator do I need? 의 내용 요약 워낙 많은 operator를 제공하기 때문에 적절하게 사용하기 위해 상황별 목록을 요약해서 제공하고 있다. 시퀀스 생성 시 (Creating a New Sequence) just Optional : Mono#JustOrEmpty(Optional) null도 존재할 경우 T: Mono#justOrEmpty(T) 만약 늦은 처리가 필요한 경우 Mono#fromSupplier 또는 just 내 defer를 사용 iterate 관련 array : Flux#fromArray collection 또는 iterable : Flux#fromIterable 정수 범위 : Flux#range 각 Sub..
추천하는 java backend developer roadmap 소개 자바 웹 서버 개발자(backend developer)가 되려는 사람에게 도움이 될까 싶어서 적어보는 글. 개발자 로드맵에 관련된 글은 참 많은데 그중에 괜찮은 글이 있어 짤막하게 소개하려고 한다. https://javarevisited.blogspot.com/2019/10/the-java-developer-roadmap.html The 2020 Java Developer RoadMap A blog about Java, Programming, Algorithms, Data Structure, SQL, Linux, Database, Interview questions, and my personal experience. javarevisi..