2019년 3월 15일 금요일

-
-
출처: https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/4854e691-e507-4645-82da-d5a9def3523b/cant-install-the-windows-sdk-71
이제 얼마 후면 Windows7 지원이 끝날 것이라고 경고가 떴다. 그래서 여기로 복사해 놓는다.
-
-

Windows SDK Fails to Install with Return Code 5100




Symptoms


When installing the Microsoft Windows SDK for Windows 7 and .NET Framework 4 (Windows 7 SDK), you may see the "Installation Failed" dialog which may contain the following information:

Installation of the “Microsoft Windows SDKfor Windows 7” product has reported the following error: Please refer to Samples\Setup\HTML\ConfigDetails.htm document for further information.


The setup log file contains the following error message:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\SFX\vcredist_x86.exe installation failed with return code 5100

OR

C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\SFX\vcredist_x64.exe installation failed with return code 5100


Cause


This issue occurs when you install the Windows 7 SDK on a computer that has a newer version of the Visual C++ 2010 Redistributable installed.  The Windows 7 SDK installs version 10.0.30319 of the Visual C++ 2010 Redistributable. 


Resolution


To resolve this issue, you must uninstall all versions of the Visual C++ 2010 Redistributable before installing the Windows 7 SDK.  You may have one or more of the following products installed:
  • Microsoft Visual C++ 2010 x86 Redistributable
  • Microsoft Visual C++ 2010 x64 Redistributable
After uninstalling the Microsoft Visual C++ 2010 Redistributable products, you may install the Windows 7 SDK.  After installing the Windows 7 SDK, you may then reinstall the newer version of the Visual C++ 2010 Redistributable products, in order to restore the Visual C++ 2010 Redistributable products to their original state.


-
-
출처:  https://stackoverflow.com/questions/4095009/switching-vs2010-to-use-windows-7-1-sdk
-
-
https://docs.microsoft.com/en-us/previous-versions/visualstudio/windows-sdk/ff660764%28v=vs.100%29
-

Building Applications that Use the Windows SDK

This document describes how to use either the Windows SDK Command Prompt window or Visual Studio to configure application build settings for use with native code projects and managed code projects. It also describes how to upgrade Visual C++ projects that use the .vcproj file format so that they can use MSBuild.
The Windows SDK for Windows 7 and the .NET Framework 4 (later referred to as the Windows SDK) includes compilers that let you build Visual C++, Visual C#, and Visual Basic applications. You can use these compilers directly or use the nmake tool to use these compilers from a makefile. You can also use MSBuild to build Visual C++ (.vcxproj), Visual C# (.csproj) and Visual Basic (.vbproj) projects or Visual Studio solutions (.sln).
The following table provides links to more information about how to use the compilers and build tools to create Visual C++, Visual C#, and Visual Basic applications.
Link Description
MSBuild Describes the Microsoft Build Engine (MSBuild) and how to use it to build projects and solutions.
Walkthrough: Compiling a Native C++ Program on the Command Line (C++) Demonstrates how to use the Visual C++ compiler, cl.exe, to compile a Visual C++ application.
Command-line Building With csc.exe Describes how to use the Visual C# compiler, csc.exe, to compile Visual C# applications.
How to: Invoke the Command-Line Compiler (Visual Basic) Describes how to use the Visual Basic compiler, vbc.exe, to compile Visual Basic applications.
NMAKE Reference Describes makefiles and the nmake tool.

Configuring the Windows SDK Command Prompt Window

If you do not have Visual Studio 2010, you can use the Windows SDK Command Prompt window and the SetEnv utility to configure your application build settings. The SetEnv utility lets you build applications for a specific operating system and computer architecture. The default settings target the operating system on which the Windows SDK is installed.
To open the Windows SDK Command Prompt window, click Start, then All Programs, then Microsoft Windows SDK v7.1, and then Windows SDK 7.1 Command Prompt. At the command prompt, run the SetEnv utility to configure the build environment for a specific operating system, computing architecture, or build configuration. The SetEnv utility uses the following syntax:
SetEnv.cmd [/Debug | /Release] [/x86 | /x64 | /ia64] [/vista | /xp | /2003 | /2008 | /win7] [-h | /?]
The following command configures the build environment to create 64-bit Windows 7 applications that use the Debug build configuration:
SetEnv.cmd /Debug /x64 /win7
SetEnv configures the build environment to create Windows 7 applications by default if you do not specify the operating system.
The following table describes the SetEnv options. Options that create applications for a specific operating system apply only to the nmake utility.
Option Description
/Debug Create a Debug configuration build environment.
/Release Create a Release configuration build environment.
/x86 Create 32-bit x86 applications.
/x64 Create 64-bit x64 applications.
/ia64 Create 64-bit Itanium applications.
/vista (nmake specific) Create Windows Vista applications.
/xp (nmake specific) Create Windows XP SP2 applications.
/2003 (nmake specific) Create Windows Server 2003 applications.
/2008 (nmake specific) Create Windows Server 2008 or Windows Vista SP1 applications.
/win7 (nmake specific) Create Windows 7 applications.
-h, /? Display command usage.

