동적 사용자의 Push Notification 등록


목차
  1. 파워쉘로 사용자 정보 알아내기
  2. Push Notification 등록 요청


 여러 익스체인지 서버가 동시에 서비스가 되고 있고 Active Db, Passive Db가 서로간의 서버간에 복제가 되도록 구성이 되었을 때 Push Notification을 어떻게 등록할 것인지에 대한 한정된 주제에 대해서만 언급하도록 하겠다. 이 제한된 구성은 수 많은 MBX서버가 고 가용성을 위해 다른 서버에게 복제가 되도록 구성이 된 구조에서 파워쉘을 이용해 Active 된 Database 사용자만을 가져와 Push notification을 요청 하도록 한다.


 이제 진행해 보도록 하자. MBX 서버에는 내부적으로 Active mode Database가 있고 Passive mode Database가 존재하고 있다. 그중에서 메일을 직접적으로 받고 있는 사용자는 Active mode Database에 있는 사용자만이 익스체인지 MBX에서 메일을 받고 처리하며 받은 메일에 대해서 다른 서버에 복제되도록 구성된 Database에 복사가 된다. 그렇다면 현재 서버에서 Active mode의 Database를 가져오는 방법을 우선 알아야 할 것이다. 아래 '코드1'과 같은 방법으로 활성화된 Database를 가져올 수가 있다.

Get-MailboxDatabaseCopyStatus -active | select-object DatabaseName

[코드1] Active mode Database


 이 코드를 수행하면 현재 서버에서 활성화된 Database를 알수가 있다. ( DatabaseName만 필요하기에 Select-Object를 통해 필터링을 하였다 )



[그림1] '코드1'의 수행 결과


 이렇게 알아낸 DatabaseName중에 'HADB01' 사용자의 정보를 알아 내는 구문은 '코드2'와 같이 실행하면 나온다.


Get-Mailbox -Database "HADB01"

[코드2] 사용자 알아 내기




[그림2] 사용자 알아내기 수행 결과 화면


 위와 같은 방법으로 현 서버에서 작업이 되는 사용자의 정보를 알아 낼 수 있게 되었다. 이 정보를 가지고 Push Notification 하는 방법은 다음 포스트에서 이어 가도록 하겠다.





ManagementEventWatcher Process monitoring


참조 URL
  1. ManagementEventWatcher class
  2. ManagementObjectSearcher class
  3. ManagementScope class
  4. SelectQuery class
  5. ObjectQueryObjectQuery<T>


 이 포스트에 있는 내용이 언제나 확실한 정답은 아닙니다. 진실이라고 생각해 왔던 전제가 시간의 지남에 따라 들어나지 않았던 다른 이면 때문에 좋은 방향으로 이끌어 낼 수 있는 역할로 변환 되는게 역사적으로도 많은 증명 있었습니다. 그렇지만 저는 현재 상황에서 최선의 답을 찾고자 노력하였으며 이 글을 읽는 다른 분들에게 다음 길을 갈 수 있도록 도와주는 디딤돌이 되고자 노력하고자 포스팅을 통해 공유하고자 하는 것입니다. 그리고 프로그래머라는 타이틀을 달고 살아야 한다면 "왜"라는 의문을 항상 가지고 다니면서 자신의 위치에 안주하지 않고 항상 노력하는 모습으로 살아 가고자 합니다. 언제든 지적이나 오류가 있으면 피드백 부탁 드리겠습니다.

ing™       



2013/05/03 - [기타] - [WMI] ManagementObjectSearcher Process monitoring - 프로세스 모니터링


 이 포스트에서는 이미 실행되어 있는 프로세스에 대한 정보에 대해서 처리하는 내용이었다면 이번 포스트는 이벤트 방식으로 새로 실행되거나 종료될 때 처리할 수 있는 방안이다. 아래 '코드1'은 이벤트를 선언하는 부분이다.

