<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
    <channel>
        <title>잊지 않기 위해 남기는 일상의 기록, 내가 살아있다는 흔적</title>
        <link>http://www.myifu.com/</link>
        <description></description>
        <language>ko</language>
        <pubDate>Fri, 12 Mar 2010 11:53:11 +0900</pubDate>
        <lastBuildDate>Fri, 12 Mar 2010 11:53:11 +0900</lastBuildDate>
        <generator>XpressEngine 1.4.0.7</generator>
                                <item>
            <title>홍율희 돌잔치 :)</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4159</link>
            <guid isPermaLink="true">http://www.myifu.com/4159</guid>
                        <comments>http://www.myifu.com/4159#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/350/159/004/img01.jpg&quot; alt=&quot;img01.jpg&quot; title=&quot;img01.jpg&quot; width=&quot;400&quot; height=&quot;1932&quot; style=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/350/159/004/img02.jpg&quot; alt=&quot;img02.jpg&quot; title=&quot;img02.jpg&quot; width=&quot;400&quot; height=&quot;2266&quot; style=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/350/159/004/img03.jpg&quot; alt=&quot;img03.jpg&quot; title=&quot;img03.jpg&quot; width=&quot;400&quot; height=&quot;2001&quot; style=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/350/159/004/img04.jpg&quot; alt=&quot;img04.jpg&quot; title=&quot;img04.jpg&quot; width=&quot;400&quot; height=&quot;2667&quot; style=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;율희야 :)&lt;br  /&gt;건강하게 잘 자라렴~!&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Tue, 02 Mar 2010 22:47:19 +0900</pubDate>
                                    <slash:comments>1</slash:comments>
                    </item>
                <item>
            <title>또 밤샘.</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4156</link>
            <guid isPermaLink="true">http://www.myifu.com/4156</guid>
                        <comments>http://www.myifu.com/4156#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;오랫만에 양갱을 만들었다. &lt;/p&gt;
&lt;p&gt;최근에 앙금과 함께 &apos;틀&apos;을 몇가지 새로 구입해서,&lt;/p&gt;
&lt;p&gt;잠도 안오고 해서 써봤는데 대만족 :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사진에는 두 가지 뿐이지만, 다섯가지 모양의 양갱을 만들었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좀더 예쁘게 색깔도 내어 보고 싶지만,&lt;/p&gt;
&lt;p&gt;커피 양갱이 잴 맛있어서 자꾸 그거만 만들게 되네 ㅋㅋ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/49/156/004/%EC%96%91%EA%B0%B1.jpg&quot; alt=&quot;양갱.jpg&quot; title=&quot;양갱.jpg&quot; width=&quot;360&quot; height=&quot;480&quot; style=&quot;&quot; /&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Thu, 25 Feb 2010 04:27:21 +0900</pubDate>
                                </item>
                <item>
            <title>모든 일은 마음먹기 달린 것.</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4138</link>
            <guid isPermaLink="true">http://www.myifu.com/4138</guid>
                        <comments>http://www.myifu.com/4138#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;하지만, 마음 먹기 조차 쉽지 않은 요즘.&lt;/div&gt;</description>
                        <pubDate>Wed, 17 Feb 2010 01:38:51 +0900</pubDate>
                                </item>
                <item>
            <title>동생이랑 카페베네</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4123</link>
            <guid isPermaLink="true">http://www.myifu.com/4123</guid>
                        <comments>http://www.myifu.com/4123#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;1월 말쯤에, &lt;/p&gt;
&lt;p&gt;아빠가 아바타 3D를 보고 싶다고 해서&amp;nbsp;예매를 하고&amp;nbsp;수원에 갔었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/49/123/004/_02.jpg&quot; alt=&quot;_02.jpg&quot; title=&quot;_02.jpg&quot; width=&quot;450&quot; height=&quot;600&quot; style=&quot;WIDTH: 265px; HEIGHT: 336px&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 그날, 아빠가 스마트폰을 질렀다. ㅋㅋ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;나는 아빠의 새 휴대폰을 들고 쉴딩하러 서울로 올라갔었고, &lt;/p&gt;
&lt;p&gt;동생은 서울에서 아는 분 결혼식이 있어서 제부와 만나서 가야했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;동생이 제부를 기다리는 동안, 같이 카페베네에 갔었다.&lt;/p&gt;
&lt;p&gt;맛있는 와플하고 음료를 맛보여줄겸 해서 ㅋ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/49/123/004/02.jpg&quot; alt=&quot;02.jpg&quot; title=&quot;02.jpg&quot; width=&quot;450&quot; height=&quot;600&quot; style=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;나린이 :) &lt;/p&gt;
&lt;p&gt;제법 언니스럽다. ㅋㅋ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/49/123/004/01.jpg&quot; alt=&quot;01.jpg&quot; title=&quot;01.jpg&quot; width=&quot;450&quot; height=&quot;600&quot; style=&quot;&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;맛있게 먹고 난 후에 나린이 ㅋㅋ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/49/123/004/03.jpg&quot; alt=&quot;03.jpg&quot; title=&quot;03.jpg&quot; width=&quot;450&quot; height=&quot;600&quot; style=&quot;&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;동생이랑&amp;nbsp;무심한 표정의&amp;nbsp;조카 &apos;ㅂ&apos;&lt;/p&gt;
&lt;p&gt;이녀석이 둘째 조카인&amp;nbsp;가온이다. :)&lt;/p&gt;
&lt;p&gt;태어난지 얼마 안된것 같은데 벌써 저렇게 컸네.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 요건 동생 휴대폰에 찍힌 나린이 사진 ;ㅂ;&lt;/p&gt;
&lt;p&gt;대박 귀여워. ㅋㅋ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.myifu.com/files/attach/images/49/123/004/narin.jpg&quot; alt=&quot;narin.jpg&quot; title=&quot;narin.jpg&quot; width=&quot;298&quot; height=&quot;376&quot; style=&quot;&quot; /&gt; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Mon, 15 Feb 2010 23:31:43 +0900</pubDate>
                                </item>
                <item>
            <title>네트워크 - 로컬 커넥션</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4086</link>
            <guid isPermaLink="true">http://www.myifu.com/4086</guid>
                        <comments>http://www.myifu.com/4086#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;strong&gt;Local Connection &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1) 서로 다른 브라우저에서 실행되고 있는 실버라이트 애플리케이션의 통신에 사용.&lt;/p&gt;
&lt;p&gt;2) 하나의 브라우저에서 실행되고 있는 실버라이트 애플리케이션의 통신에 사용.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;LocalMessageSender와 LocalMessageReceiver의 두 가지 클래스를 제공합니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LocalMessageSender&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;보낼때 사용. &lt;/p&gt;
&lt;p&gt;ReceiverDomain : 수신할 Receiver가 속한 도메인&lt;/p&gt;
&lt;p&gt;ReceiverName : 수신할 Receiver의 고유 값&lt;/p&gt;
&lt;p&gt;SendAsync() : 메시지를 전달하고자 할 경우 사용.&lt;/p&gt;
&lt;p&gt;SendCompleted : 메시지가 전달된 경우 발생하는 이벤트&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LocalMessageReceiver&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;받을때 사용.&lt;/p&gt;
&lt;p&gt;NameScope : 같은 도메인상의 실버라이트에서 받을 것인지 다른 도메인상의 실버라이트에서 받을 것인지를 의미.&lt;/p&gt;
&lt;p&gt;ReceiverName : LocalMessageReceiver의 이름&lt;/p&gt;
&lt;p&gt;Listen() : 메시지 수신을 위해 사용하는 메서드.&lt;/p&gt;
&lt;p&gt;MessageReceived : 메시지를 수신하면 발생하는 이벤트&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;COLOR: #000000; FONT-SIZE: 14px&quot;&gt;전송 (LocalMessageSender)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MainPage.xaml&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Grid x:Name=&quot;LayoutRoot&quot; Width=&quot;200&quot; HorizontalAlignment=&quot;Center&quot; VerticalAlignment=&quot;Center&quot;&amp;gt;
 &amp;lt;Grid.RowDefinitions&amp;gt;
  &amp;lt;RowDefinition Height=&quot;30&quot; /&amp;gt;
  &amp;lt;RowDefinition Height=&quot;Auto&quot; /&amp;gt;
 &amp;lt;/Grid.RowDefinitions&amp;gt;
 &amp;lt;TextBlock Grid.Row=&quot;0&quot; Text=&quot;전달한 문장을 입력해 주세요&quot; /&amp;gt;
 &amp;lt;TextBox x:Name=&quot;MyTextBox&quot; Grid.Row=&quot;1&quot; /&amp;gt;