Configuring Visual Studio for Visual C++ Development with the Windows SDK

The Windows SDK provides headers and libraries for creating Windows applications that use native code. These are the same as those that come with Visual Studio 2010, except that the Windows SDK provides newer versions of some tools.
The following sections describe how to configure Visual Studio 2010 and Visual Studio 2008 to use the headers, libraries, and tools that are included in the Windows SDK.

Using the Windows SDK Tools with Visual Studio 2010

To use the Windows SDK tools in Visual Studio 2010

  1. In Visual Studio 2010, open a solution (.sln) file or create a solution.
  2. In Solution Explorer, right-click the project node and then click Properties.
  3. In the Configuration list, select All Configurations.
  4. Under Configuration Properties, select General.
  5. As the Platform Toolset option, select Windows7.1SDK.
  6. Click OK.

Using the Windows SDK Tools with Visual Studio 2008

You can use the Windows SDK Configuration Tool to configure the Windows SDK for use with Visual Studio 2008. The following steps describe how to use the Windows SDK Configuration Tool in the Visual Studio 2008 user interface and in the Windows SDK Command Prompt window.

To use the Windows SDK Configuration Tool in Visual Studio 2008

  1. Start the Windows SDK Configuration Tool by clicking Start, then All Programs, then Microsoft Windows SDK v7.1, and then Visual Studio Registration.
  2. Right-click Windows SDK Configuration Tool and then click Run as administrator.
  3. In the Windows SDK Configuration Tool, in the list, select v7.1.
  4. Click Make Current.

To use the Windows SDK Configuration Tool in the Windows SDK Command Prompt window

  1. Open the Windows SDK Command Prompt window by clicking Start, then All Programs, then Microsoft Windows SDK v7.1, and then Windows SDK 7.1 Command Prompt.
  2. Navigate to the ..\ Windows SDK installation folder\Setup\ folder, for example, C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\.
  3. Type WindowsSdkVer.exe -version:v7.1.

Upgrading Projects to Visual C++ 2010

For Visual C++ projects, MSBuild 4.0 works with the Visual C++ 2010 project file format, .vcxproj. This section describes how to upgrade Visual C++ projects that use the earlier .vcproj format so that they use the .vcxproj format.
If you have Visual Studio 2010, you can use devenv.exe and the /upgrade option to upgrade earlier projects to the current format. For more information about the /upgrade option, see /Upgrade (devenv.exe). Otherwise, you can use the vcupgrade tool to upgrade earlier projects. The vcupgrade tool works on project files from Visual Studio 2005 and Visual Studio 2008.
You can use the vcupgrade tool in the Windows SDK Command Prompt window, which you can open by clicking Start, then All Programs, then Microsoft Windows SDK v7.1, and then Windows SDK 7.1 Command Prompt. The following command uses vcupgrade to upgrade a project named Hello.vcproj to use the .vcxproj format:
vcupgrade.exe Hello.vcproj
This command produces Hello.vcxproj as its output. You can then use MSBuild to build the project, as shown in the following example:
MSBuild.exe Hello.vcxproj /t:Rebuild /p:Configuration=Debug
Important
If your solution contains multiple Visual C++ projects, you must run vcupgrade on each Visual C++ project to upgrade it to the .vcxproj file format. In addition, when you use vcupgrade to upgrade a project to the .vcxproj file format, vcupgrade does not update the corresponding solution (.sln) file. Therefore, you must specify the upgraded projects and not the solution file when you use MSBuild.

Working with 64-bit Visual C++ Projects

