Silverlight/Experiment 22

실버라이트 PasswordBox (= Password TextBox) 구현하는 꼼수 하나 소개

꼼수의 발견 아시는 분은 아시겠지만, 실버라이트 2, Beta 2 까지도 아직 패스워드 입력을 위한 PasswordBox가 없었습니다. 그래서 해외의 개발자들이 열심히 노력하여 CodePlex 등을 통해 공유하는 소스가 있기는 했습니다. 그렇지만 방향키 문제라던가, 백스페이스를 눌렀을 때 암호를 한 글자씩 지워지게 할 수 없고 전체가 지워지는 단점들이 고쳐지지 않고 있었습니다. 휴즈플로우에서도 PasswordBox 구현하다가 그냥 기본 컨트롤로 포함되서 나올 때까지 기다리자는 결론을 내린바 있었습니다. 그런데 어제는 이 문제에 관한 정말 기발한 아이디어를 가진 사람을 발견했습니다. 바로 abcd 대신에 *문자만 가득 채운 Password.ttf 폰트를 만들어서 활용하는 방법이었습니다. 감잡으셨죠? ^^ ..

UserControl 부모, 자식이 같은 이름의 스토리보드를 가지고 있을 경우, '간혹' 발생하는 에러

상황설명 UserControl 부모와 UserControl 자식이 UserControl.Resource 하위에 같은 이름을 가진 스토리보드를 가지고 있는 상황에서, 자식을 생성하여 부모의 LayoutRoot.Children에 Add를 하려고 시도하면, 경우에 따라서 다음 그림과 같이 ArgumentException을 유발합니다. 정확히 어떤 경우에 이렇게 되는지 실험을 통해 알아 보았습니다. 실험조건 Fafamama 클래스 - 부모 역할을 하는 UserControl 입니다. Son 클래스 - 자식 역할을 하는 UserControl입니다. Daughter 클래스 - 자식 역할을 하는 UserControl입니다. Fafamama는 LayoutRoot의 Opacity를 조정하는 sbShow란 Storyboar..

Silverlight/Experiment 2008.07.09 (2)

[Remake] MediaElement 동시사용의 한계는 123개다.

이전 포스트를 Silverlight 2 Beta 2 버전으로 포팅하였습니다. 리듬잇 같은 BMS류의 게임을 Silverlight로 제작하다가 발견한 문제입니다. 예를 들어 어떤 곡에서 270여 개의 음원을 사용하는 이유로, 이 음원에 대한 MediaElement를 미리 270개 생성해 놓고 사용하고자 하였습니다. 그 곡을 재생시켜보자 군데군데 연주되지 않는 음이 발견되었습니다. 왜그런가 테스트를 해보다가 123번째 MediaElement 이후에 생성된 MediaElement들은 Play() 메서드가 제대로 작동하지 않는 것을 발견하였습니다. 시뮬레이션 다음은 직접 문제를 체험해 볼 수 있는 샘플입니다. 스피커를 켜고 테스트를 해 보십시오. 소스 아래 링크를 클릭하여 다운 받으십시오. 실험의 결론 Silv..

crossdomain.xml과 clientaccesspolicy.xml 샘플

crossdomain.xml과 clientaccesspolicy.xml 파일은 아시다시피, 크로스 도메인 접근을 가능 여부를 설정하는 파일입니다. '무엇에 쓰는 물건인고?' 더 궁금하신 분은 공도님이 실버라이트 2 Beta 1 시절에 정리한 포스트가 있으니 참고 바랍니다. xml 파일 내용은 변경되었지만, 큰 틀은 같습니다. 매번 필요할 때마다 웹서핑하는게 좀 소모적인 것 같아서, 블로그에 세간살이로 들여 놓습니다. clientaccesspolicy.xml crossdomain.xml 출처 : How to: Make a Service Available Across Domain Boundaries

Silverlight/Experiment 2008.06.26 (5)

[삽질을덜하자!] FullScreenChanged Event 너무 믿지 마세요.

2009년 5월 7일 내용 추가됨 - 시작 아래 글은 Silverlight Beta2 시절에 작성된 글로 현재 Silverlight 2 정식 버전에서는 해당 문제가 발생하지 않습니다. 2009년 5월 7일 내용 추가됨 - 끝 개요 오늘은 Application.Current.Host.Content.FullScreenChanged 이벤트에 대해서 한 말씀드리려고 합니다. 실버라이트 2 버전에서부터 Grid 등의 등장과 함께 화면구성하기가 용이해 졌습니다. 예를들어 LayoutRoot의 Width, Height를 Auto로 설정하고, HorizontalAlignment, VerticalAlignment를 Stretch로 설정하고, Margin 적당히 주면, 어떤 화면 사이즈에서도 척척 알아서 변하는 UI로 꾸..

