산세베리아 이만큼 자랐어요

사용자 삽입 이미지

화분 분갈이하면서 발견한 조그만 애기 산세베리아..

율마가 저세상으로 가고 남은 화분에 옮겨심었다.

그냥 무턱대고 뚝 뿌리를 잘라 옮겨심고 화분가득 물을 부어주었는데도 불구하고

2주정도 지났는데 벌써 한 3센티는 자란듯 하다...

잘자라서 10년 20년 함께 하자꾸나!!~~

사용자 삽입 이미지
위 사진이 원래 어미 산세베리아.. 어미 화분은 쪼끄만데.. 애기만 특별대우시다..

아무튼 잘자라다오!!

'식물이야기' 카테고리의 다른 글

산세베리아 수경제배  (0) 2007.06.15
드라세나 산데리아나 이만큼 자랐네~  (0) 2007.05.30
산세베리아 이만큼 자랐어요  (0) 2007.05.30
율마 분갈이!! 율마가 맛이 가다!!  (1) 2007.04.22
율마~~  (1) 2007.03.30
드라세나 산데리아나  (0) 2007.03.22

Trackbacks 0 / Comments 0

Leave Comments

잉어가 징그럽다구요??

사용자 삽입 이미지


IXUS75

좀 그렇긴 하죠?? ㅎ

Trackbacks 0 / Comments 0

Leave Comments

비트 필드 스트럭쳐

혹시 소켓통신이나 시리얼 통신을 할때
최적화된 메모리관리가 필요할때 유용할꺼 같습니다.
예를들어..

    BYTE sendBuf[9];
    sendBuf[0]=0x01;
    sendBuf[1]=0x31;
    sendBuf[2]=0x01;
    sendBuf[3]=0x01;
    sendBuf[4]=0x31;
    sendBuf[5]=0x01;
    sendBuf[6]=0x01;
    sendBuf[7]=0x11;
    sendBuf[8]=0x01;
위와 같이 바이트 배열에다 필요한 HEX값을 넣으면
사이즈는 9바이트겠지여...무조건..
그러나 위와 같은 데이터를 그대로 저장하면서 훨씬 적은 메모리를 차지하는 방법이
비트필드스트럭쳐를 이용하면 될꺼같은 생각에..
struct test{            // Bit Field Structure
    BYTE a:2;
    BYTE b:6;
    BYTE c:3;
    BYTE d:2;
    BYTE e:6;
    BYTE f:3;
    BYTE g:2;
    BYTE h:6;
    BYTE i:2;
};
와 같이 비트별로 지정을 해준다음에
                test t;
    t.a    =0x02;
    t.b                 =0x33;
    t.c    =0x04;
    t.d    =0x02;
    t.e    =0x32;
    t.f    =0x05;
    t.g    =0x01;
    t.h    =0x32;
    t.i    =0x02
이렇게 넣어준다면
5바이트만 사용해서 최소량의 메모리를 써서 똑같은 작업을 할수 있을 듯합니다.
딱 필요한 비트크기만 알면 거기에 맞게 비트필드를 써서 남는 공간을 최대한 절약하는 거져.

서버-클라이언트에서 어떤 프로토콜을 이용해서 소켓통신을 할경우에 유용하지 않을까 해서 두서없는 글 올립니다.
혹시 잘못된점이나 저의 생각에 오점이 있다면 꼭 알려주시기 바랍니다.
그럼 즐거운 하루되시길.

2002-9-9일 작성
likehood

'개발' 카테고리의 다른 글

do not appear this message  (0) 2007.06.25
gSOAP 사용법  (1) 2007.06.21
비트 필드 스트럭쳐  (0) 2007.05.22
도대체 가상함수는 어디에다 쓰는 것일까.  (0) 2007.05.22
simpleAdo 2.0  (0) 2007.05.22
c/c++ 간단 토글링  (0) 2007.05.22

Trackbacks 0 / Comments 0