You can use the Visual C++ 64-bit compiler to target 64-bit computing architectures. Many of the Windows SDK sample projects also support 64-bit. For information about how to configure Visual C++ projects to target 64-bit operating systems and how to troubleshoot common Visual C++ 64-bit migration issues, see 64-Bit Programming with Visual C++.

See Also

-
-
내가 몇년 전에 찾아 헤맸지만 찾지 못했던, Vista 이후의 바뀐 thumbnail 작성 방법에 대한 내용도 찾았다..  너무 늦었나?
-
Top Ten Things You Can Do to Create Vista-Style Applications

    01/31/2008    12 minutes to read
-
https://docs.microsoft.com/en-us/previous-versions/visualstudio/windows-sdk/ms717341%28v%3dvs.90%29
-
직접 위의 페이지에 적히지는 않았고,연결된 페이지에 있었다.
-
Organizing Data

    11/02/2006    2 minutes to read

-
https://docs.microsoft.com/en-us/previous-versions//ms717462%28v=vs.85%29

전체라기 보다는 중간 아래에 있는
Rich Preview
라는 제목의 단락이었다.
https://docs.microsoft.com/en-us/previous-versions//ms717462%28v=vs.85%29#rich-preview
-
....

Rich Preview

Rich Preview is provided by a lightweight tool which is integrated into Windows Explorer, the Common File Dialog, and Outlook 12. It enables end users to browse content by providing a read-only preview of data without having to launch the associated application.
Rich Preview support is provided by a rich preview handler for a file type, which is provided by the associated application vendor. A rich preview handler must provide an implementation of the IPreviewHandler Interface and IInitializeWithStream Interface. The operating system will use the IInitializeWithStream Interfaceimplementation to initalize theIPreviewHandler Interface, and then use the IPreviewHandler Interface to create the Live Icon.
Programming Model Documentation Links
Managed System.Runtime.InteropServices, Advanced COM Interoperability
Unmanaged IPreviewHandler Interface
IInitializeWithStream Interface

-
-----
Windows SDK7.1 소개글
https://blogs.msdn.microsoft.com/chuckw/2010/06/15/windows-sdk-7-1/
-


Windows SDK 7.1

★★★★★
★★★★
★★★
★★
★


If you install the "Windows XP Support" option in Visual Studio 2012 or later, then you already *have* the Windows 7.1A headers & libraries. They are used by the ``v1??_xp`` Platform Toolset option. See this blog post.
Known issue: The Windows 7.1 SDK installer has the same conflict issue with the updated Visual Studio 2010 REDIST files as the DirectX SDK (June 2010) release. See KB 2717426 for details.
Known issue: If you try to install the Windows 7.1 SDK on a system with VS 2012 Update 1 or later, VS 2013, or VS 2015 it will likely fail. This I because these versions of Visual Studio already included a trimmed down Windows 7.1A SDK to support the "v1x0_xp" Platform Toolset. The Windows 7.1A SDK does not include samples, so if you are trying to get those legacy samples you should set up a fresh machine or VM to install the original standalone Windows 7.1 SDK, then copy out the desired files.
Windows SDK for Windows 7 and .NET Framework 4.0 (v7.1) is now available. It includes a free command-line version of the Visual C++ 2010 compiler including support for /analyze static code analysis. This release of the Windows SDK supports Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows XP SP3, Windows Vista, and Windows Server 2003 R2 using Visual Studio 2005, 2008, or 2010.
Web installer or ISO download.
Note that the DirectX SDK (June 2010) relies on the Windows SDK platform headers and libraries that shipped with the Visual Studio 2008 (Windows SDK 6.0A) or later. The WindowsTouch sample requires Windows SDK 7.0 or later to compile.
This version is slightly newer than the Windows SDK that ships with VS 2010 itself (Windows SDK 7.0A).
For VS 2005 and VS 2008, integrating Windows SDK 7.1 works the same way as it had previously updating the global settings. Be sure to reference the DirectX SDK include and lib paths before the Windows SDK to ensure proper search order.
For Visual Studio 2010, the Windows SDK 7.1 creates new platform targets for its headers which have to be selected on a project basis under the setting Platform Toolset.
"
This value defaults to v100 which is the VS 2010 compiler toolset and the Windows SDK 7.0A. With the Windows SDK 7.1, you get a new option Windows7.1SDK which uses the VS 2010 compiler toolset that ships in the Windows SDK along with the updated headers and libraries.
If you have Visual Studio 2008 installed, you will also be able to select v90 which is the VS 2008 compiler toolset and the Windows SDK 6.0A. The v90 is required for Managed C++ .NET 2.0 development since the VS 2010 toolset only supports .NET 4.0 development. We also use this technique with the DirectX SDK Content Exporter sample in the June 2010 release because the version of the Autodesk FBX library we use for that sample does not include VS 2010 libraries, and therefore we have to use the VS 2008 toolset to ensure we are using the VS 2008 C Runtime.
The DirectX SDK (June 2010) does not create its own Platform Toolset because it does not include a C++ compiler like the Windows SDK does. Instead, we explictly add VC++ Directory settings to each VS 2010 project that include the DX SDK path references using the $(DXSDK_DIR) variable.
The Windows 7.1 SDK includes the headers for Direct3D 9, Direct3D 10, Direct3D 11, DirectSound, DirectInput, DirectMusic 'core' APIs, and XInput 9.1.0. The d3dcommon.h is slightly outdated compared to the version in the Windows 8.0 SDK and the DirectX SDK (June 2010), so the newer defines like D3D_PRIMITIVE_TOPOLOGY, D3D_PRIMITIVE, D3D_SRV_DIMENSION, etc. are not defined for the Windows 7.1 SDK version. You'll need to use D3D10_ or D3D11_ versions instead.
Update: The Windows 7.1 SDK provides the VS 2010 RTM compiler, and can overwrite VS 2010 Service Pack 1 files if installed on the system. See this for a fix.
Related: A Brief History of Windows SDKs, DirectX SDKs of a certain age



