프로그래밍을 하다보면 쓰레드를 사용할 일이 있습니다. 이상한 것은 쓰레드를 써야한다고 생각하면 꼭 MSDN을 다시 보게 된다는 것입니다. 막상 코딩을 하려 하면 막 헷갈려요. 저만 그런가요? 

한빛 미디어 사이트에 C# 쓰레드에 관한 좋은 글이 있어서 소개합니다. 저자는 한동훈님이고 아마 C# 에센스라는 책에 있는 내용이 아닌가 생각됩니다. 작성일이 2001년 11월 인데도 아직도 내용은 살아 있습니다. 초보 개발자나 저처럼 머리가 굳어가서 기억이 가물거리는 개발자들에게 도움이 될 것 같습니다. 


WRITTEN BY
ONESTONE

트랙백  1 , 댓글  0개가 달렸습니다.
secret
트위터의 링크를 타고 들어온 손정의 소프트뱅크 향후 30년 비전 발표 영상을 보고 큰 감동을 얻어 공유 합니다. 
동영상을 만들고 번역까지 해준 하늘달빛님에게 감사 드립니다. 

(동영상 제작 : 하늘달빛 – 트위터, 블로그)

'통섭'이라는 말이 실감 될 정도로 많은 분야의 지식과 진정성이 묻어 있는 진지한 고민을 느낄 수 있었습니다. 과연 손정의 회장이 말하는 30년 후의 모습, 300년 후의 모습이 실현될지... 30년 후의 모습이 그렇다면 나는 어떻게 살아야 하는지 고민을 해봤습니다. 사람을 행복하게 하겠다는 깊은 철학이 소프트뱅크의 30년 후를 빛내 줄 것이라는 확신이 듭니다. 

후반부에 나오는 어린 시절이야기가 너무 절절해서 눈물이 날뻔했어요. 
소프트뱅크와 손정의 회장의 역사를 알고 싶어 졌습니다. 어떤 책이 있는지 추천해주세요. 


WRITTEN BY
ONESTONE

트랙백  1 , 댓글  0개가 달렸습니다.
secret

본 강좌의 원본은 훈스닷넷에 있습니다.

연재 리스트 

  1. Windows 7 멀티터치 시작하기
  2. 미리 정의된 9가지 제스쳐 지원하기 (WM_GESTURE)
  3. 멀티터치 Raw 데이터를 사용 (WM_TOUCH)
  4. Manipulation and Inertia 활용
  5. WPF4 멀티터치 프로그래밍
  6. 실버라이트 4의 멀티터치 프로그래밍

Windows 7이 실버라이트와 결합되면 웹에서도 멀티터치가 가능하도록 만들 수 있다. 물론 Windows 7 운영체제에 종속적이지만 브라우저를 통해서 웹 응용프로그램에서 멀티터치를 경험할 수 있는 길이 열렸습니다. 아래 그림을 살펴보면 멀티터치 입력이 어떤 과정을 통해서 실버라이트 응용프로그램까지 전달 되는지 알 수 있습니다. 윈도우 7의 멀티터치 데이터는 웹 브라우저에 전달이 되고 웹 브라우저는 그 데이터를 다시 실버라이트로 전달하는 구조입니다. 그러므로 웹 브라우저는 인터넷 익스플로러 외에 구글 크롬 등 다른 브라우저에서도 정상적으로 작동 됩니다.


출처 : MSDN

이전 강좌에서는 멀티터치를 윈도우 응용프로그램에 적용하기 위한 여러가지 방법을 소개했습니다. 하지만 실버라이트에서는 한가지 만 지원하는데 바로 Raw Data를 프로그래머에게 던져주는 것이죠. 결국 멀티터치 Raw Data를 가지고 개발자가 여러가지 제스쳐를 만들어야 합니다. 또한 UIElement 개체에 핸들러를 등록하여 처리하는 방식이 아닌 실버라이트 전체 응용프로그램에서 멀티터치 이벤트 핸들러를 등록한다는 것이 마우스와 같은 다른 입력방식과 다른 점입니다.

실버라이트3부터 Touch 라는 클래스가 지원 됩니다. 이 클래스는 FrameReported 라는 이벤트를 제공하는데 이 이벤트가 멀티터치를 처리합니다. 아래 코드와 같이 이벤트 핸들러를 등록하고 Action 값에 따라서 멀티터치의 Down, Move, Up을 처리 할 수 있습니다.

Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);

void Touch_FrameReported(object sender, TouchFrameEventArgs e)

{

foreach (TouchPoint tp in e.GetTouchPoints(_canvas))

{

if (tp.Action == TouchAction.Down) { }

else if (tp.Action == TouchAction.Up) {}

else if (tp.Action == TouchAction.Move) {}

}

}


실버라이트 멀티터치 소스코드 다운로드 : SilverlightMultitouchApplication.zip (Visual Studio 2008, Silverlight 3)


실버라이트의 멀티터치 입력은 기본적으로 '마우스 이벤트 승격'이 적용되는데 이것은 멀티터치 입력의 기본 동작이 마우스클릭으로 사용된다는 의미 입니다. 즉 버튼을 올려놓고 Click 이벤트 핸들러를 등록한 후 멀티터치로 그 버튼을 누르면 Click 이벤트 핸들러가 호출 됩니다. 

"마우스 이벤트 승격"이 특정 시나리오에서는 오히려 방해가 될 수도 있는데 그걸 막을 수 있는 방법을 제공합니다. 바로 TouchFrameEventArgs.SuspendMousePromotionUntilTouchUp() 메서드를 사용하면 됩니다. FrameReported 이벤트 핸들러에서 터치가 Down일때 호출해 주면 Up이 될 때까지 해당 터치에 대해서 "마우스 이벤트 승격"을 하지 않습니다.

이 테스트는 위의 소스코드에서 TouchFrameEventArgs.SuspendMousePromotionUntilTouchUp(); 호출부분을 찾아서 지우고 실행했을 때의 버튼 반응을 비교해 보면 알 수 있습니다. 아래 영상에서도 그 내용을 보실 수 있습니다.



이렇게 실버라이트는 멀티터치 Raw Data를 활용해야 합니다. 결국 프로그래밍을 통해서 제스쳐를 인식하거나 물리적인 시뮬레이션을 구현해야 하는 것이죠. 하지만 잘 찾아보면 참고할 자료들이 있습니다.

http://multitouch.codeplex.com/ 에서는 실버라이트에서 사용할 수있는 Manipulations and Inertia 를 구현한 샘플을 다운로드 받을 수 있습니다. Behavior 로 구현되어 있으니 쉽게 사용할 수있습니다. 라이브 데모를 제공하니 확인을 해보시고 소스코드도 살펴보세요.

WRITTEN BY
ONESTONE

트랙백  0 , 댓글  0개가 달렸습니다.
secret