기존의 C++ 로 작성 된 프로그램의 모듈을 Cocoa에서 재활용 할 방법이 없을까 찾아 보았더니, 역시 방법이 다 있었다.

기존의 C++ 소스 파일과 헤더 파일을 프로젝트에 추가 해 준다. (드래그 앤 드랍)

그리고 C++ object를 사용 하는 파일 (지금 같은 경우 main.m)의 확장자를 .mm으로 변경 한다.

그런 다음 똑같이 사용 하면 된다!

초간단!

C나 C++을 하다 보면은 shift 연산을 할 때가 많이 있습니다.
shift연산은 로우레벨 연산으로 비트를 왼쪽이나 오른쪽으로  밀어 내는 연산입니다.

shift 연산은 산술적으로 빠른 제곱근이 계산 됩니다. 왼쪽 shift 는 2^n 계산이 되고, 오른쪽 shift는 1/2^n이 되죠.

여기서 이야기 할 내용은..  이 유용한 shift연산에 한가지 함정이 있다는 겁니다.
그것은 바로 32번 shift하는 것이지요. (32bit 운영체제 임을 가정 합니다.)

아래의 코드와 실행 결과를 확인 해 보겠습니다.

unsigned int x와 signed int y 두 개의 변수가 있는데.. 8번 shift하면은 x와 y의 값이 달라지게 됩니다. 이게 전형적인 shift 연산의 결과 입니다. ( 값이 다른 것은 굳이 설명 하지 않겠습니다. unsigned와 signed는 다른거 아시리라 가정 합니다.)

그다음에 밑에 보면은 32번 shift를 수행 합니다. 우리는 예상 하기로는.. x와 y를 왼쪽으로 32번 shift하면은 0이 나오길 기대 합니다. (y를 오른쪽으로 shift 하면 -1이 나오길 기대합니다.)

하지만 결과는 예상을 뛰어 넘습니다. 둘다 같은 값이 나오게 됩니다. 무슨 일일까요?

표준 C, C++ 규약인 ISO/IEC 14882:2003 5.8 섹션에서 다음과 같이 이야기 하고 있습니다.

5.8 Shift operators
1    The shift operators << and >> group left-to-right.
shift-expression: additive-expression
shift-expression << additive-expression shift-expression >> additive-expression
[expr.shift]

The operands shall be of integral or enumeration type and integral promotions are performed. The type of the result is that of the promoted left operand. The behavior is undefined if the right operand is negative, or greater than or equal to the length in bits of the promoted left operand.

2    The value of E1 << E2 is E1 (interpreted as a bit pattern) left-shifted E2 bit positions; vacated bits are zero-filled. If E1 has an unsigned type, the value of the result is E1 multiplied by the quantity 2 raised to the power E2, reduced modulo ULONG_MAX+1 if E1 has type unsigned long, UINT_MAX+1 otherwise. [Note: the constants ULONG_MAX and UINT_MAX are defined in the header <climits>). ]

3    The value of E1 >> E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type or if E1 has a signed type and a nonnegative value, the value of the result is the integral part of the quotient of E1 divided by the quantity 2 raised to the power E2. If E1 has a signed type and a negative value, the resulting value is implementation-defined.

오른쪽 operand가 음수 이거나 왼쪽 피연산자 데이터 타입의 비트 길이보다 크게 되면은 Undefined 로 정의 되어 있습니다.

제가 이걸 알게 된 경우는 비트 마스크를 사용 하다 알게 되었는데, 컴파일러는 표준대로  undefined로 처리를 해버려 버그를 유발 하게 됩니다.

저처럼 마스크 연산을 위해 32번 shift를 해야 하는 경우가 발생 하게 되면은, 아무 생각 없이 위와 같이 하면 안됩니다. 16번씩 두번 shift를 하던가 해야 됩니다.

다음 그림은 제가 원하는 결과를 수행 하기 위해 수정 한 코드 입니다.

결과를 보면 알 수 있듯이, x는 0이 나오고 y는 오른쪽 shift일땐 -1이 나오고 왼쪽 shift는 0이 나왔습니다.