-
-

2019년 3월 10일 일요일

multi thread exception in MFC

-
referrence:
https://stackoverflow.com/questions/2797366/win32-thread-exits-unexpectedly
-
이런 기능이 있었다....
....
 The easiest way to find the problem would be to run your application under a debugger and enable breaking on Win32 Exceptions. Whenever a Win32 Exception is encountered, the application would break into the debugger and you can find out whats going wrong.

If ....
-
이런 것이 처음 나타났다. 하지만, debugger 에도 이것을 처리하는 break체크박스 옵션이 있었다.
네이티브' 프로그램이 -1073741511 (0xc0000139) 코드에서 끝났습니다.

Software.exe': 'C:\WINDOWS\system32\rpcrt4.dll' 로드, 기호가 로드되지 않았습니다.
'Software.exe': 'C:\WINDOWS\system32\version.dll' 로드, 기호가 로드되지 않았습니다.
'Software.exe': 'C:\WINDOWS\WinSxS\x86_Microsoft.VC**.DebugMFC_1fc8b3b9a1e18e3b_*.*.50727.762_x-ww_257740a4\mfc**d.dll' 로드, 기호가 로드되었습니다.
'Software.exe': 'C:\WINDOWS\WinSxS\x86_Microsoft.VC**.DebugCRT_1fc8b3b9a1e18e3b_*.*.50727.762_x-ww_5490cd9f\msvcr**d.dll' 로드, 기호가 로드되었습니다.
'Software.exe': 'C:\WINDOWS\system32\shlwapi.dll' 로드, 기호가 로드되지 않았습니다.
디버거:: 프로세스 로드 중에 처리되지 않은 비연속적 예외가 Throw되었습니다.
'[1720] Software.exe: 네이티브' 프로그램이 -1073741511 (0xc0000139) 코드에서 끝났습니다.

GetThreadId 라는 함수는 WindowsServer 2003에서만(?), 지원된다고 한다. ....
그래서 안되었던 것이다. 지원되는 OS가 아니라서.. ....
다른 함수를 골라서 사용하기로. .....

거의 찾은 듯하다. .....

    AFX_ISOLATIONAWARE_FUNC(BOOL, ImageList_Destroy, (HIMAGELIST himl), (himl), FALSE)
