코딩 안되는 날~

@codemaru · July 06, 2006 · 8 min read

오늘은 말 그대로 최악의 하루 였다~

살다 살다 이렇게 코드가 안써지는 날은 정말 간만이었다~ 완젼 말렸다~ 정말 말렸다는 표현 그대로당... ㅠ.ㅜ~

결국은 zlib. 시작은 이랬다. 회사에서 사용하는 공용 dll을 static 버전으로 작성할 일이 있었다. 그래서 별 생각없이 소스 묶어다가 static으로 만들었다. 거기까지 하고 나니 생각이 들었다. 이놈에 헤더를 일일이 배포하기도 힘들다는 점이었다. 그래서 현란한 전처리기 신공으로 8종류의 라이브러리를 상황에 맞게 모두 컴파일할 수 있게 만들었다. 음음~ 여기까진 좋았다~

라이브러리를 가져다 쓰시던 팀장님이 오류가 난다고 말한다. zlib을 찾을 수 없다는 오류~ 음. 그래서 고민하다가 zlib을 주려다가 그러면 더 복잡해질꺼 같아서(가져다 쓰는 사람이) 그것을 라이브러리에 포함시킬 방법을 궁리해 보았다. 음~ 두드리면 열린다고 했던가... 구글링 신공 끝에 라이브러리를 합치는 방법을 알아냈다. 그래서 합쳐서 줬다~ 그래도 안된단다... 내가 해봐도 안된다. 내 자리에선 공용 라이브러리 폴더에 zlib이 있어서 됐던 것이다.

이쯤 되니 정신이 혼미해진다. 수학 시험 5분 남았을때 연습장없는 그런 상황이다. 정신이 하나도 없다. 뭔가를 하고 있지만 내가 무엇을 하고 있는지 알지 못하는 것이다. 왜 안될까? 고민하다가 내가 zlib을 #pragma로 코드에서 바로 포함 시켰다는 것을 알게 되었다. 그놈을 라이브러리 컴파일일 때는 빼주도록 했더니 잘된다. ㅎㅎ~ 여기서 난 끝인줄 알았다. 자랑스럽게 모듈을 다시 건냈으나,... 이번엔 압축이 풀리지 않는다는 것이었다.

왜 풀리지 않는 것일까? 이 라이브러리에 압축 루틴이 들어간건 작년 하고도 한참도 더 지난 일이다. 음~ 고민했다. 왜 안 풀릴까? 샘플을 만들어 보았다. 진짜 안풀린다. 디버깅을 해보려고 했다. 하지만 라이브러리 디버깅 정보를 모두 빼놓아서 디버깅이 되지 않는다. 에겅~ 다시 디버깅 정보 포함으로 죄다 컴파일했다. 그러자 이번엔 zlib 안으로 들어가지 않는다. 정말 살기 싫어지는 시점이다. 다시 zlib 다 컴파일 하고 디버깅을 했다. 이놈이 근데 압축을 풀어서 읽어야 하는데 그대로 읽어온다. 왤까? 들어가보니 스트림 객체에 transparent가 세팅되면 그대로 읽어온다. 왜 transparent일까? 한참을 쫓아가보니 zlib이 pkzip 헤더를 인식하지 못한다. 예전에 잘썼던것 같은데 안된다~ 덴장... ㅠ.ㅜ 결국은 다른 소스를 구해서 그놈으로 해결했다~ 지친다 지쳐.. ㅎㅎ

여기서 나의 험난한 오늘 일과는 끝일까? 끝이라고 생각하면 오산이다. ㅎㅎ~ 급하게 제작중인 클라이언트 프로그램에서도 위에서 만든 공용 모듈을 사용한다. 거기에 버전 구하는 함수가 있는데 이번에는 버전이 안구해진다. 나원참~ 릴리즈되어서 잘 돌아가고 있는 이 놈에 오늘따라 왤케 문제가 많은지 모르겠다. 또 모듈 소스와 exe소스를 왔다리 갔다리 하다가~ VerQueryValue에서 에러가 난다는 것을 알게되었다. 왜날까? 한참을 고민했다~ 여러가지로 변경해서 컴파일하고 실행해 보기를 수차례~~ 뭔가 이상하다. 그래서 탐색기에서 버전 정보를 보았다. 덴장~ 이놈 컴파일이 이상하게 됐는지 버전 정보가 탐색기에서도 표시되지 않았다. ㅡ.ㅡ# 리빌드 올하니 표시된다. 오늘 정말 왜이러는 것일까?

잠시 쉬고 싶은 마음도 정말 잠깐... 가야할 길이 멀다. UI를 구성하고 있는데, 왠지 늘 써오던 리스트 뷰보다는 리스트 박스 컨트롤이 이 상황에 더 잘 어울릴 것 같다는 생각이 들었다. 아무리 생각해도 리스트 박스에 제격인 자리였다. 그래서 난 잽싸게 리스트 뷰를 지우고 리스트 박스를 넣었다. 오너드로로 그리고 하면 상상만해도 작품하나 나올것 같다는 느낌이 든다. 좋다~ 작업 들어간다. 오너 드로 셋팅하고 DrawItem을 코딩하고 있다. 그런데 이번엔 GetItemText에서 걸린다. 이놈이 내가 넣은 놈을 리턴하지 않고 엉뚱한 글자가 나온다. 토하겠다 정말. 오너 드로만 끄면 제대로 된다. 여기저기 찾아봐도 이것과 관련된 글은 없다. API 정복을 폈다. 리스트 박스 너무 간단하게 설명하고 넘어간다. 그러다 ~ 정말 덮어 두었던 이상엽님의 VC++ 바이블을 꺼냈다. 오너드로 리스트 박스가 있다. 보는 순간 아차 싶다~ 리스트 박스는 오너 드로가 되면 GetItemData로 데이터를 불러다 써야 한다는 것이었다. 누가 옛날 컨트롤 아니랄까봐... ㅎㅎ~ 험난한 길을 헤쳐 오너드로 까지 성공했다~

그러나 여기서 끝이 아니다. 이번엔 메뉴의 리소스 아이디 값을 변경하려고 아이디=숫자 이렇게 입력해도 당췌 아이디 숫자 값이 바뀌질 않는다. 왜 이럴까? 너무나도 열이 받아서 프로젝트 클로즈 해버렸다. 진짜~ ㅠ.ㅜ 재부팅해야겠다. 컴터가 미친게야~ 아니면 내가 오늘 이놈한테 제대로 말리고 있다~ ㅠ.ㅜ~ 난 지금 16차원 세계에 빠진게 틀림없다. 헤어 나올 수가 없다. ㅡ.ㅡ#

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중