Leave Comments

도대체 가상함수는 어디에다 쓰는 것일까.

도대체 가상함수는 어디에다 쓰는 것일까.

1. 누가 읽어.
상속, 가상함수에 대한 설명은 여느 C++ 책에서나 쉽게 찾아 볼수 있다. 그리고 그 사용법도
쉽게 익힐 수 있을 것이다. 보통 MFC로 프로그래밍하다 보면 소켓이나 프로퍼티쉿 같은
클래스를 상속받아서 사용을 한다. 주된 이유로는 자신이 만들고자 하는 프로그램에 맞게끔
클래스를 만드는 데 있어서 불필요한 작업을 최대한 줄이고 생산성과 질이 높은, 안정된 환경을
상속이라는 개념이 제공해 주고 있는 것이다.

그러나 실제로 개발에 있어서 초보자들은 언제 상속을 받아야 하며 언제 가상함수를 써야
하는지 도통 실타래를 풀어 낼 수가 없는 경우가 많은 것같다. (나 또한 마찬가지ㅡㅡ)
소멸자에 가상함수를 붙여라, 순수가상함수는 이렇게 선언한다 등등 사용법은 여느 C++책에서
친절한 설명과 각종 예제와 곁들여져 쉽게 이해할 수 있도록 되어 있지만 막상 그걸 적용함에 있어서
막막함을 느껴 본적이 있다면, 그리고 그 막막함을 아직도 간직하고 있다면 이 글을 읽을
자격이 충분하다. 그럼 시작하자.

2. 스타크래프트
국민 게임 스타크래프트가 있다. 어디서 만들었는지는 다들 아실 것이다. 스타크래프트가
나온지 언 4년을 넘어선 것 같다. 블리자드는 기본 틀을 바꾸지 않고 유닛 몇개와 몇번의
밸런스 조정으로 2002년까지 왔고 2003년까지 가고 있는 것이다. 스타크래프트때문에
연봉 1억이 넘게 돈을 버는 사람도 생겨나고, PC방 사장님들의 입가에 미소를 머금게 해준
그 게임.
왜 갑자기 스타크래프트를 이야기 하고 있는지 궁금해 하는 독자들을 위해 이제부터 본격적으로
필자가 왜 스타크래프트를 이야기 하는지 알려줄 때가 된 것 같다.
스타크래프트에는 3가지 종족이 있고 3가지 종족들이 하는 일이란 미내랄과 가스를 구해서,
집을 짓고, 싸움을 하는 것이다.( 세부적으로 더 있겠지만 그건 http://www.blizzard.com에서 확인
하기 바란다.ㅡㅡ'')
여기서 하나만 때어 내 보자. 흠...좋다 흥미로운 싸움을 예로 들자. 세 종족은 모두 Attack이라는
기능을 가지고 있다. 그리고 기본적으로 Attack이라는것이 대동소이 하다. 왜? 밸런스를
맞추어야하니까.
저글링, 화이어뱃, 질럿을 예로 들자.이들은 지상의 길을 이용해 이동하며 근접전투를 한다.
그런데 가만히 보면 이 3가지 유닛이 하는 일이 모두 똑같음을 알수 있다. (가만히 안봐도 다 알겠군)
이들을 블리자드에서는 어떻게 구현했을까..

3. 구현
먼저 슈퍼 클래스가 있고 저그, 테란, 프토 클래스가 있을것이다.
슈퍼클래스에는 Attack이라는 순수 가상 함수가 존재할 것이고(아닐수도있지),
각 종족클래스엔 Attack이라는 함수가 있을 수 있을 것이다.

이제 살짝 만들어보자.

class CTop{
public:
    vurtual char* Attack()=0;
};

class CZerg:public CTop{
public:
   char*  Attack(){return "저글링 공격\n"};
};

class CTerran:public CTop{
public:
   char*  Attack(){return "화이어뱃공격\n"};
};

