2011년 06월 16일 오전 09시 30분에 Kinect for Windows SDK 베타 버전이 공개되었습니다. 

베타 다운로드 사이트는 아래와 같습니다.
http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/

Download the SDK 를 클릭하여 페이지를 이동하면 다음과 같은 페이지로 이동하게 됩니다.
베타 버전은 Window7 32-bit 또는 64-bit 버전 중 자신에게 맞는 버전을 선택하여 다운 받을 수 있습니다.


요구되는 시스템 사양입니다.
하드웨어 사양은 조금 낮아도 실행은 되나 Software는 반드시 윈도우7을 사용하여야 합니다.
(x86은 32-bit, x64는 64-bit를 의미합니다)


키넥트와 PC 연결을 위해 키넥트 USB 파워 어댑터를 주문했습니다.
어서 연결해서 예제 테스트를 해보고 싶네요.




Posted by duki 두기

윈도우 7에서 플래시 파일들을 인터넷으로 보려고 하였는데 보이지 않는다!
아래의 전역 보안 설정 패널을 사용하여 플래시 파일들을 추가해주면 원활하게 작동된다.


아래 링크페이지를 따라가면 된다.
 http://www.macromedia.com/support/documentation/kr/flashplayer/help/settings_manager04.html
Posted by duki 두기


처음으로 P2P 통신을 위해 크로스 케이블을 사용하였다.

UTP 케이블은 용도에 따라 크로스 케이블과 다이렉트 케이블로 나누어진다. 우리가 보통 사용하는 '랜선'은 다이렉트 케이블이다.

두 개의 케이블은 눈으로 쉽게 구별할 수 있다. 보통 색상 배열을 보고 확인을 하는데, 다이렉트는 양쪽이 같은 색으로 1:1 연결이 되어 있고, 크로스는 1,3번과  2,6번이 바뀌어 있다. 


            크로스 오버 케이블 색상배열                                 다이렉트 케이블 색상배열
                 (두 대의 컴퓨터 연결)                                          (허브와 컴퓨터 연결)


보통 크로스 케이블은 두 대의 컴퓨터를 연결할 때 사용하고, 다이렉트 케이블은 허브와 컴퓨터를 연결할 때 사용한다. 허브는 단지 신호를 다른 컴퓨터에 전달할 뿐이다(다이렉트로). 때문에 다이렉트 케이블을 사용한다. 두 대의 컴퓨터를 연결할 때 크로스 케이블을 사용하는 이유는  보내는 신호와 받는 신호가 서로 달라야 하기 때문이다. 아래 그림을 참고하자.
 



이미지 출처
- 랜선 크로스와 다이렉트의 구별과 사용처는? (크로스 오버 이미지 오류 수정)
   http://blog.naver.com/animatronic?Redirect=Log&logNo=70045771947 


Posted by duki 두기

Visual Studio가 설치되면, 처리되지 않은 예외 발생시 오류메세지를 띄우게 되어 있습니다. 이 창을 비활성화 시키기 위해서는 디버거를 선택하여 디버깅을 하거나 예외를 무시해 주어야 합니다. 
저는 레지스트리 키값을 삭제하여 처리되지 않은 예외가 발생하여도 팝업창을 띄우지 않도록 설정했습니다.


1. 시작>실행 에서 'regedit'를 눌러 레지스트리 편집기를 엽니다.
2. 왼쪽 트리에서 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT
    \CurrentVersion\AeDebug로 이동
합니다.
3. Auto 값을 1->0 으로 변경합니다.
4. 이제 자동으로 Visual Studio Just-In-Time Debugger 오류창이 뜨지 않습니다.


 
Posted by duki 두기

version. Autodesk 3ds Max 2009

Unity에 3D Modeling 된 오브젝트를 불러오고자 할 때 가장 간편하게 불러올 수 있는 방법은 맥스를 이용하는 것이다.


  • 오브젝트의 파일 포맷
Unity에서 주로 사용하는 오브젝트 파일은 FBX이다. 아래는 Autodesk의 공식 홈페이지에 있는 FBX기술에 대해 설명한 글이다.

-

