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
웹 사이트를 개발할 때 가장 고민되는 부분 중 하나가 페이징입니다. 보통 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
728x90
윈도우 폰 7 의 출시가 세달 정도 앞으로 다가왔습니다. 수많은 사람들이 새로운 세상을 꿈꾸며 윈도우 폰 7 을 기다리고 있을 것 같습니다. 이미 알려진 것처럼 윈도우 폰 7 에서는 C# 와 Silver Light 이 핵심 기술로 자리잡고 있습니다. 기존의 윈도우 모바일로 개발된 많은 UI / UX 들은 재활용되기 힘든 상황이지만 비지니스 로직이 C# 으로 되어 있다면 그나마 조금 나을 것 같습니다.

윈도우 폰 7 어플리케이션 개발을 위해 우리가 공부해야 할 것들이 참 많아 보입니다. 월간 마이크로소프트紙에도 6월부터 8월까지 세달에 걸쳐 윈도우 폰 7 개발 기초 강좌가 진행중이니 이걸 먼저 참조하면 좋을 것 같구요, 그 외 Silver Light 4 자체에 대한 학습을 위해 개론성격의 강의를 MS 의 김영욱 Evangelist 께서 만든 동영상이 있어 공유합니다. Techdays 2010 에서 공개된 영상이고 Silver Light 플러그인이 설치되어 있으면 바로 감상이 가능합니다 :-)



- NoPD -
728x90
728x90
지난 주말, iPhone OS 4 의 공개로 온세상이 들썩인 것 같습니다. 마이크로소프트가 윈도우 모바일의 멀티태스킹으로 인한 문제점들을 없애기 위해 파격적으로 공개한 윈도우 폰 7 의 한정적인 멀티태스킹이 빛이 바래는 느낌입니다. 애플의 엄청난 마케팅과 기술 파상공세에 전세계가 행복한 비명을 지르는 것 같습니다.

이번에 새롭게 공개된 iPhone OS 4 에 발맞추어 새로운 iPhone SDK 4 도 공개가 되었습니다. 1500개 이상의 새로운 API 들이 추가가 되었다고 하니 벌써부터 설레이시는 분들이 많을 것으로 생각됩니다. 자세한 내용은 애플 개발자 사이트에서 확인하시지요!


- NoPD -
728x90

+ Recent posts