글

유사배열 놀이

jQuery를 가지고 놀던중에... 반환값이 Object인데도 불구하고 fireBug나 크롬에서 array처럼 반환되는 것을 확인할 수 있다. ex> $ ( 'a' ) >> [ < a href = "http://vjeux.com/" > vjeux </ a >, < a href = "http://google.com/" > google </ a > ] 어떻게 했을까? console.dir을 찍으면 >> e.fn.e.init[1] 값이 나온다 클릭하여 펼쳐보자 e.fn.e.init[1] 0 :  HTMLAnchorElement context :  HTMLDocument length :  1 selector :  "#sdf" __proto__ :  Object[0] 이렇게 나오는것을 확인할 수 있다. 다른 유사객체인 Argument, NodeList를 비교해서 확인해 보자. NodeList[1] 0 :  HTMLDivElement length :  1 __proto__ :  NodeList constructor :  function NodeList() { [native code] } item :  function item() { [native code] } __proto__ :  Object 두가지 공통점을 발견할수 있다.  인덱스가 0,1... 처럼 생겼다. length값을 가지고 있다. 그럼  obj = { 0: 'a', 1:'b', length:2}; 이렇게 하면 위와 똑같이 나올까? 실험을 해보기로 했다. console.log로 찍으면 >> Object 로 ...

자바스크립트 oop를 넘어 aop로

