<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
 <title type="html">wafe&amp;#039;s weblog</title>
 <id>http://wafe.kr/atom</id>
 <link rel="alternate" type="text/html" hreflang="ko" href="http://wafe.kr/"/>
 <subtitle type="html"></subtitle>
 <updated>2010-02-12T04:49:46+09:00</updated>
 <generator>Textcube.com 2.0 Garnet</generator>
 <entry>
  <title type="html">Commands in Silverlight with SLExtensions - 2</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/Commands-in-Silverlight-with-SLExtensions-2"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/114" thr:count="0"/>
  <category term="Command"/>
  <category term="design pattern"/>
  <category term="Silverlight"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/114</id>
  <updated>2010-01-01T14:41:52+09:00</updated>
  <published>2010-01-01T14:41:52+09:00</published>
  <content type="html">자이닉스 개발부 블로그에 커맨드 패턴 연재 중 두 번째 글을 썼다. 다음 번에 좀 더 상세한 내용을 다루도록해야겠다.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://xinics.tistory.com/entry/Commands-in-Silverlight-with-SLExtensions-1&quot;&gt;Commands in Silverlight with SLExtensions - 1&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://xinics.tistory.com/entry/Commands-in-Silverlight-with-SLExtensions-2&quot;&gt;Commands in Silverlight with SLExtensions - 2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;2010년에는 적어도 한 주에 포스트 하나씩은 작성하려는 목표를 세웠다. 이미 12월부터 시작해서 12월에는 한 주에 하나씩 쓰는 데 성공했다. 기세를 몰아서 1년간 계속 유지해보자.&lt;br /&gt;&lt;br /&gt;이 연재처럼 개발부 블로그에 쓰는 포스트까지 포함시키는 꾀를 조금 부리고는 있지만, 영양가 없는 포스트로 채우기보다는 조금이나마 의미있는 포스트로 채우는 게 좋다는 생각으로 그 정도는 허용해주기로 했다.&lt;br /&gt;&lt;br /&gt;화이팅!&lt;br /&gt;</content>
 </entry>
 <entry>
  <title type="html">Commands in Silverlight with SLExtensions - 1</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/Commands-in-Silverlight-with-SLExtensions-1"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/110" thr:count="0"/>
  <category term="Command"/>
  <category term="design pattern"/>
  <category term="Silverlight"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/110</id>
  <updated>2009-12-26T20:55:46+09:00</updated>
  <published>2009-12-26T20:55:46+09:00</published>
  <content type="html">이번 스프린트에서 맡은 작업에서 혼자 MVVM 패턴과 Command 패턴을 적용해본다며 삽질을 했다. 덕분에 예상보다 많은 일정을 소모하고, 다른 팀원들 도움도 받고... 빡빡한 일정임을 알면서 그것도 남들 몰래 이런 모험을 하는 건 웬 못되먹은 심보란 말인가. 함께 한 팀원들께 죄송스럽고 고마울 따름이다.&lt;br /&gt;&lt;br /&gt;그런 의미에서라도 이번에 알게된 내용은 꼭! 잘 기록해서 남겨둬야겠다. 그리하여 시리즈 중 첫 번째. &lt;a target=&quot;_blank&quot; href=&quot;http://xinics.tistory.com/entry/Commands-in-Silverlight-with-SLExtensions-1&quot;&gt;Commands in Silverlight with SLExtensions - 1&lt;/a&gt;&lt;br /&gt;</content>
 </entry>
 <entry>
  <title type="html">HttpContextBase를 이용해서 ASP.NET 코드의 테스트 가능성 높이기</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/HttpContextBase-Testable-ASPNET"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/107" thr:count="2" thr:updated="2009-12-27T13:43:30+09:00"/>
  <category term="ASP.NET"/>
  <category term="Unit Test"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/107</id>
  <updated>2009-12-19T21:03:46+09:00</updated>
  <published>2009-12-19T21:03:46+09:00</published>
  <content type="html">유닛 테스트를 중요하게 생각하여 설계한 코드라면 HttpContext 같이 ASP.NET 프레임워크에 종속되어 테스트가