&amp;lt;/Grid&amp;gt; &lt;/pre&gt;&lt;br  /&gt;
&lt;p&gt;MainPage.xaml.cs&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Messaging;
namespace LocalMessageSenderTest
{
 public partial class MainPage : UserControl
 {
  private LocalMessageSender localMessageSender;
  public MainPage()
  {
   InitializeComponent();
   
   localMessageSender= new LocalMessageSender(&quot;MyLocalReceiver&quot;);
   MyTextBox.TextChanged += new TextChangedEventHandler(MyTextBox_TextChanged);
  }
  void MyTextBox_TextChanged(object sender, TextChangedEvnetArgs e)
  {
   localMessageSender.SendAsync(MyTextBox.Text);
  }
 }
} &lt;/pre&gt;&lt;br  /&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;COLOR: #000000; FONT-SIZE: 14px&quot;&gt;수신 (LocalMessageReceiver)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br  /&gt;해당 솔루션에서 새 프로젝트를 추가합니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MainPage.xaml&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Grid x:Name=&quot;LayoutRoot&quot; Width=&quot;200&quot; HorizontalAlignment=&quot;Center&quot; VerticalAlignment=&quot;Center&quot;&amp;gt;
 &amp;lt;Grid.RowDefinitions&amp;gt;
  &amp;lt;RowDefinition /&amp;gt;
  &amp;lt;RowDefinition /&amp;gt;
 &amp;lt;/Grid.RowDefinitions&amp;gt;
 &amp;lt;TextBlock Grid.Row=&quot;0&quot; Text=&quot;전달받은 문장은 다음과 같습니다&quot; /&amp;gt;
 &amp;lt;TextBlock x:Name=&quot;MyTextblock&quot; Grid.Row=&quot;1&quot; Foreground=&quot;Blue&quot; FontSize=&quot;15&quot; /&amp;gt;
&amp;lt;/Grid&amp;gt; &lt;/pre&gt;&lt;br  /&gt;
&lt;p&gt;MainPage.xaml.cs&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Messaging;
namespace LocalMessageReceiverTest
{
 public partial class MainPage : UserControl
 {
  private LocalMessageReceiver localMessageReceiver;
  public MainPage()
  {
   InitializeComponent();
   localMessageReceiver = new LocalMessageReceiver(&quot;MyLocalReceiver&quot;);
   localMessageReceiver.MessageReceived += new EventHandler&amp;lt;MessageReceivedEventArgs&amp;gt;(localMessageReceiver_MessageReceived);
   localMessageReceiver.Listen();
  }
  void localMessageReceiver_MessageReceived(object sender, MessageReceivedEventArgs e)
  {
   MyTextBlock.Text=e.Message;
  }
 }
} &lt;/pre&gt;&lt;br  /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제, 위 두 프로젝트를 동시에 실행시키기 위해 솔루션 설정을 변경해야 합니다.&lt;/p&gt;
&lt;p&gt;솔루션에서 마우스 오른클릭을 하여 메뉴에서 속성을 클릭합니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;LocalMessageReseiverTest와 LocalMessageSenderTest의 작업을&lt;/p&gt;
&lt;p&gt;&apos;시작&apos;으로 변경하고 확인을 누릅니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://myifu.com/_study/silverlight/template_network_sender/&quot;&gt;http://myifu.com/_study/silverlight/template_network_sender/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://myifu.com/_study/silverlight/template_network_receiver/&quot;&gt;http://myifu.com/_study/silverlight/template_network_receiver/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sender 브라우저에서 입력한 문자열이 Receiver 브라우저에서 출력되는 것을 확인할 수 있다. &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Mon, 08 Feb 2010 23:51:01 +0900</pubDate>
                                </item>
                <item>
            <title>네트워크 - 소켓 통신</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4073</link>
            <guid isPermaLink="true">http://www.myifu.com/4073</guid>
                        <comments>http://www.myifu.com/4073#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;COLOR: #000000; FONT-SIZE: 14px&quot;&gt;실버라이트와 통신하는 소켓 통신 서버 규칙&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;943 포트를 통해 보아 정책 파일을 제공해야 한다.&lt;/p&gt;
&lt;p&gt;4502~4534 사이의 포트를 이용해야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;COLOR: #000000; FONT-SIZE: 14px&quot;&gt;에코 서버 작성하기&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;에코 서버는 클라이언트로부터 문자열을 전송받아 다시 클라이언트에게 전송하는 역할을 합니다.&lt;/p&gt;
&lt;p&gt;에코 서버는 실버라이트가 아닌 닷넷 기반의 콘솔 애플리케이션 위에서 작동하므로 먼저 C#콘솔 애플리케이션 프로젝트를 생성해야 합니다. &lt;/p&gt;
&lt;p&gt;새 프로젝트 - C# / Windows / Console Application 선택합니다. &lt;/p&gt;
&lt;p&gt;이름에 EchoServer를 입력하고 프로젝트가 저장될 Location은 임의로 저장합니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그다음 클래스를 생성하기 위해 위 프로젝트 에서 마우스 오른 클릭을 하여 추가-클래스 를 클릭합니다. &lt;/p&gt;
&lt;p&gt;이름 입력 상자에 EchoServer.cs로 입력한 후 확인을 누릅니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;EchoServer.cs&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
namespace EchoServer
{
 class EchoServer
 {
  public void StartServer()
  {
   Console.WriteLine(&quot;EchoServer를 시작합니다.&quot;);
   // SocketServer 생성
   // 포트 4530
   TcpListener listener = new TcpListener(IPAddress.Any, 4530);
   listener.Start();
   while (true)
   {
    byte[] buffer = new byte[512];
    // 클라이언트 접속 기다림
    Socket clientSocket = listener.AcceptSocket();
    Console.WriteLine(&quot;클라이언트가 접속했습니다.&quot;);
    while (true)
    {
     // 클라이언트로부터 문장 수신
     int receiveLength = 
      clientSocket.Receive(buffer, 512, SocketFlags.None);
     // 클라이언트로 다시 문장 전송
     if (receiveLength &amp;gt; 0)
      clientSocket.Send(buffer, 512, SocketFlags.None);
     else
     {
      clientSocket.Shutdown(SocketShutdown.Both);
      break;
     }
    }
   }
  }
 }
}&lt;/pre&gt;&lt;br  /&gt;
&lt;p&gt;Program.cs&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt; using System;
using System.Collections.Generic;
using System.Text;
namespace EchoServer
{
    class Program
    {
        static void Main(string[] args)
        {
            EchoServer server = new EchoServer();
            server.StartServer();
        }
    }
}&lt;/pre&gt;&lt;br  /&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;COLOR: #000000; FONT-SIZE: 14px&quot;&gt;보안 정책 서버 작성하기&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;실버라이트는 네트워크 통신을 하기 위해서 반드시 보안 정책 파일이 있어야 합니다. &lt;/p&gt;
&lt;p&gt;특히 소켓을 이용하는 실버라이트 클라이언트는 이용하고자 하는 소켓 서버의 943 포트로 보안 정책 파일을 요청합니다. 943 포트를 이용해 보안 정채 서버를 작동시키기 위해 위&amp;nbsp;서버 프로젝트에 하나의 프로젝트를 더 추가하도록 하겠습니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;새 프로젝트 - Windows - 콘솔 Application&amp;nbsp;선택&lt;/p&gt;
&lt;p&gt;이름 입력상자에 PolicyServer라고 입력하고 Location을 임의로 지정합니다.&lt;/p&gt;
&lt;p&gt;그리고 중요한 부분으로 Solution은 Add to Solution을 선택해 현재 솔루션에 프로젝트가 추가할 수 있도록 지정합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음으로 보안 파일을 생성합니다. &lt;/p&gt;
&lt;p&gt;PsolicyServer 프로젝트위에서 마우스 오른쪽 버튼을 클릭해서&amp;nbsp; 추가-새 항목 추가를 클릭합니다. &lt;/p&gt;
&lt;p&gt;나타나는 대화창에서 XML File을 선택하고, 이름을 clientaccesspolicy.xml로 입력합니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;clientaccesspolicy.xml&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;access-policy&amp;gt;
  &amp;lt;cross-domain-access&amp;gt;
 &amp;lt;policy&amp;gt;
   &amp;lt;allow-from&amp;gt;
  &amp;lt;domain uri=&quot;*&quot; /&amp;gt;
   &amp;lt;/allow-from&amp;gt;
   &amp;lt;grant-to&amp;gt;
  &amp;lt;socket-resource port=&quot;4530&quot; protocol=&quot;tcp&quot; /&amp;gt;
   &amp;lt;/grant-to&amp;gt;
 &amp;lt;/policy&amp;gt;
  &amp;lt;/cross-domain-access&amp;gt;
