괄호를 이용하여 초기화 한다. 초기화에 별다를 게 뭐 있다고 이런 기능이 추가 됐나 하면서 내용을 읽어보았다.

-------------------------------------------------------------------------------------------



라인 8을 보자. 괄호안에 값을 넣지 않으면 적절한 기본값으로 설정된다. 만약 괄호가 없었다면 어떤 쓰레기값이 있을지 모르겠다.

라인 15를 보자. 자리수를 그룹화 하여 표현할 수 있다. 물론 안해도 그만이지만 훨씬 더 가독성이 높아졌다. 물론 자리수를 3 자리나 4자리 아니 아무렇게나 해도 이의(?)를 제기하지는 않는단다.



괄호를 이용하면 변수가 허용하는 값 범위내에서는 초기화가 가능하다.




괄호를 이용해야만 16진수를 입력할 수 있는 것은 아니지만, 16진수를 입력할 수 있다. 8진수는 숫자 0, 2진수는 숫자 0 과 B를 분이면 된다.



sizeof  키워드는 글자 그대로 메모리에 차지하는 공간의 크기를 물어보는 것이다. 입력값이 실제 숫자이든, 자료형이던간에 그대로 할당되는 메모리 공간을 알려준다.



c++을 하다보면 땔레야 땔 수 없는 수치함수 들이다. 이참에 잘 이해하고 넘어가 보자.

라인 57 에서 절대값은 쉽다. 그저 음수를 양수로 바꿔주는 것이다. 그다음 ceil과 foor 인데, 우리말로 하면 올림과 자름정도 되겠다. 근데 그 올림과 자름이 0을 기준으로 하고 있다.

라인 65 부터는 exp, log, log10을 설명한다. 지수, 자연로그 등을 표현한다. 라인 71 부터는 root와 제곱이다. 지금 예를 들은 것은 딱 떨어지므로 EXPECT_EQ로 비교하였다. 실제로는 line 65처럼 비교해야 할 거로 생각된다.

라인 76은 정수와 가까운 쪽으로 처리된다. 즉 반올림이라고 할 수 있다. 숫자가 정확히 가운데를 가리킬경우 바깥쪽으로 정해진다.

그 외에 sin, cos, tan 값이 있고 인자는 항상 radian 값을 사용한다.

static_cast keyword를 이용한 명시적 변환히다. C++ 17에 국한된 연산자는 아니고 C++ 스타일의 cast 기법이다.

static_cast 는 컴파일 타임에 에러를 만든는 반면에 dynamic_cast는 런타임시 사용되며 상속관계가 있어야 사용할 수 있다.


최근 C++ 로 다시 업무를 해야할 일이 있을 것같아 다시 들여다 보고 있다. Modern C++은 기존에 내가 해오던 것에서 너무 많이 바껴서 새롭게 공부가 필요함을 느낀다. 아래 원서를 가지고 공부를 시작해야 겠다.



공부 방법은 늘상 하듯이 Unit Test를 만들어서 코드를 작성해보려고 한다. Visual Studio 2017에서는 C++ 기반으로 두가지 테스트 프로젝트를 제공한다. 이중 Google Test 를 이용하기로 하자.



책을 가볍게 흟어 보니 C++17 까지 설명한 책이지 C++17에서 새롭게 나온것 만을 설명하는 것은 아닌것 같다. Modern C++에 대해서 정식으로 공부해본 적 없는 나같은 old style C++ 프로그래머에게는 더 적절하겠다. 이후 정리는 Modern C++ 이라고 생각될 만한 것들만 정리하여 chapter 당 한 페이지씩 작성할 생각히고, 또한 정리한 source code를 github 에 올릴 생각이다. https://github.com/pronaman/DailtBookStudy.git



자 그럼 스타트!



Qt Creator 사용 시 기본이 되는 단축 키는 아래와 같다.

  • Ctrl+B - Build project
  • Ctrl+R - Run Project
  • Ctrl+Tab - Switch between open documents
  • Ctrl+K - Open Locator
  • Esc - Go back (hit several times and you are back in the editor)
  • F2 - Follow Symbol under cursor
  • F4 - Switch between header and source (only useful for c++ code)

더 자세한 단축키들을 보려는 아래 링크를 클릭하라.

http://doc.qt.io/qtcreator/creator-keyboard-shortcuts.html

 

또한 Menu의 Tools -> Option -> Environment 를 통해 확인할 수 있다.

 

 

 

It means open gl library need to be compiled. type the commnand below in a terminal.


sudo apt-get install libglu1-mesa-dev