퍼가기 시의 Application.Current.Host.Source의 각종 프로퍼티 확인

실험의 목적 Application.Current.Host.Source의 주석은 아래와 같습니다. // Summary: // Gets the URI of the XAML file that specifies the XAML content to render. // // Returns: // The URI of the XAML file or XAML scripting tag that contains the content // to load into the Silverlight plug-in. Generally, this is a reference to a // XAML file. The URI can also be an inline XAML reference using the "#" prefix; // see ..

한 Silverlight Page 내에서 정상작동하는 MediaElement의 개수는 123개다.

리듬잇 같은 BMS류의 게임을 Silverlight로 제작하다가 발견한 문제입니다. 예를 들어 어떤 곡에서 270여 개의 음원을 사용하는 이유로, 이 음원에 대한 MediaElement를 미리 270개 생성해 놓고 사용하고자 하였습니다. 그 곡을 재생시켜보자 군데군데 연주되지 않는 음이 발견되었습니다. 왜그런가 테스트를 해보다가 123번째 MediaElement 이후에 생성된 MediaElement들은 Play() 메서드가 제대로 작동하지 않는 것을 발견하였습니다. 시뮬레이션 다음은 직접 문제를 체험해 볼 수 있는 샘플입니다. 스피커를 켜고 테스트를 해 보십시오. 소스 아래 링크를 클릭하여 다운받으십시오. 실험의 결론 Silverlight 2 Beta1에서는 123개 이하의 MediaElement만 만들..

네이버 지도 API와 실버라이트

3) 상업용 사이트에서 사용가능합니까? 가능합니다. 다만, 사전에 별도의 제휴를 통해서만 가능합니다. 네이버 Open API 제휴를 참고하세요. 5) 지도 API 를 통하지 않고 지도 이미지를 사용할 수 있습니까? 사용할 수 없습니다. 지도 이미지는 반드시 지도 API 를 통해서만 제공되는 형태로 웹 사이트에 사용할 수 있습니다. 6) 지도를 표시하는 사이트가 1일 50,000 페이지 이상의 요청에 응답할 수 있습니까? 현재로서는 1일 50,000 페이지 요청으로 서비스 제공을 제한하고 있습니다. 향후, 사용 가능한 요청수는 변경될 수 있습니다. 단, 일일 제한량을 초과하는 활용은 네이버 Open API 제휴를 통해서 제공됩니다. 왠만한 문제를 제휴를 통해서 해결한다고 가정했을 때, 5번 항목이 조금 걸..

Silverlight/Experiment 2008.03.14 (2)

QuadTree

지도, Deep Zoom 등 2차원 솔루션에서, 정보의 구축과 검색을 원활히 하기 위해서, QuadTree 형식의 자료 구조가 구현되는 것이 바람직합니다. 예를들면 방대한 영역에 존재하는 데이터 중, 보이는 화면영역에 해당하는 데이터만 빨리빨리 찾아와야 할 때 유용합니다. QuadTree는 4개의 자식을 갖는 트리구조입니다. 평면을 계속 4분할해 나가면서 트리가 구성됩니다. 1개의 Cell은 maximum capacity를 가지고 있어서, 그 값이 넘게 자식이 존재해야할 필요성이 있을 때 또 분할됩니다. 수직선, 수평선이란 자식까지 정의하여 총 6개의 자식을 갖도록 설계하는 경우도 있습니다. (CAD/CAM 프로그래밍 할 때 그렇게 했었음.) 한번 이렇게 구성된(Build) QuadTree는 영역에 대한..

Silverlight/Experiment 2008.03.12 (1)

Silverlight 2 디버깅 중 중단점 안먹을 때 시도해 볼 것

ClientBin, bin 디렉토리 내용물 지우기, '다시 빌드' 해보기, VS2008 종료 후 재실행, 컴퓨터 리부팅 위와 같은 민간요법을 주로 애용 했었는데요. 이렇게 해도 안되면 Project를 아예 새로 만들었던 과격프로그래머!!! 웹사이트 속성에서 해결 할 수 있는 것을 공도님한테 배웠습니다. 속성창에서 Start Options 항목의 Debuggers Group에서 Silverlight 체크박스에 체크를 합니다. (원래 이 항목은 실버라이트 기본프로젝트 만들 당시에 체크가 되어있습니다. 허나 무슨 이유에서인지 쓰다가 이런 문제가 있어서 보면 해제되어 있습니다. -_-;;; 해제되는 단축키라도 있는거야????) 이렇게 하고 나니 다시 중단점에서 프로세스가 잘 걸리네요. 모르면 손발이 두잇이죠....