프로그래밍 언어2014. 4. 18. 18:01

지난 4주 정도 빡세게 본 책인데, 드디어 오늘 끝을 봤다. 절묘하게도 금요일에 마무리가 되었네.

사실 디자인패턴 교육을 가기 전에 마무리 하려고 노력을 했었는데, 3분의 2정도만 보게 됐었다.

하지만 그정도 만으로도, 교육을 받는데 큰 도움이 되었다.

그리고 나머지 3분의 1을 보니, 교육에서 다뤄줬던 내용들이 많이 언급되어 선 순환이 되었다.

 

사실 학부 시절에 C++ 기본서를 한 권 공부 했었고, 그래서 template이 뭐다 정도 까지는 알고 있었다.

심지어는 자료구조 실습에서 template를 이용해 가산점을 받기도 했었다.

그리고 Effective C++, More Effective C++도 한 번씩 보긴 했었는데, 오래되니 잊어버리더라는.

(강사님은 Effective C++ 같은 책은 심심할 때마다 꺼내 읽어 보신다는군-0-)

 

그런데, Android framework 소스(정확히는 binder)를 보다 보니, template 뿐만 아니라 C++ 고급 문법들이 수두룩 했다.

심지어 처음 보는 문법들도 많이 있었고, C++ 고급문법, template, 그리고 디자인 패턴의 필요성을 절감 했었는데,

드디어 어느정도 윤곽을 잡은 느낌이다. (C++ Idiom 이라는 것도 알게 되었고 말이지)

 

암튼 마무리 하고 나니 홀가분 하다. 뭐 당연히 나중에 다시 펼쳐서 찾아보거나 해야 겠지만 말이지.

이제 C++ 소스들을 좀 많이 봐야겠다.

 

책에 대한 평가(?)를 해 보자면, 뭐 워낙 유명한 사람이 썼고, 바이블 같은 책이라니 내용은 할말이 없지만,

번역은 좀 부족한 느낌이 든다.

사실 번역된 문장 때문에 내용이 더 헷갈리는 경우도 많이 있었고, 그래서 원문을 찾아보고나서 이해됐던 경우도 있었다.

Reading 능력이 뛰어나다거나 여유를 가지고 볼 수 있다면, 원서를 보는 것도 나쁘지 않을 듯.

 

Posted by 세월의돌
프로그래밍 언어2014. 4. 17. 10:21

요즘 Visual Studio 2013을 자주 사용하면서, 단축키를 좀 알아 봤다.

엄청 많은(800여개?) 단축키가 있지만, 그 중에 내게 유용하다고 판단한 것들만 간추려 정리 해 둔다.

 

Edit

Surround With
→ Ctrl+K, Ctrl+S

Remove Row
→ Ctrl+Del

Replace
→ Ctrl+H

Replacein Files
→ Ctrl+Shift+H

Parameter Info
→ Ctrl+Shift+Space

Uncomment Selection
→ Ctrl+K, Ctrl+U

Make Lowercase
→ Ctrl+U

Make Uppercase
→ Ctrl+Shift+U

List Members
→ Ctrl+J

Open 'The' Include File
→ Shift+Ctrl+G

Line Cut
→ Ctrl+L

Line Delete
→ Ctrl+Shift+L

Insert Snippet
→ Ctrl+K, Ctrl+X

Format Document
→ Ctrl+K, Ctrl+D

Format Selection
→ Ctrl+K, Ctrl+F

Expand All Outlining
→ Ctrl+M, Ctrl+X

Comment Selection
→ Ctrl+K, Ctrl+C

Collapse All Outlining
→ Ctrl+M, Ctrl+A

Solution Explorer

Sync With Active Document
→ Ctrl+[, Ctrl+S

Posted by 세월의돌
프로그래밍 언어2014. 2. 17. 15:56

EGL Extension 관련 문서를 읽다보니 opaque handle이란 용어가 나오는데, handle이 opaque(불투명한, 이해하기 힘든) 하다는 것은 도대체 무엇인지 감이 오지 않았다. (촉이 죽은건지-_-;)


예전에 Windows 프로그래밍에 HANDLE이라는 데이터 타입이 있었는데, 이게 뭘까 궁금해서 찾아봤을 때는 단순히 void* 였고, 책에서는 '내부적으로 의미를 갖는 숫자' 정도로만 나왔던 기억이 있었다.


그래서 찾아보니, 역시나 명확하게 잘 정리된 블로그가 있었다. (유명한 art.oriented 블로그)



사족이 길었는데, opaque handle이란 '사용자(개발자)는 이해할 수 없는 데이터 타입' 정도로 이해하면 되지 않을까?


사용자가 어떻게 조작해야 할 지 알 수 없는 데이터 타입이기 때문에, 해당 타입을 조작(?) 할 수 있는 API들이 제공되어야 하고, 사용자는 반드시 해당 API를 이용해야 소기의 목적을 달성할 수 있다는 정도로...



좀더 자세한 내용은 위 블로그를 참고하자! : )


Posted by 세월의돌
프로그래밍 언어2012. 5. 15. 10:37

template은 compile time에 코드를 생성 해 주는 것이므로, template의 구현부는 compile time에 필요하다.

.h와 .cpp로 나누어 놓게 되면, 해당 header를 include하는 소스는 실제 구현부가 없기 때문에 template 코드를 생성하지 못하므로, link 시에 해당 구현이 없다고 에러를 뱉어낸다.


More Effective C++의 Item 29를 연습하다가 RCPtr template과 관련하여 link error를 계속 뱉어내서 한참 고민했네.;;

역시 구글신이 해답을 찾아 줬는데... 보고 나니, template 코드는 header에 몰아 놓으라고 들었던 기억이 나는구나. Orz


아놔... 이래놓고 뭔가 잘 아는것처럼 알려진다는게 참 부끄럽구나.

Link error 하나도 잡지 못하는 무지렁뱅이-_-;


어쨌든 늦었지만 다시 달리고 있다!!!


Posted by 세월의돌
프로그래밍 언어2011. 7. 29. 15:11
MS Office의 각 제품들에는 VBA(Visual Basic for Application)이라는 이름으로,
Visual Basic을 이용해서 프로그램으로 EXCEL을 제어할 수 있도록 되어 있다.

이번에 필요에 의해, EXCEL에서 cell의 배경색을 변경하는 코드를 작성 해 보았다.
(RGB 색상 조합 및 반목문 등을 사용)

Sub UpdateColor()

    For i = 2 To 51

        r = Range("H" + CStr(i)).Value

        g = Range("I" + CStr(i)).Value

        b = Range("J" + CStr(i)).Value

        Range("K" + CStr(i)).Interior.Color = RGB(r, g, b)

        

        rIndex = 53 - i

        r = Range("H" + CStr(rIndex)).Value

        g = Range("I" + CStr(rIndex)).Value

        b = Range("J" + CStr(rIndex)).Value

        Range("L" + CStr(i)).Interior.Color = RGB(r, g, b)

    Next

End Sub

 
위 코드를 이용하면,
H열, I열, J열 이렇게 세 열의 각각의 cell에 R, G, B 값이 저장되어 있을 때,
그 값을 조합해서 K열에 실제 색상을 표시할 수 있다.

Posted by 세월의돌