이 글을 어떻게 하면 객체지향을 넘어 관점지향 프로그래밍을 하는 방법에 대해서 기술한 것입니다. 우선 간단하게 객체지향에 대해서 알아보도록 하겠습니다. 객체지향프로그래밍은 영어로 Object-Oriented Programming 줄여서 OOP라고 합니다. 이것은 프로그래밍 패러다임의 일종으로써, 이전의 절차지향적 프로그래밍 이후에 나온 패러다임입니다. 간단하기 이야기 하자면 프로그래밍을 할때 주인공이 변경되었다라고 생각하시면 됩니다. 이전에는 함수(function)위주로 프로그래밍을 하였다면 이후에는 객체(object)위주로 프로그래밍을 한다는 의미 입니다. 즉 논리 보다는 다루고자 하는 객체라는 시각으로 접근하는 것입니다. ex> 절차 지향적 프로그래밍 숫자+숫자-숫자을 계산하는 프로그램을 구현하시오. function compute(a,b,c){ return a+b-c; } OOP관점에서는 obj = { a: 0, b: 0, c: 0, init: function(a,b,c){ this.a = a; this.b=b; this.c=c}, compute: function(){return this.a + this.b - this.c } obj.init(숫자, 숫자, 숫자); obj.compute(); 두 패러다임에서 누가 옳고 그르다고 말할 수 없습니다. 프로그램의 규모가 작은 경우 즉 위와 같은 경우에는 확실이 절차지향 프로그램이 이점을 가지고 있습니다. 하지만 애플리케이션 단위로 프로그램이 크다면 객체지향 프로그램이 더욱 더 좋은 선택이 될 것입니다. 현재 자바스크립트 소스코드는 절차지향적 프로그래밍 되어 있는것들이 많이 있습니다. 그 이유는 아마도 자바스크립트로 되어 있는 프로그램의 대부분이 소규모인 경우가 많아서 그런것이라고 생각합니다. 하지만 점점 웹의 규모가 커지고 사용자의 웹에대한 욕구가 커지면서 자바스크립트는 소규모를 넘는 프로그램을 할 필요성이 점점 증가하고 있습니다....

자바스크립트 prototype을 활용한 상속

(function ($_) { $_.Base = {}; function subclass() {}; var Class = function(/*parent, protoProps, staticProps*/) { var arg = $_.A.toArray(arguments), parent = null, protoProps, staticProps; if($_.O.isFunction(arg[0])) parent = arg.shift(); protoProps = arg[0]; staticProps = arg[1]; function child() { var self = this, key, arg = $_.A.toArray(arguments); for(key in self){ if(!$_.O.isFunction(self[key]))self[key] = $_.O.clone(self[key]); } function initsuper(parent) { if(!parent) return; if(parent.superclass) initsuper(parent.superclass); parent.prototype.initialize.apply(self, arg); } initsuper(parent); this.initialize.apply(this, arg); } child.superclass = parent; child.subclasses = []; if(parent){ subclass.prototype = parent.prototype; child.prototype = new subclass(); parent.subclasses.push(child); } child.prototype.initialize = function () {}; if (protoProps) $_.O.ext...

jQuery를 응용한 소스

(function (definition) {     // RequireJS     if (typeof define == "function") {         define([Asdf], definition);     } else {         definition(Asdf);     } }) (function($_) { var arraySlice = Array.prototype.slice, readyRE = /complete|loaded|interactive/, isString = $_.O.isString ; var arrayMap =  $_.A.map, nativeSplice = Array.prototype.splice, extend = $_.O.extend; var root = this, compact = $_.A.compact; function El(){ if (this.constructor !== El){ return new El(); } }; function map(elements, fn){ return arrayMap(elements, function(el, i){ return fn.call(el, i, el); }); } function slice(elements){    return arraySlice.apply(toArray(elements), arraySlice.call(arguments,1)); } function toArray(elements) { var arr = []; for (var i = 0, ref = arr.length = elements.length; i < ref; i++) { arr[i] = elements[i]; } return arr; ...

엄격한 자바스크립트

자바스크립트는 언어 특성상 동적 타입 언어에 속합니다. 타입이 정해서 있지 않기 때문에 장점도 많이 존재하긴 하지만 애플리케이션을 구성하는데 있어서는 약간 엄격한 필요성이 있습니다. 엄격함을 필요할 경우 구현 시에 function a(b, c) {   if(typeof b !=...) throw new Error();   if(typeof c !=...) throw new Error();   ... } 형태로 많이 구현하고 있습니다. 이런 형태로 구현하면 인자값에 대한 타입을 정의하여 함수가 오동작하는것을 미리 방지할수 있습니다. 이런 형태로 인자값에 대해서는 좀더 엄격한 타입을 정할수 있으나 반환값 적용할 수 있을까요? 이러한 물음을 가지고 여러 실험을 해보았습니다. 그러던중 클로저로 함수를 랩핑하면 어떨까에 대해서 생각이 들었습니다. 여기에다가 그에 관한 내용을 적습니다. 만일 반환값이 반드시 boolean이여야 한다면!! function is(fn) { return function (){return !!fn.apply(this,arguments)}} 대부분 프로그래밍에서 is나 has로 시작하는 함수는 boolean을 반환해야 한다고 합니다. 그래서 위에 형태로 껍데기를 만들고 var isNum = is(function (value) { return /^\d+$/.test(value) }); 이런식으로 정의하면 이 함수는 반드시 boolean을 반환합니다. 이렇게 보통 java나 다른 언어에서 boolean and (boolean, boolean c) {   return b&&c; } 이런거에서 var isAnd = is(function (a, b){ return a&&b } ); 이런식으로 정의하면 됩니다. 이런식으로 사용하면 Number, String등 기본 내장 클래스 객체로 반드시 반환하게 할수도 있으면 사용자 클래스 객체를 반환하게 할수도 있습니다.

iframe을 통해서 다른 파일 HTML접근하는 방법

function load(src,callback){ var f = document.createElement('iframe'); f.src = src; f.id = 'test123123'; f.width = 0; f.height = 0; document.body.appendChild(f); var w = document.getElementById(f.id).contentWindow; w.onload = function(e){ var fn = new Function('w','with(w){return '+ callback.toString() + '}'); fn(w)(); setTimeout(function(){document.body.removeChild(f)},15); } } load('3.html',function(){alert(document.body.innerHTML)});

이벤트 핸들링 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객체를 얻어오면 되긴 하지만 이는 표준이 아닌라서 파폭에서는 작동을 안한다는 문제가 있죠.

자바스크립트

부제를 정하지 못해서 그냥 안썼습니다. 죄송합니다. 제 지식이 너무 얕아서 무엇이라고 정해야 할지 몰르겠습니다. 그럼 시작하겠습니다. 오늘 공부를 하다가 깨닭은 바가 있어서 정리를 합니다. 그리 거창하고 대단한것은 아니지만 자바스크립트에 한발 더 다가갈 수 있을 꺼 같습니다. 보통 객체 지향적으로 자바스크립트를 코딩할때 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는 Objec...

나란나 누구인가?

▩ INTP 아이디어뱅크형 ▩ 조용하고 과묵하며 논리와 분석으로 문제를 해결하기 좋아한다. 과묵하나 관심이 있는 분야에 대해서는 말을 잘하며 이해가 빠르고 높은 직관력으로 통찰하는 재능과 지적 호기심이 많다. 개인적인 인간관계나 친목회 혹은 잡담 등에 별로 관심이 없으며 매우 분석적이고 논리적이며 객관적비평을 잘 한다. 지적 호기심을 발휘할 수 있는 분야 즉 순수과학, 연구, 수학, 엔지니어링 분야나 추상적 개념을 다루는 경제, 철학, 심리학 분야의 학문을 좋아한다. 지나치게 추상적이고 비현실적이며 사교성이 결여되기 쉬운 경향이 있고, 때로는 자신의 지적 능력을 은근히 과시하는 수가 있기 때문에 거만하게 보일 수 있다. ▒ 일반적인 특성 ▒ 행동하기 보다 책을 통해서 배운다. (책중독) 높은 직관력으로 통찰하는 재능과 지적관심이 많다 조용하고 말이 없으나 자기의 관심 분야에서는 말을 많이 한다 정서표현이 별로 없어 친해지기 전에는 이해하기 어렵다 기분이나 감정도 생각을 통해서 한다 지나치게 지적이고 추상적이며 설명이 너무 이론적이다 황당무게한 공상을 잘 한다 비현실적이며 비약이 심하다 타인에게 별로 관심이 없다 생각은 창의적인데 실천이 부족하다 조직이나 단계, 계통 등에 약하다 충동적이다 매뉴얼 보기 싫어한다 정장을 싫어한다 패션감각이 둔하다 드라마, 한국영화 잘 안 본다 뻔한 이야기나 서론이 긴 것 참기 어렵다 주관이 뚜렷하고 자신은 합리적이라 생각한다 꼭 필요한 것 아니면 잊어버린다. (건망증) 머릿속에 있다가 막판에 후다닥 일 처리를 한다 한끼 떼우면 된다 남들 좋아하는 연예인, 악세사리 등에 관심 없다 추리소설 좋아한다 잡담 모임 후에는 허무감을 느낀다 친한 친구라도 일 없으면 연락 안다 공상과 상상속에 있을 때가 많다 ▒ 개발해야할 점 ▒ 타인의 노력을 인정하는 태도 필요 팀으로 하는 일에 적극적으로 뛰어들 필요가 있다 생각보다...

자바 정규식

자바로 정규식을 만들때 안에 내용중 특수문자를 일반 문자로 바꾸기 예) . -> \. String str = 123.23.3.34 str.replaceAll("([\\]\\[\\^\\-$()*+.?{|])","\\\\$1"); 만든 이유.. 원하는 정규식은 특수문자 앞에 \기호를 부착하여 정규식 특수문자가 아닌 일반문자로 만들고 싶었다. 구글링을 많이 해봤지만 내가 원하는 정규식을 찾기 어려웠다.

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  빈 디렉토리도 삭제할지 여부 지정. 디폴트는...

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 메소드 호출

jsp javamail

Message class abstract String getSubject() - 메일 제목을 리턴한다. Address[] getAllRecipients() - 메일의 모든 수신자 주소를 리턴한다. Folder getFolder() - 메일이 포함된 폴더 객체를 리턴한다. abstract void setSubject(String subject) - 메일 제목을 설정한다. void setFlag(Flags.Flag flag, boolean set) - 메일의 플래그를 설정한다. abstract void setFlages(Flags flag, boolean set) - 메일의 플래그를 설정한다. MimeMessage class MimeMessage(Session session) - 디폴트 MimeMessage 객체를 생성한다. MimeMessage(Session session, InputStream is) - InputStream으로부터 데이터를 읽고, 파싱해서 MimeMessage 객체를 생성한다. void setCountent(Object data, String tyep) - type으로 기술되는 MIME타입의 데이터 Data를 메일의 내용으로 설정한다. void setText(String text) - MIME 타입이 text/plain인 메일 데이터 text를 설정한다. void setText(String text, String charset) - MIME타입이 text/plain이고 문자 세트가 charset인 메일 데이터 text를 설정한다. void setFrom(Address address) - RFC 822의 From 헤더 필드를 설정한다. void setRecipients(Message.RecipientType type, Address[] address) - 메일을 받는 사람의 주소를 설정한다. void setReplyTo(Address[] addresses) - RFC 822의 Reply-To 헤더 필드를 설정한다. void setSentData...

jsp tomcat 설정파일 분석

WEB-INF 분석 /WEB-INF/web.xml - 디플로이먼트 디스크립터라고 불리는 파일이다. 이 파일은 자식이 속한 웹 응용프로그램의 구성에 관련된 정보를 가지고 있다. 이 파일은 DTD를 가지고 있으며, DTD에는 50여개의 태그들이 정의되어 있다. /WEB-INF/classes/* - 서블릿과 유틸리티 클래스들이 있는 디렉토리이다. 이 디렉토리에 있는 클래스들은 응용프로그램의 클래스 로더에 의해 메모리로 로드된다. /WEB-INF/lib/*.jar - 서블릿, 빈, 유틸리티 클래스들을 포함하는 JAR 파일들이 포함되어 있고, 이 파일들은 웹 응용프로그램 클래스 로드에 의해 로드된다. server.xml 파일 - 톰캣의 구조와 톰캣 컴포넌트의 초기 구성 정보를 제공하는 역할을 하는 메인 구성 파일이다. server.xml은 XML 파일이기 때문에 XML 파일의 포맷과 문법을 따른다. Server - server.xml 파일의 최상위의 원소로서 톰캣 서버를 정의한다. Server원소는 Logger와 ContextManager 원소를 포함할 수 있다. Logger - 이 원소는 로거 객체를 정의한다. 각 로거 객체는 이름, 로거 객체의 출력물을 저장할 로그 파일, 로그 레벨을 정의하는 verbosityLevel 속성을 가지고 있다. 현재 서블릿을 위한 로거 객체, jsp 파일을 위한 로거 객체, 톰캣 실행 환경을 위한 로거 객체가 있다. 서블릿의 ServletContext의 log() 메소드의 결과물이 저장되는 로그 파일을 기술한다. ContextManager - 구성과 ContextInterceptor, requestInterceptor, Context, Connector의 구조를 정의한다. 디버깅 레벨, webapps, conf, logs의 기본 디렉토리, working 디렉토리 이름 ContextInterceptor - 톰캣의 시작 및 종료 이벤트를 감시한다. RequestInterceptor - 톰캣이 서비스하는 동안에 다양한 사용자의 요청 단계를 ...

java URLConnetion

void connect() - URL로 기술된 리소스에 연결을 설정한다. boolean getAllowUserInteraction() - 사용자 인터랙션이 허용되는지 알아본다. String getContentEncoding() - 헤더에 포함되어 있는 인코딩 필드의 값을 알아본다. int getContentLength() - 헤더의 content_length 필드 값을 알아보낟. String getContentType() - MIME 타입을 알아본다. long getDate() - 헤더의 data 필드 값을 알아본다. InputStream getInputStream() - 커넥션에서 데이터를 읽기 위한 입렭스트림을 얻는다. long getLastModified() - 헤더의 last-modified 필드 값을 얻어온다. OutputStream getOutputStream() - 커넥션에 데이터를 전달하기 위한 출력 스트림을 얻는다. URL getURL() - URLConnenction의 URL을 얻어온다. boolean getUseCaches() - useCaches 필드 값을 얻어온다. static String guessContenttypeFromStream(InputStream is) - 입력 스트림을 이용해서 MIME 타입을 알아본다. static void setDefaltAllowUserInteraction(boolean defaultallowuserinteraction) - 사용자 인터랙션을 허용할 것인지 여부의 디폴트 값을 설정한다. static void setDefaultRequestProperty(String key, String value) - 일반 요청 속성의 디폴트 값을 설정한다. void setDefaultUseChches(boolean defaultusecaches) - 디폴트로 캐쉬를 사용할 것인지 여부를 설정한다. void setDoInput(boolean doinput) - 원격 객체에서 데이터를 읽어올 것인지 여부를 설정한다. v...

java File

File File(File parent, String child) - parent 디렉토리의 child라는 파일의 File객체를 생성한다. File(String parent, String child) - parent 디렉토리 패스와 child라는 파일의 File 객체를 생성한다. File(String pathname) - pathname에 해당되는 파일의 File 객체를 생성한다. boolean canRead() - 파일을 읽을 수 있는지 여부를 리턴한다. boolean canWrite() - 파일을 기록할 수 있는지 여부를 리턴한다. boolean createNewFile() - 주어진 파일이 없으면 자동적으로 빈 파일을 생성한다. boolean delete() - 파일이나 디렉토리를 삭제한다. void deleteOnExit() - 자바 가상 머신이 끝날 때 파일을 삭제한다. boolean exists() - 파일이 존재하는지 알아본다. File getAbsoluteFile() - 파일의 절대 패스를 알아본다. String getName() - 파일이나 디렉토리 이름을 리턴한다. String getParent() - 부모 디렉토리를 리턴하다. File getParentFile() - 부모 디렉토리를 File 형태로 리턴한다. String getPath() - 패스를 문자열 형태로 리턴한다. boolean isDirectory() - 디렉토리인지 여부를 리턴한다. boolean isFile() - 파일인지 여부를 리턴한다. boolean isHidden() - 숨겨진 파일인지 여부를 리턴한다. long length() - 파일 크기를 리턴한다. Stringp[] list() - 디렉토리인 경우 포함되어 있는 파일과 디렉토리 이름을 배열 형태로 리턴한다. File[] listFiles() - 디렉토리인 경우 포함되어 있는 파일과 디렉토리를 File배열 형태로 리턴한다. boolean mkdir() - 디렉토리를 만든다. boolean renameTo(File ...

java 입출력2

FileInputStream FileInputStream(File file) - File 객체를 이용해서 FileInputStream 객체를 새성한다. FileInputStream(FileDescriptor fdObj)  - FileDescriptor 객체를 이용해서 FileInputStream 객체를 생성한다. FileInputStream(String name) - 파일 이름을 이용해서 FileInputStream 객체를 생성한다. void close() - 스트림을 닫는다. int read() - 한 바이트를 읽어서 리턴한다. int read(byte[] b, int off, int len) - len개의 바이트를 읽어서 배열 b[off]에서부터 저장한다. 리턴 값은 읽은 바이트 수이다. int read(byte[] b) - 배열의 크기만큼의 바이트를 읽는다. 리턴 값은 읽은 바이트 수이다. FileOutputStream FileOutputSteam(File file) - File 객체를 이용해서 FileOutputStream객체를 생성한다. FileOutputStream(FileDescriptor fdObj) - FileDescriptor 객체를 이용해서 FileOutputStream 객체를 생성한다. FileOutputStream(Stringn name, boolean append) - 파일 이름을 이용해서 FileOutputStream 객체를 생성한다. 생성된 객체는 append값에 따라 기존 파일에 내용을 추가할 것인지, 아닌지를 결정한다. append가 false 이면 기존 내용은 삭제하고 새로운 내용이 기록된다. FileOutputStream(String name) - 디폴트로 append가 false인 FileOutputStream 객체를 생성한다. void close() - 스트림을 닫는다. void write(byte[] b, int off, int len) - 배열 b[off]에서부터 len개의 바이트를 출력한다. void writ...

jsp JSTL

주의사항 1. 태그 이름과 문법 TLD에는 속성이 필수인지 옵션 사항인지, 태크가 몸체를 가질 수 있는지, 가진다면 그 안에 들어갈 수 있는 하위 태그는 무었이 있는지, 태그 안에 들어가는 속성 타입은 어떻게 되는지, 속성에 표현식을 쓸 수 있는지 아니면 그냥 문자열만 써야 하는지 등   2. 라이브러리 URI taglib지시자에 바로 이 URI값을 사용합니다. 컨테이너는 이 값으로 웹 어플리케이션에 있는 여러 TLD파일 가운데서 정확한 것으로 찾아갑니다.   TLD <tlib-version></tlib-version> 태그 라이프러리 버전을 선언하는 곳 <short-name></short-name> <function> <name></name> <function-class></function-class> <function-signature></function-signature> </function> <uri></uri> taglib지시자에서 사용할 자신을 나타내는 유일한 이름   <tag> <description></description> <name></name> 태그안에 쓸 이름 <tag-class></tag-class> jsp에서 태그를 사용한 경우 컨테이너가 호출할 클래스 <body-content></body-content> 태그의 몸체 empty : 몸체 없음, scriptless :스크립팅은 올 수 없음, tagdependent : 문자를 무조건 텍스트로 취급, JSP : jsp 안에 들어 갈 수 있ㄴ은 것이라면 무엇이든지 가능. <attribute> 태그의 속성이 있다면 속성을 정의 하는 곳 ...

보안과 암호학의 모든것

1. 비밀키 암호화 1.1 자물쇠와 열쇠 암호화란, 키를 모르고는 절대 비밀 메시지를 알아 낼 수 없는 자물쇠와 그 자물쇠를 푸는 키 둘 다를 의미한다. 암호 사용자란, 메시지의 원래 의미를 숨기려고 암호를 사용하는 사람들이다. 1.2 치환법과 시저암호 암호: 어떤 문장을 암호화 하거나 복호화 하는 방법이다. 평문: 암호화되지 않는 문장 암호문: 암호화된 문장 암호화: 평문을 암호문으로 바꾸는 과정 복호화: 암호문을 평문으로 바꾸는 과정 1.7 기밀성은 비밀키를 공유한 사람들만 동일한 비밀키로 암호화한 파일을 복호화할 수 있다는 것에 대한 보증이다. 인증은 상대방의 신원에 대한 보증이다. 무결성: 파일이 전송도중에 변경되지 않았다는 것에 대한 보증 MAC (Message Authentication Code) 부인방지: 메시지를 보내는 사람이 파일을 보내지 않고도 파일을 보냈다고 부인할 수 없다는 것에 대한 보증이다. 1.8 비밀키 교환의 문제점들 공개키 암호 알고리즘 Diffie - Hellman - Merkle 키 교환법 비대칭키 : 암호키와 복호화 키 분리 2.10 공개키를 사용하면서 얻는 기밀성 공개키로 암호화된 메시지는 공개키에 관계된 개인키로만 복호화할 수 있다. 공개키 알고리즘의 아이디어는 해커가 공개키로 복호화하는 것이 불가능하며, 개인키를 알아내기도 힘들다는 것이다. 공개키는 숨길 필요가 없고, 분배하기 편하기 때문에 비밀키 알고리즘의 방법보다 키 분배 문제가 쉽게 해결된다. 2.11 공개키를 만드는 수학적 트릭 공개키 암호 알고리즘은 곱셈에 대한 인버스라는 간단한 수학적 개념을 토대로 만들어진다. 대부분의 공개키 암호 시스템은 역으로 계산하는 것이 어렵다는 것을 이용하여 보안성을 강화 시킨다. 2.12 개인키를 사용하여 전자 서명하기 개인키로 암호화 하는 것은 인증, 무결성, 부인 방지 기능을 제공해 준다. RSA의 경우 개인키로 암호화하는 것은 '서명'과 같고, 공개키로 암호화 하는 것은 '서명 확인'과 같다. ...