쓰겠다 써야지 맘먹으면서도 쉬이 써지지 않는 글을 보면..
암담한 기분도 든다.
여기다가 이렇게 이런 저런 글을 남기고 싶었는데,
이렇게 안움직이다 오늘에서야 이렇게 글을 적는다.

이런것이 죽은 홈피의 모습이지 않을까 싶다.
내 삶의 여유를 갖기 시작하고 하나씩 갖추기 시작하면 다시 이야기를 채워나야겠다.
728x90
학교 다닐때도 주말만 되면 늘 집 주변 수리로 바쁘게 왔다갔다했던 광주의 본가에 처음 가보았다.
뭐 팽의 이야기를 토대로한 나의 상상과는 다르게 큼직하고 깔끔하니 좋았다.
광주군에 접어들어 그 녀석 집으로 들어가는 길은 생각했던것 보다 멀긴 했지만,
전원 주택이라면 그 정도의 깊이에 있어야 되지 않을까 라는 생각도 든다.
난 처음 그녀석 방에 들어가서 의문이 있었던것이 도데체 PS는 어디에 있는 것일까 했었는데,
놀이방이 있지 않은가? 방이 2개라니... 훗.. 부러움의 압박이!
간단히 씻고 녀석과 함께, PS2로 오락도 했다.
새벽 4시 넘게 오락만 하다가 자고 일어나니 오후 2시.
생각해 보니, 친구네 집에 와서 그네 어머니와 아버지께 먼저 깔끔한 모습으로 인사를 드려야 했는데...
부시시한 모습으로 거실에서 TV보시는 아버지와 어머니를 대하기는 역시나 ^^
하여간, 그렇게 간단하게 인사를 드리고 식사후 다시 오락을 붙잡고...
하여간, 처음 방문하는 집인데.. 그 때 참으로 염치 없다는 생각도 든다.

어쨌던 오후 6시 넘어서 나섰고, 팽과 헤어졌다.
나중에는 제대로 한번 찾아뵙고 인사를 제대로 드려야 되겠다.


728x90
성천 내외가 어쩐일로 집들이를 했다.
물론 이 집들이는 저번주 토요일에 했으니 한참 지난 일이지만.
이날 경환 내외와, 팽, 그리고 거북, 종민, 나 이렇게 6명이 모였다.
물론 많은 수는 아니지만, 그래도 이렇게 자리를 만들어 모이기 힘든 친구들인지라,
나름대로 의미가 강렬했다.
간만의 집들이 인데다, 친구네 집을 방문하려 하니 빈손으로 가긴 솔직히 꺼려졌고,
퇴근 길에 들린 그랜드 백화점의 슈퍼에서 비누 세트를 구입해 들어갔다.
산성 역이라는 것을 처음 가본 곳인지라, 거리도 잘 몰랐기에, 조금은 시간적 미스가 발생했지만,
그럭저럭 도착했다. 하지만 집들이 물품을 사들고 온 친구는 나와 종민, 그리고 경환 내외 뿐이였고,
팽과 구북은 당근 빈손. 그래도 나중에라도 주섬 주섬 사들고 같이 들어갔다.
산성역에서 만나 성천이와 만나 천천히 그네 집으로 올라갔다.
경환이네 처럼 올라가는 길이긴 했지만, 그래도 본가와 처가집에서 그리 멀지 않은 곳이라하니,
거리야 어찌되었던간에, 나름대로 괜찮은 곳이지 않을까 싶다.
그렇게 도착한 집은 성천이의 허언과는 다르게 나름대로 깔끔하고 넓은 집이였다.
물론 저택같은 집은 아니지만, 둘이 살기에 부족함은 없었고, 도리어 손님을 맞이 할 수 있는 방이 있다는 사실이
더욱 놀랍지 않을까?
여튼 그렇게 모여 함께 식사를 하며 이런 저런 잡담을 늘어놓았다. 물론 다들 그리 쉬이 살고 있지는 않았다.
하지만, 이렇게 경기가 어려울때 다들 취직했다는 것 하나만으로도 충분히 잘 살고 있다고 생각한다.
다소 빠듯할지는 모르겠지만,그렇게라도 살고 있다는 것은 우리네 나이치고 잘하는 것 아닐까?
이제 서서히 하나둘 결혼을 하고, 나중에는 애도 하나씩 끼고 있을지 모르겠다.
(벌써 경환 내외는 이미 자식을 가지고야 말았지만 ^^)
결혼이라는 것에 이미 겁을 잔뜩먹은 나에 비해 용감하다고 생각된다.
어찌되었던 이렇게 결혼까지 하고 집들이도 한 친구의 번영하길 먼 발치에서나마 기원한다.
728x90


