Visual Studio 2008과 새로운 개념들

Visual Studio 2008과 새로운 개념들 나머지

2007/12/17 13:35

http://blog.naver.com/muscly/60045421800

[Visual C++ 2008]

http://msdn2.microsoft.com/en-us/library/bb384632(VS.90).aspx

 

# /MP 옵션이 빌드 시간을 감소 ( Build with Multiple Processes )

# UAC 정보가 메니페스트에 임베드됨

# /DYNAMICBASE 옵션. 비스타의 Address Space Layout Randomization 기능을 사용

      -> ASLR은, 이 블로그의 아래에 따로 정리했으니 참조.

# /Wp64 옵션과 __w64 키워드 없어짐. 대신 별도의 64비트용  컴파일러 사용. ( 귀찮게만 하고.. )

# C++도 클래스 디자이너 사용가능. 단 read-only.

# STL/CLR 라이브러리.  .NET에서도 STL 사용 가능

# 비스타 대응의 커먼 컨트롤

# 마샬링 라이브러리. 네이티브와 매니지드 사이의 데이타 전달에 사용. PInvoke의 대체용

# 매니지드 코드도 인크리멘탈 빌드 지원

# Intel Core 시리즈 지원한단 얘기인듯.

# Intrinsics 명령들이 최신의 AMD, Intel 프로세서의 지원.

      - Compiler Intrinsics.  memcpy()처럼 컴파일러가 함수를 호출하는 대신에,

         컴파일러가 함수의 어셈블리 코드를 직접 박아주는 류의 함수를 말한다.

# __cpuid 함수가 최신 AMD, Intel 프로세서를 지원.

       

