<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>작은 자유</title>
		<link>http://ohgyun.com/</link>
		<description>천천히, 그러나 끊임없이.</description>
		<language>ko</language>
		<pubDate>Tue, 08 May 2012 15:30:22 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<managingEditor>ohgyun</managingEditor>
		<image>
			<title>작은 자유</title>
			<url>http://cfile24.uf.tistory.com/image/1152760E49AE2967743902</url>
			<link>http://ohgyun.com</link>
			<description>천천히, 그러나 끊임없이.</description>
		</image>
		<item>
			<title>Array.splice()의 두 번째 인자를 생략했을 때</title>
			<link>http://ohgyun.com/362</link>
			<description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.05.08&lt;br /&gt;
&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div&gt;배열 데이터를 잘라서 처리하는 로직을 구현해야 했다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;아래와 같이 짧은 코드를 구현했는데,&lt;/div&gt;&lt;div&gt;크롬에서는 잘&amp;nbsp;동작하지만&amp;nbsp;IE8 이하에서 제대로 동작하지 않는 걸 발견했다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; var a = [1, 2, 3, 4, 5];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; var result = a.slice(1);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;이상하다. 특별히 문제될 부분이 없는데...&lt;/div&gt;&lt;div&gt;왜 이런 걸까...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;p&gt;음메.&lt;/p&gt;&lt;p&gt;slice를 s&lt;span style=&quot;color: rgb(255, 0, 0); font-size: 14pt; &quot;&gt;&lt;b&gt;p&lt;/b&gt;&lt;/span&gt;lice로 잘못 썼던 게 문제였다... -_-;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;splice는 배열에서 특정 인덱스의 아이템을 추가하거나 삭제하는 메서드이고,&lt;/p&gt;&lt;p&gt;아래와 같은 형태로 호출한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; splice(index, howmany, itemToAdd, itemToAdd, ...)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;표준에는 두 번째 파라미터인 howmany 값이 필수라고 정의해뒀지만,&lt;/p&gt;&lt;p&gt;만약 이 값을 생략하는 경우, IE 하위 버전과 모던 브라우저 간의 동작 방식이 다르다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;두 번째 인자를 생략할 경우,&lt;/p&gt;&lt;p&gt;크롬에서는 해당 인덱스부터 끝까지 삭제하지만, IE8 이하 버전에서는 삭제하지 않는 것이 그 차이점이다.&lt;/p&gt;&lt;p&gt;삭제한 엘리먼트를 배열에 담아 리턴하는 동작은 동일하다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예를 들어,&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; var a = [1, 2, 3, 4, 5];&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; var result = a.splice(1);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;와 같은 작업을 수행하면.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 116, 28); &quot;&gt;&amp;nbsp; // IE9, Chrome, FF, Safari&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; a ==&amp;gt; [1]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; result ==&amp;gt; [2, 3, 4, 5]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 116, 28); &quot;&gt;&amp;nbsp; // IE8 이하&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; a ==&amp;gt; [1, 2, 3, 4, 5]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; result ==&amp;gt; []&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;와 같은 결과가 나온다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;즉, a.splice의 두 번째 인자를 생략하고 호출하는 액션은,&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; a.splice(1);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 116, 28); &quot;&gt;&amp;nbsp; // IE9, Chrome, FF, Safari&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; a.splice(1, a.length - 1);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 116, 28); &quot;&gt;&amp;nbsp; // IE8 이하&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; a.splice(1, 0);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;를 호출하는 것과 같다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;단순히 리턴받은 결과를 놓고 본다면,&lt;/p&gt;&lt;p&gt;모던 브라우저에서는&amp;nbsp;array.splice(1) 과 array.slice(1)의 값은 동일하다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그래서 쉽게 눈치채지 못했던 것이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;여튼, 결론은...&lt;/p&gt;&lt;p&gt;철자를 주의깊게&amp;nbsp;확인하자. -_-;;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-362-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-362-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-362-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Javascript</category>
			<category>array</category>
			<category>slice</category>
			<category>splice</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/362</guid>
			<comments>http://ohgyun.com/362#entry362comment</comments>
			<pubDate>Tue, 08 May 2012 15:18:02 +0900</pubDate>
		</item>
		<item>
			<title>랜덤 컬러 생성하기</title>
			<link>http://ohgyun.com/361</link>
			<description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.04.25&lt;br /&gt;