오토데스크 FBX 기술은 플랫폼과는 독립적이며 영화, 게임, TV, 디자인 시각화 산업에서 가장 폭넓게 사용되는 3D 데이터 교환 솔루션입니다. FBX는 데이터 호환성의 장벽을 허물고 보다 효율적인 파이프라인을 구축할 수 있는 자유를 보장합니다.

Autodesk® FBX® 포맷은 많은 3D 벤더의 3D 컨텐츠에 대한 접근을 제공하는  플랫폼에 독립적인 무료 3D 제작 및 교환 포맷입니다. FBX 파일 포맷은 모든 주요 3D 데이터 구성요소뿐만 아니라 2D,오디오, 비디오 미디어 구성요소를 지원합니다.
 
FBX 덕분에, 우리는 많은 3D 소프트웨어와 상호 운용성을 확보할 수 있었습니다. FBX 포맷이 없었다면, 우리의 기술과 모션 캡쳐 기술이 이렇게 쉽고 원활하게 연동되지 못했을 것입니다.
—Ronald Mallet, MatchMover 프로덕트 매니저, REALVIZ

http://www.autodesk.co.kr/adsk/servlet/index?id=6962282&siteID=1169528
 
 
  • Export 되는 정보들
1.  Nomal Vector(법선벡터), Transform(위치), Rotate(회전값) and Scale(스케일) Value
2.  Objects Name(Vertex, Mesh, Polygon etc.)
3.  Material, Vertex Color
4.  All Animation

  • 3ds max에서 FBX 포맷으로 Export 하기
1.  File>Export 를 클릭 하면 Select File to Export 창이 뜬다.
2.  파일 형식은 Autodesk (*.FBX)로 변경하고 파일이름을 적어 저장한다(Cube.FBX). 
3.  FBX Export 창이 뜨면 OK를 눌러 완료한다.

[TIP] FBX Exporter는 검색사이트를 이용하여 다운로드 받을 수도 있으며,
        Autodesk FBX의 download를 이용할 수 있다.

  • Unity에서 Import 하기
1.  Unity에서 새로운 프로젝트를 생성한다(Example).
2.  설정을 변경하지 않았다면 내문서의 하위에 프로젝트가 있을 것이다.
     (My Document>Example)
3.  현재 프로젝트의 Asset 폴더의 하위에 Export 한 FBX 파일을 위치시킨다.
     (My Document>Example>Asset>Cube.FBX)
4.  Unity로 돌아가면 자동으로 Asset 하위의 FBX 파일들이 Import 된다. 

  • FBX Export Settings
1.  기본 설정대로 Export 해도 큰 무리가 없다.
2.  필요하다면 Include의 Animation, Camera, Lights 등의 정보를 포함할 것인지 여부를
    체크 및 해제할 수 있다.



Posted by duki 두기





1. 그라데이션을 넣을 빈 레이어를 선택한다.
2. Paths 메뉴로 이동하여
3. 추출할 모양의 레이어 마스크를 클릭한다음
4. Load Path as Selection을 선택하면
5. Path의 라인을 따라 아웃라인이 선택된다 .


 

'Design' 카테고리의 다른 글

투명도 효과 사용을 위한 - 온라인 포토 편집기  (0) 2011.03.16
Posted by duki 두기

 

부제 : 밴티지 포인트 가꾸는 ‘인터랙티브 스토링텔러’
대제 : 설은아 포스트비쥬얼 대표

<전문>
지난 2008년 서울 명동에 위치한 모 스포츠 매장 윈도 앞. 대형 화면 앞의 손모양 스크린에 방문객이 손을 대자 열심히 훈련하던 김연아가 어느 새 눈앞까지 다가와 함께 손바닥을 대며 “제 열정이 느껴지세요?”라고 말한다. 지난 2008년 설은아닷컴(seoleuna.com)과 포스트비주얼 포트폴리오를 들여다보면 묘한 공통점을 찾을 수 있다. 바로 인터랙션, 그리고 쌍방향 커뮤니케이션이다. 디자인 하나만으로 유저와 소통할 줄 알아야 한다고 강조하는 설은아 대표를 밤늦도록 젊음의 열기가 끊이지 않는 홍대에 위치한 그의 회사에서 만났다. 마침 설 대표는 연이은 PT 회의로 밤늦도록 분주한 모습이었다.

 

글 김관식 편집장 seoulpol@websmedia.co.kr

 