class CProtoss:public CTop{
public:
   char*  Attack(){return "질럿 공격\n"};
};

void main()
{

    CTop *pAttack[3];
   // 각각의 종족클래스를 Top형의 껍대기에다가 잡아 넣었다
    pAttack[0]=new CZerg;
    pAttack[1]=new Cterran;
    pAttack[2]=new CProtoss;
   // 그리고 for문을 이용해 돌려보자. 종족클래스의 Attack이 실행되는것이 보일 것이다.
    char *pCh;
    for(int i =0 ; i < 3 ; i ++)
    {
         pCh= pAttack[i]->Attack();
         printf(pCh);
    }
    // 지우자.
    for(int i =0 ; i < 3 ; i ++)
    {
         delete pAttack[i];
    }
}


먼저 위 코드를 보면 간단하게 3종족의 Attack을 사용하고 있다.
이것이 가상함수가 주는 힘이다. 가상함수가 없다면...
CTop클래스의 Attack을 이렇게 수정해야하며,
char* Attack("test");

pAttack[0]=new CZerg; 해도

"test"가 출력 될 것이다.

상속과 가상함수의 기능을 이용하여 각각의 클래스 내부구조를 추상화 시킨것이다. 따라서
공격명령만 주면 각 종족에 맞는 Attack이 일어나게 되는 것이다.~


2002.12.24 크리스마스 이브
likehood
msn: likehood.hanmail.net 

'개발' 카테고리의 다른 글

gSOAP 사용법  (1) 2007.06.21
비트 필드 스트럭쳐  (0) 2007.05.22
도대체 가상함수는 어디에다 쓰는 것일까.  (0) 2007.05.22
simpleAdo 2.0  (0) 2007.05.22
c/c++ 간단 토글링  (0) 2007.05.22
XmlLite SDK 관련..  (0) 2007.04.12

Trackbacks 0 / Comments 0

Leave Comments

simpleAdo 2.0


/*!
 \brief
  ADO Component Wrapper Class
  - Create Date/Ver : 2003.03.19 /1.0
   - RecordSet은 CreateInstance사용안함.
  - Modify Date/Ver : 2003.04.18 / 1.5
   - RecordSet셋팅을 위해  CreateInstance를 사용했습니다.(ExcuteQryEx)
   - SaveQryData함수 추가 : select로 불러온 데이터를 파일로 저장(XML)
   - ExcuteQryEx함수 추가(레코드셋 설정을 위해...)
  - Modify Date/Ver : 2003.05.19 / 1.6
   - ExcuteQry, InsUpDel()함수 가변인수 적용..
    - EX) \n
     int nData=10;\n
     ExcuteQry("select * from tab where id= %d",nData);\n
  - Modify Date/Ver : 2003.08.26 / 1.7
   - GetState()함수 추가...
    - Object의 상태를 리턴합니다.
  - Modify Date/Ver : 2004.04.02 / 1.71
   - GetData(int&) 부분 수정
    - MS-SQL decimal타입 리턴시 32000이상시 - 값으로 리턴되는 버그 수정
  - Modify Date/Ver : 2004.04.07 / 1.80
   - simpleAdo 인스턴스간 복사 지원
    - ex) simpleAdo ado1;\n
     ...\n
     ...\n
     ...\n
     simpleAdo ado2(ado1); //가능\n
     simpleAd0 ado3=ado1; //가능\n
     simpleAdo ado4;\n
     ado4=ado1;    //가능\n
   - 데이터베이스 처리시 에러시 dumpfile 지원
    - 데이터 베이스 작업시 에러 file로 저장.
  - Modify Date/Ver : 1.81
  - 타입 강화.
   - select 질의 후 _varient_t형태로 리턴 추가
  - Modify Date/Ver : 2005-11-15/ 1.82
   - 리턴타입 강화
   - CHAR값 리턴 함수추가
    - BOOL GetData(const long nCol,const long nRow,TCHAR& chData) const;
  - Modify Date/Ver : 1.90
   - ExcuteQry로 select Insert Update Delete Stored Procedure 모두 지원(기존함수로도 지원함.)
   - Stored Procedure실행시 Recordset이 존재할 경우 GetData()로 사용 가능.
  - Modify Date/Ver : 20060919/ 2.0
   - 시간이 많이 걸리는 쿼리 시 message pumping을 실시하여 UI가 멈추는 일이 없도록 함.
   - 사용자가 선택할수 있도록 SetMessagePump(BOOL)지원.
   - 참고사항
   - 프로젝트시작 / 종료부부분에 명기 -> ::CoInitialize(NULL); and ::CoUninitialize();
   - _ConnectionPtr,과 _RecordsetPtr의 사용 종료시 ->Close(), .Release()함수는 자동호출되므로 사용안함.
   - StoredProcedure 사용법
    - Return 값을 가지는 프로시져인 경우
     _CommandPtr 객체를 이용(MSDN 참조)\n
     In, Out Parameter를 생성하고 작업해야 함.\n
     _CommandPtr cmd;\n
     cmd.CreateInstance(__uuidof(Command));\n
     cmd->ActiveConnection=m_pConnection;\n
     cmd->CommandType=adCmdStoredProc;\n
     ...\n
     ...\n
     ...\n
    - Recordset을 리턴하는 경우
     ado.ExcuteQry("exec ProcName %d,%d,%d",1,2,3);\n
     ado.GetData(i,j,retData);\n
    - Return정보가 없는 경우
     ado.InsUpDel("exec ProcName 1,2,3"); \n
     또는 ado.ExcuteQry("exec ProcName 1,2,3");\n

 \author [likehood / 송영배]
 \date [2006-07-14 오후 3:35:59]
 \version [2.0]
 \bug
 \warning 대용량 데이터 쿼리시 HEAP메모리를 많이 차지하게 됩니다.
*/

