<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/style/rss/style.xsl" type="text/xsl" media="screen"?>
<rss version="2.0">
	<channel>
		<title>無名</title>
		<link>http://10year.tistory.com/</link>
		<description></description>
		<language>ko</language>
		<pubDate>Fri, 25 Jul 2008 09:19:52 +0900</pubDate>
		<generator>Tistory 1.1</generator>
		<item>
			<title>visual studio 2008 iostream.h</title>
			<link>http://10year.tistory.com/entry/visual-studio-2008-iostreamh</link>
			<description>visual studio 2005 부터는 iostream.h 가 기본으로 지원되지 않는단다.&lt;br /&gt;#include &amp;lt;iostream&amp;gt; 해야 하고,&lt;br /&gt;cout 을 쓸려면 std::cout 하거나 using namespace std 를 해줘야 한다.&lt;br /&gt;vc6.0에서 일했었으니 난 참 옛날사람이다. - ;</description>
			<category>팁</category>
			<category>iostream.h visual studio 2008</category>
			<author>stone</author>
			<guid>http://10year.tistory.com/127</guid>
			<comments>http://10year.tistory.com/entry/visual-studio-2008-iostreamh#entry127comment</comments>
			<pubDate>Fri, 25 Jul 2008 09:19:01 +0900</pubDate>
		</item>
		<item>
			<title>crontab.</title>
			<link>http://10year.tistory.com/entry/crontab</link>
			<description>아래와 같은 정기 작업을 위해서 crontab을 이용했다.&lt;br /&gt;&lt;br /&gt;* DB와 미디어서버의 상태를 싱크해주기&lt;br /&gt;* 쌓인 이미지 파일 삭제하기&lt;br /&gt;&lt;br /&gt;/etc/crontab 을 편집하고 crond를 재시작 했으나 변경내용이 적용되지 않는다.&lt;br /&gt;crontab -e 해서 편집하니 적용된다. tmp/crontab.XXX??? 이렇게 저장된 파일이 편집된다.&lt;br /&gt;재부팅을 해야 /etc/crontab 파일이 적용되는건가?&lt;br /&gt;&lt;br /&gt;* * * * * root run-parts /etc/cron.minutely&lt;br /&gt;라고 했더니 실행이 안된다.&lt;br /&gt;구글링하다가 발견한 어떤 예제대로&lt;br /&gt;* * * * * su - root run-parts /etc/cron.minutely&lt;br /&gt;이렇게 했더니 잘 된다.&lt;br /&gt;원래 기본으로 되어있던게 위의 방식인데 원래 안되는걸 저렇게 해놓지는 않았을텐데 왜 안될까?&lt;br /&gt;아무튼 이제 된다.&lt;br /&gt;&lt;br /&gt;그리고,&lt;br /&gt;crontab 문제인지, 내가 작성한 스크립트 문제인지 확인을 못해서 좀 해멨는데&lt;br /&gt;/var/log/cron 파일을 살펴보면 crontab에서 실행한 목록을 알수 있다.&lt;br /&gt;이게 커져있다면,&lt;br /&gt;tail -n 20 /var/log/cron 하면 최근로그만 볼 수 있다.&lt;br /&gt;cat /var/log/cron | grep 찾고싶은문자열&lt;br /&gt;하면 내가 확인하고 싶은 커멘드에 대한 실행부분만 찾아 볼 수도 있다.&lt;br /&gt;&lt;br /&gt;모든 일이 알고나면 단순한데&lt;br /&gt;일단은 까다롭다...&lt;br /&gt;</description>
			<category>팁</category>
			<author>stone</author>
			<guid>http://10year.tistory.com/126</guid>
			<comments>http://10year.tistory.com/entry/crontab#entry126comment</comments>
			<pubDate>Thu, 26 Jun 2008 09:59:43 +0900</pubDate>
		</item>
		<item>
			<title>ActionScript3 ExternalInterface.addCallback 주의점.</title>
			<link>http://10year.tistory.com/entry/ActionScript3-ExternalInterfaceaddCallback-%EC%A3%BC%EC%9D%98%EC%A0%90</link>
			<description>Flash Ocx (Shockwave Flash Object)에서 노출한 함수를 addcallback으로 노출시키려고 하면 자바스크립트 오류가 난다. IE에서만.&lt;br /&gt;이름이 겹쳐서 그렇겠다 싶다.&lt;br /&gt;&lt;br /&gt;나를 삽질하게 만든 메소드 이름은 &#039;play&#039;, &#039;stop&#039; - - ;&lt;br /&gt;&lt;br /&gt;삽질하다 알게된 재미있는 것들.&lt;br /&gt;&lt;br /&gt;ExternalInterface.addCallback 하면 아래와 같은 함수가 실행되어 지정한 함수가 셋팅된다.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;function __flash__addCallback(instance, name) {&lt;br /&gt;&amp;nbsp; instance[name] = function () { &lt;br /&gt;&amp;nbsp; &amp;nbsp; return eval(instance.CallFunction(&quot;&amp;lt;invoke name=\&quot;&quot;+name+&quot;\&quot; returntype=\&quot;javascript\&quot;&amp;gt;&quot; + __flash__argumentsToXML(arguments,0) + &quot;&amp;lt;/invoke&amp;gt;&quot;));&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;CallFunction 은 Flash Ocx의 함수인데, 아마 &#039;&amp;lt;invoke ...&amp;gt; ... &amp;lt;/invoke&amp;gt;&#039; 형태의 문자열을 파싱해서 플래시 전역함수를 호출해주는 역할이 아닐가 싶다.&lt;br /&gt;
