무료 Grid Solution을 찾다가 4.0으로 버전업이 되고 평이 좋아진 TOAST UI Grid (이하 TUI로..)를 설치해보고 프로토타이핑을 해보기로 했다. 개인적으로 생각하는 좋은 Grid란 최대한 Excel에 가깝게 표현이 되면 된다고 생각한다. 하지만! TUI는 CDN을 사용하거나 npm install을 통해 설치를 하는 방법만 가이드를 하고 어플리케이션에 라이브러리를 붙이는 설치 방법은 나와있지 않다. 위의 두 방법은 인터넷이 되는 환경에서 자유롭게 받아서 쓸 수 있지만 폐쇄망에서 개발을 해야 하는 개발자에게 개발환경을 배포를 할때는 적절하지 않다. 따라서 여기서는 npm install을 통해 설치를 하고 설치한 결과물을 어플리케이션에 붙이는 방법에 대해 가이드를 하겠다. TOAST UI..
springboot의 version을 2.1.x에서 2.3.x로 변경을 하는 작업을 하였다. 역시 version up에 따른 migration 작업은 호락호락하지 않다. 필자는 다른 곳에서는 아무런 문제도 없었지만 아래 코드부분에서 문제가 발생하였다. @Bean public RequestMappingHandlerMapping requestMappingHandlerMapping() { RequestMappingHandlerMapping handlerMapping = createRequestMappingHandlerMapping(); handlerMapping.setUseSuffixPatternMatch(true); handlerMapping.setAlwaysUseFullPath(true); handlerM..
솔루션에 사용되는 OSS version up을 하는데 만만치 않은 작업이다. 재수좋게 pom.xml 의 버전만 띡 올리고 잘 돌아가면 다행이지만 잘 되던 기능들이 안되는 경우도 종종 발생한다. 버전만 변경했을때 잘 되던게 안된다면 가장 먼저 취해야 할 액션은 migration guide를 보는 것이다. Springboot 2.1 > 2.2 migration 2.2 version을 간략히 설명하자면 Spring, Spring security의 version이 5.2로 올랐고 성능을 향상시켰으며 lazy init이 가능하고 JDK13 지원 정도 될것 같다. 자세한 설명은 아래를 참조하자. Dependency upgrades Spring Boot 2.2 moves to new versions of severa..
npm을 사용해야 할 일이 있어서 Windows PC에 Node.js를 설치해야 했다. 설치과정은 다음과 같다. 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 위의 사이트에 접속한다. Windows 설치형 파일인 .msi 파일을 선택한다. 30mb정도 된다. 다운로드를 다 받았으면 실행해준다. 위와 같은 화면들이 쭉 나올것인데 계속 Next를 눌러주면 된다. 설치가 다 끝났다면 cmd 창을 열어준다. Node.js가 정상적으로 설치되었는지 node -v 명령어를 통해서 확인해본다. 그리고 npm -v 명령어도 실행시켜서 npm을 사용할 수 있는 준비가 되었는지 확인하고 npm..
spring에서 사용할 수 있는 paging 방식은 여러개가 있다. JPA를 사용한다면 Pageable를 사용하여 간단하게 paging을 할 수도 있지만 JPA는 필자는 많이 사용하고 있지 않고 대부분이 MyBatis를 사용하므로 그에 맞는 Paging 방식인 PageHelpler를 사용하는 방식에 대해 소개를 하도록 하겠다. PageHelpler는 중국인이 개발했는지 소스를 보면 중국말로 주석이 작성되어 있다. 이것빼고는 다 괜찮은것 같다. 설정 및 구조 샘플은 springboot 2.1.1.RELEASE, java 1.8, h2database 기반으로 작성되었다. 구조 PageHelper 샘플을 구현한 프로젝트젝의 구조이다. 일반적인 springboot + maven 프로젝트의 모습이다. pom.xm..
Mobile기기에서 접속을 했는지 PC에서 접속을 했는지에 따라 화면을 달리 보여줘야 하는 상황이 있다. 이럴 경우 여러가지 방법이 있지만 JAVA 단에서 할수 있는 가장 간단한 방법에 대해서 기술하고자 한다. private static final String IS_MOBILE = "MOBI"; private static final String IS_PC = "PC"; public static String isDevice(HttpServletRequest req) { String userAgent = req.getHeader("User-Agent").toUpperCase(); if(userAgent.indexOf(IS_MOBILE) > -1) { return IS_MOBILE; } else { retur..
엑셀을 업로드할때 다음과 같은 오류가 발생하는 경우가 있다. [ERROR][com.oingdaddy.ExcelUploader.excelUploader:line116] - Excel import exception : Invalid header signature; read 0x736146202D2D213C, expected 0xE11AB1A1E011CFD0 - Your file appears not to be a valid OLE2 document, {} org.apache.poi.poifs.filesystem.NotOLE2FileException: Invalid header signature; read 0x736146202D2D213C, expected 0xE11AB1A1E011CFD0 - Your fil..
파일 업로드는 쉬운듯 쉽지 않고 항상 프로젝트의 이슈의 중심에 서있는것 같다. 갑자기 잘 되던 파일 업로드 기능이 안되는 문제가 생겼다. // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Configure a repository (to ensure a secure temp location is used) ServletContext servletContext = this.getServletConfig().getServletContext(); File repository = (File) servletContext.getAttribute("javax.servlet.cont..