<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>planet. silsol</title>
	<link>http://silsol.egloos.com</link>
	<description>planet. silsol</description>
	<language>ko</language>
	<pubDate>Sun, 05 Jul 2009 15:36:23 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>planet. silsol</title>
		<url>http://pds5.egloos.com/logo/200705/16/95/b0008495.gif</url>
		<link>http://silsol.egloos.com</link>
		<width>80</width>
		<height>80</height>
		<description>planet. silsol</description>
	</image>
  	<item>
		<title><![CDATA[ VC++ 프로그래머의 Objective-C 적응기 ]]> </title>
		<link>http://silsol.egloos.com/4181679</link>
		<guid>http://silsol.egloos.com/4181679</guid>
		<description>
			<![CDATA[ 
  <div>Sample Code</div><div><br />
</div><div>VC++</div><div><br />
</div><div>MyClass.h</div><div>===========================================</div><div>#pragma once</div><div><br />
</div><div>class MyClass</div><div>{</div><div>public:</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>MyClass(void);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>~MyClass(void);</div><div><br />
</div><div>private:</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>CString value1;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>int value2;</div><div><br />
</div><div>public:</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>void myMethod();</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>void myMethodWithParam(CString value);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>void myMethodWithParams(CString value1, int value2);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>static void myClassMethod();</div><div><br />
</div><div>public:</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>void setValue1(CString value);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>CString getValue1();</div><div>};</div><div><br />
</div><div><br />
</div><div>===========================================</div><div><br />
</div><div>MyClass.cpp</div><div>===========================================</div><div>#include "StdAfx.h"</div><div>#include "MyClass.h"</div><div><br />
</div><div>MyClass::MyClass(void)</div><div>{</div><div>}</div><div><br />
</div><div>MyClass::~MyClass(void)</div><div>{</div><div>}</div><div><br />
</div><div>void MyClass::myMethod()</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>TRACE("myMethod called\r\n");</div><div>}</div><div><br />
</div><div>void MyClass::myMethodWithParam(CString value)</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>CString str;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>str.Format(_T("myMethodWithParam called\r\n"), value);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>TRACE(str);</div><div>}</div><div><br />
</div><div>void MyClass::myMethodWithParams(CString value1, int value2)</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>CString str;</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>str.Format(_T("myMethodWithParams called : %s %d\r\n"), value1, value2);</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>TRACE(str);</div><div>}</div><div><br />
</div><div>void MyClass::myClassMethod()</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>TRACE("myClassMethod called\r\n");</div><div>}</div><div><br />
</div><div>void MyClass::setValue1(CString value)</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>this-&gt;value1 = value;</div><div>}</div><div><br />
</div><div>CString MyClass::getValue1()</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>return this-&gt;value1;</div><div>}</div><div>===========================================</div><div><br />
</div><div>호출부</div><div>===========================================</div><div>MyClass *data = new MyClass();</div><div><br />
</div><div>data-&gt;myMethod();</div><div>data-&gt;myMethodWithParam(_T("Hello World"));</div><div>data-&gt;myMethodWithParams(_T("Hello World"), 1);</div><div>MyClass::myClassMethod();</div><div><br />
</div><div>data-&gt;setValue1(_T("testString"));</div><div>TRACE(data-&gt;getValue1());</div><div>TRACE(_T("\r\n"));</div><div><br />
</div><div>delete data;</div><div>data = NULL;</div><div><br />
</div><div>===========================================</div><div><br />
</div><div>출력결과</div><div>===========================================</div><div>myMethod called</div><div>myMethodWithParam called</div><div>myMethodWithParams called : Hello World 1</div><div>myClassMethod called</div><div>testString</div><div>===========================================</div><div><br />
</div><div><br />
</div><div><br />
</div><div>Objective-C</div><div>MyClass.h</div><div>===========================================</div><div>#import &lt;Foundation/Foundation.h&gt;</div><div><br />
</div><div><br />
</div><div>@interface MyClass : NSObject {</div><div>&nbsp;&nbsp; &nbsp;NSString *value1;</div><div>&nbsp;&nbsp; &nbsp;int value2;</div><div>}</div><div><br />
</div><div>@property (retain) NSString *value1;</div><div><br />
</div><div>- (void) myMethod;</div><div>- (void) myMethodWithParam:(NSString *)param;</div><div>- (void) myMethodWithParams:(NSString *)param1 secondParam:(int)param2;</div><div>+ (void) myClassMethod;</div><div><br />
</div><div>@end</div><div>===========================================</div><div><br />
</div><div>MyClass.m</div><div>===========================================</div><div>#import "MyClass.h"</div><div><br />
</div><div>@implementation MyClass</div><div><br />
</div><div>@synthesize value1;</div><div><br />
</div><div>- (void) myMethod</div><div>{</div><div>&nbsp;&nbsp; &nbsp;NSLog(@"myMethod called");</div><div>}</div><div><br />
</div><div>- (void) myMethodWithParam:(NSString*)param</div><div>{</div><div>&nbsp;&nbsp; &nbsp;NSLog([NSString stringWithFormat:@"myMethodWithParam called : %@", param]);</div><div>}</div><div><br />
</div><div>- (void) myMethodWithParams:(NSString*)param1 secondParam:(int)param2</div><div>{</div><div>&nbsp;&nbsp; &nbsp;NSLog([NSString stringWithFormat:@"myMethodWithParams called : %@, secondParam : %d", param1, param2]);</div><div>}</div><div><br />
</div><div>+ (void) myClassMethod</div><div>{</div><div>&nbsp;&nbsp; &nbsp;NSLog(@"myClassMethod called");</div><div>}</div><div><br />
</div><div><br />
</div><div>@end</div><div><br />
</div><div>===========================================</div><div><br />
</div><div>호출부</div><div>===========================================</div><div>&nbsp;&nbsp; &nbsp;MyClass *data = [MyClass alloc];</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;[data myMethod];</div><div>&nbsp;&nbsp; &nbsp;[data myMethodWithParam:@"Hello World"];</div><div>&nbsp;&nbsp; &nbsp;[data myMethodWithParams:@"Hello World" secondParam:1];</div><div>&nbsp;&nbsp; &nbsp;[MyClass myClassMethod];</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;[data setValue1:@"testString"];</div><div>&nbsp;&nbsp; &nbsp;NSLog([data value1]);</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;[data release]; &nbsp; &nbsp;</div><div><br />
</div><div>===========================================</div><div><br />
</div><div>출력결과</div><div>===========================================</div><div>2009-07-05 23:23:39.618 pilotWindowBase2[10575:20b] myMethod called</div><div>2009-07-05 23:23:39.619 pilotWindowBase2[10575:20b] myMethodWithParam called : Hello World</div><div>2009-07-05 23:23:39.621 pilotWindowBase2[10575:20b] myMethodWithParams called : Hello World, secondParam : 1</div><div>2009-07-05 23:23:39.621 pilotWindowBase2[10575:20b] myClassMethod called</div><div>===========================================</div><div><br />
</div><div>1. 파일명</div><div>&nbsp;&nbsp; &nbsp;선언부는 .h 로 동일하나 구현부는 .cpp 가 .m 으로 대응된다.</div><div><br />
</div><div>2. class 선언</div><div>&nbsp;&nbsp; &nbsp;.h 에 선언되는 부분</div><div>&nbsp;&nbsp; &nbsp;-----------------</div><div>&nbsp;&nbsp; &nbsp;@interface 클래스명 : 슈퍼클래스</div><div>&nbsp;&nbsp; &nbsp;{</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;멤버변수;</div><div>&nbsp;&nbsp; &nbsp;}</div><div>&nbsp;&nbsp; &nbsp;메서드선언;</div><div>&nbsp;&nbsp; &nbsp;@end</div><div>&nbsp;&nbsp; &nbsp;-----------------</div><div>&nbsp;&nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp;.m 에 구현되는 부분</div><div>&nbsp;&nbsp; &nbsp;-----------------</div><div>&nbsp;&nbsp; &nbsp;@implementation</div><div>&nbsp;&nbsp; &nbsp;구현부</div><div>&nbsp;&nbsp; &nbsp;@end</div><div><br />
</div><div>3. static method 와 class method 구분</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;- 는 instance method</div><div>&nbsp;&nbsp; &nbsp;+ 는 static method(class method)</div><div><br />
</div><div><br />
</div><div>4. setter, getter 자동화하기</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;메서드선언 영역에 @property 를 정의 해줌으로서 getter, setter 를 선언할 수 있다.</div><div>&nbsp;&nbsp; &nbsp;이 경우 구현부 영역에 @synthersize 로 다시 변수명을 명시해주어야 한다.</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;선언 구문의 형식은 아래와 같다.</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;@property (속성) 타입 변수명;</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;@property 를 선언할때 속성은 생략할 수 있으며, 몇 가지 속성이 지정될 수도 있는데, 각각의 의미는 다음과 같다.</div><div>&nbsp;&nbsp; &nbsp;assign : scalor 타입에 적용된다. (기본값이다.)</div><div>&nbsp;&nbsp; &nbsp;copy : Object 타입에 적용하며, 객체가 복사되는것 같다.</div><div>&nbsp;&nbsp; &nbsp;retain : Object 타입에 적용하며, 객체 포인터만 바인딩 되는듯 하다.</div><div>&nbsp;&nbsp; &nbsp;nonatomic : singlethread환경에서 적용하면 좀더 빠르게 동작한다고 한다.</div><div><br />
</div><div>5. 메서드 호출</div><div>&nbsp;&nbsp; &nbsp;[인스턴스 메서드명];</div><div>&nbsp;&nbsp; &nbsp;[클래스명 클래스메서드명];</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;[data myMethod];</div><div>&nbsp;&nbsp; &nbsp;[data myMethodWithParam:@"Hello World"];</div><div>&nbsp;&nbsp; &nbsp;[data myMethodWithParams:@"Hello World" secondParam:1];</div><div>&nbsp;&nbsp; &nbsp;[MyClass myClassMethod];</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;위와 같은 형식을 가진다. [] 가 참 적응 안된다. 한번은 이해해줄수 있는데</div><div>&nbsp;&nbsp; &nbsp;중첩으로 호출될땐.. 아.. 정말..</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;특이한점은 파라메터가 존재하는 메서드의 경우 메서드명을 지을때 with를 붙여준다는것이다.</div><div>&nbsp;&nbsp; &nbsp;일종의 관례라고 하며, cocoa 라이브러리들도 모두 그 규칙을 지키고 있다.</div><div><br />
</div><div>&nbsp;&nbsp; &nbsp;그리고 두번째 파라메터부터는 파라메터가 의미하는 바를 정의해줘야 한다.</div><div>&nbsp;&nbsp; &nbsp;마찬가지로 호출할때도 그 명칭들을 모두 적어줘야 한다.</div><div>&nbsp;&nbsp; &nbsp;첫번째 파라메터의 의미는 메서드명에서 with구문뒤에 명시하고 두번째 파라메터부터는 별도의 설명을 해주는 셈이다.</div><div>&nbsp;&nbsp; &nbsp;이거 상당히 귀찮으면서도, 코드를 처음볼때 꽤 편해진다.</div><div><br />
</div><br/><br/>tag : <a href="/tag/objective-c" rel="tag">objective-c</a>,&nbsp;<a href="/tag/cocoa" rel="tag">cocoa</a>,&nbsp;<a href="/tag/iphone" rel="tag">iphone</a>,&nbsp;<a href="/tag/cpp" rel="tag">cpp</a>			 ]]> 
		</description>
		<category>objective-c</category>
		<category>cocoa</category>
		<category>iphone</category>
		<category>cpp</category>

		<comments>http://silsol.egloos.com/4181679#comments</comments>
		<pubDate>Sun, 05 Jul 2009 15:00:55 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
	<item>
		<title><![CDATA[ SANYO eneloop KIR-S1 손난로 ]]> </title>
		<link>http://silsol.egloos.com/3498696</link>
		<guid>http://silsol.egloos.com/3498696</guid>
		<description>
			<![CDATA[ 
  <div>어제 일본 출장을 갔다온 회사 동료가 얻어다준 손난로 &lt;a href="http://guldari.egloos.com/907812"&gt;KIR-S1&lt;/a&gt;&amp;nbsp;을 사용해봤다.</div><div><br />
</div><div>주머니에 넣고 잠시 다녀봤는데, 따뜻한건지 사실 잘 모르겠다.&nbsp;</div><div>그냥 미지근 한 정도. 더 추워져봐야 알라나.&nbsp;</div><div><br />
</div><div>이 손난로의 존재를 안뒤 관련정보를 찾다가 알게된 사실.</div><div>40도 이상에선 단백질이 변화를 일으켜 피부에 약한 화상을 입을 수 있단다.</div><div>그래서 업그래이드 버전인&amp;nbsp;KIR-S2S는 1단으로 동작시 39도로 동작하도록 기능이 수정되었다고 한다.</div><div>근데 이정도 온도라면 항상 2단으로 놓고 쓸듯하다.</div><div><br />
</div><div>KIR-S1 : 1단 41도(6-7시간사용)&amp;nbsp;2단 43도(4-5시간사용), 5시간 완충 (파우치 포함)</div><div>KIR-S2 : 1단 39도(6-7시간사용) 2단 43도(4-5시간사용), 3시간 완충 (파우치 미포함, 일본에서만 판매)</div><div><br />
</div><div>아직 국내엔 KIR-S1밖에 판매하지 않아서 일본출장가는 회사동료에게 S2S를 사다달라고 했더니,</div><div>잘 팔지를 않는단다. 그러면 냅두라고 그냥 국내에서 S1사겠다고 했다.</div><div><br />
</div><div>그런데 출장간 회사사람들하고 이런저런 얘길하다가 이 손난로 얘길했더니,</div><div>출장온 선물이라며 돌아오는날 KIR-S1을 선물해줬단다. ㅎㅎㅎ</div><div>S2가 아니라도 공짜로 얻었으니, 대 만족이다.</div><div><br />
</div><div>충전케이블이 꽂혀있는 상태에서는 동작하지 않는다.</div><div>재미있게도 PSP충전케이블과 호환이 되는 관계로 회사에선 PSP충전케이블로&nbsp;</div><div>집에서는 딸려온 충전기에 110v 아답터를 꽂아서 충전한다.</div><div><br />
</div><div>동작을 시키면 eneloop 마크아래로 붉은색 LED가 부드럽게 깜박인다.</div><div>마치 심장이 뛰는듯한 느낌을 가지게 한다.</div><div>충전시에는 같은 위치에 연한녹색LED 가 켜지며, 완충시에 꺼진다.</div><div><br />
</div><div>한손에 쏙들어오고 디자인적으로도 아주 심플한 이 제품에 충분히 만족스럽다.</div><div>바라는 점이라면, 충전지를 교체할수 있도록 했으면 한다는 점 정도 되겠다.</div><br/><br/>tag : <a href="/tag/SANYO" rel="tag">SANYO</a>,&nbsp;<a href="/tag/eneloop" rel="tag">eneloop</a>,&nbsp;<a href="/tag/KIR-S1" rel="tag">KIR-S1</a>,&nbsp;<a href="/tag/KIR-S2" rel="tag">KIR-S2</a>,&nbsp;<a href="/tag/손난로" rel="tag">손난로</a>			 ]]> 
		</description>
		<category>pumping</category>
		<category>SANYO</category>
		<category>eneloop</category>
		<category>KIR-S1</category>
		<category>KIR-S2</category>
		<category>손난로</category>

		<comments>http://silsol.egloos.com/3498696#comments</comments>
		<pubDate>Fri, 23 Nov 2007 05:47:21 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 이런 DSLR은 언제쯤 나올까. ]]> </title>
		<link>http://silsol.egloos.com/3339996</link>
		<guid>http://silsol.egloos.com/3339996</guid>
		<description>
			<![CDATA[ 
  GPS와 방향계(?) 가 달려 있어서 언제 어디서 어느 방향으로 찍은 사진인지에 대한 메타 정보와 터치스크린으로 간단한 메모, 또는 음성을&nbsp;기록할 수 있는 포멧을 지원하는 1000만화소 DSLR 카메라.<br><br>또 카메라에 달린 포스팅 버튼을 누르면 해당 사진이 전송되어 메타정보를 분석해주고 등록되는 포토로그.<br><br>그 포토로그와 구글어스를 연동해서 보여줄 수 있는 포토 뷰어.<br><br>그 포토뷰어에서 좋은 사진들을 선택해두면 지정된 개수가 찼을때 양장본 앨범으로 인쇄되어 배송되는 인화서비스.<br><br>또, 지정된 포토 블로그를 지속적으로 모니터링 해서 사진을 띄워주는 디지털 액자.<br><br>같은 것들을&nbsp;기대하는건 무리일까...<br>멀지않은 현실이 될 거 같은데 말야...<br>쓰다보니 DSLR보다 딴 얘기가 더 많군.. ㅋㅋ<br><br>소프트웨어야 당장 내가 만들어버릴 수도 있긴 하겠다.<br>누가 이런 하드웨어들 좀 만들어 주...<br><br/><br/>tag : <a href="/tag/DSLR" rel="tag">DSLR</a>,&nbsp;<a href="/tag/GPS" rel="tag">GPS</a>,&nbsp;<a href="/tag/포토로그" rel="tag">포토로그</a>,&nbsp;<a href="/tag/구글어스" rel="tag">구글어스</a>,&nbsp;<a href="/tag/디지털액자" rel="tag">디지털액자</a>,&nbsp;<a href="/tag/이런거좀만들어줘" rel="tag">이런거좀만들어줘</a>			 ]]> 
		</description>
		<category>pumping</category>
		<category>DSLR</category>
		<category>GPS</category>
		<category>포토로그</category>
		<category>구글어스</category>
		<category>디지털액자</category>
		<category>이런거좀만들어줘</category>

		<comments>http://silsol.egloos.com/3339996#comments</comments>
		<pubDate>Thu, 16 Aug 2007 11:14:33 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
	<item>
		<title><![CDATA[ D-War 디워  ]]> </title>
		<link>http://silsol.egloos.com/3321845</link>
		<guid>http://silsol.egloos.com/3321845</guid>
		<description>
			<![CDATA[ 
  <p>그래서 영화는 개봉날 봐야 한다.<br>아니면 보는날까지 올블과 포탈을 끊던가 -ㅁ-;;<br><br>뭐 이리 논란거리가 많이 되는지. <br>[<a href="http://brownred.tistory.com/193">디워에 먹혀버린 올블로그 : ▶◀올블아, 지켜주지 못해서 미안해</a>]를 보니 공감이 간다.<br>나도 일조하는건가 ㅡㅡ;<br><br>금요일에 무대 인사 오신 심형래감독님을 보았다.<br>오랜만에 보는 얼굴이라 그런지 (일부러 상플, 무르팍도 일부러 안봤으니) <br>아는 동네 형님 만난듯이 반갑더구만.<br><br>모 감독님을 비롯해 돈으로 쳐발라서 누가 그렇게 못만드냐고 하는 혹평들이 있지만, <br>그만한 돈을 투자받을 수 있는 사람이 몇이나 될까 싶기도 하다.<br><br>남이 해놓은거 보고 그 돈이면 나도 하지 하는 사람들 보단 백번 낫지 않은가?<br>그 사람들에게 돈을 투자하지 않는게 현실 아닌가?<br>나한테는 그 돈 안줘서 배 아픈가? <br>그 돈을 투자 받는것도 대단한 능력이다.<br>(그것도 용가리가지고 말이다. -ㅁ-;;)<br>심형래 감독을 돈이랑 묶어서 욕하는 건 좀 이해가 되지 않는다.<br><br>상업영화다. 오락영화고, 작품성이란 잣대는 어울리지 않아보인다.<br>작품성도 있었으면 좋겠다는 얘기들은, 오히려 심형래 감독의 영화에 <br>기대가 너무 컷던 사람들의 욕심인듯 보인다.<br><br>가요와 클래식을 같은 잣대로 평가하지 않는 것 처럼 말이다.<br>가요의 폄하가 아니라 즐기는 기준이 다르다는 얘기다.<br><br>결국 중요한건 결과라고들 하지만, <br>나는 과정이 충분히 어려웠다고 생각하기에<br>(그 돈에도 말이다. 실제 헐리우드의 오락영화 한편 값도 안된다.) <br>그 노력의 댓가 만큼 심형래 감독이 돌려받았으면 하는 바람이 있다.<br>뭐 또 결과야 결국 관객이 결정하겠지. 찬찬히 기다려보겠다.<br></p><p>아무튼 영화에 대해선 큰 기대 없이본 영화이기에 만족스러웠다.<br>CG보러 간 영화에서 스토리를 기대하지 않기에, <br>(웃긴건 오히려 이런 영화를 꼭 코엑스 M관에서 보게 된다. 당연한건가 -ㅁ-;)<br>1시간반 재미있게 영화를 보고 영화표값이 아깝지 않았다.<br>물론 실제로 재미있었던건 약 30분 정도 -ㅅ-;<br>하지만 그 30분에 충분히 재미있었다.<br>간간히 우리나라 사람들만 웃을수 있는 포인트들도 재미있었고,<br></p><p>뭐 그거면 된거 아니겠는가? 표 값이 아깝지 않다면...<br><br>난 심형래 감독의 다음 작품도 보러갈 것이다.</p><br/><br/>tag : <a href="/tag/디워" rel="tag">디워</a>,&nbsp;<a href="/tag/D-War" rel="tag">D-War</a>,&nbsp;<a href="/tag/심형래" rel="tag">심형래</a>,&nbsp;<a href="/tag/작품성" rel="tag">작품성</a>,&nbsp;<a href="/tag/개봉날" rel="tag">개봉날</a>			 ]]> 
		</description>
		<category>디워</category>
		<category>D-War</category>
		<category>심형래</category>
		<category>작품성</category>
		<category>개봉날</category>

		<comments>http://silsol.egloos.com/3321845#comments</comments>
		<pubDate>Mon, 06 Aug 2007 02:23:43 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
	<item>
		<title><![CDATA[ HTML4 와 HTML5 의 차이점 ]]> </title>
		<link>http://silsol.egloos.com/3315437</link>
		<guid>http://silsol.egloos.com/3315437</guid>
		<description>
			<![CDATA[ 
  <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 100%"><span style="FONT-FAMILY: 맑은 고딕">출처 : <a title="조용히 진행되고 있는 HTML5" href="http://ilmol.com/wp/2007/08/02/328/" rel="bookmark"><span style="FONT-FAMILY: 굴림">조용히 진행되고 있는 HTML5</span></a><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><br></o:p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="COLOR: #383838"><span style="FONT-SIZE: 100%; FONT-FAMILY: 맑은 고딕"><br>참고 : <a href="http://www.creation.net/work/html5/html4-differences/">HTML 5 differences from HTML 4<br><u><span style="COLOR: #810081"><u><span style="COLOR: #810081"><u><span style="COLOR: #810081"><a href="http://www.creation.net/work/html5/html4-differences/"><br></a><a href="http://www.creation.net/work/html5/html4-differences/"></span></u></a></span></u></a></span></u></a><u><span style="COLOR: #810081"><u><span style="COLOR: #810081"><u><span style="COLOR: #810081"><a href="http://www.creation.net/work/html5/html4-differences/"></span></u></a></span></u></a></span></u>전체적으로 문서 자체의 데이터적인 표현능력을 향상시키고</span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US"><br></span>스타일에 관련된 부분들은 모두 제거하고</span></span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">, <br></span>머리말<span lang="EN-US">, </span>꼬리말 테그가 추가 되었고<span lang="EN-US"><o:p></o:p></span></span></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="COLOR: #383838"><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%">쓸까 말까 항상 고민하게 만들던<span lang="EN-US"> Frame</span>도 제거하는 등<span lang="EN-US">, <o:p></o:p></span></span></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="COLOR: #383838"><span style="FONT-SIZE: 100%; FONT-FAMILY: 맑은 고딕">문서 본연의 의미를 강화한 것처럼 느껴집니다</span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">.<br><br>DOCTYPE&nbsp;</span>정의 부분이 바뀌었고</span></span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">, <br>section, article</span>등 글 단위에 대한 개념이 추가되었습니다</span></span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">.<br><br></span>표현 가능한 타입도 늘어나서<span lang="EN-US"> audio, video, time, canvas </span>등등이 추가 되었군요</span></span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">.<br><br></span>스타일에 관련된 테그나 어트리뷰트는 정말 대거 삭제 되었군요</span></span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">.<br>center, s, strike, align, color, width, height </span>등등</span></span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">...<br></span>너무 쉽게 써오던 대부분의 기본 스타일링 테그마저 없애버렸습니다</span></span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">.<br></span>모두<span lang="EN-US"> CSS</span>로 대체 하겠다는 말입니다</span></span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">.<br><br></span>언제부터 실제로 많이 쓰게 될진 모르겠지만</span></span><span style="FONT-FAMILY: 맑은 고딕"><span style="FONT-SIZE: 100%"><span lang="EN-US">,<br></span>익숙하디 익숙한<span lang="EN-US"> HTML4</span>을 이제 천천히 바꾸어가야 할 때인가 봅니다<span lang="EN-US">.<o:p></o:p></span></span></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><br><br></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>			 ]]> 
		</description>
		<category>be learning</category>

		<comments>http://silsol.egloos.com/3315437#comments</comments>
		<pubDate>Thu, 02 Aug 2007 04:01:30 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 블로그 검색신이 필요하다. ]]> </title>
		<link>http://silsol.egloos.com/3313780</link>
		<guid>http://silsol.egloos.com/3313780</guid>
		<description>
			<![CDATA[ 
  요즘 블로그에 대해서 이것저것 살펴보고 있는데, <br>블로그를 쓰는 사람들마다 자신의 블로그를 운영하는 방법이 너무나 다양하다.<br><br>내 생각만으로 크게 나누어보면,<br><br>예전 개인 홈페이지의 역할을 이어 받아 개인이 소소한 일상의 사진들이나 사연들을 담는 일기장 형태.<br>자신이 학습한 내용이나, 연구한 결과등을 기록하는 연구결과물.<br>사회적 이슈등에 대해서 자신의 의견을 피력하는 저널리스트.<br>그냥 남에글 퍼다가 애드센스 달아서 돈벌어보겠다는 스플로그.<br><br>정도로 나뉘어 지는듯 하다.<br>내가 생각하는 블로그의 본 취지는 웹에 나의 로그를 남기겠다는 일기장에 가까웠지만, <br>정말 가치가 있는 자료들은 연구결과물이라고 할 수 있겠다.<br>자신의 노하우를 공개하고 공유하고, 사람들의 트랙백이 연결되고...<br>RSS의 활용도가 극대화 되고 정보의 신디케이트가 만들어지는 가장 이상적인 모습으로 보여진다.<br><br>물론 저널리스트 성격의 블로그도 좋은 자료다. <br>하지만 이 역시도 진짜 자신의 생각을 제대로 적을 줄 아는 사람들에게나 이런 의미를 부여할 수 있다.<br>기득권자에 있는 폐쇄된 언론보다 훨씬 자유로운 의견들이 많은 사람에게 쉽게 전달 될 수 있기 때문이다.<br>그러나&nbsp;너무 많은 사람들이 사회적 이슈에 대해서 글을 적으면서,<br>이쪽 바닥도 정보의 홍수에 시달리고 있어 보인다.<br>시간을 들여서 좋은 글을 찾기란 쉽지가 않다는 얘기다.<br><br>결국 메타사이트등에서 순위가 높은 사이트들만 찾게&nbsp;된다.<br>이건 또 사람들이&nbsp;많이 찾는 블로그이다 보니, 언론탄압(?) 성격의 제제들이 요즘 심심찮게 보인다.<br>좀 모호한 이유들을 대가면서 해당 게시물을 비공개로 전환하겠단다.<br>최근 아프간 사태에 대한 글들을 보면 이런식의 제제로 닫혀버린 글들이 꽤 있다.<br>만천하에 드러나 있는 사실들을 기존 언론에 대해서 제제하는 방식으로 똑같이 대처하려하다니..<br>이렇게 손으로 눈을 가린다고 하늘이 가려지겠는가...<br>심지어 요즘은 삭제된 글도 구글에서 캐쉬로 검색해서 복구하는 세상이다.<br><br>삼천포로 좀 빠졌다만, <br>이런 저런 사회적인 테클들과 넘처나는&nbsp;양 때문에 <br>좋은 저널리스트 성격의 블로그를 보기가 쉽지 않다는 얘기다.<br><br>그리고 마지막으로 스플로그, <br>아아.. 제발 구글이 애드센스 사업을 접었으면 좋겠다.<br>아주 쓰레기 천국이다. <br>안그래도 중복되는 자료가 넘쳐나는 세상에 <br>성격상 테그 위주로 검색되는 검색결과는 <br>스플로그 덕분에 아주 처참하게 난도질 되고 있다.<br>뭐 이거 찾을 수가 있어야지 환장할 노릇이다.<br><br>애드센스가 가져오는 긍적적 효과도 있지만, 이건 너무 복제질이 심하다.<br>우리나라에서만 일까? 해외사례는 모르겠지만, <br>요즘 티스토리에서 폭팔적으로 늘어나버린 스플로그들은 감당이 안된다.<br><br>좋은 블로그 찾기가 쉽지 않아지고 있다.<br>마치 수년전 웹이 폭팔적으로 증가했을때 <br>우리에겐 구글신이 강림하시어 해결을 해주셨는데,<br>블로그에 대해서는 아직 그런 존재가 없는듯하다.<br><br>블로그 검색신이 필요하다.<br><br/><br/>tag : <a href="/tag/블로그" rel="tag">블로그</a>,&nbsp;<a href="/tag/검색신" rel="tag">검색신</a>,&nbsp;<a href="/tag/구글" rel="tag">구글</a>,&nbsp;<a href="/tag/애드센스" rel="tag">애드센스</a>,&nbsp;<a href="/tag/스플로그" rel="tag">스플로그</a>			 ]]> 
		</description>
		<category>blah</category>
		<category>블로그</category>
		<category>검색신</category>
		<category>구글</category>
		<category>애드센스</category>
		<category>스플로그</category>

		<comments>http://silsol.egloos.com/3313780#comments</comments>
		<pubDate>Wed, 01 Aug 2007 04:36:24 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
	<item>
		<title><![CDATA[ IDataReader로 데이터 읽어 올때 타입변환 ]]> </title>
		<link>http://silsol.egloos.com/3312248</link>
		<guid>http://silsol.egloos.com/3312248</guid>
		<description>
			<![CDATA[ 
  <p>각 DB데이터 필드 타입에 따라 .NET의 DataReader를 통해 읽었을때 자료형이 달라진다.<br>아래 표를 참고하면 어떤 형식으로 읽혀지는지 쉽게 구분가능하다.<br><br><table cellspacing="0" cellpadding="0" border="1"><tbody><tr><td>.NET Framework 형식</td><td>SQL Server 형식</td><td>Oracle 형식</td><td>ADO 형식</td><td>ODBC 형식</td></tr><tr><td>Byte</td><td>tinyint</td><td>&nbsp;</td><td>adTinyInt<br>adUnsignedTinyInt</td><td>SQL_TINYINT</td></tr><tr><td>Byte[]</td><td>binary<br>image<br>timestamp<br>varbinary</td><td>BFILE<br>BLOB<br>LONG RAW<br>RAW</td><td>adBinary</td><td>SQL_BINARY<br>SQL_LONGVARBINARY<br>SQL_VARBINARY</td></tr><tr><td>Int16</td><td>smallint</td><td>&nbsp;</td><td>adSmallInt</td><td>SQL_SMALLINT</td></tr><tr><td>Int32</td><td>int</td><td>INTERVAL YEAR TO MONTH *</td><td>adInteger</td><td>SQL_INTEGER</td></tr><tr><td>Int64</td><td>bigint</td><td>&nbsp;</td><td>adBigInt</td><td>SQL_BIGINT</td></tr><tr><td>UInt16</td><td>&nbsp;</td><td>&nbsp;</td><td>adUnsignedSmallInt</td><td>&nbsp;</td></tr><tr><td>UInt32</td><td>&nbsp;</td><td>&nbsp;</td><td>adUnsignedInt</td><td>&nbsp;</td></tr><tr><td>UInt64</td><td>&nbsp;</td><td>&nbsp;</td><td>adUnsignedBigInt</td><td>&nbsp;</td></tr><tr><td>Decimal</td><td>decimal<br>money<br>numeric<br>smallmoney</td><td>FLOAT<br>INTEGER<br>NUMBER<br>UNSIGNED INTEGER</td><td>adCurrency<br>adDecimal<br>adNumeric</td><td>SQL_DECIMAL<br>SQL_NUMERIC</td></tr><tr><td>Double</td><td>float</td><td>&nbsp;</td><td>adDouble</td><td>SQL_DOUBLE</td></tr><tr><td>DateTime</td><td>datetime<br>smalldatetime</td><td>DATE<br>TIMESTAMP *<br>TIMESTAMP WITH LOCAL TIME ZONE *<br>TIMESTAMP WITH TIME ZONE *</td><td>adDate<br>adDBDate<br>adDBTime<br>adDBTimeStamp<br>adFileTime</td><td>SQL_TYPE_TIMES<br>SQL_TYPE_TIMESTAMP</td></tr><tr><td>String</td><td>&nbsp;</td><td>&nbsp;</td><td>adBSTR<br>adChar<br>adWChar</td><td>&nbsp;</td></tr><tr><td>String<br>Char[]</td><td>char<br>nchar<br>ntext<br>nvarchar<br>text<br>varchar</td><td>CHAR<br>CLOB<br>LONG<br>NCHAR<br>NCLOB<br>NVARCHAR2<br>ROWID<br>VARCHAR2</td><td>&nbsp;</td><td>SQL_CHAR<br>SQL_LONG_VARCHAR<br>SQL_WCHAR<br>SQL_WLONGVARCHAR<br>SQL_WVARCHAR</td></tr><tr><td>Guid</td><td>uniqueidentifier</td><td>&nbsp;</td><td>adGUID</td><td>SQL_GUID</td></tr><tr><td>Boolean</td><td>bit</td><td>&nbsp;</td><td>adBoolean</td><td>SQL_BIT</td></tr><tr><td>Xml</td><td>xml</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>Object</td><td>&nbsp;</td><td>&nbsp;</td><td>adIDispatch<br>adIUnknown<br>adPropVariant<br>adVariant</td><td>&nbsp;</td></tr><tr><td>Object *</td><td>sql_variant</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>TimeSpan</td><td>&nbsp;</td><td>INTERVAL DAY TO SECOND *</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>Single</td><td>real</td><td>&nbsp;</td><td>adSingle</td><td>SQL_REAL</td></tr><tr><td>ExternalException</td><td>&nbsp;</td><td>&nbsp;</td><td>adError</td><td>&nbsp;</td></tr><tr><td>DataReader를 통해 지원</td><td>&nbsp;</td><td>&nbsp;</td><td>adChapter</td><td>&nbsp;</td></tr><tr><td>지원되지 않음</td><td>&nbsp;</td><td>REF CURSOR</td><td>adUserDefined<br>adVarNumeric</td><td>&nbsp;</td></tr></tbody></table><br></p><br/><br/>tag : <a href="/tag/IDataReader" rel="tag">IDataReader</a>,&nbsp;<a href="/tag/CSharp" rel="tag">CSharp</a>,&nbsp;<a href="/tag/.NET2.0" rel="tag">.NET2.0</a>,&nbsp;<a href="/tag/cs" rel="tag">cs</a>,&nbsp;<a href="/tag/MSSQL" rel="tag">MSSQL</a>,&nbsp;<a href="/tag/Oracle" rel="tag">Oracle</a>,&nbsp;<a href="/tag/ADO" rel="tag">ADO</a>,&nbsp;<a href="/tag/ODBC" rel="tag">ODBC</a>			 ]]> 
		</description>
		<category>be learning</category>
		<category>IDataReader</category>
		<category>CSharp</category>
		<category>.NET2.0</category>
		<category>cs</category>
		<category>MSSQL</category>
		<category>Oracle</category>
		<category>ADO</category>
		<category>ODBC</category>

		<comments>http://silsol.egloos.com/3312248#comments</comments>
		<pubDate>Tue, 31 Jul 2007 06:28:08 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
	<item>
		<title><![CDATA[ .NET으로 ActiveX 만들기 ]]> </title>
		<link>http://silsol.egloos.com/3310351</link>
		<guid>http://silsol.egloos.com/3310351</guid>
		<description>
			<![CDATA[ 
  <p>.NET에서는 ActiveX를 대체할만한 SmartClient 기술이 있음에도 불구하고 ActiveX 만들기를 하는 이유는 다음과 같다.<br><br>기존 Unmanaged DLL을 사용하는 웹 컨트롤은 SmartClient 배포방식에 포함될수가 없다는 점 때문이다.<br>순수 Managed Code만으로 구성되어있을 경우 Smart 하게 배포가 가능한 모양이다.<br>이해가 안되는점은 Click Once에서 처럼 Manifest파일로서 묶어주면 별 차이 없지 않나 싶긴 하지만, <br>뭐 그나름대로 MS의 정책일테니... 그것까지 따지는것은 다음기회로 넘어가야겠다.<br><br>.NET에서는 Attribute들을 제공하여 Class자체에 여러 특성을 부여하곤 한다.<br>가끔 C++의 Template 를 보는듯한 느낌이 들때도 있다.<br>이 특성들을 몇개만 기술해주면 간단히 ActiveX를 만들 수 있다.<br>하지만 이 특성만으로는 쓸만한 ActiveX를 만들어내기에는 부족하며, <br>몇가지 작업을 더 해주어야 한다.<br><br>여기에서 설명할 ActiveX는 Flash와 같이 사용자 UI가 있는 ActiveX이다.<br><br>먼저 구성을 살펴보면 <br>UserControl을 상속받은 클래스와<br>제공되는 메서드를 기술할 Interface와 <br>ActiveX가 발생시키는 이벤트에 대한 Interface,<br>이벤트용 인터페이스 메서드유형별 delegate,<br>IObjectSafety 인터페이스가 필요하다.<br><br>일단 클래스 라이브러리 프로젝트를 하나 추가하고, <br>UserControl을 상속받은 '사용자 정의 컨트롤'을 하나 추가한다.<br><br>코드 편집화면으로 들어와서 메서드용 인터페이스와 이벤트용 인터페이스, 각 이벤트 메서드 형식에 해당하는 delegate를 기술한다.<br>자세한 내용은 제일 아래 샘플 코드를 참고한다.<br><br>그리고 IObjectSafety를 선언해야하는데, 이 내용은 코드샘플에 담아두었으니 그대로 복사해서 쓰면 된다.<br>아직까지도 왜 이걸 선언하면 안전하다는건지 모르겠다.<br>MS문서에 따르면 이걸 선언해줌으로서 이 ActiveX가 안전하다는 표시를 하는거라는데,&nbsp;<br>악의적인 코드를 담고&nbsp;이걸 선언하면 그만 아닌가?<br>이 얘긴 길어질듯 하니 원칙은&nbsp;좀 접어두고 일단 선언하자 ㅡ.ㅡ;;;<br><br>지금부터는 필요한 어트리뷰트에 대한 설명이다.<br><br>[ComVisible(bool visible)]<br>사실 이 특성만 있으면 ActiveX다. 별다르게 해줄일이 없다. <br>그러나 ActiveX 자체가 가졌던 수많은 특성들을 더해주어야만 쓸만한 ActiveX가 될 수 있다.<br><br>[Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")]<br>해당 클래스의 Guid값을 부여한다. C++로 개발했을때 와 달리 딱 요기 한군데만 지정해주면 된다.<br>각 클래스나 인터페이스들은 고유의 GUID를 가져야한다. 지정하지 않는다면, 알아서 생성해주기는 하지만, <br>결국 우리가 알고 있는 이름이 되어야, 다른데서 써먹을것 아닌가?<br>VS2005의 도구 -&gt; Guid생성기를 활용하여 새로운 GUID를 생성후 명시적으로 지정해서 사용하자.<br><br>[InterfaceType(ComInterfaceType type)]<br>InterfaceIsDual, InterfaceIsIDispatch, InterfaceIsIUnknown 세가지 값을 지정할 수 있으며, 원하는 데로 골라쓰면 된다.<br>이 옵션에 대한 얘기들은 기존 COM관련 문서를 찾아 보라. <br>웹에서 사용하기 위한 ActiveX라면, InterfaceIsIDispatch를 쓰면 된다.<br><br>[ComSourceInterfaces(Type type)]<br>요게 재미있는 놈이다. 해당 타입에 인터페이스의 타입값을 부여하면 <br>그 인터페이스의 메서드들이 이벤트 핸들러 처럼 동작하게 된다.<br><br>[DispId(int dispid)]<br>각 메서드, 프라퍼티, 이벤트 메서드에 대해서 부여하게 되며 서로 충돌이 있지 않으면 된다. <br>메서드 프라퍼티는 충돌이 없어야 하며 이벤트와 는 별도다<br>부여하지 않아도 무방하나, 난 일일이 관리해주는 편이다.<br><br>아래 샘플 코드는 직접 작성한 코드이며&nbsp;참고용으로 활용해보자. <br><br><br>체크사항<br><br>* public partial class CActiveXControl : UserControl, IActiveXControl_Method, IObjectSafety<br>이 구문에서 꼭 UserControl다음에 IActiveXControl_Method가 와야 한다. <br>IObjectSafety나 기타 다른 Interface가 오면 안된다. 함수를 못찾게 되어버린다.<br>이유는 아마 InterfaceIsDispatch 때문인듯 싶다. 자세한 내용은 나도 잘 모르겠다.<br>이걸 InterfaceIsDual로 바꾸면 될듯한데, 바꿔보면 웹에서 구동할때 <br>또 다른 오류가 발생하는것을 확인해서, 그냥 돌아와버렸다.<br><br>* 우리는 Managed Class를 ActiveX로 쓰고자 하는것이기에 <br>어셈블리 등록을 해주어야 한다.<br>결국 COM이므로 이전에 C++로 작성하던것이랑 하는일은 매 한가지다.<br>등록이되어야 하는것이다.<br>다만 사용하는 명령이 다르다.<br><br>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe<br><br>이런 경로 쯤에 있으니 버전에 따라 찾아서 쓰면 되겠다.<br>간단한 사용법을 덧붙이자면,<br><br>Regasm.exe AssemblyPath [Option]<br><br>/codebase : 이걸 설정해주어야 나중에 이 어셈블리의&nbsp;파일경로를&nbsp;읽어 올 수 있다.<br>/unregister : 등록을 취소한다. <br><br>이 두가지 정도의 옵션 정도만 기억하면 된다.<br>자세한건 한번 실행해보면 사용법이 주루룩 나오니 참고하면 되겠다.<br><br><br>* 만약 기존 DLL들을 사용한다면 DLL이 있는 위치에서 실행되어야 한다.<br>해당 DLL을 로딩하기전에 DLL이 있는 디렉토리로 실행경로을 옮겨주자.<br><br>이 코드는 현재 만들고 있는 ActiveX가 담긴 Assembly가 COM으로 등록되었을때,<br>해당 레지스트리에서 파일 경로를 읽어와서 실행 경로로 잡아주는 코드이다.<br>즉, 위에서 설명한 Regasm을 할때 /codebase옵션을 붙여주어야만 정상동작하는 코드다.<br><br>중요한건 마지막 줄이므로 경로는&nbsp;필요한데로 적절히 쓰면 되겠다.<br></p><blockquote>string sGUID = this.GetType().GUID.ToString("B");<br>string sRegPath = Path.Combine(Path.Combine(@"CLSID", sGUID), "InprocServer32");<br>RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(sRegPath);<br>object oValue = regKey.GetValue("CodeBase");<br>Uri uriFilePath = new Uri(oValue.ToString(), UriKind.Absolute);<br>Environment.CurrentDirectory = Path.GetDirectoryName(uriFilePath.LocalPath);</blockquote><p><br><br><br>이제 샘플코드를 보자.<br><br>IObjectSafety 선언하기<br></p><blockquote><p>/// &lt;summary&gt;<br>/// See Internet SDK, IObjectSafety.<br>/// &lt;/summary&gt;<br>[Flags]<br>public enum ObjectSafetyFlags : int<br>{<br>&nbsp;/// &lt;summary&gt;<br>&nbsp;/// Caller of interface may be untrusted<br>&nbsp;/// &lt;/summary&gt;<br>&nbsp;INTERFACESAFE_FOR_UNTRUSTED_CALLER = 1,</p><p>&nbsp;/// &lt;summary&gt;<br>&nbsp;/// Data passed into interface may be untrusted<br>&nbsp;/// &lt;/summary&gt;<br>&nbsp;INTERFACESAFE_FOR_UNTRUSTED_DATA = 2,</p><p>&nbsp;/// &lt;summary&gt;<br>&nbsp;/// Object knows to use IDispatchEx.<br>&nbsp;/// &lt;/summary&gt;<br>&nbsp;INTERFACE_USES_DISPEX = 4,</p><p>&nbsp;/// &lt;summary&gt;<br>&nbsp;/// Objects knows to use IInternetHostSecurityManager.<br>&nbsp;/// &lt;/summary&gt;<br>&nbsp;INTERFACE_USES_SECURITY_MANAGER = 8,</p><p>&nbsp;/// &lt;summary&gt;<br>&nbsp;/// Flags combination.<br>&nbsp;/// &lt;/summary&gt;<br>&nbsp;SafeForScripting = INTERFACESAFE_FOR_UNTRUSTED_CALLER |<br>&nbsp;INTERFACESAFE_FOR_UNTRUSTED_DATA<br>}</p><p>/// &lt;summary&gt;<br>/// See Internet SDK, IObjectSafety.<br>/// &lt;/summary&gt;<br>[ComVisible(true)]<br>[ComImport]<br>[Guid("CB5BDC81-93C1-11cf-8F20-00805F2CD064")]<br>[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]<br>public interface IObjectSafety<br>{<br>&nbsp;void GetInterfaceSafetyOptions(ref Guid riid, out int supportedOptions, out int enabledOptions);<br>&nbsp;void SetInterfaceSafetyOptions(ref Guid riid, int optionSetMask, int enabledOptions);<br>}</p></blockquote><p><br>샘플 C# 코드<br></p><blockquote><p>[ComVisible(false)]<br>public delegate void EventHandlerMyEvent(string sValue);<br>[Guid("5E603C7D-4B7C-412a-BAB4-063E5674F97A")]<br>[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]<br>[ComVisible(true)]<br>public interface IActiveXControl_Method<br>{<br>&nbsp;[DispId(1)]<br>&nbsp;void Method1(string sParam);<br>&nbsp;[DispId(2)]<br>&nbsp;string Property1<br>&nbsp;{<br>&nbsp;&nbsp;get;<br>&nbsp;&nbsp;set;<br>&nbsp;}<br>}<br>[Guid("93733F3F-2CDF-4979-ACEC-C53E98B10077")]<br>[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]<br>[ComVisible(true)]<br>public interface IActiveXControl_Event<br>{<br>&nbsp;[DispId(1)]<br>&nbsp;void OnEventFire(string sValue);<br>}<br>[Guid("0FFC1A66-39DA-41bf-BB7C-43539A27D87C")]<br>[ComVisible(true)]<br>[ClassInterface(ClassInterfaceType.None)]<br>[ComSourceInterfaces(typeof(IActiveXControl_Event))]<br>public partial class CActiveXControl : UserControl, IActiveXControl_Method, IObjectSafety<br>{<br>&nbsp;public event EventHandlerMyEvent OnEventFire;</p><p><br>&nbsp;public CActiveXControl()<br>&nbsp;{<br>&nbsp;&nbsp;InitializeComponent();<br>&nbsp;}</p><p>&nbsp;#region IObjectSafety 멤버<br>&nbsp;public void GetInterfaceSafetyOptions(ref Guid riid, out int supportedOptions, out int enabledOptions)<br>&nbsp;{<br>&nbsp;&nbsp;supportedOptions = enabledOptions = (int)ObjectSafetyFlags.SafeForScripting;<br>&nbsp;}<br>&nbsp;<br>&nbsp;public void SetInterfaceSafetyOptions(ref Guid riid, int optionSetMask, int enabledOptions)<br>&nbsp;{<br>&nbsp;}<br>&nbsp;#endregion</p><p>&nbsp;#region IActiveXControl_Method 멤버<br>&nbsp;public void Method1(string sParam)<br>&nbsp;{<br>&nbsp;&nbsp;string sMessage = sParam + " " + _sProperty1;<br>&nbsp;&nbsp;MessageBox.Show(this, sMessage + " In .NET", "ActiveXControl");<br>&nbsp;&nbsp;if (null != OnEventFire)<br>&nbsp;&nbsp;&nbsp;OnEventFire(sMessage);<br>&nbsp;}<br>&nbsp;string _sProperty1;<br>&nbsp;public string Property1<br>&nbsp;{<br>&nbsp;&nbsp;get { return _sProperty1; }<br>&nbsp;&nbsp;set { _sProperty1 = value; }<br>&nbsp;}<br>&nbsp;#endregion<br>}</p></blockquote><p><br>샘플 HTML 코드<br></p><blockquote>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;<br>&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"&gt;<br>&lt;head&gt;<br>&nbsp;&nbsp;&nbsp; &lt;title&gt;ActiveXControl Test Page&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&nbsp;&nbsp;&nbsp; &lt;object id="ActiveXControl" classid="clsid:0FFC1A66-39DA-41bf-BB7C-43539A27D87C" width="100"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height="100"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="Property1" value="World!!" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/object&gt;<br>&nbsp;&nbsp;&nbsp; &lt;br /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript"&gt;<br>&nbsp;&nbsp;&nbsp; function ActiveXControl::OnEventFire (sValue) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(sValue + " In Script");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &lt;/script&gt;<br>&nbsp;&nbsp;&nbsp; &lt;div&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="button" value="Hello World" onclick="ActiveXControl.Method1('Hello');" /&gt;&lt;br /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br></blockquote><p><br><br>이상 위의 샘플을 작성해서 돌려보면, 메서드 호출, 프라퍼티 바인딩, 이벤트 발생시키기 해당과정에서 파라메터 전달법등에 대해서 알 수 있을것이다.</p><p></p><br/><br/>tag : <a href="/tag/VS2005" rel="tag">VS2005</a>,&nbsp;<a href="/tag/ActiveX" rel="tag">ActiveX</a>,&nbsp;<a href="/tag/CSharp" rel="tag">CSharp</a>,&nbsp;<a href="/tag/cs" rel="tag">cs</a>,&nbsp;<a href="/tag/IObjectSafety" rel="tag">IObjectSafety</a>,&nbsp;<a href="/tag/ComVisible" rel="tag">ComVisible</a>			 ]]> 
		</description>
		<category>be learning</category>
		<category>VS2005</category>
		<category>ActiveX</category>
		<category>CSharp</category>
		<category>cs</category>
		<category>IObjectSafety</category>
		<category>ComVisible</category>

		<comments>http://silsol.egloos.com/3310351#comments</comments>
		<pubDate>Mon, 30 Jul 2007 04:47:28 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 뫼비우스의 일? ]]> </title>
		<link>http://silsol.egloos.com/3297621</link>
		<guid>http://silsol.egloos.com/3297621</guid>
		<description>
			<![CDATA[ 
  일이 안되는데...<br><br>할껀 많은데...<br><br>진도는 안나가고...<br><br>머리는 아파오고...<br><br>피로는 쌓이고...<br><br>능률은 떨어지고...<br><br>그러니 일은 안되고...<br><br/><br/>tag : <a href="/tag/일" rel="tag">일</a>,&nbsp;<a href="/tag/일일일" rel="tag">일일일</a>,&nbsp;<a href="/tag/또일" rel="tag">또일</a>			 ]]> 
		</description>
		<category>monologue</category>
		<category>일</category>
		<category>일일일</category>
		<category>또일</category>

		<comments>http://silsol.egloos.com/3297621#comments</comments>
		<pubDate>Sun, 22 Jul 2007 14:36:49 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
	<item>
		<title><![CDATA[ VAIO TZ17 ]]> </title>
		<link>http://silsol.egloos.com/3278067</link>
		<guid>http://silsol.egloos.com/3278067</guid>
		<description>
			<![CDATA[ 
  출처 노트기어 : <a onfocus="this.blur();" href="http://www.notegear.com/Content/Content_Read.asp?TNum=588&amp;gotopage=1&amp;kind=2&amp;Search=&amp;SearchString="><b><span style="COLOR: #333333">[프리뷰] 소니바이오 10년의 노하우가 집약되다! - 소니 바이오 TZ 시리즈</span></b></a><br><br>드디어.. 뜨고야 말았다..<br>소니코리아에서 삽질을 하고 있지만, TZ가 국내에 정발 예판에 들어갔다.<br><br>엔화가 800원도 안되는 요즈음.. 무슨생각으로 소코의 가격이 결정되었는지 모르겠지만, <br>왜 240만원씩이나 나가게 잡힌걸까..<br><br>일본내수기본 +&nbsp;보르도케이스 + Core2Duo U7600 + SSD32GB + 160GB 2.5인치 5400RPM, 무선랜 abgn, 메모리 2GB<br><br>한 가격보다 국내 정발 가격이 비싸냔 말이다. <br>찾아보면 알겠지만, SSD32GB + 160GB 2.5인치 5400RPM 만 해도 60만원인데..<br>어떻게 이런 가격이 나오냔 말이다.<br>AS용 워런티를 별도 구매를 한다고 해도&nbsp;<br>내수를 구매대행하는게 싸다는 게 일반적 견해다.<br><br>VAIO 10년의 역사와 노하우가 그대로 담겨 있다는 이 녀석.<br>머릿속에는 아직 U1010이 멤돌고 있지만(이 녀석 가격 땜시...) <br><br>그래도 진짜 사고 싶은놈은 단연..이 녀석이다.<br>둘다 실물을 보러 가야겠다.<br/><br/>tag : <a href="/tag/VAIO" rel="tag">VAIO</a>,&nbsp;<a href="/tag/소니코리아" rel="tag">소니코리아</a>,&nbsp;<a href="/tag/소코" rel="tag">소코</a>,&nbsp;<a href="/tag/10주년" rel="tag">10주년</a>,&nbsp;<a href="/tag/TZ17" rel="tag">TZ17</a>			 ]]> 
		</description>
		<category>pumping</category>
		<category>VAIO</category>
		<category>소니코리아</category>
		<category>소코</category>
		<category>10주년</category>
		<category>TZ17</category>

		<comments>http://silsol.egloos.com/3278067#comments</comments>
		<pubDate>Wed, 11 Jul 2007 03:59:50 GMT</pubDate>
		<dc:creator>silsol</dc:creator>
	</item>
</channel>
</rss>
