_mbsbtype : 해당 글자가 Single byte인지 멀티바이트 시작문자인지 멀티바이트 끝문자인지 알아낸다.

사용예제
 
#include <mbctype.h>
#include <mbstring.h>

int main(int argc, char* argv[])
{
    const unsigned char    str[] = "hello 헬로우 월드";
  _setmbcp( 949 ); // 한글 윈도우에서는 codepage를 설정할 필요가 없다.
    for( int i = 0 ; i < sizeof( str ) ; ++i ) {

        switch( _mbsbtype( str , i ) ) {
        case _MBC_SINGLE:     // 싱글 바이트
            printf( "1 : [%c]\n", str[i] );
            break;
        case _MBC_LEAD:        // 멀티 바이트 헤더
            printf( "2 : [%c", str[i] );
            break;
        case _MBC_TRAIL:        // 멀티 바이트 테일
            printf( "%c]\n", str[i] );
            break;
        case _MBC_ILLEGAL:     // 알수 없는 문자.
            break;
        default:
            break;
        }
    }
   
    return 0;
}


출력결과
1 : [h]
1 : [e]
1 : [l]
1 : [l]
1 : [o]
1 : [ ]
2 : [헬]
2 : [로]
2 : [우]
1 : [ ]
2 : [월]
2 : [드]


# apt-get build-dep 패키지이름
# apt-get source 패키지이름

패치
# patch -p0 < patch_file

# cd 소스디렉토리
# dpkg-buildpackage -rfakeroot


패키지 hlold
# echo "패키지이름 hold" | sudo dpkg --set-selections

참고 URL http://kldp.org/node/75845
offsetof은 클레스나 구조체에 있는 member 위치를 알려주는 키워드다.

일단 소스와 결과를 보라.

#include <iostream>
using namespace std;

struct sA
{
    int a;
    double b;
    short c;
    short d;
    int e;
};

int main()
{
    cout << "sizeof(sA) : " << sizeof(sA) << endl;
    cout << "offsetof(sA::a) : " << offsetof(sA, a) << endl;
    cout << "offsetof(sA::b) : " << offsetof(sA, b) << endl;
    cout << "offsetof(sA::c) : " << offsetof(sA, c) << endl;
    cout << "offsetof(sA::d) : " << offsetof(sA, d) << endl;
    cout << "offsetof(sA::e) : " << offsetof(sA, e) << endl;
    return 0;
}
출력)

sizeof(sA) : 20
offsetof(sA::a) : 0
offsetof(sA::b) : 4
offsetof(sA::c) : 12
offsetof(sA::d) : 14
offsetof(sA::e) : 16

그럼 설명 하겠지만 엉성하다.
struct sA
{
    int a;
    double b;
    short c;
    short d;
    int e;
};
위 코드에서
32bit머신에서

int a 크기는 4byte.
double b 크기는 8byte.
short c 크기는 2byte.
short d 크기는 2byte.
int e 크기는 4byte 이다.

sizeof( sA ) 를 하면.
출력값이 4+8+2+2+4 = 20이 나올것이다.

cout << "sizeof(sA) : " << sizeof(sA) << endl;

출력)
$ ./sizeof
sizeof(sA) : 20

그러면 a위치가 어디인지 아는 방법은 없을까?
방법은 있다. offsetof라는거다.

a위치는 0번째부터 3번째까지일테고
b위치는 4번부터 11번째 위치.. 이렇게 될것이다.

자 그럼 어떤 원리일까?
offsetof를 따라가 보면 아래와 같은 소스가 나온다.
#define offsetof(s,m) (size_t)&(((s *)0)->m)
무슨뜻일까?ㅡ.ㅡ

offsetof(sA, b) 를 대입 해보자
(size_t)&(((sA *)0)->b)
아 머리 아프다.

아래걸 보자.
((sA *)0)
무슨뜻일까?
0번지 주소값에 sA가 있다고 가정하는것이다.
결론은 0...

여기서 ->b를 넣었다.
(0)->b

움. 무슨뜻?
컴퓨터는 메모리를 접근할때 기본 주소에 해당 멤버의 offset을 더해서 나머지 값들을 구한다.
결국 위의 것은

(0)->b 는
0 + (b의 위치) 가 된다.
결국
0+4 = 4
설명이 엉성하므로 아래 사이트를 보는것도 좋다.

http://kldp.org/node/62717
  • class

    • 멤버 변수명 작명

      • m_ 로 시작한다.
    • 멤버 함수명 작명

      • private : _소문자
      • protected, public : 대문자
    •  클래스명

      • 첫문자는 대문자명으로
    • 멤버변수 위치 

      • 하단, public/protected/private

  • struct

    • struct 작명

      • s로 시작 ( Ex. sCar )
      • 멤버 변수 작명 

        • m_ 제외
  • 지역변수명

    • 소문자로 시작.

      • 예제   int i; int j; Car pony; 
  • 전역 변수

    • g_로 시작 
  • 일반 함수 선언

    • 첫문자가 대문자 
  • define

    • 모두 대문자. DF_로 시작( 예외인정 ) 
  • 프리컴파일러

    • #ifdef _TEST
      #   ifdef _TEST111
      #   endif // _TEST111
      #endif // _TEST 
  • 파일명

    • 클래스명이나 struct 명과 동일( 예외인정 ) 
  • 주석

    • 파일 doxygen 주석 참고? 우선 맘대로 
  • 중괄호

    • 되도록 아래로 

