[형변환 Qt] QByteArray to Unsigned Char 형변환 형변환은 어떤 언어를 다루건 필연적으로 개발자 앞에 나타난다. 어떤 언어든 (형변환이 일어나는) 퍼포먼스 향상을 위해 기본 라이브러리 보다 고정된 크기의 배열을 사용해야 하는 경우가 있다. Qt도 예외는 아닌지라 컨테이너 중 하나인 QByteArray를 char 배열로 형변환해야 할 상황이 존재한다. QByteArray는 QSerialPort()나 QTcpSocket()을 이용해 패킷을 읽어 들인 후 반환하는 기본 자료형이다. 두 라이브러리 모두 connect()에서 readyRead() 시그널을 통해 패킷을 읽어 들인 후 형변환한다. QByteArray를 unsigned char로 형변환하는 코드는 이런 통신 환경에서 유용하게 사..
자바 가상 머신(JVM), 강제종료 원인, 종료 훅 문제 자바 가상 머신 JVM이 종료되는 두 가지 경우를 생각할 수 있는데, 하나는 예정된 절차대로 종료되는 경우이고, 또 하나는 예기치 못하게 임의로 종료되는 경우이다. 절차에 맞춰 종료되는 경우에는 '일반'(데몬이 아닌) 스레드가 모두 종료되는 시점, 또는 어디에선가 System.exit 메소드를 호출하거나 기타 여러 가지 상황(예를 들면 SIGINT 시그널을 받거나 CTRL+C 키를 입력한 경우)에 자바 가상 머신 JVM 종료 절차가 시작된다. 이런 방법이 자바 가상 머신 JVM을 종료하는 가장 적절한 방법이며, 그 외에 Runtime.halt 메소드를 호출하거나 운영체제 수준에서 JVM 프로세스를 강제로 종료하는 방법(예를 들어 SIGKILL 시그..
[윈도우API] WinCE DIB 섹션 프로그래밍 (tagRGBQUAD) 앞서 설명한 것(▶DIB 섹션 포스팅 1)처럼 이미지가 픽셀당 8비트 이하인 경우 BITMAPINFOHEADER 구조체 다음에는 RGBQUAD 구조체의 배열이 이어진다. RGBQUAD 구조체는 다음과 같다. 123456typedef struct tagRGBQUAD { /* rgbq */ BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved;} RGBQUAD;cs 이 구조체는 256단계의 적, 녹, 청 색상을 표현한다. 물론 이 구조체의 색상들은 디스플레이 장치의 사양에 따라서 표현되지 않을 수도 있다. RGBQUAD 구조체 배열은 DIB 팔레트를 기술한다. 팔레트란 비트맵에 사용된..
[윈도우API] DIB 섹션 프로그래밍 (WinCE 기준) 윈도우API CE에서 비트맵 파일을 읽는 작업은 쉽다. 파일을 읽어서 비트맵 정보를 얻어내는 작업 외에도 화면에 있는 비트맵을 읽어서 조작하고, 조작한 비트맵을 화면에 다시 그리는 작업이 필요할 때도 있다. 이런 작업도 DDB보다 윈도우API DIB가 쉽게 처리할 수 있다. DDB에서도 장치 의존적인 비트를 얻어낼 수 있지만 버퍼의 포맷이 장치 의존적이므로 복잡하다. DIB를 사용하면 DIB 섹션을 사용해서 디스플레이 장치의 포맷에 상관없이 이미 정의되어 있는 포맷의 비트맵으로 읽을 수 있으므로 편리하게 프로그램을 작성할 수 있다. 윈도우 운영체제의 발전과 함께 다양한 윈도우API DIB 생성 함수를 지원하게 됐지만 윈도우 CE는 가장 유용한 다..