기본 콘텐츠로 건너뛰기

C# 에서 Timer 사용할 때 주의할 점.

예전에 알고 지내시던 분의 질문을 받았다. Windows Forms 개발을 하는데, 주기적 (대략 1분)으로 데이터 요청을 하는 프로그램을 작성하기 위해서 Timer 를 사용하는데, 어떤 기능을 처리해야 하기 때문에 Sleep 을 같이 사용했다고 한다. 여기서 발생하는 문제는 Sleep 5초를 주었더니, Timer 까지 5초 동안 멈춘다는 것이다. Timer 라는 것은 기본적으로 시간의 흐름을 측정하는 기능이기 때문에 Sleep 을 했다고 해서 Timer 가 멈추는 일은 생겨서는 안된다. 그러나 실제 샘플을 만들어 보면 ... Timer 가 Sleep 만큼 동작이 멈추는 것을 확인할 수 있다. Windows Forms 는 UI Thread 를 사용하는 것으로 최적화 되어 있으며 여기서 Timer 를 쓰면 UI Thread 에 최적화된 System.Windows.Forms.Timer 가 사용된다. 여기서 문제의 발생이 시작되는 것이다. Sleep 을 사용하게 되면 UI Thread 가 Sleep 이 걸리기 때문에 여기에 속한 Timer 까지도 멈추는 것이다. 이런 문제를 해결하기 위해서는 System.Threading.Timer 를 사용해야 한다. 이 Timer 는 별도의 Thread 에서 동작하기 때문에 Sleep 의 영향을 받지 않는다. 언뜻 보면 쉬운 해결 방법인 것 같지만 Thread 가 분리되었기 때문에 Timer 가 돌아가는 Thread 에서 UI Thread 의 메서드나 컨트롤에 접근하기 위해서는 별도의 명령을 사용해야 하는 문제가 존재한다. 자~ 그럼 여기서 Timer 에 대해서 다시 한번 정리해 보도록 하자. .NET 에서 제공하는 Timer 들 .NET 에서는 기본적으로 3가지 Timer를 제공하고 있다. (MSDN) System.Windows.Forms.Timer - 사용자가 지정한 간격마다 이벤트를 발생시키며 Windows Forms 응용 프로그램에서 사용할 수 있도록 최적화 되어 있다. System...

wwahost.exe 가 뭘까?

윈도우 8 을 사용하다가 보니 처음보는 프로세스가 작업관리자에서 보인다. WWaHost.exe 요즘 같이 바이러스와 스파이웨어 등이 판을 치는 때에는 괜시리 의심의 눈초리가 간다. ㅠㅠ 검색 신공을 통해서 정체를 확인해 보니 Javascript 를 사용하는 Windows Store App 를 호스트하고 실행을 도와주는 프로세스였다. 하이브리드 앱을 공부하면서 Windows Phone 8 Hybrid App 샘플을 만들어 보면서 처음으로 확인한 것이다. 그러고 보니 뭔가 예전에 못 보던 것들이 많은 듯... -_- 이론적으로는 인터넷에서 정보를 받아서 처리하는 것들과 같은 내용은 Javscript 로 처리를 할 것이고, 매트로 UI 쪽은 Windows 8 에서 처리하게 될 것이므로 이를 연결해 주는 역할을 담당하는 것으로 예상이 된다. 기존에 svchost.exe 가 윈도우 서비스 부분을 호출하기 위한 것으로 사용된 것처럼 WWaHost.exe 는 앱에서 Javascript 를 실행하기 위한 것으로 생각하면 될 것 같다. 어쩌면 WWaHost 는 Windows Web app Host 일 것 같다는 생각을 해 본다!! 결국 WWaHost.exe 는 윈도우 8 에서 앱을 사용한다면 필수적인 프로세스라고 생각해야 한다. 오~ 이것이 주제에 nVidia Optimus 기능을 통해서 외장 그래픽으로 구동된다. ㅋ

