<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4671396260831057716</id><updated>2012-02-16T16:31:50.179+09:00</updated><category term='PHP'/><category term='리눅스'/><category term='디비'/><category term='플밍'/><category term='생각들'/><category term='책'/><category term='자바'/><category term='JSP'/><category term='자바스크립트'/><category term='서버'/><category term='안드로이드'/><title type='text'>내 머리속~</title><subtitle type='html'>안녕하세요.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3976974788210215106</id><published>2012-01-13T10:15:00.005+09:00</published><updated>2012-01-13T10:15:52.050+09:00</updated><title type='text'>이벤트 핸들링 DOM0과 DOM1활용하기</title><content type='html'>&amp;lt;html&amp;gt;&lt;br /&gt; &amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt; &amp;lt;body&amp;gt;Test&lt;br /&gt;  &amp;lt;input type='button' onclick='(function(el){eventHandler.apply(el,arguments)}(this))' value='click' /&amp;gt;&lt;br /&gt;  &amp;lt;script&amp;gt;&lt;br /&gt;   eventHandler = function(){&lt;br /&gt;    this.onclick = function(e){&lt;br /&gt;     console.log(e);&lt;br /&gt;    };&lt;br /&gt;    this.click();&lt;br /&gt;   };&lt;br /&gt;  &amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;대게 보통 onclick을 통해서 html 에서 해당 함수를 넣어 마우스 클릭시 이벤트를 생성하는 소스코드는 비록 추천하는 개발방식이 아닌데도 엄청 많이 사용되고 있습니다.&lt;br /&gt;그래서 혹시 event 객체를 얻기 위해서 고생을 해야 하는데 위에서 DOM0을 DOM1로 변경해서 event 객체를 얻었습니다.&amp;nbsp; 사파리 IE에서는 window.event객체를 얻어오면 되긴 하지만 이는 표준이 아닌라서 파폭에서는 작동을 안한다는 문제가 있죠.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3976974788210215106?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3976974788210215106/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2012/01/dom0-dom1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3976974788210215106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3976974788210215106'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2012/01/dom0-dom1.html' title='이벤트 핸들링 DOM0과 DOM1활용하기'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1295893732949981634</id><published>2011-12-27T18:46:00.002+09:00</published><updated>2011-12-27T18:46:19.607+09:00</updated><title type='text'>자바스크립트</title><content type='html'>&lt;br /&gt;부제를 정하지 못해서 그냥 안썼습니다.&lt;br /&gt;죄송합니다. 제 지식이 너무 얕아서 무엇이라고 정해야 할지 몰르겠습니다.&lt;br /&gt;그럼 시작하겠습니다.&lt;br /&gt;오늘 공부를 하다가 깨닭은 바가 있어서 정리를 합니다. 그리 거창하고 대단한것은 아니지만&lt;br /&gt;자바스크립트에 한발 더 다가갈 수 있을 꺼 같습니다.&lt;br /&gt;보통 객체 지향적으로 자바스크립트를 코딩할때&lt;br /&gt;var C = function() {&lt;br /&gt;  var x = 'txt';&lt;br /&gt;  this.getX(){&lt;br /&gt;    return x;&lt;br /&gt;  };&lt;br /&gt;};&lt;br /&gt;var c= new C();&lt;br /&gt;또는&lt;br /&gt;var C = function(x) {&lt;br /&gt;  this.x = x;&lt;br /&gt;}&lt;br /&gt;C.prototype.getX(){ this.x; };&lt;br /&gt;var c = new C('txt');&lt;br /&gt;이렇게 씁니다.&lt;br /&gt;저는 이것을 가지고 깊은 생각을 했습니다. 왜 그렇게 쓰는 것일까?&lt;br /&gt;책을 찾아보던 중 new라는 전치 연산자에 대해서 나옴니다.&lt;br /&gt;new를 쓰고 뒤에 함수쓰고 해당 함수 안에 return문이 없으면 해당 this를 반환한다.&lt;br /&gt;즉 var c= new C(); 이건 객체를 생성하고 해당 this를 반환한다는 의미라는 것입니다.&lt;br /&gt;또한 우리가 객체를 편하게 생성할때,&lt;br /&gt;var c = new Object();를 사용해도 되고,&lt;br /&gt;var c = {};라고 해도 됩니다.&lt;br /&gt;좀 산으로 갔군요. 다시 원위치로&lt;br /&gt;그럼 var c는 해당 객체에 대한 주소(? 확신이 없음)값 비스무리한것을 가지게 됩니다.&lt;br /&gt;그래서 안에 있는 메소드를 참고할 때는 c.getX() 이러면 해당 메소드를 불러낼 수 있습니다.&lt;br /&gt;즉 요런 느낌이 들면 됩니다. c가 가리키고 있는 메모리 영역으로 가서 그 안에 있는 getX() 메소드를&lt;br /&gt;실행해라.&lt;br /&gt;여기서 전 또하나의 의문이 들었습니다.&lt;br /&gt;var f = function(){};&lt;br /&gt;f.a = function(){};&lt;br /&gt;이게 되는냐에 대한 의문입니다.&lt;br /&gt;f는 Object가 아니니까 안되지 않을까 생각도 했지만.. 실행하면 너무나 자연스럽게 실행됩니다.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1295893732949981634?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1295893732949981634/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2011/12/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1295893732949981634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1295893732949981634'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2011/12/blog-post.html' title='자바스크립트'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-8055141773838824996</id><published>2011-11-09T21:04:00.001+09:00</published><updated>2011-11-09T21:04:29.368+09:00</updated><title type='text'>나란나 누구인가?</title><content type='html'>&lt;div align="center"&gt;▩ INTP 아이디어뱅크형 ▩&lt;/div&gt;&lt;span style="color: black;"&gt;조용하고 과묵하며 논리와 분석으로 문제를 해결하기 좋아한다.&lt;/span&gt;과묵하나 관심이 있는 분야에 대해서는 말을 잘하며 이해가 빠르고 높은 직관력으로 통찰하는 재능과 지적 호기심이 많다. 개인적인 인간관계나 친목회 혹은 잡담 등에 별로 관심이 없으며 매우 분석적이고 논리적이며 객관적비평을 잘 한다. 지적 호기심을 발휘할 수 있는 분야 즉 순수과학, 연구, 수학, 엔지니어링 분야나 추상적 개념을 다루는 경제, 철학, 심리학 분야의 학문을 좋아한다. 지나치게 추상적이고 비현실적이며 사교성이 결여되기 쉬운 경향이 있고, 때로는 자신의 지적 능력을 은근히 과시하는 수가 있기 때문에 거만하게 보일 수 있다. &lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;▒ 일반적인 특성 ▒&lt;/div&gt;&lt;br /&gt;&lt;li&gt;행동하기 보다 책을 통해서 배운다. (책중독)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;높은 직관력으로 통찰하는 재능과 지적관심이 많다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;조용하고 말이 없으나 자기의 관심 분야에서는 말을 많이 한다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;정서표현이 별로 없어 친해지기 전에는 이해하기 어렵다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;기분이나 감정도 생각을 통해서 한다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;지나치게 지적이고 추상적이며 설명이 너무 이론적이다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;황당무게한 공상을 잘 한다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;비현실적이며 비약이 심하다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;타인에게 별로 관심이 없다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;생각은 창의적인데 실천이 부족하다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;조직이나 단계, 계통 등에 약하다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;충동적이다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;매뉴얼 보기 싫어한다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;정장을 싫어한다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;패션감각이 둔하다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;드라마, 한국영화 잘 안 본다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;뻔한 이야기나 서론이 긴 것 참기 어렵다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;주관이 뚜렷하고 자신은 합리적이라 생각한다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;꼭 필요한 것 아니면 잊어버린다. (건망증)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;머릿속에 있다가 막판에 후다닥 일 처리를 한다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;한끼 떼우면 된다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;남들 좋아하는 연예인, 악세사리 등에 관심 없다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;추리소설 좋아한다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;잡담 모임 후에는 허무감을 느낀다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;친한 친구라도 일 없으면 연락 안다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;공상과 상상속에 있을 때가 많다 &lt;br /&gt;&lt;div align="center"&gt;▒ 개발해야할 점 ▒&lt;/div&gt;&lt;/li&gt;&lt;li&gt;타인의 노력을 인정하는 태도 필요&lt;br /&gt;&lt;/li&gt;&lt;li&gt;팀으로 하는 일에 적극적으로 뛰어들 필요가 있다&lt;br /&gt;&lt;/li&gt;&lt;li&gt;생각보다 종이에 적어보고 정리해 보는 연습이 필요 &lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-8055141773838824996?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/8055141773838824996/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2011/11/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8055141773838824996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8055141773838824996'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2011/11/blog-post.html' title='나란나 누구인가?'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1627044806701307294</id><published>2011-05-25T11:10:00.000+09:00</published><updated>2011-05-25T11:10:03.883+09:00</updated><title type='text'>자바 정규식</title><content type='html'>자바로 정규식을 만들때 안에 내용중 특수문자를 일반 문자로 바꾸기&lt;br /&gt;예)&lt;br /&gt;. -&gt; \.&lt;br /&gt;&lt;br /&gt;String str = 123.23.3.34&lt;br /&gt;str.replaceAll("([\\]\\[\\^\\-$()*+.?{|])","\\\\$1");&lt;br /&gt;&lt;br /&gt;만든 이유.. &lt;br /&gt;원하는 정규식은 특수문자 앞에 \기호를 부착하여 정규식 특수문자가 아닌 일반문자로 만들고 싶었다.&lt;br /&gt;구글링을 많이 해봤지만 내가 원하는 정규식을 찾기 어려웠다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1627044806701307294?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1627044806701307294/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2011/05/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1627044806701307294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1627044806701307294'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2011/05/blog-post.html' title='자바 정규식'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7202013426623986659</id><published>2010-12-15T14:44:00.000+09:00</published><updated>2011-01-30T14:08:43.793+09:00</updated><title type='text'>Ant 테스크 -mkdir,copy,delete,genkey,signjar,war,tstamp</title><content type='html'>&lt;ul&gt;&lt;li&gt;mkdir&lt;/li&gt;&lt;/ul&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;속성&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;설명&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;필수 여부&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;dir&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;생성할 디렉토리&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;copy&lt;/li&gt;&lt;/ul&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;속성&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;설명&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;필수 여부&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;file&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;복사할 파일&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;tofile&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;대상 파일&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;todir&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;대상 디렉토리&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;overwrite&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;대상 파일이 존재하면 덮어쓴다. 디폴트는 false&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;includeEmptyDirs&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;빈 디렉토리도 포함해서 복사한다. 디폴트는 true&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;filtering&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;true면 프로젝트에 정의된 필터링을 적용하여 복사한다. 기본값은 false다. 하위의 filterset 엘리먼트를 정의하면 이 속성은 무시되고 하위의 filterset 엘리먼트가 실행된다.&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;fileset&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;복사할 파일들의 집합을 추가한다. todir 속성이 있어야 한다.&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;하위 엘리먼트&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;filterset&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;복사되는 파일 내부에서 필터링을 추가한다.&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;하위 엘리먼트&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;mapper&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;복사되는 파일의 이름을 변경한다.&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;하위 엘리먼트&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;li&gt;delete&lt;/li&gt;&lt;/ul&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;속성&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;설명&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;필수 여부&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;file&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;삭젲할 파일 이름&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;dir&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;삭제할 디렉토리&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;includeEmptyDirs&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;빈 디렉토리도 삭제할지 여부 지정. 디폴트는 false&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;fileset&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;삭제할 파일의 집합 추가&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;하위 엘리먼트&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;li&gt;genkey&lt;/li&gt;&lt;/ul&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;속성&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;설명&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;필수 여부&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;alias&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;키의 별칭&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;storepass&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;키 저장소의 무결성을 위한 비밀번호. 6자리 이상이여야함&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;keystore&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;키 저장소의 위치를 지정한다.&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Path&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;storetype&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;키 저장소의 타입&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;keypass&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;storepass와 다르다면 개인키의 비밀번호&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;dname&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;엔티티를 구별하는 이름&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;dname&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;엔티티를 구별하는 이름&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;하위엘리먼트&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;li&gt;signjar&lt;/li&gt;&lt;/ul&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;속성&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;설명&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;필수여부&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;jar&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;서명할 jar파일&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;alias&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;서명하는 데 필요한 별칭&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;storepass&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;키 저장소의 무결성을 위한 비밀번호&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;keystore&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;키 저장소의 위치&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Path&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;storetype&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;키 지정소의 타입&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;keypass&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;개인 키의 비밀번호&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;sigfile&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;.SF/.DSA 파일 이름&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;signedjar&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;서명된 jar 파일 이름&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Strinng&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;fileset&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;서명할 jar 파일의 집합 추가&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;하위 엘리먼트&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;li&gt;war&lt;/li&gt;&lt;/ul&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;속성&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;설명&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;필수 여부&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;destfile&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;작성할 war 파일의 이름&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;webxml&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;서블릿 설정 파일 지정&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;needxmlfile이 true면 예 false이면 아니오&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;needxmlfile&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;web.xml 파일이 필수면 true, 아니면 false 디폴트는 true&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;basedir&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;기본디렉토리&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Path&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;compress&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;압축여부 지정. 디폴트는 true&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;encoding&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;파일의 encoding설정, 디폴트는 UTF-8&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;lib&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;참조 라이브러리 집합 추가&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;하위엘리먼트&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;classes&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;클래스 파일의 집합 추가&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;하위엘리먼트&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;fileset&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;파일의 집합추가 &lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;하위엘리먼트&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;li&gt;fileset &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;속성&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;설명&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;필수여부&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;dir&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;fileset의 최상위 디렉토리&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;File&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;defaultexcludes&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;default excludes의 사용 여부 지정. 디폴트는 true&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;casesensitive&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;대소문자의 구별 여부 지정. 디폴트는 true&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;followsymlinks&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;심볼릭 링크 사용 여부 지정. 디폴트는 true&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아니오&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7202013426623986659?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7202013426623986659/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/12/ant-%ED%85%8C%EC%8A%A4%ED%81%AC-mkdircopydeletegenkeysignjarwar.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7202013426623986659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7202013426623986659'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/12/ant-%ED%85%8C%EC%8A%A4%ED%81%AC-mkdircopydeletegenkeysignjarwar.html' title='Ant 테스크 -mkdir,copy,delete,genkey,signjar,war,tstamp'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2086094636120047304</id><published>2010-09-24T16:37:00.000+09:00</published><updated>2011-01-30T14:08:43.463+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>jsp 안전한 웹 애플리케이션</title><content type='html'>인증메커니즘&lt;br /&gt;BASIC : 웹 브라우저는 인증창을 통해 사용자명과 비밀번호를 요구하며, 웹 서버에 데이터를 전송한다.&lt;br /&gt;DIGEST : 웹 브라우저는 인증창을 통해 사용자명과 비밀번호를 요구하며, 웹서버에 다이제스트 데이터를 전송한다.&lt;br /&gt;FROM : 웹 애플리케이션은 브라우저에게 보낸 인증 페이지와 에러 페이지를 제공한다.&lt;br /&gt;CLIENT-CERT : 웹 컨테이너는 사용자를 확인하기 위해 SSL을 이용한다. 사용자는 반드시 SSL 인증서를 가지고 있어야 한다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2086094636120047304?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2086094636120047304/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/jsp-%EC%95%88%EC%A0%84%ED%95%9C-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2086094636120047304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2086094636120047304'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/jsp-%EC%95%88%EC%A0%84%ED%95%9C-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98.html' title='jsp 안전한 웹 애플리케이션'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-5085642991404436000</id><published>2010-09-24T16:33:00.000+09:00</published><updated>2011-01-30T14:08:43.417+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>jsp 서블릿, jsp 라이프사이클</title><content type='html'>서블릿&lt;br /&gt;1단계: 웹 브라우저의 주소란에 URL을 입력하고 HTTP 요청을 한다.&lt;br /&gt;2단계: 웹 서버는 호출된 서블릿의 정보를 받아서 서블릿이 메모리에 로드되었는지 여부를 확인한다.&lt;br /&gt;3단계: 메모리에 로드되지 않으면, 클래스로더에 의해 서블릿을 메모리에 로드한다. 서블릿 메모리에 이미 로드되어 있으면 6단계로 넘어간다.&lt;br /&gt;4단계: 서블릿 인스턴스를 생성한다.&lt;br /&gt;5단계: init메소드를 호출한다.&lt;br /&gt;6단계: 요청을 처리하기 위한 스레드를 생성후 service메소드를 호출한다.&lt;br /&gt;7,8단계: 스레드로부터 요청에 대한 처리결과를 받아서 웹 브라우저에 HTTP응답을 한다. destroy 메소드는 서블릿 컨테이너에 의해 인스턴스가 소멸전에 호출된다.&lt;br /&gt;&lt;br /&gt;JSP&lt;br /&gt;1단계: 페이지 번역&lt;br /&gt;2단계: JSP 컴파일&lt;br /&gt;3단계: 클래스로드&lt;br /&gt;4단계: jspInit 메소드 호출&lt;br /&gt;5단계: _jspService 메소드 호출&lt;br /&gt;7단계: jspDestroy 메소드 호출&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-5085642991404436000?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/5085642991404436000/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/jsp-%EC%84%9C%EB%B8%94%EB%A6%BF-jsp-%EB%9D%BC%EC%9D%B4%ED%94%84%EC%82%AC%EC%9D%B4%ED%81%B4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5085642991404436000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5085642991404436000'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/jsp-%EC%84%9C%EB%B8%94%EB%A6%BF-jsp-%EB%9D%BC%EC%9D%B4%ED%94%84%EC%82%AC%EC%9D%B4%ED%81%B4.html' title='jsp 서블릿, jsp 라이프사이클'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-8463826606036954884</id><published>2010-09-20T17:29:00.000+09:00</published><updated>2011-01-30T14:08:43.371+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>jsp javamail</title><content type='html'>Message class&lt;br /&gt;&lt;ul&gt;&lt;li&gt;abstract String getSubject() - 메일 제목을 리턴한다.&lt;/li&gt;&lt;li&gt;Address[] getAllRecipients() - 메일의 모든 수신자 주소를 리턴한다.&lt;/li&gt;&lt;li&gt;Folder getFolder() - 메일이 포함된 폴더 객체를 리턴한다.&lt;/li&gt;&lt;li&gt;abstract void setSubject(String subject) - 메일 제목을 설정한다.&lt;/li&gt;&lt;li&gt;void setFlag(Flags.Flag flag, boolean set) - 메일의 플래그를 설정한다.&lt;/li&gt;&lt;li&gt;abstract void setFlages(Flags flag, boolean set) - 메일의 플래그를 설정한다.&lt;/li&gt;&lt;/ul&gt;MimeMessage class&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MimeMessage(Session session) - 디폴트 MimeMessage 객체를 생성한다.&lt;/li&gt;&lt;li&gt;MimeMessage(Session session, InputStream is) - InputStream으로부터 데이터를 읽고, 파싱해서 MimeMessage 객체를 생성한다.&lt;/li&gt;&lt;li&gt;void setCountent(Object data, String tyep) - type으로 기술되는 MIME타입의 데이터 Data를 메일의 내용으로 설정한다.&lt;/li&gt;&lt;li&gt;void setText(String text) - MIME 타입이 text/plain인 메일 데이터 text를 설정한다.&lt;/li&gt;&lt;li&gt;void setText(String text, String charset) - MIME타입이 text/plain이고 문자 세트가 charset인 메일 데이터 text를 설정한다.&lt;/li&gt;&lt;li&gt;void setFrom(Address address) - RFC 822의 From 헤더 필드를 설정한다.&lt;/li&gt;&lt;li&gt;void setRecipients(Message.RecipientType type, Address[] address) - 메일을 받는 사람의 주소를 설정한다.&lt;/li&gt;&lt;li&gt;void setReplyTo(Address[] addresses) - RFC 822의 Reply-To 헤더 필드를 설정한다.&lt;/li&gt;&lt;li&gt;void setSentData(Data d) - RFC 822의 Date 해더필드를 설정한다.&lt;/li&gt;&lt;li&gt;void setSubject(String subject) - RFC 822의 Subject 해더필드를 설정한다.&lt;/li&gt;&lt;li&gt;void setSubject(String subject, String charset) - US-ASCII가 아닌 다른 이코딩을 사용할 때 RFC 822의 Subject 해더 필드르르 설정한다.&lt;/li&gt;&lt;/ul&gt;Session&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Session session = Session.getInstance(props, authenticator) - 새로운 세션 객체를 생성한다.&lt;/li&gt;&lt;li&gt;Session defaultSession = Session.getDefaultInstance(props, authenti cator) - 디폴트 Session 객체를 리턴한다.&lt;/li&gt;&lt;li&gt;Transport getTranport(String protocal) - 주어진 프로토콜을 임플리멘츠한 Transport 객체를 리턴한다.&lt;/li&gt;&lt;li&gt;Store getStore() - 사용자가 원하는 기능을 구현한 Store객체를 리턴한다.&lt;/li&gt;&lt;li&gt;Store getStore(Provider provider) -provider에 기술된 Store 객체를 리턴한다.&lt;/li&gt;&lt;li&gt;Store getStore(URLName url) - URName타입의 url에 맞는 Store객체를 리턴한다.&lt;/li&gt;&lt;/ul&gt;Transport&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Transport(Session session, URLName urlname) - Transport객체를 생성한다.&lt;/li&gt;&lt;li&gt;static void send(Message msg) - 메시지 내부에 기술되어 있는 메일 받는 주소에 메일을 전송한다.&lt;/li&gt;&lt;li&gt;static void send(Message msg, Addrdss[] addreses) - 주어진 주소로 메일을 전송한다.&lt;/li&gt;&lt;li&gt;abstract void sendMessage(Message msg, Address[] addresses) - 주어진 주소로 메일을 전송한다.&lt;/li&gt;&lt;li&gt;void connect(String host, String user, String password) - host 컴퓨터로 계정과 암호를 이용해서 연결한다.&lt;/li&gt;&lt;/ul&gt;Store&lt;br /&gt;&lt;ul&gt;&lt;li&gt;abstract Folder getFolder(String name) - 주어진 이름에 해당되는 폴더 객체를 리턴한다.&lt;/li&gt;&lt;li&gt;abstract Folder getFolder(URLName url) - 주어진 url에 해당되는 폴더 객체를 리턴한다.&lt;/li&gt;&lt;/ul&gt;Folder&lt;br /&gt;&lt;ul&gt;&lt;li&gt;abstract int getMessageCount() - 폴더에 포함되어 있는 메일 메시지의 수를 리턴한다.&lt;/li&gt;&lt;li&gt;abstract Message getMessage(int msgname) - msgnum번째의 메일 메시지를 리턴한다. 메일의 인덱스는 1부터 시작된다.&lt;/li&gt;&lt;li&gt;abstract void open(int mode) - 폴더를 주어진 모드로 연다. mode 값은 READ_ONAY이나 READ_WRITE를 가질 수 있다.&lt;/li&gt;&lt;li&gt;abstract void close(Boolean expunge) - 폴더를 닫는다.&lt;/li&gt;&lt;li&gt;abstract boolean create(int type) - Store에 폴더를 생성한다.&lt;/li&gt;&lt;li&gt;abstract boolean delete(boolean recurse) - 폴더를 삭제한다.&lt;/li&gt;&lt;li&gt;abstract boolean existe() - 폴더가 존재하는지 체크한다.&lt;/li&gt;&lt;li&gt;int getMode() - 폴더의 열기 모드를 리턴한다.&lt;/li&gt;&lt;li&gt;abstract String getName() - 폴더 이름을 리턴한다.&lt;/li&gt;&lt;li&gt;abstract Folder getParent() - 부모 폴더를 리턴한다.&lt;/li&gt;&lt;li&gt;Folder[] list() - 현재 폴더 이하의 폴더들을 리턴한다.&lt;/li&gt;&lt;/ul&gt;URLName&lt;br /&gt;&lt;ul&gt;&lt;li&gt;URLName(String nrl) - url 문자열을 파싱해서 URLNAME 객체를 생성한다.&lt;/li&gt;&lt;li&gt;URLName(String protocal, String host, int port, String file, String username, String password) - 주어진 프로토콜, 컴퓨터, 포트 번호, 파일, 사용자 계정, 암호를 이용해서 URLName 객체를 생성한다.&lt;/li&gt;&lt;li&gt;URLName(URL url) - URL 타입의 객체 url을 이용해서 URLName 객체를 생상한다.&lt;/li&gt;&lt;li&gt;String getFile() -파일 이름을 리턴하다.&lt;/li&gt;&lt;li&gt;String getHost() - 컴퓨터 이름을 리턴하다.&lt;/li&gt;&lt;li&gt;String getPassword() - 암호를 리턴한다.&lt;/li&gt;&lt;li&gt;int getPort() - 포트 번호를 리턴하다.&lt;/li&gt;&lt;li&gt;String getProtocal() - 프로토콜을 리턴한다.&lt;/li&gt;&lt;li&gt;URL getURL() - URL을 리턴한다.&lt;/li&gt;&lt;li&gt;String getUsername() - 사용자 이름을 리턴한다.&lt;/li&gt;&lt;/ul&gt;Flags/Flags.Flag&lt;br /&gt;static Flags.Flag ANSWERED - 메시지가 답장되었다.&lt;br /&gt;static Flage.Flag DELETED - 메시지가 삭제되기 위해 마크되었다.&lt;br /&gt;static Flage.Flag RECENT - 메시지가 최근 것이다.&lt;br /&gt;static Flage.Flag SEEN - 메시지를 사용자가 읽었다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-8463826606036954884?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/8463826606036954884/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/jsp-javamail.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8463826606036954884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8463826606036954884'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/jsp-javamail.html' title='jsp javamail'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-8488878455268311700</id><published>2010-09-20T13:38:00.000+09:00</published><updated>2011-01-30T14:08:43.318+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>jsp tomcat 설정파일 분석</title><content type='html'>&lt;br /&gt;WEB-INF 분석&lt;br /&gt;&lt;ul&gt;&lt;li&gt;/WEB-INF/web.xml - 디플로이먼트 디스크립터라고 불리는 파일이다. 이 파일은 자식이 속한 웹 응용프로그램의 구성에 관련된 정보를 가지고 있다. 이 파일은 DTD를 가지고 있으며, DTD에는 50여개의 태그들이 정의되어 있다.&lt;/li&gt;&lt;li&gt;/WEB-INF/classes/* - 서블릿과 유틸리티 클래스들이 있는 디렉토리이다. 이 디렉토리에 있는 클래스들은 응용프로그램의 클래스 로더에 의해 메모리로 로드된다.&lt;/li&gt;&lt;li&gt;/WEB-INF/lib/*.jar - 서블릿, 빈, 유틸리티 클래스들을 포함하는 JAR 파일들이 포함되어 있고, 이 파일들은 웹 응용프로그램 클래스 로드에 의해 로드된다.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;server.xml 파일&lt;br /&gt;- 톰캣의 구조와 톰캣 컴포넌트의 초기 구성 정보를 제공하는 역할을 하는 메인 구성 파일이다. server.xml은 XML 파일이기 때문에 XML 파일의 포맷과 문법을 따른다. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Server - server.xml 파일의 최상위의 원소로서 톰캣 서버를 정의한다. Server원소는 Logger와 ContextManager 원소를 포함할 수 있다.&lt;/li&gt;&lt;li&gt;Logger - 이 원소는 로거 객체를 정의한다. 각 로거 객체는 이름, 로거 객체의 출력물을 저장할 로그 파일, 로그 레벨을 정의하는 verbosityLevel 속성을 가지고 있다. 현재 서블릿을 위한 로거 객체, jsp 파일을 위한 로거 객체, 톰캣 실행 환경을 위한 로거 객체가 있다. 서블릿의 ServletContext의 log() 메소드의 결과물이 저장되는 로그 파일을 기술한다.&lt;/li&gt;&lt;li&gt;ContextManager - 구성과 ContextInterceptor, requestInterceptor, Context, Connector의 구조를 정의한다. 디버깅 레벨, webapps, conf, logs의 기본 디렉토리, working 디렉토리 이름&lt;/li&gt;&lt;li&gt;ContextInterceptor - 톰캣의 시작 및 종료 이벤트를 감시한다.&lt;/li&gt;&lt;li&gt;RequestInterceptor - 톰캣이 서비스하는 동안에 다양한 사용자의 요청 단계를 감시한다.&lt;/li&gt;&lt;li&gt;Connector - 클라이언트와의 커넥션을 표현한다. 컨넥터 객체는 다양한 클라이언들로의 연결된 소켓에서 요청을 읽고, 응답을 기록하기 위한 톰캣 워커 스래드를 관리하는 역할을 한다. hanlder 클래스, TCP/IP 포트, TCP/IP backlog&lt;/li&gt;&lt;li&gt;Context - 각 Conntext는 톰캣의 디렉토리 패스를 나타내는데, 이 디렉토리는 웹 응용프로그램의 디렉토리를 의미한다. 컨텍스트가 존재하는 디렉토리 패스, 디버깅 레벨, 서블릿 리로딩 플래그&lt;/li&gt;&lt;/ul&gt;web.xml&lt;br /&gt;&lt;ul&gt;&lt;li&gt;웹 응용프로그램을 위한 그래픽 아이콘 파일들&lt;/li&gt;&lt;li&gt;웹 응용프로그램에 관한 기술(기능, 작성자 등)&lt;/li&gt;&lt;li&gt;응용프로그램이 분산 처리될 수 있는지 여부&lt;/li&gt;&lt;li&gt;응용프로그램의 파라메터 정보&lt;/li&gt;&lt;li&gt;등록된 서블릿 이름&lt;/li&gt;&lt;li&gt;서블릿 로드 순서&lt;/li&gt;&lt;li&gt;URL 매핑 규칙&lt;/li&gt;&lt;li&gt;세션 디폴트 타임 아웃 시간&lt;/li&gt;&lt;li&gt;세션 구성&lt;/li&gt;&lt;li&gt;서블릿/ JSP 정의&lt;/li&gt;&lt;li&gt;서블릿/ JSP 매핑&lt;/li&gt;&lt;li&gt;MIME 타입 매핑&lt;/li&gt;&lt;li&gt;에러 페이지&lt;/li&gt;&lt;li&gt;인사말 파일 리스트&lt;/li&gt;&lt;li&gt;보안&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-8488878455268311700?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/8488878455268311700/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/jsp-tomcat-%EC%84%A4%EC%A0%95%ED%8C%8C%EC%9D%BC-%EB%B6%84%EC%84%9D.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8488878455268311700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8488878455268311700'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/jsp-tomcat-%EC%84%A4%EC%A0%95%ED%8C%8C%EC%9D%BC-%EB%B6%84%EC%84%9D.html' title='jsp tomcat 설정파일 분석'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3662860140773594094</id><published>2010-09-14T17:31:00.000+09:00</published><updated>2011-01-30T14:08:43.178+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>java URLConnetion</title><content type='html'>&lt;ul&gt;&lt;li&gt;void connect() - URL로 기술된 리소스에 연결을 설정한다.&lt;/li&gt;&lt;li&gt;boolean getAllowUserInteraction() - 사용자 인터랙션이 허용되는지 알아본다.&lt;/li&gt;&lt;li&gt;String getContentEncoding() - 헤더에 포함되어 있는 인코딩 필드의 값을 알아본다.&lt;/li&gt;&lt;li&gt;int getContentLength() - 헤더의 content_length 필드 값을 알아보낟.&lt;/li&gt;&lt;li&gt;String getContentType() - MIME 타입을 알아본다.&lt;/li&gt;&lt;li&gt;long getDate() - 헤더의 data 필드 값을 알아본다.&lt;/li&gt;&lt;li&gt;InputStream getInputStream() - 커넥션에서 데이터를 읽기 위한 입렭스트림을 얻는다.&lt;/li&gt;&lt;li&gt;long getLastModified() - 헤더의 last-modified 필드 값을 얻어온다.&lt;/li&gt;&lt;li&gt;OutputStream getOutputStream() - 커넥션에 데이터를 전달하기 위한 출력 스트림을 얻는다.&lt;/li&gt;&lt;li&gt;URL getURL() - URLConnenction의 URL을 얻어온다.&lt;/li&gt;&lt;li&gt;boolean getUseCaches() - useCaches 필드 값을 얻어온다.&lt;/li&gt;&lt;li&gt;static String guessContenttypeFromStream(InputStream is) - 입력 스트림을 이용해서 MIME 타입을 알아본다.&lt;/li&gt;&lt;li&gt;static void setDefaltAllowUserInteraction(boolean defaultallowuserinteraction) - 사용자 인터랙션을 허용할 것인지 여부의 디폴트 값을 설정한다.&lt;/li&gt;&lt;li&gt;static void setDefaultRequestProperty(String key, String value) - 일반 요청 속성의 디폴트 값을 설정한다.&lt;/li&gt;&lt;li&gt;void setDefaultUseChches(boolean defaultusecaches) - 디폴트로 캐쉬를 사용할 것인지 여부를 설정한다.&lt;/li&gt;&lt;li&gt;void setDoInput(boolean doinput) - 원격 객체에서 데이터를 읽어올 것인지 여부를 설정한다.&lt;/li&gt;&lt;li&gt;void setDoOutput(boolean doOutput) - 원격 객체에 데이터를 전달할지 여부를 설정한다.&lt;/li&gt;&lt;li&gt;staticc void setFileNameMap(FileNameMap map) - FileNameMap을 설정한다.&lt;/li&gt;&lt;li&gt;void setIfModifiedSince(long ifmodifiedsince) -&amp;nbsp; ifModefiedSince 필드 값을 설정한다.&lt;/li&gt;&lt;li&gt;void setRequestProperty(String key, String value) - 일반요청속성을 설정한다.&lt;/li&gt;&lt;li&gt;void setUseCaches(boolean usecaches) - 캐쉬 사용 여부를 설정한다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3662860140773594094?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3662860140773594094/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/java-urlconnetion.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3662860140773594094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3662860140773594094'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/java-urlconnetion.html' title='java URLConnetion'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-5658674230718107422</id><published>2010-09-14T17:15:00.000+09:00</published><updated>2011-01-30T14:08:42.315+09:00</updated><title type='text'>java File</title><content type='html'>File&lt;br /&gt;&lt;ul&gt;&lt;li&gt;File(File parent, String child) - parent 디렉토리의 child라는 파일의 File객체를 생성한다.&lt;/li&gt;&lt;li&gt;File(String parent, String child) - parent 디렉토리 패스와 child라는 파일의 File 객체를 생성한다.&lt;/li&gt;&lt;li&gt;File(String pathname) - pathname에 해당되는 파일의 File 객체를 생성한다.&lt;/li&gt;&lt;li&gt;boolean canRead() - 파일을 읽을 수 있는지 여부를 리턴한다.&lt;/li&gt;&lt;li&gt;boolean canWrite() - 파일을 기록할 수 있는지 여부를 리턴한다.&lt;/li&gt;&lt;li&gt;boolean createNewFile() - 주어진 파일이 없으면 자동적으로 빈 파일을 생성한다.&lt;/li&gt;&lt;li&gt;boolean delete() - 파일이나 디렉토리를 삭제한다.&lt;/li&gt;&lt;li&gt;void deleteOnExit() - 자바 가상 머신이 끝날 때 파일을 삭제한다.&lt;/li&gt;&lt;li&gt;boolean exists() - 파일이 존재하는지 알아본다.&lt;/li&gt;&lt;li&gt;File getAbsoluteFile() - 파일의 절대 패스를 알아본다.&lt;/li&gt;&lt;li&gt;String getName() - 파일이나 디렉토리 이름을 리턴한다.&lt;/li&gt;&lt;li&gt;String getParent() - 부모 디렉토리를 리턴하다.&lt;/li&gt;&lt;li&gt;File getParentFile() - 부모 디렉토리를 File 형태로 리턴한다.&lt;/li&gt;&lt;li&gt;String getPath() - 패스를 문자열 형태로 리턴한다.&lt;/li&gt;&lt;li&gt;boolean isDirectory() - 디렉토리인지 여부를 리턴한다.&lt;/li&gt;&lt;li&gt;boolean isFile() - 파일인지 여부를 리턴한다.&lt;/li&gt;&lt;li&gt;boolean isHidden() - 숨겨진 파일인지 여부를 리턴한다.&lt;/li&gt;&lt;li&gt;long length() - 파일 크기를 리턴한다.&lt;/li&gt;&lt;li&gt;Stringp[] list() - 디렉토리인 경우 포함되어 있는 파일과 디렉토리 이름을 배열 형태로 리턴한다.&lt;/li&gt;&lt;li&gt;File[] listFiles() - 디렉토리인 경우 포함되어 있는 파일과 디렉토리를 File배열 형태로 리턴한다.&lt;/li&gt;&lt;li&gt;boolean mkdir() - 디렉토리를 만든다.&lt;/li&gt;&lt;li&gt;boolean renameTo(File dest) - 이름을 변경한다.&lt;/li&gt;&lt;li&gt;boolean setLastModified(long time) - 마지막으로 변경된 날짜를 변경한다.&lt;/li&gt;&lt;li&gt;boolean setReadOnly() - 읽기 전용으로 파일 속성을 변경한다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-5658674230718107422?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/5658674230718107422/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/java-file.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5658674230718107422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5658674230718107422'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/09/java-file.html' title='java File'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1846141385948001525</id><published>2010-08-30T19:47:00.000+09:00</published><updated>2011-01-30T14:08:42.257+09:00</updated><title type='text'>java 입출력2</title><content type='html'>FileInputStream&lt;br /&gt;&lt;ul&gt;&lt;li&gt;FileInputStream(File file) - File 객체를 이용해서 FileInputStream 객체를 새성한다.&lt;/li&gt;&lt;li&gt;FileInputStream(FileDescriptor fdObj)&amp;nbsp; - FileDescriptor 객체를 이용해서 FileInputStream 객체를 생성한다.&lt;/li&gt;&lt;li&gt;FileInputStream(String name) - 파일 이름을 이용해서 FileInputStream 객체를 생성한다.&lt;/li&gt;&lt;li&gt;void close() - 스트림을 닫는다.&lt;/li&gt;&lt;li&gt;int read() - 한 바이트를 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;int read(byte[] b, int off, int len) - len개의 바이트를 읽어서 배열 b[off]에서부터 저장한다. 리턴 값은 읽은 바이트 수이다.&lt;/li&gt;&lt;li&gt;int read(byte[] b) - 배열의 크기만큼의 바이트를 읽는다. 리턴 값은 읽은 바이트 수이다.&lt;/li&gt;&lt;/ul&gt;FileOutputStream&lt;br /&gt;&lt;ul&gt;&lt;li&gt;FileOutputSteam(File file) - File 객체를 이용해서 FileOutputStream객체를 생성한다.&lt;/li&gt;&lt;li&gt;FileOutputStream(FileDescriptor fdObj) - FileDescriptor 객체를 이용해서 FileOutputStream 객체를 생성한다.&lt;/li&gt;&lt;li&gt;FileOutputStream(Stringn name, boolean append) - 파일 이름을 이용해서 FileOutputStream 객체를 생성한다. 생성된 객체는 append값에 따라 기존 파일에 내용을 추가할 것인지, 아닌지를 결정한다. append가 false 이면 기존 내용은 삭제하고 새로운 내용이 기록된다.&lt;/li&gt;&lt;li&gt;FileOutputStream(String name) - 디폴트로 append가 false인 FileOutputStream 객체를 생성한다.&lt;/li&gt;&lt;li&gt;void close() - 스트림을 닫는다.&lt;/li&gt;&lt;li&gt;void write(byte[] b, int off, int len) - 배열 b[off]에서부터 len개의 바이트를 출력한다.&lt;/li&gt;&lt;li&gt;void write(byte[] b) - 배열 b의 내용을 출력한다.&lt;/li&gt;&lt;li&gt;void write(int b ) - 한 바이트를 출력한다.&lt;/li&gt;&lt;/ul&gt;FileReader&lt;br /&gt;&lt;ul&gt;&lt;li&gt;FileReader(File file) - File 객체를 사용해서 FileReader를 생성한다.&lt;/li&gt;&lt;li&gt;FileReader(FileDescriptor fd)- FileDescriptor를 이용해서 FileReader를 생성한다.&lt;/li&gt;&lt;li&gt;FileReader(String fileName) -&amp;nbsp; 파일 이름을 이용해서 FileReader를 생성한다.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;FileWriter&lt;br /&gt;&lt;ul&gt;&lt;li&gt;FileWriter(File file) - File 객체를 이용해서 FileWriter를 생성한다.&lt;/li&gt;&lt;li&gt;FileWriter(FileDescriptor fd) - FileDescriptor - 객체를 이용해서 FileWriter객체를 생성한다.&lt;/li&gt;&lt;li&gt;Filewriter(String name, boolean append) - 파일 이름을 이용해서 FileWriter를 생성한다. append 값이 true이면 현재 파일에 내용을 추가한다. false이면 현재 파일 내용은 삭제되고, 새로운 내용이 파일에 기록된다.&lt;/li&gt;&lt;li&gt;Filewirter(String fileName) - append 값이 false인 FileWriter객체를 생성한다.&lt;/li&gt;&lt;/ul&gt;ObjectInputStream&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ObjectInputStream(InputStream in) - ObjectInputStream 객체를 생성한다.&lt;/li&gt;&lt;li&gt;void close() - 스트림을 닫는다.&lt;/li&gt;&lt;li&gt;int read() - 한 바이트를 읽는다.&lt;/li&gt;&lt;li&gt;int read(byte[] b, int off, int len) - 바이트 배열을 이용해서 읽는다.&lt;/li&gt;&lt;li&gt;boolean readBoolean() - boolean 값을 읽는다.&lt;/li&gt;&lt;li&gt;byte readbyte() - byte값을 읽는다.&lt;/li&gt;&lt;li&gt;char readchar() - 문자를 읽는다.&lt;/li&gt;&lt;li&gt;double readDouble() - double 값을 읽는다.&lt;/li&gt;&lt;li&gt;float readFloat() - float 값을 읽는다.&lt;/li&gt;&lt;li&gt;int readInt() - int 값을 읽는다.&lt;/li&gt;&lt;li&gt;long readLong() - long 값을 읽는다.&lt;/li&gt;&lt;li&gt;Object readObject() - 객체를 읽는다.&lt;/li&gt;&lt;li&gt;short readShort()&amp;nbsp; - short값을 읽는다&lt;/li&gt;&lt;li&gt;int readUnsinedByte() - 부호 없는 byte 값을 읽는다.&lt;/li&gt;&lt;li&gt;int readUnsinedShort() - 부호 없는 short 값을 읽는다.&lt;/li&gt;&lt;li&gt;String readUTF() - UTF 인코딩을 읽어서 문자열 타입으로 리턴한다.&lt;/li&gt;&lt;/ul&gt;ObjectOutputStream(OutputStream out) -&amp;nbsp; ObjectOutputStream 을 생성한다.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ObjectOutputStream(OutputStream out)&amp;nbsp; - ObjectOutputStream을 생성한다.&lt;/li&gt;&lt;li&gt;void close() - 스트림을 닫는다.&lt;/li&gt;&lt;li&gt;void flush() - 플러쉬한다.&lt;/li&gt;&lt;li&gt;void write(byte[] b, int off, int len) - 배열 b[off]에서부터 len개의 바이트를 출력한다.&lt;/li&gt;&lt;li&gt;void wirte(byte[] b) - 바이트 배열을 출력한다.&lt;/li&gt;&lt;li&gt;void write(int data) - 바이트를 출력한다.&lt;/li&gt;&lt;li&gt;void writeBoolean(boolean data) - boolean 값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeBytes(String data) - 문자열 바이트의 연속으로 출력한다.&lt;/li&gt;&lt;li&gt;void writeChar(int date) - 문자를 출력한다.&lt;/li&gt;&lt;li&gt;void writeChars(String data) - 문자열을 출력한다.&lt;/li&gt;&lt;li&gt;void writeDouble(double data) - double값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeFloat(float data) - float값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeInt(int data) - int값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeLong(long data) - long값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeObject(Object obj) - 객체를 출력한다.&lt;/li&gt;&lt;li&gt;void writeShort(int data) - short 값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeUTF(String data) - 문자열을 UTF 인코딩으로 출력한다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1846141385948001525?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1846141385948001525/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/08/java-%EC%9E%85%EC%B6%9C%EB%A0%A52.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1846141385948001525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1846141385948001525'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/08/java-%EC%9E%85%EC%B6%9C%EB%A0%A52.html' title='java 입출력2'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3530690793921634412</id><published>2010-07-24T22:31:00.000+09:00</published><updated>2011-01-30T14:08:42.209+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>jsp JSTL</title><content type='html'>&lt;P&gt;주의사항&lt;/P&gt;&lt;P&gt;1. 태그 이름과 문법&lt;/P&gt;&lt;P&gt;TLD에는 속성이 필수인지 옵션 사항인지, 태크가 몸체를 가질 수 있는지, 가진다면 그 안에 들어갈 수 있는 하위 태그는 무었이 있는지, 태그 안에 들어가는 속성 타입은 어떻게 되는지, 속성에 표현식을 쓸 수 있는지 아니면 그냥 문자열만 써야 하는지 등&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. 라이브러리 URI&lt;/P&gt;&lt;P&gt;taglib지시자에 바로 이 URI값을 사용합니다. 컨테이너는 이 값으로 웹 어플리케이션에 있는 여러 TLD파일 가운데서 정확한 것으로 찾아갑니다. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;TLD&lt;/P&gt;&lt;P&gt;&amp;lt;tlib-version&amp;gt;&amp;lt;/tlib-version&amp;gt; 태그 라이프러리 버전을 선언하는 곳&lt;/P&gt;&lt;P&gt;&amp;lt;short-name&amp;gt;&amp;lt;/short-name&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;function&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;function-class&amp;gt;&amp;lt;/function-class&amp;gt;&lt;br /&gt;&amp;lt;function-signature&amp;gt;&amp;lt;/function-signature&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/function&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;uri&amp;gt;&amp;lt;/uri&amp;gt; taglib지시자에서 사용할 자신을 나타내는 유일한 이름&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;lt;tag&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;description&amp;gt;&amp;lt;/description&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;lt;name&amp;gt;&amp;lt;/name&amp;gt; 태그안에 쓸 이름&lt;/P&gt;&lt;P&gt;&amp;lt;tag-class&amp;gt;&amp;lt;/tag-class&amp;gt; jsp에서 태그를 사용한 경우 컨테이너가 호출할 클래스&lt;/P&gt;&lt;P&gt;&amp;lt;body-content&amp;gt;&amp;lt;/body-content&amp;gt; 태그의 몸체&lt;/P&gt;&lt;P&gt;empty : 몸체 없음, scriptless :스크립팅은 올 수 없음, tagdependent : 문자를 무조건 텍스트로 취급, JSP : jsp 안에 들어 갈 수 있ㄴ은 것이라면 무엇이든지 가능.&lt;/P&gt;&lt;P&gt;&amp;lt;attribute&amp;gt; 태그의 속성이 있다면 속성을 정의 하는 곳&lt;/P&gt;&lt;P&gt;&amp;lt;name&amp;gt;&amp;lt;/name&amp;gt; 속성 이름&lt;/P&gt;&lt;P&gt;&amp;lt;required&amp;gt;&amp;lt;/required&amp;gt; 필수 여부&lt;/P&gt;&lt;P&gt;&amp;lt;rtexprvalue&amp;gt;&amp;lt;/rtexprvalue&amp;gt; 속성에는 런타임 표현값이 들어간다&lt;/P&gt;&lt;P&gt;&amp;lt;/attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/tag&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;커스텀 태그 핸들러&lt;/P&gt;&lt;P&gt;SimpleTagSupport 를 상속하고&lt;/P&gt;&lt;P&gt;public void doTog() throws JspException, IOException&lt;/P&gt;&lt;P&gt;: jsp가 태그를 실행하면 컨테이너는 doTag() 메소드 호출&lt;/P&gt;&lt;P&gt;public void setUser(String user)&lt;/P&gt;&lt;P&gt;: 태그 속성값을 설정하기 위하여 컨테이너가 호출하는 메소드&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;몸체가 없는 태그 호출하는 3가지 방법 &amp;lt;body-content&amp;gt; empty&amp;lt;/body-content&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;mine:advice user="${userName}" /&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;mine:advice user="${userName}" /&amp;gt;&amp;lt;/mine:advice&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;mine:advice&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;jsp:attribute name="user"&amp;gt;${userName}&amp;lt;/jsp:attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/mine:advice&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;심플태크 핵심 정리&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;태그 핸들러는 태그 기능을 자바 태그 핸들러 클래스로 구현하지만, 태그 파일은 패이지로 태그 기능을 구현한다는 차이가 있습니다.&lt;/LI&gt;&lt;LI&gt;태그 핸들러는 다음 두 가지 타입이 있습니다.: 클래식, 심플&lt;/LI&gt;&lt;LI&gt;심플 태그 핸들러를 만들려면, SimpleTagSupport를 상속하면 됩니다.&lt;/LI&gt;&lt;LI&gt;심플 태그 핸들러를 배포하려면, JSTL이나 다른 커스텀 태그 라이브러리를 배포할 때 사용하던 &amp;lt;tag&amp;gt;항목을 사용해서 TLD를 정의해야 합니다.&lt;/LI&gt;&lt;LI&gt;몸체가 있는 태그를 사용하려면, TLD&amp;lt;tag&amp;gt;항목의&amp;lt;body-content&amp;gt;를 "empty"가 아닌 다른 값으로 설정해야 합니다. 그 다음 몸체를 실행 하려면 getJspBody().invoke()를 호출&lt;/LI&gt;&lt;LI&gt;사실 SimpleTag 인터페이스에 정의된 메소드 대부분이 SimpleTagSupport클래스에 구현되어 있습니다. 여기에 추가로 getJspBody()를 포함한 3가지 편리한 메소드를 제공합니다. getJspBody를 이용하여 태그 바디 내용을 읽을 수 있습니다.&lt;/LI&gt;&lt;LI&gt;심플 태그 생명 주기 : 컨테이너는 심플 태그 핸들러를 재사용하지 않습니다. 따라서 JSP에서 태그를 호출할 때마다, 새로운 태그 핸들러 인스턴스가 생성되며, setJspContext() 메소드도 매번 호출됩니다. 그 다음 다른 태그 안에서 태그를 호출했다면, setParent() 메소드가 호출됩니다. 호출할 때 태그 속성이 있다면 빈 스타일의 속성 설정자가 속성별로 호출됩니다. 태그 몸체가 있다면, setJspBody()메소드가 호출됩니다. 제일 마지막으로 doTag()메소드가 호출되고 나면, 모든 작업이 끝이 납니다. 재사용하지 않는다고 했으니 당연히 destroy()가 호출&lt;/LI&gt;&lt;LI&gt;태그 몸체가 있을 때만 setJspBody() 메소드가 호출됩니다.&lt;/LI&gt;&lt;LI&gt;심플 태그 doTag() 메소드에서도 태그 몸체에서 쓰도록 속성을 정의할수 있다. getJspContext().setAttribute()메소드를 호출한 다음 getJspBody().invoke()를 호출&lt;/LI&gt;&lt;LI&gt;doTag() 메소드를 보면 JspException IOException을 던지도록 되어 있습니다. 따라서 JspWriter의 writer메소드를 쓸때 try/catch로 둘러 쌀 필요가 없다.&lt;/LI&gt;&lt;LI&gt;심플 태그에서 바디 내용을 반속해서 출력하려면, 루핑문 안에서 getJspBody().invoke()를 호출하면 됩니다.&lt;/LI&gt;&lt;LI&gt;태그 속성을 정의하려면, 먼저 TLD &amp;lt;attribute&amp;gt;항목을 정의하고, 태그 핸들러 클래스에 빈 스타일 속성 설정자를 만들어야 합니다. JSP에서 태그를 호출하면 컨테이너가 자동으로 doTag()전에 설정자를 호출합니다.&lt;/LI&gt;&lt;LI&gt;getJspBody()의 반환값인 JspFragment 객체에는 다음 두 메소드가 있습니다. invoke(java.io.Writer), getJspContext() 여기서 getJspContext() 메소드는 태그 핸들러가 PageContext API를 사용할 수 있는 JspContext를 리턴합니다.&lt;/LI&gt;&lt;LI&gt;응답 출력 스트림으로 그냥 출력하려면, invoke()메소드에 null을 넘기면 되고, 몸체 내용을 직접 생성하려면 새로운 Writer를 넘기면 됩니다.&lt;/LI&gt;&lt;LI&gt;현재 페이지의 치리를 중지하려면 SkipPageException을 던지면 됩니다. 다른 페이지에서 이 페이지를 포함한다면, 포함된 파일의 처리가 중간에서 멈추지만, 포함한 원 페이지는 끝까지 멈춤 없이 실행됩니다.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DynamicAttributes&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;DynamicAttributes 인터페이스를 사용하면 아무리 태그 속성이 많아도 태그 핸들러 클래스에서 다 처리할 수 있습니다.&lt;/LI&gt;&lt;LI&gt;TLD 태구 선언 부분에 &amp;lt;dynamic-attributes&amp;gt;항목이 꼭 있어야 합니다.&lt;/LI&gt;&lt;LI&gt;명시적으로 선언한 태그 속성은 설정자(setter)메소드가 반드시 있어야 합니다.&lt;/LI&gt;&lt;LI&gt;일반적으로 setDynamicAttribute()메소드를 사용해서 동적인 속성의 이름/값을 저장하려면 hashmap을 사용합니다.&lt;/LI&gt;&lt;LI&gt;태그 파일에도 동적인 속성을 사용할 수 있습니다.&lt;/LI&gt;&lt;LI&gt;태그 지시자에 dynamic-attributes 속성을 사용하세요.&lt;/LI&gt;&lt;LI&gt;dynamic-attributes에 들어 있는 값은 동적인 속성의 hashmap입니다.&lt;/LI&gt;&lt;LI&gt;일반적으로 위의 맵에서 값을 뽑아낼 때는 JSTL forEach 커스텀 태그를 사용합니다.&lt;/LI&gt;&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3530690793921634412?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3530690793921634412/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/07/jsp-jstl.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3530690793921634412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3530690793921634412'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/07/jsp-jstl.html' title='jsp JSTL'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-389758836337887838</id><published>2010-07-14T16:47:00.000+09:00</published><updated>2011-01-30T14:08:42.153+09:00</updated><title type='text'>보안과 암호학의 모든것</title><content type='html'>&lt;p&gt;1. 비밀키 암호화&lt;br /&gt;1.1 자물쇠와 열쇠&lt;br /&gt;암호화란, 키를 모르고는 절대 비밀 메시지를 알아 낼 수 없는 자물쇠와 그 자물쇠를 푸는 키 둘 다를 의미한다.&lt;br /&gt;암호 사용자란, 메시지의 원래 의미를 숨기려고 암호를 사용하는 사람들이다.&lt;br /&gt;1.2 치환법과 시저암호&lt;br /&gt;암호: 어떤 문장을 암호화 하거나 복호화 하는 방법이다.&lt;br /&gt;평문: 암호화되지 않는 문장&lt;br /&gt;암호문: 암호화된 문장&lt;br /&gt;암호화: 평문을 암호문으로 바꾸는 과정&lt;br /&gt;복호화: 암호문을 평문으로 바꾸는 과정&lt;br /&gt;&lt;br /&gt;1.7&lt;br /&gt;기밀성은 비밀키를 공유한 사람들만 동일한 비밀키로 암호화한 파일을 복호화할 수 있다는 것에 대한 보증이다.&lt;br /&gt;인증은 상대방의 신원에 대한 보증이다. &lt;br /&gt;무결성: 파일이 전송도중에 변경되지 않았다는 것에 대한 보증&lt;br /&gt;MAC (Message Authentication Code)&lt;br /&gt;부인방지: 메시지를 보내는 사람이 파일을 보내지 않고도 파일을 보냈다고 부인할 수 없다는 것에 대한 보증이다.&lt;br /&gt;&lt;br /&gt;1.8 비밀키 교환의 문제점들&lt;br /&gt;&lt;br /&gt;공개키 암호 알고리즘&lt;br /&gt;&lt;br /&gt;Diffie - Hellman - Merkle 키 교환법&lt;br /&gt;&lt;br /&gt;비대칭키 : 암호키와 복호화 키 분리&lt;br /&gt;&lt;br /&gt;2.10 공개키를 사용하면서 얻는 기밀성&lt;br /&gt;공개키로 암호화된 메시지는 공개키에 관계된 개인키로만 복호화할 수 있다. 공개키 알고리즘의 아이디어는 해커가 공개키로 복호화하는 것이 불가능하며, 개인키를 알아내기도 힘들다는 것이다. 공개키는 숨길 필요가 없고, 분배하기 편하기 때문에 비밀키 알고리즘의 방법보다 키 분배 문제가 쉽게 해결된다.&lt;br /&gt;&lt;br /&gt;2.11 공개키를 만드는 수학적 트릭&lt;br /&gt;공개키 암호 알고리즘은 곱셈에 대한 인버스라는 간단한 수학적 개념을 토대로 만들어진다. &lt;br /&gt;대부분의 공개키 암호 시스템은 역으로 계산하는 것이 어렵다는 것을 이용하여 보안성을 강화 시킨다.&lt;br /&gt;&lt;br /&gt;2.12 개인키를 사용하여 전자 서명하기&lt;br /&gt;개인키로 암호화 하는 것은 인증, 무결성, 부인 방지 기능을 제공해 준다.&lt;br /&gt;RSA의 경우 개인키로 암호화하는 것은 '서명'과 같고, 공개키로 암호화 하는 것은 '서명 확인'과 같다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2.13 해쉬: 키 없는 메시지 다이제스트 알고리즘&lt;/p&gt;&lt;p&gt;메시지 다이제스트 알고리즘은 공개키 암호 시스템을 더 효과적으로 만든다.&lt;/p&gt;&lt;p&gt;메시지 다이제스트 알고리즘, 해쉬 알고리즘, 전자 지문, 암호학적 체크섬&lt;/p&gt;&lt;p&gt;공개키 알고리즘으로 암호화 복호화 하는것은 속도가 늦기 때문에, 암호 학자들은 메시지를 축약하는 방법을 발명했다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2.14 메시지 다이제스트 알고리즘을 통한 확신&lt;/p&gt;&lt;p&gt;키 없는 해쉬 또는 메시지 다이제스트&lt;/p&gt;&lt;p&gt;키 있는 메시지 다이제스트&lt;/p&gt;&lt;p&gt;키없는 다이제스트 알고리즘을 통한 확신 : 단방향성, 약한출돌, 강한 충돌&lt;/p&gt;&lt;p&gt;선택 MAC 공격 : 해커가 비밀키를 얻은 후에 어떤 평문에 대해서도 MAC문을 얻을수 있다.&lt;/p&gt;&lt;p&gt;존재 MAC 공격 : 비밀키를 알지 못하더라도 해커가 어떠한 유요한 평문/MAC 쌍을 위조할 수 있다.&lt;/p&gt;&lt;p&gt;MICs나 MDCs의 보안성은 단방향성, 약한 충돌방지, 강한 충돌 방지에 의해 결정된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2.15 비밀키, 공개키, 메시지 다이제스트 비교하기&lt;/p&gt;&lt;p&gt;암호화 속도 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;다이제스트 알고리즘 &amp;gt; DES &amp;gt;&amp;gt; RSA&lt;/p&gt;&lt;p&gt;키 길이&lt;br /&gt;&lt;/p&gt;&lt;p&gt;DES(56bit) RSA(512bit)&lt;/p&gt;&lt;p&gt;키분배의 편리함&lt;/p&gt;&lt;p&gt;공개키 &amp;gt;&amp;gt; 비밀키&lt;/p&gt;&lt;p&gt;암호적 확신&lt;/p&gt;&lt;p&gt;기밀성 : 비밀키, 공개키&lt;/p&gt;&lt;p&gt;인증 : 비밀키, 공개키&lt;/p&gt;&lt;p&gt;무결성 : 비밀키, 공개키&lt;/p&gt;&lt;p&gt;부인방지 : 공개키&lt;/p&gt;&lt;p&gt;비밀키(대칭적)&lt;/p&gt;&lt;p&gt;공개키(비대칭적)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3.공개키의 배포&lt;/p&gt;&lt;p&gt;공개키가 공개된 상태로 배포할 때, 이 공개키를 받는 사람은 지금 받고 있는 공개키가 확실히 공개키인가를 확인해야 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3.16 전자 인증&lt;/p&gt;&lt;p&gt;전자인증과 전사 서명은 개인키 암호화를 통해서 서명되어져 있다.&lt;/p&gt;&lt;p&gt;전자인증 공격: 전자인증의 생성자 공격, 악의적인 인증 생성자, 전자 인증 사용자 공격, 개인키의 무단 사용&lt;/p&gt;&lt;p&gt;전자인증 사용자의 요구&lt;/p&gt;&lt;p&gt;1, 회수. 2, 인증. 3, 통지&lt;/p&gt;&lt;p&gt;전자 인증은 공개키를 안전하게 전송하기 위한 적절한 방법으로, 믿을만한 써드 파티에 의해서 서명되어진 형태로 사용된다. 그리고, 전자 인증의 상단에는 발행인과 수령인, 공개키가 첨부된 형태, 수령인의 공개키, 그리고 인증의 유효기간을 포함한 평문이 있고, 전자 인증의 하단에는 상단의 발행인이 서명한 해쉬, 전자인증의 소비자는 인증을 믿기 위해서 발행인의 공개키 복사본을 믿어야 한다. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3.17 X.509 공개키 시스템&lt;/p&gt;&lt;p&gt;인증기관 : 응용 프로그램, 인증, 발행, 취소를 관리한다.&lt;/p&gt;&lt;p&gt;낮은 인증이라는 것은 CA가 지원자가 원하는 사람인지를 알아보지 않는다는 것을 의미한다.&lt;/p&gt;&lt;p&gt;대부분 CA에서는 신용카드를 요청함으로써 신용카드에 있는 이름으로 낮은 인증 보장을 확인하게 된다.&lt;/p&gt;&lt;p&gt;높은 인증 보장이란, CA가 지원자가 유효한지를 판가름 하는데에 다른 방법을 사용한다는 것을 의미한다. 이 때문에 높은 인증 보장은 비용이 많이 들게 된다.&lt;/p&gt;&lt;p&gt;CA는 하위 CA를 두어 역할을 분담해서 처리할 수가 있는데, 예를 들면, PKI 시스템에서는 등록기관을 정의함으로 인해서 CA의 부담을 줄여주게 된다. 그리고, 인증 페기 리스트의 배포에 관한 것도 하위 CA에게 분담하게 된다.&lt;/p&gt;&lt;p&gt;루트 CA는 자신에 의해서 인증을 승인하기도 하는데, 이 같은 경우에는 추가적인 확인 없어도 유효한 것처럼 받아들여진다. 그리고 상업적인 루트 CA의 인증들은 다른 신뢰성 있는 방법으로 배포되는데, 그것은 네스케이프와 같은 인터넷 브라우저에 포함되는 형대로 배포가 된다. 그리고 회사 루트 CA는 다른 방법으로 인증을 배포할 수도 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3.18 PGP와 믿음성 있는 웹&lt;/p&gt;&lt;p&gt;PGP의 전자 인증은 하나 이상의 서명을 포함할 수 있다는 것을 제외하고는 X.509의 자신이 승인한 인증과 유사하다. 하지만, X.509의 중앙집중식 제어(CA)와 상대적으로, PGP는 분산 신용 모델을 사용하게 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. Real-Worl 시스템&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4.19 보안 전자 우편&lt;/p&gt;&lt;p&gt;1. 일회용 비밀키(세션키)생성&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. 세션키를 통한 전자우편 암호화&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 수신자의 공개키를 통한 세션키 암호화&lt;/p&gt;&lt;p&gt;4. 송신자의 개인키 서명&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;암호화를 한 후 서명을 하는 경우 : 메세지를 복호화 하기 전에 서명을 승인하여 수령여부를 판단한다. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;서명을 후 암호화 하는 경우 : 메세지 손상이 되어서는 안될 경우&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4.20 Secure Socket Layer(SSL)와 Transport Layer Security(TLS)&lt;/p&gt;&lt;p&gt;SSL : 인증 기밀성 메시지 무결성&lt;/p&gt;&lt;p&gt;Hello와 협상 매개변수&lt;/p&gt;&lt;p&gt;클라이언트는 서버에 접속하기 위해 초기화를 하고, 암호화 매개변수를 제안한다.&lt;/p&gt;&lt;p&gt;서버는 암호화 목록을 답변한다.&lt;/p&gt;&lt;p&gt;전자 인증 교환&lt;/p&gt;&lt;p&gt;SSL은 클라이언트가 서버를 인증하게 된다.&lt;/p&gt;&lt;p&gt;키합의(교환)&lt;/p&gt;&lt;p&gt;인증&lt;/p&gt;&lt;p&gt;기밀성과 무결성&lt;/p&gt;&lt;p&gt;서버&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. 동일한 압축함수를 사용하여 메시지를 압축한다.&lt;/p&gt;&lt;p&gt;2. HMAC을 만들기 위해서 비밀 HMAC 키와 압축 데이터를 해쉬한다.&lt;/p&gt;&lt;p&gt;3. 앨리스로부터 밥에게 보내기 위해서 사용되는 DES 키를 통해 압축된 데이터와 HMAC의 조합을 암호화 한다.&lt;/p&gt;&lt;p&gt;클라이언트&lt;/p&gt;&lt;p&gt;1. 앨리스로부터 밥에게 보내는 DES 키로 HMAC과 압축된 데이터를 조합을 복호화 한다.&lt;/p&gt;&lt;p&gt;2. 두 가지 과정을 통해서 인증을 수행하게 되는데, 우선 비밀 HMAC 키를 압축된 데이터를 복호화한 후 해쉬를 하게 되고, 그 후에 새로운 해쉬로부터 나온 HMAC을 과정1에서 얻은 HMAC과 비교하게 된다.&lt;/p&gt;&lt;p&gt;3. 압축을 풀어서 평문을 복구시킨다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. 21IPsec 개요&lt;/p&gt;&lt;p&gt;사용자 인증과 IKE를 사용한 키교환&lt;/p&gt;&lt;p&gt;SA단계&lt;/p&gt;&lt;p&gt;Part1 : 사용자 인증과 IKE를 사용한 키교환&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1단계 : 키 합의와 인증&lt;/p&gt;&lt;p&gt;평문 메시지로 암호화 매개변수와 공유 비밀키를 협상하고 교환하게 된다.&lt;/p&gt;&lt;p&gt;2단계 : 암호화 매개변수 설정&lt;/p&gt;&lt;p&gt;Part2 : 데이터 기밀성과 메시지 또는 파일 전송의 무결성&lt;/p&gt;&lt;p&gt;프로토콜과 모드&lt;/p&gt;&lt;p&gt;프로토콜 속성은 데이터 패킷이 기밀성 또는 메시지 무결성에 의해서 안전한지 여부&lt;/p&gt;&lt;p&gt;모드 속성은 얼마나 많은 데이터 패킷이 승인되어 안전한지 여부&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ESP는 기밀성을 제공하지만, AH는 제공하지 않는다. 터널 모드는 전송 모드보다 많은 데이터를 보호한다.&lt;/p&gt;&lt;p&gt;VPN&lt;/p&gt;&lt;p&gt;PPTP, L2TP (PPTP+L2F)&lt;/p&gt;&lt;p&gt;제어관리&lt;/p&gt;&lt;p&gt;셀렉터&lt;/p&gt;&lt;p&gt;데이터의 송신지&lt;/p&gt;&lt;p&gt;데이터의 수신지&lt;/p&gt;&lt;p&gt;스프레드시트&lt;/p&gt;&lt;p&gt;데이터를 보낸 사람의 이름&lt;/p&gt;&lt;p&gt;송신자 포트&lt;/p&gt;&lt;p&gt;수신자 포트&lt;/p&gt;&lt;p&gt;제거 : 외부로 패킷을 빠져나가는 것을 허락하지 않는 것.&lt;/p&gt;&lt;p&gt;처리 : SPD가 데이터 패킷에 처리하는 보호규칙과 동일하다는 것&lt;/p&gt;&lt;p&gt;우회 : IPsec을 처리하지 않고 데이터 패킷을 내보내거나 받는 것을 허락&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4.22 암호화 공격&lt;/p&gt;&lt;p&gt;재전송 공격&lt;/p&gt;&lt;p&gt;맨 인 더 미들 공격&lt;/p&gt;&lt;p&gt;메모리에서 키 찾기&lt;/p&gt;&lt;p&gt;컷앤드페이스트 공격&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-389758836337887838?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/389758836337887838/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/07/%EB%B3%B4%EC%95%88%EA%B3%BC-%EC%95%94%ED%98%B8%ED%95%99%EC%9D%98-%EB%AA%A8%EB%93%A0%EA%B2%83.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/389758836337887838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/389758836337887838'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/07/%EB%B3%B4%EC%95%88%EA%B3%BC-%EC%95%94%ED%98%B8%ED%95%99%EC%9D%98-%EB%AA%A8%EB%93%A0%EA%B2%83.html' title='보안과 암호학의 모든것'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3597941243525763675</id><published>2010-07-12T16:59:00.000+09:00</published><updated>2011-01-30T14:08:42.070+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>java 입출력</title><content type='html'>1.스트림&lt;br /&gt;&lt;ul&gt;&lt;li&gt;바이트, 숫자 - 바이트 스트림&lt;/li&gt;&lt;li&gt;문자, 텍스트 - 문자 스트림&lt;/li&gt;&lt;/ul&gt;바이트 입출력&lt;br /&gt;InputStream -&amp;gt; Java program -&amp;gt; OutputStream&lt;br /&gt;문자 입출력&lt;br /&gt;Reader -&amp;gt;Java program -&amp;gt;Writer&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;데이터 싱크 스트림 - 데이터를 근원지에서 직접 읽거나, 목적지에 기록하는 클래스들&lt;/li&gt;&lt;li&gt;데이터 프로세싱 스트림 - 다른 스트림을 이용해서 중간에서 어떤 작업을 수행하는 클래스들&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;InputStream 추상 클래스&lt;br /&gt;바이트 입력스트림을 위한 가상의 상위 클래스로서 System 클래스의 in 멤버 필드가 InputStream 타입이다.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;int read() - 입력 스트립에서 한 바이트를 읽어서 리턴한다. 일어오는 값은 바이트인데 리턴 타입은 int 타입으로 선언되어 있다. 읽어온 값은 0~255사이의 값, 더 읽은 값이 없는 경우 -1을 리턴한다.&lt;/li&gt;&lt;li&gt;int read(byte[] b, int off, int len) - 입력 스트림에서 len 개의 바이트를 일어서 바이트 배열 b에 저장한다. 배열 b의 off 인덱스에서부터 저장한다. 즉 첫 번째 바이트를 읽어서 b[off]에 저장한다. 더이상 읽을 값이 없는 경우 -1을 리턴한다.&lt;/li&gt;&lt;li&gt;int read(byte[] b) - 배열의 크기만큼 읽어온다. 리턴 값은 읽은 바이트 수이다. 더 이상 읽을 값이 없는 경우에는 -1을 리턴한다.&lt;/li&gt;&lt;/ul&gt;PrintStream 클래스&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PrintStream(OutputStream out, boolean autoFlush) - PrintStream 객체를 생성한다. autoFlush 값이 true이면 println() 메소드가 호출되거나, print("\n")이 호출되면 바이트 버퍼를 자동적으로 플러쉬한다.&lt;/li&gt;&lt;li&gt;PrintStream(OutputSteam out) - autoFlush가 false인 PrintStream객체를 생성한다.&lt;/li&gt;&lt;li&gt;void close() - 스트림을 닫는다.&lt;/li&gt;&lt;li&gt;void flush() - 버퍼 내용을 플러쉬한다.&lt;/li&gt;&lt;li&gt;void print(&amp;lt;type&amp;gt; value) - value를 문자열 타입으로 변환해서 출력한다. value의 타입이 객체인 경우에는 toString() 메소드를 호출해서 문자열을 변환한다.&lt;/li&gt;&lt;li&gt;void println(&amp;lt;type&amp;gt; value ) - value를 문자열 타입으로 변환해서 출력한고 줄바꾸기를 한다. value의 타입이 객체인 경우에는 toString() 메소드를 호출해서 문자열로 변환한다.&lt;/li&gt;&lt;li&gt;void write(byte[] buf, int off, int len) - 바이트 배열 buf의 off 인덱스에서 len 길이의 바이트를 출력한다.&lt;/li&gt;&lt;li&gt;void write(int b) - 바이트를 출력한다.&lt;/li&gt;&lt;/ul&gt;PrintWriter 클래스&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PrintWriter(OutputStream out, boolean autoFlush) - 출력 스트림을 이용해서 PrintWriter 객체를 생성한다. autoFlush값이 true인 경우에 println() 메소드가 호출되면 내용이 자동적으로 플러쉬된다.&lt;/li&gt;&lt;li&gt;PrintWriter(OutputStream out) - autoFlush 값이 false인 PrintWriter 객체를 생성한다.&lt;/li&gt;&lt;li&gt;PrintWriter(Writer out, boolean autoFlush) - Writer 객체를 이용하여 PrintWriter 객체를 생성한다. autoFlsh 값이 true인 경우에 println() 메소드가 호출되면 내용이 자동적으로 플러쉬된다.&lt;/li&gt;&lt;li&gt;PrintWriter(Writer out) - autoFlush 값이 false인 PrintlnWriter객체를 생성한다.&lt;/li&gt;&lt;li&gt;void close() - 스트림을 닫는다.&lt;/li&gt;&lt;li&gt;void flush() - 스트림을 플러쉬한다.&lt;/li&gt;&lt;li&gt;void print(&amp;lt;type&amp;gt; value) - value를 문자열 형태로 변환해서 출력한다. 객체인 경우 객체의 toString() 메소드를 이용해서 문자열로 변환한다.&lt;/li&gt;&lt;li&gt;void println(&amp;lt;type&amp;gt; value) - value를 문자열 형태로 변환해서 출력하고, 줄바꾸기를 한다. 객체의 경우에는 toString() 메소드를 이용해서 문자열로 변환한다.&lt;/li&gt;&lt;li&gt;void write(char[] buf, int off, int len) - 문자열 배열 buf[off]에서부터 len개의 문자를 출력한다.&lt;/li&gt;&lt;li&gt;void write(char[] buf) - 문자열 배열 buf를 출력한다.&lt;/li&gt;&lt;li&gt;void write(int c) - 문자를 출력한다.&lt;/li&gt;&lt;li&gt;void write(String str, int off, int len) - 문자열 str에서 off번째 문자부터 len개의 문자를 출력한다.&lt;/li&gt;&lt;li&gt;void write(String s) - 문자열 s를 출력한다.&lt;/li&gt;&lt;/ul&gt;InputStreamReader&lt;br /&gt;&lt;ul&gt;&lt;li&gt;InputSteamReader(InputStream in, String enc) - 입력 스트림과 인코딩 타입을 매개변수로 받아서 InputStreamReader 객체를 생성한다.&lt;/li&gt;&lt;li&gt;InputStreamReader(InputStream in) - 디폴트 인코딩을 따르는 InputStreamReader 객체를 생성한다.&lt;/li&gt;&lt;li&gt;void close() - 스트림을 닫는다.&lt;/li&gt;&lt;li&gt;String getEncoding() - 현재 스트림의 인코딩 타입을 리턴한다.&lt;/li&gt;&lt;li&gt;int read() - 한 문자를 읽어온다.&lt;/li&gt;&lt;li&gt;int read(char[] cbuf, int off, int len) - len개의 문자를 읽어서 문자열 배열 cbuf의 off 인덱스에서부터 저장한다.&lt;/li&gt;&lt;li&gt;boolean ready() - 스트림이 현재 읽을 수 있도록 준비되어 있는지 여부를 리턴한다.&lt;/li&gt;&lt;/ul&gt;OutStreamWriter&lt;br /&gt;&lt;ul&gt;&lt;li&gt;OutputStreamWriter(OutputStream out, String enc) - 출력 스트림과 인코딩을 매개변수로 OutputStreamWrite객체를 생성한다.&lt;/li&gt;&lt;li&gt;OutputStreamWriter(OutputStream out) - 디폴트 인코딩을 사용하는 OutputStreamWriter 객체를 생성한다.&lt;/li&gt;&lt;li&gt;void close() - 스트림을 닫는다.&lt;/li&gt;&lt;li&gt;void flush() - 내용을 플러쉬한다.&lt;/li&gt;&lt;li&gt;String getEncoding() - 현재 스트림의 인코딩 타입을 리턴한다.&lt;/li&gt;&lt;li&gt;void write(char[] cbuf, int off, int len) - 문자열 배열 cbuf[off]에서부터 len개의 문자를 출력한다.&lt;/li&gt;&lt;li&gt;void wirte(int c) - 한 문자를 출력한다.&lt;/li&gt;&lt;li&gt;void write(String str, int off, int len ) - 문자열 str에서 off번째 문자부터 len개의 문자를 출력한다.&lt;/li&gt;&lt;/ul&gt;BufferedInputStream&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BufferedInputStream(InputStream in, int size) - size 크기의 버퍼를 사용하는 BufferedInputSteam 객체를 생성한다.&lt;/li&gt;&lt;li&gt;BufferedInputStream(InputStream in) - 디폴트 크기의 버퍼를 사용하는 BufferedInputStream 객체를 생성한다.&lt;/li&gt;&lt;/ul&gt;BufferedOutputStream&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BufferedOutputStream(OutputStream out, int size) - size 크기의 버퍼를 사용하여 BufferedOutputStream객체를 생성한다.&lt;/li&gt;&lt;li&gt;BufferedOutputStream(OutputStream out) - 디폴트 크기의 버퍼를 사용해서 BufferedOutputStream 객체를 생성한다.&lt;/li&gt;&lt;/ul&gt;BufferedReader&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BufferedReader(Reader in , int size) - 버퍼크기가 size인 BufferedReader를 생성한다.&lt;/li&gt;&lt;li&gt;BufferedReader(Reader) - 버퍼크기가 size인 BufferedReader를 생성한다.&lt;/li&gt;&lt;li&gt;int read() - 한 문자를 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;int read(char[] cbuf, int off, int len) - 문자 배열 cbuf[off]에 len개의 문자를 읽어서 저장한다. 리턴값은 읽은 문자의 수이다.&lt;/li&gt;&lt;li&gt;String readLine() - 한 줄을 읽어서 리턴한다.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;BufferedWriter&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BufferedWriter(Writer out, int size) - 크기가 size인 버퍼를 갖는BuffteredWriter 객체를 생성한다.&lt;/li&gt;&lt;li&gt;BufferedWriter(Writer out) - 디폴트 크기의 버퍼를 가지는 BufferedWriter객체를 생성한다.&lt;/li&gt;&lt;li&gt;void close() - 스트림을 닫는다.&lt;/li&gt;&lt;li&gt;void flush() - 버퍼에 있는 내용을 플러쉬 한다.&lt;/li&gt;&lt;li&gt;void newLine() - 줄 바꾸기를 한다.&lt;/li&gt;&lt;li&gt;void write(char[] cbuf, int off, int len) - 문자 배열 cbuf[off]에서 len개의 문자를 출력한다.&lt;/li&gt;&lt;li&gt;void write(int c) - 문자 c를 출력한다.&lt;/li&gt;&lt;li&gt;void write(String s, int off, int len) - 문자열 s의 off 번째에서 len개의 문자를 출력한다.&lt;/li&gt;&lt;/ul&gt;DataInputStream&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DataInputStream(InputStream in) - DataInputStream 객체를 생성한다.&lt;/li&gt;&lt;li&gt;int read(byte[] b, int off, int len) - len개의 바이트를 읽어서 바이트 배열 b[off]에서부터 저장한다. 리턴값은 읽은 바이트 수이다.&lt;/li&gt;&lt;li&gt;int read(byte[] b) - 바이트 배열 b의 크기에 맞게 바이트를 읽는다. 리턴 값은 읽은 바이트 수이다.&lt;/li&gt;&lt;li&gt;boolean readBoolean() - boolean을 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;byte readByte() - byte를 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;char readChar() - 한 문자를 읽어서 리턴한다.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;double readDouble() - double값을 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;float readFloat() - float 값을 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;int readInt() - int 값을 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;long readLong() - long값을 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;short readShort() - short 값을 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;int readUnsignedByte() - 부호가 없는 byte값을 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;int readUnsignedShort() - 부호가 없는 short 값을 읽어서 리턴한다.&lt;/li&gt;&lt;li&gt;String readUTF() - UTF 인코딩 값을 읽어서 문자열 타입으로 리턴한다.&lt;/li&gt;&lt;/ul&gt;DataOuputStream &lt;br /&gt;&lt;ul&gt;&lt;li&gt;DataOutputStream(OutputStream out) - DataOutputStream 객체를 생성한다.&lt;/li&gt;&lt;li&gt;void flush() - 데이터를 플러쉬한다.&lt;/li&gt;&lt;li&gt;int size() - 현재까지 출력된 바이트 수를 리턴한다.&lt;/li&gt;&lt;li&gt;void write(byte[] b, int off, int len) - 배열 b[off]에서부터 len개의 바이트를 출력한다.&lt;/li&gt;&lt;li&gt;void write(int b) - 바이트 b를 출력한다.&lt;/li&gt;&lt;li&gt;void writeBoolean(boolean v) - boolean 값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeByte(int v) - byte값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeBytes(String s) - 문자열을 바이트 연속으로 출력한다.&lt;/li&gt;&lt;li&gt;void writeChar( int v) - 문자를 출력한다.&lt;/li&gt;&lt;li&gt;void writeChars(String s) - 문자열을 문자의 연속으로 출력한다.&lt;/li&gt;&lt;li&gt;void writeDouble(double v) - double 값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeFloat(float v) - float값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeInt(int v) - int값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeLong(long v) - long값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeShort(int v) - short값을 출력한다.&lt;/li&gt;&lt;li&gt;void writeUTF(String str) - 문자열을 UTF 인코딩으로 출력한다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3597941243525763675?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3597941243525763675/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/07/java-%EC%9E%85%EC%B6%9C%EB%A0%A5.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3597941243525763675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3597941243525763675'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/07/java-%EC%9E%85%EC%B6%9C%EB%A0%A5.html' title='java 입출력'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2229603263886428706</id><published>2010-06-30T20:10:00.000+09:00</published><updated>2011-01-30T14:08:42.007+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>jsp HttpServletResponse</title><content type='html'>void addCookie(Cookie cookie) - 응답에 쿠키를 추가한다.&lt;br /&gt;boolean containsHeader(String name) - 응답 헤더에 주어진 필드가 포함되었는지 여부를 알려준다.&lt;br /&gt;void sendError(int sc) - 클라이언트에 상태 코드와 디폴트 메시지를 전송한다.&lt;br /&gt;void sendError(int sc, String msg) - 클라이언트에 상태 코드와 메시지를 전송한다.&lt;br /&gt;String encodeRedirectURL(String url) - URL을 인코딩해준다.&lt;br /&gt;void setHeader(String name, String value) - 응답 헤더에 필드와 값을 추가한다.&lt;br /&gt;void setIntHeader(String name, int value) - 헤더 필드에 주어진 이름과 정수 값을 설정한다.&lt;br /&gt;void setStatus(int sc) - 응답에 상태 코드를 설정한다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2229603263886428706?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2229603263886428706/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/06/jsp-httpservletresponse.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2229603263886428706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2229603263886428706'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/06/jsp-httpservletresponse.html' title='jsp HttpServletResponse'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-585781995589676900</id><published>2010-06-30T20:04:00.000+09:00</published><updated>2011-01-30T14:08:41.944+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>jsp ServletResponse</title><content type='html'>void flushBuffer() - 버퍼에 있는 내용을 클라이언트에 전송한다.&lt;br /&gt;int getBufferSize() - 응답에 사용되는 버퍼의 크기를 알아본다.&lt;br /&gt;String getCharacterEncoding() - 응답에 사용된 문자 세트의 인코딩을 리턴한다.&lt;br /&gt;Locale getLocale() - 응답에 사용된 로케일을 리턴한다.&lt;br /&gt;ServletOutputStream getOutputStream() - 응답에 바이너리 데이터를 전송하기 위해 출력 스트림을 얻는다.&lt;br /&gt;PrintWriter getWriter() - 응답에 문자 데이터를 전송하기 위해 PrintWriter를 얻는다.&lt;br /&gt;boolean isCommitted() - 응답이 committed되었는지 여부를 리턴한다.&lt;br /&gt;void reset() - 버퍼에 있는 데이터를 지운다.&lt;br /&gt;void setBufferSize(int size) - 버퍼 크기를 size로 지정한다.&lt;br /&gt;void setContentLength(int len) - 클라이언트로 전달되는 내용의 크기를 len으로 설정한다.&lt;br /&gt;void setContentType(String type) - 클라이언트로 전달되는 내용의 MIME타입을 설정한다.&lt;br /&gt;void setLocale(Locale loc) - 로케일을 설정한다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-585781995589676900?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/585781995589676900/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/06/jsp-servletresponse.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/585781995589676900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/585781995589676900'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/06/jsp-servletresponse.html' title='jsp ServletResponse'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4623087670754745293</id><published>2010-06-30T19:52:00.000+09:00</published><updated>2011-01-30T14:08:41.894+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>jsp HttpServletRequest</title><content type='html'>String getAuthType() - 서버가 사용하는 인증 이름을 리턴한다.&lt;br /&gt;Cookie[] getCookies() - 브라우저가 요청과 전달한 쿠키들을 얻어온다.&lt;br /&gt;String getHeader(String name) - 주어진 이름의 요청 헤더 값을 얻어온다.&lt;br /&gt;Enumeration getHeaderNames() - 요청에 포함된 모든 헤더 이름들을 얻어 온다.&lt;br /&gt;String getMethod() - HTTP의 명령어 이름을 얻어온다.&lt;br /&gt;String getPathInfo() - URL에서 추가적인 패스 정보를 얻어온다.&lt;br /&gt;String getPathTranslated() - 서블릿 이름에서부터 쿼리 스트링전까지의 추가적인 패스 정보를 얻는다.&lt;br /&gt;String getQueryString() - 쿼리 스트링을 얻어온다.&lt;br /&gt;String getRemoteUser() - HTTP 인증을 통해 로그인 한 사용자의 이름을 얻어온다.&lt;br /&gt;String getRequestedSessionId() - 클라이인트의 세션 ID를 얻어온다.&lt;br /&gt;String getRequestURI() - URI 값을 얻어온다.&lt;br /&gt;HttpSession getSession() - 현재 세션을 리턴한다.&lt;br /&gt;HttpSession getSession(boolean create) - 현재 세션을 리턴하거나, 없는 경우에 create가 true이면 새로운 세션을 생성한다.&lt;br /&gt;boolean isRequestedSessionValid() - 세션이 유효한가를 알아본다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4623087670754745293?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4623087670754745293/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/06/jsp-httpservletrequest.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4623087670754745293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4623087670754745293'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/06/jsp-httpservletrequest.html' title='jsp HttpServletRequest'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-6595111155793600068</id><published>2010-06-29T18:13:00.000+09:00</published><updated>2011-01-30T14:08:41.831+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>jsp ServletRequest</title><content type='html'>&lt;P&gt;Object getAttribute(String name) - 주어진 이름의 어프리뷰트를 얻어온다. 설정된 어트리뷰트가 없으면 null 값을 리턴한다.&lt;/P&gt;&lt;P&gt;Enumeration getAttributeNames() - 설정된 모든 어트리뷰터의 이름을 리턴한다.&lt;/P&gt;&lt;P&gt;void removeAttribute(String name) - 주어진 이름의 어트리뷰트를ㄹ 제거한다.&lt;/P&gt;&lt;P&gt;void setAttribute(String name, Object o) - 객체를 주어진 이름으로 어트리뷰트에 등록한다.&lt;/P&gt;&lt;P&gt;RequestDispacher getRequestDispatcher(String path) - 주어진 패스로 클라이언트의 요청을 전달할 RequestDispatcher를 얻어온다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;int getContentLength() - 클라이언트 요청의 바디(body)부분의 길이를 바이트 단위로 리턴한다. 길이를 알 수 없으면 -1을 리턴한다.&lt;/P&gt;&lt;P&gt;String getContentType() - 클라이언트 요청의 바디 부분의 MIME 타입을 기술한다.&lt;/P&gt;&lt;P&gt;String getParameter(String name) - 클라이언트의 요청에 포함되어 있는 주어진 이름의 파라메터 값을 리턴한다. 값이 없을 경우에는 null을 리턴한다.&lt;/P&gt;&lt;P&gt;String[] getParameterValues(String name) - 주어진 이름의 파라메터 값을 모두 리턴한다. 동일한 이름에 여러 개의 값이 있는 경우에 사용된다.&lt;/P&gt;&lt;P&gt;ServletInputStream getInputStream() - 클라이언트 요청의 바디에 있는 바이너리 데이터를 읽기 위한 입력 스트림을 리턴한다.&lt;/P&gt;&lt;P&gt;BufferedReader getReader() - 클라이언트 요청의 바디에 있는 문자 데이터를 읽기 위한 BufferedReader를 리턴한다.&lt;/P&gt;&lt;P&gt;String getCharacterEncoding() - 문자 데이터의 인코딩을 리턴한다.&lt;/P&gt;&lt;P&gt;Locale getLocale() - 클라이언트가 받을 수 있는 가장 적당한 로케일을 리턴한다.&lt;/P&gt;&lt;P&gt;Enumeration getLocales() - Accept-Language 헤더 정보에 기초해서 클라이언트가 받을 수 있는 로케일 정보를 리턴한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;String getProtocal() - 클라이언트가 사용한 프로토콜 정보를 HTTP/1.1과 같은 protocol/major Version.minorVersion 형태로 리턴한다.&lt;/P&gt;&lt;P&gt;String getServerName() - 클라이언트의 요청을 받는 서버 이름을 리턴한다.&lt;/P&gt;&lt;P&gt;int getServerPort() - 클라이언트의 요청을 받는 서버의 포트 번호를 리턴한다.&lt;/P&gt;&lt;P&gt;boolean isSecure() - 클라이언트의 요청이 보안성 있는 캐널을 통해 전달되는지 여부를 알려준다.&lt;/P&gt;&lt;P&gt;String getRemoteAddr() - 요청을 보내는 클라이언트의 IP주소를 리턴한다.&lt;/P&gt;&lt;P&gt;String getRemoteHost() - 요청을 보내는 클라이언트의 이름을 리턴한다.&lt;/P&gt;&lt;P&gt;String getScheme() - 클라이언트의 요청에 사용된 scheme의 이름을 리턴한다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-6595111155793600068?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/6595111155793600068/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/06/jsp-servletrequest.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6595111155793600068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6595111155793600068'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/06/jsp-servletrequest.html' title='jsp ServletRequest'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4621072876487704257</id><published>2010-05-26T17:17:00.000+09:00</published><updated>2011-01-30T14:08:41.563+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>Collection</title><content type='html'>&lt;br /&gt;Collection: 가장 상위 인터페이스이다.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Set : 중복을 허용하지 않는 집합을 처리하기 위한 인터페이스이다.&lt;/li&gt;&lt;li&gt;SortedSet : 오름차순을 갖는 Set 인터페이스이다.&lt;/li&gt;&lt;li&gt;List : 순서가 있는 집합을 처리하기 위한 인터페이스이기 때문에 인덱스가 있어 위치를 지정하여 값을 찾을 수 있다. 중복을 허용하며, List 인터페이스를 상속받는 클래스 중에 가장 많이 사용하는 것으로 Vector가 있다.&lt;/li&gt;&lt;li&gt;Queue : 여러 개의 객체를 처리하기 전에 담아서 처리할 때 사용하기 위한 인터페이스이다. 기본적으로 FIFO를 따른다.&lt;/li&gt;&lt;li&gt;Map : Map은 키와 값의 쌍으로 구성된 객체의 집합을 처리하기 위한 인터페이스이다. 이 객체는 중복되는 키를 허용하지 않는다.&lt;/li&gt;&lt;li&gt;SortedMap : 키를 오름차순으로 정렬하는 Map 인터페이스이다.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Set&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HashSet : 데이터를 해쉬 테이블에 담는 클래스로 순서 없이 저장된다.&lt;/li&gt;&lt;li&gt;TreeSet : red-black이라는 트리에 데이터를 담는다. 값에 따라서 순서가 정해진다. HashSet보다 성능상 느리다. 데이터를 담으면서 동시에 정렬할 때 유용하다.&lt;/li&gt;&lt;li&gt;LinkedHashSet : 해쉬 테이블에 데이터를 담는데, 저장된 순서에 따라서 순서가 결정된다.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;List&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Vector : 크기를 객체 생성시 지정할 필요가 없는 배열 클래스이다.&lt;/li&gt;&lt;li&gt;ArrayList : Vector와 비슷하지만, 동기화 처리가 되어 있지 않다.&lt;/li&gt;&lt;li&gt;LinkedList : ArrayList와 동일 하지만, Queue 인터페이스를 구현했기 때문에 FIFO큐 작업을 수행한다.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Map&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hashtable : 데이터를 해쉬 테이블에 담는 클래스이다. 내부에서 관리하는 해쉬 테이블 객체가 동기화되어 있으므로, 동기화가 필요한 부분에서는 이 클래스를 사용하기 바란다.&lt;/li&gt;&lt;li&gt;TreeMap : red-black 트리에 데이터를 담는다. TreeSet과 다른 점은 키에 의해서 순서가 정해진다는 것이다.&lt;/li&gt;&lt;li&gt;LinkedHashMap : HashMap과 거의 동일하며 이중 연결 리스트라는 방식을 사용하여 데이터를 담는다는 점만 다르다.&lt;/li&gt;&lt;/ul&gt;Queue&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PriorityQueue : 큐에 추가된 순서와 상관없이 먼저 생성한 객체가 먼저 나오도록 되어 있는 큐이다.&lt;/li&gt;&lt;li&gt;LinkedBlockingQueue : 선택적으로 저장할 데이터의 크기를 정할 수도 있는 FIFO기반의 링크 노드를 사용하는 블로킹 큐이다.&lt;/li&gt;&lt;li&gt;ArrayBlockingQueue : 저장된는 데이터의 크기가 정해져 있는 FIFO 기반의 블로킹 큐이다.&lt;/li&gt;&lt;li&gt;PriorityBlockingQueue : 저장되는 데이터의 크기가 정해저 있지 않고, 객체의 생성 순서에 따라서 순서가 저장되는 블로킹 큐이다.&lt;/li&gt;&lt;li&gt;DelayQueue : 큐가 대기하는 시간을 지정하여 처리하도록 되어 있는 큐이다.&lt;/li&gt;&lt;li&gt;SynchronousQueue : put() 메소드를 호출하면, 다른 스레드에서 take()메소드가 호출될 때까지 대기하도록 되어 있는 큐이다. 이 큐에는 저장되는 데이터가 없다. API에서 제공하는 대부분의 메소드는 0이가 null을 리턴한다.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Iterator&lt;br /&gt;&lt;ul&gt;&lt;li&gt;boolean hasNext() : 만약 요소가 더 존재하면 true를 반환한다. 그렇지 않으면 false를 반환한다.&lt;/li&gt;&lt;li&gt;Object next() : 다음 요소를 반환한다. 만약 다음 요소가 존재하지 않으면 NoSuchElementException 예외를 던진다.&lt;/li&gt;&lt;li&gt;void remove() : 현재 요소를 삭제한다. 만약 next() 메소드가 호출되기 전에 remove() 메소드의 호출이 시도된다면 IllegalState-Exception 예외를 던진다.&lt;/li&gt;&lt;/ul&gt;ListIterator&lt;br /&gt;&lt;ul&gt;&lt;li&gt;void add(Object obj) : 리스트에서 다음의 next() 메소드 호출이 반환할 요소 앞에 obj 를 삽입한다.&lt;/li&gt;&lt;li&gt;boolean hasNext() : 만약 다음 요소가 존재하면 true를 반환한다. 그렇지 않으면 false를 반환한다.&lt;/li&gt;&lt;li&gt;boolean hasPrevious() : 만약 이전 요소가 존재하면 true를 반환한다. 그렇지 않으면 false를 반환한다.&lt;/li&gt;&lt;li&gt;Object next() : 다음 요소를 반환한다. 만약 다음 요소가 존재하지 않으면 NoSuchElementException 예외를 던진다.&lt;/li&gt;&lt;li&gt;int nextIndex() : 다음 요소의 위치를 반환한다. 만약 다음 요소가 존재하지 않으면, 리스트의 크기를 반환한다.&lt;/li&gt;&lt;li&gt;Object previous() : 이전 요소를 반환한다. 만약 이전 요소가 존재하지 않으면 NoSuchElementException 예외를 던진다.&lt;/li&gt;&lt;li&gt;int previousIndex() : 이전 요소의 위치를 반환한다. 만약 이전 요소가 존재하지 않으면, -1을 반환한다.&lt;/li&gt;&lt;li&gt;void remove() : 리스트에서 현재 요소를 삭제한다. 만약 next()나 previous() 메소드가 호출되기 전에 remove() 메소드가 호출되면 Illegal-StateException 예외를 던진다.&lt;/li&gt;&lt;li&gt;void set(Object obj) : 현재 요소에 obj를 할당한다. 할당된 obj는 next()나 previous() 메소드를 호출할 때 마지막으로 반환되는 요소이다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Dictionary&lt;br /&gt;: 키/값 기억 장소를 표현하고 마치 Map 같이 동작하는 추상 클래스이다. 키와 값이 주어지면, Dictionay 객체에 값을 저장할 수 있다. 값이 한번 저장되면, 키를 사용하여 그 값을 가져올 수 있다. 따라서, 마치 맵과 같이 dictionary를 키/값 쌍의 리스트로 생각할 수 있다. 비록 자바 2에서 실제로 사장되지는 않았지만, dictionary는 Map으로 대체되기 때문에, 거의 사용되지 않는 클래스로 분류된다. 그러나, Dictionary는 여전히 사용되고 있다.&lt;br /&gt;&lt;br /&gt;Hashtable&lt;br /&gt;: 원래 java.util의 일부분이고 Dictionary의 실제 구현이다. 그러나, 자바 2에서는 Map 인터페이스를 구현하기 위해서 Hashtable이 재작성되었다. 따라서, Hash-table은 이제 콜렉션 프레임워크로 통합되었다. Hashtable은 HashMap과 비슷하지만, 동기화를 제공한다.&lt;br /&gt;&lt;br /&gt;Properties&lt;br /&gt;: Hashtable의 하위클래스이다. Properties는 키가 String이고, 값도 String인 값들의 리스트를 유지하기 위해 사용된다. Properties클래스는 많은 다른 자바 클래스들에 의해 사용된다.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4621072876487704257?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4621072876487704257/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/05/collection.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4621072876487704257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4621072876487704257'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/05/collection.html' title='Collection'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7668497078254817539</id><published>2010-05-05T13:06:00.000+09:00</published><updated>2011-01-30T14:08:41.356+09:00</updated><title type='text'>윈도우 도스 기본 명령어</title><content type='html'>리눅스를 공부하니 윈도우가 덩달아 궁금하기 시작했다.&lt;br /&gt;특히 GVIM을 쓰면서.. 더더욱.&lt;br /&gt;커맨드 라인에서 help명령어를 쳐봤다.&lt;br /&gt;흠..굉장히 많아서 파일로 만들기로 했다. 리눅스에서라면 help &amp;gt; 1.txt 하면 되는데 윈도우에서도 될까?&lt;br /&gt;실행해 보니까 된다.. 흠 신기하군.. 다음에 파이프도 해봐야겠다 라는 맘을 먹었지만 일단 구지 필요 없으니까.&lt;br /&gt;특정 명령어에 대한 자세한 내용이 필요하면 HELP 명령어 이름을 입력하십시오.&lt;br /&gt;ASSOC &amp;nbsp;&amp;nbsp; 파일 확장명 연결을 보여주거나 수정합니다.&lt;br /&gt;AT &amp;nbsp; &amp;nbsp; &amp;nbsp; 명령어와 프로그램의 실행을 스케줄합니다.&lt;br /&gt;ATTRIB &amp;nbsp; 파일 속성을 표시하거나 바꿉니다.&lt;br /&gt;BREAK &amp;nbsp;&amp;nbsp; 확장된 CTRL+C 검사를 설정하거나 지웁니다.&lt;br /&gt;CACLS &amp;nbsp;&amp;nbsp; 파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정합니다.&lt;br /&gt;CALL &amp;nbsp; &amp;nbsp; 한 일괄 프로그램에서 다른 일괄 프로그램을 호출합니다.&lt;br /&gt;CD &amp;nbsp; &amp;nbsp; &amp;nbsp; 현재 디렉터리 이름을 보여주거나 바꿉니다.&lt;br /&gt;CHCP &amp;nbsp; &amp;nbsp; 활성화된 코드 페이지의 번호를 표시하거나 설정합니다.&lt;br /&gt;CHDIR &amp;nbsp;&amp;nbsp; 현재 디렉터리 이름을 보여주거나 바꿉니다.&lt;br /&gt;CHKDSK &amp;nbsp; 디스크를 검사하고 상태 보고서를 표시합니다.&lt;br /&gt;CHKNTFS&amp;nbsp; 부팅하는 동안 디스크 확인을 화면에 표시하거나 변경합니다.&lt;br /&gt;CLS &amp;nbsp; &amp;nbsp;&amp;nbsp; 화면을 지웁니다.&lt;br /&gt;CMD &amp;nbsp; &amp;nbsp;&amp;nbsp; Windows 명령 인터프리터의 새 인스턴스를 시작합니다.&lt;br /&gt;COLOR &amp;nbsp;&amp;nbsp; 콘솔의 기본색과 배경색을 설정합니다.&lt;br /&gt;COMP &amp;nbsp; &amp;nbsp; 두 개 또는 여러 개의 파일을 비교합니다.&lt;br /&gt;COMPACT&amp;nbsp; NTFS 분할 영역에 있는 파일의 압축을 표시하거나 변경합니다.&lt;br /&gt;CONVERT&amp;nbsp; FAT 볼륨을 NTFS로 변환합니다. 현재 드라이브는&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 변환할 수 없습니다.&lt;br /&gt;COPY &amp;nbsp; &amp;nbsp; 하나 이상의 파일을 다른 위치로 복사합니다.&lt;br /&gt;DATE &amp;nbsp; &amp;nbsp; 날짜를 보여주거나 설정합니다.&lt;br /&gt;DEL &amp;nbsp; &amp;nbsp;&amp;nbsp; 하나 이상의 파일을 지웁니다.&lt;br /&gt;DIR &amp;nbsp; &amp;nbsp;&amp;nbsp; 디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.&lt;br /&gt;DISKCOMP 두 플로피 디스크의 내용을 비교합니다.&lt;br /&gt;DISKCOPY 플로피 디스크의 내용을 다른 플로피 디스크로 복사합니다.&lt;br /&gt;DOSKEY &amp;nbsp; 명령줄을 편집하고, Windows 명령을 다시 호출하고, 매크로를 만듭니다.&lt;br /&gt;ECHO &amp;nbsp; &amp;nbsp; 메시지를 보여주거나, 명령어 반향을 켜거나 끕니다.&lt;br /&gt;ENDLOCAL 일괄 파일에서 환경 변경의 지역화를 끝냅니다.&lt;br /&gt;ERASE &amp;nbsp;&amp;nbsp; 하나 이상의 파일을 지웁니다.&lt;br /&gt;EXIT &amp;nbsp; &amp;nbsp; CMD.EXE 프로그램(명령 인터프리터)을 마칩니다.&lt;br /&gt;FC &amp;nbsp; &amp;nbsp; &amp;nbsp; 두 파일 또는 파일의 집합을 비교하여 다른 점을&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 표시합니다.&lt;br /&gt;FIND &amp;nbsp; &amp;nbsp; 파일에서 텍스트 문자열을 찾습니다.&lt;br /&gt;FINDSTR&amp;nbsp; 파일에서 문자열을 찾습니다.&lt;br /&gt;FOR &amp;nbsp; &amp;nbsp;&amp;nbsp; 파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.&lt;br /&gt;FORMAT &amp;nbsp; Windows에서 사용할 디스크를 포맷합니다.&lt;br /&gt;FTYPE &amp;nbsp;&amp;nbsp; 파일 확장 연결에 사용되는 파일 형식을 표시하거나 수정합니다.&lt;br /&gt;GOTO &amp;nbsp; &amp;nbsp; Windows 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 줄로 가게 합니다.&lt;br /&gt;GRAFTABL Windows가 그래픽 모드에서 확장 문자 세트를 표시할&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 수 있게 합니다.&lt;br /&gt;HELP &amp;nbsp; &amp;nbsp; Windows 명령어에 관한 도움말을 제공합니다.&lt;br /&gt;IF &amp;nbsp; &amp;nbsp; &amp;nbsp; 일괄 프로그램에서 조건 처리를 수행합니다.&lt;br /&gt;LABEL &amp;nbsp;&amp;nbsp; 디스크의 볼륨 이름을 만들거나, 바꾸거나, 지웁니다.&lt;br /&gt;MD &amp;nbsp; &amp;nbsp; &amp;nbsp; 디렉터리를 만듭니다.&lt;br /&gt;MKDIR &amp;nbsp;&amp;nbsp; 디렉터리를 만듭니다.&lt;br /&gt;MODE &amp;nbsp; &amp;nbsp; 시스템 장치를 구성합니다.&lt;br /&gt;MORE &amp;nbsp; &amp;nbsp; 출력을 한번에 한 화면씩 표시합니다.&lt;br /&gt;MOVE &amp;nbsp; &amp;nbsp; 하나 이상의 파일을 한 디렉터리에서 다른 디렉터리로 옮깁니다.&lt;br /&gt;PATH &amp;nbsp; &amp;nbsp; 실행 파일의 찾기 경로를 보여주거나 설정합니다.&lt;br /&gt;PAUSE &amp;nbsp;&amp;nbsp; 일괄 파일의 처리를 보류하고 메시지를 보여줍니다.&lt;br /&gt;POPD &amp;nbsp; &amp;nbsp; PUSHD 명령으로 저장된 디렉터리로 바꿉니다.&lt;br /&gt;PRINT &amp;nbsp;&amp;nbsp; 텍스트 파일을 인쇄합니다.&lt;br /&gt;PROMPT &amp;nbsp; Windows 명령 프롬프트를 바꿉니다.&lt;br /&gt;PUSHD &amp;nbsp;&amp;nbsp; 현재 디렉터리를 저장한 후 디렉터리를 바꿉니다.&lt;br /&gt;RD &amp;nbsp; &amp;nbsp; &amp;nbsp; 디렉터리를 지웁니다.&lt;br /&gt;RECOVER&amp;nbsp; 불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구합니다.&lt;br /&gt;REM &amp;nbsp; &amp;nbsp;&amp;nbsp; 일괄 파일 또는 CONFIG.SYS에서 주석을 기록합니다.&lt;br /&gt;REN &amp;nbsp; &amp;nbsp;&amp;nbsp; 파일 이름을 바꿉니다.&lt;br /&gt;RENAME &amp;nbsp; 파일 이름을 바꿉니다.&lt;br /&gt;REPLACE&amp;nbsp; 파일을 대체합니다.&lt;br /&gt;RMDIR &amp;nbsp;&amp;nbsp; 디렉터리를 지웁니다.&lt;br /&gt;SET &amp;nbsp; &amp;nbsp;&amp;nbsp; Windows 환경 변수를 보여주거나, 설정하거나, 지웁니다.&lt;br /&gt;SETLOCAL 일괄 파일에서 환경 변경의 지역화를 시작합니다.&lt;br /&gt;SHIFT &amp;nbsp;&amp;nbsp; 일괄 파일에서 바꿀 수 있는 매개 변수의 위치를 바꿉니다.&lt;br /&gt;SORT &amp;nbsp; &amp;nbsp; 입력을 정렬합니다.&lt;br /&gt;START &amp;nbsp;&amp;nbsp; 지정된 프로그램이나 명령을 별도의 창에서 시작합니다.&lt;br /&gt;SUBST &amp;nbsp;&amp;nbsp; 경로를 드라이브 문자로 지정합니다.&lt;br /&gt;TIME &amp;nbsp; &amp;nbsp; 시스템 시간을 보여주거나 설정합니다.&lt;br /&gt;TITLE &amp;nbsp;&amp;nbsp; CMD.EXE 세션에 대한 창의 창 제목을 설정합니다.&lt;br /&gt;TREE &amp;nbsp; &amp;nbsp; 드라이브 또는 경로의 디렉터리 구조를 그래픽으로 화면에 표시합니다.&lt;br /&gt;TYPE &amp;nbsp; &amp;nbsp; 텍스트 파일의 내용을 보여줍니다.&lt;br /&gt;VER &amp;nbsp; &amp;nbsp;&amp;nbsp; Windows 버전을 보여줍니다.&lt;br /&gt;VERIFY &amp;nbsp; 파일이 디스크에 올바로 쓰였는지 검증할지&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 여부를 지정합니다.&lt;br /&gt;VOL &amp;nbsp; &amp;nbsp;&amp;nbsp; 디스크 볼륨 이름과 일련 번호를 보여줍니다.&lt;br /&gt;XCOPY &amp;nbsp;&amp;nbsp; 파일과 디렉터리 트리를 복사합니다.&lt;br /&gt;흠.. 내가 지금 당장 필요한건 파일 생성인데.. &lt;br /&gt;옛날에 도스 배울때는 있던걸로 기억하는데.. 윈도우에서는 없는건가?&lt;br /&gt;이밖에 EDIT라든지 이런 명령어는 어디서 찾을 수 있는것인가..&lt;br /&gt;환경설정에서 path를 보고 더 공부해봐야겠다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7668497078254817539?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7668497078254817539/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/05/%EC%9C%88%EB%8F%84%EC%9A%B0-%EB%8F%84%EC%8A%A4-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7668497078254817539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7668497078254817539'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/05/%EC%9C%88%EB%8F%84%EC%9A%B0-%EB%8F%84%EC%8A%A4-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4.html' title='윈도우 도스 기본 명령어'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4643126670937676415</id><published>2010-04-29T17:47:00.000+09:00</published><updated>2011-11-09T21:06:39.894+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>javascript 정규표현식</title><content type='html'>&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;문자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;매치되는 것&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;알파벳 문자와 숫자 조합&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;같은 조합의 문자들&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\0&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;널문자(\u0000)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\t&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;탭(\u0009)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\n&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;줄바꿈(\u000a)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\v&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;수직 탭(\u000b)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\f&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;폼 피드(\u000c)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\r&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;캐리지 리턴(\u000d)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\xnn&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;16진수 nn에 해당하는 라틴 문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\uxxxx&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;16진수xxxx에 해당하는 Unicode문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\cX&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;제어 문자 ^C &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;문자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;매치되는 것&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;[...]&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;대괄호 안에 있는 문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;[^...]&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;대괄호 안에 없는 문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;.&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;줄바꿈이나 Unicode 줄마침 문자를 제외한 아무 문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\w&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;ASCII 문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\W&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;ASCII 문자가 아닌 문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\s&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Unicode 공백 문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\S&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Unicode 공백 문자가 아닌 문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\d&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;ASCII 숫자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\D&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;ASCII 숫자가 아닌 문자&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;[\b]&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;백스페이스 &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;문자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;의미&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;{n,m}&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;앞의 항목이 적어도 n번 이상 나타나고, m 번보다는 적게 나타난다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;{n,}&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;앞의 항목이 적어도 n번 이상 나타난다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;{n}&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;앞의 항목이 정확히 n번 나타난다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;?&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;앞의 항목이 0또는 한번 나타난다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;+&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;앞의 항목이 한 번 이상 나타난다는 것을 의미한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;*&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;앞의 항목이 0번 이상 나타난다는 것을 의미한다.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;문자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;의미&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;|&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;대체. 왼쪽이나 오른쪽의 부분 표현식을 매치시킨다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;(...)&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그룹화. 원소들을 *, +, ?, |, 등과 함께 사용할 수 있게 단일 원소로 그룹화한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;(?:...)&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;단지 그룹화만을 위한것. 원소들을 단일 원소로 그룹화하지만 이 그룹에 매치되는 문자들을 기억할 필요는 없다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\n&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그룹 번호 n이 처음 매치되었을 때의 문자를 사용하여 매치시킨다. 그룹은 괄호에 묶인 부분 표현식이다. 그룹 번호는 왼쪽 괄호를 왼쪽에서 오른쪽으로 세어서 정한다. '.+'로 만들어진 그룹은 번호를 지정하지 않는다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;문자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;의미&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;^&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;문자열의 시작부분이나, 여러 라인을 찾는 경우 줄의 시작 부분에 매치된다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;$&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;문자열의 끝 부분이나, 여러 줄을 찾는 경우에는 줄의 끝 부분에 매치된다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\b&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;단어 경계에 매치된다. 즉 \w와 \W문자나 \w와 문자열의 시작이나 끝부분의 위치와 매치된다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;\B&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;단어 경계가 아닌 곳에 매치된다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;(?=p)&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;긍정적 뒤본기 선언. 이후에 나올 문자들이 패턴 p에 매치되어야 하지만 매치 결과에는 나타나지 않는다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;(?!p)&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;부정적 뒤보기 선언. 이후에 나올 문자들이 패턴 p에 매치되어서는 안된다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;문자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;의미&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;i&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;대소문자를 구별하지 않은 매칭을 수행한다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;g&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;전역 매칭을 수행한다. 즉, 첫 번째 매치에서 끝내지 않고 매치되는 모든 것을 찾는다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;m&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;여러 줄 상태. ^는 줄의 시작이나 문자열의 시작에 매치되고, $는 줄의 끝이나 문자열의 끝에 매치된다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4643126670937676415?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4643126670937676415/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript_29.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4643126670937676415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4643126670937676415'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript_29.html' title='javascript 정규표현식'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7412674591360249795</id><published>2010-04-28T11:00:00.000+09:00</published><updated>2011-11-09T21:06:39.908+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>javascript 모듈</title><content type='html'>규칙&lt;br /&gt;&lt;ul&gt;&lt;li&gt;만약 모듈이 전역 네임스페이스에 심벌을 추가한다면, 문서에 그 심벌이 무엇인지 명확하게 기술되어야 한다.&lt;/li&gt;&lt;li&gt;만약 모듈이 전역 네인스페이스에 심벌을 추가한다면, 그 심벌의 이름과 모듈이 작성되어 있는 파일 이름 간에 명확한 관계가 있어야 한다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7412674591360249795?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7412674591360249795/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript_28.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7412674591360249795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7412674591360249795'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript_28.html' title='javascript 모듈'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3383656979641472611</id><published>2010-04-27T20:01:00.000+09:00</published><updated>2011-01-30T14:08:40.677+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>javascript</title><content type='html'>&lt;span style="font-size: 170%;"&gt;&lt;strong&gt;Closures&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JavaScript 에서 이러한 public, private, privileged 멤버들의 구현이 가능한 것은, closure 때문이다. closure 의 의미는(Javascript의 closure 구현이 시사하는 바는), inner function 은 outer function 의 var 선언 변수와 매개변수에 접근할 수 있으며, 심지어 outer function 이 리턴된 이후에도 가능하다는 뜻이다. 이는 굉장히 강력한 언어 속성인데, JavaScript 에서 어떻게 이것이 가능한지 파헤쳐놓은 책은 아직은 없다. 대부분 아예 언급할 생각조차 없는 것 같다. &lt;br /&gt;&lt;br /&gt;private 과 privileged 멤버는 object 가 생성될 때에만 만들 수 있다. 반면, public 멤버는 언제든 만들 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 170%;"&gt;&lt;strong&gt;&lt;br /&gt;Patterns&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;strong&gt;Public&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;function Constructor(...) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; this.membername = value;&lt;br /&gt;}&lt;br /&gt;Constructor.prototype.membername = value;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;strong&gt;Private&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;function Constructor(...) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; var that = this;&lt;br /&gt;&amp;nbsp; &amp;nbsp; var membername = value;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; function membername(...) {...}&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Note: function 구문&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;function membername(...) {...}&lt;/blockquote&gt;&lt;br /&gt;은&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;var membername = function(...) {...};&lt;br /&gt;&lt;/blockquote&gt;표현의 축약이다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;strong&gt;Privileged&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;function Constructor(...) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; this.membername = function (...) {...};&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(원문에) Copyright 2001 &lt;a href="mailto:douglas@crockford.com"&gt;Douglas Crockford.&lt;/a&gt; &lt;a href="http://www.crockford.com/"&gt;All Rights Reserved Wrrrldwide.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3383656979641472611?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3383656979641472611/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript_27.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3383656979641472611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3383656979641472611'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript_27.html' title='javascript'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-795956385550171455</id><published>2010-04-27T18:59:00.000+09:00</published><updated>2011-01-30T14:08:40.629+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>javascript 모조클래스</title><content type='html'>생성자&lt;br /&gt;function Rectangle(w,h){&lt;br /&gt;this.width=w;&lt;br /&gt;this.height=h;&lt;br /&gt;}&lt;br /&gt;var rect1= new Rectagle(2,4); //rect1={width:2,height:4}&lt;br /&gt;&lt;br /&gt;생성자 함수에는 일반적으로 반환값이 없다. 다시 말해, 생성자 함수는 this키워드가 가리키는 객체를 초기화시킬 뿐 아무런 값도 반환하지 않는다. 하지만 생성자 함수에서 결과값으로 객체를 반환하면 반환값을 가질 수 있으며, 이때 반환되는 객체는 new 문장의 결과값이 된다. 그리고 생성자 안의 this가 가리키고 있던 객체는 페기도니다.&lt;br /&gt;&lt;br /&gt;프로토타입과 상속&lt;br /&gt;자바스크립트의 모든 객체는 프로토타입이라고 불리는 또 다른 객체를 내부적으로 참조할 수 있다. 그리고 객체는 프로토타입의 프로퍼티들을 자신의 프로퍼티로 가져온다. 다시 말해 자바스크립트의 객체는 자신의 프로토타입에 있는 프로퍼티를 상속받는다.&lt;br /&gt;function Rectangle(w,h){&lt;br /&gt;this.width=w;&lt;br /&gt;this.height=h;&lt;br /&gt;}&lt;br /&gt;Rectangle.prototype.area=function(){return this.width * this.height;}&lt;br /&gt;&lt;br /&gt;상속받은 프로퍼티의 읽기와 쓰기&lt;br /&gt;읽을때 객체에 프로퍼티가 없으면 프로토타입 객체에 프로퍼티를 검사한다.&lt;br /&gt;쓸때는 프로토타입을 검사하지 않는다. 객체에 해당 프로퍼티가 없으면 그 프로퍼티를 만든다.&lt;br /&gt;&lt;br /&gt;내장형 타입의 확장&lt;br /&gt;프로토타입을 사용하면 내장객체의 프러퍼티를 만들수 있다. 하지만 좋은 방법은 아니다.&lt;br /&gt;내장형 네이티브 클래스의 프로토타입을 확장하는 것이 안전하고 유용하다.&lt;br /&gt;&lt;br /&gt;자바스크립트의 클래스 시뮬레이션&lt;br /&gt;자바나 C++ 자바스크립트간의 비교&lt;br /&gt;자바스크립트의 객체는 프로퍼티의 개수에 제한이 없으며, 동적으로 추가할 수도 있다.&lt;br /&gt;자바나 C++에서 클래스는 객체의 구조를 정의한다.&lt;br /&gt;인스턴스 프로퍼티&lt;br /&gt;인스턴스 메서드&lt;br /&gt;클래스 프로퍼티&lt;br /&gt;클래스 메소드&lt;br /&gt;&lt;br /&gt;공통적인 객체 메서드&lt;br /&gt;toString()메서드&lt;br /&gt;valuOf()메서드&lt;br /&gt;비교메서드&lt;br /&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;a&amp;lt;b&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;&amp;nbsp;a.compareTo(b) &amp;lt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;a&amp;lt;=b&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;&amp;nbsp;a.compareTo(b) &amp;lt;=0&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;a&amp;gt;b&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;&amp;nbsp;a.compareTo(b)&amp;gt;0&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;a&amp;gt;=b&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;&amp;nbsp;a.compareTo(b)&amp;gt;=0&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;a==b&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;&amp;nbsp;a.compareTo(b)==0&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;a!=b&lt;/td&gt;&lt;td style="vertical-align: top;"&gt;&amp;nbsp;a.compareTo(b)!=0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;슈퍼클래스와 서브 클래스&lt;br /&gt;&lt;br /&gt;상속없이 확장하기&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-795956385550171455?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/795956385550171455/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript-%EB%AA%A8%EC%A1%B0%ED%81%B4%EB%9E%98%EC%8A%A4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/795956385550171455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/795956385550171455'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript-%EB%AA%A8%EC%A1%B0%ED%81%B4%EB%9E%98%EC%8A%A4.html' title='javascript 모조클래스'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7693406185783270645</id><published>2010-04-27T15:34:00.000+09:00</published><updated>2011-01-30T14:08:40.580+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>javascript Function() 생성자</title><content type='html'>&lt;ul&gt;&lt;li&gt;Function()생성자를 사용하면 실행시점에 자바스크립트 코드를 동적으로 생성하고 컴파일할 수 있다. 이러한 점에서 Function() 생성자는 전역 함수인 eval() 함수와 유사하다.&lt;/li&gt;&lt;li&gt;Function()생성자는 호출될 때마다 함수 몸체를 파싱하고 새로운 함수 객체를 생성한다. 따라서 만약 생성자 호출이 루프안이나 자주 호출되는 함수 안에서 이루어진다면, 이러한 작업은 비효율적일 수 있다. 반면에 루프와 함수안의 함수 리터럴이나 중첩된 함수는 그것이 나타날 때마다 매번 다시 컴파일되지 않는다. 또한 함수 리터럴이 나타날 때마다 생성되는 함수는 서로 다른 함수 객체가 생성된 것이 아니다.&lt;/li&gt;&lt;li&gt;끝으로 Function()생성자의 가장 중요한 점은 생성된 함수가 어휘적 유효범위를 사용하지 않는다는 것이다. 대신 Function()생성자에 의해 생성된 함수는 다음 코드에서 확인할 수 있듯이 마치 최상위 레벨의 함수인 것처럼 컴파일된다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7693406185783270645?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7693406185783270645/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript-function-%EC%83%9D%EC%84%B1%EC%9E%90.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7693406185783270645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7693406185783270645'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript-function-%EC%83%9D%EC%84%B1%EC%9E%90.html' title='javascript Function() 생성자'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-5544793330306744518</id><published>2010-04-26T13:03:00.000+09:00</published><updated>2011-01-30T14:08:40.533+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>자바스크립트 문장 문법</title><content type='html'>&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;문장&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;문법 &lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;용도&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;break&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;bread 레이블;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;가장 안쪽의 루프, switch문, 또는 '레이블'로 명명된 문장에서 빠져나온다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;case&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;case 표현식:&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;switch 문 내부의 문장에 레이블을 붙인다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;continue&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;continue;&lt;br /&gt;&amp;nbsp;continue 레이블;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;가장 안쪽의 루프, 또는 '레이블'로 명명된 루프를 재시작한다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;default&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;default;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;switch 문에서 디폴트 문장에 레이블을 붙인다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;do/while&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;do&lt;br /&gt;&amp;nbsp; 문장&lt;br /&gt;&amp;nbsp;while(표현식);&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;while 루프를 만드는 다른 방법&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;empty&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;아무일도 안함&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;for&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;for(초기화; 테스트; 증가)&lt;br /&gt;&amp;nbsp; 문장&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;편리하게 쓸 수 있는 루프&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;for/in&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;for(변수 in 객체)&lt;br /&gt;&amp;nbsp; 문장&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;객체에 속한 프로퍼티들에 대한 루프를 돈다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;function&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;function 함수 이름 ([전달인자1 [..., 전달인자 n])&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; 문장&lt;br /&gt;}&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;함수를 선언한다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;if/else&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;if(표현식)&lt;br /&gt;&amp;nbsp; 문장1&lt;br /&gt;[else 문장2]&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;조건부 코드 실행&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;label&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;식별자: 문장&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;'문장'에 '식별자'라는 이름을 붙인다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;return&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;return[표현식] &lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;함수를 반환한다. 또는 함수를 '표현식'의 값으로 반환한다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;switch&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;switch(표현식){&lt;br /&gt;&amp;nbsp; 문장&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;case 또는 default: 로 레이블이 붙은 문장들로 다중 분기&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;throw&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;throw 표현식;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예외를 발생시킨다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;try &lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;try{&lt;br /&gt;&amp;nbsp; 문장&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;catch(식별자){&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;finally{&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;예외를 잡아낸다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;var&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;var 이름_1[=값_1][...,이름_n][=값_n];&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;변수선언과 초기화&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;while&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;while (표현식)&lt;br /&gt;&amp;nbsp; 문장&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;기본적인 루프 생성문&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;with&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;with(객체)&lt;br /&gt;&amp;nbsp; 문장&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;유효 범위 체인의 확장&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-5544793330306744518?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/5544793330306744518/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%AC%B8%EC%9E%A5-%EB%AC%B8%EB%B2%95.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5544793330306744518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5544793330306744518'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%AC%B8%EC%9E%A5-%EB%AC%B8%EB%B2%95.html' title='자바스크립트 문장 문법'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-622050176196270147</id><published>2010-04-23T17:55:00.000+09:00</published><updated>2011-11-09T21:06:52.523+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>javascript ===, ==, &gt;=, &lt;=연산자</title><content type='html'>=== 연산자가 두 값이 일치하는지 아닌지 판단하는 데에는 다음과 같은 규칙들을 따른다.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;두 값의 타입이 다르다면 두 값은 일치하지 않는다.&lt;/li&gt;&lt;li&gt;두 값이 모두 숫자이고 값이 같다면 두 값은 일치한다. 단, 적어도 하나의 값이 NaN일 경우 두 값은 일치하지 않는다. NaN값은 어느 값과도 일치하지 않는다. 어떤값이 NaN인지 확인하려면 전역 함수인 isNaN()을 사용하라.&lt;/li&gt;&lt;li&gt;두 값이 모두 문자열이고 같은 위치에 정확히 같은 문자들을 갖고 있다면 두 값이 일치한다. 만일 문자열의 길이나 내용이 다른 경우 두 값은 일치하지 않는다. 몇몇 경우 Unicode 표준에서 한 문자열을 인코딩 하는 방법이 두 가지 이상일 수 있음을 유의하라. 하지만 자바스크립트에서 효율성을 위해 엄격히 문자 대 문자 비교의 원칙으로 문자열을 비교하며, 모든 문자열은 비교되기 이전에 '정규 형식'으로 변환되어 있다고 가정한다. &lt;/li&gt;&lt;li&gt;두 값이 모두 불리언 값 true인 경우, 또는 두 값이 모두 불리언 값 false인 경우, 두 값은 일치한다.&lt;/li&gt;&lt;li&gt;두 값이 같은 객체, 배열 또는 함수를 참조할 경우 두 값이 일치한다. 만일 두 값이 서로 별개의 객체를 참조할 경우 두 값은 일치하지 않는다. 설사 두 객체의 프로퍼티가 일치하거나 두 배열의 원소가 일치한다고 하더라고 마찬가지다.&lt;/li&gt;&lt;li&gt;두 값이 모두 null일 경우, 또는 두 값이 모두 undefined일 경우, 두 값은 일치한다.&lt;/li&gt;&lt;/ul&gt;== 연산자가 두 값이 동등한지 아닌지 판단하는 데에는 다음의 규칙들을 따른다.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;두 값의 타입이 같은 경우 두 값이 일치하는지 테스트 한다. 두 값이 일치할 경우 그 둘은 동등하다. 두 값이 일치하지 않는 경우 동등하지 않다.&lt;/li&gt;&lt;li&gt;두 값의 타입이 다른 경우라 할지라도 동등할 여지가 있다. 동등함을 확인하는 과정에는 다음 규칙과 타입 변환이 사용된다.&lt;/li&gt;&lt;li&gt;&lt;ul&gt;&lt;li&gt;두 값 중에 하나가 null이고 다른 하나가 undefined라면 두 값은 동등하다.&lt;/li&gt;&lt;li&gt;한 값이 숫자이고 다른 하나는문자열이면, 문자열을 숫자로 변환한 후에 이 를 사용해 다시 비교한다.&lt;/li&gt;&lt;li&gt;두 값 중 하나가 true이면, 이를 1로 변환한 후 다시 비교한다. 두 값 중 하나가 false이면, 이를 0으로 변환한 후 다시 비교한다.&lt;/li&gt;&lt;li&gt;한 값이 객체이고 다른 하나는 숫자 또는 문자열이면, 객체를 기본 타입의 값으로 변환한 후 다시 비교한다. 객체를 기본값으로 변환하는 데에는 해당 객체의 toString()메서드나 valueOf()메서드가 사용된다. 코어 자바스크립트 내장 클래스에서 toString() 변환을 적용하기 전에 valueof()변환을 시도한다. 단, Date클래스는 예외적으로 toString() 변환을 바로 수행한다. 코어 자바스크립트에 속하지 않는 객체에서는 각 구현에서 정의한 방식으로 기본값 변환을 수행한다.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;위에 열거하지 않은 기타 값들의 조합은 동등하지 않다.&lt;/li&gt;&lt;/ul&gt;&amp;gt;=, &amp;lt;=&lt;br /&gt;&lt;ul&gt;&lt;li&gt;두 피연산자가 모두 숫자이거나 또는 둘 다 숫자로 변환할 수 있으면 이 둘은 숫자로 비교된다.&lt;/li&gt;&lt;li&gt;두 피연산자가 모두 문자열이거나 또는 둘 다 문자열로 변환할 수 있으면 이 둘은 문자열로 비교된다.&lt;/li&gt;&lt;li&gt;한 피연산자는 문자열이고 다른 하나는 숫자라면, 비교 연산자는 먼저 문자열을 숫자로 변환하여 이들을 숫자로서 비교하려 시도할 것이다. 만일 여기서 문자열이 나타내는 것이 숫자가 아니라면, 이 문자열은 NaN으로 변환된 후 비교 결과는 false다.&lt;/li&gt;&lt;li&gt;어떤 객체를 숫자나 문자열로 변환할 수 있으면 자바스크립트는 숫자 변환을 수행한다. 이 말은 예를 들면 Date 객체는 숫자로서 비교된다는 것을 뜻한다. 두 날짜 중 어느 것이 더 앞서는지 확인할 경우가 있을 테니 Data를 수사로서 비교하는 것이 말이 된다.&lt;/li&gt;&lt;li&gt;비교 연산자의 피연산자가 숫자나 문자열로 변환되지 못할 경우엔 언제나 false를 반환한다.&lt;/li&gt;&lt;li&gt;둘 중 하나의 피연산자가 NaN이거나 NaN으로 변환된다면 비교 연산자는 언제나 false를 반환한다.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-622050176196270147?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/622050176196270147/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/622050176196270147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/622050176196270147'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript.html' title='javascript ===, ==, &amp;gt;=, &amp;lt;=연산자'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-8086385525275120917</id><published>2010-04-23T17:08:00.000+09:00</published><updated>2011-01-30T14:08:40.429+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>javascript 연산자 우선순위</title><content type='html'>&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;P&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;A&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;연산자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;피연산자 타입&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;수행되는 연산&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;15&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;.&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;객체, 식별자&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;프로퍼티 접근&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;[]&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;배열, 숫자&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;배열 인덱스&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;()&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;함수, 전달인자&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;함수 호출&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;NEW&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;생성자 호출&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;새 객체 생성&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;14&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;++&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;좌변값&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;전치 후치 증가&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;--&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;좌변값&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;전치 후치 감소&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;-&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;단항 마이너스&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;+&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;단항 플러스&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;~&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;정수&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;비트 단위 NOT&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;!&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;불리언&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;논리 NOT&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;delete&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;좌변값&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;프로퍼티 정의를 무효화&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;typeof&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입 무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;데이터 타입을 반환&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;void&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입 무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;undefined 값을 반환&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;13&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;*,/,%&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;곱하기, 나누기, 나머지&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;12&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;+,-&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;더하기 빼기&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;+&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;문자열&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;문자열 이어 붙이기&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;11&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;&amp;lt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;왼쪽으로 이동&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;gt;&amp;gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;부호비트를 확장하며 오른쪽으로 이동&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;&amp;lt;&amp;lt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;부호비트를 확장하며 왼쪽으로 이동&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;10&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;lt;,&amp;lt;=&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자 또는 문자열&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;작다, 작거나 같다&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;gt;,&amp;gt;=&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자 또는 문자열&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;크다, 크거나 같다&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;instanceof&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;객체, 생성자&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;객체 타입 확인&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;in&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;문자열, 객체&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;프로퍼티가 존재하는지 확인&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;9&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;==&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입 무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;동등한지 테스트&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;!=&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입 무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;동등하지 않은지 테스트&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;===&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입 무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;일치하는지 테스트&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;!==&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입 무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;일치하지 않은지 테스트&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;8&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;amp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;비트 단위 AND&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;7&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;^&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;비트 단위 XOR&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;6&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;|&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;비트 단위 OR&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;5&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;&amp;amp;&amp;amp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;불리언&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;논리 AND&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;4&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;||&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;불리언&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;논리 OR&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;3&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;?:&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;불리언, 타입무방, 타입무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;조건부 연산자&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;2&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;=&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;좌변값, 타입무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;할당&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;*=, /=, %=, +=, -=, &amp;lt;&amp;lt;=, &amp;gt;&amp;gt;=, &amp;gt;&amp;gt;&amp;gt;=, &amp;amp;=, ^=, |=&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;좌변값, 타입무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;연산을 수반하는 할당&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;1&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;,&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;타입 무방&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;복수의 평가&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-8086385525275120917?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/8086385525275120917/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript-%EC%97%B0%EC%82%B0%EC%9E%90-%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8086385525275120917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8086385525275120917'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript-%EC%97%B0%EC%82%B0%EC%9E%90-%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84.html' title='javascript 연산자 우선순위'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3859716613024157573</id><published>2010-04-23T11:09:00.000+09:00</published><updated>2011-01-30T14:08:40.353+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>javascript 데이터 타입과 값</title><content type='html'>&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;시퀀스&lt;/td&gt;&lt;td&gt; 표현하는 문자&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\0&lt;/td&gt;&lt;td&gt;&amp;nbsp;널문자(\u0000)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\b&lt;/td&gt;&lt;td&gt;&amp;nbsp;백스페이스(\u0008)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\t&lt;/td&gt;&lt;td&gt;&amp;nbsp;수평 탭(\u0009)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\n&lt;/td&gt;&lt;td&gt;&amp;nbsp;줄바꿈 문자(\u000a)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\v&lt;/td&gt;&lt;td&gt;&amp;nbsp;수직 탭(\u000b)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\f&lt;/td&gt;&lt;td&gt;&amp;nbsp;폼 피드(\u000c)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\r&lt;/td&gt;&lt;td&gt;&amp;nbsp;캐리지 리턴(\u000d)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\"&lt;/td&gt;&lt;td&gt;&amp;nbsp;큰따옴표(\u0022)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\'&lt;/td&gt;&lt;td&gt;&amp;nbsp;작은 따옴표(\u0027)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\\&lt;/td&gt;&lt;td&gt;&amp;nbsp;역슬래시(\u005c)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\x??&lt;/td&gt;&lt;td&gt;&amp;nbsp;두개의 16진수 숫자 ??에 의해 지정되는 Latin-1문자.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\u???&lt;/td&gt;&lt;td&gt;&amp;nbsp;네 개의 16진수 숫자 ????에 의해 지정되는 Unicode 문자.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100px"&gt;&amp;nbsp;\???&lt;/td&gt;&lt;td&gt;&amp;nbsp;1과 377 사이의 8진수 숫자 ???에 의해 지정되는 Latin-1 문자.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;값&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;문자열&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;불리언&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;객체&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;undefined&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;"undefined"&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;NaA &lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;false&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Error&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;null&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;"null"&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;0&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;false&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Error&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;빈 문자열이 아닌 문자열&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;문자열이 나타내는 숫자 값 혹은 NaN&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;true&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String 객체&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;빈 문자열&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;0&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;false &lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;String 객체&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;0&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;"0"&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;false&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Number 객체&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;NaN&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;"NaN"&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;false&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Number 객체&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;무한대&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;"Infinity"&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;true&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Number 객체&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;음의 무한대&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;"-Infinity"&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;true&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Number 객체&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;기타 숫자&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;숫자를 문자열로 표현한 것&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;true&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Number 객체&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;true&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;"true"&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;1&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean 객체&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;false&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;"false"&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;0&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Boolean 객체&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;Object&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;toString()&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;valueOf(), toString(), NaN&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;true&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;그 자체&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table style="width: 450px; height: 40px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;타입&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;복사&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;전달&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;비교&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;숫자&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;값&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;값&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;값&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;불리언&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;값&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;값&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;값&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;문자열&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;불변&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;불변&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;값&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;객체&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;참조&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;참조&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;참조&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3859716613024157573?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3859716613024157573/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85%EA%B3%BC-%EA%B0%92.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3859716613024157573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3859716613024157573'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/javascript-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85%EA%B3%BC-%EA%B0%92.html' title='javascript 데이터 타입과 값'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7163262440347613985</id><published>2010-04-16T13:44:00.000+09:00</published><updated>2011-01-30T14:08:38.897+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>네?</title><content type='html'>&lt;FONT size=7 face="arial black,avant garde"&gt;네?&lt;/FONT&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7163262440347613985?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7163262440347613985/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/%EB%84%A4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7163262440347613985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7163262440347613985'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/%EB%84%A4.html' title='네?'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4602575195885938878</id><published>2010-04-15T14:33:00.000+09:00</published><updated>2011-01-30T14:08:38.741+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>관계형 데이터베이스</title><content type='html'>&lt;p&gt;&lt;br /&gt;기능&lt;/p&gt;&lt;ul&gt;&lt;li&gt;데이터의 저장을 관리한다.&lt;/li&gt;&lt;li&gt;데이터에 대한 엑세스를 통제한다.&lt;/li&gt;&lt;li&gt;데이터를 검색 및 수정하기 위한 수단을 제공한다.&lt;/li&gt;&lt;li&gt;하나의 단일 테이블은 칼럼과 행이 조합되어 있다.&lt;/li&gt;&lt;li&gt;칼럼과 행의 교차점을 필드라고 한다.&lt;/li&gt;&lt;li&gt;필드 값은 더 작은 요소로 쪼갤 수 없다.&lt;/li&gt;&lt;li&gt;각 행은 기본키에 의해 구분되고, 기본키는 중복을 허용하지 않으며 없어서 앖되는 값이다.&lt;/li&gt;&lt;li&gt;PRIMARY KEY는 일반적으로 변경되지 않은 값으로 정한다.&lt;/li&gt;&lt;li&gt;FOREIGN KEY는 논리적인 값에 근거를 한 것이지 물리적으로 존재하는 POINTER와는 다르다.&lt;/li&gt;&lt;li&gt;FOREIGN KEY가 가질 수 있는 값은 참조하는 PRIMARY KEY의 값이나 NULL값만 허용한다.&lt;/li&gt;&lt;li&gt;행의 순서는 중요하지 않지만, 기본으로 테이터는 입력되는 순서로 정렬된다.&lt;/li&gt;&lt;li&gt;각 칼럼명은 한 테이블내에서 유일하며 각 테이블명은 한 스키마 내에서 유일하다.&lt;/li&gt;&lt;li&gt;칼럼순서는 데이터를 저장할 때 무의미하지만, 조회할 때는 칼럼의 순서를 지정할 수 있다.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;용어 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table style="border: medium none; width: 90%; height: 40px;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;개념&lt;/td&gt;&lt;td&gt;&amp;nbsp;설명&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;Table&lt;/td&gt;&lt;td&gt;&amp;nbsp;Table은 RDBMS의 기본적인 저장구조로, 한 개 이상의 Column과 0개 이상의 Row로 구성된다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;Row&lt;/td&gt;&lt;td&gt;&amp;nbsp;Row는 Table의 Column들의 값의 조합니다. 예를 들면, S_DEPT Table상에서 한 부서에 관련한 정보는 한 Row가 될 수 있다. Row는 가끔 레코드라고 불린다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;Column&lt;/td&gt;&lt;td&gt;&amp;nbsp;한 Column은 Table상에서 단일 종류의 데이터를 나타내는데, 예를 들면 S_DEPT Table상에서 부서이름이 하나의 Column이 된다. Column은 특정 datatype 및 크기를 갖고 있다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;Field&lt;/td&gt;&lt;td&gt;&amp;nbsp;Row와 Column의 교차점에 Field가 있으며, Field는 데이터를 포함할 수 있으며 데이터가 없을 때, NULL 값을 갖고 있다고 말한다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;Primary Key&lt;/td&gt;&lt;td&gt;&amp;nbsp;Primary Key는 한 Table의 각각의 Row를 유일하게 식별해주는 Column 또는 Column의 조합이다. 예를 들면 부서번호는 Primary Key가 될 수 있으며, Primary Key는 NULL 값을 허용하지 않는다.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;Foreign Key&lt;/td&gt;&lt;td&gt;&amp;nbsp;Foreign Key는 같은 Table 또는 Table의 Primary key 를 참조하는 단일 Column 또는 Column의 조합이다. 예를 들면 부서번호는 Primary Key가 될 수 있으며, Primary Key는 NULL값을 허용하지 않는다.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;객체&lt;/p&gt;&lt;table style="width: 90%; height: 126px; border: medium none;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;오브젝트&lt;/td&gt;&lt;td&gt;&amp;nbsp;설명&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;테이블&lt;/td&gt;&lt;td&gt;&amp;nbsp;행과 열의 조합으로 구성된 기본 저장단위&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;뷰&lt;/td&gt;&lt;td&gt;&amp;nbsp;하나 또는 그 이상의 테이블로부터 논리적으로 데이터를 추출한 부분집합으로 논리적이고 가장적인 테이블&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;시퀀스&lt;/td&gt;&lt;td&gt;&amp;nbsp;자동으로 고유한 숫자값을 생성해주며 주로 기본키 값을 생성하기 위해 사용&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;인덱스&lt;/td&gt;&lt;td&gt;&amp;nbsp;쿼리 속도를 향상&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;시노님&lt;/td&gt;&lt;td&gt;&amp;nbsp;OBJECT에 대한 또다른 이름으로 ALIAS 역할&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="100"&gt;&amp;nbsp;프로그램 유닛&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;SQL, PL/SQL문으로 작성한 Procedure, Function, Trigger, Package&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4602575195885938878?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4602575195885938878/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/%EA%B4%80%EA%B3%84%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4602575195885938878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4602575195885938878'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/%EA%B4%80%EA%B3%84%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4.html' title='관계형 데이터베이스'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2373058577653483011</id><published>2010-04-06T11:45:00.000+09:00</published><updated>2011-01-30T14:08:37.935+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL TRIGGER</title><content type='html'>&lt;P&gt;TRIGGER란?&lt;/P&gt;&lt;P&gt;사용자가 CALL하는 것이 아니고 임의의 테이블에 특정한 DML문이 수행됐을때 데이터베이스에서 자동적으로 동작하도록 작성한 프로그램이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;분류&lt;/P&gt;&lt;P&gt;TIMING에 따른 분류&lt;/P&gt;&lt;P&gt;BEFORE TRIGGER&lt;/P&gt;&lt;P&gt;AFTER TRIGGER&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;수행 차수에 따른 분류&lt;/P&gt;&lt;P&gt;STATEMENT TRIGGER&lt;/P&gt;&lt;P&gt;ROW TRIGGER&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;CREATE [OR REPLACE] TRIGGER trigger명&lt;/P&gt;&lt;P&gt;timing event1[OR event2...] OF 컬럼명 ON 테이블명&lt;/P&gt;&lt;P&gt;[FOR EACH ROW]&lt;/P&gt;&lt;P&gt;pl/sql_block;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2373058577653483011?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2373058577653483011/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-trigger.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2373058577653483011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2373058577653483011'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-trigger.html' title='SQL TRIGGER'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-5462835177448899830</id><published>2010-04-06T10:58:00.000+09:00</published><updated>2011-01-30T14:08:37.890+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL 오라클 CURSOR</title><content type='html'>&lt;P&gt;CURSOR란?&lt;/P&gt;&lt;P&gt;하나의 고유한 SQL문에 할당된 area를 의미&lt;/P&gt;&lt;P&gt;오라클 서버에 의해서 수행되는 모든 SQL문에는 그 SQL문을 수행하기 위한 CURSOR가 확보됨&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;CURSOR의 형태&lt;/P&gt;&lt;P&gt;-IMPLICIT CURSOR&lt;/P&gt;&lt;P&gt;DML과 ONE ROW SELECT인 경우에 자동으로 선언&lt;/P&gt;&lt;P&gt;-EXPLICIT CURSOR&lt;/P&gt;&lt;P&gt;MULTI ROW SELECT 인 경우에 사용자가 선언&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;IMPLICIT CURSOR&lt;/P&gt;&lt;P&gt;SQL%ROWCOUNT : 가장 최근의 SQL문에 의해 처리된 ROW수&lt;/P&gt;&lt;P&gt;SQL%FOUND : 가장 최근의 SQL문에 의해 처리된 ROW의 개수가 한 개 이상이면 TRUE&lt;/P&gt;&lt;P&gt;SQL%NOTFOUND : 가장 최근의 SQL문에 의해 처리된 ROW의 개수가 없으면 TRUE&lt;/P&gt;&lt;P&gt;SQL%ISOPEN : PL/SQL은 IMPLICIT CURSOR를 사용한 우 즉시 닫기 때문에 항상 FALSE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;EXPLICIT CURSOR&lt;/P&gt;&lt;P&gt;CURSOR의 선언&lt;/P&gt;&lt;P&gt;- CURSOR에 대한 이름을 부여하고 QUERY에 의한 구조를 정의&lt;/P&gt;&lt;P&gt;CURSOR의 활성화&lt;/P&gt;&lt;P&gt;- QUERY를 수행하고 변수와 BIND. 이때 현재 CURSOR와 BIND된 행을 ACTIVE SET이라 함&lt;/P&gt;&lt;P&gt;CURSOR로부터 데이터 FETCH&lt;/P&gt;&lt;P&gt;- 현재 행의 데이터를 변수에 전달&lt;/P&gt;&lt;P&gt;- CURSOR의 POINTER가 다음 행으로 이동&lt;/P&gt;&lt;P&gt;CURSOR를 비활성화&lt;/P&gt;&lt;P&gt;- ACTIVE SET이 RELEASE&lt;/P&gt;&lt;P&gt;DECLARE&lt;/P&gt;&lt;P&gt;CURSOR cursor명 IS&lt;/P&gt;&lt;P&gt;select 문장;&lt;/P&gt;&lt;P&gt;OPEN cursor명&lt;/P&gt;&lt;P&gt;FETCH cursor명 INTO 변수1, 변수2,...;&lt;/P&gt;&lt;P&gt;EXPLICIT CURSOR의 ATTRIBUTE&lt;/P&gt;&lt;P&gt;%ISOPEN : CURSOR가 OPEN되어 있으면 TRUE&lt;/P&gt;&lt;P&gt;%NOTFOUND : FETCH문에 의해 검색된 데이터가 없으면 TRUE&lt;/P&gt;&lt;P&gt;%FOUND : FETCH문에 의해 검색된 데이터가 있으면 TRUE&lt;/P&gt;&lt;P&gt;%ROWCOUNT : FETCH한 데이터의 총 갯수&lt;/P&gt;&lt;P&gt;CURSOR FOR LOOP&lt;/P&gt;&lt;P&gt;FOR record명 IN cursor명 loop&lt;/P&gt;&lt;P&gt;문장1;&lt;/P&gt;&lt;P&gt;문장2;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;END LOOP;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-5462835177448899830?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/5462835177448899830/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-cursor.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5462835177448899830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5462835177448899830'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-cursor.html' title='SQL 오라클 CURSOR'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2180645836115666690</id><published>2010-04-05T21:01:00.000+09:00</published><updated>2011-01-30T14:08:37.845+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL PL/SQL EXCEPTION</title><content type='html'>&lt;P&gt;PL/SQL에서 발생하는 ERROR를 EXCEPTION이라 함&lt;/P&gt;&lt;P&gt;EXCEPTION&lt;/P&gt;&lt;P&gt;WHEN exception명1[OR exception명2...]THEN&lt;/P&gt;&lt;P&gt;문장1;&lt;/P&gt;&lt;P&gt;문장2;&lt;/P&gt;&lt;P&gt;[WHEN exception명3[OR exception명4...]THEN&lt;/P&gt;&lt;P&gt;문장1;&lt;/P&gt;&lt;P&gt;문장2;...]&lt;/P&gt;&lt;P&gt;[WHEN OTHERS THEN&lt;/P&gt;&lt;P&gt;문장1;&lt;/P&gt;&lt;P&gt;문장2; ...]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PREDEFINED EXCEPTION&lt;/P&gt;&lt;P&gt;DECLARE SECTION에서 선언할 필요 없음&lt;/P&gt;&lt;P&gt;- NO_DATA_FOUND : 데이터를 반환하지 않는 SELECT문&lt;/P&gt;&lt;P&gt;- TOO_MANY_ROWS : 두개 이상을 반환한 SELECT문&lt;/P&gt;&lt;P&gt;- INVALID_CURSOR : 잘못된 CURSOR 연산 발생&lt;/P&gt;&lt;P&gt;- ZERO_DIVIDE : 0으로 나누기&lt;/P&gt;&lt;P&gt;- DUP_VAL_ON_INDEX : UNIQUE COLUMN에 중복된 값을 입력할때&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DECLARE&lt;/P&gt;&lt;P&gt;exception명 EXCEPTION;&lt;/P&gt;&lt;P&gt;PRAGMMA EXCEPTION_INIT(exception명, 에러번호);&lt;/P&gt;&lt;P&gt;BEGIN&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;EXCEPTION&lt;/P&gt;&lt;P&gt;WHEN exception명 THEN&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;END;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;USER DEFINE EXCEPTION&lt;/P&gt;&lt;P&gt;DECLARE&lt;/P&gt;&lt;P&gt;exception 명 EXCEPTION;&lt;/P&gt;&lt;P&gt;BEGIN&lt;/P&gt;&lt;P&gt;RAISE exception명;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;EXCEPTION&lt;/P&gt;&lt;P&gt;WHEN exception명 THEN&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;END;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SQLCODE, SQLERRM&lt;/P&gt;&lt;P&gt;일반적인 Error처리를 위하여 오라클에서 제공하는 함수인 SQLCODE, SQLERRM을 활용할 수 있다.&lt;/P&gt;&lt;P&gt;WHEN OTHER 절의 사용&lt;/P&gt;&lt;P&gt;-예상치 못한 Error처리를 위해서 미리 선언되지 않은 모든 종류의 Error를 처리함&lt;/P&gt;&lt;P&gt;SQLCODE&lt;/P&gt;&lt;P&gt;-오라클에서 지정된 Error Code를 숫자로 Return &lt;/P&gt;&lt;P&gt;SQLERRM&lt;/P&gt;&lt;P&gt;-오라클에서 지정된 Error Code에 해당하는 Error message를 Return&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2180645836115666690?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2180645836115666690/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-plsql-exception.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2180645836115666690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2180645836115666690'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-plsql-exception.html' title='SQL PL/SQL EXCEPTION'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-6913524894632708368</id><published>2010-04-05T18:04:00.000+09:00</published><updated>2011-01-30T14:08:37.786+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL 오라클 DUAL 테이블</title><content type='html'>&lt;P&gt;DUAL 이라는 테이블은SYS 사용자가 소유하는 오라클의 표준 테이블로서 오직 한 행(row)에 한 컬럼만 담고 있는 dummy 테이블로서 일시적인 산술연산이나 날짜 연산을 위하여 주로 쓰인다.&lt;/P&gt;&lt;P&gt;다시말해서 이 가상 테이블의 SYS의 소유이다. 우리가 SYS로 로그인하지 않거나 SYS.DUAL로 쓰지 않아도 사용할 수 있는 이유는 SYS 사용자가 모든 사용자들에게 사용할 수 있돌고 이 테이블에 PUBLIC synonym을 주었기 때문이다.&lt;/P&gt;&lt;P&gt;DUAL 테이블을 요약 정리하면 다음과 같다.&lt;/P&gt;&lt;P&gt;DUAL 테이블은 오라클을 설치하면 자동으로 생성되는 테이블이다.&lt;/P&gt;&lt;P&gt;DUAL 은 SYS사용자의 스키마지만 모든 사용자가 억세스 할 수 있다.&lt;/P&gt;&lt;P&gt;오직 하나의 DUMMY 컬럼만 가지며, VARCHAR2(1)의 데이터 타입이다.&lt;/P&gt;&lt;P&gt;X라는 하나의 행만 가진다.&lt;/P&gt;&lt;P&gt;SELECT 문에서 상수를 계산할 때 유용하다.&lt;/P&gt;&lt;P&gt;하나의 행만 가지므로 오직 한번만 상수를 반환한다.&lt;/P&gt;&lt;P&gt;이를 변형하여 상수, 가상컬럼 또는 테이블로부터 expression을 select 하지만, 테이블의 여러 행에 여러번 그 값을 반환받을 수 있다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-6913524894632708368?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/6913524894632708368/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-dual-%ED%85%8C%EC%9D%B4%EB%B8%94.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6913524894632708368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6913524894632708368'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-dual-%ED%85%8C%EC%9D%B4%EB%B8%94.html' title='SQL 오라클 DUAL 테이블'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2402932481731424946</id><published>2010-04-05T17:09:00.000+09:00</published><updated>2011-01-30T14:08:37.736+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL 오라클 PL/SQL</title><content type='html'>&lt;P&gt;오라클에서 지원하는 프로그래밍 언어의 특성을 수용한 SQL의 확장&lt;/P&gt;&lt;P&gt;PL/SQL Block내에서 SQL의 DML(데이터 조작어)문과 QUERY(검색어)문, 그리고 절차형 언어(IF,LOOP)등을 사용하여 절차적 프로그래밍을 가능하게 한 강력한 트랜잭션 언어이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;장점 : &lt;/P&gt;&lt;P&gt;프로그램 개발의 모듈화&lt;/P&gt;&lt;P&gt;-Block내에서 논리적으로 관련된 문장들을 기술한다.&lt;/P&gt;&lt;P&gt;-강력한 프로그램을 작성하기 위해 Block내에 Sub Block들을 포함한다.&lt;/P&gt;&lt;P&gt;-복잡한 프로그램을 의미있고 잘 정의된 작은 Block들로 나눈다.&lt;/P&gt;&lt;P&gt;변수 선언&lt;/P&gt;&lt;P&gt;-변수, 상수등을 선언하여 SQL과 절차형 언어에서 사용한다.&lt;/P&gt;&lt;P&gt;-단일형데이타타입과 복합형 데이터타입을 선언할 수 있다.&lt;/P&gt;&lt;P&gt;-테이블과 칼럼의 데이터 타입을 기반으로 하는 유동적인 변수를 선언 할 수 있다.&lt;/P&gt;&lt;P&gt;절차형 언어의 사용&lt;/P&gt;&lt;P&gt;-IF문을 사용하여 조건에 따라 일련의 문장을 실행한다.&lt;/P&gt;&lt;P&gt;-LOOP문을 사용하여 일련의 문장을 반복적으로 실행한다.&lt;/P&gt;&lt;P&gt;-Explicit Cursor를 사용하여 여러 행을 검색힌다.&lt;/P&gt;&lt;P&gt;에러 처리&lt;/P&gt;&lt;P&gt;-Exception 처리 루틴을 사용하여 오라클 서버 에러를 처리한다.&lt;/P&gt;&lt;P&gt;-사용자 정의 에러를 선언하고 Exception 처리 루틴에서 처리한다.&lt;/P&gt;&lt;P&gt;이식성&lt;/P&gt;&lt;P&gt;-PL/SQL은 오라클에 내장되어 있으므로 오라클과 PL/SQL을 지원하는 어떤 호스트로도 프로그램을 옮길 수 있다.&lt;/P&gt;&lt;P&gt;성능 향상&lt;/P&gt;&lt;P&gt;-PL/SQL은 응용 프로그램의 성능을 향상시킬 수 있다.&lt;/P&gt;&lt;P&gt;-PL/SQL은 여러 SQL 문장을 Block으로 묶고 한번에 Block 전부를 서버로 보내기 때문에 통신량을 줄일 수 있다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PL/SQL 프로그램의 작성 요령&lt;/P&gt;&lt;P&gt;PL/SQL 블럭내에서는 한 문장이 종료할 때마다 세미콜론(;)을 쓴다.&lt;/P&gt;&lt;P&gt;END뒤에 ;을 사용하여 하나의 불럭이 끝났다는 것을 명시한다.&lt;/P&gt;&lt;P&gt;PL/SQL 블럭의 작성은 편집기를 통해 파일로 작성할 수도 있고 SQL프롬프트에서 바로 작성할 수도 있다.&lt;/P&gt;&lt;P&gt;SQL*PLUS환경에서는 DECLARE나 BEGIN이라는 키워드로 PL/SQL블럭이 시작하는 것을 알 수 있다.&lt;/P&gt;&lt;P&gt;CREATE 명령이 실행되기 위해서는 /가 필요하다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PL/SQL의 기본 Block 구조&lt;/P&gt;&lt;P&gt;DECLARE - 변수, 상수, 커서, 에러를 선언 (생략가능)&lt;/P&gt;&lt;P&gt;BEGIN - DB와 Interact(SQL 문 사용), PL/SQL제어문 (필수)&lt;/P&gt;&lt;P&gt;EXCEPTION - 에러 발생시 처리해야 할 문장을 기술(생략가능)&lt;/P&gt;&lt;P&gt;END ; - 필수&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;progam의 종류&lt;/P&gt;&lt;P&gt;subprogram&lt;/P&gt;&lt;P&gt;-function : return a value&lt;/P&gt;&lt;P&gt;-procedure : do action&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;자동 실행 program&lt;/P&gt;&lt;P&gt;-TRIGGER&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;FUNCTION&lt;/P&gt;&lt;P&gt;CREATE [OR REPLACE] FUNCTION function명&lt;/P&gt;&lt;P&gt;[(parameter1 parameter타입 parameter데이터 타입,&lt;/P&gt;&lt;P&gt;parameter2,...)]&lt;/P&gt;&lt;P&gt;return 데이터타입&lt;/P&gt;&lt;P&gt;IS&lt;/P&gt;&lt;P&gt;변수선언&lt;/P&gt;&lt;P&gt;BEGIN&lt;/P&gt;&lt;P&gt;RETURN(값);&lt;/P&gt;&lt;P&gt;EXCEPTION&lt;/P&gt;&lt;P&gt;END;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PROCEDURE&lt;/P&gt;&lt;P&gt;CREATE [OR REPLACE] PROCEDURE procedure명&lt;/P&gt;&lt;P&gt;[(parameter1 parammeter 타입 parameter 데이터타입,&lt;/P&gt;&lt;P&gt;parameter2,...)]&lt;/P&gt;&lt;P&gt;IS&lt;/P&gt;&lt;P&gt;변수선언&lt;/P&gt;&lt;P&gt;BEGIN&lt;/P&gt;&lt;P&gt;EXCEPTION&lt;/P&gt;&lt;P&gt;END;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PARAMETER 타입&lt;/P&gt;&lt;P&gt;IN - 실행환경에서 PROGRAM로 값을 전달&lt;/P&gt;&lt;P&gt;OUT - PROGRAM에서 실행환경으로 값을 전달&lt;/P&gt;&lt;P&gt;IN OUT - 실행환경에서 PROGRAM로 값을 전달하고, 다시 PROGRAM에서 실행환경으로 변경된 값 전달&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;변수 선언&lt;/P&gt;&lt;P&gt;Identifier명 [CONSTANT] 데이터 타입 [NOT NULL] [:= 상수값이나 표현식];&lt;/P&gt;&lt;P&gt;Identifier의 이름은 SQL의 Object명과 동일한 규칙을 따른다.&lt;/P&gt;&lt;P&gt;Identifier를 상수로 지정하고 싶으면 CONSTANT라는 키워드를 명시하고 반드시 초기치를 할당한다.&lt;/P&gt;&lt;P&gt;NOT NULL이 정의되어 있으면 초기값을 반드시 지정하고, 정의되어 있지 않을 때는 생략 할 수 있다.&lt;/P&gt;&lt;P&gt;초기값은 할당 연산자(:=)를 사용하여 정의한다.&lt;/P&gt;&lt;P&gt;초기값을 정의하지 않으면 Identifier는 NULL값을 갖게 된다.&lt;/P&gt;&lt;P&gt;일반적으로 한줄에 Identifier를 정의한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;데이터 타엡에 따른 변수의 종류&lt;/P&gt;&lt;P&gt;scalar 변수&lt;/P&gt;&lt;P&gt;composite 변수&lt;/P&gt;&lt;P&gt;PL/SQL 에서 제공하는 COMPOSITE DATATYPE은 TABLE과 RECORD가 있다.&lt;/P&gt;&lt;P&gt;TABLE TYPE은 DB내의 테이블과는 구별된다.&lt;/P&gt;&lt;P&gt;TABLE TYPE은 1차원 배열과 유사하다.&lt;/P&gt;&lt;P&gt;table type:&lt;/P&gt;&lt;P&gt;DECLARE&lt;/P&gt;&lt;P&gt;TYPE Type 이름 IS TABLE OF scalar 데이터타입 [NOT NULL]&lt;/P&gt;&lt;P&gt;INDEX BY BINARY_INTEGER;&lt;/P&gt;&lt;P&gt;Identyfier 이름 Type이름;&lt;/P&gt;&lt;P&gt;record type&lt;/P&gt;&lt;P&gt;record type은 테이블에서의 행과는 구별된다.&lt;/P&gt;&lt;P&gt;record type은 구조가 3GL에서의 record와 유사하다.&lt;/P&gt;&lt;P&gt;record type은 논리적인 단위로 취급되는 field의 집합이다.&lt;/P&gt;&lt;P&gt;DECLARE&lt;/P&gt;&lt;P&gt;TYPE type이름 IS RECORD&lt;/P&gt;&lt;P&gt;(FIELD명1 데이터타입[NOT NULL{:=표현식}],&lt;/P&gt;&lt;P&gt;FIELD명2 데이터타입[NOT NULL{:=표현식}],...);&lt;/P&gt;&lt;P&gt;Identifier명 Type이름:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%type 변수&lt;/P&gt;&lt;P&gt;장점:&lt;/P&gt;&lt;P&gt;-테이블의 컬럼에 대한 데이터타입을 정확히 모르는 경우에 유용&lt;/P&gt;&lt;P&gt;-컬럼에 대한 데이터 타입이 중간에 변경되는 경우에 유용&lt;/P&gt;&lt;P&gt;%rowtype 변수&lt;/P&gt;&lt;P&gt;장점&lt;/P&gt;&lt;P&gt;-테이블의 컬럼에 대한 테이터타입을 정확히 모르는 경우에 유용&lt;/P&gt;&lt;P&gt;-컬럼에 대한 데이터 타입이 중간에 변경되는 경우에 유용&lt;/P&gt;&lt;P&gt;-SELECT 구문으로 하나의 행을 검색시 유용&lt;/P&gt;&lt;P&gt;-Explicit Cursor를 이용하여 다중 행을 검색시 유용&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;제어문&lt;/P&gt;&lt;P&gt;IF 조건 THEN&lt;/P&gt;&lt;P&gt;문장;&lt;/P&gt;&lt;P&gt;[ELSIF 조건 THEN&lt;/P&gt;&lt;P&gt;문장;]&lt;/P&gt;&lt;P&gt;[ELSE&lt;/P&gt;&lt;P&gt;문장;]&lt;/P&gt;&lt;P&gt;END IF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;BASIC LOOP&lt;/P&gt;&lt;P&gt;LOOP&lt;/P&gt;&lt;P&gt;문장1;&lt;/P&gt;&lt;P&gt;문장2;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;EXIT[WHEN 조건];&lt;/P&gt;&lt;P&gt;END LOOP;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;FOR 인덱스 IN[REVERSE] 하한.. 상한 LOOP&lt;/P&gt;&lt;P&gt;문장1:&lt;/P&gt;&lt;P&gt;문장2:&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;END LOOP;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;WHILE 조건 LOOP&lt;/P&gt;&lt;P&gt;문장1;&lt;/P&gt;&lt;P&gt;문장2;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;END LOOP;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2402932481731424946?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2402932481731424946/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-plsql.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2402932481731424946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2402932481731424946'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-plsql.html' title='SQL 오라클 PL/SQL'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3964974542262120062</id><published>2010-04-05T15:13:00.000+09:00</published><updated>2011-01-30T14:08:37.689+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL Object의 종류</title><content type='html'>&lt;P&gt;Object의 종류 및 기능&lt;/P&gt;&lt;P&gt;테이블 : 행과 열의 조합으로 구성된 데이터의 기본 저장 단위.&lt;/P&gt;&lt;P&gt;시퀀스 : 자동으로 고유한 숫자값을 생성해주며 주로 기본 키 값을 생성하기 위해 사용.&lt;/P&gt;&lt;P&gt;인덱스 : 쿼리 속도를 향상.&lt;/P&gt;&lt;P&gt;뷰 : 하나 또는 그 이상의 테이블로부터 논리적으로 데이터를 추출한 부분집합으로 논리적이고 가상적인 테이블&lt;/P&gt;&lt;P&gt;시노님 : Object에 대한 또다른 이름으로 ALIAS역할&lt;/P&gt;&lt;P&gt;프로그램 유닛 : SQL, PL/SQL문으로 작성한 Procedure, Function, Trigger, Package&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SEQUENCE란?&lt;/P&gt;&lt;P&gt;자동으로 Unique number를 생성&lt;/P&gt;&lt;P&gt;공유가능한 Object&lt;/P&gt;&lt;P&gt;일반적으로 Primary Key값 생성을 위해 사용&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;CREATE SEQUENCE 이름&lt;/P&gt;&lt;P&gt;[INCREMENT BY n]&lt;/P&gt;&lt;P&gt;[START WITH n]&lt;/P&gt;&lt;P&gt;[{MAXVALUE n | NOMAXVALUE }]&lt;/P&gt;&lt;P&gt;[{MINVALUE n | NOMINVALUE}]&lt;/P&gt;&lt;P&gt;[{CYCLE | NOCYCLE}]&lt;/P&gt;&lt;P&gt;[{CACHE | NOCACHE}]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;사용법 : &lt;/P&gt;&lt;P&gt;NEXTVAL, CURRVAL 의사 컬럼의 사용&lt;/P&gt;&lt;P&gt;NEXTVAL은 사용 가능한 다음 SEQUENCE값을 반환한다.&lt;/P&gt;&lt;P&gt;NEXTVAL은 다른 사용자에 의해 참조되더라도 매번 고유한 값을 반환한다.&lt;/P&gt;&lt;P&gt;CURRVAL은 현재 SEQUENCE 값을 포함한다.&lt;/P&gt;&lt;P&gt;CURRVAL은 반드시 NEXTVAL사용 후에 참조되어야 한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;인덱스의 개념&lt;/P&gt;&lt;P&gt;테이블의 데이터를 좀더 빠르게 검색하기 위해 사용하는 데이터베이스 Object이다.&lt;br /&gt;오라클서버가 최적화 방법에 따라 어떤 Index를 사용할 것인지, 혹은 Index를 사용하지 않을 것인지를 결정한다.&lt;/P&gt;&lt;P&gt;B*트리의 검색방법으로 디스크 입출력(I/O) 횟수를 줄인다.&lt;/P&gt;&lt;P&gt;오라클 서버가 Index를 자동적으로 사용하고 유지보수한다.&lt;/P&gt;&lt;P&gt;Index는 논리적, 물리적으로 테이블과는 독립적이다.&lt;/P&gt;&lt;P&gt;Index는 자동으로 생성되기도 하고 사용자가 필요에 의해 만들기도 한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;인덱스 생성을 위한 지침&lt;/P&gt;&lt;P&gt;인덱스를 만들 때&lt;/P&gt;&lt;P&gt;-조건절이나 조인조건에서 컬럼을 자주 이용할 때&lt;/P&gt;&lt;P&gt;-컬럼이 넓은 범위값을 가질 때 &lt;/P&gt;&lt;P&gt;-많은 NULL값을 갖는 컬럼일 때&lt;/P&gt;&lt;P&gt;-테이블의 데이터가 많고 그 테이블에서 조회되는 행의 수가 전체의 10-15%정도 일때&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;인덱스를 만들지 않아야 할 때&lt;/P&gt;&lt;P&gt;-테이블이 작을 때&lt;/P&gt;&lt;P&gt;-컬럼이 조회의 조건으로 사용되는 경우가 별로 없을 때&lt;/P&gt;&lt;P&gt;-대부분의 조회가 행의 10-15% 이상을 검색한다고 예상될 때&lt;/P&gt;&lt;P&gt;-테이블이 자주 변경될때&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;View?&lt;/P&gt;&lt;P&gt;view란 테이블이나 다른 뷰를 기초로 한 논리적이고 가상의 테이블이다.&lt;/P&gt;&lt;P&gt;view는 자체의 데이타는 없지만 테이블의 데이타를 보거나 변경할 수 있는 창과 같다.&lt;/P&gt;&lt;P&gt;view는 실제적으로 질의문장을 가진다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;장점&lt;/P&gt;&lt;P&gt;뷰는 데이타베이스의 선택적인 내용을 보여줄 수 있기 때문에 데이터베이스에 대한 액세스를 제한한다.&lt;/P&gt;&lt;P&gt;복잡한 질의어를 통해 얻을 수 있는 결과를 간단한 질의어를 써서 구할 수 있게 한다. 예를 들면 조인 방법을 몰라도 조인을 한 것처럼 여러 테이블에 대한 데이타를 뷰를 통해 볼 수 있다.&lt;/P&gt;&lt;P&gt;한 개의 뷰로 여러 테이블에 대한 테이타를 검색할 수 있다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;생성&lt;/P&gt;&lt;P&gt;CREATE [OR REPLACE] [FORCE | NOFORCE ] VIEW 이름 [(alias[,alias]...)]&lt;/P&gt;&lt;P&gt;AS subquery&lt;/P&gt;&lt;P&gt;[WITH CHECK OPTION [CONSTRAINT 제약 조건]]&lt;/P&gt;&lt;P&gt;[WITH READ ONLY]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;뷰에 대한 DML문 사용 규칙&lt;/P&gt;&lt;P&gt;간단한 뷰에서는 DML연산 수행 가능&lt;/P&gt;&lt;P&gt;뷰가 다음 사항을 포함하는 경우 행을 삭제할 수 없음&lt;/P&gt;&lt;P&gt;- 조인 조건&lt;/P&gt;&lt;P&gt;- 그룹 함수&lt;/P&gt;&lt;P&gt;- GROUP BY 절&lt;/P&gt;&lt;P&gt;- DISTINCT 명령&lt;/P&gt;&lt;P&gt;뷰가 다음 사항을 포함하는 경우 데이터를 수정할 수 없음&lt;/P&gt;&lt;P&gt;-위의 조건&lt;/P&gt;&lt;P&gt;-식으로 정의된 컬럼&lt;/P&gt;&lt;P&gt;뷰가 다음 사항을 포함하는 경우 데이터를 추가할 수 없음&lt;/P&gt;&lt;P&gt;-위의 조건&lt;/P&gt;&lt;P&gt;-VIEW에 선택되지 않는 NOT NULL 컬럼&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SYNONYM&lt;/P&gt;&lt;P&gt;Synonym이란 특정 Obejct에 부여하는 또다른 이름이다.&lt;/P&gt;&lt;P&gt;Synonym은 사용자의 편의나 참조를 빠르게 하기 위해서 사용한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;CREATE [PUBLIC] SYNONYM synonym명&lt;/P&gt;&lt;P&gt;FOR Object명;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3964974542262120062?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3964974542262120062/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-object%EC%9D%98-%EC%A2%85%EB%A5%98.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3964974542262120062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3964974542262120062'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-object%EC%9D%98-%EC%A2%85%EB%A5%98.html' title='SQL Object의 종류'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4736002787208394576</id><published>2010-04-05T11:44:00.000+09:00</published><updated>2011-01-30T14:08:37.645+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL 오라클 DICTIONARY</title><content type='html'>&lt;P&gt;Dictionary란?&lt;/P&gt;&lt;P&gt;오라클 서버에 의해서 생성되고 유지보수&lt;/P&gt;&lt;P&gt;데이터베이스에 대한 정보를 가짐&lt;/P&gt;&lt;P&gt;읽기 전용으로만 제공되는 뷰와 테이블의 집합&lt;/P&gt;&lt;P&gt;데이터 사전 테이블은 SYS 사용자가 소유한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;종류 : &lt;/P&gt;&lt;P&gt;USER_ : t사용자가 소유한 객체에 관한 정보를 저장&lt;/P&gt;&lt;P&gt;ALL_ : 사용자에게 액세스가 허용된 객체에 관한 정보를 저장&lt;/P&gt;&lt;P&gt;DBA_ : DBA권한을 가진 사용자가 액세스 할 수 있는 정보를 저장&lt;/P&gt;&lt;P&gt;V$ : 서버의 성능과 Locking에 관한 정보를 저장. 일반적으로 DBA에게만 허용됨&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;기타 뷰 &lt;/P&gt;&lt;P&gt;DICTIONARY : 모든 데이터 사전 테이블, 뷰, 동의어 저장&lt;/P&gt;&lt;P&gt;TABLE_PRIVILEGES : 사용자가 권한을 부여했거나 부여받은 오브젝트에 대한 권한&lt;/P&gt;&lt;P&gt;IND : USER_INDEXES의 동의어&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4736002787208394576?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4736002787208394576/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-dictionary.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4736002787208394576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4736002787208394576'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-dictionary.html' title='SQL 오라클 DICTIONARY'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-8604668662340007079</id><published>2010-04-05T11:25:00.000+09:00</published><updated>2011-01-30T14:08:37.586+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL 오라클 CONSTRAINT</title><content type='html'>&lt;p&gt;개념 :&lt;/p&gt;&lt;p&gt;Constraint란 데이터 무결성 유지를 위하여 사용자가 지정할 수 있는 성질이다. &lt;/p&gt;&lt;p&gt;모든 Constraint은 데이터 사전에 저장된다.&lt;/p&gt;&lt;p&gt;의미있는 이름을 부여했다면 Constraint을 참조하기 쉽게 된다.&lt;/p&gt;&lt;p&gt;Constraint의 이름은 표준 객체 명명법을 따르는게 좋다.&lt;/p&gt;&lt;p&gt;Constraint의 이름은 한 사용자 내에서 중복될 수 없다.&lt;/p&gt;&lt;p&gt;Constraint의 이름을 생략했다면 ORACLE은 SYS_Cn형식의 이름을 만든다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;정의 방법 :&lt;/p&gt;&lt;p&gt;컬럼 [CONSTRAINT 제약조건 이름] 제한조건 유형,&lt;/p&gt;&lt;p&gt;컬럼,...&lt;/p&gt;&lt;p&gt;[CONSTRAINT 제약조건 이름] 제한조건 유형(컬럼1, 컬럼2...)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;종류 : &lt;/p&gt;&lt;p&gt;NOT NULL : 컬럼이 널값을 가질 수 없음&lt;/p&gt;&lt;ul&gt;&lt;li&gt;NOT NULL 제약 조건은 NULL 값을 칼럼에 사용할 수 없게 한다.&lt;/li&gt;&lt;li&gt;NOT NULL 제약 조건이 없는 칼럼은 NULL 값을 가질 수 있다.&lt;/li&gt;&lt;li&gt;NOT NULL 제약 조건은 칼럼 레벨로만 정의할 수 있다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;UNIQUE : 컬럼이나 컬럼의 조합이 테이블의 모든 행에서 고유한 값을 가져야 함&lt;/p&gt;&lt;ul&gt;&lt;li&gt;UNIQUE 제약조건은 칼럼이나 컬럼의 조합을 고유 키로 지정한다.&lt;/li&gt;&lt;li&gt;테이블에는 이 키에 대한 같은 값을 갖느느 행이 하나 밖에 없다.&lt;/li&gt;&lt;li&gt;UNIQUE 키는 한 칼럼에 대한 것이라면 NULL 값을 쓸 수 있다.&lt;/li&gt;&lt;li&gt;칼럼 레벨이나 테이블 레벨에서 모두 정의할 수 있다.&lt;/li&gt;&lt;li&gt;UNIQUE 칼럼에 대해 UNIQUE 인덱스가 자동으로 생성된다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;PRIMARY KEY : 컬럼이나 컬럼의 조합이 테이블의 각 행을 유일하게 구별시켜 줌&lt;/p&gt;&lt;ul&gt;&lt;li&gt;테이블에 단 하나의 Primary key만 허용한다.&lt;/li&gt;&lt;li&gt;여러 칼럼일지도 NULL값을 허용하지 않는다.&lt;/li&gt;&lt;li&gt;테이블이나 칼럼 레벨에서 정의할 수 있다.&lt;/li&gt;&lt;li&gt;UNIQUE 인덱스를 자동으로 생성한다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;FOREIGN KEY : 컬럼이나 컬럼의 조합이 다른 테이블의 컬럼이나 컬럼의 조함을 참조함&lt;/p&gt;&lt;ul&gt;&lt;li&gt;foreign key는 자식(child) 테이블에 정의한다.&lt;/li&gt;&lt;li&gt;부모 테이블의 값과 일치하거나 NULL이어야 한다.&lt;/li&gt;&lt;li&gt;테이블이나 칼럼 레벨에서 정의할 수 있다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;CHECK : 컬럼값이 반드시 참이여야 하는 조건&lt;/p&gt;&lt;ul&gt;&lt;li&gt;CHECK 제약 조건은 각 행이 만족해야 하는 조건을 정의한다.&lt;/li&gt;&lt;li&gt;CHECK 제약 조건에서 사용할 수 없는 것은 다음과 같다.&lt;br /&gt;CURRVAL, NEXTVAL, LEVEL, ROWNUM에 대한 참조&lt;br /&gt;SYSDATE, UID, USER, USERENV 함수에 대한 호출&lt;br /&gt;다른 행의 값을 참조&lt;br /&gt;oracle server의 예약어&lt;br /&gt;칼럼이나 테이블 레벨에서 모두 정의할 수 있다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-8604668662340007079?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/8604668662340007079/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-constraint.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8604668662340007079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8604668662340007079'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-constraint.html' title='SQL 오라클 CONSTRAINT'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1915017986493691801</id><published>2010-04-05T09:54:00.000+09:00</published><updated>2011-01-30T14:08:37.527+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL 오라클 내장함수(변환형 함수, 날짜 함수, 숫자형 함수)</title><content type='html'>&lt;p&gt;숫자형 함수&lt;/p&gt;&lt;p&gt;ROUND : 숫자를 반올림&lt;/p&gt;&lt;p&gt;ROUND(숫자값,a) a가 양수이면 소수이하자리를, 음수이면 정수 부분 자리이다.&lt;/p&gt;&lt;p&gt;ROUND(35.735,2) -&amp;gt; 35.74&lt;br /&gt;&lt;/p&gt;&lt;p&gt;TRUNC : 숫자를 절사&lt;/p&gt;&lt;p&gt;TRUNC(숫자값,a)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MOD : 나누기 연산에서 나머지 구함&lt;/p&gt;&lt;p&gt;MOD(7,2) -&amp;gt; 1&lt;br /&gt;&lt;/p&gt;&lt;p&gt;POWER : 거듭제곱&lt;/p&gt;&lt;p&gt;POWER(3,2) -&amp;gt; 9&lt;br /&gt;&lt;/p&gt;&lt;p&gt;SQRT : 제곱근&lt;/p&gt;&lt;p&gt;SQRT(25) -&amp;gt; 5&lt;br /&gt;&lt;/p&gt;&lt;p&gt;SIGN : 양수인지 음수인지 0인지를 구별함&lt;/p&gt;&lt;p&gt;SIGN(-15) -&amp;gt; -1&lt;br /&gt;&lt;/p&gt;&lt;p&gt;CHR : ASCII값에 해당하는 문자를 구함&lt;/p&gt;&lt;p&gt;CHR(65) -&amp;gt; A&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;날짜형 함수&lt;/p&gt;&lt;p&gt;SYSDATE : 현재 시스템의 날짜 및 시간을 구함&lt;/p&gt;&lt;p&gt;SYSDATE -&amp;gt; 현재 시간 10-MAY-99&lt;br /&gt;&lt;/p&gt;&lt;p&gt;LAST_DAY : 지정한 날짜의 해당월의 마지막 날짜를 구함&lt;/p&gt;&lt;p&gt;LAST_DAY('17-FEB-98') -&amp;gt; 28-FEB-98&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MONTHS_BETWEEN : 두 날짜사이의 개월수를 구함&lt;/p&gt;&lt;p&gt;MONTHS_BETWEEN('26-APR-97','22-JUL-95') -&amp;gt; 21.1290323&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ADD_MONTHS : 지정한 날짜로부터 몇 개월수의 날짜를 구함&lt;/p&gt;&lt;p&gt;ADD_MONTHS('22-JUL-95',21) -&amp;gt; 22-APR-97&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ROUND : 날짜에 대한 반올림&lt;/p&gt;&lt;p&gt;ROUND('10-MAY-99','MONTH') -&amp;gt; 01-MAY-99&lt;br /&gt;&lt;/p&gt;&lt;p&gt;TRUNC : 날짜에 대한 버림&lt;/p&gt;&lt;p&gt;&amp;nbsp;TRUNC('10-MAY-99','MONTH') -&amp;gt; 01-MAY-99&lt;br /&gt;&lt;/p&gt;&lt;p&gt;변환형 함수&lt;/p&gt;&lt;p&gt;TO_CHAR : 숫자나 날짜를 문자열로 변환&lt;/p&gt;&lt;p&gt;TO_CHAR(350000,'$999,999') -&amp;gt; $350,000&lt;br /&gt;&lt;/p&gt;&lt;p&gt;TO_NUMBER : 문자를 숫자로 변환&lt;/p&gt;&lt;p&gt;TO_NUMBER('1234') -&amp;gt; 1234&lt;br /&gt;&lt;/p&gt;&lt;p&gt;TO_DATE : 문자를 날짜로 변환&lt;/p&gt;&lt;p&gt;TO_DATE('10 SEPTEMBER 1992','DD MONTH YYYY') -&amp;gt; 10-SEP-92&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1915017986493691801?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1915017986493691801/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98%EB%B3%80%ED%99%98%ED%98%95-%ED%95%A8%EC%88%98-%EB%82%A0%EC%A7%9C-%ED%95%A8%EC%88%98-%EC%88%AB%EC%9E%90%ED%98%95-%ED%95%A8%EC%88%98.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1915017986493691801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1915017986493691801'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/04/sql-%EC%98%A4%EB%9D%BC%ED%81%B4-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98%EB%B3%80%ED%99%98%ED%98%95-%ED%95%A8%EC%88%98-%EB%82%A0%EC%A7%9C-%ED%95%A8%EC%88%98-%EC%88%AB%EC%9E%90%ED%98%95-%ED%95%A8%EC%88%98.html' title='SQL 오라클 내장함수(변환형 함수, 날짜 함수, 숫자형 함수)'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-9113986188553774226</id><published>2010-03-30T18:18:00.000+09:00</published><updated>2011-01-30T14:08:36.283+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL oracle 내장함수[문자열 처리]</title><content type='html'>&lt;p&gt;CONCAT(char1, char2)&lt;/p&gt;&lt;p&gt;두 문자를 결합&lt;/p&gt;&lt;p&gt;CONCAT('ORACLE','Server') -&amp;gt; ORACLEServer&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;INITCAP(char)&lt;/p&gt;&lt;p&gt;주어진 문자열의 첫 번째 문자를 대문자로 변환&lt;/p&gt;&lt;p&gt;INITCAP('ORACLE SERVER') -&amp;gt; Oracle Server&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;LOWER(char)&lt;/p&gt;&lt;p&gt;문자열을 소문자로 변환&lt;/p&gt;&lt;p&gt;LOWER('ORACLE SERVER') -&amp;gt; oracle server&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;UPPER(char)&lt;/p&gt;&lt;p&gt;문자열을 대문자로 변환&lt;/p&gt;&lt;p&gt;UPPER('oracle server') -&amp;gt; ORACLE SERVER&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;LPAD(char1,n[,char2])&lt;/p&gt;&lt;p&gt;왼쪽에 문자열을 끼어 놓는 역할&lt;/p&gt;&lt;p&gt;LPAD('홍길동',10,'*') -&amp;gt; ****홍길동&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;RPAD(char1,n[,char2])&lt;/p&gt;&lt;p&gt;오른쪽에 문자열을 끼어 놓는 역할&lt;/p&gt;&lt;p&gt;RPAD('홍길동',10','*') -&amp;gt; 홍길동****&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;SUBSTR(char, m ,[n])&lt;/p&gt;&lt;p&gt;m번째 자리부터 길이가 n개인 문자열을 반환&lt;/p&gt;&lt;p&gt;SUBSTR('강남구 역삼동',5,2) -&amp;gt; 역삼&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;LENGTH(char1)&lt;/p&gt;&lt;p&gt;문자열의 길이를 리턴&lt;/p&gt;&lt;p&gt;LENGTH('홍길동') -&amp;gt; 3&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;REPLACE(char1, str1, str2)&lt;/p&gt;&lt;p&gt;특정 문자를 다른 문자로 치환&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;INSTR&lt;/p&gt;&lt;p&gt;문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환한다.&lt;/p&gt;&lt;p&gt;지정된 문자열이 발견되지 않으면 0을 반환한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;TRIM&lt;/p&gt;&lt;p&gt;특정한 문자 제거&lt;/p&gt;&lt;p&gt;제러할 문자를 입력하지 않으면 기본적으로 공백 제거&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;CONVERT &lt;br /&gt;&lt;/p&gt;&lt;p&gt;CHAR SET을 변환한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;LTRIM(char1,char2), RTRIM(char1,char2)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;char1에서 왼쪽(오른쪽)에서 부터 더 이상 문자값2를 만나지 않을 때까지 지운다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;CHR&lt;/p&gt;&lt;p&gt;ASCII 코드 값을 문자로 변환한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ASCII&lt;/p&gt;&lt;p&gt;ASCII 코드 값으로 변환한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;REPLACE &lt;br /&gt;&lt;/p&gt;&lt;p&gt;문자열에서 특정 문자를 변경한다.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-9113986188553774226?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/9113986188553774226/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/sql-oracle-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B2%98%EB%A6%AC.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/9113986188553774226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/9113986188553774226'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/sql-oracle-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B2%98%EB%A6%AC.html' title='SQL oracle 내장함수[문자열 처리]'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2375633344218956734</id><published>2010-03-30T16:03:00.000+09:00</published><updated>2011-01-30T14:08:36.196+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>오라클 기본 명령어</title><content type='html'>&lt;p&gt;show user&lt;/p&gt;&lt;p&gt;- 현재 user를 보여줌&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;/ 또는 run&lt;/p&gt;&lt;p&gt;- 이전 실행문을 실행&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;L&lt;/p&gt;&lt;p&gt;- SQL Buffer의 내용을 보여준다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;C&lt;/p&gt;&lt;p&gt;- SQL Buffer의 내용을 바꾼다.&lt;/p&gt;&lt;p&gt;C/[바꾸기전문자]/[바뀐뒤문자]&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;A&lt;/p&gt;&lt;p&gt;- 현재 line의 마지막 문자열에 문자열 추가&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I&lt;/p&gt;&lt;p&gt;- 라인개행 하면서 문자열 추가&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;DEL&lt;/p&gt;&lt;p&gt;- 라인 삭제&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Clear screen&lt;/p&gt;&lt;p&gt;- 화면 청소&lt;/p&gt;&lt;p&gt;- 키보드 shift+del 이나 명령어 cl src도 동일한 기능&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;spool [파일경로와 파일명]&lt;/p&gt;&lt;p&gt;- 작업 내용을 파일에 저장한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;spool off&lt;/p&gt;&lt;p&gt;- spool의 끝&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;EDIT [파일경로와파일명] 또는 ed[파일경로와파일명]&lt;/p&gt;&lt;p&gt;- 메모장을 이용하여 수행할 명령을 작성(에디트기능)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;START [파일경로와 파일명] 또는 @[파일경로와 파일명]&lt;/p&gt;&lt;p&gt;- 파일의 내용을 수행한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;connent [사용자 이름]/[암호]&lt;/p&gt;&lt;p&gt;- 사용자 환경변경&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;select * from all_users;&lt;/p&gt;&lt;p&gt;- 시스템 환경에서 사용할 수 있는 모든 유저를 보여준다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;select * from Tab;&lt;/p&gt;&lt;p&gt;- 해당 유저에서 사용하는 diretory(table)을 보여준다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;select * from user_constraints;&lt;/p&gt;&lt;p&gt;- 제약조건에 대한 정보를 보여준다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;select * from User_Users;&lt;/p&gt;&lt;p&gt;- 현재 사용자에 대한 정보를 보여준다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;select * from dba_data_files;&lt;/p&gt;&lt;p&gt;- 현재 사용자에 연결되어 있는 데이터파일을 보여준다.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2375633344218956734?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2375633344218956734/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EC%98%A4%EB%9D%BC%ED%81%B4-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2375633344218956734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2375633344218956734'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EC%98%A4%EB%9D%BC%ED%81%B4-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4.html' title='오라클 기본 명령어'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-6617209718973346456</id><published>2010-03-30T13:32:00.000+09:00</published><updated>2011-01-30T14:08:36.096+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL (SELECT)</title><content type='html'>&lt;p&gt;SQL 명령어의 작성법&lt;/p&gt;&lt;ul&gt;&lt;li&gt;SQL명령어는 여러 라인에 걸쳐서 입력할 수 있다.&lt;/li&gt;&lt;li&gt;SQL명령어는 읽기에 쉽도록 들여쓰기를 할 수 있다.&lt;/li&gt;&lt;li&gt;절들은 보기에 좋고 편집이 쉽게 각기 다른 라인에 적는 것이 좋다.&lt;/li&gt;&lt;li&gt;하나의 명령어는 여러 라인에 걸치거나 줄여서 적을 수 없다.&lt;/li&gt;&lt;li&gt;SQL명령어는 대소문자를 구별하지 않는다. 그러나, 가능하면 규칙을 정하여 쓰는 것이 효율적이다.&lt;/li&gt;&lt;li&gt;SQL명령어는 SQL프롬프트에서 입력하며 다음라인은 라인번호가 나타난다.&lt;/li&gt;&lt;li&gt;SQL명령어의 끝은 세미콜론(;)으로 종료한다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;SELECT [DISTINCT] {*,column [alias],...} &lt;/p&gt;&lt;p&gt;FROM table_name&lt;/p&gt;&lt;p&gt;[WHERE condition]&lt;/p&gt;&lt;p&gt;[ORDER by {column, expression} [ASC | DESC]];&lt;/p&gt;&lt;p&gt;DISTINCT : 중복되는 행을 제거하는 옵션입니다.&lt;/p&gt;&lt;p&gt;* : 테이블의 모든 column을 출력합니다.&lt;/p&gt;&lt;p&gt;alias : 해당 column에 대해서 다른 이름을 부여할 때 사용합니다.&lt;/p&gt;&lt;p&gt;table_name : 질의 대상 테이블명&lt;/p&gt;&lt;p&gt;WHERE : 조건을 만족하는 행들만 검색&lt;/p&gt;&lt;p&gt;condition : column, 표현식, 상수 및 비교 연산자&lt;/p&gt;&lt;p&gt;ORDER BY : 질의 결과 정렬을 위한 옵션&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;WHERE절에 사용될 수 있는 SQL 연산자&lt;/p&gt;&lt;p&gt;BETWEEN a AND b : a와b사이의 데이터를 출력합니다.(a,b값 포함)&lt;/p&gt;&lt;p&gt;IN (list) : list의 값 중 어느 하나와 일치하는 데이터를 출력 합니다.&lt;/p&gt;&lt;p&gt;LIKE : 문자 형태로 일치하는 데이터를 출력 합니다.(%,_사용)&lt;/p&gt;&lt;p&gt;IS NULL : NULL 값을 가진 데이터를 출력 합니다.&lt;/p&gt;&lt;p&gt;NOT BETWEEN a AND b : a와 b 사이에 있지 않는 데이터를 출력합니다. (a,b값 포함하지 않음)&lt;/p&gt;&lt;p&gt;NOT IN(list) : list의 값과 일지하지 않는 데이터를 출력 합니다.&lt;/p&gt;&lt;p&gt;NOT LIKE : 문자 형태와 일치하지 않는 데이터를 출력 합니다.&lt;/p&gt;&lt;p&gt;IS NOT NULL : NULL값을 갖지 않는 데이터를 출력합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;조건 부정&lt;/p&gt;&lt;p&gt;같지 않다. !=,^=,&amp;lt;&amp;gt;&lt;/p&gt;&lt;p&gt;같지 않다. NOT 컬럼이름 =&lt;/p&gt;&lt;p&gt;보다 크지 않다 NOT 컬럼이름 &amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;논리 연산자 우선 순위&lt;/p&gt;&lt;p&gt;1. 모든 비교연산자(논리 비교, SQL 비교)&lt;/p&gt;&lt;p&gt;2. AND&lt;/p&gt;&lt;p&gt;3. OR&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-6617209718973346456?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/6617209718973346456/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/sql-select.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6617209718973346456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6617209718973346456'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/sql-select.html' title='SQL (SELECT)'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4857287179846203936</id><published>2010-03-30T11:44:00.000+09:00</published><updated>2011-01-30T14:08:36.037+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQL (TABLE)</title><content type='html'>&lt;p&gt;테이블 이란?&lt;/p&gt;&lt;p&gt;1. 테이블은 오라클 데이타베이스의 기본적인 데이타 저장 단위 입니다.&lt;/p&gt;&lt;p&gt;2. 데이타베이스 테이블은 사용자가 접근 가능한 모든 데이타를 보유하고 레코드와 컬럼으로 구성 됩니다.&lt;/p&gt;&lt;p&gt;3. 테이블은 시스템내에서 독립적으로 사용되길 원하는 엔티티를 표현할수 있습니다.&lt;/p&gt;&lt;p&gt;4. 테이블은 두 엔티티간의 관계를 표현할 수 있습니다.&lt;/p&gt;&lt;p&gt;5. 비록 "테이블"이라는 말이 더 맣이 사용되지만 테이블의 형식어는 "릴레이션" 입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;테이블 명명 규칙&lt;/p&gt;&lt;ul&gt;&lt;li&gt;테이블명과 칼럼명은 반드시 문자로 시작하고 최대 30자까지 허용한다.&lt;/li&gt;&lt;li&gt;A_Z, a-z, 0-9, _, $, #만으로 구성된다.&lt;/li&gt;&lt;li&gt;동일한 사용자가 소유한 다른 객체의 이름과 중복되지 않아야 한다.&lt;/li&gt;&lt;li&gt;예약어는 쓸 수 없다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;생성&lt;/p&gt;&lt;p&gt;CREATE TABLE [schma] table_name&lt;/p&gt;&lt;p&gt;(&lt;/p&gt;&lt;p&gt;column datatype [, column datatype...]&lt;/p&gt;&lt;p&gt;)&lt;/p&gt;&lt;p&gt;[TABLESPACE tablespace]&lt;/p&gt;&lt;p&gt;[PCTFREE integer]&lt;/p&gt;&lt;p&gt;[PCTUSED integer]&lt;/p&gt;&lt;p&gt;[INITRANS integer]&lt;/p&gt;&lt;p&gt;[MAXTRANS integer]&lt;/p&gt;&lt;p&gt;[STROAGE storage-clause]&lt;/p&gt;&lt;p&gt;[LOGGING | NOLOGGING]&lt;/p&gt;&lt;p&gt;[CACHE | NOCACHE];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;- schema : 테이블의 소유자&lt;/p&gt;&lt;p&gt;- table_name : 테이블 이름&lt;/p&gt;&lt;p&gt;- column : 컬럼의 이름&lt;/p&gt;&lt;p&gt;- datatype : 컬럼의 데이터 유형&lt;/p&gt;&lt;ul&gt;&lt;li&gt;VARCHR2(n) : 가변 길이 문자 데이터(1~4000byte)&lt;/li&gt;&lt;li&gt;CHAR(n): 고정길이 문자 데이터(1~2000byte)&lt;/li&gt;&lt;li&gt;NUMBER(p,s) : 전체 p자리 중 소수점 이하 s자리(p:1~38,s:-84~127)&lt;/li&gt;&lt;li&gt;DATA : 7Byte (BC 4712년 1월 1일부터 AD 9999년 12월 21일)&lt;/li&gt;&lt;li&gt;LONG : 가변 길이 분자 데이터 (1~2Gbyte)&lt;/li&gt;&lt;li&gt;CLOB : 단일 바이트 가변 길이 문자 데이터 (1~4Gbyte)&lt;/li&gt;&lt;li&gt;RAW(n) : n Byte의 원시 이진 데이터(1~2000)&lt;/li&gt;&lt;li&gt;LONG RAW : 가변 길이 원시 이진 데이터(1~2Gbyte)&lt;/li&gt;&lt;li&gt;BLOB : 가변 길이 이진 데이터(1~4Gbyte)&lt;/li&gt;&lt;li&gt;BFILE : 가변 길이 외부 파일에 저장된 이진 데이터(1~4Gbyte)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;- TABLESPACE : 테이블이 데이터를 저장 할 테이블스페이스를 지정합니다.&lt;/p&gt;&lt;p&gt;- PCTFREE : 블럭내에 이미 존재하고 있는 Row에 update가 가능하도록 예약시켜 놓는 블럭의 퍼센트 값을 지정합니다.&lt;/p&gt;&lt;p&gt;- PCTUSED : 테이블 데이터가 저장될 블록의 행 데이터 부분의 크기를 퍼센트지로 지정합니다.&lt;/p&gt;&lt;p&gt;- INITRANS : 하나의 데이터를 블록에 지정될 초기 트랙잭션의 값을 지정합니다. (기본값은1)&lt;/p&gt;&lt;p&gt;- MAXTRANS : 하나의 데이터 블록에 지정될 수 있는 트랜젝션 최대 수를 지정 합니다. (기본값은 255)&lt;/p&gt;&lt;p&gt;- LOGGING : 테이블에 대해 이후의 모든 작업이 리두 로그 파일 내에 기록 되도록 지정합니다.&lt;/p&gt;&lt;p&gt;- NOLOGGING : 리두 로그 파일에 테이블의 생성과 특정 유형의 데이터 로드를 기록하지 않도록 지정합니다.&lt;/p&gt;&lt;p&gt;- CACHE : 전체 테이블 스캔이 수행될 때 읽어 들인 블록이 버퍼 캐쉬 내의 LRU 리스트의 가장 최근에 사용된 것의 자리에 위치 하도록 지정합니다.&lt;/p&gt;&lt;p&gt;- NOCACHE : 전체 체이블 스캔이 수행될때 읽어 들인 블록이 버퍼 캐쉬 내의 LRU 리스트의 가장 최근에 사용되지 않은 것의 자리에 위치하도록 지정합니다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;테이블에 데이터 추가&lt;/p&gt;&lt;p&gt;INSERT INTO your_table(column_name1,column_name2,...) VALUES ('value1','value2',...);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;테이블에 데이터 수정&lt;/p&gt;&lt;p&gt;UPDATE 테이블명 SET 칼럼1=값1[, 칼럼2=값2 ...]&lt;/p&gt;[WHERE 조건식];&lt;br /&gt;&lt;br /&gt;테이블 삭제&lt;br /&gt;DELETE FROM 테이블명&lt;br /&gt;[WHERE 조건식];&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;테이블 삭제&lt;/p&gt;&lt;p&gt;DROP TABLE your_table&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;테이블 컬럼 관리&lt;/p&gt;&lt;p&gt;ALTER TABLE your_table ADD (column datatype)&lt;/p&gt;&lt;p&gt;ALTER TABLE your_table MODIFY (column datatype)&lt;/p&gt;&lt;p&gt;ALTER TABLE your_table DROP COLUMN column&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;테이블 설계&lt;/p&gt;&lt;p&gt;1. 테이블이 표현하는 것이 무엇인가?&lt;/p&gt;&lt;p&gt;2. 그것을 얻기 위해 테이블을 어떻게 사용할 것인가?&lt;/p&gt;&lt;p&gt;3. 열들은 쿼리를 짧고 명료하게 할 수 있도록 원자적 데이터를 가지고 있는가?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4857287179846203936?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4857287179846203936/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/sql-table.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4857287179846203936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4857287179846203936'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/sql-table.html' title='SQL (TABLE)'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4197917328885945992</id><published>2010-03-24T15:49:00.000+09:00</published><updated>2011-01-30T14:08:35.945+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='리눅스'/><title type='text'>네트워크 관리</title><content type='html'>&lt;P&gt;ping [-option] ip_address | host_name [packet_size] [count]&lt;/P&gt;&lt;P&gt;-c count : 지정된 숫자만큼 ICMP 패킷을 수송한다.&lt;/P&gt;&lt;P&gt;-i wait : ICMP 패킷 송신 간의 대기 시간이다. 디폴트는 1초이다.&lt;/P&gt;&lt;P&gt;-s packet_size : ICMP 송신 패킷의 테이터 크기이다. 디폴트는 56byte이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;traceroute [-option] ip_address | host_name [packet_len ]&lt;/P&gt;&lt;P&gt;-m max_hop : 최대 TTL을 지정한다. 디폴트 값읍 30이다.&lt;/P&gt;&lt;P&gt;-p port : UDP 포트를 지정한다. 디폴트는 33434번이다.&lt;/P&gt;&lt;P&gt;-q n_queries : 각 TTL마다 전달하는 탐색 패킷의 횟수이다. 디폴트 값은 3이다.&lt;/P&gt;&lt;P&gt;-w wait_time : 탐색 중 응답을 기다리는 시간이다. 디폴트 값은 5초이다.&lt;/P&gt;&lt;P&gt;packet_len : 탐색 패킷의 크기이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;netstat [-option]&lt;/P&gt;&lt;P&gt;-r : 라우팅 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-i : 네트워크 인터페이스에 대한 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-s : 각 네트워크 프로토콜(IP, TCP, UDP, ICMP)에 대한 통계 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-a : 모든 소켓 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-n : 네트워크 주소를 숫자로 나타낸다.&lt;/P&gt;&lt;P&gt;Flag&lt;/P&gt;&lt;P&gt;U : 사용하는 인터페이스의 활성화 상태를 나타낸다.&lt;/P&gt;&lt;P&gt;H : 네트워크가 아닌 호스트로의 라우트를 의미한다.&lt;/P&gt;&lt;P&gt;G : 게이트웨어 역할을 하는 라우트를 의미한다.&lt;/P&gt;&lt;P&gt;D : ICMP Redirect 메시지에 의해 생성된 라우팅 정보를 의미한다.&lt;/P&gt;&lt;P&gt;M : ICMP Redirect 메시지에 의해 수정된 라우팅 정보를 의미한다.&lt;/P&gt;&lt;P&gt;Ipkts : 네트워크 인터페이스로 입력된 패킷의 총 수 이다.&lt;/P&gt;&lt;P&gt;Ierrs : 네트워크 인터페이스로 입력 중에 실패한 패킷의 총 수이다.&lt;/P&gt;&lt;P&gt;Opkts : 네트워크 인터페이스로 출력한 패킷의 총 수이다.&lt;/P&gt;&lt;P&gt;Oerrs : 네트워크 인터페이스로 출력 중에 실패한 패킷의 총 수 이다.&lt;/P&gt;&lt;P&gt;Collis : 패킷 전송 중에 발생한 충돌 횟수이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Proto : 응용 프로그램을 연결하기 위하여 사용한 프로토콜의 종류이다.&lt;/P&gt;&lt;P&gt;Recv-Q : 원격 응용 프로그램으로부터 수신하여 버퍼에 저장한 데이터의 양이다.&lt;/P&gt;&lt;P&gt;Send-Q : 원격 응용 프로그램으로 전송하기 위하여 송신 버퍼에 저장한 데이터이다.&lt;/P&gt;&lt;P&gt;Local Address : 연결에 사용한 로컬 호스트의 IP 주소와 응용프로그램이 사용하는 포트이다.&lt;/P&gt;&lt;P&gt;Foreign Address : 로컬 호스트와 연결된 원격 호스트의 IP 주소와 응용 프로그램의 포트이다.&lt;/P&gt;&lt;P&gt;State : 연결과 관련된 진행 상태이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;State 항목&lt;/P&gt;&lt;P&gt;LISTEN : 서버 프로그램이 연결 요청을 기다리는 상태이다.&lt;/P&gt;&lt;P&gt;SYN-SENT : 클라이언트 프로그램이 원격 호스트에 연결을 요청한 상태이다.&lt;/P&gt;&lt;P&gt;SYN_RECV : 서버가 클라이언트 프로그램으로부터 연결 요청을 받아 클라이언트에 응답을 하였지만 아직 클라이언트의 확인 메시지를 받지 않은 상태이다.&lt;/P&gt;&lt;P&gt;ESTABLISHED : 클라이언트와 서버 프로그램이 서로 연결된 상태이다.&lt;/P&gt;&lt;P&gt;FIN-WAIT1 : 한쪽 응용 프로그램이 연결 종료를 요청한 상태이다.&lt;/P&gt;&lt;P&gt;CLOSE-WAIT : 연결 종료 메시지를 수신하고 그에 대한 확인 메시지를 보낸 상태이다.&lt;/P&gt;&lt;P&gt;FIN-WAIT2 : 로컬에서 종결 메시지를 전송하였고 원격 호스트로부터 이에 대한 확인 메시지를 수신하였지만 원격 응용 프로그램이 작업을 종요하지 않아 원격 호스트의 종결 메시지를 기다리는 상태이다.&lt;/P&gt;&lt;P&gt;LAST_ACK 원격으로부터 종결 요청을 받고 로컬에서도 회선 종결에 합의한 상태로 이에 대한 확인 메시지가 수신되면 회선이 종결된다.&lt;/P&gt;&lt;P&gt;TIME-WAIT 연결은 종료되지었지만 미자막 종료 확인 메시지를 재전송할 경우를 감안하여 당분간 소켓 정보를 유지하고 있는 상태이다.&lt;/P&gt;&lt;P&gt;CLOSED 완전히 연결이 종료된 상태이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ifconfig [device] [ip_address] [netmask maks] [broadcast broadcast_ip] [up|down]&lt;/P&gt;&lt;P&gt;device : IP 주소를 부여할 장치앋.&lt;/P&gt;&lt;P&gt;ip_address : 인터페이스의 IP 주소를 지정한다.&lt;/P&gt;&lt;P&gt;netmask : 해당 장치에 부여할 넷마스크를 mask 자리에 지정한다.&lt;/P&gt;&lt;P&gt;broadcast : 로컬 네트워크의 브로드캐스트 주소를 broadcast_ip 자리에 지정한다.&lt;/P&gt;&lt;P&gt;up|down 장치를 활성화시키거나 비활성화 시킨다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4197917328885945992?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4197917328885945992/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B4%80%EB%A6%AC.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4197917328885945992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4197917328885945992'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B4%80%EB%A6%AC.html' title='네트워크 관리'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-8750186617215409820</id><published>2010-03-24T14:13:00.000+09:00</published><updated>2011-01-30T14:08:35.899+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='리눅스'/><title type='text'>리눅스 시스템의 성능관리</title><content type='html'>&lt;P&gt;vmstat [interval] [count]&lt;/P&gt;&lt;P&gt;interval 성능 측정 주기를 초단위로 지정한다.&lt;/P&gt;&lt;P&gt;count 성능 측정 횟수를 지정한다. 디폴트는 종료시가지이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc&lt;/P&gt;&lt;P&gt;r : 실행 큐에 놓여 있는 실행 가능한 프로세스의 평균 수이다.&lt;/P&gt;&lt;P&gt;b : 대기 큐에 놓여 있는 인터럽트가 불가능한 블록된 프로세스의 평균 수이다.&lt;/P&gt;&lt;P&gt;w : 스왑아웃된 프로세스의 개수이다.&lt;/P&gt;&lt;P&gt;cpu&lt;/P&gt;&lt;P&gt;us : User Time의 약자로 사용자 코드를 실행하는 CPU 시간에 대한 백분율이다.&lt;/P&gt;&lt;P&gt;sy : System Time의 약자로 시스템 커널 코드를 실행하는 CPU 시간에 대한 백분율이다.&lt;/P&gt;&lt;P&gt;id : Idle Time의 약자로 사용하지 않는 CPU 시간에 대한 백분율이다. id가 0이면 CPU를 100% 활용하고 있는 상태이다.&lt;/P&gt;&lt;P&gt;memory&lt;/P&gt;&lt;P&gt;swap : 가상 메모리의 가용 크기(KB)이다.&lt;/P&gt;&lt;P&gt;free : 물리적인 메모리의 가용 크기(KB)이다.&lt;/P&gt;&lt;P&gt;page&lt;/P&gt;&lt;P&gt;pi : 사용자가 프로그램을 실행시키면 프로그램 전체가 메모리에 적재되지 않고 필요한 페이지만 메모리에 적재되고 나머지는 디스크에 페이지 단위로 할당해 둔다. 이 때 메모리에서 실행 중인 프로세스가 메모리에 없는 페이지를 요구하면 페이지 폴트를 발생시키고 커널은 해당 페이지를 메모리로 불러들이는데, 이를 페이지인이라 한다.&lt;/P&gt;&lt;P&gt;po : 페이지를 불러들일 때 메모리에 가용 영역이 없다면 어느 한 페이지를 디스크로 내려야 하는데, 이를 페이지아웃이라 한다.&lt;/P&gt;&lt;P&gt;sr : 가용 메모리가 절대적으로 부족할 경우 메모리에 있는 페이지들 중에 어떤 페이지를 페이지아웃 할 것인지를 결정하기 위해 페이지를 검사한다. 이것을 페이지 스캔이라 한다.&lt;/P&gt;&lt;P&gt;so : 프로세스들에 의해 할당된 메모리가 커널에 정의된 임계치 이하로 내려갈 경우 현재 메모리에 할당되어 있는 프로세스들 중에서 특정 프로세스를 선정하여 디스크로 내리게 되는데, 이를 스왑아웃이라 한다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-8750186617215409820?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/8750186617215409820/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%84%B1%EB%8A%A5%EA%B4%80%EB%A6%AC.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8750186617215409820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8750186617215409820'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%84%B1%EB%8A%A5%EA%B4%80%EB%A6%AC.html' title='리눅스 시스템의 성능관리'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-5046012231182710129</id><published>2010-03-22T20:01:00.000+09:00</published><updated>2011-01-30T14:08:35.461+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='리눅스'/><title type='text'>리눅스 명령어 2</title><content type='html'>&lt;P&gt;&lt;br /&gt;ps [-flaAe] [-G gid_list] [-g egid_list] [-U uid_list] [-u euid_list] [-t terminal_list]&lt;/P&gt;&lt;P&gt;-f 이 옵션을 사용하면 프로세스 정보가 한 줄씩 다음 예처럼 출력된다.&lt;/P&gt;&lt;P&gt;UserName PID PPID C STIME TTY TIME CMD&lt;/P&gt;&lt;P&gt;-l 이 옵션은 -f 옵션보다 더 많은 정보를 출력하며 다음과 같은 형식을 따른다.&lt;/P&gt;&lt;P&gt;F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD&lt;/P&gt;&lt;P&gt;-a 최근에 많이 실행된 제어 터미널을 가진 프로세스의 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-A, -e 현재 시스템에서 실행중인 모든 프로세스의 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-G 이 옵션 뒤에 입력된 GID를 갖는 프로세스에 대한 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-g 이 옵션 뒤에 입력된 EGID를 갖는 프로세스에 대한 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-U 이 옵션 뒤에 입력된 UID를 갖는 프로세스에 대한 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-u 이 옵션 뒤에 입력된 EUID를 갖는 프로세스에 대한 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-t 이 옵션 뒤에 입력된 제어 터미널을 갖는 프로세스에 대한 정보를 출력한다.&lt;/P&gt;&lt;P&gt;-o user-defined format(user,ruser,group,rgroup,pid,ppid,args등을 사용하여 출력 형식을 조절한다.&lt;/P&gt;&lt;P&gt;프로세스 정보&lt;/P&gt;&lt;P&gt;UID 사용자 계정 또는 사용자 ID&lt;/P&gt;&lt;P&gt;PID 프로세스 식별자&lt;/P&gt;&lt;P&gt;PPID 부모 프로세스 식별자&lt;/P&gt;&lt;P&gt;C 사용하지 않음&lt;/P&gt;&lt;P&gt;STIME 프로세스가 실행된 시간&lt;/P&gt;&lt;P&gt;TTY 프로세스의 포준 입출력을 담당하는 제어 터미널&lt;/P&gt;&lt;P&gt;TIME 프로세스의 CPU 점유시간&lt;/P&gt;&lt;P&gt;CMD 프로세스 실행 명령어&lt;/P&gt;&lt;P&gt;F 프로세스의 플래그&lt;/P&gt;&lt;P&gt;S 프로세스의 현재 상태&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;O: 프로세스가 CPU를 점유하여 실행 중임(Occupying)&lt;/LI&gt;&lt;LI&gt;S: 프로세스가 외부의 요청을 기다리는 중임(Sleeping)&lt;/LI&gt;&lt;LI&gt;R: 프로세스가 CPU를 점유하기 위해 대기 중임(Runnable)&lt;/LI&gt;&lt;LI&gt;Z: 프로세스가 종료되었으나 부모 프로세스에게 정보를 전달하지 못한 상태임(Zombie)&lt;/LI&gt;&lt;LI&gt;T: 프로세스가 정지된 상태임(Stopped)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PRI 프로세스의 우선순위&lt;/P&gt;&lt;P&gt;NI 프로세스의 우선순위를 계산할때 사용하는 값&lt;/P&gt;&lt;P&gt;ADDR 프로세스의 메모리 주소&lt;/P&gt;&lt;P&gt;SZ 프로세스가 차지하는 메모리의 양&lt;/P&gt;&lt;P&gt;WCHAN sleeping 상태의 프로세스가 기다리는 외부 요청 메모리 주소&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;kill [-signal_number | -signal_name] PID&lt;/P&gt;&lt;P&gt;kill -l [signal]&lt;/P&gt;&lt;P&gt;-signal_number|-signal_name 시그널 번호 또는 시그널명이다.&lt;/P&gt;&lt;P&gt;-l 지원 가능한 시그널 목록을 출력한다.&lt;/P&gt;&lt;P&gt;프로세스 간 통신&lt;/P&gt;&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 80%; HEIGHT: 40px; BORDER-TOP: medium none; BORDER-RIGHT: medium none" cellSpacing=1 cellPadding=0 bgColor=#aaaaaa&gt;&lt;TBODY&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;시그널명&lt;/TD&gt;&lt;TD width=40&gt;번호 &lt;/TD&gt;&lt;TD&gt;의미 &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGINT&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;2 &lt;/TD&gt;&lt;TD&gt;&amp;nbsp;[Ctrl+c] 조합키를 누르면 포 그라운드 프로세스 그룹 내 보든 프로세스에게 이 시그널이 전달된다. 이 시그널을 받은 프로세스는 디폴트로 종료된다.&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGKILL&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;9&lt;/TD&gt;&lt;TD&gt;무시하거나 임의로 처리할 수 없는 시그널이다. 이 시그널을 받은 프로세스는 종료된다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGSTOP&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;23&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;프로세스를 정지시키는 프로세스 제어 시그널이며 무시하거나 임의로 처리할 수 없다.&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGTERM&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;15&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;프로세스를 종료하는 시그널이다. 이 시그널을 받은 프로세스는 디폴트로 종료된다.&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGFPE&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;8&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;커널에 의해 발생하며 산술 연산 에러(0으로 나눈 경우등)를 대는 프로세스에게 이 시그널이 전달된다.&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGCHLD&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;프로세스의 종료나 정지의 경우에 부모 프로세스에게 이 시그널이 전달된다.&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGALRM&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;alarm()함수가 설정된 타이머에 의해 발생한다.&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGQUIT&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;[Ctrl+\]조합키를 누르면 전위 프로세스 그룹 내 모든 프로세스에게 이 시그널이 전달된다. 이 시그널을 받은 프로세스는 디폴트로 종료되며 Core 파일을 생성한다.&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGSEGV&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;11&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;커널에 의해 발생하며 잘못된 메모리를 참조하는 프로세스에게 이 시그널이 전달된다.&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=100&gt;&amp;nbsp;SIGHUP&lt;/TD&gt;&lt;TD width=40&gt;&amp;nbsp;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;터미널 연결이 끊어지는 경우에 프로세스에게 이 시그널이 전달된다. 최근 환경 설정 파일의 재설정에 사용된다.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;일반적으로 프로세스 간의 시그널 통신은 다음과 같은 경우에 사용한다.&lt;/P&gt;&lt;P&gt;1. 데몬 프로세스의 정상적인 종료를 위해&lt;/P&gt;&lt;P&gt;- 메모리에 로딩된 데몬 프로세스를 정상적으로 종료하기 위해 프로세스 간에 약속된 시그널을 발생시킨다.&lt;/P&gt;&lt;P&gt;2. 데몬 프로세스의 환경설정파일을 수정하기 위해&lt;/P&gt;&lt;P&gt;- 프로세스가 참조하는 환경설정 파일이 수정된 경우에 해당 파일을 다시 읽어 드리도록 하기 위해 프로세스 간에 약속된 시그널을 발생시킨다. 이런 목적으로 보통 SIGHUP 시그널을 사용한다.&lt;/P&gt;&lt;P&gt;3. 프로그램을 디버깅하기 위해&lt;/P&gt;&lt;P&gt;- 프로그램 디버깅을 위해 프로세스를 실행하였으나 놀리적인 오류를 보이는 경우 강제적으로 종료하기 위해 시그널을 이용한다.&lt;/P&gt;&lt;P&gt;4. 프로세서 간의 동기화를 위해&lt;/P&gt;&lt;P&gt;- 이들 외에도 특정 시점이 되었을을 상대편 프로세스에게 알려주기 위한 수단으로 약속된 시그널을 발생시킨다.&lt;/P&gt;&lt;P&gt;jobs 백그라운드 프로세스 모니터링&lt;/P&gt;&lt;P&gt;fg %number 포그라운드 모드로 전환&lt;/P&gt;&lt;P&gt;bg 정지된 프로세스를 백그라운드 모드로 전환&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-5046012231182710129?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/5046012231182710129/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-2.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5046012231182710129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5046012231182710129'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-2.html' title='리눅스 명령어 2'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1463093605145036323</id><published>2010-03-22T17:46:00.000+09:00</published><updated>2011-01-30T14:08:35.415+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='리눅스'/><title type='text'>리눅스 명령어</title><content type='html'>&lt;P&gt;ls [-ailFR] [file_name | directory_name]&lt;/P&gt;&lt;P&gt;-l 목록 형태로 디렉토리 및 파일의 정보를 자세히 보여준다.&lt;/P&gt;&lt;P&gt;-a 도트(.)파일을 포함하여 디렉토리 내에 있는 모든 디렉토리 및 파일을 보여준다.&lt;/P&gt;&lt;P&gt;-R 하위 디렉토리에 있는 내용까지 보여준다.&lt;/P&gt;&lt;P&gt;-F 디렉토리인지나 어떤 종류의 파일인지 알려준다.&lt;/P&gt;&lt;P&gt;-i 디렉토리 및 파일에 지정된 inode 번호를 보여준다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;cd 디렉토리 변경&lt;/P&gt;&lt;P&gt;pwd 현재 디렉토리 확인&lt;/P&gt;&lt;P&gt;mkdir [-m mode] [-p] directory_name&lt;/P&gt;&lt;P&gt;-m 새로 만들 디렉토리의 접근 권한을 명시적으로 선언한다.&lt;/P&gt;&lt;P&gt;-p 계층적인 구조를 갖는 디렉토리를 한거번에 만든다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;rmdir [-p] directory_name&lt;/P&gt;&lt;P&gt;-p 계층적인 구조를 갖는 디렉토리를 한꺼번에 삭제한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;cat [-nb] file_name&lt;/P&gt;&lt;P&gt;cf 편집 기능을 사용할 때 입력을 중단하려면 [Ctrl+d]조합키를 누른다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;more [-d] [+line_number] [-line] [+/pattern] file_name&lt;/P&gt;&lt;P&gt;-d 좀더 자세한 프롬프트를 보여준다.&lt;/P&gt;&lt;P&gt;+line_number 지정 숫자에 해당하는 라인부터 화면에 출력한다.&lt;/P&gt;&lt;P&gt;-line 지정 숫자 라인만큼씩 스크롤하여 보여훈다.&lt;/P&gt;&lt;P&gt;+/pattern 지정 패턴이 있는 곳부터 화면에 출력한다.&lt;/P&gt;&lt;P&gt;extend)&lt;/P&gt;&lt;P&gt;space 스크롤하여 다음 화면을 보여준다.&lt;/P&gt;&lt;P&gt;숫자[Return] 숫자만큼 다음 라인을 출력한다.&lt;/P&gt;&lt;P&gt;h 도움말을 출력한다.&lt;/P&gt;&lt;P&gt;q 종료한다.&lt;/P&gt;&lt;P&gt;= 현재 라인 번호를 출력한다.&lt;/P&gt;&lt;P&gt;[ctrl + i] 화면에 재출력한다.&lt;/P&gt;&lt;P&gt;:f 파일명과 라인 번호를 출력한다.&lt;/P&gt;&lt;P&gt;v 현재 라인에서 vi를 시작한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;head [-number] file_name&lt;/P&gt;&lt;P&gt;-number 파일의 처음부터 지정한 숫자만큼의 라인을 화면에 출력한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;tail [-number] [-f] file_name&lt;/P&gt;&lt;P&gt;tail [+number] [-f] file_name&lt;/P&gt;&lt;P&gt;-number 파일의 끝으로부터 지정한 숫자만큼의 라인을 화면에 출력한다.&lt;/P&gt;&lt;P&gt;+number 파일의 처음부터 지정한 숫자만큼 띈 라인부터 파일의 끝까지 화면에 출력한다.&lt;/P&gt;&lt;P&gt;-f 파일에 추가되는 내용을 실시간으로 확인하는 것이 가능하다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;mv [-i] source_file target_file&lt;/P&gt;&lt;P&gt;mv [-i] source_file | source_directory | [source_file2 | source_directory2..]&lt;/P&gt;&lt;P&gt;-i 목적지와 동일한 이름의 파일이 이미 있는 경우라면 덮어쓸 것인지를 대화식으로 묻는다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;cp [-i] source_file target_file&lt;/P&gt;&lt;P&gt;cp [-i] source_file1[source_file2...] target_directory&lt;/P&gt;&lt;P&gt;-i 대상 파일이 이미 있는 경우 덮어쓸 것인지를 대화식으로 묻는다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;rm [-fir] file_name1|directory_name1[file_name2|directory_name2...]&lt;/P&gt;&lt;P&gt;-i 파일을 삭제할 때마가 정말로 지울 것인지 확인을 요청한다.&lt;/P&gt;&lt;P&gt;-r 디렉토리를 삭제할 때 사용하며 Recursive의 약자다.&lt;/P&gt;&lt;P&gt;-f rm에 설정된 -i 옵션을 제거한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ln [-s] source_file | source_directory target_file&lt;/P&gt;&lt;P&gt;-s 이 옵션이 있으면 심볼릭 링크를, 없으면 하드 링크를 만든다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;chmod [-R] permission file_name1 | directory_name1[file_name2|directory_name2...]&lt;/P&gt;&lt;P&gt;-R 하위 디렉토리와 파일의 권한까지 변경한다.&lt;/P&gt;&lt;P&gt;permission 기호나 8 진수로 접근 권한을 지정한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;chown [-hR] owner file_name1|directory_name1[file_name2|directory_name2...]&lt;/P&gt;&lt;P&gt;chgrp [-hR] group file_name1|directory_name1[file_name2|directory_name2...]&lt;/P&gt;&lt;P&gt;-R 하위 디렉토리와 디렉토리 하위의 모든 파일의 소유주를 변경한다.&lt;/P&gt;&lt;P&gt;-h 심볼릭 링크 파일 자체의 소유주나 그룹을 변경한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;touch [-acm] [-t[[CC]YY]MMDDhhmm] [-r file_name] file_name | directory_name&lt;/P&gt;&lt;P&gt;touch [-acm] [MMDDhhmm[YY]] file_name&lt;/P&gt;&lt;P&gt;-c 대상 파일의 시간만 변경할 경우에 사용한다. 대상 파일이 없으면 파일을 만들지 않는다.&lt;/P&gt;&lt;P&gt;-a 마지막으로 접근한 시간만(Access Time) 변경한다.&lt;/P&gt;&lt;P&gt;-m 마지막으로 수전된 시간만 변경한다.&lt;/P&gt;&lt;P&gt;-r 옵션 뒤에 지정한 파일의 시간으로 대상 파일의 시간을 변경한다.&lt;/P&gt;&lt;P&gt;-t 현재 시간 대신 파일의 시간을 지정한 시간으로 변경한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;umask [mask]&lt;/P&gt;&lt;P&gt;mask 파일이나 디렉토리의 접근 권한으로 갖지 말아야 할 권한을 8진수로 지정한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;wc [-cmlw] file_name1[file_name2...]&lt;/P&gt;&lt;P&gt;-l 라인 수를 출력한다.&lt;/P&gt;&lt;P&gt;-w 단어 수를 출력한다.&lt;/P&gt;&lt;P&gt;-c 바이트 수를 출력한다.&lt;/P&gt;&lt;P&gt;-m 문자 수를 출력한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;cut [-option] file_name&lt;/P&gt;&lt;P&gt;-c 바이트 단위의 행을 출력한다.&lt;/P&gt;&lt;P&gt;-f 필드 단위의 행을 출력한다.&lt;/P&gt;&lt;P&gt;-d 특정 구분자를 표기한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;paste [-s] [-d delimiters] file_name1[file_name2...]&lt;/P&gt;&lt;P&gt;-d 구분자를 지정한다.&lt;/P&gt;&lt;P&gt;-s 한 파일 내에서 인접한 행을 병합한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;tr [-option] string1 [string2]&lt;/P&gt;&lt;P&gt;-d string1 부분에 나오는 문자와 일치하는 모든 입력 문자를 삭제한다.&lt;/P&gt;&lt;P&gt;-s string1 부분에 나오는 문자 중, 같은 문자들의 반복을 하나의 문자로 줄인다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;sort [-option] [-o output_file] file_name1[file_name2...]&lt;/P&gt;&lt;P&gt;-n 라인의 각 필드를 비교하는 대상을 숫자로 한정한다.&lt;/P&gt;&lt;P&gt;-d 사전순으로 정렬할 때 사용한다. 이때 사전순은 영어 단어와 숫자만을 비교 대상으로 한다.&lt;/P&gt;&lt;P&gt;-f 영어 단어를 정렬할 때에 대소문자를 구별하지 않는다.&lt;/P&gt;&lt;P&gt;-r 출력 순서를 역순으로 한다.&lt;/P&gt;&lt;P&gt;-b 앞에 붙는 공백을 무시한다.&lt;/P&gt;&lt;P&gt;-t 필드를 구별하는 구분자를 지정한다.&lt;/P&gt;&lt;P&gt;-m 이미 정렬된 파일을 병합한다.&lt;/P&gt;&lt;P&gt;-u 파일을 정렬하고 중복되는 행을 하나의 행으로 만든다.&lt;/P&gt;&lt;P&gt;-o 출력 결과를 저장할 파일의 이름을 적는다. 파일명을 명시하지 않으면 화면에 출력된다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;split [-linecount | -l linecount] target_file [prefix]&lt;/P&gt;&lt;P&gt;-linecount | -l 나누고자 하는 라인 단위의 수이다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;uniq [-option] input_file [output_file]&lt;/P&gt;&lt;P&gt;-u 반복되지 않은 행만 출력한다.&lt;/P&gt;&lt;P&gt;-d 반복되는 행만 출력한다.&lt;/P&gt;&lt;P&gt;-c 각 행별로 얼마나&amp;nbsp; 여러 번 반복적이었는지를 조사하여 그 개수를 추가로 알려준다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;cmd [-l|-s] file_name1 file_name2&lt;/P&gt;&lt;P&gt;-l 서로 다른 모든 바이트 옵셋의 위치와 각 파일의 문자 값을 출력한다.&lt;/P&gt;&lt;P&gt;-s 두 파일을 비교한 결과 값만을 반환한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;comm [-123] file_name1 file_name2&lt;/P&gt;&lt;P&gt;-12 두 개의 파일에 공통적으로 있는 행들을 출력한다.&lt;/P&gt;&lt;P&gt;-13 파일2에는 있지만 파일 1에는 없는 행들을 출력한다.&lt;/P&gt;&lt;P&gt;-23 파일1에는 있지만 파일 2에는 없는 행들을 출력한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;diff [-ib] file_name1 file_name2&lt;/P&gt;&lt;P&gt;-i 대소문자를 구별하지 않는다.&lt;/P&gt;&lt;P&gt;-b 하나 이상의 공백 문자는 모두 동일한 것으로 취급한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;grep [-civniw] pattern file_name1 [file_name2...]&lt;/P&gt;&lt;P&gt;-c 패턴이 일치하는 행의 수를 출력한다.&lt;/P&gt;&lt;P&gt;-i 비교시 대소문자를 구별하지 않는다.&lt;/P&gt;&lt;P&gt;-v 지정한 패턴과 일치하지 않는 행만 출력한다.&lt;/P&gt;&lt;P&gt;-n 행의 번호를 함께 출력한다.&lt;/P&gt;&lt;P&gt;-l 패턴이 포함된 파일의 이름을 출력한다.&lt;/P&gt;&lt;P&gt;-w 패턴이 전체 단어와 일치하는 행만 출력한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;find path [expression] [action]&lt;/P&gt;&lt;P&gt;-name file_name 검색 대상 파일명을 입력한다. 이때 파일명은 [],?,*의 메타 문자를 함께 사용할 수 있다.&lt;/P&gt;&lt;P&gt;-type[file_type] 검색 대상 파일의 종류를 지정한다. 파일 종류에는 b(Block), c(Character), d(Directory), p(namePipe),f(Regular File), I(Symbolic Link), s(Socket)가 있다.&lt;/P&gt;&lt;P&gt;-user uname uname은 검색 파일의 소유주 또는 UID이다.&lt;/P&gt;&lt;P&gt;-group gname gname은 검색 파일의 소유 그룹 또는 GID이다.&lt;/P&gt;&lt;P&gt;-size [+-]num[bck] 검색 파일의 크기를 지정한다. num(일치), +num(이상), -num(이하), b(Block,512Byte), c(Byte), k(Kilobyte)&lt;/P&gt;&lt;P&gt;-perm mode 주어진 접근 권한을 갖는 파일을 검색한다. (8진수로 기술한다.)&lt;/P&gt;&lt;P&gt;-atime [+-]n 파일이 읽힌 최근 시간이다.&lt;/P&gt;&lt;P&gt;-ctime [+-]n 파일의 소유주나 권한이 바뀐 최근 시간이다.&lt;/P&gt;&lt;P&gt;-mtime [+-]n 파일이 수정된 최근 시간이다.&lt;/P&gt;&lt;P&gt;-prune 서브 디렉토리로 내려가지 않고 현재 디렉토리에서만 검색한다.&lt;/P&gt;&lt;P&gt;-print 검색 후에 행할 작업 옵션으로 검색 결과를 출력한다.&lt;/P&gt;&lt;P&gt;-exec command{}\; 검색 후에 행할 작업 옵션으로 검색한 결과에 특정 명령을 실행하도록 명령한다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1463093605145036323?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1463093605145036323/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1463093605145036323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1463093605145036323'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/03/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4.html' title='리눅스 명령어'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7859392670062902595</id><published>2010-02-27T00:28:00.000+09:00</published><updated>2011-01-30T14:08:35.193+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>컨테이너 (TableLayout)</title><content type='html'>: 원하는 형태로 짜놓은 격자 모양의 구조에 위젯을 배치할 수 있다. 행이나 열의 개수도 물론 지정할 수 있고, 특정 열의 폭이 내용에 맞춰 늘어나거나 줄어드는 방법 등도 지정할 수 있다.&lt;br /&gt;&lt;br /&gt;기본 개념과 속성&lt;br /&gt;셀을 넣어서 행 만들기&lt;br /&gt;&amp;lt;TableRow&amp;gt;&lt;br /&gt;...&lt;br /&gt;android:layout_column="2" 세번째 열.&lt;br /&gt;android:layout_span="3"&lt;br /&gt;...&lt;br /&gt;&amp;lt;/TableRow&amp;gt;&lt;br /&gt;늘이고, 줄이고, 숨기고&lt;br /&gt;android:stretchColumns&lt;br /&gt;android:shrinkColumns&lt;br /&gt;android:collapseColumns&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7859392670062902595?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7859392670062902595/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-tablelayout.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7859392670062902595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7859392670062902595'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-tablelayout.html' title='컨테이너 (TableLayout)'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-8104165427006588682</id><published>2010-02-26T22:29:00.000+09:00</published><updated>2011-01-30T14:08:35.149+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>컨테이너 (RelativeLayout)</title><content type='html'>: 해당 컨테이너와 상위 컨테이너에 들어있는 위젯 간의 상대적인 관계를 통해 배치할 장소를 정하는 레이아웃이다.&lt;br /&gt;개념과 속성&lt;br /&gt;컨테이너를 기준으로 배치&lt;br /&gt;android:layout_alignParentTop 위젯의 상단이 컨테이너 상단에 일치하게 배치한다.&lt;br /&gt;android:layout_alignParentBottom 위젯의 하단이 컨테이너 하단에 일치하게 배치한다.&lt;br /&gt;android:layout_alignParentLeft 위젯의 왼쪽이 컨테이너 왼쪽에 일치하게 배치한다.&lt;br /&gt;android:layout_alignParentRight&lt;br /&gt;android:layout_centerHorizontal&lt;br /&gt;android:layout_centerVertical&lt;br /&gt;android:layout_centerInParent&lt;br /&gt;&lt;br /&gt;기준위젯 표시&lt;br /&gt;1.참조해야 하는 위젯에 android:id 속성으로 이름을 지정한다.&lt;br /&gt;2.다른 위젯을 참조해 불러오려면 더하기 기호 없이 @id/... 과 같은 형태로 다른 위젯의 이름을 지정한다.&lt;br /&gt;&lt;br /&gt;별도의 위젯을 기준으로 배치&lt;br /&gt;android:layout_above&lt;br /&gt;android:layout_below&lt;br /&gt;android:layout_toLeftOf&lt;br /&gt;androdi:layout_toRightOf&lt;br /&gt;&lt;br /&gt;정렬 방법&lt;br /&gt;android:layout_alignTop&lt;br /&gt;android:layout_alignBottom&lt;br /&gt;android:layout_alignLeft&lt;br /&gt;android:layout_alignRight&lt;br /&gt;android:layout_alignBaseline&lt;br /&gt;&lt;br /&gt;참조 순서&lt;br /&gt;현재 위젯보다 아래쪽에 정의돼어있어서 아직 읽지 않은 위젯은 참조할 수 없다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-8104165427006588682?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/8104165427006588682/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-relativelayout.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8104165427006588682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8104165427006588682'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-relativelayout.html' title='컨테이너 (RelativeLayout)'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4256669246716181594</id><published>2010-02-26T19:46:00.000+09:00</published><updated>2011-01-30T14:08:35.112+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>컨테이너 (LinearLayout)</title><content type='html'>: 위젯이나 다른 하위 컨테이너가 가로나 세로 방향으로 하나씩 차례로 정렬되는 레이아웃을 지원한다. 자바의 FlowLayout이나 XUL 또는 플렉스의 vbox,hbox등과 유사하게 동작한다.&lt;br /&gt;&lt;br /&gt;개념과 속성&lt;br /&gt;orientation&lt;br /&gt;: 클래스를 가로로 배열할지 세로로 배열할지를 의미한다.&lt;br /&gt;android:orientation 가로 horizontal 세로 vertical&lt;br /&gt;fill model&lt;br /&gt;: 125px 처럼 위젯 폭을 직접 지정할 수 있다.&lt;br /&gt;wrap_content 해당 위젯 내용을 모두 표시할 수 있을 만큼의 크기까지 공간을 차지한다.&lt;br /&gt;fill_parent : 상위 컨테이너의 나머지 위젯이 사용하고 남은 공간 모두를 차지하도록 배치된다.&lt;br /&gt;&lt;br /&gt;weight&lt;br /&gt;: 속성은 남은 공간 가운데 어느 비율만큼의 공간을 특정 위젯에게 할당할지를 지정하는 값이다.&lt;br /&gt;&lt;br /&gt;gravity&lt;br /&gt;: 정렬 방법&lt;br /&gt;android:layout_gravity left, center_horizontal, right&lt;br /&gt;&lt;br /&gt;padding&lt;br /&gt;: 여백 설정&lt;br /&gt;android:padding 상하좌우&lt;br /&gt;android:paddingTop, android:paddingBottom, android:paddingLeft, android:paddingRight&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4256669246716181594?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4256669246716181594/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-linearlayout.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4256669246716181594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4256669246716181594'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-linearlayout.html' title='컨테이너 (LinearLayout)'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7803588205508030659</id><published>2010-02-23T23:38:00.000+09:00</published><updated>2011-01-30T14:08:34.994+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>안드로이드 프로그램 구조</title><content type='html'>&lt;P&gt;액티비티&lt;/P&gt;&lt;P&gt;사용자 인터페이스를 작성할 때는 액티비티라는 구성요소를 활용한다. 데스크탑 애플리케이션에서 윈도우 또는 대화상자라고 부르는 요소와 비슷하다고 볼 수 있다.&lt;/P&gt;&lt;P&gt;컨텐트 프로바이더&lt;/P&gt;&lt;P&gt;컨텐트 프로바이더는 기기에 들어 있는 각종 데이터에 대한 추상적인 인터페이스를 제공하며, 여러 애플리케이션이 사용할 수 있다. 안드로이드 개발 모델은 애플리케이션이 사용하는 데이터를 해당 애플리케이션뿐만 아니라 다른 애플리케이션에서도 사용할 수 있도록 열어주는 편이 좋다고 권장한다. 컨텐트 프로바이더를 구성하면 데이터에 대한 통제권은 충분히 확보한 상태에서 이와 같이 개발 중인 애플리케이션뿐만 아니라 다른 애플리케이션에서도 접근 가능하도록 기능을 제공할 수 있다.&lt;/P&gt;&lt;P&gt;인텐트&lt;/P&gt;&lt;P&gt;인텐트는 기기 내부를 쭉 훑으면서 특정 이벤트가 발생했다는 사실을 각 애플리케이션에 알려주는 시스템 메시지다. 예를 들어 하드웨어 상태가 변경되거나, 외부에서 데이터를 수신하거나, 특정 애플리케이션에서 발생하는 이벤트를 모두 포함한다. 각 애플리케이션은 인텐트에 대응할 수 있을 뿐만 아니라, 인텐트를 생성해 다른 액티비티를 싱핼하거나, 아니면 특정 조건에 대한하는 상황인지를 확인할 수도 있다.&lt;/P&gt;&lt;P&gt;서비스&lt;/P&gt;&lt;P&gt;액티비티나 컨텐트 프로바이더, 인텐트 리시버 등은 모두 필요한 시간 동안만 동작하는 구성 요소이고, 언제고 종료도리 가능성이 있다. 이와 반대로 서비스는 필요한 경우 종료되지 않고 특정 액티비티와 관계없이 항상 동작하도록 만들어진 구성 요소다. RSS 피드에 업데이트된 내용이 있는지 확인하는 서비스도 만들어 낼 수 있겠고, MP3 음악을 선택하는 액티비티가 종료돼도 백그라운드에서 계속해서 음악을 틀어주는 기능도 서비스에 해당된다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7803588205508030659?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7803588205508030659/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EA%B5%AC%EC%A1%B0.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7803588205508030659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7803588205508030659'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EA%B5%AC%EC%A1%B0.html' title='안드로이드 프로그램 구조'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4633195667340476552</id><published>2010-02-21T02:02:00.000+09:00</published><updated>2011-01-30T14:08:34.956+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>진짜로 이기는것은....</title><content type='html'>&lt;P&gt;소설 손자병법을 읽었다.&lt;/P&gt;&lt;P&gt;전쟁은 이미 이긴것을 확인하는 것이라는 말에 충격을 받았다..&lt;/P&gt;&lt;P&gt;현재 나도 타인과 시시비비가 잦은 편이다. 하지만 그들과 시비를 가려 이겼다고 해서 남는게 하나도 없는 게임을 하고 있다...&lt;/P&gt;&lt;P&gt;문뜻 난 지는 게임을 하고 있는것이 아닌가 생각이 든다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;한번쯤 꼭 읽어야 한다. 손자병법이 과거의 병법서로 치부할게 아니라 현재를 사는 우리에게 잦은 다툼과 전쟁속에서 살아 남는 법을 가르쳐 주는 현대의 병법서라고 해도 과언이 아니다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4633195667340476552?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4633195667340476552/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%A7%84%EC%A7%9C%EB%A1%9C-%EC%9D%B4%EA%B8%B0%EB%8A%94%EA%B2%83%EC%9D%80.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4633195667340476552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4633195667340476552'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%A7%84%EC%A7%9C%EB%A1%9C-%EC%9D%B4%EA%B8%B0%EB%8A%94%EA%B2%83%EC%9D%80.html' title='진짜로 이기는것은....'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1493354208941351129</id><published>2010-02-21T01:55:00.000+09:00</published><updated>2011-01-30T14:08:34.897+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>안드로이드 main.xml코드를 분석하자</title><content type='html'>&lt;P&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;LinerLayout xmlns:android=&lt;A href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/A&gt;&lt;/P&gt;&lt;P&gt;android:orientation="vertical"&lt;/P&gt;&lt;P&gt;android:layout_width="fill_parent"&lt;/P&gt;&lt;P&gt;android:layout_height="fill_parent"&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;TextView&lt;/P&gt;&lt;P&gt;android:layout_width="fill_parent"&lt;/P&gt;&lt;P&gt;android:layout_height="wrap_content"&lt;/P&gt;&lt;P&gt;android:text="@string/hello"&lt;/P&gt;&lt;P&gt;/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/LinearLayout&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;android:orientation="vertical"&lt;/P&gt;&lt;P&gt;android:layout_width="fill_parent"&lt;/P&gt;&lt;P&gt;android:layout_height="fill_parent"&lt;/P&gt;&lt;P&gt;레이아웃의 배치, 넓이 높이를 정의한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;android:layout_width="fill_parent"&lt;/P&gt;&lt;P&gt;android:layout_height="wrap_content"&lt;/P&gt;&lt;P&gt;TextView의 넓이와 높이를 정의한다.&lt;/P&gt;&lt;P&gt;android:text="@string/hello"&lt;/P&gt;&lt;P&gt;TextView에 넣을 문자열을 제공한다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1493354208941351129?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1493354208941351129/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-mainxml%EC%BD%94%EB%93%9C%EB%A5%BC-%EB%B6%84%EC%84%9D%ED%95%98%EC%9E%90.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1493354208941351129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1493354208941351129'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-mainxml%EC%BD%94%EB%93%9C%EB%A5%BC-%EB%B6%84%EC%84%9D%ED%95%98%EC%9E%90.html' title='안드로이드 main.xml코드를 분석하자'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7755802800437472865</id><published>2010-02-20T22:55:00.000+09:00</published><updated>2011-01-30T14:08:34.851+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>안드로이드 HelloWorld 소스 코드 분석</title><content type='html'>&lt;P&gt;package com.oreilly.helloworld;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;import android.app.Activity;&lt;/P&gt;&lt;P&gt;import android.os.Bundle;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;public class HelloWorldActivity extends Activity{&lt;/P&gt;&lt;P&gt;@Override&lt;/P&gt;&lt;P&gt;public void onCreate(Bundle savedInstanceState){&lt;/P&gt;&lt;P&gt;super.onCreate(savedInstanceState);&lt;/P&gt;&lt;P&gt;setContentView(R.layout.main);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;필요한 라이브로리 import&lt;/LI&gt;&lt;LI&gt;savedInstanceState는 액티비티간 데이터 교환하는 수단&lt;/LI&gt;&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7755802800437472865?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7755802800437472865/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-helloworld-%EC%86%8C%EC%8A%A4-%EC%BD%94%EB%93%9C-%EB%B6%84%EC%84%9D.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7755802800437472865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7755802800437472865'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-helloworld-%EC%86%8C%EC%8A%A4-%EC%BD%94%EB%93%9C-%EB%B6%84%EC%84%9D.html' title='안드로이드 HelloWorld 소스 코드 분석'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-5692086697768262144</id><published>2010-02-20T22:49:00.000+09:00</published><updated>2011-01-30T14:08:34.802+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>안드로이드 생명주기</title><content type='html'>&lt;P&gt;extends Activity&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;onCreate()&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;엑티비티가 처음 생성될 때 호출된다. 뷰를 만들고 지속적으로 필요한 데이터 파일을 여는 등 일반적으로 액티비티 초기화를 하는 메소드다. onCreate를 호출할 때 안드로이드는 과거에 실행했던 액티비티의 상태를 저장하고 있는 Bundle이라는 오브젝트를 받는다.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;onStart()&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;액티비티가 화면에 보이기 직전에 호출된다. onStart가 종료했을 때 액티비티가 화면 포어그라운드에서&amp;nbsp; 실행될 수 있다면 onResume가 호출된다. 간혹 포어그라운드 실행이 불가능하다면 onStop메소드가 호출된다.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;onResume()&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;액티비티가 포어그라운드에서 실행되면 onStart 바로 직후에 onResume메소드가 호출된다. 이 시점에서부터 액티비티는 사용자의 입력을 받을 수 있는 상태로 실행된다. 키보드와 터치를 통한 사용자 입력을 받으며 사용자 인터페이스가 화면에 보이게 된다. 다른 액티비티가 실행되면 화면에서 사라졌다가 해당 액티비티가 종료돼 원래의 액티비티가 다시 포어그라운드로 돌아올 때도 onResume이 호출된다. onResume에서 액티비티가 사용자 인터페이스를 업데이트할 때 필요한 작업을 시작하거나 재개하게 된다. 사용자 인터페이스 업데이트 예로 위치 정보 업데이트 또는 애니메이션 보이기 등을 들 수 있다.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;onPause()&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;안드로이드가 다른 액티비티를 재실행해서 포어그라운드로 띄우려는 순간 기존 액티비티에게 onPause메소드가 호출된다. 이 순간에는 원래 실행하던 액티비티는 화면에 보이지 않으므로 배터리를 소모하거나 CPU를 불필요하게 사용하는 작업을 멈춰야 한다. 예를 들어, 애니메이션을 보여주고 있다면 onPause 이후에는 어차피 아무도 못 보기 때문에 이 작업을 멈췄다가 나중에 화면을 다시 돌려받을 때 재개하는 편이 낫다. 이 메소드에서는 나중에 포어그라운드로 복귀할 때를 대비해 액티비티의 상태를 저장해두면 좋다. 그러나 액티비티가 다시 포어그라운드로 복귀한다는보장은 없다. 만일 메모리가 부족하고 디스크에 가상 메모리를 확장할 공간도 없다면 메모리가 필요한 시스템 프로세스를 위해 액티비티를 희생해야 할 수도 있다. 이 메소드를 실행하고 나간 액티비티는 다시 실행되지 않고 안드로이드를 제거할 수도 있다.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;onStop()&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;액티비티가 화면에 보이지 않을 때 호출된다. 화면에 보이지 않는 이유는 액티비티가 제거됐거나 다른 액티비티에 의해 포어그라운드를 빼앗겼을 때, 둘 중 하나다.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;onDestory()&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;액티비티가 완전히 제거되지 전에 마지막으로 처리할 기회를 제공하는 메소드다. 정상적인 경우에는 액티비티가 제대로 종료해서 안드로이드가 그 액티비티의 finish메소드를 호출했을 때 onDestory로 들어온다. 하지만 앞에서 언급했듯이 자원이 부족할 때 안드로이드가 그 자원들을 회수하기 위해 액티비티를 제거하려고 호출할 때도 있다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-5692086697768262144?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/5692086697768262144/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5692086697768262144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5692086697768262144'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0.html' title='안드로이드 생명주기'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3989595289912236408</id><published>2010-02-20T21:36:00.000+09:00</published><updated>2011-01-30T14:08:34.730+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>안드로이드, 이클립스 툴</title><content type='html'>열심히 익히자~~ 화팅~~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3989595289912236408?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3989595289912236408/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-%ED%88%B4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3989595289912236408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3989595289912236408'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/02/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-%ED%88%B4.html' title='안드로이드, 이클립스 툴'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-819386356582950487</id><published>2010-01-13T23:30:00.000+09:00</published><updated>2011-01-30T14:08:34.683+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>내 독서 취향</title><content type='html'>&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width="100%" bgColor=#ffffff&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height=40&gt;&lt;SPAN style="COLOR: #000000; FONT-SIZE: 16px; FONT-WEIGHT: bold"&gt;취향 설명&lt;/SPAN&gt; &lt;/TD&gt;&lt;TD vAlign=top width=120 align=right&gt;&lt;A href="http://book.idsolution.co.kr/?mode=home;"&gt;&lt;U&gt;내 취향 보기&lt;/U&gt;&lt;/A&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width="97%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;SPAN lang=EN-US&gt;&lt;IMG border=0 hspace=5 vspace=5 src="http://img.blog.yahoo.co.kr/ybi/1/ed/67/id_solution2006/folder/7/img_7_1135_9?1261711019.gif" target="_blank"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;사막은 지구 표면의 3분의 1을 차지하는 기후대로, 매년 빠른 속도로 넓어지고 있다. 동식물의 생존에 무자비한 환경이긴 하지만 놀랍게도 사막엔 수많은 생물들이 존재한다. 이들은 가혹한 사막의 자연환경에 적응하기 위해, 물과 에너지의 사용을 최소화 하기 위해 극도로 실용적이고 보수적인 행동 패턴을 보인다. &lt;/P&gt;&lt;P&gt;실용주의, 현실주의, 냉정한 보수주의. 이는 당신의 책 취향에게 가장 적합한 곳입니다. &lt;/P&gt;&lt;UL&gt;&lt;LI&gt;목마른 낙타가 물을 찾듯이:&lt;br /&gt;낙타가 사막에서 물을 찾듯이, 책을 고를 때도 실용주의가 적용됨. 빙빙 돌려 말하거나, 심하게 은유적이거나, 감상적인 내용은 질색. 본론부터 간단히. 쿨하고, 직설적이고, 노골적인 내용을 선호함. &lt;br /&gt;&lt;br /&gt;&lt;LI&gt;들어는 봤나, 하드보일드: &lt;br /&gt;책이란 무릇 어떠한 감정에 흔들려서도 안되며, 객관적이고 중립적이고 이성적으로 쓰여져야 함. 사실주의 소설, 다큐멘터리 기법의 역사책, 인물 평전 같은 건조한 사실 기반 내용을 좋아하는 편. &lt;br /&gt;&lt;br /&gt;&lt;LI&gt;문화적 유목민: &lt;br /&gt;사실주의 역사 책만 선호하는 것이 아니라 의외로 다양한 책을 섭렵하는 경우도 있는데, 이 경우 특별히 일관된 선호 기준이 없음. (아예 좋다 싫다 취향이 없는 경우도 있음.) 뭔가 볼만한 책을 찾기 위해 '방황'을 많이 하는 독자층. &lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;FONT style="FONT-FAMILY: 굴림; FONT-SIZE: 9pt"&gt;당신의 취향은 지구 대지의 3분의 1을 차지하는 사막 기후처럼 전체 출판 시장의 상당수를 차지하며, 그 수는 해마다 늘어나고 있습니다. 로맨스 소설이나 시 같은 픽션에 상대적으로 관심이 적은 취향이기도 합니다. &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;다음의 당신 취향의 사람들로부터 많은 인기를 얻은 작가들입니다. &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;빌 밸린저&lt;/STRONG&gt;&lt;br /&gt;그의 이름은 루, 두 번째 이름은 이제부터 이야기할 한 가지 경우를 제외하고는 중요하지 않다. ... 생전에 그는 마술사였다. 기적을 만드는 사람, 요술쟁이, 환상을 연출하는 사람 말이다. 그는 아주 솜씨 좋은 마술사였는데도, 일찍 죽은 탓에 위에서 언급한 다른 이들만큼의 명성을 얻지는 못했지만 그 사람들이 시도조차 하지 않았던 것을 성취한 인물이었다. &lt;br /&gt;첫째, 그는 살인범에게 복수했다. &lt;br /&gt;둘째, 그는 살인을 실행했다. &lt;br /&gt;셋째, 그는 그 과정에서 살해당했다.&lt;br /&gt;- 이와 손톱 中&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;베르나르 베르베르&lt;/STRONG&gt; &lt;br /&gt;"사람들은 하느님을 오해하고 있다네. 그 오해는 애초에 누군가가 하느님의 말씀을 잘못 해석한 데서 비롯된 것이지. 가는 귀를 먹은 예언자 하나가 &amp;lt;하느님은 위무르(익살)이시다&amp;gt;라는 말을 &amp;lt;하느님은 아무르(사랑)이시다&amp;gt;라는 말로 잘못 알아들은 걸쎄. 모든 것 속에 웃음이 있다네. 죽음도 예외는 아니지. 나는 내가 소경이 된 것을 하느님의 익살로 받아들인다네." &lt;br /&gt;- 타나토노트 中&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;위화 &lt;/STRONG&gt;&lt;br /&gt;"이 자식들아, 니들 양심은 개에게 갖다 주었냐. 너희 아버지를 그렇게 말하다니. 너희 아버지는 피를 팔아서 번 돈을 전부 너희들을 위해서 썼는데, 너희들은 너희 아버지가 피를 팔아 키운 거란 말이다. 생각들 좀 해봐. 흉년 든 그해에 집에서 맨날 옥수수죽만 먹었을때 너희들 얼굴에 살이라고는 한 점도 없어서 너희 아버지가 피를 팔아 너희들 국수 사 주셨잖니. 이젠 완전히 잊어먹었구나...(중략)...일락이 네가 상해 병원해 입원해 있었을때.집안에 돈이 없어서 너희 아버지가 이곳저곳을 돌아다니시면서 피를 파셨다. 한 번 팔면 석 달은 쉬어야 하는데, 너 살리려고 자기 목숨은 신경도 쓰지 않고, 사흘 걸러 닷새 걸러 한번씩 피를 파셨단 말이다.송림에서는 돌아가실 뻔도 했는데 일락이 네가 그일을 잊어버렸다니...이자식들아 너희 양심은 개새끼가 물어 갔다더냐."&lt;br /&gt;- 허삼관 매혈기 中&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-819386356582950487?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/819386356582950487/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2010/01/%EB%82%B4-%EB%8F%85%EC%84%9C-%EC%B7%A8%ED%96%A5.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/819386356582950487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/819386356582950487'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2010/01/%EB%82%B4-%EB%8F%85%EC%84%9C-%EC%B7%A8%ED%96%A5.html' title='내 독서 취향'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2002772788789157782</id><published>2009-12-31T17:05:00.000+09:00</published><updated>2011-01-30T14:08:34.633+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>7전 8기~</title><content type='html'>&lt;P&gt;1단계 마음을 다스리자.&lt;/P&gt;&lt;P&gt;심리적 기복을 없에는것이 중요하다.&lt;/P&gt;&lt;P&gt;2단계 포기와 선택 하는 법을 배워야 한다.&lt;/P&gt;&lt;P&gt;인간이 가지고 있는 자원은 한계가 있다. 모두 다 하는것보다 다른것을 포기하고 하나에 열중하는 법&lt;/P&gt;&lt;P&gt;3단계 기다림이란(태만과 긴장)&lt;/P&gt;&lt;P&gt;4단계 1년을 보는 안목과 10년을 보는 안목.&lt;/P&gt;&lt;P&gt;5단계 감사하는 마음&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2002772788789157782?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2002772788789157782/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/12/7%EC%A0%84-8%EA%B8%B0.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2002772788789157782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2002772788789157782'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/12/7%EC%A0%84-8%EA%B8%B0.html' title='7전 8기~'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-493605401581013496</id><published>2009-09-08T15:40:00.000+09:00</published><updated>2011-01-30T14:08:34.251+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>이 엄청 떨어지는 주의 집중력은 몬가요?</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/0/9085/attach/XBTOmOAGj1.jpg" style="width:640px;height:452px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/0/9085/attach/XBTOmOAGj1.jpg')" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-493605401581013496?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/493605401581013496/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EC%9D%B4-%EC%97%84%EC%B2%AD-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%A3%BC%EC%9D%98-%EC%A7%91%EC%A4%91%EB%A0%A5%EC%9D%80-%EB%AA%AC%EA%B0%80%EC%9A%94.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/493605401581013496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/493605401581013496'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EC%9D%B4-%EC%97%84%EC%B2%AD-%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EC%A3%BC%EC%9D%98-%EC%A7%91%EC%A4%91%EB%A0%A5%EC%9D%80-%EB%AA%AC%EA%B0%80%EC%9A%94.html' title='이 엄청 떨어지는 주의 집중력은 몬가요?'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4565598012918709851</id><published>2009-09-07T14:54:00.000+09:00</published><updated>2011-01-30T14:08:34.211+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>원격관리 (관리회선, 시리얼 콘솔, IPMI)</title><content type='html'>원격 로그인&lt;br /&gt;네트워크 장애대비&lt;br /&gt;관리회선&lt;br /&gt;: 상용회선이나 라우터의 장애시에도 원격관리를 가능하게 하기 위해서 다른 계통의 경로를 마련하는 회선&lt;br /&gt;스위치 장애 대비&lt;br /&gt;시리얼 콘솔&lt;br /&gt;시리얼 콘솔의 실현 (cu, kermit, minicom)&lt;br /&gt;- BIOS&lt;br /&gt;서버 머신에 탑재된 BIOS라면 콘솔 리다이렉션 이라는 기능을 지니고 있다. 이것은 머신 기동시에 BIOS가 출력하는 메시지나 BIOS의 설정화면을 지정된 시리얼 인터페이스로 출력하는 기능이다.&lt;br /&gt;- 부트로더&lt;br /&gt;lilo나 SYSLINUX, GRUB 등의 일반적인 부트로더는 시리얼 콘솔에 대응하고 있다. 설정하면 통상의 콘솔과 마찬가지로 시리얼 콘솔을 통해 부트로더 제어화면에 액세스할 수 있다.&lt;br /&gt;- OS&lt;br /&gt;대부분의 유닉스 계열 OS는 OS나 부팅시에 실행되는 초기화 스크립트가 출력하는 메시지를 시리얼 콘솔로 출력할 수 있다. 리눅스의 경우라면 커널의 파라미터로, 디폴트 콘솔로서 시리얼 인터페이스를 지정한다.&lt;br /&gt;- getty&lt;br /&gt;유닉스 계열 OS에서는 콘솔로부터의 로그인은 getty라고 하는 프로그램이 처리한다. 시리얼 콘솔로부터의 로그인에도 getty를 사용한다.&lt;br /&gt;&lt;br /&gt;IPMI(Intelligent Platform Management Interface)&lt;br /&gt;소프트웨어를 이용해서 머신의 전원을 제어하거나 상태를 확인하기 위한 규격이다. IPMI에서는 로컬 머신에서는 물론, 네트워크상의 다른 머신으로부터도 이러한 기능에 액세스 할수 있다.&lt;br /&gt;&lt;br /&gt;웹 서버 로그관리&lt;br /&gt;웹 서버 로그 집약, 수집&lt;br /&gt;집약과 수집&lt;br /&gt;집약: 웹서버가 출력하는 로그를 항상 전송해서 한곳으로 모으는 것이다.&lt;br /&gt;- 목적: 그 순간순간의 상황을 파악하기 위해서이다. &lt;br /&gt;수집: 각 서버상에 출력된 로그를 정기적으로 모아서 저장하는 것을 말한다.&lt;br /&gt;- 목적: 집계와 분석, 그리고 보전이다.&lt;br /&gt;&lt;br /&gt;로그 집약 (syslog, syslog-ng)&lt;br /&gt;syslog를 이용한 로그 집약&lt;br /&gt;syslog-ng&lt;br /&gt;&lt;br /&gt;로그수집&lt;br /&gt;1. 로그의 보존과 분석&lt;br /&gt;아파치 로그의 회전 cron과 rotatelogs&lt;br /&gt;cron을 사용하여 로그파일을 리네임하고 아파치를 재시작하는 방법&lt;br /&gt;rotatelogs 프로그램 사용&lt;br /&gt;&lt;br /&gt;로그서버의 역할과 구성&lt;br /&gt;집약, 수집, 보존&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4565598012918709851?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4565598012918709851/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EC%9B%90%EA%B2%A9%EA%B4%80%EB%A6%AC-%EA%B4%80%EB%A6%AC%ED%9A%8C%EC%84%A0-%EC%8B%9C%EB%A6%AC%EC%96%BC-%EC%BD%98%EC%86%94-ipmi.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4565598012918709851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4565598012918709851'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EC%9B%90%EA%B2%A9%EA%B4%80%EB%A6%AC-%EA%B4%80%EB%A6%AC%ED%9A%8C%EC%84%A0-%EC%8B%9C%EB%A6%AC%EC%96%BC-%EC%BD%98%EC%86%94-ipmi.html' title='원격관리 (관리회선, 시리얼 콘솔, IPMI)'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-5936636853810951216</id><published>2009-09-07T11:58:00.000+09:00</published><updated>2011-01-30T14:08:34.166+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>네트워크 부트의 활용 PXE, initramfs</title><content type='html'>네트워크 부트란:&lt;br /&gt;머신이 부팅하기 위해 필요한 데이터나 파일을 네트워크로부터 얻어서 부팅하는 것이다.&lt;br /&gt;&lt;br /&gt;네트워크 부트의 특징과 이점&lt;br /&gt;네트워크 부트를 사용하면 머신이 기동할 때 로컬의 2차 기억장치가 필요없게 된다.&lt;br /&gt;initramfs:&lt;br /&gt;커널이 루트 파일시스템을 마운트하고 init을 실행하기 전에 커널의 외부에서 밖에 수행할 수 없는 초기화를 하기 위한 구조다.&lt;br /&gt;부팅할 머신상에 아무것도 사전에 준비해두지 않아도 파일서버상에 다양한 시스템용 커널과 initramfs를 준비해두면 어떤 머신에서라도 임의의 시스템으로서 기동할 수 있다는 것을 의미한다.&lt;br /&gt;Diskless 시스템을 구성하는것도 가능하다.&lt;br /&gt;&lt;br /&gt;네트워크 부트의 동작 PXE&lt;br /&gt;PXE 부트의 흐름&lt;br /&gt;1. 통상의 BIOS가 초기화 작업을 한다. 이 과정에서 확장 BIOS를 스캔해서 PEX BIOS가 등록된다.&lt;br /&gt;2. 부팅 디바이스로 PXE가 선택되면 PXE BIOS로 제어를 넘긴다.&lt;br /&gt;3. 제어를 넘겨받은 PXE BIOS는 DHCP를 사용해서 IP주소 등의 정보를 얻은 후 IP 통신을 준비한다.&lt;br /&gt;4. 다음으로 PXE BIOS는 파일서버로부터 부트로더를 얻어서 실행한 후 제어를 넘긴다. 파일 서버 주소와 부트로더의 파일명은 3.에서 DHCP서버로 부터 알게 된다.&lt;br /&gt;5. 부트로더는 실행되면 4.와 동일한 파일서버부터 부트로더 자신의 설정파일을 얻는다. 파일서버의 주소는 PXE BIOS로 부터 부트로더로 통지된다.&lt;br /&gt;6. 마찬가지로 부트로더는 실행할 커널과, 설정파일에 지정되어 있다면 initramfs의 파일을 파일서버로부터 얻어서 메모리상에 위치시킨 후 커널에 제어를 넘긴다.&lt;br /&gt;- PXE부트를 지원하는 NIC&lt;br /&gt;최신 서버 머신에 탑재되어 있는 NIC라면 대부분 지원하고 있다.&lt;br /&gt;- DHCP 서버&lt;br /&gt;PXE 부트에 필요한 정보를 제공하고 있다.&lt;br /&gt;- TFTP 서버&lt;br /&gt;PXE BIOS에 필요한 파일을 얻기 위해 사용한다. atftpd등의 TSIZE 옵션을 지원하고 있는 것으로 사용할 필요가 있다.&lt;br /&gt;- PXE에 맞는 부트로더&lt;br /&gt;PXE 부트를 지원하는 것을 사용할 필요가 있다.CRUB을 PXE지원 가능하게 한 PXEGRUB나 SYSLINUX의 PXE버전인 PXELINUX가 있다.&lt;br /&gt;- 커널&lt;br /&gt;PXE 부트용으로 특별히 준비할 필요는 없다.&lt;br /&gt;- 루트 파일시스템 초기화용 시스템(initramfs)&lt;br /&gt;루트 파일시스템을 메모리 파일시스템상에 생성하고자 할 경우라면 필수다.&lt;br /&gt;- 루트 파일시스템&lt;br /&gt;어떠한 루트파일시스템을 사용하더라도 OS가 동작하기 위해 필요한 파일을 어떠한 형태로든 준비해둘 필요가 있다.&lt;br /&gt;&lt;br /&gt;네트워크 부트 활용의 예&lt;br /&gt;로드밸런서&lt;br /&gt;DB서버 /파일서버&lt;br /&gt;유지보수용 부트 이미지&lt;br /&gt;&lt;br /&gt;네트워크 부트를 구성하기 위해&lt;br /&gt;initramfs의 공통화와 역할의 식별&lt;br /&gt;Diskless 구성할 경우 고려할 점&lt;br /&gt;1.로그 출력&lt;br /&gt;NFS, syslog의 전송기능을 사용하는 방법&lt;br /&gt;2.파일의 변경관리&lt;br /&gt;3.마스터 파일의 보안&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-5936636853810951216?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/5936636853810951216/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%B6%80%ED%8A%B8%EC%9D%98-%ED%99%9C%EC%9A%A9-pxe-initramfs.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5936636853810951216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5936636853810951216'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%B6%80%ED%8A%B8%EC%9D%98-%ED%99%9C%EC%9A%A9-pxe-initramfs.html' title='네트워크 부트의 활용 PXE, initramfs'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3114099815664634639</id><published>2009-09-04T11:07:00.000+09:00</published><updated>2011-01-30T14:08:34.113+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>데몬의 가동관리 daemontools</title><content type='html'>데몬이 비정상 종료했을 경우&lt;br /&gt;daemontools&lt;br /&gt;:데몬 프로세스의 시작, 종료, 재시작, 프로세스가 죽었을 경우의 자동시작과 같은 데몬 프로세스 관리를 수행하기 위한 프로그램군이다.&lt;br /&gt;&lt;br /&gt;deamontools를 사용하는 이유&lt;br /&gt;1. 프로세스가 죽었을 경우에 자동적으로 재시작해준다.&lt;br /&gt;2. 손쉽게 데몬을 만들 수 있다.&lt;br /&gt;&amp;nbsp;- 제어터미널에서 분리한다.&lt;br /&gt;&amp;nbsp;- Current Workin Directory(cwd)를 루트(/)로 변경한다.&lt;br /&gt;&amp;nbsp;- 표준입출력 /dev/null(혹은 기타 파일)로 리다이렉트 한다.&lt;br /&gt;&lt;br /&gt;데몬이 되기 위한 조건&lt;br /&gt;foreground에서 동작하기&lt;br /&gt;&lt;br /&gt;데몬의 관리방법&lt;br /&gt;데몬의 신규작성&lt;br /&gt;- /etc/deamon -&amp;gt; 데몬들을 위치시킬 디렉토리&lt;br /&gt;- /etc/daemon/xxxd -&amp;gt; xxxd를 위한 디렉토리&lt;br /&gt;&lt;br /&gt;샘플코드&lt;br /&gt;#! /bin/sh&lt;br /&gt;exec 2&amp;gt;&amp;amp;1&lt;br /&gt;exec \&lt;br /&gt;&amp;nbsp; setuidgid USERNAME \&lt;br /&gt;&amp;nbsp; env - -PATH="/usr/local/bin:$PATH \&lt;br /&gt;&amp;nbsp; envdir ./env \&lt;br /&gt;&amp;nbsp;/usr/local/bin/xxxd&lt;br /&gt;&lt;br /&gt;line 2: 표준에러출력을 표준출력으로 리다이렉트한다.&lt;br /&gt;line 3: 이 프로세스를 이후에 오는 명령으로 대체한다.&lt;br /&gt;line 4: 유효 사용자를 변경한다.&lt;br /&gt;line 5: 환경변수를 초기화하고 필요한 환경변수를 설정한다.&lt;br /&gt;line 6: env라는 디렉토리에 파일이 있을 경우는 이를 참조해서 환경변수를 설정한다.&lt;br /&gt;line 7: 데몬프로그램을 실행한다.&lt;br /&gt;&lt;br /&gt;시그널 전송&lt;br /&gt;&lt;table style="border: medium none ; width: 450px; height: 40px;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;svc의 옵션&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;시그널&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;-p&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;STOP&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;-c&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;CONT&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;-h&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;HUP&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;-a&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;ALRM&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;-i&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;INT&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;-t&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;TERM&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;-k&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;KILL&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;keepalived&lt;br /&gt;지접제작한 감시 스크립트&lt;br /&gt;&lt;br /&gt;daemontools의 팁&lt;br /&gt;의존하는 서비스의 시작순서 제어, 편리한 셸 함수&lt;br /&gt;&lt;br /&gt;의존하는 서비스의 시작순서 제어&lt;br /&gt;&lt;br /&gt;편리한 셸함수&lt;br /&gt;- daemonup&lt;br /&gt;- daemondown&lt;br /&gt;- daemonstat&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3114099815664634639?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3114099815664634639/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EB%8D%B0%EB%AA%AC%EC%9D%98-%EA%B0%80%EB%8F%99%EA%B4%80%EB%A6%AC-daemontools.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3114099815664634639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3114099815664634639'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EB%8D%B0%EB%AA%AC%EC%9D%98-%EA%B0%80%EB%8F%99%EA%B4%80%EB%A6%AC-daemontools.html' title='데몬의 가동관리 daemontools'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7013494314594870621</id><published>2009-09-03T13:49:00.000+09:00</published><updated>2011-01-30T14:08:32.371+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>서버 리소스 모니터링(Ganglia)</title><content type='html'>서버 리소스 모니터링&lt;br /&gt;&lt;br /&gt;모니터링의 목정&lt;br /&gt;- CPU 사용률&lt;br /&gt;- 메모리 사용률&lt;br /&gt;- Load Average&lt;br /&gt;- 네트워크 트래픽&lt;br /&gt;&lt;br /&gt;모니터링 툴&lt;br /&gt;Munin http://munin.projects.linpro.no/&lt;br /&gt;Cacti http://www.cacti.net/&lt;br /&gt;Centreaon http://www.centreon.com/&lt;br /&gt;Monitorix http://www.monitorix.org/&lt;br /&gt;collectd http://collectd.org/&lt;br /&gt;&lt;br /&gt;Ganglia 대량의 노드에 적합한 그래프화 툴&lt;br /&gt;&lt;br /&gt;아파치 프로세스의 상태 그래프화&lt;br /&gt;&lt;table style="border: medium none ; width: 450px; height: 40px;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;기호&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;의미&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;_&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;접속을 기다리고 있음&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;S&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;기동중&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;R&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;요청을 일고 있음&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;W&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;응답 &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;K&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;Keep-Alive요청을 위해 대기하고 있음&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;D&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;DNS질의 중&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;C&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;접속 끊는 중&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;L&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;로그 쓰는 중&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;G&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;종료 처리중&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;I&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;idle worker를 정리중&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;.&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;프로세스 부재인 빈 슬롯&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Ganglia에 그래프를 추가하는 방법&lt;br /&gt;&lt;br /&gt;복합적인 그래프 추가&lt;br /&gt;- conf.php, my-conf.php&lt;br /&gt;:conf.php에서 my-conf.php라는 이름의 파일을 include하도록 해서, 이번 변경에 관한 설정 항목을 my-conf.php에 작성하도록 하고 있다.&lt;br /&gt;- functions.php&lt;br /&gt;run_apache라는 함수를 추가하고 있다. 이것은 매개변수로 넘겨진 호스트로 아파치 그래프를 그릴지 여부를 boolean으로 변환하는 것이다. 이번에는 단순히 호스트명을 보고 판별하도록 하고 있다.&lt;br /&gt;-graph.php&lt;br /&gt;행수로는 가장 많이 변경해야 하는 것이 graph.php지만 어렵지는 않다. RRDtool의 문법으로 그래프를 그리도록 지시할 뿐으로, 읽어드리는 데이터가 많으므로 행수가 많아진 것 뿐이다.&lt;br /&gt;-templates/default/host_view.tpl, host_view.php&lt;br /&gt;호스트 뷰의 화면을 커스터마이징하고 있다. 템플릿에 functional이라는 레이블로 삽입 포인트를 추가해서 host_view.php에서는 run_apache가 참인 경우에 아파치의 그래프를 표시하기 위해 HTML을 functional에 할당하고 있다.&lt;br /&gt;-header.php&lt;br /&gt;클러스터 뷰의 Metric 풀다운 메뉴에 아파치 그래프를 표시하도록 하고 있다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7013494314594870621?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7013494314594870621/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EC%84%9C%EB%B2%84-%EB%A6%AC%EC%86%8C%EC%8A%A4-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81ganglia.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7013494314594870621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7013494314594870621'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/09/%EC%84%9C%EB%B2%84-%EB%A6%AC%EC%86%8C%EC%8A%A4-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81ganglia.html' title='서버 리소스 모니터링(Ganglia)'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-6660325769216297148</id><published>2009-08-31T16:57:00.000+09:00</published><updated>2011-01-30T14:08:32.254+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>아파치 튜닝</title><content type='html'>아파치의 병렬처리와 MPM&lt;br /&gt;병렬처리의 구현모델&lt;br /&gt;- 프로세스를 여러 개 생성해서 병렬처리를 실현하는 멀티프로세스 모델&lt;br /&gt;- 프로세스가 아니라 보다 경량의 실행단위인 쓰레드를 사용하는 멀티쓰레드 모델&lt;br /&gt;- 입출력을 감시해서 이벤트가 발생하는 타이밍에 처리를 전환하는, 시그널 쓰레드로 병렬처리를 수행하는 이벤트 구동 모델&lt;br /&gt;&lt;br /&gt;MPM(Multi Processing Module)&lt;br /&gt;http://httpd.apache.org/docs/2.2/ko/mod/&lt;br /&gt;prefork: 미리 복수의 프로세스를 생성해서 클라이언트의 접속에 대비하는 멀티프로세스 모델&lt;br /&gt;&amp;lt;안전지향, 후방호환성이 높은 MPM&amp;gt;&lt;br /&gt;worker: 멀티쓰레드와 멀티프로세스의 하이브리드형&lt;br /&gt;&amp;lt;확장성이 높은 MPM&amp;gt;&lt;br /&gt;&lt;br /&gt;- prefork를 worker로 변경하더라도 하나의 클라이언트에 대한 응답시간이 고속화되는 것은 아니다.&lt;br /&gt;- prefork를 worker로 변경하더라도 메모리가 충분하다면 동시에 처리할 수 있는 접속 수는 변하지 않는다.&lt;br /&gt;- prefork를 worker로 변경하더라도 대량의 컨텍스트 스위치가 없다면(동시에 병렬적으로 대량의 액세스가 없다면)효과는 크지 않다.&lt;br /&gt;&lt;br /&gt;- 이용할 수 있는 메모리 용량이 그다ㅏ지 크지 않은 경우나, 메모리 소비량을 줄이고자 할 경우. 이런 경우, 프로세스보다 메모리 소비량이 적은 쓰레드의 이점이 살아난다.&lt;br /&gt;- 컨텍스트 스위치 횟수가 많아서 그만큼의 CPU 리소스를 줄이고자 할 경우, 즉 대량의 액세스로 인한 CPU사용률을 줄이고자 할 경우. 프로세스보다 쓰레드 쪽이 컨택스트 스위치 비용은 낮으므로 CPU소비가 줄어든다.&lt;br /&gt;&lt;br /&gt;httpd.conf 설정&lt;br /&gt;아파치의 안전판 MaxClients&lt;br /&gt;&lt;br /&gt;prefork의 경우&lt;br /&gt;- ServerLimit: 서버 수 , 이를테면 prefork에서는 프로세스 수의 상한&lt;br /&gt;- MaxClients: 동시에 접속할 수 있는 클라이언트 수의 상한&lt;br /&gt;- MaxRequestsPerChild&lt;br /&gt;카피온 라이트에 의한 메모리 공유는 시간의 경과에 따라 공유율이 하락해갔다. 이를 위해 아파치에서 정기적으로 자식 프로세스를 종료시키고 새로운 자식 프로세스를 생성시켜서 이 상태를 피해가는 방법이 있다.&lt;br /&gt;&lt;br /&gt;worker의 경우&lt;br /&gt;- 하나의 프로세스 내에 복수의 쓰레드를 생성하고, 쓰레드 하나로 클라이언트 하나를 처리한다.&lt;br /&gt;- 해당 프로세스를 복수 개 생성한다.&lt;br /&gt;- 쓰레드는 프로세스의 경우와 달리, 메모리 공간을 쓰레드끼리 완전히 공유한다. 카피온 라이트와 같은 경우를 생각할 필요가 없다.&lt;br /&gt;- 하나의 쓰레드당 스택 영역으로 최대 8,192KB의 메모리를 필요로 한다.&lt;br /&gt;&lt;br /&gt;MaxClients: 동시에 접속할 수 있는 클라이언트의 상한, 즉 프로세스 수 *쓰레드 수&lt;br /&gt;ServerLimit: 프로세스 수의 상한&lt;br /&gt;ThreadLimit: 프로세스당 쓰레드 수의 상한&lt;br /&gt;ThreadsPerChid: 프로세스당 쓰레드 수&lt;br /&gt;&lt;br /&gt;Keep-Alive&lt;br /&gt;&lt;br /&gt;아파치 이외의 선택방안 검토&lt;br /&gt;아파치의 장점:&lt;br /&gt;내부가 깔끔하게 모듈화된 범용적인 구조로 되어 있어서 확장성이 높다는 점을 들 수 있다. 따라서, 써드파티를 포함한 확장모듈의 개발이 활발하다. 자신이 직접 새로운 모듈을 만들어서 아파치의 동작을 커스터마이징 하기도 한다.&lt;br /&gt;&lt;br /&gt;lighttpd&lt;br /&gt;- SPED(Single Process Event Driven)를 채용하고 있고, 적은 메모리로 대량의 접속을 동시병행적으로 처리하는 것을 주안에 둔 빠른 내부구현.&lt;br /&gt;- 아파치에 비해 범용성은 뒤떨어지지만 그만큼 하나의 요청에 소요되는 계산량이 적기 때문에 CPU 소모가 적다.&lt;br /&gt;- 싱글프로세스이므로 메모리 소비량이 아파치와 비교해서 훨씬 적게 든다.&lt;br /&gt;- 아파치의 코어모듈, mod_rewite나 mod_proxy에 해당하는 기본적인 기능은 모두 포함하고 있다.&lt;br /&gt;- FastCGI에도 대응하고 있고, 펄이나 PHP, Ruby로 작성한 웹 어플리케이션을 고속화해서 AP서버로 이용할 수 있다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-6660325769216297148?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/6660325769216297148/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EC%95%84%ED%8C%8C%EC%B9%98-%ED%8A%9C%EB%8B%9D.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6660325769216297148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6660325769216297148'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EC%95%84%ED%8C%8C%EC%B9%98-%ED%8A%9C%EB%8B%9D.html' title='아파치 튜닝'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7549953900357275405</id><published>2009-08-26T11:06:00.000+09:00</published><updated>2011-01-30T14:08:32.135+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>네트워크의 다중화</title><content type='html'>L1, L2 구성요소의 다중화&lt;br /&gt;&lt;br /&gt;장애발생 포인트&lt;br /&gt;1. LAN&amp;nbsp; 케이블&lt;br /&gt;- 단선이나 커넥터 접속 불량&lt;br /&gt;2. NIC(네트워크 카드)&lt;br /&gt;- 링크 업과 다운을 반복&lt;br /&gt;3. 네트워크 스위치 포트&lt;br /&gt;4. 네트워크 스위치&lt;br /&gt;&lt;br /&gt;링크의 다중화와 Bonding 드라이버&lt;br /&gt;&lt;br /&gt;Bonding 드라이버&lt;br /&gt;- 물리적인 네트워크 카드를 모아서 하나의 논리적인 네트워크 카드로 다룰 수 있도록 한다.&lt;br /&gt;물리NIC 고장 검출 방식&lt;br /&gt;MII감시&lt;br /&gt;- 물리NIC 링크 타운 되면 고장 난 것으로 간주하는 것이다. 이것은 저비용 단시간에 고장여부를 체크 할 수 있지만, 반면 NIC가 링크 업 임에도 통신할 수 없는 상황에는 대응할 수 없다. &lt;br /&gt;ARP감시&lt;br /&gt;- ARP 요청을 지정된 머신에 대해 송신해서 응답이 오는지를 시험해서 판정한다.&lt;br /&gt;&lt;br /&gt;Bonding 드라이버 동작 모드&lt;br /&gt;&lt;table style="border: medium none ; width: 450px; height: 40px;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;balance-rr&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;송신할 패킷마다 사용할 물리 NIC를 전환한다.(라운드로빈)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;active-backup&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;첫 번째 물리 NIC가 사용 가능한 동안에는 그 NIC만 사용한다. 해당NIC가 고장 나면 다음 NIC를 사용한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;balance-xor&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;송신처와 목적지 MAC주소를 XOR해서 사용할 물리 NIC를 결정한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;boadcast&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;송신 패킷을 복사해서 모든 물리 NIC에 대한 동이한 패킷이 전송된다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;802.3ad&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;IEEE 802.3ad 프로토콜을 사용해서 스위치와의 사이에서 동적으로 aggregation을 작성한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;balance-tlb&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;물리 NIC중에 가장 부하가 낮은 물리 NIC을 선택해서 송신한다. 수신은 특정 물리 NIC을 사용해서 수신한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;balance-alb&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;송수신 모두 부하가 낮은 물리 NIC를 사용한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;스위치의 다중화&lt;br /&gt;&lt;br /&gt;STP(Spanning Tree Protocol)&lt;br /&gt;브리지 네트워크를 위한 IEEE 802.1 표준의 하나인 링크 관리 프로토콜. 스패닝 트리 알고리듬(STA)을 사용하여 다중 경로에서 불필요한 경로 발생 시 덧붙임 경로를 제공하여 가장 효율적인 경로를 사용하도록 하게 한다. 두 네트워크 장비에서는 한 번에 오직 하나의 경로만이 동작하고 덧붙임 경로는 장애 시 백업 경로로 사용된다. 만일 경로에 장애가 발생하면 STA는 망을 재구성하여 다른 경로를 대체하여 멈추지 않게 해준다. 스패닝 트리가 없는 경우에는 양쪽 접속이 동시에 작용하기 때문에 무한 반복 현상을 초래할 수 있다.&lt;br /&gt;&lt;br /&gt;RSTP(Rapid Spanning Tree Protocol) &lt;br /&gt;각 스위치가 협조해서 네트워크 상에 생긴 루프를 검출하고, 다중화된 연결을 자동적으로 자단하기 위한 데이터링크 계층의 프로토콜이다.&lt;br /&gt;&lt;br /&gt;RSTP 우선 순위&lt;br /&gt;각 브리지에서 상호간에 BPDU를 교환힘으로써 어느 것이 상위 브리지인지를 결정한다. 연결된 모든 브리지 중에서 가장 상위 브리지가 루트브리지가 된다.&lt;br /&gt;1. 루트 브리지라고 인식되고 있는 브리지의 브리지ID&lt;br /&gt;2. 루트 브리지로의 경로 비용&lt;br /&gt;3. 브리지의 브리지ID&lt;br /&gt;4. 상대 브리지가 BPDU를 송신한 포트의 포트ID&lt;br /&gt;5. 상대 브리지로부터 BPDU를 수신한 포트의 포트ID&lt;br /&gt;&lt;br /&gt;RSTP에서 포트의 역할&lt;br /&gt;루트포트&lt;br /&gt;- 브리지의 각 포트 중에 가장 상위 브리지에 연결되어 있는 포트. RSTP의 초기화가 끝나면 모든 브리지가 인식하는 루트 브리지는 동일하게 되므로 루트 포트=루트 브리지로의 최단경로가 된다.&lt;br /&gt;지정포트&lt;br /&gt;- 하위 브리지가 연결되어 있는 포트. 연결 상대인 브리지의 포트는 루트 포트가 대체 포트가 된다.&lt;br /&gt;대체포트&lt;br /&gt;- 루트 포트 이외에 상위 브리지에 연결되어 있는 포트. 이 포트에서는 BPDU 이외의 패킷을 차단한다. 루트 포트가 특정 이유로 사용할 수 없게 되면 대체 포트가 사용된다.&lt;br /&gt;백업포트&lt;br /&gt;- 다른 포트(=지정포트)로부터 자기자신이 보낸 BPDU를 수신한 포트. RSTP가 설정된 브리지는 수신한 BPDU를 전송하지 않으므로 자신이 보낸 BPDU를 수신한다는 것을 RSTP 설정되지 않는 스위치가 연결되어 있는 루프를 형성한다고 있다고 판단할 수 있다. 이 포트에서는 BPDU 이외의 패킷을 차단한다.&lt;br /&gt;Disabled Port&lt;br /&gt;- BPDU를 수신하지 않는 포트. 예를 들면, 단말이 접속되어 있는 포트가 이에 해당한다.&lt;br /&gt;&lt;br /&gt;정리&lt;br /&gt;Bonding 드라이버를 사용하면 서버와 스위치 간의 접속을 다중화함과 동시에 스위치의 다중화도 할 수 있다.&lt;br /&gt;RSTP를 사용하면 스위치 다중화를 Bonding 드라이버에 의존하지 않고 실현 할수 있다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7549953900357275405?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7549953900357275405/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EB%8B%A4%EC%A4%91%ED%99%94.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7549953900357275405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7549953900357275405'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EB%8B%A4%EC%A4%91%ED%99%94.html' title='네트워크의 다중화'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4695028541181631377</id><published>2009-08-25T13:56:00.000+09:00</published><updated>2011-01-30T14:08:32.014+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>DNS서버 다중화</title><content type='html'>&lt;P&gt;DNS서버 다중화 중요성&lt;/P&gt;&lt;P&gt;DNS서버의 장애는 좀처럼 방생하지 않지만, 일단 발생하면 원인이 판명되기까지 시간이 걸린다는 문제가 있다.&lt;/P&gt;&lt;P&gt;-주소변환 라이브러리를 이용한 다중화와 성능저하의 위험성&lt;/P&gt;&lt;P&gt;/etc/resolv.conf에 여러 DNS서버를 지정&lt;/P&gt;&lt;P&gt;성능저하의 위험성&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-서버팜에서의 DNS 다중화&lt;/P&gt;&lt;P&gt;VRRP를 이용한 부하분산&lt;/P&gt;&lt;P&gt;DNS서버의 부하분산&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;정리&lt;/P&gt;&lt;P&gt;DNS서버는 눈에 띄지 않는 곳에서 중요한 일을 많이 수행하고 있다. 또한, DNS서버용 소프트웨어는 안정되어 있는 것이 많아서 좀처럼 정지하지 않는다. 이 때문에 DNS서버 장애를 그다지 가정하지 않는 것일지도 모른다. 그러나 DNS서버 장애는 원인이 판명되기까지 시간과 노력이 소요되는 경우가 많으므로, 만약의 경우에 불필요한 수고를 하지 않도록 확실한 대책을 취해두는 것이 좋다.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4695028541181631377?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4695028541181631377/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/dns%EC%84%9C%EB%B2%84-%EB%8B%A4%EC%A4%91%ED%99%94.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4695028541181631377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4695028541181631377'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/dns%EC%84%9C%EB%B2%84-%EB%8B%A4%EC%A4%91%ED%99%94.html' title='DNS서버 다중화'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-3975359151915489777</id><published>2009-08-24T14:08:00.000+09:00</published><updated>2011-01-30T14:08:31.775+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>리버스 프록시 서버</title><content type='html'>&lt;P&gt;이점 &lt;/P&gt;&lt;P&gt;- HTTP 요청의 내용에 따라 시스템이 동작 제어(L7 스위치가 하는 역할과 비슷하다.)&lt;/P&gt;&lt;P&gt;클라이언트의 IP주소를 보고 특정 IP주소만 서버로의 접속을 허가한다.&lt;/P&gt;&lt;P&gt;클라이언트의 User-Agent를 보고 임의의 User-Agent로부터의 요청을 특별한 웹 서버로 접속되도록 유도한다.&lt;/P&gt;&lt;P&gt;/hoge/foo/bar라는 URL을 /hoge?foo=bar라는 URL로 변경해서 웹 서버로 요청한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- 시스템 전체의 메모리 사용효율 향상&lt;/P&gt;&lt;P&gt;- 웹 서버가 응답하는 데이터의 버퍼링 역할&lt;/P&gt;&lt;P&gt;HTTP의 Keep-Alive: 최초 요청시에 연결된 서버와의 접속을 해당 요청이 종료한 후에도 접속을 끊지 않고 유지한 채로 이어지는 요청에 해당 접속을 계속 사용함으로써, 하나의 접속으로 다수의 요청을 처리할 수 있다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- 아파치 모듈을 이용한 처리의 제어&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-3975359151915489777?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/3975359151915489777/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EB%A6%AC%EB%B2%84%EC%8A%A4-%ED%94%84%EB%A1%9D%EC%8B%9C-%EC%84%9C%EB%B2%84.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3975359151915489777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/3975359151915489777'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EB%A6%AC%EB%B2%84%EC%8A%A4-%ED%94%84%EB%A1%9D%EC%8B%9C-%EC%84%9C%EB%B2%84.html' title='리버스 프록시 서버'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2982973786478517853</id><published>2009-08-20T17:08:00.000+09:00</published><updated>2011-01-30T14:08:31.727+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>서버/인프라 구축 입문(2)</title><content type='html'>keepalived.conf 각 파라미터의 의미&lt;br /&gt;&lt;table style="border: medium none ; width: 450px; height: 40px;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;state MASTER&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;keepalived 기동시 MASTER로서 기동할지 BACKUP으로 기동할지를 지정한다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;interface eth0&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;VRRP패킷을 송신하거나 수실할 인터페이스를 지정한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;garp_master_delay 5&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;마스터 상태로 변경된 후에 gratuitous ARP를 재송신하기까지 대기시간을 초단위로 지정한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;virtual_router_id 100&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;가상 라우터 ID.VRRP 인스턴스 마다 고유한 값을 지정한다 지정할 수 있는 범위는 0부터 255다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;priority 101&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;VRRP의 우선순위값. 마스터를 선출할 때 이 값이 큰 것이 우선한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;advert_int 1&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;VRRP패킷 송신 간격. 초단위로 지정한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;virtual_ipaddress&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;VIP(가상주소). 형식은 다음과 같고 여러 개 지정할 수 도 있다.&lt;br /&gt;&amp;lt;IPADDR&amp;gt;/&amp;lt;MASK&amp;gt;dev&amp;lt;STRIng&amp;gt; &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2982973786478517853?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2982973786478517853/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EC%84%9C%EB%B2%84%EC%9D%B8%ED%94%84%EB%9D%BC-%EA%B5%AC%EC%B6%95-%EC%9E%85%EB%AC%B82.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2982973786478517853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2982973786478517853'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EC%84%9C%EB%B2%84%EC%9D%B8%ED%94%84%EB%9D%BC-%EA%B5%AC%EC%B6%95-%EC%9E%85%EB%AC%B82.html' title='서버/인프라 구축 입문(2)'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-5940791015816952974</id><published>2009-08-20T12:08:00.000+09:00</published><updated>2011-01-30T14:08:31.665+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><category scheme='http://www.blogger.com/atom/ns#' term='서버'/><title type='text'>서버/인프라 구축 입문</title><content type='html'>&lt;p&gt;다중화: 장애가 발생해도 예비 운용장비로 시스템의 기능을 계속할 수 있도고 하는 것을 말한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;다중화의 분질&lt;/p&gt;&lt;p&gt;1. 장애를 상정한다.&lt;/p&gt;&lt;p&gt;2. 장애에 대비해서 예비 운용장비를 준비한다.&lt;/p&gt;&lt;p&gt;3. 장애가 발생했을 때 예비 운용장비로 교체할 수 있는 운용체제를 정비한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Hot Standby(상시 대기 방식) &amp;lt;-&amp;gt; Cold Standby(수동 예비 방식)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;장애극복&lt;/p&gt;&lt;p&gt;현재 운용 장비에 장개가 발생했을 때 자동적으로 예비 운용장비로 처리를 인계하는 것을 장애극복 이라고 한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;장애 검출&lt;/p&gt;&lt;p&gt;ICMP 감시(L3)&lt;/p&gt;&lt;p&gt;ICMP 감시는 ICMP의 echo 요청을 보내서 응답이 돌아오는지를 체크한다. 가장 간단하고 가벼운 헬스 체크지만, 웹서비스가 다운될 경우(아파지가 중지한 경우 등)은 감지할 수 없다.&lt;/p&gt;&lt;p&gt;포트 감시(L4)&lt;/p&gt;&lt;p&gt;포트 감시는 TCP로 접속을 시험해서 접속할 수 있는지 여부를 체크한다. 웹서비스가 다운된 것은 감지할 수 있지만, 과부하 상태로 응답할 수 없다거나 에러를 반환하는 것은 감지 할수 있다.&lt;/p&gt;&lt;p&gt;서비스 감시(L7)&lt;/p&gt;&lt;p&gt;실제로 HTTP 요청등을 보내서 정상적인 응답이 돌아오는지를 체크한다. 대부분의 이상을 감지할 수 있지만 경우에 따라서는 서버에 부하를 유발할 수도 있다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;부하분산 &lt;/p&gt;&lt;p&gt;여러 대의 서버에 처리를 분산시켜 사이트 전체의 확장성을 향상시키는 방법&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;웹서버 다중화&lt;/p&gt;&lt;p&gt;DNS 라운드 로빈&lt;/p&gt;&lt;p&gt;문제점&lt;/p&gt;&lt;p&gt;1.서버의 수만큼 글로벌 주소가 필요&lt;/p&gt;&lt;p&gt;2.균등하게 분산되는 것이 아님&lt;/p&gt;&lt;p&gt;3.서버가 다운돼도 감지하지 못해&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;로드벨런서&lt;/p&gt;&lt;p&gt;하나의 IP주소에 대해 요청을 복수의 서버로 분산할 수 있다.(IPVS)&lt;/p&gt;&lt;p&gt;L4스위치: 트랜스포트 계층까지의 정보를 분석, 포트번호에 따라 분산대상 서버를 지정할수 있다.(IPVS)&lt;/p&gt;&lt;p&gt;L7스위치: 애플리케이션 계층까지의 정보를 분석, 클라이언트로 부터 요청된 URL에 따라 분산서버를 지정할수 있다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;IPVS 스케줄링&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table style="border: medium none ; width: 450px; height: 40px;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;명칭&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;동작&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;rr(round-robin)&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;리얼서버를 처음부터 차례로 선택해간다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;wrr(weighted round-robin)&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;rr과 같지만 가중치를 가미해서 분산비율을 변경한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;lc(least-connetion)&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;접속수가 가장 적은 서버를 선택한다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;wlc(weighted round-robin)&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;lc와 같지만 가중치를 가미한다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;sed(shortest expected delay)&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;가장 응답속도가 빠른 서버를 선택한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;nq(never queue)&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;sed와 동일한 알고리즘이지만 active 접속수가 0인 서버를 최우선으로 선택한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;sh(source hashing)&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;소스IP주소로 부터 해시값을 계산해서 분산 대상 리얼 서버를 선택한다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;dh(destination hashing)&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;목적지 IP주소로 해시값을 계산해서 분산대상 리얼 서버를 선택한다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;lblc(locality-based least-connetion)&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;접속수가 가중치로 지정한 값을 넘기 전까지 동일한 서버를 선택한다. &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td width="135"&gt;&amp;nbsp;lblcr(locality-based least-connetion with replication)&lt;br /&gt;&lt;/td&gt;&lt;td width="135"&gt;&amp;nbsp;lblc와 거의 같지만 모든 서버의 접속수가 가중치로 지정한 값이 넘고 있을 경우 접속수가 가장 적은 서버가 선택된다.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;라우터 및 로드 밸런서의 다중화&lt;br /&gt;VRRP(Virtual Router Redundancy Protocal)&lt;br /&gt;VRRP 패킷이란?&lt;br /&gt;VRRP의 마스터 노드는 정기적으로 VRRP패킷을 멀티캐스팅 주소로 계속 송신한다.&lt;br /&gt;VRRP패킷은, 마스터 노드가 정상작동 중임을 광고하는 메시지라는 의미로 advertisement 라고 한다.&lt;br /&gt;VRRP패킷&lt;br /&gt;{IP Address(가상IP주소, Virtual Rtr ID(가상 라우터ID), Priority(우선순위)}&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-5940791015816952974?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/5940791015816952974/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EC%84%9C%EB%B2%84%EC%9D%B8%ED%94%84%EB%9D%BC-%EA%B5%AC%EC%B6%95-%EC%9E%85%EB%AC%B8.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5940791015816952974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5940791015816952974'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EC%84%9C%EB%B2%84%EC%9D%B8%ED%94%84%EB%9D%BC-%EA%B5%AC%EC%B6%95-%EC%9E%85%EB%AC%B8.html' title='서버/인프라 구축 입문'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4534796447415354736</id><published>2009-08-17T18:08:00.000+09:00</published><updated>2011-01-30T14:08:31.577+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>비대칭 암호에 대해서~~</title><content type='html'>&lt;P&gt;암호키를 공유하지 않은 상태에서 어떻게 암호를 주고 받을수 있을까?&lt;/P&gt;&lt;P&gt;비대칭 암호..&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4534796447415354736?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4534796447415354736/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EB%B9%84%EB%8C%80%EC%B9%AD-%EC%95%94%ED%98%B8%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4534796447415354736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4534796447415354736'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EB%B9%84%EB%8C%80%EC%B9%AD-%EC%95%94%ED%98%B8%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C.html' title='비대칭 암호에 대해서~~'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-5856620044811554613</id><published>2009-08-17T18:05:00.000+09:00</published><updated>2011-01-30T14:08:31.523+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>GET POST에 대하여</title><content type='html'>GET은 무언가를 가져오는 것, POST는 무언가를 수행하는 것이다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-5856620044811554613?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/5856620044811554613/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/get-post%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5856620044811554613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/5856620044811554613'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/get-post%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC.html' title='GET POST에 대하여'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1080621836441705122</id><published>2009-08-17T15:43:00.000+09:00</published><updated>2011-01-30T14:08:31.474+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>개발을 하기 전에..</title><content type='html'>&lt;P&gt;지금 추가하려는 기술이 이 애플리케이션의 사용 편의성을 향상시키는 것인가, 아니면 그저 내 이력서에 한줄 더 써넣기 위한 것인가?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;지금 추가하려는 것 때문에 기존 UI의 오랜 관습에 익숙한 사용자들이 충격을 받지 않는가?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;만일 사용자들이 충격을 받는다면, 그 때문에 사용자들의 겪는 기존 관습과의 불협화음이 과연 가치 있는 것인가?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-실전 AJAX-&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1080621836441705122?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1080621836441705122/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EA%B0%9C%EB%B0%9C%EC%9D%84-%ED%95%98%EA%B8%B0-%EC%A0%84%EC%97%90.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1080621836441705122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1080621836441705122'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EA%B0%9C%EB%B0%9C%EC%9D%84-%ED%95%98%EA%B8%B0-%EC%A0%84%EC%97%90.html' title='개발을 하기 전에..'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2950834007408520312</id><published>2009-08-04T12:16:00.000+09:00</published><updated>2011-01-30T14:08:31.073+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>데이터 베이스 공부중</title><content type='html'>&lt;P&gt;새로쓴 대용량 데이터베이스 솔루션을 보고 있네요..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;아 졸려~~ &lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2950834007408520312?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2950834007408520312/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B3%B5%EB%B6%80%EC%A4%91.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2950834007408520312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2950834007408520312'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/08/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B3%B5%EB%B6%80%EC%A4%91.html' title='데이터 베이스 공부중'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1434840670746575596</id><published>2009-07-31T13:43:00.000+09:00</published><updated>2011-01-30T14:08:31.021+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQLite</title><content type='html'>&lt;P&gt;resource sqlite_open (string filenam[,int mode[,string &amp;amp;error_message]])&lt;/P&gt;&lt;P&gt;SQLite 데이터베이스에 연결한다. 만일 지정한 데이터베이스 파일이 존재하지 않으면 해당 파일을 생성한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void sqlite_close(recsource dbhandle)&lt;/P&gt;&lt;P&gt;열려진 SQLite 데이터베이스에 대한 연결을 해제한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;resource sqlite_query(resource dbhandle,string query[,int result_type])&lt;/P&gt;&lt;P&gt;주어진 SQL문을 실행한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;bool sqlite_exec(resource dbhandle,string query)&lt;/P&gt;&lt;P&gt;결과 레코드셋을 반환하지 않는 SQL문을 실행한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;array splite_fetch_array(resource result,[int result_type[,bool decode_binary]])&lt;/P&gt;&lt;P&gt;결과 레코드셋에서 한 행(레코드)의 데이터를 배열로 가져온다.&lt;/P&gt;&lt;P&gt;result_type&lt;/P&gt;&lt;P&gt;SQLITE_ASSOC: 해당 레코드의 필드명과 데이터를 키와 값으로 갖는 연관배열을 반환한다.&lt;/P&gt;&lt;P&gt;SQLITE_NUM: 해당 레코드의 필드값을 원소로 갖는 스칼라 배열을 반환한다.&lt;/P&gt;&lt;P&gt;SQLITE_BOTH: 연관 배열과 스칼라 배열을 모두 반환한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;bool sqlite_has_more(resouce result)&lt;/P&gt;&lt;P&gt;주어진 결과 레코드셋에서 더 가져올 수 있는 레코드가 있는지 여부를 반환한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;bool sqlite_has_prev(resource result)&lt;/P&gt;&lt;P&gt;결과 레코드셋에서 포인터가 가리키는 레코드의 이전 레코드가 존재하는지 여부를 반환한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;bool sqlite_next(resource result)&lt;/P&gt;&lt;P&gt;결과 레코드셋에서 포인터를 현재의 다음위치로 이동시킨다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;bool sqlite_prev(resource result)&lt;/P&gt;&lt;P&gt;결과 레코드셋에서 포인터를 현재의 다음위치로 이동시킨다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;bool sqlite_rewind(resource result)&lt;/P&gt;&lt;P&gt;주어진 결과 레코드셋에서 포인터를 첫 번째 레코드로 이동시킨다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;arryay sqlite_current(resource result[,int result_type[,bool decode_binary]])&lt;/P&gt;&lt;P&gt;결과 레코드셋에서 현재 포인터가 가리키는 레코드를 배열로 가져온다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;mixed sqlite_column(resource result,mixed index_or_name[,bool decode_binary])&lt;/P&gt;&lt;P&gt;결과 레코드셋에서 포인터가 가리키는 레코드의 특정 필드값을 반환한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;bool sqlite_seek(resource result,int rownum)&lt;/P&gt;&lt;P&gt;결과 레코드셋에서 포인터의 위치를 특정한 위치의 레코드로 이동시킨다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;resource sqlite_unbuffered_query(resource dbhandle,string query[,int result_type])&lt;/P&gt;&lt;P&gt;SQL문을 실행하고 버퍼링 되지 않은 결과 레코드셋을 반환한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void sqlite_create_function(resource dbhandle,string function_name,callback callback[,int num_args])&lt;/P&gt;&lt;P&gt;SQL문에서 사용할 수 있는 표준 함수를 등록한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;자세한 사항은 여기서&lt;/P&gt;&lt;P&gt;&lt;A href="http://sqlite.org" target=_blank&gt;http://sqlite.org&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1434840670746575596?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1434840670746575596/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/sqlite.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1434840670746575596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1434840670746575596'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/sqlite.html' title='SQLite'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2780598521476055744</id><published>2009-07-31T11:22:00.000+09:00</published><updated>2011-01-30T14:08:30.971+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='디비'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>SQLite의 특징</title><content type='html'>&lt;P&gt;1.SQLite는 텍스트 파일 기반의 데이터베이스이다.&lt;/P&gt;&lt;P&gt;2.파일 시스템에 의한 방법 외에는 데이터베이스에 대한 접근을 제어할 수 있는 방법이 없다.&lt;/P&gt;&lt;P&gt;3.다른서버로의 이식성이 뛰어나다.&lt;/P&gt;&lt;P&gt;4.표준SQL 규약인 SQL92의 거의 대부분을 지원한다.&lt;/P&gt;&lt;P&gt;5.기존의 전통적인 데이터베이스 시스템에 비해 처리 속도가 빠르다.&lt;/P&gt;&lt;P&gt;6.트래픽이 많이 않은 중소규모의 사이트에서 주로 검색을 위한 프로그램을 개발할 때 적합하다.&lt;/P&gt;&lt;P&gt;7.PHP5를 설치할때 기본 제공되므로 별도로 라이브러리나 서버 프로그램을 설치할 필요가 없다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-옛날에 임베디드 DB를 이걸로 썼는데 완전 삽질했던 기억이 나는 DB-&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2780598521476055744?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2780598521476055744/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/sqlite%EC%9D%98-%ED%8A%B9%EC%A7%95.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2780598521476055744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2780598521476055744'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/sqlite%EC%9D%98-%ED%8A%B9%EC%A7%95.html' title='SQLite의 특징'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-9082702459884760174</id><published>2009-07-29T18:40:00.000+09:00</published><updated>2011-01-30T14:08:30.880+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>Ajax의 주요 특징</title><content type='html'>&lt;P&gt;1. 소규모 서버 측 이벤트: 이제 웹 애플리게이션은 서버에 소규모 데이터만 요청하고 필요한 정보를 받아오고 DOM 트리를 조작하여 페이지 모양을 변경할 수 있다. 전체 페이지를 새로 받아올 필요는 없다.&lt;/P&gt;&lt;P&gt;2. 비동기 방식: 서버로 요청 보내는 일이 브라우저를 멈추게 만들지 않는다. 요청을 처리하는 동안 사용자는 애플리케이션의 다른 부분을 계속 사용할 수 있다. 보통 UI를 업데이트함으로써 사용자에게 서버로 요청을 보내는 것을 알린다.&lt;/P&gt;&lt;P&gt;3. 언제든지: 최신 부라우저는 운영체제가 제공하는 사용자 이벤트와 동등한 수준의 이벤트를 잡아낼 수 있다. 마우스 클릭, 마우스 오버, 키 눌림 등. 어떠한 사용자 이벤트도 비동기 요청을 만들어 낼 수 있다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-실전 AJAX-&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-9082702459884760174?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/9082702459884760174/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/ajax%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/9082702459884760174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/9082702459884760174'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/ajax%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95.html' title='Ajax의 주요 특징'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-8034905921856434465</id><published>2009-07-29T17:40:00.000+09:00</published><updated>2011-01-30T14:08:30.827+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>simpleXML API</title><content type='html'>&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 450px; HEIGHT: 40px; BORDER-TOP: medium none; BORDER-RIGHT: medium none" cellSpacing=1 cellPadding=0 bgColor=#aaaaaa&gt;&lt;TBODY&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;함수명&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;object simplexml_load_string(string data[,string class_name[,int options]])&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;object simplexml_load_file(string filename[,string class_name[,int options]])&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;SimpleXMLElement simple_element-&amp;gt;children([string nsperfix])&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;attribute()&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;array SimpleXMLElement-&amp;gt;xpath(string path)&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;string SimpleXMLElement-&amp;gt;asXML(void)&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;SimpleXMLElement simplexml_import_dom(DOMNode node[,string class_name])&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;DOMElement dom_import_simplexml(SimpleXmlElement node)&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-8034905921856434465?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/8034905921856434465/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/simplexml-api.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8034905921856434465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8034905921856434465'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/simplexml-api.html' title='simpleXML API'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-8676114004430412649</id><published>2009-07-28T16:58:00.000+09:00</published><updated>2011-01-30T14:08:30.709+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>뒤죽 박죽~~</title><content type='html'>늘 생각하는거지만 내 머리속엔 모가 들었을까?? &lt;br /&gt;항상 이 생각 저 생각만 한다.&lt;br /&gt;정리되지 않은 생각들이 이리저리 떠다닌다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-8676114004430412649?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/8676114004430412649/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/%EB%92%A4%EC%A3%BD-%EB%B0%95%EC%A3%BD.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8676114004430412649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/8676114004430412649'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/%EB%92%A4%EC%A3%BD-%EB%B0%95%EC%A3%BD.html' title='뒤죽 박죽~~'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1588476974363927584</id><published>2009-07-28T16:51:00.000+09:00</published><updated>2011-01-30T14:08:30.656+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='책'/><title type='text'>이기적 유전자에 대하여</title><content type='html'>이기적 유전자를 읽고..&lt;br /&gt;&lt;br /&gt;현재 읽고 있는 책 중에 하나이다. &lt;br /&gt;생명체에 대한 다른 관점으로 나를 이끌어 주는 한권의 도서이다..&lt;br /&gt;물론 내 전공이 생물학이 아닌여서 때론 잘 이해가 안가는 용어가 많이 있지만 그 내용이나 사상은 참 참신하다.. 때론 이 책이 1~20년 이전의 책이라는대 놀라곤한다. &lt;br /&gt;생명체는 자신의 최대 이익을 위하여 진화를 한다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1588476974363927584?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1588476974363927584/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/%EC%9D%B4%EA%B8%B0%EC%A0%81-%EC%9C%A0%EC%A0%84%EC%9E%90%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1588476974363927584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1588476974363927584'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/%EC%9D%B4%EA%B8%B0%EC%A0%81-%EC%9C%A0%EC%A0%84%EC%9E%90%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC.html' title='이기적 유전자에 대하여'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-531844056373366061</id><published>2009-07-27T17:40:00.000+09:00</published><updated>2011-01-30T14:08:30.533+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>DOMDocument 클래스 메소드</title><content type='html'>&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 450px; HEIGHT: 40px; BORDER-TOP: medium none; BORDER-RIGHT: medium none" cellSpacing=1 cellPadding=0 bgColor=#aaaaaa&gt;&lt;TBODY&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;메소드 이름&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;설명&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;loadXML()&lt;/TD&gt;&lt;TD width=135&gt;문자열 변수를 통해서 XML문서를 불러온다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;saveXML()&lt;/TD&gt;&lt;TD width=135&gt;DOM트리를 XML문서로 변환한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;load()&lt;/TD&gt;&lt;TD width=135&gt;파일로부터 XML 문서를 불러온다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;save()&lt;/TD&gt;&lt;TD width=135&gt;DOM 트리를 XML 파일로 저장한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;validate()&lt;/TD&gt;&lt;TD width=135&gt;DTD에 따라 XML문서의 유효성 여부를 검증한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;schemaValidate()&lt;/TD&gt;&lt;TD width=135&gt;XML 스키마에 따라 XML 문서의 유효성을 검증한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;schemaValidateSource()&lt;/TD&gt;&lt;TD width=135&gt;XML 스키마에 따라 XML 문서의 유효성을 검증한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;createElement()&lt;/TD&gt;&lt;TD width=135&gt;새로운 앨리먼트 노드를 생성한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;createTextNode()&lt;/TD&gt;&lt;TD width=135&gt;새로운 텍스트 노드를 생성한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;createAttribute()&lt;/TD&gt;&lt;TD width=135&gt;새로운 속성 노드를 생성한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;createElementNS()&lt;/TD&gt;&lt;TD width=135&gt;네임스페이스 영역을 갖는 앨리먼트 노드를 생성한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;createAttributeNS()&lt;/TD&gt;&lt;TD width=135&gt;네임스페이스 영역을 갖는 속성 노드를 생성한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;createComment() &lt;/TD&gt;&lt;TD width=135&gt;새로운 주석 노드를 생성한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;createCDATASection()&lt;/TD&gt;&lt;TD width=135&gt;새로운 CDATA섹션 노드를 생성한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;getElementsByTagName()&lt;/TD&gt;&lt;TD width=135&gt;지정한 태그명을 앨리먼트의 노드 리스트를 반환한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;getElementsByTagNameNS()&lt;/TD&gt;&lt;TD width=135&gt;특정한 네임스페이스 영역에서 지정한 태그명을 갖는 앨리먼트의 노드 리스트를 반환한다. &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;importNode&lt;/TD&gt;&lt;TD width=135&gt;XML 문서에 붙일 특정 노드를 가져온다. &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-531844056373366061?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/531844056373366061/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/domdocument-%ED%81%B4%EB%9E%98%EC%8A%A4-%EB%A9%94%EC%86%8C%EB%93%9C.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/531844056373366061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/531844056373366061'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/domdocument-%ED%81%B4%EB%9E%98%EC%8A%A4-%EB%A9%94%EC%86%8C%EB%93%9C.html' title='DOMDocument 클래스 메소드'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-7723189439141658429</id><published>2009-07-27T16:18:00.000+09:00</published><updated>2011-01-30T14:08:30.492+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>xml 문서 파싱중 호출 가능한 핸들러</title><content type='html'>&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 450px; HEIGHT: 40px; BORDER-TOP: medium none; BORDER-RIGHT: medium none" cellSpacing=1 cellPadding=0 bgColor=#aaaaaa&gt;&lt;TBODY&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;핸들러 설정 함수&lt;/TD&gt;&lt;TD width=135&gt;설정 가능한 이벤트 핸들러 &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;xml_set_element_handler&lt;/TD&gt;&lt;TD width=135&gt;xml 파서가 시작 태크 및 마침태그를 발견했을때 호출되는 핸들러 &lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;xml_set_character_data_handler&lt;/TD&gt;&lt;TD width=135&gt;시작 태그 및 마침 태그 사이에 존재하는 문서 데이터를 발견했을 때 호출되는 핸들러&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;xml_set_processing_instruction_handler&lt;/TD&gt;&lt;TD width=135&gt;처리지시문을 발견했을 때 호출되는 핸들러&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;xml_set_external_entity_ref_handler&lt;/TD&gt;&lt;TD width=135&gt;파싱 가능한 외부 엔티티 참조문을 발견했을 때 호출되는 핸들러&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;xml_set_unparsed_entity_decl_handler&lt;/TD&gt;&lt;TD width=135&gt;파싱 불가능한 외부 엔티티 선언문을 발견했을때 호출되는 핸들러&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;xml_set_notation_decl_handler&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp;노테이션 선언문을 발견했을 때 호출되는 핸들러&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;-이승혁의 PHP5 웹프로그래밍 가이드-에서&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-7723189439141658429?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/7723189439141658429/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/xml-%EB%AC%B8%EC%84%9C-%ED%8C%8C%EC%8B%B1%EC%A4%91-%ED%98%B8%EC%B6%9C-%EA%B0%80%EB%8A%A5%ED%95%9C-%ED%95%B8%EB%93%A4%EB%9F%AC.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7723189439141658429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/7723189439141658429'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/xml-%EB%AC%B8%EC%84%9C-%ED%8C%8C%EC%8B%B1%EC%A4%91-%ED%98%B8%EC%B6%9C-%EA%B0%80%EB%8A%A5%ED%95%9C-%ED%95%B8%EB%93%A4%EB%9F%AC.html' title='xml 문서 파싱중 호출 가능한 핸들러'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-6096110557094406703</id><published>2009-07-02T15:54:00.000+09:00</published><updated>2011-01-30T14:08:30.445+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='플밍'/><title type='text'>Ajax에 대하여 - 자바스크립트 완벽가이드</title><content type='html'>Ajax 애플리케이션을 만들어내는 데에 있어 가장 큰 어려움은 기술적인 문제가 아니다. Ajax의 핵심 기술은 이미 충분히 성숙해 있고 안정적이며 널리 공감대가 형성되어 있다. 그 어려움이란 바로 이러한 애플리케이션을 설계할 사람들에게 있다. 그들은 웹의 한계나 제한에 대해서 지금까지 알고 있다고 생각해왔던 것들을 잊어야 한다. 그 대신, 이제 더 넓고 풍부한 가능성에 대해 상상의 나래를 펴쳐야 할 때다. 점점 더 재미 있어지려 한다.&lt;br /&gt;-자바스크립트 완벽가이드-&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-6096110557094406703?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/6096110557094406703/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/ajax%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6096110557094406703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/6096110557094406703'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/ajax%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C.html' title='Ajax에 대하여 - 자바스크립트 완벽가이드'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1412989374662461845</id><published>2009-07-02T13:39:00.000+09:00</published><updated>2011-01-30T14:08:30.392+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='책'/><title type='text'>미쳐아 미친다를 보고</title><content type='html'>지금 보고 있는 책이에요...&lt;br /&gt;조선시대의 괴짜들에 관한 책입니다..&lt;br /&gt;참 참신하고 좋은거 같아서 추천합니다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1412989374662461845?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1412989374662461845/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/%EB%AF%B8%EC%B3%90%EC%95%84-%EB%AF%B8%EC%B9%9C%EB%8B%A4%EB%A5%BC-%EB%B3%B4%EA%B3%A0.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1412989374662461845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1412989374662461845'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/%EB%AF%B8%EC%B3%90%EC%95%84-%EB%AF%B8%EC%B9%9C%EB%8B%A4%EB%A5%BC-%EB%B3%B4%EA%B3%A0.html' title='미쳐아 미친다를 보고'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-2875390476167474899</id><published>2009-07-02T10:44:00.000+09:00</published><updated>2011-01-30T14:08:30.342+09:00</updated><title type='text'>코드소스 재 발행입니다..</title><content type='html'>&amp;lt;div id='tp_widget_title_[##_article_rep_id_##]' style="display:none"&amp;gt;[##_article_rep_title_##]&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;script type='text/javascript'&amp;gt;&lt;br /&gt;var _title=null;&lt;br /&gt;_title=encodeURIComponent(document.getElementById('tp_widget_title_[##_article_rep_id_##]').innerText);&lt;br /&gt;if(_title=="undefined"){_title=encodeURIComponent(document.getElementById('tp_widget_title_[##_article_rep_id_##]').textContent);}&lt;br /&gt;//_title=_title.replace(new RegExp("&amp;lt;(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^&amp;gt;]*)?(\\s)*(/)?&amp;gt;","gim"), "");&lt;br /&gt;document.write("&amp;lt;scr"+"ipt type='text/javascript' src='http://tocpic.com/a/widget/loader?&amp;amp;_height=116&amp;amp;_width=400&amp;amp;a_id=[##_article_rep_id_##]&amp;amp;a_title="+escape(_title)+"'&amp;gt;&amp;lt;/scr"+"ipt&amp;gt;");&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;죄송합니다. 타이틀 때문에 많은 버그가 발생하여 부득히 하게 코드를 수정하게 되었습니다.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-2875390476167474899?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/2875390476167474899/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/%EC%BD%94%EB%93%9C%EC%86%8C%EC%8A%A4-%EC%9E%AC-%EB%B0%9C%ED%96%89%EC%9E%85%EB%8B%88%EB%8B%A4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2875390476167474899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/2875390476167474899'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/07/%EC%BD%94%EB%93%9C%EC%86%8C%EC%8A%A4-%EC%9E%AC-%EB%B0%9C%ED%96%89%EC%9E%85%EB%8B%88%EB%8B%A4.html' title='코드소스 재 발행입니다..'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1637829372025192962</id><published>2009-06-24T10:56:00.000+09:00</published><updated>2011-01-30T14:08:30.291+09:00</updated><title type='text'>위젯 소스 입니다.</title><content type='html'>&lt;code&gt;&amp;lt;script type='text/javascript'&amp;gt;&lt;br /&gt;var _title = '[##_article_rep_title_##]';&lt;br /&gt;_title=_title.replace(new RegExp("&amp;lt;(/)?([a-zA-Z]*)(&lt;a href="file://s%5Ba-za-z%5D*=%5B%5e%3e%5D*%29/?%28%5C%5Cs%29*%28/%29?%3E%22,%22gim"&gt;\\s[a-zA-Z]*=[^&amp;gt;]*)?(\\s)*(/)?&amp;gt;","gim&lt;/a&gt;"), "");&lt;br /&gt;document.write("&amp;lt;scr"+"ipt type='text/javascript' src='http://rommor.com:8765/a/widget/loader?&amp;amp;_height=116&amp;amp;_width=400&amp;amp;a_id=[##_article_rep_id_##]&amp;amp;a_title="+escape(_title)+"'&amp;gt;&amp;lt;/scr"+"ipt&amp;gt;");&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1637829372025192962?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1637829372025192962/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/06/%EC%9C%84%EC%A0%AF-%EC%86%8C%EC%8A%A4-%EC%9E%85%EB%8B%88%EB%8B%A4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1637829372025192962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1637829372025192962'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/06/%EC%9C%84%EC%A0%AF-%EC%86%8C%EC%8A%A4-%EC%9E%85%EB%8B%88%EB%8B%A4.html' title='위젯 소스 입니다.'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-1673198190626850593</id><published>2009-06-23T17:02:00.000+09:00</published><updated>2011-01-30T14:08:30.241+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='책'/><title type='text'>넛지</title><content type='html'>넛지라는 책 보는데..&lt;br /&gt;뒷부분은 좀 구리내요&lt;br /&gt;팔꿈치로 사람을 콕콕 찌르다라는 어원에서 시작한 이책..&lt;br /&gt;세상을 움직이는것을 기록하고 있다. &lt;br /&gt;물론 사람을 움직이려면 특정한 인센티브가 있어야 한다고 생각한다.&lt;br /&gt;넛지는 이를 통해 같지 않은 인센티브를  주면서 같은 행동을 하도록 한다. &lt;br /&gt;마치 두화합물 결합에 있어서 특정한 에너지 이상의 에너지가 필요하지만 특별한 화합물 즉 촉매를 사용하면 이 특정 에너지를 변화 시킬수 있다. 넛지란 바로 이 촉매에 대해 배우는것 같다. 나에게 있어서 참 의미 있는 책중에 하나로 기억될 것 같다.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-1673198190626850593?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/1673198190626850593/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/06/%EB%84%9B%EC%A7%80.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1673198190626850593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/1673198190626850593'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/06/%EB%84%9B%EC%A7%80.html' title='넛지'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4671396260831057716.post-4854314349957745651</id><published>2009-06-03T16:51:00.000+09:00</published><updated>2011-01-30T14:08:30.150+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='생각들'/><title type='text'>멍!!</title><content type='html'>&lt;p&gt;&lt;font size="500"&gt;멍~~&lt;/font&gt;&lt;/p&gt;&lt;p&gt;인생이 그냥 멍하다~~ 딴생각만 하는거 같어~&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4671396260831057716-4854314349957745651?l=youall-textcube.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://youall-textcube.blogspot.com/feeds/4854314349957745651/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://youall-textcube.blogspot.com/2009/06/%EB%A9%8D.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4854314349957745651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4671396260831057716/posts/default/4854314349957745651'/><link rel='alternate' type='text/html' href='http://youall-textcube.blogspot.com/2009/06/%EB%A9%8D.html' title='멍!!'/><author><name>youall</name><uri>http://www.blogger.com/profile/05830025194336892398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
