728x90
이미 아시는 분들은 패스하셔도 되는 포스팅입니다. ^^ OAuth 라고 들어보신 분들 많으시죠? 하지만 관련한 도큐멘테이션을 하나씩 읽으려고 하다 보면 몇 장 못넘기고 포기하신 분들도 꽤 많을 것 같습니다. 트위터 서드파티 라이브러리를 검색하다가 많은 라이브러리들이 LinkedIn 의 에반젤리스트가 작성한 OAuth 에 대한 가이드를 올려둔 슬라이드 쉐어를 많이 공유하고 있더군요. 그래서 가볍게 업어 왔습니다 ^^ 한번 읽으면 잘 이해 안되는 부분도 많겠지만 두번, 세번 읽으면 감이 좀 오실지도 모르겠습니다! (사실 저도 감잡고 있다는 ㅋ)


어떠신가요? 그래도 간단하게 설명된 축에 속하는 문서라고 생각됩니다. 실제로 OAuth 인증을 받는 코드를 만들어 가시면서 보다 세세한 부분들을 보게 되시겠지만 큰 흐름을 먼저 잡는 용도로 안성 맞춤입니다. 뒷부분 슬라이드는 LinkedIn 의 API 에 대한 것들이니 앞서 얻은 Key 과 String 들을 어떻게 쓰는지를 중심으로 보시면 됩니다.


OAuth 의 흐름도는 위와 같습니다. 트위터에서 업어온 그림인데 조금 작습니다 ^^; 크게 3가지 단계로 나뉜 인증 과정을 숙지하고 어떤 Key 가 어떤 상황에서 사용하는지를 중심으로 한번 보시면 되겠습니다. 위의 슬라이드 쉐어에서 이야기한 내용들을 이 흐름도에 한 번 매핑해 보시면 좋을 것 같습니다.


- NoPD -
728x90
728x90
C# 3.0 에서 새롭게 도입된 Lambda 표현식을 사용하면 코드를 정말 간단하게 표시할 수 있는 장점이 있습니다. 델리게이트가 세상에 처음 나타난 이래 이는 정말 많은 프로그램과 개발자들에게 형언할 수 없는 아름다운 생활을 할 수 있는 "기회"를 주었습니다. 물론... 기회에는 반대급부가 따랐지만 말이죠.. 쿨럭... 여튼... 아래의 간단한 세가지 코드를 보면서 코드가 아름다워지는 광경을 한번 보도록 하겠습니다.

Named 메서드의 사용
IEnumerable<string> filteredList = cities.Where(StartsWithL);

public bool StartsWithL(string name)
{
    return name.StartsWith("L");
}

자주 보시던 스타일의 코드입니다. cities 어레이에 들어 있는 값들 중 L 로 시작하는 값을 얻어오는 코드지요. string 클래스의 확장 메서드인 Where 의 도움을 받아 StartsWithL 메서드가 Where 절의 역할을 하고 있습니다.

익명 Delegate의 사용

별도로 메서드를 만들어서 호출하는 것도 나쁘지 않습니다만 이왕이면 코드를 간결하게 유지하기 위해 익명 Delegate를 많이들 사용하실 겁니다. Named 메서드 사용하던걸 익명 Delegate 로 바꿔보겠습니다.

IEnumerable<string> filteredList = cities.Where(
            delegate(string s)
            {
                return s.StartsWith("L");
            }
일단 메서드가 하나 줄어서 기분이 좋습니다 ^^; 익명 Delegate 를 이용해서 위처럼 간단하게 inline 으로 처리를 할 수 있습니다. 그런데 코드가 지저분한 것이 별로 보기가 좋지 않습니다. 이를 람다 표현식으로 바꾸어 보도록 하겠습니다

Lambda 표현식의 사용

IEnumerable<string> filteredList = cities.Where(s => s.StartsWith("L"));
아주 깔끔하게 한줄러 코드를 줄였습니다. 닷넷이 제공하는 컴파일러는 생각보다 똑똑해서 s 라는 변수가 당연히 cities의 타입을 따라간다는 것을 알고 있습니다. 인텔리센스도 실시간으로 당연히 잘 동작하겠지요.

- NoPD -
728x90
728x90
빠릅니다 :-) 한국 시간으로 오늘 새벽 SDK 4.1 버전의 세번째 베타가 발표되었습니다. 요즘 Objective C 와 Xcode 그리고 아이폰 개발 관련하여 닷넷쪽 F/U 건이 많아 조금 소강상태인데요, SDK 는 주구장창 버전이 올라가고 있어서 조금 조바심이 나네요 ㅎ.


자, 애플 개발자 사이트로 달려가 봅시다! (http://developer.apple.com)

- NoPD -
728x90
728x90
웹 사이트를 개발할 때 가장 고민되는 부분 중 하나가 페이징입니다. 보통 MS-SQL 에서는 중첩 쿼리를 이용하여 TOP n 스타일의 쿼리를 하는 경우가 많은데, 퍼포먼스 측면에서 아주 쥐약인 경우가 많습니다. 오늘 소개해 드리는 페이징 쿼리는 일단 속도가 그리 느리지 않고 중첩 쿼리에 비해 부하가 적을 것으로 추정(!)하고 있습니다 ^^;

with rn
as
(
select EmailAddress, ROW_NUMBER() over (order by FirstName desc) as rn
  from Person.Contact
)
select FirstName, LastName, rn
  from Person.Contact join rn on Person.Contact.EmailAddress = rn.EmailAddress
 where rn between 5 and 10
with 문을 이용하여 ROW_NUMBER() 로 항목에 넘버링을 한 다음 필요한 구간을 where 절에 기술하여 페이징하는 방식입니다. Execution Plan 으로 봤을 때 비용이 많이 들지 않는 것 같습니다만 실제로 효과가 있는지는 실데이터로 적용해서 돌려봐야할 것 같습니다 ^^ 참고로 위의 예제는 AdventureWorks  샘플 DB 를 사용했습니다.

- NoPD -
728x90

+ Recent posts