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
-
-