그제 옆집에 있는 슈퍼마켓에 갔다.
그곳 아저씨에게 늘 그렇듯 인사를 드리고 몇가지 과자를 고르고 나가려 했다.
갑자기 요즘 근황에 대해 물으시면서 갑자기 담배 보루 껍데기와 볼펜을 꺼내시는 것이다.
그리고 내리 한자를 깔아 쓰시는 것이다.

난 이 내용을 받아놓고, 당신에게 물었다.
"어르신, 이게 무슨 뜻입니까?"
"'행' '주' '좌' '와', 걸을때나 뛸때나, 앉아 있을때나 누워있을때 늘 생각한다.,
'어' '묵' '동' '정', 말할때나 침묵해 있을때나 움직일때나 가만히 있을때나 늘 생각한다.
'몽' '중' '일' '여', 꿈속에서도 같다.
'숙' '면' '일' '여', 깊은 잠을 잘때도 같다.
'내' '외' '명' '철', 그리하면 안에서나 밖에서나 언제나 모든 것의 이치를 쉬이 깨닫고 느끼며
'돈' '오'            , 큰 깨달음을 얻으며
'수' '행' '불' '행', 이 수행이 바로 불가의 행함이다.
라는 것이다. 불가의 이야기 이지만, 모든 인생은 이와 같다."
당신의 철학자 같은 모습은 기묘한 느낌이였다.
지금 이 글자를 컴퓨터로 부수를 찾아 채운 내용이지만, 어찌하면 모든이에게 인생살면서 느낄 수 있는 모든
행동 지침같다.

P.S. 허기사... 인생을 뭉그려 이야기하긴 쉽다. 하지만 저리 움직이는 사람이 그 분이라는 것을 알면 쉬이 지나치기 어려운 내용이지 않을까?
728x90
친구가 공유기를 가지고 싶다는 이야기를 한게 첫출발이였다.
처음에는 적당한거 하나 집어서 그냥 그거 사.. 라고 할려다가, 우연찮게 무선 인터넷에 대해서
보게 되었고, 언젠가 하나 설치해서 연결할때 사용했던 네스팟용 무선 랜카드가 떠올랐다.
쌓아둔 물건을 뒤적거려 찾아보니, 무선랜카드가 있고......
결국, 저지르고 말았다.

