개발 20

맥OS 이클립스 에러 - The JVM shared library does not contain the JNI_CreateJavaVM symbol

맥에서 이클립스 (또는 전자정부) 실행시 나오는 에러 입니다. 에러 내용 The JVM shared library "/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/bin/../jre/lib/server/libjvm.dylib" does not contain the JNI_CreateJavaVM symbol. 원인 M1, M2에서만 문제가 발생합니다. (인텔칩은 해당 없음) 오라클 JDK를 ARM 버전으로 옳바르게 설치해도 이유는 모르지만 에러 납니다. 해결방법 temurin jdk를 설치하면 됩니다. 저는 처음 들어보는데 이클립스 재단에서 진행한 프로젝트라고 하네요. jdk 설치하고 나서는 JAVA_HOME 환경변수 설정하고, 이클립스의 Inf..

개발 2023.10.12

자바스크립트 ES6 템플릿 리터럴 JSTL과 같이 사용방법

템플릿 리터럴은 자바스크립트 ES6 문법에서 추가된 기능 입니다. ​ 기존 (ES5) var a = 5; var b = 10; console.log('Five is ' + a + ' and\nnot ' + (a + b) + '.'); ​ 템플릿 리터럴 (ES6) var a = 5; var b = 10; console.log(`Five is ${a} and not ${a + b}.`); ​JSTL과 같이 사용하기 ${} 문법은 JSTL에서도 사용되는 문법이기 때문에, 템플릿 리터럴로 인식되는 것이 아니라 JSTL로 인식 합니다. 그래서 아래와 같이 사용해야 합니다. var a = 5; var b = 10; console.log(`Five is ${'${a}'} and not ${'${a + b}'}.`);

개발 2023.01.08

자바 JNI 사용시 이클립스 스프링 톰캣 java.library.path 설정 방법

이클립스 개발환경, 그리고 스프링 웹서비스에서 JNI를 사용하는 경우 java.library.path 위치 (dll 파일 위치)를 지정해 주는 방법 입니다. ​ - 스프링 웹서비스 이기 때문에 톰캣으로 구동이 되니 톰캣 VM arguments에 지정 되어야 합니다. 톰캣 Arguments에 -Djava.library.path=경로 설정 ​ - Java Build Path에서 Native library location 설정하는 방법은 되지 않았습니다. (X) ​ - C:\Windows\System32 경로에 dll 복사하는 방법도 되지 않았습니다. (X) ​ - 환경변수 Path에 dll 경로 추가하는 방법도 되지 않았습니다. (X)

개발 2022.12.09

스프링 mybatis 폐쇄망 dtd 문제

현상 폐쇄망에서 WAS 기동시 외부의 mybatis-3-config.dtd 파일을 불러 오지 못하고 오류 발생 ​ 로그 Caused by: org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [sqlmap/sql-mapper-config.xml]; nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.net.ConnectException: 연결 시간 초과 (Connection timed out) ​ 분석 정상적이라면 dtd 파일은 mybatis-x.x.x.jar 파일안에 있는 ..

개발 2022.11.29

HSTS 오류 - Strict-Transport-Security 헤더에 오류가 감지됨

보안취약점으로 Strict-Transport-Security 헤더에 오류에 대한 해결방법입니다. 일반적인 경우에는 이 문제가 나오지 않을테지만, 스프링시큐리티 사용하는 경우에 발생 합니다.​ ​ 원인 HTTP 헤더를 확인해보면 HSTS 헤더값에 preload가 빠졌습니다. preload까지 들어가야 표준에 맞나 봅니다. ​ 정상 Strict-Transport-Security: max-age=31536000; includeSubDomains; preload ​ 오류 Strict-Transport-Security: max-age=31536000; includeSubDomains ​ 해결 스프링시큐리티 소스인 HstsHeaderWriter.java 에 빠뜨린 preload 값을 넣어줬습니다. 그리고 HstsH..

개발 2022.08.06

스프링 빈 전역변수는 thread safe 한가?

남이 짜놓은 코드를 이어받아 보고 있는데, 스프링 컨트롤러에 전역변수들이 나옵니다. 일반적으로 이런식으로 코드 작성을 하지 않아서 깊게 생각해 보지 않았는데, thread safe 문제 부터 떠오릅니다. ​ 테스트 코드로 테스트 해보았습니다. 테스트 코드 @Controller public class TestController { // num이라는 전역변수는 thread safe한가? int num = 0; @RequestMapping("/test.do") public String selectMode(HttpServletRequest request, ModelMap model) throws Exception{ model.addAttribute("num", num++); return "test"; } } 결..

개발 2022.07.20

자바스크립트 유니코드 정규식

유니코드 체크 정규식 아스키코드(로마자)와 한글을 제외한 유니코드 구간을 정규식으로 설정 합니다. // 로마자 : 0020(공백)-007F(DEL) // 한글 : 1100-11FF(옛한글) // 한글 : 3130-318F(자음,모음) // 한글 : AC00(가)-D7A3(힣) var regExpUnicode = /[\u0000-\u001F|\u0080-\u10FF|\u1200-\u312F|\u3190-\uABFF|\uD7A4-\uFFFF]/g; 문자열에 유니코드가 있는지 체크 방법 if(str.match(regExpUnicode) != null) { alert('유니코드 포함됨'); } else { alert('유니코드 포함안됨'); } 문자열에 유니코드가 있는 경우 공백으로 치환 방법 str = str..

개발 2022.07.09