// 모니터링 하고자 하는 프로세스 명 string monitoringProcessName = "notepad.exe"; // 이벤트 객체 선언 ManagementEventWatcher startWatcherProcess; //// Nodepad process가 시작할 때 이벤트 처리 startWatcherProcess = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace WHERE ProcessName = '" + monitoringProcessName + "'"));   // WHERE ProcessName = 'microsoft.exchange.store.worker.exe' startWatcherProcess.EventArrived += startWatcher_EventArrived; startWatcherProcess.Start();

[코드1] 이벤트 선언 및 Query 구문 적용


 위 '코드1'은 노트패드의 프로세스가 시작이 되면 이벤트를 발생하도록 구성 되었다.


static void startWatcher_EventArrived(object senderEventArrivedEventArgs e) {     Console.WriteLine("Process started: {0}, {1}"e.NewEvent.Properties["ProcessName"].Valuee.NewEvent.Properties["ProcessID"].Value); }

[코드2] 시작 이벤트 처리 핸들러


 위와 같이 이벤트가 발생하면 핸들러에서 수행을 하여 처리할 수 있을 것이다. '코드1'의 Query 구문과 같이 시작 이벤트를 받을 수 있다면 종료 이벤트에 대해서도 받을 수 있도록 수정할 수 있다. "Win32_ProcessStartTrace"와 같이 Start 대신에 "Win32_ProcessStopTrace"와 같이 수정해 주면 종료 이벤트에 대해서도 처리할 수 있다.


소스 코드 자체에 주석과 직관적인 코딩으로 충분히 파악이 가능할 것으로 예상하므로 별도의 설명을 생략하도록 하겠습니다. 포스트의 내용이 장황한 설명 보다는 주석과 소스코드 자체 만으로도 이해할 수 있도록 하기 위해 노력하였습니다. 실 개발에서도 적용할 수 있도록 간단하면서도 현실적인 예제 프로그램을 통해 각 소스를 만들고 이해 시키고자 하였으며 실무에 필요한 개발요구 사항들을 해결 하는데 도움이 되고자 노력하였습니다. 그리고 소스와 같이 있는 주석을 이용해 nDoc이나 별도의 자동 Document 제작 유틸로 API 문서를 만드는 데에도 도움이 되었으면 한다. 
※ DOC에 대한 프로그램 정보 Util link

ing™       


ManagementObjectSearcher Process monitoring


참조 URL
  1. Windows Management Instrumentation ( WMI )
  2. WMI .NET 개요
  3. WMI 스크립팅 입문
  4. ManagementObjectSearcher class
  5. ManagementEventWatcher class
  6. ManagementScope class
  7. SelectQuery class
  8. ObjectQueryObjectQuery<T>

 

 이 포스트에 있는 내용이 언제나 확실한 정답은 아닙니다. 진실이라고 생각해 왔던 전제가 시간의 지남에 따라 들어나지 않았던 다른 이면 때문에 좋은 방향으로 이끌어 낼 수 있는 역할로 변환 되는게 역사적으로도 많은 증명 있었습니다. 그렇지만 저는 현재 상황에서 최선의 답을 찾고자 노력하였으며 이 글을 읽는 다른 분들에게 다음 길을 갈 수 있도록 도와주는 디딤돌이 되고자 노력하고자 포스팅을 통해 공유하고자 하는 것입니다. 그리고 프로그래머라는 타이틀을 달고 살아야 한다면 "왜"라는 의문을 항상 가지고 다니면서 자신의 위치에 안주하지 않고 항상 노력하는 모습으로 살아 가고자 합니다. 언제든 지적이나 오류가 있으면 피드백 부탁 드리겠습니다.

ing™       


 윈도우 서비스나 데스크탑 프로그램을 개발하다 보면 실행되고 있는 프로세스를 검사하여 체크해야 하는 경우가 있었을 것이다. 다른 방법도 있겠지만 이번 포스트에서는 WMI를 이용해서 알아내는 방법을 살펴 보기로 하겠다. 아래와 같은 코드를 통해서 특정 프로세스의 상태에 대해서 조회를 할 수 있다.