그렇다면 addCallback이 해주는 일은,&lt;br /&gt;1. addCallback으로 전달된 함수를 flash app의 전역함수로 선언해주고...&lt;br /&gt;2. 위의 스크립트를 동적으로 생성, 실행시켜서 Flash Ocx 인스턴스의 함수 속성을 생성시켜준다.&lt;br /&gt;&lt;br /&gt;그렇다면, Flash안의 전역함수는 Flash안에서 별도의 코딩이 없이도, CallFunction 함수를 이용해서 스크립트에서 호출할수 있지 않을까?&lt;br /&gt;테스트 해보고 싶지만... 일단 요기까지. &lt;br /&gt;-&amp;gt; 참지 못하고 테스트 해보니 그냥 전역함수는 아닌것 같다. - - ;&lt;br /&gt;-&amp;gt; 검색을 해보니 이런 자료도 있네... 정말 일단 요기까지. - - ; http://flexdocs.kr/docs/flex2/docs/00001971.html&lt;br /&gt;&lt;br /&gt;재미로 일하는게 아니니깐두루.... - - a&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- 참고&lt;br /&gt;addCallback이 실행될때 Flash ocx가 동적으로 생성하는 스크립트.&lt;br /&gt;
위의 스크립트가 제대로 실행되려면 아래 코드가 있어야 한다.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;function __flash__arrayToXML(obj) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; var s = &quot;&amp;lt;array&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; for (var i=0; i&amp;lt;obj.length; i++) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; s += &quot;&amp;lt;property id=\&quot;&quot; + i + &quot;\&quot;&amp;gt;&quot; + __flash__toXML(obj[i]) + &quot;&amp;lt;/property&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; return s+&quot;&amp;lt;/array&amp;gt;&quot;;&lt;br /&gt;}&lt;br /&gt;function __flash__argumentsToXML(obj,index) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; var s = &quot;&amp;lt;arguments&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; for (var i=index; i&amp;lt;obj.length; i++) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; s += __flash__toXML(obj[i]);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; return s+&quot;&amp;lt;/arguments&amp;gt;&quot;;&lt;br /&gt;}&lt;br /&gt;function __flash__objectToXML(obj) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; var s = &quot;&amp;lt;object&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; for (var prop in obj) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; s += &quot;&amp;lt;property id=\&quot;&quot; + prop + &quot;\&quot;&amp;gt;&quot; + __flash__toXML(obj[prop]) + &quot;&amp;lt;/property&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; return s+&quot;&amp;lt;/object&amp;gt;&quot;;&lt;br /&gt;}&lt;br /&gt;function __flash__escapeXML(s) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; return s.replace(/&amp;amp;/g, &quot;&amp;amp;amp;&quot;).replace(/&amp;lt;/g, &quot;&amp;amp;lt;&quot;).replace(/&amp;gt;/g, &quot;&amp;amp;gt;&quot;).replace(/&quot;/g, &quot;&amp;amp;quot;&quot;).replace(/&#039;/g, &quot;&amp;amp;apos;&quot;);&lt;br /&gt;}&lt;br /&gt;function __flash__toXML(value) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; var type = typeof(value);&lt;br /&gt;&amp;nbsp; &amp;nbsp; if (type == &quot;string&quot;) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &quot;&amp;lt;string&amp;gt;&quot; + __flash__escapeXML(value) + &quot;&amp;lt;/string&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; } else if (type == &quot;undefined&quot;) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &quot;&amp;lt;undefined/&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; } else if (type == &quot;number&quot;) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &quot;&amp;lt;number&amp;gt;&quot; + value + &quot;&amp;lt;/number&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; } else if (value == null) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &quot;&amp;lt;null/&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; } else if (type == &quot;boolean&quot;) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return value ? &quot;&amp;lt;true/&amp;gt;&quot; : &quot;&amp;lt;false/&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; } else if (value instanceof Date) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &quot;&amp;lt;date&amp;gt;&quot; + value.getTime() + &quot;&amp;lt;/date&amp;gt;&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; } else if (value instanceof Array) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; return __flash__arrayToXML(value);&lt;br /&gt;&amp;nbsp;&amp;nbsp; } else if (type == &quot;object&quot;) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; return __flash__objectToXML(value);&lt;br /&gt;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &quot;&amp;lt;null/&amp;gt;&quot;; //???&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;function __flash__addCallback(instance, name) {&lt;br /&gt;&amp;nbsp; instance[name] = function () { &lt;br /&gt;&amp;nbsp; &amp;nbsp; return eval(instance.CallFunction(&quot;&amp;lt;invoke name=\&quot;&quot;+name+&quot;\&quot; returntype=\&quot;javascript\&quot;&amp;gt;&quot; + __flash__argumentsToXML(arguments,0) + &quot;&amp;lt;/invoke&amp;gt;&quot;));&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;function __flash__removeCallback(instance, name) {&lt;br /&gt;&amp;nbsp; instance[name] = null;&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;</description>
			<author>stone</author>
			<guid>http://10year.tistory.com/125</guid>
			<comments>http://10year.tistory.com/entry/ActionScript3-ExternalInterfaceaddCallback-%EC%A3%BC%EC%9D%98%EC%A0%90#entry125comment</comments>
			<pubDate>Wed, 18 Jun 2008 15:26:38 +0900</pubDate>
		</item>
		<item>
			<title>IE의 버그일까 Flash의 버그일까? - -</title>
			<link>http://10year.tistory.com/entry/IE%EC%9D%98-%EB%B2%84%EA%B7%B8%EC%9D%BC%EA%B9%8C-Flash%EC%9D%98-%EB%B2%84%EA%B7%B8%EC%9D%BC%EA%B9%8C</link>
			<description>Flash 오브젝트가 포함된 div의 visibility style 속성을&lt;br /&gt;Flash 오브젝트내부의 ExternalInterface.call()에 의해 호출된 자바스크립트 함수에서 &lt;br /&gt;hidden으로 셋팅하면 그 이후로는 ExternalInterface.addCallback으로 노출한 Flash 프로그램의 함수가 호출되지 않는다.&lt;br /&gt;정의되지 않은 함수라고 나오면서. - - a&lt;br /&gt;&lt;br /&gt;buttonclick같은 DOM의 user event에 의해서 호출된 자바스크립트 함수에서 똑같은 동작을 했을때는 문제가 없다. - - ;;;&lt;br /&gt;&lt;br /&gt;visibility 스타일 대신에 zIndex를 이용해서 동일한 기능을 구현했더니 문제가 없다.&lt;br /&gt;&lt;br /&gt;얼마전에는 FF-Flash 버그가 속을 썩이더니... 오늘은 IE-Flash네... 쩝.&lt;br /&gt;</description>
			<category>bug</category>
			<category>ExternalInterface</category>
			<category>Flash</category>
			<category>IE</category>
			<category>visibility</category>
			<category>버그</category>
			<author>stone</author>
			<guid>http://10year.tistory.com/124</guid>
			<comments>http://10year.tistory.com/entry/IE%EC%9D%98-%EB%B2%84%EA%B7%B8%EC%9D%BC%EA%B9%8C-Flash%EC%9D%98-%EB%B2%84%EA%B7%B8%EC%9D%BC%EA%B9%8C#entry124comment</comments>
			<pubDate>Tue, 17 Jun 2008 19:24:10 +0900</pubDate>
		</item>
		<item>
			<title>Firefox 버그 : opacity style이 최대값으로 셋팅하지 않으믄 flash 오브젝트가 reload 된다 - -</title>
			<link>http://10year.tistory.com/entry/Firefox-%EB%B2%84%EA%B7%B8-opacity-style%EC%9D%B4-%EC%B5%9C%EB%8C%80%EA%B0%92%EC%9C%BC%EB%A1%9C-%EC%85%8B%ED%8C%85%ED%95%98%EC%A7%80-%EC%95%8A%EC%9C%BC%EB%AF%84-flash-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8%EA%B0%80-reload-%EB%90%9C%EB%8B%A4</link>
			<description>Flash object가 포함된 html element에 scriptaculous를 써서 Drag&amp;amp;Drop를 넣었는데&lt;br /&gt;처음 드래그드롭에서 flash object가 reload되는 문제가 발생...&lt;br /&gt;scriptaculous drap drop 코드 탐색 -&amp;gt;&lt;br /&gt;scriptaculous effect 코드 탐색 -&amp;gt;&lt;br /&gt;prototype setOpacity 탐색 한 결과&lt;br /&gt;FireFox에서 element.style.opacity 를 셋팅하면 flash object가 reload 된다는 사실 발견. - - ;&lt;br /&gt;일단 prototype의 코드를 수정해서 해결했다.&lt;br /&gt;prototype은 건드리지 않고 깔끔하게 내 코드에서 해결해야 하겠지만,&lt;br /&gt;오늘은 너무 덥고 잠도 와서 여기까지만. - - &lt;br /&gt;&lt;br /&gt;원본 : prototype.js의 1756라인쯤&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;else if (Prototype.Browser.Gecko) {&lt;br /&gt;&amp;nbsp; Element.Methods.setOpacity = function(element, value) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; element = $(element);&lt;br /&gt;&amp;nbsp; &amp;nbsp; element.style.opacity = (value == 1) ? 0.999999 :&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (value === &#039;&#039;) ? &#039;&#039; : (value &amp;lt; 0.00001) ? 0 : value;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; return element;&lt;br /&gt;&amp;nbsp; };&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;수정본&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;else if (Prototype.Browser.Gecko) {&lt;br /&gt;&amp;nbsp; Element.Methods.setOpacity = function(element, value) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; element = $(element);&lt;br /&gt;&amp;nbsp; &amp;nbsp; //element.style.opacity = (value == 1) ? 0.999999 :&lt;br /&gt;&amp;nbsp; &amp;nbsp; //&amp;nbsp; (value === &#039;&#039;) ? &#039;&#039; : (value &amp;lt; 0.00001) ? 0 : value;&lt;br /&gt;&amp;nbsp; &amp;nbsp; //&lt;br /&gt;&amp;nbsp; &amp;nbsp; return element;&lt;br /&gt;&amp;nbsp; };&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;</description>
			<category>삽질</category>
			<category>bug</category>
			<category>FireFox</category>
			<category>Flash</category>
			<category>opacity</category>
			<category>파이어폭스</category>
			<author>stone</author>
			<guid>http://10year.tistory.com/122</guid>
			<comments>http://10year.tistory.com/entry/Firefox-%EB%B2%84%EA%B7%B8-opacity-style%EC%9D%B4-%EC%B5%9C%EB%8C%80%EA%B0%92%EC%9C%BC%EB%A1%9C-%EC%85%8B%ED%8C%85%ED%95%98%EC%A7%80-%EC%95%8A%EC%9C%BC%EB%AF%84-flash-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8%EA%B0%80-reload-%EB%90%9C%EB%8B%A4#entry122comment</comments>
			<pubDate>Thu, 12 Jun 2008 00:21:04 +0900</pubDate>
		</item>
		<item>
			<title>Flash 보안... 참 복잡도 하다.</title>
			<link>http://10year.tistory.com/entry/Flash-%EB%B3%B4%EC%95%88-%EC%B0%B8-%EB%B3%B5%EC%9E%A1%EB%8F%84-%ED%95%98%EB%8B%A4</link>
			<description>http://www.adobe.com/kr/devnet/flashplayer/articles/fplayer9_security_print.html&lt;br /&gt;&lt;br /&gt;소켓을 이용해서 http multipart upload를 구현하던중&lt;br /&gt;로컬테스트에서는 업로드가 잘 되는데, 서버에 올려서 업로드가 안되는 문제가 생겨서 좀 헤맷다.&lt;br /&gt;에러의 종류는 SecurityError.&lt;br /&gt;당연히 보안정책을 잘 살펴서 미리미리 숙지하고 구현을 하는게 정석이겠지만,&lt;br /&gt;워낙 일관성이 없고 뒤죽박죽이라는 이유로 (남들이 그러길래 - - ;)&lt;br /&gt;문제 생기면 보지 했는데&lt;br /&gt;역시 문제가 생겼고... 괜한 시간을 낭비했다.&lt;br /&gt;&lt;br /&gt;정리하자면,&lt;br /&gt;Socket을 이용한 통신을 할려면,&lt;br /&gt;사용하는 동일한 포트에서 &amp;lt;policy-file-request&amp;gt;라는 요청에 대해서 xml로 된 정책내용을 보내줘야 한다.&lt;br /&gt;주의점은 &amp;lt;policy-file-request&amp;gt;이라는 요청이 http도 뭐도 아닌 날 요청이란점.&lt;br /&gt;그냥 소켓열고 무작정 &amp;lt;policy-file-request&amp;gt; 요 스트링이 날라온다. - - &lt;br /&gt;&lt;br /&gt;동일한 포트에서 해당 응답이 어려울 경우 843 포트로 응답을 해도 된다.&lt;br /&gt;843포트는 unix의 관례로 보면 root권한이 있을 경우에만 listen할 수 있으므로&lt;br /&gt;나름 보안상 의미있는 구조라고 문서에 나와있다.&lt;br /&gt;&lt;br /&gt;암튼 그렇다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- 의문점.&lt;br /&gt;+ 날 Socket을 안쓰고, XMLSocket등 다른 객체를 가지고 Flash App에서 직접 만든 바이너리를 업로드할 방법은 없을까?&lt;br /&gt;+ 업로드할 바이너리를 Base64인코딩해서 XMLSocket에서 Post하고 PHP에서 디코딩해서 저장할수도 있긴하겠네...&lt;br /&gt;</description>
			<category>삽질</category>
			<category>Flash</category>
			<category>policy-file-request</category>
			<category>SecurityError</category>
			<category>socket</category>
			<author>stone</author>
			<guid>http://10year.tistory.com/120</guid>
			<comments>http://10year.tistory.com/entry/Flash-%EB%B3%B4%EC%95%88-%EC%B0%B8-%EB%B3%B5%EC%9E%A1%EB%8F%84-%ED%95%98%EB%8B%A4#entry120comment</comments>
			<pubDate>Wed, 11 Jun 2008 14:55:48 +0900</pubDate>
		</item>
		<item>
			<title>Flash Encoder Camera 변경 구현</title>
			<link>http://10year.tistory.com/entry/Flash-Encoder-Camera-%EB%B3%80%EA%B2%BD-%EA%B5%AC%ED%98%84</link>
			<description>플래시에서 제공하는 설정창을 이용한다.&lt;br /&gt;Security.showSettings(SecurityPanel.CAMERA); 
&lt;P&gt;카메라가 변경된 이벤트를 받는 방법을 알수가 없다.&lt;br /&gt;타이머 돌렸다.&lt;br /&gt;그리고 디바이스설정창을 띄운 MovieClip의 MouseOver 이벤트에서 타이머를 껏다.&lt;br /&gt;뭔가 깔끔한 방법이 있을듯한데... 익숙한 잔머리로 해결. - - ;&lt;br /&gt;&lt;br /&gt;video.attachCamera()를 어떻게 예쁘게 할까 고민하다가 &lt;br /&gt;무심코 실행시켜보니 자동으로 video에 attach된 카메라가 바뀌어 있다.&lt;br /&gt;&lt;br /&gt;그런데 오디오는 설정창에서 변경했는데&lt;br /&gt;Microphone.getMicrophone() 해봐도 변경이 안되어있다.&lt;br /&gt;어렵다. - - &lt;/P&gt;</description>
			<category>팁</category>
			<category>camera</category>
			<category>Encoder</category>
			<category>Flash</category>
			<author>stone</author>
			<guid>http://10year.tistory.com/119</guid>
			<comments>http://10year.tistory.com/entry/Flash-Encoder-Camera-%EB%B3%80%EA%B2%BD-%EA%B5%AC%ED%98%84#entry119comment</comments>
			<pubDate>Tue, 10 Jun 2008 10:55:28 +0900</pubDate>
		</item>
		<item>
			<title>XMPP 발표자료</title>
			<link>http://10year.tistory.com/entry/XMPP-%EB%B0%9C%ED%91%9C%EC%9E%90%EB%A3%8C</link>
			<description>&lt;div class=&quot;wikipage&quot;&gt;
    &lt;div id=&quot;searchable&quot;&gt;&lt;h2 id=&quot;a1.XMPP&quot;&gt;1. XMPP?&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a1.XMPP&quot;&gt; ¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;
XML based Messaging Protocol (Instant Messaging, Presence Information)
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Open standard
&lt;/li&gt;&lt;li&gt;Open or Free implementation and Source
&lt;/li&gt;&lt;li&gt;Proposed Standard (RFC 3920, RFC 3921) (Proposed Standard -&amp;gt; Draft Standard -&amp;gt; Internet Standard)
&lt;/li&gt;&lt;li&gt;XSF (XMPP Standard Foundation)
&lt;/li&gt;&lt;li&gt;Thousands of server, 10 million of user (Google talk)
&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;a2.History&quot;&gt;2. History&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a2.History&quot;&gt; ¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Jabber protocol
&lt;/li&gt;&lt;li&gt;XMPP standard
&lt;/li&gt;&lt;li&gt;google talk
&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;a3.Standard&quot;&gt;3. Standard&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a3.Standard&quot;&gt; ¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;
The four specifications produced by the XMPP WG were approved by the IESG as Proposed Standards in 2004.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;RFC3920, Extensible Messaging and Presence(XMPP):Core
&lt;ul&gt;&lt;li&gt;XMPP Messaging Basic
&lt;/li&gt;&lt;li&gt;Connection, Stream, Encryption, Authentication, Stanza
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;RFC3921, Extensible Messaging and Presence(XMPP):Instant Messaging and Presence
&lt;ul&gt;&lt;li&gt;Instant Messaging
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;RFC3922, Mapping the Extensible Messaging and Presence Protocol to Common Presence and Instant Messaging
&lt;ul&gt;&lt;li&gt;interoperability with CPIM
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;RFC3923, End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol
&lt;ul&gt;&lt;li&gt;End-to-End message encryption with S/MIME
&lt;/li&gt;&lt;li&gt;Conflict to PGP (Defacto)
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
&lt;a class=&quot;ext-link&quot; href=&quot;http://tools.ietf.org/html/rfc1796&quot;&gt;&lt;span class=&quot;icon&quot;&gt;Not All RFCs are Standards&lt;/span&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Informational
&lt;/li&gt;&lt;li&gt;Experimental
&lt;/li&gt;&lt;li&gt;Standards
&lt;ul&gt;&lt;li&gt;Proposed Standard
&lt;/li&gt;&lt;li&gt;Draft Standard
&lt;/li&gt;&lt;li&gt;Internet Standard
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;a4.StrengthandWeakness&quot;&gt;4. Strength and Weakness&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a4.StrengthandWeakness&quot;&gt; ¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Strength
&lt;ul&gt;&lt;li&gt;Decentralization : like SMTP
&lt;/li&gt;&lt;li&gt;Open Standard : no royalty
&lt;/li&gt;&lt;li&gt;Security : TLS / SASL
&lt;/li&gt;&lt;li&gt;Flexibility : inherit the flexibility of XML
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Weakness
&lt;ul&gt;&lt;li&gt;Presence data overhead : inter server communication
&lt;/li&gt;&lt;li&gt;Scalability : duplication problem in multi-user chat or publish/subscribe
&lt;/li&gt;&lt;li&gt;No binary data : XMPP stream is XML Document. (base64 or use other protocol like http)
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;a5.Feature&quot;&gt;5. Feature&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a5.Feature&quot;&gt; ¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;a5.1Architecture&quot;&gt;5.1 Architecture&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a5.1Architecture&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;
Client &amp;lt;--&amp;gt; Server &amp;lt;--&amp;gt; Server &amp;lt;--&amp;gt; Gateway &amp;lt;--&amp;gt; Other IM &amp;lt;--&amp;gt; Client
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Server : Manage xml stream and session, transfer XML Stanza
&lt;/li&gt;&lt;li&gt;Gateway : Translate to XMPP, Translate to other protocol
&lt;/li&gt;&lt;li&gt;Client
&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;a5.2JID&quot;&gt;5.2 JID&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a5.2JID&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Jabber ID
&lt;/li&gt;&lt;li&gt;user@domain/resource
&lt;/li&gt;&lt;li&gt;like not Cyworld but SMTP
&lt;/li&gt;&lt;li&gt;Enable Decentralization
&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;a5.3XMLStreams&quot;&gt;5.3 XML Streams&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a5.3XMLStreams&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&amp;lt;stream&amp;gt;&amp;lt;/stream&amp;gt;
&lt;/li&gt;&lt;li&gt;Container of XML Element (Stanza)
&lt;/li&gt;&lt;li&gt;Encrypted with TLS, Authorized with SASL
&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;a5.4Stanza&quot;&gt;5.4 Stanza&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a5.4Stanza&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Discrete semantic unit of structured information.
&lt;/li&gt;&lt;li&gt;Basic Semantics
&lt;ul&gt;&lt;li&gt;Message : Message
&lt;/li&gt;&lt;li&gt;Presence : Entity&#039;s status information, subscribe/push
&lt;/li&gt;&lt;li&gt;IQ(Info/Query) : get/result, set/result (get, set, result, error)
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Attribute
&lt;ul&gt;&lt;li&gt;to
&lt;/li&gt;&lt;li&gt;from
&lt;/li&gt;&lt;li&gt;id
&lt;/li&gt;&lt;li&gt;type
&lt;/li&gt;&lt;li&gt;xml:lang
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;a5.5Security&quot;&gt;5.5 Security&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a5.5Security&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;&lt;li&gt;TLS : Transport Layer Security
&lt;ul&gt;&lt;li&gt;Channel encryption
&lt;/li&gt;&lt;li&gt;Public key infrastructure / digital certificates
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;SASL : Simple Authentication and Security Layer
&lt;ul&gt;&lt;li&gt;Stream Authentication
&lt;/li&gt;&lt;li&gt;Mechanism : External, Anonymous, PLAIN, DIGEST-MD5
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 id=&quot;a5.6HTTPbinding&quot;&gt;5.6 HTTP binding&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a5.6HTTPbinding&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;For user in firewall.
&lt;/li&gt;&lt;li&gt;Model
&lt;ol&gt;&lt;li&gt;Polling
&lt;/li&gt;&lt;li&gt;Push(Binding)
&lt;ul&gt;&lt;li&gt; BOSH : Bidirectional-streams Over Synchronous HTTP
&lt;/li&gt;&lt;li&gt;&amp;lt;body&amp;gt; envelope, XML Stanza =&amp;gt; HTTP Request / Response
&lt;ul&gt;&lt;li&gt; Comet : endless http response
&lt;/li&gt;&lt;li&gt; BOSH : continuous http request
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;a5.6Multimediainteraction&quot;&gt;5.6 Multimedia interaction&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a5.6Multimediainteraction&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;
Jingle ( Jabber + Google ?)
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Google with XMPP Standard Foundation
&lt;/li&gt;&lt;li&gt;Media transfer via RTP (voice, video)
&lt;/li&gt;&lt;li&gt;ICE for NAT traversal (used in SIP-based VoIP)
&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;a6.StreamExample&quot;&gt;6. Stream Example&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a6.StreamExample&quot;&gt; ¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;a6.1Basicsession&quot;&gt;6.1 Basic session&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a6.1Basicsession&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;pre class=&quot;wiki&quot;&gt;   C: &amp;lt;?xml version=&#039;1.0&#039;?&amp;gt;&lt;br /&gt;      &amp;lt;stream:stream&lt;br /&gt;          to=&#039;example.com&#039;&lt;br /&gt;          xmlns=&#039;jabber:client&#039;&lt;br /&gt;          xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;          version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;   S: &amp;lt;?xml version=&#039;1.0&#039;?&amp;gt;&lt;br /&gt;      &amp;lt;stream:stream&lt;br /&gt;          from=&#039;example.com&#039;&lt;br /&gt;          id=&#039;someid&#039;&lt;br /&gt;          xmlns=&#039;jabber:client&#039;&lt;br /&gt;          xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;          version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;   ...  encryption, authentication, and resource binding ...&lt;br /&gt;   C:   &amp;lt;message from=&#039;juliet@example.com&#039;&lt;br /&gt;                 to=&#039;romeo@example.net&#039;&lt;br /&gt;                 xml:lang=&#039;en&#039;&amp;gt;&lt;br /&gt;   C:     &amp;lt;body&amp;gt;Art thou not Romeo, and a Montague?&amp;lt;/body&amp;gt;&lt;br /&gt;   C:   &amp;lt;/message&amp;gt;&lt;br /&gt;   S:   &amp;lt;message from=&#039;romeo@example.net&#039;&lt;br /&gt;                 to=&#039;juliet@example.com&#039;&lt;br /&gt;                 xml:lang=&#039;en&#039;&amp;gt;&lt;br /&gt;   S:     &amp;lt;body&amp;gt;Neither, fair saint, if either thee dislike.&amp;lt;/body&amp;gt;&lt;br /&gt;   S:   &amp;lt;/message&amp;gt;&lt;br /&gt;   C: &amp;lt;/stream:stream&amp;gt;&lt;br /&gt;   S: &amp;lt;/stream:stream&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;h3 id=&quot;a6.2sessiongonebad&quot;&gt;6.2 &quot;session&quot; gone bad&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a6.2sessiongonebad&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;pre class=&quot;wiki&quot;&gt;   C: &amp;lt;?xml version=&#039;1.0&#039;?&amp;gt;&lt;br /&gt;      &amp;lt;stream:stream&lt;br /&gt;          to=&#039;example.com&#039;&lt;br /&gt;          xmlns=&#039;jabber:client&#039;&lt;br /&gt;          xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;          version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;   S: &amp;lt;?xml version=&#039;1.0&#039;?&amp;gt;&lt;br /&gt;      &amp;lt;stream:stream&lt;br /&gt;          from=&#039;example.com&#039;&lt;br /&gt;          id=&#039;someid&#039;&lt;br /&gt;          xmlns=&#039;jabber:client&#039;&lt;br /&gt;          xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;          version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;   ...  encryption, authentication, and resource binding ...&lt;br /&gt;   C: &amp;lt;message xml:lang=&#039;en&#039;&amp;gt;&lt;br /&gt;        &amp;lt;body&amp;gt;Bad XML, no closing body tag!&lt;br /&gt;      &amp;lt;/message&amp;gt;&lt;br /&gt;   S: &amp;lt;stream:error&amp;gt;&lt;br /&gt;       &amp;lt;xml-not-well-formed&lt;br /&gt;           xmlns=&#039;urn:ietf:params:xml:ns:xmpp-streams&#039;/&amp;gt;&lt;br /&gt;      &amp;lt;/stream:error&amp;gt;&lt;br /&gt;   S: &amp;lt;/stream:stream&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;h3 id=&quot;a6.3TLSNegotiation&quot;&gt;6.3 TLS Negotiation&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a6.3TLSNegotiation&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;pre class=&quot;wiki&quot;&gt;// Client initiates stream to server:&lt;br /&gt;C: &amp;lt;stream:stream&lt;br /&gt;       xmlns=&#039;jabber:client&#039;&lt;br /&gt;       xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;       to=&#039;example.com&#039;&lt;br /&gt;       version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;&lt;br /&gt;// Server responds by sending a stream tag to client:&lt;br /&gt;S: &amp;lt;stream:stream&lt;br /&gt;       xmlns=&#039;jabber:client&#039;&lt;br /&gt;       xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;       id=&#039;c2s_123&#039;&lt;br /&gt;       from=&#039;example.com&#039;&lt;br /&gt;       version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;&lt;br /&gt;// Server sends the STARTTLS extension to client along with&lt;br /&gt;// authentication mechanisms and any other stream features:&lt;br /&gt;S: &amp;lt;stream:features&amp;gt;&lt;br /&gt;     &amp;lt;starttls xmlns=&#039;urn:ietf:params:xml:ns:xmpp-tls&#039;&amp;gt;&lt;br /&gt;       &amp;lt;required/&amp;gt;&lt;br /&gt;     &amp;lt;/starttls&amp;gt;&lt;br /&gt;     &amp;lt;mechanisms xmlns=&#039;urn:ietf:params:xml:ns:xmpp-sasl&#039;&amp;gt;&lt;br /&gt;       &amp;lt;mechanism&amp;gt;DIGEST-MD5&amp;lt;/mechanism&amp;gt;&lt;br /&gt;       &amp;lt;mechanism&amp;gt;PLAIN&amp;lt;/mechanism&amp;gt;&lt;br /&gt;     &amp;lt;/mechanisms&amp;gt;&lt;br /&gt;   &amp;lt;/stream:features&amp;gt;&lt;br /&gt;&lt;br /&gt;// Client sends the STARTTLS command to server:&lt;br /&gt;C: &amp;lt;starttls xmlns=&#039;urn:ietf:params:xml:ns:xmpp-tls&#039;/&amp;gt;&lt;br /&gt;&lt;br /&gt;// Server informs client that it is allowed to proceed:&lt;br /&gt;S: &amp;lt;proceed xmlns=&#039;urn:ietf:params:xml:ns:xmpp-tls&#039;/&amp;gt;&lt;br /&gt;&lt;br /&gt;// C/S: TLS negotiation&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;// If TLS negotiation is successful, client initiates a new stream to server:&lt;br /&gt;C: &amp;lt;stream:stream&lt;br /&gt;       xmlns=&#039;jabber:client&#039;&lt;br /&gt;       xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;       to=&#039;example.com&#039;&lt;br /&gt;       version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;
 
&lt;/p&gt;
&lt;h3 id=&quot;a6.4SASLNegotiation&quot;&gt;6.4 SASL Negotiation&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a6.4SASLNegotiation&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;pre class=&quot;wiki&quot;&gt;// Client initiates stream to server:&lt;br /&gt;C: &amp;lt;stream:stream&lt;br /&gt;       xmlns=&#039;jabber:client&#039;&lt;br /&gt;       xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;       to=&#039;example.com&#039;&lt;br /&gt;       version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;&lt;br /&gt;// Server responds with a stream tag sent to client:&lt;br /&gt;S:  &amp;lt;stream:stream&lt;br /&gt;       xmlns=&#039;jabber:client&#039;&lt;br /&gt;       xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;       id=&#039;c2s_234&#039;&lt;br /&gt;       from=&#039;example.com&#039;&lt;br /&gt;       version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;&lt;br /&gt;// Server informs client of available authentication mechanisms:&lt;br /&gt;S: &amp;lt;stream:features&amp;gt;&lt;br /&gt;     &amp;lt;mechanisms xmlns=&#039;urn:ietf:params:xml:ns:xmpp-sasl&#039;&amp;gt;&lt;br /&gt;       &amp;lt;mechanism&amp;gt;DIGEST-MD5&amp;lt;/mechanism&amp;gt;&lt;br /&gt;       &amp;lt;mechanism&amp;gt;PLAIN&amp;lt;/mechanism&amp;gt;&lt;br /&gt;     &amp;lt;/mechanisms&amp;gt;&lt;br /&gt;   &amp;lt;/stream:features&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Client selects an authentication mechanism:&lt;br /&gt;C: &amp;lt;auth xmlns=&#039;urn:ietf:params:xml:ns:xmpp-sasl&#039;&lt;br /&gt;         mechanism=&#039;DIGEST-MD5&#039;/&amp;gt;&lt;br /&gt;&lt;br /&gt;// Server sends a [BASE64] encoded challenge to client:&lt;br /&gt;S: &amp;lt;challenge xmlns=&#039;urn:ietf:params:xml:ns:xmpp-sasl&#039;&amp;gt;&lt;br /&gt;   cmVhbG09InNvbWVyZWFsbSIsbm9uY2U9Ik9BNk1HOXRFUUdtMmhoIixxb3A9ImF1dGgi&lt;br /&gt;   LGNoYXJzZXQ9dXRmLTgsYWxnb3JpdGhtPW1kNS1zZXNzCg==&lt;br /&gt;   &amp;lt;/challenge&amp;gt;&lt;br /&gt;// realm=&quot;somerealm&quot;,nonce=&quot;OA6MG9tEQGm2hh&quot;,\&lt;br /&gt;// qop=&quot;auth&quot;,charset=utf-8,algorithm=md5-sess&lt;br /&gt;&lt;br /&gt;// Client sends a [BASE64] encoded response to the challenge:&lt;br /&gt;C: &amp;lt;response xmlns=&#039;urn:ietf:params:xml:ns:xmpp-sasl&#039;&amp;gt;&lt;br /&gt;   dXNlcm5hbWU9InNvbWVub2RlIixyZWFsbT0ic29tZXJlYWxtIixub25jZT0i&lt;br /&gt;   T0E2TUc5dEVRR20yaGgiLGNub25jZT0iT0E2TUhYaDZWcVRyUmsiLG5jPTAw&lt;br /&gt;   MDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvZXhhbXBsZS5jb20i&lt;br /&gt;   LHJlc3BvbnNlPWQzODhkYWQ5MGQ0YmJkNzYwYTE1MjMyMWYyMTQzYWY3LGNo&lt;br /&gt;   YXJzZXQ9dXRmLTgK&lt;br /&gt;   &amp;lt;/response&amp;gt;&lt;br /&gt;// username=&quot;somenode&quot;,realm=&quot;somerealm&quot;,\&lt;br /&gt;// nonce=&quot;OA6MG9tEQGm2hh&quot;,cnonce=&quot;OA6MHXh6VqTrRk&quot;,\&lt;br /&gt;// nc=00000001,qop=auth,digest-uri=&quot;xmpp/example.com&quot;,\&lt;br /&gt;// response=d388dad90d4bbd760a152321f2143af7,charset=utf-8&lt;br /&gt;&lt;br /&gt;// Server sends another [BASE64] encoded challenge to client:&lt;br /&gt;S: &amp;lt;challenge xmlns=&#039;urn:ietf:params:xml:ns:xmpp-sasl&#039;&amp;gt;&lt;br /&gt;   cnNwYXV0aD1lYTQwZjYwMzM1YzQyN2I1NTI3Yjg0ZGJhYmNkZmZmZAo=&lt;br /&gt;   &amp;lt;/challenge&amp;gt;&lt;br /&gt;//   rspauth=ea40f60335c427b5527b84dbabcdfffd&lt;br /&gt;&lt;br /&gt;// Client responds to the challenge:&lt;br /&gt;C: &amp;lt;response xmlns=&#039;urn:ietf:params:xml:ns:xmpp-sasl&#039;/&amp;gt;&lt;br /&gt;&lt;br /&gt;// Server informs client of successful authentication:&lt;br /&gt;S: &amp;lt;success xmlns=&#039;urn:ietf:params:xml:ns:xmpp-sasl&#039;/&amp;gt;&lt;br /&gt;  &lt;br /&gt;// Client initiates a new stream to server:&lt;br /&gt;C: &amp;lt;stream:stream&lt;br /&gt;       xmlns=&#039;jabber:client&#039;&lt;br /&gt;       xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;       to=&#039;example.com&#039;&lt;br /&gt;       version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;&lt;br /&gt;// Server responds by sending a stream header to client along&lt;br /&gt;// with any additional features (or an empty features element):&lt;br /&gt;S: &amp;lt;stream:stream&lt;br /&gt;       xmlns=&#039;jabber:client&#039;&lt;br /&gt;       xmlns:stream=&#039;http://etherx.jabber.org/streams&#039;&lt;br /&gt;       id=&#039;c2s_345&#039;&lt;br /&gt;       from=&#039;example.com&#039;&lt;br /&gt;       version=&#039;1.0&#039;&amp;gt;&lt;br /&gt;   &amp;lt;stream:features&amp;gt;&lt;br /&gt;     &amp;lt;bind xmlns=&#039;urn:ietf:params:xml:ns:xmpp-bind&#039;/&amp;gt;&lt;br /&gt;     &amp;lt;session xmlns=&#039;urn:ietf:params:xml:ns:xmpp-session&#039;/&amp;gt;&lt;br /&gt;   &amp;lt;/stream:features&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;h3 id=&quot;a6.5TransmittionstanzaswithBOSH&quot;&gt;6.5 Transmittion stanzas with BOSH&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a6.5TransmittionstanzaswithBOSH&quot;&gt; ¶&lt;/a&gt;&lt;/h3&gt;
&lt;pre class=&quot;wiki&quot;&gt;POST /webclient HTTP/1.1&lt;br /&gt;Host: httpcm.jabber.org&lt;br /&gt;Accept-Encoding: gzip, deflate&lt;br /&gt;Content-Type: text/xml; charset=utf-8&lt;br /&gt;Content-Length: 188&lt;br /&gt;&lt;br /&gt;&amp;lt;body rid=&#039;1249243562&#039;&lt;br /&gt;      sid=&#039;SomeSID&#039;&lt;br /&gt;      xmlns=&#039;http://jabber.org/protocol/httpbind&#039;&amp;gt;&lt;br /&gt;  &amp;lt;message to=&#039;contact@example.com&#039;&lt;br /&gt;           xmlns=&#039;jabber:client&#039;&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;I said &quot;Hi!&quot;&amp;lt;/body&amp;gt;&lt;br /&gt;  &amp;lt;/message&amp;gt;&lt;br /&gt;  &amp;lt;message to=&#039;friend@example.com&#039;&lt;br /&gt;           xmlns=&#039;jabber:client&#039;&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;I said &quot;Hi!&quot;&amp;lt;/body&amp;gt;&lt;br /&gt;  &amp;lt;/message&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;h2 id=&quot;a7.Reference&quot;&gt;7.Reference&lt;a title=&quot;Link to this section&quot; class=&quot;anchor&quot; href=&quot;http://192.168.0.249/invigent/wiki/conference_xmpp#a7.Reference&quot;&gt; ¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;ext-link&quot; href=&quot;http://en.wikipedia.org/wiki/XMPP&quot;&gt;&lt;span class=&quot;icon&quot;&gt;http://en.wikipedia.org/wiki/XMPP&lt;/span&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;ext-link&quot; href=&quot;http://www.xmpp.org/&quot;&gt;&lt;span class=&quot;icon&quot;&gt;http://www.xmpp.org/&lt;/span&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;ext-link&quot; href=&quot;http://tools.ietf.org/html/rfc3920&quot;&gt;&lt;span class=&quot;icon&quot;&gt;http://tools.ietf.org/html/rfc3920&lt;/span&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;ext-link&quot; href=&quot;http://tools.ietf.org/html/rfc3921&quot;&gt;&lt;span class=&quot;icon&quot;&gt;http://tools.ietf.org/html/rfc3921&lt;/span&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;ext-link&quot; href=&quot;http://www.xmpp.org/extensions/xep-0124.html&quot;&gt;&lt;span class=&quot;icon&quot;&gt;http://www.xmpp.org/extensions/xep-0124.html&lt;/span&gt;&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
   &lt;/div&gt;</description>
			<category>XMPP</category>
			<author>stone</author>
			<guid>http://10year.tistory.com/117</guid>
			<comments>http://10year.tistory.com/entry/XMPP-%EB%B0%9C%ED%91%9C%EC%9E%90%EB%A3%8C#entry117comment</comments>
			<pubDate>Thu, 22 May 2008 11:58:20 +0900</pubDate>
		</item>
		<item>
			<title>MovieClip을 제일 앞으로 이동.</title>
			<link>http://10year.tistory.com/entry/MovieClip%EC%9D%84-%EC%A0%9C%EC%9D%BC-%EC%95%9E%EC%9C%BC%EB%A1%9C-%EC%9D%B4%EB%8F%99</link>
			<description>MovieClip을 상속받은 클래스에 setFront() 함수.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;public function setFront(&amp;nbsp; )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; return parent.setChildIndex(this, parent.numChildren-1);&lt;br /&gt;}&lt;/blockquote&gt;</description>
			<category>팁</category>
			<category>Flash</category>
			<category>zindex</category>
			<category>zorder</category>
			<author>stone</author>
			<guid>http://10year.tistory.com/115</guid>
			<comments>http://10year.tistory.com/entry/MovieClip%EC%9D%84-%EC%A0%9C%EC%9D%BC-%EC%95%9E%EC%9C%BC%EB%A1%9C-%EC%9D%B4%EB%8F%99#entry115comment</comments>
			<pubDate>Tue, 20 May 2008 17:49:01 +0900</pubDate>
		</item>
		<item>
			<title>ActionScript3.0 타입정보 알기 : describeType</title>
			<link>http://10year.tistory.com/entry/ActionScript30-%ED%83%80%EC%9E%85%EC%A0%95%EB%B3%B4-%EC%95%8C%EA%B8%B0-describeType</link>
			<description>describeType&lt;br /&gt;XML로 타입정보를 반환한다.&lt;br /&gt;&lt;br /&gt;adobe.serialization.json 패키지의 JSONEncoder 클래스를 보다가 알게된 함수.&lt;br /&gt;&lt;br /&gt;역시 좋은 코드를 많이 봐야 한다. &lt;br /&gt;</description>
			<category>팁</category>
			<category>ActionScript 타입</category>
			<author>stone</author>
			<guid>http://10year.tistory.com/114</guid>
			<comments>http://10year.tistory.com/entry/ActionScript30-%ED%83%80%EC%9E%85%EC%A0%95%EB%B3%B4-%EC%95%8C%EA%B8%B0-describeType#entry114comment</comments>
			<pubDate>Tue, 20 May 2008 11:40:27 +0900</pubDate>
		</item>
	</channel>
</rss>
