분류 전체보기 138

Custom tag 라이브러리 만들기

옛날엔 태그라이브러리를 사용하기 귀찮고 복잡?했다고 한다 지금은 간단히 쓸 수 있도록 JSTL이 업데이트 됐다. 사용법 두 가지를 설명하겠다. 1. 템플릿(jsp) user 객체의 id값으로 name을 받아오는 예제이다. ... taglib들 생략 태그로 출력한 EL태그로 출력한 ${value.name} 결과 >> 태그로 출력한 사자고양이EL태그로 출력한 사자고양이 ${value.name} 이렇게 쓸 수 있는 것은, tag 파일에서 attribute에 set을 해주기 때문이다 custom : prefix user : 태그 파일 이름 (여기서는 /WEB-INF/tags/user.tag 이다) returnColumn, id, var : 속성이다. 속성의 이름은 tag 파일에서 지정한다. 2. tag 파일(t..

개발/JSP 2013.04.09

Custom annotation 만들기 (Spirng AOP 이용)

예전 블로그에 올렸던거 슬슬 여기로 옮겨놔야지..다시 정리해본다ㅎㅎ 사용자가 만들어 사용하는 Custom Annotation은 어떻게 효과적으로 응용할 수 있는지 궁금할 것이다.인터넷에 예제도 별로 없고.. 내가 짠 것은 아니지만, Spring 프렘웍의 AOP를 이용해서 만든 커스텀 어노테이션 사용법에 대해서 정리하겠다 * AOP(Aspect Oriented Programming)이란? 먼저, OOP(Object Oriented Programming)의 경우, 객체 단위로 기능을 묶어서 코딩하는 방법이다.이런 구현방법이 단점이 될 상황이 있다. 사용자 인증을 항상 해야 한다고 하면, 객체마다 반복되는 코드가 생기게 될 것이다. 그래서 사용자 인증 같이 자주 사용되는 코드를 단위로 묶어서 필요할 때마다 삽..

개발/Spring 2013.04.09

linux] ssh 암호 생략하고 접속하기. ssh-copy-id

우리서버(이하 클라이언트)에서 타겟서버로 ssh 명령어를 통해 접근할 때, 암호를 입력해야 접근 가능하다.암호를 생략하는 방법에 대해 정리한다. RSA 암호키를 통해 암호를 생략할 수 있다.아래와 같은 과정을 통해 접속을 한다. 1. 클라이언트에 키를 생성한다. (private, public)2. 타겟서버에 public key를 복사해 놓는다. (public key는 여러서버에 복사해도 상관없다. private key가 핵심이기 때문에)3. 클라이언트에서 타겟서버로 ssh로 접속4. 타겟서버에서 public key로 암호화 된 정보를 클라이언트로 주면,클라이언트에서는 private key와 타겟서버의 public key로 해독한다.인증이 되면 암호 입력 필요 없이 접속 가능하다. 명령어들을 통한 예제를 ..

개발/ETC 2013.03.22

톰캣 실행시 OutOfMemory : permgen space, 톰캣 안켜짐

2주 전쯤, 급하게 개발할것이 있었는데 ㅠㅠ (급할 때마다 꼭 이클립스는 말을 안듣지...)로컬에서 톰캣 실행하는데 mapper 로그까지 뜨다가 중간에 멈추더니 안켜짐.. 분명 잘되는 A프로젝트에선 켜져서 잘 했었는데, 다른 프로젝트(B,C)에서 안켜지기 시작.잘되던 A프로젝트 톰캣을 켜보니 여기도 안켜지기 시작... 이것은 메모리 문제일 것이라는 촉이 왔음. 기존에 잘 되고있었기 때문에, 굳이 eclipse.ini 파일의 메모리 설정을 바꾸고 싶지는 않았다. 톰캣을 delete 하고 B,C 프로젝트를 다시 새로 세팅해서 해봤음.그래도 똑같음. 퇴근하라는 계시인듯해서 그냥 집에 감. 다음날 아침, mapper 로그까지 뜨더니 멈춘 뒤로, 20분동안 그냥 냅둬봤음.전날 저녁엔 별짓을 해도 안되더니 아침에 ..

개발/JAVA 2013.03.07

특정 날짜 하루에 해당하는 데이터를 찾을 때

아래 처럼 날짜를 text box에 입력 받는다. String으로 받아서 select * from 테이블 where dttm = '2013-02-15' 조회를 해보면 데이터가 원하는대로 나오지 않는다. 기본으로 '2013-02-15 00:00:00' 이렇게 들어있기 때문이다. (2월15일의 딱 열두시 00분 00초 인 데이터를 찾는것) 그래서 전에는dttm >= '2013-02-15 00:00:00' AND dttm DTTM >= #{dttm} AND DTTM dttm에는 2013-02-15 00:00:00.0 (타임스템프) 값이 들어있다.interval 1 day로 하루가 더해지면,2013-02-15 00.00.00.0 ~ 2013-02-16 00.00.00.0 사이의 데이터가 보여지게 되는 것이다. ..

개발/Spring 2013.02.15

linux] 메모리 관리에 관한 명령어들

서버가 툭하면 뻗고 서버끼리 종속이 되어있는 서비스를 맡고있는데서버상태 확인할때마다 쓰는 명령어들을 정리하겠다. 1) 웹서버에 Heap이 꽉 찼다!!(free, ps, kill 명령어) 메모리를 확인해야한다.free -m 을 쳐본다. $ free -m TotalUsedFree SharedBuffersCachedMemory2,056,9721,948,088108,884 0 211,0761,589,068-/+ buffers/cache147,9441,909,028 Swap1,052,2164,012 1,048,204 결과에서 -/+ buffers/cache 부분의 Used와 Free를 보면 된다.연두색이 실제 사용되는 메모리분홍색이 사용 가능한 메모리이다. 만약 free가 모자르다. 그러면 ,아래 명령어로 실행되..

개발/ETC 2013.02.07

도메인 객체에 Serializable 을 implements 하는 이유

내가 왕신입때 물어봤었던 질문이다.(지금도 쪼렙이지만...)왜 도메인객체에(혹은 DTO?) Serializable을 implements 하는지. public class User implements Serializable { private String name; private int age; private String info; // ... getter, setter} 사용하는 이유는 remote 서버에 전송을 할 때 사용한다. 클래스에 있는 필드 정보를 직렬화하여, 사용할 수 있게 하는 것이다.(직렬화 할 때 메소드는 포함하지 않는다고 한다.즉, 필드들만 직렬화 한다.) implements는 했지만 별다른 메소드를 구현할 필요는 없다. 실제 사용하는 예 중에는 memcached를 쓸 때였다.도메인 객체에..

개발/JAVA 2013.02.07

밀리세컨드 시분초로 변환하기, 소수점 밑에 버림

* 밀리세컨드 시분초로 변환하기 시 hours = (millis/(1000*60*60)) % 24 분 minutes = (millis/(1000*60)) % 60 초 seconds = (millis/1000) % 60 * 소수점 밑에 다 버리기 ${소수 - (소수 % 1)} * JSTL로 소수점 버림한 시분초 구하기 위에 두개를 응용해서 구할 것이다 ....${((millis/1000) % 60) - ((millis/1000) % 60) % 1} seconds에 밀리세컨드를 초로 변환한 것을 저장. 만약 53초라면, seconds에 53.0 형식으로 들어있다. .0을 날려버리기 위해, fmt:formatNumber를 사용한다.(어차피 set부분에서 소수점 밑에를 버림 해줬기때문에 의미없는 .0을 제거하는..

개발/JAVA 2012.12.18