Who is she?
설은아 대표는 전 세계인들과 호흡하는 웰 메이드를 지향하는 크리에이티브 디렉터로서 지난 1999년 이정원 공동대표와 포스트비쥬얼을 설립했으며, 현재 이지희 전 웰콤 부사장의 합류로 업계의 주목을 끌었다. 설 대표는 국내 웹 디자인 분야에서 내로라할 인터랙티브 스토리텔러이기도 하다.

 

 

-바쁘시니 바로 본론으로 들어갈게요. ‘설은아’식 웹 디자인은 무엇인가요?
사실 디지털이라는 말이 우리 시대에 슈퍼스타처럼 회자되지만, 너무 많이 활용되고 확장돼 정작 그 본질이 무엇인지 모호한 형국이에요. 중요한 건 디지털 시대에 맞는 화법으로 유저와 새로운 커뮤니케이션을 지향해야 한다는 점이죠. 디지털은 곧 패러다임이고, 패러다임은 같은 시대의 의식체계를 의미하니까요. 디지털이 가진 속성을 기본으로 한 사고도 꾸준히 변하기 때문에 그에 걸 맞는 새로운 커뮤니케이션 기법이 나와야 해요. 기존에는 막연히 공급자 중심으로 내가 하고 싶은 말만 할 수 있었어요. 하지만 그건 너의 말뿐이지, 우리의 말이 아니거든요. 만약 이것이 광고라면 더더욱 믿지 않겠죠. 분야가 무엇이 됐든 기본적으로 웹 사이트는 유저와 소통할 수 있는 근간이 돼야 합니다. 리얼하고 솔직담백한 디자인을 구성해야 해요. 내용을 과장하거나 부풀릴 필요도 없어요. 그런 브랜드는 오래 지속되지도 않고요. 유저는 똑똑합니다. 이제는 이용자 중심의 화법으로 사이트를 전개해야 합니다. 포스트비쥬얼이 내세우는 개념도 이와 같지요.

 

-디지털이 주는 매력은 어디에 있을까요?
디지털, 나아가 인터넷이 주는 매력이 바로 쌍방향 커뮤니케이션입니다. 이젠 기존의 메시지 전달과는 확연히 다른 개념이죠. 인터넷은 이제 누군가 A를 보냈다면 B를 받아야 완성이라고 할 수 있어요. 즉 피드백이 있어야 하는 거예요. 인터랙티브는 당연하고요. 한 가지 재미있는 게 사람들의 행동 패턴도 변화하고 있어요. ‘너의 말을 받아들일게’가 아닌, ‘네가 얘기했다면 내 얘기도 들어볼래?’라는 것이죠. 각각의 개인이 중요해지고 있어요. 그런 커뮤니케이션 화법으로 디지털 시대를 살아가는 것이 저를 포함한 포스트비쥬얼의 디지털 마인드이기도 하죠.

 

-요즘 웹 사이트를 보면 비주얼 테크닉에만 집중한다는 지적이 있습니다.
디자인의 개념도 점차 바뀌고 있어요. 아무래도 보다 예쁘고 신기술을 적용한 웹 사이트, 혹은 웹 디자인이 당장 시선을 끌 수 있지만 그것만이 디자인의 전부가 아니에요. 디자인도 이제 유저와 대화를 나눌 줄 알아야 해요. 정리하자면 디지털 시대의 디자인은 커뮤니케이션을 제공하는 툴이 돼야 합니다. 웹 디자인을 보여주는 시대는 지났습니다. 웹 사이트에는 이미지도, 카피도 있지만 기본적으로 내가 여기서 무슨 말을 하고 듣고 싶은 말은 무엇인지 인지하고 출발해야 해요. 상대가 이렇게 반응했을 때 난 무슨 얘기를 하고, 다른 말을 하면 난 어떻게 대응할 것인지 예상해야 합니다. 또 스토리가 명확해야 해요. 디자인을 한 번에 튜닝작업을 거쳤을 때도 처음 생각한 스토리가 전개되고 있는지 꾸준히 살펴야 합니다.

 

