제목은 무려...

개발자는 왜 야근을 하죠?



.... 머라고 답을 해야 하나?

.... 아니.. 너무 노골적인 질문 아냐?

.... 아니 자라나는 새싹의 희망을 꺽으면 안될텐데...

.... 아니 현실은 시궁창이야 ㄱ-

[링크 : http://ask.nate.com/qna/view.html?n=8808839]
Posted by 구차니
Programming/C Win32 MFC2009. 4. 22. 11:25
sizeof()는 type의 크기나 문자열의 길이를 알아 낼때 쓰이는 유용한 녀석이다
근데 문제는 생긴 꼴은 function() 이라서 대충 보면 함수 같은데
엄밀하게 이녀석은 operator이다.(연산자)

그런 이유로, sizeof()는 runtime시에 값이 치환되는것이 아닌 compile time에 값이 치환된다.


#include "stdio.h"
#include "stdlib.h"
#include "string.h"

void main()
{
	char str[] = "Hello World";
	char *str2 = NULL;

	printf("sizeof(char)  %d\n",sizeof(char));
	printf("sizeof(short) %d\n",sizeof(short));
	printf("sizeof(int)   %d\n",sizeof(int));
	printf("sizeof(str)   %d\n",sizeof(str));
	printf("sizeof(*str)  %d\n",sizeof(*str));
	
	str2 = (char*)malloc(12);
	printf("sizeof(str2)  %d\n",sizeof(str2));
	printf("sizeof(*str2) %d\n",sizeof(*str2));

	free(str2);
}

sizeof(char)  1
sizeof(short) 2
sizeof(int)   4
sizeof(str)   12
sizeof(*str)  1
sizeof(str2)  4
sizeof(*str2) 1

처럼 runtime시에 할당되는 크기는 알 수가 없다.
위의 것은 12바이트 문자열이므로(11 + 1byte NULL) 12가 나왔지만
아래는 *char 즉, 포인터 형으로 4byte가 나온것이다.

[링크 : http://www.velocityreviews.com/forums/t635338-sizeof-calculated-at-compile-time-or-run-time.html
Posted by 구차니
날씨도 좋고 미쳐가는건지 모르겠지만..
문득 출근하자 마자 좋은소리 못 듣다 보니..

"내가 왜 출근해서 이 고생을 해야 하지?"

라는 생각이 문득 든다..
돈의 노예로 살아가고 있어서 충실히 노예제도를 따르는 것일뿐인가..


이상과 현실은 다르다고 하지만, 왜 달라야 하는지, 다르게 되어야 하는지는 이유는 모른채
아마도.. 권력자, 재산가들의 뱃속을 채우기 위해 그렇게 되어온건 아닐지..
Posted by 구차니
embeded/80512009. 4. 21. 17:51
신기한 현상을 발견했다.
코드의 위치에 따라 용량이 상당히 많이 변한다는 사실!

for(idx = 0; idx < len; idx++)
{
	tempUnicode = input[idx];
	if(0x0020 <= tempUnicode && tempUnicode < 0x0080)	res = (char)(tempUnicode & 0x00FF);
	else if(tempUnicode == 0x00E1)						res = 0x80;
	else if(tempUnicode == 0x00E0)						res = 0x81;
	...
	else if(0x0400 < tempUnicode && tempUnicode <= 0x045F)
	{
		switch(tempUnicode)
		{
			case 0x0401:	res = 192 +	0;	break;
			case 0x0402:	res = 192 +	1;	break;
			...
		}
	}
	else												res = ' ';
}

Program Size: data=187.7 xdata=0 code=9505

for(idx = 0; idx < len; idx++)
{
	tempUnicode = input[idx];
	if(0x0020 <= tempUnicode && tempUnicode < 0x0080)	res = (char)(tempUnicode & 0x00FF);
	else if(0x0400 < tempUnicode && tempUnicode <= 0x045F)
	{
		switch(tempUnicode)
		{
			case 0x0401:	res = 192 +	0;	break;
			case 0x0402:	res = 192 +	1;	break;
			...
		}
	}
	else if(tempUnicode == 0x00E1)						res = 0x80;
	else if(tempUnicode == 0x00E0)						res = 0x81;
	...
	else												res = ' ';
}

Program Size: data=189.7 xdata=0 code=9698

바뀐건, else if() 내부에 switch()가 있는 경우의 위치가 바뀐 경우이다.
속도 최적화를 위해 빨리빠져 나갈수 있도록 위로 옮겨 주었떠니 용량이 무려!!!
193 바이트나 늘어났다.. OTL

아마도..
코드사이즈가 커지면서 MOV대신 MOVX 라던가..
이런식으로 명령어에 넣어야 하는 주소의 크기가 달라지면서 발생하는 문제가 아닐까 생각이 된다.
Posted by 구차니
embeded/80512009. 4. 21. 17:36
if(tempUnicode == 0x00E0)        output[out_idx] = 0x80;
else if(tempUnicode == 0x00E0) output[out_idx] = 0x80;
else if(tempUnicode == 0x00E0) output[out_idx] = 0x80;
...
else if(tempUnicode == 0x00E0) output[out_idx] = 0x80;
// 대략 128개

이녀석을 컴파일 하면
Program Size: data=189.7 xdata=0 code=10418

if(tempUnicode == 0x00E0)        res = 0x80;
else if(tempUnicode == 0x00E0) res = 0x80;
else if(tempUnicode == 0x00E0) res = 0x80;
...
else if(tempUnicode == 0x00E0) res = 0x80;
// 대략 128개

이녀석을 컴파일 하면
Program Size: data=187.7 xdata=0 code=9518


별거 아닌 코드이지만, 900byte 차이가 난다.
결론. 8051에서는 배열사용을 자제하자(switch / if-else 문처럼 한번의 액션에 분기되는 거라면)
Posted by 구차니
개소리 왈왈2009. 4. 21. 14:40
구글에서 강동도서관을 검색하니 딸려 나와서 한번 가보게 되었는데 의외로 마음에 들어서 후딱 가입을 했다.
근데.. 가입을 하고 보니.. 난 강동구 도서관은 가입되어 있는디 -ㅁ-?
아마.. 두개는 별도로 운영되어 지고 있나 보다.. OTL

1. 강동구 전자도서관의 첫 페이지 입니다. 물론 실명을 감추기 위해 약간의 편집을 했습니다 ^^;

2. 원하는 책을 누르면 책 소개가 나옵니다. 아래에서 대출하기나 책읽기를 누르면

3. 이 창이 뜨면서 ActiveX를 강요합니다.

4. 착한 유저는 ActiveX를 설치하시고, 나쁜 유저는 ActiveX를 설치안하고 안보시면 됩니다(응?)
   아무튼 ActiveX를 설치하고 나면 아래와 같이 책 내용을 보실 수 있습니다.

아쉬운 점은, XML 방식만 봐서 그런지 모르겠지만, 페이지 단위가 아닌 단순하게 웹 페이지에 엄청난 장문으로 작성된
느낌을 받는 다는 점인데.. 전자책의 라이센스문제로 아마.. 그렇게 한것 같지만.. 책 읽는 독자로서 pdf로 그냥 단순 스캔한
그러한 조판방식도 환영받을텐데.. 왜 이렇게 번거롭게 했을까 하는 아쉬움이 듭니다.


주의사항
1. ActiveX 도배이므로 IE 전용입니다.
2. 책 읽기를 누르는 순간 대여가 됩니다.  
   * 대출하신 책은 반납일의 오후 11시 50분에 자동 반납되며, 사전 반납도 가능합니다.
   라고 쓰여 있습니다. 반납은 신경 안써도 될 듯 합니다.
3. 책 대여는 5권까지 가능합니다만, 바로 반납하면 됩니다.  
4. 당연한지는 모르겠지만, 강동구 전자도서관은 강동구 시민만 사용이 가능합니다.

[링크 : http://elib.gangdong.go.kr/main/main.asp]



사족 : 아.. 무참히 깨어진 홈페이지여~ Firefox에서 열면 이런 만행을 보입니다..
사족2: 로그인은 되는척 하다가 안됩니다. ㄱ-


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

출근길의 풍경  (0) 2009.04.23
블로그 이미지 다이어트를 했습니다!  (4) 2009.04.23
12시간을 기절했습니다 -ㅁ-  (2) 2009.04.21
근황 - 좀비모드  (4) 2009.04.18
KT 애들 희한해~  (4) 2009.04.17
Posted by 구차니
다 큰 어른이!!
게다가 성인에!!
직딩인데!!
왜 저런짓을 하면서 피는거지 -ㅁ-!






[링크 : http://www.china1.co.kr/bbs/board.php?bo_table=happy&wr_id=117&page=30]
Posted by 구차니
니네가.. 소통을 아니?




다음빠도 네이버까도 아니지만, 다음에서 블로그 운영하는 정부대표 블로그인데..
다음회원에게만 댓글 허용이라.. 결국은 안좋은 말 적지 말라는 무언의 압박인가?

[링크 : http://blog.daum.net/hellopolicy]
Posted by 구차니
개소리 왈왈2009. 4. 21. 10:08
집에 도착하니 7:30 PM
밥먹고 누워서 데굴데굴 하다가 8:00 PM에 잠들고
일어 나보니 7:40 AM..


그냥 반올림해서 12시간 코오~

그렇다고 해서 개운한것도 아니고.. 똑같은 하루 똑같이 반복되는 일상.
비록, 누군가는 이러한 평범한 반복을 꿈꾸며, 먼곳으로 떠나간다고 하지만...
살아있는 사람으로서는 다른 하루를 꿈꾸게 되는데..


아무튼 월요일은 월요일이구나 싶은 건...
퇴근전 256 hit 였는데...


이번주도 활기차게!! 대학 숙제 블로그!! OTL

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

블로그 이미지 다이어트를 했습니다!  (4) 2009.04.23
강동구 전자도서관  (4) 2009.04.21
근황 - 좀비모드  (4) 2009.04.18
KT 애들 희한해~  (4) 2009.04.17
블로그 대문 사진을 바꿀까..  (2) 2009.04.16
Posted by 구차니
embeded/AVR (ATmega,ATtiny)2009. 4. 20. 00:37
패러럴이면 STK-200 호환
USB면 STK-500 호환이라고 한다.


Valid programmers are:
  c2n232i  = serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts [/usr/local/etc/avrdude.conf:834]
  dasa3    = serial port banging, reset=!dtr sck=rts mosi=txd miso=cts [/usr/local/etc/avrdude.conf:821]
  dasa     = serial port banging, reset=rts sck=dtr mosi=txd miso=cts [/usr/local/etc/avrdude.conf:808]
  siprog   = Lancos SI-Prog <http://www.lancos.com/siprogsch.html> [/usr/local/etc/avrdude.conf:795]
  ponyser  = design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts [/usr/local/etc/avrdude.conf:782]
  89isp    = Atmel at89isp cable            [/usr/local/etc/avrdude.conf:749]
  frank-stk200 = Frank STK200                   [/usr/local/etc/avrdude.conf:735]
  blaster  = Altera ByteBlaster             [/usr/local/etc/avrdude.conf:722]
  ere-isp-avr = ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf> [/usr/local/etc/avrdude.conf:712]
  atisp    = AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/>  [/usr/local/etc/avrdude.conf:702]
  dapa     = Direct AVR Parallel Access cable [/usr/local/etc/avrdude.conf:691]
  xil      = Xilinx JTAG cable              [/usr/local/etc/avrdude.conf:678]
  futurlec = Futurlec.com programming cable. [/usr/local/etc/avrdude.conf:661]
  abcmini  = ABCmini Board, aka Dick Smith HOTCHIP [/usr/local/etc/avrdude.conf:651]
  picoweb  = Picoweb Programming Cable, http://www.picoweb.net/ [/usr/local/etc/avrdude.conf:641]
  sp12     = Steve Bolt's Programmer        [/usr/local/etc/avrdude.conf:630]
  alf      = Nightshade ALF-PgmAVR, http://nightshade.homeip.net/ [/usr/local/etc/avrdude.conf:614]
  bascom   = Bascom SAMPLE programming cable [/usr/local/etc/avrdude.conf:604]
  dt006    = Dontronics DT006               [/usr/local/etc/avrdude.conf:594]
  pony-stk200 = Pony Prog STK200               [/usr/local/etc/avrdude.conf:582]
  stk200   = STK200                         [/usr/local/etc/avrdude.conf:566]
  bsd      = Brian Dean's Programmer, http://www.bsdhome.com/avrdude/ [/usr/local/etc/avrdude.conf:555]
  pavr     = Jason Kyle's pAVR Serial Programmer [/usr/local/etc/avrdude.conf:547]
  dragon_dw = Atmel AVR Dragon in debugWire mode [/usr/local/etc/avrdude.conf:540]
  dragon_hvsp = Atmel AVR Dragon in HVSP mode  [/usr/local/etc/avrdude.conf:532]
  dragon_pp = Atmel AVR Dragon in PP mode    [/usr/local/etc/avrdude.conf:524]
  dragon_isp = Atmel AVR Dragon in ISP mode   [/usr/local/etc/avrdude.conf:516]
  dragon_jtag = Atmel AVR Dragon in JTAG mode  [/usr/local/etc/avrdude.conf:508]
  jtag2dw  = Atmel JTAG ICE mkII in debugWire mode [/usr/local/etc/avrdude.conf:500]
  jtag2isp = Atmel JTAG ICE mkII in ISP mode [/usr/local/etc/avrdude.conf:492]
  jtag2    = Atmel JTAG ICE mkII            [/usr/local/etc/avrdude.conf:484]
  jtag2fast = Atmel JTAG ICE mkII            [/usr/local/etc/avrdude.conf:476]
  jtag2slow = Atmel JTAG ICE mkII            [/usr/local/etc/avrdude.conf:468]
  jtagmkII = Atmel JTAG ICE mkII            [/usr/local/etc/avrdude.conf:460]
  jtag1slow = Atmel JTAG ICE (mkI)           [/usr/local/etc/avrdude.conf:453]
  jtag1    = Atmel JTAG ICE (mkI)           [/usr/local/etc/avrdude.conf:445]
  jtagmkI  = Atmel JTAG ICE (mkI)           [/usr/local/etc/avrdude.conf:437]
  avr911   = Atmel AppNote AVR911 AVROSP    [/usr/local/etc/avrdude.conf:431]
  avr109   = Atmel AppNote AVR109 Boot Loader [/usr/local/etc/avrdude.conf:425]
  butterfly = Atmel Butterfly Development Board [/usr/local/etc/avrdude.conf:419]
  usbtiny  = USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/ [/usr/local/etc/avrdude.conf:413]
  usbasp   = USBasp, http://www.fischl.de/usbasp/ [/usr/local/etc/avrdude.conf:407]
  avr910   = Atmel Low Cost Serial Programmer [/usr/local/etc/avrdude.conf:401]
  stk600hvsp = Atmel STK600 in high-voltage serial programming mode [/usr/local/etc/avrdude.conf:395]
  stk600pp = Atmel STK600 in parallel programming mode [/usr/local/etc/avrdude.conf:389]
  stk600   = Atmel STK600                   [/usr/local/etc/avrdude.conf:383]
  stk500hvsp = Atmel STK500 V2 in high-voltage serial programming mode [/usr/local/etc/avrdude.conf:377]
  stk500pp = Atmel STK500 V2 in parallel programming mode [/usr/local/etc/avrdude.conf:371]
  stk500v2 = Atmel STK500 Version 2.x firmware [/usr/local/etc/avrdude.conf:365]
  mib510   = Crossbow MIB510 programming board [/usr/local/etc/avrdude.conf:359]
  stk500v1 = Atmel STK500 Version 1.x firmware [/usr/local/etc/avrdude.conf:353]
  stk500   = Atmel STK500                   [/usr/local/etc/avrdude.conf:347]
  avrisp2  = Atmel AVR ISP mkII             [/usr/local/etc/avrdude.conf:337]
  avrispmkII = Atmel AVR ISP mkII             [/usr/local/etc/avrdude.conf:331]
  avrispv2 = Atmel AVR ISP V2               [/usr/local/etc/avrdude.conf:325]
  avrisp   = Atmel AVR ISP                  [/usr/local/etc/avrdude.conf:319]
  arduino  = Arduino                        [/usr/local/etc/avrdude.conf:313]



Posted by 구차니