가령 알럿창을 띄우거나 글을 입력 후 확인 버튼을 누를 필요 없이 엔터를 치면 실행되도록 하고 싶은 경우가 있다. 이럴 때 일반적인 확인 버튼 동작의 구현은 ActionListener를 통해 버튼에 액션이 일어나면 실행 KeyListener를 통해 해당 입력 필드에서 엔터 액션이 일어나면 실행이와 같이 2개의 구현을 하게 된다. 이에 대한 예제는 아래와 같다. public class BaseJFrame extends JFrame implements BaseJFrameInterface, ActionListener, KeyListener { //프레임을 생성할 내용들이 구현되고 //... ///아래와 같이 어떤 입력 필드에 대한 설정을 한다고 가정한다. private JPanel setLoginTextFie..
setSize를 하는 방법 아래와 같은 방법이 있다. setSize(Dimension d) //또는 setSIze(int width, int height) 위 set메소드를 이용하여 applicationContext에서 선언을 하여 호출하면 아래와 같은 에러가 발생한다. Bean property 'size' is not writable or has an invalid setter method. setter getter를 이용하기 위해서는 size라는 변수가 있어야 하지만 JFrame에서는 단순히 크기를 세팅해주기 위한 helper 메소드 이기 때문에 이를 이용한 프로퍼티 설정은 불가능하다. 하지만 사이즈를 선언하기 위한 또다른 방법으로 setPreferredSize라는 메소드가 있다. 이는 preferr..
두 라이브러리는 객체에 대한 확장을 지원한다. a라는 이름의 객체가 있다고 하면 (new를 사용하건 JSON이건간에) 다음과 같이 a객체를 확장한다. prototypejs의 경우 prototype이란 이름에 걸맞게 Object에 extend를 구현하여 apply 함수를 통해 확장을 지원한다. Object.extend(a, 확장객체); jQuery의 경우 $ 셀렉터에 선언된 extend 함수를 통해 확장을 지원한다. $.extend(a, 확장객체); 확장 객체는 원하는 대로 사용하면 된다. //일반 객체의 경우 function B() { this.bValue = "값"; this.bMethod = function() { return "메소드결과"; }; } //위 생성자 함수에 대한 생성객체인 new B(..
컨벤션 문서 모음 코드 컨벤션 : http://java.sun.com/docs/codeconv/ JST 코드 컨벤션 : http://java.sun.com/developer/technicalArticles/javaserverpages/code_convention/ 한글 문서 : http://okjsp.pe.kr/doc/jspCodeConvention.html 프로젝트 컨벤션 : http://java.sun.com/blueprints/code/projectconventions.html 네이밍 컨벤션 : http://java.sun.com/blueprints/code/namingconventions.html JDK 6 한글 문서 : http://xrath.com/javase/ko/6/docs/ko/ JAVA..
db에 시간에 대해 저장할 때 datetime과 unixtime 두 가지 방식 중 하나를 이용하여 저장한다. 다음과 같은 query가 datetime 컬럼에 대해 실행되면 어떻게 될까? INSERT 테이블 (날짜컬럼) values(0) 위의 경우 datetime 형식 컬럼에는 '1900-01-01 00:00:00.000'이 저장된다. 만약 int값을 0이 아닌 값으로 실행하면 어떻게 될까? INSERT 테이블 (날짜컬럼) values(1) 위의 경우 datatime 형식 컬럼에는 '1900-01-02 00:00:00.000'이 저장된다. 즉 숫자형의 값을 datetime 컬럼에 입력하면 '1900-01-01 00:00:00.000'을 기준으로 day가 증가 또는 감소한 값이 저장된다. unixtime은 ..
ITC 출판사의 웹사이트 최적화 기법 - UI 개발자를 위한 필수 지침서 위 책을 보면서 몇가지 괜찮은 것들을 알게 되었네요. (이미 알고 있거나 애매한 부분들에 대한 정리가 되어 좋았습니다.) 그 중 몇가지를 아래 소개합니다. 좀더 자세한 내용은 책을 참고하면 좋을 듯 하네요. 1. StyleSheet는 헤더에 넣어라. display가 되기 전에 해당 스타일이 지정이 되어야 한다. 만약 display가 된 이후 스타일이 지정이 되면 화면이 재 로딩이 되어야 하기 때문에 그만큼 리소스가 낭비된다. 2. JavaScript는 아래에 넣어라. function안에 존재 하지 않는 JavaScript 함수와 변수는 페이지가 로딩되면서 바로 호출이 된다. 따라서 페이지가 로딩되면서 호출되는 JavaScript가 ..
어떤 테이블의 varchar 타입 컬럼을 검색하는 SP를 작성할 경우 아래와 같이 작성하곤 한다. CREATE PROCEDURE [dbo].[searchA] @searchColumnA NVARCHAR(12) AS SET NOCOUNT ON SELECT * FROM A WITH (READUNCOMMITTED) WHERE columnA = @searchColumnA 이 쿼리를 직접 테스트 할 때 이상없더라도 SP로 호출하면 급격히 느려질 수 있다. 이유는 varchar로 된 고정 길이의 columnA을 검색하기 위해 입력한 @searchColumnA에 대해 매번 테이블을 조회하는 경우 CONVERT 과정이 더해지기 때문이다. 이는 데이터 형식의 선행 규칙에 의해 이루어지며 자세한 내용은 아래 링크를 통해 알..
공식 사이트 http://ibatis.apache.org/ SqlMaps 한글 문서 http://svn.apache.org/repos/asf/ibatis/trunk/java/ibatis-2/ibatis-2-docs/ko/ JavaDoc http://ibatis.apache.org/docs/java/user/ 찾기 편하라고 적어봅니다.
enum type을 사용하다 보면 열거값을 체크하기 위해 다음처럼 사용하는 경우가 많다. public class B { public enum Test { AA("aa", "a의 설명") , BB("bb", "b의 설명") , CC("cc", "c의 설명") , DD("dd", "d의 설명") , EE("ee", "e의 설명") , FF("ff", "f의 설명") , GG("gg", "g의 설명") , HH("hh", "h의 설명"); private String name; private String description; Test(String name, String description) { this.name = name; this.description = description; } public Strin..
브라우저는 처음 호출된 페이지의 반복성 파일들(image파일, js, css파일)을 사용자의 로컬 디스크에 임시 인터넷 파일로 저장하고 재 호출시에 저장된 파일을 불러들여 사용하게 된다. 매번 같은 파일을 다운로드해야하는 불편함을 줄여주는 좋은 기능이지만 만약 js파일이 시시각각 달라지는 내용을 담고 있는 경우 호출을 어떻게 해야할까? 이런 경우 파일의 뒤에 요청하는 파라메터의 값을 매번 바꾸어주면 된다. 위의 코드가 너무 길다면 아래와 같이 써도 무방하다. "); d라는 이름의 파라메터로 매번 변하는 시간을 값으로 요청을 하면 매번 브라우저는 js파일을 새롭게 갱신하게 된다. 굳이 파라메터의 이름이 d일 필요는 없다. 주의해야 하는 점은 위와 같이 사용한 경우 아래와 같이 브라우저는 인식하게 된다. 따..