본문 바로가기

전체 글

(270)
[삽질방지] MediaElement 동시사용의 한계는 123개다. 스피커를 켜고 테스트를 해 보십시오. 소스 아래 링크를 클릭하여 다운 받으십시오. MediaElementLimit.zip 실험의 결론 Silverlight 2 Beta1에서는 123개 이하의 MediaElement만 만들어 사용해야 합니다. 123개 이상의 MediaElement가 필요한 경우에는 이미 생성해 놓은 MediaElement를 Source만 변경하여 재활용해야 합니다. 예를들어 한 Silverlight Page 내에 123개를 초과하는 동영상, 음악이 존재하는 경우에는 초과분에 해당하는 미디어는 재생을 시킬 수 없습니다. 다른 테스트를 통해 다음과 같은 사실도 추가적으로 알 수 있었습니다. 1) XAML에 형태로 추가를 해도 124번째부터는 작동을 안 합니다. 2) MediaElement마다..
Microsoft Expression Studio 소개 Microsoft Expression Studio UX 구현을 위한 디자이너와 개발자의 새로운 대화법, 새로운 협업도구 고객에게 최상의 UX를 제공하기 위한 디자이너와 개발자 각자의 꿈과 노력의 좌절은 여러분의 탓이 아닙니다. 도구와 기술의 한계였습니다. 익스프레션으로 차세대 웹과 애플리케이션의 향상된 UX를 구현해 보세요. 꿈이 현실이 됩니다. 제품소개 : 익스프레션 스튜디오는 다음과 같은 4개의 제품으로 구성됩니다. 마이크로소프트 익스프레션 웹 (Microsoft Expression Web) - 웹 에디트(웹 저작 툴) 웹사이트를 제작하는 디자이너와 개발자를 위한 전문 디자인 도구로, XHTML, CSS, XML 및 XSLT와 같이 최근 권장되는 모든 기술을 사용한 표준 기반 사이트 구축 지원 마이크..
[Sample] 다운로드 진행률 출력(Percentage:%) 다운로드 진행률 Percentage(%) 1.1에서는 Download 클래스의 DownloadProgressChanged 이벤트를 이용하여 % 를 출력했지만 2.0에서는 WebClient의 DownloadProgressChanged() 이벤트를 사용하며, Silverlight 2.0에 새로 추가된 이벤트 입니다. MediaElement media = null; public Page() { InitializeComponent(); WebClient webClient = new WebClient(); // 동영상 경로 webClient.OpenReadAsync(new Uri("sl2.wmv", UriKind.Relative)); webClient.DownloadProgressChanged += new Dow..
[삽질방지] UserControl 부모, 자식이 같은 이름의 스토리보드를 가지고 있을 경우, '간혹' 발생하는 에러 상황설명 UserControl 부모와 UserControl 자식이 UserControl.Resource 하위에 같은 이름을 가진 스토리보드를 가지고 있는 상황에서, 자식을 생성하여 부모의 LayoutRoot.Children에 Add를 하려고 시도하면, 경우에 따라서 다음 그림과 같이 ArgumentException을 유발합니다. 정확히 어떤 경우에 이렇게 되는지 실험을 통해 알아 보았습니다. 실험조건 Fafamama 클래스 - 부모 역할을 하는 UserControl 입니다. Son 클래스 - 자식 역할을 하는 UserControl입니다. Daughter 클래스 - 자식 역할을 하는 UserControl입니다. Fafamama는 LayoutRoot의 Opacity를 조정하는 sbShow란 Storyboar..
[삽질방지] FullScreenChanged Event 너무 믿지 마세요 개요 오늘은 Application.Current.Host.Content.FullScreenChanged 이벤트에 대해서 한 말씀드리려고 합니다. 실버라이트 2 버전에서부터 Grid 등의 등장과 함께 화면구성하기가 용이해 졌습니다. 예를들어 LayoutRoot의 Width, Height를 Auto로 설정하고, HorizontalAlignment, VerticalAlignment를 Stretch로 설정하고, Margin 적당히 주면, 어떤 화면 사이즈에서도 척척 알아서 변하는 UI로 꾸밀 수 있죠. FullScreen Mode에서는 어떨까요? 네! 화면이 FullScreen이 되면 위에 언급한 것과 같이 구성된 UI는 전체화면 사이즈에 맞게 변화합니다. 하지만 여기에 시차가 존재합니다. FullScreenC..
[삽질방지] WebClient.Result 문자깨질 때 해결방법 혹시 중복일지도 모르겠습니다만 검색에서 잘 안나와서 그냥 올립니다. 실버라이트에서도 WebClient 이용해서 쉽게 OpenAPI의 XML 데이터 따위를 읽어올 수 있습니다. (실버라이트에서는 비동기만 지원) 그런데 가끔 UTF-8 등으로 인코딩된 XML 파일을 읽을 때 Result의 Unicode 문자들이 깨져 있는 것을 경험하실 겁니다. 이때의 해결방법은 간단합니다. WebClient에는 Encoding이란 프로퍼티가 있기 때문입니다. WebClient wc = new WebClient() { Encoding = Encoding.UTF8 }; 또는 클래식한 표현으로는 아래와 같이... WebClient wc = new WebClient(); wc.Encoding = Encoding.UTF8; 해주시면..
[삽질방지] Random 사용시 주의사항 및 활용법 안녕하세요! 엉뚱한 실험 제2탄입니다. 랜덤 값을 20개 정도 만들어써야 한다고 가정합시다. 간단히 2가지 방법이 있을 수 있습니다. 방법 1 : Random rd = new Random(); for (int i = 0; i < 20; i++) { double dValue = rd.NextDouble(); ... } 방법 2 : for (int i = 0; i < 20; i++) { Random rd = new Random(); double dValue = rd.NextDouble(); ... } 어떤 결과가 예상되시나요? 2가지 방법이 어떻게 다른지 실험을 해보았습니다. 방법2에서는 같은 값만 만들어내는 것을 볼 수 있습니다. Random 값을 생성하는 메커니즘이 시간(time)을 기반으로 하다보니, ..
[TIP] 빌드 이벤트 활용방법 오늘은 Visual Stuido 2003 부터 제공이 되어왔던 빌드 이벤트(Build Event) 에 대해서 알아보자. 종종 굉장히 편리하게 사용되는 기능이니 한번쯤 알아놓는 것도 도움이 될 것 같다. 여기에서 사용하는 툴은 Visual Studio 2005 Team Suite 기준이다. 빌드 이벤트 빌드 이벤트는 이름에서 알 수 있듯이 빌드(소스코드 컴파일) 작업을 할 때 발생하는 VS.NET IDE 에서 발생하는 이벤트이다. 빌드 이벤트는 다음의 두가지 단계에 거쳐 이벤트를 줄 수 있다. l 빌드 전 이벤트 l 빌드 후 이벤트 빌드 전 이벤트는 개발자가 빌드를 수행하기 전에 발생하는 이벤트이다. 빌드 후 이벤트는 다시 빌드 후 이벤트는 총 3가지 옵션을 선택할 수 있다. l 항상 허용 l 빌드가 성공..
[삽질방지] 디버깅 모드시 에러 Silverlight Bata 2 디버깅 시도시 다음과 같은 에러메시지를 나타낼 경우 "디버깅을 시작할 수 없습니다. Silverlight 디버깅 패키지가 설치되어 있지 않습니다." (영문 : "Unable to start debugging. The Silverlight managed debugging package isn't installed.") VS2008 Silverlight Tools Bata 2(silverlight_chainer.exe)를 제거하고 재설치하면 해결된다. ㅡㅡ; 역시 재설치, 리부팅이 정답인 것이냐~!! ㅠㅠ 2008.10.21 첨가 하핫 위에것이 정답이 아니였다. Silverlight 2 런타임은 사용자용(약 4.6메가)과 개발자용(약 6.5메가)이 구분되어져 있다. 개발자용..
[삽질방지] 한글 URL 문제 이거 버그인지.. uri에서 자동으로 escape가 되는건지 이런 현상이 발생하네요. WebClient wc = new WebClient(); wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); // string reqUrl = String.Format("http://localhost/song/searchresult?searchtitle={0}", HttpUtility.UrlEncode(searchWord.Text)); string reqUrl = String.Format("http://localhost/song/searchresult?searchtitle={0}", HttpUti..