<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>::NPTEAM:: Network Programer Team</title>
		<link>http://npteam.net/</link>
		<description></description>
		<language>ko</language>
		<pubDate>Sat, 04 Jul 2009 04:24:04 +0900</pubDate>
		<generator>Textcube 1.7.6 : Staccato</generator>
		<item>
			<title>개인용 무료 파티션 프로그램</title>
			<link>http://npteam.net/721</link>
			<description>&lt;DIV style=&quot;TEXT-ALIGN: right&quot;&gt;출처 : &lt;A href=&quot;http://www.partition-tool.com/personal.htm&quot;&gt;http://www.partition-tool.com/personal.htm&lt;/A&gt;&lt;/DIV&gt;&lt;BR&gt;파티션 매직 8.0은 비스타 지원이 안된다.&lt;BR&gt;이미 파티션 매직 UI에 길들여진 분들은 비스타로 넘어오면서 많은 고통을 받아왔다.&lt;BR&gt;&lt;BR&gt;그러나!! 짜잔.&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1240902875.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1240902875.png&quot; width=&quot;902&quot; height=&quot;665&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;BR&gt;오우, 예전에 보던 파티션 매직과 흡사한 인터페이스를 보여준다.&lt;BR&gt;홈에디션은 무료&lt;BR&gt;기업용 EASEUS Partition Master Professional Edition 은 &lt;SPAN class=RedBold&gt;US$ 31.96&lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;파티션 매직의 향수에서 벗어나지 못한 분들을 위한 대체 프로그램으로 충분하지 않을까?&lt;BR&gt;</description>
			<category>Tip&amp;Tech</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/721</guid>
			<comments>http://npteam.net/721#entry721comment</comments>
			<pubDate>Mon, 06 Apr 2009 21:01:25 +0900</pubDate>
		</item>
		<item>
			<title>정규식을 이용하여 보다 쉽게 쿼리문을 작성해 보자_02</title>
			<link>http://npteam.net/714</link>
			<description>DB 쿼리 작업을 하다보면, 테이블에 insert 쿼리문를 대량으로 작성해야 하는 경우가 많다.&lt;BR&gt;특히, 엑셀로 작업한 결과물을 DB에 insert 하거나, update 해야 할 경우 쿼리문 작성으로 고단한 경우가 종종 발생한다.&lt;BR&gt;&lt;BR&gt;정규식을 활용하여 원하는 정보를 쿼리식으로 손쉽게 만드는 방법에 대해서 알아보자.&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1148716350.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1148716350.png&quot; width=&quot;625&quot; height=&quot;414&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;BR&gt;위와 같은 테이블 정보에 아래의 데이터를 INSERT 해야 한다.&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1169514451.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1169514451.png&quot; width=&quot;702&quot; height=&quot;117&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;BR&gt;엑셀과 같이 입력하고 싶은 자료를 정규식을 지원하는 Notepad2와 같은 편집기에 복사 &amp;amp; 붙여넣기한다.&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1037652454.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1037652454.png&quot; width=&quot;491&quot; height=&quot;125&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;BR&gt;라인의 처음 시작 부분은 정규식에서 ^로 표시한다.&lt;BR&gt;&lt;BR&gt;&lt;CODE&gt;^(\d{4})&lt;/CODE&gt;한 줄의 시작 부분이 숫자(\d)로된 4자리 글자를 먼저 선택한다.(숫자 4자리 선택)&lt;BR&gt;이렇게 한 줄의 첫번째 되는 부분을 정확히 일치시켜야 줄 중간에서 숫자 4자리를 무시하고 처리할 수 있다.&lt;BR&gt;선택 범위 :&amp;nbsp; &lt;FONT color=#d41a01&gt;&lt;STRONG&gt;[&lt;/STRONG&gt;&lt;/FONT&gt;8001&lt;FONT color=#d41a01&gt;&lt;STRONG&gt;]&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;CODE&gt;^(\d{4})[\t]+&lt;/CODE&gt;숫자 4자리로 시작하고, 그 다음 탭으로 떨어진 공간을 선택한다.(TAB까지 선택)&lt;BR&gt;선택 범위 :&amp;nbsp; &lt;FONT color=#d41a01&gt;&lt;STRONG&gt;[&lt;/STRONG&gt;&lt;FONT color=#454545&gt;8001 &lt;FONT color=#008000&gt;&lt;STRONG&gt;TAB&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color=#d41a01&gt;]&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;CODE&gt;^(\d{4})[\t]+([^\t]+)&lt;/CODE&gt;탭으로 떨어진 공간 다음에, 탭이 아닌 문자를 선택한다.(TOM까지 선택)&lt;BR&gt;선택 범위 :&amp;nbsp; &lt;FONT color=#d41a01&gt;&lt;STRONG&gt;[&lt;/STRONG&gt;&lt;/FONT&gt;8001 &lt;STRONG&gt;&lt;FONT color=#008000&gt;TAB&lt;/FONT&gt;&lt;/STRONG&gt; TOM&lt;FONT color=#d41a01&gt;&lt;STRONG&gt;]&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;위와 같이 탭으로 떨어진 문자 &lt;FONT color=#008000&gt;&lt;STRONG&gt;[\t]+&lt;/STRONG&gt;&lt;/FONT&gt;, 탭이 아닌 문자 &lt;STRONG&gt;([^\t]+)&lt;/STRONG&gt; 를 반복적으로 기입한다.&lt;BR&gt;&lt;BR&gt;&lt;CODE&gt;^(\d{4})[\t]+([^\t]+)[\t]+([^\t]+)[\t]+([^\t]+)[\t]+([^\t]+)[\t]+([^\t]+)[\t]+([^\t]+)[\t]+(\d+)$&lt;/CODE&gt;선택 범위 :&amp;nbsp; &lt;FONT color=#d41a01&gt;&lt;STRONG&gt;[&lt;/STRONG&gt;&lt;/FONT&gt;8001 &lt;STRONG&gt;&lt;FONT color=#008000&gt;TAB&lt;/FONT&gt;&lt;/STRONG&gt; TOM &lt;FONT color=#008000&gt;&lt;STRONG&gt;TAB &lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#454545&gt;DBA &lt;/FONT&gt;&lt;FONT color=#008000&gt;&lt;STRONG&gt;TAB &lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#454545&gt;8400 &lt;/FONT&gt;&lt;FONT color=#008000&gt;&lt;STRONG&gt;TAB &lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#454545&gt;1981-12-03 &lt;/FONT&gt;&lt;FONT color=#008000&gt;&lt;STRONG&gt;TAB &lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#454545&gt;3000 &lt;/FONT&gt;&lt;FONT color=#008000&gt;&lt;STRONG&gt;TAB &lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#454545&gt;10 &lt;/FONT&gt;&lt;FONT color=#008000&gt;&lt;STRONG&gt;TAB &lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#454545&gt;40&lt;/FONT&gt;&lt;FONT color=#d41a01&gt;&lt;STRONG&gt;]&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;중간 부분은 &lt;FONT color=#008000&gt;&lt;STRONG&gt;[\t]+&lt;/STRONG&gt;&lt;/FONT&gt; 탭과 &lt;STRONG&gt;([^\t]+)&lt;/STRONG&gt; 탭을 포함하지 않은 문자열로 구분하면 되지만,&lt;BR&gt;시작부분과 마찬가지로 종료 부분에는&lt;CODE&gt;(\d+)$ &amp;nbsp; &amp;nbsp;&amp;nbsp; : 숫자로 종료(0-9)&lt;BR&gt;(\w+)$ &amp;nbsp; &amp;nbsp; &amp;nbsp;: 문자로 종료(a-z, A-Z)&lt;BR&gt;([\d|\w]+)$ : 숫자나 문자로 종료(0-9, a-z, A-Z)&lt;BR&gt;&lt;/CODE&gt;를 명시적으로 표기해야 한다.&lt;BR&gt;(&lt;FONT color=#0000ff&gt;단, \w는 a-z, A-Z의 문자열을 말하며 한글 문자열을 지원하지 않는다.&lt;/FONT&gt;)&lt;BR&gt;&lt;BR&gt;위와 같이 작성된 정규표현식을 찾을문자에 입력하고 찾기 버튼을 누르면, 한 줄씩 선택되는 것을 확인할 수 있다.&lt;BR&gt;&lt;BR&gt;이때, 중요한 점! 지난번에도 언급했듯이 정규표현식에서 &lt;FONT color=#0000ff&gt;()&lt;/FONT&gt; 괄호로 묶은 것은 &lt;FONT color=#0000ff&gt;그룹으로 처리&lt;/FONT&gt;된다.&lt;BR&gt;&lt;FONT color=#cc9900&gt;&lt;STRONG&gt;첫번째 괄호&lt;/STRONG&gt;&lt;/FONT&gt;로 묶인 문자열은 &lt;FONT color=#cc9900&gt;&lt;STRONG&gt;\1&lt;/STRONG&gt;&lt;/FONT&gt;로 치환할 수 있고,&lt;BR&gt;&lt;FONT color=#cc9900&gt;&lt;STRONG&gt;두번재 괄호&lt;/STRONG&gt;&lt;/FONT&gt;로 묶인 문자열은 &lt;FONT color=#cc9900&gt;&lt;STRONG&gt;\2&lt;/STRONG&gt;&lt;/FONT&gt;로 치환할 수 있다....&lt;BR&gt;또한, &lt;FONT color=#cc9900&gt;&lt;STRONG&gt;괄호로 묶인 전체 문자열&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#454545&gt;은&lt;/FONT&gt; &lt;FONT color=#cc9900&gt;&lt;STRONG&gt;\0&lt;/STRONG&gt;&lt;/FONT&gt;로 치환할 수 있다.&lt;BR&gt;&lt;BR&gt;우리가 치환하고자 하는 부분은 이미 괄호로 8번 묶어 놓은 상태 이므로,&lt;BR&gt;바꿀 문자에 다음과 같이 입력하고 모두 바꾸기를 수행해 보자.&lt;BR&gt;&lt;BR&gt;&lt;CODE&gt;INSERT INTO TEST_EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) values ( \1, &#039;\2&#039;, &#039;\3&#039;, \4, &#039;\5&#039;, \6, \7, \8);&lt;/CODE&gt; 
