2019년 11월 18일 월요일

중국어로 기록된 파일이 깨져서 표시될 때


중국 고객사에서 로그 파일을 보내왔는데 받아서 열어보니 깨져서 알아볼 수가 없다. 이런 식이다.

橙깊극伎槨왕鹿豚冀警속늪죗

인코딩을 유니코드나 UTF-8로 변환해도 표시가 안되는 것을 보면 윈도우에 중국어 언어 패키지를 따로 설치해야 하는 것 같다. 번거로운 과정이다.

다행스럽게도 구글 번역기에서 문서 번역 기능을 제공하고 있다. 아래 주소로 들어가서 문서 파일을 업로드하면 원하는 소스에서 타겟으로 말끔하게 변환해준다. 구글에서 지원해주는 확장자는 .doc, .docx, .odf, .pdf, .ppt, .pptx, .ps, .rtf, .txt, .xls, .xlsx로 거의 모든 문서 형식을 지원하고 있다.

https://translate.google.co.kr/#view=home&op=docs&sl=en&tl=ko


2019년 11월 11일 월요일

Java 정렬, Collections.sort()

Java에서 정렬은 java.util.Collections의 static 메서드 sort()를 이용하는 것이 가장 편리하다.
아래의 두가지 sort() 메서드가 제공된다.

  • static <T extends Comparable<? super T>> void sort(List<T> list)
  • static <T> void sort(List<T> list, Comparator<? super T> c)

첫 번째 메서드는 정렬의 대상이 Comparable 인터페이스를 구현하고 있어야 한다. (참고: Java 제네릭에서는 매개변수화된 타입에 제약조건을 줄 때 extends와 implements를 퉁쳐서 extends 하나의 키워드를 쓴다.) Comparable 인터페이스를 구현하는 것은 어렵지 않은데 int 값을 반환하는 compareTo 메서드 하나만 구현하면 된다.

두 번째 메서드는 Comparator 인터페이스를 구현하고, 이를 인자로 넣어주는 방식이다. 사용자 타입이라든가 기본적으로 Comparable을 구현하고 있는 String과 같은 타입에 대해 다른 방식의 정렬 기준을 지정하고 싶을 때 쓰면 된다. Comparable과 유사하게 int 값을 반환하는 compare 메서드를 구현해야 한다.

반환 값은 C언어의 정렬 방식과 같이 두 비교 객체가 같으면 0, this가 인자보다 크면 1(양의 정수), this가 인자보다 작으면 -1(음의 정수)를 지정해주면 된다.