<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>trivial stories &#187; Programming</title>
	<atom:link href="http://www.herzz.com/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.herzz.com/blog</link>
	<description>Trivial round of daily life, unimportant and not serious.</description>
	<lastBuildDate>Tue, 29 Mar 2011 17:51:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>James Dempsey의 Cocoa 계몽(?)송들</title>
		<link>http://www.herzz.com/blog/2008/12/20/cocoa-songs-by-james-dempsey/</link>
		<comments>http://www.herzz.com/blog/2008/12/20/cocoa-songs-by-james-dempsey/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 08:56:11 +0000</pubDate>
		<dc:creator>hz</dc:creator>
				<category><![CDATA[Apple&#038;Mac]]></category>
		<category><![CDATA[Fun stuff]]></category>
		<category><![CDATA[Movie clips]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.herzz.com/blog/?p=472</guid>
		<description><![CDATA[이전에 MVC Song을 소개했던 포스트가 있었는데, 알고보니 그 이후로도 이 아저씨의 신작이 계속 나오고 있었던 모양이다. 컨츄리한 멜로디에 계몽적인(?) 가사를 달아서 천역덕스럽게 부르면서 세뇌시키는 현장들. 메마르기 쉬운 개발자로 일하면서도 풍류를 잃지 않는 모습이 멋져 보인다. MVC Song이 워낙 포스가 강하긴 했지만, 다른 노래들도 재미있게 들어볼만 하다. 개인적으론 Release Me가 아주 인상적이었다. MVC Song @ WWDC [...]]]></description>
			<content:encoded><![CDATA[<p>이전에 MVC Song을 소개했던 포스트가 있었는데,<br />
알고보니 그 이후로도 이 아저씨의 신작이 계속 나오고 있었던 모양이다.</p>
<p>컨츄리한 멜로디에 계몽적인(?) 가사를 달아서 천역덕스럽게 부르면서 세뇌시키는 현장들.<br />
메마르기 쉬운 개발자로 일하면서도 풍류를 잃지 않는 모습이 멋져 보인다.</p>
<p>MVC Song이 워낙 포스가 강하긴 했지만, 다른 노래들도 재미있게 들어볼만 하다.<br />
개인적으론 Release Me가 아주 인상적이었다.</p>
<p>MVC Song @ WWDC 2003<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/YYvOGPMLVDo&#038;hl=ko&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/YYvOGPMLVDo&#038;hl=ko&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>Modelin&#8217; Man @ WWDC 2004<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Z-6hi3KSzzs&#038;hl=ko&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Z-6hi3KSzzs&#038;hl=ko&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>Release Me @ WWDC 2007 (발표는 WWDC 2005)<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/4t7fNzwNgzM&#038;hl=ko&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/4t7fNzwNgzM&#038;hl=ko&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>I Love View @ WWDC 2007<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/X0AcrL6vHE8&#038;hl=ko&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/X0AcrL6vHE8&#038;hl=ko&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>Designated Initializer @ WWDC 2008<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/ajlESsRXqmM&#038;hl=ko&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ajlESsRXqmM&#038;hl=ko&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.herzz.com/blog/2008/12/20/cocoa-songs-by-james-dempsey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>매직넘버 0xCAFEBABE 이야기</title>
		<link>http://www.herzz.com/blog/2007/11/17/cafebabe/</link>
		<comments>http://www.herzz.com/blog/2007/11/17/cafebabe/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 18:24:46 +0000</pubDate>
		<dc:creator>hz</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[cafebabe]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mach Kernel]]></category>
		<category><![CDATA[Mach-O]]></category>
		<category><![CDATA[Magic Number]]></category>
		<category><![CDATA[NeXT]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://www.herzz.com/blog/stories/255/cafebabe/</guid>
		<description><![CDATA[0xCAFEBABE는 컴파일 된 자바 클래스 파일의 매직넘버로 널리 알려져 있다. (인텔 x86과 같은 리틀엔디안 머신에서는 메모리로 올린 후엔 0xBEBAFECA, PowerPC는 빅엔디안) 헌데 우연히 Mac OS X의 바이너리(Obj-C로 만든 Cocoa기반의)를 열어 봤는데 이 것도 매직넘버가 CAFEBABE로 나오는게 아닌가! 자바 바이너리가 아닌게 확실한데, 이것 참 이상한 일이다 싶어서 누군가 해명 해 놓은 내용이 있나 찾아봤다. 그 내용들 [...]]]></description>
			<content:encoded><![CDATA[<p>0xCAFEBABE는 컴파일 된 자바 클래스 파일의 매직넘버로 널리 알려져 있다. <font color="#999999">(인텔 x86과 같은 리틀엔디안 머신에서는 메모리로 올린 후엔 0xBEBAFECA</font><font color="#999999">, PowerPC는 빅엔디안)</font><br />
헌데 우연히 Mac OS X의 바이너리<font color="#999999">(Obj-C로 만든 Cocoa기반의)</font>를 열어 봤는데 이 것도 매직넘버가 CAFEBABE로 나오는게 아닌가!</p>
<p>자바 바이너리가 아닌게 확실한데, 이것 참 이상한 일이다 싶어서 누군가 해명 해 놓은 내용이 있나 찾아봤다. 그 내용들 중 비교적 본질에 근접했다고 생각되는 이야기들 중에서 정리해서 번역을 해 봤다. 중간중간 오역 투성이지만 전체적인 맥락에서 이해 해 주시길&#8230;<br />
<a href="http://radio.weblogs.com/0100945/2002/04/19.html" target="_blank" title="[원문] Why CAFEBABE?"></a></p>
<p><a href="http://radio.weblogs.com/0100945/2002/04/19.html" target="_blank" title="[원문] Why CAFEBABE?">[원문] Why CAFEBABE?</a></p>
<blockquote><p> <font color="#999999">{전략}</font></p>
<p>저는 1986년쯤 부터 1995년까지 썬에서 대부분 디버거와 C++컴파일러 일을 했습니다. 1991년 무렵, C++ 컴파일러의 기반 코드였던 Tau Metric이 판매 되기 시작하여 썬이 이걸 구입하기 이전에,  C++ 컴파일러의 프론트엔드<font color="#999999">(썬의 CIR에 넣기 위한)</font>를 구현하기 시작한 팀이 있었습니다. 저는 &#8220;C++, A Front End&#8221;의 약자인 &#8220;CAFE&#8221;<font color="#999999">(1989년경으로 기억합니다)</font>라는 이름의 프로젝트에 합류한 사람들 중 한 명 이었습니다. 우리는 Tau Metric을 구입하기 전 단지 몇 달 동안만 이 일을 했고, 회사는 이미 훨씬 완성 된 다른 C++ 컴파일러를 가진 상태였습니다. 우리는 Tau Metric을 사고 프로젝트 이름인 &#8220;Cafe&#8221;는 유지 됐지만, 이제는 그 컴파일러 프로젝트의 이름으로 전환 되었습니다.</p>
<p>그 컴파일러가 썬의 제품이었을 때에, 마케팅을 할 사람이 있어야 했습니다. Kim Polese가 그 사람 이었습니다. 그녀는 &#8220;Cafe&#8221;의 제품 매니저 였는데, 저는 사람들이 그녀를 &#8220;babe&#8221;로 칭하는 것을 쉽게 볼 수 있었습니다. 그녀는 나중에 썬의 준 비밀리에 개발 된 Oak<font color="#999999">(후에 Java가 된)</font>의 책임자가 되었습니다.</p>
<p><font color="#999999">{중략}</font></p>
<p>Dave Winer가 Kim Polese의 사진을 가리키면서, Steve Zeller가 0xCAFEBABE 매직넘버를 유닉스의 /etc/magic 파일에서 봤다는 것을 언급 했습니다. 그 파일 리스트는 이 전에 &#8220;cafebabe&#8221;를 골랐던<font color="#999999">(다른 종류의 파일에 두 번 고른) </font>Mike DeMoney가 만든 것입니다.</p>
<p><font color="#999999">{후략}</font><br />
<strong> &#8211; Doug Landauer</strong></p></blockquote>
<p><a href="http://radio.weblogs.com/0100490/2003/01/28.html" title="[원문] 0xCAFEBABE &amp; 0xFEEDFACE " target="_blank">[원문] 0xCAFEBABE &amp; 0xFEEDFACE </a></p>
<blockquote><p> <font color="#999999">{전략}</font></p>
<p>자바의 매직넘버는 Mach-O커널의 fat파일 매직넘버와 같습니다. 흥미롭게도 두 개의 매직넘버를 2년 간격을 두고 뽑은 <font color="#999999">(썬의)</font>책임자는 NeXT출신의 Mike DeMoney입니다.</p>
<p><font color="#999999">{후략}</font><br />
<strong> &#8211; Larry Schwimmer</strong></p></blockquote>
<blockquote><p> 그게 만약 사실이라면 조금 흥미롭겠군요.</p>
<p>단순히 사실을 말 하자면, 제가 NeXT를 떠나 책임자로 일하기까지<font color="#999999">(썬의 자바의 출생지에서)</font> 저는 자바의 매직넘버를 고르는 일을 하지 않았습니다. 도착하기 전에 이미 잘 골라 놨더군요. 제가 NeXT에서 Mach 커널의 fat바이너리 작업을 했기 때문에 제가 NeXT mach-o의 넘버를 골랐을 수 있습니다.<font color="#999999">(그랬는지 기억나지 않지만)</font></p>
<p>저는 이 이야기가 아마도 NeXT의 친구<font color="#999999">(지금은 애플의 아무개 &#8211; 본인이 원하면 말할 수 있음)</font>가 이것 관련해서 저를 놀리던 것에서 시작 되었다고 믿습니다. 농담이 스스로의 생명력을 가지게 됐다고 생각합니다. 혹은 그는 아마도 제가 Mach-o일을 했고 자바팀으로 가서 이런 연관성을 만들었다고 정말로 가정하고 있는 지도 모르겠습니다. 그럴 듯한 이야기네요, 다시 말 하지만 사실이 아닙니다.</p>
<p>저는, 16진 표기로 늘어 놓을 수 있는 &#8220;예쁜&#8221; 단어들의 수가 한정되어 있어서, 두 독립 그룹이 십중팔구 같은 것을 뽑는 것이 전혀 놀랍지 않다는게 이 이야기의 진실이라고 생각합니다. <font color="#999999">(놀라운건 그걸 이해하지 못한 사람들이 더 많다는 것이죠)</font></p>
<p>과거에 잠겨있는 것이 별로 좋은 선택은 아니지만, 여러분이 제가 NeXT에서 CAFEBABE를 고른데 대해 힐난할 수 있습니다. 하지만 자바에 다시 하진 않았습니다.<br />
흥미는 없군요. Larry Schwimmer가 누군지 모르겠군요. 그 사람이 저에게 이야기 한 적은 없습니다.<br />
<strong> -Mike DeMoney</strong></p></blockquote>
<blockquote><p> 제가 아는 한, 저는 이 일에 있어 유죄인 당사자입니다. 저는 NeXT 연관성에 대해 전혀 신경쓰지 않았습니다. 작은 숫자의 흥미로운 16진 표기는 조합의 재료가 될 수 있습니다. 자바의 CAFEBABE의 유래는 이렇습니다.</p>
<p>우리는 종종 점심을 먹으러 St Micahel&#8217;s Alley라고 불리는 곳에 갑니다. 이 지역의 전설에 따르면, 오랜 옛날에,</p>
<p><font color="#999999">{중략}</font></p>
<p>우리가 그 곳에 가곤 했을 때, 우리는 그 곳을 Cafe Dead라고 이름 붙였습니다. 글자의 선을 쭉 따라가다 보니, 그 녀석이 이건 16진수다 라고 알려 주었습니다. 저는 몇몇 파일 포맷의 코드를 수정하는 중이었고, 지속 개체<font color="#999999">(persistent object) </font>파일을 위한 것 하나와 클래스를 위한 하나, 두 종류의 매직넘버가 필요했습니다. 저는 CAFEDEAD를 개체 파일 포맷으로 썼고, &#8220;CAFE&#8221; 다음에 붙일 4개의 16진 문자를 찾고 있었습니다. 저는 &#8220;BABE&#8221;가 꽂혔고 그걸 쓰기로 결정 했습니다. 그 때는 그게 끔찍하게 중요하다거나 운명적인 것이라고 생각하지 않았습니다. 그래서 CAFEBABE는 클래스 파일 포맷으로, CAFEDEAD는 지속 개체의 포맷이 되었죠. 하지만 지속 개체의 조합<font color="#999999">(persistent object facility)</font>은 없어졌고, CAFEDEAD는 쓸모 없어졌습니다. &#8211; 결과적으로 RMI로 대체됐죠.<br />
<strong> -James Gosling</strong></p></blockquote>
<p>순서대로 요약하자면,  NeXT에서 썬으로 옮겨 간 개발자가 NeXTSTEP에 썼던 CAFEBABE라는 매직넘버를 자바에도 그대로 우려먹어서 문제가 생겼다는 비난에 대해 우연의 일치라며 극구 부인하던 중에, 본좌가 등장하면서 작명가는 본인이며 우연이었다로 마무리가 된다.</p>
<p>쳇&#8230; 별거 없잖아; 분위기 보니 Mike DeMoney라는 사람이 처음에 왜 CAFEBABE를 골랐을지 찾아보려 했던 것도 별로 재미 없을 것 같다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herzz.com/blog/2007/11/17/cafebabe/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>C++0x</title>
		<link>http://www.herzz.com/blog/2007/11/13/cpp0x/</link>
		<comments>http://www.herzz.com/blog/2007/11/13/cpp0x/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 23:37:37 +0000</pubDate>
		<dc:creator>hz</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C++ 표준]]></category>
		<category><![CDATA[C++0x]]></category>

		<guid isPermaLink="false">http://www.herzz.com/blog/stories/254/cpp0x/</guid>
		<description><![CDATA[차기 C++ 표준안(가칭 C++0x)이 머지 않은 모양이다. (2008년까지 완성해서 2009년에 발표 할 계획을 가지고 있다고 하니&#8230;) 관련하여 차기 표준안에 대한 제안서를 정리 해 둔 페이지에서 이미 차기 표준안 작업에 포함 된 문서들 위주로 훑어 보다 보니 꽤 흥미롭다. 템플릿 선언시 부등호 기호 &#8216;&#60;,&#62;&#8217;가 중첩되면 비트연산자가 되어버리는 바람에 꼭 공백을 넣어줘야 하는 바보같은 문제에서 부터, &#8216;long [...]]]></description>
			<content:encoded><![CDATA[<p>차기 C++ 표준안(가칭 C++0x)이 머지 않은 모양이다. (2008년까지 완성해서 2009년에 발표 할 계획을 가지고 있다고 하니&#8230;)</p>
<p>관련하여 차기 표준안에 대한 제안서를 정리 해 둔 <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2432.html" target="_blank">페이지</a>에서 이미 차기 표준안 작업에 포함 된 문서들 위주로 훑어 보다 보니 꽤 흥미롭다.</p>
<p>템플릿 선언시 부등호 기호 &#8216;&lt;,&gt;&#8217;가 중첩되면 비트연산자가 되어버리는 바람에 꼭 공백을 넣어줘야 하는 바보같은 문제에서 부터, &#8216;long long&#8217;과 같은 타입에 대해서 새로운 형으로 대체하자든지, 널포인터에 대해 nullptr라는 키워드를 추가 한다거나, r-value 레퍼런스(Type&amp;&amp;같은 헛갈리기 좋을 것 같은 모양을 하고 있던데&#8230;), thread-safe/lock-free 액세스에 대한 지원+멀티쓰레딩 라이브러리 제공(대환영!) 등등 여러가지 제안이 이미 궤도에 올랐고, 더 많은 수의 제안들이 검토단계의 리스트에 올라와 있다. 여러가지 개선 된다니 좋지만  한 동안 새로운 내용들과 씨름은 피할 수 없을 모양이다.</p>
<p>한참 밑에 있는 내용들을 보면 차기 표준안 이후에는 가비지 컬렉션도 고려 할 모양인가 본데&#8230; 아무래도 C++은 C의 패러다임에서 점점 멀어질 수 밖에 없는 운명인가 보다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herzz.com/blog/2007/11/13/cpp0x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MVC Song</title>
		<link>http://www.herzz.com/blog/2006/12/30/mvc-song/</link>
		<comments>http://www.herzz.com/blog/2006/12/30/mvc-song/#comments</comments>
		<pubDate>Fri, 29 Dec 2006 17:15:06 +0000</pubDate>
		<dc:creator>hz</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.herzz.com/blog/stories/157/mvc-song/</guid>
		<description><![CDATA[애플의 개발자 컨퍼런스인 WWDC 2003에서 Cocoa User Interface Programming 세션 중에 MVC패턴의 이해를 돕기 위해 부른 노래라고 한다. 참고로 Cocoa 프레임웍 위에서 UI가 있는 프로그램을 만드는 과정은 MFC의 그것(UI를 리소스 개념으로 디자인 해서 붙이는)과 비슷하고, 컨트롤들의 이벤트들이 Win32/MFC처럼 메시지로 줄줄 들어오는 식이 아니라 컨트롤이 이벤트핸들러를 포함하도록 설계 되어있는 점이 다르다. (닷넷의 윈폼애플리케이션이나, 볼랜드 델파이(C++빌더)의 VCL의 [...]]]></description>
			<content:encoded><![CDATA[<p><object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/YYvOGPMLVDo"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/YYvOGPMLVDo" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"></embed></object><br />
애플의 개발자 컨퍼런스인 WWDC 2003에서 Cocoa User Interface Programming 세션 중에 MVC패턴의 이해를 돕기 위해 부른 노래라고 한다.</p>
<p>참고로 Cocoa 프레임웍 위에서 UI가 있는 프로그램을 만드는 과정은 MFC의 그것(UI를 리소스 개념으로 디자인 해서 붙이는)과 비슷하고, 컨트롤들의 이벤트들이 Win32/MFC처럼 메시지로 줄줄 들어오는 식이 아니라 컨트롤이 이벤트핸들러를 포함하도록 설계 되어있는 점이 다르다. (닷넷의 윈폼애플리케이션이나, 볼랜드 델파이(C++빌더)의 VCL의 그것과 매우 유사하다)</p>
<p>저 노래를 부르는 아저씨는 일을 정말 즐기는 것 처럼 보인다 &#8216;-&#8217;</p>
<p>*) 가사 중에 나오는 고유명사들<br />
1. NSTextView &#8211; MacOS X의 AppKit 프레임워크에 포함 된 일종의 텍스트박스 클래스. 리치에디트 컨트롤과 유사한 점이 있다. NSText와 NSView를 상속받는 식으로 만들어져 있다.<br />
2. Smalltalk &#8211; 객체지향 언어의 효시로 알려져 있는 언어. Cocoa의 구현 언어인 Objective-C나, 자바, 파이썬 등에 영향을 준 것으로 알려져 있다.<br />
3. GQ &#8211; 유명한 남성잡지-_-<br />
4. IB &#8211; Interface Builder. Cocoa나 Carbon을 위한 UI리소스 디자인을 지원 해 주는 UI작성 툴.<br />
5. G5 &#8211; IBM의 프로세서 브랜드. 가사에서는 파워맥 G5를 이야기 하고 있다. 64비트 프로세서로, 듀얼 G5 프로세서를 탑재 한 파워맥이 엑박360 출시 이전 개발툴로 제공 된 적이 있다. 2003년 당시의 최신사양의 맥 정도로 해석하면 되겠다.</p>
<p>Model-View-Controller Song</p>
<p>Lyrics by James Dempsey</p>
<p>Model View, Model View, Model View Controller<br />
MVC’s the paradigm for factoring your code,<br />
into functional segments so your brain does not explode.<br />
To achieve reusability you gotta keep those boundaries clean,<br />
Model on the one side, View on the other, the Controller’s in between.</p>
<p>Model View &#8211; It’s got three layers like Oreos do.<br />
Model View creamy Controller</p>
<p>Model objects represent your applications raison d’tre.<br />
Custom classes that contain data logic and et cetra.<br />
You create custom classes in your app’s problem domain,<br />
then you can choose to reuse them with all the views,<br />
but the model objects stay the same.</p>
<p>You can model a throttle in a manifold,<br />
Model level two year old.<br />
Model a bottle of fine Chardonnay.<br />
Model all the twaddle stuff people say.<br />
Model the coddle in a boiling eggs.<br />
Model the waddle in Hexley’s legs.</p>
<p>One, two, three, four.<br />
Model View &#8211; You can model all the models that pose for GQ.<br />
Model View Controller</p>
<p>View objects tend to be controls that view and edit,<br />
Cocoa’s got a lot of those, well written to its credit.<br />
Take an NSTextView, hand it any old Unicode string,<br />
the user interacts with it, it can hold most anything.<br />
But the view don’t knows about the Model:<br />
That string could be a phone number or the words of Aristotle.<br />
Keep the coupling loose and so achieve a massive level of reuse.</p>
<p>Model View &#8211; All rendered very nicely in Aqua blue<br />
Model View Controller</p>
<p>You’re probably wondering now.<br />
You’re probably wondering how,<br />
the data flows between Model and View.<br />
The Controller has to mediate,<br />
between each layer’s changing state,<br />
to synchronize the data of the two.<br />
It pulls and pushes every changed value.<br />
Yeah.</p>
<p>Model View &#8211; mad props to the smalltalk crew!<br />
for Model View Controller</p>
<p>Model View &#8211; it’s pronouced Oh Oh not Uh Uh<br />
Model View Controller</p>
<p>There’s a bit more on this story,<br />
a few more miles upon this road,<br />
well nobody seems to get much glory<br />
writing controller code.<br />
Well the model is mission critical<br />
and gorgeous is the view,<br />
But I’m not being lazy, but sometimes it’s just crazy<br />
how much code i write is just glue.<br />
And it wouldn’t be so tragic,<br />
but the code ain’t doing magic:<br />
it’s just moving values through.<br />
And I wish I had a dime<br />
for every single time<br />
I set a TextField’s stringValue.</p>
<p>Model View &#8211; how we’re gonna deep-six all that glue<br />
Model View Controller</p>
<p>Controller’s know the Model and View very<br />
uahh &#8211; intimately<br />
They often are hardcoding<br />
which is very verboten for reusability.<br />
But now you can connect any value you select<br />
to any view property.<br />
And I think you’ll start binding,<br />
then you’ll be finding less code in your source tree.<br />
Yeah I know I was astounded,<br />
that’s not even a rhyme.</p>
<p>But I think it bares repeating<br />
all the code you won’t be needing,<br />
when you hook it up in IB.</p>
<p>Model View &#8211; it even handles multiple selections too<br />
Model View Controller</p>
<p>Model View &#8211; hope I get my G5 before you<br />
Model View Controller</p>
<p>Yeah, yeah, yeah. Yeah.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herzz.com/blog/2006/12/30/mvc-song/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://swiki.osxdev.org/osxdev/uploads/107/MVC_Song.mov" length="9569541" type="video/quicktime" />
		</item>
	</channel>
</rss>

