월급쟁이인 관계로 설렁설렁 일을 하고 있던 와중에 스트럿츠2를 프레임워크로 사용하고 있는 시스템에서 scheduler를 생성할 일이 생겼습니다. Spring 프레임워크 기반이 아니라서 Spring에서 처럼 간단하게 어노테이션으로 처리할 수 없어서 열심히 구글에서 검색을 해봤습니다. 검색을 해보니 Quartz2라는 라이브러리를 통해서 만들라고 하더군요. 그래서 Quartz2를 기반으로 한 scheduler를 만들어 냈습니다. 생각보다 간단했습니다. 일단 Struts2는 기본적으로 있으실거라고 생각하고 Quartz2 라이브러리부터 받아보도록 하겠습니다. 1 2 3 4 5 6 org.quartz-scheduler quartz 2.1.5 cs Maven으로 라이브러리를 관리하고 있으시다면 pom.xml 에 다음..
관리자 ID일 경우 로그인 할 때 사외 IP로 접근 시에 로그인이 되지 않도록 해둔 로직이 있었는데, 어느 순간부터 사내에 있는 PC로 접근했는데도 로그인이 되지 않는 일이 발생했습니다. 문제를 찾아보니 웹 서버에 접근할 때 L4(Load balancing)이나 Proxy 서버 등을 사용할 때 request.getRemoteAddr(); 로 IP를 가져오면 Client IP가 아니라 L4나 Proxy 서버의 IP를 가져오는 것을 알 수 있었습니다. 이런 장비들의 경우 Client IP를 Header에다가 남겨둔다고 합니다. 따라서, Client IP를 가져오기 위해서는 다음과 같은 로직을 사용해야 합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2..
일을 하고 있던 와중에 배열에서 value 값을 찾아서 삭제해야 하는 경우가 생겼습니다. 그래서 열심히 구글링을 해보니 아래와 같은 방법이 있었습니다. 12345678910111213141516171819202122232425262728293031Array.prototype.remove = function() { var what, a = arguments, L = a.length, ax; while (L && this.length) { what = a[--L]; while ((ax = this.indexOf(what)) !== -1) { this.splice(ax, 1); } } return this;}; var ary = ['three', 'seven', 'eleven']; ary.remove('sev..
가끔 일하다보면 결과값이 여러개가 나온 쿼리 중에 하나 만을 골라야할 때가 있습니다. 그런데, 하필 불행하게도 후진 프레임워크를 맞이하게 되었거나 불가피하게 SQL문의 결과로 나온 결과값을 Map에 담지 못했다고 가정해 보겠습니다. 이럴 때면 여러 조건들을 추가해서 나오는 결과값을 줄여주거나 DISTINCT를 통해 중복값을 없애주거나 ROWNUM을 넣어서 결과값이 SQL문으로 감싸 그 중 ROWNUM값이 1인 것을 선택해주는 방식이 있을겁니다. 지금 제가 적으려는 방식은 ROWNUM을 컬럼에 넣지 않고 바로 ROWNUM을 사용하는 방식입니다. 1SELECT * FROM JOBS WHERE ROWNUM = 1 ORDER BY MAX_SALARY;cs 이런 식으로 사용하면 ROWNUM을 컬럼에 넣지 않고도 ..
- Total
- Today
- Yesterday