C++ 템플릿을 써야할 곳

Posted at 2010/02/05 00:20// Posted in 프로그래밍 이야기/잡담
같이 일하는 회사 동료분께서,

Q : 어떤 문제를 해결하기 위해 템플릿을 사용하여 만들어 봤지만 마음에 들지 않는다.
어떻게 하는 것이 좋을까?

라는 질문을 해주셨습니다. 작성하신 코드를 보니 뭔가 방법이 틀린것 같은 냄새가 났습니다. 의도는 좋았지만(단위 전략을 사용한 코드의 조합) 단점이 문제를 넘어서는(추가시 알아야할 정보가 너무 많다, 재사용하기 힘들다.) 느낌이랄까.
이분께는 이 문제를 템플릿으로 작성하였을 때 발생할 수 있는 단점을 예로 들어 다른 방안을 찾아보는 것이 어떻겠느냐라고 장황하게 이야기를 하였지만, 결론적으로 제가 드리고 싶은 말은 아래의 단 한줄입니다.

A : 그 문제를 해결하기 위해 템플릿이 필요하면 쓰고, 필요 없으면 쓰지 않으시면 됩니다.

컴파일 타임에 타입 또는 값을 결정할 필요가 있는가? 타입을 제외한 구현부가 중복되는가? 등등. 템플릿의 특성을 따져보아 해당 문제의 솔루션으로 선택될 수 있다면 사용하면 되는 거고, 아니라면 다른 방안을 강구하면 되는 겁니다. 템플릿을 쓰고 안쓰고의 문제가 아닙니다. 해결방안의 선택 문제입니다.
 
이런 질문을 받으며 떠오르는 생각이, 과연 온라인 게임의 컨텐츠 유지보수 코드상에서 템플릿을 사용할 만한 코드가 있는가 궁금증이 떠올랐습니다.(엔진 라이브러리는 제외한 코드를 이야기합니다.) 신입 프로그래머가 분석하기 어려울 수 있다는 요상한 현실타협형 이유도 있겠지만, 기획에 의해 많은 변경이 가해지는 코드를 컴파일 타임이라는 제약조건에 미리 가두어 버리는 코드를 작성하게 되면 추후 더 곤란의 여지에 빠질 확률이 높아질 것 같은 예감이 들기 때문입니다. 뭐 필요하면 쓰겠지만 아무래도 자제하는 편이 좋지 않을까라는 생각이 듭니다.

덕분에 많은 생각을 해볼 수 있었고 코드를 작성하는 또다른 시각을 볼 수 있었던 유익했던 질문이었습니다.

2010/02/05 00:20 2010/02/05 00:20
  1. 2010/02/09 00:51 [Edit/Del] [Reply]
    와.. 이런거 보면.. 공주님 유능하시군영.. 우왕..

댓글을 남겨주세요

[로그인][오픈아이디란?]

Name *

Password *

Link (Your Homepage or Blog)

Comment

Secret

할 일 관리 프로그램

Posted at 2010/01/24 15:02// Posted in 프로그래밍 이야기/잡담
드리밍 인 코드를 본 뒤, chandler 프로젝트에 관심을 가지게 되어, 회사 프로젝트를 하면서 개인적으로 1달반 가량 사용해 보았습니다. 처음에는 이게 뭔가아 싶었지만 생각보다 편리했습니다.

tien의 사용법 :

1. 할 일이 생각나면 그냥 위의 'Create a new note' 에딧박스에 적어 넣습니다. 생각 나는대로 쭉쭉 집어 넣습니다.
2. 목록을 주르륵 훑어보며 당장 할 일인지 나중에 할 일인지 초록 노랑 회색 아이콘을 클릭하며 생각해 줍니다.
3. 초록 아이콘이 달린 일들을 우선적으로 시작합니다. 끝

장점이 많았지만 단점 또한 존재하고 있었습니다.

chandler의 단점 : 반응속도 느림.
1. 초기 로딩 시간이 너무 깁니다. 백업 옵션을 끄면 그나마 좀 빨라지지만 이는 상대적으로 빠른 것이지, 프로그램을 클릭했을 때 당장 일정이 뜨길 원하는 유저 입장에서는 여전히 느려 보입니다.

2. GUI 반응속도가 느립니다. 노트를 클릭하면 1초 후에나 보여주는 부분이나, 특히 리사이즈시 버그라고밖에 볼 수 없는 윈도우 drawing 오류들이 보입니다. wxPython의 문제인지 뭔지는 모르지만 일단 체감상 느립니다. 아 완전 느려!!

결국 비슷한 형식의 다른 프로그램이 있지 않을까 찾아봤습니다.

1. things - 맥에서는 꽤 유명해 보이는 프로그램이더군요. 아직 버전이 그리 높지 않은 상태. 맥 전용이기에 패스-ㅅ-
2. remember the milk - 역시 유명한 to-do 목록 관리 사이트. 무려 한국어 페이지도 있어요. 생각해보니 2007년에 가입해 봤더군요.ㅋㅋ 금방 적응이 됩니다. 하지만 개인적 혹은 회사 일을 웹에 올려야 한다는 점이 상당히 찝찝해 패스.