'개발' 카테고리의 다른 글

비트 필드 스트럭쳐  (0) 2007.05.22
도대체 가상함수는 어디에다 쓰는 것일까.  (0) 2007.05.22
simpleAdo 2.0  (0) 2007.05.22
c/c++ 간단 토글링  (0) 2007.05.22
XmlLite SDK 관련..  (0) 2007.04.12
도서물 도착!!  (0) 2007.04.09

Trackbacks 0 / Comments 0

Leave Comments

c/c++ 간단 토글링

 (1) 0과 1을 토글(Toggle)하는 경우: 프로그램에서 변수의 값을 0↔1을 토글
    int i=0; //전역 or member 변수
    i^=1;//비트 배타합(eXclusive Or) 연산의 특징을 이용한다.
  이와 같은 기교는 임의의 두 수를 토글하는데 사용할 수 있다. 예를 들어 1
과 3을 토글하려면, 0001 ^ 0011 → 0010
이므로, 두 수의 배타합의 결과인 2와 배타합 연산을 하면된다.
    int i=1; //전역 or member 변수
    i^=2;//1과 3을 토글한다.
  (2) 1과 -1을 토글하는 경우
    int i=1; //전역 or member 변수
    i=-i;
  (3) 0,1,2,3을 토글하는 경우: 2개 보다 많은 숫자를 토글
    int j=0; //전역 or member 변수
    i=(i+1)%4;
  만약, 5,6,7,8을 토글하고 싶다면,
    int j=0; //전역 or member 변수
    int i;
    j=(j+1)%4;
    i=j+5;
처럼 사용한다. 일반적으로 m에서 시작하고 연속된 n개의 숫자를 토글하려면,
    int j=0; //전역 or member 변수
    int i;
    j=(j+1)%n;
    i=j+m;
을 사용하면 된다.
    (4) 임의숫자 토글 (참조표이용..)
    int toggle[]={100,34,200,79}; //전역 or member 변수
    int j=0, i;
    j=(j+1)%4;
    i=toggle[j];