&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;그냥 오늘 테스트 코드를 짜다가 불쑥 생각해낸, 랜덤 컬러를 생성하는 간단한 코드~&lt;/div&gt;&lt;div&gt;짧고 간단해서, 종종 쓰면 편할 것&amp;nbsp;같아 메모해둔다.&lt;br /&gt;&lt;br /&gt;&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;br /&gt;
코드는 아래, 간단하다~&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Verdana; color: rgb(9, 0, 255); &quot;&gt;&amp;nbsp; &amp;nbsp; Math.random().toString(16).replace(/.*(\w{3})/, '#$1');&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;랜덤값을 생성해 16진수로 출력한&amp;nbsp;후,&lt;/p&gt;&lt;p&gt;대상 문자열에서 숫자 3개를 찾아 '#fff' 형태의 값을 뽑아온다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;요곤 축약형 hex code를 찾아내는 코드지만,&lt;/p&gt;&lt;p&gt;요래저래 활용하면 RGB 값도 한 방에 뽑아올 수 있을 듯 하다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;여튼, 테스트 용도로 적격인 코드.^^&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-361-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-361-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-361-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Javascript</category>
			<category>color code</category>
			<category>random color</category>
			<category>RGB</category>
			<category>랜덤 컬러</category>
			<category>랜덤 코드</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/361</guid>
			<comments>http://ohgyun.com/361#entry361comment</comments>
			<pubDate>Wed, 25 Apr 2012 20:31:31 +0900</pubDate>
		</item>
		<item>
			<title>크롬에서 단축키로 북마크 실행하기</title>
			<link>http://ohgyun.com/360</link>
			<description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.04.04&lt;br /&gt;
&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;북마크를 크롬에서 동기화해서 사용하고 있는데,&lt;/div&gt;&lt;div&gt;요고,.. 북마크를 단축키로 실행할 수가 없다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;chrome://bookmarks 페이지가 있어서 검색은 되긴 하지만, 이 역시 썩 능률적이지 않다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;좀 더 엘레강스한 방법이 없을깡~~&lt;br /&gt;&lt;br /&gt;&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;
역시나~~&lt;/div&gt;&lt;div&gt;주소창에서 옴니박스로 북마크를 실행할 수 있는 익스테션이 여럿 있다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;그 중 괜찮은 건,&lt;br /&gt;&amp;nbsp; - Quickmarks :&amp;nbsp;&lt;a href=&quot;http://goo.gl/XiSpY&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://goo.gl/XiSpY&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; - Bookmark Search:&amp;nbsp;&lt;a href=&quot;http://goo.gl/1Q9uB&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://goo.gl/1Q9uB&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;두 개 큰 차이 없지만, Quickmarks가 더 숏컷이 간단해서 요골 선택해서 쓰고 있다~&lt;/div&gt;&lt;div&gt;편하다!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- 검색 아이디어를 얻은 포스트:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://nestordave.com/2010/06/16/how-to-open-google-chrome-bookmarks-with-keyboard-shortcuts/&quot;&gt;http://nestordave.com/2010/06/16/how-to-open-google-chrome-bookmarks-with-keyboard-shortcuts/&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-360-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-360-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-360-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Etc</category>
			<category>bookmark</category>
			<category>chrome</category>
			<category>extension</category>
			<category>shortcutt</category>
			<category>단축키</category>
			<category>북마크</category>
			<category>크롬</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/360</guid>
			<comments>http://ohgyun.com/360#entry360comment</comments>
			<pubDate>Wed, 04 Apr 2012 12:12:06 +0900</pubDate>
		</item>
		<item>
			<title>CSS 동적 로딩 후, 완료되었는지 확인하기</title>
			<link>http://ohgyun.com/359</link>
			<description>&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.03.26&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;
