<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Marine&amp;trade;</title>
    <link>https://zzimme.tistory.com/</link>
    <description>청춘의역사를새로쓰는,인생은80부터라고우기는,일개 시니어 개발자, 겨울마다사라지고,봄되면돌아오는,철들기싫어하는 LIKE 사진,영화,음악,보드,사람</description>
    <language>ko</language>
    <pubDate>Sun, 31 May 2026 08:41:36 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Marine&amp;trade;</managingEditor>
    <image>
      <title>Marine&amp;trade;</title>
      <url>https://t1.daumcdn.net/cfile/tistory/1715593B505AAD4612</url>
      <link>https://zzimme.tistory.com</link>
    </image>
    <item>
      <title>Microsoft One Drive 이딴걸 왜 서비스하지?</title>
      <link>https://zzimme.tistory.com/1592</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;문서 공유 편집이 필요해서 테스트겸 개인계정으로 살펴보고 있는데 정말 놀라웠다&lt;br&gt;문서편집외에 제대로 되는 기능이 별로 없다&lt;br&gt;동기화도 오래걸리고, 권한 부여도 오래걸린다&lt;br&gt;특히 파일관련 동기화가 정말 엉망이다&lt;br&gt;&lt;br&gt;문서를 공유하려하니 계정이 잠기고&lt;br&gt;잠김 계정 안내따라 풀고 들어가니 문서가 삭제됐다&lt;br&gt;&lt;br&gt;다른 문서들도 모두 안보인다 &lt;br&gt;&lt;br&gt;약 20-30분 후 다시들어가니 문서가 보여 찜짐한 가운데 문서를 모두 삭제했다&lt;br&gt;홈에 저 문서는 며칠내내 삭제가 안된다 캐싱이거나 동기화 문제인지..&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;2796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T6f7V/btsOe7J4ob9/kAfTE0MaSCIUGIKSzGrNDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T6f7V/btsOe7J4ob9/kAfTE0MaSCIUGIKSzGrNDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T6f7V/btsOe7J4ob9/kAfTE0MaSCIUGIKSzGrNDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT6f7V%2FbtsOe7J4ob9%2FkAfTE0MaSCIUGIKSzGrNDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1290&quot; height=&quot;2796&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;2796&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;2796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBUcMC/btsOdgIe7aS/oPIF2OtiyQyK4bqyQyqKsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBUcMC/btsOdgIe7aS/oPIF2OtiyQyK4bqyQyqKsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBUcMC/btsOdgIe7aS/oPIF2OtiyQyK4bqyQyqKsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBUcMC%2FbtsOdgIe7aS%2FoPIF2OtiyQyK4bqyQyqKsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1290&quot; height=&quot;2796&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;2796&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;2796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AsOzX/btsOeEnR7vP/9B9M8U42WzYrpAU4b0F1hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AsOzX/btsOeEnR7vP/9B9M8U42WzYrpAU4b0F1hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AsOzX/btsOeEnR7vP/9B9M8U42WzYrpAU4b0F1hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAsOzX%2FbtsOeEnR7vP%2F9B9M8U42WzYrpAU4b0F1hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1290&quot; height=&quot;2796&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;2796&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;그냥 안쓰는걸로 ..&lt;br&gt;&lt;br&gt;구글링해보니 리뷰가 정말 안좋다 &lt;br&gt;구글링먼저 해볼껄..&lt;/p&gt;</description>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1592</guid>
      <comments>https://zzimme.tistory.com/1592#entry1592comment</comments>
      <pubDate>Tue, 27 May 2025 17:43:47 +0900</pubDate>
    </item>
    <item>
      <title>Install Docker for Windows</title>
      <link>https://zzimme.tistory.com/1573</link>
      <description>&lt;p&gt;http://docs.docker.com/windows/step_one/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Docker를 Windows에 설치할 경우, default machine을 실행하지 못하고,&amp;nbsp;&lt;/p&gt;&lt;p&gt;에러코드 255나 1로 exit되는 경우가 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예)&amp;nbsp;&lt;/p&gt;&lt;p&gt;Error setting up host only network on machine start: exit status 1&lt;/p&gt;&lt;p&gt;Unexpected error getting machine url: exit status 255&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;VM이 활성화 되어 있지 않거나,&amp;nbsp;&lt;/p&gt;&lt;p&gt;BIOS의 virtualization 옵션이 활성화 되어 있지 않을 경우 에러가 난다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;BIOS로 진입하여 해당 옵션을 enable로 활성화 시킬 경우, 정상적으로 Docker가 실행된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;windows7일 경우 아래의 링크에서 HAV detection tool을 다운로드받아 실행하여 체크.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;http://www.microsoft.com/en-us/download/details.aspx?id=592&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Know/ETC</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1573</guid>
      <comments>https://zzimme.tistory.com/1573#entry1573comment</comments>
      <pubDate>Mon, 26 Oct 2015 15:11:48 +0900</pubDate>
    </item>
    <item>
      <title>MySQL Yum Repository</title>
      <link>https://zzimme.tistory.com/1566</link>
      <description>&lt;p&gt;Mysql을 Yum으로 설치시 아래 문서를 참고하여 Yum Repository를 업데이트한 후 설치.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;http://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html&lt;/p&gt;</description>
      <category>Know/DATABASE</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1566</guid>
      <comments>https://zzimme.tistory.com/1566#entry1566comment</comments>
      <pubDate>Mon, 11 May 2015 14:15:00 +0900</pubDate>
    </item>
    <item>
      <title>IE에서 Websocket 연결시 12057 에러 발생시</title>
      <link>https://zzimme.tistory.com/1564</link>
      <description>&lt;p&gt;CRL에 해당 인증서가 폐기목록으로 저장되는 경우 발생&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;IE의 인터넷옵션 중 고급 &amp;gt; 보안 영역의 &quot;서버의 인증서 해지 확인*&quot; 의 체크를 해제.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;http://www.genopro.com/ssl/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Know/Network</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1564</guid>
      <comments>https://zzimme.tistory.com/1564#entry1564comment</comments>
      <pubDate>Wed, 6 May 2015 16:21:30 +0900</pubDate>
    </item>
    <item>
      <title>VirtualBox CentOS 게스트 확장 설치</title>
      <link>https://zzimme.tistory.com/1563</link>
      <description>&lt;p&gt;&lt;font color=&quot;#5f5f5f&quot; face=&quot;Dotum&quot;&gt;&lt;span style=&quot;letter-spacing: -1px;&quot;&gt;VirtualBox에서 게스트 확장 설치시 아래의 실패 오류가 나는경우.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(95, 95, 95); font-family: Dotum; letter-spacing: -1px;&quot;&gt;Building the main Guest Additional module&amp;nbsp; &amp;nbsp; [실패]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(95, 95, 95); font-family: Dotum; letter-spacing: -1px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(46, 139, 87); font-family: Monaco, 'Andale Mono', 'Courier New', Courier, mono; font-size: 11.6999998092651px; line-height: 15.210000038147px;&quot;&gt;yum install -y gcc kernel-devel&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#2e8b57&quot; face=&quot;Monaco, Andale Mono, Courier New, Courier, mono&quot;&gt;&lt;span style=&quot;font-size: 11.6999998092651px; line-height: 15.210000038147px;&quot;&gt;설치 후 reboot&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#2e8b57&quot; face=&quot;Monaco, Andale Mono, Courier New, Courier, mono&quot;&gt;&lt;span style=&quot;font-size: 11.6999998092651px; line-height: 15.210000038147px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(95, 95, 95); font-family: Dotum; letter-spacing: -1px;&quot;&gt;아래의 Developement Tools를 설치 후&amp;nbsp;Reboot&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(95, 95, 95); font-family: Dotum; letter-spacing: -1px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(95, 95, 95); font-family: Dotum; letter-spacing: -1px; font-size: 9pt; line-height: 1.5;&quot;&gt;yum groupinstall &quot;Development Tools&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(95, 95, 95); font-family: Dotum; letter-spacing: -1px; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(95, 95, 95); font-family: Dotum; letter-spacing: -1px; font-size: 9pt; line-height: 1.5;&quot;&gt;그리고 게스트 확장 설치 후 reboot&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(95, 95, 95); font-family: Dotum; letter-spacing: -1px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(95, 95, 95); font-family: Dotum; letter-spacing: -1px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Know/Linux</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1563</guid>
      <comments>https://zzimme.tistory.com/1563#entry1563comment</comments>
      <pubDate>Wed, 6 May 2015 16:17:29 +0900</pubDate>
    </item>
    <item>
      <title>Netty ChannelGroup</title>
      <link>https://zzimme.tistory.com/1558</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;http://netty.io/5.0/api/index.html&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;A thread-safe&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true&quot; title=&quot;class or interface in java.util&quot; style=&quot;color: rgb(76, 107, 135); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&lt;code style=&quot;font-size: 1.2em;&quot;&gt;Set&lt;/code&gt;&lt;/a&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&amp;nbsp;that contains open&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://netty.io/5.0/api/io/netty/channel/Channel.html&quot; title=&quot;interface in io.netty.channel&quot; style=&quot;color: rgb(76, 107, 135); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&lt;code style=&quot;font-size: 1.2em;&quot;&gt;Channel&lt;/code&gt;&lt;/a&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;s and provides various bulk operations on them. Using&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://netty.io/5.0/api/io/netty/channel/group/ChannelGroup.html&quot; title=&quot;interface in io.netty.channel.group&quot; style=&quot;color: rgb(76, 107, 135); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&lt;code style=&quot;font-size: 1.2em;&quot;&gt;ChannelGroup&lt;/code&gt;&lt;/a&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;, you can categorize&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://netty.io/5.0/api/io/netty/channel/Channel.html&quot; title=&quot;interface in io.netty.channel&quot; style=&quot;color: rgb(76, 107, 135); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&lt;code style=&quot;font-size: 1.2em;&quot;&gt;Channel&lt;/code&gt;&lt;/a&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;s into a meaningful group (e.g. on a per-service or per-state basis.) A closed&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://netty.io/5.0/api/io/netty/channel/Channel.html&quot; title=&quot;interface in io.netty.channel&quot; style=&quot;color: rgb(76, 107, 135); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&lt;code style=&quot;font-size: 1.2em;&quot;&gt;Channel&lt;/code&gt;&lt;/a&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&amp;nbsp;is automatically removed from the collection, so that you don't need to worry about the life cycle of the added&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://netty.io/5.0/api/io/netty/channel/Channel.html&quot; title=&quot;interface in io.netty.channel&quot; style=&quot;color: rgb(76, 107, 135); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&lt;code style=&quot;font-size: 1.2em;&quot;&gt;Channel&lt;/code&gt;&lt;/a&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;. A&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://netty.io/5.0/api/io/netty/channel/Channel.html&quot; title=&quot;interface in io.netty.channel&quot; style=&quot;color: rgb(76, 107, 135); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&lt;code style=&quot;font-size: 1.2em;&quot;&gt;Channel&lt;/code&gt;&lt;/a&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&amp;nbsp;can belong to more than one&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://netty.io/5.0/api/io/netty/channel/group/ChannelGroup.html&quot; title=&quot;interface in io.netty.channel.group&quot; style=&quot;color: rgb(76, 107, 135); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&lt;code style=&quot;font-size: 1.2em;&quot;&gt;ChannelGroup&lt;/code&gt;&lt;/a&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(53, 56, 51); font-family: Arial, Helvetica, sans-serif; line-height: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#353833&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;line-height: normal;&quot;&gt;ChannelGroup은 쓰레드 세이프하며 Channel을 Set에 관리하며 다양한 오퍼레이션을 제공한다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#353833&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;line-height: normal;&quot;&gt;ChannelGroup을 사용하면 의미있는 그룹들로 Channel들을 분류할수 있으며 끊긴 Channel들은 자동으로 Collection에서 삭제된다. 하여 추가된 Channel들의 라이프사이클에 관하여 걱정하지 않아도 된다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#353833&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;span style=&quot;line-height: normal;&quot;&gt;하나의 채널은 여러개의 Channel 그룹에 속할수 있다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;</description>
      <category>Know/Java</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1558</guid>
      <comments>https://zzimme.tistory.com/1558#entry1558comment</comments>
      <pubDate>Wed, 22 Jan 2014 14:12:27 +0900</pubDate>
    </item>
    <item>
      <title>꽃보다 할배 1-11화</title>
      <link>https://zzimme.tistory.com/1556</link>
      <description>&lt;p&gt;요새 참 잼나게 보는 예능. 꽃할배 ㅋ&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;첨에는 그냥 몬가 하고 보았지만 보면 볼수록 급속도로 빠져들어 결국 11화까지 다운받아버렸다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;모아둔 토렌트 파일 버리기도 머하고 해서 여기에 그냥 모아두기로.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;즐감!&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;이미지는 꽃할배 사이트에서 펌&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 600px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/217BF645523C4F3503&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F217BF645523C4F3503&quot; width=&quot;600&quot; height=&quot;900&quot; filename=&quot;P8GS5LK2NPS5N7OS94XG.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2373BF45523C4F3607&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2373BF45523C4F3607&quot; width=&quot;640&quot; height=&quot;427&quot; filename=&quot;CJRBAI5SZ89X1NUDBPJD.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/227C0545523C4F3703&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F227C0545523C4F3703&quot; width=&quot;640&quot; height=&quot;427&quot; filename=&quot;EAV83YMTKB6AOOAD2K68.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;button type=&quot;button&quot; class=&quot;btn_more&quot; id=&quot;more1556_0&quot; data-id=&quot;1556_0&quot;&gt;더보기&lt;/button&gt;&lt;div class=&quot;moreless_content&quot; id=&quot;content1556_0&quot; style=&quot;display: none;&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less1556_0&quot; data-id=&quot;1556_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;
  &lt;p class=&quot;txt_view&quot;&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/233DD444523C4FB801&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;[tvN] 꽃보다 할배.E01.130705.HDTV.H264.720p-WITH.mp4.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/237E9A44523C4FB81E&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;[tvN]_꽃보다_할배.E03.130719.HDTV.H264.720p-WITH.mp4.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/232BB044523C4FB80A&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;(Ar)[tvN] 꽃보다 할배.E02.130712.HDTV.H264.720p-WITH.mp4.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/2553D244523C4FB833&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;[tvN] 꽃보다 할배.E06.130809.HDTV.H264.720p-WITH.torrent.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/242DA744523C4FB909&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;[tvN] 꽃보다 할배.E08.130823.HDTV.H264.720p-WITH.mp4.torrent].torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/2429D044523C4FB90A&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;[tvN]_꽃보다_할배.E05.130802.HDTV.H264.720p-WITH.mp4.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/243C0A44523C4FB902&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;[tvN]_꽃보다_할배.E07.END.130816.HDTV.H264.720p-WITH.mp4.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/260BF644523C4FB91A&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;_tvN__꽃보다_할배.E04.130726.HDTV.H264.720p-WITH.mp4.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/25079544523C4FBA1C&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;꽃보다 할배.E09.130830.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/22367A44523C4FBA05&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;꽃보다 할배.E10.130906.HDTV.H264.720p-WITH.mp4.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/262E7344523C4FBA09&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;꽃보다 할배.E11.130913.torrent&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/p&gt;
&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less1556_0&quot; data-id=&quot;1556_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Its Life</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1556</guid>
      <comments>https://zzimme.tistory.com/1556#entry1556comment</comments>
      <pubDate>Fri, 20 Sep 2013 22:41:16 +0900</pubDate>
    </item>
    <item>
      <title>Memcached 내부 동작 원리</title>
      <link>https://zzimme.tistory.com/1555</link>
      <description>&lt;p&gt;&lt;a href=&quot;https://code.google.com/p/memcached/wiki/NewUserInternals&quot;&gt;https://code.google.com/p/memcached/wiki/NewUserInternals&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;It is important that developers using memcached understand a little bit about how it works internally. While it can be a waste to overfocus on the bits and bytes, as your experience grows understanding the underlying bits become invaluable.&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Understanding memory allocation and evictions, and this particular type of LRU is most of what you need to know.&lt;/p&gt;&lt;h2 style=&quot;font-size:14pt; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;&quot;&gt;&lt;a name=&quot;How_Memory_Gets_Allocated_For_Items&quot;&gt;&lt;/a&gt;How Memory Gets Allocated For Items&lt;/h2&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Memory assigned via the&amp;nbsp;&lt;tt style=&quot;font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 66em;&quot;&gt;-m&lt;/tt&gt;&amp;nbsp;commandline argument to memcached is reserved for item data storage. The primary storage is broken up (by default) into 1 megabyte pages. Each&amp;nbsp;&lt;tt style=&quot;font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 66em;&quot;&gt;page&lt;/tt&gt;&amp;nbsp;is then assigned into&amp;nbsp;&lt;tt style=&quot;font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 66em;&quot;&gt;slab classes&lt;/tt&gt;&amp;nbsp;as necessary, then cut into chunks of a specific size for that&lt;tt style=&quot;font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 66em;&quot;&gt;slab class&lt;/tt&gt;.&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Once a page is assigned to a class, it is&amp;nbsp;&lt;strong&gt;never&lt;/strong&gt;&amp;nbsp;moved. If your access patterns end up putting 80% of your pages in class 3, there will be less memory available for class 4. The best way to think about this is that memcached is actually many smaller individaul caches. Each class has its own set of statistical counters, and its own LRU.&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Classes, sizes, and chunks are shown best by starting up memcached with&amp;nbsp;&lt;tt style=&quot;font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 66em;&quot;&gt;-vv&lt;/tt&gt;:&lt;/p&gt;&lt;pre class=&quot;prettyprint&quot; style=&quot;padding: 0.5em; overflow: auto; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; max-width: 70em; background-color: rgb(238, 238, 238); color: rgb(0, 0, 0); line-height: normal;&quot;&gt;&lt;span class=&quot;pln&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;./&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;memcached &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;vv&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;13107&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;104&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;10082&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;136&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;7710&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;176&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;5957&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;224&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;4681&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;280&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;3744&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;352&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;2978&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;440&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;2383&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;552&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;1899&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;slab &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; chunk size &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;696&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; perslab &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;1506&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;[...&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;etc&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;...]&lt;/span&gt;&lt;/pre&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;In slab class 1, each chunk is 80 bytes, and each page can then contain 13,107 chunks (or items). This continues all the way up to 1 megabyte.&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;When storing items, they are pushed into the slab class of the nearest fit. If your key + misc data + value is 50 bytes total, it will go into class 1, with an overhead loss of 30 bytes. If your data is 90 bytes total, it will go into class2, with an overhead of 14 bytes.&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;You can adjust the slab classes with&amp;nbsp;&lt;tt style=&quot;font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 66em;&quot;&gt;-f&lt;/tt&gt;&amp;nbsp;and inspect them in various ways, but those're more advanced topics for when you need them. It's best to be aware of the basics because they can bite you.&lt;/p&gt;&lt;h2 style=&quot;font-size:14pt; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;&quot;&gt;&lt;a name=&quot;What_Other_Memory_Is_Used&quot;&gt;&lt;/a&gt;What Other Memory Is Used&lt;/h2&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Memcached uses chunks of memory for other functions as well. There is overhead in the hash table it uses to look up your items through. Each connection uses a few small buffers as well. This shouldn't add up to more than a few % extra memory over your specified&amp;nbsp;&lt;tt style=&quot;font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 66em;&quot;&gt;-m&lt;/tt&gt;&amp;nbsp;limit, but keep in mind that it's there.&lt;/p&gt;&lt;h2 style=&quot;font-size:14pt; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;&quot;&gt;&lt;a name=&quot;When_Memory_Is_Reclaimed&quot;&gt;&lt;/a&gt;When Memory Is Reclaimed&lt;/h2&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Memory for an item is not actively reclaimed. If you store an item and it expires, it sits in the LRU cache at its position until it falls to the end and is reused.&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;However, if you fetch an expired item, memcached will find hte item, notice that it's expired, and free its memory. This gives you the common case of normal cache churn reusing its own memory.&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Items can also be evicted to make way for new items that need to be stored, or expired items are discvered and their memory reused.&lt;/p&gt;&lt;h2 style=&quot;font-size:14pt; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;&quot;&gt;&lt;a name=&quot;How_Much_Memory_Will_an_Item_Use&quot;&gt;&lt;/a&gt;How Much Memory Will an Item Use&lt;/h2&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;An item will use space for the full length of its key, the internal datastructure for an item, and the length of the data.&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;You can discover how large an Item is by compiling memcached on your system, then running the &quot;./sizes&quot; utility which is built. On a 32bit system this may look like 32 bytes for items without CAS (server started with -C), and 40 bytes for items with CAS. 64bit systems will be a bit higher due to needing larger pointers. However you gain a lot more flexibility with the ability to put tons of ram into a 64bit box :)&lt;/p&gt;&lt;pre class=&quot;prettyprint&quot; style=&quot;padding: 0.5em; overflow: auto; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; max-width: 70em; background-color: rgb(238, 238, 238); color: rgb(0, 0, 0); line-height: normal;&quot;&gt;&lt;span class=&quot;pln&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;./&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;sizes &lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Slab&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Stats&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;56&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; stats &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;176&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Global&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; stats &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;108&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Settings&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;88&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Item&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;color: rgb(0, 0, 136);&quot;&gt;no&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; cas&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Item&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;cas&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Libevent&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; thread &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;96&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;320&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: rgb(102, 102, 0);&quot;&gt;----------------------------------------&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;libevent thread cumulative &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;11472&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;color: rgb(102, 0, 102);&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; stats cumulative &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot; style=&quot;color: rgb(0, 102, 102);&quot;&gt;11376&lt;/span&gt;&lt;/pre&gt;&lt;h2 style=&quot;font-size:14pt; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;&quot;&gt;&lt;a name=&quot;When_Are_Items_Evicted&quot;&gt;&lt;/a&gt;When Are Items Evicted&lt;/h2&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Items are evicted if they have not expired (an expiration time of 0 or some time in the future), the slab class is completely out of free chunks, and there are no free pages to assign to a slab class.&lt;/p&gt;&lt;h2 style=&quot;font-size:14pt; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;&quot;&gt;&lt;a name=&quot;How_the_LRU_Decides_What_to_Evict&quot;&gt;&lt;/a&gt;How the LRU Decides What to Evict&lt;/h2&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Memory is also reclaimed when it's time to store a new item. If there are no free chunks, and no free pages in the appropriate slab class, memcached will look at the end of the LRU for an item to &quot;reclaim&quot;. It will search the last few items in the tail for one which has already been expired, and is thus free for reuse. If it cannot find an expired item however, it will &quot;evict&quot; one which has not yet expired. This is then noted in several statistical counters.&lt;/p&gt;&lt;h2 style=&quot;font-size:14pt; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; color: rgb(0, 0, 0); font-family: arial, sans-serif; line-height: normal;&quot;&gt;&lt;a name=&quot;libevent_+_Socket_Scalability&quot;&gt;&lt;/a&gt;libevent + Socket Scalability&lt;/h2&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Memcached uses&amp;nbsp;&lt;a href=&quot;http://www.monkey.org/~provos/libevent/&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 0, 204);&quot;&gt;libevent&lt;/a&gt;&amp;nbsp;for scalable sockets, allowing it to easily handle tens of thousands of connections. Each worker thread on memcached runs its own event loop and handles its own clients. They share the cache via some centralized locks, and spread out protocol processing.&lt;/p&gt;&lt;p style=&quot;line-height: 1.25em; max-width: 64em; color: rgb(0, 0, 0); font-family: arial, sans-serif; font-size: 13px;&quot;&gt;This scales very well. Some issues may be seen with extremely high loads (200,00+ operations per second), but if you hit any limits please let us know, as they're usually solvable :)&lt;/p&gt;</description>
      <category>Know/Memcached</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1555</guid>
      <comments>https://zzimme.tistory.com/1555#entry1555comment</comments>
      <pubDate>Fri, 13 Sep 2013 07:31:44 +0900</pubDate>
    </item>
    <item>
      <title>Memcached Protocol document</title>
      <link>https://zzimme.tistory.com/1554</link>
      <description>&lt;pre style=&quot;color: rgb(0, 0, 0); line-height: normal; word-wrap: break-word; white-space: pre-wrap;&quot;&gt;&lt;p&gt;&lt;a href=&quot;https://raw.github.com/memcached/memcached/master/doc/protocol.txt&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://raw.github.com/memcached/memcached/master/doc/protocol.txt&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;pre style=&quot;color: rgb(0, 0, 0); line-height: normal; word-wrap: break-word; white-space: pre-wrap;&quot;&gt;Protocol
