2012년 1월 13일 금요일

이벤트 핸들링 DOM0과 DOM1활용하기

<html>
<head></head>
<body>Test
<input type='button' onclick='(function(el){eventHandler.apply(el,arguments)}(this))' value='click' />
<script>
eventHandler = function(){
this.onclick = function(e){
console.log(e);
};
this.click();
};
</script>
</body>
</html>

대게 보통 onclick을 통해서 html 에서 해당 함수를 넣어 마우스 클릭시 이벤트를 생성하는 소스코드는 비록 추천하는 개발방식이 아닌데도 엄청 많이 사용되고 있습니다.
그래서 혹시 event 객체를 얻기 위해서 고생을 해야 하는데 위에서 DOM0을 DOM1로 변경해서 event 객체를 얻었습니다.  사파리 IE에서는 window.event객체를 얻어오면 되긴 하지만 이는 표준이 아닌라서 파폭에서는 작동을 안한다는 문제가 있죠.

2011년 12월 27일 화요일

자바스크립트


부제를 정하지 못해서 그냥 안썼습니다.
죄송합니다. 제 지식이 너무 얕아서 무엇이라고 정해야 할지 몰르겠습니다.
그럼 시작하겠습니다.
오늘 공부를 하다가 깨닭은 바가 있어서 정리를 합니다. 그리 거창하고 대단한것은 아니지만
자바스크립트에 한발 더 다가갈 수 있을 꺼 같습니다.
보통 객체 지향적으로 자바스크립트를 코딩할때
var C = function() {
var x = 'txt';
this.getX(){
return x;
};
};
var c= new C();
또는
var C = function(x) {
this.x = x;
}
C.prototype.getX(){ this.x; };
var c = new C('txt');
이렇게 씁니다.
저는 이것을 가지고 깊은 생각을 했습니다. 왜 그렇게 쓰는 것일까?
책을 찾아보던 중 new라는 전치 연산자에 대해서 나옴니다.
new를 쓰고 뒤에 함수쓰고 해당 함수 안에 return문이 없으면 해당 this를 반환한다.
즉 var c= new C(); 이건 객체를 생성하고 해당 this를 반환한다는 의미라는 것입니다.
또한 우리가 객체를 편하게 생성할때,
var c = new Object();를 사용해도 되고,
var c = {};라고 해도 됩니다.
좀 산으로 갔군요. 다시 원위치로
그럼 var c는 해당 객체에 대한 주소(? 확신이 없음)값 비스무리한것을 가지게 됩니다.
그래서 안에 있는 메소드를 참고할 때는 c.getX() 이러면 해당 메소드를 불러낼 수 있습니다.
즉 요런 느낌이 들면 됩니다. c가 가리키고 있는 메모리 영역으로 가서 그 안에 있는 getX() 메소드를
실행해라.
여기서 전 또하나의 의문이 들었습니다.
var f = function(){};
f.a = function(){};
이게 되는냐에 대한 의문입니다.
f는 Object가 아니니까 안되지 않을까 생각도 했지만.. 실행하면 너무나 자연스럽게 실행됩니다.

2011년 11월 9일 수요일

나란나 누구인가?

▩ INTP 아이디어뱅크형 ▩
조용하고 과묵하며 논리와 분석으로 문제를 해결하기 좋아한다.과묵하나 관심이 있는 분야에 대해서는 말을 잘하며 이해가 빠르고 높은 직관력으로 통찰하는 재능과 지적 호기심이 많다. 개인적인 인간관계나 친목회 혹은 잡담 등에 별로 관심이 없으며 매우 분석적이고 논리적이며 객관적비평을 잘 한다. 지적 호기심을 발휘할 수 있는 분야 즉 순수과학, 연구, 수학, 엔지니어링 분야나 추상적 개념을 다루는 경제, 철학, 심리학 분야의 학문을 좋아한다. 지나치게 추상적이고 비현실적이며 사교성이 결여되기 쉬운 경향이 있고, 때로는 자신의 지적 능력을 은근히 과시하는 수가 있기 때문에 거만하게 보일 수 있다.

