본문 바로가기

IT50

시간을 시간답게 다뤄주세요 - 시간차 계산시 주의점 쿼리로 시간차 계산시 날짜를 문자로 바꾼뒤 마이너스 연산한 값을 사용한 경우가 가끔 보이던데, 의외로 이같은 실수를 저지르는 개발자들이 상당히 있는데다가 오류가 쉽게 드러나지 않아 모르고 지나쳐버리는 경우도 꽤 많습니다. 하지만 이런 코드는 심각한 오류를 가지고 있으므로 반드시 수정되야합니다. 두 경우 모두 결과 값이 1로 나오길 기대하겠지만 두번째 경우는 41이라는 결과가 나오게 됩니다. 문자간 마이너스 연산시 오라클이 문자를 숫자로 취급하는데, 이때 숫자를 10진수로 처리하기 때문에 의도와는 달리 완전히 다른 계산 결과가 나와버린 것 입니다. 오라클에서 시간차를 구하려면 날짜간 마이너스 연산 후 단위를 변환해야 올바른 결과를 얻을 수 있습니다. (날짜차이, 달수 차이등은 이전 포스팅 참조하세요.) 2013. 8. 1.
누가 내 클래스패스에 QTJava를 둔거야? iOS7 베타를 깔기위해 오랜만에 iTunes를 켰다가 들뜬맘에 얼떨결에 퀵타임을 설치해버렸다. 이미 설치한거 지우기도 귀찮아서 내버려뒀는데, PC 재부팅후 이클립스를 실행하니 멀쩡하던 프로젝트가 에러를 뿜어내고 있는 것 아닌가? "QTJava? 뭐 이런 퀵타임스런 이름이 jre 에 있지???"했는데 진짜 퀵타임이 설치한 라이브러리임.. OMG! 근데 에러가 난 이유는 실제론 QTJava.zip 이 저기 나온 경로엔 없고 퀵타임 설치경로에 있기 때문이다. 다만, 퀵타임이 클래스패스까지 손을 대는 바람에... 결국 저런 참사가 벌어진 것이다. 맘대로 클래스패스 수정 할거면 제대로나 하지! 아무튼 구글링 좀 해봤더니... QTJava.zip 을 해당 경로에 둬라클래스패스에서 지워라하하!! 초짜 자바 프로그래.. 2013. 6. 12.
maven-resource-plugin: Filtering 메이븐 리소스 필터링?Filtering -> 흔히 '걸러내기'라고 이해하고 있기 때문에jar 패키징시 .properties 파일등을 빼내는 건 줄 알았지만 그것은 함정! 필터링의 진실을 다음 sample pom.xml 을 보면서 간단히 설명하겠습니다. 태그에서 db 접속정보가 들어있는 속성파일을 필터로 지정하면태그 아래서 filtering=true 를 통해태그와 태그로 지정한 (텍스트로 된)리소스안에 ${...}형식으로 되어 있는 표기된 부분이 필터로 지정한 속성파일안에 지정한 값으로 치환됩니다. 또, pom.xml의 properties 태그로 지정한 속성이나 maven의 기본 속성변수인 ${basedir}, ${project.build.finalName}등은 필터지정 없이도 사용 할 수 있어요. 단, .. 2013. 6. 7.
Reflection - 메서드 호출 성능 리플렉션을 이용하면 다른 클래스의 메서드 불러(invoke) 볼 수 있습니다. iBatis 로 데이터베이스에서 조회한 결과를 객체에 맵핑 할 때, 담을 객체만 정의해줘도 같은 필드명을 가진 속성에 들어가는 것도 이 방법을 이용한 것 입니다.(속도 문제로 현재는 다른 방법을 쓴다네요.) 일반적인 자바 프로그래밍이 할 수 없는 것을 할 수 있게 해주는 리플렉션이지만 흔히 성능이 나쁘다고 알려져있어 도대체 얼마나 느린지 테스트를 해봤습니다. 추가로 리플렉션 성능을 향상시키기 위해 동적으로 생성한 바이트코드를 사용하는 ReflectASM 와도 비교해 봤습니다. 1. 결과 리플렉션 함부로 쓰면 큰일나겠네요! (이미지를 클릭하면 500M 까지의 테스트 결과를 더 볼 수 있습니다.) 2. 테스트 코드 2013. 5. 3.