불가능해지는 클래스들은 진작에 어댑터 등을 이용하여 분리시켜 두었을 것이다. 하지만 이미 작성된 코드가 많은 상황에서 유닛
테스트를 도입할 때에는 HttpContextBase 클래스가 유용하게 사용될 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/ko-kr/library/system.web.httpcontextbase%28loband%29.aspx&quot;&gt;HttpContextBase 클래스&lt;/a&gt;는 ASP.NET MVC에서 쓰이는 클래스라서 (&lt;a target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.httpcontext%28loband%29.aspx&quot;&gt;Controller.HttpContext Property&lt;/a&gt; 참조) 3.5 SP1부터 쓸 수 있고, &lt;span sdata=&quot;assembly&quot;&gt;System.Web.Abstractions&lt;/span&gt; 어셈블리(네임스페이스는 System.Web)를 참조에 추가하면 된다.&lt;br /&gt;&lt;br /&gt;HttpContextBase 클래스는 기존의 &lt;a target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/ko-kr/library/system.web.httpcontext%28VS.80,loband%29.aspx&quot;&gt;HttpContext 클래스&lt;/a&gt;와 완전히 동일한 멤버들을 노출하고 있고, HttpContext 인스턴스를 쉽게 HttpContextBase 인스턴스로 전환할 수 있도록 &lt;a target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/ko-kr/library/system.web.httpcontextwrapper%28loband%29.aspx&quot;&gt;HttpContextWrapper 클래스&lt;/a&gt;를 같이 제공하고 있다. 포함된 어셈블리도 ASP.NET MVC와는 분리된 어셈블리이다. 따라서 ASP.NET 응용프로그램에서도 기존에 HttpContext 인스턴스를 사용하는 곳에서는 동일하게 HttpContextBase 인스턴스를 사용할 수 있다.&lt;br /&gt;&lt;br /&gt;ASP.NET MVC의 목표에 맞게, HttpContextBase의 모든 멤버는 virtual로 선언되어 있어서 HttpContext를 사용하는 코드를 쉽게 유닛 테스트 할 수 있게 된다. (&lt;a target=&quot;_blank&quot; href=&quot;http://www.ayende.com/projects/rhino-mocks.aspx&quot;&gt;Rhino.Mocks&lt;/a&gt; 같은 mock framework을 쓴다면 금상첨화)&lt;br /&gt;&lt;br /&gt;비록 HttpContext를 쓰던 곳에 HttpContextBase를 그대로 쓸 수 있다고는 하지만 기존의 ASP.NET 코드 상태에 따라서는 당연히 수정이 필요한 곳이 생긴다.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;정적(static)으로 선언된 &lt;a target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/ko-kr/library/system.web.httpcontext.current%28VS.80,loband%29.aspx&quot;&gt;HttpContex.Current 속성&lt;/a&gt;을 직접 사용하는 메서드는 HttpContextBase 인스턴스를 파라미터로 받아서 사용하게 수정해야 한다.&lt;/li&gt;&lt;li&gt;혹은 클래스에 HttpContextBase 형식 필드를 추가해서 그것을 사용하도록 수정해야 한다.&lt;/li&gt;&lt;li&gt;new HttpContextWrapper(HttpContext.Current) 같은 형태로 클래스 메서드나 생성자의 파라미터로 넘겨주도록 수정한다.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;한 가지 특이하게 수정해야 했던 부분은 Reflection을 사용하는 경우였다. 기존의 코드는 HttpModule 내부에서 HttpContext로부터 &lt;a target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/ko-kr/library/system.web.httpworkerrequest%28loband%29.aspx&quot;&gt;HttpWorkerRequest&lt;/a&gt;를 얻을 때 &lt;a target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/ko-kr/library/system.type%28loband%29.aspx&quot;&gt;Type 클래스&lt;/a&gt;를 사용하고 있었다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;border: 1px solid rgb(204, 204, 204); padding: 10px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;code&gt;request = (HttpWorkerRequest)type.GetProperty(&quot;WorkerRequest&quot;, bindingAttr).GetValue(context, null);&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;다행히 이 경우에는 &lt;a target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/ko-kr/library/system.web.httpcontextbase.getservice%28loband%29.aspx&quot;&gt;GetService 메서드&lt;/a&gt;를 사용하여 수정할 수 있었고, 이 방법이 정석이라고 생각된다.&lt;br /&gt;&lt;div style=&quot;border: 1px solid rgb(204, 204, 204); padding: 10px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;code&gt;request = (HttpWorkerRequest)context.GetService(typeof(HttpWorkerRequest));&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;이런 식으로 HttpContextBase 클래스를 사용하도록 수정하면, HttpContextBase를 통해서 얻는 Request나 Response 인스턴스에도 동일한 패턴이 적용되어 있으므로 쉽게 테스트 가능한 코드를 얻을 수 있게 된다.&lt;br /&gt;</content>
 </entry>
 <entry>
  <title type="html">우리는 원노트를 쓴다</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/we-use-onenote"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/106" thr:count="4" thr:updated="2009-12-16T13:19:21+09:00"/>
  <category term="MS OneNote"/>
  <category term="SharePoint"/>
  <category term="springnote"/>
  <category term="&#xC704;&#xD0A4;&#xC704;&#xD0A4;"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/106</id>
  <updated>2009-12-10T02:52:20+09:00</updated>
  <published>2009-12-10T02:49:56+09:00</published>
  <content type="html">&lt;a target=&quot;_blank&quot; href=&quot;http://www.google.co.kr/search?q=onenote+%EC%9C%84%ED%82%A4&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:ko:official&amp;amp;client=firefox-a&quot;&gt;onenote와 위키라는 검색어로 구글 검색&lt;/a&gt;을 하다가 요즘 내가 딱 내가 느끼는 생각과 동일한 내용을 발견했다.&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&amp;nbsp;OneNote는 그 컨텐츠가 적을때는 위키와 비슷하게 사용할 수 있다. 그러나 그 컨텐츠가 많이 늘어나면 노트의 묶음일뿐 쉽게
정보를 관리하기가 힘들게 된다. namespace(category)라든가 각 페이지에 대한 access control,
tracking user activity, history, recent changes, RSS feed등이 다 그런것을 편리하게
해주는 feature들인데 OneNote는 없지않은가. 애초에 태생이 틀린 놈들이다. OneNote는 standalone으로
위키는 collaboration tool로서..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://nberserk.tistory.com/146&quot;&gt;http://nberserk.tistory.com/146&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;우리도 개발부에서 원노트보다 위키위키(모니위키)를 먼저 공식적으로 사용하기 시작했고 현재도 운영은 하고 있다. 하지만 시작하고 오래가지 않아 흐지부지 되었고 지금은 열람용일 뿐이다. 지금은 원노트를 주로 사용하고 있는데, 위키위키와는 달리 별 노력을 하지 않아도 빠르게 전사적으로 퍼져버렸다.&lt;br /&gt;&lt;br /&gt;원노트가 빠르게 퍼질 수 있던 원인은 Copy Paste, Drag &amp;amp; Drop이 아주 강력하고, 따로 사용법을 배우지 않아도 잘 쓸 수 있을만큼 쉽기 때문이라고 생각한다. 이미 워드나 파워포인트 등 MS 오피스에 익숙한 사람들이기도 하고, 실제 노트처럼 상하단에 레이블이 붙어있는 UI가 위키위키에 비해서 접근하기 쉬웠을 것이다. 그리고 이것을 SharePoint를 통해 사내에서 공유하고 있다.&lt;br /&gt;&lt;br /&gt;원노트 내용을 전반적으로 둘러보면 이미지를 첨부했다거나, 복잡한 문서나 웹사이트를 복사해서 가져왔다거나, 문서를 직접 원노트 페이지에 첨부한 사례는 별로 많지가 않다. 대다수의 페이지는 단순한 위키 문법만으로도 표현할 수 있는 정도이다. &lt;br /&gt;&lt;br /&gt;위키위키를 사용하든, SharePoint를 통해서 동기화하는 원노트를 사용하든, 얻고자 하는 가치는 원활한 정보의 공유라고 생각한다. 그러나 원노트는 노트라는 개념을 기반으로 출발했기에, 많은 자료를 다수의 사람들이 공유하며 협업용으로 사용하기에는 한계가 있는 것이 사실이다.&lt;br /&gt;&lt;br /&gt;그럼에도 불구하고 원노트가 제공하는 편집의 편의성은 너무나 강력하다. 대다수의 사용자들이 이미 워드, 파워포인트 등 MS 오피스에 익숙한 사람들이라는 점에서 그런 도구들과 비슷한 수준의 편집 기능을 제공하는 것은 정말 중요하다. &lt;a target=&quot;_blank&quot; href=&quot;http://www.springnote.com/&quot;&gt;스프링노트&lt;/a&gt;가 기존의 위키위키들에 비해서 엄청나게 편리한 UI를 제공함에도 불구하고 원노트에 비한다면 여전히 상당히 불편하다. &lt;br /&gt;&lt;br /&gt;그래서 개인적으로 스프링노트를 잘 확장하는 어플리케이션이 있었으면 좋겠다고 생각했는데, 여전히 그러한 어플리케이션은 존재하지 않고 요즈음은 그나마 스프링노트 자체도 개발이 정체된 것 같다.&lt;br /&gt;&lt;br /&gt;웹 오피스에 원노트 2010도 포함된다는 소식에 약간 기대를 하고는 있지만 현재까지 공개된 동영상에서는 현재 상황을 크게 바꿀만한 놀라운 변화는 없는 것 같다.&lt;br /&gt;&lt;br /&gt;원노트 정도의 UI를 제공하면서 노트라는 개념에서 벗어난 진정한 위키위키는 언제쯤 볼 수 있을까.&lt;br /&gt;&lt;br /&gt;ps. 기업용으로 유료로 제공되는 위키위키는 직접 써본 적이 없어 잘 모르고 있다. 편리한 사용성을 가진 위키위키가 있다면 유료라도 한 번 체험해 보고 싶다.&lt;br /&gt;</content>
 </entry>
 <entry>
  <title type="html">2009년 11월 XPER 모임 후기</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/2009-11-XPER"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/105" thr:count="1" thr:updated="2009-12-03T08:36:56+09:00"/>
  <category term="agile"/>
  <category term="SCRUM"/>
  <category term="xper"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/105</id>
  <updated>2009-12-03T02:53:42+09:00</updated>
  <published>2009-12-03T02:53:42+09:00</published>
  <content type="html">전반적인 정리와 다른 분들의 후기는 박PD님의 블로그에 잘 링크가 되어 있다.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://parkpd.egloos.com/1973182&quot;&gt;2009년 11월 xper 모임 후기(1/2)입니다.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://parkpd.egloos.com/1973446&quot;&gt;2009년 11월 xper 모임 후기(2/2)입니다.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;발표자 두 분 모두에게서 아 저건 진심이구나, 하는 느낌을 받았고, 정말 감동적인 경험이었다. &lt;br /&gt;&lt;br /&gt;SK C&amp;amp;C 민신현 과장님의 사례 발표에서는 오랜 기간 동안 프로젝트를 이끌며 엄청나게 괴로워하고 고민하다가 드디어 답을 찾아 낸 사람의 희열을 느낄 수 있었고, 스페셜 포스 2 고성원 팀장님의 사례 발표에서는 함께 한다는 즐거움, 팀과 팀원들에 대한 따뜻한 애정을 느낄 수 있었다. 단체 사진 속의 팀원들은 생기 넘치는 눈빛들을 하고 있었고, 참 행복해보였다. 부럽다.&lt;br /&gt;&lt;br /&gt;오늘의 아하!를 하나 들자면 직원의 '보상' 중에 한 가지로 언급된 '커뮤니케이션 만족도'였다. 늘상 일어나는 커뮤니케이션에서 스트레스를 줄여 얻을 수 있는 '말이 통한다는 느낌', '존중 받는다는 느낌'이라고 요약할 수 있을 것 같다.&lt;br /&gt;&lt;br /&gt;보통 보상이라 하면 휴가, 인센티브, 연봉 인상 등을 떠올리게 되는데, '커뮤니케이션 만족도'라는 걸 보상이라는 관점에서 볼 수 있다는 것 자체가 참 신선했다. 회사 생활에서 금전적인 보상은 일정 정도만 되면 업무 만족도에 끼치는 영향이 크지 않다는 평소의 생각과도 연결이 되는 듯하다. 사람들이 정말로 원하는 것은 말이 통하는 동료와 상사, 존중 받을 수 있는 환경이라고 생각한다.&lt;br /&gt;&lt;br /&gt;고성원 팀장님은 발표 서두에 자연 재배 사과로 유명한 일본의 할아버지를 취재한 동영상을 보여주셨다. 오로지 자연의 힘만을 믿으며 10년이 넘는 힘든 기다림의 시간을 버틴 이야기는 이미 들어서 알고 있었다.&lt;br /&gt;&lt;br /&gt;하지만 바로 그런 믿음과 인내가 스크럼 마스터의 자세라는 것은 전혀 생각해보지 않은 일이었다. 프로세스 보다는 사람이 중요하다는 애자일 선언문의 첫번째 항목을 잠시 잊었던 것 같다.&lt;br /&gt;&lt;br /&gt;스크럼 프로세스를 통해서 얻어야 하는 것은 방법론을 잘 따라하는 개인들이 아니라 스스로 뿜어내는 에너지로 꾸준히 달릴 수 있는 팀이라고 말할 수 있을 것이다. 그러기 위해서 내가 어떻게 도와주면 되는지 끊임없이 고민하고 대화해야 한다는, 해답이면서도 새로운 숙제로 연결되는 무언가를 재발견했다는 느낌이다.&lt;br /&gt;</content>
 </entry>
 <entry>
  <title type="html">시각화, 문서화</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/visualization-documentation"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/104" thr:count="0"/>
  <category term="&#xBB38;&#xC11C;&#xD654;"/>
  <category term="&#xC2DC;&#xAC01;&#xD654;"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/104</id>
  <updated>2009-11-15T13:50:04+09:00</updated>
  <published>2009-11-15T13:50:04+09:00</published>
  <content type="html">cavin이라는 아이디를 사용하시는 분의 &lt;a target=&quot;_blank&quot; href=&quot;http://cavin.egloos.com/5121138&quot;&gt;블로그 포스트&lt;/a&gt;에서 구글 독스 소개 동영상을 보았다.&lt;br /&gt;&lt;div style=&quot;text-align: center; clear: both;&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube-nocookie.com/v/eRqUE6IHTEA&amp;amp;hl=ko_KR&amp;amp;fs=1&amp;amp;&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://www.youtube-nocookie.com/v/eRqUE6IHTEA&amp;amp;hl=ko_KR&amp;amp;fs=1&amp;amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;위 동영상을 보면 UI 프로토타이핑에서 사용하는 페이퍼 프로토타이핑 기법을 이용했다고 볼 수 있는데, 메일의 단점과 그에 비한 구글 독스의 장점을 간단한 그림과 설명을 통해 잘 표현하고 있다.&lt;br /&gt;&lt;br /&gt;이 동영상을 보니 문득 영회님의 블로그에서 본 &lt;a target=&quot;_blank&quot; href=&quot;http://younghoe.info/984&quot;&gt;산출물을 영리하게 만들지 못할 뿐, 애꿎은 산출물 탓은 하지 말자&lt;/a&gt;라는 포스트가 떠올랐다.&lt;br /&gt;&lt;br /&gt;어떻게 하면 의도를 잘 전달할 수 있는가? 꼭 문서의 형태로 정리해야 하는가? 하는 의문에 대한 답이 될 수 있는 영상과 블로그 포스트라고 생각한다.&lt;br /&gt;&lt;br /&gt;문서화 작업이라는 것이 귀찮고 하기 싫은 일임은 분명하다. 내게 있어서는 스스로 잘 할 수 있다는 충분한 자신감이 없다는 것도 하기 싫은 이유 중에 한 몫을 차지한다.&lt;br /&gt;&lt;br /&gt;일반적으로 뭔가를 잘 하기 위해서는 두 가지가 필요하다고 생각한다.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;좋은 예제를 많이 보아야 한다. 처음부터 무에서 유를 창조하기는 매우 어렵다.&lt;/li&gt;&lt;li&gt;직접 많이 해보아야 한다. 해보지 않으면 내 몸에 남지 않고 다음 단계의 고민으로 나아가기 힘들다.&lt;/li&gt;&lt;/ul&gt;구글 동영상과 블로그 포스트를 통해서 좋은 예제를 접할 수 있었다. 다음 과제는 명확한데..., 일단 블로그에 글을 남기는 것으로 일단락 짓는다.&lt;br /&gt;</content>
 </entry>
 <entry>
  <title type="html">Scott Gu가 전하는 WPF 4 소식</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/Scott-Gu-WPF-4-News"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/103" thr:count="0"/>
  <category term="WPF"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/103</id>
  <updated>2009-10-28T16:54:32+09:00</updated>
  <published>2009-10-28T11:54:35+09:00</published>
  <content type="html">Scott Gu 아저씨가 계속해오고 있는 Visual Studio 2010과 닷넷 4.0 시리즈 중에 &lt;A href=&quot;http://weblogs.asp.net/scottgu/archive/2009/10/26/wpf-4-vs-2010-and-net-4-0-series.aspx&quot; target=_blank&gt;WPF 4&lt;/A&gt;에 대한 포스트가 올라와서 요약해보고자 한다. &#13;
&lt;DIV&gt;&lt;br /&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: large&quot; class=Apple-style-span&gt;Controls&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Controls for Building Rich Clients&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;WPF 4에는 훌륭한 UI의 LOB(line-of-business) 응용프로그램을 쉽고 빠르게 만들 수 있는 새로운 컨트롤들이 많이 추가되었다.&lt;br /&gt;&lt;/LI&gt;&#13;
&lt;LI&gt;DataGrid, DatePicker, Calendar 등이 새로 추가되었다.&lt;/LI&gt;&#13;
&lt;LI&gt;Silverlight와 WPF 사이의 코드 재사용성을 높이기 위해서, 새로 추가된 컨트롤들은 99%의 API 호환성을 보장한다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Bag O'Tricks is back&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;WPF Bag O' Tricks 라고 불리는 여덟 개의 컨트롤 모음을 릴리스할 것이다.&lt;br /&gt;&lt;/LI&gt;&#13;
&lt;LI&gt;AnimatingTilePanel, ColorPicker, InfoTextBox, ListPager, NumericUpDown, Reveal, TransitionsPresenter, TreeMappanel&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Windows 7 &amp;amp; Office Ribbon Control&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;WPF 4가 릴리스 된 후 곧 이어 새로운 WPF Ribbon 컨트롤을 다운로드 할 수 있게 될 것이다.&lt;/LI&gt;&#13;
&lt;LI&gt;Windows 7과 Office 스킨을 입힐 수 있다.&lt;/LI&gt;&#13;
&lt;LI&gt;제한된 기능을 가진 CTP 버전은 &lt;A href=&quot;http://www.codeplex.com/wikipage?ProjectName=wpf&amp;amp;title=WPF%20Ribbon%20Preview&quot; target=_blank&gt;여기서&lt;/A&gt; 다운로드 가능하다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;&lt;SPAN style=&quot;FONT-SIZE: large&quot; class=Apple-style-span&gt;&lt;U&gt;GRAPHICS&lt;/U&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Cached Composition&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;임의의 컨트롤들을 비디오 메모리에 비트맵으로 캐시할 수 있는 기능으로 극적인 성능 개선이 가능할 것이다.&lt;/LI&gt;&#13;
&lt;LI&gt;캐시된 비트맵은 GPU가 바로 렌더링하게 된다.&lt;/LI&gt;&#13;
&lt;LI&gt;변경된 부분만 효율적으로 그릴 수 있다. 따라서 깜빡이는 커서가 있다 하더라도 커서 부분만 새롭게 그리고 그외의 부분은 캐시된 비트맵을 사용할 것이다.&lt;/LI&gt;&#13;
&lt;LI&gt;이런 지능적인 캐시와 같이 사용할 수 있는 새로운 Brush가 제공된다. &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Pixel Shader 3 Support&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;WPF 3.5 SP1에서 지원하는 PS 2.0에 더해서 Pixel Shader 3.0을 사용하는 이펙트를 사용할 수 있다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;LayoutRounding&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;Silverlight 2에서 도입된 &lt;A href=&quot;http://blogs.msdn.com/text/archive/2009/08/27/layout-rounding.aspx&quot; target=_blank&gt;UseLayoutRounding&lt;/A&gt; 프로퍼티가 추가된다.&lt;/LI&gt;&#13;
&lt;LI&gt;WPF의 레이아웃 엔진은 sub-pixel 경계에 있는 엘리먼트들이 물리적으로 여러 픽셀에 걸쳐 안티-알리아스 되도록 한다.&lt;/LI&gt;&#13;
&lt;LI&gt;UseLayoutRounding 프로퍼티는 레이아웃 엔진이 엘리먼트들을 픽셀 경계에 맞추도록 강제하여 더 깨끗하고 깔끔한 UI를 제공한다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Animation Easing Function&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;기본 제공되는 easing function으로는 circular, exponential, elastic, bouncy animation progress가 있다.&lt;/LI&gt;&#13;
&lt;LI&gt;custom easing function을 작성하 수 있다.&lt;/LI&gt;&#13;
&lt;LI&gt;쓰기 쉬운 easing function 덕분에 디자이너들은 쉽게 fluid, organic animation을 만들 수 있게 된다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;CleartypeHint&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;이전에는 Layerd Window의 텍스트, VisualBrush 내부의 텍스트, DrawingBrush, BitmapCacheBrush 등에서는 grayscale 텍스트 렌더링이 사용되었다.&lt;br /&gt;&lt;/LI&gt;&#13;
&lt;LI&gt;새로운 CleartypeHint attached property는 이전에는 Cleartype이 비활성화되던 상황에서도 Cleartype을 사용한 텍스트 렌더링을 할 수 있게 해준다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: large&quot; class=Apple-style-span&gt;TEXT STACK&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;New Text Rendering Stack&lt;/B&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;&lt;A href=&quot;http://blogs.msdn.com/text/archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx&quot; target=_blank&gt;WPF text rendering stack&lt;/A&gt;이 완전히 교체되었다.&lt;/LI&gt;&#13;
&lt;LI&gt;그로 인해 텍스트 렌더링 결과의 선명도, 설정가능성, 다국어 지원이 엄청나게 향상되었다.&lt;/LI&gt;&#13;
&lt;LI&gt;새로운 텍스트 스택은 display-optimized 캐릭터 레이아웃을 제공하여 Win32/GDI 텍스트의 선명함에 비길만한 품질을 보인다.&lt;/LI&gt;&#13;
&lt;LI&gt;aliased, grayscale, ClearType 렌더링 모드를 명시적으로 선택할 수 있게 된다.&lt;/LI&gt;&#13;
&lt;LI&gt;embedded bitmap 폰트를 지원한다. 수많은 동아시아 폰트들은 이제 Win32 사용자들에게 익숙한 선명한 품질로 렌더링 가능하다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;BindableRun&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;Run.Text는 dependency property가 아닌 일반 CLR 프로퍼티였다.&lt;/LI&gt;&#13;
&lt;LI&gt;따라서 dependency property의 훌륭한 기능들, 특히 바운딩 기능을 사용할 수 없었다.&lt;/LI&gt;&#13;
&lt;LI&gt;이제 Run.Text가 dependency property로 변경되었다. 자세한 내용은 &lt;A href=&quot;http://blogs.msdn.com/text/archive/2009/09/01/bindable-run.aspx&quot; target=_blank&gt;이곳에서&lt;/A&gt; 볼 수 있다. &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Custom Dictionaries&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;기존의 맞춤법 검사기에서는 OS 기본 제공되는 사전 밖에 쓸 수 없어서 특수한 용어를 많이 쓰는 사용자들은 수많은 맞춤법 오류로 뒤덮힌 화면을 보아야 했다.&lt;/LI&gt;&#13;
&lt;LI&gt;이제 사전에 새 단어를 추가할 수 있는 API가 도입되었다. 자세한 내용은 &lt;A href=&quot;http://blogs.msdn.com/text/archive/2009/10/02/custom-dictionaries.aspx&quot; target=_blank&gt;이곳에서&lt;/A&gt; 볼 수 있다. &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Selection and Caret Brush&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;이제 &lt;A href=&quot;http://blogs.msdn.com/text/archive/2009/08/28/selection-brush.aspx&quot; target=_blank&gt;SelectionBrush&lt;/A&gt;와 &lt;A href=&quot;http://blogs.msdn.com/text/archive/2009/09/01/caret-brush.aspx&quot; target=_blank&gt;CaretBrush&lt;/A&gt; 프로퍼티를 사용해서 아주 간단히 멋진 룩앤필을 제공할 수 있다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: large&quot; class=Apple-style-span&gt;WINDOWS 7 LIGHT UP&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Windows 7 Multi-touch Support&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;다음과 같은 멀티 터치 지원 기능이 추가되었다.&lt;/LI&gt;&#13;
&lt;LI&gt;UIElement에 Multi-touch Manipulation, Inertia (Pan, Zoom, Rotate) &amp;nbsp;이벤트가 추가됨.&lt;/LI&gt;&#13;
&lt;LI&gt;UIElement, UIElement3D, ContentElement에 Raw 멀티 터치 이벤트들(Up, Move, Down)이 추가됨.&lt;/LI&gt;&#13;
&lt;LI&gt;다수의 활성화된 컨트롤을 지원하는 다중 캡처.&lt;/LI&gt;&#13;
&lt;LI&gt;멀티 터치 panning을 지원하기 위한 ScrollViewer 개선.&lt;/LI&gt;&#13;
&lt;LI&gt;Touch 디바이스 확장성.&lt;/LI&gt;&#13;
&lt;LI&gt;Surface SDK 호환성.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Windows 7 Shell Integration&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;Windows 7의 Jump List 기능 포함.&lt;/LI&gt;&#13;
&lt;LI&gt;Windows 7의 작업표시줄 기능 포함.&lt;/LI&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;프로그레스 바, 오버레이 아이콘, commanding을 지원하는 썸네일 버튼, Description Text DWM Thumbnail Clipping&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;LI&gt;TaskbarItemInfo 클래스가 추가되어 Windows 7 작업표시줄의 모든 새로운 기능을 제공한다.&lt;br /&gt;&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style=&quot;FONT-SIZE: large&quot; class=Apple-style-span&gt;WPF FUNDAMENTALS&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;New XAML/BAML Parser Engine&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;새로운 System.Xaml.dll 상에 XamlReader.Load(), BAML 로딩, 컨트롤과 데이터 템플릿 기능 등을 새로 구현하였다. 많은 버그와 기능 개선이 있었다.&lt;/LI&gt;&#13;
&lt;LI&gt;이제 XamlReader.Load()를 쓰게 되면 제너릭 타입 지원과 같은 XAML2009의 신 기능을 사용할 수 있게 된다.&lt;br /&gt;&lt;/LI&gt;&#13;
&lt;LI&gt;System.Xaml.dll에서 제공되는 새로운 저수준 API를 사용하면 XAML을 분석하거나 조작하는 도구를 더 작성하기 쉽게 될 것이다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Data Binding Support for DLR&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;.NET 4의 DynamicObject 라는 새로운 추상 클래스를 통해 개발자들은 IDynamicMetaObjectProvider 인터페이스를 쉽게 구현할 수 있게 된다.&lt;/LI&gt;&#13;
&lt;LI&gt;C#의 'dynamic' 키워드를 사용한 새로운 DLR 지원을 통해, 우리는 DynamicObject와 IDynamicMetaObjectProvider를 사용하는 것이 런타임에 정의되는 프로퍼티와 멤버를 노출시키는 표준적인 방법이 되기를 기대한다.&lt;/LI&gt;&#13;
&lt;LI&gt;IDynamicMetaObjectProvider를 통한 WPF 4 데이터 바인딩 지원 덕분에, 동적 프로퍼티를 바인딩할 때에도 자연스러운 프로퍼티 접군 문법을 사용할 수 있게 된다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Visual State Manager (VSM)&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;WPF-Silverlight에 공통적으로 적용되는 새로운 기능으로 VisualStateManager가 있다.&lt;/LI&gt;&#13;
&lt;LI&gt;VSM은 매우 유연해서 각각의 상태 사이의 전환 효과를 자동으로 생성한다. 따라서 컨트롤 제작자는 코드 작성 시간을 줄이고 컨트롤 템플릿에 정의될 모양에 더 집중할 수 있게 된다.&lt;/LI&gt;&#13;
&lt;LI&gt;이 기능은 Expression Blend를 통해서도 완벽히 지원된다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;HTML-XBAP Script Interop&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;XBAP가 HTML frame이나 iframe에 로드되었을 때, XBAP와 호스트 HTML 페이지의 스크립트 사이의 직접적인 접근이 가능하다.&lt;/LI&gt;&#13;
&lt;LI&gt;XBAP에서 HTML DOM에 접근 가능하다. HTML 페이지에 포함된 ActiveX 컨트롤, 스크립트 함수, 전역 변수에 접근할 수 있게 된다.&lt;/LI&gt;&#13;
&lt;LI&gt;이 기능은 partial-trust XBAP에서 사용 가능하고, 공식 지원되는 IE와 Firefox 버전에서 모두 사용 가능하다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;UIAutomation Virtualization&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;지난 릴리스에서 WPF에 가상화된 컨트롤 개념이 도입되었으나, automation 클라이언트들이 가상화된 컨트롤과 상호 작용하는 데에 표준화된 방법이 제공되지 않았다.&lt;/LI&gt;&#13;
&lt;LI&gt;그러한 시나리오를 지원하기 위해 ItemsContainerPattern과 VirtualizedItemPattern 이라는 두 가지 컨트롤 패턴이 추가되었다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;SynchronizedInput Pattern&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;이 패턴은 WPF 4에 추가된 또다른 새 UIAutomation 컨트롤 패턴이다.&lt;/LI&gt;&#13;
&lt;LI&gt;이 패턴은 입력 이벤트가 WPF 프레임워크에 의해 제대로 라우팅 되었는지 automation 클라이언트가 추적할 수 있게 해준다.&lt;/LI&gt;&#13;
&lt;LI&gt;입력이 어떻게 처리되었는지 알려주는 InputReachedTargetEvent, InputReachedOtherElementEvent, InputDiscardedEvent 라는 세 개의 이벤트가 제공된다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;&lt;SPAN style=&quot;TEXT-DECORATION: underline&quot; class=Apple-style-span&gt;&lt;SPAN style=&quot;FONT-SIZE: large&quot; class=Apple-style-span&gt;CLIENT DEPLOYMENT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&lt;B&gt;.NET Framework 4 Client Profile&lt;/B&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;배포 시 사용자 경험을 더욱 개선하기 위해서 &lt;A href=&quot;http://blogs.msdn.com/jgoldb/archive/2009/10/19/what-s-new-in-net-framework-4-client-profile-beta-2.aspx&quot; target=_blank&gt;.NET Framework 4 Client Profile&lt;/A&gt;이 제공된다. 현재 클라이언트 프로필의 재배포 패키지 용량은 30MB이다.&lt;/LI&gt;&#13;
&lt;LI&gt;WinForm과 WPF 등 클라이언트 응용프로그램에 공통적인 기능을 모두 포함하고 있다.&lt;/LI&gt;&#13;
&lt;LI&gt;VS 2010 Beta 2의 클라이언트용 프로젝트 템플릿들의 기본 빌드 타겟은 클라이언트 프로필로 지정되어 있다.&lt;/LI&gt;&#13;
&lt;LI&gt;.NET 3.5 클라이언트 프로필과 달리 Vista, XP, Server 2003, Server 2007, Win 7을 지원하고, 이 OS들의 x86, x64 플랫폼을 모두 지원한다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;B&gt;Enhancements in NET4 Client Profile vs. NET 3.5 SP1 Client Profile&lt;/B&gt;&lt;/DIV&gt;&#13;
&#13;
&lt;DIV&gt;&#13;
&lt;TABLE style=&quot;BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: 520px; HEIGHT: 125px; BORDER-TOP: medium none; BORDER-RIGHT: medium none&quot; cellSpacing=1 cellPadding=0 bgColor=#aaaaaa&gt;&#13;
&lt;TBODY&gt;&#13;
&lt;TR bgColor=#ffffff&gt;&#13;
&lt;TD width=135&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/TD&gt;&#13;
&lt;TD width=135&gt;&lt;STRONG&gt;&amp;nbsp;.NET 4 Client Profile(NEW)&lt;/STRONG&gt;&lt;/TD&gt;&#13;
&lt;TD width=135&gt;&lt;STRONG&gt;.NET 3.5 SP1 Client Profile &lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&#13;
&lt;TR bgColor=#ffffff&gt;&#13;
&lt;TD width=135&gt;&lt;STRONG&gt;&amp;nbsp;지원 OS&lt;/STRONG&gt;&lt;/TD&gt;&#13;
&lt;TD width=135&gt;.NET Framework이 지원하는 모든 플랫폼과 OS(IA64, Server Core role in Server 2008) &lt;/TD&gt;&#13;
&lt;TD width=135&gt;&amp;nbsp;.NET Framework이 설치되지 않은 Win XP 32-bit&lt;br /&gt;(이외의 환경에서는 자동으로 Full 버전을 설치함.)&lt;/TD&gt;&lt;/TR&gt;&#13;
&lt;TR bgColor=#ffffff&gt;&#13;
&lt;TD width=135&gt;&lt;STRONG&gt;&amp;nbsp;재배포 패키지&lt;/STRONG&gt;&lt;/TD&gt;&#13;
&lt;TD width=135&gt;웹 다운로드 방식 외에 재배포 패키지도 제공&lt;/TD&gt;&#13;
&lt;TD width=135&gt;웹 다운로드 방식만 제공 &lt;/TD&gt;&lt;/TR&gt;&#13;
&lt;TR bgColor=#ffffff&gt;&#13;
&lt;TD width=135&gt;&lt;STRONG&gt;&amp;nbsp;프로그램 추가 제거 항목 &lt;/STRONG&gt;&lt;/TD&gt;&#13;
&lt;TD width=135&gt;Full 패키지는 Client Profile과 &quot;Extended&quot; 파트로 구성된다. 따라서 프로그램 추가 제거에 두 개의 항목이 보인다.&lt;br /&gt;&lt;br /&gt;&quot;Extended&quot; 항목을 언인스톨하면 클라이언트 프로필과 동일해진다.&lt;/TD&gt;&#13;
&lt;TD width=135&gt;하나의 항목만 표시됨 &lt;/TD&gt;&lt;/TR&gt;&#13;
&lt;TR bgColor=#ffffff&gt;&#13;
&lt;TD width=135&gt;&lt;STRONG&gt;&amp;nbsp;Visual Studio&lt;/STRONG&gt;&lt;/TD&gt;&#13;
&lt;TD width=135&gt;VS 2010에서는 클라이언트 프로필 지원이 개선되었음&lt;br /&gt;&lt;br /&gt;클라이언트 프로젝트 템플릿은 기본적으로 클라이언트 프로필을 빌드 타겟으로 사용함&lt;/TD&gt;&#13;
&lt;TD width=135&gt;VS 2008 SP1의 프로젝트 속성에서는 클라이언트 프로필을 지원하지 않음&lt;/TD&gt;&lt;/TR&gt;&#13;
&lt;TR bgColor=#ffffff&gt;&#13;
&lt;TD width=135&gt;&lt;STRONG&gt;&amp;nbsp;포함 기능&lt;/STRONG&gt;&lt;/TD&gt;&#13;
&lt;TD width=135&gt;.NET 3.5 SP1 에서 지원하던 기능에 추가적으로 &lt;A href=&quot;http://www.codeplex.com/MEF&quot; target=_blank&gt;Managed Extensibility Framework&lt;/A&gt;(MEF)나 &lt;A href=&quot;http://www.hanselman.com/blog/C4AndTheDynamicKeywordWhirlwindTourAroundNET4AndVisualStudio2010Beta1.aspx&quot; target=_blank&gt;C# 4 dynamic 키워드&lt;/A&gt; 같은 새 기능이 추가되었음&lt;/TD&gt;&#13;
&lt;TD width=135&gt;.NET 3.5 SP1 Full의 일부분&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;.NET 4.0은 이전 닷넷 프레임워크 버전과 병행적으로(side-by-side) 설치된다.&lt;br /&gt;&lt;/LI&gt;&#13;
&lt;LI&gt;즉, .NET 4.0 설치 시에, 이미 설치되어 있는 이전 버전의 닷넷 프레임워크가 업그레이드 될 필요가 없다.&lt;/LI&gt;&#13;
&lt;LI&gt;따라서 .NET 4.0 Client Profile은 이전의 .NET 3.5 SP1 Client Profile 보다 훨씬 빠르게 설치된다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;STRONG&gt;Full Trust XBAP Deployment&lt;/STRONG&gt;&lt;/DIV&gt;&#13;
&lt;DIV&gt;&#13;
&lt;UL&gt;&#13;
&lt;LI&gt;WPF 4부터는 인트라넷이나 신뢰할 수 있는 영역의 XBAP도 ClickOnce 권한 상승 프롬프트를 표시할 수 있다.&lt;/LI&gt;&#13;
&lt;LI&gt;minimum code access 수준보다 높은 권한을 요구하는 XBAP가 실행되면 권한 상승 프롬프트가 표시되고, 사용자 'Run'을 선택하면 요구된 권한으로 XBAP가 실행된다.&lt;/LI&gt;&lt;/UL&gt;&#13;
&lt;DIV&gt;&lt;STRONG&gt;&lt;br /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</content>
 </entry>
 <entry>
  <title type="html">Silverlight Pixel Shader 개발 팁</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/Silverlight-Pixel-Shader-Tip"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/102" thr:count="1" thr:updated="2009-10-28T01:25:30+09:00"/>
  <category term="Pixel Shader"/>
  <category term="Silverlight"/>
  <category term="WPF"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/102</id>
  <updated>2009-10-25T23:49:31+09:00</updated>
  <published>2009-10-25T23:43:33+09:00</published>
  <content type="html">&lt;div&gt;요즘 HLSL을 가지고 Pixel Shader를 만들고 있다. 따라서 여기서 얘기하는 경험은 HLSL로 된 *.fx 파일을 컴파일 할 때 적용되는 얘기이다. 셰이더 어셈블리 명령을 직접 써서 만드는 일은 전혀 해보지 않아서 얼마나 관련성이 있을지 모르겠다.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Silverlight 3와 WPF(.NET 3.5 SP1)에서는 Shader Model 2의 Pixel Shader(ps_2_0)를 지원한다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pixel Shader 2.0에서는 64개의 산술 instruction만을 사용할 수 있다. 문제는 64개를 넘어서 컴파일이 안 될 때만 인스트럭션 개수를 알려준다는 것. 기본적인 사용법만 배운 상태에서 한참 만들다가 &quot;님, 인스트럭션 개수 초과했어염. 65개임.&quot;하는 에러 메시지를 받았을 때 어찌나 황당하던지.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;인스트럭션 개수를 알 수 있는 방법을 찾아 헤매다가 발견한 것이 셰이더 어셈블리 파일을 만들어 내는 옵션이다. &lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: rgb(255, 255, 255); &quot;&gt;*.fx 파일을 fxc.exe로 컴파일할 때 /Fc 옵션을 사용하면 어셈블리 파일을 출력해준다. 여기에는 컴파일 결과물의 인스트럭션 개수가 표시되기 때문에 작업할 때 아주 유용하다. 만세! 인스트럭션 개수를 알 수 있는 다른 방법은 아직 찾지 못했다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;인스트럭션 개수를 알 수 있는 방법이 생기니 인스트럭션 개수 줄이는 삽질도 이제 좀 할 맛이 난다. 경험상 현재까지 작업중에 인스트럭션 줄이는데 제일 도움이 되는 것은 똑같은 산술 연산을 벡터 연산 하나로 합치는 거였다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;가령 이런 코드보다&lt;/div&gt;&lt;div style=&quot;padding:10px;background-color:#ffffff;border:1px solid #cccccc;&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'courier new', courier, monospace&quot;&gt;float c1 = Const1 - color.r;&lt;br /&gt;float c2 = Const2 - color.g;&lt;br /&gt;float c3 = Const3 - color.b;&lt;/font&gt;&lt;/div&gt;이런 코드의 인스트럭션 개수가 적었다.&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: rgb(255, 255, 255);&quot;&gt;&lt;div style=&quot;padding:10px;background-color:#ffffff;border:1px solid #cccccc;&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'courier new', courier, monospace&quot;&gt;float4 c4 = {Const1, Const2, Const3, 0.0f};&lt;br /&gt;float4 c = c4 - color;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;/div&gt;</content>
 </entry>
 <entry>
  <title type="html">hostname - 컴퓨터 이름을 얻는 커맨드라인 명령어</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/hostname-cmd-computer-name"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/101" thr:count="2" thr:updated="2009-10-19T20:46:23+09:00"/>
  <category term="Windows"/>
  <category term="&#xC2DC;&#xC2A4;&#xD15C;&#xAD00;&#xB9AC;"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/101</id>
  <updated>2009-10-16T23:13:44+09:00</updated>
  <published>2009-10-16T23:13:44+09:00</published>
  <content type="html">컴퓨터 이름을 확인할 때 보통은 Windows key + Pause key 를 눌러서 컴퓨터 등록 정보를 띄워서 확인했다. 그런데 이번에 Windows 7 관련 동영상을 보다가 hostname이라는 커맨드 라인 명령어가 있다는 걸 알게되었다.&lt;br /&gt;&lt;br /&gt;동영상 주제와 상관없는 사소한 거에 더 기뻐하는 모습이 참 웃기다는 생각도 드는구만 ㅎㅎ&lt;br /&gt;</content>
 </entry>
 <entry>
  <title type="html">VBScript Empty, Null, Nothing</title>
  <link rel="alternate" type="text/html" href="http://wafe.kr/entry/VBScript-Empty-Null-Nothing"/>
  <link rel="replies" type="application/atom+xml" href="http://wafe.kr/atom/discuss/98" thr:count="0"/>
  <category term="asp"/>
  <category term="vbscript"/>
  <author>
   <name>wafe</name>
  </author>
  <id>http://wafe.kr/98</id>
  <updated>2009-09-08T02:21:11+09:00</updated>
  <published>2009-09-08T02:14:08+09:00</published>
  <content type="html">지난주에는 ASP 프로젝트를 유지보수 할 일이 있어서 VBScript를 쓰게 됐는데, 하다보니 제일 헷갈리는게 Empty, Null, Nothing 구분이었다. C# ASP.NET도 그렇고 보통 C/C++도 그렇고 널 체크하나면 끝나는데 이놈의 언어는 깡통 값을 나타내는데 키워드를 세 가지나 쓴다. 변변한 자료 구조 하나 기본으로 제공하지도 않는 주제에(Scripting.Dictionary 정도? 나름 유용하게 잘 썼다) 엉뚱한 곳에 지나치게 신경썼다는 생각까지 들기도 한다.&lt;br /&gt;&lt;br /&gt;아무튼 &lt;span style=&quot;font-weight: bold;&quot;&gt;Empty&lt;/span&gt;는 초기화되지 않은 값이다. 그래서 &lt;br /&gt;&lt;div style=&quot;border: 1px solid rgb(204, 204, 204); padding: 10px; background-color: rgb(255, 255, 255); font-family: courier new,courier,monospace;&quot;&gt;Dim value : value = Request.Form(&quot;value&quot;)&lt;/div&gt;했을 때 아예 value 라는 폼 필드가 존재하지 않으면  &lt;span style=&quot;font-family: courier new,courier,monospace;&quot;&gt;IsEmpty(value) = True&lt;/span&gt; 이다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Null&lt;/span&gt;은 값이긴 한데 '유효하지 않은 값'이라는 의미를 표현하는 값이다. DB에서 NULL 값을 받아왔을 때 외에는 볼 일이 없을 듯. &lt;span style=&quot;font-family: courier new,courier,monospace;&quot;&gt;IsNull(value)&lt;/span&gt; 함수로 검사할 수 있다.&lt;br /&gt;&lt;br /&gt;결국 C# ASP.NET 에서 쿼리 스트링이나 폼 필드가 null 인지 검사하는 것과 동일한 작업이 VBScript에서는 Empty 검사가 되는 셈이다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Nothing&lt;/span&gt;은 개체(Object)를 사용할 때에 관련 있는 키워드라서 Empty나 Null과는 큰 관계가 없다. 개체를 소멸시키고 싶을 때 Nothing을 살포시 대입해주면 된다. 검사 함수는 따로 없고 If 문 안에서 &lt;span style=&quot;font-family: courier new,courier,monospace;&quot;&gt;Is Nothing&lt;/span&gt; 형태로 검사할 수 있다.&lt;br /&gt;&lt;br /&gt;ps. 개인적으로 VBScript와는 친하지 않아서 JavaScript나 Python으로 ASP를 해보면 재미있지 않을까 하는 몽상을 많이 했는데, 다행히 몽상으로만 그칠 수 있었다.&lt;br /&gt;</content>
 </entry>
</feed>
