프로그램 사용/libjpeg2009. 5. 27. 19:29
libjpeg는 말그대로 jpeg을 위한 라이브러리이다.

이 녀석으로 할 수 있는 것은,
일정 사이즈로 resize(리사이즈) 혹은 scale/scaling(스케일링) 하는 것과
jpg를 bmp로 변환하는 것이다. djpeg를 보면 다른 bmp 포맷으로도 변환이 가능하지만,
윈도우 기반의 Bitmap으로만 할줄을 알아서..(헤더만 차이가 있을려나..)

아무튼 자세한 내용은 libjpeg에 들어있는 libjpeg.doc 을 참조 하면 되지만
한가지 애매한 부분이 있어 추가를 한다.

jpeg_read_header(&cinfo, TRUE);

이부분은 말그대로 jpeg 파일의 크기등의 각종 정보를 불러온다.
그리고 그 정보를 바탕으로 scaling을 준비한다. 그리고 나서

jpeg_start_decompress(&cinfo);

위의 함수를 호출하여(정확하게는 매크로) jpeg 을 bitmap으로 변환한다.
아래는 변환 부분의 소스코드이며,

cinfo.scale_num = 1;
cinfo.scale_denom = 8;

부분의 값으로 인해서 1/8 크기로 축소되어 변형된다.
(이로인해 preview 시에 상당히 빠르게 볼 수 있다. 그리고 jpeg6b 버전의 최대값이 1/8 이다)
	struct jpeg_decompress_struct cinfo;
	struct jpeg_error_mgr jerr;
	FILE * infile;
	unsigned char *data_ori = NULL;
	unsigned char *data = NULL;
	int		calc_width;

	cinfo.err = jpeg_std_error(&jerr);
	jpeg_create_decompress(&cinfo);
		jpeg_stdio_src(&cinfo, infile);
		jpeg_read_header(&cinfo, TRUE);
			cinfo.scale_num = 1;
			cinfo.scale_denom = 8;
		jpeg_start_decompress(&cinfo);
			calc_width = (cinfo.output_width * cinfo.jpeg_color_space + 3) / 4 * 4;
			data = data_ori = malloc(calc_width * cinfo.output_height);
			if(data == NULL)
			{
				jpeg_finish_decompress(&cinfo);
				jpeg_destroy_compress(&cinfo);

				fclose(infile);
				return FALSE;
			}

		while (cinfo.output_scanline < cinfo.output_height)
		{
			jpeg_read_scanlines(&cinfo, &data, 1);
			data += calc_width;
		}

		jpeg_finish_decompress(&cinfo);
	jpeg_destroy_compress(&cinfo);

fclose(infile); free(data_ori);

calc_width = (cinfo.output_width * cinfo.jpeg_color_space + 3) / 4 * 4;

이 부분은 bitmap특성상 4byte align이 되어야 하므로, 4바이트 단위로 끊어주는 계산을 해준다.
아래의 data += calc_width; 에서 사용된다.
Posted by 구차니
한번 청와대 게시판에 화장반대한다고 일단 확실한 부검후 화장을 하던 매장을 하던
미라로 만들던 하자고 글을 쓰러 갔더니...


뭥미?
글쓰기를 누르니...

※ 클릭하는 곳 아닙니다 -ㅁ-!

그리고 바로 넘어가는 회원가입 페이지


대한민국 국민이긴하지만, 강제적으로 가입해야지 글을 쓸수 있고
인증도 거친다면, 그냥 글 쓸때 주민등록 번호를 쓰게 하거나 익명을 가능하도록 해야 하는거 아닌가?


어우 욕안하고 살려고 했는데 욕이 아주 셋트로 나오게 하네 ㄱ-

아무튼 참고 참고 참아서 계속 진행을 했다.


아이디도 이렇게 까지 제한을 하다니 ㄱ-
암호도 아니고 무슨 아이디에 영문+숫자 조합을 강제한단 말인가?


울화통이 터져 다음 청와대 블로그를 가보았다.


장난해?
Posted by 구차니
1. 노무현 전 대통령의 서거 그리고 암살?

딴나라당과 현 대통령은 전 대통령을 악당으로 만들어 자신의 정권 유지와
사람들의 인정을 받으려고 노력하는 모습이 눈물 겹다.
물론 이러한 것들은 역사적으로도 당연시 되는 전법으로, 이전 왕권을 부정함으로
자신의 권력을 견고히 하기 위함이다.

하.지.만
생각치도 못한 변수가 생겼으니, 전 대통령이 도인급 디펜스를 가졌다는 사실!
이거 캐고캐고, 단골집 세무조사까지 해도 먼지하나 안나오는데
문제는 심마니가 "심봤다!" 할정도로 자기네 먼지만 폴폴 난다는 것!

