천호에서 대략 40분을 오다보면, 마지막은 졸고 있고 마포쯤 온다. 내려야하는 여의나루인데, 요것이 한강을 강 밑으로 지나기 때문에 다른 역 사이보다 좀 긴편인데, 문제는 '마포군. 다음에 내려야지'라고 생각하고 졸다가 여의나루에 도착한 기차 문이 열려있는 것을 보고 황급히 내리는 경우가 많다는 것이다.

오늘 같이 잠을 많이 잔 날은 그런일은 없지만, 일주일에 한 두번은 꼭 그런것같다.

마포에서 여의나루, 그 졸리는 구간이여.
사람이 별로 없는 맛있는집.
그런데, 사람이 몰리는 날에는 엄청 늦게 나오는 그런 집.
주인 아줌마는 맨날 "과장님 오셨어요"라고 민망하게 인사하는 집.
일주일에 세 번이상은 가는 집. 이번주만해도 네번갔다. 오늘이 목요일이지?

오늘은 10분 늦었다고, 30분을 기다려서 15분간 먹고 나왔네.
여길 우린 왜가는거야?
요새, 왜 그런지 모르겠지만 그간 약간의 슬럼프에 있던 탁구 기술이 조금 회복되었다. 이전엔 번번히 실패하던, 서비스 리시브가 상당히 호전됐고, 스매싱 타이밍도 상당히 좋아졌다. 머 굳이 드라이브도 상당량 실수가 적어졌다고나 할까?

몸에 채득하는 기술처럼 내 컴퓨팅도 어느 동안 슬럼프이다가 갑자기 점프하는 그런식으로 발전하는겐가? 알 수 없다. 요놈의 컴퓨팅이란 하루 20시간씩하는 것이라 슬럼프라는게 잘 느껴져 본적이 없으니.

오늘 저녁은 내일 아침 있을 설계발표에 못다한 것을 해야하겠기에 머리에 또 회사에 남아 김 좀 내야한다.
회사일이다.

우리팀이 사람이 좋아서 그런것인지, 아니면 개발자가 아니면 쉽게 접하지 못하는 Linux/Solaris 등을 다루어서 그런것인지, 뭐든 우리팀으로 협조요청식으로 들어온다.

정말 장비가 없다는 이유로 간단한 테스트까지 하는 것이라면, 화날일이지.

평소에 친하게 지내던 제품관리자(?)와 그렇게 전화를 끊고 나니, 여간 마음이 불편한것이 아니다. 그래도 어쩌랴 의사는 표시해야하는 것이고, 그것이 어떤 이유에서건 간에 쌓아둬서는 안되는 것이며, 표출해야하지.

그래도 마음이 불편하다. 왜냐면, 그렇게 화낼일은 아니었기 때문이다. 어쩌지?
  1. 2005.03.24 22:54

    언젠가... 꼭 다시 과장님과 일해보고 싶다는 말 한거 기억하시죠?
    정말로요... 근데 전 어쩜 게임쪽에 계속 발을 담게될거 같아요...
    그래도 기회가 올런지.....

http://june8th.net/wiki/wiki.php/oleeve/2005-03#07

그런데, 난 왜 요즘들어 꿈다운 꿈을 안꿀까 모르겠다.
너무 피곤에 지쳐 떨어져서 그런것일까?
아뭏든 힘들도록 뭔가하지 않으면 잠을 잘 수 없는 것은 버릇인것같다.
  1. oleeve 2005.03.09 01:45

    힘들도록 뭔가 한다음 피곤에 지쳐 꿈도 안꾸고 자는거..... 좋은거 같아요. 부러워요.. 꿈꾸기 싫어요..^^

  2. 2005.03.09 20:26

    저도 어젠 10시간 자면서 꿈비슷한 것을 꿨답니다.
    시장통에서 검은 옷입은 악한이 지나가면, 이상한 포스를 느끼는 능력을 지닌 사람이 되어 있던 꿈이었습니다. -.0

[CODE]char ch; while( (ch = fgetc( f )) != EOF ) { printf("%c", ch ); }[/CODE]

언뜻보기에는 맞는 것 같이 보인다. 하지만, 여기에는 isprint 못지 않은 두려운 버그가 숨어 있다.