2013년 IT 트렌드 및 활용 시나리오.

  출처 : MSDN Blog + 개인적인 의견 (?) 마이크로소프트가 올해도 어김없이 2013년 IT 동향을 발표하였다. 작년 IT 동향 은 “디바이스 + 서비스”, “앱, 웹”, “플랫폼 + 에코시스템” 의 세 가지 주요 동향을 소개 했었다. 2013년은 지금까지 동향 수준에서 논의된 개념들이 실제 시장에서 실효성이 있는지를 검증 받는 시작이 될 것으로 보인다. 현재 시장의 상황이 당면한 문제에 대한 구체적인 해법이 없이 상상 속의 혁신은 더 이상 존속될 수 없기 때문에 2012년에 발표한 3 가지 줄기와 8 가지 요소의 틀을 그대로 유지하면서 모빌리티 / 클라우드 / 소셜 / 빅데이터 라는 큰 관점에서 시장 동향을 요악하고 실제 다양한 조직에서 이런 상황에 무엇을 어떻게 도입하여야 하는지와 고려사항들을 5 가지의 시나리오로 요약하여 PSA (Platform Strategy Advisory) 프로그램으로 제공하고 있다. (발표 자료 원본: http://www.slideshare.net/JaeWooKim/it-trend-2013-and-scenario )   멀티스크린 모바일 플랫폼 현재 환경으로 보면 정보 관련업에 종사하는 인력들 중에서 95% 는 작업을 위한 장비를 최소한 하나라도 스스로 구매한다. 그리고 80% 는 사무실 이외의 장소에서 작업을 하고 있다. 또한 주당 3 ~ 4일은 모바일 / 스마트폰을 통해서 정보를 얻고 있다. 멀티스크린은 어플리케이션을 다양한 기기를 통해서 활용할 수 있는 것을 의미하며, 이미 여러 가지 단말 기기 뿐만 아니라 SmartGlass 등도 새로운 단말 기기로서 각광을 받는 시점이 되었으며 멀티스크린 구현은 디바이스 + 서비스의 연동 개념으로 구성된다. 하이브리드 앱은 HTML5 기술과 자체 OS 제공의 구성이고, 디바이스간의 호환성을 유지하기 위한 HTML5 도 모바일 앱 개발에서 영향력이 점점 더 커지고 있으며, 2012년에 79%의 모바일 개발자들이 앱 개발에 HTML5를 활용하...

Windows Azure 상의 Hadoop

  Introduction to Hadoop on Windows Azure Apache Hadoop 기반의 Azure 서비스는 클라우드 상에 클러스터들을 준비하고 배포하는 서비스로 빅 데이터를 관리하고, 분석하고, 결과를 리포팅하기 위해 설계된 프레임워크를 제공한다. “빅 데이터”는 점점 더 빠른 속도로 커지고 있는 데이터 볼륨이며, 구조화되지 않은 형식과 다양한 의미적인 변수들을 가지는 것을 의미한다. 빅 데이터 컬렉션 자체가 기업에 의미를 가지는 것은 아니며, 의미를 가지기 위해서는 다양한 소스들로부터 수집되고, 다양하게 조합되고, 정제되고, 분석되고, 액세스가 가능하도록 지능적이고, 통찰력이 있는 형식으로 제공되어야 한다. Apache Hadoop 는 빅 데이터를 관리하고 분석하기 위한 장치들을 가지는 프레임워크로 HDFS (Hadoop Distributed File System) 로 신뢰할 수 있는 저장소를 제공하는 것이 가장 중요한 기능이며, 저장된 데이터를 병렬로 처리하고 분석하기 위한 간단한 MapReduce프로그램 모델을 제공하고 있다. HDFS는 높은 가용성을 가지는 시스템으로 하드웨어 오류 문제를 해결하기 위해서 데이터 복제 기능을 사용하고 있다. 다양한 소스로부터 비 정형화 데이터를 분석하는데 발생하는 분석의 복잡성을 단순화 시키기 위해서 MapReduce 프로그램 모델은 Map 과 작업의 경감을 위한 추상화를 제공한다. 모든 데이터를 Key-Value 의 집합으로 계산할 수 있는 모든 방법이 가능하도록 지원하므로 입력과 출력이 되는 파일은 모두 Key-Value 쌍의 데이터 집합이어야 한다. 그리고 Pig 와 Hive 와 같은 Hadoop 과 연계된 다른 프로젝트들은 HDFS 와 MapReduce 를 기반으로 구성되어 있고, 이런 데이터들에 대한 warehousing 과 mining 뿐만 아니라 질의나 데이터의 흐름 제어와 같은 기능들에 대한 높은 추상화를 제공하고 있다. 물론 End to End 관리도 제공하고 있다. 클라우...