두둥! 이제 어쩌랴,
압박은 해놓았지만 딱히 건덕지는 없고 오히려 자기의 칼이 자기의 목을 조여 오는것을!!

그래서 특단의 조치를 내린다!!


슬슬 압박으로 심리적으로 힘들어진 상황에서 우울증 기미도 보이기 시작했고
생활패턴은 인터넷으로 생중계 되면서, 이미 파악은 완료 되었다


최대한 조심조심하며, 기회를 노리는 것이다!
어익후 이 노친네 망령이 들었나 왜케 아침부터 등산가서 젊은 경호원들 피곤하게 그래~


경호원군 너네 부모님이 oo병원에 계시다며?
폭파시키지 않을테니 돈은 두둑하게 후세까지 챙겨줄테고 내가 시키는대로 하지 않겠어?
많은걸 바라진 않을테니 아침부터 등산가면 사람없나 보고 살짝 등을 밀어 드려 오케바리?


씌익 씌익~ Why so Serious?


그렇게 스키머 들에 의해 제거가 된 배트맨 아니 전 대통령은
영웅으로 거듭 태어나고,  빛이 강하면 그늘도 짙듯, 현 대통령은 악당으로 등극하게 된다.


두둥~~(다크나이트 엔딩 BGM 참조)





2. 북핵 실험 그리고 ICBM
전 대통령의 서거를 슬퍼하면서 김정일이 땅을 두드리니 진도 4.5의 지진이 발생을 하고
열불나서 홧김에 담배불 켜다가 손을데어 던진 불이 미사일 똥꾸녁에 떨어지니
어익후야 손이 미끄러졌구나~ 미사일이 슝슝 날아 갔다.


미사일 관련 개소리는 잠시 스탑하고
진지하게 이야기 하자면, 북한의 핵실험과 미사일 실험은
현재 대한민국에 대한 선전 포고 내지는, 위협이라고 생각이 된다.
비록 NASA나 북한의 공식 발표는 위성발사에 실패를 했다고 하지만,
국제사회에 끼치는 영향을 감안해서 실패했다고 발표를 했을 가능성이 높다고 본다.

그리고 비록 실패를 했다고 하더라도, 최소한 1000km급의 투사능력을 갖추고
소형화 되지 않은 핵탄두라고 하더라도 500km 정도는 날릴수 있지 않을까 라는 생각을 해본다.
그렇다면 현실적인 공격타켓은 미국보다는 일본이 되는 것이고, 그 안에 있는 남한, 중국, 러시아 역시 위협대상이 된다.

최고의 반사이익은 일본으로 전범국가로 묶여서 핵보유 하지 않고, 자위대로 있는 군대를
북한의 핵보유를 기정사실화 하면서 핵보유와 함께, 군대로 승격을 노리면서 실질적인 군사대국으로
제2의 제국주의를 꿈꾸게 될 것이다.

이해가 안되는 점은, 6발 정도의 핵탄두를 가졌을 가능성이 있다고 하지만
여름인 관계로 일본에 떨구어도 바람에 의해서 자신이 영향을 받고,
그렇다고 해서 남한에 떨구면 자멸의 길을 걷고 일본도 얼씨구나 쳐들어 올 가능성이 높은데

지금 이 시점에서 이러한 무리수를 두면서
'전 대통령 서거'일에 맞춘듯이 핵폭발 실험을 했을리가 없다는 것이다.
더욱이, 김정일-이명박 연계 플레이 하기에는 우호도 점수가 낮은 관계로, 연계플레이라고도 볼수 없고.
최악의 가정은 말그대로, 북한의 붕괴가 다가왔고 최후의 수단으로 전쟁을 준비하는 것이라고 밖에 보이지 않는다.


3. 전쟁징후와 고위권 인사의 이탈
아마 전쟁 날분위기가 들면, MB와 딴나라당 놈들은 해외연수등의 핑계로 미국이나 일본으로 미리 나가 있을 것이고
나라말아먹은 경력으로 그 나라의 시민권을 획득하여 또 다시 떵떵거리며 살겠지






문득 영웅의 제조(producing hero)와 선과 악의 대결(이라고 할정도 거창하진 않지만)
이러한 것들이 많이 떠오르게 된다... 누구를 위한 영웅의 탄생이며
영웅이 생겨남으로 어떠한 악당이 생겨날지