fgetc 의 원형은 다음과 같다.

[CODE]int fgetc( FILE * );[/CODE]

fgetc의 return 값이 int 란다. 그리고, 문자하나를 되돌리는 함수라니..

각설하고 위 코드는 다음과 같아야한다.

[CODE]int ch; while( (ch = fgetc( f )) != EOF ) { printf("%c", (char) ch ); }[/CODE]

fgetc의 설명을 보면, 파일의 끝이나 오류를 만났을 때 EOF를 되돌린단다. unsigned char 로 표현할 수 있는 문자의 범위를 벗어나는 값으로 EOF가 정의되어 있지 않는한 파일에서 EOF와 동일한 문자값을 읽었을 때 이것이 파일의 끝이 아님에도 불구하고 끝으로 해석하는 버그가 좋아하는 상황이 벌어지게 될 것이다.

처음 코드에서는 강제로 char 변수에 받았으니, 문자 중에 어떤 값은 EOF로 해석되는 경우도 생기는 것은 당연하고, 따라서, fgetc의 리턴값은 파일에서 한 문자를 읽는것에만 흥분한 나머지, 오류 리턴을 제대로 판단하지 못하게 되는 것이다.
따라서, EOF인지 확인한다음 char로 캐스팅하여야 정상적인 사용법이 되는 것이다.

실제 EOF는 많은 구현에서 -1 로 정의되어 있다.
char ch = 'X';

위와 같이 되어 있을 때, 다음과 같이 사용하는 것이 옳은 것이냐하는 것인데,

if( isprint( ch ) )
{
blah;
}

경고감이다. 왜냐하면, isprint의 원형은

[CODE]int isprint (int c);[/CODE]

이기 때문이며, 여기에는 isprint에 넣는 인자의 철학과 우리가 흔히 사용하는 문자형 변수의 차이에서 오는 괴리감이 있는 것이다.

int 는 char가 표현할 수 있는 것보다. 일반적으로 더 많은 범위를 받을 수 있는데 (sizeof( char ) == sizeof( int ) 인 구조를 제외하면 항상 그렇지 않는가?) 그러면서도 signed 형이라는 것이다. 그런데, char 는 명시적으로 signed char, unsigned char이라 쓰지 않는한 컴파일러의 디폴트 값을 따른다.
그 디폴트 값이 signed라면, 위 코드는 부호확장이라는 개념으로 캐스팅이 일어날 것이다. 일반적으로 문자 코드 값은 음수가 없는데도 char 만 사용함으로 signed char로 취급되고, 이는 unsigned char 로 표현할 수 있는 0~255까지의 코드를 -128~127로 해석하여 isprint 함수에 전달하게 될 것이다. 이는 개발자의 뇌리 속에서 원하지 않았을테고, isprint도 사실 원하지 않을지 모른다.

컴파일러에 따라 이러한 char에서 int로의 암시적 캐스팅을 경고하는 경우도 있으므로 참고하시되, 유독 short 에서 int 로의 확장은 아무 문제가 없는데, char 에서 int 는 한 번쯤 생각해보아야한다.

따라서, isprint 같이 int로 문자를 받아서 평가하는 함수와 어울리는 곳에서는 unsigned char 로 받아서 처리하는 센스도 필요하다.
김준동이...

갑자기 오늘 그대가 그립네그려...
이유야 있겠지만, 그냥 보고 싶구랴...
  1. june8th 2005.03.11 00:19

    혹시 캐비넷을 열었다 그것을 봤나보군요.

  2. 2005.03.16 16:29

    안보았는데....

남자인 관계로, 화장실에 들어가면 몇초간 면벽 수도를 하게 된다.
회사 건물 화장실은 약간 살구색이 들어간 대리석에 검은 점박이가 있는데,
오늘은 그곳에서 부부와 자식으로 되어 있는 세 명의 가족을 보았다.

내 눈이 본 것일까, 대리석이 보여 준 것일까.
건물은 나보다 먼저 있었고, 나도 온지 오래되었는데,
왜 오늘에야 보인 것일까.
BOOKS in YES24
http://www.yes24.com/home/mylist/listView.asp?ListMeta=186836

READING LIGHT
http://www.funshop.co.kr/vs/detail.aspx?no=2116159000

+ Recent posts