2012년 10월 29일 월요일

EWS Managed API를 이용한 연락처 정보 가져오기

MS Exchange Web Service Managed API

MS Exchange Web Service Managed API를 이용하면 EWS를 쉽게 이용할 수 있다. 아는게 없어 SOAP 정보를 하나 하나 분석해가며 사용했던 기억이 새록 새록..

여기서 API를 다운로드하고 실행하면 Program Files\Microsoft\Exchange\Web Services 폴더에 1.2와 2.0 버전의 API가 설치된다. 2.0 폴더의 Microsoft.Exchange.WebServices.dll 을 프로젝트에 참조하고 시작한다.

// 기본 버전은 Exchange2010_SP2 이다. 
ExchangeService service = new ExchangeService(
    ExchangeVersion.Exchange2007_SP1)
{
    Credentials = new WebCredentials("id", "pwd", "domain"),
    Url = new Uri("http://contoso.com/EWS/exchange.asmx")
};

// 연락처 폴더를 바인딩.
var contacts = Folder.Bind(service, 
    new FolderId(WellKnownFolderName.Contacts));

FindItemsResults findResults = service.FindItems(
    WellKnownFolderName.Contacts, 
    new ItemView(contacts.TotalCount));

foreach (var each in findResults)
{
    if (each is Contact)
    {
        Contact contact = each as Contact;
        // contact 변수를 이용해 연락처 정보를 가져온다.
    }
}


위 코드에서는 연락처 정보를 가져왔지만 (WellKnownFolderName.Contacts), 어떤 폴더를 바인딩 하냐에 따라 메일, 캘린더, 작업 등 다양한 아이템들을 가져올 수 있다. 참고로 WellKnownFolderName 구조체의 정의는 다음과 같다.

namespace Microsoft.Exchange.WebServices.Data
{
    public enum WellKnownFolderName
    {
        Calendar = 0,
        Contacts = 1,
        DeletedItems = 2,
        Drafts = 3,
        Inbox = 4,
        Journal = 5,
        Notes = 6,
        Outbox = 7,
        SentItems = 8,
        Tasks = 9,
        MsgFolderRoot = 10,
        [RequiredServerVersion(ExchangeVersion.Exchange2007_SP1)]
        PublicFoldersRoot = 11,
        Root = 12,
        JunkEmail = 13,
        SearchFolders = 14,
        VoiceMail = 15,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        RecoverableItemsRoot = 16,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        RecoverableItemsDeletions = 17,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        RecoverableItemsVersions = 18,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        RecoverableItemsPurges = 19,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRoot = 20,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveMsgFolderRoot = 21,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveDeletedItems = 22,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRecoverableItemsRoot = 23,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRecoverableItemsDeletions = 24,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRecoverableItemsVersions = 25,
        [RequiredServerVersion(ExchangeVersion.Exchange2010_SP1)]
        ArchiveRecoverableItemsPurges = 26,
    }
}


참고

2012년 10월 24일 수요일

[iOS] 통신사 정보 및 국가 코드 가져오기

CoreTelephony 프레임워크의 CTTelephonyNetworkInfo, CTCarrier 클래스를 이용해 기기의 통신사 정보를 가져올 수 있다. 프로젝트에 CoreTelephony.framework 를 등록하고 다음 코드를 추가한다.

#import <CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>

CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [networkInfo subscriberCellularProvider];
    
NSLog(@"Carrier Name : %@", [carrier carrierName]);
NSLog(@"MNC : %@", [carrier mobileNetworkCode]);
NSLog(@"MCC : %@", [carrier mobileCountryCode]);
    
[networkInfo release];

통신사 식별자로 사용되는 MNC (Mobile Network Code)와 국가를 식별하는 MCC (Mobile Country Code)는 각 각 2~3자리의 숫자로 이루어져 있다. 각 코드가 나타내는 국가 및 통신사는 아래 Mobile Network Code 참조에서 확인하면 된다. 참고로 한국의 MCC는 450이고, SKT의 MNC는 11, KT는 08이다.

시뮬레이터에서 실행하면 모두 nil로 표시된다. 디바이스에서 실행하면 다음과 같은 결과를 확인할 수 있다.
Carrier Name : KT
MNC : 08
MCC : 450


참고



2012년 10월 12일 금요일

맥북프로에서 CD, DVD, USB로 부팅하기

부트캠프로 윈도8을 설치하고서 파티션 가지고 장난치다기 하드 전체를 날려 먹었다.
눈물을 머금고 OS X부터 재설치하려 하는데 DVD부팅이 안된다. PC 같으면 Del, F2, F11 중 하나일텐데?..

구글링 해보니 맥에도 비슷한 부팅 관련 기능들이 있었다.
부팅 중에 "C" 키를 누르면 CD, DVD 또는 USB로 부팅이 가능하다.

이 외에 많은 부팅 옵션들이 있으니, 자세한 내용은 다음 링크에서 확인할 수 있다.

Intel 기반 Mac의 시동 키 조합

2012년 10월 9일 화요일

Visual Studio 2012 설치 중 멈춤 현상

부트캠프를 이용해 Windows 8 Pro를 설치한 맥북 프로에 Visual Studio 2012를 설치하면 맥북이 멈춰버리는 현상이 발생한다. 몇 번을 설치해봐도 동일한 증상이 발생한다. 구글링해보니 동일한 증상으로 고생하는 사람들이 있었다.

이유는 잘 모르겠지만, 해결 방법만 대충 정리해둔다. 참고로 맥북 프로는 2010년 17인치 모델이다.

1. 그래픽 카드 드라이버를 최신으로 업데이트 한다.
2. 명령 프롬프트를 관리자 권한으로 실행하여 다음 명령어를 입력한다. (어떤 역할의 명령어인지는 모른다..-_-)

bcdedit /set disabledynamictick yes


이 후 설치는 정상적으로 잘 진행된다. 참고하시길.