목록Java (40)
준호씨의 블로그
요즘 groovy 조금씩 써 보는 중 보통 서비스 개발은 java, 간단한 툴이나 스크립트는 perl, python 등을 활용 하는 편인데 groovy 써보니 괜찮군. gradle 설정 하면서 살짝 써 보긴 했지만 groovy 로 운영 스크립트는 처음 짜 봄. 일단 java 라이브러리를 사용 할 수 있는게 큰 장점 사내 시스템 API 들은 보통 java API 를 우선 제공 하다보니 perl 이나 python 환경에서는 해당 API 를 활용 할 수 없는 문제가 있음. groovy 는 java API 를 사용 할 수 있어서 java 로 짜둔 코드를 스크립트로 간단하게 활용 가능 해 짐 아래는 파일 한줄 한줄 읽는 코드
list.txt 파일이 있고 다음과 같이 name 과 userid 가 있다.apple.king watch123 banana.brown ilovebanana grape.lee grape001name 과 userid 의 사이에는 공백이 있다. 이 공백은 스페이스 여러개로 되어 있거나 tab 으로 되어 있을 수도 있다. 이를 분리 해서 사용 할 때 쓰는 코드이다. split 함수는 기본적으로 정규 표현식을 제공 하고 있기 때문에 \s+ 로 split 하면 된다. 참고로 다음 예제에서 사용한 파일 한줄씩 읽는 코드는 java8 이상에서 사용 가능한 방법이다.
next 이용 하기 가장 무난한 방법. hasNext 로 값이 있는 지 확인 하고 iterator().next() 로 데이터를 구하면 된다. if (recipients.iterator().hasNext()) { Recipient recipient = recipients.iterator().next(); } loop 이용 하기 별로 좋은 방법은 아니다. 코드 가독성이 떨어진다. 아무튼 루프 돌아서 하나의 데이터만 가져오고 break 해서 나가면 된다. for (Recipient recipient : receivedMail.getRecipients()) { sb.append(recipient.getAddress()); break; // just use 1 person's id } 또 다른 방법이 있을까?
imap folder list 조회 할 때 보통 utf7 로 나오는데 이를 java 에서 decode 하는 방법이다. 다른 여러 좋은 라이브러리들이 있겠지만 gnu.inet 의 라이브러리를 사용 해 보자. 라이브러리는 https://maven-repo.evolvis.org/3rdparty/org/gnu/inetlib/1.1.1/ 에서 받을 수 있고 http://www.gnu.org/software/classpathx/inetlib/javadoc/index.html?gnu/inet/imap/UTF7imap.html 에 문서가 있다. maven 으로 바로 가져 올 수 있을 거 같은데 아직 찾지 못했다. UTF7imap class 에 static 함수로 decode 와 encode 가 있으니 따로 객체 생성 ..
요즘 자바로 서비스를 만들고 있는데 내부적으로 로그처리를 하는 경우가 많다. 로그에는 현재 서비스가 무엇인지를 알려주기 위한 ServiceId, 어느 함수에서 찍은 로그인지를 알려주기 위해 현재 함수명을 인자로 넘기고 있었다. 예를 들면 아래와 같은 방식이다. log.sysDebug(ServiceId, "execReadList", e.toString());execReadList라는 함수에서 로그를 남기면 두번째 인자로 "execReadList"를 직접 적어주고 있었다. 이렇게 하다보니 로그를 다른 함수로 복사할 때 부주의로 인해 실수(예를 들어 "execCreate"라 적힌 로그를 "execDelete"에 그냥 복사) 가 생기기도 하고 매번 함수명을 확인해야 되는 번거로움이 있었다. 그 단점을 보완하고자..