'개발' 카테고리의 다른 글

도대체 가상함수는 어디에다 쓰는 것일까.  (0) 2007.05.22
simpleAdo 2.0  (0) 2007.05.22
c/c++ 간단 토글링  (0) 2007.05.22
XmlLite SDK 관련..  (0) 2007.04.12
도서물 도착!!  (0) 2007.04.09
H.264 white paper(intel)  (0) 2007.04.02

Trackbacks 0 / Comments 0

Leave Comments

포근한 나의 침실..

사용자 삽입 이미지
사용자 삽입 이미지


익서스를 구입하고 기능점검완료 후, 옷~ 역시 캐논이야.. 커스텀화밸정도는 있어주시는 센스!!

즉각 테스트.. 역시 보시는 바와 같이 나의 포근한 침실이 이렇게 다른 포스를 느끼게 해주신다!!

그림과 함께하는 글의 뉘앙스에 따라, 사진사의 의도에 따라 사진에 담긴 이야기들은 모두 제각각이라는 것.

조그만 스냅카메라라 할지라도 사진사의 의도를 충실히 반영해 줄수 있도록 최소한의 기본기능정도는 익혀두자!!! 방법? 메뉴얼 정독 3회정도는 필수센스!

'사진생활' 카테고리의 다른 글

XnView 다운로드~  (0) 2007.09.10
잉어가 징그럽다구요??  (0) 2007.05.22
포근한 나의 침실..  (0) 2007.04.22
광각 표준 망원렌즈의 기준및 구분법  (0) 2007.03.31
나의 첫번째 스냅카메라. IXUS75  (0) 2007.03.29
피사의 사탑  (1) 2007.03.23

Trackbacks 0 / Comments 0

Leave Comments

세계 최초!! 짜파게티와 비빔면의 만남!!

사용자 삽입 이미지

사용자 삽입 이미지

짬짜면을 아실런지..

팔X비빔면, 농X짜파게티의 환상적인 만남!
새콤함과 달콤함의 조화라고나 할까..정말 맛나는 만남이다..
주말, 여유로운 오후시간에 즐기는 간식(사실 저녁이었지만..) 즐거웠다..

이거이거 세계최초 아냐??

Trackbacks 0 / Comments 2

  • 쫑아짱 2007.04.23 12:59

    오빠야..완전 입맛 뚝....-.,-

  • 겟피 2007.04.23 19:49

    둘다 참 좋아하는데 이렇게 먹어도 맛있을 것 같네요^^

Leave Comments

율마 분갈이!! 율마가 맛이 가다!!

사용자 삽입 이미지
보시다 시피 우리집 율마가 맛이 갔다...

율마 사기전에 웹사이트에서 율마키우기에 대해 분석해 본 바대로 사기화분에 문제가 있었던것이다.
배수, 통풍이 잘 안되서 잎사귀가 노랗게 물들어가는것 아닌가..

그래서 오늘 바로 분갈이에 착수!
사용자 삽입 이미지
집에 신문이 없는 관계로 쇼핑백종이 하나를 분해 해버렸다.

사용자 삽입 이미지

분갈이를 할 플라스틱 화분(배수 끝장!)을 준비하고 불쌍한 우리 율마까지 대동..
사용자 삽입 이미지

플라스틱 화분 뽀대는 안나지만 배수구멍만큼은!!ㅎㅎ

사용자 삽입 이미지


죽어있는 뿌리를 확인하고 흙들을 털어낸 다음에 화분을 옮기기 시작!

사용자 삽입 이미지
사용자 삽입 이미지

토닥토닥 옮겨심기 완료!!

사용자 삽입 이미지


노란색으로 죽어버린 잎사귀들을 잘라내고 원상복귀..
우리집이 오피스텔이라 통풍이 좀 신경 쓰이지만 그래도 부디 배수 잘되는 플라스틱 화분에 옮긴 보람이 있기를 기대해 본다!!

