오라클(Oracle)에서 17버전부터는 NFTC(No-Fee Terms and Conditions)라는 새로운 라이센스를 내세우면서 무료로 사용이 가능하다는 것을 내세웠지만, 사실상 이는 무료의 사용 기간을 길게 한 것일뿐 무료 사용이 끝나는 기간에는 유료 결제를 해야 한다. 물론 자바의 버전을 계속 변경하다보면 사용이 가능할 것도 같지만, 문제의 여부를 테스트 해봐야 하고 수많은 서버가 있는 곳에서 이런 작업은 더욱 피곤하게 만든다. 그래도 다행인 것은 Java21이든 Java17이든 유료 라이센스에 영향을 주는 것은 운영서버 즉, 배포를 하는 환경일 뿐 개발자 환경에서는 OracleJDK로 하든 OpenJDK로 하든 상관이 없는 것으로 보인다. 처음에는 OpenJDK로 설치를 하여 진행하려고 했지만,..
자바로 파일을 복사하는 3가지 방식을 설명해보도록 하겠습니다. 이것 이외에도 다양한 라이브러리를 사용해서 복사하는 방법들이 있지만, 아래의 방식만 알아도 큰 문제는 없을거라 판단해서 3가지를 선정해보았습니다. 1. FileInputStream/FileOutputStream 방식 우선 가장 고전적인 방식으로 InputStream, OutputStream 을 사용하여 byte를 복사하는 방식입니다. public static void main(String args[]) { String orgFilePath = "D:/test_copy/original.jpg"; String outFilePath = "D:/test_copy/copy.jpg"; System.out.println("status -> " + file..
Java에서 List 데이터의 값으로 오름차순을 하거나 내림차순을 하는 방법은 최하단 포스팅을 확인하시면 되며, 여기서는 데이터를 저장한 순서를 뒤집는 방법을 설명해보고자 합니다. 데이터 세팅 public static void main(String[] args) { String[] arrs = {"삼성전자","테슬라","비트코인","펄어비스","코카콜라"}; List list = new ArrayList(Arrays.asList(arrs)); System.out.println("리버스 이전 리스트 -> " + list.toString()); } # 리버스 이전 리스트 -> [삼성전자, 테슬라, 비트코인, 펄어비스, 코카콜라] 오늘은 주식이 우울한 관계로 떡상하자는 마음에 주식 종목들과 암호화폐 종목을 리..
Java에는 Http 상의 데이터 즉, URL 기반으로 파일을 download할 수 있는 다양한 라이브러리들이 있고, 기본 버전으로도 제공을 하고 있다. 본 포스팅은 3가지의 대표적인 방법들을 모두 써보고 비교하여 성능을 점검해보도록 하였다. 고전적인 방법 public static void fileDown(String url, String fileName) throws MalformedURLException, IOException { BufferedInputStream in = null; FileOutputStream fout = null; try { in = new BufferedInputStream(new URL(url).openStream()); fout = new FileOutputStream(f..
Maven으로 프로젝트를 만들게 되면, 기본적으로 Java 버전이 1.5를 사용하게 된다. 현재 카프카를 테스트 하기 위해 만들어진 임시적인 Maven 프로젝트를 기준으로 설명을 하게 되면... 현재 Pom.xml 4.0.0 kafka test 0.0.1-SNAPSHOT kafka-test jar http://maven.apache.org org.apache.kafka kafka-clients 2.6.0 이와같이 Pom.xml에는 그 어디에도 Java를 지정한 곳이 없다. 이건 아무래도 IDE에 따라 다를거라 판단되는데 필자가 사용한 Eclipse 혹은 전자정부프레임워크(이놈도 사실 eclipse)에서 maven java project를 생성 후 simple모드를 할 경우 java 버전을 별도로 설정하지..
Math.round 방식 double a = 12.3456789; System.out.println(a*100); 1234.56789 System.out.println((double)Math.round(a*100)); 1235.0 System.out.println((double)Math.round(a*100)/100); 12.35 자바의 대표적인 수학모듈인 Math는 다양한 소수점을 처리하는 기능도 제공한다. Math.round를 쓰게 되면, 소수점 위치에 반올림하게 되는데 원하는 위치를 반올림을 하기 위해서는 별도의 인자값을 넣는 것이 아니라 위 소스처럼 그만큼의 소수점을 Shift해야 한다. 즉 2자리까지 보여주고 반올림을 하고 싶을 경우 우선 현재 값에 100을 곱하고, Math.round를 쓰면 ..
영상에서 썸네일을 자동으로 추출하여, 썸네일을 만들거나 이미지 파일을 분석하는 방법을 활용할 수 있을 것이다. 필자는 썸네일의 용도보다는 주기적으로 영상에 이미지를 추출하여 사진을 분석하는 용도로 사용하기 위해서 구글링을 하게 되었다. 다양한 방법이 있고, 라이브러리마다 성능의 차이는 있을 수 있다. 예를 들어 좀 더 복잡한 방식은 더 높은 성능을 자랑할 수 있다. 단순한 라이브러리는 상대적으로 낮은 성능(ex: 추출 속도)을 보여줄 수 있지만 이미지를 수집하는데 큰 지장이 없기에 이번에는 쉬운 방법의 썸네일을 추출하는 라이브러리를 소개하고자 한다. Maven 설정 Java 기반이며 필자는 Maven 기반으로 프로젝트를 생성하였다. 라이브러리는 "jcodec"이라는 라이브러리를 활용하였는데 아래 2개의 ..
자바 프로젝트를 수행 중, 로그성 데이터를 읽거나 프로퍼티등을 읽거나 라인별로 읽어야 프로젝트 수행이 원활 할 때가 있다. 기본적으로 많이 쓰이는 방식이 FileReader를 BufferedReader에 담아서, readLine 메소드를 활용하는 방법이다. FileReader에는 기본적으로 read 메소드(Byte별로 읽는 방법)는 있지만, readLine 메소드(라인별로 읽는 방법)는 없기에 로그성 데이터를 읽기에는 용이하지가 않다. Scanner 메소드는 대용량의 로그 데이터를 제대로 읽지 못하는 결과를 보여줬다. 처음에는 너무 빨라서 놀랐지만, length를 호출해보니, 적은 양의 파일을 읽고 있었다. 대상로그 로그치곤, 용량이 꽤 많다. 현재 운영중인 프로젝트의 로그를 대상으로 테스트 해보았다. ..
시스템 아키텍처 문서를 작성하면서, 전자정부 프레임워크에 대해서도 문서를 작성하게 되었다.(고객의 교육 요청) 해당 문서는 전자정부프레임워크 사이트http://www.egovframe.go.kr를 참조하여 만들었으며, 거의 내용이 동일하다. 1.1. 전자정부 표준프레임워크 아키텍처전자정부표준프레임워크는 전자정부법 및 관련 법률을 근거하여 구축되었으며 본 프로젝트는 표준프레임워크 및 프레임워크가 제공하는 기술기반을(기술적용계획표) 따른다. 전자정보 표준프레임워크 각 구성요소 기능 및 역할은 아래와 같다. 1.2. 전자정부 표준프레임워크의 주요 특징 실행환경 경량화 : 하나의 파일로 일괄 배포 및 설치되던 실행환경을 필수적 부분과 선택적 부분으로 나누어 배포하여 각 사업에 적합한 최적의 실행환경 구성- 실행..