문제 인텔리제이의 Spring Initializr를 이용해서 JDK 21을 사용하는 스프링부트 프로젝트를 생성했다. 생성할 때 JDK도 잘 설정해 주었는데, 프로젝트 생성 후 서버를 띄워보려고 하니 다음의 에러가 발생하며 컴파일이 되지 않았다. 원인 원인을 찾아보자. 일단 Java 21을 지원하는 Gradle 버전을 찾아본다. https://docs.gradle.org/8.4/release-notes.html#support-for-building-projects-with-java-21 Gradle 8.4 버전부터 Java 21을 지원한다. gradle --version 위에 보이는 것 처럼, 컴퓨터에 설치된 gradle 버전은 Gradle 8.0.2 로 확인된다. 버전이 낮기 때문에 얼핏 보면 설치된 G..
전체 글 513
문제 다음과 같이 Apache Commons net을 이용해 FTP 접속을 하고 FTPClient ftpClient = new FTPClient(); FtpConfig ftpConfig = config.getFtp(); ftpClient.connect(ftpConfig.getHost(), ftpConfig.getPort()); ftpClient.login(ftpConfig.getUsername(), ftpConfig.getPassword()); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); setFileType을 해주지 않으면 다운받아온 파일이 깨진다 재귀적으로 파일 목록을 담도록 코드를 작성했다...
Intro 새로운 프로젝트 요청이 왔는데, Java 11 을 사용해 스프링부트로 프로젝트를 만들어야 하는 요구사항이 명시되었다. 그런데 스프링부트 3버전대의 등장 이후 2.x 버전으로 프로젝트를 생성한 적이 한번도 없었어서 이제야 알았는데 Spring Initializr 에서 스프링 부트 2.x 버전이 모두 제거되었다. 스프링 3.0 부터는 최소 JDK 요구 사항이 17이기 때문에 Spring Initialzr 에서는 이제 더이상 17 아래의 자바 버전들도 취급을 안해준다. 자바 버전은 17, 21만 선택 가능하다. 스프링부트는 2버전 선택이 불가능하다 당연하겠지만 start.spring.io 에 들어가서 생성하려 해도 마찬가지다. https://start.spring.io/ 이정도에서 끝나는게 아니고 ..
Intro HWPX 이야기 이 사건은 사용자가 요청하는 정보에 해당하는 HWPX 파일을 서버에서 실시간으로 만들어서 사용자가 다운로드 받을 수 있도록 제공하는 기능을 구현하던 중 발생했다. hwpx파일은 엑셀처럼 기본적으로 zip 파일로 되어 있어, 파일 확장자를 .zip으로 변경한 뒤에 압축을 풀면 내부 파일 구조를 확인 할 수 있다. Contents 폴더, META-INF 폴더, Preview 폴더가 있는데 그 중 Contents 폴더의 section0.xml 이 내용물을 담고있는 핵심 파일이다. 그런데 문제는 마음대로 바꾸고 싶은대로 바꾸면 한컴오피스에서 파일이 열리지 않았다. 줄바꿈, 탭문자등이 들어가면 어김없이 프로세스가 죽어버린다. 그들이 정의해놓은 포맷에 맞게 기입해야만 한다. 예) 줄바꿈 ..
Intro 맥북을 사용하면서 언제부턴가 와이파이로 연결된 상태에서는 한번씩 핑이 심하게 튀는 현상이 나타났다. 처음에는 Private relay를 의심했는데 비활성화 해도 고쳐지지 않았다. 그 다음으로는 공유기를 의심했는데, 어딘가에서 토렌트처럼 많은 커넥션을 물고 있을까 의심되어 공유기 내 모든 커넥션을 확인해봤지만 특이사항은 없었고, 공유기를 껐다 다시 켜도 여전히 같은 현상이 발생했다. 무엇보다 같은 와이파이내에서도 핸드폰으로 핑 테스트를 할때는 핑이 안정적으로 일정하게 잘 나왔다. 원인 찾아보니 AWDL 문제가 오래전부터 잘 알려진 이슈였다. AWDL은 Apple Wireless Direct Link의 약자로 애플 기기간의 통신에 사용된다. 즉, 주변에 아이폰이나 아이패드등의 기기가 있을 때 aw..