본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Java(자바)85

Java 배열로부터 엑셀, csv, 및 일반 text 파일 만들기 프로젝트를 진행하다 보면 80~90% 이상 고객들은 데이터베이스의 자료를 토대로 엑셀 또는 csv, text화 된 파일을 받기를 원한다. Javascript를 활용해서 프론트에서도 작업은 가능 한데..브라우저별 성능에 따라 해당 기능을 지원못하고 한글이 깨지는 경우가 있어서 아직까지는 서버에서 파일을 만든 이후에 전달하는 방법이 조금 더 나은 것 같다. csv나 text파일은 따로 라이브러리가 필요 없는데, 엑셀을 만드려면 아무래도 poi 라는 라이브러리가 필요하다. poi를 사용하지 않고 엑셀파일을 만들게 되면 윈도우 환경에서는 해당 파일이 잘 열리는데 맥이나 테블릿에서는 열리지 않을 수 있다. org.apache.poi poi 3.13 라이브러리 버전은 프로젝트에 맞게 맞추어 주자. 다음으로, 통합 .. 2019. 5. 17.
파일종류, Dos파일 / Unix파일 텍스트 파일(문서 편집기로 열 수 있는 파일형식)은 운영체제에 따라 조금씩 다르다. 유닉스 계열과 윈도우 계열에서 만들어진 파일의 행의 끝부분이 각각 OS에 맞게 나오는 것이 아니라 조금씩 다를 수 있다.(물론 매킨토시도 마찬가지다) - 유닉스/리눅스의 텍스트 파일은, 각 행의 끝부분이 16진수로 0A 라는 1개의 문자 - 매킨토시(MAC), 윈도우의 텍스트 파일은, 각 행의 끝부분이 16진수로 0D 라는 1개의 문자 이러한 파일들이 문서를 보거나 열때 깨지거나 문제가 발생 할 수 있다. 문서편집기는 문서에 대해 최적화 되어있어서 사실 상관없이 잘 열릴수가 있는데, 가령 해당 파일을 바탕으로 무언가 실행되는 프로그램이 존재한다면 해당 파일을 읽지 못하는 것이다. 아무튼..이러한 경우에는 통상적으로 rep.. 2019. 4. 25.
자바 기본 인코딩 (with 파일 입출력) 저장된 파일이나 Blob 형태의 데이터를 읽어들인 경우에 기본 인코딩은 설치된 Java 인코딩 설정에 의해서 영향을 받으며, Java의 기본 인코딩 설정은 OS에 의해서 영향을 받아서 UTF-8이 아닌경우가 종종 존재 한다. JVM이 동작을 하게되면 OS의 기본인코딩을 따른다고하니까..뭐..윈도우나 맥에서는 한글데이터가 그다지 깨지는 모습을 볼 수 없는데.. 특히 좀 옛날스러운 서버에서 파일을 읽은 경우 같은 코드임에도 불구하고 한글이 깨져서 나온다. 즉, 개발환경에서는 잘만 보이던 한글이 설치한 서버에서는 깨지거나 안보 일 수 있다. ByteArrayInputStream isr = new ByteArrayInputStream('Byte로읽어온파일데이터'); InputStreamReader inss = .. 2019. 4. 25.
Java 반응형 프로그래밍 요즘 함수형과 반응형 프로그래밍에 대해서 많이들 이야기가 나온다. MVC 패턴이나 디자인패턴 등 여러 개발방식은 어떠한 행위에 대해서 직접 접근해서 보기좋게 처리하는 것을 의미한다면, 그중 반응형 프로그래밍은 이벤트(행위,동작)가 발생하면 이미 정의된 기능(함수)이 알아서 처리하는 것을 의미한다. 반응형 프로그래밍은 비동기 데이터의 스트림을 프로그래밍 하는 것 이다. * 네..? 뭔말인지.. 어떠한 이벤트에 대해 그것에 대한 데이터 스트림을 만들고 그 스트림을 함수형으로 합성하고 생성하며 필터링 할 수 있는 방법을 의미한다. 그니까..데이터나 이벤트를 함수형 방법을 통해서 좀 더 쉽게 가공하고 처리 할 수 있는 개념이라고 생각하면 될 듯 하다. ReactiveX 홈페이지에 가면 그러한 반응형 기능을 잘 .. 2019. 4. 25.
자바 함수형 프로그래밍 2 람다식의 등장으로 자바에서도 편리하게, 보기쉽고 간결하게가 모티브가 되어 여러 기능들이 새롭게 계속 나오고 있다. 물론 함수형 프로그래밍 기법을 몰라도 코딩하는데 문제는 없지만. 저번에 사용한 기법은 인터페이스에 내장된 default 메소드를 통한 사용방법이었다면, 지금 소개할 내용은 Fuctnion이라는 인터페이스를 활용하는 방법이다. 기본적으로 람다를 알고 있어야 함수형 인터페이스르 이해 할 수 있다. 첫번째 함수 f는 String값을 받아 Integer형태를 리턴한다는 내용이다. 해당 함수를 구현하면 기본적으로 apply라는 메소드를 통해서 실행이 가능 하다. 함수에서는 반드시 리턴값이 존재하기 때문에 만약 void 형태를 구현한다면 Consumer를 활용하면된다. public class Main .. 2019. 4. 25.
Java Exception 기록하기 에러가 발생하면 통상적으로 printStackTrace를 사용하고는 한다. 그런데 해당 메소드는 void 타입으로 저장되어있는 메시지를 출력하는 용도로 쓰인다. 에러로그를 대충 기록하려면 getMessage 메소드에서 문자값을 가져오면 끝나지만 상세히 기록하는데는 별 쓸모가 없다. printStackTrace를 자세히보면 이름이 같은 오버로딩 형태의 메소드가 존재하는데..해당 메소드를 사용하면 메시지를 얻을 수 있다. catch (Exception e) { String res = ""; e.printStackTrace(); //출력 res += "----------*---------- 간단메시지 : " + e.getMessage(); res += "----------*---------- 이유 : " + .. 2019. 4. 25.