// 모니터링 하고자 하는 프로세스 명 string monitoringProcessName = "notepad.exe"; // 실행할 쿼리를 구성한다. string queryString = "SELECT Name, ProcessId, Caption, ExecutablePath FROM Win32_Process WHERE Name = '" + monitoringProcessName + "'"; // 쿼리 생성 SelectQuery query = new SelectQuery(queryString); // 관리 작업의 범위  ManagementScope scope = new ManagementScope(@"\\.\root\CIMV2"); // 관리 객체의 컬렉션 검색자 ManagementObjectSearcher searcher = new ManagementObjectSearcher(scopequery); // WMI를 통해 검색된 다른 관리 개체 컬렉션 ManagementObjectCollection processes = searcher.Get(); foreach (ManagementObject process in processes) {     Console.WriteLine("ProcessId : {0}, Program Name : {1}"Convert.ToInt32(process["ProcessId"]), process["Name"].ToString()); }

[코드1] 프로세스 조회


 이와 같이 실행하였을 때 노트패드가 실행되어 있다면 ProcessId와 프로그램명을 출력해 줄 것이다.



소스 코드 자체에 주석과 직관적인 코딩으로 충분히 파악이 가능할 것으로 예상하므로 별도의 설명을 생략하도록 하겠습니다. 포스트의 내용이 장황한 설명 보다는 주석과 소스코드 자체 만으로도 이해할 수 있도록 하기 위해 노력하였습니다. 실 개발에서도 적용할 수 있도록 간단하면서도 현실적인 예제 프로그램을 통해 각 소스를 만들고 이해 시키고자 하였으며 실무에 필요한 개발요구 사항들을 해결 하는데 도움이 되고자 노력하였습니다. 그리고 소스와 같이 있는 주석을 이용해 nDoc이나 별도의 자동 Document 제작 유틸로 API 문서를 만드는 데에도 도움이 되었으면 한다. 
※ DOC에 대한 프로그램 정보 Util link

ing™       



Ajax Control Toolkit Release


참조 URL
  1. Ajax Control Toolkit
  2. http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/Default.aspx
  3. Tutorials

 

 ASP.NET MVC 기반에서 개발을 하고 있다면 한번 사용해 보자. 오래전 부터 개발이 진행되고 있었고 최근에 릴리즈가 되었다. Ajax 관련 서버 컨트롤들을 쉽게 사용할 수 있도록 지원하는 컨트롤이다.




Windows Azure Training Kit - April 2013


참조 URL
  1. Azure Training kit download
  2. Windows Azure Training Kit - April 2013 Available



  • Windows Azure Mobile Service와 안드로이드
  • Windows Azure Mobile Service 윈도우폰
  • Windows Azure HDInsight Service 소개
  • ITPro 업데이트 및 새로운 주제
  • Windows Azure Web sites, Windows Azure Virtual machine, Windows Azure mobile services...

위 리스트가 추가 되었다.


아래 표는 원본 메시지다.

Overview

The Windows Azure Training Kit includes a comprehensive set of technical content including hands-on labs and presentations that are designed to help you learn how to use the latest Windows Azure features and services. 


April 2013 Update 

The April 2013 update of the Windows Azure Training Kit includes new content on Windows Azure HDInsight as well as updates to Mobile Service, IT Pro content, IT Pro Agenda and updates to service presentations to include content on new features. 

Content Updates: 

  • New Presentation: Windows Azure Mobile Services and Android
  • New Lab: Windows Azure Mobile Services and Android
  • New Lab: Windows Azure Mobile Services and Windows Phone
  • New Presentation: Introduction to Windows Azure HDInsight Service
  • New Lab: Introduction to Windows Azure HDInsight
  • Updated ITPro Content + Agenda
  • Updated Presentations for new feature support Windows Azure Overview, Windows Azure Web Sites, Windows Azure Virtual Machines & Windows Azure Mobile Services.