기존 내 공유기를 그 친구에게 팔고, 난 유/무선 공유기를 마련하고 만것이다.
수많은 업체들의 유/무선 공유기들을 보다, 그나마 악플이 없는 모델을 찾았고,
그 중에, 외산업체를 제하고 나니... 그나마 나아 보인것은 네타미의 유/무선 공유기.
모델은 한종류 밖에 없지만, 기존의 네타미 랜카드와 인터넷 공유기를 보고 네타미라는
브랜드에 신뢰를 담뿍주었던 나에게 더더욱 가까이 접어든 모델이다.
솔찬히 끌려 난 용산으로 뛰어 갔고, 그리고 구입해 버렸다.
(원래는 이도 다른 친구를 통해 구입하려다, 그냥 직접 움직였다)
생김새는 기존 유선 공유기와 동일하게 생겼지만, 끝자락에 무선랜용 안테나가 달린게 그 차이랄까?
송수신 거리가 짧다는 이야기를 들어 적잖이 걱정했는데..화장실까지 40%까지는 버티는거 보니,
나쁘진 않았다. 물론 마냐들이나, 통신 품질에 목숨건 친구들이야, 지랄들은 하겠지만,
40%면 최소한 글을 읽다가 끊긴다든가 그런문제는 없지 않은가?
연구실에서도 고작 10% 내외의 신호에서도 할짓은 다 해보았기 때문에, 나에겐 만족.
(안그래도 화장실에서 글쓰고 있다.)
이젠 동생방과 3층에서도 한번 껄쩍 지근하게 손대 봐야 겠다. 혹여나 천장에 부착하면,
신호가 더 좋지 않을까라는 생각도 든다.
728x90
어느새... 2004년이 되버렸다.
어느 서버는 날짜를 제대로 맞추지 못해, 2004이 먼저 되버린 것도 있었지만,
사실 이제야 2004년이되었다.
사실 어제, 아니군 그제(12월30일)까지는 신년이 다가온다는 사실을 그다지 느끼고 있지 않았다.
그냥...날짜가 가는 구나 정도였다.
하지만, 벌써 한획이 그어지는 줄은 정말이지 몰랐다.
막상 오늘 달력을 모조리 접고 나니.. 2004년이 되었음을 느끼고,
지하철 마다 신년 종 울리는 종각역에 대한 공지를 보고서 느끼게 되었다.
벌써 신년이구나... 라고....

지난해는 정말이지 너무도 우울하게 보냈다. 내 성격과 전혀 반대되는 일만 저지르고 다닌듯 싶다.
조금은 더 밝고 제멋대로 이며 이기적이면서 늘 앞장서는 적극적인 모습인 원래의
내모습을 찾아보도록 노력해야 겠다.
728x90
재만, 영호, 정희, 덕일, 선주 이렇게 해서 총 6인이 명동 밀리오레에서 만났다.
뭐, 술 한잔 하자고 생각은 했지만, 만나고 보니, 술보다도 밥이 더 궁했다고나 할까?
정희 결혼식 후에 만나는거니 2달만인가?
뭐 어쨌던 간만에 만난 얼굴은 크게 달라져 보이지는 않았다.
늘 한결 같은 모습들이여서 좋기만 했다.
(하지만, 덕일의 모습은 너무도 첫인상이 강해 여전히 낯설지만 ^^)
아, 그리고 선주. 너무도 간만에 나와, (2년 만?) 너무도 반가웠다.
중국집에서 탕수육과 깐풍기를 먹고 난 볶음밥, 다른 애들은 사천짜장과 짬뽕을 먹었다.
정희의 결혼 이야기와 그 밖에 지금까지 걸어온 이야기 보고 정도...
99년 이래에 계속 만나온거니 역사상으로는 벌써 5년째가 되는거 아닌지 모르겠다.

아.. 이렇게 아저씨 아줌마들이 되었으니(아... 선주는 아직도 미혼이니까 아가씨가 되나?)
이제 결혼들 마저 하고 애들 하나씩 끼고 오는건 아닌지 모르것다.
하하하~
728x90
WM_ 으로 시작하는 윈도우 메시지를 만들었을때, MFC에서 제공하는 On_ 으로 처리되는 함수들이
자동으로 생성되는 것 보면 편해보이기 까지한다.
이를 수동적으로 생성하는 방법을 알아보자.

WM_USERDEFINE 이라는 메시지가 있다고 하자.
사용자가 만든 메시지여서, 실제 MFC Wizard로 만들수 없다.
게다가, MessageMap 매크로 안에 넣으려해도, afxmsg OnUserDefine 을 만들려고 하면
그 함수와 Message와 연결 할 방법이 없다.
이를 처리하려면, MessageMap 안에서 함수와 Message를 연결해주는 무언가를 만들어 줘야 한다.
그리고, 각 함수를 살펴보면, 윈도우 메시지를 그냥 받는 것이 아니고 각 유형 별로 파라미터로 받는 경우가 있다.
예를 들자면 OnLButtonDown(UINT nFlags, CPoint point) 같은 것은 nFlags 나 point를 받는다.
하지만, 현재는 파라미터가 없는 버젼만을 생각하여 만들도록 하자.