&amp;lt;/access-policy&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 다수의 포트를 사용할 때에는 4530-4532와 같이&amp;nbsp;범위로 입력할&amp;nbsp;수 있습니다. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음으로 PolicyServer 클래스를 생성합니다. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;(추가-클래스 - 이름을 PolicyServer로 입력)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PolicyServer.cs&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;
namespace PolicyServer
{
 class PolicyServer
 {
  private string policyRequestString = &quot;&amp;lt;policy-file-request/&amp;gt;&quot;;
  private string policyFilePath = @&quot;..\..\clientaccesspolicy.xml&quot;;
  private byte[] policy;
  public void StartServer()
  {
   Console.WriteLine(&quot;PolicyServer를 시작합니다.&quot;);
   // Policy 파일의 내용을 읽습니다.
   FileStream policyStream = new FileStream(policyFilePath, FileMode.Open);
   policy = new byte[policyStream.Length];
   policyStream.Read(policy, 0, policy.Length);
   policyStream.Close();
   // SocketServer 생성
   // 포트 943
   TcpListener listener = new TcpListener(IPAddress.Any, 943);
   listener.Start();
   while (true)
   {
    byte[] buffer = new byte[512];
    // 클라이언트 접속 기다림
    Socket clientSocket = listener.AcceptSocket();
    Console.WriteLine(&quot;클라이언트가 접속했습니다.&quot;);
    // 클라이언트로부터 문장 수신
    int receiveLength = clientSocket.Receive(buffer, 512, SocketFlags.None);
    if (receiveLength &amp;gt; 0)
    {
     string receiveString = System.Text.Encoding.UTF8.GetString(buffer, 0, receiveLength);
     // 클라이언트로부터 받은 문장이
     // &amp;lt;policy-file-request/&amp;gt;라면
     // 클라이언트에게 보안 정책 파일 전송
     if (receiveString.Equals(policyRequestString)) clientSocket.Send(policy, 0, policy.Length, SocketFlags.None);
    }
    // 클라이언트와 연결 종료
    clientSocket.Close();
   }
  }
 }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;마지막으로 PolicyServer를 작동하기 위해 Program.cs를 열어 아래와 같이 입력합니다.&lt;/p&gt;
&lt;p&gt;Program.cs&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.Text;
namespace PolicyServer
{
 class Program
 {
  static void Main(string[] args)
  {
   PolicyServer server = new PolicyServer();
   server.StartServer();
  }
 }
}&lt;/pre&gt;&lt;br  /&gt;&amp;nbsp; 
&lt;p&gt;마지막으로 EchoServer와 PolicyServer를 동시에 시작하게 하기 위해서,&lt;/p&gt;
&lt;p&gt;솔루션에서 오른클릭하여 Properties를 클릭합니다. &lt;/p&gt;
&lt;p&gt;대화창에서 EchoServer와 PolicyServer의 Action을 Start 로 변경합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;COLOR: #000000; FONT-SIZE: 14px&quot;&gt;에코 클라이언트 작성하기&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Echoclient라는 이름의 실버라이트 프로젝트를 생성하고, 다음과 같이 코드를 입력합니다. &lt;br  /&gt;Main.xaml&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Grid x:Name=&quot;LayoutRoot&quot;&amp;gt;
 &amp;lt;Grid.RowDefinitions&amp;gt;
  &amp;lt;RowDefinition/&amp;gt;
  &amp;lt;RowDefinition/&amp;gt;
 &amp;lt;/Grid.RowDefinitions&amp;gt;
 &amp;lt;Grid.ColumnDefinitions&amp;gt;
  &amp;lt;ColumnDefinition/&amp;gt;
  &amp;lt;ColumnDefinition/&amp;gt;
 &amp;lt;/Grid.ColumnDefinitions&amp;gt;
 &amp;lt;TextBox x:Name=&quot;tbSendString&quot; Grid.Row=&quot;0&quot; Grid.Column=&quot;0&quot;/&amp;gt;
 &amp;lt;Button x:Name=&quot;btSend&quot; Content=&quot;전송&quot; Grid.Row=&quot;1&quot; Grid.Column=&quot;0&quot;/&amp;gt;
 &amp;lt;TextBlock x:Name=&quot;tbReceiveString&quot; Grid.Row=&quot;0&quot; Grid.Column=&quot;1&quot;/&amp;gt;
&amp;lt;/Grid&amp;gt; &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MainPage.xaml.cs&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Net.Sockets;
namespace EchoClient
{
 public partial class MainPage : UserControl
 {
  Socket socket;
  public MainPage()
  {
   InitializeComponent();
   Loaded += new RoutedEventHandler(MainPage_Loaded);
   btSend.Click += new RoutedEventHandler(btSend_Click);
  }
  void btSend_Click(object sender, RoutedEventArgs e)
  {
   SocketAsyncEventArgs args = new SocketAsyncEventArgs();
   args.Completed += new EventHandler&amp;lt;SocketAsyncEventArgs&amp;gt;(SocketCompleted);
   byte[] response = System.Text.Encoding.UTF8.GetBytes(tbSendString.Text);
   args.SetBuffer(response, 0, response.Length);
   socket.SendAsync(args);
  }
  void MainPage_Loaded(object sender, RoutedEventArgs e)
  {
   DnsEndPoint endPoint = new DnsEndPoint(&quot;127.0.0.1&quot;, 4530);
   socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
   SocketAsyncEventArgs args = new SocketAsyncEventArgs();
   args.RemoteEndPoint = endPoint;
   args.Completed += new EventHandler&amp;lt;SocketAsyncEventArgs&amp;gt;(SocketCompleted);
   socket.ConnectAsync(args);
  }
  void SocketCompleted(object sender, SocketAsyncEventArgs e)
  {
   // 서버에 접속한 경우
   if (e.LastOperation == SocketAsyncOperation.Connect)
   {
    if (e.SocketError != SocketError.Success)
    {
     Dispatcher.BeginInvoke(() =&amp;gt; MessageBox.Show(&quot;서버에 접속할 수 없습니다.&quot;));
     return;
    }
   }
   else if (e.LastOperation == SocketAsyncOperation.Send)
   {
    SocketAsyncEventArgs args = new SocketAsyncEventArgs();
    args.Completed += new EventHandler&amp;lt;SocketAsyncEventArgs&amp;gt;(SocketCompleted);
    byte[] response = new byte[512];
    args.SetBuffer(response, 0, response.Length);
    socket.ReceiveAsync(args);
   }
   else if (e.LastOperation == SocketAsyncOperation.Receive)
   {
    string receiveString = System.Text.Encoding.UTF8.GetString(e.Buffer, 0, e.Buffer.Length);
    Dispatcher.BeginInvoke(() =&amp;gt; tbReceiveString.Text = receiveString);
   }
  }
 }
} &lt;/pre&gt;&lt;br  /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Mon, 08 Feb 2010 23:12:47 +0900</pubDate>
                                </item>
                <item>
            <title>네트워크 - HTTP / WCF 서비스</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4059</link>
            <guid isPermaLink="true">http://www.myifu.com/4059</guid>
                        <comments>http://www.myifu.com/4059#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;strong&gt;WCF (Windows Communication Foundation) &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WCF는 SOA (Service Oriented Architecture)를 구축할 수 있는 닷넷 프레임워크의 중요한 요소입니다. &lt;/p&gt;
&lt;p&gt;서버와 클라이언트 간의 통신을 매우 쉽게 할 수 있습니다. &lt;/p&gt;
&lt;p&gt;서버에서는 WCF를 이용해 서비스를 제공하고, 클라이언트에서는 프록시(Proxy, 대리인)코드를 이용해 서버에서 제공하는 서비스를 이용하는 아키텍쳐를 가지고 있습니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 프록시코드&lt;/p&gt;
&lt;p&gt;WCF는 서버와 클라이언트간의 통신을 위해 SOAP(Simple Object Access Protocol, XML기반)을 이용합니다. 그러면 프로그래머는 서버의 서비스를 이용하기 위해 XML을 파싱하는 귀찮은 작업을 해야 합니다.&lt;/p&gt;
&lt;p&gt;이러한 작업을 피하기 위해 비주얼 스튜디오에서는 프로그래머 대신 XML을 파싱하는 코드(클래스)를 자동으로 생성하는 기능을 가지고 있습니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;COLOR: #b3b3b3&quot;&gt;어떤 객체의 메서드를 호출 한다고 했을 때, &lt;/span&gt;&lt;span style=&quot;COLOR: #b3b3b3&quot;&gt;프록시가 그 객체인 것처럼 그 호출을 받으므로, &lt;/span&gt;&lt;span style=&quot;COLOR: #6d6d6d&quot;&gt;&lt;span style=&quot;COLOR: #b3b3b3&quot;&gt;필요한 전처리를 실행할 수도 있고, 실제 메서드를 호출하거나 호출하지 않고도 결과를 반환할 수도 있습니다.&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WCF 서비스 구축하기&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;프로젝트의 Web부분에서 추가-새 항목 - 웹서비스를 클릭하여 선택 한 후,&amp;nbsp; &lt;/p&gt;
&lt;p&gt;이름에 Test.asmx를 입력합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Test.asmx&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;%@ WebService Language=&quot;C#&quot; CodeBehind=&quot;Test.asmx.cs&quot; Class=&quot;WCFTest.Web.Test&quot; %&amp;gt; &lt;/pre&gt;&lt;br  /&gt;&amp;nbsp; 
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Test.asmx.cs&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;namespace WCFTest.Web
{
 [WebService(Namespace = &quot;http://tempuri.org/&quot;)]
 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 [System.ComponentModel.ToolboxItem(false)]
 public class Test : System.Web.Services.WebService
 {
  [WebMethod]
  public string HelloWorld()
  {
   return &quot;Hello World&quot;;
  }
  [WebMethod]
  public int Add(int num1, int num2)
  {
   return num1 + num2;
  }
 }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;프록시 코드 생성하기&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;실버라이트 프로젝트에서 마우스 오른클릭해서 서비스 참조 추가 클릭합니다. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://localhost:포트/Test.asmx&quot;&gt;http://localhost:포트/Test.asmx&lt;/a&gt; 입력&amp;nbsp;/ 혹은 &lt;br  /&gt;검색을 클릭하면 현재 등록된 웹서비스의 주소를 자동으로 입력합니다. &lt;/p&gt;
&lt;p&gt;그리고 확인 버튼을 클릭하면 프록시 코드 생성을 시작합니다. &lt;/p&gt;
&lt;p&gt;완료되면 ServiceReference1이 추가됩니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;실버라이트에서 웹 서비스 이용하기&lt;br  /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MainPage.xaml 
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;StackPanel Orientation=&quot;Horizontal&quot; VerticalAlignment=&quot;Center&quot; HorizontalAlignment=&quot;Center&quot;&amp;gt;
 &amp;lt;TextBox x:Name=&quot;tbNum1&quot; FontSize=&quot;20&quot;/&amp;gt;
 &amp;lt;TextBlock Text=&quot; + &quot; FontSize=&quot;20&quot;/&amp;gt;
 &amp;lt;TextBox x:Name=&quot;tbNum2&quot; FontSize=&quot;20&quot;/&amp;gt;
 &amp;lt;TextBlock Text=&quot; = &quot; FontSize=&quot;20&quot;/&amp;gt;
 &amp;lt;TextBlock x:Name=&quot;tbResult&quot; FontSize=&quot;20&quot;/&amp;gt;
 &amp;lt;Button x:Name=&quot;btCalculate&quot; Content=&quot;계산하기&quot; Margin=&quot;20, 0, 0, 0&quot; Height=&quot;23&quot;/&amp;gt;
&amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;br  /&gt;MainPage.xaml.cs&amp;nbsp; &lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using WCFTest.ServiceReference1;
namespace WCFTest
{
 public partial class MainPage : UserControl
 {
  public MainPage()
  {
   InitializeComponent();
   // Client 이벤트 핸들러 설치
   btCalculate.Click += 
    new RoutedEventHandler(Calculate);
  }
  void Calculate(object sender, RoutedEventArgs e)
  {
   // 계산할 수를 가져옴
   int num1 = Convert.ToInt32(tbNum1.Text);
   int num2 = Convert.ToInt32(tbNum2.Text);
   // 웹서비스 호출을 위한 Client 생성
   // 프록시 코드에서 자동 생성된 클래스
   TestSoapClient client = new TestSoapClient();
   // ASync로 작동하기 때문에 AddCompleted 이벤트 핸들러 설치
   client.AddCompleted += new EventHandler&amp;lt;AddCompletedEventArgs&amp;gt;(AddCompleted);
   // Add 서비스 호출
   client.AddAsync(num1, num2);
  }
  void AddCompleted(object sender, AddCompletedEventArgs e)
  {
   // Add 결과 받음
   int result = e.Result;
   // 화면에 반영
   tbResult.Text = result.ToString();
  }
 }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;웹서비스에서의 보안정책&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WebClient와 동일하게 보안 정책 파일이 필요&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Mon, 08 Feb 2010 22:23:57 +0900</pubDate>
                                </item>
                <item>
            <title>네트워크 - HTTP / WebClient</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4045</link>
            <guid isPermaLink="true">http://www.myifu.com/4045</guid>
                        <comments>http://www.myifu.com/4045#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;span style=&quot;FONT-SIZE: 18px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;COLOR: #000000&quot;&gt;WebClient &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;WebClient 는 HTTP를 이용해서 외부 리소스나 문자열을 다운로드/업로드 할 때 사용하는 클래스입니다.&lt;/p&gt;
&lt;p&gt;HttpWebRequest&amp;nbsp;/ HttpWebResponse에 비해 단순한 기능만 제공하므로, 쉽습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Async : asynchronous communication, 비동기통신&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WebClient에서 제공되는 메서드&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DownloadStringAsync / Get / 문자열 타입 / 문자열을 다운로드&lt;/p&gt;
&lt;p&gt;UploadStringAsync / Post / 문자열 타입 / 문자열을 업로드&lt;/p&gt;
&lt;p&gt;OpenReadAsync / Get / 리소스 타입&amp;nbsp;/ 리소스를 다운로드&lt;/p&gt;
&lt;p&gt;OpenWriteAsync / Post / 리소스&amp;nbsp;타입 / 리소스를 업로드&lt;/p&gt;
&lt;p&gt;CancelAsync / 업로드나 다운로드를 취소합니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 문자열 타입은 일반 Text나 HTML, XML등을 의미하고,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; 리소스 타입은 이미지나 동영상을 등을 의미합니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WebCliend에서 제공되는 이벤트&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DownloadStringCompleted&amp;nbsp;/ 문자열 다운로드가 완료 혹은 실패한 경우&lt;br  /&gt;DownloadProgressChanged&amp;nbsp;/ 문자열 다운로드 양이 변화된 경우&lt;br  /&gt;UploadStringCompleted / 문자열 업로드가 완료 혹은 실패한 경우&lt;br  /&gt;UploadProgressChanged / 문자열 업로드 양이 변화된 경우&lt;/p&gt;
&lt;p&gt;OpenReadCompleted / 리소스를 다운받기 위한 스트림이 열린 경우&lt;/p&gt;
&lt;p&gt;OpenWriteCompleted / 리소스를 업로드 하기 위한 스트림이 열린 경우&lt;/p&gt;
&lt;p&gt;WriteStreamClosed / 리소스를 업로드 하기 위한 스트림이 닫힌 경우&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WebClient 이용해서 문자열 다운로드 하기&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MainPage.xaml 
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Grid x:Name=&quot;LayoutRoot&quot; &amp;gt;
 &amp;lt;Grid.RowDefinitions&amp;gt;
  &amp;lt;RowDefinition Height=&quot;Auto&quot;/&amp;gt;
  &amp;lt;RowDefinition Height=&quot;Auto&quot;/&amp;gt;
  &amp;lt;RowDefinition Height=&quot;Auto&quot;/&amp;gt;
 &amp;lt;/Grid.RowDefinitions&amp;gt;
 &amp;lt;Grid.ColumnDefinitions&amp;gt;
  &amp;lt;ColumnDefinition Width=&quot;Auto&quot;/&amp;gt;
 &amp;lt;/Grid.ColumnDefinitions&amp;gt;
 &amp;lt;TextBlock Text=&quot;다운로드 결과&quot;/&amp;gt;
 &amp;lt;Border Grid.Row=&quot;1&quot; BorderBrush=&quot;Black&quot; BorderThickness=&quot;1&quot;&amp;gt;
  &amp;lt;TextBlock x:Name=&quot;tbResult&quot; Width=&quot;400&quot; Height=&quot;300&quot; /&amp;gt;
 &amp;lt;/Border&amp;gt;
 &amp;lt;Button x:Name=&quot;btRequest&quot; Width=&quot;Auto&quot; Height=&quot;Auto&quot; Content=&quot;다운로드&quot; Grid.Row=&quot;2&quot; /&amp;gt;
&amp;lt;/Grid&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MainPage.xaml.cs&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;public partial class MainPage : UserControl 
{
 public MainPage()
 {
  InitializeComponent();
  btRequest.Click += new RoutedEventHandler(btRequest_Click);
 }
 void btRequest_Click(object sender, RoutedEventArgs e)
 {
  WebClient client = new WebClient();
  client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
  client.DownloadStringAsync(
   new Uri(&quot;http://antasis9.woweb.net/silverlight/hello.txt&quot;, UriKind.Absolute)
  );
 }
 void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
 {
  tbResult.Text = e.Result.ToString();
 }
} &lt;/pre&gt;&lt;br  /&gt;
&lt;p&gt;&lt;strong&gt;WebClient 이용해서&amp;nbsp;리소스 다운로드 하기&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MainPage.xaml&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Grid x:Name=&quot;LayoutRoot&quot;&amp;gt;
 &amp;lt;Grid.RowDefinitions&amp;gt;
  &amp;lt;RowDefinition Height=&quot;100&quot;/&amp;gt;
  &amp;lt;RowDefinition Height=&quot;30&quot;/&amp;gt;
 &amp;lt;/Grid.RowDefinitions&amp;gt;
 &amp;lt;StackPanel Grid.Row=&quot;0&quot; 
    VerticalAlignment=&quot;Center&quot; HorizontalAlignment=&quot;Center&quot; 
    Orientation=&quot;Horizontal&quot;&amp;gt;
  &amp;lt;TextBlock Text=&quot;다운로드양: &quot; FontSize=&quot;20&quot; FontWeight=&quot;Bold&quot;/&amp;gt;
  &amp;lt;TextBlock x:Name=&quot;tbDownloadPercent&quot; Text=&quot;0&quot; FontSize=&quot;20&quot; FontWeight=&quot;Bold&quot;/&amp;gt;
  &amp;lt;TextBlock Text=&quot;%&quot; FontSize=&quot;20&quot; FontWeight=&quot;Bold&quot;/&amp;gt;
 &amp;lt;/StackPanel&amp;gt;
 &amp;lt;Button x:Name=&quot;btRequest&quot;
    Width=&quot;100&quot; Height=&quot;30&quot; Content=&quot;다운로드&quot; Grid.Row=&quot;1&quot;/&amp;gt;
&amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;br  /&gt;MainPage.xaml.cs 
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;public partial class MainPage : UserControl
{
 public MainPage()
 {
  InitializeComponent();
  btRequest.Click += new RoutedEventHandler(btRequest_Click);
 }
 void btRequest_Click(object sender, RoutedEventArgs e)
 {
  WebClient client = new WebClient();
  // 다운로드 양이 변경되면 호출되는 이벤트의 핸들러
  client.DownloadProgressChanged +=
   new DownloadProgressChangedEventHandler(DownloadProgressChanged);
  // 다운로드 준비가 되면 호출되는 이벤트의 핸들러
  client.OpenReadCompleted += 
   new OpenReadCompletedEventHandler(OpenReadCompleted);
  // 다운로드 시작
  client.OpenReadAsync
   (new Uri(&quot;http://antasis9.woweb.net/silverlight/SilverlightApplication3.xap&quot;, 
    UriKind.Absolute));
 }
 void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
 {
  // 다운로드 양이 변경되면 화면에 출력
  tbDownloadPercent.Text = e.ProgressPercentage.ToString();
 }
 void OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
 {
  byte[] buffer = new byte[1024];
  // 격리된 저장 공간에 파일 생성
  IsolatedStorageFile store = 
   IsolatedStorageFile.GetUserStoreForApplication();
  StreamWriter sw = 
   new StreamWriter(store.OpenFile(&quot;test.zip&quot;, FileMode.Create));
  // 네트워크에서 1024 바이트씩 읽어옴
  while (e.Result.Read(buffer, 0, 1024) != 0)
  {
   // 파일에 기록
   sw.Write(buffer);
  }  
  sw.Close();
 }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* Silverlight는 다른 하위 도메인, 다른 프로토콜, 다른 호스트, 다른 포트에 대해 보안 에러를 발생시킵니다. &lt;/p&gt;
&lt;p&gt;오직 같은 도메인, 같은 프로토콜, 같은 포트에 대해서만 접근이 가능합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이것을 해결하기 위해서는 외부 서버에서 미리 허가를 받아야 합니다.&lt;/p&gt;
&lt;p&gt;접속하고자 하는 서버의 관리자는 실버라이트에서 쓰이는 특정 보안 정책 파일을 해당 도메인에 넣어 줍니다. &lt;/p&gt;
&lt;p&gt;그러면 실버라이트 애플리케이션은 미리 약속된 도메인임을 알아채고 보안 문제에 걸리지 않고 서비스를 계속해서 수핼 할&amp;nbsp; 수 있게 됩니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1) 실버라이트 도메인 정책 파일&amp;nbsp;(clientaccesspolicy.xml)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&amp;gt;
&amp;lt;access-policy&amp;gt;
 &amp;lt;cross-domain-access&amp;gt;
  &amp;lt;policy&amp;gt;
   &amp;lt;allow-from http-request-headers=&quot;*&quot;&amp;gt;
    &amp;lt;domain uri=&quot;*&quot; /&amp;gt;
   &amp;lt;allow-from&amp;gt;
   &amp;lt;grant-to&amp;gt;
    &amp;lt;resource path=&quot;/&quot; include-subpaths=&quot;true&quot; /&amp;gt;
   &amp;lt;/grant-to&amp;gt;
  &amp;lt;/policy&amp;gt;
 &amp;lt;/cross-domain-access&amp;gt;
&amp;lt;/access-policy&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2) 플래시 도메인 정책 파일&lt;/p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; ?&amp;gt;
&amp;lt;!DOCTYPE cross-domain-policy SYSTEM &quot;http://www.macromedia.com/xml.dtds/cross-domain-policy.dtd&quot;&amp;gt;
&amp;lt;cross-domain-policy&amp;gt;
 &amp;lt;allow-access-from domain=&quot;*&quot; headers=&quot;*&quot; secure=&quot;true&quot; /&amp;gt;
&amp;lt;/cross-domain-policy&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Mon, 08 Feb 2010 21:17:15 +0900</pubDate>
                                </item>
                <item>
            <title>분신</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4035</link>
            <guid isPermaLink="true">http://www.myifu.com/4035</guid>
                        <comments>http://www.myifu.com/4035#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;
&lt;div style=&quot;BORDER-BOTTOM: #eeeeee 1px solid; BORDER-LEFT: #eeeeee 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; FONT-SIZE: 11px; BORDER-TOP: #eeeeee 1px solid; BORDER-RIGHT: #eeeeee 1px solid; PADDING-TOP: 10px&quot;&gt;&lt;img src=&quot;http://bookthumb.phinf.naver.net/cover/016/206/01620633.jpg?type=m1&quot; alt=&quot;변신&quot; title=&quot;변신&quot; width=&quot;71&quot; height=&quot;107&quot; style=&quot;MARGIN: 0px 15px 10px 0px; FLOAT: left&quot; /&gt;책 제목 : &lt;strong&gt;변신&lt;/strong&gt;&lt;br  /&gt;저자 : 히가시노 게이고&lt;br  /&gt;&lt;!-- 정가 : 10000원 (할인가 : 7500원)&lt;br  /&gt; --&gt;출판사 : 창해&lt;br  /&gt;출간일 : 2005. 07. 27&lt;br  /&gt;ISBN : 8979196857 9788979196856&lt;br  /&gt;&lt;br  /&gt;요약 : 1999년 『비밀』로 제 52회 일본추리작가협회상을 수상한 작가 히가시노 게이고의 신작 추리소설. 어느 날 평범하고 소심한 20대 청년이 강도가 쏜 총에 ... &lt;a href=&quot;http://openapi.naver.com/l?AAAC2LTQrDIBQGT/O5FOsDceMitsk1SoyvKP3Riink9k0gMIthYPpW2YVSnmLN0Wljlfiu3DaH0cMTrMJ4hfUYlEiNHy71XkED9LRzjPIz/7jJpbzPEMMp98h9zi9Z035MIUfQ7WK0MkR/aj1woXcAAAA=&quot; target=&quot;_blank&quot;&gt;자세히 보기&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br  /&gt;역시 히가시노 게이고 ㅎㅎ&lt;/p&gt;
&lt;p&gt;작품 하나하나마다 정말 다양하고 새로운 이야기를 만들어내는 작가다. :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;소심한 성격의 나루세 준이치와&amp;nbsp;아버지를 증오하는&amp;nbsp;교고쿠 슌스케.&lt;/p&gt;
&lt;p&gt;공통점 없는 이 두 인물은 우연히 한 부동산에서 만나 인생이 뒤바뀔만한 경험을 한다.&lt;/p&gt;
&lt;p&gt;아버지의 부동산을 털러 들어온 슌스케가 준이치의 머리를 총으로 쏴 버린 것.&lt;/p&gt;
&lt;p&gt;그리고,&amp;nbsp;곧 슌스케도 자살을 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만, 준이치는 살아났다. &lt;/p&gt;
&lt;p&gt;바로 슌스케의 뇌를 이식 받은 것. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;타인의 뇌를 이식 할 수 있으려면 26가지 항목이 맞아야 하는데,&lt;/p&gt;
&lt;p&gt;그건 거의 10만분의 1의 기적과 같은 일이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이런 다시 없을 기회에 전 세계에서 준이치를 주목한다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;의료계에서도 이런 가능성 때문에 &lt;/p&gt;
&lt;p&gt;범죄자의 뇌를 이식한다는 도덕적인 부분도 무시하고, 수술을 강행한다. ㅎ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만,&amp;nbsp;점점 인격이&amp;nbsp;변해 가는 준이치.&lt;/p&gt;
&lt;p&gt;슌스케의 뇌가 준이치를 점점 변하게 만들었다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;과연 준이치는 아직 준이치일까? 아니면 슌스케일까. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Sun, 07 Feb 2010 01:36:06 +0900</pubDate>
                        <category>히가시노 게이고</category>
                                </item>
                <item>
            <title>10년 후의 미래</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4032</link>
            <guid isPermaLink="true">http://www.myifu.com/4032</guid>
                        <comments>http://www.myifu.com/4032#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;오늘&amp;nbsp;이사님과&amp;nbsp;면담을 하는데, 다른 이야기를 하다가 문득&amp;nbsp;10년 후의 미래에 대해 물어보셨다.&lt;/p&gt;
&lt;p&gt;어떤 계획이 있냐며.ㅎㅎ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;나는 이런 질문을 받으면 늘 조금 난감하다.&lt;/p&gt;
&lt;p&gt;10년후에 내가 뭘 하고 있을지에 대한&amp;nbsp;계획을 세워 차근차근 진행해 나갈 수 있다면,&lt;/p&gt;
&lt;p&gt;그보다 더 중요하고&amp;nbsp;멋진 일은 없을 것이지만, &lt;/p&gt;
&lt;p&gt;어쩐지&amp;nbsp;말로 내뱉어 버리면 그걸 꼭 지켜야 할 것 같은 느낌이 들어서,&lt;/p&gt;
&lt;p&gt;늘 신중하고 또 조심스러워지는 질문이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제, 하루에도 수십번씩 생각이 바뀌거나 하지는 않지만,&lt;/p&gt;
&lt;p&gt;그래도 종종 고민스러울 때가 있으니까.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;웹퍼블리셔는 어차피 실제 최전방에서 일을 하는 기술자일 뿐이고,&lt;/p&gt;
&lt;p&gt;위로 올라가는데는 한계가 있기 마련이고,&lt;/p&gt;
&lt;p&gt;또한 회사의 방향도 웹에 머물러 있지 않으니, &lt;/p&gt;
&lt;p&gt;더욱더 고민스러워진다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;간단히 말해 웹퍼블리셔 출신의 사장/이사는 있을 수 있지만,&lt;/p&gt;
&lt;p&gt;현재 웹퍼블리셔인 사장/이사는 있을 수 없는 일이니까. (웹퍼블리싱만 전문으로 하는 작은 업체들은&amp;nbsp;제외)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;어쨌든, 오늘 이사님으로부터 제안을&amp;nbsp;한 가지 받았는데,&amp;nbsp;하겠다고 했다.&lt;/p&gt;
&lt;p&gt;그것이 웹퍼블리셔로서의 나의 현재의 고민을 장기적으로 해결할 수 있을지는 좀더 가봐야 알겠지만,&lt;/p&gt;
&lt;p&gt;새로운 분야에 도전하는 것은 나에게는 늘 일상이고 재미 있는 일이니까. 나쁘지는 않을 것 같다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;COLOR: #9a9a9a&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;COLOR: #9a9a9a&quot;&gt;완전히 새로운 분야인 것은&lt;/span&gt;&lt;span style=&quot;COLOR: #9a9a9a&quot;&gt;&amp;nbsp;아니지만, ㅎㅎ)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;어차피, 회사에서 고용되어 일하는 직원으로써, &lt;/p&gt;
&lt;p&gt;회사가 나에게 원하는 일이&amp;nbsp;내가 거부감 없이 잘 할 수 있는 일과 일치 한다면, &lt;/p&gt;
&lt;p&gt;나 스스로도 회사 내에서 하고 있는 일에 대해서&amp;nbsp;만족감이 클 것이고, &lt;/p&gt;
&lt;p&gt;어떤 일을 하든 &apos;일&apos;에 관해서는 잘한다는 소리를 들어야 직성이 풀리는 성격인지라, &lt;/p&gt;
&lt;p&gt;스스로도 잘 하기 위해 노력할 것임을 알고 있기 때문에, 결정은 어렵지 않았다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만, 반드시 기획 업무가 포함되어 있을 것이기에,조금 걱정이 되기는 하는데,&lt;/p&gt;
&lt;p&gt;그만큼 많이 파악하고 많이 노력해야 겠지. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;효율적인 운영과 실행을 위한 기획이라면 어렵지 않은데,&lt;/p&gt;
&lt;p&gt;비전과 철학을 고민하고 그걸 적절한 키워드로 표현하고, 또 거기에 의미를 부여하는...&lt;/p&gt;
&lt;p&gt;그런 종류의&amp;nbsp;일이라면 내가 절대 못하는 분야라는건 확인했으니까 힘들 것 같다.. -_-&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;어쨌든,&amp;nbsp;새해에도 점점 발전하는 내가 되길 바라며 :)&lt;/p&gt;
&lt;p&gt;화이팅!!~ &amp;nbsp;&apos;ㅂ&apos;)//&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Fri, 05 Feb 2010 16:06:00 +0900</pubDate>
                                </item>
                <item>
            <title>Animation - 4*) ObjectAnimationUsingKeyFrames</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4027</link>
            <guid isPermaLink="true">http://www.myifu.com/4027</guid>
                        <comments>http://www.myifu.com/4027#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Canvas x:Name=&quot;LayoutRoot&quot;&amp;gt;
 &amp;lt;Canvas.Resources&amp;gt;
  &amp;lt;Storyboard x:Name=&quot;MyStoryboard&quot;&amp;gt;
   &amp;lt;ObjectAnimationUsingKeyFrames Storyboard.TargetName=&quot;rect&quot; Storyboard.TargetProperty=&quot;Visibility&quot;&amp;gt;
    &amp;lt;DiscreteObjectKeyFrame KeyTime=&quot;00:00:01&quot; Value=&quot;Collapsed&quot; /&amp;gt;
    &amp;lt;DiscreteObjectKeyFrame KeyTime=&quot;00:00:02&quot; Value=&quot;Visible&quot; /&amp;gt;
    &amp;lt;DiscreteObjectKeyFrame KeyTime=&quot;00:00:03&quot; Value=&quot;Collapsed&quot; /&amp;gt;
   &amp;lt;/ObjectAnimationUsingKeyFrames&amp;gt;
  &amp;lt;/Storyboard&amp;gt;
 &amp;lt;/Canvas.Resources&amp;gt;
 &amp;lt;Rectangle x:Name=&quot;rect&quot; Width=&quot;100&quot; Height=&quot;100&quot; Canvas.Left=&quot;0&quot; Canvas.Top=&quot;0&quot;&amp;gt;
  &amp;lt;Rectangle.Fill&amp;gt;
   &amp;lt;SolidColorBrush Color=&quot;Red&quot; /&amp;gt;
  &amp;lt;/Rectangle.Fill&amp;gt;
 &amp;lt;/Rectangle&amp;gt;
&amp;lt;/Canvas&amp;gt;&lt;/pre&gt;&lt;br  /&gt;View : &lt;a href=&quot;http://myifu.com/_study/silverlight/template_animation_13_objectanimation/&quot;&gt;http://myifu.com/_study/silverlight/template_animation_13_objectanimation/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 03 Feb 2010 22:36:10 +0900</pubDate>
                                </item>
                <item>
            <title>Animation - 4-d) Discrete{Type}KeyFrame</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4019</link>
            <guid isPermaLink="true">http://www.myifu.com/4019</guid>
                        <comments>http://www.myifu.com/4019#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Canvas x:Name=&quot;LayoutRoot&quot;&amp;gt;
 &amp;lt;Canvas.Resources&amp;gt;
  &amp;lt;Storyboard x:Name=&quot;MyStoryboard&quot;&amp;gt;
   &amp;lt;DoubleAnimationUsingKeyFrames Storyboard.TargetName=&quot;rect&quot; Storyboard.TargetProperty=&quot;Width&quot;&amp;gt;
    &amp;lt;DiscreteDoubleKeyFrame KeyTime=&quot;00:00:01&quot; Value=&quot;200&quot; /&amp;gt;
    &amp;lt;DiscreteDoubleKeyFrame KeyTime=&quot;00:00:02&quot; Value=&quot;300&quot; /&amp;gt;
    &amp;lt;DiscreteDoubleKeyFrame KeyTime=&quot;00:00:03&quot; Value=&quot;400&quot; /&amp;gt;
   &amp;lt;/DoubleAnimationUsingKeyFrames&amp;gt;
  &amp;lt;/Storyboard&amp;gt;
 &amp;lt;/Canvas.Resources&amp;gt;
 &amp;lt;Rectangle x:Name=&quot;rect&quot; Width=&quot;100&quot; Height=&quot;100&quot; Canvas.Left=&quot;0&quot; Canvas.Top=&quot;0&quot;&amp;gt;
  &amp;lt;Rectangle.Fill&amp;gt;
   &amp;lt;SolidColorBrush Color=&quot;Red&quot; /&amp;gt;
  &amp;lt;/Rectangle.Fill&amp;gt;
 &amp;lt;/Rectangle&amp;gt;
&amp;lt;/Canvas&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;br  /&gt;View : &lt;a href=&quot;http://myifu.com/_study/silverlight/template_animation_12_usingkeyframe04/&quot;&gt;http://myifu.com/_study/silverlight/template_animation_12_usingkeyframe04/&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 03 Feb 2010 21:23:57 +0900</pubDate>
                                </item>
                <item>
            <title>Animation - 4-c) Easing{Type}KeyFrame</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4016</link>
            <guid isPermaLink="true">http://www.myifu.com/4016</guid>
                        <comments>http://www.myifu.com/4016#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Canvas x:Name=&quot;LayoutRoot&quot;&amp;gt;
 &amp;lt;Canvas.Resources&amp;gt;
  &amp;lt;Storyboard x:Name=&quot;MyStoryboard&quot;&amp;gt;
   &amp;lt;DoubleAnimationUsingKeyFrames Storyboard.TargetName=&quot;rect&quot; Storyboard.TargetProperty=&quot;Width&quot;&amp;gt;
    &amp;lt;EasingDoubleKeyFrame KeyTime=&quot;00:00:01&quot; Value=&quot;200&quot;&amp;gt;
     &amp;lt;EasingDoubleKeyFrame.EasingFunction&amp;gt;
      &amp;lt;SineEase /&amp;gt;
     &amp;lt;/EasingDoubleKeyFrame.EasingFunction&amp;gt;
    &amp;lt;/EasingDoubleKeyFrame&amp;gt;
    &amp;lt;EasingDoubleKeyFrame KeyTime=&quot;00:00:05&quot; Value=&quot;300&quot;&amp;gt;
     &amp;lt;EasingDoubleKeyFrame.EasingFunction&amp;gt;
      &amp;lt;ElasticEase /&amp;gt;
     &amp;lt;/EasingDoubleKeyFrame.EasingFunction&amp;gt;
    &amp;lt;/EasingDoubleKeyFrame&amp;gt;
   &amp;lt;/DoubleAnimationUsingKeyFrames&amp;gt;
  &amp;lt;/Storyboard&amp;gt;
 &amp;lt;/Canvas.Resources&amp;gt;
 &amp;lt;Rectangle x:Name=&quot;rect&quot; Width=&quot;100&quot; Height=&quot;100&quot; Canvas.Left=&quot;0&quot; Canvas.Top=&quot;0&quot;&amp;gt;
  &amp;lt;Rectangle.Fill&amp;gt;
   &amp;lt;SolidColorBrush Color=&quot;Red&quot; /&amp;gt;
  &amp;lt;/Rectangle.Fill&amp;gt;
 &amp;lt;/Rectangle&amp;gt;
