<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>Drawtree</title>
	<link>http://drawtree.egloos.com</link>
	<description>스터디 노트 + 잡담.</description>
	<language>ko</language>
	<pubDate>Sat, 08 Aug 2009 05:34:56 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>Drawtree</title>
		<url>http://pds9.egloos.com/logo/200805/19/64/b0013464.jpg</url>
		<link>http://drawtree.egloos.com</link>
		<width>80</width>
		<height>40</height>
		<description>스터디 노트 + 잡담.</description>
	</image>
  	<item>
		<title><![CDATA[ iCal & Google Calendar ]]> </title>
		<link>http://drawtree.egloos.com/4206697</link>
		<guid>http://drawtree.egloos.com/4206697</guid>
		<description>
			<![CDATA[ 
  iCal 은 맥의 기본 일정관리 프로그램이다. 윈도우에서는 아웃룩에 해당하는 역할을 한다고 보면 되겠다.<div>물론 그 모양이나 동작은 전혀 다르다.</div><div><br />
</div><div>나는 이것을 쓰고 있고, 내가 만든 일정을 웹사이트에 게시할 수 있지 않을까 하는 생각이 들었다.</div><div>곧바로 &nbsp;iCal 서버를 찾아보았다.</div><div><br />
</div><div><a href="http://en.wikipedia.org/wiki/ICal_Server">http://en.wikipedia.org/wiki/ICal_Server</a></div><div>iCal은 서버가 있으며 Mac OS X Server 에 포함되어 있다.</div><div>또한, 이 서버는 오픈된 표준 칼렌더 프로토콜을 사용하며 서버 프로그램은 오픈소스로 공개되어 있다.</div><div><br />
</div><div>오. 굿인데?</div><div><br />
</div><div>맥 서버를 사지 않아도 쓸 수 있다는 거구나.</div><div>하지만 서버를 설치하고 어쩌구 하기는 귀찮으니 어디선가 무료로 서비스하고 있지 않을까.</div><div><br />
</div><div><a href="http://www.google.com/calendar/">http://www.google.com/calendar/</a></div><div>구글님ㅠㅠ...</div>			 ]]> 
		</description>
		<category>Mac &amp; Google</category>

		<comments>http://drawtree.egloos.com/4206697#comments</comments>
		<pubDate>Sat, 08 Aug 2009 05:20:22 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
	<item>
		<title><![CDATA[ document-based cocoa application ]]> </title>
		<link>http://drawtree.egloos.com/4200775</link>
		<guid>http://drawtree.egloos.com/4200775</guid>
		<description>
			<![CDATA[ 
  Cocoa는 문서 기반 어플리케이션이란 이름으로 싱글/멀티 파일 핸들링을 자동으로 관리해주는 프레임워크를 제공한다.<div>이것은 모든 맥 어플리케이션들이 마술같이 동일한 파일 핸들링을 보여주는 핵심 요소중에 하나다.</div><div><br />
</div><div>이것의 핵심은 NSDocument 클래스이다.</div><div>이는 NSDocumentController, NSWindowController, NSWindow등과 같이 연동되어 사용자가 쉘에서 파일을 클릭하는 순간부터 핸들링을 시작해 응용프로그램은 최종적으로는&nbsp;해당 파일의 URL만 받아서 처리하면 되도록 구성되어 있다.</div><div>이 프레임워크의 주요사항 몇가지를 소개한다.</div><div><br />
</div><div>1. 자동 파일 타입 연결.</div><div>프로그램이 다룰 수 있는 문서는 메타데이터화되어 프로그램 패키지 안에 저장된다. OS X는 정해진 때에 프로그램들을 검사하여, 해당 파일 형식에 대한 핸들러를 자동 검출/제거한다. &nbsp;시스템에 수동으로&nbsp;등록시킬 필요가 없다. 하지만&nbsp;디폴트 어플리케이션으로 등록하고 싶다면 몇가지 절차가 필요하다.</div><div><br />
</div><div>2. 자동 문서 파일 핸들링</div><div>해당 프레임워크를 사용하면 중간과정이 모두 자동으로 처리되고 URL만 받아 문서 뷰어/편집기의 로직에 집중할 수 있다. 사용자가 같은 파일을 실행하면 기존에 열린 편집기가 자동으로 포커스된다. 즉, 파일이 URL이 창에 바인딩된다. 또한&nbsp;현재 바인딩된 파일 URL을 교체할 수도 있다.</div>			 ]]> 
		</description>
		<category>Cocoa &amp; Objective-C</category>

		<comments>http://drawtree.egloos.com/4200775#comments</comments>
		<pubDate>Fri, 31 Jul 2009 00:37:52 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
	<item>
		<title><![CDATA[ autorelease ]]> </title>
		<link>http://drawtree.egloos.com/4199300</link>
		<guid>http://drawtree.egloos.com/4199300</guid>
		<description>
			<![CDATA[ 
  Objective-C 에서 두 가지의&nbsp;개체 소멸 방식을 지원한다.<div><br />
</div><div>하나는 가비지 컬렉션이다. 이는 전자동 개체 소멸이며, 일반적인 스크립팅 언어와 같이 메모리를 관리한다. Java, C#, ActionScript 등에서 사용했던 방식으로 할당하고 버리면 된다.</div><div><br />
</div><div>하지만 아이폰에서는 가비지 컬렉터가 지원되지 않는다.</div><div>그래서 남은 한가지 방식을 서야만 한다.</div><div><br />
</div><div>이는 레퍼런스 카운터다.</div><div>이 방식은 해당 개체를 보유한 수만큼 해제하는 것이다.</div><div>alloc/retain 으로 개체를 보유하고, 이 수만큼 release시킨다. 동수의 릴리스가 발생하면 개체의 dealloc 메서드가 호출되고, 곧 소멸된다.</div><div>문제는 개체의 보유(alloc/retain)자가 이 개체를 책임지고 해제(release)해야 한다는 것이다.</div><div>일반적으로 개체를 만들거나 할당한 쪽에서는 이를 명확히 알고 있으니 문제가 없다.</div><div><br />
</div><div>문제는 새로운 개체를 만들어 리턴하는 메서드이다.</div><div>일반적으로 이렇게 만들어진 개체는 받은 쪽에서 해제해줘야 한다고 생각하기 쉬우나, oc는 여기에 다른 룰을 적용한다.</div><div>해제는 만든거나 보유한 쪽만 해야 하는 거다. 만들어진 개체를 받은 쪽은 할당도 보유도 하지 않는다면 해제할 의무가 없다.</div><div>이를 위해 autorelease라는 메서드가 존재한다. 개체에 이 메서드가 실행되면 일단 해제된 것으로 인식하지만 즉시 소멸되지는 않는다.</div><div>개체는 해당 개체를 넘겨받은 스쿠프가 끝날 때까지 살아남아 있으며, 그 이후에 소멸된다. (이 소멸시점은 명확하지 않다)</div><div><br />
</div><div>여기에는&nbsp;예외가 있는데, 개체 생성을 전문으로 하는 메서드일 경우이다. (팩토리 메서드)</div><div>Cocoa프레임워크에서는 alloc-, new-, &nbsp;copy- 프리픽스는 이런 메서드를 의미한다. 이런 메서드로 생성된 개체는 명확하게 해제(release)해 주어야 한다. 그 외의 메서드에서는 새 개체가 반환되더라도 생성용이 아니라, 짧게 쓰고 끝내도록 하는 '편의' 메서드로, 이러한 개체는 해제하면 안된다. 또한 대부분의 경우, 이러한 개체는 생성 위치가 불명확하다. 명확하게 생성하는 메서드가 아닌 이상 해제하지 않으면 된다.&nbsp;</div><div><br />
</div><div>정리하면 다음과 같다.</div><div>새로운 개체를 생성(alloc)하거나, 보유(retain)한 수만큼만 해제(release)한다.</div><div>다른 메서드에서 만들어진 경우, 해당 메서드가 생성( alloc- new-. copy-) 메서드일 경우는 자신이 생성한 것과 같이 취급해 해제한다. 그 외의 경우는 외부에서 만들어진 것이므로, (보유하지 않는 이상) 해제하지 않는다.</div>			 ]]> 
		</description>
		<category>Cocoa &amp; Objective-C</category>

		<comments>http://drawtree.egloos.com/4199300#comments</comments>
		<pubDate>Wed, 29 Jul 2009 01:24:48 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
	<item>
		<title><![CDATA[ private method? ]]> </title>
		<link>http://drawtree.egloos.com/4199253</link>
		<guid>http://drawtree.egloos.com/4199253</guid>
		<description>
			<![CDATA[ 
  <div>관련글:</div><a href="http://www.cocoabuilder.com/archive/message/cocoa/2004/2/8/96519">http://www.cocoabuilder.com/archive/message/cocoa/2004/2/8/96519</a><div><br />
</div><div>"메서드는 외부의 메시지에 대한 반응일 뿐이므로,&nbsp;진정한 OO개념에서는 private/protected/internal 메서드란 존재하지 않는다."</div><div>"단지 내부용&nbsp;유틸리티 함수가 필요하다면 스태틱 함수로 구현하라."</div><div><br />
</div><div>위의 글에서 답자의 설명이다.</div><div>함수와 메서드에는 차이가 있다.</div>			 ]]> 
		</description>
		<category>Cocoa &amp; Objective-C</category>

		<comments>http://drawtree.egloos.com/4199253#comments</comments>
		<pubDate>Tue, 28 Jul 2009 23:56:38 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 한국어의 영문 표기법 ]]> </title>
		<link>http://drawtree.egloos.com/4194704</link>
		<guid>http://drawtree.egloos.com/4194704</guid>
		<description>
			<![CDATA[ 
  <div>한글의 로마자 표기법이 아니라</div><div>한국어의 영문 표기법이다.</div><div><br />
</div>http://www.hangeul.or.kr/board/view.php?id=bg01&amp;no=3674			 ]]> 
		</description>
		<category>이것저것 얘기들</category>

		<comments>http://drawtree.egloos.com/4194704#comments</comments>
		<pubDate>Wed, 22 Jul 2009 16:32:24 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
	<item>
		<title><![CDATA[ flex 3 에서 FP10로 컴파일하기. ]]> </title>
		<link>http://drawtree.egloos.com/4190343</link>
		<guid>http://drawtree.egloos.com/4190343</guid>
		<description>
			<![CDATA[ 
  <a href="http://www.elctech.com/tutorials/introduction-to-pixel-bender-flash-player-10">http://www.elctech.com/tutorials/introduction-to-pixel-bender-flash-player-10</a>			 ]]> 
		</description>
		<category>flash/flex/AIR</category>

		<comments>http://drawtree.egloos.com/4190343#comments</comments>
		<pubDate>Thu, 16 Jul 2009 20:02:38 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 회전 애니메이션 보간을 행렬로 수행하면 안되는 이유 ]]> </title>
		<link>http://drawtree.egloos.com/4190331</link>
		<guid>http://drawtree.egloos.com/4190331</guid>
		<description>
			<![CDATA[ 
  행렬은 회전과 기하적인 연관이 회전이 사용된 경우 없어 보간할 수 없다는 내용이다.<div>회전이 없는 경우라면 가능하다는 것?</div><div><br />
</div><div><a href="http://www.gpgstudy.com/forum/viewtopic.php?p=40704&amp;sid=8ed94ce5aa0ae61629144bb753ef3c0d">http://www.gpgstudy.com/forum/viewtopic.php?p=40704&amp;sid=8ed94ce5aa0ae61629144bb753ef3c0d</a></div>			 ]]> 
		</description>
		<category>플래시 게임엔진</category>

		<comments>http://drawtree.egloos.com/4190331#comments</comments>
		<pubDate>Thu, 16 Jul 2009 19:34:34 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Time Source ]]> </title>
		<link>http://drawtree.egloos.com/4190327</link>
		<guid>http://drawtree.egloos.com/4190327</guid>
		<description>
			<![CDATA[ 
  게임 엔진에서 가장 중요하고도 명확히 정해지지 않으면 진행할 수 없는 것이 시간 소스이다.<div>시간 소스는 프레임마다 발행되는 틱으로 구성되며, 일반적으로 고정 간격과 가변 간격으로 나뉜다.</div><div><br />
</div><div>- 고정 간격은 일정한&nbsp;시뮬레이션이 필요할때 사용되어야 하며,</div><div>- 가변 간격은 프레임간 매끄러운 애니메이션이 필요할때 사용되어야 한다.</div><div><br />
</div><div>그런데 두가지 다 필요하다면 어떻게 해야 하나?</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div>고정 간격 시간의 특성상 일정한 간격으로 시뮬레이션을 수행하므로 시뮬레이션 해상도가 항상 같다.</div><div>그러므로 시간에 따라 시뮬레이션 결과가 달라지지 않는다.</div><div>이것은 항상 같은 결과를 내어야 하는 룰 엔진에 적합하다.</div><div>하지만 비주얼 프레임은 항상 가변 간격으로 렌더링된다.</div><div>여기에 딜레마가 발생한다. 룰은 고정 간격으로 돌리면서 가변 간격의 프레임에 맞추어 렌더링을 수행하면</div><div>애니메이션을 매끄럽게 할 수 없다.&nbsp;</div><div><br />
</div><div>프레임 간격이 넓어지면서 1.8틱이나 2.5틱의 룰을 수행해야 하는 경우가 생긴다.</div><div>성능상 서브틱단위로 계산할 수는 없다. 하지만 틱마다 간격을 달리할 수도 없다.</div><div><br />
</div><div>2.5틱의 경우 2틱과 3틱을 교대로 수행할 수도 있지만, 애니메이션이 오차가 더 커져서 매끄럽지 못하게 된다.</div><div>연속적으로 2틱이나 3틱으로 적당히 조정할 수 있지만 이렇게하면 실제 시간과 싱크가 맞지 않아 실시간 흐름이 이상하게 느껴진다.</div><div><br />
</div><div><br />
</div><div><br />
</div><div>결론은, 고정 간격 시간이나 가변 간격 시간 어느 한쪽으로 일정한 시뮬레이션과 매끄러운 애니메이션 양쪽을 동시에 구현할 수는 없다. 이 모두가 필요하다면 이 두 가지 시스템을 같이 채용하고, 필요에 따라 적절히 조정해여 병용해야 한다.</div><div><br />
</div><div>기본적으로&nbsp;두 가지 시간을 모두 발행하고, 룰 계산은 고정 간격을 쓴다.</div><div>렌더링은 가변 간격을 쓴다.&nbsp;애니메이션은 모두 curve로 지정되어 연속적인 수치로 표현할 수 있게 해야 한다.&nbsp;</div><div>실수로 표현된 진행 시간에 기반해 매끄럽게 애니메이션되도록 말이다.</div><div><b>모든 종류의 출력이 시간/수치 커브에 기반해 연속적으로 표현 가능해야 한다</b>는 것이 핵심이다.</div><div>(차후에 네트워크 지연에 따른 에러 보정을 할 때도 편하게 된다)</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div>구체적으로는&nbsp;애니메이션 구현은 이렇다.</div><div><br />
</div><div>모든 애니메이션은 시간/수치 커브로 나타낼 수 있다. 3차벡터의 경우 개별적인 x/y/z 축에 대한 시간/수치&nbsp;커브로 표현가능하다. 이 수치&nbsp;커브를 함수화해 사용하는 것이다.</div><div>어떤 수치가 변화하는 것이라면 모두 이렇게 표현할 수 있다.</div><div>예를 들어 시간이 지나면서 차오르는 진행 상태 바 같은 경우 이런식으로 쉽게 표현 가능하다.</div><div><br />
</div><div>SRT(크기/회전/이동)라는&nbsp;기본 애니메이션은&nbsp;틱 기반의 누적 애니메이션으로 구현해야 한다고 생각하기 쉽지만 그렇게 해서는 안된다.&nbsp;항상 시작 상태와 최종 상태가 정해지고, 애니메이션은 이 사이가 보간되는 형식으로 구현해야 한다.</div><div><div>주의할 것은, S와 T는 단순한 벡터 보간으로 쉽게 되지만 R은 쿼터니언 회전 보간을 사용해야 한다.</div><div>카메라의 경우는 위치나 FOV등의 개별 패러미터를 각각 수치 커브로 보간하는 것으로 구현 가능하다.</div></div><div><div><br />
</div></div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><div><br />
</div><div>이 때,&nbsp;<b>룰 계산이 출력(애니메이션 표현 등)과 같거나 앞서 가는 것이 중요</b>하다.</div><div>왜냐면 수치 함수에 기반해 예측된 미래값은 잘못된 결과일 수 있기 때문이다.</div><div>잘못된 미래를 예측하기보다는 느리더라도 올바른 결과를 보여주어야 한다.</div><div>또한, 대부분의 수치 함수는 유효입력범위(보통 0~1)를 벗어나면 결과가 바르지 않다.</div><div><br />
</div><div>지난 프레임 시간이 0.3틱이라고 하면 0틱(룰이 진행되지 않는다)으로 생각할 수 있지만 이 룰에서 사이에 특정 유닛이 삭제될 수도 있고, 패스 진행이 오버되어 유닛이 길을 지나쳐 허공에 떠있을 수도 있게 된다.</div><div>이 경우 출력은 바르지 않다. 일단 1틱을 진행시키고 그 중 0.3만큼만 진행했다고 표시하는 것이 올바르다.</div><div>유저는 0.7만큼의 진행정보를 잃게 되어 0.7의 지연시간을 느끼게 된다. 하지만 지연시간이 있는 쪽이 낫다.</div><div><br />
</div><div>이것은 네트워크 지연시간과는 구분되어야 한다. 네크워크 지연시간을 생각하기 이전에 출력이 최소한의 올바른 범위 안에 있다는 것이 보장되어야 유저가 잃는 몰입감을 최소화할 수 있기 때문이다. 네트워크 지연시간때문에 왼쪽으로 가던 유닛이 사실은 아직 오른쪽에 있다는 사실을 발견할 수도 있지만, 최소한 유닛은 길 위에 있어야 하는 것이다.</div><div><br />
</div></div><div><br />
</div><div><br />
</div><div><br />
</div><div>룰 계산과 출력의 타이밍은 이렇게 어긋나게 된다.</div><div>입력은 어떨까?</div><div><br />
</div><div>룰 계산은 고정 간격으로 틱단위 계산된다. 그러므로 이 틱간에는 어떤 변화가 생기더라도 룰 자체에는 영향이 없다.</div><div>그러므로 입력은 즉시 수행되어도 좋다.</div><div><br />
</div><div>하지만 어떤 입력은 여러 프레임에 걸쳐 수행된다.</div><div>드래그나 키홀딩 같은 입력이 그러하다. 특히 드래그는 여러 프레임에 걸쳐 이산적인 좌표들로 구성된 입력값이다. 문제는 이 입력 프레임들의 간격은 항상 가변이라는 것이다.</div><div>사실 이 입력을 그대로 써도 별 문제는 없다. 약간의 입력 오차만이 발생할 뿐이며, 어떤 유저들은 이러한 입력에 익숙하기도 하다.</div><div>문제가 생길 경우에는 각 입력값을 보간해 매끄럽게 한 뒤 필요한 수치를 사용하면 된다. 이 경우 최소한의 바른 범위의 보간을 위해 최소한의 샘플이 필요하게 되며, 이만큼의 지연 시간이 생긴다. 어느쪽을 선택할지는 게임의 디자인에 달려 있다.</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div>			 ]]> 
		</description>
		<category>플래시 게임엔진</category>

		<comments>http://drawtree.egloos.com/4190327#comments</comments>
		<pubDate>Thu, 16 Jul 2009 19:30:34 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
	<item>
		<title><![CDATA[ ASP.NET에 비해 GWT가 가지는 장점 ]]> </title>
		<link>http://drawtree.egloos.com/4188476</link>
		<guid>http://drawtree.egloos.com/4188476</guid>
		<description>
			<![CDATA[ 
  ASP.NET+AJAX는 GWT에 비해 몇년 일찍 나왔고, 이미 완성 단계에 이르렀다.<div>하지만 ASP.NET은 태생적인 한계로 인한 치명적인 단점이 있다.</div><div>그것은 MS사 제품이라는 것이다.</div><div><br />
</div><div>MS자 제품은 전통적으로 자사 제품에 대해서는 상당한 품질을 보여주었지만,</div><div>타사 제품, 특히 경쟁 제품과의 호환성은 극도로 좋지 않았었다.</div><div>현재 브라우저들이 많이 표준화되었다고는 하지만</div><div>아직 개별적으로 약간씩 다른 부분들이 있다.</div><div>MS 브라우저는 차이가 더욱 심하다.</div><div>그리고 이 차이는 HTML뿐만 아니라 DOM및 자바스크립트 엔진에서도 나타난다.</div><div><br />
</div><div>MS는 경쟁 제품에 대해 자사의 높은 점유율을 무기로 하여&nbsp;</div><div>호환성을 떨어뜨리는 폐쇄적인 방식으로 일관해왔다.</div><div>결국 이는 그들의 점유율을 떨어뜨리는 결과를 가져왔다.</div><div><br />
</div><div>이에 반해 구글은 가능한한 높은 호환성을 위해 어떤 짓도 마다하지 않는다.</div><div>GWT는 범용 AJAX컴파일러로, 어떤 브라우저단이든 커버가 가능하다.</div><div>브라우저 호환성을 높이기 위해&nbsp;어쩔수 없는 브라우저간 차이를 없애는 방법으로</div><div>모든 브라우저들의 세부적인 차이를 자동으로 추적해 컴파일하는 프로그램으로 해결하는 것이다.</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div>솔직히 MS가 이러한 기술이 없을리 없다.</div><div>ASP.NET+AJAX로 그러한 맥락에서 나온 것이리라 생각한다.</div><div>더욱이 호환성을 무기로 걍쟁시장을 파고드는 전략은 MS가 초기에 즐겨쓰던 방법이며, 그 결과 현재의 MS가 있다.</div><div>맘만 먹으면 어떤식으로든 완벽하게 호환되는 제품을 내놓지 못할리가 없다.</div><div>엄청난 수의 개발자를 거느리고, 모든 종류의 표준화 단체마다 한발을 걸치고 있는 MS다.</div><div><br />
</div><div>하지만 MS는 IE시리즈에서 너무 많은 죄를 지었다. 현재 MS가 표준를 지킬 거라고 믿는 사람은 아무도 없다. (특히나 웹쪽이라면 말이다) 그들이 표준화에 대한 신뢰를 회복하기 전에는 ASP.NET+AJAX가 아무리 좋은 기술이라 한들, 호환성이 가장 중요한 이슈가 되는 웹 시장에서는 그다지 환영받지 못할 것이다.</div><div><br />
</div><div>GWT는 아직 초기단계이지만, 구글이 지금껏 해왔던 일들을 생각해보면 최소한 브라우저간 호환성만큼은 제대로 보여줄 것이다.</div><div><br />
</div>			 ]]> 
		</description>
		<category>이것저것 얘기들</category>

		<comments>http://drawtree.egloos.com/4188476#comments</comments>
		<pubDate>Tue, 14 Jul 2009 12:31:37 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
	<item>
		<title><![CDATA[ MS 솔루션의 문제 ]]> </title>
		<link>http://drawtree.egloos.com/4188354</link>
		<guid>http://drawtree.egloos.com/4188354</guid>
		<description>
			<![CDATA[ 
  MS솔루션은 사실 쓸만하다.<div>품질도 어느정도 보장되고</div><div>MS플랫폼 내에서는 호환성도 좋다.</div><div>성능도 좋고, 기능도 강력하다.</div><div>그러면 뭐가 문제인가?</div><div><br />
</div><div>너무 복잡하다.</div><div>특정 문제 해결을 위한 솔루션 작성을 위해서는 프레임워크의 세부 사항을 모두 알고 있지 않으면 안된다.</div><div>그렇지 않으면 어느정도 진행하다가 벽에 부딫히게 된다.</div><div>이 벽은 하부 세부 사항을 모두 알게 되기 전에는 뚫을 수 없다.</div><div><br />
</div><div>모든 프레임워크가 그렇지는 않다.</div><div>하지만 내가 써본 것 중 핵심적인 많은 부분이 그러했다.</div><div>MS 플랫폼은 일반적인 해법을 추구하기에 실제 필요한 것보다 더 복잡한 형태를 띠고 규모가 커진다.</div><div>하지만 이것을 정규적인 형태로 구현하지는 않는다. 응용&nbsp;형태에 대한 고찰 없이 기능 제공만을 위해&nbsp;그때그때 구현하는 듯 하다.</div><div>결국 이 프레임워크를 사용하는 개발자는 같은 문제를 해결하기 위해 매우 복잡한 과정을 거쳐야 하며, 한부분이라도 실수하면 원하는 결과가 나오지 않는다. 또한 이 과정 자체가 서로에 너무 의존적이다.</div><div><br />
</div><div>이런 것은 해당 프레임워크를 완전히 이해하고 마스터하겟다는 자세로 사용하면 별 문제가 없다.</div><div>하지만 중요한것은 프레임워크가 아니다. 중요한것은 솔루션이다. 주어진 문제를 해결하는 것이다.</div><div>프레임워크 하나만 알면 수십년동안 그것만 응용해서 사용할 수 있다면 좋겠지만,</div><div>실제로는 문제 해결을 위해 매일같이 새로운 프레임워크를 사용해야 하고, 배울 시간은 턱없이 부족하다.</div><div>프레임워크에서 중요한 것은 바로 배워서 쓸 수 있어야 한다는 것이다. 배우는데 시간이 오래 걸린다면 이미 경쟁자에게 뒤쳐지게 된다. 하지만 MS프레임워크는 마스터하기 전엔 응용하기 힘들다.</div>			 ]]> 
		</description>
		<category>이것저것 얘기들</category>

		<comments>http://drawtree.egloos.com/4188354#comments</comments>
		<pubDate>Tue, 14 Jul 2009 09:16:38 GMT</pubDate>
		<dc:creator>F176</dc:creator>
	</item>
</channel>
</rss>