모바일에서 css 파일을 동적 로딩하고, 로드가 완료되면 특정 작업을 진행하려고 한다.&lt;br /&gt;
&lt;br /&gt;
일전에 동적 로딩 모듈을 만들어봤던 기억으로는,&lt;br /&gt;
웹킷 계열은 &amp;lt;link&amp;gt; 태그에 onload를 지원하지 않아서 단순히 특정 시간 후에 load 이벤트가 발생하게 작성했었다.&lt;br /&gt;
다른 몇몇 라이브러리도 그렇게 했던 걸로 기억하고....&lt;br /&gt;
&lt;br /&gt;
뭔가 더 좋은 방법이 없을까?&lt;br /&gt;
&lt;br /&gt;
&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;br /&gt;
좀 검색해보니&amp;nbsp;웹킷 계열일 경우,&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;타이머로 document.styleSheets의 length를 체크하는 방법&lt;/font&gt;으로 로드 여부를 확인하고 있다.&lt;br /&gt;
&lt;br /&gt;
하지만, 페이지 내 다른 모듈에서 css 파일을 동적 로드하는 경우도 발생할 수 있으니,&lt;br /&gt;
length 체크만으론 부족해보인다.&lt;br /&gt;
좀 더 꼼꼼하게 처리하자면, &lt;font color=&quot;#193da9&quot;&gt;styleSheets 객체 내 href 속성값까지 확인해야 정확하겠다.&lt;/font&gt;&lt;br /&gt;
(여기까진&amp;nbsp;&lt;a href=&quot;http://www.zachleat.com/web/load-css-dynamically/&quot;&gt;http://www.zachleat.com/web/load-css-dynamically/&lt;/a&gt;&amp;nbsp;참고)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
그러다, 더 좋은 꼼수를 찾게 됐는데, 요고 아이디어가 기발하다.&lt;br /&gt;
&lt;br /&gt;
&lt;font color=&quot;#e31600&quot;&gt;link 태그를 추가하면서 동시에 같은 URL로 img 태그를 호출하고,&amp;nbsp;&lt;br /&gt;
img 태그의 onerror 핸들러를 체크하는 거다.&lt;br /&gt;
이미지로 호출된 css 파일이 로드되면 파싱하는 과정에서 에러가 발생하는 것으로 로드가 완료됐음을 파악하자는 아이디어다.&lt;br /&gt;
&lt;/font&gt;(자세한 내용은&lt;font color=&quot;#e31600&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;a href=&quot;http://www.backalleycoder.com/2011/03/20/link-tag-css-stylesheet-load-event/&quot;&gt;http://www.backalleycoder.com/2011/03/20/link-tag-css-stylesheet-load-event/&lt;/a&gt;&amp;nbsp; 참고)&lt;font color=&quot;#e31600&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;/font&gt;load 시점을 확실히 파악할 수 있지만, 두 가지 단점이 있다.&lt;br /&gt;
&amp;nbsp; 1. 같은 리소스에 대한 요청을 2번 보내게 된다.&lt;br /&gt;
&amp;nbsp; 2. css 파일이 존재하지 않는 경우(404)에도 동일하게 onerror 핸들러가 호출된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
스크립트에서 타이머를 돌면서 체크하는 것이 나을 지,&lt;br /&gt;
요청을 두 번 날리는 게 나을 지에 대한 성능은 좀 더 고려해봐야겠지만,&lt;br /&gt;
아이디어가 기발한 것만은 사실이다.^^&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
덧) 안드로이드(2.2, 2.3)에서 테스트해보니, image 파일이 아닌 경우 다운로드가 완료돼도 파싱 에러를 발생하지 않는다.&lt;br /&gt;
모바일에서 사용하기엔 적합하지 않은 방법이라 생각한다.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div id=&quot;endic_ext_wrapper&quot; style=&quot;display: none; &quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;vimiumReset vimiumHUD&quot; style=&quot;right: 150px; opacity: 0; display: none; &quot;&gt;
&lt;/div&gt;
&lt;div id=&quot;endic_ext_wrapper&quot; style=&quot;display: none; &quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;vimiumReset vimiumHUD&quot; style=&quot;right: 150px; opacity: 0; display: none; &quot;&gt;
&lt;/div&gt;&lt;div id=&quot;endic_ext_wrapper&quot; style=&quot;display: none; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;vimiumReset vimiumHUD&quot; style=&quot;right: 150px; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-359-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-359-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-359-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Javascript</category>
			<category>css 로딩</category>
			<category>dynamic loading</category>
			<category>lazy loading</category>
			<category>동적 로딩</category>
			<category>지연 로딩</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/359</guid>
			<comments>http://ohgyun.com/359#entry359comment</comments>
			<pubDate>Mon, 26 Mar 2012 15:41:22 +0900</pubDate>
		</item>
		<item>
			<title>SVN PROPFIND request failed 오류 발생 시 프록시를 확인해보자.</title>
			<link>http://ohgyun.com/358</link>
			<description>&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.03.22&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;
요새 진행하는 프로젝트에서는 배포 시점에서 스크립트를 압축하지 않고,&lt;br /&gt;
압축 툴로 배포할 파일을 미리 만들어두는 방식을 사용하고 있다.&lt;br /&gt;
&lt;br /&gt;
사용하고 있는&amp;nbsp;압축 툴은 매번 같은 이름의 새 파일을 생성하는데,&lt;br /&gt;
아주 가끔 이렇게 새로 만든 파일이 SVN에서 충돌을 일으키는 경우가 있었다.&lt;br /&gt;
&lt;br /&gt;
일단, 커밋하려고 하면 아래 메세지가 출력된다.&lt;font color=&quot;#193da9&quot;&gt;&lt;br /&gt;
&amp;nbsp; svn: PROPFIND request failed on ...&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
더 이상한 건, Repository view에서 해당 파일을 열려고 해도 열리지 않고,&lt;br /&gt;
리프레시를 시도해도 바뀌지 않는다.&lt;br /&gt;
&lt;br /&gt;
원인이 뭘까?&lt;br /&gt;
&lt;br /&gt;
&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;br /&gt;
PC를 재부팅해보기도 하고,&lt;br /&gt;
프로젝트를 새로 체크아웃 받기도 해보고,&lt;br /&gt;
다른 개발자가 리파지터리에서 삭제했다가 새 파일을 추가하고 다시 해보는 등등...&lt;br /&gt;
&lt;br /&gt;
여러 가지 시도를 하다 보면 어쩌다 된다... -_-;;&lt;br /&gt;
&lt;br /&gt;
이런 경우가 3~4번 있었는데, 최근 그 원인을 알게 됐다.&lt;br /&gt;
&lt;br /&gt;
바로 프록시 툴이 범인이었다.&lt;br /&gt;
&lt;br /&gt;
HTTP 모니터링이나 DNS 매핑 목적으로 찰스(&lt;a href=&quot;http://www.charlesproxy.com/&quot; target=&quot;_blank&quot; title=&quot;[http://www.charlesproxy.com/]로 이동합니다.&quot;&gt;Charles&lt;/a&gt;, HTTP Proxy 툴)를 계속 켜놓고 작업을 하는데,&lt;br /&gt;
패킷을 Recording 해놓은 상태에서 업데이트 하거나 파일을 커밋하면 이런 오류가 발생한다.&lt;br /&gt;
&lt;br /&gt;
추측컨데 아마도,..&lt;br /&gt;
 프록시가 레코딩할 때 파일에 대한 캐시를 가지고 있었는데, 파일이 갱신되니 그러나보다... (음-_-?)&lt;br /&gt;
&lt;br /&gt;
여튼, 정확한 원인은 모르겠으나,.. 이 때 프록시 툴을 끄고 재시도 해보니 잘 된다.&lt;br /&gt;
&lt;br /&gt;
가끔은, 리파지터리 인증 정보까지 씹어 먹는 경우가 있다. -_-&lt;br /&gt;
이 때엔, 리파지터리 정보를 갱신해주거나 재로그인 해주니 해결된다.&lt;br /&gt;
&lt;br /&gt;
여튼, 결론은,..&lt;br /&gt;
&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;SVN 오류가 날 땐, 혹시라도 모르니 프록시 툴을 한 번 살펴보자.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;b&gt;#덧. 2012.03.26&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;정확한 원인을 찾아냈다.&lt;br /&gt;
레코딩 때문이 아니었다.&lt;br /&gt;
&lt;br /&gt;해당 파일을 &lt;font color=&quot;#e31600&quot;&gt;찰스에서 로컬 응답(Map Local)으로 사용하고 있었기 때문&lt;/font&gt;이다. (Fiddler의 Auto Response)&lt;br /&gt;
참고로, Map Local이 설정되어 있는 상태에서, 찰스 프로세르를 종료시켜도 동일한 문제가 발생한다.&lt;br /&gt;
&lt;br /&gt;테스트 후엔, 잘 끄자. -_-;;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;vimiumReset vimiumHUD&quot; style=&quot;right: 150px; opacity: 0; display: none; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;vimiumReset vimiumHUD&quot; style=&quot;right: 150px; opacity: 0; display: none; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-358-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-358-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-358-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Etc</category>
			<category>Charles</category>
			<category>fiddler</category>
			<category>PROPFIND</category>
			<category>svn</category>
			<category>프록시툴</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/358</guid>
			<comments>http://ohgyun.com/358#entry358comment</comments>
			<pubDate>Thu, 22 Mar 2012 17:28:04 +0900</pubDate>
		</item>
		<item>
			<title>모바일 사파리에서는 placeholder의 word wrap이 적용되지 않는다.</title>
			<link>http://ohgyun.com/357</link>
			<description>&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.03.20&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;
textarea에 기본 문구가 들어가고, 포커스/블러 시 기본 문구를 숨겨주는 스펙이다.&lt;br /&gt;
&lt;br /&gt;
HTML5의 placeholder를 적용할 수 있는 전형적인 케이스인데,&lt;br /&gt;
마크업 쪽에서 value에 직접 할당을 하는 방법으로 전달해줬다.&lt;br /&gt;
&lt;br /&gt;
혹시나 해서, placeholder로 기본 문구를 넣어봤더니,&lt;br /&gt;
아니나 다를까 문구가 길어지자 문구가 잘려보인다~&lt;br /&gt;
&lt;br /&gt;
왜 이런겨~&lt;br /&gt;
&lt;br /&gt;
&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;br /&gt;
W3C 스펙에서 placeholder의 word wrap 부분에 대해선 정확히 정의하지 않은 모양이다.&lt;br /&gt;
&lt;br /&gt;
모바일 사파리에서 문구가 길어질 경우, (overflow:hidden 과 같이) 잘려보인다.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/7312623/insert-line-break-inside-placeholder-attribute-of-a-textarea&quot; target=&quot;_blank&quot; title=&quot;[http://stackoverflow.com/questions/7312623/insert-line-break-inside-placeholder-attribute-of-a-textarea]로 이동합니다.&quot;&gt;http://stackoverflow.com/questions/7312623/insert-line-break-inside-placeholder-attribute-of-a-textarea&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.sitepoint.com/forums/showthread.php?793613-Placeholder-text-does-not-wrap-in-text-field&quot; target=&quot;_blank&quot; title=&quot;[http://www.sitepoint.com/forums/showthread.php?793613-Placeholder-text-does-not-wrap-in-text-field]로 이동합니다.&quot;&gt;http://www.sitepoint.com/forums/showthread.php?793613-Placeholder-text-does-not-wrap-in-text-field&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div id=&quot;endic_ext_wrapper&quot; style=&quot;display: none; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-357-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-357-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-357-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Javascript</category>
			<category>PlaceHolder</category>
			<category>Safari</category>
			<category>Word Wrap</category>
			<category>사파리</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/357</guid>
			<comments>http://ohgyun.com/357#entry357comment</comments>
			<pubDate>Tue, 20 Mar 2012 11:49:33 +0900</pubDate>
		</item>
		<item>
			<title>자바스크립트로 모바일 키패드 열기</title>
			<link>http://ohgyun.com/356</link>
			<description>&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.03.20&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;
요새 모바일 프로젝트를 진행하고 있는데,&lt;br /&gt;
textarea에 포커스를 주는 동시에 키패드를 뿅~하고 나타나게 하는 데서 어려움을 겪은 적이 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;'쓰기' 버튼을 누르면 textarea가 있는 곳으로 애니메이팅 되어 이동한 후,&lt;br /&gt;
textarea에 포커스를 주도록 하는 스펙이다.&lt;br /&gt;
&lt;br /&gt;
이상하게도, textarea에 포커스가 들어가긴 하는데, 키패드가 열리지 않는다.&lt;br /&gt;
원인이 뭘까?&lt;br /&gt;
&lt;br /&gt;
모바일 사파리에서 발생한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;br /&gt;
모바일 사파리에서는, &lt;font color=&quot;#193da9&quot;&gt;&lt;b&gt;사용자 이벤에 의해서만 키패드를 열 수 있다.&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
스크립트만으로는 키패드를 열 수 없고,&lt;br /&gt;
&lt;b&gt;&lt;font color=&quot;#193da9&quot;&gt;다만, 사용자 이벤트 함수 실행 범위 내에서는 가능하다.&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예를 들어,&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;&amp;nbsp; onClickButton: function (e) { &lt;/font&gt;&lt;font color=&quot;#2b8400&quot;&gt;// 클릭 이벤트 핸들러라 가정한다.&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;&amp;nbsp; &amp;nbsp; textarea.focus(); &lt;/font&gt;&lt;font color=&quot;#2b8400&quot;&gt;// 원하는 textarea의 포커스 이벤트를 호출하면 키패드가 열린다.&lt;br /&gt;
&lt;/font&gt;&lt;font color=&quot;#193da9&quot;&gt;&amp;nbsp; }&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
반면,&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;&amp;nbsp; onClickButton: function (e) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; setTimeout(function () {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; textarea.focus(); &lt;/font&gt;&lt;font color=&quot;#2b8400&quot;&gt;// 이 경우, 이벤트 핸들러의 실행 범위를 벗어나므로, 키패드가 열리지 않는다.&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;&amp;nbsp; &amp;nbsp; }, 500);&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;&amp;nbsp; }&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위 '문제'에서의 상황은,&lt;br /&gt;
사용자의 클릭 이벤트 핸들러에서 타이머를 사용해&amp;nbsp;애니메이팅을 구현했기 때문에,&lt;br /&gt;
포커스가 들어가긴 했으나 실제로 키패드가 열리진 않았던 것이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
여기서는, textarea에 직접 포커스를 주지 않고,&lt;br /&gt;
글쓰기 영역까지 이동하는 것으로 스펙을 합의하는 방법으로 해결했다.&lt;br /&gt;
꼭 포커스를 주지 않아도 사용성에 큰 문제가 없었기 때문이다.&lt;/div&gt;
&lt;br /&gt;
&lt;div id=&quot;endic_ext_wrapper&quot; style=&quot;display: none; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-356-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-356-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-356-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Javascript</category>
			<category>Focus</category>
			<category>Mobile</category>
			<category>Safari</category>
			<category>키보드</category>
			<category>키패드</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/356</guid>
			<comments>http://ohgyun.com/356#entry356comment</comments>
			<pubDate>Tue, 20 Mar 2012 11:35:34 +0900</pubDate>
		</item>
		<item>
			<title>Mobile JS File Cache Limit</title>
			<link>http://ohgyun.com/355</link>
			<description>&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.02.09&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;
이번에 모바일 프로젝트를 하나 맡게 됐다.&lt;br /&gt;
&lt;br /&gt;
기획서를 검토하고 구조를 잡던 중에,&lt;br /&gt;
예전에 어떤 가이드에서 iOS에서는 스크립트 사이즈가 몇 kb 이상이면 캐시가 되지 않는다고 했던 게 기억났다.&lt;br /&gt;
&lt;br /&gt;
꽤 오래 전이었던 걸로 기억하는데,..&lt;br /&gt;
아직도 유효한가?&lt;br /&gt;
&lt;br /&gt;
&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;br /&gt;
스티브 사우더스가 모바일 캐시 파일 사이즈에 대해 아주 잘 설명해놓은 포스트가 있다.&lt;br /&gt;
&lt;a href=&quot;http://www.stevesouders.com/blog/2010/07/12/mobile-cache-file-sizes/&quot;&gt;http://www.stevesouders.com/blog/2010/07/12/mobile-cache-file-sizes/&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
요약해보면,&lt;br /&gt;
한 세션 당,&lt;font color=&quot;#8e8e8e&quot;&gt; (여기서 세션은 한 페이지에서 다른 페이지로 이동하는 것을 의미한다)&lt;/font&gt;&lt;br /&gt;
스크립트 &lt;b&gt;&lt;font color=&quot;#193da9&quot;&gt;한 개의 파일 당 iOS는 4MB까지, 안드로이드는 2MB까지 캐시가 된다.&amp;nbsp;&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
물론 버전에 따라 약간씩 다르긴 하다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
또한, 폰을 잠궜다가 다시 들어갔을 때에도 캐시는 유효하다.&lt;br /&gt;
전원을 껐다 켰을 경우, iOS는 캐시가 모두 삭제된다. &amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
성능 팀에서 테스트 한 자료에 의하면,&lt;br /&gt;
스크립트 사이즈가 작을 경우(256kb 이하, iOS4.3) 전원을 껐다 켜도 캐시가 된다고 한다.&amp;nbsp;&lt;br /&gt;
스티브 사우더스의 실험 결과와는 차이가 있는 부분이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTML 페이지의 경우, iOS3 이하에서는 25.6kb 이하가 될 때에만 캐시된다고 한다.&lt;br /&gt;
아마 내가 기억하고 있던 예전 사이즈가 HTML 사이즈였던 모양이다.&lt;br /&gt;
4.3 버전의 경우, 약간 늘어서 128kb 까지 캐시가 된다고 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
시간이 좀 된 자료지만, YUI 블로그의 포스트를 참고해봐도 좋겠다.&lt;br /&gt;
&lt;a href=&quot;http://www.yuiblog.com/blog/2010/07/12/mobile-browser-cache-limits-revisited/&quot;&gt;http://www.yuiblog.com/blog/2010/07/12/mobile-browser-cache-limits-revisited/&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-355-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-355-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-355-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Javascript</category>
			<category>cache</category>
			<category>Limit</category>
			<category>Mobile</category>
			<category>모바일</category>
			<category>캐시</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/355</guid>
			<comments>http://ohgyun.com/355#entry355comment</comments>
			<pubDate>Thu, 09 Feb 2012 18:35:00 +0900</pubDate>
		</item>
		<item>
			<title>Charles 에서 HTTPS 패킷 확인하기</title>
			<link>http://ohgyun.com/354</link>
			<description>&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.01.31&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;
HTTP 패킷 확인 툴로 찰스(Charles)를 주로 사용하고 있다.&lt;br /&gt;
이번에 HTTPS 요청을 테스트할 게 있어서 모니터링을 시도했으나, 자꾸 Fail이 난다.&lt;br /&gt;
&lt;br /&gt;
브라우저는 크롬을 사용하고 있다.&lt;br /&gt;
&lt;br /&gt;
왜 그런 걸까.&lt;br /&gt;
&lt;br /&gt;
&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;br /&gt;
혹시나 해서 익스플로러에서 HTTPS 모니터링을 시도해보니, 신뢰할 수 있는 인증서냐고 물어본다.&lt;br /&gt;
신뢰할 수 있다고 체크하고 진행하니, IE에서는 정상적으로 보인다.&lt;br /&gt;
&lt;br /&gt;
아무래도 크롬에서 인증서를 신뢰할 수 없어 튕겨내는 것 같다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
혹시나 해서, 찰스 가이드를 찾아보니 찰스가 SSL Proxying을 처리하는 방법에 대해 나와있다.&lt;br /&gt;
&lt;br /&gt;
찰스는 브라우저와 SSL 웹 서버의 중간자(man-in-the-middle HTTPS Proxy)가 되는 방법으로 이를 처리한다.&lt;br /&gt;
브라우저는 서버의 인증서를 바라보는 대신에, 찰스가 동적으로 생성한 인증서(Charles CA Certificate)를 바라본다.&lt;br /&gt;
마찬가지로 응답 시에는 서버의 인증서를 찰스가 받고, 브라우저는 찰스의 인증서를 받는다.&lt;br /&gt;
이 방법으로 찰스는 암호화되지 않은 plain text를 볼 수 있다.&lt;br /&gt;
단, 브라우저가 찰스가 생성한 인증서를 신뢰해야 한다.&lt;br /&gt;
&lt;br /&gt;
따라서, IE에서 그랬던 것처럼,&lt;br /&gt;
 브라우저는 Charles CA Certificate가 신뢰할 수 있는 인증서이냐는 보안 경고를 띄운다.&lt;br /&gt;
신뢰할 수 있는 것이라 선택하면 진행할 수 있는 것이고, 아니라면 더 이상 모니터링 할 수 없다.&lt;br /&gt;
&lt;br /&gt;
크롬은 IE와 다르게 신뢰할 수 없는 인증서면 암묵적으로 무시하나보다.&lt;br /&gt;
아니면 나도 모르게 언젠가 신뢰할 수 없다고 했다던가...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
여튼, 요골 해결하려면 찰스가 동적으로 생성한 인증서를 신뢰할 수 있다고 크롬에게 알려줘야 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;&amp;nbsp; 1. 크롬에서 옵션 &amp;gt; 고급설정 &amp;gt; HTTPS/SSL &amp;gt; 인증서 관리를 클릭한다.&lt;br /&gt;
&amp;nbsp; 2. '신뢰할 수 있는 루트 인증기관' 탭을 선택하고, '가져오기' 버튼을 클릭한다.&lt;br /&gt;
&amp;nbsp; 3. 찰스가 설치되어 있는 폴더에서 charles-proxy-ssl-proxying-certificate.crt 파일을 찾아 가져온다.&lt;br /&gt;
&amp;nbsp; 4. 가져온 인증서를 신뢰할 수 있는 게 확실하냐고 묻는다.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;그렇다고 하면 크롬은 찰스가 생성한 인증서를 쭈-욱 신뢰한다.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
이 부분을 설정해도 해결되지 않았다면, 찰스에서 SSL 프록시를 사용할 것이라 체크했는지 확인해본다.&lt;br /&gt;
&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;&amp;nbsp; 1. 찰스에서 Proxy &amp;gt; Proxy Settings &amp;gt; SSL 탭에서 'Enable SSL Proxing'을 선택한다.&lt;br /&gt;
&amp;nbsp; 2. Locations에 모니터링 할 호스트를 추가한다. 모든 사이트를 모니터링하고 싶을 경우, '*' 을 추가하면 된다.&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
요호~~ 이제 HTTPS 패킷 확인이 가능해졌다~~~~&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-354-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-354-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-354-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Etc</category>
			<category>Charles</category>
			<category>fiddler</category>
			<category>https</category>
			<category>모니터링</category>
			<category>찰스</category>
			<category>철수</category>
			<category>촬스</category>
			<category>패킷</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/354</guid>
			<comments>http://ohgyun.com/354#entry354comment</comments>
			<pubDate>Tue, 31 Jan 2012 19:54:15 +0900</pubDate>
		</item>
		<item>
			<title>크롬 익스텐션에서 document.documentElement 를 찾지 못하는 문제</title>
			<link>http://ohgyun.com/353</link>
			<description>&lt;div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;발생일: &lt;/span&gt;2012.01.19&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;문제:&lt;/span&gt;&lt;br /&gt;
며칠 전 크로미엄 버전을 18.0.1010.1 dev-m 버전으로 업데이트 한 이후로,&lt;br /&gt;
잘 작동하던 몇몇 익스텐션이 제대로 작동하지 않는다.&lt;br /&gt;
&lt;br /&gt;어느 부분에서 오류가 나나 찾아봤더니,&lt;br /&gt;
익스텐션에서 document.documentElement 를 찾지 못한다.&lt;br /&gt;
&lt;br /&gt;뭐가 문젤까?&lt;br /&gt;
&lt;br /&gt;&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해결책:&lt;/span&gt;&lt;br /&gt;
크롬 dev 버전이 18.0.1010.1로 업데이트 되면서 발생한 버그로 추정된다.&lt;br /&gt;
&lt;br /&gt;검색해보니 같은 문제로 2012.01.11에 버그 리포팅 된 것이 있다.&lt;br /&gt;
&lt;a href=&quot;https://groups.google.com/a/chromium.org/group/chromium-bugs/browse_thread/thread/0e668df511f0b381&quot;&gt;https://groups.google.com/a/chromium.org/group/chromium-bugs/browse_thread/thread/0e668df511f0b381&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;재현을 위해서는,&lt;br /&gt;
1. 익스텐션에서 아래와 같이 content script의 실행 시점을 document_start로 설정하고,&lt;br /&gt;
&lt;font color=&quot;#193da9&quot;&gt;&amp;nbsp; content_scripts: [&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; ... (생략) ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;run_at: &quot;document_start&quot;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; ]&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;2. 스크립트 내에서 &lt;b&gt;&lt;font color=&quot;#193da9&quot;&gt;document.documentElement&lt;/font&gt;&lt;/b&gt; 를 접근하면 &lt;font color=&quot;#193da9&quot;&gt;&lt;b&gt;undefined&lt;/b&gt;&lt;/font&gt;가 뜨는 것을 확인할 수 있다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
아직 버그가 해결되지 않은 상태라 일단은,&lt;br /&gt;
임시 해결을 위해 스크립트 실행 시점을 기본값인 &lt;font color=&quot;#193da9&quot;&gt;&lt;b&gt;document_idle &lt;/b&gt;&lt;/font&gt;로 변경하면 된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-353-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-353-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-353-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>Javascript</category>
			<category>18.0.1010.1</category>
			<category>chrome</category>
			<category>Chromium</category>
			<category>document.documentElement</category>
			<category>extension</category>
			<category>익스텐션</category>
			<category>크로미엄</category>
			<category>크롬</category>
			<author>ohgyun</author>
			<guid>http://ohgyun.com/353</guid>
			<comments>http://ohgyun.com/353#entry353comment</comments>
			<pubDate>Thu, 19 Jan 2012 11:42:34 +0900</pubDate>
		</item>
	</channel>
</rss>