이 글은 스프링노트에서 작성되었습니다.

 

 스트래티지 패턴(Strategy patten)

알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할수 있도록 만든다. 스트래티지을 활용하면 알고리즘을 사용하는 클라이언트놔는 독립적으로 알고리즘을 변경 시킬수 있다.

예제) 오리 - 나는 오리, 못나는 오리, 꽥꽨 거리는 오리, 삑삑 소리지르는 오리등..

 

옵져버패턴(Observer pattern)

한 객체의 상태가 바뀌면 그 객체에 의족하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다의 의족성을 정의 합니다.

예제) 출판사와 구독자, 헤드헌터와 개발자.

 

데코레이터 패턴(Decorator patten)

객체에 추가 요소를 동적으로 더할수 있습니다. 데코레이터를 사용하면 서브 클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 확장할수 있습니다.

예제) 스바버즈 커피점의 음료와 각종 양념등등의 가격 개산 문제.

 

팩토리 패턴(Factory patten)

 팩소리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클레스에서 결정하게 만듭니다. 택토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것이죠.

예제) 피자가계에서 뉴욕스타일, 캘리포니아스타일, 시카고스타일 피자 만들기.

 

 프록시 패턴(Proxy patten)

어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴.

이 글은 스프링노트에서 작성되었습니다.

 

다국어 IME 분석 문서

IME_분석.pdf

 

다국어 IME 예제 소스

DefIme.zip

조합 중인 문자 취소 시키기

const HIMC hIMC = ::ImmGetContext( m_hWnd );
ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, CPS_CANCEL, 0);
::ImmReleaseContext( m_hWnd, hIMC );

 

조합 중인 문자 가져오기

if(lParam&GCS_COMPSTR) {

const HIMC hIMC = ::ImmGetContext( m_hWnd );

int tempSize = ImmGetCompositionStringW(hImc, GCS_COMPSTR, NULL, 0);

char *pBuf = (char *)malloc(tempSize );

ImmGetCompositionStringW(hImc, GCS_COMPSTR, pBuf, tempSize);

ImmReleaseContext(m_hWnd, hImc);

}

조합이 완성된 문자 가져오기

if(lParam&GCS_RESULTSTR) {

const HIMC hIMC = ::ImmGetContext( m_hWnd );

int tempSize = ImmGetCompositionStringW(hImc, GCS_RESULTSTR, NULL, 0);

char *pBuf = (char *)malloc(tempSize );

ImmGetCompositionStringW(hImc, GCS_RESULTSTR, pBuf, tempSize);

ImmReleaseContext(m_hWnd, hImc);

}

조합 윈도우 위치 설정하기

void SetIMECompPos( int xpos , int ypos )
{
    HIMC hImc = ImmGetContext(m_hWnd);
    if( hImc )  {
        COMPOSITIONFORM cf;
        cf.dwStyle = CFS_POINT;

        cf.ptCurrentPos.x = xpos;
        cf.ptCurrentPos.y = ypos;

        ImmSetCompositionWindow(hImc, &cf);
        ImmReleaseContext(m_hWnd, hImc);
    }
}

이 글은 스프링노트에서 작성되었습니다.

  1. 한글 설정
    1. ~/.inputrc
      set meta-flag on
      set convert-meta off
      set input-meta on
      set output-meta on

    2. ~/.bashrc
      alias ls='ls --color=tty --show-control-char'

    3. ~/.bash_profile
      if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
              INPUTRC=/etc/inputrc
      fi

  2. ssh 키생성

    1. ssh-keygen -t dsa
    2. cd ~/.ssh
    3. id_dsa.pub 을 상대 authorized_keys에 추가
  3. sshd_config

    1. 접속이 느리다면 UseDNS no 추가

이 글은 스프링노트에서 작성되었습니다.


루비블루 C, C++추가판입니다.

아래가 오리지널 사이트입니다.

http://3276.hu/project/port_of_ruby_blue.html
http://www.sitepoint.com/forums/showthread.php?t=534023

업데이트 요청을 받지않는다고 하네요.
기다리라고 하는데. 언제 나올지도 모르고

오리지널판 받아서 추가해서 만들었습니다.


그냥 noteapad++ 가 있는 디렉토리에 덮어 쓰면 되겠습니다.

수정) 2009-1-5 CHARCTER 배경색 수정.
매우 가볍다.
설명 파일 빼면 파일이 두개 밖에 안된다.

그냥 압축 풀어서 그대로 쓰면 된다. 압축 파일 크기가 366.1KB이다.

mp3, ogg, wav 파일을 지원한다.(파일연결 가능)

볼륨은 +(=), -(_)키 를 누르면 되며

  마우스로는 현재 볼륨(아래 스샷에서는 67%를) 위아래로 드래그 한면된다.



billy 홈페이지는 아래 링크에 있다.

http://www.sheepfriends.com/?page=billy


http://www.avast.co.kr/310

1년간 개인 무료.

+ Recent posts