--------

Clients of memcached communicate with server through TCP connections.
(A UDP interface is also available; details are below under &quot;UDP
protocol.&quot;) A given running memcached server listens on some
(configurable) port; clients connect to that port, send commands to
the server, read responses, and eventually close the connection.

There is no need to send any command to end the session. A client may
just close the connection at any moment it no longer needs it. Note,
however, that clients are encouraged to cache their connections rather
than reopen them every time they need to store or retrieve data.  This
is because memcached is especially designed to work very efficiently
with a very large number (many hundreds, more than a thousand if
necessary) of open connections. Caching connections will eliminate the
overhead associated with establishing a TCP connection (the overhead
of preparing for a new connection on the server side is insignificant
compared to this).

There are two kinds of data sent in the memcache protocol: text lines
and unstructured data.  Text lines are used for commands from clients
and responses from servers. Unstructured data is sent when a client
wants to store or retrieve data. The server will transmit back
unstructured data in exactly the same way it received it, as a byte
stream. The server doesn't care about byte order issues in
unstructured data and isn't aware of them. There are no limitations on
characters that may appear in unstructured data; however, the reader
of such data (either a client or a server) will always know, from a
preceding text line, the exact length of the data block being
transmitted.

Text lines are always terminated by \r\n. Unstructured data is _also_
terminated by \r\n, even though \r, \n or any other 8-bit characters
may also appear inside the data. Therefore, when a client retrieves
data from a server, it must use the length of the data block (which it
will be provided with) to determine where the data block ends, and not
the fact that \r\n follows the end of the data block, even though it
does.

Keys
----

