<?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-1946138886667006027</id><updated>2011-11-27T17:14:31.313-08:00</updated><title type='text'>Javanese</title><subtitle type='html'>For an idle javanese</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default?start-index=101&amp;max-results=100'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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>102</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1946138886667006027.post-4481027667946116758</id><published>2010-01-04T23:30:00.000-08:00</published><updated>2010-01-05T04:43:57.005-08:00</updated><title type='text'>SVN 설정</title><content type='html'>개발 하려면 저장소는 혼자 하나 여럿이 하나 필요하기 마련이다.&lt;br /&gt;1. 적당한 SVN 호스트 서비스에 가입&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Code Project (Google)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tigris.org/"&gt;Tigris&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SourceForge&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.xp-dev.com/"&gt;xp-dev&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;이중 xp-deb 사용 중 이유는 private 프로젝트 무료 서비스가 있어서(200m limit).&lt;/p&gt;2.  SVN Client 설치&lt;br /&gt;&lt;ul&gt;&lt;li&gt;eclipes 플러그인(subclipse) 설치 방법은 &lt;a href="http://mainia.tistory.com/440"&gt;이곳&lt;/a&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/1946138886667006027-4481027667946116758?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4481027667946116758/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4481027667946116758' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4481027667946116758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4481027667946116758'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2010/01/svn.html' title='SVN 설정'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7335463837629795444</id><published>2010-01-04T23:09:00.000-08:00</published><updated>2010-01-04T23:15:56.410-08:00</updated><title type='text'>Eclipse error : JVM terminated. Exit code=-1</title><content type='html'>"JVM terminated. Exit code=-1" 이라는 메시지와 함께 ide가 실행이 안되는 경우가 있다.&lt;br /&gt;전부터 심심치 않게 있었던 오류. 메모리 관리에 문제가 있어서 생기는 현상으로 &lt;strong&gt;ini파일을 수정 &lt;/strong&gt;함으로써 해결 가능하다.&lt;br /&gt;&lt;br /&gt;1. 메모리 설정을 줄이거나 지우기&lt;br /&gt;2. vm을 직접 설정 하기&lt;br /&gt;&lt;br /&gt;-startup&lt;br /&gt;plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar&lt;br /&gt;--launcher.library&lt;br /&gt;plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519&lt;br /&gt;-product&lt;br /&gt;org.eclipse.epp.package.jee.product&lt;br /&gt;--launcher.XXMaxPermSize&lt;br /&gt;256M&lt;br /&gt;-showsplash&lt;br /&gt;org.eclipse.platform&lt;br /&gt;--launcher.XXMaxPermSize&lt;br /&gt;&lt;strong&gt;256m&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;-vm&lt;br /&gt;C:\Program Files\Java\jdk1.6.0_17\bin\javaw.exe&lt;/strong&gt;-vmargs&lt;br /&gt;-Dosgi.requiredJavaVersion=1.5&lt;br /&gt;-Xms40m&lt;br /&gt;-Xmx512m&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7335463837629795444?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7335463837629795444/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7335463837629795444' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7335463837629795444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7335463837629795444'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2010/01/eclipse-error-jvm-terminated-exit-code.html' title='Eclipse error : JVM terminated. Exit code=-1'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3571916649997598818</id><published>2010-01-03T23:19:00.000-08:00</published><updated>2010-01-04T00:47:51.984-08:00</updated><title type='text'>Develope in Google Web App</title><content type='html'>&lt;div&gt;Thank you for Google~&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;별다른 설정이나 장비 없이 자바만 깔려 있다면 구글의 힘을 빌어 어떠한 서비스라도 만들어 낼 수 있게 되었다.  물론 일정량 이상의 트레픽에 대해서 요금을 지불해야 하지만.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;1. install Java SDK&lt;br /&gt;2. install &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;&lt;br /&gt;3. Read this &lt;a href="http://www.ibm.com/developerworks/kr/views/java/libraryview.jsp?sort_by=Date&amp;amp;show_abstract=true&amp;amp;show_all=false&amp;amp;search_flag=&amp;amp;topic_by=%EB%AA%A8%EB%93%A0+%EC%A3%BC%EC%A0%9C+%EB%B0%8F+%EA%B4%80%EB%A0%A8+%EC%A0%9C%ED%92%88&amp;amp;type_by=%EB%AA%A8%EB%93%A0+%EC%A2%85%EB%A5%98&amp;amp;search_by=Google+App+Engine+for+Java&amp;amp;%EA%B0%80%EA%B8%B0.x=10&amp;amp;%EA%B0%80%EA%B8%B0.y=6"&gt;article&lt;/a&gt; by IBM&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-3571916649997598818?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3571916649997598818/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3571916649997598818' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3571916649997598818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3571916649997598818'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2010/01/develope-in-google-web-app.html' title='Develope in Google Web App'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-5884458464005397732</id><published>2009-09-30T00:20:00.000-07:00</published><updated>2009-09-30T00:21:41.342-07:00</updated><title type='text'>HTML: HTML 5</title><content type='html'>&lt;a href="http://vimeo.com/6691519"&gt;http://vimeo.com/6691519&lt;/a&gt;&lt;br /&gt;ie만 사라지면 아름다운 세상이 될듯...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5884458464005397732?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5884458464005397732/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5884458464005397732' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5884458464005397732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5884458464005397732'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/09/html-html-5.html' title='HTML: HTML 5'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7343953769339147165</id><published>2009-09-12T01:03:00.001-07:00</published><updated>2009-09-12T01:03:34.390-07:00</updated><title type='text'>java : regex</title><content type='html'>http://litlhope.springnote.com/pages/1786498&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7343953769339147165?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7343953769339147165/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7343953769339147165' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7343953769339147165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7343953769339147165'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/09/java-regex.html' title='java : regex'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-8402712368595649276</id><published>2009-09-10T00:41:00.000-07:00</published><updated>2009-09-10T00:42:18.547-07:00</updated><title type='text'>LINUX : vi 명령어</title><content type='html'>http://omen666.tistory.com/106&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-8402712368595649276?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/8402712368595649276/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=8402712368595649276' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8402712368595649276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8402712368595649276'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/09/linux-vi.html' title='LINUX : vi 명령어'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3050025013956475843</id><published>2009-09-03T17:48:00.000-07:00</published><updated>2009-09-03T17:49:37.047-07:00</updated><title type='text'>ORACLE : SYS_CONNECT_BY_PATH</title><content type='html'>순환쿼리를 이용해서 row를 합치거나 계층구조로 보여 줄 수 있다.&lt;br /&gt;&lt;br /&gt;http://notgivuphil.tistory.com/tag/SYS_CONNECT_BY_PATH&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-3050025013956475843?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3050025013956475843/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3050025013956475843' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3050025013956475843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3050025013956475843'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/09/oracle.html' title='ORACLE : SYS_CONNECT_BY_PATH'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-8469385071910478256</id><published>2009-09-01T01:30:00.000-07:00</published><updated>2009-09-01T01:35:31.722-07:00</updated><title type='text'>XML : xstream 에서 double underscore 처리</title><content type='html'>XmlFriendlyReplacer xfr = new XmlFriendlyReplacer("_", "_");&lt;br /&gt;XStream xstream = new XStream(new DomDriver("UTF-8", xfr));&lt;br /&gt;&lt;br /&gt;이런식으로 리플레이서를 바꿔서 사용 할 수 있다.&lt;br /&gt;&lt;br /&gt;참조 : http://jira.codehaus.org/browse/GRAILS-4167&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-8469385071910478256?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/8469385071910478256/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=8469385071910478256' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8469385071910478256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8469385071910478256'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/09/xml-xstream-double-underscore.html' title='XML : xstream 에서 double underscore 처리'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-761126103786418682</id><published>2009-08-28T01:27:00.000-07:00</published><updated>2009-09-01T01:30:44.976-07:00</updated><title type='text'>LINUX: host 변경</title><content type='html'>vi /etc/hosts&lt;br /&gt;&lt;br /&gt;맨날 잊어 먹는다..;;&lt;br /&gt;&lt;br /&gt;telnet &lt;a href="http://www.naver.com/"&gt;www.naver.com&lt;/a&gt; 80&lt;br /&gt;&lt;br /&gt;/GET /test/test.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-761126103786418682?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/761126103786418682/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=761126103786418682' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/761126103786418682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/761126103786418682'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/08/linux-host.html' title='LINUX: host 변경'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1604937598386729371</id><published>2009-06-23T01:25:00.000-07:00</published><updated>2009-06-23T01:26:20.151-07:00</updated><title type='text'>아파치 톰켓 연동</title><content type='html'>http://openframework.or.kr/Wiki.jsp?page=Apache_tomcat_using_jk_on_linux&lt;br /&gt;&lt;br /&gt;아파치 + 톰켓 (mod_jk)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1604937598386729371?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1604937598386729371/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1604937598386729371' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1604937598386729371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1604937598386729371'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/06/blog-post.html' title='아파치 톰켓 연동'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-5203947340087640595</id><published>2009-06-04T00:59:00.000-07:00</published><updated>2009-06-04T01:00:30.154-07:00</updated><title type='text'>.net : sql server 설치</title><content type='html'>&lt;a href="http://spadework.co.kr/72"&gt;http://spadework.co.kr/72&lt;/a&gt;&lt;br /&gt;일단 DB 부터 설치 시작&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5203947340087640595?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5203947340087640595/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5203947340087640595' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5203947340087640595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5203947340087640595'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/06/net-sql-server.html' title='.net : sql server 설치'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3104943953653239242</id><published>2009-04-12T18:00:00.000-07:00</published><updated>2009-04-12T18:07:00.843-07:00</updated><title type='text'>AXIS: soap logging with log4j</title><content type='html'>client-config.wsdd로 soap로그를 남기는 것이 가능해졌지만 org.apache.axis.handlers.LogHandler는 common-logging을 사용하는 관계로 맘에 들지 않는다.&lt;br /&gt;import org.apache.axis.handlers.BasicHandler를 상속받거나 handler를 구성(implement- 이건 한글로 뭐라 해야 되는지 항상 고민된다.)하면 간단하게 적용시킬 수 있다.&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;br /&gt;public class AxisLogHandler extends BasicHandler{ &lt;br /&gt; Logger logger = Logger.getLogger(AxisLogHandler.class);&lt;br /&gt; public void invoke(MessageContext messageContext) throws AxisFault {&lt;br /&gt; try{ &lt;br /&gt;  logger.info(messageContext.getMessage().getSOAPBody() );&lt;br /&gt; } catch (SOAPException e) { .....} }&lt;br /&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;대충 이정도만 해도 대충은 ... 쓸만하다.&lt;br /&gt;구현 후 client-config.wsdd를 수정해 주면 된다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-3104943953653239242?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3104943953653239242/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3104943953653239242' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3104943953653239242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3104943953653239242'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/04/axis-soap-logging-with-log4j.html' title='AXIS: soap logging with log4j'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7451948493462731582</id><published>2009-04-10T04:51:00.000-07:00</published><updated>2009-09-18T01:55:28.281-07:00</updated><title type='text'>LOG4J: log4j.properties 설정</title><content type='html'>프로퍼티 파일 위치는 class 폴더 (WEB-INF/class 같은) 또는 java  -Dlog4j.configuration=file:/home/httpd/html/log4j.properties 같이 직접 지정.(http.sh 파일 등에)&lt;br /&gt;&lt;br /&gt;log4j.rootLogger=DEBUG, stdout &lt;br /&gt;log4j.logger.foo.boo=INFO, serviceInfo, serviceWarn, mail&lt;br /&gt;&lt;br /&gt;#Console Log&lt;br /&gt;log4j.appender.stdout=org.apache.log4j.ConsoleAppender&lt;br /&gt;log4j.appender.stdout.Threshold=INFO&lt;br /&gt;log4j.appender.stdout.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.stdout.layout.ConversionPattern=%-5p at %C{3}.%M(%13F:%L) %3x - %m%n&lt;br /&gt;#info level File Log &lt;br /&gt;log4j.appender.serviceInfo=org.apache.log4j.DailyRollingFileAppender&lt;br /&gt;log4j.appender.serviceInfo.Threshold=INFO&lt;br /&gt;log4j.appender.serviceInfo.File=/home/httpd/log/interpark/serviceInfo.log&lt;br /&gt;log4j.appender.serviceInfo.DatePattern='.'yyyy-MM-dd&lt;br /&gt;log4j.appender.serviceInfo.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.serviceInfo.layout.ConversionPattern=[%d] %-5p at %C{3}.%M(%13F:%L) %3x - %m%n&lt;br /&gt;#debug level File Log &lt;br /&gt;log4j.appender.serviceWarn=org.apache.log4j.DailyRollingFileAppender&lt;br /&gt;log4j.appender.serviceWarn.Threshold=WARN&lt;br /&gt;log4j.appender.serviceWarn.File=/home/httpd/log/interpark/serviceWARN.log&lt;br /&gt;log4j.appender.serviceWarn.DatePattern='.'yyyy-MM-dd&lt;br /&gt;log4j.appender.serviceWarn.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.serviceWarn.layout.ConversionPattern=[%d] %-5p at %C{3}.%M(%13F:%L) %3x - %m%n&lt;br /&gt;#mail는 SMTPAppender(SMTP 메일)에 출력    &lt;br /&gt;log4j.appender.mail=org.apache.log4j.net.SMTPAppender    &lt;br /&gt;log4j.appender.mail.Threshold=ERROR&lt;br /&gt;log4j.appender.mail.BufferSize=512    &lt;br /&gt;log4j.appender.mail.SMTPHost=mail.foo.co.kr    &lt;br /&gt;log4j.appender.mail.SMTPUsername=foo    &lt;br /&gt;log4j.appender.mail.SMTPPassword=boo    &lt;br /&gt;log4j.appender.mail.TimeFrame=30    &lt;br /&gt;log4j.appender.mail.MaxEMails=10    &lt;br /&gt;log4j.appender.mail.From=foo@foo.co.kr   &lt;br /&gt;log4j.appender.mail.To=boo@boo.co.kr&lt;br /&gt;log4j.appender.mail.Subject=장애 안내&lt;br /&gt;log4j.appender.mail.layout=org.apache.log4j.PatternLayout    &lt;br /&gt;log4j.appender.mail.layout.ConversionPattern=%d{ISO8601} %5p [%t] (%F:%L) - %m%n&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7451948493462731582?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7451948493462731582/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7451948493462731582' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7451948493462731582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7451948493462731582'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/04/log4j-log4jproperties.html' title='LOG4J: log4j.properties 설정'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-8066258568254881634</id><published>2009-04-10T04:48:00.000-07:00</published><updated>2009-04-10T04:51:14.074-07:00</updated><title type='text'>AXIS: XML LOG 기록</title><content type='html'>디버깅을 위해 요청 및 응답을 통해 생성되는 XML 코드를 캡처해야 하는 경우가 종종 있습니다. Java(Axis 사용), Python 및 Perl에서 생성된 XML을 캡처하는 방법은 다음과 같습니다. &lt;br /&gt;&lt;br /&gt;Java - XML 결과물을 Apache Axis로 캡처&lt;br /&gt;해당 파일을 Axis 클라이언트의 작업 디렉토리에 client-config.wsdd라는 이름으로 저장합니다. Axis에서 해당 파일을 자동으로 로드합니다. 아래와 같이 구성하면 Axis에서 모든 수신 및 전송 XML을 axis.log라는 파일로 저장합니다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- 해당 파일을 Axis 클라이언트의 작업 디렉토리에 "client-config.wsdd"라는 이름으로&lt;br /&gt;저장합니다. Axis에서 해당 파일을 자동으로 로드합니다. 아래와&lt;br /&gt;같이 구성하면 Axis에서 모든 수신 및 전송&lt;br /&gt;XML을 "axis.log"라는 파일로 저장합니다.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;deployment &lt;br /&gt;xmlns="http://xml.apache.org/axis/wsdd/" &lt;br /&gt;xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;handler name="log" type="java:org.apache.axis.handlers.LogHandler"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;globalConfiguration&amp;gt;&lt;br /&gt;&amp;lt;requestFlow&amp;gt;&lt;br /&gt;&amp;lt;handler type="log"/&amp;gt;&lt;br /&gt;&amp;lt;/requestFlow&amp;gt;&lt;br /&gt;&amp;lt;responseFlow&amp;gt;&lt;br /&gt;&amp;lt;handler type="log"/&amp;gt;&lt;br /&gt;&amp;lt;/responseFlow&amp;gt;&lt;br /&gt;&amp;lt;/globalConfiguration&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;transport &lt;br /&gt;name="http" &lt;br /&gt;pivot="java:org.apache.axis.transport.http.HTTPSender"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/deployment&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-8066258568254881634?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/8066258568254881634/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=8066258568254881634' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8066258568254881634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8066258568254881634'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/04/axis-xml-log.html' title='AXIS: XML LOG 기록'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7713243027831636130</id><published>2009-03-05T16:07:00.000-08:00</published><updated>2009-03-05T16:08:26.451-08:00</updated><title type='text'>JSP: About Resin.conf</title><content type='html'>Resin.conf는 크게 아래와 같은 구조를 갖는다.&lt;br /&gt;일반적으로 resin.conf의 Depth는 아래의 예를 따른다.&lt;br /&gt;&lt;br /&gt;&amp;lt;caucho.com&amp;gt;&lt;br /&gt;&amp;lt;http-server&amp;gt;&lt;br /&gt;&amp;lt;host id=''&amp;gt;&lt;br /&gt;&amp;lt;web-app id='/'&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping url-pattern='/test' .../&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&amp;lt;/host&amp;gt;&lt;br /&gt;&amp;lt;/http-server&amp;gt;&lt;br /&gt;&amp;lt;/caucho.com&amp;gt;&lt;br /&gt;&lt;br /&gt;대부분의 중요한 설정은 web-app에 속해 있다.&lt;br /&gt;Server는 다수의 host element를 포함하며 각 host 는 다수의 web-app 들을 포함할 수 있다.&lt;br /&gt;각 host 는 가상host를 설정하고 각 web-app 는 application을 설정한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;caucho.com&amp;gt;&lt;br /&gt;&amp;lt;http-server&amp;gt;&lt;br /&gt;&amp;lt;host id='gryffindor.caucho.com' app-dir='gryffindor'&amp;gt;&lt;br /&gt;&amp;lt;web-app id='/'&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping .../&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;web-app id='/test' app-dir='/usr/local/test'&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&amp;lt;/host&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;host id='slytherin.caucho.com' app-dir='slytherin'&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/host&amp;gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/http-server&amp;gt;&lt;br /&gt;&amp;lt;/caucho.com&amp;gt;&lt;br /&gt;&lt;br /&gt;Simple configurations host 와web-app tag의 생략을 허용한다. 만약 host 와 web-app를&lt;br /&gt;생략한다면 default host 와 default application를 사용하게 되며 http-server element 의 모든 web-app에 동일한 설정을 적용하게 된다.&lt;br /&gt;&lt;br /&gt;&amp;lt;caucho.com&amp;gt;&lt;br /&gt;&amp;lt;http-server app-dir='/usr/local/web'&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping .../&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/http-server&amp;gt;&lt;br /&gt;&amp;lt;/caucho.com&amp;gt;&lt;br /&gt;&lt;br /&gt;1. &amp;lt;caucho.com&amp;gt;의 하위 엘리먼트&lt;br /&gt;&lt;br /&gt;&amp;lt;log id='/log' href='stderr:' timestamp='[%Y-%m-%d %H:%M:%S.%s]'/&amp;gt;&lt;br /&gt;로깅을 위한 설정부분이며 id별로 각기 다른 로그를 지정할 수 있다.&lt;br /&gt;rollover-count : 몇번의 로그변경을 보관할지 설정&lt;br /&gt;rollover-period : 로그변경 주기 설정&lt;br /&gt;ex&amp;gt; rollover-period=’1d’라고 설정하면 stderr.log.20050301의 형태로 매일 로그가 쌓이게 된다&lt;br /&gt;&lt;br /&gt;&amp;lt;security-provider id='com.sun.net.ssl.internal.ssl.Provider'/&amp;gt;&lt;br /&gt;JSSE(Java Secure Socket Extension)를 사용하기 위한 security-provider설정 부분으로 Caucho에서는 설정의 어려움과 성능 저하를 이유로 OpenSSL이나 SSL for Apache/IIS를 사용할 것을 권고하고 있으므로 특별한 경우가 아니면 사용하지 않는 것이 좋다.&lt;br /&gt;&lt;br /&gt;&amp;lt;java compiler="internal" compiler-args=""/&amp;gt;&lt;br /&gt;Compiler옵션으로 internal이 default이며 javac나 jikes등의 외부 컴파일러를 지정할 수 있다.&lt;br /&gt;&lt;br /&gt;&amp;lt;resource-ref&amp;gt;&lt;br /&gt;&amp;lt;res-ref-name&amp;gt;jdbc/test&amp;lt;/res-ref-name&amp;gt;&lt;br /&gt;&amp;lt;res-type&amp;gt;javax.sql.DataSource&amp;lt;/res-type&amp;gt;&lt;br /&gt;&amp;lt;init-param driver-name="com.caucho.jdbc.mysql.Driver"/&amp;gt;&lt;br /&gt;&amp;lt;init-param url="jdbc:mysql_caucho://localhost:3306/test"/&amp;gt;&lt;br /&gt;&amp;lt;init-param user=""/&amp;gt;&amp;lt;init-param password=""/&amp;gt;&lt;br /&gt;&amp;lt;init-param max-connections="20"/&amp;gt;&lt;br /&gt;&amp;lt;init-param max-idle-time="30"/&amp;gt;&lt;br /&gt;&amp;lt;/resource-ref&amp;gt;&lt;br /&gt;JNDI를 사용한 resin connection pool을 사용할 경우 설정이며 res-ref-name 은 pool name을 의미하며 그 외의 설정은 tag와 property를 참조한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;jsp precompile='true' static-encoding='true' recompile-on-error='true'/&amp;gt;&lt;br /&gt;jsp페이지를 precompile하도록 지정하여 다음 접속시 바로 이용할 수 있도록 한다.&lt;br /&gt;Recompile-on-error를 지정하여 jsp페이지를 compile시 java.lang.error가 발생하면 자동으로 recompile되도록 한다. Shift-JIS와 같은 인코딩을 이용해서 writing하고 UTF-8으로 printing하려면 static-encoding을 비활성시킨다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. &amp;lt;http-server&amp;gt;의 하위 엘리먼트&lt;br /&gt;&lt;br /&gt;&amp;lt;doc-dir&amp;gt;doc&amp;lt;/doc-dir&amp;gt;&lt;br /&gt;Server의 root file이 위치한 디렉토리를 지정한다.&lt;br /&gt;Apache : /usr/local/apache/htdocs, IIS : d:\inetpub\wwwroot로 변경하여 사용할 수 있다.&lt;br /&gt;&lt;br /&gt;&amp;lt;http port='8080'/&amp;gt;&lt;br /&gt;Resin을 Standalone으로 구동할 경우 사용할 http port를 지정한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;srun host='127.0.0.1' port='6802'/&amp;gt;&lt;br /&gt;Load balancing을 위해 Apache나 IIS에 plugin으로 Resin을 사용할 경우의 srun port를 지정한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;http port=8443&amp;gt;&lt;br /&gt;&amp;lt;ssl&amp;gt;true&amp;lt;/ssl&amp;gt;&lt;br /&gt;&amp;lt;key-store-type&amp;gt;pkcs12&amp;lt;/key-store-type&amp;gt;&lt;br /&gt;&amp;lt;key-store-file&amp;gt;keys/server_cert.p12&amp;lt;/key-store-file&amp;gt;&lt;br /&gt;&amp;lt;key-store-password&amp;gt;changeit&amp;lt;/key-store-password&amp;gt;&lt;br /&gt;&amp;lt;/http&amp;gt;&lt;br /&gt;SSL을 사용하는 경우 위와 같은 설정을 하며 아래의 내용을 포함한다.&lt;br /&gt;key-store-type : key store의 종류(ex:비밀키, 공개키 방식)&lt;br /&gt;key-store-file : key store 파일의 위치&lt;br /&gt;key-strore-password : key store파일 access password&lt;br /&gt;&lt;br /&gt;&amp;lt;user-name&amp;gt;resin&amp;lt;/user-name&amp;gt;&lt;br /&gt;&amp;lt;group-name&amp;gt;resin&amp;lt;/group-name&amp;gt;&lt;br /&gt;만약 Unix에서 bin/httpd.sh을 root로 구동할 경우 web server user를 위해 특정 Group name과 User name을 제공해야 한다. RedHat 9.0이후 Linux에서는 bin/resin을 사용해야 한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;class-update-interval&amp;gt;2s&amp;lt;/class-update-interval&amp;gt;&lt;br /&gt;사용자에 의해 class파일이 update됬는지 여부를 검사하는 주기이다. 이 주기에 따라 resin이 검사하므로 해당 주기를 줄이면 변경즉시 반영되므로 개발시 유용하나 서버에 부하가 가중되므로 운영시는 낮춰주는 것이 좋다.&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet-classloader-hack&amp;gt;false&amp;lt;/servlet-classloader-hack&amp;gt;&lt;br /&gt;True로 설정하면 Servlet spec 에 따른 classloader를 사용하고 false이면 JDK spec에 따른 classloader를 사용한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;error-page exception='connection' location='/my-error-page.html'/&amp;gt;Apache나 IIS를 이용할 시에 srun connection 실패시 표시할 error 페이지를 지정한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;caucho-status&amp;gt;true&amp;lt;/caucho-status&amp;gt;&lt;br /&gt;Caucho-status를 표시한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;thread-max&amp;gt;150&amp;lt;/thread-max&amp;gt;&lt;br /&gt;서버당 최대 thread갯수&lt;br /&gt;&lt;br /&gt;&amp;lt;thread-keepalive id='100'/&amp;gt;&lt;br /&gt;Keepalive할 trhead수.&lt;br /&gt;&lt;br /&gt;&amp;lt;request-timeout id='65s'/&amp;gt;&lt;br /&gt;Socket keepalive 시간. SSL을 사용하지 않는다면 짧게 하는 것이 성능에 좋다.&lt;br /&gt;&lt;br /&gt;&amp;lt;accept-buffer-size id='256'/&amp;gt;&lt;br /&gt;Accept buffer상의 socket 수&lt;br /&gt;&lt;br /&gt;&amp;lt;thread-min id='5'/&amp;gt;&lt;br /&gt;Socket에서 대기될 때 요청되는 최대 thread 수&lt;br /&gt;&lt;br /&gt;&amp;lt;ping sleep-time='1m' retry-count='3' retry-time='1s'&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://localhost:8080/ping/ping.jsp&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;/ping&amp;gt;&lt;br /&gt;web server 상태를 확인하기 위해 ping test를 하기 위한 설정이다.&lt;br /&gt;test결과 failuer가 발생하면 resin은 서버를 restart한다.&lt;br /&gt;해당 test를 위한 thread가 JDK와 같기 때문에 해당 Thread의 deadlocks이나 Database connection 증가로 인한 memory leak같은 경우는 catch할 수 없다.&lt;br /&gt;&lt;br /&gt;&amp;lt;ignore-client-disconnect&amp;gt;true&amp;lt;/ignore-client-disconnect&amp;gt;&lt;br /&gt;Browser를 disconnect할 때 발생하는 ClientDisconnectionExceptions을 무시한다&lt;br /&gt;&lt;br /&gt;&amp;lt;cache dir='cache' size='1024' entries='8192'/&amp;gt;&lt;br /&gt;internal caching을 가능하게 한다.&lt;br /&gt;Dir : cache가 적재될 directory&lt;br /&gt;size : memory size(kb)&lt;br /&gt;entries : entry의 전체 개수&lt;br /&gt;&lt;br /&gt;&amp;lt;cache-mapping url-pattern='/' expires='2s'/&amp;gt;&lt;br /&gt;Cache된 파일의 유효시간 일반적으로 운영중에는 15m으로 설정한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/&amp;gt;&lt;br /&gt;&amp;lt;host&amp;gt;외부의 servlet 설정이다. 이곳에 위치하면 모든 host에 적용된다.&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/&amp;gt;&lt;br /&gt;URL로부터 servlet명으로 invoke한다. 예를 들어 /examples/basic/servlet/HelloServlet 은 HelloServlet class로부터 시작한다. 일반적으로, 보안상 헛점이 생길 수 있으므로 개발중에만 사용하며 운영중에는 사용하지 않는다.&lt;br /&gt;&lt;br /&gt;&amp;lt;welcome-file-list&amp;gt;index.xtp, index.jsp, index.html&amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;시작페이지를 지정한다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. &amp;lt;host&amp;gt;의 하위 엘리먼트&lt;br /&gt;&lt;br /&gt;&amp;lt;access-log id='logs/access.log'&lt;br /&gt;format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'&lt;br /&gt;rollover-period='1W'/&amp;gt;&lt;br /&gt;&amp;lt;error-log id='logs/error.log'/&amp;gt;&lt;br /&gt;Resin 단독구동 시 로깅을 위한 내용이다.&lt;br /&gt;&lt;br /&gt;&amp;lt;war-dir id='webapps'/&amp;gt;&lt;br /&gt;Specifies a special directory to place war file이 위치한 특정 directory를 지정한다.&lt;br /&gt;War directory에 위치한 어떤 .war (web-application resource) file이던지 자동으로 확장/설치 된다. 일반적으로, war file은 설정을 위해 WEB-INF/web.xml 을 사용하며 구문은 다른 application 설정과 동일하다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. &amp;lt;web-app&amp;gt;의 하위 엘리먼트&lt;br /&gt;&lt;br /&gt;&amp;lt;classpath id='WEB-INF/classes'&lt;br /&gt;source='WEB-INF/classes'&lt;br /&gt;compile='true'/&amp;gt;&lt;br /&gt;classpath를 지정한다. Source는 option이다. Servlets 과 beans는 일반적으로 WEB-INF/classes에 위치한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;session-config&amp;gt;&lt;br /&gt;&amp;lt;session-max&amp;gt;4096&amp;lt;/session-max&amp;gt;&lt;br /&gt;&amp;lt;session-timeout&amp;gt;30&amp;lt;/session-timeout&amp;gt;&lt;br /&gt;&amp;lt;enable-cookies&amp;gt;true&amp;lt;/enable-cookies&amp;gt;&lt;br /&gt;&amp;lt;enable-url-rewriting&amp;gt;true&amp;lt;/enable-url-rewriting&amp;gt;&lt;br /&gt;&amp;lt;file-store&amp;gt;WEB-INF/sessions&amp;lt;/file-store&amp;gt;&lt;br /&gt;&amp;lt;/session-config&amp;gt;&lt;br /&gt;세션에 관한 설정이다.&lt;br /&gt;Session-max : 최대 session 개수&lt;br /&gt;Session-timeout : session timeout 시간(초)&lt;br /&gt;Enable-cokkies : 쿠키 사용여부&lt;br /&gt;Enable-url-rewritin :&lt;br /&gt;세션을 아래의 방법중 하나를 사용하여 외부에 적재할 경우 개발 중 class 변경으로 인한 세션 삭제를 방지할 수 있다.&lt;br /&gt;File-store : 세션을 지정된 디렉토리에 적재한다.&lt;br /&gt;tcp-store : tcp-ring을 사용하여 세션을 적재한다.&lt;br /&gt;Jdbc-store : DB table을 사용하여 세션을 적재한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;multipart-form upload-max='-1'/&amp;gt;&lt;br /&gt;multipart-mime/form 사용을 가능하게 한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;path-mapping url-regexp='^/~([^/]*)' real-path='/home/$1/public_html/'/&amp;gt;&lt;br /&gt;url path를 실제 path에 mapping한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;context-param info='An application information string'/&amp;gt;&lt;br /&gt;Application init parameter이다.&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet-mapping url-pattern='/snoop/*' servlet-name='snoop-servlet'/&amp;gt;&lt;br /&gt;모든 url에서 /snoop에 대하여 snoop-servlet 이름으로 접근한다.&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet servlet-name='snoop-servlet' servlet-class='Env'&amp;gt;&lt;br /&gt;&amp;lt;init-param info='A servlet information string'/&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;snoop-servlet init parameter로 info='A servlet information string'를 사용하여 구동한다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7713243027831636130?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7713243027831636130/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7713243027831636130' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7713243027831636130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7713243027831636130'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/03/jsp-about-resinconf.html' title='JSP: About Resin.conf'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946138886667006027.post-7225056960260151345</id><published>2009-02-16T04:00:00.000-08:00</published><updated>2009-02-16T04:01:19.246-08:00</updated><title type='text'>JavaScript : debuger</title><content type='html'>&lt;a href="http://www.my-debugbar.com/wiki/CompanionJS/HomePage"&gt;http://www.my-debugbar.com/wiki/CompanionJS/HomePage&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;thx~!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7225056960260151345?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7225056960260151345/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7225056960260151345' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7225056960260151345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7225056960260151345'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/02/javascript-debuger.html' title='JavaScript : debuger'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3915810627193963381</id><published>2009-02-11T18:19:00.000-08:00</published><updated>2009-02-11T18:20:57.339-08:00</updated><title type='text'>jsp: request.header</title><content type='html'>HTTP 환경변수의 HTTP_REFERER를 이용해봅시다'ㅂ'&lt;br /&gt;&lt;br /&gt;(import javax.servlet.http.HttpServletRequest;)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;각 언어별로 HTTP_REFERER를 확인하는 방법은 아래와 같습니다. 리턴값은 스트링이구요.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ASP =&gt; Request.ServerVariables("HTTP_REFERER")&lt;br /&gt;PHP =&gt; $_SERVER['HTTP_REFERER']&lt;br /&gt;JSP =&gt; request.getHeader("REFERER")&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;HTTP_REFERER의 값의 유무와 각 웹서버의 로그파일을 이용해서&lt;br /&gt;어떻게 방문했는지를 추출할 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. 주소창에 주소를 입력해서 들어오는 경우&lt;br /&gt;- HTTP_REFERER의 값이 없음&lt;br /&gt;&lt;br /&gt;ex)strReferPath = Trim(Request.Servervariables("HTTP_REFERER"))&lt;br /&gt;&lt;br /&gt;     strReferPath == null ?  1 : 0 -&gt; 1이 반환 되겠져&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. '즐겨찾기'를 이용해서 들어오는 경우(IE의 경우)&lt;br /&gt;- HTTP_REFERER의 값이 없음&lt;br /&gt;- 로그파일에 ..../favicon.ico로그가 먼저 남는다.&lt;br /&gt;- 이는 IE가 즐겨찾기를 눌러서 사이트를 방문할 경우 favicon.ico 요청을 하고, 해당 URL의 요청을 하기때문입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. 링크를 통해서 들어오는 경우.(쉽게 말해서 a태그를 통해)&lt;br /&gt;- HTTP_REFERER에 이전 URL정보가 들어있음.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이렇게 3가지 패턴으로 어느정도 확인을 할 수가 있습니다만-!&lt;br /&gt;&lt;br /&gt;자바스크립트로 location.href를 통해 설정된 주소로 들어왔을경우&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/1946138886667006027-3915810627193963381?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3915810627193963381/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3915810627193963381' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3915810627193963381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3915810627193963381'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/02/jsp-requestheader.html' title='jsp: request.header'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6259063023239407097</id><published>2009-02-10T01:18:00.000-08:00</published><updated>2009-02-10T17:20:35.781-08:00</updated><title type='text'>JAVA: regex</title><content type='html'>&lt;a href="http://searcher.tistory.com/156"&gt;http://searcher.tistory.com/156&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/docs/books/tutorial/essential/regex/pattern.html"&gt;http://java.sun.com/docs/books/tutorial/essential/regex/pattern.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6259063023239407097?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6259063023239407097/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6259063023239407097' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6259063023239407097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6259063023239407097'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/02/java-regex.html' title='JAVA: regex'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1882563499670618</id><published>2009-02-05T21:34:00.001-08:00</published><updated>2009-02-05T21:35:51.668-08:00</updated><title type='text'>JAVA: JDom with Xpaht</title><content type='html'>http://javaboutique.internet.com/tutorials/jdom&amp;/article.html&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/1946138886667006027-1882563499670618?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1882563499670618/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1882563499670618' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1882563499670618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1882563499670618'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/02/java-jdom-with-xpaht.html' title='JAVA: JDom with Xpaht'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-8897713195245879951</id><published>2009-02-04T23:05:00.001-08:00</published><updated>2009-02-04T23:15:56.413-08:00</updated><title type='text'>ORACLE : 특수문자 검색</title><content type='html'>오라클에서 특정 문자들은 특정한 기능을 수행하도록 예약되어 있다.&lt;br /&gt;예를들면 Wild 문자열&lt;br /&gt;_ (underscore): 문자 하나&lt;br /&gt;% (percentage): 포함하는&lt;br /&gt;' (apostrophe): 문자열의 시작과 끝&lt;br /&gt;&lt;br /&gt;이러한 특수 문자들은 오라클이 쿼리를 해석할때 글자 그대로 해석하지 않기 때문에 쿼리를 만들때 반드시 이를 고려해야 한다.&lt;br /&gt;&lt;br /&gt;예를들면 데이타베이스 테이블 "mytable"에 다음과 같이 데이타가 들어 있는 경우&lt;br /&gt;ID, NAME&lt;br /&gt;-------------&lt;br /&gt;100, ABC&lt;br /&gt;101, ABC%1&lt;br /&gt;102, ABC%2&lt;br /&gt;103, ABCD1&lt;br /&gt;104, ABCD2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ID 101 ABC% 를 구하기 위하여 포함된 질의 결과를 얻으려고 할 때&lt;br /&gt;&lt;br /&gt;SELECT * FROM mytable WHERE name like 'ABC%%' 을 수행하면 ABC로 시작하는 모든 레코드가 리턴된다.&lt;br /&gt;&lt;br /&gt;이 경우 ABC%로 시작하는 레코드를 구하기 위하여는 아래와 같이&lt;br /&gt;&lt;br /&gt;SELECT * FROM mytable WHERE name like 'ABC!%%' ESCAPE '!' 처럼 Escape 문자열이 어떤 것인지 명시적으로 알려 줘야 한다.&lt;br /&gt;&lt;br /&gt;다시 말하면 ESCAPE 라는 키워드를 통해서 오라클로 하여금 특정 스페셜 문자를 글자 그대로 해석하도록 지정 할 수 있다.&lt;br /&gt;&lt;br /&gt;Ex)&lt;br /&gt;SELECT t.*, a.admincode&lt;br /&gt;FROM usrgrp_type t, usrgrp_admincodes a&lt;br /&gt;WHERE a.usrgrpid = t.usrgrpid&lt;br /&gt;AND a.admincode like 'A!%%' ESCAPE '!'&lt;br /&gt;ORDER BY a.admincode, a.usrgrpid&lt;br /&gt;&lt;br /&gt;select * from em_account_his where resulttxt like '%!%%' ESCAPE '!'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-8897713195245879951?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/8897713195245879951/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=8897713195245879951' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8897713195245879951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8897713195245879951'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/02/oracle.html' title='ORACLE : 특수문자 검색'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6909370624771024082</id><published>2009-01-13T17:54:00.000-08:00</published><updated>2009-01-13T17:58:39.307-08:00</updated><title type='text'>JDBC: config oracle resource</title><content type='html'>기본적으로 SID 와 SERVICE NAME의 차이부터 이해하도록 한다.&lt;br /&gt;* SERVIE NAME은 데이터 베이스의 군 (미러링을 하던지.. 등등)&lt;br /&gt;* SID는 각각의 디비 인스턴스&lt;br /&gt;&lt;br /&gt;설정도 위에 따라 바뀐다.&lt;br /&gt;각각의 호스트 스트링은 다음과 같다.&lt;br /&gt;&lt;br /&gt;IF SID&lt;br /&gt;"jdbc:oracle:thin:@host:port:sid"&lt;br /&gt;&lt;br /&gt;IF SERVICE NAME&lt;br /&gt;"jdbc:oracle:thin:@//host:port/service name"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6909370624771024082?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6909370624771024082/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6909370624771024082' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6909370624771024082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6909370624771024082'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/01/jdbc-config-oracle-resource.html' title='JDBC: config oracle resource'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6226869539752539943</id><published>2009-01-04T23:01:00.001-08:00</published><updated>2009-01-04T23:01:37.157-08:00</updated><title type='text'>JAVA: find class location</title><content type='html'>클래스명.class.getResource("클래스명.class").getPath();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6226869539752539943?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6226869539752539943/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6226869539752539943' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6226869539752539943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6226869539752539943'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2009/01/java-find-class-location.html' title='JAVA: find class location'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-5945312258667926832</id><published>2008-12-30T17:06:00.000-08:00</published><updated>2008-12-30T17:07:37.551-08:00</updated><title type='text'>tip: putty export</title><content type='html'>regedit /e e:\\PuTTY.reg HKEY_CURRENT_USER\Software\SimonTatham&lt;br /&gt;&lt;br /&gt;레지스트리 파일을 export해서 사용.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5945312258667926832?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5945312258667926832/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5945312258667926832' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5945312258667926832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5945312258667926832'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/12/tip-putty-export.html' title='tip: putty export'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2927251328170475419</id><published>2008-12-29T20:29:00.000-08:00</published><updated>2008-12-29T20:42:34.403-08:00</updated><title type='text'>JSP: blank first line (when to print XML) solution</title><content type='html'>파싱중에&lt;br /&gt;&lt;span style="color:#ff6666;"&gt;The XML declaration may only appear at the very beginning of the document.&lt;/span&gt;&lt;br /&gt;이런 메시지를 만나게 되었다. 공백이 있거나 잘못된 xml선언이 첫줄에 오지 않을 경우 만나게 되는 오류인데 jsp에서 xml을 단순히 output하는 코드이기에 문제점이 없을 줄 안게 오산.&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ page contentType="text/xml; charset=euc-kr" %&gt;&amp;lt;%@ page import=...%&gt;&amp;lt;%&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/1946138886667006027-2927251328170475419?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2927251328170475419/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2927251328170475419' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2927251328170475419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2927251328170475419'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/12/jsp-blank-first-line-when-to-print-xml.html' title='JSP: blank first line (when to print XML) solution'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2277237282775325574</id><published>2008-12-11T21:59:00.001-08:00</published><updated>2008-12-11T21:59:42.435-08:00</updated><title type='text'>MySQL : 게정 관리</title><content type='html'>MySQL을 처음 설치하면 root 암호가 설정되어 있지 않기 때문에 반드시 설치 후 바로 root 암호를 먼저 설정해주세요.%%% root 암호를 설정하기 위해서는 $ mysqladmin -u root -p password new-password&lt;br /&gt;이러한 명령을 실행하면 됩니다. 실행하면 패스워드를 입력하라고 하는데 처음 root의 패스워드는 없으므로 그냥 엔터를 치시면 root 패스워드가 변경됩니다.&lt;br /&gt;update문을 이용하여 root 암호 설정 $ mysql -u root mysql&lt;br /&gt;mysql&gt; update user set password = password('new-password') where user = 'root';&lt;br /&gt;mysql&gt; flush privileges;&lt;br /&gt;set password를 이용하여 root 암호 설정 mysql&gt; set password for root = password('new-password');&lt;br /&gt;마지막으로 패스워드가 재대로 변경되었는지 테스트를 합니다. $ mysql -u root -p&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2277237282775325574?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2277237282775325574/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2277237282775325574' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2277237282775325574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2277237282775325574'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/12/mysql.html' title='MySQL : 게정 관리'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4353858540676981029</id><published>2008-12-11T00:47:00.001-08:00</published><updated>2008-12-11T00:47:51.645-08:00</updated><title type='text'>ORACLE : 유일한 값 얻기</title><content type='html'>MSSQL 에 NEWID() 라는 함수가 있다. 이와 비슷한 함수가 오라클에는 SYS_GUID 함수이다.&lt;br /&gt;데이터베이스 레코드는 각 레코드별로 무결성을 유지 해야한다. 즉 서로다른 레코드가 같은 값을 가지면 않된다. 테이블의 어느 한 필드 값은 반드시 달라야 한다.  어떤경우 이러한 상태를 유지하기가 어려울 때가 종종 있다. 이런경우 테이블의 한 필드를 반드시 서로 다른 값을 넣어야 한다.&lt;br /&gt;우리가 다른 레코드와 다른 값을 갖도록 유지 하려면 다른 레코드들을 모두 검색해 보아야 할 것이다. 그러나 레코드 수가 많아지면 속도의 유지를 보장할 수 없다. 그러므로,, 항상 어느상황에서든 난수적으로 다른 값이 나오도록 하는 함수가 필요하다.  이런경우 SYS_GUID함수를 사용한다.&lt;br /&gt;SYS_GUID함수의 리턴값은 반드시 호출할때마다 다른 값의 문자열을 출력하도록 설계 되어 있다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-4353858540676981029?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4353858540676981029/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4353858540676981029' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4353858540676981029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4353858540676981029'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/12/oracle.html' title='ORACLE : 유일한 값 얻기'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-8882767505222111422</id><published>2008-12-10T18:08:00.000-08:00</published><updated>2008-12-10T18:09:15.355-08:00</updated><title type='text'>LINUX: 포트 확인</title><content type='html'>NETSTAT가 못 미덥다면&lt;br /&gt;nmap -sT -O localhost&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-8882767505222111422?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/8882767505222111422/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=8882767505222111422' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8882767505222111422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8882767505222111422'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/12/linux_10.html' title='LINUX: 포트 확인'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2474122794406494712</id><published>2008-12-09T17:26:00.000-08:00</published><updated>2008-12-11T16:41:45.138-08:00</updated><title type='text'>LINUX: Mysql Install Command History</title><content type='html'>cat /proc/cpuinfo&lt;br /&gt;cat /etc/redhat-release&lt;br /&gt;&lt;br /&gt;down MySQL-server-community-5.0.67-0.rhel3.i386&lt;br /&gt;down MySQL-clinet-community-5.0.67-0.rhel3.i386&lt;br /&gt;&lt;br /&gt;rpm -Uvh MySQL-server-community-5.0.67-0.rhel3.i386&lt;br /&gt;rpm -Uvh MySQL-client-community-5.0.67-0.rhel3.i386&lt;br /&gt;&lt;br /&gt;/etc/rc.d/init.d/mysqld start&lt;br /&gt;&lt;br /&gt;hostname&lt;br /&gt;&lt;br /&gt;rpm -qi mysql&lt;br /&gt;rpm -evv mysql&lt;br /&gt;&lt;br /&gt;rpm -qa grep mysql&lt;br /&gt;&lt;br /&gt;rpm -e --nodeps mysql-bench-3.23.58-16.RHEL3.1&lt;br /&gt;&lt;br /&gt;cp /usr/share/my_huge.cnf /etc/my.cnf&lt;br /&gt;vi my.cnf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2474122794406494712?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2474122794406494712/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2474122794406494712' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2474122794406494712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2474122794406494712'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/12/linux.html' title='LINUX: Mysql Install Command History'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7238870592123597396</id><published>2008-12-09T02:12:00.000-08:00</published><updated>2008-12-09T02:13:40.655-08:00</updated><title type='text'>JAVA : DEVELOPER TOOLS</title><content type='html'>개발 도구&lt;br /&gt;&lt;a href="http://www.eclipse.org/" target="_blank"&gt;Eclipse&lt;/a&gt; : http://www.eclipse.org/&lt;br /&gt;&lt;a href="http://www.netbeans.org/community/releases/60/index.html" target="_blank"&gt;Netbean&lt;/a&gt; : http://www.netbeans.org/community/releases/60/index.html&lt;br /&gt;&lt;a href="http://www.getfirebug.com/" target="_blank"&gt;Firebug&lt;/a&gt; : http://www.getfirebug.com/&lt;br /&gt;소스코드 관리&lt;br /&gt;&lt;a href="http://www.cvshome.org/" target="_blank"&gt;CVS&lt;/a&gt; : http://www.cvshome.org&lt;br /&gt;&lt;a href="http://subversion.tigris.org/" target="_blank"&gt;Subversion&lt;/a&gt; : http://subversion.tigris.org&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/vstudio/aa718670.aspx" target="_blank"&gt;MS Visual SourceSafe&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bitkeeper.com/" target="_blank"&gt;BitKeeper&lt;/a&gt; : http://www.bitkeeper.com&lt;br /&gt;&lt;a href="http://www-306.ibm.com/software/awdtools/clearcase/" target="_blank"&gt;ClearCase&lt;/a&gt; : http://www-306.ibm.com/software/awdtools/clearcase/&lt;br /&gt;빌드 스크립트 도구&lt;br /&gt;&lt;a href="http://source.redhat.com/cygwin" target="_blank"&gt;make&lt;/a&gt; : http://source.redhat.com/cygwin&lt;br /&gt;&lt;a href="http://www.gnu.org/software/automake" target="_blank"&gt;Automake&lt;/a&gt; : http://www.gnu.org/software/automake&lt;br /&gt;&lt;a href="http://ant.apache.org/" target="_blank"&gt;Ant&lt;/a&gt; : http://ant.apache.org&lt;br /&gt;&lt;a href="http://nant.sourceforge.net/" target="_blank"&gt;NAnt&lt;/a&gt; : http://nant.sourceforge.net&lt;br /&gt;&lt;a href="http://groovy.codehaus.org/" target="_blank"&gt;Groovy&lt;/a&gt; : http://groovy.codehaus.org&lt;br /&gt;&lt;a href="http://rake.rubyforge.org/" target="_blank"&gt;Rake&lt;/a&gt; : http://rake.rubyforge.org/&lt;br /&gt;&lt;a href="http://www.scons.org/" target="_blank"&gt;SCons&lt;/a&gt; : http://www.scons.org/&lt;br /&gt;빌드 시스템&lt;br /&gt;&lt;a href="http://maven.apache.org/" target="_blank"&gt;Maven&lt;/a&gt; : http://maven.apache.org&lt;br /&gt;&lt;a href="http://maven.apache.org/maven2/index.html" target="_blank"&gt;Maven2&lt;/a&gt; : http://maven.apache.org/maven2/index.html&lt;br /&gt;CI 도구&lt;br /&gt;&lt;a href="http://cruisecontrol.sourceforge.net/" target="_blank"&gt;CruiseControl&lt;/a&gt; : http://cruisecontrol.sourceforge.net&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/ccnet" target="_blank"&gt;CruiseControl .NET&lt;/a&gt; : http://sourceforge.net/projects/ccnet&lt;br /&gt;&lt;a href="http://damagecontrol.codehaus.org/" target="_blank"&gt;DamageControl&lt;/a&gt; : http://damagecontrol.codehaus.org&lt;br /&gt;&lt;a href="http://www.urbancode.com/projects/anthill" target="_blank"&gt;AntHill&lt;/a&gt; : http://www.urbancode.com/projects/anthill&lt;br /&gt;&lt;a href="http://maven.apache.org/continuum" target="_blank"&gt;Continuum&lt;/a&gt; : http://maven.apache.org/continuum&lt;br /&gt;&lt;a href="http://luntbuild.javaforge.com/" target="_blank"&gt;LuntBuild&lt;/a&gt; : http://luntbuild.javaforge.com/&lt;br /&gt;&lt;a href="http://buildix.thoughtworks.com/" target="_blank"&gt;Buildix&lt;/a&gt; : http://buildix.thoughtworks.com/&lt;br /&gt;&lt;a href="https://hudson.dev.java.net/" target="_blank"&gt;Hudson &lt;/a&gt;: https://hudson.dev.java.net/&lt;br /&gt;이슈 추적 도구&lt;br /&gt;&lt;a href="http://www.bugzilla.org/" target="_blank"&gt;Bugzilla&lt;/a&gt; : http://www.bugzilla.org&lt;br /&gt;&lt;a href="http://www.atlassian.com/software/jira/default.jsp" target="_blank"&gt;JIRA&lt;/a&gt; : http://www.atlassian.com/software/jira/default.jsp&lt;br /&gt;&lt;a href="http://www.fogcreek.com/FogBugz" target="_blank"&gt;FogBugz&lt;/a&gt; : http://www.fogcreek.com/FogBugz&lt;br /&gt;&lt;a href="http://www.prtracker.com/" target="_blank"&gt;PR-Tracker&lt;/a&gt; : http://www.prtracker.com&lt;br /&gt;&lt;a href="http://trac.edgewall.org/" target="_blank"&gt;Trac&lt;/a&gt; : http://trac.edgewall.org/&lt;br /&gt;테스트 프레임워크&lt;br /&gt;&lt;a href="http://www.junit.org/" target="_blank"&gt;JUnit&lt;/a&gt; : http://www.junit.org&lt;br /&gt;&lt;a href="http://www.nunit.org/" target="_blank"&gt;NUnit&lt;/a&gt; : http://www.nunit.org&lt;br /&gt;&lt;a href="http://www.codeplex.com/xunit" target="_blank"&gt;xUnit.NET&lt;/a&gt; : http://www.codeplex.com/xunit&lt;br /&gt;&lt;a href="http://www.mbunit.org/" target="_blank"&gt;MbUnit&lt;/a&gt; : http://www.mbunit.org&lt;br /&gt;&lt;a href="http://htmlunit.sourceforge.net/" target="_blank"&gt;HTMLUnit&lt;/a&gt; : http://htmlunit.sourceforge.net&lt;br /&gt;&lt;a href="http://httpunit.sourceforge.net/" target="_blank"&gt;HTTPUnit&lt;/a&gt; : http://httpunit.sourceforge.net&lt;br /&gt;&lt;a href="http://jwebunit.sourceforge.net/" target="_blank"&gt;JWebUnit&lt;/a&gt; : http://jwebunit.sourceforge.net&lt;br /&gt;&lt;a href="http://cobertura.sourceforge.net/" target="_blank"&gt;Cobertura&lt;/a&gt; : http://cobertura.sourceforge.net&lt;br /&gt;&lt;a href="http://www.cenqua.com/clover" target="_blank"&gt;Clover&lt;/a&gt; : http://www.cenqua.com/clover&lt;br /&gt;&lt;a href="http://jakarta.apache.org/cactus/" target="_blank"&gt;Cactus&lt;/a&gt; : http://jakarta.apache.org/cactus/&lt;br /&gt;&lt;a href="http://emma.sourceforge.net/" target="_blank"&gt;Emma&lt;/a&gt; : http://emma.sourceforge.net/&lt;br /&gt;&lt;a href="http://fit.c2.com/" target="_blank"&gt;Fit&lt;/a&gt; : http://fit.c2.com&lt;br /&gt;&lt;a href="http://fitnesse.org/" target="_blank"&gt;Fitness&lt;/a&gt; : http://fitnesse.org&lt;br /&gt;&lt;a href="http://wtr.rubyforge.org/" target="_blank"&gt;Watir&lt;/a&gt; : http://wtr.rubyforge.org&lt;br /&gt;&lt;a href="http://atomicobject.com/systir.page" target="_blank"&gt;Systir&lt;/a&gt; : http://atomicobject.com/systir.page&lt;br /&gt;&lt;a href="http://aut.tigris.org/" target="_blank"&gt;AUT&lt;/a&gt; : http://aut.tigris.org/&lt;br /&gt;&lt;a href="http://unittest-cpp.sourceforge.net/" target="_blank"&gt;UnitTest++&lt;/a&gt; : http://unittest-cpp.sourceforge.net/&lt;br /&gt;&lt;a href="http://testng.org/doc/" target="_blank"&gt;TestNG&lt;/a&gt; : http://testng.org/doc/&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/cppunit" target="_blank"&gt;CppUnit&lt;/a&gt; : http://sourceforge.net/projects/cppunit&lt;br /&gt;&lt;a href="http://cppunit.sourceforge.net/cppunit-wiki/CppUnit2" target="_blank"&gt;CppUnit2&lt;/a&gt; : http://cppunit.sourceforge.net/cppunit-wiki/CppUnit2&lt;br /&gt;&lt;a href="http://www.openqa.org/" target="_blank"&gt;Selenium&lt;/a&gt; : http://www.openqa.org/&lt;br /&gt;&lt;a href="http://www.agitar.com/" target="_blank"&gt;Agitar&lt;/a&gt; : http://www.agitar.com/&lt;br /&gt;&lt;a href="http://www.parasoft.com/jsp/home.jsp" target="_blank"&gt;JTest&lt;/a&gt; : http://www.parasoft.com/jsp/home.jsp&lt;br /&gt;&lt;a href="http://www.pushtotest.com/" target="_blank"&gt;PushToSoft&lt;/a&gt; : http://www.pushtotest.com/&lt;br /&gt;&lt;a href="http://www.eclemma.org/" target="_blank"&gt;Eclemma&lt;/a&gt; : http://www.eclemma.org/&lt;br /&gt;프로젝트 관리&lt;br /&gt;&lt;a href="http://openproj.org/openproj" target="_blank"&gt;OpenProj&lt;/a&gt; : http://openproj.org/openproj&lt;br /&gt;&lt;a href="http://www.dotproject.net/" target="_blank"&gt;dotproject&lt;/a&gt; : http://www.dotproject.net/&lt;br /&gt;&lt;a href="http://www.mantisbt.org/" target="_blank"&gt;Mantis&lt;/a&gt; : http://www.mantisbt.org/&lt;br /&gt;커뮤니케이션 도구, 위키&lt;br /&gt;&lt;a href="http://moinmoin.wikiwikiweb.de/" target="_blank"&gt;MoinMoin&lt;/a&gt; : http://moinmoin.wikiwikiweb.de/&lt;br /&gt;&lt;a href="http://www.atlassian.com/software/confluence/" target="_blank"&gt;Confluence&lt;/a&gt; : http://www.atlassian.com/software/confluence/&lt;br /&gt;&lt;a href="http://twiki.org/" target="_blank"&gt;TWiki&lt;/a&gt; : http://twiki.org/&lt;br /&gt;&lt;a href="http://www.socialtext.com/" target="_blank"&gt;SocialText&lt;/a&gt; : http://www.socialtext.com/&lt;br /&gt;&lt;a href="http://www.springnote.com/ko" target="_blank"&gt;Springnote&lt;/a&gt; : http://www.springnote.com/ko&lt;br /&gt;성능분석&lt;br /&gt;&lt;a href="http://www.red-gate.com/products/ants_load/index.htm" target="_blank"&gt;ANTS Load&lt;/a&gt; : http://www.red-gate.com/products/ants_load/index.htm&lt;br /&gt;&lt;a href="http://www.clarkware.com/software/JUnitPerf.html" target="_blank"&gt;JunitPerf&lt;/a&gt; : http://www.clarkware.com/software/JUnitPerf.html&lt;br /&gt;&lt;a href="http://jakarta.apache.org/jmeter/" target="_blank"&gt;Jmeter&lt;/a&gt; : http://jakarta.apache.org/jmeter/&lt;br /&gt;기타&lt;br /&gt;&lt;a href="http://www.headwaysoftware.com/index.php" target="_blank"&gt;Structure101&lt;/a&gt; : http://www.headwaysoftware.com/index.php&lt;br /&gt;&lt;a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page" target="_blank"&gt;FreeMind&lt;/a&gt; : http://freemind.sourceforge.net/wiki/index.php/Main_Page&lt;br /&gt;&lt;a href="http://manuals.rubyonrails.com/read/book/17" target="_blank"&gt;Capistrano&lt;/a&gt; : &lt;a href="http://manuals.rubyonrails.com/read/book/17"&gt;http://manuals.rubyonrails.com/read/book/17&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;출처 : &lt;a href="http://moai.tistory.com/270"&gt;http://moai.tistory.com/270&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7238870592123597396?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7238870592123597396/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7238870592123597396' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7238870592123597396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7238870592123597396'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/12/java-developer-tools.html' title='JAVA : DEVELOPER TOOLS'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-5721799933092538206</id><published>2008-11-28T20:47:00.000-08:00</published><updated>2008-11-28T20:48:09.772-08:00</updated><title type='text'>VS : 단축키</title><content type='html'>&lt;a title="VS.NET 단축키 " name="541117"&gt;VS.NET 단축키 &lt;/a&gt;&lt;br /&gt;1.F12 : 함수 정의된 모듈로 이동&lt;br /&gt;2.ctrl+shift+spacebar : 메소드 매개인자 보기&lt;br /&gt;3.F9 중단점 지정.&lt;br /&gt;4.F5 디버깅 모드로 실행.(이미 디버깅 모드로 실행중일때 F5를 누르면 다음 중단점까지 이동) 5.Ctrl+F5 디버깅하지 않고 실행.&lt;br /&gt;6.F10 프로시저단위실행.(현재 행이 메소드 호출일 경우 메소드 전체를 실행하고 호출한 메소드의 다음 행으로 이동한다.)&lt;br /&gt;7.F11 한 단계 실행.(현재 행이 메소드 호출일 경우 메소드 안에 있는 코드의 첫째 행으로 이동한다.)&lt;br /&gt;8.Shift+F11 프로시저 나가기.&lt;br /&gt;9.Ctrl+Shift+F9 모든 중단점 제거.&lt;br /&gt;10.ctrl+shift+F5 : 디버깅 중일때 다시 시작.&lt;br /&gt;11.ctrl+shift+B : 솔루션 빌드.&lt;br /&gt;12.ctrl + F4 : 현재 문서 닫기 (열린 페이지가 너무 많아 버벅일 땐..닫아주어야 한다고 하네요..최소한의 작업 파일만 열어둘 것.)&lt;br /&gt;13.ctrl + Tab : 내부 문서간 이동&lt;br /&gt;&lt;뷰어&gt;&lt;br /&gt;13.솔루션 탐색기 : Ctrl + Alt + L&lt;br /&gt;14.클래스 탐색기 : Ctrl + Shift + C&lt;br /&gt;15.속성창 : F4&lt;br /&gt;16.출력창(빌드결과) : Ctrl + Alt + O (알파벳 오)&lt;br /&gt;17.도구상자 : Ctrl + Alt + X&lt;br /&gt;18.작업목록 창보기 : Ctrl + Alt + K&lt;br /&gt;19.(aspx, ascx) 디자인 화면 : Shift + F7&lt;br /&gt;20.(aspx, ascx) cs 소스 화면 : F7&lt;br /&gt;21.(aspx, ascx) 디자인 Html 소스  :Ctrl + PageDown -&gt; 위화면은 (aspx, ascx) 디자인 화면일때 가능 22.화면을 넓게쓰기(소스를 넓게보기): Alt + Shift + Enter -&gt; 원래화면도 같음. =&gt; 위 3개창 어느것이나 창을 닫을려면 마우스 포커스가 있는 상태에서 Shift + ESC 를 누르면 됩니다.&lt;br /&gt;&lt;소그 편집 및 코딩시 &gt;&lt;br /&gt;23. 한 소스 안에서의 북마크   북마크 찍기(해제) :              Ctrl          + K K      북마크로 이동       :              Ctrl           + K N      북마크 전체 해제  :              Ctrl           + K L&lt;br /&gt;24. 여러 소스에서의 북마크    북마크 찍기                :     Ctrl          + K H      북마크 찍은 목록보기   :                1. Ctrl          + Alt + K  누르면 작업목록 창이 나온다.           2. 오른쪽 Ctrl 왼쪽에 있는 목록보기 버튼 클릭하면 리스트가 나온다.           3. 이상태에서 K 누르고 S 누른다. (동시에 누르는거 아님)           4. 그럼 바로가기 목록이 나오고 이목록이 북마크 목록이다.           5. 방향키로 원하는 소스를 선택하면 해당소스 파일로 이동하고 그 위치에 커서가 간다.&lt;br /&gt;25. 한줄 주석 : Ctrl + K C&lt;br /&gt;26. 주석 해제 : Ctrl + K U&lt;br /&gt;27. 여러줄 주석 : 쉬프트 누르고 방향키로 선택하고 Ctrl + K C&lt;br /&gt;28. 여러줄 주석 해제: 쉬프트 누르고 방향키로 선택하고 Ctrl + K U&lt;br /&gt;29. 소스 정사각형으로 선택하기: Alt + Shift + 방향키&lt;br /&gt;&lt;빌드 &amp;amp; 디버깅&gt;&lt;br /&gt;30. 빌드 : Ctrl + Shift + B&lt;br /&gt;31. 디버깅 중단점 찍기 : Ctrl + F9&lt;br /&gt;32. 디버깅 중단점 모두해제 : Ctrl + Shift + F9&lt;br /&gt;33. 디버깅 중단점 모두 해제: Ctrl + Shift + B&lt;br /&gt;34. 디버깅 : F5&lt;br /&gt;35. 디버깅 중단 : Shift + F5&lt;br /&gt;36. 디버깅 중에 다시 디버깅 : Ctrl + Shift + F5&lt;br /&gt;37. 디버깅 중에 한칸씩 이동 : F11&lt;br /&gt;38. 디버깅 중에 함수단위이동: F10&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5721799933092538206?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5721799933092538206/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5721799933092538206' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5721799933092538206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5721799933092538206'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/11/vs.html' title='VS : 단축키'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-8928468730619066464</id><published>2008-10-20T18:26:00.001-07:00</published><updated>2008-10-20T18:27:23.441-07:00</updated><title type='text'>JSP: html tag strip</title><content type='html'>tartgetString.replaceAll("\\&lt;.*?\\&gt;", "")&lt;br /&gt;&lt;br /&gt;그냥 정규식으로 처리해버렸다. 100% 신뢰 할수 없는 방법이지만....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-8928468730619066464?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/8928468730619066464/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=8928468730619066464' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8928468730619066464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8928468730619066464'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/10/jsp-html-tag-strip.html' title='JSP: html tag strip'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4336228512759778451</id><published>2008-10-12T18:05:00.001-07:00</published><updated>2008-10-12T19:55:28.755-07:00</updated><title type='text'>HTML: scroll css</title><content type='html'>&lt;pre&gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;style type="text/css"&gt;&lt;br /&gt;div.contxt {&lt;br /&gt;    scrollbar-3dlight-color:white;&lt;br /&gt;    scrollbar-arrow-color:gray; &lt;br /&gt;    scrollbar-base-color:black; &lt;br /&gt;    scrollbar-darkshadow-color:black; &lt;br /&gt;    scrollbar-face-color:black; &lt;br /&gt;    scrollbar-highlight-color:white; &lt;br /&gt;    scrollbar-shadow-color:white;&lt;br /&gt;} &lt;br /&gt;&amp;lt;/style&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-4336228512759778451?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4336228512759778451/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4336228512759778451' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4336228512759778451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4336228512759778451'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/10/html-scroll-css.html' title='HTML: scroll css'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3503953250278467054</id><published>2008-10-01T21:23:00.001-07:00</published><updated>2008-10-01T21:33:23.179-07:00</updated><title type='text'>JAVA: NAVER OPEN MAP &amp; HTTP CLIENT</title><content type='html'>적당히 아래와 같이 쓸 수도 있겠다.&lt;br /&gt;JSP 페이지도 적당히 만들어서 적당히 IMPORT하여 쓰는 방법이 오히려 더 편할 것 같기도 하지만..&lt;br /&gt;뭐.. 적당히 적당히...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt; String adress = request.getParameter("adress");&lt;br /&gt; adress = URLDecoder.decode(adress, "utf-8");&lt;br /&gt; &lt;br /&gt; HttpClient client = new HttpClient();&lt;br /&gt; PostMethod httppost = new PostMethod("http://maps.naver.com/api/geocode.php");&lt;br /&gt; //한글 처리를 위한 헤더 셋팅&lt;br /&gt; httppost.setRequestHeader("Content-Type", &lt;br /&gt;    "application/x-www-form-urlencoded;  charset=euc_kr");&lt;br /&gt; DefaultMethodRetryHandler retryhandler = new DefaultMethodRetryHandler();&lt;br /&gt; retryhandler.setRequestSentRetryEnabled(false);&lt;br /&gt; // retry 시도 실패 했을때..&lt;br /&gt; retryhandler.setRetryCount(3);     &lt;br /&gt; httppost.setMethodRetryHandler(retryhandler);&lt;br /&gt; httppost.addParameter("key", "naver api key");&lt;br /&gt; httppost.addParameter("query",adress);&lt;br /&gt; &lt;br /&gt;    try {&lt;br /&gt;        client.executeMethod(httppost);&lt;br /&gt;        if (httppost.getStatusCode() == HttpStatus.SC_OK) {&lt;br /&gt;            String bodyString = httppost.getResponseBodyAsString();&lt;br /&gt;            //System.out.println(httppost.getResponseBodyAsString());&lt;br /&gt;            &lt;br /&gt;            XStream xStream = new XStream(new DomDriver());&lt;br /&gt;&lt;br /&gt;            xStream.alias("geocode",GeoCode.class);&lt;br /&gt;            xStream.alias("item",Item.class);&lt;br /&gt;            xStream.addImplicitCollection(GeoCode.class, "items");&lt;br /&gt;            &lt;br /&gt;            GeoCode geoCode = (GeoCode)xStream.fromXML(bodyString);&lt;br /&gt;            String result =  ((Item)geoCode.getItems().get(0)).getPoint().toJson();&lt;br /&gt;            out.print(result);&lt;br /&gt;            System.out.print("result : " + result);&lt;br /&gt;        } else {&lt;br /&gt;          System.out.println("Unexpected failure: " &lt;br /&gt;              + httppost.getStatusLine().toString());&lt;br /&gt;        }&lt;br /&gt;    } finally {&lt;br /&gt;        httppost.releaseConnection();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;%&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-3503953250278467054?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3503953250278467054/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3503953250278467054' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3503953250278467054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3503953250278467054'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/10/java-naver-open-map-http-client.html' title='JAVA: NAVER OPEN MAP &amp; HTTP CLIENT'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4680669415702591257</id><published>2008-09-26T00:41:00.000-07:00</published><updated>2008-09-26T00:45:11.928-07:00</updated><title type='text'>JAVA: USE ORALCE CLOB</title><content type='html'>아래 4월달에 쓴 글도 있지만 삽질의 흔적으로 삼고자 글을 새로 쓴다.&lt;br /&gt;&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt; /**&lt;br /&gt;  * oracle의 CLOB을 이용하여 java의 Clob을 생성한다.&lt;br /&gt;  * &lt;br /&gt;  * @param clobValue&lt;br /&gt;  * @param conn&lt;br /&gt;  * @return&lt;br /&gt;  * @throws Exception&lt;br /&gt;  */&lt;br /&gt; public static Clob getClob(String clobValue, Connection conn) throws Exception{&lt;br /&gt;  Clob newClob= null;&lt;br /&gt;  if(clobValue!=null) {&lt;br /&gt;   try{&lt;br /&gt;    if (conn.getClass() == UserConnectionAdapter.class) { //env: resin pool connection&lt;br /&gt;     newClob = oracle.sql.CLOB.createTemporary(&lt;br /&gt;        ((UserConnectionAdapter)conn).getConnection() ,&lt;br /&gt;        true, oracle.sql.CLOB.DURATION_SESSION);&lt;br /&gt;    } else if (conn.getClass() == OracleConnection.class) { //env: oracle connection&lt;br /&gt;     newClob = oracle.sql.CLOB.createTemporary(&lt;br /&gt;      conn,&lt;br /&gt;      true, oracle.sql.CLOB.DURATION_SESSION);&lt;br /&gt;    &lt;br /&gt;    } else if (conn.getClass() == Connection4Oracle.class) { //env: jennifer connection&lt;br /&gt;     conn = ((Connection4Oracle)conn).getNativeConnection();&lt;br /&gt;     newClob = oracle.sql.CLOB.createTemporary(&lt;br /&gt;       ((UserConnectionAdapter)conn).getConnection(),&lt;br /&gt;       true, oracle.sql.CLOB.DURATION_SESSION);&lt;br /&gt;    } else { //env: else connection&lt;br /&gt;     newClob = oracle.sql.CLOB.createTemporary(&lt;br /&gt;       conn,&lt;br /&gt;       true, oracle.sql.CLOB.DURATION_SESSION);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    if(newClob!=null) {&lt;br /&gt;     ((oracle.sql.CLOB)newClob).putString(1, clobValue);&lt;br /&gt;    }&lt;br /&gt;   }  catch (Exception e){&lt;br /&gt;    e.printStackTrace();&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return newClob;&lt;br /&gt; }&lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;br /&gt;위의 메소드를 이용해서&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;psmt.setClob(psmtIndex++, DaoHelper.getClob(  info.getEtcInfo(), conn ));&lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;dao 단의 코딩이 좀더 깔끔하게 되었다.&lt;br /&gt;좀더 정리 할 필요가 있지만 그건 조금 나중이 될 듯 하다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-4680669415702591257?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4680669415702591257/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4680669415702591257' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4680669415702591257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4680669415702591257'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/09/java-use-oralce-clob.html' title='JAVA: USE ORALCE CLOB'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4889608361434855976</id><published>2008-09-24T02:51:00.000-07:00</published><updated>2008-09-24T18:24:23.108-07:00</updated><title type='text'>JAVASCRIPT: RADIO 값 가져 오기 (WITH PROTOTYPE)</title><content type='html'>&lt;a href="http://xavisys.com/2007/03/using-prototype-javascript-to-get-the-value-of-a-radio-group/"&gt;http://xavisys.com/2007/03/using-prototype-javascript-to-get-the-value-of-a-radio-group/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;prototype을 써도 radio 값을 가져올때는 좀 껄끄럽다.(버젼업에서는 해결되길 바라며..)&lt;br /&gt;위의 링크를 참조하자.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function $RF(el, radioGroup) {&lt;br /&gt;    if($(el).type &amp;amp;&amp;amp; $(el).type.toLowerCase() == 'radio') {&lt;br /&gt;        var radioGroup = $(el).name;&lt;br /&gt;        var el = $(el).form;&lt;br /&gt;    } else if ($(el).tagName.toLowerCase() != 'form') {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    var checked = $(el).getInputs('radio', radioGroup).find(&lt;br /&gt;        function(re) {return re.checked;}&lt;br /&gt;    );&lt;br /&gt;    return (checked) ? $F(checked) : null;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;이 function으로 간단하게 가져 올 수 있다.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;var value = $RF('radio_btn_id');&lt;br /&gt;var value = $RF('form_id', 'radio_grp_name');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;이정도는 직접 짜버릇 해야 되는데.. 이넘의 ctrl+C + ctrl+V의 습관은 좀처럼 고쳐질 줄을 모른다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-4889608361434855976?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4889608361434855976/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4889608361434855976' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4889608361434855976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4889608361434855976'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/09/javascript-radio-with-prototype.html' title='JAVASCRIPT: RADIO 값 가져 오기 (WITH PROTOTYPE)'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7617834212092312343</id><published>2008-09-22T17:21:00.000-07:00</published><updated>2008-09-22T17:23:07.617-07:00</updated><title type='text'>JAVA: property 사용시 tip</title><content type='html'>프로퍼터 사용시 동일 경로 상에서 적당히 properties파일을 사용 하고 싶을때는&lt;br /&gt;&lt;br /&gt;InputStream is = getClass().getResourceAsStream("message.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/1946138886667006027-7617834212092312343?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7617834212092312343/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7617834212092312343' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7617834212092312343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7617834212092312343'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/09/java-property-tip.html' title='JAVA: property 사용시 tip'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6141754025342980910</id><published>2008-08-25T17:24:00.000-07:00</published><updated>2008-09-23T01:08:49.692-07:00</updated><title type='text'>JAVA: XML ENGINE - XSTREAM</title><content type='html'>DOM 파싱은 꽤 귀찮은 작업이다.&lt;br /&gt;&lt;a href="http://xstream.codehaus.org/"&gt;XSTREAM&lt;/a&gt;은 이 귀찮고 지루한 작업을 대신하여 준다.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gyumee.egloos.com/1296932"&gt;여기&lt;/a&gt;에 튜토리얼을 번역해 놓은 글을 참조하면 좀더 이해가 쉬울 것이다.&lt;br /&gt;(사실 2분 튜토리얼만 봐도 대충 쓰는 것 까지는 충분하다.)&lt;br /&gt;&lt;br /&gt;엘리먼트가 반복되는 경우에 (LIST)변수 로 등록된 이름을 매핑하는 부분은 좀 이해하기가 힘든 부분이 있으니 주의가 필요하다. CLASS로 만드는 것이 아님에 주의하자.&lt;br /&gt;&lt;br /&gt;-ps. java 1.6이상만 쓸 수 있다면 jaxb를 사용해서 대충 어노테이션으로 처리 할 수도 있겠지만....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6141754025342980910?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6141754025342980910/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6141754025342980910' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6141754025342980910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6141754025342980910'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/08/blog-post.html' title='JAVA: XML ENGINE - XSTREAM'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4918919044626875988</id><published>2008-08-12T22:06:00.000-07:00</published><updated>2008-11-05T06:14:19.653-08:00</updated><title type='text'>JAVA: Code Conventions</title><content type='html'>&lt;a href="http://pds6.egloos.com/pds/200712/04/94/Code_Conventions.mht"&gt;http://pds6.egloos.com/pds/200712/04/94/Code_Conventions.mht&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html"&gt;http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://okjsp.pe.kr/doc/jspCodeConvention.html"&gt;http://okjsp.pe.kr/doc/jspCodeConvention.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/javaserverpages/code_convention/"&gt;http://java.sun.com/developer/technicalArticles/javaserverpages/code_convention/&lt;/a&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/1946138886667006027-4918919044626875988?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4918919044626875988/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4918919044626875988' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4918919044626875988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4918919044626875988'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/08/java-code-conventions.html' title='JAVA: Code Conventions'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4068524009893814211</id><published>2008-08-01T07:22:00.000-07:00</published><updated>2008-08-01T07:25:07.148-07:00</updated><title type='text'>SCRIPT: HELPER SITE</title><content type='html'>이런 저런 소스들이 널려 있는 쓸만한 사이트 인듯.&lt;br /&gt;&lt;a href="http://www.dhtmlgoodies.com/"&gt;http://www.dhtmlgoodies.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-4068524009893814211?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4068524009893814211/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4068524009893814211' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4068524009893814211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4068524009893814211'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/08/script-helper-site.html' title='SCRIPT: HELPER SITE'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2247569218325190105</id><published>2008-07-29T19:27:00.000-07:00</published><updated>2008-07-29T19:29:06.153-07:00</updated><title type='text'>Excel : find first day of week</title><content type='html'>=해당날짜 - WEEKDAY(TODAY(),3)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2247569218325190105?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2247569218325190105/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2247569218325190105' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2247569218325190105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2247569218325190105'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/07/excel-find-first-day-of-week.html' title='Excel : find first day of week'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-5925522180109397895</id><published>2008-07-20T19:18:00.000-07:00</published><updated>2008-07-20T19:19:14.009-07:00</updated><title type='text'>Javascript: IE blink</title><content type='html'>&lt;pre&gt;&lt;br /&gt;function doBlink() {&lt;br /&gt;  var blink = document.all.tags("BLINK");&lt;br /&gt;  for (var i=0; i &lt; blink.length; i++) {&lt;br /&gt;    blink[i].style.visibility = (blink[i].style.visibility =="visible") ? "hidden":"visible";&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;if (document.all) setInterval("doBlink()",500);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5925522180109397895?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5925522180109397895/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5925522180109397895' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5925522180109397895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5925522180109397895'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/07/javascript-ie-blink.html' title='Javascript: IE blink'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1539423032404156602</id><published>2008-07-16T09:12:00.001-07:00</published><updated>2008-07-16T09:12:53.377-07:00</updated><title type='text'>JAVA: JSF &amp; AJAX</title><content type='html'>&lt;a href="http://www.ibm.com/developerworks/kr/library/wa-aj-jsfcss1/"&gt;http://www.ibm.com/developerworks/kr/library/wa-aj-jsfcss1/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/kr/library/wa-aj-jsfcss2/"&gt;http://www.ibm.com/developerworks/kr/library/wa-aj-jsfcss2/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1539423032404156602?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1539423032404156602/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1539423032404156602' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1539423032404156602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1539423032404156602'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/07/java-jsf-ajax.html' title='JAVA: JSF &amp; AJAX'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-8713524300347508325</id><published>2008-07-16T08:32:00.000-07:00</published><updated>2008-07-16T08:34:52.096-07:00</updated><title type='text'>JAVA: RESIN &amp; JSTL</title><content type='html'>&lt;a href="http://www.i-fam.net/water/56"&gt;http://www.i-fam.net/water/56&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;RESIN에서 JSTL 버그는 3.X대에서도 고쳐 지진 않은 것 같다.&lt;br /&gt;대부분 fast-jstl 이라는 것 때문에 일어 나는 경우가 많은 것 같다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-8713524300347508325?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/8713524300347508325/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=8713524300347508325' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8713524300347508325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8713524300347508325'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/07/java-resin-jstl.html' title='JAVA: RESIN &amp; JSTL'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1510442714338381361</id><published>2008-07-12T06:04:00.000-07:00</published><updated>2008-07-13T19:54:14.991-07:00</updated><title type='text'>JAVA: JPA</title><content type='html'>튜토리얼&lt;br /&gt;spring &amp;amp; jpa&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/kr/library/tutorial/j-spring2/"&gt;http://www.ibm.com/developerworks/kr/library/tutorial/j-spring2/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;oracle&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/global/kr/products/ias/toplink/jpa/tutorials/jsf-jpa-tutorial.html"&gt;http://www.oracle.com/technology/global/kr/products/ias/toplink/jpa/tutorials/jsf-jpa-tutorial.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1510442714338381361?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1510442714338381361/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1510442714338381361' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1510442714338381361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1510442714338381361'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/07/java-spring2-jpa.html' title='JAVA: JPA'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-9050887883308117706</id><published>2008-07-03T19:48:00.000-07:00</published><updated>2008-07-12T06:06:16.965-07:00</updated><title type='text'>HTML: CSS 로 onfocus=this.blur() 설정</title><content type='html'>a {  selector-dummy : expression(this.hideFocus=true); }&lt;br /&gt;&lt;br /&gt;이렇게 하면 매번 onfocus=this.blur() 로 포커싱을 없에 주지 않아도 된다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-9050887883308117706?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/9050887883308117706/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=9050887883308117706' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/9050887883308117706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/9050887883308117706'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/07/html-css-onfocusthisblur.html' title='HTML: CSS 로 onfocus=this.blur() 설정'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946138886667006027.post-5306836319592316024</id><published>2008-07-03T01:50:00.003-07:00</published><updated>2008-07-12T06:07:21.582-07:00</updated><title type='text'>AJAX : PROTOTYPE 에서 EVENT 사용</title><content type='html'>프로토 타잎 API참고 블로그&lt;br /&gt;&lt;a href="http://theeye.pe.kr/211"&gt;http://theeye.pe.kr/211&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;대부분의 내용이 prototype api의 내용이긴 하지만 번역되어 있다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5306836319592316024?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5306836319592316024/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5306836319592316024' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5306836319592316024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5306836319592316024'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/07/ajax-prototype-event.html' title='AJAX : PROTOTYPE 에서 EVENT 사용'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4639213409847303045</id><published>2008-06-27T00:31:00.000-07:00</published><updated>2008-06-27T03:48:16.340-07:00</updated><title type='text'>AJAX: TIP &amp; DOC</title><content type='html'>Ajax와 XML: 테이블을 위한 Ajax(한글)&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/kr/library/x-ajaxxml10/#list2"&gt;http://www.ibm.com/developerworks/kr/library/x-ajaxxml10/#list2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;쓸만한 effect들 ( prototype과 mootools는 같이 사용할 수 없어서 아쉽다.)&lt;br /&gt;&lt;a href="http://moofx.mad4milk.net/"&gt;http://moofx.mad4milk.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;json lib&lt;br /&gt;&lt;a href="http://json-lib.sourceforge.net/"&gt;http://json-lib.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;json from XML&lt;br /&gt;&lt;a href="http://www.terracoder.com/"&gt;http://www.terracoder.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;XML &amp;amp; java&lt;br /&gt;&lt;a href="http://xstream.codehaus.org/"&gt;http://xstream.codehaus.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gyumee.egloos.com/1291803"&gt;http://gyumee.egloos.com/1291803&lt;/a&gt;&lt;br /&gt;(한글)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-4639213409847303045?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4639213409847303045/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4639213409847303045' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4639213409847303045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4639213409847303045'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/06/ajax-tip-doc.html' title='AJAX: TIP &amp; DOC'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-317273328501745701</id><published>2008-06-26T22:10:00.000-07:00</published><updated>2008-06-26T22:12:22.244-07:00</updated><title type='text'>How well do you know prototype</title><content type='html'>&lt;a href="http://link.allblog.net/11390411/http://allesklar.tistory.com/entry/How-well-do-you-know-prototype"&gt;http://link.allblog.net/11390411/http://allesklar.tistory.com/entry/How-well-do-you-know-prototype&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;prototype을 쓴다면 한번쯤 읽어 볼만한 글인듯.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-317273328501745701?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/317273328501745701/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=317273328501745701' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/317273328501745701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/317273328501745701'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/06/how-well-do-you-know-prototype.html' title='How well do you know prototype'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-818612842011765902</id><published>2008-06-19T16:48:00.001-07:00</published><updated>2008-07-12T06:09:57.657-07:00</updated><title type='text'>SECURITY: SSL 인증</title><content type='html'>&lt;p&gt;&lt;a href="http://blog.empas.com/skc101/read.html?a=22241538"&gt;http://blog.empas.com/skc101/read.html?a=22241538&lt;/a&gt;&lt;/p&gt;&lt;p&gt;EX7에선 꽤 귀찮은 작업이 되었다. 이중 ifram관련된 부분은&lt;br /&gt;&lt;/p&gt;&lt;p&gt;EX6에선 보안경고가 뜨지만 EX7에서는 보안경가 뜨지 않는 다는 점은 조금 다르다.&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/1946138886667006027-818612842011765902?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/818612842011765902/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=818612842011765902' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/818612842011765902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/818612842011765902'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/06/security-ssl.html' title='SECURITY: SSL 인증'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4710287211953117592</id><published>2008-06-09T18:06:00.000-07:00</published><updated>2008-07-12T06:12:32.577-07:00</updated><title type='text'>JAVA: GWT</title><content type='html'>gwt download&lt;br /&gt;&lt;a href="http://code.google.com/webtoolkit/download.html"&gt;http://code.google.com/webtoolkit/download.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;eclipse plug in&lt;br /&gt;&lt;a href="http://www.instantiations.com/gwtdesigner/index.html"&gt;http://www.instantiations.com/gwtdesigner/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;tutorial&lt;br /&gt;&lt;a href="http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Google/Service/GoogleWebToolkit/StartedGuide"&gt;http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Google/Service/GoogleWebToolkit/StartedGuide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;한글 처리가 좀 귀찮다. &lt;br /&gt;KitchenSink 예제의 경우 가장 간단한 처리 방법은  java파일을 utf-8로 저장한다.&lt;br /&gt;또는&lt;br /&gt;1. KitchenSink.gwt.xml 수정&lt;br /&gt;&amp;lt;module&gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;extend-property name="locale" values="EUC_KR"&gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/module&gt;&lt;br /&gt;&lt;br /&gt;2. 출력하는 페이지인 KitchenSink.html 수정&lt;br /&gt;&amp;lt;head&gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=EUC_KR"&gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/head&gt;&lt;br /&gt;아니면&lt;br /&gt;property를 이용하는 방법등이 있겠다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-4710287211953117592?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4710287211953117592/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4710287211953117592' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4710287211953117592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4710287211953117592'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/06/java-gwt.html' title='JAVA: GWT'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1677355879123092430</id><published>2008-06-09T00:59:00.000-07:00</published><updated>2008-06-09T01:00:27.370-07:00</updated><title type='text'>JAVASCRIPT: JMAKI</title><content type='html'>참고 문서&lt;br /&gt;&lt;a href="http://wiki.javajigi.net/display/WEB20/jMaki?showComments=false"&gt;http://wiki.javajigi.net/display/WEB20/jMaki?showComments=false&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PROJECT PAGE&lt;br /&gt;&lt;a href="https://ajax.dev.java.net/"&gt;https://ajax.dev.java.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1677355879123092430?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1677355879123092430/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1677355879123092430' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1677355879123092430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1677355879123092430'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/06/javascript-jmaki.html' title='JAVASCRIPT: JMAKI'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2948874798674258916</id><published>2008-06-05T00:57:00.000-07:00</published><updated>2008-06-05T00:58:41.099-07:00</updated><title type='text'>JAVA: Limit of primitive type</title><content type='html'>--------------------------------------------------------------------------------------&lt;br /&gt;종류 설명 저장 공간 값의 범위 (최소값~최대값)&lt;br /&gt;======================================================================================&lt;br /&gt;boolean 논리값 1 bit true / false&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;byte 부호 있는 정수 8 bits -128 ~ 127&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;char 유니코드 문자 16 bits \u0000 ~ \uFFFF&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;short 부호 있는 정수 16 bits -32768 ~ 32767&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;int 부호 있는 정수 32 bits -2147483648 ~ 2147483647&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;long 부호 있는 정수 64 bits -9223372036854775808 ~ 9223372036854775807&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;float IEEE 754 실수 32 bits 1.40239846E-45f&lt;br /&gt;~ (표현 가능 양수 범위)&lt;br /&gt;3.40282347E+38f&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;double IEEE 754 실수 64 bits 4.94065645841246544E-324&lt;br /&gt;~ (표현 가능 양수 범위)&lt;br /&gt;1.79769313486231570E+308&lt;br /&gt;--------------------------------------------------------------------------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2948874798674258916?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2948874798674258916/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2948874798674258916' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2948874798674258916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2948874798674258916'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/06/java-limit-of-primitive-type.html' title='JAVA: Limit of primitive type'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-5632690809886954209</id><published>2008-06-03T17:39:00.000-07:00</published><updated>2008-06-03T17:40:51.903-07:00</updated><title type='text'>ORACLE: find procedure &amp; function</title><content type='html'>select name,text from user_source where text like '%:???%'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5632690809886954209?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5632690809886954209/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5632690809886954209' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5632690809886954209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5632690809886954209'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/06/oracle-find-procedure-function.html' title='ORACLE: find procedure &amp; function'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-620941884104646876</id><published>2008-06-02T23:47:00.001-07:00</published><updated>2008-07-18T03:44:44.965-07:00</updated><title type='text'>ECLIPSE: memory error</title><content type='html'>&lt;div style="text-align: left;"&gt;이클립스 최신 버젼을 설치해 사용하다가 갑자기 JVM terminated. Exit code=-1 로 시작하는 메세지와 함께 이클립스가 구동되지 않는 경우가 발생한다.이렇게 되면 아예 이클립스가 구동되지 않는다. JDK를 여러가지 버젼을 설치해서 생긴 충돌문제 인가 했는데 의외의 부분에 문제가 있었다eclipse폴더안의 ecilpse.ini 파일을 보면 아래와 비슷한 형식으로 구성되는데&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;-showsplashorg.eclipse.platform--launcher.XXMaxPermSize256M-vmargs-Dosgi.requiredJavaVersion=1.5-Xms40m-Xmx512m &lt;br /&gt;&lt;/pre&gt;이때  --launcher.XXMaxPermSize256M이 부분이 문제를 일으켰다.  윗 구문과 아래 구문사이에 공백이 하나도 없어 발생하는듯 하다.  256M부분앞에 공백 하나만 넣어주면 해결된다.&lt;br /&gt;또한 perzamspace도 웬만하면 512로 올려 주는 것이 좋다.&lt;br /&gt;&lt;br /&gt;그리고 현제까지도(3.4 가니메데가 나온 지금에도) sun vm을 제대로 인식하지 못하는 버그가 있다. ini 파일에 -vm 옵션으로 javaw를 직접 지정해 주면 해결 된다.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;eclipse.ini 내용을 보면&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(204, 204, 204); padding: 10px; background-color: rgb(231, 231, 231);"&gt;-showsplash&lt;br /&gt;org.eclipse.platform&lt;br /&gt;--launcher.XXMaxPermSize&lt;br /&gt;128M&lt;br /&gt;-vmargs&lt;br /&gt;-Dosgi.requiredJavaVersion=1.5&lt;br /&gt;-Xms128m&lt;br /&gt;-Xmx512m    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;요런 내용이 있습니다..&lt;br /&gt;&lt;br /&gt;자.. 보면&lt;br /&gt;&lt;br /&gt;XXMaxPermSize : class 정보를 담고 있는 공간.&lt;br /&gt;Xms128m : 초기 시작시 메모리 공간(최소 메모리 공간)&lt;br /&gt;Xmx512m : 최대 메모리 공간&lt;br /&gt;&lt;br /&gt;ps. window 같은&lt;span id="callbacknestismylifetistorycom558783" style="width: 1px; height: 1px; float: right;"&gt;&lt;embed allowscriptaccess="always" id="bootstrapperismylifetistorycom558783" src="http://ismylife.tistory.com/plugin/CallBack_bootstrapperSrc" wmode="transparent" type="application/x-shockwave-flash" enablecontextmenu="false" flashvars="&amp;amp;callbackId=ismylifetistorycom558783&amp;amp;host=http://ismylife.tistory.com&amp;amp;embedCodeSrc=http%3A%2F%2Fismylife.tistory.com%2Fplugin%2FCallBack_bootstrapper%3F%26src%3Dhttp%3A%2F%2Fcfs.tistory.com%2Fblog%2Fplugins%2FCallBack%2Fcallback%26id%3D55%26callbackId%3Dismylifetistorycom558783%26destDocId%3Dcallbacknestismylifetistorycom558783%26host%3Dhttp%3A%2F%2Fismylife.tistory.com%26float%3Dleft" swliveconnect="true" width="1" height="1"&gt;&lt;/embed&gt;&lt;/span&gt; 경우 최대 메모리 공간이 시스템의 50% 이하로 설정 해줘야 한다고 합니다.&lt;br /&gt;그 이상을 했을경우 eclipse 실행이 안되고 죽는다고 합니다.&lt;br /&gt;(확인은 못했습니다. 전 비스타라서.. ;; )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-620941884104646876?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/620941884104646876/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=620941884104646876' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/620941884104646876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/620941884104646876'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/06/eclipse-jvm-terminated-exit-code-1.html' title='ECLIPSE: memory error'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3249655739011878873</id><published>2008-05-28T06:31:00.000-07:00</published><updated>2008-05-30T01:42:29.078-07:00</updated><title type='text'>JAVAFX: START</title><content type='html'>&lt;a href="http://java.sun.com/javafx/downloads/"&gt;http://java.sun.com/javafx/downloads/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/scripting/javafx/ria_1/#1"&gt;http://java.sun.com/developer/technicalArticles/scripting/javafx/ria_1/#1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;eclipse plugin&lt;br /&gt;&lt;a href="https://openjfx.dev.java.net/javafx-eclipse-plugin-install.html"&gt;https://openjfx.dev.java.net/javafx-eclipse-plugin-install.html&lt;/a&gt;&lt;br /&gt;Help &gt; Software Updates &gt; Find and Install.&lt;br /&gt;&lt;a href="http://download.java.net/general/openjfx/plugins/eclipse/site.xml"&gt;http://download.java.net/general/openjfx/plugins/eclipse/site.xml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;doc&lt;br /&gt;&lt;a href="https://openjfx.dev.java.net/JavaFX_Programming_Language.html"&gt;https://openjfx.dev.java.net/JavaFX_Programming_Language.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;study&lt;br /&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/scripting/javafxpart1/"&gt;http://java.sun.com/developer/technicalArticles/scripting/javafxpart1/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/scripting/javafx/lc/part1/index.html"&gt;http://java.sun.com/developer/technicalArticles/scripting/javafx/lc/part1/index.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://download.java.net/general/openjfx/demos/tutorial.jnlp" target="_blank" s_oidt="0" s_oid="http://download.java.net/general/openjfx/demos/tutorial.jnlp"&gt;JavaFX Script 2D Graphics Tutorial&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-3249655739011878873?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3249655739011878873/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3249655739011878873' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3249655739011878873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3249655739011878873'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/05/javafx-start.html' title='JAVAFX: START'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6417367967062202007</id><published>2008-05-25T22:42:00.000-07:00</published><updated>2008-05-25T22:43:30.653-07:00</updated><title type='text'>JAVA: JAVA REVERSE COMFILER</title><content type='html'>jad 실행&lt;br /&gt;&lt;br /&gt;ex) jad -sjava -8 xxx.class&lt;br /&gt;&lt;br /&gt;-sjava 결과 파일의 확장자를 .java로 바꾼다.&lt;br /&gt;-8 유니코드를 안시로 바꾼다. (한글처리)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6417367967062202007?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6417367967062202007/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6417367967062202007' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6417367967062202007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6417367967062202007'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/05/java-java-reverse-comfiler.html' title='JAVA: JAVA REVERSE COMFILER'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6377016000962852503</id><published>2008-05-20T01:01:00.000-07:00</published><updated>2008-05-20T01:03:06.266-07:00</updated><title type='text'>FRAMWORK: Shale Framework</title><content type='html'>&lt;a href="http://shale.apache.org/"&gt;http://shale.apache.org/&lt;/a&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/1946138886667006027-6377016000962852503?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6377016000962852503/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6377016000962852503' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6377016000962852503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6377016000962852503'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/05/shale-framework.html' title='FRAMWORK: Shale Framework'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4411522079209796716</id><published>2008-05-14T08:11:00.001-07:00</published><updated>2008-06-08T21:45:13.071-07:00</updated><title type='text'>SCRIPT: motion &amp; effect</title><content type='html'>&lt;a href="http://jstween.blogspot.com/"&gt;http://jstween.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;var t = new Tween(object,property,easing,start,end,duration,suffixe);&lt;br /&gt;이런식으로 간단하게 모션효과를 구현할 수 있다.&lt;br /&gt;&lt;br /&gt;effect javascript&lt;br /&gt;&lt;a href="http://firejune.com/index.php?pl=832#0"&gt;http://firejune.com/index.php?pl=832#0&lt;/a&gt;&lt;br /&gt;이것도 괜찮아 보인다.&lt;br /&gt;&lt;br /&gt;JavaScript Effect Libraries&lt;br /&gt;&lt;a href="http://snook.ca/archives/javascript/javascript_effe/"&gt;http://snook.ca/archives/javascript/javascript_effe/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-4411522079209796716?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4411522079209796716/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4411522079209796716' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4411522079209796716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4411522079209796716'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/05/script-motion-tween.html' title='SCRIPT: motion &amp; effect'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3790831745235923023</id><published>2008-04-15T18:32:00.000-07:00</published><updated>2008-04-15T18:35:09.711-07:00</updated><title type='text'>AJAX: PROTOTYPE SETSTYLE()</title><content type='html'>Prototype Framework에서는 Element에 css가 아닌 자바스크립트로 스타일을 적용할 수 있게 하는 setStyle()이라는 메서드를 제공하고 있다. 물론 Element.style.display 같은 식으로 스타일에 접근하거나 할 수 있지만 setStyle()의 좋은 점은 css에서 적용하는 것처럼 스타일을 한꺼번에 적용할 수 있다. &lt;br /&gt;&lt;br /&gt;Element의 Selector는 당연히 이것저것 있지만 가장 기본적인 getElementById를 가지고 설명하자. &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(Language : javascript)&lt;br /&gt;$("elementID").setStyle({&lt;br /&gt;    'position': 'relative',&lt;br /&gt;    'width':    '100px',&lt;br /&gt;    'height':     '100px',&lt;br /&gt;    'overflow': 'hidden',&lt;br /&gt;    'border':   'solid 1px #808080'&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;마치 CSS를 사용한 것처럼 익숙한 스타일로 한꺼번에 스타일을 적용할 수 있다. px를 사용할 때 100px처럼 붙혀서 쓰는 것이 좋다. px앞에 공백이 있으면 브라우저에 따라 안 먹을 수 있다.&lt;br /&gt;&lt;br /&gt;스타일 프로퍼티쪽은 꼭 홑따옴표(')로 묶어주지 않아도 상관없기는 하지만 float처럼 reserved word와 겹치는 경우에는 문제가 생길 수 있기 때문에 이런 충돌은 홑따옴표로 묶어서 해결할 수 있다.&lt;br /&gt;&lt;br /&gt;근데 setStyle()을 사용할 때 주의할 점은 -가 붙는 CSS 프로퍼티에 대한 부분이다.&lt;br /&gt;&lt;br /&gt;CSS에서도 내부 스타일과 외부 &amp;lt;style&amp;rt;태그로 할때 프로퍼티의 이름이 다른 경우들이 좀 있는데 그것처럼 여기서도 주의해야 할 부분이 있다.&lt;br /&gt;&lt;br /&gt;background-color 이나 font-size처럼 CSS 프로퍼티가 - 가 붙는 경우에는 backgroundColor 나 fontSize 처럼 카멜방식으로 - 가 없이 작성해 주어야 동작을 한다. 모든 - 가 붙는 프로퍼티가 다 그런지 까지는 확인하지 못했지만 위의 2가지는 확실히 - 없이 작성해 주어야 한다. 대소문자를 가리기 때문에 반드시 위와같은 카멜방식이어야 한다.&lt;br /&gt;&lt;br /&gt;이것때문에 한참 해맸다. 처음에는 동적으로 생성한 엘리먼트에는 setStyle이 안 먹나 해서 이것저것 했었는데 결국 스타일이 적용 안된게 저 문제 때문이었다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;덧) 각 스타일은 콤마(,)를 이용해서 구분하는데 마지막에도 콤마를 붙혀주는 실수를 할 경우 Firefox에서는 잘 돌아가지만 IE에서는(내 경우는 7) 에러가 난다. 더군다나 콤마때문에 렌더링 오류가 나는데 생뚱맞은 곳에서 오류메시지가 나기 때문에 디버깅 하기도 쉽지 않다. 콤마에 주의!!&lt;br /&gt;&lt;br /&gt;덧) (2008.3.6) CSS의 프로퍼티를 -를 쓰지 않고 대신 카멜방식처럼 대문자로 이어붙히는 것은 자바스크립트 자체의 특징으로 특정 프로퍼티에 대시(-)를 사용할 수 없게 되어있다고 한다. 프로토타입의 특징은 아니었다.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.outsider.ne.kr/114"&gt;http://blog.outsider.ne.kr/114&lt;/a&gt;에서 인용&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-3790831745235923023?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3790831745235923023/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3790831745235923023' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3790831745235923023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3790831745235923023'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/04/ajax-prototype-setstyle.html' title='AJAX: PROTOTYPE SETSTYLE()'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2127055740995421697</id><published>2008-04-02T17:33:00.000-07:00</published><updated>2008-04-02T17:36:05.562-07:00</updated><title type='text'>SCRIPT: EDITOR</title><content type='html'>&lt;a href="http://www.fckeditor.net/"&gt;http://www.fckeditor.net/&lt;/a&gt;에서 다운 받아서&lt;br /&gt;사용 할 수 있다.&lt;br /&gt;java에서는 조금 귀찮은 커스터 마이징이 필요하다.&lt;br /&gt;&lt;a href="http://blog.naver.com/devstory/130007533735" target="_new"&gt;http://blog.naver.com/devstory/130007533735&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2127055740995421697?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2127055740995421697/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2127055740995421697' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2127055740995421697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2127055740995421697'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/04/script-editor.html' title='SCRIPT: EDITOR'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1871072679128400922</id><published>2008-04-02T17:28:00.000-07:00</published><updated>2008-09-25T05:29:53.941-07:00</updated><title type='text'>JAVA: USE ORACLE CLOB IN JDBC</title><content type='html'>&lt;pre&gt;&lt;span style="font-family:Georgia;"&gt;&lt;/span&gt;&lt;br /&gt;public static Clob getClob(String clobValue, Connection conn) throws Exception{&lt;br /&gt; Clob newClob= null;&lt;br /&gt; if(clobValue!=null) {&lt;br /&gt;  try{&lt;br /&gt;   newClob = oracle.sql.CLOB.createTemporary(conn, true, oracle.sql.CLOB.DURATION_SESSION);&lt;br /&gt;   if(newClob!=null) {&lt;br /&gt;    ((oracle.sql.CLOB)newClob).putString(1, clobValue);&lt;br /&gt;   }&lt;br /&gt;  }  catch (Exception e){&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; return newClob;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;입력 시에는 이런식으로 Clob타잎을 생성한후에 preparestatement의 setClob()을 사용 하면 된다.&lt;br /&gt;버그가 있다고는 하는데.. 아직 경험해 보지는 못했다.&lt;br /&gt;결국 경험하게 되었다. &lt;strong&gt;pooling된 connection에서는 작동하지 않는다&lt;/strong&gt;.&lt;br /&gt;다시 해결 방법을 찾았다. &lt;a href="http://wiki.caucho.com/Database_FAQ67890"&gt;http://wiki.caucho.com/Database_FAQ67890&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Will the pool be automocatically set to queue if number of connections requested&lt;br /&gt;is more than max connections?&lt;br /&gt;You mean block the waiting thread. Yes.&lt;br /&gt;"queue" doesn't make sense in this context.&lt;br /&gt;If you're using the&lt;br /&gt;PooledDataSource instead of the Driver SPI, you'll get the Oracle connection&lt;br /&gt;directly.&lt;br /&gt;Otherwise, you need to case the Connection to&lt;br /&gt;com.caucho.sql.UserConnectionAdapter and call getConnection() to get the&lt;br /&gt;underlying Oracle connection.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;코드는 이렇게 바뀐다.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   newClob = oracle.sql.CLOB.createTemporary&lt;span style="color: rgb(255, 0, 0);"&gt;   (((com.caucho.sql.UserConnectionAdapter)conn).getConnection()&lt;/span&gt; , true, oracle.sql.CLOB.DURATION_SESSION);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;resin의 connection adapter에서 oracle의 connection을 반환하여 처리 한다.&lt;br /&gt;&lt;br /&gt;그리고 조회 시에는 이런 식으로 받아 올 수가 있다. CLOB의 stringValue()라는 녀석을 쓰면 딱 좋겠지만 써보면 'java.sql.SQLException: Conversion to String failed' 에러를 내버린다.&lt;br /&gt;&lt;br /&gt;다시 에러 발생. jennifer를 사용 할 경우 rapper class가 2중으로 되어 버려서 위의 방법으로&lt;br /&gt;underlying connection을 얻을 수 없다.&lt;br /&gt;&lt;a href="http://www.caucho.com/resin-javadoc/com/caucho/sql/UserConnection.html"&gt;http://www.caucho.com/resin-javadoc/com/caucho/sql/UserConnection.html&lt;/a&gt;&lt;br /&gt;일단 자료 수집중.&lt;br /&gt;&lt;br /&gt;resin 3.0 이상에서는 UserConnection 에 unwrap() method가 있어서 별 문제 없어 보이긴 하나 현제 환경은 resin 2.1이라는게 문제.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   CLOB c = (CLOB)rs.getClob(1);&lt;br /&gt;   matchInfo.setIntro( c.getSubString(1, (int)c.length()) );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;베베 꼬아서 jdbc를 개발한 오라클 놈들에게 박수를 보내며...&lt;br /&gt;&lt;br /&gt;이게 도움이 될지는 모르겠지만...&lt;br /&gt;// first, create statement to insert&lt;br /&gt;OraclePreparedStatement ps;&lt;br /&gt;ps = (OraclePreparedStatement )con.prepareStatement("INSERT INTO Test (text) VALUES (?)");&lt;br /&gt;&lt;br /&gt;// create a temporary CLOB and write to it&lt;br /&gt;CLOB clob = CLOB.createTemporary(con, true, CLOB.DURATION_SESSION);&lt;br /&gt;Writer out = clob.getCharacterOutputStream();&lt;br /&gt;out.write(myLongText);&lt;br /&gt;&lt;br /&gt;// set the CLOB on the OraclePreparedStatement and execute&lt;br /&gt;ps.setCLOB(1, clob);&lt;br /&gt;ps.executeUpdate();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://72.14.235.104/search?q=cache:6F942r0aiRUJ:forums.oracle.com/forums/thread.jsp%3Fforum%3D99%26thread%3D211460%26message%3D584735+CLOB.createTemporary(conn,+true,+CLOB.DURATION_SESSION)%3B&amp;hl=ko&amp;ct=clnk&amp;cd=1&amp;gl=kr&amp;client=firefox-a"&gt;이것도&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1871072679128400922?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1871072679128400922/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1871072679128400922' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1871072679128400922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1871072679128400922'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/04/java-use-oracle-clob-in-jdbc_02.html' title='JAVA: USE ORACLE CLOB IN JDBC'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1458692030741937461</id><published>2008-04-01T19:21:00.000-07:00</published><updated>2008-04-02T17:32:24.457-07:00</updated><title type='text'>AJAX: NOTICES TO ELEMENT MOVING</title><content type='html'>&lt;pre&gt;&lt;br /&gt;function bindMatch(){&lt;br /&gt; var allNodes = $("src");&lt;br /&gt; for(i = allNodes.length - 1; i &gt;= 0 ; i--) {&lt;br /&gt;  if (allNodes[i].selected == true){&lt;br /&gt;   $("target").appendChild(allNodes[i]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;이런식으로 element를 이동 시킬때는 밑에서 부터 이동 시켜야 한다.&lt;br /&gt;참조하는 [i]의 값이 변하기 때문이다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1458692030741937461?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1458692030741937461/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1458692030741937461' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1458692030741937461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1458692030741937461'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/04/ajax-notices-to-element-moving.html' title='AJAX: NOTICES TO ELEMENT MOVING'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-5561952868633797253</id><published>2008-03-30T19:44:00.001-07:00</published><updated>2008-04-02T17:33:04.597-07:00</updated><title type='text'>AJAX: LOADING</title><content type='html'>간단하게 LOADING을 구현 할 수 있게 도와 준다.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://aka-fotos.de/protoload/"&gt;http://aka-fotos.de/protoload/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;적당히 설치 한후에 &lt;br /&gt;&lt;br /&gt;prototype 에서 &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function doSearch(arg){&lt;br /&gt; var url = 'xxx.xml';&lt;br /&gt;  var myAjax = new Ajax.Request(&lt;br /&gt;  url, &lt;br /&gt;  {&lt;br /&gt;      //asynchronous: false,&lt;br /&gt;   method: 'post', &lt;br /&gt;   parameters: {arg:arg}, &lt;br /&gt;   onComplete: completeFunction,&lt;br /&gt;   onFailure: reportError,&lt;br /&gt;   onLoading: function() {&lt;br /&gt;             $("target").startWaiting('bigWaiting');&lt;br /&gt;         }&lt;br /&gt;   &lt;br /&gt;  });&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;처럼 onLoading에 등록하고&lt;br /&gt;&lt;br /&gt;    $("target").stopWaiting(); 으로 적당한 (complete function 쯤)에서 닫아 주면 된다.&lt;br /&gt;&lt;br /&gt;ps. 위치에 제대로 나오지않을 경우엔 &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;1. 스크린 오브젝트를 appendChild하는 부분 &lt;br /&gt;원본&lt;br /&gt;(element.offsetParent || document.body).appendChild(element._loading = e);&lt;br /&gt;수정본&lt;br /&gt;document.body.appendChild(element._loading = e);&lt;br /&gt;&lt;br /&gt;2. 스크린오브젝트 위치 구하는 부분&lt;br /&gt;원본&lt;br /&gt;var left = this.offsetLeft, &lt;br /&gt;             top = this.offsetTop,&lt;br /&gt;             width = this.offsetWidth,&lt;br /&gt;             height = this.offsetHeight,&lt;br /&gt;             l = this._loading;&lt;br /&gt;&lt;br /&gt;수정본&lt;br /&gt;pos = Position.cumulativeOffset(this);&lt;br /&gt;var left = pos[0], &lt;br /&gt;     top = pos[1],&lt;br /&gt;     width = this.offsetWidth,&lt;br /&gt;     height = this.offsetHeight,&lt;br /&gt;     l = this._loading;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;처럼 수정해 주면 된다. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://10year.tistory.com/39"&gt;http://10year.tistory.com/39&lt;/a&gt; 에서 인용.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5561952868633797253?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5561952868633797253/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5561952868633797253' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5561952868633797253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5561952868633797253'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/03/ajax-loading-process.html' title='AJAX: LOADING'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7261559631016894223</id><published>2008-03-25T00:23:00.000-07:00</published><updated>2008-03-25T00:25:16.101-07:00</updated><title type='text'>ORACLE: SHOW VIEW</title><content type='html'>USER_VIEWS에 질의 함으로 VIEW의 정보를 알아 낼 수 있다.&lt;br /&gt;&lt;blockquote&gt;select TEXT from user_views where view_name= :VIEW NAME&lt;/blockquote&gt;&lt;br /&gt;LONG TYPE으로 저장 되어 있으니 주의.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7261559631016894223?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7261559631016894223/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7261559631016894223' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7261559631016894223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7261559631016894223'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/03/oracle-show-view.html' title='ORACLE: SHOW VIEW'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946138886667006027.post-5116520838299124920</id><published>2008-03-19T17:21:00.000-07:00</published><updated>2008-03-19T17:23:45.974-07:00</updated><title type='text'>ECLIPSE: ECLIPSE.INI</title><content type='html'>NO MORE 'OUT OF MEMORY'&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;-showsplash&lt;br /&gt;org.eclipse.platform&lt;br /&gt;–launcher.XXMaxPermSize&lt;br /&gt;256m&lt;br /&gt;-vmargs&lt;br /&gt;-Xms256m&lt;br /&gt;-Xmx512m&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;blockquote&gt;eclipse -vmargs -XX:PermSize=256M -XX:MaxPermSize=512M&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5116520838299124920?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5116520838299124920/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5116520838299124920' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5116520838299124920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5116520838299124920'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/03/eclipse-eclipseini.html' title='ECLIPSE: ECLIPSE.INI'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1983421764182383837</id><published>2008-03-15T22:49:00.000-07:00</published><updated>2008-03-15T22:55:44.337-07:00</updated><title type='text'>AJAX : VIEWER API (Highslide js)</title><content type='html'>&lt;a href="http://vikjavev.no/highslide/#examples"&gt;&lt;br /&gt;Highslide js&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;간단하게 js 이펙트(이미지 뷰 관련)를 구현 할 수 있게 하여 준다. 개인 사용자가 아닐 경우 약 100$정도의 비용만 지불하면 누구라도 사용 가능하다.&lt;br /&gt;&lt;a href="http://hyungbok.blogspot.com"&gt; 개인 홈피 &lt;/a&gt;에 적용 시켜 보았는데 꽤 맘에 든다.&lt;br /&gt;파일 업로드도 여의치 않아 블로그 템플릿에 url로 js와 graphics와 css를 링크해서 사용시켰다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1983421764182383837?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1983421764182383837/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1983421764182383837' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1983421764182383837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1983421764182383837'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/03/ajax-viewer-api-highslide-js.html' title='AJAX : VIEWER API (Highslide js)'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-8559696471106936975</id><published>2008-03-05T17:36:00.000-08:00</published><updated>2008-03-05T17:37:18.954-08:00</updated><title type='text'>ORACLE : SHOW CONSTRAINT</title><content type='html'>select *&lt;br /&gt;from user_constraints&lt;br /&gt;where constraint_name = :const_name;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-8559696471106936975?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/8559696471106936975/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=8559696471106936975' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8559696471106936975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/8559696471106936975'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/03/oracle-show-constraint.html' title='ORACLE : SHOW CONSTRAINT'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7313582106895585544</id><published>2008-03-05T17:35:00.000-08:00</published><updated>2008-03-05T17:36:07.322-08:00</updated><title type='text'>HTML : DIV TEXT CUT</title><content type='html'>&amp;lt;div style='line-height:1.3em; float:left; padding-top:5px; width:143px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;'&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7313582106895585544?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7313582106895585544/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7313582106895585544' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7313582106895585544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7313582106895585544'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/03/html-div-text-cut.html' title='HTML : DIV TEXT CUT'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1927595982277687165</id><published>2008-02-29T02:18:00.000-08:00</published><updated>2008-02-29T02:19:07.090-08:00</updated><title type='text'>JAVA : USE CALENDAR</title><content type='html'>&lt;pre&gt;&lt;br /&gt; boolean isAvailableDate(EventMainBean eventMain) throws Exception{&lt;br /&gt;  boolean result = false;&lt;br /&gt;  &lt;br /&gt;  String pattern = "yyyyMMdd";&lt;br /&gt;&lt;br /&gt;  Calendar calendar = Calendar.getInstance();&lt;br /&gt;  &lt;br /&gt;  SimpleDateFormat formatter = new SimpleDateFormat(pattern, new Locale("ko","KOREA"));&lt;br /&gt;  &lt;br /&gt;  Date stDate = formatter.parse(eventMain.getDistributionStDate());&lt;br /&gt;  Date edDate = formatter.parse(eventMain.getDistributionEdDate());&lt;br /&gt;  &lt;br /&gt;  Calendar stDateInCalendar = (Calendar)calendar.clone();&lt;br /&gt;  stDateInCalendar.setTime(stDate);&lt;br /&gt;  &lt;br /&gt;  Calendar edDateInCalendar = (Calendar)calendar.clone();&lt;br /&gt;  edDateInCalendar.setTime(edDate);&lt;br /&gt;  edDateInCalendar.add(Calendar.DATE, 1);&lt;br /&gt;  &lt;br /&gt;  if ( calendar.after(stDateInCalendar) &amp;&amp; calendar.before(edDateInCalendar) ) &lt;br /&gt;   result = true ;&lt;br /&gt;  &lt;br /&gt;  System.out.println(calendar.after(stDateInCalendar));&lt;br /&gt;  System.out.println(calendar.before(edDateInCalendar));&lt;br /&gt;  System.out.println(result);&lt;br /&gt;  return result;&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1927595982277687165?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1927595982277687165/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1927595982277687165' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1927595982277687165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1927595982277687165'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/02/java-use-calendar.html' title='JAVA : USE CALENDAR'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3485183909269503274</id><published>2008-02-27T21:19:00.000-08:00</published><updated>2008-12-08T18:38:51.628-08:00</updated><title type='text'>DISIGN PATTERN : CORE J2EE PATTERNS</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_nbO9oKbIV5I/R8ZE4Q60qaI/AAAAAAAAAN8/2kbE0IFiqew/s1600-h/1285066209.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_nbO9oKbIV5I/R8ZE4Q60qaI/AAAAAAAAAN8/2kbE0IFiqew/s400/1285066209.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5171896955486644642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;refer to this site&lt;br /&gt;&lt;a href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html"&gt;&lt;br /&gt;Core J2EE Patterns: Patterns index page&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-3485183909269503274?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3485183909269503274/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3485183909269503274' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3485183909269503274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3485183909269503274'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/02/pattern-core-j2ee-patterns.html' title='DISIGN PATTERN : CORE J2EE PATTERNS'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_nbO9oKbIV5I/R8ZE4Q60qaI/AAAAAAAAAN8/2kbE0IFiqew/s72-c/1285066209.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946138886667006027.post-7372323728329215744</id><published>2008-02-27T18:23:00.000-08:00</published><updated>2008-02-27T20:19:18.647-08:00</updated><title type='text'>DESIGN PATTERN : J2EE</title><content type='html'>refer to this page&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/blueprints/patterns/catalog.html"&gt;&lt;br /&gt;sun bluePrint - patterns page&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/DEA2eIX.html"&gt;&lt;br /&gt;sun guidelines - designing enterprise applications&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7372323728329215744?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7372323728329215744/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7372323728329215744' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7372323728329215744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7372323728329215744'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/02/design-pattern-j2ee.html' title='DESIGN PATTERN : J2EE'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2842189766644151024</id><published>2008-02-20T22:57:00.000-08:00</published><updated>2008-02-20T23:17:25.839-08:00</updated><title type='text'>JAVA : USE DATAFORMAT</title><content type='html'>&lt;DIV CLASS=POST&gt;   &lt;br /&gt; &lt;DIV CLASS=POST_HEAD&gt;&lt;br /&gt; &lt;TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%&gt;&lt;br /&gt; &lt;TR&gt;&lt;TD WIDTH=80%&gt;&lt;DIV CLASS=POST_TTL&gt;&lt;a name="820370" title="[Date]날짜와 시간표시"&gt;[Date]날짜와 시간표시&lt;/a&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;br /&gt;  &lt;TD WIDTH=20% ALIGN=RIGHT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;br /&gt; &lt;/TABLE&gt;&lt;br /&gt; &lt;/DIV&gt;&lt;br /&gt; &lt;DIV CLASS=POST_BODY&gt;&lt;br /&gt; &lt;h2&gt;&lt;span style="COLOR: #f7a119"&gt;자바에서 날짜와 시간을 표시하는 방법&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;1. java.util package에 있는 Data나 Calendar클래스를 이용하는 방법&lt;br&gt;2. java.text package에 있는 DateFormat, SimpleDateFormat, DateFormatSymbols 클래스들을 이용 &lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;[&lt;i&gt;&lt;b&gt;SimpleDateFormat&lt;/b&gt;&lt;/i&gt; 클래스] &lt;p&gt;원하는 시간, 날짜표기를 쉽게 할 수 있는 방법중의 하나로 원하는 포맷을 마음대로 지정할 수 있다.&lt;br&gt;&lt;ul&gt;&lt;li&gt;1999년 11월 10일 &lt;li&gt;1999/11/10 &lt;li&gt;1999년 11월 10일 오전 10시 55분 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;import java.io.*;&lt;br&gt;import java.util.*;&lt;br&gt;import java.text.*;&lt;/p&gt;&lt;p&gt;public class SimpleDateFormatTest {&lt;/p&gt;&lt;p&gt;&amp;nbsp;public static void main(String args[]){&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;Date date;&lt;br&gt;&amp;nbsp;&amp;nbsp;SimpleDateFormat formatter;&lt;br&gt;&amp;nbsp;&amp;nbsp;String pattern = "&lt;strong&gt;&lt;span style="COLOR: #990000"&gt;yyyy년 M월 d일&amp;nbsp; a h시 m분&lt;/span&gt;&lt;/strong&gt;";&lt;br&gt;&amp;nbsp;&amp;nbsp;String result;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;formatter = new SimpleDateFormat(&lt;strong&gt;&lt;span style="COLOR: #990000"&gt;pattern&lt;/span&gt;&lt;/strong&gt;, new Locale("ko","KOREA"));&lt;br&gt;&amp;nbsp;&amp;nbsp;date = new Date();&lt;br&gt;&amp;nbsp;&amp;nbsp;result = formatter.format(date);&lt;br&gt;&amp;nbsp;&amp;nbsp;System.out.println("result : " + result);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp; public String en(String ko) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String new_str = null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt;&amp;nbsp;&amp;nbsp; new_str&amp;nbsp; = new String(ko.getBytes("KSC5601"), "8859_1");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch(UnsupportedEncodingException ex) { }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new_str;&lt;br&gt;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; public String ko(String en) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String new_str = null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt;&amp;nbsp;&amp;nbsp; new_str&amp;nbsp; = new String(en.getBytes("8859_1"), "KSC5601");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch(UnsupportedEncodingException ex) { }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new_str;&lt;br&gt;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;** 참고 ** &lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#000000"&gt;&lt;!--&lt;table bgcolor="#000000"&gt;&lt;tr&gt;&lt;td&gt;--&gt;&lt;table bgcolor="#000000" border="0"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td align="middle" colspan="4"&gt;SimpleDateFormat에서 사용하는 Symbol text&lt;/td&gt;&lt;tr&gt;&lt;tr bgcolor="#7fc77f"&gt;&lt;th&gt;Symbol &lt;/th&gt;&lt;th&gt;Meaning &lt;/th&gt;&lt;th&gt;Presentation &lt;/th&gt;&lt;th&gt;Example&lt;/th&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;G &lt;/th&gt;&lt;td&gt;era designator &lt;/td&gt;&lt;td align="middle"&gt;(Text) &lt;/td&gt;&lt;td align="middle"&gt;AD&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;y &lt;/th&gt;&lt;td&gt;year &lt;/td&gt;&lt;td align="middle"&gt;(Number) &lt;/td&gt;&lt;td align="middle"&gt;1996&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;M &lt;/th&gt;&lt;td&gt;month in year &lt;/td&gt;&lt;td align="middle"&gt;(Text &amp;amp; Number) &lt;/td&gt;&lt;td align="middle"&gt;July &amp;amp; 07&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;d &lt;/th&gt;&lt;td&gt;day in month &lt;/td&gt;&lt;td align="middle"&gt;(Number) &lt;/td&gt;&lt;td align="middle"&gt;10&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;h &lt;/th&gt;&lt;td&gt;hour in am/pm (1~12)&lt;/td&gt;&lt;td align="middle"&gt;(Number) &lt;/td&gt;&lt;td align="middle"&gt;12&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;H &lt;/th&gt;&lt;td&gt;hour in day (0~23) &lt;/td&gt;&lt;td align="middle"&gt;(Number)&lt;/td&gt;&lt;td align="middle"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;m &lt;/th&gt;&lt;td&gt;minute in hour &lt;/td&gt;&lt;td align="middle"&gt;(Number)&lt;/td&gt;&lt;td align="middle"&gt;30&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;s &lt;/th&gt;&lt;td&gt;second in minute &lt;/td&gt;&lt;td align="middle"&gt;(Number)&lt;/td&gt;&lt;td align="middle"&gt;55&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;S &lt;/th&gt;&lt;td&gt;millisecond &lt;/td&gt;&lt;td align="middle"&gt;(Number) &lt;/td&gt;&lt;td align="middle"&gt;978&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;E &lt;/th&gt;&lt;td&gt;day in week &lt;/td&gt;&lt;td align="middle"&gt;(Text) &lt;/td&gt;&lt;td align="middle"&gt;Tuesday&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;D &lt;/th&gt;&lt;td&gt;day in year &lt;/td&gt;&lt;td align="middle"&gt;(Number)&lt;/td&gt;&lt;td align="middle"&gt;189&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;F &lt;/th&gt;&lt;td&gt;day of week in month &lt;/td&gt;&lt;td align="middle"&gt;(Number) &lt;/td&gt;&lt;td align="middle"&gt;2 (2nd Wed in July)&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;w &lt;/th&gt;&lt;td&gt;week in year &lt;/td&gt;&lt;td align="middle"&gt;(Number) &lt;/td&gt;&lt;td align="middle"&gt;27&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;W &lt;/th&gt;&lt;td&gt;week in month &lt;/td&gt;&lt;td align="middle"&gt;(Number) &lt;/td&gt;&lt;td align="middle"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;a &lt;/th&gt;&lt;td&gt;am/pm marker &lt;/td&gt;&lt;td align="middle"&gt;(Text) &lt;/td&gt;&lt;td align="middle"&gt;PM&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;k &lt;/th&gt;&lt;td&gt;hour in day (1~24) &lt;/td&gt;&lt;td align="middle"&gt;(Number) &lt;/td&gt;&lt;td align="middle"&gt;24&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;K &lt;/th&gt;&lt;td&gt;hour in am/pm (0~11)&lt;/td&gt;&lt;td align="middle"&gt;(Number) &lt;/td&gt;&lt;td align="middle"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;z &lt;/th&gt;&lt;td&gt;time zone &lt;/td&gt;&lt;td align="middle"&gt;(Text) &lt;/td&gt;&lt;td align="middle"&gt;Pacific Standard Time&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;' &lt;/th&gt;&lt;td&gt;escape for text &lt;/td&gt;&lt;td align="middle"&gt;(Delimiter)&lt;/td&gt;&lt;td align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;th&gt;''&lt;/th&gt;&lt;td&gt;single quote &lt;/td&gt;&lt;td align="middle"&gt;(Literal)&lt;/td&gt;&lt;td align="middle"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;!--&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;--&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;** 일반적으로 많이 사용되는 패턴들 ** &lt;table&gt;&lt;tbody&gt;&lt;tr bgcolor="#afd7d7"&gt;&lt;th&gt;Format Pattern&lt;/th&gt;&lt;th&gt;Result&lt;/th&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;"yyyy.MM.dd G 'at' hh:mm:ss z" &lt;/td&gt;&lt;td&gt;1996.07.10 AD at 15:08:56 PDT&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;"EEE, MMM d, ''yy"&lt;/td&gt;&lt;td&gt;Wed, July 10, '96&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;"h:mm a" &lt;/td&gt;&lt;td&gt;12:08 PM&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;"hh 'o''clock' a, zzzz"&lt;/td&gt;&lt;td&gt;12 o'clock PM, Pacific Daylight Time&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;"K:mm a, z"&lt;/td&gt;&lt;td&gt;0:00 PM, PST&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;"yyyyy.MMMMM.dd GGG hh:mm aaa"&lt;/td&gt;&lt;td&gt;1996.July.10 AD 12:08 PM&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;div class="posttaglist"&gt;&lt;a href="/tag/java.text" rel="tag"&gt;java.text&lt;/a&gt;,&amp;nbsp;&lt;a href="/tag/DateFormat" rel="tag"&gt;DateFormat&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;       &lt;!--&lt;br /&gt;       &lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&lt;br /&gt;      xmlns:dc="http://purl.org/dc/elements/1.1/"&lt;br /&gt;      xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"&gt;&lt;br /&gt;       &lt;rdf:Description&lt;br /&gt;         rdf:about="http://ilovejava.egloos.com/820370"&lt;br /&gt;         dc:identifier="http://ilovejava.egloos.com/820370"&lt;br /&gt;         dc:title="[Date]날짜와 시간표시"&lt;br /&gt;         trackback:ping="http://ilovejava.egloos.com/tb/820370"/&gt;&lt;br /&gt;       &lt;/rdf:RDF&gt;&lt;br /&gt;       --&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2842189766644151024?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2842189766644151024/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2842189766644151024' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2842189766644151024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2842189766644151024'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/02/date-1.html' title='JAVA : USE DATAFORMAT'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1326688703774498968</id><published>2008-02-13T18:43:00.000-08:00</published><updated>2008-02-13T18:49:05.845-08:00</updated><title type='text'>JAVA SCRIPT - DYNAMIC TABLE</title><content type='html'>&lt;PRE&gt;&lt;br /&gt;    function addEventPresentRow() {&lt;br /&gt; var row = document.createElement("tr");&lt;br /&gt; var cell = document.createElement("td");&lt;br /&gt; var cell2 = document.createElement("td");&lt;br /&gt;  &lt;br /&gt; var input = document.createElement("input");&lt;br /&gt; input.setAttribute("type", "text");&lt;br /&gt; input.setAttribute("name", "present");&lt;br /&gt;  &lt;br /&gt; var button = document.createElement('input');&lt;br /&gt; if(button.getAttribute('onclick')){ //else IE &lt;br /&gt;      button.setAttribute('onclick','delRow(this)');&lt;br /&gt; } else{ //IE&lt;br /&gt;     button = document.createElement("&amp;lt;input onclick=\"delRow(this)                     \"&gt;");&lt;br /&gt; }&lt;br /&gt; button.setAttribute("type", "button");&lt;br /&gt; button.setAttribute("value", "-");&lt;br /&gt;  &lt;br /&gt; cell.appendChild(input);&lt;br /&gt; row.appendChild(cell);&lt;br /&gt; cell2.appendChild(button);&lt;br /&gt; row.appendChild(cell2);&lt;br /&gt;  &lt;br /&gt; document.getElementById("targetBody").appendChild(row);&lt;br /&gt;    }&lt;br /&gt;&lt;/PRE&gt; &lt;br /&gt;&lt;PRE&gt; &lt;br /&gt;    function delEventPresentRow(buttonObj) {&lt;br /&gt; var tableBody = document.getElementById("targetBody");&lt;br /&gt; var index = buttonObj.parentElement.parentElement.rowIndex;&lt;br /&gt; tableBody.removeChild(tableBody.childNodes[index]);&lt;br /&gt;    }&lt;br /&gt;&lt;/PRE&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1326688703774498968?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1326688703774498968/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1326688703774498968' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1326688703774498968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1326688703774498968'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/02/java-script-dynamic-table.html' title='JAVA SCRIPT - DYNAMIC TABLE'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2106452067653492481</id><published>2008-02-12T22:49:00.000-08:00</published><updated>2008-02-12T23:02:58.727-08:00</updated><title type='text'>JAVA SCRIPT - setAttribute: ONCLICK</title><content type='html'>당황스럽게도 IE에선 setAttribute에서 onclick을 사용하지 못한다.&lt;br /&gt;다음과 같은 방법으로 우회하자. &lt;br /&gt;&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;    var button = document.createElement('input');&lt;br /&gt;    if(obj.getAttribute('onclick')){ //IE 외&lt;br /&gt;        button.setAttribute('onclick',doDel(this)');&lt;br /&gt;    } else{ //IE &lt;br /&gt;         button = document.createElement('&amp;lt;input onclick="doDel(this)"&gt;');&lt;br /&gt;    }&lt;br /&gt;    button.setAttribute("type", "button");&lt;br /&gt;    button.setAttribute("value", "delete");&lt;br /&gt;&lt;/PRE&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2106452067653492481?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2106452067653492481/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2106452067653492481' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2106452067653492481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2106452067653492481'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/02/java-script-setattribute-onclick.html' title='JAVA SCRIPT - setAttribute: ONCLICK'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3992209324437228823</id><published>2008-02-11T21:44:00.000-08:00</published><updated>2008-02-11T23:56:44.429-08:00</updated><title type='text'>JAVA SCRIPT - COOKIE</title><content type='html'>쿠키 쓰기&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;function setCookieDay( name, value, expiredays )&lt;br /&gt;{&lt;br /&gt;    var todayDate = new Date();&lt;br /&gt;    todayDate.setDate( todayDate.getDate() + expiredays );&lt;br /&gt;    document.cookie = name + "=" + escape( value ) + "; path=/;&lt;br /&gt;    expires="   +   todayDate.toGMTString() + "; domain=xxx.com;" &lt;br /&gt;    //domain을 사용하게 되면 하위도메인에서도 공유가 가능하다.&lt;br /&gt;}&lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;BR/&gt;&lt;BR/&gt;&lt;br /&gt;쿠키 가져오기&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;function getCookie(name){&lt;br /&gt;    var idx_s = document.cookie.indexOf(name + "=");&lt;br /&gt;    var idx_e = 0;&lt;br /&gt;    if (idx_s != -1){&lt;br /&gt; idx_s += name.length + 1;&lt;br /&gt; idx_e = document.cookie.indexOf(";",idx_s);&lt;br /&gt; if (idx_e == -1){&lt;br /&gt;     idx_e = document.cookie.length;&lt;br /&gt; }&lt;br /&gt;    }else{&lt;br /&gt; return "";&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return document.cookie.substring(idx_s,idx_e);&lt;br /&gt;}&lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;a href="http://techpatterns.com/downloads/javascript_cookies.php"&gt;&lt;br /&gt;http://techpatterns.com/downloads/javascript_cookies.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-3992209324437228823?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3992209324437228823/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3992209324437228823' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3992209324437228823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3992209324437228823'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/02/java-script-cookie.html' title='JAVA SCRIPT - COOKIE'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2938775967667279058</id><published>2008-02-03T23:58:00.000-08:00</published><updated>2008-02-04T00:02:50.794-08:00</updated><title type='text'>ORACLE - DECODE TIP</title><content type='html'>decode 문은 일반적으로 값을 치환하는데 쓰입니다.&lt;br /&gt;&lt;br /&gt;* 컬럼 1개를 여러개의 값으로 비교할경우..&lt;br /&gt;col1 의 값이 1,2,3 인경우 각각 'ONE', 'TWO', 'THREE' 로 변환하고자 한다면,&lt;br /&gt;&lt;blockquote&gt;decode(col1, 1, 'ONE', 2, 'TWO', 3, 'THREE', 'MANY') &lt;/blockquote&gt;&lt;br /&gt;1,2,3 이 아닌경우는 'MANY' 가 되겠죠...&lt;br /&gt;&lt;br /&gt;* 컬럼 여러개를 한개의 값으로 비교할경우&lt;br /&gt;&lt;blockquote&gt;decode(2, col1, 'col1 is TWO', col2, 'col2 is TWO', null) &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;* 단방향 범위를 비교하는경우&lt;br /&gt;만약 25 보다 큰경우엔 25 만 리턴하고 작은경우엔 해당컬럼의 값을&lt;br /&gt;리턴하고자 한다면,&lt;br /&gt;&lt;blockquote&gt;decode(sign(col1-25), -1, col1, 25) &lt;/blockquote&gt;&lt;br /&gt;처럼 사용하면 되겠죠.&lt;br /&gt;&lt;br /&gt;* 다차원 통계에 응용(group by 와 조합)&lt;br /&gt;그룹 아이디별로 합산하는 쿼리는 일반적으로 아래와같습니다.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;      select grp_id, sum(score)&lt;br /&gt;      from GRP_SCORE_TB&lt;br /&gt;      group by grp_id&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;만약..그룹별로 총계를 내고, 그룹별 총계 합산한 총합산을 내고싶다면?&lt;br /&gt;다음과같이 카티션 곱을 응용하고, decode로 선택적인 그룹핑을 해주시면&lt;br /&gt;됩니다.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       select MAX(decode(gubun, 1, grp_id, '총계')), &lt;br /&gt;                 sum(score) &lt;br /&gt;        from GRP_SCORE_TB &lt;br /&gt;                cross join (select level as gubun from dual connect by level &amp;lt; 3) &lt;br /&gt;        group by gubun, decode(gubun, 1, grp_id, null) &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;   이려면,&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;    a001      200&lt;br /&gt;    a004      122&lt;br /&gt;    a003      27&lt;br /&gt;    총계       347&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;   과 같은 결과를 낼수 있습니다.&lt;br /&gt;&lt;br /&gt;※ 몇가지 예로 decode 의 활용을 알아보았습니다. 이외에도 order by 등에도&lt;br /&gt;    사용하면, 위의 group by 에 사용한것처럼, 선택적인 sorting 이 이루어지게&lt;br /&gt;    이용될수도 있습니다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2938775967667279058?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2938775967667279058/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2938775967667279058' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2938775967667279058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2938775967667279058'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/02/oracle-decode-tip.html' title='ORACLE - DECODE TIP'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6958646916324841247</id><published>2008-01-31T22:40:00.000-08:00</published><updated>2008-01-31T22:43:22.816-08:00</updated><title type='text'>SCRIPT - GOOGLE MAP API</title><content type='html'>&lt;a href="http://code.google.com/apis/maps/index.html"&gt;http://code.google.com/apis/maps/index.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Google/Service/GoogleMapAPI"&gt;http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Google/Service/GoogleMapAPI&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6958646916324841247?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6958646916324841247/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6958646916324841247' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6958646916324841247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6958646916324841247'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/script-google-map-api.html' title='SCRIPT - GOOGLE MAP API'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-394986132619494371</id><published>2008-01-31T17:13:00.000-08:00</published><updated>2008-01-31T17:39:54.919-08:00</updated><title type='text'>MESSENGER PROXY</title><content type='html'>회사에서 메신저를 막았다면 당황하지 말고 &lt;a href="http://www.torproject.org/download.html.en"&gt;tor&lt;/a&gt; 에 가서 프록시 프로그램을 다운로드 받은 후&lt;br /&gt;메신저 설정에서 연결&gt;프록시사용체크&gt;SOCKS4&gt;127.0.0.1&gt;9050로 설정한 후&lt;br /&gt;로그인 하면 된다.&lt;br /&gt;&lt;br /&gt;혹시 잘 안될 경우 tor설정의 advanced에 들어가서 포트를 확인해보자.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-394986132619494371?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/394986132619494371/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=394986132619494371' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/394986132619494371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/394986132619494371'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/messenger-proxy.html' title='MESSENGER PROXY'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2772024281910352804</id><published>2008-01-30T23:09:00.000-08:00</published><updated>2008-01-30T23:28:24.600-08:00</updated><title type='text'>SCRIPT - AJAX : REQUEST SET EUC-KR</title><content type='html'>어디서나 골치아픈 한글 문제... XHR을 쓸때도 마찬가지다.&lt;br /&gt;한글로된 인자값을 보내야 할때 처리 방법은 아래와 같다.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;request.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=euc-kr");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;prototype.js 에선 이렇게 된다.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  var myAjax = new Ajax.Request(  url,&lt;br /&gt;  {   method: 'post', &lt;br /&gt;      parameters: {groupCode:group, code:code, placeCd:placdCd}, &lt;br /&gt;      onComplete: reportSuccess,&lt;br /&gt;      onFailure: reportError,&lt;br /&gt;      encoding: 'euc-kr',&lt;br /&gt;      contentType: 'application/x-www-form-urlencoded' &lt;br /&gt;  });&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2772024281910352804?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2772024281910352804/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2772024281910352804' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2772024281910352804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2772024281910352804'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/script-ajax-request-header.html' title='SCRIPT - AJAX : REQUEST SET EUC-KR'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6389829247821664081</id><published>2008-01-27T18:08:00.000-08:00</published><updated>2008-01-27T18:10:39.270-08:00</updated><title type='text'>ORACLE - ABOUT PROCEDURES</title><content type='html'>&lt;p&gt;프로시저 리스트만&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;select * from user_procedures;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;프로시저의 내용까지&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;select * from user_source;&lt;br /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;select object_name,status,TO_CHAR(CREATED,'YYYY-MM-DD HH24:mi:ss') as&lt;br /&gt;CREATED,TO_CHAR(LAST_DDL_TIME,'YYYY-MM-DD HH24:mi:ss') as LAST_DDL_TIMEfrom&lt;br /&gt;user_objectswhere object_type = 'PROCEDURE' &lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;프로시저 삭제시 &lt;/p&gt;&lt;blockquote&gt;drop procedure&lt;/blockquote&gt;&lt;p&gt;프로시저명프로시저 내용보기&lt;/p&gt;&lt;blockquote&gt;select text from user_source where name = 프로시저, 함수 이름&lt;/blockquote&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/1946138886667006027-6389829247821664081?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6389829247821664081/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6389829247821664081' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6389829247821664081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6389829247821664081'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/select-from-userprocedures-select-from.html' title='ORACLE - ABOUT PROCEDURES'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6328696952256023576</id><published>2008-01-25T00:55:00.000-08:00</published><updated>2008-01-25T00:59:07.227-08:00</updated><title type='text'>JAVA SCRIPT - MOVE OPENER BY POP</title><content type='html'>팝업에서 부모창 이동 (ifram 시)&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;opener.parent.location.replace("URL")&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6328696952256023576?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6328696952256023576/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6328696952256023576' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6328696952256023576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6328696952256023576'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/java-script-move-opener-by-pop.html' title='JAVA SCRIPT - MOVE OPENER BY POP'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3163105047716332394</id><published>2008-01-25T00:36:00.000-08:00</published><updated>2008-01-25T00:55:03.101-08:00</updated><title type='text'>SCRIPT - AJAX : PROTOTYPE WITH SAMPLE DYNAMIC CONTENTS (JSP)</title><content type='html'>level 1 --------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ page language="java" contentType="text/html; charset=EUC-KR"&lt;br /&gt;pageEncoding="EUC-KR"%&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;&lt;br /&gt;&amp;lt;html&gt;&lt;br /&gt;&amp;lt;head&gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"&gt;&lt;br /&gt;&amp;lt;title&gt;Dynamic Contents&amp;lt;/title&gt;&lt;br /&gt;&amp;lt;script src="http://common.ticketlink.co.kr/ajax/prototype.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;span style="color:#66cccc;"&gt;//var xmlHttp;&lt;br /&gt;&lt;br /&gt;//function createXMLHttpRequest(){&lt;br /&gt;//if ( window.ActiveXObject) {&lt;br /&gt;//xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");&lt;br /&gt;// }&lt;br /&gt;//else if (window.XMLHttpRequest){&lt;br /&gt;//xmlHttp = new XMLHttpRequest();&lt;br /&gt;// }&lt;br /&gt;//}&lt;br /&gt;&lt;br /&gt;//function doSearch(){&lt;br /&gt;&lt;br /&gt;//createXMLHttpRequest();&lt;br /&gt;//xmlHttp.onreadystatechange = handleStateChange;&lt;br /&gt;//xmlHttp.open("GET","test.xml", true);&lt;br /&gt;//xmlHttp.send(null);&lt;br /&gt;&lt;br /&gt;//}&lt;br /&gt;&lt;br /&gt;//function handleStateChange(){&lt;br /&gt;&lt;br /&gt;//if(xmlHttp.readyState == 4){&lt;br /&gt;//if(xmlHttp.status == 200){&lt;br /&gt;//clearPreviouseResults();&lt;br /&gt;//parseResults();&lt;br /&gt;//}&lt;br /&gt;//}&lt;br /&gt;//}&lt;br /&gt;//Use prototype Ajax.Request&lt;br /&gt;&lt;/span&gt;function doSearch()&lt;br /&gt;{&lt;br /&gt;var url = 'test.xml';&lt;br /&gt;var myAjax = new Ajax.Request(&lt;br /&gt;url,&lt;br /&gt;{&lt;br /&gt;method: 'get',&lt;br /&gt;parameters: 'null',&lt;br /&gt;onComplete: parseResults,&lt;br /&gt;onFailure: reportError&lt;br /&gt;&lt;br /&gt;});&lt;br /&gt;}&lt;br /&gt;&lt;span style="color:#66cccc;"&gt;//alert error message when Request error&lt;br /&gt;&lt;/span&gt;function reportError(request)&lt;br /&gt;{&lt;br /&gt;alert('Sorry. There was an error.');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function clearPreviouseResults(){&lt;br /&gt;&lt;span style="color:#66cccc;"&gt;//document.getElementById() : change $()&lt;br /&gt;&lt;/span&gt;var header = $("header");&lt;br /&gt;if (header.hasChildNodes()){&lt;br /&gt;header.removeChild(header.childNodes[0]);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color:#66cccc;"&gt;//document.getElementById() : change $()&lt;br /&gt;&lt;/span&gt;var tableBody = $("resultsBody");&lt;br /&gt;while (tableBody.childNodes.length &gt; 0 ) {&lt;br /&gt;tableBody.removeChild(tableBody.childNodes[0]);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function parseResults(response){&lt;br /&gt;&lt;br /&gt;clearPreviouseResults();&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#66cccc;"&gt;//var results = xmlHttp.responseXML;&lt;/span&gt;&lt;br /&gt;var results = response.responseXML;&lt;br /&gt;var property = null;&lt;br /&gt;var address = "";&lt;br /&gt;&lt;br /&gt;var price = 0;&lt;br /&gt;var comments = "";&lt;br /&gt;&lt;br /&gt;var properties = results.getElementsByTagName("property");&lt;br /&gt;for (var i = 0; i &amp;lt;properties.length; i++){&lt;br /&gt;property = properties[i];&lt;br /&gt;address = property.getElementsByTagName("address")[0].firstChild.nodeValue;&lt;br /&gt;price = property.getElementsByTagName("price")[0].firstChild.nodeValue;&lt;br /&gt;comments = property.getElementsByTagName("comments")[0].firstChild.nodeValue;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#66cccc;"&gt;//if (price &gt;= parseInt(document.frm.startPrice.value) ){ : change $F()&lt;/span&gt;&lt;br /&gt;if (price &gt;= parseInt ($F('startPrice')) ){&lt;br /&gt;addTableRow(address, price, comments);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;var header = document.createElement("h2");&lt;br /&gt;var headerText = document.createTextNode("Results");&lt;br /&gt;header.appendChild(headerText);&lt;br /&gt;document.getElementById("header").appendChild(header);&lt;br /&gt;document.getElementById("resultsTable").setAttribute("border", "1");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function addTableRow(address, price, comments) {&lt;br /&gt;var row = document.createElement("tr");&lt;br /&gt;var cell = createCellWithText(address);&lt;br /&gt;row.appendChild(cell);&lt;br /&gt;&lt;br /&gt;cell = createCellWithText(price);&lt;br /&gt;row.appendChild(cell);&lt;br /&gt;&lt;br /&gt;cell = createCellWithText(comments);&lt;br /&gt;row.appendChild(cell);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#66cccc;"&gt;//document.getElementById("resultsBody").appendChild(row); : change $()&lt;br /&gt;&lt;/span&gt;$("resultsBody").appendChild(row);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function createCellWithText(text) {&lt;br /&gt;var cell = document.createElement("td");&lt;br /&gt;var textNode = document.createTextNode(text);&lt;br /&gt;cell.appendChild(textNode);&lt;br /&gt;&lt;br /&gt;return cell;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&gt;&lt;br /&gt;&amp;lt;body&gt;&lt;br /&gt;&amp;lt;h1&gt; Search Real Estate Listing&amp;lt;/h1&gt;&lt;br /&gt;&amp;lt;form name="frm"&gt;&lt;br /&gt;Show listings from&lt;br /&gt;&amp;lt;select name="startPrice" size="5"&gt;&lt;br /&gt;&amp;lt;option value="50000"&gt;50,000&amp;lt;/option&gt;&lt;br /&gt;&amp;lt;option value="100000"&gt;100,000&amp;lt;/option&gt;&lt;br /&gt;&amp;lt;option value="150000"&gt;150,000&amp;lt;/option&gt;&lt;br /&gt;&amp;lt;/select&gt;&lt;br /&gt;to&lt;br /&gt;&amp;lt;select name="endPrice" size="5"&gt;&lt;br /&gt;&amp;lt;option value='100000'&gt;100,000&amp;lt;/option&gt;&lt;br /&gt;&amp;lt;option value='150000'&gt;150,000&amp;lt;/option&gt;&lt;br /&gt;&amp;lt;option value='200000'&gt;200,000&amp;lt;/option&gt;&lt;br /&gt;&amp;lt;/select&gt;&lt;br /&gt;&amp;lt;input type="button" value="Search" onClick="doSearch()" /&gt;&lt;br /&gt;&amp;lt;/form&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;span id ="header"&gt;&amp;lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table id="resultsTable" width="75%" border="0"&gt;&lt;br /&gt;&amp;lt;tbody id="resultsBody"&gt;&amp;lt;/tbody&gt;&lt;br /&gt;&amp;lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-3163105047716332394?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3163105047716332394/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3163105047716332394' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3163105047716332394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3163105047716332394'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/script-ajax-prototype-with-sample.html' title='SCRIPT - AJAX : PROTOTYPE WITH SAMPLE DYNAMIC CONTENTS (JSP)'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946138886667006027.post-5259650811404359107</id><published>2008-01-23T21:03:00.000-08:00</published><updated>2008-01-23T22:42:08.614-08:00</updated><title type='text'>JAVA SCRIPT &amp; HTML API</title><content type='html'>prototype&lt;br /&gt;&lt;a href="http://www.prototypejs.org/" target="_new"&gt;http://www.prototypejs.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;api collection &lt;br /&gt;&lt;a href="http://www.gotapi.com/" target="_new"&gt;http://www.gotapi.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5259650811404359107?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5259650811404359107/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5259650811404359107' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5259650811404359107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5259650811404359107'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/java-script-html-api.html' title='JAVA SCRIPT &amp; HTML API'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-5074201321233018247</id><published>2008-01-21T18:46:00.000-08:00</published><updated>2008-01-21T18:49:18.833-08:00</updated><title type='text'>ECLIPSE - INCODING ERROR WHEN SAVE</title><content type='html'>EUC-KR 로 인코딩한 파일일 경우 허용하지 않는 문자가 포함 되어 있을때 저장이 되지 않는 경우가 있다. 이럴때는 VI로 저장 한 후에 다시 열어 보면 깨져 있는 파일을 쉽게 찾아 낼 수 있다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-5074201321233018247?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/5074201321233018247/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=5074201321233018247' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5074201321233018247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/5074201321233018247'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/eclipse-incoding-error-when-save.html' title='ECLIPSE - INCODING ERROR WHEN SAVE'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-9076460634145150992</id><published>2008-01-20T06:44:00.000-08:00</published><updated>2008-01-20T06:46:04.769-08:00</updated><title type='text'>SCRIPT - AJAX : SAMPLE DYNAMIC CONTENTS (XML)</title><content type='html'>&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;properties&gt;&lt;br /&gt; &amp;lt;property&gt;&lt;br /&gt;  &amp;lt;address&gt;구리&amp;lt;/address&gt;&lt;br /&gt;  &amp;lt;price&gt;100000&amp;lt;/price&gt;&lt;br /&gt;  &amp;lt;comments&gt;412341&amp;lt;/comments&gt;&lt;br /&gt; &amp;lt;/property&gt;&lt;br /&gt; &amp;lt;property&gt;&lt;br /&gt;  &amp;lt;address&gt;강남&amp;lt;/address&gt;&lt;br /&gt;  &amp;lt;price&gt;200000&amp;lt;/price&gt;&lt;br /&gt;  &amp;lt;comments&gt;1231&amp;lt;/comments&gt;&lt;br /&gt; &amp;lt;/property&gt;&lt;br /&gt; &amp;lt;property&gt;&lt;br /&gt;  &amp;lt;address&gt;강서&amp;lt;/address&gt;&lt;br /&gt;  &amp;lt;price&gt;150000&amp;lt;/price&gt;&lt;br /&gt;  &amp;lt;comments&gt;343&amp;lt;/comments&gt;&lt;br /&gt; &amp;lt;/property&gt;&lt;br /&gt; &amp;lt;property&gt;&lt;br /&gt;  &amp;lt;address&gt;강동&amp;lt;/address&gt;&lt;br /&gt;  &amp;lt;price&gt;50000&amp;lt;/price&gt;&lt;br /&gt;  &amp;lt;comments&gt;343&amp;lt;/comments&gt;&lt;br /&gt; &amp;lt;/property&gt;&lt;br /&gt;&amp;lt;/properties&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-9076460634145150992?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/9076460634145150992/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=9076460634145150992' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/9076460634145150992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/9076460634145150992'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/script-ajax-sample-dynamic-contents-xml.html' title='SCRIPT - AJAX : SAMPLE DYNAMIC CONTENTS (XML)'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2410953596976282895</id><published>2008-01-20T06:39:00.000-08:00</published><updated>2008-01-20T06:44:44.211-08:00</updated><title type='text'>SCRIPT - AJAX : SAMPLE DYNAMIC CONTENTS (JSP)</title><content type='html'>&amp;lt;%@ page language="java" contentType="text/html; charset=EUC-KR"&lt;br /&gt;    pageEncoding="EUC-KR"%&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;&lt;br /&gt;&amp;lt;html&gt;&lt;br /&gt;&amp;lt;head&gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"&gt;&lt;br /&gt;&amp;lt;title&gt;Dynamic Contents&amp;lt;/title&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;var xmlHttp;&lt;br /&gt;&lt;br /&gt;function createXMLHttpRequest(){&lt;br /&gt; if ( window.ActiveXObject) {&lt;br /&gt;  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");&lt;br /&gt; }&lt;br /&gt; else if (window.XMLHttpRequest){&lt;br /&gt;  xmlHttp = new XMLHttpRequest();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function doSearch(){&lt;br /&gt;&lt;br /&gt; createXMLHttpRequest();&lt;br /&gt; xmlHttp.onreadystatechange = handleStateChange;&lt;br /&gt; xmlHttp.open("GET","dynamicContents.xml", true);&lt;br /&gt; xmlHttp.send(null);&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function handleStateChange(){&lt;br /&gt;&lt;br /&gt; if(xmlHttp.readyState == 4){&lt;br /&gt;  if(xmlHttp.status == 200){&lt;br /&gt;   clearPreviouseResults();&lt;br /&gt;   parseResults();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function clearPreviouseResults(){&lt;br /&gt; var header = document.getElementById("header");&lt;br /&gt; if (header.hasChildNodes()){&lt;br /&gt;  header.removeChild(header.childNodes[0]);&lt;br /&gt; }&lt;br /&gt; var tableBody = document.getElementById("resultsBody");&lt;br /&gt; while (tableBody.childNodes.length &gt; 0 ) {&lt;br /&gt;  tableBody.removeChild(tableBody.childNodes[0]);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function parseResults(){&lt;br /&gt; &lt;br /&gt; var results = xmlHttp.responseXML;&lt;br /&gt; var property = null;&lt;br /&gt; var address = "";&lt;br /&gt; &lt;br /&gt; var price = 0;&lt;br /&gt; var comments = "";&lt;br /&gt; &lt;br /&gt; var properties = results.getElementsByTagName("property");&lt;br /&gt;&lt;br /&gt; for (var i = 0; i &amp;lt;properties.length; i++){&lt;br /&gt;  property = properties[i];&lt;br /&gt;  address = property.getElementsByTagName("address")[0].firstChild.nodeValue;&lt;br /&gt;  price = property.getElementsByTagName("price")[0].firstChild.nodeValue;&lt;br /&gt;  comments = property.getElementsByTagName("comments")[0].firstChild.nodeValue;&lt;br /&gt;  &lt;br /&gt;  if (price &gt;=  parseInt(document.frm.startPrice.value) ){ //int type &lt;br /&gt;   addTableRow(address, price, comments);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; var header = document.createElement("h2");&lt;br /&gt; var headerText = document.createTextNode("Results");&lt;br /&gt; header.appendChild(headerText);&lt;br /&gt; document.getElementById("header").appendChild(header);&lt;br /&gt; document.getElementById("resultsTable").setAttribute("border", "1");&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;function addTableRow(address, price, comments) {&lt;br /&gt; var row = document.createElement("tr");&lt;br /&gt; var cell = createCellWithText(address);&lt;br /&gt; row.appendChild(cell);&lt;br /&gt; &lt;br /&gt; cell = createCellWithText(price);&lt;br /&gt; row.appendChild(cell);&lt;br /&gt; &lt;br /&gt; cell = createCellWithText(comments);&lt;br /&gt; row.appendChild(cell);&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; document.getElementById("resultsBody").appendChild(row);&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;function createCellWithText(text) {&lt;br /&gt; var cell = document.createElement("td");&lt;br /&gt; var textNode = document.createTextNode(text);&lt;br /&gt; cell.appendChild(textNode);&lt;br /&gt; &lt;br /&gt; return cell;&lt;br /&gt; &lt;br /&gt;} &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;/head&gt;&lt;br /&gt;&amp;lt;body&gt;&lt;br /&gt; &amp;lt;h1&gt; Search Real Estate Listing&amp;lt;/h1&gt;&lt;br /&gt; &amp;lt;form name="frm"&gt;&lt;br /&gt;  Show listings from &lt;br /&gt;  &amp;lt;select name="startPrice"&gt;&lt;br /&gt;   &amp;lt;option value="50000"&gt;50,000&amp;lt;/option&gt;&lt;br /&gt;   &amp;lt;option value="100000"&gt;100,000&amp;lt;/option&gt;&lt;br /&gt;   &amp;lt;option value="150000"&gt;150,000&amp;lt;/option&gt;&lt;br /&gt;  &amp;lt;/select&gt;&lt;br /&gt;  to &lt;br /&gt;  &amp;lt;select&gt;&lt;br /&gt;   &amp;lt;option value='100000'&gt;100,000&amp;lt;/option&gt;&lt;br /&gt;   &amp;lt;option value='150000'&gt;150,000&amp;lt;/option&gt;&lt;br /&gt;   &amp;lt;option value='200000'&gt;200,000&amp;lt;/option&gt;&lt;br /&gt;  &amp;lt;/select&gt;&lt;br /&gt;  &amp;lt;input type="button" value="Search" onClick="doSearch();" /&gt;&lt;br /&gt; &amp;lt;/form&gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;span id ="header"&gt;&amp;lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;table id="resultsTable" width="75%" border="0"&gt;&lt;br /&gt;  &amp;lt;tbody id="resultsBody"&gt;&amp;lt;/tbody&gt;&lt;br /&gt; &amp;lt;/table&gt;&lt;br /&gt;  &lt;br /&gt; &lt;br /&gt;&amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2410953596976282895?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2410953596976282895/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2410953596976282895' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2410953596976282895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2410953596976282895'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/script-ajax-sample-dynamic-contents.html' title='SCRIPT - AJAX : SAMPLE DYNAMIC CONTENTS (JSP)'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7230456865130843196</id><published>2008-01-20T04:43:00.000-08:00</published><updated>2008-01-20T04:46:12.651-08:00</updated><title type='text'>SCRIPT - AJAX FRAMEWORK : PROTOTYPE</title><content type='html'>&lt;p&gt;쌩으로 다 짤 수는 없지 않는가?&lt;/p&gt;&lt;p&gt;&lt;a href="http://openframework.or.kr/framework_reference/prototype_js/1.5.0/prototype.js.html#Ajax.Request"&gt;http://openframework.or.kr/framework_reference/prototype_js/1.5.0/prototype.js.html#Ajax.Request&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7230456865130843196?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7230456865130843196/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7230456865130843196' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7230456865130843196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7230456865130843196'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/script-ajax-framework-prototype.html' title='SCRIPT - AJAX FRAMEWORK : PROTOTYPE'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6470986962134934217</id><published>2008-01-12T07:03:00.000-08:00</published><updated>2008-01-12T07:15:36.096-08:00</updated><title type='text'>ECLIPSE - PROPERTIES EDITOR</title><content type='html'>java의 properties는 iso-8859-1만 지원 하기 때문에 한글을 쓸려면 %JAVA_HOME%\bin\native2ascii.exe  같은 프로그램을 이용해서 변환하여 사용했었다. (매우 번거로운 작업이다.)&lt;br /&gt; 게다가 요사이 다국어 지원을 위해 properties를 많이 이용하는데(프레임웍 등에서) 한글과 같은 문자는 properties에 직접 입력을 할 수 없다는 것은 웬지 모순된 느낌이다.&lt;br /&gt; 각설하고 이런 불편함을 덜어 주게 하는 것이 이 '&lt;a href="http://propedit.sourceforge.jp/index_en.html"&gt;Properties Edit Plugin&lt;/a&gt;' 이다.&lt;br /&gt;&lt;br /&gt;eclipse update URL: http://propedit.sourceforge.jp/eclipse/updates/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6470986962134934217?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6470986962134934217/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6470986962134934217' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6470986962134934217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6470986962134934217'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/eclipse-properties-editor.html' title='ECLIPSE - PROPERTIES EDITOR'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4628183513107140803</id><published>2008-01-09T18:16:00.000-08:00</published><updated>2008-01-09T20:27:31.075-08:00</updated><title type='text'>JAVA SCRIPT(AJAX) - DINAMIC TIME DISPLAY</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;보여줄 부분&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;form name="counter"&gt;&lt;br /&gt;&amp;lt;div id="displayTime"&gt;&amp;lt;/div&gt;&lt;br /&gt;&amp;lt;/form&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;스크립트&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;SCRIPT type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; var xmlHttp;&lt;br /&gt;&lt;br /&gt; function createXMLHttpRequest() {&lt;br /&gt;  if(window.ActiveXObject) {&lt;br /&gt;   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");&lt;br /&gt;  }&lt;br /&gt;  else if (window.XMLHttpRequest) {&lt;br /&gt;   xmlHttp = new XMLHttpRequest();&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  if(!xmlHttp)&lt;br /&gt;    alert("fail connect");&lt;br /&gt;   return; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; function startRequest() {&lt;br /&gt;  createXMLHttpRequest();&lt;br /&gt;  xmlHttp.open   ("GET", "http://stillrabbit/systime.jsp",  true);&lt;br /&gt;  xmlHttp.onreadystatechange = handleStateChange;&lt;br /&gt;  xmlHttp.send(null);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; function handleStateChange() {&lt;br /&gt;     if (xmlHttp.readyState == 4)&lt;br /&gt;       if (xmlHttp.status == 200){&lt;br /&gt;     reverse_counter(xmlHttp.responseText);&lt;br /&gt;        }&lt;br /&gt;       else if (xmlHttp.status == 404)&lt;br /&gt;         alert("Request URL does not exist");&lt;br /&gt;       else&lt;br /&gt;         alert("Error: status code is " + xmlHttp.status);&lt;br /&gt; }&lt;br /&gt;function reverse_counter(systime){&lt;br /&gt;&lt;br /&gt;    today = toTimeObject(systime.substring(6,20));&lt;br /&gt;&lt;br /&gt;     d_day = new Date(&lt;%= 지정된 날짜 %&gt;);&lt;br /&gt;     //ex (2008,11,11,00,00) &lt;br /&gt;     days = (d_day - today) / 1000 / 60 / 60 / 24;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    daysRound = Math.floor(days);&lt;br /&gt;    hours = (d_day - today) / 1000 / 60 / 60 - (24 * daysRound);&lt;br /&gt;  &lt;br /&gt;    hoursRound = Math.floor(hours);&lt;br /&gt;    minutes = (d_day - today) / 1000 /60 - (24 * 60 * daysRound) - (60 * hoursRound);&lt;br /&gt;    minutesRound = Math.floor(minutes);&lt;br /&gt;    seconds = (d_day - today) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) -&lt;br /&gt;    (60 * minutesRound);&lt;br /&gt;    secondsRound = Math.round(seconds);&lt;br /&gt;    sec = " 초"&lt;br /&gt;    min = " 분 "&lt;br /&gt;    hr = " 시간 "&lt;br /&gt;    dy = " 일 "&lt;br /&gt;    &lt;br /&gt;    //다이나믹 텍스트 출력 부분&lt;br /&gt;    //document.counter.recom_top_table02_data02_05.value = daysRound + &lt;br /&gt;    //dy + hoursRound + hr + minutesRound + min + secondsRound + sec;&lt;br /&gt;&lt;br /&gt;    //폼에 출력부분&lt;br /&gt;    if(eval(daysRound) &lt; 0){&lt;br /&gt;       document.all["displayTime"].innerHTML = "경매종료";&lt;br /&gt;    }else{&lt;br /&gt;       document.all["displayTime"].innerHTML =  daysRound + dy + hoursRound + hr + minutesRound + min + secondsRound + sec;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   // newtime = &lt;br /&gt;}&lt;br /&gt; function set_timer(){&lt;br /&gt; startRequest();&lt;br /&gt;  newtime=window.setTimeout("set_timer();", 1000);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /////////////////////////////////////////////////////&lt;br /&gt;function toTimeObject(time) { //parseTime(time)&lt;br /&gt;/////////////////////////////////////////////////////&lt;br /&gt;// Time 스트링을 자바스크립트 Date 객체로 변환  parameter time: Time 형식의 String&lt;br /&gt;    var year  = time.substr(0,4);&lt;br /&gt;    var month = time.substr(4,2) - 1; // 1월=0,12월=11&lt;br /&gt;    var day   = time.substr(6,2);&lt;br /&gt;    var hour  = time.substr(8,2);&lt;br /&gt;    var min   = time.substr(10,2);&lt;br /&gt;    var ss      = time.substr(12,2);&lt;br /&gt;&lt;br /&gt;    return new Date(year,month,day,hour,min,ss);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;시간을 반환하는 sysTime.jsp &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html;charset=euc-kr" session="true" %&gt;&lt;br /&gt;&amp;lt;%@page import="java.text.SimpleDateFormat,java.util.*"%&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt; java.util.Date toDate = null;&lt;br /&gt; String nowDate = "";&lt;br /&gt; Calendar cal = Calendar.getInstance(); &lt;br /&gt; SimpleDateFormat formatter = new SimpleDateFormat( "yyyyMMddHHmmss"  );&lt;br /&gt; String curDate = formatter.format(cal.getTime());&lt;br /&gt; toDate = formatter.parse( curDate );&lt;br /&gt;        //nowDate = curDate.substring(0,4)+","+(Integer.parseInt(curDate.substring(4,6))-1)+","+curDate.substring(6,8)+","+curDate.substring(8,10)+","+curDate.substring(10,12)+","+curDate.substring(12,14);&lt;br /&gt; //nowDate = curDate.substring(0,4)+","+(Integer.parseInt(curDate.substring(4,6))-1)+","+curDate.substring(6,8)+","+curDate.substring(8,10)+","+curDate.substring(10,12)+curDate.substring(12,14);&lt;br /&gt;%&gt;&lt;br /&gt;&amp;lt;%=curDate%&gt;&lt;br /&gt;&lt;/pre&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/1946138886667006027-4628183513107140803?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4628183513107140803/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4628183513107140803' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4628183513107140803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4628183513107140803'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/sss.html' title='JAVA SCRIPT(AJAX) - DINAMIC TIME DISPLAY'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-7790414753650630057</id><published>2008-01-07T16:01:00.000-08:00</published><updated>2008-01-07T16:42:32.133-08:00</updated><title type='text'>ORACLE - Multiple distinct combinations</title><content type='html'>Let's assume we have a table T with the following columns:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;dc1 dc2 fc1 fc2 lc2&lt;br /&gt;1   1   11  12  21&lt;br /&gt;1   1   11  12  22&lt;br /&gt;1   1   11  12  23&lt;br /&gt;2   2   22  22  31&lt;br /&gt;3   3   33  35  32&lt;br /&gt;3   3   33  37  32&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I want a SQL query that returns all the rows that satsfy the following criteria: dc1, dc2 has multiple distinct fc1, lc2 combinations (count &gt; 1). For the above sample data, the SQL would return:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;dc1 dc2 fc1 fc2 lc2&lt;br /&gt;1   1   11  12  21&lt;br /&gt;1   1   11  12  22&lt;br /&gt;1   1   11  12  23&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;-------------------------------------------------------------------------------------------&lt;br /&gt;The solution is straightforward and utilizes COUNT DISTINCT:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select T.*&lt;br /&gt;    from T&lt;br /&gt;    inner join (&lt;br /&gt;        select dc1&lt;br /&gt;               , dc2&lt;br /&gt;               from T&lt;br /&gt;               group&lt;br /&gt;               by dc1&lt;br /&gt;               , dc2&lt;br /&gt;               having count( distinct fc1,lc2 ) &gt; 1&lt;br /&gt;               )&lt;br /&gt;               as multiples&lt;br /&gt;    on T.dc1 = multiples.dc1&lt;br /&gt;    and T.dc2 = multiples.dc2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, not every database system supports COUNT DISTINCT.&lt;br /&gt;For those that don't, you can obtain the correct results, perhaps not as efficiently, with concatenation or some other expression to combine the two column values. For example, using Microsoft SQL Server syntax --&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select T.*&lt;br /&gt;    from T&lt;br /&gt;    inner&lt;br /&gt;    join (&lt;br /&gt;          select dc1&lt;br /&gt;          , dc2&lt;br /&gt;          from T&lt;br /&gt;          group&lt;br /&gt;          by dc1&lt;br /&gt;          , dc2&lt;br /&gt;          having count( distinct&lt;br /&gt;          cast(fc1 as&lt;br /&gt;          varchar)&lt;br /&gt;          +cast(lc2 as varchar) ) &gt; 1&lt;br /&gt;         ) as multiples&lt;br /&gt;     on T.dc1 = multiples.dc1&lt;br /&gt;     and T.dc2 = multiples.dc2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7790414753650630057?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7790414753650630057/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7790414753650630057' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7790414753650630057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7790414753650630057'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/oracle-multiple-distinct-combinations.html' title='ORACLE - Multiple distinct combinations'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2955057925148021952</id><published>2008-01-06T22:51:00.000-08:00</published><updated>2008-01-06T22:52:50.211-08:00</updated><title type='text'>ORACLE - START WITH ~ CONNECT BY PRIOR</title><content type='html'>◈ START WITH &lt;br /&gt; &lt;br /&gt; - 계층 질의의 루트(부모행)로 사용될 행을 지정 합니다.. &lt;br /&gt; - 서브쿼리를 사용할 수도 있습니다.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;◈ CONNECT BY &lt;br /&gt; &lt;br /&gt; - 이 절을 이용하여 계층 질의에서 상위계층(부모행)과 하위계층(자식행)의 관계를 규정 합니다. &lt;br /&gt; - 보통 PRIOR 연산자를 많이 사용 합니다.. &lt;br /&gt; - 서브쿼리를 사용할 수 없습니다.. &lt;br /&gt; - PRIOR &lt;br /&gt;   PRIOR 이 붙는 column 이 가져온 row 의 column을 의미한다. 즉 상위에 존재할 데이타가 되&lt;br /&gt;&lt;br /&gt;   게 된다. 어느쪽에 붙느냐 잘 따져 본다.&lt;br /&gt;  &lt;br /&gt; &lt;br /&gt;◈ CONNECT BY의 실행순서는 다음과 같습니다.&lt;br /&gt; &lt;br /&gt; - 첫째 START WITH절 &lt;br /&gt; - 둘째 CONNECT BY 절&lt;br /&gt; - 세째 WHERE 절 순서로 풀리게 되어있습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◈ SYNTEX&lt;br /&gt;   &lt;br /&gt;   SELECT &lt;br /&gt;   FROM &lt;br /&gt;   START WITH&lt;br /&gt;   CONNECT BY PRIOR&lt;br /&gt;   AND &lt;br /&gt;   ORDER SIBLINGS BY&lt;br /&gt;&lt;br /&gt;   or &lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;   SELECT &lt;br /&gt;   FROM &lt;br /&gt;   WHERE&lt;br /&gt;   START WITH&lt;br /&gt;   CONNECT BY PRIOR&lt;br /&gt;   ORDER SIBLINGS BY&lt;br /&gt;   &lt;br /&gt;◈ 이용 &lt;br /&gt;   1) 쇼핑목 카테고리 관계 - 대분류, 중분류, 소분류 등을 트리 구조로 &lt;br /&gt;   2) 게시판 에서 일반글 과 답글과의 관계 등을 트리 구조로     &lt;br /&gt;   &lt;br /&gt;◈ 데이터가 많아질 경우....&lt;br /&gt; &lt;br /&gt; - 첫째로 풀리는 START WITH job='PRESIDENT' job 컬럼에 index가 생성되어 있지 않는다면 &lt;br /&gt;    속도를 보장할 수 없습니다.&lt;br /&gt; &lt;br /&gt; - 그리고 둘째로 풀리는 CONNECT BY PRIOR empno = mgr 역시 PRIOR 쪽의 컬럼값이 상수가 &lt;br /&gt;   되기 때문에 MGR컬럼에 index를 생성하여야 CONNECT BY의 속도를 보장할 수 있습니다.&lt;br /&gt;   &lt;br /&gt; - 계층구조를 CONNECT BY, START WITH로 풀면 부분범위 처리가 불가능하고 Desc으로 &lt;br /&gt;   표현하기가 어렵 습니다.&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;--------------- 설명 &lt;br /&gt;-- 아래 예제 1 &lt;br /&gt;1) job 이 president 인 row 을 가져온다. &lt;br /&gt;2) 가져온 row 에서 prior 이 붙은 comumn 의 데이타를 가져온다. 여긴선 empno 다.&lt;br /&gt;3) PRIOR empno = mgr  empno 을 mgr 로 사용하는 row 을 가져온다. 기존의 row 상위, 비교해서 가져온 row 하위에 있게 된다. &lt;br /&gt;4) 이제 두번째로 가져온 row 에서 PRIOR empno = mgr 을 실행시킨다. &lt;br /&gt;5) 이런 과정이 연속으로 반복되면서 최종적으로 가져온 data 는 트리 구조를 이루게 된다.(계층구조)&lt;br /&gt;6) LEVEL 은 depth 을 의미한다. &lt;br /&gt;&lt;br /&gt;7) empno = PRIOR mgr 한다면 가져온 row 의 mgr을 기준으로 비교하여 data을 가져오게 된다. &lt;br /&gt;   예제 2 참조 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 예제 1 &lt;br /&gt;SELECT                  LEVEL,empno,ename, mgr, job  --  LEVEL 은 depth 을 의미한다. &lt;br /&gt;FROM                     emp&lt;br /&gt;START WITH             job = 'PRESIDENT'   -- 직업이 PRESIDENT를 기준으로&lt;br /&gt;CONNECT BY PRIOR empno = mgr -- 사원(empno)과 관리자(mgr)의  관계를 계층 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- level 을 공백으로 찍어 본다. &lt;br /&gt;&lt;br /&gt;SELECT                  LPAD(' ', 4*(LEVEL-1)) || ename ename,LEVEL, empno, mgr, job  &lt;br /&gt;FROM                     emp&lt;br /&gt;START WITH             job = 'PRESIDENT'   -- 직업이 PRESIDENT를 기준으로&lt;br /&gt;CONNECT BY PRIOR empno = mgr    -- 사원(empno)과 관리자(mgr)의  관계를 계층&lt;br /&gt;&lt;br /&gt;-- 결과치 &lt;br /&gt;ENAME         LEVEL EMPNO MGR     JOB&lt;br /&gt;KING             1 7839      PRESIDENT&lt;br /&gt;    JONES         2 7566 7839 MANAGER&lt;br /&gt;        SCOTT     3 7788 7566 ANALYST&lt;br /&gt;            ADAMS 4 7876 7788 CLERK&lt;br /&gt;        FORD     3 7902 7566 ANALYST&lt;br /&gt;            SMITH 4 7369 7902 CLERK&lt;br /&gt;        JJS         3 9000 7566 ANALIST&lt;br /&gt;    BLAKE         2 7698 7839 MANAGER&lt;br /&gt;        ALLEN     3 7499 7698 SALESMAN&lt;br /&gt;        WARD     3 7521 7698 SALESMAN&lt;br /&gt;        MARTIN     3 7654 7698 SALESMAN&lt;br /&gt;        TURNER     3 7844 7698 SALESMAN&lt;br /&gt;        JAMES     3 7900 7698 CLERK&lt;br /&gt;    CLARK         2 7782 7839 MANAGER&lt;br /&gt;        MILLER     3 7934 7782 CLERK&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----예제 2 - PRIOR 위치 변경 &lt;br /&gt;SELECT           LPAD(' ', 4*(LEVEL-1)) || ename ename,LEVEL, empno, mgr, job  -- level 을 공백으로 찍어 본다. &lt;br /&gt;FROM             emp&lt;br /&gt;START WITH       job = 'CLERK'   -- 직업이 CLERK를 기준으로&lt;br /&gt;CONNECT BY empno = PRIOR mgr -- 사원(empno)과 관리자(mgr)의  관계를 계층   &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- 결과치 &lt;br /&gt;&lt;br /&gt;ENAME             LEVEL EMPNO MGR     JOB&lt;br /&gt;SMITH             1     7369 7902 CLERK&lt;br /&gt;    FORD         2     7902 7566 ANALYST&lt;br /&gt;        JONES     3     7566 7839 MANAGER&lt;br /&gt;            KING 4     7839      PRESIDENT&lt;br /&gt;ADAMS             1     7876 7788 CLERK&lt;br /&gt;    SCOTT         2     7788 7566 ANALYST&lt;br /&gt;        JONES     3     7566 7839 MANAGER&lt;br /&gt;            KING 4     7839      PRESIDENT&lt;br /&gt;JAMES             1     7900 7698 CLERK&lt;br /&gt;    BLAKE         2     7698 7839 MANAGER&lt;br /&gt;        KING     3     7839      PRESIDENT&lt;br /&gt;MILLER             1     7934 7782 CLERK&lt;br /&gt;    CLARK         2     7782 7839 MANAGER&lt;br /&gt;        KING     3     7839      PRESIDENT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 예제 3: 조건 절 사용&lt;br /&gt;-- 1) WHERE  절 사용    &lt;br /&gt;SELECT           LPAD(' ', 4*(LEVEL-1)) || ename ename,LEVEL, empno, mgr, job  -- level 을 공백으로 찍어 본다. &lt;br /&gt;FROM             emp&lt;br /&gt;WHERE     ename LIKE '%K%'&lt;br /&gt;START WITH       job = 'PRESIDENT'   -- 직업이 PRESIDENT를 기준으로&lt;br /&gt;CONNECT BY PRIOR empno = mgr -- 사원(empno)과 관리자(mgr)의  관계를 계층&lt;br /&gt;&lt;br /&gt;-- 2) CONNECT BY PRIOR 아래에 AND 사용&lt;br /&gt;SELECT           LPAD(' ', 4*(LEVEL-1)) || ename ename,LEVEL, empno, mgr, job  -- level 을 공백으로 찍어 본다. &lt;br /&gt;FROM             emp&lt;br /&gt;START WITH       job = 'PRESIDENT'   -- 직업이 PRESIDENT를 기준으로&lt;br /&gt;CONNECT BY PRIOR empno = mgr -- 사원(empno)과 관리자(mgr)의  관계를 계층&lt;br /&gt;AND      ename LIKE '%K%'&lt;br /&gt;&lt;br /&gt;-- 3) LEVEL 조건 사용 &lt;br /&gt;SELECT           LPAD(' ', 4*(LEVEL-1)) || ename ename, empno, mgr, job &lt;br /&gt;FROM             emp&lt;br /&gt;START WITH       job='PRESIDENT'&lt;br /&gt;CONNECT BY PRIOR empno =mgr &lt;br /&gt;AND              LEVEL &lt;= 2 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 예제4 :  각 label별로 급여의 합과 인원수를 구하는 예제&lt;br /&gt; &lt;br /&gt;SELECT           LEVEL, SUM(sal) salTotal,COUNT(empno) empnCnt&lt;br /&gt;FROM             emp&lt;br /&gt;START WITH       job='PRESIDENT' &lt;br /&gt;CONNECT BY PRIOR empno=mgr      &lt;br /&gt;GROUP BY         LEVEL &lt;br /&gt;ORDER BY         LEVEL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- 결과치  &lt;br /&gt;&lt;br /&gt;     LEVEL   salTotal    empnCnt&lt;br /&gt;---------- ---------- ----------&lt;br /&gt;         1       5000          1&lt;br /&gt;         2       8275          3&lt;br /&gt;         3      13850          8&lt;br /&gt;         4       1900          2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2955057925148021952?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2955057925148021952/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2955057925148021952' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2955057925148021952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2955057925148021952'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/oracle-start-with-connect-by-prior.html' title='ORACLE - START WITH ~ CONNECT BY PRIOR'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-4288385746343544127</id><published>2008-01-06T20:54:00.000-08:00</published><updated>2008-01-06T20:59:00.005-08:00</updated><title type='text'>ORACLE - FUNCTION TIP</title><content type='html'>[문자열]&lt;br /&gt;&lt;br /&gt;1 . CONCAT( column1expression1 ,column2expression2 )&lt;br /&gt;CONCAT('Good','String') --&gt; GoodString : 와 같은 역할을 한다.&lt;br /&gt;&lt;br /&gt;2 . SUBSTR(columnexpression, m [,n]) : m값이 음수면 문자값의 끝부터 (글자기준 )&lt;br /&gt;SUBSTR('String',1,3) --&gt; Str : 1번째부터 3개의 문자를 리턴한다.&lt;br /&gt;&lt;br /&gt;3. SUBSTRB(columnexpression, m [,n]) : m값이 음수면 문자값의 끝부터 (바이트기준 )&lt;br /&gt;SUBSTRB('String',1,3) --&gt; Str : 1번째부터 3개의 문자를 리턴한다&lt;br /&gt;&lt;br /&gt;4. INITCAP( columnexpression )&lt;br /&gt;INITCAP('string') --&gt; String : 첫글자만 대문자, 나머지글자는 소문자로 변환&lt;br /&gt;&lt;br /&gt;5. UPPER( columnexpression )&lt;br /&gt;UPPER('String') --&gt; STRING : 대문자로 변환&lt;br /&gt;&lt;br /&gt;6. LOWER( columnexpression )&lt;br /&gt;LOWER('String') --&gt; string : 소문자로 변환&lt;br /&gt;&lt;br /&gt;7. LPAD( columnexpression,n,'string' ) : n 은 전체 길이와 채울문자(숫자가능)&lt;br /&gt;LPAD('String',10,'*') --&gt; ****String&lt;br /&gt;&lt;br /&gt;8. RPAD('String',10,'*') --&gt; String****&lt;br /&gt;&lt;br /&gt;9. LENGTH( columnexpression )&lt;br /&gt;LENGTH('String') --&gt; 6 : 문자열의 길이를 리턴한다.&lt;br /&gt;&lt;br /&gt;10. REPLACE(column  0 , 'r') L01102 =&gt; Lr11r2&lt;br /&gt;&lt;br /&gt;11. INSTR( columnexpression )&lt;br /&gt;INSTR('String','r') --&gt; 3 : 문자열에 'r'이 몇번째 위치인지를 (숫자)리턴&lt;br /&gt;&lt;br /&gt;12. LTRIM(' String') --&gt; 'String' : 문자열의 왼쪽 공백을 버린다.&lt;br /&gt;&lt;br /&gt;13. RTRIM('String ') --&gt; 'String' : 문자령의 오른쪽 공백을 버린다.&lt;br /&gt;* TRIM(leading/tailing/both, trim_character FROM trim_source )&lt;br /&gt;TRIM( 'S' FROM 'SSMITH') --&gt; MITH&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[ 숫자 ]&lt;br /&gt;&lt;br /&gt;1. ROUND(45.926, 2) --&gt; 45.93 : 소수점 두자리수까지 보여주면서 반올림한다.&lt;br /&gt;SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1) FROM DUAL&lt;br /&gt;==&gt; 45.92 46 50&lt;br /&gt;&lt;br /&gt;2. TRUNC(45.926, 2) --&gt; 45.92 : 소수점 두자리까지만 보여주고 나머지는 버린다.&lt;br /&gt;SELECT TRUNC(45.923,2), TRUNC(45.923), TRUNC(45.923,-1) FROM DUAL&lt;br /&gt;==&gt; 45.92 45(n이 생략된면 일의 자리까지 남기고 버린다.) 40&lt;br /&gt;&lt;br /&gt;3. MOD(1600,300) --&gt; 100 : 1600을 300으로 나누고 나머지를 리턴한다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[ Date ]&lt;br /&gt;&lt;br /&gt;* SYSTEM 날짜를 갖고 오는 방법.&lt;br /&gt;SELECT sysdate FROM dual&lt;br /&gt;&lt;br /&gt;date + number : date에 number만큼 후의 날자를 보여준다.&lt;br /&gt;date - number : date에 number만큼 전의 날자를 보여준다.&lt;br /&gt;date1 - date2 : date1에서 date2 까지의 총 일수를 보여준다.( date1+date2는 X )&lt;br /&gt;date1 + 숫자/24 : date1에서 시간을 더해 날짜를 보여준다.&lt;br /&gt;&lt;br /&gt;MONTHS_BETWEEN('01-SEP-95','11-JAN-94') --&gt; 19.6774194&lt;br /&gt;; 두날짜 사이의 달수를 보여준다.&lt;br /&gt;&lt;br /&gt;ADD_MONTHS('11-JAN-94', 6) --&gt; 11-JUL-94&lt;br /&gt;; 날짜에 6개월을 더한 날자를 보여준다.&lt;br /&gt;&lt;br /&gt;NEXT_DAY('01-SEP-95','FRIDAY') --&gt; '08-SEP-95'&lt;br /&gt;; 해당일 다음에 오는 FRIDAY의 일자를 보여준다.&lt;br /&gt;('SUNDAY'는 1, 'MONDAY'는 2...이런식으로 숫자를 써줘도 된다.)&lt;br /&gt;&lt;br /&gt;LAST_DAY('01-SEP-95') --&gt; '30-SEP-95'&lt;br /&gt;; 해당월의 마지막날자를 보여준다.&lt;br /&gt;&lt;br /&gt;ROUND('25-JUL-95','MONTH')--&gt; 01-AUG-95&lt;br /&gt;ROUND('25-JUL-95','YEAR')--&gt; 01-JAN-96&lt;br /&gt;TRUNC('25-JUL-95','MONTH') --&gt; 01-JUL-95&lt;br /&gt;TRUNC('25-JUL-95','YEAR') --&gt; 01-JAN-95&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[ Conversion Functions ]&lt;br /&gt;&lt;br /&gt;nlsparams : 십진수, 그룹구분자, 지역 통화 기호, 국제 통화 기호&lt;br /&gt;&lt;br /&gt;TO_CHAR(date,['format'],[nlsparams]) : date를 format에 맞게 문자열로 변환한다.&lt;br /&gt;&lt;br /&gt;- Date Format Elements&lt;br /&gt;YYYY --&gt; 1999 (년출력) , YEAR --&gt; nineteen ninety-nine (년출력)&lt;br /&gt;MM --&gt; 12 (월출력) , MONTH --&gt; DECEMBER (월출력), MON --&gt; DEC&lt;br /&gt;D --&gt; 요일을 숫자로 리턴한다.(일요일은 1, 월요일은 2...)&lt;br /&gt;DD --&gt; 07 (달의 일출력)&lt;br /&gt;DDD --&gt; 200 (연의 일출력)그 해의 총 몇 일째인가를 리턴한다.&lt;br /&gt;DAY --&gt; MONDAY (요일출력) DY--&gt;MON&lt;br /&gt;CC --&gt; 20 (몇 세기인지를 보여준다.)&lt;br /&gt;WW --&gt; 그 해의 몇 번째 주인가를 리턴한다.&lt;br /&gt;W --&gt; 그 달의 몇 번째 주인가를 리턴한다.&lt;br /&gt;&lt;br /&gt;HH or HH12 or HH24 / MI(0-59분) / SS(0-59초)&lt;br /&gt;&lt;br /&gt;* 문자열은 " " 묶어 추가한다 DD " of " MONTH --&gt; 12 of DECEMBER&lt;br /&gt;* 숫자 접미어는 숫자를 문자로 표기. TH(4-&gt;4TH)/ SP(4-&gt;FOUR)/ SPTH or THSP(4-&gt;FOURTH)&lt;br /&gt;&lt;br /&gt;TO_CHAR(number,'format',[nlsparams]) : number를 format에 맞게 문자열로 변환한다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Number Format Elements&lt;br /&gt;9 : 999,999 --&gt; 1,234 $: 부동 달러 기호 $99999 -&gt; $1234&lt;br /&gt;0 : 099999 --&gt; 001234 99.999EEEE -&gt; 1.234E+03 B: 0값을 공백으로&lt;br /&gt;L : L99,999 --&gt; FF1,234 (NLS_CURRENCY에 설정되어있는 값이 L로 보여진다.)&lt;br /&gt;&lt;br /&gt;TO_NUMBER(char,['format'],[nlsparams]) : 숫자형태의 문자열을 숫자로 변한한다.&lt;br /&gt;TO_DATE(char,['format'],[nlsparams]):날자형태의 문자열을 format에 맞게 날자형식으로 변환 한다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[ NVL Funcion ]&lt;br /&gt;: 값이 null일 때 설정값을 보여준다.&lt;br /&gt;NVL(number_column, 0) : null일 때 0을 보여준다.&lt;br /&gt;NVL(date_column, '01-JAN-95') : null일 때 '01-JAN-95'를 보여준다.&lt;br /&gt;NVL(character_column, 'Empty') : null일 때 'Empty'를 보여준다.&lt;br /&gt;* column Type과 표현식의 type이 반드시 일치해야 한다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[ DECODE Function ]&lt;br /&gt;: CASE or IF-THEN-ELSE 형식과 비슷하다.&lt;br /&gt;DECODE(col/expression, search1, result1 [,search2,result2,…] [,default])&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-4288385746343544127?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/4288385746343544127/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=4288385746343544127' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4288385746343544127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/4288385746343544127'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/oracle-function-tip.html' title='ORACLE - FUNCTION TIP'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-2686253040488100134</id><published>2008-01-05T21:55:00.000-08:00</published><updated>2008-01-05T22:14:18.072-08:00</updated><title type='text'>ECLIPSE - RESIN IN ECLIPSE 3.X</title><content type='html'>&lt;a style="FONT-FAMILY: '돋움','Dotum'" href="http://www.improve-technologies.com/alpha/resin"&gt;&lt;/a&gt;1. INSTALL RESIN PLUG IN&lt;br /&gt;Help -&gt; Software Updates -&gt; Find Install 에서 [New Remote Site]를 선택한 후&lt;br /&gt;Name : Improve's Eclipse plugin site&lt;br /&gt;URL : http://www.improve-technologies.com/alpha/updates/site.xml를 입력한 후 plug-in을 설치합니다.(디폴트로 설치하면 되기때문에 자세한 설치과정은 생략합니다.)&lt;br /&gt;&lt;br /&gt;2. CONFIG&lt;br /&gt;Windows -&gt; Preferences -&gt; Resin 를 선택하여 설치한 resin version 과 home directory를 선택하고 java compiler의 위치를 선택합니다.&lt;br /&gt;그리고 resin.conf를 프로젝트에 맞게 . 각 버젼에 맞는 설정은 &lt;a href="http://www.caucho.com/"&gt;resin site&lt;/a&gt; 참고.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. LUNCHER CONFIG&lt;br /&gt;Run -&gt; Run을 띄웁니다.[Main] tab에서 Name과 Project 명을 선택하고 resin conf파일 위치를 선택합니다.&lt;br /&gt;[Classpath]에 {JAVA_HOME}/lib/tools.jar를&lt;br /&gt;&lt;br /&gt;debug를 선택하면 debug 모드로 작동한다. (jsp는 작동 안할 수도 있다.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-2686253040488100134?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/2686253040488100134/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=2686253040488100134' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2686253040488100134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/2686253040488100134'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/eclipse-resin-in-eclipse-3x.html' title='ECLIPSE - RESIN IN ECLIPSE 3.X'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-3335737796955242569</id><published>2008-01-02T17:54:00.000-08:00</published><updated>2008-01-02T18:05:16.519-08:00</updated><title type='text'>ORACLE - ABOUT ROWNUM &amp; TIP(PAGING)</title><content type='html'>&lt;table style="TABLE-LAYOUT: fixed; OVERFLOW: hidden; WIDTH: 650px" cellspacing="0" cellpadding="0" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td id="bb_view"&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;이번 호의 Ask Tom 컬럼은 지금까지와는 조금 다른 내용을 담고 있습니다. 필자는 오라클 데이터베이스에서 Top-N 쿼리와 페이지네이션(pagination) 쿼리를 구현하는 방법에 대해 자주 질문을 받곤 합니다. 하나의 컬럼을 통해 이러한 질문에 한꺼번에 대답하기 위한 방편으로, &lt;&gt; 의 내용을 인용하기로 했습니다. 컬럼의 포맷에 맞게 책의 내용이 다소 수정되었음을 참고하시기 바랍니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tom Kyte&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;결과 셋의 제한&lt;br /&gt;&lt;br /&gt;ROWNUM은 오라클 데이터베이스가 제공하는 마술과도 같은 컬럼입니다. 이 때문에 많은 사용자들이 문제를 겪기도 합니다. 하지만 그 원리와 활용 방법을 이해한다면 매우 유용하게 사용할 수 있습니다. 필자는 주로 두 가지 목적으로 ROWNUM을 사용합니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Top-N 프로세싱: 이 기능은 다른 일부 데이터베이스가 제공하는 LIMIT 구문과 유사합니다.&lt;br /&gt;쿼리 내에서의 페이지네이션(pagination) ? 특히 웹과 같은 "stateless" 환경에서 자주 활용됩니다. 필자는 asktom.oracle.com 웹 사이트에서도 이 테크닉을 사용하고 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;두 가지 활용 방안을 설명하기 전에, 먼저 ROWNUM의 동작 원리에 대해 살펴 보기로 하겠습니다&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ROWNUM의 동작 원리&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ROWNUM은 쿼리 내에서 사용 가능한 (실제 컬럼이 아닌) 가상 컬럼(pseudocolumn)입니다. ROWNUM에는 숫자 1, 2, 3, 4, ... N의 값이 할당됩니다. 여기서 N 은 ROWNUM과 함께 사용하는 로우의 수를 의미합니다. ROWNUM의 값은 로우에 영구적으로 할당되지 않습니다(이는 사람들이 많이 오해하는 부분이기도 합니다). 테이블의 로우는 숫자와 연계되어 참조될 수 없습니다. 따라서 테이블에서 "row 5"를 요청할 수 있는 방법은 없습니다. "row 5"라는 것은 존재하지 않기 때문입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;또 ROWNUM 값이 실제로 할당되는 방법에 대해서도 많은 사람들이 오해를 하고 있습니다. ROWNUM 값은 쿼리의 조건절이 처리되고 난 이후, 그리고 sort, aggregation이 수행되기 이전에 할당됩니다. 또 ROWNUM 값은 할당된 이후에만 증가(increment) 됩니다. 따라서 아래 쿼리는 로우를 반환하지 않습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;select * from t where ROWNUM &gt; 1;첫 번째 로우에 대해 ROWNUM &gt; 1의 조건이 True가 아니기 때문에, ROWNUM은 2로 증가하지 않습니다. 아래와 같은 쿼리를 생각해 봅시다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;select ..., ROWNUM from t where group by having order by ;&lt;br /&gt;&lt;br /&gt;이 쿼리는 다음과 같은 순서로 처리됩니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. FROM/WHERE 절이 먼저 처리됩니다.&lt;br /&gt;2. ROWNUM이 할당되고 FROM/WHERE 절에서 전달되는 각각의 출력 로우에 대해 증가(increment) 됩니다.&lt;br /&gt;3. SELECT가 적용됩니다.&lt;br /&gt;4. GROUP BY 조건이 적용됩니다.&lt;br /&gt;5. HAVING이 적용됩니다.&lt;br /&gt;6. ORDER BY 조건이 적용됩니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;따라서 아래와 같은 쿼리는 에러가 발생할 수 밖에 없습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;select * from emp where ROWNUM &lt;= 5 order by sal desc; 이 쿼리는 가장 높은 연봉을 받는 다섯 명의 직원을 조회하기 위한 Top-N 쿼리로 작성되었습니다. 하지만 실제로 쿼리는 5 개의 레코드를 랜덤하게(조회되는 순서대로) 반환하고 salary를 기준으로 정렬합니다. 이 쿼리를 위해서 사용되는 가상코드(pseudocode)가 아래와 같습니다. ROWNUM = 1 for x in ( select * from emp )loop exit when NOT(ROWNUM &lt;= 5) OUTPUT record to tempROWNUM = ROWNUM + 1 end loop SORT TEMP 위에서 볼 수 있듯 처음의 5 개 레코드를 가져 온후 바로 sorting이 수행됩니다. 쿼리에서 "WHERE ROWNUM = 5" 또는 "WHERE ROWNUM &gt; 5"와 같은 조건은 의미가 없습니다. 이는 ROWNUM 값이 조건자(predicate) 실행 과정에서 로우에 할당되며, 로우가 WHERE 조건에 의해 처리된 이후에만 increment 되기 때문입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;올바르게 작성된 쿼리가 아래와 같습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;select * from ( select * from emp order by sal desc ) where ROWNUM &lt;= 5; 위 쿼리는 salary를 기준으로 EMP를 내림차순으로 정렬한 후, 상위의 5 개 레코드(Top-5 레코드)를 반환합니다. 아래에서 다시 설명되겠지만, 오라클 데이터베이스가 실제로 전체 결과 셋을 정렬하지 않습니다. (오라클 데이터베이스는 좀 더 지능적인 방식으로 동작합니다.) 하지만 사용자가 얻는 결과는 동일합니다. ROWNUM을 이용한 Top-N 쿼리 프로세싱 일반적으로 Top-N 쿼리를 실행하는 사용자는 다소 복잡한 쿼리를 실행하고, 그 결과를 정렬한 뒤 상위의 N 개 로우만을 반환하는 방식을 사용합니다. ROWNUM은 Top- N쿼리를 위해 최적화된 기능을 제공합니다. ROWNUM을 사용하면 대량의 결과 셋을 정렬하는 번거로운 과정을 피할 수 있습니다. 먼저 그 개념을 살펴보고 예제를 통해 설명하기로 하겠습니다. 아래와 같은 쿼리가 있다고 가정해 봅시다. select ... from ... where ... order by columns; 또 이 쿼리가 반환하는 데이터가 수천 개, 수십만 개, 또는 그 이상에 달한다고 가정해 봅시다. 하지만 사용자가 실제로 관심 있는 것은 상위 N개(Top 10, Top 100)의 값입니다. 이 결과를 얻기 위한 방법에는 두 가지가 있습니다. 클라이언트 애플리케이션에서 쿼리를 실행하고 상위 N 개의 로우만을 가져오도록 명령 ? 쿼리를 인라인 뷰(inline view)로 활용하고, ROWNUM을 이용하여 결과 셋을 제한 (예: SELECT * FROM (your_query_here) WHERE ROWNUM &lt;= N) 두 번째 접근법은 첫 번째에 비해 월등한 장점을 제공합니다. 그 이유는 두 가지입니다. 첫 번째로, ROWNUM을 사용하면 클라이언트의 부담이 줄어듭니다. 데이터베이스에서 제한된 결과 값만을 전송하기 때문입니다. 두 번째로, 데이터베이스에서 최적화된 프로세싱 방법을 이용하여 Top N 로우를 산출할 수 있습니다. Top-N 쿼리를 실행함으로써, 사용자는 데이터베이스에 추가적인 정보를 전달하게 됩니다. 그 정보란 바로 "나는N 개의 로우에만 관심이 있고, 나머지에 대해서는 관심이 없다"는 메시지입니다. 이제, 정렬(sorting) 작업이 데이터베이스 서버에서 어떤 원리로 실행되는지 설명을 듣고 나면 그 의미를 이해하실 수 있을 것입니다. 샘플 쿼리에 위에서 설명한 두 가지 접근법을 적용해 보기로 합시다. select * from t order by unindexed_column;여기서 T가 1백만 개 이상의 레코드를 저장한 큰 테이블이라고, 그리고 각각의 레코드가 100 바이트 이상으로 구성되어 있다고 가정해 봅시다. 그리고 UNINDEXED_COLUMN은 인덱스가 적용되지 않은 컬럼이라고, 또 사용자는 상위 10 개의 로우에만 관심이 있다고 가정하겠습니다. 오라클 데이터베이스는 아래와 같은 순서로 쿼리를 처리합니다. 1. T에 대해 풀 테이블 스캔을 실행합니다. 2. UNINDEXED_COLUMN을 기준으로 T를 정렬합니다. 이 작업은 "full sort"로 진행됩니다. 3. Sort 영역의 메모리가 부족한 경우 임시 익스텐트를 디스크에 스왑하는 작업이 수행됩니다. 4. 임시 익스텐트를 병합하여 상위 10 개의 레코드를 확인합니다. 5.쿼리가 종료되면 임시 익스텐트에 대한 클린업 작업을 수행합니다. . 결과적으로 매우 많은 I/O 작업이 발생합니다. 오라클 데이터베이스가 상위 10 개의 로우를 얻기 위해 전체 테이블을 TEMP 영역으로 복사했을 가능성이 높습니다. 그럼 다음으로, Top-N 쿼리를 오라클 데이터베이스가 개념적으로 어떻게 처리할 수 있는지 살펴 보기로 합시다. select * from (select * from t order by unindexed_column) where ROWNUM &lt; :N; 오라클 데이터베이스가 위 쿼리를 처리하는 방법이 아래와 같습니다. 1. 앞에서와 마찬가지로 T에 대해 풀-테이블 스캔을 수행합니다(이 과정은 피할 수 없습니다). 2. :N 엘리먼트의 어레이(이 어레이는 메모리에 저장되어 있을 가능성이 높습니다)에서 :N 로우만을 정렬합니다. 상위N 개의 로우는 이 어레이에 정렬된 순서로 입력됩니다. N +1 로우를 가져온 경우, 이 로우를 어레이의 마지막 로우와 비교합니다. 이 로우가 어레이의 N +1 슬롯에 들어가야 하는 것으로 판명되는 경우, 로우는 버려집니다. 그렇지 않은 경우, 로우를 어레이에 추가하여 정렬한 후 기존 로우 중 하나를 삭제합니다. Sort 영역에는 최대 N 개의 로우만이 저장되며, 따라서 1 백만 개의 로우를 정렬하는 대신N 개의 로우만을 정렬하면 됩니다. 이처럼 간단한 개념(어레이의 활용, N개 로우의 정렬)을 이용하여 성능 및 리소스 활용도 면에서 큰 이익을 볼 수 있습니다. (TEMP 공간을 사용하지 않아도 된다는 것을 차치하더라도) 1 백만 개의 로우를 정렬하는 것보다 10 개의 로우를 정렬하는 것이 메모리를 덜 먹는다는 것은 당연합니다. 아래의 테이블 T를 이용하면, 두 가지 접근법이 모두 동일한 결과를 제공하지만 사용되는 리소스는 극적인 차이를 보임을 확인할 수 있습니다. create table tas select dbms_random.value(1,1000000) id, rpad('*',40,'*' ) data from dual connect by level &lt;= 100000;begin dbms_stats.gather_table_stats(user, 'T');end;/Now enable tracing, viaexec dbms_monitor.session_trace_enable(waits=&gt;true);And then run your top-N query with ROWNUM:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;select * from (select * from t order by id) where rownum &lt;= 10; 마지막으로 상위 10 개의 레코드만을 반환하는 쿼리를 실행합니다. declare cursor c isselect * from t order by id;l_rec c%rowtype;begin open c; for i in 1 .. 10 loop fetch c into l_rec; exit when c%notfound; end loop; close c;end;/ 이 쿼리를 실행한 후, TKPROF를 사용해서 트레이스 결과를 확인할 수 있습니다. 먼저 Top-N 쿼리 수행 후 확인한 트레이스 결과가 Listing 1과 같습니다. Code Listing 1: ROWNUM을 이용한 Top-N 쿼리 select * from(select * from t order by id) where rownum &lt;= 10call count cpu elapsed disk query current rows-------- -------- ------- ------- ------- -------- -------- ------ Parse 1 0.00 0.00 0 0 0 0Execute 1 0.00 0.00 0 0 0 0Fetch 2 0.04 0.04 0 949 0 10-------- -------- ------- ------- ------- -------- -------- ------ total 4 0.04 0.04 0 949 0 10Rows Row Source Operation----------------- ---------------------------------------------------10 COUNT STOPKEY (cr=949 pr=0 pw=0 time=46997 us)10 VIEW (cr=949 pr=0 pw=0 time=46979 us)10 SORT ORDER BY STOPKEY (cr=949 pr=0 pw=0 time=46961 us)100000 TABLE ACCESS FULL T (cr=949 pr=0 pw=0 time=400066 us) 이 쿼리는 전체 테이블을 읽어 들인 후, SORT ORDER BY STOPKEY 단계를 이용해서 임시 공간에서 사용되는 로우를 10 개로 제한하고 있습니다. 마지막 Row Source Operation 라인을 주목하시기 바랍니다. 쿼리가 949 번의 논리적 I/O를 수행했으며(cr=949), 물리적 읽기/쓰기는 전혀 발생하지 않았고(pr=0, pw=0), 불과 400066 백만 분의 일초 (0.04 초) 밖에 걸리지 않았습니다. 이 결과를 Listing 2의 실행 결과와 비교해 보시기 바랍니다. Code Listing 2: ROWNUM을 사용하지 않은 쿼리 SELECT * FROM T ORDER BY IDcall count cpu elapsed disk query current rows-------- -------- ------- ------- ------- -------- -------- ------ Parse 1 0.00 0.00 0 0 0 0Execute 2 0.00 0.00 0 0 0 0Fetch 10 0.35 0.40 155 949 6 10-------- -------- ------- ------- ------- -------- -------- ------ total 13 0.36 0.40 155 949 6 10Rows Row Source Operation----------------- ---------------------------------------------------10 SORT ORDER BY (cr=949 pr=155 pw=891 time=401610 us)100000 TABLE ACCESS FULL T (cr=949 pr=0 pw=0 time=400060 us)Elapsed times include waiting for the following events:Event waited on Times------------------------------ ------------direct path write temp 33direct path read temp 5 결과가 완전히 다른 것을 확인하실 수 있습니다. "elapsed/CPU time"이 크게 증가했으며, 마지막 Row Source Operation 라인을 보면 그 이유를 이해할 수 있습니다. 정렬 작업은 디스크 상에서 수행되었으며, 물리적 쓰기(physical write) 작업이 "pw=891"회 발생했습니다. 또 다이렉트 경로를 통한 읽기/쓰기 작업이 발생했습니다. (10 개가 아닌) 100,000 개의 레코드가 디스크 상에서 정렬되었으며, 이로 인해 쿼리의 실행 시간과 런타임 리소스가 급증하였습니다. ROWNUM을 이용한 페이지네이션 필자가 ROWNUM을 가장 즐겨 사용하는 대상이 바로 페이지네이션(pagination)입니다. 필자는 결과 셋의 로우 N 에서 로우 M까지를 가져오기 위해 ROWNUM을 사용합니다. 쿼리의 일반적인 형식이 아래와 같습니다. select * from ( select /*+ FIRST_ROWS(n) */ a.*, ROWNUM rnum from ( your_query_goes_here, with order by ) a where ROWNUM &lt;= :MAX_ROW_TO_FETCH )where rnum &gt;= :MIN_ROW_TO_FETCH;where 여기서,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FIRST_ROWS(N)는 옵티마이저에게 "나는 앞부분의 로우에만 관심이 있고, 그 중 N 개를 최대한 빨리 가져오기를 원한다"는 메시지를 전달하는 의미를 갖습니다.&lt;br /&gt;:MAX_ROW_TO_FETCH는 결과 셋에서 가져올 마지막 로우로 설정됩니다. 결과 셋에서 50 번째 ? 60 번째 로우만을 가져오려 한다면 이 값은 60이 됩니다.&lt;br /&gt;:MIN_ROW_TO_FETCH는 결과 셋에서 가져올 첫 번째 로우로 설정됩니다. 결과 셋에서 50 번째 ? 60 번째 로우만을 가져오려 한다면 이 값은 50이 됩니다.&lt;br /&gt;&lt;br /&gt;이 시나리오는 웹 브라우저를 통해 접속한 사용자가 검색을 마치고 그 결과를 기다리고 있는 상황을 가정하고 있습니다. 따라서 첫 번째 결과 페이지(그리고 이어서 두 번째, 세 번째 결과 페이지)를 최대한 빨리 반환해야 할 것입니다. 쿼리를 자세히 살펴 보면, (처음의 :MAX_ROW_TO_FETCH 로우를 반환하는) Top-N 쿼리가 사용되고 있으며, 따라서 위에서 설명한 최적화된 기능을 이용할 수 있음을 알 수 있습니다. 또 네트워크를 통해 클라이언트가 관심을 갖는 로우만을 반환하며, 조회 대상이 아닌 로우는 네트워크로 전송되지 않습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;페이지네이션 쿼리를 사용할 때 주의할 점이 하나 있습니다. ORDER BY 구문은 유니크한 컬럼을 대상으로 적용되어야 합니다. 유니크하지 않은 컬럼 값을 대상으로 정렬을 수행해야 한다면 ORDER BY 조건에 별도의 조건을 추가해 주어야 합니다. 예를 들어 SALARY를 기준으로 100 개의 레코드를 정렬하는 상황에서 100 개의 레코드가 모두 동일한 SALARY 값을 갖는다면, 로우의 수를 20-25 개로 제한하는 것은 의미가 없을 것입니다. 여러 개의 중복된 ID 값을 갖는 작은 테이블을 예로 들어 설명해 보겠습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; create table t 2 as 3 select mod(level,5) id, trunc(dbms_random.value(1,100)) data 4 from dual 5 connect by level &lt;= 10000;Table created. ID 컬럼을 정렬한 후 148-150 번째 로우, 그리고 148?151 번째 로우를 쿼리해 보겠습니다. SQL&gt; select * 2 from 3 (select a.*, rownum rnum 4 from 5 (select id, data 6 from t 7 order by id) a 8 where rownum &lt;= 150 9 ) 10 where rnum &gt;= 148; ID DATA RNUM------- ---------- -----------0 38 1480 64 1490 53 150SQL&gt;SQL&gt; select * 2 from 3 (select a.*, rownum rnum 4 from 5 (select id, data 6 from t 7 order by id) a 8 where rownum &lt;= 151 9 ) 10 where rnum &gt;= 148; ID DATA RNUM------- ---------- -----------0 59 1480 38 1490 64 1500 53 151&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;로우 148의 경우 DATA=38의 결과가 반환되었습니다. 두 번째 쿼리에서는 DATA=59의 결과가 반환되었습니다. 두 가지 쿼리 모두 올바른 결과를 반환하고 있습니다. 쿼리는 데이터를 ID 기준으로 정렬한 후 앞부분의 147 개 로우를 버린 후 그 다음의 3 개 또는 4 개의 로우를 반환합니다. 하지만 ID에 중복값이 너무 많기 때문에, 쿼리는 항상 동일한 결과를 반환함을 보장할 수 없습니다. 이 문제를 해결하려면 ORDER BY 조건에 유니크한 값을 추가해 주어야 합니다. 위의 경우에는 ROWID를 사용하면 됩니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; select * 2 from 3 (select a.*, rownum rnum 4 &lt;/p&gt;&lt;p&gt; from 5 (select id, data 6&lt;/p&gt;&lt;p&gt; from t 7 order by id, rowid) a 8&lt;/p&gt;&lt;p&gt; where rownum &lt;= 150 9 ) 10 &lt;/p&gt;&lt;p&gt;where rnum &gt;= 148; &lt;/p&gt;&lt;p&gt;ID DATA RNUM&lt;/p&gt;&lt;p&gt;------- ---------- -----------&lt;/p&gt;&lt;p&gt;0 45 1480 &lt;/p&gt;&lt;p&gt;99 1490 41&lt;/p&gt;&lt;p&gt; 150&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;SQL&gt;SQL&gt; select * 2 from 3 (select a.*, rownum rnum 4&lt;/p&gt;&lt;p&gt; from 5 (select id, data 6 &lt;/p&gt;&lt;p&gt;  from t 7 order by id, rowid) a 8 &lt;/p&gt;&lt;p&gt;  where rownum &lt;= 151 9 ) 10 &lt;/p&gt;&lt;p&gt;where rnum &gt;= 148; &lt;/p&gt;&lt;p&gt;ID DATA RNUM&lt;/p&gt;&lt;p&gt;------- ---------- -----------&lt;/p&gt;&lt;p&gt;0 45 1480 99 1490 41 1500 45 151&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이제 쿼리를 반복 실행해도 동일한 결과를 보장할 수 있게 되었습니다. ROWID는 테이블 내에서 유니크한 값을 가집니다. 따라서 ORDER BY ID 조건과 ORDER BY ROWID 기준을 함께 사용함으로써 사용자가 기대한 순서대로 페이지네이션 쿼리의 결과를 확인할 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ROWNUM 개념 정리&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;지금까지 ROWNUM에 관련하여 아래와 같은 개념을 설명하였습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ROWNUM의 할당 원리와 잘못된 쿼리 작성을 피하는 방법&lt;br /&gt;ROWNUM이 쿼리 프로세싱에 미치는 영향과 웹 환경의 페이지네이션을 위한 활용 방안&lt;br /&gt;ROWNUM을 이용하여 Top N쿼리로 인한 TEMP 공간의 사용을 피하고 쿼리 응답 속도를 개선하는 방법&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;출처명 : 한국오라클&lt;br /&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/1946138886667006027-3335737796955242569?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/3335737796955242569/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=3335737796955242569' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3335737796955242569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/3335737796955242569'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2008/01/rownum-2007-8-27-14100-ask-tom.html' title='ORACLE - ABOUT ROWNUM &amp; TIP(PAGING)'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6548961084929709955</id><published>2007-12-29T00:28:00.000-08:00</published><updated>2008-01-01T01:21:39.801-08:00</updated><title type='text'>JAVA - ARGUMENT BINDING OF PREPARESTATMENT</title><content type='html'>&lt;table style="TABLE-LAYOUT: fixed; OVERFLOW: hidden; WIDTH: 588px; " cellspacing="0" cellpadding="0" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td id="bb_view"&gt;&lt;br /&gt;&lt;br /&gt;오라클에서 데이터 억세스 모듈을만들때, 바인딩 변수를 사용하면,&lt;br /&gt;DB에 부하를 덜수있는 잇점이 있죠. 머 제가 DBA도 아니므로 내부적인&lt;br /&gt;매커니즘은 잘 모르더라도, 가끔 오라클사에서 와서, 시스템 튜닝을&lt;br /&gt;할때 개발자 교육을 하는데 거기서 항상 강조하는게, 리터럴 변수를&lt;br /&gt;쓰지 말고 바인딩 변수를 쓰라고 그럽니다...&lt;br /&gt;&lt;br /&gt;리터럴과 바인딩에대해 간단히 설명하자면,&lt;br /&gt;&lt;br /&gt;리터럴은&lt;br /&gt;select * from table where id='설사댄스' 처럼 값을 직접 쿼리에 적용시켜&lt;br /&gt;대입시키는 방법입니다.&lt;br /&gt;&lt;br /&gt;바인딩은 리터럴과는 좀 틀리게 작동합니다.&lt;br /&gt;&lt;br /&gt;바인딩은&lt;br /&gt;select * from table where id=:input_id 처럼 작성되어지며,&lt;br /&gt;프롬프트가 :input_id 를 입력을 기다립니다.&lt;br /&gt;&lt;br /&gt;일반적으로 쿼리가 실행되면, 파싱 및 컴파일이 이루어진 후 실행이되어집니다.&lt;br /&gt;dbms는 이전에 사용되어진 쿼리에대한 정보를 가지고 있는데, 이 정보에 기록된&lt;br /&gt;쿼리와 동일한 쿼리를 사용하게되면, 컴파일단계를 생략합니다.&lt;br /&gt;&lt;br /&gt;바인딩을 이용하면, 바인딩변수에 해당하는 부분에 대입되는 값만 틀리지,&lt;br /&gt;한번 컴파일되면, 언제든지 재사용되어집니다. 하지만 리터럴의 경우는 쿼리문&lt;br /&gt;자체를 틀리게 인식하므로, 리터럴변수 위치에 있는 값이 틀리면 매번 컴파일이&lt;br /&gt;이루어지므로, 발생 빈도수가높은(사용율이 높은 쿼리) 는 바인딩처리를 해주면&lt;br /&gt;DB의 부하를 상당히 덜어줄수 있습니다..&lt;br /&gt;&lt;br /&gt;예를들어 회원이 1000명인 사이트에 1000명의 유저에대해 로그인을 해주는&lt;br /&gt;쿼리를 생각해볼때,&lt;br /&gt;select count(1) from user_tb where user_id = '설사댄스' and passwd = '변비'&lt;br /&gt;처럼 리터럴형 쿼리를 만들어준다면, 1000명이 각각 접속을할때 각각에대해&lt;br /&gt;컴파일이 일어납니다. 서로 다른 쿼리로 인식되어지는것이죠.&lt;br /&gt;하지만, 바인딩을 이용하면&lt;br /&gt;select count(1) from user_tb where user_id = :user_id and passwd = :passwd&lt;br /&gt;처럼 작성되어진다면, 한번만 컴파일이 일어나고, 1000명의 유저가 각각의&lt;br /&gt;로그인에대해서 같은 쿼리를 이용하게되므로 컴파일에 걸리는 부하를 1/1000 로&lt;br /&gt;줄일수 있는 기대효과를 볼수 있습니다..&lt;br /&gt;&lt;br /&gt;바인딩은 어떻게 이용할까요..&lt;br /&gt;간단합니다. 요새 언어들은 대부분 prepareStatement 라는 api 를 제공합니다.&lt;br /&gt;&lt;br /&gt;select count(1) from user_tb where user_id = ? and passwd = ?&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;select * from table where id = ? ...&lt;br /&gt;우리는 이런 쿼리를 정적쿼리라고 합니다... 파라미터의 갯수가 정해진 것이죠.&lt;br /&gt;&lt;br /&gt;select * from table where id in (select .... from table_b)&lt;br /&gt;이처럼 가변적인 형태의 파라미터를 받아들이는 형태를 동적쿼리라고 합니다.&lt;br /&gt;&lt;br /&gt;동적쿼리의 장점은 한번의 커넥션으로 다중적인 결과를 도출할수 있습니다.&lt;br /&gt;&lt;br /&gt;예를들어 회원테이블에서 유저의 정보를 가져올려구할때 우리는&lt;br /&gt;select * from member_tb where user_id = ? 처럼 쿼리를 던질수 있습니다.&lt;br /&gt;대부분의 경우라면 위의 쿼리는 unique 속성을 갖는 user_id 에대해 정보를&lt;br /&gt;얻을수 있습니다.&lt;br /&gt;&lt;br /&gt;그런데, 여러명의 데이터도 불러올수 있죠...이럴때 쓰는 게 in 키워드입니다.&lt;br /&gt;select * from member_tb where user_id in ('날나리개발자', '설사댄스')&lt;br /&gt;이처럼 쿼리를 던지면, '날나리개발자' 와 '설사댄스' 라는 아이디를 갖는&lt;br /&gt;유저의 정보를 가져올것입니다...&lt;br /&gt;&lt;br /&gt;그런데 문제가 있습니다.....저런경우는 프로그램적으로 어떻게 바인딩할것인지&lt;br /&gt;.........&lt;br /&gt;&lt;br /&gt;리터럴을 쓰면 오히려 편합니다.&lt;br /&gt;select * from member_tb where user_id in ($user_list)&lt;br /&gt;처럼 쿼리를 만든다음에 $user_list = "'날나리개발자', '설사댄스'";&lt;br /&gt;처럼 처리해주면 간단하죠.&lt;br /&gt;.....................................................................&lt;br /&gt;그런데 이 글의 주제가 바인딩이므로 저렇게 쓰면 매우 슬퍼지죠 ㅠ,.-;;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;=== 바인딩기법1(저렙용) ===&lt;br /&gt;어떤 언어든 for , while 등의 루프를 제공합니다.&lt;br /&gt;parameter 로 $user_list[] = {"날나리개발자", "설사댄스"};&lt;br /&gt;이렇게 값을 가져온다면&lt;br /&gt;$qry = "select * from user_tb ";&lt;br /&gt;$qry.= "where user_id in (";&lt;br /&gt;for($i=0; $i&lt;$user_list.length; $i++) { //$user_list.length ??? 맞는문법인지 원..php 한지 오래되서... // 어쨌든 주제는 그게 아니니 걸러들으시길 -o-;;;; if($i&gt;0) $qry.=" , ";&lt;br /&gt;$qry .= "?";&lt;br /&gt;}&lt;br /&gt;$qry.=" ) ";&lt;br /&gt;&lt;br /&gt;for($i=0; $i&lt;$user_list.length; $i++) { // 여기에 바인딩변수를 setting 하는 메서드 호출; } 대충 이런 로직을 생각해낼수 있겠죠......머 좀 복잡하긴하지만, 일단 바인딩이라는 주제아래 충분히 가치있는 로직을 만들어냈습니다. 그런데 문제가 있습니다... 배열의 갯수가 틀리면, 바인딩을 쓴 효과가 줄어든다는 것이죠... 그렇다면,,이를 해결할 해결책은 무엇일까요? 그건 바로 배열형태로 파라미터를 가져오지말고, 구분자를 갖는 문자열로 가져오는 겁니다... $user_list = "설사댄스,날나리개발자"; 처럼요.. 그럼 이걸 바인딩하는 기술을 알아보도록 하겠습니다..실은 오늘 주제가 이겁니다. ^^;;; 그 전에 먼저 준비운동을 하겠습니다... 문자열을 구분자 (예:콤마",")를 기준으로 row 로 나누는 방법을 연구해봅시다. 먼저 pivot table을 만들어봅시다. CREATE TABLE PIVOT ( NO NUMBER NOT NULL, NAME VARCHAR2(256 BYTE) ); CREATE UNIQUE INDEX PKX_M_PIVOT ON PIVOT (NO); insert into pivot select rownum, to_char(rownum) from dual connect by level &lt;= 1000; commit; 이렇게해서 no 컬럼의 값이 1 부터 1000 까지의 값을 갖는 pivot 테이블을 만들었습니다. 이렇게 pivot 을 만들면 상당히 유용하게 쓸수있습니다. select "설사댄스,날나리개발자" as col1 from dual; result&gt;&gt;&lt;br /&gt;-----&lt;br /&gt;col1&lt;br /&gt;-----&lt;br /&gt;설사댄스,날나리개발자&lt;br /&gt;-----&lt;br /&gt;&lt;br /&gt;, 를 기준으로 row 로 나눈다면 2개의 로우가 필요하겠죠.&lt;br /&gt;몇개의 row가 필요한지 알아내는 방법은&lt;br /&gt;&lt;br /&gt;select length(a.col1)-length(replace(a.col1,',',''))+1 as len&lt;br /&gt;from (select "설사댄스,날나리개발자" as col1 from dual) a;&lt;br /&gt;&lt;br /&gt;처럼하면 2 가 나옵니다.&lt;br /&gt;&lt;br /&gt;그럼 다음단계로 가서 피봇과 크로스조인을 해봅시다.&lt;br /&gt;&lt;br /&gt;select a.len, a.col1, b.no from (&lt;br /&gt;select length(a.col1)-length(replace(a.col1,',',''))+1 as len,&lt;br /&gt;a.col1&lt;br /&gt;from (select '설사댄스,날나리개발자' as col1 from dual) a&lt;br /&gt;) a cross join pivot b where b.no &lt;&gt;&gt;&lt;br /&gt;--------+----------------------+----------+&lt;br /&gt;len col1 no&lt;br /&gt;--------+----------------------+----------+&lt;br /&gt;2 설사댄스,날나리개발자 1&lt;br /&gt;2 설사댄스,날나리개발자 2&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;br /&gt;데이터 복제에 성공햇습니다.... 만약 "설사댄스,날나리개발자,행복한고니"&lt;br /&gt;를 입력하면,&lt;br /&gt;result&gt;&gt;&lt;br /&gt;--------+----------------------+----------+&lt;br /&gt;len col1 no&lt;br /&gt;--------+----------------------+----------+&lt;br /&gt;3 설사댄스,날나리개발자,행복한고니 1&lt;br /&gt;3 설사댄스,날나리개발자,행복한고니 2&lt;br /&gt;3 설사댄스,날나리개발자,행복한고니 3&lt;br /&gt;-------------------------------------------&lt;br /&gt;처럼 결과가 나오겠죠.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;자 이제 저걸&lt;br /&gt;---------&lt;br /&gt;1 설사댄스&lt;br /&gt;2 날나리개발자&lt;br /&gt;3 행복한고니&lt;br /&gt;----------&lt;br /&gt;의 형태로 만들려면 어떻게 해야할까요...&lt;br /&gt;&lt;br /&gt;네.. instr() 과 substr() 을 이용하면됩니다...&lt;br /&gt;&lt;br /&gt;select&lt;br /&gt;trim(&lt;br /&gt;SUBSTR&lt;br /&gt;(&lt;br /&gt;','col1',' ,&lt;br /&gt;INSTR(','col1',',',',1, NO)+1 ,&lt;br /&gt;(INSTR(','col1',',',', 1,NO+1)-INSTR(','col1',',',', 1,NO))-1&lt;br /&gt;)&lt;br /&gt;) as col2&lt;br /&gt;from (&lt;br /&gt;select a.len, a.col1, b.no from (&lt;br /&gt;select length(a.col1)-length(replace(a.col1,',',''))+1 as len ,&lt;br /&gt;a.col1&lt;br /&gt;from (select '설사댄스,날나리개발자,행복한고니' as col1 from dual) a&lt;br /&gt;) a cross join pivot b where b.no &lt;= a.len ) 결과&gt;&gt;&lt;br /&gt;------+--------------+&lt;br /&gt;no col2&lt;br /&gt;------+--------------+&lt;br /&gt;1 설사댄스&lt;br /&gt;2 날나리개발자&lt;br /&gt;3 행복한고니&lt;br /&gt;------+--------------+&lt;br /&gt;&lt;br /&gt;이쯤되면 눈치채셨죠...이제 이사람의 정보를 어떻게 가져와야할것인지...&lt;br /&gt;&lt;br /&gt;=== 바인딩기법(고렙용) : 구분자를 가진 문자열을 바인딩으로 받아서&lt;br /&gt;파싱하여 동적쿼리 만들기 ===&lt;br /&gt;&lt;br /&gt;select * from member_tb where user_id in (&lt;br /&gt;select&lt;br /&gt;trim(&lt;br /&gt;SUBSTR&lt;br /&gt;(&lt;br /&gt;','col1',' ,&lt;br /&gt;INSTR(','col1',',',',1, NO)+1 ,&lt;br /&gt;(INSTR(','col1',',',', 1,NO+1)-INSTR(','col1',',',', 1,NO))-1&lt;br /&gt;)&lt;br /&gt;) as col2&lt;br /&gt;from (&lt;br /&gt;select a.len, a.col1, b.no from (&lt;br /&gt;select length(a.col1)-length(replace(a.col1,',',''))+1 as len ,&lt;br /&gt;a.col1&lt;br /&gt;from (select ? as col1 from dual) a&lt;br /&gt;) a cross join pivot b where b.no &lt;= a.len ) ) 단 하나의 바인딩변수를 이용함으로서 루프를 이용한 바인딩을 셋팅하는 부담을 줄였습니다.... 이걸 이용하면 어떤 장점이 있을까요... update, insert, select 모든 쿼리에 다양하게 이용되어질수 있습니다. 파라미터를 구분자로 연결된 형태로 넘기는건 그리 어려운 작업이 아니니깐요. &lt;!-- 테러 태그 방지용 --&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;출처 : &lt;a class="con_link" href="http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&amp;amp;wr_id=46546&amp;amp;sca=&amp;amp;sfl=mb_id%7C%7Csubject&amp;amp;stx=VALENNY&amp;amp;sop=and" target="_blank"&gt;http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&amp;amp;wr_id=46546&amp;amp;sca=&amp;amp;sfl=mb_id%7C%7Csubject&amp;amp;stx=VALENNY&amp;amp;sop=and&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6548961084929709955?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6548961084929709955/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6548961084929709955' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6548961084929709955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6548961084929709955'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2007/12/db.html' title='JAVA - ARGUMENT BINDING OF PREPARESTATMENT'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946138886667006027.post-7677710138421662807</id><published>2007-12-29T00:21:00.000-08:00</published><updated>2008-01-01T01:13:02.780-08:00</updated><title type='text'>HTML - DIV POSiTION TIP</title><content type='html'>특정 object를 기준으로 삼고 싶을때&lt;br /&gt;&amp;lt;div id=target position='position:relative'&amp;gt;타겟이 되는 div&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id=sticker style="top:expression(target.offsetTop)"&amp;gt;달라 붙는 div&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;하지만 타겟이 되는 div의 position이 relative가 아니면 위치를 알 수 없다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-7677710138421662807?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/7677710138421662807/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=7677710138421662807' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7677710138421662807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/7677710138421662807'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2007/12/div.html' title='HTML - DIV POSiTION TIP'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-1606214002696849580</id><published>2007-12-29T00:20:00.001-08:00</published><updated>2008-01-01T01:13:52.566-08:00</updated><title type='text'>LINUX - CRONTAP</title><content type='html'>&lt;div class="view" style="FONT-SIZE: 9pt; FONT-FAMILY: 돋움"&gt;&lt;p&gt;일정 시간에 자동으로 프로그램(배치) 을 실행시킬 수 있다.&lt;/p&gt;&lt;p&gt;1. 크론텝 목록보기 : corontab -l &lt;/p&gt;&lt;p&gt;2. 크론텝 편집 : corontab -e&lt;/p&gt;&lt;p&gt;ex) 0 0 * * * /test.sh&lt;/p&gt;&lt;p&gt;분 시 일 월 요일 / 실행 프로세스명&lt;/p&gt;&lt;p&gt;ex) 55 10 1 8 /usr/local/TEST/test.sh&lt;/p&gt;&lt;p&gt;55분 10시 1일 8월 화요일 /test.sh를 실행&lt;/p&gt;&lt;p&gt;/etc/rc.d/init.d/crond restart : 크론텝 리스타트&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-1606214002696849580?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/1606214002696849580/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=1606214002696849580' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1606214002696849580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/1606214002696849580'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2007/12/blog-post_9852.html' title='LINUX - CRONTAP'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-86635494991909403</id><published>2007-12-29T00:17:00.001-08:00</published><updated>2008-01-01T01:14:19.893-08:00</updated><title type='text'>ORACLE - HINT</title><content type='html'>&lt;pre style="BACKGROUND-COLOR: white"&gt; 1.ALL_ROWS&lt;br /&gt;     Goal : Best Throughput&lt;br /&gt;     용도 : 전체 RESOURCE 소비를 최소화 시키기 위한 힌트.&lt;br /&gt;            Cost-Based 접근방식.&lt;br /&gt;&lt;br /&gt;     예   : SELECT /*+ALL_ROWS */ EMPNO,ENAME&lt;br /&gt;            FROM   EMP&lt;br /&gt;            WHERE  EMPNO = 7655;&lt;br /&gt;&lt;br /&gt;  2.FIRST_ROWS&lt;br /&gt;     Goal : Best Response Time&lt;br /&gt;     용도 : 조건에 맞는 첫번째 row를 리턴하기 위한 Resource&lt;br /&gt;            소비를 최소화 시키기위한 힌트.&lt;br /&gt;            Cost-Based 접근방식.&lt;br /&gt;     특징 : - Index Scan 이 가능하다면 Optimizer가 Full Table Scan 대신&lt;br /&gt;              Index Scan을 선택한다.&lt;br /&gt;            - Index Scan 이 가능하다면 Optimizer가 Sort-Merge 보다&lt;br /&gt;              Nested Loop 을 선택한다.&lt;br /&gt;            - Order By절에의해 Index Scan 이 가능하다면,&lt;br /&gt;              Sort과정을 피하기위해 Index Scan을 선택한다.&lt;br /&gt;            - Delete/Update Block 에서는 무시된다.    &lt;br /&gt;            - 다음을 포함한 Select 문에서도 제외된다.&lt;br /&gt;              집합연산자 (Union,Intersect,Minus,Union All)&lt;br /&gt;              Group By&lt;br /&gt;              For UpDate&lt;br /&gt;              Group 함수&lt;br /&gt;              Distinct  &lt;br /&gt;&lt;br /&gt;     예   : SELECT /*+FIRST_ROWS */ EMPNO,ENAME&lt;br /&gt;            FROM   EMP&lt;br /&gt;            WHERE  EMPNO = 7655;&lt;br /&gt;&lt;br /&gt;  3.CHOOSE&lt;br /&gt;     Goal : Acess되는 테이블에 통계치 존재여부에 따라&lt;br /&gt;            Optimizer로 하여금 Rule-Based Approach와 Cost-Based Approach&lt;br /&gt;            중 하나를 선택할수 있게 한다.&lt;br /&gt;     용도 : Data Dictionary가 해당테이블에 대해 통계정보를 가지고 있다면&lt;br /&gt;            Optimizer는 Cost-Based Approach를 선택하고,&lt;br /&gt;            그렇지 않다면 Rule-Based Approach를 선택한다.&lt;br /&gt;&lt;br /&gt;     예   : SELECT /*+CHOOSE */ EMPNO,ENAME&lt;br /&gt;            FROM   EMP&lt;br /&gt;            WHERE  EMPNO = 7655;&lt;br /&gt;&lt;br /&gt;  4.RULE&lt;br /&gt;     용도 : Rule-Based 최적화를 사용하기위해.&lt;br /&gt;&lt;br /&gt;     예   : SELECT /*+RULE */ EMPNO,ENAME&lt;br /&gt;            FROM   EMP&lt;br /&gt;            WHERE  EMPNO = 7655;&lt;br /&gt;&lt;br /&gt;B. Access Methods 로써의 Hints&lt;br /&gt;&lt;br /&gt;  1.FULL&lt;br /&gt;     용도 : 해당테이블의 Full Table Scan을 유도.&lt;br /&gt;   &lt;br /&gt;     예   : SELECT /*+FULL(EMP) */ EMPNO,ENAME&lt;br /&gt;            FROM   EMP&lt;br /&gt;            WHERE  EMPNO = 7655;&lt;br /&gt;          * 테이블 Alias 가 있는경우는 Alias사용.&lt;br /&gt;             Schema Name은 사용안함(From 에 SCOTT.EMP 라고 기술해도 hint에는 EMP사용).&lt;br /&gt;&lt;br /&gt;  2.ROWID&lt;br /&gt;     용도 : 지정된 테이블의 ROWID를 이용한 Scan 유도&lt;br /&gt;&lt;br /&gt;  3.CLUSTER&lt;br /&gt;     용도 : 지정된 테이블Access에 Cluster Scan 유도.&lt;br /&gt;            Cluster된 Objects에만 적용가능.&lt;br /&gt;   &lt;br /&gt;     예   : SELECT /*+CLUSTER(EMP) */ ENAME,DEPTNO&lt;br /&gt;            FROM   EMP,DEPT&lt;br /&gt;            WHERE  DEPTNO = 10&lt;br /&gt;            AND    EMP.DEPTNO = DEPT.DEPTNO;&lt;br /&gt;&lt;br /&gt;  4.HASH&lt;br /&gt;     용도 : 지정된 테이블Access에 HASH Scan 유도.&lt;br /&gt;            /*+HASH(table) */&lt;br /&gt;&lt;br /&gt;  5.HASH_AJ&lt;br /&gt;     용도 : NOT IN SubQuery 를 HASH anti-join으로 변형&lt;br /&gt;            /*+HASH_AJ */&lt;br /&gt;&lt;br /&gt;  6.HASH_SJ&lt;br /&gt;     용도 : correlated Exists SubQuery 를 HASH semi-join으로 변형&lt;br /&gt;            /*+HASH_SJ */&lt;br /&gt;&lt;br /&gt;  7.INDEX&lt;br /&gt;     용도 : 지정된 테이블Access에 Index Scan 유도.&lt;br /&gt;          * 하나의 index만 지정되면 optimizer는 해당index를 이용.&lt;br /&gt;          * 여러개의 인덱스가 지정되면  optimizer가 각 index의&lt;br /&gt;            scan시 cost를 분석 한 후 최소비용이 드는 index사용.&lt;br /&gt;            경우에 따라 optimizer는 여러 index를 사용한 후 결과를&lt;br /&gt;            merge하는 acees방식도 선택.&lt;br /&gt;          * index가 지정되지 않으면 optimizer는 테이블의 이용가능한&lt;br /&gt;            모든 index에 대해 scan cost를 고려후 최저비용이 드는&lt;br /&gt;            index scan을 선택한다.&lt;br /&gt;     예   : SELECT /*+INDEX(EMP EMPNO_INDEX) */ EMPNO,ENAME&lt;br /&gt;            FROM   EMP&lt;br /&gt;            WHERE  DEPTNO=10&lt;br /&gt;&lt;br /&gt;  8.INDEX_ASC&lt;br /&gt;     용도 : INDEX HINT와 동일 단,ASCENDING 으로 SCAN함을 확실히 하기위함.&lt;br /&gt;&lt;br /&gt;  9.INDEX_COMBINE&lt;br /&gt;     용도 : INDEX명이 주어지지 않으면 OPTIMIZER는 해당 테이블의&lt;br /&gt;            best cost 로 선택된 Boolean combination index 를 사용한다.&lt;br /&gt;            index 명이 주어지면 주어진 특정 bitmap index 의&lt;br /&gt;            boolean combination 의 사용을 시도한다.&lt;br /&gt;        &lt;br /&gt;            /*+INDEX_COMBINE(table index) */&lt;br /&gt;&lt;br /&gt; 10.INDEX_DESC&lt;br /&gt;     용도 : 지정된 테이블의 지정된 index를 이용 descending으로 scan&lt;br /&gt;            하고자할때 사용.&lt;br /&gt;&lt;br /&gt;            /*+INDEX_DESC(table index) */&lt;br /&gt;&lt;br /&gt; 11.INDEX_FFS&lt;br /&gt;     용도 : full table scan보다 빠른 full index scan을 유도.&lt;br /&gt;&lt;br /&gt;            /*+INDEX_FFS(table index) */&lt;br /&gt;&lt;br /&gt; 12.MERGE_AJ&lt;br /&gt;     용도 : not in subquery를 merge anti-join으로 변형&lt;br /&gt;&lt;br /&gt;            /*+MERGE_AJ */&lt;br /&gt;&lt;br /&gt; 13.MERGE_SJ&lt;br /&gt;     용도 : correalted EXISTS subquery를 merge semi-join으로 변형&lt;br /&gt;&lt;br /&gt;            /*+MERGE_SJ */&lt;br /&gt;&lt;br /&gt; 14.AND_EQUAL&lt;br /&gt;     용도 : single-column index의 merge를 이용한 access path 선택.&lt;br /&gt;            적어도 두개이상의 index가 지정되어야한다.&lt;br /&gt;&lt;br /&gt;           /*+AND_EQUAL(table index1,index2...) */&lt;br /&gt;         &lt;br /&gt; 15.USE_CONCAT&lt;br /&gt;     용도 : 조건절의 OR 를 Union ALL 형식으로 변형한다.&lt;br /&gt;            일반적으로 변형은 비용측면에서 효율적일때만 일어난다.&lt;br /&gt;&lt;br /&gt;          /*+USE_CONCAT */           &lt;br /&gt; &lt;br /&gt;           &lt;br /&gt;C. JOIN 순서를 결정하는 Hints&lt;br /&gt;&lt;br /&gt;  1.ORDERED&lt;br /&gt;     용도 : from절에 기술된 테이블 순서대로 join이 일어나도록 유도.&lt;br /&gt;       &lt;br /&gt;          /*+ORDERED */&lt;br /&gt;     예   : SELECT /*+ORDERED */ TAB1.COL1,TAB2.COL2,TAB3.COL3&lt;br /&gt;            FROM   TAB1,TAB2,TAB3&lt;br /&gt;            WHERE  TAB1.COL1=TAB2.COL1&lt;br /&gt;            AND    TAB2.COL1=TAB3.COL1;&lt;br /&gt;&lt;br /&gt;  2.STAR&lt;br /&gt;     용도 : STAR QUERY PLAN이 사용가능하다면 이를 이용하기위한 HINT.&lt;br /&gt;            STAR PLAN은 규모가 가장큰 테이블이 QUERY에서 JOIN ORDER상&lt;br /&gt;            마지막으로 위치하게 하고 NESTED LOOP 으로 JOIN이 일어나도록&lt;br /&gt;            유도한다.&lt;br /&gt;            적어도 3개 테이블 이상이 조인에 참여해야하며 LARGE TABLE의&lt;br /&gt;            CONCATENATED INDEX는 최소 3컬럼 이상을 INDEX에 포함해야한다.&lt;br /&gt;            테이블이 ANALYZE 되어 있다면 OPTIMIZER가 가장효율적인 STAR PLAN을&lt;br /&gt;            선택한다.   &lt;br /&gt;&lt;br /&gt;         /*+STAR */&lt;br /&gt;&lt;br /&gt;D. JOIN OPERATION을 결정하는 HINTS.&lt;br /&gt;&lt;br /&gt;  1.USE_NL&lt;br /&gt;     용도 : 테이블의 JOIN 시 테이블의 각 ROW가 INNER 테이블을 NESTED LOOP&lt;br /&gt;            형식으로 JOIN 한다.&lt;br /&gt;&lt;br /&gt;         /*+USE_NL(inner_table) */&lt;br /&gt; &lt;br /&gt;     예   : SELECT /*+ORDERD USE_NL(CUSTOMER) */&lt;br /&gt;            FROM   ACCOUNT.BALANCE,CUSTOMER.LAST_NAME,CUSTOMER.FIRST_NAME&lt;br /&gt;            WHERE  ACCOUNT.CUSTNO = CUSTOMER.CUSTNO;&lt;br /&gt;&lt;br /&gt;  2.USE_MERGE&lt;br /&gt;     용도 : 지정된 테이블들의 조인이 SORT-MERGE형식으로 일어나도록 유도.&lt;br /&gt;&lt;br /&gt;         /*+USE_MERGE(table) */&lt;br /&gt;          * 괄호안의 테이블은 JOIN ORDER상의 뒤의 테이블(?)&lt;br /&gt;&lt;br /&gt;  3.USE_HASH&lt;br /&gt;     용도 : 각 테이블간 HASH JOIN이 일어나도록 유도.&lt;br /&gt;&lt;br /&gt;         /*+USE_HASH(table) */&lt;br /&gt;          * 괄호안의 테이블은 JOIN ORDER상의 뒤의 테이블(?)&lt;br /&gt;&lt;br /&gt;  4.DRIVING_SITE&lt;br /&gt;     용도 : QUERY의 실행이 ORACLE에 의해 선택된 SITE가 아닌 다른 SITE에서&lt;br /&gt;            일어나도록 유도.&lt;br /&gt;&lt;br /&gt;         /*+DRIVING_SITE(table) */&lt;br /&gt;     예   : SELECT /*+DRIVING_SITE(DEPT)  */&lt;br /&gt;            FROM   EMP,DEPT@RSITE&lt;br /&gt;            WHERE  EMP.DEPTNO = DEPT.DEPTNO;    &lt;br /&gt;&lt;br /&gt;            DRIVING_SITE 힌트를 안쓰면 DEPT의 ROW가 LOCAL SITE로 보내져&lt;br /&gt;            LOCAL SITE에서 JOIN이 일어나지만,&lt;br /&gt;            DRIVING_SITE 힌트를 쓰면 EMP의 ROW들이REMOTE SITE로 보내져&lt;br /&gt;            QUERY가 실행된후 LOCAL SITE로 결과가 RETURN된다. &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-86635494991909403?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/86635494991909403/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=86635494991909403' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/86635494991909403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/86635494991909403'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2007/12/1.html' title='ORACLE - HINT'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6453368431554808443</id><published>2007-12-29T00:15:00.000-08:00</published><updated>2008-01-01T01:15:42.415-08:00</updated><title type='text'>LINUX - SYNC SYSTEM TIMER</title><content type='html'>&lt;div class="view" style="font-size: 9pt; font-family: 돋움;"&gt; &lt;p&gt;uptime 으로 현제 시간 확인 후&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; rdate -s 203.248.240.103 &lt;/blockquote&gt; &lt;p&gt;&lt;/p&gt;  &lt;p&gt;time.bora.net 과 동기화 시키면 된다.&lt;/p&gt;  &lt;p&gt; admin 계정권한으로.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;*관련 명령어 &lt;/p&gt; &lt;p&gt;env, nslookup(time.bora.net)&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6453368431554808443?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6453368431554808443/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6453368431554808443' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6453368431554808443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6453368431554808443'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2007/12/uptime-rdate-s-203.html' title='LINUX - SYNC SYSTEM TIMER'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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-1946138886667006027.post-6549027445506692401</id><published>2007-12-29T00:13:00.000-08:00</published><updated>2008-01-01T01:16:14.499-08:00</updated><title type='text'>LINUX - CRONTAP</title><content type='html'>일정 시간에 자동으로 프로그램(배치) 을 실행시킬 수 있다.&lt;br /&gt;1. 크론텝 목록보기 : corontab -l&lt;br /&gt;&lt;br /&gt;2. 크론텝 편집 : corontab -e&lt;br /&gt;ex) 0 0 * * * /test.sh&lt;br /&gt;분 시 일 월 요일 / 실행 프로세스명&lt;br /&gt;&lt;br /&gt;ex) 55 10 1 8 /usr/local/TEST/test.sh&lt;br /&gt;55분 10시 1일 8월 화요일 /test.sh를 실행&lt;br /&gt;&lt;br /&gt;/etc/rc.d/init.d/crond restart : 크론텝 리스타트&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1946138886667006027-6549027445506692401?l=stillrabbit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stillrabbit.blogspot.com/feeds/6549027445506692401/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1946138886667006027&amp;postID=6549027445506692401' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6549027445506692401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946138886667006027/posts/default/6549027445506692401'/><link rel='alternate' type='text/html' href='http://stillrabbit.blogspot.com/2007/12/blog-post_29.html' title='LINUX - CRONTAP'/><author><name>StillRabbit</name><uri>http://www.blogger.com/profile/02996365160740113938</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>