[Visual C# 2008 (C# 3.0) ]

http://msdn2.microsoft.com/en-us/library/bb383815(VS.90).aspx

 

# var 키워드. 우변을 보고 알아서 변수의 타입을 맞춰준다. ( C++0x의 auto와 같은 듯 )

// i is compiled as an intvar i = 5;// s is compiled as a stringvar s = "Hello";

# 아래처럼 객체를 초기화 할 수 있다.

Cat cat = new Cat { Age = 10, Name = "Sylvester" };

# DB에서 쿼리 하듯이, 콜렉션에서 데이터를 뽑아내는 문법이 생겼다. (LINQ)

IEnumerable<int> highScoresQuery =    from score in scores    where score > 80    orderby score descending    select score;

# 기존 타입에 새 메소드를 추가할 수 있다. 기존 타입의 수정, 재컴파일, 상속없이 가능.

   아래는 String 클래스에 WordCount() 라는 메소드를 추가하는 예.

   this 키워드가 핵심이 되는 듯

namespace ExtensionMethods{    public static class MyExtensions    {        public static int WordCount(this String str)        {            return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;        }    }   }
string s = "Hello Extension Methods";int i = s.WordCount();

# 람다 표현이 가능. 유행인듯.

delegate int del(int i);del myDelegate = x => x * x;int j = myDelegate(5); //j = 25

# 자동 구현되는 프로퍼티. 이제 귀찮게 프로퍼티 정의하고 또 변수 만들고 하지 않아도 된다.

class LightweightCustomer{    public double TotalPurchases { get; set; }    public string Name { get; private set; } // read-only    public int CustomerID { get; private set; } // read-only}

# 파샬 메소드 지원. 파샬 클래스의 한쪽에서 원형을 선언, 다른쪽에서 구현을 정의할 수 있다.

   구현을 정의하지 않아도, 컴파일 에러는 나지 않고, 해당 원형 및 함수 호출 코드는 자동 제거.

// Definition in file1.cspartial void onNameChanged();// Implementation in file2.cspartial void onNameChanged(){  // method body}

# /win32Manifest, /noWin32Manifest 컴파일러 스위치. 역시 비스타를 위한.

# 타겟으로 하는 .NET Framework 버전을 지정할 수 있다.

# WCF, WPF, Web 프로젝트 등을 위한 프로젝트 타입 및 템플릿 추가

# C# 3.0을 위한 IntelliSense 추가, 리펙토링 지원, 코드 포메팅 지원

# using 문 정리 지원. 안쓰이는 using을 제거하거나, 정렬하는 등의 기능 지원

      -> 안쓰이는 using 제거하는 것은 참으로 기대했던 기능 ^^

 

 

[Visual Studio 2008]

http://en.wikipedia.org/wiki/Visual_studio

 

.NET Framework 3.5 기반.

디버깅 중에 .NET Framework 3.5 BCL 소스코드와 디버그 심볼을 다운로드받고

그 안으로 디버깅 해 들어가는 것이 가능하다고 한다.

 

이것저것 추가 되었고. 맘에 드는 것은 다중스레드 디버깅 지원이 강화.

-> 스레드 창에 마우스 가져다 대면 콜스택을 보여준다.

-> 스레드에 이름을 붙이고 표시를 할 수 있다.

-> 코드 창에서 다른 스레드의 인스트럭션 포인트도 표시해준다.

 

[C++/CLI]

http://en.wikipedia.org/wiki/C%2B%2B/CLI

 

C++의 확장인 Managed C++ 을 대체하기 위한 언어.

VC++ 2005 부터 지원하기 시작했다.

__gc 같은 비표준 키워드 대신에 ^ 같은 핸들타입을 도입했다.

그냥 .NET을 타겟으로하는 C++은 Managed C++인줄만 알았는데

용어를 가려서 써야겠다.

 

[Address Space Layout Randomization in Windows Vista]

주소공간배치무작위화(?).

ASLR 이란 실행파일, 라이브러리, 힙, 스택 등의 기본주소가 매번 바뀌게 하는 보안 기술.

비스타에서도 구현했고, 레퍼드에서도 구현했는데 레퍼드의 구현은 욕먹는 듯.. ( 아래 링크 참조 )

       ( http://en.wikipedia.org/wiki/Address_space_layout_randomization)

 

비스타는 부팅할 때마다 시스템 코드가 메모리의 다른 영역에 위치한다.

비스타 베타 2의 경우 exe, dll은 256 개의 위치 중에 한 군데로 로드된다고.

"return-to-libc" 어택으로 socket(), LoadLibrary() 함수등을 호출하기가 어려워진단다.

 

간단한 설명 및 시큐러티 옵션들은 여기를.

http://blogs.msdn.com/michael_howard/archive/2006/05/26/608315.aspx

 

 

 

 

 

by 행복하자 | 2008/01/02 03:42 | 트랙백 | 덧글(0)

웹서비스에서의 서비스

승철과 현진은 오랜 친구사이이며, 이들은 가끔씩 만난다. 승철과 현진은 최근에 만나 그들과 연락하는 또 다른 친구인 세진에 대해 이야기를 나눴고, 그러나 몇년 전에 세진과 연락이 끊어져 두 사람 중 누구도 그가 어디로 갔는지 알지못했다. 두 사람은 세진과 다시 만나게 되면 정말 증거울 것 같았다. 승철이 말하길 "친구찾기"라는 회사에 전화연결 제도가 있으며 잃어버린 친구를 찾아주는 서비스를 받을 수 있다고 했다.
"친구찾기"의 서비스를 사용하기 위해서는 다음 절차를 따라야 한다.
1. 서비스를 제공하는 대리인과 접촉할 방법을 알아야 한다.(발견 메커니즘).
2. 대리인이 친구찾기를 수행하기 위해 필요한 세진과 관련된 정보를 수집해야 한다.(공식화된 요청 양식)
3. 정보를 대리인에게 제공한다(요청 발행).
"친구찾기" 대행사는 서비스를 제공하므로 서비스 제공자의 역할을 수행하고 있는 것으로 볼 수 있으며, 승철과 현진은 서비스를 요청하므로 서비스 요청자로서으 역할을 수행하고 있다고 볼 수 있다.

by 행복하자 | 2008/01/02 03:14 | 트랙백 | 덧글(0)

JVM의 특징과 컴퓨터의 비유

 

JVM특징과컴퓨터의비유

 

 

JVM특징

JVM사용하는JAVA 바이트코드에는크게나누어다음과같은명령어들이있다.

1.        로드명령과스토어명령

2.        산술명령

3.        변환명령

4.        객체생성과조작

5.        오퍼랜드스택관리명령

6.        제어이행명령

7.        메쏘드기동과리턴명령

8.        예외던지기(throw)

9.        finally 명령

10.    동기화

JVML표준라이브러리에포함되어있는APIOS기본기능에액세스하기위한

1.        쓰레드관리

2.        동기제어

3.        디렉토리파일관리

4.        가상화된I/O 라이브러리

5.        인터넷지원

6.        데이터베이스액세스

7.         

컴퓨터를다음과같이현실의사물과비유해보자.

 

주판을cpu레지스터로, 칠판을디스플레이장치로

펜과같은필기구는입력장치로..

책상을메모리로((데이터세그먼트),스택(스택세그먼트),프로그램(코드세그먼트))

책상에놓여진종이를담는서류함을하드디스크로..