-전문화로 인한 협업도 중요할 듯합니다.
일을 하는 데 있어서 전문화에 따른 협업은 당연합니다. 개인적으로 디자이너를 판단할 때 무조건 예쁘게 그리는 것이 아닌, 더 새롭고 설득력 있는 인터랙티브로 디자인할 수 있는 사람인가를 먼저 생각합니다. 앞서 말했듯 예전의 디자인과는 개념 자체가 달라지고 있는 것이죠. 전 디자이너들에게 처음 디자인 단계 시 우리가 유저에게 하고 싶은 말이 무엇이고, 이를 어떻게 표현해야 유저가 매력적으로 받아들일지에 대해 고민하라고 합니다. 자신이 유저에게 제대로 말을 걸고 있는지, 텍스트가 잘 반응하고 있는지, 그냥 보여주고 마는 데 그칠 것인지, 소통하고 있는 것인지 항상 고민해야 하죠. 웹 기획도 마찬가지고요. 결국 모두 자신만의 전문분야가 있지만 근본적으로 하나의 일을 하고 있다고 생각해요.

 

-요즘 PT 때문에 한창 바쁘실 텐데 특히 광고주에게 강조하는 게 있다면 무엇인지요?
앞서 말씀드린 모든 걸 강조하고 있어요. 보통 광고주와 얘기 나눌 때는 디지털시대의 화법이 주요 내용이에요. 가령 ‘당신들이 하고 싶은 얘기가 있다고 할 때 그 얘기를 당신 입장에서 쏟아놓으면 아무도 듣고 싶지 않을 것이다, 이용자 중심으로 말해야 한다’는 식이죠. 요즘 광고주들도 이 점에 대해선 모두 인지하는 편이예요. 또 아이폰과 아이패드가 출시되면서 이러한 개념이 뒷받침 되고 있어요. 인식의 전환이 더 빨라진 셈인데, 과거에는 온오프라인 비중이 3 대 7이었다면 이제는 그 비중이 서서히 뒤바뀌는 타이밍 같아요. 때문에 아직 온라인 쪽의 성공사례는 많지 않았다는 것보다 시도 자체가 많지 않았다는 표현이 더 맞을 것 같네요. 그래서 저도 어떻게 하면 사람들의 새로운 트렌드와 습관을 정확히 파악할 수 있을지 꾸준히 공부하고 있어요. 아직 갈 길이 멀죠(웃음). 사실 저는 제가 하고 있는 모든 일이 큰 디지털 바다로 뛰어들기 위한 첫걸음을 떼는 의미 있는 길이라 생각한답니다.

 

-입사한 직원들에게 늘 강조하는 말이 있다고 들었습니다.
저의 회사가 갖고 있는 최대 장점은 아마 밴티지 포인트(Vantage Point)일 겁니다. 전 우리 회사에 입사한 직원들에게 늘 밴티지 포인트를 찾으라고 강조합니다. 모두들 제 후배이기도 하기 때문에 “이 시대의 흐름을 잘 탈 수 있는 곳을 늘 찾아서 스스로를 발전시키라”고 강조해요. 만약 우리 직원이 기회가 돼 구글이나 애플로 갈 기회가 주어진다면 전 기분 좋게 보낼 생각도 있고요. 구글이나 애플이 가장 좋은 것이 바로 밴티지 포인트가 있다는 점이잖아요. 하지만 저도 자신 있어요. 아무도 이 길로 가면 성공할 수 있다고 선뜻 보장해주는 이는 없지만 분명 의미 있는 길이라고 생각해요. 우리 스스로 증명하는 일, 얼마나 매력 있어요? 또 저는 각자가 스페셜리스트가 돼야 한다고 봅니다. 그래서 잔소리도 많이 하고요. 지난해 포브스 기사를 보니 기존의 약 80%가 머잖아 사라질 것이라고 전망했더군요. 이제 오직 나 하나만이 할 수 있는 일, 스페셜리스트가 돼야 합니다.

 

-대표님이 이 길을 걷지 않았다면 지금 무엇을 하고 계실까요? 궁금한데요?(웃음)
(같이 웃으며)생각해보지 않았어요. 제일 어려운 질문인데요. 음…. 그래도 이 길을 걷고 있었을 겁니다. 이 일이 마냥 좋고요. 우연처럼 다가섰지만 지금 보니 운명이었다고 생각합니다. 그래도 이 일을 하고 있었겠죠.

 