shift연산은 굉장히 유용한 연산이고 자주 사용 되는 연산이나, 위와 같은 특수한 경우를 보통 모르고 있기 때문에 유의 하여야 됩니다.

원래는 Bas Rutten의 Street Fighting 이라는 동영상인데... 어떤 재치 만점이신 분이 대머리 독수리라는 별명을 짓고 재미난 더빙으로 편집한 동영상입니다.

원본 동영상은 아래에 있구요. 보시고 싶으신 분은 보시면  될 듯... ㅋ
약한 자들을 위해 만들어진 영상이니 보고 배우는 것도 나쁘진 않을 거 같습니다. ㅋㅋ 사실 보고 있으면 오호~ 이런 거였군..!? 하는 생각이 든다는....




< 오리지날 버전 >

싸움의 기술 1편

싸움의 기술 2편

싸움의 기술 3편

싸움의 기술 4편

싸움의 기술 5편

싸움의 기술 6편

싸움의 기술 7편

싸움의 기술 8편

싸움의 기술 9편

싸움의 기술 10편

싸움의 기술 11편


썬더버드는 MS Office의 아웃룩과 대응 되는 오픈소스 기반의 이메일 클라이언트 이다.

굉장히 강력 하고 안정성이 있으며 꾸준한 버전 업으로 관리가 되고 있다.

사실 우리 나라 사람들은 굉장히 MS에 의존적으로 되어 있다. 어쩔 수 없는 것이 PC의 보급화와 급속도로 발전한 우리나라 IT의 베이스가 바로 MS의 Windows 덕분이였기 때문이다.

MS의 아웃룩은 많은 사람들이 사용 하고 많은 회사에서도 이메일 클라이언트로 사용 된다.

하지만 제품을 구매 하여야 되고 만만치 않은 가격인 데다가 요즘 들어서 무겁고 버그도 많아 서비스팩도 깔아야 되고 이래저래 불편한 점이 있다.

썬더버드는 모질라 제단에서 관리를 하는데 요즘은 따로 떨어져 나와서 모질라 메세징에서 관리를 하고 있다.

현재 버전이 3.0.4 까지 나왔는데 3.0 버전 부터는 탭 기능을 추가 하여서 좀더 편리하게 사용 할 수 있게 되었다.

그리고 무엇보다 강력한 것은 파이어폭스와 마찬가지로 부가기능들을 설치할 수 있다는 것이 장점이 아닐까 싶다.

테마도 원하는 데로 바꿀 수도 있고 추가 기능을 이용해서 구글 캘린더와 연동도 한다던지 많은 기능들이 추가될 수 있다.

새 업데이트가 있을 경우 홈페이지에서 추가된 기능이나 개선된 기능을 참조 할 수 있으니 사이트를 방문 해 보길 바란다.

http://ko.www.mozillamessaging.com

이 포스트를 올리는 이유중 하나는 사실 많은 우리나라 사람들은 이메일 클라이언트를 잘 사용 하지 않는 다는 것이 안타까워서 이다.. (일반 유저들을  이야기 하고 있는 것임. 회사에서는 업무를 이메일을 주로 이용해서 커뮤니케이션을 하기 때문에 아웃룩을 많이들 사용 한다.)

미국이나 다른 나라는 이메일이 주류로 사용 되고 있는데 반해 이메일 자체를 별로 잘 사용 하지 않는 것도 있다.
이것은 우리나라는 문자메세지의 발달로 인해 간단하고 쉽게 문자 메세지를 보낼 수 있었기 때문으로 생각 된다. 사실 문자메세지 서비스는 우리나라가 다른 나라보다 훨씬 먼저 시작 된 서비스 이다.

문자 메세지는 항상 휴대하는 휴대폰으로 바로 알림이 오는데 이메일은 웹으로 접속을 하거나 컴퓨터가 있어야 확인이 되기 때문에 잘 사용 되지 않는 것도 이유중 하나다.

하지만 요즘은 인터넷이 어느 곳에서든 잘 되고 컴퓨터를 많이 사용 하는 세상이 되어서 이메일이 다시 각광 받으리라 생각 된다.