WM_USERDEFINE을 가지고 한번 만들어 보자.

.H 을 열어 보면,
   //{{AFX_MSG(CUserDefine)
   //}}AFX_MSG
   DECLARE_MESSAGE_MAP()
이라는 부분이 있다.
실제로 "//{{AFX_MSG(CUserDefine)",  "//}}AFX_MSG" 이 두 문장은 단순히 클래스 위자드에서 사용하기 위해
만들어진 내용이므로 삭제해도 무방하다. 단 클래스 위자드에 의존하는 분들은 이 부분을 지우게 되면 새로운 메시지
처리를 추가/삭제/수정이 절대 불가능하니, 조심한다.
일단, "//}}AFX_MSG" 아래에다 자신이 만든 메시지 핸들러 함수를 선언한다.
afx_msg 를 맨 앞에 붙이고 그 뒤에 함수 선언을 한다. On 이라는 이름이 붙은 형태의 함수를 만든다.
   afx_msg OnUserDefine()
그러면 .H에서 다 기록한 것이다.

.CPP를 열어보면,
   BEGIN_MESSAGE_MAP(CUserDefine,CWnd )
           //{{AFX_MSG_MAP(CUserDefine)
           ON_WM_PAINT()        
           //}}AFX_MSG_MAP
   END_MESSAGE_MAP()