'나는 윈도우 용이 필요하다구!!' GTD 등의 키워드로 검색하자 많은 리스트가 나왔고, 설렁설렁 돌아보았지만, 대부분의 프로그램들이 처음 봐도 질릴 정도로 많은 옵션과, 미리 알아야 할 것들을 유저에게 요구하고 있었습니다.
전 단지 할 일을 적어두고, 하는 중인지, 끝났는지 정리하고, 날짜가 있으면 적어넣고. 심플하고 빠른 프로그램을 쓰고 싶었습니다.

things가 가장 마음에 들었지만, 윈도우에서 쓰기엔 결국 chandler가 제겐 가장 좋은 선택일 수 밖에 없었습니다. 흑흑. 업데이트는 언제 되는건지;; 2.0은 개발 하고있긴 한건지...




결국 chandler를 다시 쓰기로 마음먹었습니다.



2010/01/24 15:02 2010/01/24 15:02
  1. 2010/01/27 00:16 [Edit/Del] [Reply]
    나도 이것저것 쓰다가 아이폰 생기는덕에 Thing을 쓰는데 정말 좋긴 좋아.
    라지만 구글캘린더와의 연동이 되는 informant라는거 씀.
    윈도우용으로는 라이프메니져였나. 이거 찾아봐.
    • TIEN
      2010/01/27 20:03 [Edit/Del]
      라이프 매니저가 설치후 10분만에 지워버린 프로그램.
      뭐가 그렇게 알아야 할 게 많은지ㅎㅎㅎ

      인포맨트? 그건 처음들어보네. 찾아보겠삼.
  2. 2010/01/27 13:15 [Edit/Del] [Reply]
    과감하게 까먹어주는 센스.. 응?

댓글을 남겨주세요

[로그인][오픈아이디란?]

Name *

Password *

Link (Your Homepage or Blog)

Comment

Secret

요새(라고 하기엔 한 4달정도 된...) 공부중인 AI. 특히 길찾기 중심적으로 공부하고 있는데요.
알고리즘 책의 그래프 이론을 다 공부하기엔 시간이 너무 없고;; 잘 알지도 못하고-_- 간략하게 그래프이론의 기본 개념과 그래프의 추상화, A*의 효율을 높인 HPA*에 대해서 공부했습니다.

그래프 이론

그래프를 알기 위해 보고있는 boost graph library(BGL)가 있습니다. 직접 사용하진 않고, 일단 참고만 하고 있어요. 최근(?)엔 이 라이브러리에 A*도 포함되어 게임에서도 충분히 쓸 수 있을 것 같긴 한데, STL을 처음 접했을 때와 같이 뭔가 심오합니다-ㅅ-; 아아..어렵습니다;; 무려 BGL 학습을 위한 책 한권이 나올 정도로 분량도 만만치 않네요. 지금 찾다 본건데, 이 책이 무려 2001년에 나온 책이네요;
언젠가 이걸 써서 길찾기 샘플을 만들어 보고 싶네요. 근데 너무 어려워요 아우.-ㅅ-;


HPAStar

일단 자료정리를 위한 링크 모음
HPA*라고 하면 반드시 보아야 할 문서
Near Optimal Hierarchical Path-Finding

aigamedev에 설명된 HPA*에 대한 개념정리.
Near-Optimal Hierarchical Pathfinding (HPA*) (로그인 해야 전문을 볼 수 있음-ㅅ-) 펌글은 이곳

알고나니 HPA* 알고리즘은 별거 없는데, 추상 그래프의 개념을 세우는 것이 더 어렵더군요.흑흑ㅠㅠ 지금도 오락가락 합니다-_- ㅠ게다가 현실에서는 기대한 것보다 퍼포먼스가 좀 덜 나옵니다. ㅠㅠ (이정도가 어디냐만은;) 물론 HPA*가 문제라기 보단 다른 외부적인 요인때문이기도 하고, 제가 좀 야매로 짠 감도 없잖아 있지만요.

현재 가장 큰 문제점은 U자 형태 그래프의 비정상적 길찾기 문제(shortest path를 못찾고 돌아가버리는)를 해결하지 못하는 겁니다. 흑흑 이를 어쩌나... 말로는 설명이 안되니 나중에 한번 그림을 그려서 포스팅해봐야 겠습니다.




2009/12/06 15:43 2009/12/06 15:43

댓글을 남겨주세요

[로그인][오픈아이디란?]

Name *

Password *

Link (Your Homepage or Blog)

Comment

Secret

토치라이트 플레이중.

Posted at 2009/11/22 13:17// Posted in [취미생활]

심심풀이로 플레이하던 토치라이트. 어느새 레벨 30이 되었습니다.

사용자 삽입 이미지


뭔가 스텟을 잘못 찍은듯한 기분이 들긴 하지만, 뭐 상관없죠. 그냥 즐기려고 하는건데요.


2009/11/22 13:17 2009/11/22 13:17

댓글을 남겨주세요

[로그인][오픈아이디란?]

Name *

Password *

Link (Your Homepage or Blog)

Comment

Secret

1 2 3 4 5 ... 34