<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>G2 and beyond</title>
<link>http://gitagy.tistory.com/</link>
<description>Gitagy의 일상과 소프트웨어, 개발 그리고 차세대 인터넷에 대한 이야기</description>
<language>ko</language>
<pubDate>Tue, 31 May 2016 09:25:36 +0900</pubDate>
<generator>TISTORY</generator>
<managingEditor>gitagy</managingEditor>
<image>
<title>G2 and beyond</title>
<url>http://cfs.tistory.com/attach/7048/1787954449.jpg</url>
<link>http://gitagy.tistory.com</link>
<description>Gitagy의 일상과 소프트웨어, 개발 그리고 차세대 인터넷에 대한 이야기</description>
</image>
<item>
<title>phonegap In-App Purchase on iOS, plugin problem</title>
<link>http://gitagy.tistory.com/84</link>
<description>&lt;p&gt;phonegap iOS IAP 플러그인은&amp;nbsp;&lt;a href=&quot;https://github.com/j3k0/PhoneGap-InAppPurchase-iOS&quot; style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;https://github.com/j3k0/PhoneGap-InAppPurchase-iOS&lt;/a&gt;&amp;nbsp;에 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;phonegap 플러그인 관리 시스템인 plugman 을 통해서 설치를 진행 하면 되겠다.&lt;/p&gt;&lt;p&gt;아니면 수동 설치 라도 관계 없다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;xcode 에는 Storekit.framework 와 plugins 아래에 소스가 설치될 것이고,&lt;/p&gt;&lt;p&gt;config.xml 에 &amp;lt;plugin&amp;gt; 이나 &amp;lt;feature&amp;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;phonegap 은 플러그인과 관련하여 cordova_plugins.json 과 cordova_plugins.js 를 자동으로 불러 오도록 디자인 되어 있다. json 이 있다면 사용하고 에러가 발생 (404 not found 등) 하면 js 를 불러오도록 말이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 json 과 js 는 기존에 플러그인을 사용중이라면 하나의 방식은 반드시 사용하고 있을 것인데, plugman 을 통한 설치는 js 방식으로 인스톨 되도록 되어 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;json 방식을 사용코자 한다면 js 에 등록된 내용 일부를 json 로 옮기면 된다.&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;[&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;file&quot;: &quot;InAppPurchase.js&quot;,&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;id&quot;: &quot;com.phonegap.plugins.inapppurchase.InAppPurchase&quot;,&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;clobbers&quot;: [&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;storekit&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;]&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그리고 github 에서 제공하는 InAppPurchase.js 를 그대로 쓰면 문제가 있는데, 반드시 cordova.define 으로 감싸여야 한다. (plugman 을 통해 설치 하면 자동 처리 된다.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;cordova.define(&quot;com.phonegap.plugins.inapppurchase.InAppPurchase&quot;, function(require, exports, module) {&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/*&lt;/p&gt;&lt;p&gt;기존 소스 파일 전체&lt;/p&gt;&lt;p&gt;*/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;});&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;마지막으로 HTML 파일에서는 cordova.js 에 의해서 적절한 타이밍에 plugin json 이나 js 가 불러져 플러그인이 로딩 되도록 해야 한다. (cordova.js 만 불러 들이면 된다는 말이다)&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;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-84-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-84-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-84-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>technically</category>
<category>cordova</category>
<category>IAP</category>
<category>ios</category>
<category>ipad</category>
<category>iPhone</category>
<category>phonegap</category>
<category>plugin</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/84</guid>
<comments>http://gitagy.tistory.com/84#entry84comment</comments>
<pubDate>Thu, 12 Sep 2013 14:39:04 +0900</pubDate>
</item>
<item>
<title>When reinstalling the iOS OTA deployment, GUID is changed.</title>
<link>http://gitagy.tistory.com/83</link>
<description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Any app updates or patches for storage and storing data through, if OTA distribution methods during the reinstallation of its contents can not be maintained.&lt;/p&gt;&lt;p&gt;This is because changing the GUID of the app.&lt;/p&gt;&lt;p&gt;This is thought to reinstall after deletion, strangely information stored in localStorage is maintained.&lt;/p&gt;&lt;p&gt;Remove and reinstall the whole seems not.&lt;/p&gt;&lt;p&gt;But do not worry. Not happened before in the App Store.&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-83-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-83-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-83-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>technically</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/83</guid>
<comments>http://gitagy.tistory.com/83#entry83comment</comments>
<pubDate>Thu, 12 Sep 2013 14:24:41 +0900</pubDate>
</item>
<item>
<title>phonegap LocalFileSystem.PERSISTENT and TEMPORARY path</title>
<link>http://gitagy.tistory.com/82</link>
<description>&lt;p&gt;iOS PERSISTENT&lt;/p&gt;&lt;p&gt;/var/mobile/Applications/C6498276-BD1B-403C-971B-389B3E8B38E8/Documents&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;iOS TEMPORARY&lt;/p&gt;&lt;p&gt;/var/mobile/Applications/C6498276-BD1B-403C-971B-389B3E8B38E8/tmp&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Android 4.x PERSISTENT (if mounted)&lt;/p&gt;&lt;p&gt;file:///storage/sdcard0&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Android 4.x TEMPORARY&lt;/p&gt;&lt;p&gt;file:///storage/sdcard0/Android/data/com.xxxx/cache&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&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;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-82-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-82-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-82-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>technically</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/82</guid>
<comments>http://gitagy.tistory.com/82#entry82comment</comments>
<pubDate>Tue, 10 Sep 2013 16:20:46 +0900</pubDate>
</item>
<item>
<title>can make a asset patcher using phonegap?</title>
<link>http://gitagy.tistory.com/81</link>
<description>&lt;p&gt;The conclusion is possible.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Look at the &lt;b&gt;sample code&lt;/b&gt; below.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;var success = function(_fs)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;qbw_patcher.fs = _fs;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;qbw_patcher.getLocalPath();&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, success, failure);&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;runThread: function()&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;if (qbw_patcher.exit == true)&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;return;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;var target = this.getQueue();&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;if (!target)&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;this.threadRun--;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;this.s.thread_run.text(this.threadRun);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;if (this.threadRun == 0)&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;qbw_patcher.setLocalPlist();&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;this.s.mesg.text('다운로드 완료');&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;setTimeout(function ()&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;qbw_patcher.download_complete();&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;}, 500);&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;return;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;var remoteUrl = encodeURI(this.remoteUrl + target[0]);&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;var localPath = this.localPath + target[0];&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;this.download(remoteUrl, localPath, target);&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;},&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;download:function(_remoteUrl, _localPath, _target)&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;var fileTransfer = new FileTransfer();&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;var success = function(_entry)&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;qbw_patcher.queue_complete_recent = _entry.name;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;qbw_patcher.queue_complete_count++;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;qbw_patcher.queue_complete_size += _target[1];&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;qbw_patcher.jsn.list[_target[0]] = [_target[1], _target[2]];&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;qbw_patcher.setLocalPlist();&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;qbw_patcher.runThread();&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;var failure = function(_err)&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp;console.log(&quot;download error source &quot; + _err.source);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;console.log(&quot;download error target &quot; + _err.target);&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;console.log(&quot;download error code &quot; + _err.code);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qbw_patcher.error++;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qbw_patcher.s.error.text(qbw_patcher.error);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qbw_patcher.runThread();&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;fileTransfer.download(_remoteUrl, _localPath, success, failure);&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;},&lt;/p&gt;&lt;/blockquote&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;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-81-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-81-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-81-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>technically</category>
<category>Asset</category>
<category>assets_www</category>
<category>cache</category>
<category>patcher</category>
<category>phonegap</category>
<category>Update</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/81</guid>
<comments>http://gitagy.tistory.com/81#entry81comment</comments>
<pubDate>Tue, 09 Jul 2013 16:57:59 +0900</pubDate>
</item>
<item>
<title>phonegap universal devices 대응하기</title>
<link>http://gitagy.tistory.com/80</link>
<description>&lt;p&gt;몇가지만 설정해 주면 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. iOS Application Target 에서 Devices를 Universal 로 설정&lt;/p&gt;&lt;p&gt;2. phonegap&amp;nbsp;config.xml 에서 Preferences for iOS 에 EnableViewportScale true 설정&lt;/p&gt;&lt;p&gt;3. 웹페이지에 device-width 를 384px 로&amp;nbsp;scale 을 2.0 으로 설정&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;asset 에 main page&amp;nbsp;를 scale 별로 만들어 두고, startPage 에서 device.model 으로 구분하여 로딩하면 된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;device.model 로 대응이 어려운 상황이 생기면 scale 1.0 에서 startPage 를 로딩하여 window.innerWidth 를 뽑아서 적절하게 custom 분배 하는 방법도 있을 듯 하다. (이건 나중에 해볼 예정)&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;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-80-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-80-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-80-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>technically</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/80</guid>
<comments>http://gitagy.tistory.com/80#entry80comment</comments>
<pubDate>Tue, 09 Jul 2013 16:33:58 +0900</pubDate>
</item>
<item>
<title>웹엔지니어 광고가 이정도는 되야지.</title>
<link>http://gitagy.tistory.com/79</link>
<description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display:inline-block;width:220px;;height:auto;max-width:100%&quot;&gt;&lt;img src=&quot;http://cfile27.uf.tistory.com/image/25468D4551C2678536ACBE&quot; filemime=&quot;image/jpeg&quot; filename=&quot;bd294ce7ff4c43b6aad4aa4169fb819b.jpg&quot; height=&quot;250&quot; style=&quot;&quot; width=&quot;220&quot;/&gt;&lt;/span&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;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-79-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-79-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-79-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>잡념</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/79</guid>
<comments>http://gitagy.tistory.com/79#entry79comment</comments>
<pubDate>Thu, 20 Jun 2013 11:25:38 +0900</pubDate>
</item>
<item>
<title>jQ.Mobi 의 $.ajax options.complete 미실행 버그 대처</title>
<link>http://gitagy.tistory.com/78</link>
<description>&lt;p&gt;jQuery 도 마찬가지 이지만 jQ.Mobi 에는 $.ajax 가 있고 success, error, complete 의 3가지 callback 을 지원한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;success 와 error 는 통신 에러와 성공을 처리 할 것이고 complete 는 success 든 error 든 반드시 함께 수행되는 callback 에 해당 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;complete 의 수행 순서는 success 나 error 수행 후 인데 통신 전/후 처리가 필요할때 후 처리로 사용하기 적합한 callback 인 셈이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;그런데 complete 의 수행 순서가 후 순위 이다 보니 전 처리에서 스크립트 오류가 발생하면 실행되지 않는 문제가 있었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;어떻게 해야 하나 하다가 의외로 간단히 적용 되었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;소스는 아래와 같고 볼드 된 부분이 추가된 것이다. 간단히 try catch 만 추가 되었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;qbw_e.cfg.fgXhr = $.ajax(&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;type:'POST',&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;url: _url,&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;data: _data,&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;dataType:'json',&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;timeout: 30000,&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;success: function(_data, _status)&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-size: 9pt; line-height: 1.5; white-space: pre;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;if (_data.qbw_cmd_return)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;{&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;if (_successFunc)&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;&lt;b&gt;try&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;&lt;b&gt;{&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;_successFunc.call(window, _data, _status);&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;&lt;b&gt;} catch (e)&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;&lt;b&gt;{&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;&lt;b&gt;//&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;&lt;b&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;} else {&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;// common message show&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;qbw_dlg.setDataOpen('message', { text:'error s1 : ' + _data});&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;},&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;error: _errorFunc,&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;complete: function(_xhr, _status)&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;{&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-size: 9pt; line-height: 1.5; white-space: pre;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;qbw_e.cfg.fgCmdUse = false;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;qbw_e.cfg.fgCmdLastest = qbw_timer.now();&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;qbw_e.cfg.fgCmdCount++;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;qbw_cmd_inprogress(false);&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;font-size: 9pt; line-height: 1.5; white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;});&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&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;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-78-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-78-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-78-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>technically</category>
<category>$.ajax</category>
<category>Callback</category>
<category>Complete</category>
<category>JQ.Mobi</category>
<category>Success</category>
<category>try catch</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/78</guid>
<comments>http://gitagy.tistory.com/78#entry78comment</comments>
<pubDate>Fri, 10 May 2013 18:19:45 +0900</pubDate>
</item>
<item>
<title>VirtualBox Windows 7(Host) CentOS 6.3(Guest OS) 간 공유폴더 (share folder, vboxsf) 캐싱버그 (caching bug)</title>
<link>http://gitagy.tistory.com/77</link>
<description>&lt;p&gt;개발 환경을 Windows 7 에 VirtualBox VM 으로 CentOS 6.3 을 올리고 Host, Guest OS간 vboxsf (virtualbox 의 공유폴더 디바이스) 로 Windows 의 폴더를 공유하여 CentOS lighttpd 에서 해당 공유폴더를 web service root 로 해서 사용 중 입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이러면 윈도우 7에 이클립스를 설치하여 개발하고 브라우저를 띄워 lighttpd 에 접속하여 확인을 하며 개발을 진행 할 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;왜 굳이 윈도우에서 개발을 하느냐는&amp;nbsp;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;지금은 많이 좋아 졌는지 모르겠지만 리눅스에서 멀티모니터 (3~4개 사용) 사용하려면 골치도 아프고 퍼포먼스도 상당히 떨어 집니다. 그래서 고생하기 싫어서 윈도우를 사용 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;VirtualBox 를 사용하기 전에는 서버 환경 (lighttpd, php-fpm(여기다가 각종 PECL), python 서버, node 서버 등) 과 개발 환경 (apache, mod_php, python, node 등언 개발서버꺼 공용 사용) 이 같지 않았었습니다. 물론 시간과 노력을 들이면 거진 비슷하게 할 수 있겠지만 그 시간과 노력이 좀 많이 들어가야 합니다. 버전이 바뀜에 따라 한번 더 작업 해 줘야 할 수도 있구요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;이런 상황에서 위와 같이 개발을 진행하면 윈도우에서 개발을 할 수 있다와, 쉽게 production 환경과 100% 동일한 독립 개발 환경을 가질 수 있는 크나큰 이점이 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;잡설이 길었는데 이 vboxsf 에는 큰 버그가 있는데 일반적인 text 파일에서는 겪지 않았지만 이미지의 경우 윈도우에서 변경해도 리눅스 서비스 파일은 캐싱되어 변하지 않는다 입니다. 이미지를 조금씩 수정하여 개발을 진행 할때는 아주 미춰 버립니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;파일명을 바꾸거나, vboxsf 의 mount 를 새로 하거나, 여간 귀찮은게 아니죠.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;OS 레벨에서 disk 캐쉬 or 버퍼를 날릴&amp;nbsp;방법이 없을까 hdparm 등으로 찾아 보았지만 vboxsf 에서는 애매 하네요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;그래서 아래와 같은 명령을 찾았고 아주 잘 동작 합니다.&lt;/p&gt;&lt;p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;sync; echo 3 &amp;gt; /proc/sys/vm/drop_caches&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&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;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-77-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-77-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-77-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>technically</category>
<category>Bug</category>
<category>sharefolder</category>
<category>vboxsf</category>
<category>VirtualBox</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/77</guid>
<comments>http://gitagy.tistory.com/77#entry77comment</comments>
<pubDate>Fri, 26 Apr 2013 17:09:00 +0900</pubDate>
</item>
<item>
<title>PHP (php-fpm) 5.4.12 의 Uncaught exception Fatal error bug (버그)</title>
<link>http://gitagy.tistory.com/76</link>
<description>&lt;p&gt;이 버그 때문에 시간으로 치자면 하루 정도는 고민을 한듯!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래 스크립트 실행시&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;&amp;lt;?php&lt;/p&gt;&lt;p&gt;try&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new Exception('error');&lt;/p&gt;&lt;p&gt;} catch (Exception $e)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &quot;error&quot;;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exit;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;?&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;PHP 5.4.12 하에서 CLI 로 실행시 제대로 되고 php-fpm 으로 실행시 아래 에러 메시지 발생&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;[05-Apr-2013 16:11:43 Asia/Seoul] PHP Fatal error: &amp;nbsp;Uncaught exception 'Exception' with message 'error' in /-------------/t.php:4&lt;/p&gt;&lt;p&gt;Stack trace:&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예전 서비스 들은 5.3.x 를 사용하는 지라 중간 버전 업데이트에 따른 대대적인 변경이 있나 싶어서 한참 찾아봄. 그래도 못 찾겠어서, 설마 하는 심정으로 5.4.13 으로 업데이트&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;문제 해결!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&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;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-76-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-76-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-76-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>technically</category>
<category>5.4.12</category>
<category>5.4.13</category>
<category>Bug</category>
<category>exception</category>
<category>php</category>
<category>php-fpm</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/76</guid>
<comments>http://gitagy.tistory.com/76#entry76comment</comments>
<pubDate>Fri, 05 Apr 2013 16:25:31 +0900</pubDate>
</item>
<item>
<title>리눅스 load average 와 컨텍스트 스위칭</title>
<link>http://gitagy.tistory.com/71</link>
<description>&lt;p&gt;작년 연말 서비스 중인 게임의 통합 작업을 진행했는데 가장 큰 통합은 웹 서버 였다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;KT ucloud 에서 사용중인 2 core 4g memory VM 18대를 4 core (HT) 16G 물리서버 2대로 통합 하는 작업.&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;BMT 나 여러 수치상으로는 문제가 없었으나 이관 완료 후 몇 일간 지속적인 모니터링을 해본바 CPU idle 에 비해서 load average 가 너무 높게 나오는 것이였다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;보통 10대를 유지하고 피크때 20을 가볍게 넘기고 30까지 가는 상황, 물론 이때도 CPU idle 은 괜찮은 편.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;원래 알고 있던 load average 는 20이 넘어가면 서버가 다운 되는 걸로 알고 있었는데. 참 신기한 현상 이였다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이를 분석하기 위해서 vmstat 를 사용하였고 procs 의 r, system cs 가 엄청나게 높게 나오는 상황 이였다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;procs r 은 The number of processes waiting for run time.&lt;/p&gt;&lt;p&gt;system cs 는&amp;nbsp;The number of context switches per second.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;얼마나 높게 나왔냐면 procs r 은 30-50대, cs 는 십만 단위.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;딱 2년전 iowait 때문에 고생한거 생각하면 wait 는 정말 보고 싶지 않은 단어인데, run time waiting 이라니...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;하여튼 cs 와 procs r 은 밀접한 관계가 있다고 판단하고&amp;nbsp;서비스 아키텍처 중 리얼타임 웹을 위해서 롱폴링 서버가 별도로 존재하는데, 얘가 multi process 에 multi thread 라 이녀석의 문제로 단정하고 thread를 4개에서 3개로 process를 반으로 줄이는 작업을 진행했고.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;결과는 run time waiting 이 거의 사라지고 cs 도 5만 이하로 떨어 졌다는 것.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;내부 아키텍쳐가 좋은 편이 아니라 cs 를 많이 유발하더라도 독립된 상태에서는 문제가 없었는데, 통합이 후 9개로 분산하는걸 축소를 감안하더라도 5개쯤을 한곳으로 통합한 거라 꽤 문제가 되리라는 걸 짐작하지 못했다. (2년 전 일이므로?)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;멀티태스킹 환경에서 너무나 중요한 CS 사용에 대한 것과 이게 run time waiting 으로 갈 수도 있다는걸 알게된 좋은 경험.&lt;/p&gt;&lt;p&gt;&lt;br /&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;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-71-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-71-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-71-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/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;/a&gt;
&lt;/div&gt;
</description>
<category>technically</category>
<category>context switching</category>
<category>load average</category>
<category>procs r</category>
<category>run time</category>
<category>vmstat</category>
<category>waiting</category>
<category>리눅스</category>
<category>리얼타임웹</category>
<category>컨텍스트스위칭</category>
<author>gitagy</author>
<guid>http://gitagy.tistory.com/71</guid>
<comments>http://gitagy.tistory.com/71#entry71comment</comments>
<pubDate>Wed, 09 Jan 2013 17:35:55 +0900</pubDate>
</item>
</channel>
</rss>