-원래 전공이 ‘한국사학’이었다고 들었습니다만.
그 때는 사학과를 정말 가고 싶었다기보다 솔직히 대학에 진학하려는 욕심이 더 앞섰어요. 왜 그렇잖아요. 고교 땐 대학진학이 우선이었던 시기요. 역사를 좋아하긴 했지만 공부엔 관심이 없었어요. 그렇게 대학 1~2년이 지나니 문뜩 내가 하고 싶은 게 무엇인지 갈망하기 시작했어요. 절실해지더군요. 그러다 그림을 그리고 싶었고, 또 그림보다 디자인을 하고 싶었던 것 같네요. 고민하고 말고가 없었죠. 디자인이야 말로 쿨하고 애너지틱한 일이라고 생각했으니까요. 하루 만에 결정하고 바로 미술학원들 다니면서 재수를 결심했어요. 당시 제겐 당연한 선택이었죠.(설은아 대표는 이후 국민대 시각디자인학과로 재입학 했다)

 

-지난 4월, 이지희 전 웰콤 부사장이 합류했습니다.
업계에서는 상당히 이례가 적은 일이에요. 저희가 비록 디지털 광고회사를 지향하긴 하지만 온라인 커뮤니케이션을 통해 디지털 세대를 어떻게 하면 매료시킬 수 있는지 많은 경험이 있거든요. 대신 기술적인 부분은 철저히 숨어있어야 합니다. 처음 저희 회사는 웹 사이트 제작에서 출발했지만 결국 사람과 소통하고 이야기하는 법으로 가다보니 온라인 광고까지 온 거죠. 웹 사이트도 광고도 마찬가지지만 결국은 어떤 설득력으로 상대를 매료시킬 것인지가 중요한 것 같아요. 나아가 소비자, 즉 유저들의 생각이 궁금해지고 그들이 겪는 새로운 경험의 깊이를 갈망하게 되더라고요. 그러다 이지희 전 부사장님을 만났습니다. 그 분도 온라인에 대한 중요성을 알고 계셨고, 늘 소비자와 소통할 수 있는 살아있는 광고를 생각하셨던 거죠. 그래서 에라 모르겠다. 한번 해보자고 의기투합했고, 지금 즐겁게 일하고 계세요(웃음).

 

-대표님을 수식하는 단어가 많더라고요. 하나만 골라주시죠.
제 초창기 말씀을 잠깐 드려도 될까요?. 처음에 웹 아티스트로 시작하다가 보다 대중을 만나고 싶어서 회사를 차리고 디자이너 업무를 맡았어요. 하다보니 처음엔 기획, 코딩 등 전부를 하다가 아트 디렉팅으로 옮겨졌어요. 이후 당시 느렸던 랜선으로 인한 스틸 개념이 컸죠. 랜선이 빨라지니 모션 그래픽을 하게 됐고 동시에 인터랙션도 시도했어요. 어느 날 내 자신이 웹 사이트의 전반적인 콘셉트를 잡고, 기획과 전략을 세우고, 광고주를 분석하고 있길래 아트 디렉터보다 크리에이티브 디렉터가 돼버렸죠. 최근 경향을 보니 캠페인 디렉터라고도 하더라고요. 하지만 저는 인터랙티브 스토링텔러라는 말이 더 좋아요. 제가 유일하게 더 잘할 수 있고, 또 궁극적으로 내세우는 웹 디자인 기치이기도 하고요. 저만의 스페셜리스트는 인터랙티브 스토리텔링이 아닐까요?

 

-지금 이 기사를 보며 웹 디자인을 꿈꾸는 후배들에게 한 말씀 하신다면.
(얼굴 보며 일대일로 말 하듯)너는 네가 생각하는 것보다 멋진 씨앗을 가진 사람이야. 매일 네가 생각하는 너보다 더 멋진 전망을 세우고 더 멋진 너를 완성해봐. 세상의 관성에 맞춰 사는 게 아니라 매번 너를 시험도 해보고. 나도 처음에 내가 어디까지 할 수 있는지 궁금했어. 일은 한 번 잘하면 더 잘해야 하지만 우린 사람이잖아. 실수할 수도 있어. 네 씨앗이 어느 정도의 씨앗이었는지 확인해봐. 잘 해도 좋고, 못 해도 좋아. 시도하지 않는 게 실패하는 것보다 더 나빠. 실패가 더 남는 거야. 밑져야 본전이야.


 