가 보일 것이다. 이 안이 바로 Message와 함수를 연결해주는 부분이다. 그러나 그 안에 보면 단순히
ON_WM_PAINT()와 같은 단순 무식한 한줄의 함수만 보인다. 그렇다면 이를 어떻게 해야 하는 것인가?
간단하다. ON_WM..  시리즈를 직접 만드는 것이다.
   #define ON_WM_USERDEFINE()
   { WM_USERDEFINE, 0, 0, 0, AfxSig_vv,
   (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnUserDefine },
위의 세줄을 넣어준다.  이 부분이 바로 ON_WM 시리즈의 실체가 된다.
실제 사용되는 WM_ 메시지를 넣고 맨 뒤의 On.. 시리즈 함수를 대체해서 만들어 주면 된다.
위의 예제는 WM_USERDEFINE을 기준으로 넣었다. 그러면 BEGIN_... 안에다 자신이 만든것을 넣어 주면 된다.
   BEGIN_MESSAGE_MAP(CUserDefine,CWnd )
           //{{AFX_MSG_MAP(CUserDefine)
           ON_WM_PAINT()        
           //}}AFX_MSG_MAP
                ON_WM_USERDEFINE()
   END_MESSAGE_MAP()
이렇게 하면 모든것이 해결!

파라미터가 있다면 그 뒤에 다시 생각해보도록한다.
참고로 AfxSig_xxx 라는 값을 이용하면 다양한 형태로 구성할 수 있는 데, 이는 정해진 내용만 적용가능하다.
        AfxSig_bD,      // BOOL (CDC*)
        AfxSig_bb,      // BOOL (BOOL)
        AfxSig_bWww,    // BOOL (CWnd*, UINT, UINT)
        AfxSig_hDWw,    // HBRUSH (CDC*, CWnd*, UINT)
        AfxSig_hDw,     // HBRUSH (CDC*, UINT)
        AfxSig_iwWw,    // int (UINT, CWnd*, UINT)
        AfxSig_iww,     // int (UINT, UINT)
        AfxSig_iWww,    // int (CWnd*, UINT, UINT)
        AfxSig_is,      // int (LPTSTR)
        AfxSig_lwl,     // LRESULT (WPARAM, LPARAM)
        AfxSig_lwwM,    // LRESULT (UINT, UINT, CMenu*)
        AfxSig_vv,      // void (void)

        AfxSig_vw,      // void (UINT)
        AfxSig_vww,     // void (UINT, UINT)
        AfxSig_vvii,    // void (int, int) // wParam is ignored
        AfxSig_vwww,    // void (UINT, UINT, UINT)
        AfxSig_vwii,    // void (UINT, int, int)
        AfxSig_vwl,     // void (UINT, LPARAM)
        AfxSig_vbWW,    // void (BOOL, CWnd*, CWnd*)
        AfxSig_vD,      // void (CDC*)
        AfxSig_vM,      // void (CMenu*)
        AfxSig_vMwb,    // void (CMenu*, UINT, BOOL)

        AfxSig_vW,      // void (CWnd*)
        AfxSig_vWww,    // void (CWnd*, UINT, UINT)
        AfxSig_vWp,     // void (CWnd*, CPoint)
        AfxSig_vWh,     // void (CWnd*, HANDLE)
        AfxSig_vwW,     // void (UINT, CWnd*)
        AfxSig_vwWb,    // void (UINT, CWnd*, BOOL)
        AfxSig_vwwW,    // void (UINT, UINT, CWnd*)
        AfxSig_vwwx,    // void (UINT, UINT)
        AfxSig_vs,      // void (LPTSTR)
        AfxSig_vOWNER,  // void (int, LPTSTR), force return TRUE
        AfxSig_iis,     // int (int, LPTSTR)
        AfxSig_wp,      // UINT (CPoint)
        AfxSig_wv,      // UINT (void)
        AfxSig_vPOS,    // void (WINDOWPOS*)
        AfxSig_vCALC,   // void (BOOL, NCCALCSIZE_PARAMS*)
        AfxSig_vNMHDRpl,    // void (NMHDR*, LRESULT*)
        AfxSig_bNMHDRpl,    // BOOL (NMHDR*, LRESULT*)
        AfxSig_vwNMHDRpl,   // void (UINT, NMHDR*, LRESULT*)
        AfxSig_bwNMHDRpl,   // BOOL (UINT, NMHDR*, LRESULT*)
        AfxSig_bHELPINFO,   // BOOL (HELPINFO*)
        AfxSig_vwSIZING,    // void (UINT, LPRECT) -- return TRUE

        // signatures specific to CCmdTarget
        AfxSig_cmdui,   // void (CCmdUI*)
        AfxSig_cmduiw,  // void (CCmdUI*, UINT)
        AfxSig_vpv,     // void (void*)
        AfxSig_bpv,     // BOOL (void*)

        // Other aliases (based on implementation)
        AfxSig_vwwh,                // void (UINT, UINT, HANDLE)
        AfxSig_vwp,                 // void (UINT, CPoint)
        AfxSig_bw = AfxSig_bb,      // BOOL (UINT)
        AfxSig_bh = AfxSig_bb,      // BOOL (HANDLE)
        AfxSig_iw = AfxSig_bb,      // int (UINT)
        AfxSig_ww = AfxSig_bb,      // UINT (UINT)
        AfxSig_bv = AfxSig_wv,      // BOOL (void)
        AfxSig_hv = AfxSig_wv,      // HANDLE (void)
        AfxSig_vb = AfxSig_vw,      // void (BOOL)
        AfxSig_vbh = AfxSig_vww,    // void (BOOL, HANDLE)
        AfxSig_vbw = AfxSig_vww,    // void (BOOL, UINT)
        AfxSig_vhh = AfxSig_vww,    // void (HANDLE, HANDLE)
        AfxSig_vh = AfxSig_vw,      // void (HANDLE)
        AfxSig_viSS = AfxSig_vwl,   // void (int, STYLESTRUCT*)
        AfxSig_bwl = AfxSig_lwl,
        AfxSig_vwMOVING = AfxSig_vwSIZING,  // void (UINT, LPRECT) -- return TRUE

        AfxSig_vW2,                 // void (CWnd*) (CWnd* comes from lParam)
        AfxSig_bWCDS,               // BOOL (CWnd*, COPYDATASTRUCT*)
        AfxSig_bwsp,                // BOOL (UINT, short, CPoint)
위에서 보듯이 딱 정해진 기능만 하므로... 그 외의 것이라면 다시 생각해보도록 한다.

PS. 혹여 AfxSig_lwl 를 사용하면 WPARAM, LPARAM 이니까... 다양하게 이용할 수 있을지도 모르겠다.

728x90

+ Recent posts

728x90