&lt;P&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1170156781.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1170156781.png&quot; width=&quot;534&quot; height=&quot;438&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;BR&gt;위와 같이 모두 바꾸기를 수행하면 다음과 같은 결과를 볼 수 있다.&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1158082911.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1158082911.png&quot; width=&quot;1165&quot; height=&quot;167&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;지금까지 INSERT 문을 정규표현식을 이용하여 간단히 바꾸는 과정을 알아 보았다.&lt;BR&gt;&lt;BR&gt;간단하지만 강력한 정규표현식.&lt;BR&gt;위와 같이 적은 양의 자료를 입력할때에는 복사 붙여넣기로 해결되지만,&lt;BR&gt;최소 천건에서 2-3만건의 자료를 처리할 때에는 정규표현식을 만드신 분이 정말 눈물나게 고맙게 느껴진다. ^^;&lt;/P&gt;</description>
			<category>정규식</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/714</guid>
			<comments>http://npteam.net/714#entry714comment</comments>
			<pubDate>Sat, 28 Mar 2009 11:32:03 +0900</pubDate>
		</item>
		<item>
			<title>[ORACLE] ROW 데이터를 구분자 포함하여 가로로 출력하는 방법</title>
			<link>http://npteam.net/713</link>
			<description>&lt;CODE&gt;select LTRIM( SUBSTR( MAX( SYS_CONNECT_BY_PATH( COLUMN_NAME, &#039;, &#039;) ), 2 ) ) as &quot;OUTPUT_COLUMN&quot; &lt;BR&gt;from ( &lt;BR&gt;&amp;nbsp; &amp;nbsp; select 1 as INDEX_NO, &#039;AAA&#039; as COLUMN_NAME FROM DUAL&lt;BR&gt;&amp;nbsp; &amp;nbsp; union all&lt;BR&gt;&amp;nbsp; &amp;nbsp; select 2 as INDEX_NO, &#039;BBB&#039; as COLUMN_NAME FROM DUAL&lt;BR&gt;&amp;nbsp; &amp;nbsp; union all&lt;BR&gt;&amp;nbsp; &amp;nbsp; select 3 as INDEX_NO, &#039;CCC&#039; as COLUMN_NAME FROM DUAL )&lt;BR&gt;start with INDEX_NO = 1 &lt;BR&gt;connect by prior INDEX_NO = INDEX_NO - 1&lt;/CODE&gt;&lt;BR&gt;위와 같은 쿼리로 각 Row의 데이터를 하나의 Row로 출력할 수 있다.</description>
			<category>ORACLE</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/713</guid>
			<comments>http://npteam.net/713#entry713comment</comments>
			<pubDate>Tue, 24 Mar 2009 16:52:55 +0900</pubDate>
		</item>
		<item>
			<title>정규식을 이용하여 윈도우 방화벽 사용자 지정 목록 편집하기</title>
			<link>http://npteam.net/712</link>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1055911143.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1055911143.png&quot; width=&quot;504&quot; height=&quot;472&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;BR&gt;윈도우 방화벽은 이제 없어서는 안될 필수품이 되었다.&lt;BR&gt;그렇지만 원하는 &amp;nbsp;IP 주소 범위를 변경하기 위해서는 엄청난 키보드 화살표 오른쪽 버튼의 압박에 시달리게 된다.&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;빌 게이츠 횽 왜 윈도우 방화벽은 이렇게 사용하기 불편한 건가요?&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR&gt;이렇게 탄식을 하더라도, MS에서 방화벽 UI를 바꿔주길 기대하는 것은 무리다.&lt;BR&gt;&quot;윈도우 그림판으로 포토샵처럼 편집하고 싶어요~&quot; -_-;&lt;BR&gt;&lt;BR&gt;우리는 정규표현식을 이용해서 이번 난관도 아주 약간 편하게 헤쳐나갈 수 있다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;사용자 지정 목록의 내용을 복사해서 notepad2에 붙여넣기 해 보자.&lt;BR&gt;(안타깝게도 MS 기본 메모장에서는 정규식을 지원하지 않는다.)&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1169477246.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1169477246.png&quot; width=&quot;462&quot; height=&quot;144&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;오~ 스크롤 압박!!&lt;BR&gt;모니터를 확! ... 참자, 우리에겐 정규표현식이 있다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1254645055.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1254645055.png&quot; width=&quot;591&quot; height=&quot;414&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;찾을 문자에 ,&lt;BR&gt;바꿀 문자에 ,\r\n&lt;BR&gt;을 입력하고 모두 바꾸기를 클릭한다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1295329443.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1295329443.png&quot; width=&quot;591&quot; height=&quot;414&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;오~ 완전 깔끔하게 정리되었다.&lt;BR&gt;IP 범위 수정을 모두 마쳤으면, 바꿀 문자와 찾을 문자를 바꿔서 넣고 모두 바꾸기를 한다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1029546477.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1029546477.png&quot; width=&quot;589&quot; height=&quot;414&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;다시 1줄로 정리되었다.&lt;BR&gt;&lt;BR&gt;이렇게 쉽고 강력하지만, 우리는 윈도우 메모장에서는 정규표현식을 사용할 수 없다.&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;빌 게이츠 횽 UI 개선 안해줘도 좋은데요. 메모장에서 정규표현식 지원해 주시면 안되나요?&lt;/BLOCKQUOTE&gt;</description>
			<category>정규식</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/712</guid>
			<comments>http://npteam.net/712#entry712comment</comments>
			<pubDate>Sat, 21 Mar 2009 04:30:46 +0900</pubDate>
		</item>
		<item>
			<title>정규식을 이용하여 보다 쉽게 쿼리문을 작성해 보자_01</title>
			<link>http://npteam.net/711</link>
			<description>&lt;P&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1190402710.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1190402710.png&quot; width=&quot;630&quot; height=&quot;325&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt; &lt;/P&gt;
&lt;P&gt;위와 같이 test_emp 테이블에서 원하는 EMPNO를 선택하여, &lt;/P&gt;&lt;CODE&gt;select * &lt;BR&gt;from test_emp &lt;BR&gt;where in ( ... ) &lt;/CODE&gt;
&lt;P&gt;select 쿼리문을 만들다 보면, EMPNO 컬럼을 드래그 복사해서 where in ( 7369, 7499 ...) &lt;BR&gt;이렇게 한번에 넣고 싶을때가 많다.&lt;/P&gt;
&lt;P&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1117986639.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1117986639.png&quot; width=&quot;625&quot; height=&quot;322&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;이렇게 선택하고 텍스트 편집기 창에 복사하면, 다음과 같이 나온다.&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1065469536.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1065469536.png&quot; width=&quot;455&quot; height=&quot;175&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;위와 같이 나온 text를 전체 선택하여, 주석처리를 한다.&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1338327199.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1338327199.png&quot; width=&quot;342&quot; height=&quot;153&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;그리고 다음과 같이 &quot;--&quot; 텍스트를 &quot;, &quot;로 치환하고&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1039996805.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1039996805.png&quot; width=&quot;416&quot; height=&quot;101&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;다음과 같이 쿼리문을 작성하여 실행하면, 편하게 쿼리문을 작성할 수 있다.&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1258296759.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1258296759.png&quot; width=&quot;625&quot; height=&quot;422&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;이건 누구나 다 아는 내용이다.&lt;BR&gt;게다가 정규식은 보이지도 않는데 어떻게 된것이냐?&lt;/BLOCKQUOTE&gt;&amp;nbsp;라고 생각하시는 분들을 위해서 이제부터 본격적으로 정규식을 써 보겠습니다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1314249474.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1314249474.png&quot; width=&quot;543&quot; height=&quot;476&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;BR&gt;위와 같이 선택된 값을 다음과 같은 쿼리문으로 만들려고 합니다.&lt;BR&gt;&lt;CODE&gt;select * &lt;BR&gt;from test_emp&lt;BR&gt;where &lt;BR&gt;OR ( JOB = &#039;CLERK&#039; AND EMPNO = &#039;7369&#039; ) &lt;BR&gt;OR ( JOB = &#039;CLERK&#039; AND EMPNO = &#039;7900&#039; ) &lt;BR&gt;OR ( JOB = &#039;MANAGER&#039; AND EMPNO = &#039;7698&#039; ) &lt;BR&gt;OR ( JOB = &#039;SALESMAN&#039; AND EMPNO = &#039;7654&#039; ) &lt;/CODE&gt;이렇게 쿼리를 만들고 where 다음의 OR 글자만 지워주면 됩니다. &lt;BR&gt;아래의 정규표현식을 실행해볼까요?&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1103092533.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1103092533.png&quot; width=&quot;544&quot; height=&quot;474&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;BR&gt;와우! 정말 한번에 원하는 쿼리와 근접하게 변환되었습니다.&lt;BR&gt;&lt;BR&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1039069151.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1039069151.png&quot; width=&quot;545&quot; height=&quot;477&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;BR&gt;여기까지 잘 따라오셨나요?&lt;BR&gt;이쯤에서 위에서 쓰인 정규표현식을 설명하고 넘어가기로 하죠. &lt;BR&gt;&lt;BR&gt;위에서 빨간색 네모로 표시된 정규식은 다음과 같습니다.&lt;BR&gt;&lt;CODE&gt;^(\w+)\t(\d+)&lt;/CODE&gt;&lt;FONT face=&quot;&#039;GulimChe&#039;, Sans-serif&quot;&gt;^&amp;nbsp; : 한 줄의 시작부분을 의미합니다. &lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ^이 없으면, 한 줄의 중간 부분에서도 정규식 패턴이 발견되면, 해당 문자열을 찾아냅니다.&lt;BR&gt;() : 괄호로 묶은 곳이 2군데가 있는데요. &lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;괄호로 문장을 묶으면 해당 문자열을 그룹으로 치환할 수 있습니다.&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이 부분은 아래에서 더 자세히 설명드리죠.&lt;BR&gt;\w : 알파벳으로 이루어진 한 문자를 찾습니다. (a~z, A~Z) 사이의 문자를 말하는거죠.&lt;BR&gt;\t : 탭으로 띄어쓰기된 공간을 찾습니다.&lt;BR&gt;\d : 숫자로 이루어진 한 문자를 찾습니다. (0~9) 사이의 문자를 찾습니다.&lt;BR&gt;+&amp;nbsp; : 바로 앞의 문자가 1번이상 계속 반복되는 것을 말합니다.&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;해석하면, &lt;BR&gt;&lt;FONT face=&quot;&#039;GulimChe&#039;, Sans-serif&quot;&gt;1. 한 줄의 시작부분이 (\w+) 알파벳으로 연속된 문자열을 찾아서 그룹으로 묶는다.&lt;BR&gt;2. \t 탭으로 띄어쓰기된 공간을 찾는다.&lt;BR&gt;3. (\d+) 숫자로 연속된 문자열을 찾아서 그룹으로 묶는다.&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;여기까지 이해 가셨나요? 그렇다면 바꿀 문자(&lt;FONT color=#0000ff&gt;파란 네모안의 정규식&lt;/FONT&gt;)에 해당하는 정규식을 살펴 보기로 하죠.&lt;BR&gt;&lt;CODE&gt;OR ( JOB = &#039;\1&#039; AND EMPNO = &#039;\2&#039; )&lt;/CODE&gt;여기에서는 중요한 포인트가 바로 \1 과 \2 입니다.&lt;BR&gt;\1 : 찾을 문자(&lt;FONT color=#ff0000&gt;빨간 네모안의 정규식&lt;/FONT&gt;)에서 첫번째로 그룹화된 문장을 이 부분에 끼워넣기 한다.&lt;BR&gt;\2 : 찾을 문자(&lt;FONT color=#ff0000&gt;빨간 네모안의 정규식&lt;/FONT&gt;)에서 두번째로 그룹화된 문장을 이 부분에 끼워넣기 한다.&lt;BR&gt;&lt;BR&gt;자 이제 이해가 가셨나요?&lt;BR&gt;정규표현식으로 다양한 문자 치환 방법이 있는데요. 그중에서 자주 쓰이는 그룹 치환에 대해서 알아 보았습니다.&lt;BR&gt;&lt;BR&gt;이처럼 정규표현식을 활용하면, 다양하고 복잡한 문자열을 손쉽게 바꿀 수 있습니다.&lt;BR&gt;&lt;BR&gt;TIP.&lt;BR&gt;Tab으로 띄어진 문자열을 구분하기 위해서는 다음의 정규식으로 검색한 후 치환하세요.&lt;BR&gt;&lt;CODE&gt;^(\d+|\w+)\t(\d+|\w+)\t(\d+|\w+) &lt;/CODE&gt;</description>
			<category>정규식</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/711</guid>
			<comments>http://npteam.net/711#entry711comment</comments>
			<pubDate>Sat, 21 Mar 2009 03:26:47 +0900</pubDate>
		</item>
		<item>
			<title>USB On 2.0 - autorun.inf 바이러스로 부터 해방~</title>
			<link>http://npteam.net/709</link>
			<description>&lt;DIV style=&quot;TEXT-ALIGN: right&quot;&gt;출처 : &lt;A href=&quot;http://minj.tistory.com/65&quot;&gt;http://minj.tistory.com/65&lt;/A&gt;&lt;/DIV&gt;&lt;BR&gt;지긋지긋한 USB 자동 실행 바이러스 &lt;BR&gt;윈도우 OS에서는 예전부터 &quot;autorun.inf&quot; 의 정보를 이용해서 CD-ROM 컨텐츠를 자동 실행하여 설치할 수 있도록 하였습니다.&lt;BR&gt;&lt;BR&gt;CD-ROM 미디어에 포함되어 있는 컨텐츠는&lt;BR&gt;&amp;nbsp;1. 대부분 바이러스 검사를 마친 배포 프로그램&lt;BR&gt;&amp;nbsp;2. 읽기 전용인 미디어 특성&lt;BR&gt;때문에 autorun.inf 파일로 자동실행되는 것이 문제되지 않았습니다.&lt;BR&gt;&lt;BR&gt;그러나 읽기 / 쓰기가 가능한 USB 메모리를 사용하면서 문제가 발생한다.&lt;BR&gt;autorun.inf 파일에 설정된 프로그램을 자동 실행할 수 있기 때문에 USB를 컴퓨터에 꼽는 것만으로도 루트킷 설치, 프로그램 설치 등등의 작업을 진행할 수 있다.&lt;BR&gt;&lt;BR&gt;USB On은 autorun.inf 이름의 폴더를 생성하고, 만들어진 폴더의 읽기 쓰기가 불가능하도록 방지하기 때문에, 이러한 Autorun.inf 바이러스의 실행을 미리 방지할 수 있다.&lt;BR&gt;&lt;BR&gt;</description>
			<category>Tip&amp;Tech</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/709</guid>
			<comments>http://npteam.net/709#entry709comment</comments>
			<pubDate>Tue, 10 Mar 2009 21:28:47 +0900</pubDate>
		</item>
		<item>
			<title>TextCube를 잘못 설치해서 난감한...</title>
			<link>http://npteam.net/708</link>
			<description>&lt;P&gt;호스팅을 이전하기전 방문자 수가 하루 평균 200명이었으나,&lt;BR /&gt;호스팅을 이전한 후에는 방문자 평균 6-7명으로 급격히 감소했습니다.&lt;BR /&gt;&lt;BR /&gt;그러던 중 원인이 될만한 사실을 발견하였습니다. -_-;&lt;BR /&gt;예전에는 &lt;A href=&quot;http://www.npteam.net/111&quot;&gt;http://www.npteam.net/111&lt;/A&gt; 과 같은 링크 주소를 사용하였는데요.&lt;BR /&gt;웹호스팅 업체에 텍스트큐브 자동 설치를 의뢰한 후, &lt;A href=&quot;http://npteam.net/tc/111&quot;&gt;http://npteam.net/tc/111&lt;/A&gt;&amp;nbsp;과 같이 변경되었습니다.&lt;BR /&gt;&lt;BR /&gt;결국 웹 루트/tc 폴더에 설치되면서 생긴 헤프닝이었습니다.&lt;BR /&gt;이 문제를 해결해 보려고 여러가지 방법을 사용하였는데요.&lt;BR /&gt;index.php 파일을&lt;/P&gt;&lt;PRE class=prettyprint&gt;&lt;CODE&gt;&amp;lt;?php&lt;BR /&gt;header(&quot;Location: /tc/&quot;.$_SERVER[&#039;QUERY_STRING&#039;]);&lt;BR /&gt;?&amp;gt;&lt;/CODE&gt;&lt;/PRE&gt;와 같이 만들어서 사용해 보았으나,&lt;BR /&gt;&lt;A href=&quot;http://www.npteam.net/index.php?123&quot;&gt;http://www.npteam.net/index.php?123&lt;/A&gt;&amp;nbsp;이렇게 작성해야만&lt;BR /&gt;&lt;A href=&quot;http://www.npteam.net/tc/123&quot;&gt;http://www.npteam.net/tc/123&lt;/A&gt; 으로 포워딩 되었습니다.&lt;BR /&gt;&lt;BR /&gt;어떻게든 텍스트큐브를 다시 설치하지 않는 방법으로 진행하려고 노력하였으나,&lt;BR /&gt;tc 폴더를 웹 root로 Move 한 다음, config.php를 삭제하고 html폴더 권한을 777로 수정한 후&lt;BR /&gt;결국 단일블로그형으로 다시 설치하였습니다.&lt;BR /&gt;설치 완료된 후 html 폴더 권한을 원상 복귀 해주는 것은 기본 센스죠. ^^;&lt;BR /&gt;&lt;BR /&gt;오랫만에 블로그 업데이트를 하니 좋은점이 많네요.&lt;BR /&gt;제 블로그에 방문해 주시는 모든 분들에게 다시 한번 감사드립니다.&lt;BR /&gt;&lt;BR /&gt;행복하시고, 건강하세요~.</description>
			<category>TTF 개인 폴더</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/708</guid>
			<comments>http://npteam.net/708#entry708comment</comments>
			<pubDate>Tue, 10 Mar 2009 18:57:31 +0900</pubDate>
		</item>
		<item>
			<title>[Visual Assist] 정품 구매</title>
			<link>http://npteam.net/701</link>
			<description>&lt;p&gt;올해에도 비주얼 어시스트 1년 연장 라이센스 구매!&lt;br /&gt;
&lt;br /&gt;
앞으로 2010년 1월까지는 마음껏 코딩을.. ㅋㅋㅋ&lt;br /&gt;
&lt;br /&gt;
환율이 높아서 작년보다 비싼 가격에 연장했지만, 하루에 200원 투자하는 효과를 충분히 볼 수 있어서 좋아요.&lt;/p&gt;&lt;p&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/3851785200.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/3851785200.png&quot; width=&quot;668&quot; height=&quot;369&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;</description>
			<category>TTF 개인 폴더</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/701</guid>
			<comments>http://npteam.net/701#entry701comment</comments>
			<pubDate>Fri, 23 Jan 2009 05:14:17 +0900</pubDate>
		</item>
		<item>
			<title>온라인 게임 서버 구조 토론회</title>
			<link>http://npteam.net/700</link>
			<description>&lt;DIV align=center&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/7533383454.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/7533383454.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/5982185676.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/5982185676.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/9358086073.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/9358086073.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/6176243528.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/6176243528.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/1140706807.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/1140706807.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/7304686378.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/7304686378.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/9553177841.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/9553177841.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/8681485266.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/8681485266.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/2480069375.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/2480069375.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/5265426400.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/5265426400.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/4440720637.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/4440720637.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://npteam.net/attach/1/8609021467.png&quot; rel=&quot;lightbox[2group0]&quot; title=&quot;&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://npteam.net/attach/1/8609021467.png&quot; width=&quot;672&quot; height=&quot;504&quot; alt=&quot;사용자 삽입 이미지&quot; title=&quot;&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;온라인 게임 서버 구조 토론회 발표 자료&lt;/DIV&gt;&lt;BR&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a class=&quot;extensionIcon&quot; href=&quot;http://www.npteam.net/attachment/1254316054.zip&quot;&gt;&lt;img src=&quot;http://www.npteam.net/image/extension/zip.gif&quot; alt=&quot;&quot; /&gt; 서버구조토론회.zip&lt;/a&gt;&lt;/div&gt;</description>
			<category>TTF 강좌</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/700</guid>
			<comments>http://npteam.net/700#entry700comment</comments>
			<pubDate>Thu, 15 Jan 2009 14:54:26 +0900</pubDate>
		</item>
		<item>
			<title>[C/C++] enum, 보다 나은 enum</title>
			<link>http://npteam.net/695</link>
			<description>&lt;div align=&quot;right&quot;&gt;출처 : &lt;a href=&quot;http://eslife.tistory.com/entry/CC-enum-보다-나은-enum&quot;&gt;http://eslife.tistory.com/entry/CC-enum-보다-나은-enum&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
프로그래머라면 누구나 enum값이 4byte 정수 자료형이라는 사실을 알고 있습니다.&lt;br /&gt;
&lt;br /&gt;
switch( xxx ) : xxx 에는 정수 자료형만 올 수 있다는 것도 알고 있습니다.&lt;br /&gt;
&lt;br /&gt;
switch( string )&lt;br /&gt;
{&lt;br /&gt;
 &amp;nbsp; case &quot;A_Case&quot;: ... break;&lt;br /&gt;
 &amp;nbsp; case &quot;B_Case&quot;: ... break;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
이런식으로 switch 문에서도 문자열을 받고 싶을때가 많습니다.&lt;br /&gt;
혹은 enum 값을 1:1 매칭되는 문자열 값으로 변환하고 싶을때가 많습니다.&lt;br /&gt;
&lt;br /&gt;
우연히 웹 서핑을 하던 중 &lt;a href=&quot;http://eslife.tistory.com/entry/CC-enum-보다-나은-enum&quot;&gt;http://eslife.tistory.com/entry/CC-enum-보다-나은-enum&lt;/a&gt;을 읽게 되었고, 약간의 팁을 보강하여 다음과 같이 정리하였습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test.h 헤더 파일에 다음과 같이 작성한다.&lt;br /&gt;
&lt;div class=&quot;cpp&quot; style=&quot;border-right: #d0d0d0 1px solid; padding-right: 5px; border-top: #d0d0d0 1px solid; padding-left: 5px; font-size: 12px; padding-bottom: 5px; border-left: #d0d0d0 1px solid; color: #000066; line-height: 120%; padding-top: 5px; border-bottom: #d0d0d0 1px solid; font-family: 굴림체; background-color: #f0f0f0&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;namespace&lt;/span&gt; nsETREEITEMTYPE&lt;br /&gt;
&lt;span style=&quot;color: #000000&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #339900&quot;&gt;// enum ETREEITEMTYPE의 enum 값을 나열한다.(eTIY_GROUP...)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000ff&quot;&gt;#undef&lt;/span&gt; ENUM_LIST&lt;br /&gt;
&lt;span style=&quot;color: #0000ff&quot;&gt;#define&lt;/span&gt; ENUM_LIST&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;ENUM_VALUES&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt;&amp;nbsp; \&lt;br /&gt;
&amp;nbsp; ENUM_VALUES&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;GROUP&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; \&lt;br /&gt;
&amp;nbsp; ENUM_VALUES&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;CONNECTION&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt; &amp;nbsp;\&lt;br /&gt;
&amp;nbsp; ENUM_VALUES&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;COUNT&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;span style=&quot;color: #0000ff&quot;&gt;#undef&lt;/span&gt; DO_DESCRIPTION&lt;br /&gt;
&lt;span style=&quot;color: #0000ff&quot;&gt;#undef&lt;/span&gt; DO_ENUM&lt;br /&gt;
&lt;span style=&quot;color: #0000ff&quot;&gt;#define&lt;/span&gt; DO_DESCRIPTION&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;enumValue&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt; _T&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;#enumValue&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt;,&lt;br /&gt;
&lt;span style=&quot;color: #0000ff&quot;&gt;#define&lt;/span&gt; DO_ENUM&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;enumValue&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt; eTIY_##enumValue,&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #339900&quot;&gt;// enum Type 이름(ETREEITEMTYPE)을 설정한다.&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #0000ff&quot;&gt;enum&lt;/span&gt; ETREEITEMTYPE&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #000000&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ENUM_LIST&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;DO_ENUM&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #000000&quot;&gt;}&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #339900&quot;&gt;// enum 배열 이름(ptszETIYDescription)을 설정한다.&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #0000ff&quot;&gt;static&lt;/span&gt; TCHAR* ptszETIYDescription&lt;span style=&quot;color: #000000&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #000000&quot;&gt;]&lt;/span&gt; = &lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #000000&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ENUM_LIST&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;DO_DESCRIPTION&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #000000&quot;&gt;}&lt;/span&gt;;&lt;br /&gt;
&lt;span style=&quot;color: #000000&quot;&gt;}&lt;/span&gt;;&lt;/div&gt;&lt;br /&gt;
위 문장이 전처리기 지시어로 도배(?)가 되어 있어서 가독성이 매우 떨어집니다.&lt;br /&gt;
잘 이해가 안가시는 분들을 위해서 한가지 팁을 알려 드리겠습니다.(전처리기 지시어를 자동 변환하는 방법 입니다.)&lt;br /&gt;
&quot;C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl.exe&quot; 를 사용하시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
1. test.h 헤더파일에서 #include 문을 모두 주석처리 합니다.&lt;br /&gt;
&amp;nbsp; (#include 문을 만나면 파일을 포함하려고 시도하다가 찾지 못하면 에러가 발생하고, 전처리기 지시문 변환을 실패합니다.)&lt;br /&gt;
2. cmd(console 입력창)에서 다음과 같이 입력합니다.&lt;br /&gt;
cl /EP /C test.h &amp;gt; c:\result.txt &amp;amp; notepad c:\result.txt&lt;br /&gt;
&lt;br /&gt;
결과는 다음과 같습니다. 두둥!! &lt;div class=&quot;cpp&quot; style=&quot;border-right: #d0d0d0 1px solid; padding-right: 5px; border-top: #d0d0d0 1px solid; padding-left: 5px; font-size: 12px; padding-bottom: 5px; border-left: #d0d0d0 1px solid; color: #000066; line-height: 120%; padding-top: 5px; border-bottom: #d0d0d0 1px solid; font-family: 굴림체; background-color: #f0f0f0&quot;&gt;&lt;span style=&quot;color: #339900&quot;&gt;//////////////////////////////////////////////////////////////////////////&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #339900&quot;&gt;// 결과 확인 (#include 문이 들어 있으면 결과가 출력되지 않는다.)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #339900&quot;&gt;// cl /EP /C test.h &amp;gt; c:\result.txt &amp;amp; notepad c:\result.txt&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;span style=&quot;color: #0000ff&quot;&gt;namespace&lt;/span&gt; nsETREEITEMTYPE&lt;br /&gt;
&lt;span style=&quot;color: #000000&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #339900&quot;&gt;// enum Type 이름(ETREEITEMTYPE)을 설정한다.&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #0000ff&quot;&gt;enum&lt;/span&gt; ETREEITEMTYPE&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #000000&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; eTIY_GROUP, eTIY_CONNECTION, eTIY_COUNT,&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #000000&quot;&gt;}&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #339900&quot;&gt;// enum 배열 이름(ptszETIYDescription)을 설정한다.&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #0000ff&quot;&gt;static&lt;/span&gt; TCHAR* ptszETIYDescription&lt;span style=&quot;color: #000000&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #000000&quot;&gt;]&lt;/span&gt; = &lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #000000&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; _T&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #666666&quot;&gt;&quot;GROUP&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt;, _T&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #666666&quot;&gt;&quot;CONNECTION&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt;, _T&lt;span style=&quot;color: #000000&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #666666&quot;&gt;&quot;COUNT&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000&quot;&gt;)&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #000000&quot;&gt;}&lt;/span&gt;;&lt;br /&gt;
&lt;span style=&quot;color: #000000&quot;&gt;}&lt;/span&gt;;&lt;/div&gt;&lt;br /&gt;
전처리기 지시어가 깔끔하게 해석되어 나오는 것을 볼 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
이렇게 작성하면 enum 값을 문자열로 변환하고 싶을때,&lt;br /&gt;
&lt;blockquote&gt;TCHAR* pString = nsETREEITEMTYPE::ptszETIYDescription[nsETREEITEMTYPE::eTIY_GROUP];&lt;/blockquote&gt;이렇게 쓰시면, &lt;br /&gt;
&lt;blockquote&gt;TCHAR* pString = _T(&quot;GROUP&quot;);&lt;/blockquote&gt;와 같은 결과를 얻으실 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
장점 1. namespace를 사용해서 인텔리센스를 적극적으로 활용할 수 있다.&lt;br /&gt;
장점 2. enum 자료형을 추가하면 그에 맞는 문자열이 등록된다.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; (enum 값만 추가하고 문자열을 등록하지 않는 실수를 막을 수 있다.)&lt;br /&gt;
장점 3. 전처리기 지시어를 두려워하지 않아도 된다.(cl 명령어로 손쉽게 해석해서 보시면 됩니다.)</description>
			<category>소스 코드</category>
			<author>(TTF)</author>
			<guid>http://npteam.net/695</guid>
			<comments>http://npteam.net/695#entry695comment</comments>
			<pubDate>Wed, 07 Jan 2009 21:23:46 +0900</pubDate>
		</item>
	</channel>
</rss>