epilogue 

사실 설은아 대표와의 만남이 있기까지 3번의 날짜변경이 있었다. 다른 이유가 아니라 기업의 사활이 걸려있는 PT 때문. 바쁜 와중에도 기꺼이 본지를 통해 메시지를 전한 그녀의 행보에 박수를 보낸다.

 

Posted by duki 두기




사진을 모네, 고흐와 같은 작가들의 유화 스타일로 리터칭 해주는 프로그램입니다.






http://www.mediachance.com/dap/index.html 


 
Posted by duki 두기

이번에 알아볼 것은 바로 CArray 클래스 입니다.

일단 32bit(4Byte) 환경이라고 미리 이야기를 하겠습니다. 그래야 포인터 개념에 대한 설명이 맞기 때문이죠.

시간이 흐르면 64bit(8Byte) 많이 쓰게 될 텐데 그때 가서 포인터 크기가 왜 저래요... 이런 소리 하시면 완전 곤란함 ㅡ_ㅡㅋ

 

CArray는 MSDN을 검색하면 다음과 같은 정보를 얻을 수 있죠.

 

template < class TYPE, class ARG_TYPE = const TYPE& > 
class CArray : 
   public CObject

 

여기서 첫 번째 매개변수는 배열에 저장된 객체의 데이터 타입, 두 번째는 배열에 저장된 객체에 접근하기 위해 사용하는 인수 타입~

그냥 저걸 통째로 받아들여서 이해할 수 있는 아름다운 머리를 가지신 분들도 있겠지만, 그렇지 못한 분들을 위해서 좀 더 쉽게 설명하면

어떤 데이터를 저장하는(첫 번째 매개변수) 배열(배열의 객체를 지시할 수 있는 두번째 매개변수)을 선언하는 것입니다.

 

MSDN 설명 중 첫 줄 설명이 아름답네요.

 "Supports arrays that are similar to C arrays, but can dynamically shrink and grow as necessary."

CArray라고는 하지만 결국 이 놈은 배열이고 필요에 의해 늘었다가 줄었다가 한다.

이런 기능을 클래스의 개념으로 접근하기 때문에 멤버 함수를 이용하면 쉽게 관리가 가능한 것이다.

 

아래의 그림을 보면 이해가 더 쉬울 겁니다.

 


 

① char 배열이다. 이건 쉬울 것 같다. "char abc[12];" 얘랑 뭐가 다를까? 같다.

    char 데이터를 가지고, 여기에 접근하는건 char에 접근하기 위한 주소 연사자인 &를 이용하여 각 값에 접근을 할 수 있다.

 

② char 포인터 배열이다. 32bit OS 사용중이라면 주소 값은 4Byte 값을 지닌다.
    즉 char 형 데이터가 들어가 있는 주소를 포인팅 하기 위해서는 4Byte가 필요한 것이다.
    실제 값은 1Byte 값을 가지지만 주소를 가리키는 포인터 개념과 헷갈리면 안되겠다.
    이런 포인터가 모여있는 배열에 대해서는 해당 포인터를 포인팅 하도록 선언해서 쓰면 되겠다.

 

③ int 배열이다. ①과 같다. 단지 4Byte를 쓴다는 차이점이 있을 뿐이다. 이렇게 설명하면 어려운가? 어려우면 참말로 난감.. ㅡ_ㅡㅋ

    참고로 MSDN은 절대로 이렇게 설명 안해준다. 머리가 좋으면 손발이 덜 고생한다던데... 그래서 내가 이 고생을....

 

 

만약 여기까지 이해가 안 간다면 밑에를 참고하기 바랍니다.

여기 오기 전에 다 이해하셨길 바라지만... 현실은 그렇게 녹녹치가 않으니깐...

 

솔찍히 MSDN의 글만 보고는 제 머리 능력으로는 전혀 이해 안 가는 부분이 더러 있습니다. ㅡ_ㅡㅋ

 

그래 C 언어에서 배열 쓴거야 뭐 어렵겠어? 그냥 데이터 타입 맞춰서 그냥 생각한 개수만큼 선언해서 쓰면 되잖아.