악당이 먼저 생김으로 무형의 영웅이 생겨난것으로 보이긴 하지만..
Posted by 구차니
Linux2009. 5. 27. 09:57
저번에 윈도우에서 Release mode로 컴파일 할때는 용량 변화가 전혀 없었는데..
리눅스에서 한번 혹시나? 하는 마음에 해보게 되었다.

-rw-rw-r-- 1 morpheuz dev   98 May 27 09:51 for.c
#include "stdio.h"

void main()
{
	int idx;

	for(idx = 0; idx < 5; idx++)
	printf("%X\n",idx);
}

-rw-rw-r-- 1 morpheuz dev  166 May 27 09:52 iter.c
#include "stdio.h"

void main()
{
	int idx = 0;

	printf("%X\n",idx++);
	printf("%X\n",idx++);
	printf("%X\n",idx++);
	printf("%X\n",idx++);
	printf("%X\n",idx++);
}

-rw-rw-r-- 1 morpheuz dev   98 May 27 09:51 for.c
-rwxrwxr-x 1 morpheuz dev 4749 May 27 09:52 for.o
-rw-rw-r-- 1 morpheuz dev 1446 Apr 13 17:19 iter.c
-rwxrwxr-x 1 morpheuz dev 4830 May 27 09:52 iter.o

리눅스에서는 윈도우와 다르게 for문에 의한 용량 감소가 확연히 눈에 띈다
Posted by 구차니
http://image.chosun.com/cs/gnb/chosun_logo_090522.gif

누가 처음 알아 냈는지는 모르겠지만..
조선일보의 배너파일 날짜가 22일이라고 되어 있다고 하는 누군가의 말에
확인을 해봤는데.. 헉?!

진짜로 22일로 되어 있네 -ㅁ-!
디자이너 실수 혹은 파일 관리자의 실수라고 하고 싶을려나?


