C++ 0x에 대한 리뷰 동영상인가 보다.
시간있을때 하나씩 정리를 해볼까 하는데.. 움..
'Dev > C++' 카테고리의 다른 글
C++0x 지원 컴파일러 목록 (0) | 2009.05.20 |
---|---|
C++ Refactoring (0) | 2009.04.14 |
asio C++ library (0) | 2008.08.22 |
C++ 0x - Herb Sutter의 블로그 글 (0) | 2008.07.29 |
C++ 0x (0) | 2008.05.09 |
C++0x 지원 컴파일러 목록 (0) | 2009.05.20 |
---|---|
C++ Refactoring (0) | 2009.04.14 |
asio C++ library (0) | 2008.08.22 |
C++ 0x - Herb Sutter의 블로그 글 (0) | 2008.07.29 |
C++ 0x (0) | 2008.05.09 |
twitter 잡담 (0) | 2009.08.15 |
---|---|
근황, 단상 - 2009.08.08 (0) | 2009.08.08 |
회의를 좋아하는 매니저의 특징 (0) | 2008.09.17 |
팀장 딜레마.. (0) | 2007.07.02 |
꼬마 바보.. (0) | 2006.11.06 |
관련해서 타입들도 이런한 것들이 존재한다.
이 스위칭들은 UNICODE 와 _UNICODE 매크로 정의에 의해서 각각 해당 함수 혹은 타입으로 정의가 된다.
(UNICODE 와 _UNICODE 을 두개를 같이 정의 해야되는데 왜 2개를 만들었는지 모르겠다. 암튼..)
그리고 MSDN에서는 아래와 같이 함수인양 사기(?)를 치는것이다.
int MessageBox(
HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);
UTF-8, UTF-16 ??
위에서 얘기했듯이 일반적으로 유니코드는 2바이트 문자로 표현을 한다.
그러다 보니 한글 파일의 경우 MBCS나 UNICODE나 크기가 별반 차이가 없다.
그런데 영어권 애들의 파일을 보자..
게네들은 겉으로는 아무것도 낳아진것이 없는데 파일의 크기가 2배가 되어야 한다.
이런 어처구니 없는 경우가 있나..
(내가 생각해도 그렇다. 허나 뒤에가면 우리가 어처구니 없어진다. ㅎㅎ)
그래서 얘네들이 머리를 굴려서 유니코드를 표현하는 방식을 여려게 만들었다.
그것이 바로 UTF (Unicode Transformation Format) 이다.
그중에 일반적으로 유니코드라로 불리는 2바이트 체계 표현이 UTF-16 이고,
영어권은 1바이트 기타 언어는 4바이트까지 가변적으로 표현 가능한것이 UTF-8 이다.
(유니코드의 127 까지의 문자는 ASCII 문자코드와 동일하다. 그래서 영어권 1바이트가 ASCII와 호환이 되는것이다.)
http://ko.wikipedia.org/wiki/UTF-16
http://ko.wikipedia.org/wiki/UTF-8
이러다 보니 한글은 UTF-8 로 가면 4바이트로 표현이 되어 버린다.
UTF-8
그럼 UTF-8 은 어떤 타입을 써야 하는가?
char [] 아니면 wchar_t [] ??
아직까지 표준으로 정해진것은 없는 것으로 안다.
차기 표준에서 이것에 대해서 논의가 되고 있으니 좋은 결과가 있을것으로...
Byte Order Mark
2바이트 혹은 그 이상의 바이트로 표현을 하다보니 정수표현과 같이 머신, 플랫폼 간의 바이트 오더링(little-endian, big-endian)의 문제가 있다.
유니코드 파일
윈도우 유니코드 파일의 경우 아래와 같은 문자를 파일 맨앞에 세팅함으로서 구분을 한다
(이게 표준인지 윈도우만 그런지는 잘 모르겠다...)
유니코드(UTF-16, little-endian) : 0xFF 0xFE
유니코드 big endian (UTF-16, big-endian) : 0xFE 0xFF
UTF-8 : 0xFE 0xFF
Redmine 세팅 (0) | 2009.09.12 |
---|---|
ATL Com Project VC++ 6 에서 VC++ 8 변환(업그레이드) (0) | 2009.03.27 |
VARIANT 에서 객체 추출하기 (0) | 2008.09.09 |
ffmpeg (0) | 2008.04.09 |
벤치마킹 (0) | 2007.10.17 |
이번 CLR을 테스트 해보면서 거듭 느낀점은 .net 코드도 충분히 쓸만하게 성능이 나온다는것이다
경우에 따라서는 기존 native 보다 더 좋은 성능이 나오는것에 대해서 당황(?)을 하기도 하지만.. ^^
참고 :
http://technet.microsoft.com/ko-kr/library/ms345101.aspx
http://technet.microsoft.com/ko-kr/library/ms187861.aspx
http://msdn.microsoft.com/en-us/library/ms189524.aspx
ps.
위에 사항을 해결하기 위해 RegistryPermission 라는 클래스를 많이 찾아보았는다. (삽질..)
물론 직접적인 도움이 되지는 않았지만 먼가가 새로운 세계가 있는 갑다. 흐흐..
How to Configure MSDTC to Use a Specific Port in Windows Server 2012/2012R2 (0) | 2014.07.03 |
---|---|
CTE (Common Table Expression) (0) | 2008.07.08 |
테이블 변수 (0) | 2008.07.04 |
근황, 단상 - 2009.08.08 (0) | 2009.08.08 |
---|---|
생각의 정리.. (0) | 2008.12.17 |
팀장 딜레마.. (0) | 2007.07.02 |
꼬마 바보.. (0) | 2006.11.06 |
딜마 아쌈 - t시리즈 (0) | 2006.11.01 |
IDispatch* GetDispatchPtr(VARIANT &var)
{
VARIANT *pvar = &var;
IDispatch* pdisp = NULL;
if (var.vt == (VT_BYREF | VT_VARIANT)) { // 1
pvar = var.pvarVal;
}
if (pvar->vt == (VT_BYREF | VT_DISPATCH)) { // 2
pdisp = *pvar->ppdispVal;
}
else if (pvar->vt == VT_DISPATCH) { // 3
pdisp = pvar->pdispVal;
}
return pdisp;
}
ex)
ADODB::_RecordsetPtr sp(GetDispatchPtr(var));
VB에서 Host 객체를 Early Binding 으로 호출 (컴포넌트를 참조한후 실행할 때..)
=> 3번만 호출
VB에서 Host 객체를 Late Binding 으로 호출 (CreateObejct 사용..)
=> 2번만 호출
VBScript 에서 Host 객체를 Late Binding 으로 호출 (VBScript 에서는 Late Binding만 지원)
=> 1번, 3번 호출
ATL Com Project VC++ 6 에서 VC++ 8 변환(업그레이드) (0) | 2009.03.27 |
---|---|
유니코드(UNICODE), C++ (0) | 2008.10.16 |
ffmpeg (0) | 2008.04.09 |
벤치마킹 (0) | 2007.10.17 |
달라진 기능 (IIS 6.0) (0) | 2007.09.28 |
http://msdn.microsoft.com/en-us/library/bb978523.aspx
http://msdn.microsoft.com/en-us/library/bb735856.aspx
WCF의 COM+ 통합서비스
쉽게 얘기해서 COM+의 서비스를 종전의 DCOM이나 RDS처럼 WCF 여러 채널(바인딩)을 통해서 서비스 하는 방법이다
Binding |
Interoperability |
Transactions |
Encoding |
BasicHttpBinding |
Basic Profile 1.1 |
(None) |
Text, (MTOM) |
WSHttpBinding |
WS |
(None), Yes |
Text, (MTOM) |
WSDualHttpBinding |
WS |
(None), Yes |
Text, (MTOM) |
WSFederationHttpBinding |
WS-Federation |
(None), Yes |
Text, (MTOM) |
NetTcpBinding |
.NET |
(None), Yes |
Binary |
NetNamedPipeBinding |
.NET |
(None), Yes |
Binary |
NetMsmqBinding |
.NET |
(None), Yes |
|
NetPeerTcpBinding |
Peer |
(None) |
|
MsmqIntegrationBinding |
MSMQ |
(None), Yes |
|
여기서 WSHttpBinding과 BasicHttpBinding 과 같은 경우는 IIS를 통해서 지원을 하고,
NetTCPBinding 과 같은 경우는 COM+를 통해서 호스팅이 가능 하도록 설계되어 있다
물론 WAS(IIS 7.0)의 경우 모두 호스팅이 가능할 것으로..
(COM+ 통합의 경우 셀프 호스팅은 아직 안해봐서 모르겠다..)
WCF의 COM+ 통합서비스를 하려면 다음과 같은 도구가 필요하다
- .NET Framework 3.0 (or 3.5 ) (3.5를 설치하면 3.0, 2.0 등이 모두 설치된다.) - 3.5 권장..
- SvcConfigEditor.exe (Service Configuration Editor) 혹은 ComSvcConfig.exe
ComSvcConfig.exe는 .NET Framework 3.0와 함께 제공되며 커맨트 툴로 COM+의 WCF의 구성을 돕는다.
허나 .NET SDK로 제공되는 SvcConfigEditor.exe를 이용하면 Visual 한 환경으로 WCF 구성파일 편집, 생성및 COM+을 쉽게 구성할수 있다.
* ComSvcConfig.exe : http://msdn.microsoft.com/ko-kr/library/ms732009.aspx
구성 방법
1. 우선 만들어진 컴포넌트(VC++ ATL 간단하게 만들었다)를 COM+에 패키지를 생성하여 추가한다.
2. SvcConfigEditor.exe를 실행하여 "파일->통합->COM+응용프로그램" 메뉴를 선택
- COM+의 패키지의 컴포넌트 인터페이스를 선택
- 컴포넌트의 메서드 선택
- COM+ 호스팅 선택
- TCP를 선택
- 서비스 주소 세팅 (ex: net.tcp://localhost:9000/Simple)
- 완료
3. 2번과 같이 세팅이 완료된 경우 COM+의 해당 패키지의 등록정보-활성화 탭의 "응용 프로그램 루트 디렉토리"란에 WCF 설정파일이 생성된 디렉토리 경로가 세팅된다.
ex: C:\Program Files\ComPlus Applications\{593add39-f66f-442a-a901-01379dbac4eb}\
4. 그리고 netstat 로 확인을 해보면 hosting 이 되어 있는걸 확인할 수 있다.
SerializeToXML - C# (0) | 2009.08.10 |
---|---|
C# Web Service -> REST (0) | 2009.08.09 |
Interop 응용 프로그램 배포 (0) | 2007.10.05 |
RCW, CCW (0) | 2007.10.04 |
"The underlying connection was closed" - WebServices (0) | 2005.10.13 |
Visual Studio Code, Python 개발환경 구축 (0) | 2020.01.27 |
---|---|
요즘, 단상.. (0) | 2006.03.28 |
Subversion 아직은... (0) | 2004.12.06 |
공익 광고 .. (0) | 2004.11.29 |
버전관리툴 (0) | 2004.11.24 |
asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.
Unicode
XML and HTML
Networking
Usability for novices and occasional programmers
C++ Refactoring (0) | 2009.04.14 |
---|---|
An Overview of the Coming C++ (C++0x) Standard (0) | 2008.12.29 |
C++ 0x - Herb Sutter의 블로그 글 (0) | 2008.07.29 |
C++ 0x (0) | 2008.05.09 |
memory pooling - code (0) | 2008.05.01 |
Herb Sutter 블로그의 C++ 0x 에 대한 리포트 링크 정리
http://herbsutter.wordpress.com/
http://herbsutter.wordpress.com/2007/05/10/trip-report-april-2007-iso-c-standards-meeting/
- 템플릿 별칭(aliase), 가변 템플릿 파라미터, using 용법 확장에 대한 내용들
http://herbsutter.wordpress.com/2007/09/10/trip-report-july-2007-iso-c-standards-meeting/
- 새로 추가되는 기능들에 대한 내용들
- constexpr, decltype 등...
http://herbsutter.wordpress.com/2007/11/01/trip-report-october-2007-iso-c-standards-meeting/
- C++ 0x 의 시기와 주요 컨셉에 관한 글
- nullptr 에 대한 소개
- threading, Concurrency, Atomic 에 관한 내용들
http://herbsutter.wordpress.com/2008/03/29/trip-report-februarymarch-2008-iso-c-standards-meeting/
- Lambda function and closure 에 관한 내용들
http://herbsutter.wordpress.com/2008/07/04/trip-report-june-2008-iso-c-standards-meeting/
- 초기화에 관한 내용들
- STL에서의 배열 초기화나 클래스 멤버의 초기화 문법에서의 초기화에 관한 이야기
An Overview of the Coming C++ (C++0x) Standard (0) | 2008.12.29 |
---|---|
asio C++ library (0) | 2008.08.22 |
C++ 0x (0) | 2008.05.09 |
memory pooling - code (0) | 2008.05.01 |
Is Derived - code (0) | 2008.05.01 |