&amp;lt;/Canvas&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;br  /&gt;View : &lt;a href=&quot;http://myifu.com/_study/silverlight/template_animation_12_usingkeyframe03/&quot;&gt;http://myifu.com/_study/silverlight/template_animation_12_usingkeyframe03/&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 03 Feb 2010 21:23:16 +0900</pubDate>
                                </item>
                <item>
            <title>Animation - 4-b) Spline{Type}KeyFrame</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4013</link>
            <guid isPermaLink="true">http://www.myifu.com/4013</guid>
                        <comments>http://www.myifu.com/4013#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Canvas x:Name=&quot;LayoutRoot&quot;&amp;gt;
 &amp;lt;Canvas.Resources&amp;gt;
  &amp;lt;Storyboard x:Name=&quot;MyStoryboard&quot;&amp;gt;
   &amp;lt;DoubleAnimationUsingKeyFrames Storyboard.TargetName=&quot;rect&quot; Storyboard.TargetProperty=&quot;Width&quot;&amp;gt;
    &amp;lt;SplineDoubleKeyFrame KeyTime=&quot;00:00:01&quot; Value=&quot;200&quot; KeySpline=&quot;1.0,0.0,1.0,1.0&quot; /&amp;gt;
    &amp;lt;SplineDoubleKeyFrame KeyTime=&quot;00:00:05&quot; Value=&quot;300&quot; KeySpline=&quot;0.0,1.0,1.0,1.0&quot; /&amp;gt;
   &amp;lt;/DoubleAnimationUsingKeyFrames&amp;gt;
  &amp;lt;/Storyboard&amp;gt;
 &amp;lt;/Canvas.Resources&amp;gt;
 &amp;lt;Rectangle x:Name=&quot;rect&quot; Width=&quot;100&quot; Height=&quot;100&quot; Canvas.Left=&quot;0&quot; Canvas.Top=&quot;0&quot;&amp;gt;
  &amp;lt;Rectangle.Fill&amp;gt;
   &amp;lt;SolidColorBrush Color=&quot;Red&quot; /&amp;gt;
  &amp;lt;/Rectangle.Fill&amp;gt;
 &amp;lt;/Rectangle&amp;gt;