Data stored by memcached is identified with the help of a key. A key
is a text string which should uniquely identify the data for clients
that are interested in storing and retrieving it.  Currently the
length limit of a key is set at 250 characters (of course, normally
clients wouldn't need to use such long keys); the key must not include
control characters or whitespace.

Commands
--------

There are three types of commands.

Storage commands (there are six: &quot;set&quot;, &quot;add&quot;, &quot;replace&quot;, &quot;append&quot;
&quot;prepend&quot; and &quot;cas&quot;) ask the server to store some data identified by a
key. The client sends a command line, and then a data block; after
that the client expects one line of response, which will indicate
success or failure.

Retrieval commands (there are two: &quot;get&quot; and &quot;gets&quot;) ask the server to
retrieve data corresponding to a set of keys (one or more keys in one
request). The client sends a command line, which includes all the
requested keys; after that for each item the server finds it sends to
the client one response line with information about the item, and one
data block with the item's data; this continues until the server
finished with the &quot;END&quot; response line.

All other commands don't involve unstructured data. In all of them,
the client sends one command line, and expects (depending on the
command) either one line of response, or several lines of response
ending with &quot;END&quot; on the last line.

A command line always starts with the name of the command, followed by
parameters (if any) delimited by whitespace. Command names are
lower-case and are case-sensitive.

Expiration times
----------------

Some commands involve a client sending some kind of expiration time
(relative to an item or to an operation requested by the client) to
the server. In all such cases, the actual value sent may either be
Unix time (number of seconds since January 1, 1970, as a 32-bit
value), or a number of seconds starting from current time. In the
latter case, this number of seconds may not exceed 60*60*24*30 (number
of seconds in 30 days); if the number sent by a client is larger than
that, the server will consider it to be real Unix time value rather
than an offset from current time.


Error strings
-------------

Each command sent by a client may be answered with an error string
from the server. These error strings come in three types:

- &quot;ERROR\r\n&quot;

  means the client sent a nonexistent command name.

- &quot;CLIENT_ERROR &amp;lt;error&amp;gt;\r\n&quot;

  means some sort of client error in the input line, i.e. the input
  doesn't conform to the protocol in some way. &amp;lt;error&amp;gt; is a
  human-readable error string.

- &quot;SERVER_ERROR &amp;lt;error&amp;gt;\r\n&quot;

  means some sort of server error prevents the server from carrying
  out the command. &amp;lt;error&amp;gt; is a human-readable error string. In cases
  of severe server errors, which make it impossible to continue
  serving the client (this shouldn't normally happen), the server will
  close the connection after sending the error line. This is the only
  case in which the server closes a connection to a client.


In the descriptions of individual commands below, these error lines
are not again specifically mentioned, but clients must allow for their
possibility.


Storage commands
----------------

First, the client sends a command line which looks like this:

&amp;lt;command name&amp;gt; &amp;lt;key&amp;gt; &amp;lt;flags&amp;gt; &amp;lt;exptime&amp;gt; &amp;lt;bytes&amp;gt; [noreply]\r\n
cas &amp;lt;key&amp;gt; &amp;lt;flags&amp;gt; &amp;lt;exptime&amp;gt; &amp;lt;bytes&amp;gt; &amp;lt;cas unique&amp;gt; [noreply]\r\n

- &amp;lt;command name&amp;gt; is &quot;set&quot;, &quot;add&quot;, &quot;replace&quot;, &quot;append&quot; or &quot;prepend&quot;

  &quot;set&quot; means &quot;store this data&quot;.

  &quot;add&quot; means &quot;store this data, but only if the server *doesn't* already
  hold data for this key&quot;.

  &quot;replace&quot; means &quot;store this data, but only if the server *does*
  already hold data for this key&quot;.

  &quot;append&quot; means &quot;add this data to an existing key after existing data&quot;.

  &quot;prepend&quot; means &quot;add this data to an existing key before existing data&quot;.

  The append and prepend commands do not accept flags or exptime.
  They update existing data portions, and ignore new flag and exptime
  settings.

  &quot;cas&quot; is a check and set operation which means &quot;store this data but
  only if no one else has updated since I last fetched it.&quot;

- &amp;lt;key&amp;gt; is the key under which the client asks to store the data

- &amp;lt;flags&amp;gt; is an arbitrary 16-bit unsigned integer (written out in
  decimal) that the server stores along with the data and sends back
  when the item is retrieved. Clients may use this as a bit field to
  store data-specific information; this field is opaque to the server.
  Note that in memcached 1.2.1 and higher, flags may be 32-bits, instead
  of 16, but you might want to restrict yourself to 16 bits for
  compatibility with older versions.

- &amp;lt;exptime&amp;gt; is expiration time. If it's 0, the item never expires
  (although it may be deleted from the cache to make place for other
  items). If it's non-zero (either Unix time or offset in seconds from
  current time), it is guaranteed that clients will not be able to
  retrieve this item after the expiration time arrives (measured by
  server time).

- &amp;lt;bytes&amp;gt; is the number of bytes in the data block to follow, *not*
  including the delimiting \r\n. &amp;lt;bytes&amp;gt; may be zero (in which case
  it's followed by an empty data block).

- &amp;lt;cas unique&amp;gt; is a unique 64-bit value of an existing entry.
  Clients should use the value returned from the &quot;gets&quot; command
  when issuing &quot;cas&quot; updates.

- &quot;noreply&quot; optional parameter instructs the server to not send the
  reply.  NOTE: if the request line is malformed, the server can't
  parse &quot;noreply&quot; option reliably.  In this case it may send the error
  to the client, and not reading it on the client side will break
  things.  Client should construct only valid requests.

After this line, the client sends the data block:

&amp;lt;data block&amp;gt;\r\n

- &amp;lt;data block&amp;gt; is a chunk of arbitrary 8-bit data of length &amp;lt;bytes&amp;gt;
  from the previous line.

After sending the command line and the data blockm the client awaits
the reply, which may be:

- &quot;STORED\r\n&quot;, to indicate success.

- &quot;NOT_STORED\r\n&quot; to indicate the data was not stored, but not
because of an error. This normally means that the
condition for an &quot;add&quot; or a &quot;replace&quot; command wasn't met.

- &quot;EXISTS\r\n&quot; to indicate that the item you are trying to store with
a &quot;cas&quot; command has been modified since you last fetched it.

- &quot;NOT_FOUND\r\n&quot; to indicate that the item you are trying to store
with a &quot;cas&quot; command did not exist.


Retrieval command:
------------------

The retrieval commands &quot;get&quot; and &quot;gets&quot; operates like this:

get &amp;lt;key&amp;gt;*\r\n
gets &amp;lt;key&amp;gt;*\r\n

- &amp;lt;key&amp;gt;* means one or more key strings separated by whitespace.

After this command, the client expects zero or more items, each of
which is received as a text line followed by a data block. After all
the items have been transmitted, the server sends the string

&quot;END\r\n&quot;

to indicate the end of response.

Each item sent by the server looks like this:

VALUE &amp;lt;key&amp;gt; &amp;lt;flags&amp;gt; &amp;lt;bytes&amp;gt; [&amp;lt;cas unique&amp;gt;]\r\n
&amp;lt;data block&amp;gt;\r\n

- &amp;lt;key&amp;gt; is the key for the item being sent

- &amp;lt;flags&amp;gt; is the flags value set by the storage command

- &amp;lt;bytes&amp;gt; is the length of the data block to follow, *not* including
  its delimiting \r\n

- &amp;lt;cas unique&amp;gt; is a unique 64-bit integer that uniquely identifies
  this specific item.

- &amp;lt;data block&amp;gt; is the data for this item.

If some of the keys appearing in a retrieval request are not sent back
by the server in the item list this means that the server does not
hold items with such keys (because they were never stored, or stored
but deleted to make space for more items, or expired, or explicitly
deleted by a client).


Deletion
--------

The command &quot;delete&quot; allows for explicit deletion of items:

delete &amp;lt;key&amp;gt; [noreply]\r\n

- &amp;lt;key&amp;gt; is the key of the item the client wishes the server to delete

- &quot;noreply&quot; optional parameter instructs the server to not send the
  reply.  See the note in Storage commands regarding malformed
  requests.

The response line to this command can be one of:

- &quot;DELETED\r\n&quot; to indicate success

- &quot;NOT_FOUND\r\n&quot; to indicate that the item with this key was not
  found.

See the &quot;flush_all&quot; command below for immediate invalidation
of all existing items.


Increment/Decrement
-------------------

Commands &quot;incr&quot; and &quot;decr&quot; are used to change data for some item
in-place, incrementing or decrementing it. The data for the item is
treated as decimal representation of a 64-bit unsigned integer.  If
the current data value does not conform to such a representation, the
incr/decr commands return an error (memcached &amp;lt;= 1.2.6 treated the
bogus value as if it were 0, leading to confusing). Also, the item
must already exist for incr/decr to work; these commands won't pretend
that a non-existent key exists with value 0; instead, they will fail.

The client sends the command line:

incr &amp;lt;key&amp;gt; &amp;lt;value&amp;gt; [noreply]\r\n

or

decr &amp;lt;key&amp;gt; &amp;lt;value&amp;gt; [noreply]\r\n

- &amp;lt;key&amp;gt; is the key of the item the client wishes to change

- &amp;lt;value&amp;gt; is the amount by which the client wants to increase/decrease
the item. It is a decimal representation of a 64-bit unsigned integer.

- &quot;noreply&quot; optional parameter instructs the server to not send the
  reply.  See the note in Storage commands regarding malformed
  requests.

The response will be one of:

- &quot;NOT_FOUND\r\n&quot; to indicate the item with this value was not found

- &amp;lt;value&amp;gt;\r\n , where &amp;lt;value&amp;gt; is the new value of the item's data,
  after the increment/decrement operation was carried out.

Note that underflow in the &quot;decr&quot; command is caught: if a client tries
to decrease the value below 0, the new value will be 0.  Overflow in
the &quot;incr&quot; command will wrap around the 64 bit mark.

Note also that decrementing a number such that it loses length isn't
guaranteed to decrement its returned length.  The number MAY be
space-padded at the end, but this is purely an implementation
optimization, so you also shouldn't rely on that.

Touch
-----

The &quot;touch&quot; command is used to update the expiration time of an existing item
without fetching it.

touch &amp;lt;key&amp;gt; &amp;lt;exptime&amp;gt; [noreply]\r\n

- &amp;lt;key&amp;gt; is the key of the item the client wishes the server to delete

- &amp;lt;exptime&amp;gt; is expiration time. Works the same as with the update commands
  (set/add/etc). This replaces the existing expiration time. If an existing
  item were to expire in 10 seconds, but then was touched with an
  expiration time of &quot;20&quot;, the item would then expire in 20 seconds.

- &quot;noreply&quot; optional parameter instructs the server to not send the
  reply.  See the note in Storage commands regarding malformed
  requests.

The response line to this command can be one of:

- &quot;TOUCHED\r\n&quot; to indicate success

- &quot;NOT_FOUND\r\n&quot; to indicate that the item with this key was not
  found.

Slabs Reassign
--------------

NOTE: This command is subject to change as of this writing.

The slabs reassign command is used to redistribute memory once a running
instance has hit its limit. It might be desireable to have memory laid out
differently than was automatically assigned after the server started.

slabs reassign &amp;lt;source class&amp;gt; &amp;lt;dest class&amp;gt;\r\n

- &amp;lt;source class&amp;gt; is an id number for the slab class to steal a page from

A source class id of -1 means &quot;pick from any valid class&quot;

- &amp;lt;dest class&amp;gt; is an id number for the slab class to move a page to

The response line could be one of:

- &quot;OK&quot; to indicate the page has been scheduled to move

- &quot;BUSY [message]&quot; to indicate a page is already being processed, try again
  later.

- &quot;BADCLASS [message]&quot; a bad class id was specified

- &quot;NOSPARE [message]&quot; source class has no spare pages

- &quot;NOTFULL [message]&quot; dest class must be full to move new pages to it

- &quot;UNSAFE [message]&quot; source class cannot move a page right now

- &quot;SAME [message]&quot; must specify different source/dest ids.

Slabs Automove
--------------

NOTE: This command is subject to change as of this writing.

The slabs automove command enables a background thread which decides on its
own when to move memory between slab classes. Its implementation and options
will likely be in flux for several versions. See the wiki/mailing list for
more details.

The automover can be enabled or disabled at runtime with this command.

slabs automove &amp;lt;0|1&amp;gt;

- 0|1|2 is the indicator on whether to enable the slabs automover or not.

The response should always be &quot;OK\r\n&quot;

- &amp;lt;0&amp;gt; means to set the thread on standby

- &amp;lt;1&amp;gt; means to run the builtin slow algorithm to choose pages to move

- &amp;lt;2&amp;gt; is a highly aggressive mode which causes pages to be moved every time
  there is an eviction. It is not recommended to run for very long in this
  mode unless your access patterns are very well understood.

Statistics
----------

The command &quot;stats&quot; is used to query the server about statistics it
maintains and other internal data. It has two forms. Without
arguments:

stats\r\n

it causes the server to output general-purpose statistics and
settings, documented below.  In the other form it has some arguments:

stats &amp;lt;args&amp;gt;\r\n

Depending on &amp;lt;args&amp;gt;, various internal data is sent by the server. The
kinds of arguments and the data sent are not documented in this version
of the protocol, and are subject to change for the convenience of
memcache developers.


General-purpose statistics
--------------------------

Upon receiving the &quot;stats&quot; command without arguments, the server sents
a number of lines which look like this:

STAT &amp;lt;name&amp;gt; &amp;lt;value&amp;gt;\r\n

The server terminates this list with the line

END\r\n

In each line of statistics, &amp;lt;name&amp;gt; is the name of this statistic, and
&amp;lt;value&amp;gt; is the data.  The following is the list of all names sent in
response to the &quot;stats&quot; command, together with the type of the value
sent for this name, and the meaning of the value.

In the type column below, &quot;32u&quot; means a 32-bit unsigned integer, &quot;64u&quot;
means a 64-bit unsigned integer. '32u.32u' means two 32-bit unsigned
integers separated by a colon (treat this as a floating point number).

|-----------------------+---------+-------------------------------------------|
| Name                  | Type    | Meaning                                   |
|-----------------------+---------+-------------------------------------------|
| pid                   | 32u     | Process id of this server process         |
| uptime                | 32u     | Number of secs since the server started   |
| time                  | 32u     | current UNIX time according to the server |
| version               | string  | Version string of this server             |
| pointer_size          | 32      | Default size of pointers on the host OS   |
|                       |         | (generally 32 or 64)                      |
| rusage_user           | 32u.32u | Accumulated user time for this process    |
|                       |         | (seconds:microseconds)                    |
| rusage_system         | 32u.32u | Accumulated system time for this process  |
|                       |         | (seconds:microseconds)                    |
| curr_items            | 32u     | Current number of items stored            |
| total_items           | 32u     | Total number of items stored since        |
|                       |         | the server started                        |
| bytes                 | 64u     | Current number of bytes used              |
|                       |         | to store items                            |
| curr_connections      | 32u     | Number of open connections                |
| total_connections     | 32u     | Total number of connections opened since  |
|                       |         | the server started running                |
| connection_structures | 32u     | Number of connection structures allocated |
|                       |         | by the server                             |
| reserved_fds          | 32u     | Number of misc fds used internally        |
| cmd_get               | 64u     | Cumulative number of retrieval reqs       |
| cmd_set               | 64u     | Cumulative number of storage reqs         |
| cmd_flush             | 64u     | Cumulative number of flush reqs           |
| cmd_touch             | 64u     | Cumulative number of touch reqs           |
| get_hits              | 64u     | Number of keys that have been requested   |
|                       |         | and found present                         |
| get_misses            | 64u     | Number of items that have been requested  |
|                       |         | and not found                             |
| delete_misses         | 64u     | Number of deletions reqs for missing keys |
| delete_hits           | 64u     | Number of deletion reqs resulting in      |
|                       |         | an item being removed.                    |
| incr_misses           | 64u     | Number of incr reqs against missing keys. |
| incr_hits             | 64u     | Number of successful incr reqs.           |
| decr_misses           | 64u     | Number of decr reqs against missing keys. |
| decr_hits             | 64u     | Number of successful decr reqs.           |
| cas_misses            | 64u     | Number of CAS reqs against missing keys.  |
| cas_hits              | 64u     | Number of successful CAS reqs.            |
| cas_badval            | 64u     | Number of CAS reqs for which a key was    |
|                       |         | found, but the CAS value did not match.   |
| touch_hits            | 64u     | Numer of keys that have been touched with |
|                       |         | a new expiration time                     |
| touch_misses          | 64u     | Numer of items that have been touched and |
|                       |         | not found                                 |
| auth_cmds             | 64u     | Number of authentication commands         |
|                       |         | handled, success or failure.              |
| auth_errors           | 64u     | Number of failed authentications.         |
| evictions             | 64u     | Number of valid items removed from cache  |
|                       |         | to free memory for new items              |
| reclaimed             | 64u     | Number of times an entry was stored using |
|                       |         | memory from an expired entry              |
| bytes_read            | 64u     | Total number of bytes read by this server |
|                       |         | from network                              |
| bytes_written         | 64u     | Total number of bytes sent by this server |
|                       |         | to network                                |
| limit_maxbytes        | 32u     | Number of bytes this server is allowed to |
|                       |         | use for storage.                          |
| threads               | 32u     | Number of worker threads requested.       |
|                       |         | (see doc/threads.txt)                     |
| conn_yields           | 64u     | Number of times any connection yielded to |
|                       |         | another due to hitting the -R limit.      |
| hash_power_level      | 32u     | Current size multiplier for hash table    |
| hash_bytes            | 64u     | Bytes currently used by hash tables       |
| hash_is_expanding     | bool    | Indicates if the hash table is being      |
|                       |         | grown to a new size                       |
| expired_unfetched     | 64u     | Items pulled from LRU that were never     |
|                       |         | touched by get/incr/append/etc before     |
|                       |         | expiring                                  |
| evicted_unfetched     | 64u     | Items evicted from LRU that were never    |
|                       |         | touched by get/incr/append/etc.           |
| slab_reassign_running | bool    | If a slab page is being moved             |
| slabs_moved           | 64u     | Total slab pages moved                    |
|-----------------------+---------+-------------------------------------------|

Settings statistics
-------------------
CAVEAT: This section describes statistics which are subject to change in the
future.

The &quot;stats&quot; command with the argument of &quot;settings&quot; returns details of
the settings of the running memcached.  This is primarily made up of
the results of processing commandline options.

Note that these are not guaranteed to return in any specific order and
this list may not be exhaustive.  Otherwise, this returns like any
other stats command.

|-------------------+----------+----------------------------------------------|
| Name              | Type     | Meaning                                      |
|-------------------+----------+----------------------------------------------|
| maxbytes          | size_t   | Maximum number of bytes allows in this cache |
| maxconns          | 32       | Maximum number of clients allowed.           |
| tcpport           | 32       | TCP listen port.                             |
| udpport           | 32       | UDP listen port.                             |
| inter             | string   | Listen interface.                            |
| verbosity         | 32       | 0 = none, 1 = some, 2 = lots                 |
| oldest            | 32u      | Age of the oldest honored object.            |
| evictions         | on/off   | When off, LRU evictions are disabled.        |
| domain_socket     | string   | Path to the domain socket (if any).          |
| umask             | 32 (oct) | umask for the creation of the domain socket. |
| growth_factor     | float    | Chunk size growth factor.                    |
| chunk_size        | 32       | Minimum space allocated for key+value+flags. |
| num_threads       | 32       | Number of threads (including dispatch).      |
| stat_key_prefix   | char     | Stats prefix separator character.            |
| detail_enabled    | bool     | If yes, stats detail is enabled.             |
| reqs_per_event    | 32       | Max num IO ops processed within an event.    |
| cas_enabled       | bool     | When no, CAS is not enabled for this server. |
| tcp_backlog       | 32       | TCP listen backlog.                          |
| auth_enabled_sasl | yes/no   | SASL auth requested and enabled.             |
| item_size_max     | size_t   | maximum item size                            |
| maxconns_fast     | bool     | If fast disconnects are enabled              |
| hashpower_init    | 32       | Starting size multiplier for hash table      |
| slab_reassign     | bool     | Whether slab page reassignment is allowed    |
| slab_automove     | bool     | Whether slab page automover is enabled       |
|-------------------+----------+----------------------------------------------|


Item statistics
---------------
CAVEAT: This section describes statistics which are subject to change in the
future.

The &quot;stats&quot; command with the argument of &quot;items&quot; returns information about
item storage per slab class. The data is returned in the format:

STAT items:&amp;lt;slabclass&amp;gt;:&amp;lt;stat&amp;gt; &amp;lt;value&amp;gt;\r\n

The server terminates this list with the line

END\r\n

The slabclass aligns with class ids used by the &quot;stats slabs&quot; command. Where
&quot;stats slabs&quot; describes size and memory usage, &quot;stats items&quot; shows higher
level information.

The following item values are defined as of writing.

Name                   Meaning
------------------------------
number                 Number of items presently stored in this class. Expired
                       items are not automatically excluded.
age                    Age of the oldest item in the LRU.
evicted                Number of times an item had to be evicted from the LRU
                       before it expired.
evicted_nonzero        Number of times an item which had an explicit expire
                       time set had to be evicted from the LRU before it
                       expired.
evicted_time           Seconds since the last access for the most recent item
                       evicted from this class. Use this to judge how
                       recently active your evicted data is.
outofmemory            Number of times the underlying slab class was unable to
                       store a new item. This means you are running with -M or
                       an eviction failed.
tailrepairs            Number of times we self-healed a slab with a refcount
                       leak. If this counter is increasing a lot, please
                       report your situation to the developers.
reclaimed              Number of times an entry was stored using memory from
                       an expired entry.
expired_unfetched      Number of expired items reclaimed from the LRU which
                       were never touched after being set.
evicted_unfetched      Number of valid items evicted from the LRU which were
                       never touched after being set.

Note this will only display information about slabs which exist, so an empty
cache will return an empty set.


Item size statistics
--------------------
CAVEAT: This section describes statistics which are subject to change in the
future.

The &quot;stats&quot; command with the argument of &quot;sizes&quot; returns information about the
general size and count of all items stored in the cache.
WARNING: This command WILL lock up your cache! It iterates over *every item*
and examines the size. While the operation is fast, if you have many items
you could prevent memcached from serving requests for several seconds.

The data is returned in the following format:

&amp;lt;size&amp;gt; &amp;lt;count&amp;gt;\r\n

The server terminates this list with the line

END\r\n

'size' is an approximate size of the item, within 32 bytes.
'count' is the amount of items that exist within that 32-byte range.

This is essentially a display of all of your items if there was a slab class
for every 32 bytes. You can use this to determine if adjusting the slab growth
factor would save memory overhead. For example: generating more classes in the
lower range could allow items to fit more snugly into their slab classes, if
most of your items are less than 200 bytes in size.


Slab statistics
---------------
CAVEAT: This section describes statistics which are subject to change in the
future.

The &quot;stats&quot; command with the argument of &quot;slabs&quot; returns information about
each of the slabs created by memcached during runtime. This includes per-slab
information along with some totals. The data is returned in the format:

STAT &amp;lt;slabclass&amp;gt;:&amp;lt;stat&amp;gt; &amp;lt;value&amp;gt;\r\n
STAT &amp;lt;stat&amp;gt; &amp;lt;value&amp;gt;\r\n

The server terminates this list with the line

END\r\n

|-----------------+----------------------------------------------------------|
| Name            | Meaning                                                  |
|-----------------+----------------------------------------------------------|
| chunk_size      | The amount of space each chunk uses. One item will use   |
|                 | one chunk of the appropriate size.                       |
| chunks_per_page | How many chunks exist within one page. A page by         |
|                 | default is less than or equal to one megabyte in size.   |
|                 | Slabs are allocated by page, then broken into chunks.    |
| total_pages     | Total number of pages allocated to the slab class.       |
| total_chunks    | Total number of chunks allocated to the slab class.      |
| get_hits        | Total number of get requests serviced by this class.     |
| cmd_set         | Total number of set requests storing data in this class. |
| delete_hits     | Total number of successful deletes from this class.      |
| incr_hits       | Total number of incrs modifying this class.              |
| decr_hits       | Total number of decrs modifying this class.              |
| cas_hits        | Total number of CAS commands modifying this class.       |
| cas_badval      | Total number of CAS commands that failed to modify a     |
|                 | value due to a bad CAS id.                               |
| touch_hits      | Total number of touches serviced by this class.          |
| used_chunks     | How many chunks have been allocated to items.            |
| free_chunks     | Chunks not yet allocated to items, or freed via delete.  |
| free_chunks_end | Number of free chunks at the end of the last allocated   |
|                 | page.                                                    |
| mem_requested   | Number of bytes requested to be stored in this slab[*].  |
| active_slabs    | Total number of slab classes allocated.                  |
| total_malloced  | Total amount of memory allocated to slab pages.          |
|-----------------+----------------------------------------------------------|

* Items are stored in a slab that is the same size or larger than the
  item.  mem_requested shows the size of all items within a
  slab. (total_chunks * chunk_size) - mem_requested shows memory
  wasted in a slab class.  If you see a lot of waste, consider tuning
  the slab factor.

Other commands
--------------

&quot;flush_all&quot; is a command with an optional numeric argument. It always
succeeds, and the server sends &quot;OK\r\n&quot; in response (unless &quot;noreply&quot;
is given as the last parameter). Its effect is to invalidate all
existing items immediately (by default) or after the expiration
specified.  After invalidation none of the items will be returned in
response to a retrieval command (unless it's stored again under the
same key *after* flush_all has invalidated the items). flush_all
doesn't actually free all the memory taken up by existing items; that
will happen gradually as new items are stored. The most precise
definition of what flush_all does is the following: it causes all
items whose update time is earlier than the time at which flush_all
was set to be executed to be ignored for retrieval purposes.

The intent of flush_all with a delay, was that in a setting where you
have a pool of memcached servers, and you need to flush all content,
you have the option of not resetting all memcached servers at the
same time (which could e.g. cause a spike in database load with all
clients suddenly needing to recreate content that would otherwise
have been found in the memcached daemon).

The delay option allows you to have them reset in e.g. 10 second
intervals (by passing 0 to the first, 10 to the second, 20 to the
third, etc. etc.).


&quot;version&quot; is a command with no arguments:

version\r\n

In response, the server sends

&quot;VERSION &amp;lt;version&amp;gt;\r\n&quot;, where &amp;lt;version&amp;gt; is the version string for the
server.

&quot;verbosity&quot; is a command with a numeric argument. It always succeeds,
and the server sends &quot;OK\r\n&quot; in response (unless &quot;noreply&quot; is given
as the last parameter). Its effect is to set the verbosity level of
the logging output.

&quot;quit&quot; is a command with no arguments:

quit\r\n

Upon receiving this command, the server closes the
connection. However, the client may also simply close the connection
when it no longer needs it, without issuing this command.


UDP protocol
------------

For very large installations where the number of clients is high enough
that the number of TCP connections causes scaling difficulties, there is
also a UDP-based interface. The UDP interface does not provide guaranteed
delivery, so should only be used for operations that aren't required to
succeed; typically it is used for &quot;get&quot; requests where a missing or
incomplete response can simply be treated as a cache miss.

Each UDP datagram contains a simple frame header, followed by data in the
same format as the TCP protocol described above. In the current
implementation, requests must be contained in a single UDP datagram, but
responses may span several datagrams. (The only common requests that would
span multiple datagrams are huge multi-key &quot;get&quot; requests and &quot;set&quot;
requests, both of which are more suitable to TCP transport for reliability
reasons anyway.)

The frame header is 8 bytes long, as follows (all values are 16-bit integers
in network byte order, high byte first):

0-1 Request ID
2-3 Sequence number
4-5 Total number of datagrams in this message
6-7 Reserved for future use; must be 0

The request ID is supplied by the client. Typically it will be a
monotonically increasing value starting from a random seed, but the client
is free to use whatever request IDs it likes. The server's response will
contain the same ID as the incoming request. The client uses the request ID
to differentiate between responses to outstanding requests if there are
several pending from the same server; any datagrams with an unknown request
ID are probably delayed responses to an earlier request and should be
discarded.

The sequence number ranges from 0 to n-1, where n is the total number of
datagrams in the message. The client should concatenate the payloads of the
datagrams for a given response in sequence number order; the resulting byte
stream will contain a complete response in the same format as the TCP
protocol (including terminating \r\n sequences).&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Know/Memcached</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1554</guid>
      <comments>https://zzimme.tistory.com/1554#entry1554comment</comments>
      <pubDate>Fri, 13 Sep 2013 07:13:44 +0900</pubDate>
    </item>
    <item>
      <title>Selenium을 이용한 UI 테스트</title>
      <link>https://zzimme.tistory.com/1552</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 id=&quot;title-heading&quot; class=&quot;pagetitle&quot; style=&quot;line-height: 2; padding: 0px; font-size: 18pt; margin: 0px 0px 10px; color: rgb(0, 51, 102); width: 1883px; font-family: Helvetica, Arial, sans-serif;&quot;&gt;&lt;span id=&quot;title-text&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;Selenium을 이용한 UI 테스트&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div id=&quot;content&quot; class=&quot;page view&quot; style=&quot;clear: left; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-size: 13px; line-height: 17px;&quot;&gt;&lt;div class=&quot;page-metadata&quot; style=&quot;color: rgb(102, 102, 102); font-size: 0.9em; margin: 10px 0px;&quot;&gt;Added by&amp;nbsp;&lt;a href=&quot;http://www.gurubee.net/display/~oracleclub&quot; style=&quot;color: rgb(102, 102, 102);&quot;&gt;김정식&lt;/a&gt;, last edited by&amp;nbsp;&lt;a href=&quot;http://www.gurubee.net/display/~oracleclub&quot; style=&quot;color: rgb(102, 102, 102);&quot;&gt;김정식&lt;/a&gt;&amp;nbsp;on 11월 03, 2010&lt;/div&gt;&lt;div class=&quot;wiki-content&quot; style=&quot;font-size: 10pt; line-height: 13pt;&quot;&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;이 문서는&amp;nbsp;&lt;a href=&quot;http://www.oracleclub.com/&quot; target=&quot;_blank&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;오라클클럽&lt;/a&gt;에서 작성하였습니다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;출처 :&amp;nbsp;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762&amp;amp;&quot; target=&quot;_blank&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://www.gurubee.net/pages/viewpage.action?pageId=6259762&amp;amp;&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/&quot; target=&quot;_blank&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;오라클클럽 지식창고&lt;/a&gt;의 모든 문서는&amp;nbsp;&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;크리에이티브 커먼즈&lt;/a&gt;의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;wiki-content&quot; style=&quot;font-size: 13px; line-height: 13pt; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif;&quot;&gt;&lt;div class=&quot;rbtoc1287110131278&quot; style=&quot;margin-left: 1.5em; padding: 0px;&quot;&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; list-style-position: initial; list-style-image: initial; margin: 10px 0px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.Selenium%EA%B0%9C%EC%9A%94&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;1. Selenium 개요&lt;/a&gt;&lt;/li&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; list-style-position: initial; list-style-image: initial; margin: 0px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.1Selenium%EC%9D%B4%EB%9E%80&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;1.1 Selenium이란&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.2SeleniumComponents&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;1.2 Selenium Components&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.SeleniumIDE%EC%9D%98%EC%82%AC%EC%9A%A9&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;2. Selenium IDE의 사용&lt;/a&gt;&lt;/li&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; list-style-position: initial; list-style-image: initial; margin: 0px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.1SeleniumIDE%EC%84%A4%EC%B9%98&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;2.1 Selenium IDE 설치&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.2SeleniumIDE%ED%85%8C%EC%8A%A4%ED%8C%85%EC%98%88%EC%A0%9C&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;2.2 Selenium IDE 테스팅 예제&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-3.SeleniumRC%EC%9D%98%EC%82%AC%EC%9A%A9&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;3. Selenium RC의 사용&lt;/a&gt;&lt;/li&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; list-style-position: initial; list-style-image: initial; margin: 0px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-3.1%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C%EB%B0%8F%EC%84%A4%EC%B9%98&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;3.1 다운로드 및 설치&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-3.1SeleniumRC%EC%98%88%EC%A0%9C&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;3.1 Selenium RC 예제&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.WebDriver%EB%A5%BC%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;4. WebDriver를 이용한 UI 테스트&lt;/a&gt;&lt;/li&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; list-style-position: initial; list-style-image: initial; margin: 0px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.1WebDriver%EA%B0%9C%EC%9A%94&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;4.1 WebDriver 개요&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762#Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.2WebDriver%EC%98%88%EC%A0%9C&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;4.2 WebDriver 예제&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h2 style=&quot;line-height: normal; padding: 0px; font-size: 16pt; margin: 24px 0px 0px; color: rgb(0, 51, 102); border-bottom-color: rgb(60, 120, 181);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.Selenium%EA%B0%9C%EC%9A%94&quot;&gt;&lt;/a&gt;1. Selenium 개요&lt;/h2&gt;&lt;h3 style=&quot;line-height: normal; padding: 0px; font-size: 14pt; margin: 20px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.1Selenium%EC%9D%B4%EB%9E%80&quot;&gt;&lt;/a&gt;1.1 Selenium이란&lt;/h3&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium은 웹 어플리케이션을 위한 테스팅 프레임워크로 자동화 테스트를 위한 여러가지 강력한 기능을 지원해준다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;다양한 브라우저들을 지원하며, 다양한 테스트 작성 언어(Java, Ruby, Groovy, Python, PHP, and Perl.)를 지원한다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;현재 WebDriver라는 웹 자동화 툴과 통합하는 작업이 진행되고 있다. (2.0ax 버전)&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://seleniumhq.org/&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://seleniumhq.org/&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/selenium/&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://code.google.com/p/selenium/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;line-height: normal; padding: 0px; font-size: 14pt; margin: 20px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.2SeleniumComponents&quot;&gt;&lt;/a&gt;1.2 Selenium Components&lt;/h3&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.2.1SeleniumIDE&quot;&gt;&lt;/a&gt;1.2.1 Selenium IDE&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium Test Case를 만들고 실행하기 위한 통합 개발 환경&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;파이어폭스 확장 플러그인으로 제공되며, Selenium Test Case를 쉽게 작성할 수 있도록 도와준다&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;레코딩이 쉽고, 재생을 지원한다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;브라우저 내의 사용자의 행동을 저장하여 다양한 언어(C#, Java, Perl, PHP, Python, Ruby 등)로 변환 가능 하다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;참고 :&amp;nbsp;&lt;a href=&quot;http://seleniumhq.org/projects/ide/&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://seleniumhq.org/projects/ide/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.2.2SeleniumCore&quot;&gt;&lt;/a&gt;1.2.2 Selenium Core&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium의 Core 라이브러리&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.2.3SeleniumRC%28RemoteControl%29&quot;&gt;&lt;/a&gt;1.2.3 Selenium RC(Remote Control)&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;http 를 통해 command 를 받는 Java 로 작성된 서버&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium API로 작성한 테스트 코드를 실행시켜 주는 역할을 한다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;테스트용 PC 에 설치를 한 후 원격지에서 unit 테스트 framework로 웹어플리케이션의 자동화 테스트를 가능하게 한다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;참고 :&amp;nbsp;&lt;a href=&quot;http://seleniumhq.org/projects/remote-control/&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://seleniumhq.org/projects/remote-control/&lt;/a&gt;&lt;table class=&quot;confluenceTable&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); clear: left; margin: 10px 0px; border-collapse: collapse; padding: 0px;&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;font-size: 10pt; line-height: 13pt;&quot;&gt;&lt;td class=&quot;confluenceTd&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); border: 1px solid rgb(204, 204, 204); padding: 5px; vertical-align: top; margin: 0px;&quot;&gt;&lt;img src=&quot;http://www.gurubee.net/download/attachments/6259762/selenium-rc.png&quot; align=&quot;absmiddle&quot; border=&quot;0&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-1.2.4SeleniumGRID&quot;&gt;&lt;/a&gt;1.2.4 Selenium GRID&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium GRID를 이용해 테스트 코드를 여러대의 Selenium RC에서 동시에 실행 할 수 있다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;테스트 수행속도를 향상시키기 위해 분산해서 처리하거나 여러가지 환경에서 테스트가 필요할 때 사용한다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;서로다른 브라우저 환경에서 일관성있는 테스트가 가능하다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;참고 :&amp;nbsp;&lt;a href=&quot;http://selenium-grid.seleniumhq.org/how_it_works.html&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://selenium-grid.seleniumhq.org/how_it_works.html&lt;/a&gt;&lt;table class=&quot;confluenceTable&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); clear: left; margin: 10px 0px; border-collapse: collapse; padding: 0px;&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;font-size: 10pt; line-height: 13pt;&quot;&gt;&lt;td class=&quot;confluenceTd&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); border: 1px solid rgb(204, 204, 204); padding: 5px; vertical-align: top; margin: 0px;&quot;&gt;&lt;img src=&quot;http://www.gurubee.net/download/attachments/6259762/Selenium_GRID.png&quot; align=&quot;absmiddle&quot; border=&quot;0&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;line-height: normal; padding: 0px; font-size: 16pt; margin: 24px 0px 0px; color: rgb(0, 51, 102); border-bottom-color: rgb(60, 120, 181);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.SeleniumIDE%EC%9D%98%EC%82%AC%EC%9A%A9&quot;&gt;&lt;/a&gt;2. Selenium IDE의 사용&lt;/h2&gt;&lt;h3 style=&quot;line-height: normal; padding: 0px; font-size: 14pt; margin: 20px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.1SeleniumIDE%EC%84%A4%EC%B9%98&quot;&gt;&lt;/a&gt;2.1 Selenium IDE 설치&lt;/h3&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.1.1%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C%EB%B0%8F%EC%84%A4%EC%B9%98&quot;&gt;&lt;/a&gt;2.1.1 다운로드 및 설치&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;다운로드 :&amp;nbsp;&lt;a href=&quot;http://release.seleniumhq.org/selenium-ide/&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://release.seleniumhq.org/selenium-ide/&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;최신버전(현재 1.0.7) 다운로드 후 더블클릭해서 설치&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.1.2%EC%84%A4%EC%B9%98%ED%99%95%EC%9D%B8&quot;&gt;&lt;/a&gt;2.1.2 설치 확인&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&quot;Fire Fox &amp;gt; 도구&quot; 메뉴 에서 설치 확인&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.1.3SeleniumIDEToolbar&quot;&gt;&lt;/a&gt;2.1.3 Selenium IDE Toolbar&lt;/h6&gt;&lt;table class=&quot;confluenceTable&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); clear: left; margin: 10px 0px; border-collapse: collapse; padding: 0px;&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;font-size: 10pt; line-height: 13pt;&quot;&gt;&lt;td class=&quot;confluenceTd&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); border: 1px solid rgb(204, 204, 204); padding: 5px; vertical-align: top; margin: 0px;&quot;&gt;&lt;img src=&quot;http://www.gurubee.net/download/attachments/6259762/Selenium_IDE_Toolbar.png&quot; align=&quot;absmiddle&quot; border=&quot;0&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;1. Speed Control : 테스트 케이스의 속도 재생 속도 조절&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;2, Run All : Test Suite를 재생&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;3. Run : Test Case를 재생&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;4. Pause/Resume : 테스트 케이스의 정지와 리스타트&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;5. Step : 클릭 시 한번에 한 라인씩 수행&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;6. TestRunner Mode : 브라우저 내에서 테스트 실행 및 결과를 HTML Table 형식으로 볼 수 있음 (Firefox 3.6에서 잘 안 됨)&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;8. Record : 유저 브라우저의 액션을 레코딩 시작/정지 버튼&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;line-height: normal; padding: 0px; font-size: 14pt; margin: 20px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.2SeleniumIDE%ED%85%8C%EC%8A%A4%ED%8C%85%EC%98%88%EC%A0%9C&quot;&gt;&lt;/a&gt;2.2 Selenium IDE 테스팅 예제&lt;/h3&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium IDE에서 Recording 후 저장된 테스트코드를 수행하면 된다.&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.2.1Recording&quot;&gt;&lt;/a&gt;2.2.1 Recording&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;① Firefox를 열어서 도구 =&amp;gt; Selenium IDE를 선택해서 IDE를 활성화 시킨다&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;② Test하기 원하는 사이트로 이동 한다. 또는 Base URL 입럭&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;③ 빨강색 Record버튼을 누른다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;④ Firefox창에서 원하는 액션을 수행하면 해당내용이 자동으로 저장된다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;⑤ 원하는 테스트가 끝났으면 다시 빨강색 Record버튼을 눌러서 종료시킨다.&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.2.2%EC%A0%80%EC%9E%A5%EB%90%9C%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%BD%94%EB%93%9C%EC%88%98%ED%96%89&quot;&gt;&lt;/a&gt;2.2.2 저장된 테스트코드 수행&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;① 테스트 수행속도를 설정한다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;② Play 버튼을 눌러서 테스트를 수행한다.&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.2.3%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%A5%BC%EC%9E%90%EB%B0%94%EC%BD%94%EB%93%9C%EB%A1%9C%EC%A0%84%ED%99%98&quot;&gt;&lt;/a&gt;2.2.3 테스트를 자바코드로 전환&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium IDE에서 테스트 작성 후 IDE 메뉴에서 Options =&amp;gt; Format 으로 원하는 언어를 선택하면 된다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;아래는 JUnit4 기반의 테스트 코드 예제이다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;테스트 코드의 &quot;Untitled&quot; 와 &quot;change-this-to-the-site-you-are-testing&quot;를 수정하면 된다.&lt;div class=&quot;code panel&quot; style=&quot;padding: 0px; margin: 10px 20px; border: 1px dashed rgb(60, 120, 181); overflow: auto;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot; style=&quot;margin: 0px; padding: 0px 12px; font-size: 0.95em;&quot;&gt;&lt;pre class=&quot;code-java&quot; style=&quot;padding: 0px; margin-top: 10px; margin-bottom: 10px; overflow: auto; font-family: 'Courier New', Courier, monospace; line-height: 1.3;&quot;&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;package&lt;/span&gt; com.example.tests;

&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;import&lt;/span&gt; com.thoughtworks.selenium.*;
&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;import&lt;/span&gt; java.util.regex.Pattern;

&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;public&lt;/span&gt; class Untitled &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;extends&lt;/span&gt; SeleneseTestCase {
	&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;public&lt;/span&gt; void setUp() &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;throws&lt;/span&gt; Exception {
		setUp(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;http:&lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;//change-&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;this&lt;/span&gt;-to-the-site-you-are-testing/&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot; style=&quot;background-color: inherit;&quot;&gt;&quot;*chrome&quot;&lt;/span&gt;);
&lt;/span&gt;	}
	&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;public&lt;/span&gt; void testUntitled() &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;throws&lt;/span&gt; Exception {
		selenium.open(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;/home/index.nhn&quot;&lt;/span&gt;);
		selenium.type(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;query&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;리쌍&quot;&lt;/span&gt;);
		selenium.click(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;&lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;//input[@type='image']&quot;&lt;/span&gt;);
&lt;/span&gt;		selenium.waitForPageToLoad(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;30000&quot;&lt;/span&gt;);
		verifyTrue(selenium.isTextPresent(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;개리&quot;&lt;/span&gt;));
	}
}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-2.2.4%EA%B0%84%EB%8B%A8%EB%8D%B0%EB%AA%A8&quot;&gt;&lt;/a&gt;2.2.4 간단 데모&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/download/attachments/6259762/Selenium_IDE.wmv?version=1&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;Selenium IDE 데모 동영상 보기&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;https://addons.mozilla.org/ko/firefox/addon/1192&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;XPather Firefox AddOn&lt;/a&gt;을 이용하면 XPath를 쉽게 알 수 있다.&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;line-height: normal; padding: 0px; font-size: 16pt; margin: 24px 0px 0px; color: rgb(0, 51, 102); border-bottom-color: rgb(60, 120, 181);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-3.SeleniumRC%EC%9D%98%EC%82%AC%EC%9A%A9&quot;&gt;&lt;/a&gt;3. Selenium RC의 사용&lt;/h2&gt;&lt;h3 style=&quot;line-height: normal; padding: 0px; font-size: 14pt; margin: 20px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-3.1%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C%EB%B0%8F%EC%84%A4%EC%B9%98&quot;&gt;&lt;/a&gt;3.1 다운로드 및 설치&lt;/h3&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;다운로드 :&amp;nbsp;&lt;a href=&quot;http://selenium.googlecode.com/files/selenium-remote-control-1.0.3.zip&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://selenium.googlecode.com/files/selenium-remote-control-1.0.3.zip&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;압축 해제 및 java -jar selenium-server.jar 로 실행한다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;line-height: normal; padding: 0px; font-size: 14pt; margin: 20px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-3.1SeleniumRC%EC%98%88%EC%A0%9C&quot;&gt;&lt;/a&gt;3.1 Selenium RC 예제&lt;/h3&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-3.1.1SeleniumRC%EC%84%9C%EB%B2%84Start&quot;&gt;&lt;/a&gt;3.1.1 Selenium RC 서버 Start&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;java -jar selenium-remote-control-1.0.3\selenium-server-1.0.3\selenium-server.jar&lt;/li&gt;&lt;/ul&gt;&lt;table class=&quot;confluenceTable&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); clear: left; margin: 10px 0px; border-collapse: collapse; padding: 0px;&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;font-size: 10pt; line-height: 13pt;&quot;&gt;&lt;td class=&quot;confluenceTd&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); border: 1px solid rgb(204, 204, 204); padding: 5px; vertical-align: top; margin: 0px;&quot;&gt;&lt;img src=&quot;http://www.gurubee.net/download/attachments/6259762/Selenium_RC_start.png&quot; align=&quot;absmiddle&quot; border=&quot;0&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-3.1.2JUnit%ED%85%8C%EC%8A%A4%ED%8A%B8&quot;&gt;&lt;/a&gt;3.1.2 JUnit 테스트&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;아래는 Selenium IDE로 저장한 자바코드를 Selenium RC를 이용해 테스트하는 예제이다.&lt;div class=&quot;code panel&quot; style=&quot;padding: 0px; margin: 10px 20px; border: 1px dashed rgb(60, 120, 181); overflow: auto;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot; style=&quot;margin: 0px; padding: 0px 12px; font-size: 0.95em;&quot;&gt;&lt;pre class=&quot;code-java&quot; style=&quot;padding: 0px; margin-top: 10px; margin-bottom: 10px; overflow: auto; font-family: 'Courier New', Courier, monospace; line-height: 1.3;&quot;&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;import&lt;/span&gt; com.thoughtworks.selenium.SeleneseTestCase;

&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;public&lt;/span&gt; class SimpleRCTest &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;extends&lt;/span&gt; SeleneseTestCase {
    &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;public&lt;/span&gt; void setUp() &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;throws&lt;/span&gt; Exception {
        setUp(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;http:&lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;//dev.music.naver.com/&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot; style=&quot;background-color: inherit;&quot;&gt;&quot;*firefox&quot;&lt;/span&gt;);
&lt;/span&gt;    }

    &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;public&lt;/span&gt; void testSearch() &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;throws&lt;/span&gt; Exception {
        selenium.open(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;/home/index.nhn&quot;&lt;/span&gt;);
        selenium.type(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;query&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;리쌍&quot;&lt;/span&gt;);
        selenium.click(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;&lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;//input[@type='image']&quot;&lt;/span&gt;);
&lt;/span&gt;        selenium.waitForPageToLoad(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;30000&quot;&lt;/span&gt;);
        verifyTrue(selenium.isTextPresent(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;개리&quot;&lt;/span&gt;));
    }
}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium관련 maven 빌드 설정&lt;div class=&quot;code panel&quot; style=&quot;padding: 0px; margin: 10px 20px; border: 1px dashed rgb(60, 120, 181); overflow: auto;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot; style=&quot;margin: 0px; padding: 0px 12px; font-size: 0.95em;&quot;&gt;&lt;pre class=&quot;code-java&quot; style=&quot;padding: 0px; margin-top: 10px; margin-bottom: 10px; overflow: auto; font-family: 'Courier New', Courier, monospace; line-height: 1.3;&quot;&gt;-- repository 설정
&amp;lt;repositories&amp;gt;
    &amp;lt;repository&amp;gt;
        &amp;lt;id&amp;gt;selenium-repository&amp;lt;/id&amp;gt;
        &amp;lt;url&amp;gt;http:&lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;//selenium.googlecode.com/svn/repository/&amp;lt;/url&amp;gt; 
&lt;/span&gt;    &amp;lt;/repository&amp;gt;
&amp;lt;/repositories&amp;gt;

-- dependency 설정
-- 아래서  WebDriver 간단설명 예정으로 WebDriver 포함 버전으로 설정했음.
&amp;lt;dependencies&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;org.seleniumhq.selenium&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;selenium&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;2.0a4&amp;lt;/version&amp;gt;
        &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
&amp;lt;/dependencies&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-3.1.3%EA%B0%84%EB%8B%A8%EB%8D%B0%EB%AA%A8&quot;&gt;&lt;/a&gt;3.1.3 간단 데모&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/download/attachments/6259762/Selenium_RC.wmv?version=1&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;SeleniumRC 데모 동영상 보기&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;line-height: normal; padding: 0px; font-size: 16pt; margin: 24px 0px 0px; color: rgb(0, 51, 102); border-bottom-color: rgb(60, 120, 181);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.WebDriver%EB%A5%BC%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8&quot;&gt;&lt;/a&gt;4. WebDriver를 이용한 UI 테스트&lt;/h2&gt;&lt;h3 style=&quot;line-height: normal; padding: 0px; font-size: 14pt; margin: 20px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.1WebDriver%EA%B0%9C%EC%9A%94&quot;&gt;&lt;/a&gt;4.1 WebDriver 개요&lt;/h3&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;홈페이지 :&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/selenium/?redir=1&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://code.google.com/p/selenium/?redir=1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.1.1WebDriver%EB%9E%80%3F&quot;&gt;&lt;/a&gt;4.1.1 WebDriver란?&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;단순한 API들로 구성된 개발자 중심의 웹 UI 테스트 자동화 도구 이다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;다양한 브라우저(FireFox, Internet Explorer, Safari, Chrome...)에서 일관성 있는 테스트를 할 수 있다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium 1.0에서 지원하지 못하던 테스트 기능 문제를 개선하였다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;multiple frames, multiple browser windows, popups, and alerts, Page navigation, Drag-and-drop, AJAX-based UI elements등 테스트 가능하다&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;현재 Selenium과 통합되어 2.0a 버전이 개발되고 있다.&lt;/li&gt;&lt;/ul&gt;&lt;table class=&quot;confluenceTable&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); clear: left; margin: 10px 0px; border-collapse: collapse; padding: 0px;&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;font-size: 10pt; line-height: 13pt;&quot;&gt;&lt;td class=&quot;confluenceTd&quot; style=&quot;font-size: 10pt; line-height: 13pt; color: rgb(0, 0, 0); border: 1px solid rgb(204, 204, 204); padding: 5px; vertical-align: top; margin: 0px;&quot;&gt;&lt;img src=&quot;http://www.gurubee.net/download/attachments/6259762/WebDriver.png&quot; align=&quot;absmiddle&quot; border=&quot;0&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.1.2WebDriver%EC%9E%A5%EC%A0%90&quot;&gt;&lt;/a&gt;4.1.2 WebDriver 장점&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Driver 변경만으로 다양한 환경에서 테스트 수행이 가능 하다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;표준 API 지원을 통해 개발자 UI 테스트에 최적화 되어 있다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Real browser 외에도 HtmlUnitDriver 지원을 통한 빠른 테스트 피드백이 가능 하다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;현재 Selenium과 연계를 통해 장단점 상호 보완 중이다.&lt;/li&gt;&lt;/ul&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.1.3WebDriver%EB%8B%A8%EC%A0%90&quot;&gt;&lt;/a&gt;4.1.3 WebDriver 단점&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;개발자 중심의 UI 테스트 도구인 관계로 초기 학습 시간 및 비용에 대한 부담이 발생한다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;시나리오에 기인한 테스트케이스의 작성이 까다롭고 불명확할 수 있다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;line-height: normal; padding: 0px; font-size: 14pt; margin: 20px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.2WebDriver%EC%98%88%EC%A0%9C&quot;&gt;&lt;/a&gt;4.2 WebDriver 예제&lt;/h3&gt;&lt;h6 style=&quot;line-height: normal; padding: 0px; font-size: 10pt; margin: 8px 0px 0px; color: rgb(0, 51, 102);&quot;&gt;&lt;a name=&quot;Selenium%EC%9D%84%EC%9D%B4%EC%9A%A9%ED%95%9CUI%ED%85%8C%EC%8A%A4%ED%8A%B8-4.2.1%EA%B0%84%EB%8B%A8%EC%98%88%EC%A0%9C&quot;&gt;&lt;/a&gt;4.2.1 간단 예제&lt;/h6&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;참고 :&amp;nbsp;&lt;a href=&quot;http://seleniumhq.org/docs/09_webdriver.html#the-5-minute-getting-started-guide&quot; rel=&quot;nofollow&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://seleniumhq.org/docs/09_webdriver.html#the-5-minute-getting-started-guide&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;By.id, By.name, By.tagName, By.xpath, By.className, By.cssSelector를 이용해 쉽게 element 접근이 가능하다&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium API 사용이 가능하다.&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;code panel&quot; style=&quot;padding: 0px; margin: 10px 20px; border: 1px dashed rgb(60, 120, 181); overflow: auto;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot; style=&quot;margin: 0px; padding: 0px 12px; font-size: 0.95em;&quot;&gt;&lt;pre class=&quot;code-java&quot; style=&quot;padding: 0px; margin-top: 10px; margin-bottom: 10px; overflow: auto; font-family: 'Courier New', Courier, monospace; line-height: 1.3;&quot;&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;import&lt;/span&gt; org.openqa.selenium.By;
&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;import&lt;/span&gt; org.openqa.selenium.WebDriver;
&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;import&lt;/span&gt; org.openqa.selenium.WebElement;
&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;import&lt;/span&gt; org.openqa.selenium.htmlunit.HtmlUnitDriver;

&lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;public&lt;/span&gt; class Example  {
    &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;static&lt;/span&gt; void main(&lt;span class=&quot;code-object&quot; style=&quot;color: rgb(145, 0, 145); background-color: inherit;&quot;&gt;String&lt;/span&gt;[] args) {
        &lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;// Create a &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;new&lt;/span&gt; instance of the html unit driver
&lt;/span&gt;        &lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;// Notice that the remainder of the code relies on the &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;interface&lt;/span&gt;,
&lt;/span&gt;        &lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;// not the implementation.
&lt;/span&gt;        WebDriver driver = &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;new&lt;/span&gt; HtmlUnitDriver();

        &lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;// And now use &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;this&lt;/span&gt; to visit Google
&lt;/span&gt;        driver.get(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;http:&lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;//www.google.com&quot;&lt;/span&gt;);
&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;// Find the text input element by its name
&lt;/span&gt;        WebElement element = driver.findElement(By.name(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;q&quot;&lt;/span&gt;));

        &lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;// Enter something to search &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;for&lt;/span&gt;
&lt;/span&gt;        element.sendKeys(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;Cheese!&quot;&lt;/span&gt;);

        &lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;// Now submit the form. WebDriver will find the form &lt;span class=&quot;code-keyword&quot; style=&quot;color: rgb(0, 0, 145); background-color: inherit;&quot;&gt;for&lt;/span&gt; us from the element
&lt;/span&gt;        element.submit();

        &lt;span class=&quot;code-comment&quot; style=&quot;color: rgb(128, 128, 128); background-color: inherit;&quot;&gt;// Check the title of the page
&lt;/span&gt;        &lt;span class=&quot;code-object&quot; style=&quot;color: rgb(145, 0, 145); background-color: inherit;&quot;&gt;System&lt;/span&gt;.out.println(&lt;span class=&quot;code-quote&quot; style=&quot;color: rgb(0, 145, 0); background-color: inherit;&quot;&gt;&quot;Page title is: &quot;&lt;/span&gt; + driver.getTitle());
    }
}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2 style=&quot;line-height: normal; padding: 0px; font-size: 16pt; margin: 24px 0px 0px; color: rgb(0, 51, 102); border-bottom-color: rgb(60, 120, 181);&quot;&gt;문서정보&lt;/h2&gt;&lt;ul style=&quot;font-size: 10pt; line-height: 13pt; margin: 10px 0px; padding-left: 22px;&quot;&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;이 문서는&amp;nbsp;&lt;a href=&quot;http://www.oracleclub.com/&quot; target=&quot;_blank&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;오라클클럽&lt;/a&gt;에서 작성하였습니다.&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;출처 :&amp;nbsp;&lt;a href=&quot;http://www.gurubee.net/pages/viewpage.action?pageId=6259762&amp;amp;&quot; target=&quot;_blank&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;http://www.gurubee.net/pages/viewpage.action?pageId=6259762&amp;amp;&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;font-size: 10pt; line-height: 13pt; margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/&quot; target=&quot;_blank&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;오라클클럽 지식창고&lt;/a&gt;의 모든 문서는&amp;nbsp;&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot; style=&quot;color: rgb(0, 51, 102);&quot;&gt;크리에이티브 커먼즈&lt;/a&gt;의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div id=&quot;labels-section&quot; class=&quot;pageSection&quot; style=&quot;margin-top: 10px; clear: both; color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-size: 13px; line-height: 17px;&quot;&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Know/Java</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1552</guid>
      <comments>https://zzimme.tistory.com/1552#entry1552comment</comments>
      <pubDate>Tue, 11 Jun 2013 17:29:17 +0900</pubDate>
    </item>
    <item>
      <title>JDBC 동작 원리</title>
      <link>https://zzimme.tistory.com/1550</link>
      <description>&lt;P&gt;&lt;SPAN style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(227,235,226); TEXT-INDENT: 0px; LETTER-SPACING: normal; DISPLAY: inline !important; FONT: bold 13px/19px Verdana, 'Lucida Grande', 'Lucida Sans Unicode', Tahoma, Arial, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; FLOAT: none; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN class=Apple-converted-space&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Mysql Statement Cancellation tiemr 관련 에러를 찾아보다가 찾게 된글&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;JDBC 동작 원리에 대해 자세히 설명이 되어있다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;한번쯤 읽어보면 도움이 될듯한 글&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;원본글 &lt;A href=&quot;http://helloworld.naver.com/helloworld/1321&quot;&gt;http://helloworld.naver.com/helloworld/1321&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; MARGIN: 0.5em 0px 0.5em 46pt; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(51,51,51); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(125,125,125)&quot;&gt;NHN Business Platform 웹플랫폼개발랩 강운덕&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; MARGIN: 0.5em 0px 0.5em 46pt; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(51,51,51); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN style=&quot;COLOR: rgb(39,36,37)&quot;&gt;성능 문제나 장애가 발생할 때 중요하게 살펴보는 부분(tier)은 WAS(Web Application Server)와 DBMS입니다. 대부분의 경우에 WAS를 담당하는 조직과 DBMS를 담당하는 조직이 달라, 각자 담당 분야를 중심으로 상황을 파악하려 합니다. 이때 상대적으로 관심을 못 받는 사각지대가 생기는데, 바로 WAS와 DBMS 사이입니다. Java 애플리케이션을 기준으로 말하면 DBCP와 JDBC입니다. 이 글에서는 JDBC의 타임아웃 설정을 중심으로 장애에 대응하는 방법을 설명하겠습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H2 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 22px&quot;&gt;어느 날 DDoS 공격, 그 뒤로 먹통이 된 WAS&lt;/H2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;다음과 같은 사고가 일어났다고 가정해 보자.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;DDoS 공격으로 서비스 전체가 정상적으로 동작하지 않았다. L4가 정상으로 동작하지 않아 네트워크가 단절되었고, 이로 인해 WAS도 동작 불능 상태에 빠졌다. 이후 보안팀에서는 DDoS 공격을 전부 차단했고, 네트워크도 정상으로 복구되었다. 그러나 WAS는 여전히 동작 불능 상태이다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;서비스팀에서는 WAS의 ThreadDump를 통해 JDBC의 API 호출 중에 WAS가 정지해 있음을 확인했다. 10분이 지나고 20분이 지나도 WAS는 여전히 정지 상태(WAITING)였고, 서비스는 정상으로 동작하지 않았다. 그런데 30분이 지날 무렵 갑자기 Exception을 발생시키면서 서비스가 복구되었다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;QueryTimeout 값도 3초로 설정되어 있는데 왜 30분씩이나 WAS가 정지 상태에 있었으며, 30분이 지나니 왜 정상적으로 WAS가 동작했던 것일까?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;정답은 JDBC의 타임아웃 과정을 이해하면 알 수 있다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H2 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 22px&quot;&gt;왜 JDBC 드라이버에 대해서 알아야 하는가?&lt;/H2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;JDBC는 DBMS에 접근하기 위한 표준 API이다. Sun은 4가지 타입의 드라이브를 정의하는데, NHN에서 주로 사용하는 것은 Type4 형식이다. JDBC Type4 드라이버는 Java로만 작성되어 있으며(pure java), Java 애플리케이션에서 소켓을 이용해 DBMS와 통신한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;IMG style=&quot;BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MAX-WIDTH: 100%; HEIGHT: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px&quot; class=iePngFix alt=122111_0935_JDBCInterna1.png src=&quot;http://helloworld.naver.com/files/attach/images/61/321/001/122111_0935_JDBCInterna1.png&quot;&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;그림 1 JDBC Type4 드라이버의 DBMS 통신 구조&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;Type4 드라이버는 소켓을 통해 바이트 스트림(byte stream)을 처리하기 때문에 HttpClient 같은 네트워크 라이브러리와 근본적으로 동작이 같다. 즉, 많은 CPU자원을 소모하고, ResponseTime의 손해가 있으며, 다른 네트워크 라이브러리가 가지고 있는 장애 포인트를 동일하게 가지고 있다. HttpClient를 사용한 경험이 있다면 타임아웃 값을 제대로 설정하지 않아 장애(hang)가 발생한 상황을 겪어 보았을 것이다. Type4 드라이버 역시 SocketTimeout 값을 제대로 설정하지 않으면 동일한 장애가 발생할 수 있다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;JDBC 드라이버의 SocketTimeout 값을 어떻게 설정하면 좋을지, 그리고 무엇을 고려해야 히는지 알아보자.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H2 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 22px&quot;&gt;WAS와 DBMS의 통신 시 타임아웃 계층&lt;/H2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;그림 2는 WAS와 DBMS와 통신 시 타임아웃 계층을 단순화한 것이다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;IMG style=&quot;BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MAX-WIDTH: 100%; HEIGHT: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px&quot; class=iePngFix alt=122111_0935_JDBCInterna2.png src=&quot;http://helloworld.naver.com/files/attach/images/61/321/001/122111_0935_JDBCInterna2.png&quot;&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;그림 2 타임아웃 계층&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;상위 레벨의 타임아웃은 하위 레벨의 타임아웃에 의존성을 가지고 있다. 하위 레벨의 타임아웃이 정상으로 동작해야 상위 레벨의 타임아웃도 정상으로 동작한다. 예를 들어, JDBC Driver SocketTimeout이 정상으로 동작하지 않으면, 그보다 상위 레벨의 타임아웃인 StatementTimeout과 TransactionTimeout도 정상으로 동작하지 않는다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&quot;StatementTimeout을 설정했는데도 네트워크 장애가 발생했을 때, StatementTimeout이 동작하지 않아 애플리케이션이 장애 상황에서 회복되지 않았어요&quot;란 문의를 많이 받았다. StatementTimeout은 네트워크 연결 장애에 대한 타임아웃을 담당하는 것이 아니다. StatementTimeout은 Statement 한 개의 수행 시간을 제한하는 기능만 담당한다. 네트워크 장애에 대비하는 타임아웃은 JDBC Driver SoecketTimeout이 처리해야 한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;JDBC Driver SocketTimeout은 OS의 SocketTimeout 설정에 영향을 받는다. JDBC Driver SocketTimeout을 설정하지 않아도 네트워크 장애 발생 이후 30분이 지나면 JDBC Connection Hang이 복구되는 것은 OS의 SocketTimeout 설정때문이다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;그림 2에서 DBCP Connection Pool이 타임아웃 계층과 분리되어 왼쪽에 있는 것을 볼 수 있다. DBCP는 Connection을 생성하고 관리하는 일을 하며, 타임아웃 처리에는 관여하지 않는다. DBCP 내부에서 Connection을 생성하거나 Connection 유효성을 확인하려 Validation Query를 보낼 때에는 SocketTimeout이 영향을 주지만 애플리케이션에 직접적인 영향을 주지는 않는다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;단, 애플리케이션 로직에서 DBCP에 getConnection() 메서드를 호출할 때 Connection을 애플리케이션이 얻을 때까지의 타임아웃을 지정할 수 있다. 하지만 이것은 JDBC의 ConnectTimeout과는 무관하다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;IMG style=&quot;BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MAX-WIDTH: 100%; HEIGHT: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px&quot; class=iePngFix alt=122111_0935_JDBCInterna3.png src=&quot;http://helloworld.naver.com/files/attach/images/61/321/001/122111_0935_JDBCInterna3.png&quot;&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;그림 3 각 레벨 별 타임아웃&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H3 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 18px&quot;&gt;TransactionTimeout이란?&lt;/H3&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;TransactionTimeout은 프레임워크(Spring, EJB Container)나 애플리케이션 레벨에서 유효한 타임아웃이다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;TransactionTimeout은 생소한 개념일 수 있다. 간단히 설명하면 &quot;StatementTimeout x N(Statement 수행 수) + α(가비지 컬렉션 및 기타)&quot;라고 할 수 있다. 전체 Statement 수행 시간을 허용할 수 있는 최대 시간 이내로 제한하려 할 때 TransactionTimeout을 사용한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;가령 Statement 한 개를 수행할 때 0.1초가 필요하다면, 몇 개 안 되는 Statement를 수행할 때에는 문제가 없다. 그러나 Statement 10만 개를 수행할 때에는 일만 초(약 7시간)가 필요하다. TransactionTimeout은 이런 경우에 사용할 수 있다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;실 구현체로 EJB CMT(Container Managed Transaction)가 가장 대표적인 예이다. EJB CMT는 제작사마다 구현 방식과 동작 과정이 다르다. NHN에서는 EJB Container를 사용하지 않으므로, 가장 익숙한 예는 Spring의 TransactionTimeout이 될 수 있겠다. Spring에서는 다음과 같이 XML을 이용하여 설정하거나, Java 코드에서 @Transactional을 이용하여 타임아웃을 설정할 수 있다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV style=&quot;POSITION: relative !important; BACKGROUND-COLOR: white; MARGIN: 1em 0px; WIDTH: 703px; FONT-SIZE: 1em !important; OVERFLOW: auto !important&quot; id=highlighter_836647 class=&quot;syntaxhighlighter  java&quot;&gt;
&lt;DIV style=&quot;Z-INDEX: 10 !important; BOX-SIZING: content-box !important; BORDER-BOTTOM: medium none; POSITION: absolute !important; TEXT-ALIGN: left !important; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(108,226,108); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: 11px !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: 11px !important; COLOR: white !important; FONT-SIZE: 10px !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: medium none; RIGHT: 1px !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: medium none; PADDING-TOP: 0px !important; TOP: 1px !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=toolbar&gt;&lt;SPAN&gt;&lt;A style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: center !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; COLOR: white !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; TEXT-DECORATION:  !important; PADDING-TOP: 1px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;toolbar_item command_help help&quot; href=&quot;http://helloworld.naver.com/helloworld/1321#&quot;&gt;?&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;TABLE style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: transparent; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; BORDER-SPACING: 0px; WIDTH: 703px; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; BORDER-COLLAPSE: collapse; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; MAX-WIDTH: 100%; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 14px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; border=0 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot;&gt;
&lt;TR style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot;&gt;
&lt;TD style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; COLOR: rgb(175,175,175) !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=gutter&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; POSITION: static !important; TEXT-ALIGN: right !important; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0.5em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; BORDER-TOP-WIDTH: 0px !important; BORDER-BOTTOM-WIDTH: 0px !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-LEFT-WIDTH: 0px !important; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(108,226,108) 3px solid; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number1 index0 alt2&quot;&gt;1&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; POSITION: static !important; TEXT-ALIGN: right !important; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0.5em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; BORDER-TOP-WIDTH: 0px !important; BORDER-BOTTOM-WIDTH: 0px !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-LEFT-WIDTH: 0px !important; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(108,226,108) 3px solid; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number2 index1 alt1&quot;&gt;2&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; POSITION: static !important; TEXT-ALIGN: right !important; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0.5em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; BORDER-TOP-WIDTH: 0px !important; BORDER-BOTTOM-WIDTH: 0px !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-LEFT-WIDTH: 0px !important; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(108,226,108) 3px solid; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number3 index2 alt2&quot;&gt;3&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: 671px; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=code&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: relative !important; MIN-WIDTH: 290px; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; ZOOM: 1; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=container&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 1em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number1 index0 alt2&quot;&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;java plain&quot;&gt;&amp;lt;tx:attributes&amp;gt;&lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 1em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number2 index1 alt1&quot;&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;java plain&quot;&gt;&amp;lt;tx:method name=&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: blue !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;java string&quot;&gt;&quot;…&quot;&lt;/CODE&gt; &lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;java plain&quot;&gt;timeout=&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: blue !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;java string&quot;&gt;&quot;3&quot;&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;java plain&quot;&gt;&amp;gt;&lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 1em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number3 index2 alt2&quot;&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;java plain&quot;&gt;&amp;lt;/tx:method&amp;gt;&amp;lt;/tx:attributes&amp;gt;&lt;/CODE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;Spring에서 제공하는 TransactionTimeout은 매우 단순하다. 해당 Transaction의 시작 시간과 경과 시간을 기록하면서, 특정 이벤트 발생 시 경과 시간을 확인하여 타임아웃 이상일 경우 예외(Exception)를 발생하도록 하고 있다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;Spring에는 Transaction Synchronization방식이라고 하여 Connection을 ThreadLocal에저장해 두고 사용한다. ThreadLocal에 Connection 저장 시 Transaction의 시작 시간과 타임아웃 시간을 같이 기록하고, Proxy Connection을 사용하여 Statement를 생성하는 작업을 시도할 경우 경과 시간을 체크하여 예외를 발생시키도록 구현되어있다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;EJB CMT 구현 방식 또한 크게 다르지 않다. 만약 TransactionTimeout이 매우 중요하고 사용하는 컨테이너나 프레임워크에서 이런 기능을 제공하지 않는다면 직접 구현해서 사용해도 별 무리가 없을 정도로 매우 단순한 구조이다. TransactionTimeout에 대한 표준 API는 없다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;수행 시간이 200ms인 Statement가 5개 이하이고 기타 부수적인 비즈니스 로직 처리 시간이나 프레임워크 동작 시간이 100ms일 경우, TrasactionTimeout시간은 1100ms((200 x 5)+100) 이상으로 설정해야 한다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H3 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 18px&quot;&gt;StatementTimeout 이란?&lt;/H3&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;Statement 하나가 얼마나 오래 수행되어도 괜찮은지에 대한 한계 값이다. JDBC API인 Statement에 타임아웃 값을 설정하며, 이 값을 바탕으로 JDBC 드라이버가 StatementTimeout을 처리한다. JDBC API인 java.sql.Statement.setQueryTimeout(int timeout) 메서드로 설정한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;요즘 개발 환경에서는 개발자가 직접 StatementTimeout을 Java 코드로 설정하는 경우는 드물며, 프레임워크를 이용하여 해결하는 경우가 많다. iBatis를 예로 들어 설명하자면 &quot;sql-map-config.xml&quot; 파일의 sqlMapConfig/settings에 @defaultStatementTimeout 값으로 기본값을 설정할 수 있다. 또한 &quot;sql-map.xml&quot; 파일의 statement, select, insert, update 구문마다 @timeout 값으로 개별적으로 설정할 수 있다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;StatementTimeout 시간은 애플리케이션 특성에 따라 지정하기 때문에 이에 대한 설정 권장 값은 없다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H2 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 22px&quot;&gt;JDBC 드라이버의 StatementTimeout 동작 방식&lt;/H2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;StatementTimeout의 동작방식은 DBMS나 드라이버별로 다르다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;Oracle과 Microsoft SQL Server의 동작 방식이 서로 비슷하고, MySQL과 CUBRID의 동작 방식이 서로 비슷하다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H3 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 18px&quot;&gt;Oracle JDBC Statement의 QueryTimeout&lt;/H3&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;IMG style=&quot;BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MAX-WIDTH: 100%; HEIGHT: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px&quot; class=iePngFix alt=122111_0935_JDBCInterna4.png src=&quot;http://helloworld.naver.com/files/attach/images/61/321/001/122111_0935_JDBCInterna4.png&quot;&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;그림 4 Oracle JDBC Statement의 QueryTimeout 동작 과정&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;Oracle JDBC Statement의 QueryTimeout은 다음과 같은 과정으로 동작한다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Connection.createStatement() 메서드를 호출하여 Statement를 생성한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement.executeQuery() 메서드를 호출한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement는 자신의 Connection을 사용하여 Oracle DBMS로 쿼리를 전송한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement는 타임아웃 처리를 위해 OracleTimeoutPollingThread(classloader별로 1개 존재)에 Statement를 등록한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;타임아웃이 발생한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;OracleTimeoutPollingThread는 OracleStatement.cancel() 메서드를 호출한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Connection을 통해 취소(cancel) 메시지를 전송하여 수행중인 쿼리를 취소한다&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H3 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 18px&quot;&gt;jTDS(Microsoft SQL Server) Statement의 QueryTimeout&lt;/H3&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;IMG style=&quot;BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MAX-WIDTH: 100%; HEIGHT: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px&quot; class=iePngFix alt=122111_0935_JDBCInterna5.png src=&quot;http://helloworld.naver.com/files/attach/images/61/321/001/122111_0935_JDBCInterna5.png&quot;&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;그림 5 jTDS(Micsofot SQL Server) Statement의 QueryTimeout의 동작 과정&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;jTDS(Microsoft SQL Server) Statement의 QueryTimeout은 다음과 같은 과정으로 동작한다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Connection.createStatement() 메서드를 호출하여 Statement를 생성한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement.executeQuery() 메서드를 호출한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement는 내부 Connection을 사용하여 Microsoft SQL DBMS로 쿼리를 전송한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement는 타임아웃 처리를 위해 TimerThread에 Statement를 등록한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;타임아웃이 발생한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;TimerThread는 JtdsStatement 객체 내부의 TdsCore.cancel() 메서드를 호출한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;ConnectionJDBC을 통해 취소 메시지를 전송하여 수행중인 쿼리를 취소한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H3 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 18px&quot;&gt;MySQL JDBC Statement의 QueryTimeout(5.0.8 버전)&lt;/H3&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;IMG style=&quot;BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MAX-WIDTH: 100%; HEIGHT: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px&quot; class=iePngFix alt=122111_0935_JDBCInterna6.png src=&quot;http://helloworld.naver.com/files/attach/images/61/321/001/122111_0935_JDBCInterna6.png&quot;&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;그림 6 MySQL JDBC Statement의 QueryTimeout의 동작 과정(5.0.8 버전)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;MySQL JDBC Statement(5.0.8 버전)의 QueryTimeout은 다음과 같은 과정으로 동작한다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Connection.createStatement() 메서드를 호출하여 Statement를 생성한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement.executeQuery() 메서드를 호출한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement는 내부 Connection을 사용하여 MySQL DBMS로 쿼리를 전송한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement는 타임아웃 처리를 위해 새로운 타임아웃 처리용 스레드를 생성한다. 5.1.x 버전에서는 Connection에 한 개의 스레드가 할당되는 것으로 변경되었다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;스레드에 타임아웃 처리를 등록한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;타임아웃이 발생한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;타임아웃 처리 스레드가 Statement와 동일한 설정의 Connection을 생성한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;생성된 Connection을 사용하여 취소 쿼리(KILL QUERY &quot;connectionId&quot;)를 전송한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H3 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 18px&quot;&gt;CUBRID JDBC Statement의 QueryTimeout&lt;/H3&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;IMG style=&quot;BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MAX-WIDTH: 100%; HEIGHT: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px&quot; class=iePngFix alt=122111_0935_JDBCInterna7.png src=&quot;http://helloworld.naver.com/files/attach/images/61/321/001/122111_0935_JDBCInterna7.png&quot;&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;그림 7 CUBRID JDBC Statement의 QueryTimeout의 동작 과정&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;CUBRID JDBC Statement의 QueryTimeout은 다음과 같은 과정으로 동작한다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Connection.createStatement() 메서드를 호출하여 Statement를 생성한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement.executeQuery() 메서드를 호출한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement는 내부 Connection을 사용하여 CUBRID DBMS로 쿼리를 전송한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;Statement는 타임아웃 처리를 위해 새로운 타임아웃용 스레드를 생성한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;스레드에 타임아웃 처리를 등록한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;타임아웃이 발생한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;타임아웃 처리 스레드가 Statement와 동일한 설정의 Connection을 생성한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;생성된 Connection을 사용하여 취소 메시지를 전송한다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H2 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 22px&quot;&gt;JDBC 드라이버의 SocketTimeout 이란?&lt;/H2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;JDBC Driver Type4는 소켓을 사용하여 DBMS에 연결하는 방식이고, 애플리케이션과 DBMS 사이의 ConnectTimeout 처리는 DBMS에서 하지 않는다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;JDBC 드라이버의 SocketTimeout 값은 DBMS가 비정상으로 종료되었거나 네트워크 장애(기기 장애 등)가 발생했을 때 필요한 값이다. TCP/IP의 구조상 소켓에는 네트워크의 장애를 감지할 수 있는 방법이 없다. 그렇기 때문에 애플리케이션은 DBMS와의 연결 끊김을 알 수 없다. 이럴 때 SocketTimeout이 설정되어 있지 않다면 애플리케이션은 DBMS로부터의 결과를 무한정 기다릴 수도 있다(이러한 Connection을 Dead Connection이라고 부르기도 한다).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;이러한 상태를 방지하기 위해 소켓에 타임아웃을 설정해야 한다. SocketTimeout은 JDBC 드라이버에서 설정할 수 있다. SocketTimeout을 설정하면 네트워크 장애 발생 시 무한 대기 상황을 방지하여 장애 시간을 단축할 수 있다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;단, SocketTimeout 값을 Statement의 수행 시간 제한을 위해 사용하는 것은 바람직하지 않다. 그러므로 SocketTimeout 값은 StatementTimeout 값보다는 크게 설정해야 한다. SocketTimeout값이 StatementTimeout보다 작으면, SocketTimeout이 먼저 동작하므로 StatementTimeout 값은 의미가 없게 되어 동작하지 않는다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;SocketTimeout에는 아래 두 가지 옵션이 있고, 드라이버별로 설정 방법이 다르다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;UL style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); MARGIN-TOP: 1em; TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; MARGIN-BOTTOM: 1em; COLOR: rgb(0,0,0); MARGIN-LEFT: 52pt; WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;LI&gt;&lt;SPAN&gt;Socket Connect 시 타임아웃(connectTimeout): Socket.connect(SocketAddress endpoint, int timeout) 메서드를 위한 제한 시간&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Socket Read/Write의 타임아웃(socketTimeout): Socket.setSoTimeout(int timeout) 메서드를 위한 제한 시간&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; MARGIN: 0.5em 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(51,51,51); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;CUBRID, MySQL, jTDS (Microsoft SQL Server), Oracle JDBC 소스를 모두 확인해 본 결과 네 개의 드라이버에서는 위의 두 가지 API를 사용함을 확인할 수 있었다. JDBC 드라이버별 SocketTimeout의 설정 방법은 아래와 같다. connectTimeout와 socketTimeout의 기본 값인 0은 타임아웃을 발생하지 않도록 하는 것이다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; MARGIN: 0.5em 0px 0.5em 36pt; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(51,51,51); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;표 1 SocektTimeout 설정 방법&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); MARGIN-LEFT: 36pt; WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;TABLE style=&quot;BACKGROUND-COLOR: transparent; BORDER-SPACING: 0px; BORDER-COLLAPSE: collapse; FONT-FAMILY: 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; MAX-WIDTH: 100%; FONT-SIZE: 14px&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 96px&quot;&gt;
&lt;COL style=&quot;WIDTH: 104px&quot;&gt;
&lt;COL style=&quot;WIDTH: 43px&quot;&gt;
&lt;COL style=&quot;WIDTH: 43px&quot;&gt;
&lt;COL style=&quot;WIDTH: 293px&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR style=&quot;HEIGHT: 18px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: rgb(38,38,38) 1pt solid&quot; rowSpan=2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;JDBC 드라이버&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: rgb(38,38,38) 1pt solid&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;connectTimeout&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: rgb(38,38,38) 1pt solid&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;기본값&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: rgb(38,38,38) 1pt solid&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;단위&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: rgb(38,38,38) 1pt solid&quot; rowSpan=2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;적용 방법&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;HEIGHT: 12px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;socketTimeout&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;기본값&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;단위&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;HEIGHT: 44px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot; rowSpan=2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;MySQL Driver&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;connectTimeout&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;ms&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot; rowSpan=2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;DriverURL에 옵션 명시&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style=&quot;MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em&quot;&gt;
&lt;LI&gt;&lt;SPAN&gt;형식&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style=&quot;BACKGROUND-COLOR: rgb(217,217,217); MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체; FONT-SIZE: 8pt&quot;&gt;jdbc:mysql://[host:port],[host:port].../[database]&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;BACKGROUND-COLOR: rgb(217,217,217); MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체; FONT-SIZE: 8pt&quot;&gt;[?propertyName1][=propertyValue1][&amp;amp;propertyName2][=propertyValue2]...&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style=&quot;MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em&quot;&gt;
&lt;LI&gt;&lt;SPAN&gt;예&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style=&quot;BACKGROUND-COLOR: rgb(217,217,217); MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체; FONT-SIZE: 8pt&quot;&gt;jdbc:mysql://xxx.xx.xxx.xxx:3306/database?connectTimeout=60000&amp;amp;socketTimeout=60000&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;HEIGHT: 34px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;socketTimeout&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;ms&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;HEIGHT: 38px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot; rowSpan=2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;jTDS(MS-SQL Server) Driver&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;loginTimeout&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;sec&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot; rowSpan=2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;DriverURL에 옵션명시&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style=&quot;MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em&quot;&gt;
&lt;LI&gt;&lt;SPAN&gt;형식&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style=&quot;BACKGROUND-COLOR: rgb(217,217,217); MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체; FONT-SIZE: 8pt&quot;&gt;jdbc:jtds:&amp;lt;server_type&amp;gt;://&amp;lt;server&amp;gt;[:&amp;lt;port&amp;gt;][/&amp;lt;database&amp;gt;][;&amp;lt;property&amp;gt;=&amp;lt;value&amp;gt;[;...]]&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style=&quot;MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em&quot;&gt;
&lt;LI&gt;&lt;SPAN&gt;예&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style=&quot;BACKGROUND-COLOR: rgb(217,217,217); MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체; FONT-SIZE: 8pt&quot;&gt;jdbc:jtds:sqlserver://server:port/database;loginTimeout=60;socketTimeout=60&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;HEIGHT: 31px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;socketTimeout&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;sec&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;HEIGHT: 47px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot; rowSpan=2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;Oracle Thin Driver&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;oracle.net.CONNECT_TIMEOUT&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;ms&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot; rowSpan=2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;DriverURL로 설정할 수 없고, OracleDatasource.setConnectionProperties() API를 통해 Properties 객체로 전달해야 한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;DBCP사용 시 다음 API를 사용한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style=&quot;MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em&quot;&gt;
&lt;LI&gt;&lt;SPAN&gt;BasicDatasource.setConnectionProperties()&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;BasicDatasource.addConnectionProperties()&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;HEIGHT: 45px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;oracle.jdbc.ReadTimeout&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;ms&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;HEIGHT: 69px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot; rowSpan=2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;Cubrid Thin Driver&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;별도 설정 없음&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;5,000&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;ms&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 0.25pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;DriverURL로 설정할 수 없으며, 5초 후 타임아웃이 발생한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style=&quot;MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em&quot;&gt;
&lt;LI&gt;&lt;SPAN&gt;URL에 althost 옵션 지정으로 타입아웃 시 지정된 호스트로 연결 가능&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;C API로는 URL에 login_time 옵션을 ms단위로 명시 가능&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;HEIGHT: 46px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 1pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;별도 설정 없음&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 1pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;5,000&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 1pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;ms&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: rgb(38,38,38) 1pt solid; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-STYLE: none&quot;&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;DriverURL로 설정할 수 없으며, 5초 후 타임아웃이 발생한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style=&quot;MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em&quot;&gt;
&lt;LI&gt;&lt;SPAN&gt;URL에 althost 옵션 지정으로 timeout 시 지정된 호스트로 연결 가능&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; MARGIN: 0.5em 0px 0.5em 36pt; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(51,51,51); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;&lt;SPAN&gt;DBCP의 별도 API를 직접 사용하지 않고, Properties로 설정하는 방법도 있다. Properties 설정 시 키는 &quot;connectionProperties&quot;, 값은 &quot;[propertyName=property;]*&quot; 형식의 문자열을 전달한다. 다음 예는 iBatis에서 XML을 통한 Properties 설정을 예로 들었다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;DIV style=&quot;POSITION: relative !important; BACKGROUND-COLOR: white; MARGIN: 1em 0px; WIDTH: 703px; FONT-SIZE: 1em !important; OVERFLOW: auto !important&quot; id=highlighter_47565 class=&quot;syntaxhighlighter  xml&quot;&gt;
&lt;DIV style=&quot;Z-INDEX: 10 !important; BOX-SIZING: content-box !important; BORDER-BOTTOM: medium none; POSITION: absolute !important; TEXT-ALIGN: left !important; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(108,226,108); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: 11px !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: 11px !important; COLOR: white !important; FONT-SIZE: 10px !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: medium none; RIGHT: 1px !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: medium none; PADDING-TOP: 0px !important; TOP: 1px !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=toolbar&gt;&lt;SPAN&gt;&lt;A style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: center !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; COLOR: white !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; TEXT-DECORATION:  !important; PADDING-TOP: 1px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;toolbar_item command_help help&quot; href=&quot;http://helloworld.naver.com/helloworld/1321#&quot;&gt;?&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;TABLE style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: transparent; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; BORDER-SPACING: 0px; WIDTH: 703px; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; BORDER-COLLAPSE: collapse; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; MAX-WIDTH: 100%; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 14px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; border=0 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot;&gt;
&lt;TR style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot;&gt;
&lt;TD style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; COLOR: rgb(175,175,175) !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=gutter&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; POSITION: static !important; TEXT-ALIGN: right !important; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0.5em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; BORDER-TOP-WIDTH: 0px !important; BORDER-BOTTOM-WIDTH: 0px !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-LEFT-WIDTH: 0px !important; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(108,226,108) 3px solid; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number1 index0 alt2&quot;&gt;1&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; POSITION: static !important; TEXT-ALIGN: right !important; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0.5em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; BORDER-TOP-WIDTH: 0px !important; BORDER-BOTTOM-WIDTH: 0px !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-LEFT-WIDTH: 0px !important; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(108,226,108) 3px solid; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number2 index1 alt1&quot;&gt;2&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; POSITION: static !important; TEXT-ALIGN: right !important; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0.5em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; BORDER-TOP-WIDTH: 0px !important; BORDER-BOTTOM-WIDTH: 0px !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-LEFT-WIDTH: 0px !important; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(108,226,108) 3px solid; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number3 index2 alt2&quot;&gt;3&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; POSITION: static !important; TEXT-ALIGN: right !important; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0.5em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; BORDER-TOP-WIDTH: 0px !important; BORDER-BOTTOM-WIDTH: 0px !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-LEFT-WIDTH: 0px !important; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(108,226,108) 3px solid; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number4 index3 alt1&quot;&gt;4&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; POSITION: static !important; TEXT-ALIGN: right !important; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0.5em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; BORDER-TOP-WIDTH: 0px !important; BORDER-BOTTOM-WIDTH: 0px !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-LEFT-WIDTH: 0px !important; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(108,226,108) 3px solid; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number5 index4 alt2&quot;&gt;5&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; POSITION: static !important; TEXT-ALIGN: right !important; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0.5em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; BORDER-TOP-WIDTH: 0px !important; BORDER-BOTTOM-WIDTH: 0px !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-LEFT-WIDTH: 0px !important; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(108,226,108) 3px solid; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number6 index5 alt1&quot;&gt;6&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: 884px; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=code&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: relative !important; MIN-WIDTH: 290px; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 0px !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 0px !important; ZOOM: 1; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=container&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 1em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number1 index0 alt2&quot;&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;lt;&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: rgb(0,102,153) !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: bold !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml keyword&quot;&gt;transactionmanager&lt;/CODE&gt; &lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: gray !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml color1&quot;&gt;type&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: blue !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml string&quot;&gt;&quot;JDBC&quot;&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;gt;&lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 1em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number2 index1 alt1&quot;&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;lt;&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: rgb(0,102,153) !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: bold !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml keyword&quot;&gt;datasource&lt;/CODE&gt; &lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: gray !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml color1&quot;&gt;type&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: blue !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml string&quot;&gt;&quot;com.nhncorp.lucy.db.DbcpDSFactory&quot;&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;gt;&lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 1em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number3 index2 alt2&quot;&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;....&lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 1em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number4 index3 alt1&quot;&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;lt;&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: rgb(0,102,153) !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: bold !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml keyword&quot;&gt;property&lt;/CODE&gt; &lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: gray !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml color1&quot;&gt;name&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: blue !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml string&quot;&gt;&quot;connectionProperties&quot;&lt;/CODE&gt; &lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: gray !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml color1&quot;&gt;value&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;=&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: blue !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml string&quot;&gt;&quot;oracle.net.CONNECT_TIMEOUT=6000;oracle.jdbc.ReadTimeout=6000&quot;&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;gt;&lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 1em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number5 index4 alt2&quot;&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;lt;/&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: rgb(0,102,153) !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: bold !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml keyword&quot;&gt;property&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;gt;&amp;lt;/&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: rgb(0,102,153) !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: bold !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml keyword&quot;&gt;datasource&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;gt;&lt;/CODE&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;BACKGROUND-IMAGE: none; BOX-SIZING: content-box !important; BORDER-BOTTOM: 0px; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 1em !important; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 1em !important; FONT-FAMILY: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; WHITE-SPACE: pre !important; FLOAT: none !important; HEIGHT: auto !important; FONT-SIZE: 1em !important; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: 0px; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;line number6 index5 alt1&quot;&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;lt;/&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: rgb(0,102,153) !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: bold !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml keyword&quot;&gt;transactionmanager&lt;/CODE&gt;&lt;CODE style=&quot;BOX-SIZING: content-box !important; BORDER-BOTTOM: rgb(225,225,232) 1px solid; POSITION: static !important; TEXT-ALIGN: left !important; BORDER-LEFT: rgb(225,225,232) 1px solid; PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.1em !important; BACKGROUND-COLOR: rgb(247,247,249); FONT-STYLE: normal !important; MARGIN: 0px; OUTLINE-STYLE: none !important; OUTLINE-COLOR: invert !important; MIN-HEIGHT: auto !important; PADDING-LEFT: 4px; OUTLINE-WIDTH: 0px !important; WIDTH: auto !important; BOTTOM: auto !important; PADDING-RIGHT: 4px; FONT-FAMILY: Menlo, Monaco, Consolas, 'Courier New', monospace; FLOAT: none !important; HEIGHT: auto !important; COLOR: black !important; FONT-SIZE: 12px; VERTICAL-ALIGN: baseline !important; OVERFLOW: visible !important; BORDER-TOP: rgb(225,225,232) 1px solid; RIGHT: auto !important; FONT-WEIGHT: normal !important; BORDER-RIGHT: rgb(225,225,232) 1px solid; PADDING-TOP: 2px; TOP: auto !important; LEFT: auto !important; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px&quot; class=&quot;xml plain&quot;&gt;&amp;gt;&lt;/CODE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H2 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 22px&quot;&gt;OS 레벨 SocketTimeout 설정&lt;/H2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;SocketTimeout이나 ConnectTimeout을 설정하지 않으면 네트워크 장애가 발생해도 애플리케이션이 대부분 이를 감지할 수 없다. 따라서 연결이 되거나 데이터를 읽을 수 있을 때까지 애플리케이션이 무한정 기다리게 된다. 그러나 서비스에서 발생한 실재 장애 상황에서는 30분 후에 애플리케이션(WAS)이 재연결을 시도하여 문제가 해결되는 경우가 많다. OS에서도 SocketTimeout 시간을 설정할 수 있기 때문이다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;이 기사의 처음에 예로 든 리눅스 서버에서는 SocketTimeout을 30분으로 설정해 두고 있었다. 해당 설정 값을 통해 OS 레벨에서 네트워크 연결 끊김을 확인하는 것이다. 문제가 발생한 리눅스 서버의 KeepAlive 체크 수행 주기가 30분이므로 SocketTimeout 설정을 0으로 해도 네트워크 장애로 인한 DBMS 연결 장애 지속 시간이 30분을 넘지 않는 것이다. Linux 서버에서 KeepAlive 체크 수행 주기는 tcp_keepalive_time로 조정할 수 있다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;네트워크 장애로 인해 애플리케이션이 대기 상태로 빠지는 경우는 대부분 애플리케이션이 Socket.read() 메서드를 호출하고 있을 때이다. 그러나 네트워크 구성이나 장애 유형에 따라 매우 드물게 Socket.write() 메서드를 실행하는 도중 대기 상태에 빠지는 경우가 있다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;애플리케이션에서 Socket.write() 메서드를 호출하면 OS 커널 버퍼에 데이터를 기록한 후 바로 제어권을 애플리케이션에 반환한다. 즉 커널 버퍼에 값을 제대로만 기록하면 Socket.write() 메서드 실행은 언제나 성공한다. 그러나 특수한 네트워크 장애로 OS 커널 버퍼가 가득차면 Socket.write() 메서드도 대기 상황에 빠질 수 있다. 이 경우 OS는 일정 시간 동안 패킷 재전송을 시도하다고 한계 값에 도달하면 에러를 발생시킨다. 이 기사에서 예로 든 서버에서는 해당 값이 대략 15분으로 설정되어 있었다. 이 값은 Linux 서버의 tcp_retries2로 조절할 수 있다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;LI style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;H2 style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 22px&quot;&gt;마치며&lt;/H2&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;JDBC 내부의 동작 설명은 이것으로 마무리한다. 올바른 타임아웃 설정으로 장애를 줄이는 데 도움이 되었으면 하는 바람이다. 추가적인 문의나 JDBC에 관련한 좋은 정보가 있다면 개발자센터 블로그나 이 기사의 댓글로 글을 남겨 주기를 부탁한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0.5em 0px; COLOR: rgb(51,51,51); FONT-SIZE: 14px&quot;&gt;&lt;SPAN&gt;마지막으로 자주 문의가 들어온 내용을 정리해 보았다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;
&lt;UL style=&quot;WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); MARGIN-TOP: 1em; TEXT-INDENT: 0px; LETTER-SPACING: normal; FONT: 14px/23px 나눔고딕, NanumGothic, ng, Tahoma, sans-serif; WHITE-SPACE: normal; ORPHANS: 2; MARGIN-BOTTOM: 1em; COLOR: rgb(0,0,0); MARGIN-LEFT: 52pt; WORD-SPACING: 0px; -webkit-text-size-adjust: none; -webkit-text-stroke-width: 0px&quot;&gt;
&lt;LI&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;Q&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;Statement.setQueryTimeout() 메서드로 QueryTimeout을 설정했는데도 네트워크 장애 발생 시 기대하는 대로 동작하지 않습니다.&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'MS Gothic'&quot;&gt;&lt;STRONG&gt;A&lt;/STRONG&gt;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;QueryTimeout은 정상적으로 소켓 연결을 맺고 있을 때에만 유효합니다. 그렇기 때문에 네트워크 장애의 예외 상황을 처리할 수 없습니다. 네트워크 장애 상황을 대비하려면 JDBC 드라이버에 있는 SocketTimeout을 설정해야 합니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Q&lt;/STRONG&gt;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;TransactionTimeout, StatementTimeout, JDBC 드라이버 SocketTimeout은 DBCP 설정 값과 어떤 관계가 있나요?&lt;br /&gt;&lt;STRONG&gt;A&lt;/STRONG&gt;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;DBCP에서 Connection을 JDBC로부터 얻어올 때 DBCP의 waitTimeout 값만큼 대기할 수 있습니다. 그 외의 DBCP 설정 값은 DBCP 단독으로 동작합니다.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;Q&lt;/STRONG&gt;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;JDBC SocketTimeout을 설정하면 DBCP에서 유휴 상태(idle)로 오래 유지된 Connection이 닫히지 않나요?&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'MS Gothic'&quot;&gt;&lt;STRONG&gt;A&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;아니요, 닫히지 않습니다. Socket 옵션은 실제 데이터를 쓰거나 읽을 때 적용되기 때문에, DBCP 안에서 유휴 상태인 Connecton에 영향을 끼치지 않습니다. DBCP 내부에서 부족한 Connection 생성, 오래된 유휴 Connection 제거, Validation Check 시 영향을 줄 수 있지만 네트워크에 문제가 발생하지 않는 한 특이 사항은 일어나지 않습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Q&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;SocketTimeout시간은 얼마나 길게 설정해야 하나요?&lt;br /&gt;&lt;STRONG&gt;A&lt;/STRONG&gt;&lt;SPAN class=Apple-converted-space&gt;&amp;nbsp;&lt;/SPAN&gt;본문에서 말한 것처럼 StatementTimeout보다는 충분히 크게 잡아야 하며, 권장 값은 없습니다. JDBC 드라이버의 SocketTimeout 값이 영향을 주는 시점은 네트워크 장애가 발생한 이후입니다. 해당 값을 정밀하게 설정한다고 해서 장애가 발생하지 않는 것이 아니며, 경우에 따라(네트워크 장애가 곧 복구되었을 경우) 장애 시간을 줄일 수 있을 뿐입니다.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;</description>
      <category>Know/Java</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1550</guid>
      <comments>https://zzimme.tistory.com/1550#entry1550comment</comments>
      <pubDate>Fri, 22 Feb 2013 09:31:56 +0900</pubDate>
    </item>
    <item>
      <title>Java Troubleshooting Tool - VisualVM</title>
      <link>https://zzimme.tistory.com/1549</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;java thread 정보를 분석할 수 있는 visual tool.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;다운로드는 아래!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://visualvm.java.net/download.html&quot;&gt;http://visualvm.java.net/download.html&lt;/A&gt;&lt;/P&gt;</description>
      <category>Know/Java</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1549</guid>
      <comments>https://zzimme.tistory.com/1549#entry1549comment</comments>
      <pubDate>Wed, 13 Feb 2013 17:42:26 +0900</pubDate>
    </item>
    <item>
      <title>/bin/bash^M: bad interpreter: no such file or directory</title>
      <link>https://zzimme.tistory.com/1548</link>
      <description>&lt;p&gt;&lt;b&gt;/bin/bash^M: bad interpreter: no such file or directory&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;dos에서 작성한 쉘을 그대로 unix시스템에서 실행하고자 할때 fileformat이 달라서 나는 에러&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래와 같이 간단하게 해결 (^M제거 , ^M은 ctrl-v+m)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(203, 203, 203); background-color: rgb(255, 255, 255); padding: 10px;&quot;&gt;&lt;p&gt;1. %s/^M//g (vi)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. dos2unix filename (command)&lt;/p&gt;&lt;p&gt;3. set fileformat=unix (vi)&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Know/Linux</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1548</guid>
      <comments>https://zzimme.tistory.com/1548#entry1548comment</comments>
      <pubDate>Wed, 13 Feb 2013 11:14:00 +0900</pubDate>
    </item>
    <item>
      <title>드디어 찾아내다. 만화방</title>
      <link>https://zzimme.tistory.com/1541</link>
      <description>&lt;P&gt;염창동으로 이사온지도 대략 4,5년이 지난것 같다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;워낙 애니를 좋아하는 지라 약수에 살던적엔 &lt;/P&gt;
&lt;P&gt;퇴근할 때, 혹은 주말에&lt;/P&gt;
&lt;P&gt;만화책을 바리바리 싸들고 침대에 누워 룰루랄라 주구장창 만화만 보던 때가 있었다.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000; FONT-SIZE: 24pt&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000; FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000; FONT-SIZE: 24pt&quot;&gt;&lt;SPAN style=&quot;BACKGROUND-COLOR: #9aa5ea; COLOR: #000000; FONT-SIZE: 9pt&quot;&gt;하지만 아쉽게도 염창동엔 만화방이 없다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000; FONT-SIZE: 24pt&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000; FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;검색을 해도 안나오고 , 출퇴근시 주변을 둘러보아도 눈에 잘 띄지가 않는다 ㅡㅡ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;그러다가 몇년전 발견한 곳.&lt;/P&gt;
&lt;P&gt;나이아가라 호텔 옆 상가건물 지하 1층.&lt;/P&gt;
&lt;P&gt;거의 유일무이한 곳이라 만원씩 넣어두고 주구장창 빌려보았다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;하지만 1년정도 후 어느날.&lt;/P&gt;
&lt;P&gt;그가게는&amp;nbsp;문을 닫았다. &lt;/P&gt;
&lt;P&gt;아직 예치금이 7000원정도 남았는데.. 연락도 없이 문을 닫았다.. ㅡㅡ;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;하여.. 한동안 포기하고 지내다가&amp;nbsp;어제&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN style=&quot;COLOR: #ff0000; FONT-SIZE: 24pt&quot;&gt;&lt;FONT color=#333333&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;발견한곳.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 534px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/196EA43B5061168103&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F196EA43B5061168103&quot; width=&quot;534&quot; height=&quot;418&quot; filename=&quot;print.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center; FLOAT: none; CLEAR: none&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;강서보건소 맞은편 시장골목으로 대략 50미터 정도 들어가다보면&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;왼편에 &lt;U&gt;&lt;STRONG&gt;만화속 세상&lt;/STRONG&gt;&lt;/U&gt;이라는 곳이 보인다.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;간판은 좀 허름하다 싶을수도 있으나, 들어가보면 꽤 넓다!&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;혹 옛날 책들만 있는게 아닐까해서&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;들어가자마자 나루토,블리치,크게휘두르며,원피스 등등 조아라하는 만화들의 신간들을 찾아보았다.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;다있다!!! 다있어!!! ㅋㅋ &lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;신간도 많고, 테이블들도 많다.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;라면도 끓여주는듯하다.!!!&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;동네에 이런곳이 있으면 왠지 안심이 되고 살만한 동네라는 느낌이 온다.&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;예치금 만원 바로 걸어주고 6권을 빌려 나왔다. &lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;(대여기간도 2박3일!)&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;자주 애용해주겠어!! ㅋ&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; FLOAT: none; CLEAR: none&quot;&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <category>Its Life</category>
      <category>만화방</category>
      <category>염창동</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1541</guid>
      <comments>https://zzimme.tistory.com/1541#entry1541comment</comments>
      <pubDate>Tue, 25 Sep 2012 11:36:45 +0900</pubDate>
    </item>
    <item>
      <title>2012.09.20</title>
      <link>https://zzimme.tistory.com/1540</link>
      <description>&lt;P&gt;iOS6가 발표된날.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;난 블로그를 티스토리로 이주했다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;기존에 쓰던 호스팅에 트래픽 제한에 걸려버려서, 큰맘먹고 이주완료&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;그동안 페이스북,트위터등에 밀려 그냥 방치하고 있던 블로그인데.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이제 조금씩 이뽀해줘야겠다. 토닥토닥.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;시즌도 다가오고.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;아픈허리는 나을생각을 안하니.. 패팅 사진이나 보면서 위안삼으련다 ;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center; FLOAT: none; CLEAR: none&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 532px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1135B449505ADA760F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F1135B449505ADA760F&quot; width=&quot;532&quot; height=&quot;786&quot; filename=&quot;909c624f-0fe0-40d3-b348-a7ae601c7ed3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;이 패딩 모델번호 아시는 분은 댓글로 Plz.. ㅡㅡ;&lt;/P&gt;</description>
      <category>Its Life</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1540</guid>
      <comments>https://zzimme.tistory.com/1540#entry1540comment</comments>
      <pubDate>Thu, 20 Sep 2012 17:58:00 +0900</pubDate>
    </item>
    <item>
      <title>웹 캐스팅 기초</title>
      <link>https://zzimme.tistory.com/1537</link>
      <description>&lt;P&gt;웹 캐스팅 3가지 방법&lt;BR&gt;&lt;BR&gt;프로그래시브 다운로드 (Progressive Download)&lt;BR&gt;&amp;nbsp;- Live가 아닌 VOD시장에서 각광&lt;BR&gt;&amp;nbsp;- 점진적으로 사용자 PC에 다운로드하여 재생. Seeking 불가 (Vimeo)&lt;BR&gt;&lt;BR&gt;HTTP Pseudo-Streaming&lt;BR&gt;&amp;nbsp;- Progressive 다운로드의 단점을 보완&lt;BR&gt;&amp;nbsp;- Seeking이 가능.Bandwidth 조절&lt;BR&gt;&amp;nbsp;- Youtube&lt;BR&gt;&amp;nbsp;- 라이브 중계가 어렵다. 보안상 문제가 있다 (RTMP 프로토콜 보다 훔치기 쉽다)&lt;BR&gt;&amp;nbsp;- 여전히 bandwidth 효율성이 떨어진다. &lt;BR&gt;&lt;BR&gt;RTMP/RTSP 스트리밍 (RTMP/RTSP Streaming)&lt;BR&gt;&amp;nbsp; - 라이브 중계가 가능. (이게 제일 메리트 있으나.. 별로)&lt;BR&gt;&amp;nbsp; - 다운로드가 없어 보안에 문제가 없음.&lt;BR&gt;&amp;nbsp; - bandwidth, seeking이 용이.&lt;BR&gt;&amp;nbsp; - FMS, WMS&lt;BR&gt;&amp;nbsp; - 기본적으로 서로다른 bitrate로 인코딩된 파일을 3~4개 정도 올려놓음&lt;BR&gt;&amp;nbsp; - seeking시 이전것은 삭제됨. 슈도스트리밍은 그대로 남음.(바이너리로 플레이어에서 처리하면 안그럼)&lt;BR&gt;&amp;nbsp; - 슈도 스트리밍은 플레이어 버퍼에서 처리하기 때문에 보안상 문제가 안생김.&lt;BR&gt;&amp;nbsp; - 실시간, bandwidth는 탐낼만함.&lt;BR&gt;&lt;BR&gt;어댑티브 HTTP 스트리밍 (Adaptive HTTP Streaming)&lt;BR&gt;&amp;nbsp; - 비교적 최근에 나온 기술.&lt;BR&gt;&amp;nbsp; - HD화질 전송 모바일환경의 needs&lt;BR&gt;&amp;nbsp; - 모바일 기기는 이동중 bandwidth가 계속 변해 스트리밍 하기가 어려움&lt;BR&gt;&amp;nbsp; - Move Networks 사의 특허 기술인 bandwidth 환경을 스스로 인지하여 그에 맞는 스트리밍을 자동으로 보내준다는 의미.&lt;BR&gt;&amp;nbsp; - IIS Smooth Streaming(MS), HTTP Live Streaming (APPLE iOS), Http Dynamic Streaming (Adobe)&lt;BR&gt;&amp;nbsp; - 프로그레시브 + RTMP 장점 혼합&lt;BR&gt;&amp;nbsp; - 미디어를 몇초단위로 조각내어 요청시 해당 초에 인접한 chunk를 내려주는 방식&lt;BR&gt;&amp;nbsp; - 미디어는 여러 bitrate로 인코딩된 파일&lt;BR&gt;&amp;nbsp; - bandwidth상황,cpu상황등을 체크하여 그에 맞는 화질,음질을 내려주는 방식&lt;BR&gt;&amp;nbsp; - 아직 표준이 없음. 벤더마다 다름&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;</description>
      <category>Know/Media</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1537</guid>
      <comments>https://zzimme.tistory.com/1537#entry1537comment</comments>
      <pubDate>Tue, 28 Feb 2012 21:45:32 +0900</pubDate>
    </item>
    <item>
      <title>m2 eclipse 버전업시에 에러 ignore</title>
      <link>https://zzimme.tistory.com/1528</link>
      <description>&lt;P&gt;아래의 내용을 &amp;lt;build&amp;gt; 태그 사이에 입력&lt;/P&gt;
&lt;DIV style=&quot;PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e4e4e4; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px&quot;&gt;&amp;lt;pluginManagement&amp;gt;&lt;BR&gt;&amp;lt;plugins&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!-- Ignore/Execute plugin execution --&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;lt;plugin&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;groupId&amp;gt;org.eclipse.m2e&amp;lt;/groupId&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;artifactId&amp;gt;lifecycle-mapping&amp;lt;/artifactId&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;version&amp;gt;1.0.0&amp;lt;/version&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;configuration&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;lifecycleMappingMetadata&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;pluginExecutions&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;!-- copy-dependency plugin --&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;pluginExecution&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;pluginExecutionFilter&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;artifactId&amp;gt;maven-dependency-plugin&amp;lt;/artifactId&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;versionRange&amp;gt;[1.0.0,)&amp;lt;/versionRange&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;goals&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;goal&amp;gt;copy-dependencies&amp;lt;/goal&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/goals&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/pluginExecutionFilter&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;action&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;ignore /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/action&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/pluginExecution&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/pluginExecutions&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/lifecycleMappingMetadata&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/configuration&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/plugin&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/plugins&amp;gt;&amp;lt;/pluginManagement&amp;gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;&lt;CODE&gt;maven-resources-plugin prior to 2.4 is not supported by m2e. Use maven-resources-plugin version 2.4 or later.&lt;/CODE&gt;&lt;/P&gt;에러시 아래와 같이 처리&lt;BR&gt;&lt;BR&gt;&lt;SPAN class=pln&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;plugin&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;groupId&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;org&lt;/SPAN&gt;&lt;SPAN class=pun&gt;.&lt;/SPAN&gt;&lt;SPAN class=pln&gt;apache&lt;/SPAN&gt;&lt;SPAN class=pun&gt;.&lt;/SPAN&gt;&lt;SPAN class=pln&gt;maven&lt;/SPAN&gt;&lt;SPAN class=pun&gt;.&lt;/SPAN&gt;&lt;SPAN class=pln&gt;plugins&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=pln&gt;groupId&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;artifactId&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;maven&lt;/SPAN&gt;&lt;SPAN class=pun&gt;-&lt;/SPAN&gt;&lt;SPAN class=pln&gt;resources&lt;/SPAN&gt;&lt;SPAN class=pun&gt;-&lt;/SPAN&gt;&lt;SPAN class=pln&gt;plugin&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=pln&gt;artifactId&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;version&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=lit&gt;2.4&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=pln&gt;version&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;executions&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;!--&lt;/SPAN&gt;&lt;SPAN class=pln&gt; had a process goal here that i removed because it was not compatible &lt;/SPAN&gt;&lt;SPAN class=pun&gt;--&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=pln&gt;executions&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=pln&gt;plugin&lt;/SPAN&gt;&lt;SPAN class=pun&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=pln&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;</description>
      <category>Know/Java</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1528</guid>
      <comments>https://zzimme.tistory.com/1528#entry1528comment</comments>
      <pubDate>Fri, 24 Feb 2012 22:37:25 +0900</pubDate>
    </item>
    <item>
      <title>MySql Maximum table  size</title>
      <link>https://zzimme.tistory.com/1526</link>
      <description>&lt;P&gt;mysql의 테이블 사이즈 제한은 OS의 파일사이즈 제한에 따라 결정되지만,&lt;BR&gt;mysql innodb 엔진을 사용할 경우 최대 64TB까지 테이블스페이스를 늘릴 수 있다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE border=1&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH&gt;Operating System&lt;/TH&gt;
&lt;TH&gt;File-size Limit&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Win32 w/ FAT/FAT32&lt;/TD&gt;
&lt;TD&gt;2GB/4GB&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Win32 w/ NTFS&lt;/TD&gt;
&lt;TD&gt;2TB (possibly larger)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Linux 2.2-Intel 32-bit&lt;/TD&gt;
&lt;TD&gt;2GB (LFS: 4GB)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Linux 2.4+&lt;/TD&gt;
&lt;TD&gt;(using ext3 file system) 4TB&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Solaris 9/10&lt;/TD&gt;
&lt;TD&gt;16TB&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;MacOS X w/ HFS+&lt;/TD&gt;
&lt;TD&gt;2TB&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;NetWare w/NSS file system&lt;/TD&gt;
&lt;TD&gt;8TB&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;자세한 내용은 아래의 URL을 참조&lt;BR&gt;&lt;BR&gt;&lt;A href=&quot;http://dev.mysql.com/doc/refman/5.1/en/full-table.html&quot;&gt;http://dev.mysql.com/doc/refman/5.1/en/full-table.html&lt;/A&gt;&lt;BR&gt;&lt;A href=&quot;http://dev.mysql.com/doc/refman/5.1/en/innodb-data-log-reconfiguration.html&quot;&gt;http://dev.mysql.com/doc/refman/5.1/en/innodb-data-log-reconfiguration.html&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;</description>
      <category>Know/DATABASE</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1526</guid>
      <comments>https://zzimme.tistory.com/1526#entry1526comment</comments>
      <pubDate>Wed, 9 Mar 2011 15:51:41 +0900</pubDate>
    </item>
    <item>
      <title>MYSQL Event Scheduler</title>
      <link>https://zzimme.tistory.com/1524</link>
      <description>MYSQL 5.1.6 버전부터 Event Scheduler 기능을 제공한다.&lt;BR&gt;&lt;BR&gt;이벤트의 실행과 스케쥴링을 관리하며, 스케쥴에 따라 일련의 작업들을 실행시킨다.&lt;BR&gt;MSSQL의 JOB 스케쥴러 같은 기능이라 생각하면 될것 같다. 메뉴얼에는 cronjob과 같은 기능이라고 소개되어 있다.&lt;BR&gt;&lt;BR&gt;기능면으로는 아직 부족한 부분이 많이 보이지만, 이전버전보다 확실히 편리한 면이 많아진건 사실.&lt;BR&gt;&lt;BR&gt;Event scheduler thread의 상태를 보려면 show processlist 로 확인할 수 있다.&lt;BR&gt;기능을 사용하려면 global변수인 event_scheduler 시스템환경 변수를 on으로 설정하여야 가능하다.&lt;BR&gt;
&lt;DIV style=&quot;PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e4e4e4; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px&quot;&gt;&lt;BR&gt;CREATE&lt;BR&gt;&amp;nbsp; &amp;nbsp; [DEFINER = { &lt;EM class=replaceable&gt;&lt;CODE&gt;user&lt;/CODE&gt;&lt;/EM&gt; | CURRENT_USER }]&lt;BR&gt;&amp;nbsp; &amp;nbsp; EVENT&lt;BR&gt;&amp;nbsp; &amp;nbsp; [IF NOT EXISTS]&lt;BR&gt;&amp;nbsp; &amp;nbsp; &lt;EM class=replaceable&gt;&lt;CODE&gt;event_name&lt;/CODE&gt;&lt;/EM&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; ON SCHEDULE &lt;EM class=replaceable&gt;&lt;CODE&gt;schedule&lt;/CODE&gt;&lt;/EM&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; [ON COMPLETION [NOT] PRESERVE]&lt;BR&gt;&amp;nbsp; &amp;nbsp; [ENABLE | DISABLE | DISABLE ON SLAVE]&lt;BR&gt;&amp;nbsp; &amp;nbsp; [COMMENT '&lt;EM class=replaceable&gt;&lt;CODE&gt;comment&lt;/CODE&gt;&lt;/EM&gt;']&lt;BR&gt;&amp;nbsp; &amp;nbsp; DO &lt;EM class=replaceable&gt;&lt;CODE&gt;event_body&lt;/CODE&gt;&lt;/EM&gt;;&lt;BR&gt;&lt;BR&gt;&lt;EM class=replaceable&gt;&lt;CODE&gt;schedule&lt;/CODE&gt;&lt;/EM&gt;:&lt;BR&gt;&amp;nbsp; &amp;nbsp; AT &lt;EM class=replaceable&gt;&lt;CODE&gt;timestamp&lt;/CODE&gt;&lt;/EM&gt; [+ INTERVAL &lt;EM class=replaceable&gt;&lt;CODE&gt;interval&lt;/CODE&gt;&lt;/EM&gt;] ...&lt;BR&gt;&amp;nbsp; | EVERY &lt;EM class=replaceable&gt;&lt;CODE&gt;interval&lt;/CODE&gt;&lt;/EM&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; [STARTS &lt;EM class=replaceable&gt;&lt;CODE&gt;timestamp&lt;/CODE&gt;&lt;/EM&gt; [+ INTERVAL interval] ...]&lt;BR&gt;&amp;nbsp; &amp;nbsp; [ENDS &lt;EM class=replaceable&gt;&lt;CODE&gt;timestamp&lt;/CODE&gt;&lt;/EM&gt; [+ INTERVAL interval] ...]&lt;BR&gt;&lt;BR&gt;&lt;EM class=replaceable&gt;&lt;CODE&gt;interval&lt;/CODE&gt;&lt;/EM&gt;:&lt;BR&gt;&amp;nbsp; &amp;nbsp; &lt;EM class=replaceable&gt;&lt;CODE&gt;quantity&lt;/CODE&gt;&lt;/EM&gt; {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;좀더 자세한 사항은 아래의 dev사이트에서&lt;BR&gt;&lt;A href=&quot;http://dev.mysql.com/doc/refman/5.1/en/events.html&quot;&gt;http://dev.mysql.com/doc/refman/5.1/en/events.html&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;</description>
      <category>Know/DATABASE</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1524</guid>
      <comments>https://zzimme.tistory.com/1524#entry1524comment</comments>
      <pubDate>Tue, 8 Feb 2011 12:36:23 +0900</pubDate>
    </item>
    <item>
      <title>Eclipse ERD Plugin</title>
      <link>https://zzimme.tistory.com/1522</link>
      <description>&lt;P&gt;ERD 무료 TOOL을 찾아보던 중, Eclipse 플러그인이 존재하는 것을 알았다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;http://download.eclipse.org/tools/gef/updates&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>
      <category>Know/Java</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1522</guid>
      <comments>https://zzimme.tistory.com/1522#entry1522comment</comments>
      <pubDate>Wed, 12 Jan 2011 11:14:12 +0900</pubDate>
    </item>
    <item>
      <title>206 Patial Content</title>
      <link>https://zzimme.tistory.com/1521</link>
      <description>&lt;H3&gt;&lt;A href=&quot;http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html&quot;&gt;&lt;FONT size=2 face=&quot;'Gulim', Sans-serif&quot;&gt;http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html&lt;/FONT&gt;&lt;/A&gt;&lt;A id=sec10.2.7&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;10.2.7&lt;/A&gt; 206 Partial Content&lt;/H3&gt;
&lt;P&gt;The server has fulfilled the partial GET request for the resource. The request MUST have included a Range header field (section 14.35) indicating the desired range, and MAY have included an If-Range header field (section &lt;A href=&quot;rfc2616-sec14.html#sec14.27&quot; rel=xref&gt;14.27&lt;/A&gt;) to make the request conditional. &lt;BR&gt;&lt;BR&gt;서버측은 리소스의 부분적인 GET 요청에 대해 수행되어져야 한다. 요청은 반드시 바라는 범위를 나타내는 Range 헤더필드를 포함해야한다. 그리고 조건부 요청을 만드는 If-Range 헤더 필드를 포함하여도 무방하다.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e4e4e4; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px&quot;&gt;( 응답헤더 예제)&lt;BR&gt;&lt;BR&gt;HTTP/1.1 206 Partial Content&lt;BR&gt;Server: apache&lt;BR&gt;Date: Tue, 07 Dec 2010 03:50:20 GMT&lt;BR&gt;Content-Type: text/plain&lt;BR&gt;Connection: keep-alive&lt;BR&gt;P3P: CP='NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE'&lt;BR&gt;Last-Modified: Tue, 29 Jun 2010 01:15:33 GMT&lt;BR&gt;ETag: &quot;15800fd-470452-4c294935&quot;&lt;BR&gt;Accept-Ranges: bytes&lt;BR&gt;Content-Length: 4653137&lt;BR&gt;Content-Range: bytes 1025-4654161/4654162&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;The response MUST include the following header fields: &lt;BR&gt;응답은 반드시 아래의 헤더필드들을 포함하여야 한다.&lt;/P&gt;&lt;PRE&gt;      - Either a Content-Range header field (section 14.16) indicating
        the range included with this response, or a multipart/byteranges
        Content-Type including Content-Range fields for each part. If a
        Content-Length header field is present in the response, its
        value MUST match the actual number of OCTETs transmitted in the
        message-body.&lt;BR&gt;	응답을 포함한 범위를 나타내는 Content-Range 필드나, 각 부분을 위한 Content-Range 필드를 &lt;BR&gt;	포함한 multipart/byterange Content-Type 필드.&lt;BR&gt;	만약 Content-Length 필드가 응답에 표현되었다면 그것은 message-body안에 전송된&lt;BR&gt;	실제 바이트의 수와 일치되어져야 한다.
&lt;/PRE&gt;&lt;PRE&gt;      - Date&lt;BR&gt;	날짜
&lt;/PRE&gt;&lt;PRE&gt;      - ETag and/or Content-Location, if the header would have been sent
        in a 200 response to the same request&lt;BR&gt;	만약 같은 요청에 대한 200 응답코드안에 보내진다면, ETag 혹은 Content-Location를 &lt;BR&gt;	포함하여야한다.
&lt;/PRE&gt;&lt;PRE&gt;      - Expires, Cache-Control, and/or Vary, if the field-value might
        differ from that sent in any previous response for the same
        variant
&lt;/PRE&gt;
&lt;P&gt;If the 206 response is the result of an If-Range request that used a strong cache validator (see section 13.3.3), the response SHOULD NOT include other entity-headers. If the response is the result of an If-Range request that used a weak validator, the response MUST NOT include other entity-headers; this prevents inconsistencies between cached entity-bodies and updated headers. Otherwise, the response MUST include all of the entity-headers that would have been returned with a 200 (OK) response to the same request. &lt;/P&gt;
&lt;P&gt;A cache MUST NOT combine a 206 response with other previously cached content if the ETag or Last-Modified headers do not match exactly, see &lt;A href=&quot;rfc2616-sec13.html#sec13.5.4&quot; rel=xref&gt;13.5.4&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;A cache that does not support the Range and Content-Range headers MUST NOT cache 206 (Partial) responses. &lt;/P&gt;</description>
      <category>Know/Media</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1521</guid>
      <comments>https://zzimme.tistory.com/1521#entry1521comment</comments>
      <pubDate>Tue, 7 Dec 2010 14:31:35 +0900</pubDate>
    </item>
    <item>
      <title>Maven local Repository에 custom jar 추가하기</title>
      <link>https://zzimme.tistory.com/1516</link>
      <description>&lt;P&gt;Maven 사용시 customize 한 jar를 사용할 경우 local repository에 추가하는 방법이다&lt;BR&gt;&lt;FONT face=&quot;Courier New&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;/P&gt;
&lt;DIV style=&quot;PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e4e4e4; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px&quot;&gt;사용법&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#ff0000&gt;mvn install:install-file -Dfile=추가할 jar파일 경로 -DgroupId=groupid -DartifactId=artifactid -Dversion=version &amp;nbsp;-Dpackaging=jar&lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;br /&gt;
&lt;br /&gt;</description>
      <category>Know/Java</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1516</guid>
      <comments>https://zzimme.tistory.com/1516#entry1516comment</comments>
      <pubDate>Thu, 7 Oct 2010 14:36:25 +0900</pubDate>
    </item>
    <item>
      <title>레벤톤옐로</title>
      <link>https://zzimme.tistory.com/1515</link>
      <description>&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/12345A35505AAE1E18&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F12345A35505AAE1E18&quot; width=&quot;760&quot; height=&quot;567&quot; alt=&quot;사용자 삽입 이미지&quot;/&gt;&lt;/div&gt;</description>
      <category>Its Life</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1515</guid>
      <comments>https://zzimme.tistory.com/1515#entry1515comment</comments>
      <pubDate>Mon, 27 Sep 2010 11:27:31 +0900</pubDate>
    </item>
    <item>
      <title>Planet Earth Infantry Plaid Snowboard Jacket White &amp;amp; Boulder Pants White Plaid - Mens</title>
      <link>https://zzimme.tistory.com/1513</link>
      <description>&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/15390A36505AAE0F38&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F15390A36505AAE0F38&quot; width=&quot;600&quot; height=&quot;600&quot; alt=&quot;사용자 삽입 이미지&quot;/&gt;&lt;/div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/20551646505AAE0E35&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F20551646505AAE0E35&quot; width=&quot;275&quot; height=&quot;509&quot; alt=&quot;사용자 삽입 이미지&quot;/&gt;&lt;/div&gt;
 
&lt;DIV&gt;모델 키:180 몸무게 75&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/12364833505AAE0F18&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F12364833505AAE0F18&quot; width=&quot;400&quot; height=&quot;225&quot; alt=&quot;사용자 삽입 이미지&quot;/&gt;&lt;/div&gt;
167/64&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1427C835505AAE0E23&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F1427C835505AAE0E23&quot; width=&quot;596&quot; height=&quot;447&quot; alt=&quot;사용자 삽입 이미지&quot;/&gt;&lt;/div&gt;
&amp;nbsp;Jacket: Planet Earth Infantry Plaid Snowboard Jacket White - Mens&lt;BR&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/203F5843505AAE0E37&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F203F5843505AAE0E37&quot; width=&quot;603&quot; height=&quot;451&quot; alt=&quot;사용자 삽입 이미지&quot;/&gt;&lt;/div&gt;
pants: Planet Earth Boulder Pants White Plaid - Mens&lt;/DIV&gt;</description>
      <category>Its Life</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1513</guid>
      <comments>https://zzimme.tistory.com/1513#entry1513comment</comments>
      <pubDate>Thu, 29 Oct 2009 23:31:34 +0900</pubDate>
    </item>
    <item>
      <title>Hash</title>
      <link>https://zzimme.tistory.com/1510</link>
      <description>&lt;SPAN class=std style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN class=std style=&quot;FONT-SIZE: 9pt&quot;&gt;
&lt;DIV style=&quot;TEXT-ALIGN: left&quot;&gt;&lt;SPAN class=std style=&quot;FONT-SIZE: 9pt&quot;&gt;
&lt;P class=discriptsub align=left&gt;&lt;SPAN class=std style=&quot;FONT-SIZE: 9pt&quot;&gt;출처: &lt;A href=&quot;http://internet512.chonbuk.ac.kr/datastructure/hash/hash1.htm&quot;&gt;http://internet512.chonbuk.ac.kr/datastructure/hash/hash1.htm&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Hashing은 하나의 &lt;FONT color=red&gt;문자열을 원래의 것을 상징하는 더 짧은 길이의 값이나 키로 변환하는 것&lt;/FONT&gt;이다. 짧은 해시 키를 사용하여 항목을 찾으면 &lt;FONT color=red&gt;원래의 값을 이용하여 찾는 것보다 더 빠르기 때문&lt;/FONT&gt;에, 해싱은 데이터베이스 내의 항목들을 색인하고 검색하는데 사용된다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=discriptsub align=left&gt;&lt;SPAN class=std style=&quot;FONT-SIZE: 9pt&quot;&gt;또한 해싱에 의해 정렬된 이름들 각각은 데이터베이스 내에서 개인들 데이터의 키가 될 수 있다. 데이터베이스 검색 수법은 일치하는 것이 먼저 발견될 때까지 각 이름들을 글자단위로 확인하기 시작해야만 한다. 그러나, 만약 이름들 각각이 해시된다면, 각 이름별로 4자리의 고유한 키를 생성하는 것이 가능해진다. 예를 들면 다음과 같다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=discriptsub align=left&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=276 height=109&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=discriptsub align=left&gt;&lt;SPAN class=std&gt;Abernathy, Sara &lt;BR&gt;Epperdingle, Roscoe &lt;BR&gt;Moore, Wilfred &lt;BR&gt;Smith, David &lt;BR&gt;(그리고 더 많은 수의 데이터가 알파벳 순으로 정렬되어 있다).&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/TD&gt;
&lt;TD width=276 height=109&gt;
&lt;P class=discriptsub align=left&gt;&lt;SPAN class=std&gt;&lt;FONT color=#ff3300&gt;&amp;nbsp; &amp;nbsp;7864&lt;/FONT&gt; Abernathy, Sara&lt;BR&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#ff3300&gt;9802&lt;/FONT&gt; Epperdingle, Roscoe&lt;BR&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#ff3300&gt;1990&lt;/FONT&gt; Moore, Wilfred &lt;BR&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color=#ff3300&gt;8822&lt;/FONT&gt; Smith, David &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (기타 등등)&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=discriptsub align=left&gt;&lt;SPAN class=std style=&quot;FONT-SIZE: 9pt&quot;&gt;어떤 이름을 찾는 작업은 먼저 해시 값을 계산하고, 그 다음에 그 값을 사용하여 일치여부를 비교하는 작업으로 구성된다. 일반적으로 이렇게 하는 것은, 각 문자가 &lt;FONT color=red&gt;26개의 경우를 갖는 예측할 수 없는 값의 길이&lt;/FONT&gt;에서 찾는 것보다, 각각이 오직 &lt;FONT color=red&gt;9개의 경우를 갖는 네 자리 수&lt;/FONT&gt;에서 일치하는 것을 찾는 것이 더 빠르다&lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;해싱 알고리즘을 해시 함수라고 부른다.&lt;/SPAN&gt;&amp;nbsp;해싱 함수(hashing function) h(k)는 어떤 키 k에 대한 테이블 주소(table address)를 계산하기 위한 방법으로, 주어진 키 값으로부터 레코드가 저장되어 있는 주소를 산출해 낼 수 있는 수식을 말한다. &lt;/P&gt;
&lt;P class=discriptsub&gt;&lt;SPAN class=std style=&quot;FONT-SIZE: 9pt&quot;&gt;해싱은 빠른 속도의 데이터 검색 외에도, 전자서명을 암호화하고 복호화하는 데에도 사용된다. 전자서명은 해시 함수를 이용하여 변환된 다음, 해시 값(이를 요약 메시지라고 부른다)과 전자서명이 별도로 전송된다. 수신자는 송신자가 사용한 해시함수와 같은 것을 사용하여, 서명으로부터 요약 메시지를 뽑아내어 그것을 이미 수신한 요약 메시지와 비교한다. 그 비교 결과는 같아야만 전자서명이 유효한 것이다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=discriptsub&gt;&lt;SPAN class=std style=&quot;FONT-SIZE: 9pt&quot;&gt;해시 함수는 원래의 값이나 키를 색인하는데 사용되며, 그 값이 관련된 데이터가 검색될 때마다 다시 사용된다. 그러나, 해싱은 항상 한 쪽 방향으로만 연산된다. 따라서, 해시된 값을 분석함으로써 해시 함수를 추출해내는 역방향 공학은 필요가 없다. 사실, 이상적인 해시함수는 그러한 분석에 의해 추론할 수 없어야 한다. 또한, 우수한 해시 함수는 서로 다른 두 개의 입력에 대해, 동일한 해시 값을 생산해서는 안된다. 만약 그렇게 되면, 충돌이 생긴다. 충돌 위험성이 매우 적은 해시 함수라야 훌륭한 해시 함수로 평가된다.&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=discriptsub&gt;&lt;SPAN class=std&gt;데이터베이스 저장이나 검색에 잘 적용되는 해시 함수는 오히려 암호화나 에러검출 목적으로는 잘 듣지 않을 수도 있다. 암호화에 사용되는 잘 알려진 해시 함수들이 몇 개 있다. 이러한 것들에는 전자서명을 요약 메시지라고 불리는 더 짧은 값으로 바꾸는 데 사용되는 요약 메시지 해시 함수 MD2, MD4, MD5 등과, 더 큰 요약 메시지 (60 비트)를 만드는 표준 알고리즘인 SHA (Secure Hash Algorithm) 등이 포함된다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;</description>
      <category>Know/Java</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1510</guid>
      <comments>https://zzimme.tistory.com/1510#entry1510comment</comments>
      <pubDate>Fri, 14 Aug 2009 11:18:33 +0900</pubDate>
    </item>
    <item>
      <title>빵집</title>
      <link>https://zzimme.tistory.com/1508</link>
      <description>&lt;P&gt;Set SH = Server.CreateObject(&quot;wscript.shell&quot;)&lt;BR&gt;Set fs = server.createobject(&quot;Scripting.FileSystemObject&quot;)&lt;/P&gt;
&lt;P&gt;Dim SID&lt;/P&gt;
&lt;P&gt;'스크립트 파일이 중복이 발생할 경우를 배제하기 위해 SessionId로 파일명을 사용&lt;BR&gt;SID = Session.sessionId&lt;/P&gt;
&lt;P&gt;fs.CreateTextFile &quot;C:\폴더\&quot; &amp;amp; SID &amp;amp; &quot;.bzs&quot;, true&lt;BR&gt;Set objFile = fs.opentextfile(&quot;C:\폴더\&quot; &amp;amp; SID &amp;amp; &quot;.bzs&quot;, 8)&lt;BR&gt;objFile.WriteLine(&quot;;BreadZip Script Version 1&quot;)&lt;BR&gt;objFile.WriteLine(&quot;Mode=Extract&quot;)&lt;BR&gt;objFile.WriteLine(&quot;ArchiveFile=&quot; &amp;amp; 경로 및 파일이름)&lt;BR&gt;objFile.WriteLine(&quot;Extract.Path=&quot; &amp;amp; 압축풀 경로)&lt;/P&gt;
&lt;P&gt;'ASP 파일은 Windows에서 실행을 하게 되면 소스만 보이고 정작 원하는 작업은&lt;BR&gt;'되지 않습니다. VBS 파일로 삭제하는 소스를 만들어 두시면, 압축을 푼 후에 원본&lt;BR&gt;'파일을 삭제할 수 있습니다.&lt;BR&gt;objFile.WriteLine&quot;Atfer.Run=&quot; &amp;amp; 쓰레기 파일 삭제할 VBS 파일 경로) &lt;/P&gt;
&lt;P&gt;objFile.close&lt;/P&gt;
&lt;P&gt;Sh.run &quot;C:\폴더\&quot; &amp;amp; SID &amp;amp; &quot;.bzs&quot;&lt;/P&gt;
&lt;br /&gt;</description>
      <category>Know/ASP</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1508</guid>
      <comments>https://zzimme.tistory.com/1508#entry1508comment</comments>
      <pubDate>Fri, 24 Jul 2009 15:07:09 +0900</pubDate>
    </item>
    <item>
      <title>Apache Tomcat 6.0 - Virtual Hosting and Tomcat</title>
      <link>https://zzimme.tistory.com/1505</link>
      <description>&lt;H1&gt;&lt;FONT size=2&gt;[출처] &lt;A href=&quot;http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html&quot;&gt;http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html&lt;/A&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;Apache Tomcat 6.0&lt;/H1&gt;
&lt;H2&gt;Virtual Hosting and Tomcat&lt;/H2&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#525d76&gt;&lt;FONT face=arial,helvetica.sanserif color=#ffffff&gt;&lt;A name=Assumptions&gt;&lt;STRONG&gt;Assumptions&lt;/STRONG&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;For the sake of this how-to, assume you have a development host with two host names, &lt;CODE&gt;ren&lt;/CODE&gt; and &lt;CODE&gt;stimpy&lt;/CODE&gt;. Let's also assume one instance of Tomcat running, so &lt;CODE&gt;$CATALINA_HOME&lt;/CODE&gt; refers to wherever it's installed, perhaps &lt;CODE&gt;/usr/local/tomcat&lt;/CODE&gt;. &lt;/P&gt;
&lt;P&gt;Also, this how-to uses Unix-style path separators and commands; if you're on Windows modify accordingly. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#525d76&gt;&lt;FONT face=arial,helvetica.sanserif color=#ffffff&gt;&lt;A name=server.xml&gt;&lt;STRONG&gt;server.xml&lt;/STRONG&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;At the simplest, edit the &lt;A href=&quot;http://tomcat.apache.org/tomcat-6.0-doc/config/engine.html&quot;&gt;Engine&lt;/A&gt; portion of your &lt;CODE&gt;server.xml&lt;/CODE&gt; file to look like this: &lt;/P&gt;
&lt;DIV align=left&gt;
&lt;TABLE cellSpacing=4 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#ffffff height=1&gt;&lt;PRE&gt;&amp;lt;Engine name=&quot;Catalina&quot; defaultHost=&quot;ren&quot;&amp;gt;
    &amp;lt;Host name=&quot;ren&quot;    appBase=&quot;renapps&quot;/&amp;gt;
    &amp;lt;Host name=&quot;stimpy&quot; appBase=&quot;stimpyapps&quot;/&amp;gt;
&amp;lt;/Engine&amp;gt;
    &lt;/PRE&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;Note that the directory structures under the appBase for each host should not overlap each other. &lt;/P&gt;
&lt;P&gt;Consult the configuration documentation for other attributes of the &lt;A href=&quot;http://tomcat.apache.org/tomcat-6.0-doc/config/engine.html&quot;&gt;Engine&lt;/A&gt; and &lt;A href=&quot;http://tomcat.apache.org/tomcat-6.0-doc/config/host.html&quot;&gt;Host&lt;/A&gt; elements. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#525d76&gt;&lt;FONT face=arial,helvetica.sanserif color=#ffffff&gt;&lt;A name=&quot;Webapps Directory&quot;&gt;&lt;STRONG&gt;Webapps Directory&lt;/STRONG&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Create directories for each of the virtual hosts: &lt;/P&gt;
&lt;DIV align=left&gt;
&lt;TABLE cellSpacing=4 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#ffffff height=1&gt;&lt;PRE&gt;mkdir $CATALINA_HOME/renapps
mkdir $CATALINA_HOME/stimpyapps
    &lt;/PRE&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#525d76&gt;&lt;FONT face=arial,helvetica.sanserif color=#ffffff&gt;&lt;A name=&quot;Configuring Your Contexts&quot;&gt;&lt;STRONG&gt;Configuring Your Contexts&lt;/STRONG&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;BLOCKQUOTE&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#828da6&gt;&lt;FONT face=arial,helvetica.sanserif color=#ffffff&gt;&lt;A name=General&gt;&lt;STRONG&gt;General&lt;/STRONG&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Contexts are normally located underneath the appBase directory. For example, to deploy the &lt;CODE&gt;foobar&lt;/CODE&gt; context as a war file in the &lt;CODE&gt;ren&lt;/CODE&gt; host, use &lt;CODE&gt;$CATALINA_HOME/renapps/foobar.war&lt;/CODE&gt;. Note that the default or ROOT context for &lt;CODE&gt;ren&lt;/CODE&gt; would be deployed as &lt;CODE&gt;$CATALINA_HOME/renapps/ROOT.war&lt;/CODE&gt; (WAR) or &lt;CODE&gt;$CATALINA_HOME/renapps/ROOR&lt;/CODE&gt; (directory). &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE: The &lt;CODE&gt;docBase&lt;/CODE&gt; for a context should never be the same as the &lt;CODE&gt;appBase&lt;/CODE&gt; for a host.&lt;/STRONG&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#828da6&gt;&lt;FONT face=arial,helvetica.sanserif color=#ffffff&gt;&lt;A name=&quot;context.xml - approach #1&quot;&gt;&lt;STRONG&gt;context.xml - approach #1&lt;/STRONG&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Within your Context, create a &lt;CODE&gt;META-INF&lt;/CODE&gt; directory and then place your Context definition in it in a file named &lt;CODE&gt;context.xml&lt;/CODE&gt;. i.e. &lt;CODE&gt;$CATALINA_HOME/renapps/ROOT/META-INF/context.xml&lt;/CODE&gt; This makes deployment easier, particularly if you're distributing a WAR file. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#828da6&gt;&lt;FONT face=arial,helvetica.sanserif color=#ffffff&gt;&lt;A name=&quot;context.xml - approach #2&quot;&gt;&lt;STRONG&gt;context.xml - approach #2&lt;/STRONG&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Create a structure under &lt;CODE&gt;$CATALINA_HOME/conf/Catalina&lt;/CODE&gt; corresponding to your virtual hosts, e.g.: &lt;/P&gt;
&lt;DIV align=left&gt;
&lt;TABLE cellSpacing=4 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#ffffff height=1&gt;&lt;PRE&gt;mkdir $CATALINA_HOME/conf/Catalina/ren
mkdir $CATALINA_HOME/conf/Catalina/stimpy
      &lt;/PRE&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;Note that the ending directory name &quot;Catalina&quot; represents the &lt;CODE&gt;name&lt;/CODE&gt; attribute of the &lt;A href=&quot;http://tomcat.apache.org/tomcat-6.0-doc/config/engine.html&quot;&gt;Engine&lt;/A&gt; element as shown above. &lt;/P&gt;
&lt;P&gt;Now, for your default webapps, add: &lt;/P&gt;
&lt;DIV align=left&gt;
&lt;TABLE cellSpacing=4 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#ffffff height=1&gt;&lt;PRE&gt;$CATALINA_HOME/conf/Catalina/ren/ROOT.xml
$CATALINA_HOME/conf/Catalina/stimpy/ROOT.xml
      &lt;/PRE&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;If you want to use the Tomcat manager webapp for each host, you'll also need to add it here: &lt;/P&gt;
&lt;DIV align=left&gt;
&lt;TABLE cellSpacing=4 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#ffffff height=1&gt;&lt;PRE&gt;cd $CATALINA_HOME/conf/Catalina
cp localhost/manager.xml ren/
cp localhost/manager.xml stimpy/
      &lt;/PRE&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;
&lt;TD width=1 bgColor=#023264 height=1&gt;&lt;IMG height=1 hspace=0 src=&quot;http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif&quot; width=1 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#828da6&gt;&lt;FONT face=arial,helvetica.sanserif color=#ffffff&gt;&lt;A name=&quot;Further Information&quot;&gt;&lt;STRONG&gt;Further Information&lt;/STRONG&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Consult the configuration documentation for other attributes of the &lt;A href=&quot;http://tomcat.apache.org/tomcat-6.0-doc/config/context.html&quot;&gt;Context&lt;/A&gt; element. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <category>Know/WAS</category>
      <category>Tomcat</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1505</guid>
      <comments>https://zzimme.tistory.com/1505#entry1505comment</comments>
      <pubDate>Thu, 9 Jul 2009 10:53:17 +0900</pubDate>
    </item>
    <item>
      <title>Adding .FLV MIME Type in IIS</title>
      <link>https://zzimme.tistory.com/1504</link>
      <description>&lt;TABLE class=post-top&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=bottom&gt;
&lt;DIV class=htitle&gt;&lt;SPAN class=&quot;pcol1 itemSubjectBoldfont&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#fc3d32 size=4&gt;Adding .FLV MIME Type in IIS&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN class=&quot;cate pcol2&quot;&gt;&lt;IMG class=&quot;pcol2b fil3&quot; height=11 alt=&quot;&quot; src=&quot;http://blogimgs.naver.com/imgs/nblog/spc.gif&quot; width=1&gt;&lt;A class=pcol2 href=&quot;javascript:PostList('koo1973','4','4');&quot;&gt;&lt;FONT color=#8a837e&gt;Dot NET&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#8a837e&gt; &lt;IMG height=1 alt=&quot;&quot; src=&quot;http://blogimgs.naver.com/imgs/nblog/spc.gif&quot; width=105&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/DIV&gt;
&lt;P class=&quot;date fil5 pcol2&quot;&gt;2007/05/18 19:36&lt;/P&gt;

&lt;P class=url&gt;&lt;IMG class=btn_urlcopy title=http://blog.naver.com/koo1973/20037251523 height=13 alt=복사 src=&quot;http://blogimgs.naver.com/nblog/btn_urlcopy.gif&quot; width=21 onload=&quot;oSetClipboard.setData(this, this.title);&quot;&gt; &lt;A class=&quot;fil5 pcol2&quot; href=&quot;http://blog.naver.com/koo1973/20037251523&quot; target=_top&gt;http://blog.naver.com/koo1973/20037251523&lt;/A&gt; &lt;/P&gt;
&lt;P class=post_option&gt;&lt;A class=pcol2 id=sendPost_20037251523 onmouseover=&quot;ep3SendPostLayer.parentOver('20037251523');&quot; style=&quot;DISPLAY: none&quot; onclick=&quot;ep3SendPostLayer.show('sendPostLayer_20037251523','20037251523',event);sendNDS('20037251523');return false;&quot; onmouseout=&quot;ep3SendPostLayer.parentOut('20037251523');&quot; href=&quot;http://blog.naver.com/PostView.nhn?blogId=koo1973&amp;amp;logNo=20037251523&amp;amp;beginTime=0&amp;amp;jumpingVid=&amp;amp;from=search&amp;amp;widgetTypeCall=true#&quot;&gt;&lt;FONT color=#8a837e&gt;이 포스트를 보낸곳 &lt;/FONT&gt;&lt;SPAN class=pcol3&gt;&lt;FONT color=#fc3245 size=2&gt;()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt; &lt;/P&gt;
&lt;DIV class=&quot;post-sub ptr&quot; id=sendPost_kitchen_20037251523 style=&quot;DISPLAY: none&quot;&gt;
&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;!-- delete something | 20071116 AjaxUI --&gt;
&lt;DIV class=&quot;post-view pcol2&quot; id=post-view&gt;
&lt;DIV class=blogs_entryName style=&quot;MARGIN-BOTTOM: 10px&quot;&gt;&lt;IMG class=pn_badgeSmall id=bpm_4198 style=&quot;MARGIN-TOP: 3px; FLOAT: left; MARGIN-RIGHT: 5px&quot; src=&quot;http://userimages.ittoolbox.com/user/s_975588.jpg&quot; __doClobber__=&quot;true&quot;&gt;Adding .FLV MIME Type in IIS&lt;/DIV&gt;
&lt;DIV class=blogs_details style=&quot;MARGIN-TOP: -10px&quot;&gt;&lt;A class=con_link id=bm_4198 href=&quot;http://www.ittoolbox.com/profiles/rymoore&quot; target=_blank __doClobber__=&quot;true&quot;&gt;Ryan Moore&lt;/A&gt;(Software Engineer) Posted 5/16/2005&lt;BR&gt;&lt;SPAN class=blogs_black&gt;&lt;A class=con_link href=&quot;http://blogs.ittoolbox.com/c/engineering/archives/adding-flv-mime-type-in-iis-4198#comments&quot; target=_blank&gt;Comments&lt;/A&gt; (44) | &lt;SPAN class=blogs_smallGray&gt;Trackbacks (0)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV class=blogs_entryBox&gt;&lt;SPAN id=intelliTXT nd=&quot;1&quot;&gt;&lt;A class=con_link href=&quot;http://www.macromedia.com/software/flash/flashpro/video/&quot; target=_blank&gt;.FLV files&lt;/A&gt; are already the best method for publishing video on the web, and are sure to become even better with the new enhancements in Flash 8. When serving .flv files off of a Windows &lt;A class=con_link style=&quot;FONT-WEIGHT: bold; PADDING-BOTTOM: 0px; CURSOR: hand; COLOR: #003399; BORDER-BOTTOM: medium none; BACKGROUND-COLOR: transparent; TEXT-DECORATION: none&quot; href=&quot;http://blogs.ittoolbox.com/c/engineering/archives/adding-flv-mime-type-in-iis-4198#&quot; target=_blank itxtdid=&quot;3781242&quot;&gt;&lt;NOBR style=&quot;FONT-WEIGHT: bold; PADDING-BOTTOM: 0px; CURSOR: hand; COLOR: #003399; BORDER-BOTTOM: medium none; BACKGROUND-COLOR: transparent; TEXT-DECORATION: none&quot;&gt;Server&lt;IMG style=&quot;BORDER-RIGHT: medium none; PADDING-RIGHT: 0px; BORDER-TOP: medium none; PADDING-LEFT: 0px; LEFT: 1px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: medium none; WIDTH: 10px; PADDING-TOP: 0px; BORDER-BOTTOM: medium none; POSITION: relative; TOP: 1px; HEIGHT: 10px&quot; src=&quot;http://images.intellitxt.com/ast/adTypes/mag-glass_10x10.gif&quot;&gt;&lt;/NOBR&gt;&lt;/A&gt; 2003 (or any other Windows server I would imagine) requires setting up the MIME type on the server first (it isn't one of the native MIME types on MS servers). &lt;BR&gt;&lt;BR&gt;You can figure out easily if your server is configured to support .flv files by posting a .flv file on a server and navigating to the URL of that .flv in a browser. If you see a LONG string of garbage on the screen, your server isn't set up for .FLVs and needs to have the MIME type set up.&lt;BR&gt;&lt;BR&gt;&lt;B&gt;Adding .flv MIME type in IIS&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;1) Select the site to configure in IIS, right click and select &quot;Properties&quot;&lt;BR&gt;2) Under HTTP Headers Tab, select &quot;File Types&quot; under the MIME Map section and select &quot;New Type&quot;&lt;BR&gt;3) Type &quot;.flv&quot; as the associated extension and &quot;video/x-flv&quot; as the content type.&lt;BR&gt;4) Select &quot;OK&quot; and you're ready to fly!&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=blogs_entryBox&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=blogs_entryBox&gt;&lt;SPAN nd=&quot;1&quot;&gt;출처 : &lt;A class=con_link href=&quot;http://blogs.ittoolbox.com/c/engineering/archives/adding-flv-mime-type-in-iis-4198&quot; target=_blank&gt;http://blogs.ittoolbox.com/c/engineering/archives/adding-flv-mime-type-in-iis-4198 
&lt;DIV class=autosourcing-stub&gt;
&lt;P style=&quot;PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum&quot;&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <category>Know/ASP</category>
      <category>FLV</category>
      <category>IIS</category>
      <category>MIME 타입</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1504</guid>
      <comments>https://zzimme.tistory.com/1504#entry1504comment</comments>
      <pubDate>Thu, 9 Jul 2009 10:49:25 +0900</pubDate>
    </item>
    <item>
      <title>youtube developer api</title>
      <link>https://zzimme.tistory.com/1503</link>
      <description>youtube에 타사이트에서 동영상을 올릴 수 있는 방법이 없을까 해서 서핑하던중&lt;BR&gt;&lt;BR&gt;역시 개발자를 위해 제공하는 API가 있었다.&lt;BR&gt;&lt;BR&gt;&lt;A href=&quot;http://code.google.com/intl/ko/apis/youtube/2.0/developers_guide_java.html&quot;&gt;http://code.google.com/intl/ko/apis/youtube/2.0/developers_guide_java.html&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;A href=&quot;http://code.google.com/intl/ko/apis/youtube/2.0/developers_guide_protocol.html#Browser_based_uploading&quot;&gt;http://code.google.com/intl/ko/apis/youtube/2.0/developers_guide_protocol.html#Browser_based_uploading&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;간단히 정리하면, 동영상을 올리는 두가지 방법이 제공이 되는데 아래와 같다.&lt;BR&gt;&lt;BR&gt;Browser-based uploading&lt;BR&gt;&amp;nbsp;- 브라우저의 form을 이용해서 올릴때 사용&lt;BR&gt;Direct Uploading &lt;BR&gt;&amp;nbsp;- Direct로 올릴때 사용&lt;BR&gt;&lt;BR&gt;하는듯... 하다? ㅋㅋ&lt;BR&gt;&lt;BR&gt;좀더 자세한건 집에가서 봐야겠구나..&lt;BR&gt;&lt;BR&gt;아고 허리야.</description>
      <category>Know/ETC</category>
      <category>API</category>
      <category>Programming</category>
      <category>YouTube</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1503</guid>
      <comments>https://zzimme.tistory.com/1503#entry1503comment</comments>
      <pubDate>Tue, 30 Jun 2009 18:09:09 +0900</pubDate>
    </item>
    <item>
      <title>System.capabilities (AS 2.0)</title>
      <link>https://zzimme.tistory.com/1499</link>
      <description>&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/help.html?content=Part4_AS2_Components_LangRef_1.html&quot;&gt;&lt;BR&gt;&lt;BR&gt;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/help.html?content=Part4_AS2_Components_LangRef_1.html&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #008000&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;FONT color=#008000&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;&lt;FONT color=#d41a01&gt;Capabilities 클래스&lt;/FONT&gt;&lt;/STRONG&gt;는 다양한 형식에 내용을 맞춰 조정할 수 있도록 &lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000&gt;&lt;STRONG&gt;SWF 파일을 호스팅하는 시스템과 플레이어의 성능을 결정&lt;/STRONG&gt;&lt;/FONT&gt;합니다.&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;예를 들어, 휴대폰 화면(흑백, 100제곱 픽셀)은 1000제곱 픽셀 컬러 PC 화면과 다릅니다. 가능한 한 많은 사용자에게 적절한 내용을 제공하기 위해 &lt;SAMP class=codeph&gt;System.capabilities&lt;/SAMP&gt; 객체를 사용하여 사용자가 가지고 있는 장치의 유형을 파악할 수 있습니다. 그런 다음, 서버에서 장치 기능에 따라 다양한 SWF 파일을 보내도록 지정할 수도 있고, 장치의 성능에 따라 프레젠테이션을 변경하도록 SWF 파일에 지시할 수도 있습니다. &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT face=&quot;Courier New&quot;&gt;System.capabilities&lt;/FONT&gt; 객체의 모든 속성은 읽기 전용입니다&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;
&lt;button type=&quot;button&quot; class=&quot;btn_more&quot; id=&quot;more1499_0&quot; data-id=&quot;1499_0&quot;&gt;속성보기&lt;/button&gt;&lt;div class=&quot;moreless_content&quot; id=&quot;content1499_0&quot; style=&quot;display: none;&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less1499_0&quot; data-id=&quot;1499_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;
  &lt;p class=&quot;txt_view&quot;&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH noWrap&gt;
&lt;P&gt;수정자&lt;/P&gt;&lt;/TH&gt;
&lt;TH noWrap&gt;
&lt;P&gt;속성&lt;/P&gt;&lt;/TH&gt;
&lt;TH noWrap&gt;
&lt;P&gt;설명&lt;/P&gt;&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;avHardwareDisable&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;사용자의 카메라와 마이크에 대한 액세스가 관리상의 이유로 금지되었는지(&lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;) 아니면 허용되었는지(&lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;)를 지정하는 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasAccessibility&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Flash Player와 액세스 가능성 도구 사이의 통신을 &lt;BR&gt;지원하는 환경에서 플레이어가 실행되고 있으면 &lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;이고, 그렇지 않으면 &lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;인 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasAudio&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;플레이어가 실행되는 시스템에 오디오 기능이 있는지 여부를 지정합니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasAudioEncoder&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Flash Player에서 오디오 스트림을 인코딩할 수 있는지 여부를 지정합니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasEmbeddedVideo&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;플레이어가 내장 비디오를 지원하는 시스템에서 실행되고 있으면 &lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;이고, 그렇지 않으면 &lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;인 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasIME&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;시스템에 IME(Input Method Editor)가 설치되어 &lt;BR&gt;있는지 여부를 나타냅니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasMP3&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;시스템에 MP3 디코더가 있는지 여부를 지정합니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasPrinting&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;플레이어가 인쇄를 지원하는 시스템에서 실행되고 있으면 &lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;이고, 그렇지 않으면 &lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;인 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasScreenBroadcast&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;플레이어가 Flash Media Server를 통해 실행될 화면 브로드캐스트 응용 프로그램의 개발을 지원하면 &lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;이고, 그렇지 않으면 &lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;인 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasScreenPlayback&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;플레이어가 Flash Media Server를 통해 실행되고 있는 화면 브로드캐스트 응용 프로그램의 재생을 지원하면 &lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;이고, 그렇지 않으면 &lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;인 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasStreamingAudio&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;플레이어가 스트리밍 오디오를 재생할 수 있으면 &lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;이고, 그렇지 않으면 &lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;인 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasStreamingVideo&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;플레이어가 스트리밍 비디오를 재생할 수 있으면 &lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;이고, 그렇지 않으면 &lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;인 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;hasVideoEncoder&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;: &lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Flash Player에서 비디오 스트림을 인코딩할 수 있는지 여부를 지정합니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;isDebugger&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Flash Player가 공식적으로 출시된 버전인지(&lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;) 아니면 특별한 디버깅 버전인지(&lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;)를 나타내는 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;language&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001546.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;String [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;플레이어가 실행 중인 시스템의 언어를 나타냅니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;localFileReadDisable&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000821.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Boolean [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;사용자의 하드 디스크에 대한 읽기 액세스가 관리상의 이유로 금지되었는지(&lt;SAMP class=codeph&gt;true&lt;/SAMP&gt;) 아니면 허용되었는지(&lt;SAMP class=codeph&gt;false&lt;/SAMP&gt;)를 나타내는 부울 값입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;manufacturer&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001546.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;String [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Flash Player의 제조 업체를 &quot;&lt;SAMP class=codeph&gt;Adobe &lt;/SAMP&gt;&lt;EM&gt;OSName&lt;/EM&gt;&quot; 형식으로 나타내는 문자열입니다. 여기서 &lt;EM&gt;OSName&lt;/EM&gt;은 &quot;&lt;SAMP class=codeph&gt;Windows&lt;/SAMP&gt;&quot;, &quot;&lt;SAMP class=codeph&gt;Macintosh&lt;/SAMP&gt;&quot;, &lt;SAMP class=codeph&gt;&quot;Linux&quot;&lt;/SAMP&gt; 또는 &quot;&lt;SAMP class=codeph&gt;Other OS Name&lt;/SAMP&gt;&quot;일 수 있습니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00000905.html&quot;&gt;os&lt;/A&gt;&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001546.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;String [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;현재 운영 체제를 나타내는 문자열입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;pixelAspectRatio&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001415.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Number [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;화면의 픽셀 종횡비를 나타내는 정수입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;playerType&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001546.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;String &lt;BR&gt;[읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;플레이어 유형을 나타내는 문자열입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;screenColor&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001546.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;String [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;화면 색상을 나타내는 문자열입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;screenDPI&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001415.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Number [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;픽셀 단위의 인치당 도트 수로 화면의 해상도를 나타내는 숫자입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;screenResolutionX&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001415.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Number [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;화면의 최대 수평 해상도를 나타내는 정수입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;screenResolutionY&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001415.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;Number [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;화면의 최대 수직 해상도를 나타내는 정수입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;serverString&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001546.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;String [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;각 &lt;SAMP class=codeph&gt;System.capabilities&lt;/SAMP&gt; 속성에 대한 값을 지정하는 URL 인코딩 문자열입니다. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SAMP class=codeph&gt;static&lt;/SAMP&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;version&lt;SAMP class=codeph&gt;&lt;A href=&quot;http://help.adobe.com/ko_KR/AS2LCR/Flash_10.0/00001546.html&quot;&gt;:&lt;/A&gt;&lt;/SAMP&gt;String [읽기 전용]&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Flash Player의 플랫폼 및 버전 정보를 포함하는 문자열입니다.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;&lt;/p&gt;
&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less1499_0&quot; data-id=&quot;1499_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;</description>
      <category>Know/Flash</category>
      <category>Action Script 2.0</category>
      <category>Flash</category>
      <author>Marine&amp;trade;</author>
      <guid isPermaLink="true">https://zzimme.tistory.com/1499</guid>
      <comments>https://zzimme.tistory.com/1499#entry1499comment</comments>
      <pubDate>Fri, 8 May 2009 09:27:22 +0900</pubDate>
    </item>
  </channel>
</rss>