꼭 살아서 무럭무럭 자라주길 바래!!

'식물이야기' 카테고리의 다른 글

산세베리아 수경제배  (0) 2007.06.15
드라세나 산데리아나 이만큼 자랐네~  (0) 2007.05.30
산세베리아 이만큼 자랐어요  (0) 2007.05.30
율마 분갈이!! 율마가 맛이 가다!!  (1) 2007.04.22
율마~~  (1) 2007.03.30
드라세나 산데리아나  (0) 2007.03.22

Trackbacks 0 / Comments 1

  • 2007.09.19 16:40

    비밀댓글입니다

Leave Comments

XmlLite SDK 관련..

새로온 메일중에 MS에서 보낸 메일이 있었다. 평소 처럼 바로 휴지통에 넣어버릴까 하다가 클릭.

XMLLITE라는 놈이 보인다. 네이티브 C++를 위한 작고 빠른 XML 파서...오..

그렇지 않아도 SOAP을 사용할 일이 생길 예정이어서 작고 빠르고 필요한 기능만 있는 XML파서가
있을까 찾던중이었는데.. 빙고~

article을 읽고 바로 msdn 홈페이지에 들어가서
" WindowsXP-KB915865-v11-x86-KOR.exe " 파일을 다운받고 설치.

visual studio 6.0실행하고
include "xmllite.h"


컴파일 에러.
없댄다.. 다시 사이트에 들어가 내용을 읽어보니까 이건 그냥 runtime인거다.

내게 필요한건 헤더와 라이브러리 파일인데...

이거 얻을려면
Microsoft® Windows® Software Development Kit (SDK) for Beta 2 of Windows Vista and WinFX Runtime Components

http://www.microsoft.com/downloads/details.aspx?FamilyID=13f8e273-f5ea-4b7b-b022-97755838db94&displaylang=en&Hash=0MKOvMbenJs8JyPqSsKGJ5ruu8pZWAxzug8YcaeX2jK0CRPcBPz9gyG2nPeW83BRiDZf1KMabCQRlL2J54B2HQ%3d%3d#filelist
이거 다운받으랜다.. vista sdk beta..

용량? 1.1기가..

근데 이거 꼭 설치해야하는건가..

inatalling XmlLite? 라는 질문에 대한 댓글들이다.. 설치하면 나온단다.
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1403557&SiteID=1

 

   I have pretty much the same issue. I have xmllite.dll in the system dir, but no .lib or .h following the download.

I am running XP w/ SP2. Do we really need the Vista SDK to get the developement files we need for xmllite?

이 질문에 대한 답은 아직 없다. 혹시 아시는 분 있으면 vista sdk설치를 미루도록 할껀데..

현재 일단 다운로드중....-_-




덧.

http://weblogs.asp.net/kennykerr/archive/2007/03/13/xmllite-a-small-and-fast-xml-parser-for-native-c.aspx

kenny kerr 왈

Update: I’m getting a lot of email about XmlLite so here are the links you need in order to get going:

Download and install the latest Windows SDK, which provides the XmlLite header and lib files needed to compile and link. Although this is the SDK for Windows Vista, it also supports targeting Windows XP and Windows 2003.

If you don’t already have it, download and install XmlLite. This is only required for Windows XP x86 installations that haven’t already received it from Windows Update or some other means.


닥치고 깔아! -_-

'개발' 카테고리의 다른 글

simpleAdo 2.0  (0) 2007.05.22
c/c++ 간단 토글링  (0) 2007.05.22
XmlLite SDK 관련..  (0) 2007.04.12
도서물 도착!!  (0) 2007.04.09
H.264 white paper(intel)  (0) 2007.04.02
C++에서 ADO를 이용한 Stored Procedure 사용법  (0) 2007.04.01

Trackbacks 0 / Comments 0

Leave Comments