이메일은 사진이나 동영상, 텍스트등 자유롭게 입력할 수가 있고 필요에 따라 검색도 할 수 있고 공짜이기 때문에 잘만 사용 하면 유용하게 사용 할 수가 있다.

웹에서 해도 되지만 검색과 이메일을 내 컴퓨터에서 보관하고 관리하고 싶은 사람들은 이메일 클라이언트를 사용 하길 권해 본다.



최근 저 사양 미니노트북에서 고사양 게임을 플레이 할 수 있다는 뉴스를 보았다.

내용인 즉슨, 클라우드 컴퓨팅 기술과 동영상 스트리밍 기술을 이용해 브라우져를 통한 스트리밍 게임 서비스 이다.

오랜만에 보는 참신한 아이디어 인듯 하다. 물론.. 이전부터 있었는데 이제 알았는 것일 수도 있겠지만.. ( 정보 수집 능력이 딸리는 관계로.. )

현재 OnLive, Gaikai, AMD + OTOY 세 곳이 주목 받고 있다.

AMD의 OTOY는 옴니아에서 크라이슬러를 플레이 하는 동영상이 공개 됬다.

구글에서 이야기 한 것처럼 앞으로는 브라우져를 통해 모든것을 할 수 있을 것이라는 말이 실로 실감나는 순간 이라 생각 한다.

클라우드 컴퓨팅 서비스를 지금 까지는 간접적으로 밖에 느낄 수 밖에 없었지만.. 앞으로는 직접적으로 서비스를 받아 볼 수 있을 듯 하다.

실용 단계 까지는 2년여 더 걸린다고 하니.. 앞으로 있어 보면 알듯..

임베디드 소프트웨어의 새로운 시장으로 충분히 매력적이지 않나 생각 한다.

좀더 저 분야에 관심을 가져 보도록 해야 겠다.

Gaikai 기사 : http://www.zdnet.co.kr/ArticleView.asp?artice_id=20090703112600

Windows Mobile 6 플랫폼 6.1.4 에뮬레이터에 OpenGL ES 샘플을 테스트 했다.

먼저 OpenGL ES SDK를 다운로드 받아야 된다. 여러 버전이 있는데 모든 버전을 설명 할 수는 없고 다음의 링크를 참조 할것.

http://www.khronos.org

Windows CE 에서는 다음의 파일을 다운로드 한다.

Sample Program 은 다음의 파일을 다운로드 한다.
( 출처 : Windows embeded Expert Group 말때가리님 )



마이크로소프트사에서 프로그래머용 폰트 Consolas를 배포 했었다. Visual Studio 2005 이상 버전

에는 깔려 있고 따로 홈페이지에서 패키지를 다운로드 할 수 있다.

사실 별거 아닌거 같지만 코딩을 할 때 폰트에 따라서 의욕이 달라진다. 솔직히 진짜 괴상 망칙한

폰트를 사용 한다면 본인은 몰라도 남들은 괴롭고 짜증이 나기 마련이다. 소스 보는게 직업인

프로그래머의 입장에서는 폰트도 아트 (Art) 적이어야 일의 능률이 향상 된다.

개인 적으로 Consolas 폰트는 잘만들었다고 생각 된다. 관심 있으신 분들은 한번 써보시길.. Mac

에서도 ttf파일은 사용 가능 하니까...


OpenSSLSSLTLS 프로토콜을 구현해 놓은 오픈 소스를 뜻한다. SSL이란 Secure Socket Layer의 약자로 브라우저와 웹 서버 사이의 보안을 위해 만들어 졌다.

소스는 여기에서 다운로드 받을 수 있으며 바이너리 형태로 제공 하지 않고 소스를 제공 한다.
( Download! )

그렇기 때문에 소스를 컴파일도 하고 링크도 걸어야 사용이 가능 하다. 압축을 풀면 INSTALL이란 이름으로 되어 있는 문서파일이 하나 있다. OpenSSL을 설치 하는 방법을 기술 해 놓았다.



+ Recent posts