Tag : LINQ, namespace, Silverlight, xml, 실버라이트
Silverlight 1.1 시대의 그것과도 다르고
DeepZoom Composer에서 자동 생성해주는 프로젝트에 들어있는 그것과도 다른...
MouseWheelHelper.cs - Ver. 휴즈플로우
void wheelHelper_Moved(object sender, MouseWheelEventArgs e)
{
e.Handled = true;
if (e.Delta > 0) // 휠 버튼 업!
{
// Zoom In 따위를 구현
}
else if (e.Delta < 0) // 휠 버튼 다운!
{
// Zoom Out 따위를 구현
}
}
Tag : MouseWheelHelper, Silverlight, 실버라이트, 휠버튼, 휴즈플로우
Tag : flickr, Silverlight, uniqlock
Tag : DokDo, flickr, Silverlight, uniqlock, 독도, 실버라이트, 유니클락
네, 안녕하세요!
그것은 Visual Studio가 아직 Silverlight 2 Beta 2의 Feature인
VisualStateManager를 제대로 인식을 하지 못해서 보이는 에러입니다.
그럴 땐 한번 더 컴파일을 수행하시면 에러가 사라지는 것을 보실 수 있습니다.
프로그램을 실행하는데 전혀 지장이 없는 에러입니다.
Silverlight 2 정식버전 공개와 함께 나올 Visual Studio 2008 패치에서
문제가 해결되리라 생각합니다.
감사합니다.
상황설명
UserControl 부모와 UserControl 자식이
UserControl.Resource 하위에 같은 이름을 가진 스토리보드를 가지고 있는 상황에서,
자식을 생성하여 부모의 LayoutRoot.Children에 Add를 하려고 시도하면,
경우에 따라서 다음 그림과 같이 ArgumentException을 유발합니다.
실험조건
Fafamama 클래스 - 부모 역할을 하는 UserControl 입니다.
Son 클래스 - 자식 역할을 하는 UserControl입니다.
Daughter 클래스 - 자식 역할을 하는 UserControl입니다.
Fafamama는 LayoutRoot의 Opacity를 조정하는 sbShow란 Storyboard를 UserControl.Resources 하위에 가지고 있으며,
Son은 Fafamama를 쏙 빼 닮아 자신의 LayoutRoot의 Opacity를 조정하는 sbShow란 똑같은 이름의
Storyboard를 가지고 있습니다.
Daughter는 Son이 가지고 있는 스토리보드와 똑같은 스토리보드를 이름만 다르게 하여 가지고 있습니다.
Fafamama.MakeSons() 메서드 - 두 명의 아들을 생성합니다.
Fafamama.MakeDaughters() 메서드 - 두 명의 딸을 생성합니다.
총 6가지 케이스를 실험하기 위해 6번 Fafamama를 생성합니다.
Case 1) Fafamama의 생성자에서 MakeDaughters 호출
Case 2) Fafamama의 Loaded 이벤트에서 MakeDaughters 호출
Case 3) 버튼 클릭에 의해 이미 생성되어 있는 Fafamama의 MakeDaughters 호출
Case 4) Fafamama의 생성자에서 MakeSons 호출
Case 5) Fafamama의 Loaded 이벤트에서 MakeSons 호출
Case 6) 버튼 클릭에 의해 이미 생성되어 있는 Fafamama의 MakeSons 호출
라이브 실험
아래 실버라이트 어플리케이션 안에 실험 Case 6개에 대한 버튼을 준비 하였습니다.
한번 씩 눌러보십시오.
실험결과
부모와 같은 이름의 Storyboard를 가지고 있지 않은 Daughter의 경우, 언제나 예외발생 없이 생성이 된 반면,
UserControl 부모, 자식이 같은 이름의 스토리보드를 가지고 있는 Son의 경우,
생성자에서 호출 시를 제외하고서는 부모의 Panel에 Children.Add 할 수 없었습니다.
이런 경우를 만나신다면 당분간은 피해서(스토리보드 이름을 중복되지 않게 준다거나, 이름을 유지하고, 다른 객체의 Resources 하위로 옮김) 사용해야 하겠습니다.
다운로드
Tag : ArgumentException, Children.Add실패, Silverlight, Storyboard이름중복, 실버라이트
개요
Silverlight 2 Beta 2에서 Socket을 사용할 때 Cross-Domain에 있는 소켓 서버에
접속을 하려면 서버 측의 정책을 확인하는 과정이 필요하게 된 것 아시죠?
다시말해, 실버라이트 런타임이 943번 포트를 통해 실버라이트 정책 파일을 요청하면,
서버 쪽에서는 정책파일을 보내줘야 하는데요.
며칠 전 공도씨가 [MSDN] 네트워크 보안 접근 제약란 제목의 장문의 번역글을 포스팅했습니다.
그 내용의 하단에 보시면 그런 역할을 하는 서버를 만드는 방법이 소개되어 있습니다.
[소켓을 위한 정책 파일 예제]와 [소켓을 위한 정책 서버의 샘플 코드]란 내용이 있구요.
Mike Snows의 Tip of the Day #12 - Full Implementation of a Silverlight Policy Server.를
참고하면 정책 파일 서버를 만들 수 있다고 설명해 놓았습니다.
다운로드
아래는 그것을 그대로 따라서 만들어 놓은 프로젝트구요.
제가 조금 코드를 바꿔서 정책 파일 요청시 Socket Client의 IP를 화면에서 알 수 있도록
하였습니다.
PolicyConnection.cs
public PolicyConnection(Socket client, byte[] policy)
{
_connection = client;
_policy = policy;
_buffer = new byte[_policyRequestString.Length];
_received = 0;
try
{
// receive the request from the client
//_connection.BeginReceive(_buffer, 0, _policyRequestString.Length, SocketFlags.None,
// new AsyncCallback(OnReceive), null);
_connection.BeginReceive(_buffer, 0, _policyRequestString.Length, SocketFlags.None,
new AsyncCallback(OnReceive), client.RemoteEndPoint.ToString());
}
catch (SocketException)
{
_connection.Close();
}
}
...
private void OnReceive(IAsyncResult res)
{
try
{
_received += _connection.EndReceive(res);
// if we haven't gotten enough for a full request yet, receive again
if (_received < _policyRequestString.Length)
{
_connection.BeginReceive(_buffer, _received, _policyRequestString.Length - _received,
SocketFlags.None, new AsyncCallback(OnReceive), null);
return;
}
// make sure the request is valid
string request = System.Text.Encoding.UTF8.GetString(_buffer, 0, _received);
if (StringComparer.InvariantCultureIgnoreCase.Compare(request, _policyRequestString) != 0)
{
_connection.Close();
return;
}
// send the policy
Console.Write(string.Format("Sending policy to {0}\n", res.AsyncState));
_connection.BeginSend(_policy, 0, _policy.Length, SocketFlags.None,
new AsyncCallback(OnSend), null);
}
catch (SocketException)
{
_connection.Close();
}
}
미리보기
static void Main(string[] args)
{
Console.Write("Starting...\n");
PolicyServer ps =
new PolicyServer(@"D:\clientaccesspolicy.xml");
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
}
감사합니다.
보너스
Beta1 시절 포스팅 되었던 스캇구 형님의 소켓 예제를 오늘 다시 한 번 찾아보니!
Beta2 버전으로 포팅이 되었습니다. 여기에도 Policy Server를 포함하고 있습니다.
한 번 훑어 보시면 도움이 되실 거라고 생각합니다.
Pushing Data to a Silverlight Client with Sockets: Part I
Pushing Data to a Silverlight Client with Sockets: Part II
Part I에서는 Socket Server를 Part II에서는 Socket Client를 설명하고 있습니다.
Tag : 943포트, clientaccesspolicy.xml, Silverlight, socket, 소켓, 실버라이트, 정책파일
Tag : MediaElement, Silverlight, 개수제한, 실버라이트
Tag : Hugeflow, Pigmap, RemixKorea, Silverlight, 리믹스코리아, 실버라이트, 피그맵, 휴즈플로우
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-http-request-headers-from domain="* " headers="*" />
</cross-domain-policy>
Tag : clientaccesspolicy.xml, crossdomain.xml, Silverlight, 실버라이트
Silverlight WebService Team 블로그에 제가 관심있어 하는 부분에 대한 포스트가 올라와서 번역을 해보았습니다.
원문 : http://blogs.msdn.com/silverlightws/
Scott이나 Tim의 포스트에서 아마도 읽은 바와 같이, 실버라이트 2 Beta 2는 새롭고 향상된 Web Service 기능들을 제공한다. 이 포스트는 우리 Beta 2 시나리오들을 좀더 상세하고 다룰 것이며, 두 주 가량 이어서 진행하면서, 특정한 기능들을 파 보도록 하겠다.
Duplex Communication (Server Push)
이것은 Beta 1 릴리즈 이후, 고객들이 최고로 많이 요청한 기능으로 채팅과 모니터링 프로그램 같은 몇몇 유용한 시나리오를 가능하게 만든다. Duplex는 클라이언트로 하여금 서버가 클라이언트에게 정보를 보내기(push) 위해서 호출할 수 있는 오퍼레이션들의 세트를 노출할 수 있게 합니다. Web Service 스택을 이용하여 브라우저 기반(Browser-based)의 클라이언트에 말을 거는 것은 이전에는 불가능 했기 때문에 우리는 이 기능을 Beta 2에 탑재하는 것에 매우 흥분했다.
Duplex 지원은 두 어셈블리에 있다 :하나는 WCF 서비스에, 다른하나는 Silverlight 클라이언트에 들어있다. 일단 Beta 2 SDK를 깔면, 다음 어셈블리를 얻을 수 있다.
여러분은 아마 typed "receiver" 경험과 deserialization에 대해 말한 Eugene의 포스트를 기억할 것이다. 우리는 이것을 가지고 일하고 있고, 몇 주 내에 silverlight.net에 샘플코드를 공개할 수 있을 것 같다.
Tag : Duplex, PollingDuplexBindingElement, PollingDuplexHttpBinding, Push, Silverlight, WebServiceTeam, 실버라이트, 웹서비스팀
Tag : FullScreenChanged, IsFullScreen, Silverlight, 실버라이트
2008년 6월 20일 오후 7시 마이크로소프트 코리아에서 로렌스 모로니씨와의 번개미팅(팬미팅)이 있었습니다.
실버라이트 때문에 작년보다 새치가 더 많아진 듯 합니다. ^^
실버라이트의 현재와 미래에 대한 많은 Q&A가 오갔지만, 어떤 것이 블로그를 통해 공개할 수 있는 것인지,
아닌지 분간하기 어려워 내용을 올리지 않음을 이해해 주십시오.
정말 이 자리에 함께 하셨으면 좋으셨을 것입니다.
약속대로 김밥은 제공되었구요. 생각보다는 많은 분이 안오셔서 준비해 놓은 김밥이 많이 남았습니다.
질의응답이 모두 끝난 후에 단체사진! (오른쪽 아래가 저예요 ^^)
최고예요!
컵에 싸인해 주는 로렌스 모로니.
IE 8 컵이었습니다.
저도 싸인을 받았지요.
박스마일과 모로니
Tag : Laurence Moroney, Silverlight, 로렌스모로니, 번개미팅, 실버라이트