&amp;lt;/Canvas&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;br  /&gt;View : &lt;a href=&quot;http://myifu.com/_study/silverlight/template_animation_12_usingkeyframe02/&quot;&gt;http://myifu.com/_study/silverlight/template_animation_12_usingkeyframe02/&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 03 Feb 2010 21:22:20 +0900</pubDate>
                                </item>
                <item>
            <title>Animation - 4-a) Linear{Type}KeyFrame</title>
            <dc:creator>phoebe</dc:creator>
            <link>http://www.myifu.com/4010</link>
            <guid isPermaLink="true">http://www.myifu.com/4010</guid>
                        <comments>http://www.myifu.com/4010#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;Canvas x:Name=&quot;LayoutRoot&quot;&amp;gt;
 &amp;lt;Canvas.Resources&amp;gt;
  &amp;lt;Storyboard x:Name=&quot;MyStoryboard&quot;&amp;gt;
   &amp;lt;DoubleAnimationUsingKeyFrames Storyboard.TargetName=&quot;rect&quot; Storyboard.TargetProperty=&quot;Width&quot;&amp;gt;
    &amp;lt;EasingDoubleKeyFrame KeyTime=&quot;00:00:01&quot; Value=&quot;200&quot; /&amp;gt;
    &amp;lt;LinearDoubleKeyFrame KeyTime=&quot;00:00:05&quot; Value=&quot;300&quot; /&amp;gt;
   &amp;lt;/DoubleAnimationUsingKeyFrames&amp;gt;
  &amp;lt;/Storyboard&amp;gt;
 &amp;lt;/Canvas.Resources&amp;gt;
 &amp;lt;Rectangle x:Name=&quot;rect&quot; Width=&quot;100&quot; Height=&quot;100&quot; Canvas.Left=&quot;0&quot; Canvas.Top=&quot;0&quot;&amp;gt;
  &amp;lt;Rectangle.Fill&amp;gt;
   &amp;lt;SolidColorBrush Color=&quot;Red&quot; /&amp;gt;
  &amp;lt;/Rectangle.Fill&amp;gt;
 &amp;lt;/Rectangle&amp;gt;
&amp;lt;/Canvas&amp;gt;&lt;/pre&gt;&lt;br  /&gt;View : &lt;a href=&quot;http://myifu.com/_study/silverlight/template_animation_12_usingkeyframe01/&quot;&gt;http://myifu.com/_study/silverlight/template_animation_12_usingkeyframe01/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 03 Feb 2010 21:21:44 +0900</pubDate>
                                </item>
            </channel>
</rss>