처음에 Visual Studio 2017을 한글 윈도우에서 설치하고 나면 메뉴와 각종 에러 메시지들이 한글로 나오게 된다. 하지만 각종 문의를 하거나 에러에 대해서 검색할 때는 영문 에러 메시지가 더 나은 결과를 보여줄 때가 많다. 아래와 같이 언어팩을 추가하고 설정을 변경하면 영문 메뉴와 에러 메시지들이 나오도록 변경할 수 있다.

 

Visual Studio 2017 Installer를 실행하여 언어 팩에서 영어를 추가한다.

 

 

그 다음 Visual Studio 2017을 실행한 뒤 도구 -> 옵션 -> 국가별 설정을 선택한 뒤 언어를 English로 바꿔주고 프로그램을 재 시작하면 영문으로 변경된다. 이제 에러 메시지를 그대로 긁어 검색하면 대개 Stackoverflow 사이트에서 원하는 답변을 첫번째로 얻게 될 것이다.

 

 

 

When I born, I black. 내가 태어났을때 난 검다. 

When I grow up, I black. 내가 성장할때 난 검다. 

When I go in sun, I black. 내가 햇볕에 나갈때 난 검다. 

When I cold, I black. 내가 추울때 난 검다. 

When I scared, I black. 내가 두려울때 난 검다. 

When I sick, I black. 내가 아플때 난 검다. 

And when I die, I still black. 그리고 내가 죽을때 난 여전히 검다. 


You white folks 너희 백인들은 

When you born you pink. 네가 태어났을때 넌 분홍이다. 

When you grow up you white. 네가 성장할때 넌 희다. 

When you go in sun you red. 네가 햇볕에 나갈때 넌 붉다. 

When you cold you blue. 네가 추울때 넌 파랗다. 

When you scared you yellow. 네가 무서울때 넌 누렇다. 

When you sick you green. 네가 아플때 넌 녹색이다. 

When you bruised you purple. 네가 멍들었을때 넌 보라다. 

And when you die you grey. 그리고 네가 죽을때 넌 회색이다. 


So who YOU call in C O L O R E D? 그렇게 넌 누구를 유색이라 부르는가.

 

'About Me > Human' 카테고리의 다른 글

깨어있는 시민으로 세상을 바꾸고, 세상을 구하자  (0) 2018.12.28

- 마르틴 니뮐러의 그들이 왔다 -

맨 먼저 그들은 공산주의자를 잡으러 왔지만

나는 공산주의자가 아니었으므로 아무 말도 하지 않았다.

그리고 그들은 노동조합원을 잡으러 왔지만

나는 노동조합원이 아니었으므로 아무 말도 하지 않았다.

그리고 그들은 유대인을 잡으러 왔지만

나는 유대인이 아니었으므로 아무 말도 하지 않았다.

마지막으로 그들은 나를 잡으러 왔지만

나를 위해 말해줄 사람은 아무도 없었다.

'About Me > Human' 카테고리의 다른 글

2006년 UN이 선정한 최고의 시  (0) 2018.12.28

 

https://book.naver.com/bookdb/book_detail.nhn?bid=7010768

 

새롭게 소프트웨어 개발자로 입문한 친구뿐 아니라 경험많은 개발자한테도 권해주고 싶은 책이다. 팀을 구성하면 팀원들한테 한권씩 사주고 읽어보라고 권하고 싶다. 책에서 나오는 중요한 문장을 옮겨보고 코맨트를 달아보자.

 

chapter 13 개발 일정을 맞추는 방법