좋다 이거야~ 이게 필요에 의해서 늘릴 수도 줄일 수도 있다니.. 좋지 좋아~ 암 그렇구 말고.

 

하지만....

 

이건 뭐냔 말이닷 ㅡ_ㅡㅋ

왠지 이걸 접하니깐 딱 하기가 싫어지는군요. 말투부터가...

 

template < class TYPE, class ARG_TYPE = const TYPE& > 
class CArray
   public CObject

 

자.. 일단 템플릿(template) 나왔다. 그래서 그냥 이유 없이 맘에 안 든다. 딱 저 단어로 시작한다는 것 자체가 보기가 싫어진다. 공감?

하지만 포기하지 말자. 그러자고 지금 이 짓을 일삼는 거니깐~

 

그럼 템플릿이 뭔지 알아야 하잖아.....

근데 CArray가 왜 저따구로 쓰는지가 궁금한건지 당장 템플릿까지 다 알 수는 없지 않겠어?

그래서.... 템플릿 개념만 짚어 보고 살짝꿍 넘어가보자. 막상 돌아와서 보니... 길다. 쩝.

 

 

1. 템플릿 : 로직이 같은 경우에 타입을 자유롭게 변환 시켜주는 기능!

 

자... 갈수록 미궁에 빠져든다. 하지만 개념 자체는 쉽다.

예를 들어 x + y라는 함수를 만드는 것에 대해서 생각해 보자.

사람은 x 값과 y 값이 정수든 실수든 더블형이든 그런건 따질 필요 없다.

1+1은 2라는걸 알고 1.5 + 1.5는 3이라는걸 안다.

 

하지만 컴퓨터는 블로그에서 누차 이야기 한 것 같은데 바보다. 하나부터 열까지 알아 먹게끔 설명 다 해줘야 그렇게 처리를 한다.

위와 같은 연산을 수행하려면 1+1은 이게 정수의 덧셈 연산이라고 미리 선언을 해 줘야하고,

1.5+1.5는 이게 소수점을 포함하는 데이터형을 선언한 덧셈 연산을 수행해야 한다고 미리 각각 정의를 해 줘야 한다.

결국 이런 것이다.

 

int add(int a, int b) {

   return a+b;

}

 

double add(double a, double b) {

   return a+b;

}

 

char add(char a, char b) {

   return a+b;

}

 

고작 a + b 하면 되는건데 이것들이 데이터 형이 다르면 함수 호출 자체를 못할 수 있다는 것이다.

물론 말이 여기는 Integer 형과 Double형 char형이지 다른 타입도 추가될 수 있는 문제다.

그런데 그때마다 저걸 굳이 다 저렇게 일일이 이야기 해주는건 얼마나 효율적이지 못한 플레이인가.

 

이런 어벙한 짓을 일삼지 못하도록 뭔가 좀 똑똑해지게 만들 수 없을까?

intdouble 등의 데이터형만 다르지 결국 로직 자체는 다 똑같지 않은가....

 

그래서 템플릿이라는걸 쓰는 것이다.

 

템플릿은 저 위에 설명대로 덧셈을 한다는 똑같은 로직에 데이터의 타입만 다를 뿐이다.

그러니 저렇게 힘들이지 말고 쉽게 가자는 거다. 이왕이면 시간도 줄이고 노동도 줄이고 좋으니까 말이다.

 

그래서 이런걸 가능하게끔 하는걸 템플릿. 즉, 본 뜨는 공구, 형판... 뭐 쉽게 표현하면 초딩때 쓰던 모양자의 역할을 한다.

모양자 얼마나 편한가? 사각형 모양자 하나 있으면 정해진 여러가지의 사각형 모양을 다 그릴 수 있다.

삼각형 그리려면 삼각형 모양자 하나면 또 다양한 삼각형을 만들 수 있다.

 

로직은 4개의 변으로 구성되는 면이냐 3개의 변을 가지는 면이냐는 것이다.

그게 안에 어떤 색을 칠할지는(자료형) 그때 상황 봐서 쓰면 되는 것이다.

단, 여기서 상황 판단은 바보 CPU가 아니라 바로 컴파일러가 하는 것이다.