Instructions

The Windows Azure Training Kit is available in two formats: a full package and the web installer. 


Windows Azure Training Kit - Full Package (WATK-April2013.exe) 
The full package enables you to download all of the hands-on labs and presentations to your local machine. To use the full package, simply download and run the WATK-December2012.exe. This file is a self-extracting executable that will extract all of the training kit files to the directory you specify. After the content is extracted, the starting page for the training kit will be displayed in your default browser. You can then browse through the individual hands-on labs, demos, and presentations. 

Windows Azure Training Kit - Web Installer (WATK-WebInstaller.exe) 
The Web Installer allows you to select and download just the specific hands-on labs and presentations that you need. The Web Installer is a much smaller download so it is recommended in situations where you cannot download the full package. To use the Web Installer, simply download and run WATK-WebInstaller.exe. The Web Installer will then display a list of the content in the training kit. You can then select the hands-on labs and presentations to download. After selecting the content proceed through the steps in the application to download the files to the directory that you specify. 

Windows Azure Training Kit on GitHub 
In addition to downloading the training kit contents, you can also browse through the content, report any issues with the content, and make your own contributions on GitHub. You can find the training kit content on GitHub at http://windowsazure-trainingkit.github.com 


 



jQuery 1.9.1


참조 URL
  1. jQuery Download

 

- jQuery 1.9.x 버전은 ie 8 이하 버전을 지원하는 라이브러리


- jQuery 2.x 버전은 ie9 이상부터만 지원하는 라이브러리





jquery-1.9.1.zip



이 파일은 위의 네개의 파일을 포함하고 있다.


intellisense.js 파일을 구하기 어려워서 혹시 필요하신 분들을 위해 여기에 올려 놓습니다.

WebMatrix 3


참조 URL
  1. WebMatrix 3 preview - http://www.microsoft.com/web/webmatrix/next/

 

 WebMatrix 3의 프리 릴리즈 설치하여 사용해 볼 수 있다.

새로운 기능으로 Windows Azure 계정과 연동되는 것과 소스를 관리하는 TFS, Git이 추가 되었다.





(''+[][[]])[!+[]+!+[]] + (''+[][[ ~



 잠깐 쉬어가는 것 처럼 두뇌의 여흥을 즐겨 보자.


아래와 같은 코드를 한번 보자~


이게 실행이 될 수 있는 코드일까라는 생각이 처음 들었다. 그리고 어떤 결과 값이 나올지 예상 하지도 못하였다.


(''+[][[]])[!+[]+!+[]] + (''+[][[]])[!+[]+!+[]+!+[]] + (''+[][[]])[!+[]+!+[]+!+[]+!+[]] + (''+[][[]])[!+[]+!+[]+!+[]+!+[]+!+[]] + (''+[][[]])[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]] + (''+[][[]])[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]


위 코드만으로 결과값을 예상할 수 있을까?



[코드] Javascript 코드


 어떤 방식으로 동작하는지 궁금해 하나하나 떼어내어 분석해 보았더니 생각보다 단순한 구조로 되어 있다. 구조를 알게 되면 생각보다 간단하게 조합할 수 도 있다. 배열이니까~


결과 값이 궁금하다면 직접 실행해 보기 바란다. ^^ㅋ



이와 같은 유형의 코드를 처음 접한건 아래 코드다. 이복영 강사님이 처음으로 알려 주셨다.


[코드] Javascript 코드


이 코드의 결과값은 'daniel15'로 얼럿이 뜬다. 별로 어렵지 않으니 직접 실행해 보면 답을 알 수 있을 것이다.


Responsive Multi-Level Menu


참조 URL
  1. http://tympanus.net/Development/ResponsiveMultiLevelMenu/index5.html

 

 메뉴 구성에 필요한 라이브러리.




+ Recent posts