- 여러 새로운 기능의 개발이 공통적인 구성 요소에 많이 얽혀있을수록 많은 프로그래머가 서로 상대방의 코드를 건드리게 되며, 더 중요한 것은 서로 상대방의 설계 시 가정사항을 건드릴 일이 많아지게 된다. - 라이트스톤의 복잡성 원리(Lightstone's convolution principle)

 

  • 일정이 지연되는 이유

1. 범위 변경 문제

//요구사항의 항상 25% 이상 변경 된다고 가정하는게 맞다. 팀원들한테도 요구사항이 변경될 수 있음을 끊임없이 알려야 하고 그것이 당연하다고 인식시켜야 한다. 그렇지 않으면 요구사항이 변경될때마다 부당함을 어필하는 팀원들로 머리가 아파질 수 있다.

2. 인력 수준의 문제

//5 ~ 28배의 일인당 생산성의 차이 발생한다고 하는데 대개의 팀은 최악과 최고의 사이 어딘가에 위치해 있어 실제로는 2 - 3배 정도의 차이를 내는 것으로 생각된다. 물론 2,3배도 엄청난 거지만.

3. 지연된 프로젝트에 사람이 더 붙으면 오히려 더 느려지는 문제

//프레드 브룩스의 맨먼스의 신화를 통해 많이 알려진 이야기지

4. 개발팀의 목표가 불분명한 문제

//이부분은 성당을 만드는 석공의 이야기를 비유로 하면 좋을 듯

5. 의존성 관리: 기능별 예상치를 그냥 더해서 생기는 문제

//결합도와 응집도에 최대한 신경을 쓰는게 해결책 아닐까?

6. 잘못된 추정치 문제(비율 주의)

//코딩의 전체 개발 사이클의 1/6에 불과한데 코딩에 대한 일정으로만 추정하는 경향이 있다고 하는데 이것은 팀장이 팀원의 추정을 지속적으로 보정해 주면 된다. 멍청한 팀장이 아니라면 팀원에게 그가 말한 추정치의 근거를 물어보아야 한다. 그러면 그가 개발 사이클의 포함했는지 단순 코딩만 넣었는지 확인할 수 있다.

7. 공격적인 추정치 문제

//마치 팀을 이상적인 개발팀으로 생각하여 일정을 잡곤하지

8. 난 임계 경로에 들어있지 앟아 라고 생각하는 문제

//이건 생각 못했던건데 다른 팀원의 기능 구현때문에 일정이 늦어질때 자기가 구현해야할 기능도 일정을 지연시키는 현상을 말한다. 오 참신한데. 게으름 피우기 딱 좋은 상황

9. 소프트웨어의 엔지니어링 개념을 말아먹는 문제

//개발 방법론이 없거나 지켜지지 않는 경우  개발자들은 프로젝트 후반부에서 죽음의 행진을 하게 되는건 명확하다. 1인 개발이 아닌 팀인 경우 개발 방법론이 없다는 것은 나침반 없이 바다로 나가는 것이다.

10. 직원이 해야하는 다른 일을 고려하지 않는 경우.

//휴가, 발표 준비 등등의 일을 고려하지 않고 일정을 짠다는 말인데, 대략 1년에 20정도의 일정을 버퍼로 넣어야 맞아 보인다.

11. 바람의 변화

  • 이미 일정이 지연됐을 경우

1. 기능 줄이기

//내가 제일 좋아하는 방법이다. 프로젝트 초반에는 중요했다고 생각하는 기능들이 후반에는 불필요하거나 중요하지 않게 되곤 한다.

2. 기능 쪼개기

//기능 줄이기와 같은 맥락

3. 재협상

//일정을 다시 논의 하는 것인데 이렇게 하려면 일정에 대해 납득할 만한 근거가 있어야만 통하지, 안그러면 무능해보일 우려가 있다.

 

 chapter 17소프트웨어 혁신 리더쉽

  • 혁신가의 12가지 원칙

1. 주변에 최대한 뛰어난 사람들만 골라서 배치하라

//맞는 말이긴 하지만 뛰어난 인재를 고르기란 대단히 어렵다. 마치 서울대 가려면 공부 열심히 하라는 말처럼 공허하다. 가지고 있는 인재 풀 중에서 최대한 적절한 인재를 골라야 하겠지. 최대한 지연, 혈연, 학연등을 배제한채로 말이다.

2. 혁신에 보상하라

//오래전에 읽은 책중에 데모를 준비하려고 2주간 야근한 개발자에게 피자 한판으로 보상하는 것은 개발자를 모욕하는 것이라고 했다. 적절한 보상은 팀장으로써 반드시 쟁취할 분분이다. 그래야 리더쉽을 발휘할 수 있다.

3. 영역주의를 없애라

//음 용어적으로 적절하지 않은 표현같지만 팀워크를 중시해라 정도로 이해해야 할듯

4. 반복하라

//반복 개발하며 피드백을 받는 것은 팀 개발 방법론의 기본중의 기본

5. 해결책이 아니라 문제를 안겨줘라.

//생각해 볼 문제다. 이전까지 팀원이나 동료가 문제를 가져오면 같이 해결하는 것을 나의 큰 장점으로 생각해 왔는데 질문을 던지고 문제의 본질에 대해서 더 분명히 파악할 수 있도록 도와주라고 한다. 쉽게 말해 물고기를 주기보다 잡는 법을 알려주라는 건데. 두가지 방식을 잘 조율해야겠다.

6. 데이터는 중립적이다

//물론 그렇다 데이터는 중립적이지만 그것을 해석할때 외곡이 발생한다. 책에서는 확실한 데이터를 근간으로 사내 정치에 휘둘리지 말라고 하지만 같은 데이터를 가지고 상반된 해석으로 피터지게 싸우면 이런말 안할텐데..... ㅋ

7. 주어진 상황 내에서 문제를 해결하라

//이건 중요한 말이다. 현실을 직시하고 조건 내에서 최대한 해결하려고 노력해야 한다. 안그러면 끊임없는 불평에 계속된다.

8. 친화도를 높여라

//성공하는 사람의 7가지 습관에 나오는 것처럼 상대방의 감정계좌에 충분이 내가 쌓여 있다면 일을 하기는 편해진다. 방법은? 무조건 도와주자. 내가 필요할때 도움을 받을 수 있도록

9. "저것은 남의 것" 증후군에 걸리지 않도록 주의하라

//바퀴를 다시 발명하지 말라!

10. 다른 분야에 대한 지식을 쌓아라

//이종분야에 대한 융합역량은 생각보다 중요한 것 같다. IT뿐 아니라 경제, 문화등 다양한 지식을 쌓을 필요가 있다.

11. 현재 최신 기술을 이해하라

//익숙한 기술이 아니라 현재 최신 트랜드가 어떤지 최소한 이해는 하고 있어야 한다. 무엇이 있는지 알아야 나중에 필요할때 깊이 학습하여 적용할 수 있기 때문이다.

12. 일하는 방법에 있어서 사용자와 시장에 휘둘리지 말아라

//혁신적인 아이디어는 시장에서 나오지 않는다. 시장을 분석하는 것은 필요하지만, 분석만 하고 통찰력이 없다면 핸리 포드는 더 빠른 말을 기르는데 주력했을 것이다.

 

 chapter 18 빅 리그: 거물에서 선지자로

  • 초보 필자들을 위한 조언

1. 내가 아는 것을 쓴다

2. 질에 초점을 맞춘다

3. 나라면 이걸 읽을지 자문해 본다

4. 가능하면 다른 공저자들과 함께 일하자

5. 문체도 중요하다.

6. 글 써서 부자가 될 생각은 금물이다.

 

  • 공공 발표

1. 청중을 이해하라

//청중이 누구인지에 따라 다른 내용으로 발표를 해야한다.

2. (내용뿐 아니라) 스타일로 청중에 맞춰라

//청중이 경영진인지, 학생인지, 기술자인지에 따라 다른 스타일로 발표하는 것은 생각 못한 부분이다. 경영진한테 발표할때는 좀더 진중하게 해야겠다.

3. 알아듣기 좋게, 적당한 빠르기로 발표하라

//긴장하며 발표하다 보면 점점 말이 빨라지기도 하는데 의도적으로 속돌르 조절할 필요가 있다.

4. 청중을 사로잡아라

//보통 처음 발표를 시작할 때 주제와 관련된 잘 알려지지 않은 재미있는 이야기로 시작하곤 하는데 그런 방식은 발표에 집중하게 되는 좋은 효과를 내곤 했다.

5. 손동작을 절제하라

//오바마나 클린턴 연설을 유투브에서 보고 어느정도 해야하는지 참조하란다. 나중에 함 봐야지. 애매하면 그냥 두손 맞잡고 하자..

6. 웃어라

//웃는 표정으로 하고 가끔 청중과 눈도 마주치자. 근데 자꾸 까먹음. ㅠ ㅠ

7. 차트가 아니라 내가 발표한다는 점을 기억하라

//발표자료 죽죽 읽는 것은 최악이다.

8. 내가 주인공이 아니다

//스토리텔링을 할때는 나를 쓰지만 그 이외의 경우에는 안쓰는 것이 좋다고 한다.

9. 그래서?

//발표를 하고 나면 커다란 주제에 대한 메세지를 전달해야 한다. 또한 각 페이지 마다 그에 관련된 작은 메세지를 알려주어야 한다.

10. 적수를 만들어라.

//선명한 대비 구조를 만들어 지금 발표가 악(?)과의 싸움임을 보여주어라. 적수가 없다면 이발표가 얼마나 필요한지 꼭 인식시켜 주어야 한다.

 

chapter 22 성공하기

  •  어떤 사람이 성공하는가?

1. 목표 지향적이다.

2. 감성 지능이 높다.

3. 엄청나게 똑똑하다.

4. 자기 분야의 전문성을 가지고 있다.

5. 놀랄 만큼 집요하면서도 예의를 갖출 줄 안다.

 

최고 자리에 올라간 사람의 공통점은 초창기에 그 분야에 뛰어들었다. 최신 트랜드와 경향을 파악할 필요가 있다. IT역사에서 무엇이 새롭게 태동하고 있는가


+ Recent posts