프로그램 소스를 해석하는 과정에서 컴파일러는 이걸 가능하도록 변수에 맞추어 함수를 만들어 준다.

 

 

2. Templete 사용방법

 

그럼 저 위에껄 어떻게 쓸 수 있을까? 일단 방법 정도는 익혀주는게 저걸 만든 사람에 대한 예의가 아닐까?

 

template <typename T>

T add(T a, T b) {

   return a + b;

}

 

여기서 위 함수들과 차이점이라고 한다면, 리턴 자료형과 인수의 자료형이 서로 정의가 안되어 있고 템플릿 T로 선언되었다는 점이다.

즉, 아직 정해진게 없다는 이야기다. 컴파일러가 보고 필요한 데이터형에 맞는 템플릿 함수를 생성하여 사용하되,

중복적으로 같은 데이터형을 이용하는 경우 미리 생성한 템플릿 함수를 사용하도록 한다.

 

T를 int로 쓸지 double로 쓸지 char로 쓸지에 대해서 컴파일러가 그때 상황봐서 만들어서 써라~

이렇게 생각하면 된다. 단지 저렇게 한 줄 더 추가하면 매개변수 데이터형이 달라져도 바로 사용을 할 수 있게 된다.

 

앗 여기서~

특별한 케이스~

즉 특별한 데이터 형에 대해서는 특별하게 처리해줄 필요가 있을 때에도 템플릿을 쓸 수 있다.

그래서 아래와 같이 특별한 데이터형이 들오어는 케이스, 즉 문제의 발단인 원래 CArray에 대해서 다시 생각해 보자.

 

 

3. 그래서 결국 template < class TYPE, class ARG_TYPE = const TYPE& >이 도대체 뭐냐고 ㅡ_ㅡ;

 

template < class TYPE, class ARG_TYPE = const TYPE& > 
class CArray
   public CObject

 

첫번째 class TYPE은 배열에서 저장되는 객체의 타입 형태를 넣어 주고,

두번째 class ARG_TYPE = const TYPE&는 집어 넣을때 배열의 데이터에 접근하기 위한 데이터 형에 대한 주소연산자입니다.

따라서 배열을 쓰기는 하는데 위와 같은 형태로 선언된 배열을 쓰겠다는 거죠.

그래서 제일 처음 이야기 했던 그림이 나오는 거죠.

 

템플릿에 대해서는 좀 더 많이 다뤄야 하는 부분이고, 저도 사실 아는 바가 이것밖에 없으며,

템플릿 하나 만으로도 성경 같은 책이 나올 수 있는 분야이기 때문에 더 자세한건 참고서적 또는

인터넷 검색을 활용해 보시는게 더 좋을 듯 싶습니다.

 

 

4. 정리

 

CArray도 결국 배열입니다. 근데 사용하기 편리한 배열입니다. 줄이고 늘리고 하는걸 쉽게 할 수 있도록 돕는 클래스죠.

그래서 어떤 데이터를 넣고 어떻게 접근한지에 대해서 선언해서 쓰면 됩니다.

 

※ 참고로 포인터 배열은 CPtrArray 클래스를 사용하면 됩니다.

차이점은 단순히 포인터 객체를 선언한 다음에 포인터 추가시 저장하고자 하는 포인터 타입에 대한 타입캐스팅을 해서 넣으면 됩니다.

그려서 설명하고 싶지만 귀차니즘이 마구 밀려오네요. 위 그림 2번 참고하시면 될 듯 합니다.

포인터에 대한 캐스팅 타입이 다른 것도 들어간다는 점이죠.

Posted by duki 두기

WAV, WMA,  등등의 음원파일을 MP3 파일로 변환해주는 두번째 프로그램을 소개한다.
개인적으로 가장 마음에 드는 프로그램으로 설치는 조금 까다로울 수 있겠지만
맨 밑의 링크를 따라가 설치를 하면 굉장히 쉽고 유용할 것이다.







다음 이미지는 완벽하게 변환된 모습이다(!!)



(*) 따라가기 - 블로그 이것저것 잡동사니
http://blog.naver.com/jiyunice1?Redirect=Log&logNo=70069360891


Posted by duki 두기
이전버튼 1 2 3 4 5 6 이전버튼

블로그 이미지
개인적인 잡다한 기록 공간입니다
duki 두기

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함