<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Game Programmer Life</title>
		<link>http://kindtis.tistory.com/</link>
		<description>Game Programmer at Nexon / 평생 개발자로 살아가기 / 겁내지 마세요. / 물지 않아요. / 괴롭히지 말아주세요.</description>
		<language>ko</language>
		<pubDate>Sun, 19 Feb 2012 21:50:18 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<managingEditor>친절한티스</managingEditor>
		<image>
		<title>Game Programmer Life</title>
		<url><![CDATA[http://cfile9.uf.tistory.com/image/1107E5374D76DBCF2117F9]]></url>
		<link>http://kindtis.tistory.com/</link>
		<description>Game Programmer at Nexon / 평생 개발자로 살아가기 / 겁내지 마세요. / 물지 않아요. / 괴롭히지 말아주세요.</description>
		</image>
		<item>
			<title>지하철 4호선녀 막말녀</title>
			<link>http://kindtis.tistory.com/425</link>
			<description>&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe width=&quot;640&quot; height=&quot;480&quot; src=&quot;http://www.youtube.com/embed/7MfPwv08yIA?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;
요즘 화제라고 하는 4호선녀&lt;br /&gt;
대략 상황이&amp;nbsp;남자가 실수로 여자의 발을 찼다고(?)&amp;nbsp;함.&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
남자는 실수라고 미안하고 사과했지만, 그걸 못 들은 여자가 막말을 시작.&lt;br /&gt;
듣고 있던 남자도 빡쳐서 막말 시작.&lt;br /&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-425-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-425-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-425-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=25866875&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>웃어봐요~</category>
			<category>여자분무서움</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/425</guid>
			<comments>http://kindtis.tistory.com/425#entry425comment</comments>
			<pubDate>Sun, 19 Feb 2012 21:50:17 +0900</pubDate>
		</item>
		<item>
			<title>Visual Studio 2010 에서 Python 사용하기</title>
			<link>http://kindtis.tistory.com/424</link>
			<description>&lt;center style=&quot;background-color: transparent; &quot;&gt;&lt;div class=&quot;ttbReview&quot;&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8979148682&amp;amp;ttbkey=ttbtatis32239001&amp;amp;COPYPaper=1&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://image.aladin.co.kr/product/1358/21/cover/8979148682_1.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot; style=&quot;vertical-align:top;&quot;&gt;&lt;a href=&quot;http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8979148682&amp;amp;ttbkey=ttbtatis32239001&amp;amp;COPYPaper=1&quot; class=&quot;aladdin_title&quot; target=&quot;_blank&quot;&gt;Head First Python&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;http://image.aladin.co.kr/img/common/star_s10.gif&quot; border=&quot;0&quot; alt=&quot;10점&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/center&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
요즘 파이썬을 공부하고 있습니다. 예전에 읽었던 &lt;/span&gt;&lt;a href=&quot;http://kindtis.tistory.com/298&quot; target=&quot;_blank&quot; title=&quot;[http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8991268072&amp;amp;amp;ttbkey=ttbtatis32239001&amp;amp;amp;COPYPaper=1]로 이동합니다.&quot; style=&quot;background-color: transparent; &quot;&gt;실용주의 프로그래머&lt;/a&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt; 책에서 워낙 파이썬을 강조(?) 하는 바람에 흥미가 생겼죠. 그래서 일단 대략적인 파이썬 파악을 위한 책으로 &lt;/span&gt;&lt;a href=&quot;http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8979148682&amp;amp;ttbkey=ttbtatis32239001&amp;amp;COPYPaper=1&quot; target=&quot;_blank&quot; title=&quot;[http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8979148682&amp;amp;ttbkey=ttbtatis32239001&amp;amp;COPYPaper=1]로 이동합니다.&quot; style=&quot;background-color: transparent; &quot;&gt;Head First Python&lt;/a&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt;을 구입해서 보고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;책을 보면서 간단한 예제등을 직접 실습해보면서 익히는데 아무래도 Python에서 기본 제공해주는 IDLE 이라 부르는 쉘(Shell) 만으로는 한계가 있더군요. 불편해요. 그렇다고 노트패드 같은 텍스트 편집기로 코딩하기에도 뭔가 부족하고...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile10.uf.tistory.com/original/14190D384F3621CE2425A2&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile10.uf.tistory.com/image/14190D384F3621CE2425A2&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;shell.png&quot; height=&quot;440&quot; width=&quot;675&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;IDLE 화면. 간단한 코딩은 되지만 큰 작업은 힘들다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;그래서 좀 알아보니 많은 분들이 VIM을 추천해주시더군요. 그래서 설치해봤습니다. 솔직히 저는 이클립스나 비쥬얼 스튜디오 같은 IDE를 기대했었는데 실제 VIM을 설치해보고 사용해보려니 대체 뭐가 뭔지 모르겠더군요. 익숙하지 않아서 그렇게지만 저에게는 너무 낯설어 감히 손대기 힘들정도로 느껴졌습니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile21.uf.tistory.com/original/121B23364F3622491AB66B&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile21.uf.tistory.com/image/121B23364F3622491AB66B&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;cfile21.uf@121B23364F3622491AB66B.png&quot; height=&quot;562&quot; width=&quot;690&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;font color=&quot;#ffffff&quot; style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;익숙치 않은 유저에겐 불편한 VIM&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;그렇게 좌절하고 있던 중 비쥬얼 스튜디오 2010의 플러그인 갤러리가 생각나더군요. 혹시 비쥬얼 스튜디오용 파이썬 플러그인이 있지 않을까 생각을 하고 검색을 해봤죠.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile4.uf.tistory.com/original/1812EC364F3622FA27281F&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile4.uf.tistory.com/image/1812EC364F3622FA27281F&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;extend.png&quot; height=&quot;527&quot; width=&quot;339&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile5.uf.tistory.com/original/1912EC364F3622FA287E1C&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile5.uf.tistory.com/image/1912EC364F3622FA287E1C&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;python for vs.png&quot; height=&quot;485&quot; width=&quot;700&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;확장 관리자를 통해 온라인에서 플러그인 설치가 가능&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;아니나 다를까 있었습니다. Python Tools for Visual Studio 가 떡 하니 나오더군요. 바로 설치해서 사용해보았습니다. 플러그인을 설치하면 Python 프로젝트 템플릿이 생기는데 이를 통해 파이썬을 비쥬얼 스튜디오에서 파이썬 코딩 및 디버깅 까지가능해집니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile7.uf.tistory.com/original/156672494F36239C13DB37&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile7.uf.tistory.com/image/156672494F36239C13DB37&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;templete.png&quot; height=&quot;223&quot; width=&quot;655&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;Python 프로젝트 템플릿이 생성 되었다&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile4.uf.tistory.com/original/1237CE4F4F362408084137&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile4.uf.tistory.com/image/1237CE4F4F362408084137&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;debugging python.png&quot; height=&quot;163&quot; width=&quot;514&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;Python 디버깅도 가능하다&lt;/span&gt;&lt;/font&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-424-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-424-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-424-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=25559639&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>이렇게 한번 해보세요</category>
			<category>비쥬얼스튜디오</category>
			<category>파이썬</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/424</guid>
			<comments>http://kindtis.tistory.com/424#entry424comment</comments>
			<pubDate>Sat, 11 Feb 2012 17:22:57 +0900</pubDate>
		</item>
		<item>
			<title>게임의 추억</title>
			<link>http://kindtis.tistory.com/423</link>
			<description>&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;object width=&quot;480&quot; height=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://img.ndoors.com/webdata/yw/flvplayer/FLVPlayer120209.swf?param_url=http%3A//img.ndoors.com/webmedia/hero/hero_play/yw30_brand.flv&amp;amp;param_autostart=true&amp;amp;param_scrap_url=http%3A//yw.ndoors.com/Home/Intro&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://img.ndoors.com/webdata/yw/flvplayer/FLVPlayer120209.swf?param_url=http%3A//img.ndoors.com/webmedia/hero/hero_play/yw30_brand.flv&amp;amp;param_autostart=true&amp;amp;param_scrap_url=http%3A//yw.ndoors.com/Home/Intro&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;320&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;요즘 같이 게임을 까는 얘기만 보다가 이 영상을 보니&amp;nbsp;폭풍 감동이네요... ㅠㅜ&lt;br /&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-423-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-423-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-423-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=25523668&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>웃어봐요~</category>
			<category>게임까지마!!</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/423</guid>
			<comments>http://kindtis.tistory.com/423#entry423comment</comments>
			<pubDate>Fri, 10 Feb 2012 12:48:15 +0900</pubDate>
		</item>
		<item>
			<title>유튜브 다운로더 Youtube Downloader HD 2.8</title>
			<link>http://kindtis.tistory.com/422</link>
			<description>새 버전이 올라왔네요. 이전 포스트의 어벤져스 새 트레일러 받아보니 잘 받아지네욤.&lt;br /&gt;
&lt;br /&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://kindtis.tistory.com/attachment/cfile10.uf@170BE6424F2F7F900CF2AE.zip&quot;&gt;&lt;img src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; youtube_downloader_hd_portable.zip&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;br /&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile9.uf.tistory.com/original/17529F3F4F2F7FBB3A6879&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile9.uf.tistory.com/image/17529F3F4F2F7FBB3A6879&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;cfile9.uf@17529F3F4F2F7FBB3A6879.png&quot; height=&quot;352&quot; width=&quot;670&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile8.uf.tistory.com/original/19529F3F4F2F7FBC3BF6A7&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile8.uf.tistory.com/image/19529F3F4F2F7FBC3BF6A7&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;ydh28.png&quot; height=&quot;463&quot; width=&quot;647&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&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-422-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-422-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-422-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=25355106&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>유용한 유틸리티 소개</category>
			<category>유튜브</category>
			<category>유틸리티</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/422</guid>
			<comments>http://kindtis.tistory.com/422#entry422comment</comments>
			<pubDate>Mon, 06 Feb 2012 16:23:23 +0900</pubDate>
		</item>
		<item>
			<title>어벤져스 새 예고편 ( Marvel&#039;s The Avengers Super Bowl )</title>
			<link>http://kindtis.tistory.com/421</link>
			<description>&lt;div style=&quot;text-align: center;&quot;&gt;
올해 기대작 중 하나.&lt;br /&gt;
제발 이것만큼은 제대로 나와주기를...&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;http://www.youtube.com/embed/bGt-saFvkNk?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile27.uf.tistory.com/original/13665E454F2F39C82698F4&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile27.uf.tistory.com/image/13665E454F2F39C82698F4&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;122911-avengers-russian-trailer.jpg&quot; height=&quot;375&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&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-421-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-421-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-421-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=25340415&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>이거 좀 좋은데?</category>
			<category>어벤져스</category>
			<category>토니짱!!</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/421</guid>
			<comments>http://kindtis.tistory.com/421#entry421comment</comments>
			<pubDate>Mon, 06 Feb 2012 11:16:30 +0900</pubDate>
		</item>
		<item>
			<title>Image2Play 이미지를 바로 동영상으로...</title>
			<link>http://kindtis.tistory.com/420</link>
			<description>&lt;div style=&quot;text-align: center;&quot;&gt;
일단 소개 및 시연 영상부터 감상을...&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;http://www.youtube.com/embed/j7eqyGKg9E0?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
동영상을 보시면 아시겠지만 웹페이지의 이미지를 자동으로 검색하여,&lt;br /&gt;
동영상을 찾아 감상할 수 있도록 해주는 플러그인입니다.&lt;br /&gt;
&lt;br /&gt;
다운로드 페이지.&lt;br /&gt;
크롬과 파폭 지원합니다.&lt;br /&gt;
&lt;a href=&quot;http://www.image2play.com/download&quot;&gt;http://www.image2play.com/download&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
설치해서 실행해봤는데 대박이네요.&lt;br /&gt;
&amp;nbsp;이제 캡쳐샷을 보고 번거롭게 구글링해가며 동영상을 찾아볼 필요가 없습니다.&lt;br /&gt;
&lt;br /&gt;
1. 플러그인 없을 때는 그냥 드라마의 캡쳐샷&lt;br /&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile29.uf.tistory.com/original/207D9E4D4F2F2C011A4B63&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile29.uf.tistory.com/image/207D9E4D4F2F2C011A4B63&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;11.png&quot; height=&quot;241&quot; width=&quot;458&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;br /&gt;
2. 플러그인을 설치하면 이런 이미지 우측 상단에 플레이 버튼이 뜹니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile7.uf.tistory.com/original/127D9E4D4F2F2C021B4BB6&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile7.uf.tistory.com/image/127D9E4D4F2F2C021B4BB6&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;22.png&quot; height=&quot;286&quot; width=&quot;467&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;br /&gt;
3. 플레이 버튼을 클릭하니 해당 캡쳐샷의 동영상을 찾아서 플레이 해줍니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile25.uf.tistory.com/original/137D9E4D4F2F2C021CF245&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile25.uf.tistory.com/image/137D9E4D4F2F2C021CF245&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;cfile25.uf@137D9E4D4F2F2C021CF245.png&quot; height=&quot;499&quot; width=&quot;690&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&amp;nbsp;&lt;br /&gt;
우왕~ 굳~&amp;nbsp;&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-420-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-420-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-420-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=25339137&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>유용한 유틸리티 소개</category>
			<category>미래기술이다</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/420</guid>
			<comments>http://kindtis.tistory.com/420#entry420comment</comments>
			<pubDate>Mon, 06 Feb 2012 10:53:23 +0900</pubDate>
		</item>
		<item>
			<title>나... 나도 병렬 프로그래밍 할래!! - #2</title>
			<link>http://kindtis.tistory.com/419</link>
			<description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(219, 232, 251); border-right-color: rgb(219, 232, 251); border-bottom-color: rgb(219, 232, 251); border-left-color: rgb(219, 232, 251); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
※ 게임 개발 포에버 &lt;a href=&quot;http://www.gamedevforever.com&quot; target=&quot;_blank&quot; title=&quot;[http://www.gamedevforever.com]로 이동합니다.&quot;&gt;http://www.gamedevforever.com&lt;/a&gt; 에서 연재 중인 글입니다.
&lt;/div&gt;
&lt;br /&gt;
&lt;b style=&quot;color: rgb(102, 102, 102); font-family: Dotum, Verdana, AppleGothic, sans-serif; font-size: 24px; line-height: 36px; background-color: rgb(255, 255, 255); &quot;&gt;어디다 병렬 프로그래밍을 써야 할까?&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;
앞서 포스팅에서&amp;nbsp;OpenMP, TBB, PPL 등 유용한 라이브러리를 통해 병렬 프로그래밍을 보다 손쉽게 ( 그래도 힘들지만 ) 사용할수 있다는 것을 알았습니다. 이제 나도 병렬 프로그래밍을 써먹어 볼수 있겠다는 부푼 꿈을 안고 코딩을 시작합니다. 그런데... 그런데... 대체 어디다 적용하지...?&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile8.uf.tistory.com/original/141CC7454F2B2E4034DE67&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile8.uf.tistory.com/image/141CC7454F2B2E4034DE67&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;3827938.jpg&quot; height=&quot;377&quot; width=&quot;300&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;막상 병렬 처리를 적용하려니...&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;
병렬 처리를 하기 위해서는 말그대로 병렬성이 있는 곳. 쉽게 말해 동시성을 찾아내야합니다. 그냥 아무곳에나 병렬 처리를 적용 할수 없는 겁니다. 그럼 게임 로직에서 병렬화를 할수 있는 부분은 어떤게 있을까요? 일단 기본적인 게임 로직 흐름도를 살펴보겠습니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile27.uf.tistory.com/original/191CFD454F2B2E422FB1C8&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile27.uf.tistory.com/image/191CFD454F2B2E422FB1C8&quot; alt=&quot;&quot; filemime=&quot;image/png&quot; filename=&quot;Singlethreaded_Game_Engine_Architectures.png&quot; height=&quot;236&quot; width=&quot;562&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;기본 적인 흐름도&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;게임 프로그래밍을 조금이라도 하신 분이라면 굉장히 친숙한 흐름도 일겁니다. 사용자의 입력을 받아, 현 상태를 업데이트 하고, 업데이트한 정보를 토대로 그려냅니다. 여기서 병렬화가 가능 한 곳을 한번 찾아볼까요? 처음 입력 부분을 병렬 처리로 하면 어떨까요? 키보드, 마우스, 조이패드 등등을 동시 입력하는 경우가 많으니 이 입력 장치들을 병렬로 처리 하는 겁니다. 여러 입력 장치에서 입력된 정보를 멀티 코어를 이용해 동시에&amp;nbsp;파파파파팍!!! 처리 하면... 네 별 효용이 없겠죠. 이미 입력 장치는 병렬 처리 같은거 안하더라도 키나 버튼 입력 상태를 한번에 조사가 가능합니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile8.uf.tistory.com/original/141E6D454F2B2E3F2FEFF2&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile8.uf.tistory.com/image/141E6D454F2B2E3F2FEFF2&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;1327972077358.jpg&quot; height=&quot;280&quot; width=&quot;449&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style=&quot;text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;이런 쓸데없는 짓은 하지 맙시다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;다음으로 로직/씬 업데이트 부분은 어떨까요? 이곳은 왠지 병렬화 할수 있는 곳이 많을것 같습니다. 게임에 등장하는 각종 오브젝트며, 효과들 처리가 굉장히 많죠. 또한 게임 실행에 있어 가장 많은 시간을 할애 하는 곳 중 하나 이기도 합니다. 보통 게임 오브젝트를 업데이트 할때 씬그래프라는 트리 구조 형태를 따라 순차적으로 업데이트 할때가 많습니다. 이 것을 병렬로 처리 한다면 왠지 빠를거 같지 않나요? 일단 병렬 처리 후보로 생각해봅니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/131F41454F2B2E41305740&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/131F41454F2B2E41305740&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;show4.jpg&quot; height=&quot;466&quot; width=&quot;700&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;div style=&quot;text-align: -webkit-auto;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;
위 그림 처럼 트리 형태의 구조를 밑 그림의 형태와 같이 병렬화를 한다면 어떨까?&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile29.uf.tistory.com/original/161C08454F2B2E423292D6&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile29.uf.tistory.com/image/161C08454F2B2E423292D6&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;show5.jpg&quot; height=&quot;359&quot; width=&quot;700&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;다음으로 렌더 부분을 살펴보겠습니다. 보통 업데이트가 끝난 오브젝트들을 화면에 순차적으로 그려 내는 부분입니다. 여기서 각 스레드에 여러 오브젝트를 할당해서 각자 맡은 바를 그리게 할 수 있다면 어떨까요? 동시에 여러 오브젝트들을 그려낼수 있으니 한 화면에 많은 오브젝트들이 등장하는 상황이라면 굉장히 유용할 듯 해보입니다. 하지만 이 부분은 생각처럼 쉽지 않습니다. 비동기적으로 오브젝트들을 그리게 된다면 그리는 순서가 뒤죽박죽 될때고 디바이스 점유 문제도 있습니다. 그래도 답이 없는 것은 아닙니다. 최근 DX11 같은 경우 멀티스레드 환경에서 렌더링을 할수 있는 방법을 제공해주고 있죠.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile5.uf.tistory.com/original/1426B5454F2B2E402D5764&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile5.uf.tistory.com/image/1426B5454F2B2E402D5764&quot; alt=&quot;&quot; filemime=&quot;image/png&quot; filename=&quot;directx-opengl,5-W-157028-13.png&quot; height=&quot;338&quot; width=&quot;450&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;MS사가 그냥 놀고만 있는 것은 아닙니다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b style=&quot;color: rgb(102, 102, 102); font-family: Dotum, Verdana, AppleGothic, sans-serif; font-size: 24px; line-height: 36px; background-color: rgb(255, 255, 255); &quot;&gt;다른 곳도 찾아보자&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
위 처럼 각 로직 부분에서 병렬화가 가능 곳을 찾는 것외에도 각 로직 부분 자체를 병렬화 하는 것도 생각해볼만 합니다. 전체적인 게임 실행 흐름도를&amp;nbsp;
다시&amp;nbsp;봐주세요. 입력을 받고 -&amp;gt; 업데이트 하고 -&amp;gt; (업데이트 내용을 기반으로 애니/물리 연산 ) -&amp;gt; 그린다. 이 흐름을 순차적인 아닌 병렬로 처리하면 어떨까요?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile27.uf.tistory.com/original/172831454F2B2E4129D08C&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile27.uf.tistory.com/image/172831454F2B2E4129D08C&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;multithreading_synchronous_model.jpg&quot; height=&quot;245&quot; width=&quot;261&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;br /&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile4.uf.tistory.com/original/141ED7454F2B2E412EA5D7&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile4.uf.tistory.com/image/141ED7454F2B2E412EA5D7&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;multithreading_asynchronous_model.jpg&quot; height=&quot;303&quot; width=&quot;400&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
위의 흐름도를 보시면 각 스레드별로 특정 작업을 할당 하고 있습니다. 1번 스레드는 게임 로직을, 2번 스레드는 업데이트된 정보를 기반으로 애니메이션 및 물리 연산을 ,그리고 3번 스레드에서는 최종 계산된 정보를 바탕으로 오브젝트를 그려냅니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
이 외에 다른 곳에서도 병렬화를 통해 멀티코어 CPU를 활용할수 있습니다. 대표적으로 파티클 시스템이 있습니다. 파티클의 경우 데이터 의존성 문제도 크지 않고, 쉽게 병렬화를 할 수 있는 부분 중 하나입니다. 많은 상용 게임 중에서도 파티클 시스템을 병렬화한 경우를 심심치 않게 볼 수 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile9.uf.tistory.com/original/1526F2454F2B2E422B5BE4&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile9.uf.tistory.com/image/1526F2454F2B2E422B5BE4&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;valve-particle-shot.jpg&quot; height=&quot;385&quot; width=&quot;512&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;밸브사의 소스 엔진 파티클 시스템&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
이뿐만이 아닙니다. 후처리 기법 중 하나인 MLAA (Morphological Anti-Aliasing)를&amp;nbsp;CPU 단에서&amp;nbsp;병렬화를 통해 빠른 AA 연산을 할수 있도록 하는 방법도 나와있습니다. 보통 AA 연산은 GPU를 통해 이루어지는데 GPU의 부담을 덜어주고, CPU의 멀티코어를 활용해 보다 빠른 AA 연산을 수행 하는 것이지요.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile7.uf.tistory.com/original/1720DF454F2B2E412CAEC1&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile7.uf.tistory.com/image/1720DF454F2B2E412CAEC1&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;Figure7.jpg&quot; height=&quot;486&quot; width=&quot;561&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;CPU Based MLAA의 성능 지표. GPU에서 지원하는 MSAA 보다 빠르다!!!&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b style=&quot;color: rgb(102, 102, 102); font-family: Dotum, Verdana, AppleGothic, sans-serif; font-size: 24px; line-height: 36px; background-color: rgb(255, 255, 255); &quot;&gt;CPU 놀지말고 일해!! 찰싹~ 찰싹~&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
암달의 법칙을 보면 아무리 병렬화를 통해 속도 업을 꾀하더라도 게임의 수행 속도가 몇배가 되지는 않습니다. 어쩌면 들이는 공에 비해 결과물이 그닥 일수도 있습니다. 하지만 그렇다고 CPU를 놀리는 것도 안타깝죠. 그렇기에 멀티 코어를 이용한 다양한 방법들이 연구되고 있습니다. 위의 CPU Based MLAA 같은 것들이 대표적인 예죠. 최근에는 DOD를 이용해 CPU 활용을 극대화 시키는 방법도 많이 연구되고 있습니다( 맥좀비님의 DOD 포스팅 기대 중. 맥좀비님이 다 해결해주실거야~ )&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile24.uf.tistory.com/original/20267E454F2B2E4030D42F&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/20267E454F2B2E4030D42F&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;a36b07881bb111b543d47a4ff030dde9.jpg&quot; height=&quot;303&quot; width=&quot;314&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/p&gt;&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;CPU가 놀고 있으면 썰어주자&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: transparent; &quot;&gt;
대략 멀티코어를 활용할 수 있는 방법들을 훓어 보았으니 다음 강에는 좀더 디테일 하게 파볼 수 있으면 파보겠습니다.&lt;br /&gt;
&lt;span style=&quot;font-size: 12pt; &quot;&gt;안&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; &quot;&gt;&lt;span style=&quot;font-size: 11pt; &quot;&gt;되&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; &quot;&gt;면&lt;/span&gt; &lt;span style=&quot;font-size: 8pt; &quot;&gt;말&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; &quot;&gt;고...&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: transparent; &quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(231, 253, 181); border-right-color: rgb(231, 253, 181); border-bottom-color: rgb(231, 253, 181); border-left-color: rgb(231, 253, 181); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;너무 마구잡이로 써대서 글이 산만해도 이해해주시기 바랍니다.&lt;br /&gt;
오류나 다른 의견 있으신 분은 덧글 남겨주세요. 수정/보완 하도록 하겠습니다.&lt;br /&gt;
제목이 병맛 프로그램으로 보이는 건 기분탓이 아닙니다.
&lt;/p&gt;
&lt;/div&gt;




&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; background-color: transparent;&quot;&gt;&lt;/span&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-419-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-419-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-419-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=25252069&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>게임 개발 포에버</category>
			<category>글정말못쓰네</category>
			<category>난왜잼있게못쓰지</category>
			<category>병맛프로그래밍</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/419</guid>
			<comments>http://kindtis.tistory.com/419#entry419comment</comments>
			<pubDate>Fri, 03 Feb 2012 09:52:45 +0900</pubDate>
		</item>
		<item>
			<title>조선일보의 특명. 게임 말살.</title>
			<link>http://kindtis.tistory.com/418</link>
			<description>&lt;p style=&quot;margin:0&quot;&gt;이제 한국에서 게임 개발한다 그러면 역적 취급 받을 기세네욤.&lt;br /&gt;
이상 마약제조업자 친절한티스였습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile24.uf.tistory.com/original/2028453C4F27932D2943F9&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/2028453C4F27932D2943F9&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;35a3839d9a77378ebfed1c22f2e08596.jpg&quot; height=&quot;730&quot; width=&quot;700&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/1109CB3B4F28A3E72CD7D6&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/1109CB3B4F28A3E72CD7D6&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;171518e0610374f54a2662cf9a4b6d88.jpg&quot; height=&quot;438&quot; width=&quot;700&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&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-418-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-418-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-418-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=25136179&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>국내소식</category>
			<category>게임개발자</category>
			<category>마약제조업자</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/418</guid>
			<comments>http://kindtis.tistory.com/418#entry418comment</comments>
			<pubDate>Tue, 31 Jan 2012 16:08:57 +0900</pubDate>
		</item>
		<item>
			<title>Win32 프로젝트에서 콘솔창에 메시지 출력하기 ( Console Output String in Win32 )</title>
			<link>http://kindtis.tistory.com/417</link>
			<description>Win32 프로젝트에서 디버깅 할때 콘솔창은 상당히 유용합니다. 디버깅 메시지 출력용으로 저도 애용하고 있죠. 근데 이 방법을 모르는 분들이 은근 많더군요. 직접 메시지 박스를 만드는 수고까지 하시는 분을 봤습니다. 그럴 필요없이 간단히 프로젝트 옵션 하나 주고, Win32 Console 프로젝트때 처럼 printf 함수나 cout 을 이용해 간단하게 메시지를 찍어낼 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile24.uf.tistory.com/original/1478E64A4F1C173F12B9FF&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/1478E64A4F1C173F12B9FF&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;cfile24.uf@1478E64A4F1C173F12B9FF.png&quot; height=&quot;478&quot; width=&quot;680&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;
[ 프로젝트 속성 - 링커 - 하위 시스템 ]에서 [ 콘솔 (/SUBSYSTEM:CONSOLE) ]을 선택합니다.&lt;br /&gt;
&amp;nbsp;
또는,&amp;nbsp;프로젝트 소스 파일에 밑의&amp;nbsp;코드를 추가합니다.
&lt;pre class=&quot;brush:cpp&quot;&gt;// 하위 시스템으로 콘솔을 선택
#pragma comment( linker, &quot;/entry:WinMainCRTStartup /subsystem:console&quot; )&lt;/pre&gt;&lt;br /&gt;
또는, &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/ms681944(v=vs.85).aspx&quot; target=&quot;_blank&quot; title=&quot;[http://msdn.microsoft.com/en-us/library/windows/desktop/ms681944(v=vs.85).aspx]로 이동합니다.&quot;&gt;AllocConsole()&lt;/a&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-417-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-417-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-417-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=24860322&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>이렇게 한번 해보세요</category>
			<category>콘솔창</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/417</guid>
			<comments>http://kindtis.tistory.com/417#entry417comment</comments>
			<pubDate>Sun, 22 Jan 2012 23:13:15 +0900</pubDate>
		</item>
		<item>
			<title>나... 나도 병렬 프로그래밍 할래!! - #1</title>
			<link>http://kindtis.tistory.com/416</link>
			<description>※ 게임 개발 포에버 &lt;a href=&quot;http://www.gamedevforever.com&quot; target=&quot;_blank&quot; title=&quot;[http://www.gamedevforever.com]로 이동합니다.&quot;&gt;http://www.gamedevforever.com&lt;/a&gt; 에서 연재 중인 글입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 18pt; &quot;&gt;&lt;b&gt;바야흐로 세상은 대 멀티코어 시대&lt;/b&gt;﻿&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;골드 D 인텔이 멀티코어로 세상을 평정하고 프로그래머들이 병렬 프로그래밍의 세계로 뛰어들어 세상은 대 멀티코어 시대에 돌입하였다!! ... 라는 되도 않는 드립을 쳐보려고 했지만 재미없네요.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile6.uf.tistory.com/original/131B54364F164F16109D12&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile6.uf.tistory.com/image/131B54364F164F16109D12&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;dho080718_huma7102.jpg&quot; height=&quot;250&quot; width=&quot;500&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;병렬 프로그래밍을 찾아 떠나는 프로그래머 해적들&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;이제는 흔하다 못해 스마트폰에서까지도 멀티코어를 쓰는 시대입니다. 그에 맞춰 여기저기서 병렬 프로그래밍 얘기들이 흘러나오고 왠지 나도 병렬 프로그래밍 안하면 안될거 같은 기분이 마구마구 듭니다. 게다가 게임도 갈수록 고사양화 되고 있고 싱글 코어 활용만으로는 도저히 퍼포먼스도 안나옵니다. 멋지게 게임 만들어놨는데 CPU 사용률이 25%만 올라가있으면 왠지 손해보는 느낌까지 듭니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;background-color: transparent; font-size: 24px; line-height: 36px; &quot;&gt;싱글 코어로 공짜밥 먹던 시절&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;멀티코어 시대 이전에 병렬 프로그래밍이 없었던 것은 아닙니다. 백그라운드 로딩이라든가 네트웤 통신에 많이 사용되고 있었고, 지금도 사용 되고 있습니다. 하지만 메인인 게임 로직부분은 거의 직렬 방식이었습니다. 과거에는 이 것 만으로도 충분했습니다. 게다가 CPU 제조사에서 속도를 업그레이드 해줄때 마다 자연스레 게임 퍼포먼스도 올라 갔습니다( CPU 제조사에 감사합니다~ ).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;그러나 CPU 제조사의 이런저런 불편한 진실로 인해 속도 업은 미비해주고, 대신 코어 수로 떼우기 시작하게 됩니다. 게임은 갈수록 고사양이 되가는데 CPU 속도 업은 거의 없어지니 게임이 느려지기 시작합니다&lt;/span&gt;&lt;span style=&quot;background-color: transparent; &quot;&gt;
( 게임만이 아니지만 우린 게임 프로그래머이니 게임이라고 합시다 )&amp;nbsp;. 이를 두고 향간에서는 더 이상 공짜 점심은 없다!! ...라고 말하기 시작합니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile6.uf.tistory.com/original/1336C9364F164F17012AE2&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile6.uf.tistory.com/image/1336C9364F164F17012AE2&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;lunch-2.jpg&quot; height=&quot;400&quot; width=&quot;395&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;누가 내 점심을 없앴는가?&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b style=&quot;background-color: transparent; font-size: 24px; line-height: 36px; &quot;&gt;멀티 코어 어떻게 써요?&lt;/b&gt;&lt;span style=&quot;background-color: transparent; &quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;멀티 코어를 활용해야겠다고 다짐 했습니다. 어떻게 해야 멀티 코어 CPU를 활용할수 있을까? 옵션하나 탁~ 켜주면 내 프로그램이 멀티 코어로 작동했으면 좋겠습니다.&lt;font color=&quot;#8e8e8e&quot;&gt; ( 실제 멀티 코어 CPU가 어떤식으로 동작하는지 알고 싶으신 분은 [김민장님 저서인 프로그래머가 몰랐던 멀티코어 CPU 이야기] 한번 읽어보시기 바랍니다. )&lt;/font&gt;&amp;nbsp;하지만 현실은 그렇게 쉽지 않습니다. 내가 만든 프로그램이 멀티 코어로 동작하기 위해서는, 병렬적인 프로그램을 만들어야지만, 멀티 코어 환경에서 병렬로 작동 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile25.uf.tistory.com/original/114527364F164F16365992&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile25.uf.tistory.com/image/114527364F164F16365992&quot; alt=&quot;&quot; filemime=&quot;image/gif&quot; filename=&quot;asteria2120090113_001.gif&quot; height=&quot;210&quot; width=&quot;140&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;말 장난 같지만 사실 입니다...&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;background-color: transparent; font-size: 24px; line-height: 36px; &quot;&gt;병렬 프로그램 어떻게 만들어요?&lt;/b&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
멀티 코어 CPU의 경우 프로그램이 실행될때 병렬성을 체크해서 각 코어에 일을 할당 해줍니다. 만약 그런게 전혀 없다. 그러면 코어 하나에만 작업이 할당되서 프로그램이 작동하게 되는 것이죠. 몇몇 게임을 실행할때 4코어인데도 불구하고 CPU 사용률이 25%만 올라가는 이유가 바로 이 것 입니다. 그렇다면 어떻게 병렬성을 높일수 있을까요? 대표적인게 바로 멀티 스레딩입니다. 여러개의 스레드가 생성된 프로그램이라면 1번 코어에서 1번 스레드를, 2번 코어에서 2번 스레드 처리하는 식으로 병렬 처리를 하게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile21.uf.tistory.com/original/172003354F164F8F150E42&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile21.uf.tistory.com/image/172003354F164F8F150E42&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;parallel_processing.jpg&quot; height=&quot;292&quot; width=&quot;445&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;이것이 병렬 처리다!!&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b style=&quot;background-color: transparent; font-size: 24px; line-height: 36px; &quot;&gt;스레드만 추가 생성하면 끝?&lt;/b&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
위에 적은 데로라면 스레드만 추가하면 CPU에서 알아서 병렬 처리를 해주겠네요. 스레드를 마구마구 생성해서 프로그램을 만들어봅니다. 아마 조만간 ㅅㅂ... 소리가 절로 나올겁니다. 정상 작동하는게 하나도 없어 보입니다. 왜그럴까요?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
멀티 스레드를 이용한 프로그래밍을 할 때에는 많은 주의 사항이 있습니다. 대표적인 문제 중 하나로 꼽히는 것이 데이터 레이싱 입니다. 일반적으로 멀티 스레드는 동일 메모리 공간에서 작동합니다. 즉, 여러 스레드가 하나의 데이터에 동시 접근이 가능하다는 이야기입니다. 그렇게 되면 여러 스레드가 동일한 데이터를 읽고, 쓰다가 원치 않는 값 &amp;nbsp;변조가 일어나게 됩니다. 밑의 그림은 그 상황 예시입니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile28.uf.tistory.com/original/190DD6364F164F18167F2D&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile28.uf.tistory.com/image/190DD6364F164F18167F2D&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;McoreAkhterRobertsFig7-1.jpg&quot; height=&quot;523&quot; width=&quot;425&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
1번과 2번 스레드가 x값을 참조하고, 값을 바꿔 써넣는 코드입니다. 1번과 2번 스레드는 비동기로 동작하기 때문에 어떤 스레드가 먼저 x값을 참조하고 값을 바꿀지 모릅니다. 그래서 x의 최종 결과 값이 #1, #2, #3중 어느 결과로 나올지 알 수 없습니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
문제는 이것만이 아닙니다. 데드락 문제도 있고, 코어 수만큼 스레드를 어떻게 분배할 것인지도 문제고, 생성된 스레드들은 또 어떻게 관리 할지도 문제입니다. 병렬 프로그래밍을 해보려다 그 앞에 산재해 있는 문제들때문에 제대로 해보지도 못하고 포기하게 생겼습니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;background-color: transparent; font-size: 24px; line-height: 36px; &quot;&gt;쉬운 방법 없을까?&lt;/b&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
좀더 쉬운 방법이 없을까? 눈을 돌려봅니다. 세상에는 똑똑한 분들이 많습니다. 멀티 코어 CPU가 발전하는 만큼 이를 쉽게 사용할 수 있게 해주는 라이브러리들도 발전하고 있습니다. OpenMP, TBB, PPL등이 그것입니다. 이들 라이브러리를 이용하면 직접 스레드를 관리하거나 분배하는 수고 없이 수월하게 병렬 처리를 할수 있도록 도와 줍니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;간단하게 배열에 있는 수를 더하는 로직을 병렬로 처리 해보도록 하겠습니다. 직렬 처리 방식으로 로직을 구성 한다면 이런 모양 일겁니다.&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot; style=&quot;background-color: transparent; &quot;&gt;for( int i = 0; i &amp;lt; 5000; ++i )
	fNumSum += fNum[ i ];&lt;/pre&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt;
참으로 단순한 로직입니다. 5000개의 배열을 가지고 있는 fNum의 임의수들을 전부 다 더하는겁니다. 이걸 병렬로 처리 한다고 생각해봅니다. 그전에 위에서 얘기한 멀티 스레드의 문제점을 다시 떠올려봅니다. 그냥 스레드를 여러개 생성해서 위의 로직을 수행한다고 하면, 데이터 레이싱이 일어나 엉뚱한 합산 값이 나올겁니다. 이를 방지하려면 스레드에 맞게 배열을 분배 해주어야 합니다. 스레드를 2개 생성 한다면 1번 스레드는 0~2499, 2번 스레드는 2500~4999 식으로 말이죠. 그리고 작업을 수행 후 서로 합산 값을 더하면 원하는 결과가 나오게됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
그런데 이것을 직접 수동으로 한다면, 스레드도 직접 생성해주고, 모든 스레드가 작업을 수행할때까지 대기했다가 작업이 끝나면 Join 시켜주고, 값 합산 해야하고, 만약 CPU 코어 수에 맞게 스레드 생성도 해주겠다 하면... 손이 가는게 이만 저만이 아닙니다. 단순한 합산 로직 하나 만드려고 들이는 정성이 배 보다 배꼽이 더 큰격입니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile27.uf.tistory.com/original/13187E364F164F160F234D&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile27.uf.tistory.com/image/13187E364F164F160F234D&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;d0014857_4a48c2142314b.jpg&quot; height=&quot;417&quot; width=&quot;378&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;정말 이런 짓을 매번 하라고??&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
그럼 TBB가 출동 한다면 어떨까요??&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;// 병렬 처리를 위한 바디 클래스
// TBB 쓰면 그냥 이런 식으로 구성된다라는 것을 알리기 위함이므로 코드 설명은 생략
class CFoo 
{
private:
	float* m_fElement;

public:
	float m_fSum;
	void operator()( const blocked_range&amp;lt;size_t&amp;gt;&amp;amp; r )
	{
		size_t end = r.end();
		for( size_t i = r.begin(); i != end; ++i )
			m_fSum += m_fElement[ i ];
	}
	CFoo( CFoo&amp;amp; pSplitFoo, split ) : m_fElement( pSplitFoo.m_fElement ), m_fSum( 0 ) {}
	CFoo( int a[] ) : m_fElement( a ), m_fSum( 0 ) {}
	void join( const CFoo&amp;amp; pSplitFoo )
	{
		m_fSum += pSplitFoo.m_fSum;
	}
};

// TBB의 parallel_reduce를 이용해 fNum의 5000개 배열의 값들을 합산
CFoo foo(fNum);
parallel_reduce( blocked_range&amp;lt;size_t&amp;gt;( 0, 5000 ), foo );
&lt;/pre&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt;
코드 어디를 봐도 스레드를 생성하고, 작업을 분배 해주는 곳이 없습니다. 다~ 자동입니다. 알아서 코어수 만큼 스레드를 할당해주고, 각 스레드에 알맞은 작업량을 할당해줍니다. 작업자는 스레드 관리에 대해 전혀 신경쓸게 없습니다. 완전 좋죠~!! 짱입니다!! ( 물론 세세한 옵션등이 있지만 일단은 신경끕니다 ).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;background-color: transparent; font-size: 24px; line-height: 36px; &quot;&gt;병렬 프로그래밍. 참 쉽죠?&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; &quot;&gt;TBB를 사용하니 병렬 프로그래밍이 엄청 쉬워진 것 같습니다. 하지만 안쉽습니다. 절대 안쉬워요. 조금이라도 병렬 프로그래밍 해보신 분이라면... 이거 참 병맛이다. 라고 말씀하실 겁니다. 아무리 툴이 좋아지고, 라이브러리가 좋아졌어도, 그걸 사용하는 사람은 기본적으로 직렬적으로 생각합니다. 동시에 처리될 부분을 모두 염두해가며 프로그래밍을 할 수 있는 사람은 극히 드뭅니다. 왜 난 이런 것도 못하지? 자책하지 마세요. 그게 정상입니다. 할수 있는 사람들이 특이한겁니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin:0&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/204061344F164FC71797B0&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/204061344F164FC71797B0&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;easy.jpg&quot; height=&quot;381&quot; width=&quot;400&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: transparent; text-align: center; &quot;&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(132, 132, 132);&quot;&gt;안 쉬워요.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;font size=&quot;5&quot; style=&quot;background-color: transparent; &quot;&gt;&lt;span style=&quot;line-height: 36px;&quot;&gt;&lt;b&gt;To Be Continued....&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;
다음 강에는 게임 프로그래밍에 적용하는 병렬 프로그래밍에 대해 좀더 다뤄볼게욤~&lt;br /&gt;
아마도...&amp;nbsp;&lt;/span&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-416-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-416-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-416-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.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-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&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;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=24726617&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;</description>
			<category>게임 개발 포에버</category>
			<category>난왜잼있게못쓰지</category>
			<category>병렬프로그래밍</category>
			<category>진짜 글 못쓰네</category>
			<author>친절한티스</author>
			<guid>http://kindtis.tistory.com/416</guid>
			<comments>http://kindtis.tistory.com/416#entry416comment</comments>
			<pubDate>Wed, 18 Jan 2012 13:56:19 +0900</pubDate>
		</item>
	</channel>
</rss>