▒ 일반적인 특성 ▒

  • 행동하기 보다 책을 통해서 배운다. (책중독)
  • 높은 직관력으로 통찰하는 재능과 지적관심이 많다
  • 조용하고 말이 없으나 자기의 관심 분야에서는 말을 많이 한다
  • 정서표현이 별로 없어 친해지기 전에는 이해하기 어렵다
  • 기분이나 감정도 생각을 통해서 한다
  • 지나치게 지적이고 추상적이며 설명이 너무 이론적이다
  • 황당무게한 공상을 잘 한다
  • 비현실적이며 비약이 심하다
  • 타인에게 별로 관심이 없다
  • 생각은 창의적인데 실천이 부족하다
  • 조직이나 단계, 계통 등에 약하다
  • 충동적이다
  • 매뉴얼 보기 싫어한다
  • 정장을 싫어한다
  • 패션감각이 둔하다
  • 드라마, 한국영화 잘 안 본다
  • 뻔한 이야기나 서론이 긴 것 참기 어렵다
  • 주관이 뚜렷하고 자신은 합리적이라 생각한다
  • 꼭 필요한 것 아니면 잊어버린다. (건망증)
  • 머릿속에 있다가 막판에 후다닥 일 처리를 한다
  • 한끼 떼우면 된다
  • 남들 좋아하는 연예인, 악세사리 등에 관심 없다
  • 추리소설 좋아한다
  • 잡담 모임 후에는 허무감을 느낀다
  • 친한 친구라도 일 없으면 연락 안다
  • 공상과 상상속에 있을 때가 많다
    ▒ 개발해야할 점 ▒
  • 타인의 노력을 인정하는 태도 필요
  • 팀으로 하는 일에 적극적으로 뛰어들 필요가 있다
  • 생각보다 종이에 적어보고 정리해 보는 연습이 필요
  • 2011년 5월 25일 수요일

    자바 정규식

    자바로 정규식을 만들때 안에 내용중 특수문자를 일반 문자로 바꾸기
    예)
    . -> \.

    String str = 123.23.3.34
    str.replaceAll("([\\]\\[\\^\\-$()*+.?{|])","\\\\$1");

    만든 이유..
    원하는 정규식은 특수문자 앞에 \기호를 부착하여 정규식 특수문자가 아닌 일반문자로 만들고 싶었다.
    구글링을 많이 해봤지만 내가 원하는 정규식을 찾기 어려웠다.

    2010년 12월 15일 수요일

    Ant 테스크 -mkdir,copy,delete,genkey,signjar,war,tstamp

    • mkdir
     속성 설명 타입 필수 여부
     dir 생성할 디렉토리
     File 예

    • copy
     속성 설명 타입 필수 여부
     file 복사할 파일
     File 예
     tofile 대상 파일
     File 예
     todir 대상 디렉토리
     File 예
     overwrite 대상 파일이 존재하면 덮어쓴다. 디폴트는 false
     Boolean 아니오
     includeEmptyDirs 빈 디렉토리도 포함해서 복사한다. 디폴트는 true
     Boolean 아니오
     filtering true면 프로젝트에 정의된 필터링을 적용하여 복사한다. 기본값은 false다. 하위의 filterset 엘리먼트를 정의하면 이 속성은 무시되고 하위의 filterset 엘리먼트가 실행된다.
     Boolean 아니오
     <fileset> 복사할 파일들의 집합을 추가한다. todir 속성이 있어야 한다.
     하위 엘리먼트
     아니오
     <filterset> 복사되는 파일 내부에서 필터링을 추가한다.
     하위 엘리먼트
     아니오
     <mapper> 복사되는 파일의 이름을 변경한다.
     하위 엘리먼트
     아니오
    • delete
     속성 설명 타입 필수 여부
     file 삭젲할 파일 이름
     File 예
     dir 삭제할 디렉토리
     File 예
     includeEmptyDirs 빈 디렉토리도 삭제할지 여부 지정. 디폴트는 false
     Boolean 아니오
     <fileset> 삭제할 파일의 집합 추가
     하위 엘리먼트
     아니오
    • genkey
     속성 설명 타입 필수 여부
     alias 키의 별칭
     String 예
     storepass 키 저장소의 무결성을 위한 비밀번호. 6자리 이상이여야함
     String
     예
     keystore 키 저장소의 위치를 지정한다.
     Path 아니오
     storetype 키 저장소의 타입
     String 아니오
     keypass storepass와 다르다면 개인키의 비밀번호
     String 아니오
     dname 엔티티를 구별하는 이름
     String 예
     <dname> 엔티티를 구별하는 이름
     하위엘리먼트 예
    • signjar
     속성 설명 타입 필수여부
     jar 서명할 jar파일
     File 예
     alias 서명하는 데 필요한 별칭
     String 예
     storepass 키 저장소의 무결성을 위한 비밀번호
     String 예
     keystore 키 저장소의 위치
     Path 아니오
     storetype 키 지정소의 타입
     String 아니오
     keypass
     개인 키의 비밀번호
     String 아니오
     sigfile .SF/.DSA 파일 이름
     String 아니오
     signedjar 서명된 jar 파일 이름
     Strinng 아니오
     <fileset> 서명할 jar 파일의 집합 추가
     하위 엘리먼트
     아니오
    • war
     속성 설명 타입 필수 여부
     destfile 작성할 war 파일의 이름
     File 예
     webxml 서블릿 설정 파일 지정
     File needxmlfile이 true면 예 false이면 아니오
     needxmlfile web.xml 파일이 필수면 true, 아니면 false 디폴트는 true
     Boolean 아니오
     basedir 기본디렉토리 Path 아니오
     compress 압축여부 지정. 디폴트는 true
     Boolean 아니오
     encoding 파일의 encoding설정, 디폴트는 UTF-8
     String
     아니오
     <lib> 참조 라이브러리 집합 추가
     하위엘리먼트 아니오
     <classes> 클래스 파일의 집합 추가
     하위엘리먼트 아니오
     <fileset> 파일의 집합추가
     하위엘리먼트 아니오
    • fileset
     속성 설명
     타입 필수여부
     dir fileset의 최상위 디렉토리
     File 예
     defaultexcludes default excludes의 사용 여부 지정. 디폴트는 true
     Boolean 아니오
     casesensitive 대소문자의 구별 여부 지정. 디폴트는 true
     Boolean 아니오
     followsymlinks 심볼릭 링크 사용 여부 지정. 디폴트는 true
     Boolean 아니오

    2010년 9월 24일 금요일

    jsp 안전한 웹 애플리케이션

    인증메커니즘
    BASIC : 웹 브라우저는 인증창을 통해 사용자명과 비밀번호를 요구하며, 웹 서버에 데이터를 전송한다.
    DIGEST : 웹 브라우저는 인증창을 통해 사용자명과 비밀번호를 요구하며, 웹서버에 다이제스트 데이터를 전송한다.
    FROM : 웹 애플리케이션은 브라우저에게 보낸 인증 페이지와 에러 페이지를 제공한다.
    CLIENT-CERT : 웹 컨테이너는 사용자를 확인하기 위해 SSL을 이용한다. 사용자는 반드시 SSL 인증서를 가지고 있어야 한다.

    jsp 서블릿, jsp 라이프사이클

    서블릿
    1단계: 웹 브라우저의 주소란에 URL을 입력하고 HTTP 요청을 한다.
    2단계: 웹 서버는 호출된 서블릿의 정보를 받아서 서블릿이 메모리에 로드되었는지 여부를 확인한다.
    3단계: 메모리에 로드되지 않으면, 클래스로더에 의해 서블릿을 메모리에 로드한다. 서블릿 메모리에 이미 로드되어 있으면 6단계로 넘어간다.
    4단계: 서블릿 인스턴스를 생성한다.
    5단계: init메소드를 호출한다.
    6단계: 요청을 처리하기 위한 스레드를 생성후 service메소드를 호출한다.
    7,8단계: 스레드로부터 요청에 대한 처리결과를 받아서 웹 브라우저에 HTTP응답을 한다. destroy 메소드는 서블릿 컨테이너에 의해 인스턴스가 소멸전에 호출된다.

    JSP
    1단계: 페이지 번역
    2단계: JSP 컴파일
    3단계: 클래스로드
    4단계: jspInit 메소드 호출
    5단계: _jspService 메소드 호출
    7단계: jspDestroy 메소드 호출