--------
거의 찾은 듯했으나.... 아니었다. Thread ID 등을 표시하는 것은 이 오류(예외)를 찾는 데에는 전혀 상관없는 삽질이었다. 이것을 고치는 방법은 전혀 다른 곳에 있었다. 기본적으로, 이것은 Multi-Thread _와는 본질적으로 무관한 오류였다.
일단 방법은, 위에서 찾은 Exception (한국어로 예외....) 메뉴를 Visual Studio (Visual C++) IDE에서 찾아서 (디버그(Debug) 메뉴(Menu) >>> 예외...(Exception...) 항목 클릭(click) 하면, 나오는 목록 상자에서 Win32 Exception(예외) 를 찾아서 C0000005 (C로 시작해서 000...이 이어지다가 5로 끝나는 것)을 체크하는 것이었다. 찾아보니, 통신이라든가 .. 와는 전혀 다른 것이었음이 밝혀졌다. Multithread 와는 전혀 관계가 없었다는 (좌절)이었다. 언제나 그렇지만, 어쨌든 찾은 것이 잘 된 것이다. 도움을 받지 않으면 이렇게 헤맨다.

하지만, 아직은 고치지 못한다. 찾아낸 그 부분을 보니, 여전히 어렵다. 다만, 엉뚱한 곳은 아니다. 위치는 찾았지만, 아직도 고치기는 확신이 서지 않을 정도로 어렵다.

-

2019년 2월 23일 토요일

[C++] 문장 따옴표 앞의 R

-
일단, 여기에서 봤다.
http://www.cplusplus.com/doc/tutorial/introduction/codeblocks/

여기의 테스트용 간단한 예제 프로그램에 아래와 같이 적혀 있었다.

#include <iostream>
int main()
{
  auto x = R"(Hello world!)";
  std::cout << x;
}

문장 큰 따옴표 앞의 R 이것이 무엇인고?
_( 검색:    R before " in C++  )_ 했다.
https://stackoverflow.com/questions/34988122/is-the-r-before-string-cross-platform

C++11 이후부터 표준화 되어서 도입된 날것(Raw) 그대로의 문장을 지정하는 것이란다.
https://en.cppreference.com/w/cpp/language/string_literal

이것이 가진 효과는 ? 아래의 프로그램을 참고하자. x 는 R 이 붙은 것이고, y 는 R 이 없는 것이다.
그리고, R이 붙은 것에는 따옴표 안에 괄호들이 하나씩 있어야 한다는 것이다. 따옴표 내부의 따옴표에 붙은 괄호는 문자열에서는 없어진다.
R이 붙지 않은 것에는 따옴표 내부의 괄호들이 출력된다.


#include <iostream>

int main()
{
    auto x = R"(Hello world!\n \r my world\nhello. my work!)";
    auto y = "(Hello world!\n \r my world\nhello. my work!)";
    std::cout << x;  std::cout << x;
  std::cout << x;
  std::cout << y;
  std::cout << y;
  std::cout << y;
// 한글일 때에는 ....ㅇㅇㅇㅇㅇ...    알수가 없다.
// 어떤 것이 있는가
//     std::c
}

실행 결과는 다음과 같다.
.... 라고 하려다가, 호기롭게 했지만, 역시나, 내가 linux에 적응하지 못하는 부류인 관계로, linux/unix 터미널 창 제어를 못해서... 결과를 복사하지 못했다... Code::Block 환경 내에서는 실행이 잘 되는데, 왜 나는 할 수 없지?  sudo 등등을 써 봐도, ./(실행파일_이름) 등등 내가 예전에 알고 있던 별 수를 다 써 봐도 안되고.. 실행 파일이 없다는 황당한 메시지만 받고, ls 명령을 해 보면 현재 디렉토리에 분명히 실행권한이 있는 파일이 존재하는데, 실행하려고 하면 없다고...
역시 나는 ...  이런 모든 것을 만든 분들이 위대해 보일 따름이다.

결국 설명은... R이 따옴표 앞에 붙으면, 보통-괄호(중간-괄호 또는 대괄호가 아닌..) _가  따옴표 바로 내부에 붙어야 한다. 그럼, 괄호 자신과 큰 따옴표도 들어갈 수 있다는 것이겠지...
하여간 그러면, \r, \n 이것들이 모두 해석되어서 CR(Carriage Return) 동작이라든가 NL(New Line)동작으로 작동하는 것이 아닌, 그냥 화면에 소스코드에 나온 그대로 \r   로 표시되고, \n  으로 표시된다. \ 문자(back slash)의 C/C++ 언어에서의 특수 해석이 작동하지 않는다는 것이다.
반면에, R이 없는 경우에는 \r 은 커서를 줄의 첫 자리로 옮기고, \n 은 줄을 바꾸는 기능으로 변환해석되어서 작동한다.

조금만 더 예를 들면,
x = R"Hello(Hello( (my ("") \r \n one))Hello";
였다면, x가 출력될 때에는
Hello(my ("") \r \n one)
이 출력되는 것이다. 표현하고 싶은 문자열을 감싸는 경계표시는 시작부분이
R"Hello(     로 시작되고, )Hello"   로 끝나고 이 경계표시는 실제 문자열에는 포함되지 않는다. 이 처음 괄호가 시작되기 전에 들어가는 경계표시 문자열에는 공백문자(스페이스)가 들어가면 안된다.
-
-

2019년 2월 22일 금요일

eos (Endless OS _가 아닌 다른 것) 그리고, 객체지향 프로그래밍, UML

-
eos _를 찾았더니, 예상치 않게 다른 eos 가 걸려 나왔다.

https://medium.com/hexlant/eos-dawn-v4-0-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89-2-4-8ac29ad0f2ec

무슨 소리인가 했다. 요즘 세상에 관심거리였던, 이제는 실망거리이기도 한 비트코인과 관련된 블록체인 기술 소프트웨어였다.


https://saksin.tistory.com/1357

앞에는 맥OS에 설치하는 방법이었는데,
윈도(윈도10)에 설치하는 방법이 나오기도 했다. 그런데, 우분투를 먼저 윈도10에 설치하라는 재미있는 내용도 있었다.윈도10에 우분투라... MS 스토어였다.
https://www.microsoft.com/ko-kr/p/ubuntu/9nblggh4msv6?activetab=pivot%3Aoverviewtab
우분투의 console(terminal?)을 설치하는 것이라고 했다. ubuntu에서 사용하는 몇가지의 여러 shell 명령어를 사용할 수 있게 해 준단다. 모두가, 오래 전에 리눅스 등등의 open source unix 계열에 관심을 접었고 그 이후로 오랜 시간을 지낸 내게는 어리둥절한 혼돈스런 말들이었다. 모두가 뒤섞인다...

거기에는
https://saksin.tistory.com/921?category=405398
OOP _와 UML 등등의 내용도 있었다.
-
-
-

2018년 12월 30일 일요일

오늘 내 생애 처음으로 루빅 큐브 맞추기에 성공했다. (설명서 도움을 받았다.)

내가 루빅 큐브를 본 것은 큰형이 사와서 맞추는 것을 내게 자랑스럽게 얘기해 줬던 시절로 돌아간다. 아마도 내가 초등학교 2학년이나 3학년 정도였을 것이다. (8-9살??)
설명서를 읽어보기도 했지만, 쓰여 있는 뜻을 풀어내지 못했고, 그 이후로 40년이라는 세월이 흐르는 동안 설명서를 봐도 풀어내지 못하고 있었다. 고등학교를 졸업하고, 대학교에 들어가고 나서도 이래 저래 다시 도전하지 못하고 있었다. 아마도 대학교를 졸업할 때 쯤에 설명서가 같이 붙어있는 루빅큐브를 구매할 기회를 마주했고, 구매했지만, 여전히 설명서 마저도 내게는 너무나도 어려운 것이었다. 그 설명서를 계속 간직하다가 오늘에서야 (처음 본지 40년 지나서..) 아이가 심심하다며 만지작거리는 큐브 옆에 설명서를 찾아서 들고 가서 옆에서 설명서를 읽어서 다시 해석을 시도했고, 이번에는 풀어내고 큐브를 만들어내는 데에 성공했다.
-
첨부된 설명서 사진을 참고해 보자.
https://photos.app.goo.gl/HjQ7KvY7onwbrVk18

-

루빅 큐브의 설명은 영어로 쓰인 위키피디아에 잘 나온 편으로 보인다.
https://en.wikipedia.org/wiki/Rubik's_Cube#Relevance_and_application_of_mathematical_group_theory

-
공식 홈페이지에 나온 푸는 방법 설명....
https://eu.rubiks.com/solve-it
3x3x3 뿐만 아니라, 2x2x2 푸는 방법도 나온다.
-
-
-

2018년 12월 26일 수요일

C++ 에서 (특히 MS 의 COM 구현에서) interface 사용하는 이유와 방법에 대해서

-
_( duckduckgo:   why C++ interface class is needed )_
https://duckduckgo.com/?t=palemoonsp&q=why+C%2B%2B+interface+class+is+needed&ia=web

-
C++ 에서 구현하는 interface 기능...
https://www.tutorialspoint.com/cplusplus/cpp_interfaces.htm

-
https://duckduckgo.com/?t=palemoonsp&q=why+C%2B%2B+interface+class+is+needed&ia=web

-
일반적인 다른 OO language (C# 또는 Java, Python..)을 막론하고...
https://softwareengineering.stackexchange.com/questions/108240/why-are-interfaces-useful

-
위 글에 나온 
다른 OO 언어의 기능 용어 mixin 에 대해서 설명...
https://en.wikipedia.org/wiki/Mixin

-
C++ 과 다른 언어 Java/C# 에서의 기능 차이...
https://stackoverflow.com/questions/12854778/abstract-class-vs-interface-in-c

-
_(duck:  C++ programming mutual include problem using interface class )_

How to program to an interface/abstract class in C++? https://stackoverflow.com/questions/11950231/how-to-program-to-an-interface-abstract-class-in-c

-
-

mutual dependency between base class and derived class

_( duckduckgo search:    C++ programming mutual include problem )_
result:
1
[https://stackoverflow.com/questions/625799/resolve-build-errors-due-to-circular-dependency-amongst-classes](Link URL)

2
[https://stackoverflow.com/questions/8526819/c-header-files-including-each-other-mutually](Link URL)

3
[https://stackoverflow.com/questions/5894385/c-include-problem](Link URL)

4
http://www.cplusplus.com/forum/articles/10627/

-
5
https://stackoverflow.com/questions/53515844/removing-circular-dependencies-between-classes-in-c
내가 찾던 스타일의 문제 해결로 보인다.
interface 를 도입해서 해결하는 방식으로...

--
하지만, 최종 해결은 class 라는 key-word 를 이용해서 forward declaration 을 통해 해결하였다. 위의 연결 1, 2, 3, 4 의 내용에 의한 해결 방법이다. interface 를 도입하는 것은 내가 겪은 문제에 대해서는 지나치게 복잡하고 관련성이 부족한 방법이었다고 결론 내렸다.
-
190203 ...
Effective C++ 2판 책 (번역본 대림출판사; Effictive C++ 2편 ISBN 89-7280-425-8)에 내가 겪은 것과 유사한 사례를 다루고 있었다.
(159쪽 [항목 34] 파일간의 컴파일 의존성(dependency)을 최소화하라
(159쪽부터 170쪽 까지)
(165쪽) 에는이 첵에서 다른 부분에서는 소개 되지 않는 용어가 나온다.
[Handle/Body] class
[Envelope/Letter] class

8쪽의 감사의 글 내용에 의하면, 이 [항목 34]에 나온 용어들은
(Jim Coplien) 저자의, ( Advanced C++: Programming Styles and Idioms )에 나오는 것이며, 이와 유사한 글이 현재 인터넷에 있는데, 같은 저자의 글이며, 이 글을 (디자인 패턴) 스타일로 고쳐서 쓴 것이라고 한다.
https://sites.google.com/a/gertrudandcope.com/info/Publications/Patterns/C--Idioms
이것은 GoF 의 디자인 패턴 목록에는 나오지 않는 것이다. 아마도 다른 저자(프로그래머)의 패턴 목록 확장으로 받아들이면 될 것 같다. 하지만, 그 글 자체(Advanced C++: Programming Styles and Idioms)는 GoF의 디자인 패턴 책보다 몇 년 이전에 나온 글이다.

여기의 목록 중에서, ....
https://sites.google.com/a/gertrudandcope.com/info/Publications#fullbib

아래의 항목을 찾으면 위의 ( C++ Idioms Patterns ) 문서를 아래와 같이 찾을 수 있다.
136
James O. Coplien. C++ Idioms Patterns. In Brian Foote, Neil Harrison, and Hans Rohnert, editors, Pattern Languages of Program Design 4, chapter 10, 167-197. Addison Wesley, Reading, MA, 2000.
-
아래의 page 에서 PDF file 을 다운로드 받을 수 있게 되어 있는데,
이 문서에는 위에서 나온 용어들에 대한 설명이 있는 백서(white paper) 를 download 받을 수 있다.

https://sites.google.com/a/gertrudandcope.com/info/Publications/Patterns/WhitePaper

PDF는 아래에서 다운로드
https://docs.google.com/viewer?a=v&pid=sites&srcid=Z2VydHJ1ZGFuZGNvcGUuY29tfGluZm98Z3g6MTI4MjVhZjFmMmJmY2NmOA

TDD, CDD
https://www.infoq.com/interviews/coplien-martin-tdd#anch19279
-
-