[발견 : http://media.daum.net/digital/internet/view.html?cateid=1048&newsid=20090526195709874&p=ned&RIGHT_COMM=R9&allComment=T&commentViewOption=true&commentId=38447204&listSortKey=depth&listAllComment=T&listPageIndex=1&cView=view]
Posted by 구차니
캠타시아가 유명하다는데.. 일단 유료는 패스~

캠스튜디오와 코덱은 GPL이라서 누구든지 무료로 사용이 가능하다.
그리고 풀스크린에서도 끊김없이 잘 녹화가 된다(D3D 이런건 안해봤으니 -ㅁ-)


 


인스톨러용량은 1.30MB (1,364,995 바이트) 로 매우 저렴하다
위에 보면 알겠지만, SWF 툴바를 누르면 Record to AVI / SWF로 전환이 되며,


Region 메뉴를 통해 특정영역(Region) 정해진 영역(Fixed Region) 그리고 전체 화면(Full Screen)을 녹화할 수 있다.


정해진 영역(Fixed Region)은 특정 크기 및 위치를 고정하여 녹화할 수 있도록 해주며,
아래의 체크 박스를 이용하면 녹화중에 위치를 변환할 수 있다.(물론 시간은 계속 간다)


특정영역(Region)을 선택하는 화면이며, 영역 선택 후 즉시 녹화가 시작된다.


녹화 제어는 꼭꼭 숨겨진 단축키를 사용하면 된다.
위는 기본값으로 설정된 단축키
[공식 : http://camstudio.org/]

Posted by 구차니
Programming/C Win32 MFC2009. 5. 26. 23:23
libjpeg.a 라는 녀석을 발견하고는 어떻게 생겼나 궁금증이 생겼다.

$ ll libjpeg.a
-rw-r--r-- 1 root root 166012 2007-10-01 23:36 libjpeg.a

$ file libjpeg.a
libjpeg.a: current ar archive

$ nm -A libjpeg.a
libjpeg.a:jcapimin.o:00000330 T jpeg_CreateCompress
libjpeg.a:jcapimin.o:         U jpeg_abort
libjpeg.a:jcapistd.o:         U jinit_compress_master
libjpeg.a:jcapistd.o:000001b0 T jpeg_start_compress
libjpeg.a:jctrans.o:000000c0 t compress_output
libjpeg.a:jctrans.o:         U jinit_c_master_control
libjpeg.a:jcparam.o:000008a0 t add_huff_table
libjpeg.a:jcparam.o:000000e2 r bits_ac_chrominance.3846
... 파일별로 반복
'
U,T,r 등은 symbol type 이라고 하며,
위의 U는 Undefined 을, T는 Text section(code) 을 의미한다.



$ ar -t libjpeg.a
jcapimin.o
jcapistd.o
jctrans.o
jcparam.o
jdatadst.o
...


$ objdump -x libjpeg.a
In archive libjpeg.a:

jcapimin.o:     file format elf32-i386
rw-r--r-- 0/0   2296 Oct  1 23:36 2007 jcapimin.o
architecture: i386, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000

Sections:
SYMBOL TABLE:
RELOCATION RECORDS FOR [.text]:
... 파일별로 반복



mangling은 컴파일러에서 이름이 중복되지 않도록 독특한 이름을 지어주는 것으로
C++에서 overloading을 지원하기 하는데 사용되기도 한다고 한다. [링크 : http://rubyeye.kr/]

int _cdecl    f (int x) { return 0; }	//	_f
int _stdcall  g (int y) { return 0; }	//	_g@4
int _fastcall h (int z) { return 0; }	//	@h@4

위키피디아에서 참조한 녀석으로 MS 컴파일러가 C언어 맹글링하는 방식의 예제이다.
[링크 : http://en.wikipedia.org/wiki/Name_mangling]

그리고 이러한 녀석을 원래이름으로 돌려주는 유틸리티로 c++filt가 존재한다.
[참고 : http://kldp.org/node/68410]


'Programming > C Win32 MFC' 카테고리의 다른 글

indent style  (0) 2009.06.09
C99 구조체 초기화 하기  (0) 2009.05.28
신기한 코드 사이즈  (0) 2009.05.19
double형을 int 형으로 출력하면?  (0) 2009.05.15
전처리기를 이용한 디버깅용 선언문(#define)  (0) 2009.05.15
Posted by 구차니
프로그램 사용/vi2009. 5. 26. 22:51
1.3. Install Vim on Debian GNU/Linux

To install Vim on Debian Linux (GNU Linux), login as root and when connected to internet type -

apt-get install vim vim-rt

It will download the latest version of vim, install it, configure it. The first package listed is vim, the standard editor, compiled with X11 support, vim-rt is the vim runtime, it holds all the syntax and help files.

On Debian 3.0 (woody) and above, use 'apt-get install vim' instead. The vim-rt package is part of the main vim package.

[링크 : http://www.faqs.org/docs/Linux-HOWTO/Vim-HOWTO.html]


우분투에 9.04 기본으로 설치된 VI는 문법강조가 작동하지 않는다.
그래서 위의 방법대로 했더니 vim-rt는 존재하지 않고 vim-runtime 패키지가 존재 한다.

$ sudo apt-get install vim
라고 입력하면 알아서 추천하고 알아서 설치해준다.
Posted by 구차니
개소리 왈왈2009. 5. 26. 22:02

무슨 바람이 불었는지 추모식을 가고 싶어서(실은 안가면 후회 할꺼 같아)
몇 정거장 일찍 내려 걸어 추모식장으로 갔더니...
허거덩 -ㅁ-! 생각보다 줄이 길었다..

너무 길어서(한 20분은 기다려야 할 듯 한데 너무 긴건 아니었지만)
그냥 돌아오는데 돌아오는길이 왜이리도 먼지...


추모식장앞만 서성이다 온 이유는
내 옷이 흰색이라 웬지 모를 검은 정장들에 위축감이 들었기때문이다.

젠장 정장 ㄱ-
Posted by 구차니
개소리 왈왈2009. 5. 26. 17:47
문득 다른글들을 보면서 이런 생각이 들었다.



"나는 뒤돌아 봤을때, 후회없는 삶을 살았던가?"

대답은?

"난 항상 뒤돌아 볼때 마다 나의 과거를 후회하고 있다"




과거를 뒤돌아 볼때 후회를 하는것은,
왜 그것밖에 내가 하지 못했을까...
왜 그정도 밖에 능력이 안되었을까 ...
를 생각하기 때문이다.

어쩌면.. 항상 최선을 다해 죽어라 공부 하지 않기 때문에 핑계를 대는 걸지도 모르겠지만,
"난 항상 그 순간에 최선을 다하고, 그 시점에 할 수 있는 최상의 선택을 했다" 라고 생각을 한다.


그럼에도 불구하고 후회를 할 수 밖에 없는건 인간이기 때문이라고 생각이 된다.



인간이기에 과거의 나를 보는데 있어,
(능력적으로 부족한) 과거의 나를 보는데 있어(능력적으로 한발 성숙한) 현재의 나를 기준으로 보기 때문이다.

'개소리 왈왈' 카테고리의 다른 글

간만에 영어책을 읽어 보았습니다  (0) 2009.05.29
고 노무현 대통령 추모식  (0) 2009.05.26
어우 예비군 훈련!!! ㅠ.ㅠ  (0) 2009.05.25
블랙스크린 - MS 광고  (0) 2009.05.23
내 블로그 가치는?  (2) 2009.05.21
Posted by 구차니