Programming
색상 거리 구하기(feat. CIEDE2000)
public class CIEDE2000ColorDistance { public static void main(String[] args) { // 예시 색상 A와 B double[] colorA = { 53, 80, 678 }; // L*, a*, b* values for color A double[] colorB = { 86, -40, -22 }; // L*, a*, b* values for color B // CIEDE2000 거리 계산 double distance = calculateDeltaE(colorA, colorB); System.out.println("CIEDE2000 거리: " + distance); } /** * lab1과 lab2 색상 거리 비교 * @param lab1 * @para..
[Spring Security] 수동 인증(강제 로그인)
Spring 프로젝트를 진행하다보면 정의되지 않은 폼을 통해서 인증 처리를 해주어야 하는 경우가 있다. 이럴 때 특정 인가된 정보를 SecurityContext에 수동으로 등록해주고 세션에 주입해주면 된다. @RequestMapping(value="login", method=RequestMethod.POST) public String login(HttpServletRequest request) throws Exception{ CustomUserDetailsImpl user = new CustomUserDetailsImpl(); // 수동으로 권한 설정 List roles = new ArrayList(); roles.add(new SimpleGrantedAuthority("ROLE_USER")); user..
[pdfbox] PDF 파일을 Image파일로 변환하는 방법
1. Dependency 추가 org.apache.pdfbox pdfbox 2.0.28 2. Sample Code import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; public class PdfToImage { public static void main(String[] args) { // PDF 문서 객체..
JAVA SHA-256 암호화 방법
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class SHA256Util { public static String SHA256Encrypt(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException{ StringBuffer hexString = new StringBuffer(); MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest..
Spring AOP를 활용한 모든 Request에 Log 남기기
Controller에서 RequestMapping된 모든 요청에 로그를 남기고 싶은데, 메소드 하나하나에 로그를 찍는 것은 너무 생산성이 떨어지기에 Spring AOP를 활용하여 로그를 남겼던 방법을 기록합니다. 1. Dependency 추가 org.springframework.boot spring-boot-starter-aop 2. @Aspect 클래스 작성 import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspe..
[Jasypt] Spring Boot 애플리케이션의 프로퍼티 암호화
Jasypt(Java Simplified Encryption) Spring Boot는 Spring Boot 애플리케이션의 속성 소스에 대한 암호화 지원을 제공합니다. Git의 public repository나 외부에 공개 되면 안되는 정보들을 암호화하여 탈취되는 것을 막기 위해 사용합니다. Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography works. Jasypt는 개발자가 암호화 작동 방식에 대한 깊은 지식..
[Apache VFS] SFTP 파일 업로드
공식 Document : Commons Virtual File System Apache Commons VFS – Commons Virtual File System Commons Virtual File System Commons VFS provides a single API for accessing various different file systems. It presents a uniform view of the files from various different sources, such as the files on local disk, on an HTTP server, or inside a Zip archive. commons.apache.org 1. Dependency 추가 org.apache.com..
[Maven] 라이브러리 Dependency 충돌 해결하기(Maven Tree)
Maven은 라이브러리 관리에서 유용한 도구입니다. 그러나 때로는 각 라이브러리가 참조하는 하위 라이브러리 버전이 충돌하는 경우가 있습니다. Maven에서는 각 라이브러리가 서로 다른 버전을 참조하고 있을 때는 maven tree 구조에서 root와 가장 가까운 라이브러리를 선택하여 빌드가 됩니다. Maven Tree 확인하기 Maven Tree를 사용하면 프로젝트에 필요한 다양한 라이브러리와 그들의 의존성 관계를 한눈에 파악할 수 있습니다. mvn dependency:tree 예를 들어, tika 라이브러리와 openhtmltopdf 라이브러리는 모두 pdfbox라이브러리를 참조하지만 각각 버전이 다른 pdfbox를 참조합니다. tika-parsers-standard-package -> pdfbox:2..