카스 레몬은 뭐랄까... 오래전에 하이주가 있었다. 맥주보단 차라리 하이주에 가까운 것 같다. 맥주 맛이 레몬 맛 보다 강하긴 하지만 알콜이 너무 적어서 맥주 같지 않다. 한번에 캔 하나만 따고 마려다가 결국 남은 하나를 따게 만든 술이다. 맛 자체에 큰 불만은 없지만 알콜 도수가 낮아서 그런지 술같은 느낌이 너무 안 난다.
카스 레몬은 뭐랄까... 오래전에 하이주가 있었다. 맥주보단 차라리 하이주에 가까운 것 같다. 맥주 맛이 레몬 맛 보다 강하긴 하지만 알콜이 너무 적어서 맥주 같지 않다. 한번에 캔 하나만 따고 마려다가 결국 남은 하나를 따게 만든 술이다. 맛 자체에 큰 불만은 없지만 알콜 도수가 낮아서 그런지 술같은 느낌이 너무 안 난다.
역시 같은 회사에서 하이트보다 고급 맥주로 나온 만큼 하이트보단 맛이 깔끔했다. 입에 닿는 부드러운 느낌도 약간이나마 좋고, 끝맛이 훨씬 좋았다. 많이 마시고 취하자는 스타일이면 가격을 따지겠지만, 캔맥주 하나로도 살짝 기분이 변하는 내겐 하이트보다 훨씬 뛰어난 맥주였다.
황연주
황연주 선수는 먼저 외모 때문에 눈에 띄었다. 국가대표에 선발된 프로 선수를 몰라보고 외모때문에 주시하게 된 것은 조금 미안하다. 경기를 조금 보다보니 크지 않은 키지만 공격력이 상당했다. 특히 백어택이 강력했고, 분위기 타서 정신없이 몰아치는 능력이 좋았다.
흥국생명 핑크 스파이더스 황연주 | 흥국생명 핑크 스파이더스 황연주 |
김연경
김연경 선수는 뭔가 압도적인 것을 가지고 있는 느낌이 강하게 들었다. 처음 본 여자 배구 경기였지만, '아... 저 선수가 국내 최고 선수겠구나'라는 생각을 해버렸다. 그만큼 그녀는 급이 다른 실력을 보여주고 있었다. 여자 배구 판에 잘생긴 남자 프로 선수가 들어와서 경기를 하면 이런 느낌일까? 시합 중 보여주는 엄청난 스파이크, 공격 성공 후의 파이팅을 보면 아무래도 미소년이라는 생각이 든다. 남성팬보단 여성팬이 많을 듯한 느낌이다.
흥국생명 핑크 스파이더스 김연경 | 흥국생명 핑크 스파이더스 김연경 |
프로 선수 소개에 외모 얘기가 너무 많이 나와버렸다. 아무래도 잘 모르는 선수들이다보니 다른 소개할 것이 없었다. 프로 배구 결승 1차전이 조금 전 핑크 스파이더스의 승리로 끝났다. 두 선수 모두 좋은 활약을 보여 둘 중 한 선수가 경기 MVP로 뽑힐 것 같다. 프로 배구가 끝나면 또 올림픽이 있다. 올림픽에서도 두 선수 모두 좋은 모습 보여주길 기대한다.
(사진은 www.dcinside.com의 배구 갤러리 샤인전민정님의 사진을 퍼왔습니다. 출처를 밝히면 동의 없이 사용해도 된다는 글을 보아서 바로 사용했습니다. 좋은 사진 찍어주신 샤인전민정님께 감사드립니다.)
평소에 가사나 악기 소리에 관심을 갖지 않고 보컬의 음만을 듣는데, 그냥 한번 가사와 악기 소리에 귀를 귀울였다. 음악과 가사 내용이 참 절묘하게 맞아들어간 노래이다. 낯선 곳에 내려서, 약속 장소를 향해 걸어가면서 이것저것 머리속에서 떠오르는 생각, 각오. 그리고 어느 카페에 들어가 앉아 마주친 순간 무너지는 각오. 이 모든게 머리속에 그려진다. 수십번, 수백번 들으면서도 이런 것을 모르고 들은 내가 바보다. 이렇게 멋진 가사가 또 있을 지 모르겠다. 가사뿐만 아니라 음악적으로도 물론 좋다. 단지, 음악적인 것에는 아는 것이 너무 없어서 그냥 '좋다'라고밖에 쓸 수 없는 것이 아쉽다.
맑은 봄날. 익숙하지 않은, 한 낮의 도심. 버스에서 내려 커피 전문 체인점을 향해 걸어간다. 이런 저런 생각들이 들지만, 마음을 다잡는다. 카페 밖에서 보니 상대는 이미 앉아 기다리고 있다. 눈시울이 붉어진다. 일단 들어가 마주 앉는다. 눈앞이 캄캄해진다....
이별하러 가는 길
이 근처 어디쯤인데..
그대가 가르쳐준 이별하자는곳..
조금도 겁내지 않겠어..울지도 않겠어..
이별한다는게 뭐 대단한거야..
가슴 아프다고.. 죽진 않을거야..
시간이 해결 한댔어..
수많은 헤어졌던 모든사람들..
아무일 없었던 것처럼 잘 살아가는데
나라고 뭐 그리 다를게 있겠어..
그래 잘 될꺼야.. 그대가 보여요..
한걸음 또 한걸음..그대 곁으로..
다가갈수록 눈물이..
첫번째 다짐부터가..
이렇게 무너지면 안되는 건데..
그대와 마주앉은 순간 또 깨닫게 됐어..
그대가 없다면 죽을지도 몰라
그럴지도 몰라.. 시간따윈 소용 없어
내사랑은 다를꺼야..그대 나를 떠나지마
내 사랑은 다를꺼야 내 곁에서 (내곁에서)떠나지마
너무나도..무서워요..그대 떠난 세상앞에
난 살고 싶어요
긴 말보다 몇줄의 코드가 좋을 것 같다.
간단한 인터페이스와 구현 클래스를 예로 들어보겠다.
class IAbc // 단순한 인터페이스 클래스
{
public:
virtual void Print() = 0; // 단순한 인터페이스 하나 선언
};
class CAbc : public IAbc
{
IAbc* m_pNext;
public:
CAbc() {cout << "CAbc Constructor" << endl;} // 생성자가 불리는지 확인
~CAbc() {cout << "CAbc Destructor" << endl;} // 소멸자가 불리는지 확인
void Print() {cout << "CAbc" << endl;} // IAbc의 인터페이스 구현
};
이와 같이 설계를 했다면 아래 코드와 같이 사용할 것이다.
(편의상 생성 패턴은 생략한다.)
IAbc *pAbc;
pAbc = new CAbc;
pAbc->Print();
delete pAbc;
첫줄은 변수 선언이므로 아무 변화 없다.
두번째 줄에서 CAbc의 객체를 실제 만들었으므로 CAbc의 객체가 생성되며, 따라서 CAbc의 생성자가 호출된다.
세번째 줄에서 pAbc는 IAbc의 변수이나 virtual로 선언된 멤버 함수를 호출하기 때문에, 실제 객체인 CAbc에서 구현한 Print가 호출된다.
네번째 줄이 문제이다. pAbc의 실제 객체가 CAbc란 정보가 없기 때문에 pAbc는 C++ 컴파일러 내부에서 자동으로 생성한 기본 소멸자인 ~IAbc()만 호출하고 종료한다. 만약 CAbc의 소멸자에서 메모리 해제 등의 일을 구현한 경우 이것은 무시된다. 따라서 인터페이스 클래스의 경우에도 기본 생성자, 소멸자는 반드시 정의하여야 한다.
올바른 IAbc의 코드는 아래와 같다.
class IAbc // 단순한 인터페이스 클래스
{
public:
IAbc() {};
virtual ~IAbc() {};
virtual void Print() = 0; // 단순한 인터페이스 하나 선언
};
생성자의 경우는, 무엇을 만들지를 정한 후에 객체를 생성하므로 당연히 필요한 생성자가 불리게 된다. 그러나 소멸자의 경우는 어느 포인터를 사용하여 소멸자를 호출할 지 알 수 없으므로 위와 같이 가상함수로 소멸자를 정의하여야 한다. 물론 ~IAbc의 가상함수를 정의했다고 하여, CAbc에서도 ~IAbc()를 오버라이드할 필요는 없다. CAbc에서는 ~CAbc()를 구현하면 알아서 IAbc의 소멸자가 호출되는 경우 CAbc의 소멸자가 불리게 된다.
이때 컨트롤의
m_cScreen.ModifyStyle(0, WS_CLIPCHILDREN);
를 호출하면 재생시 화면 갱신이 정상적으로 일어난다. 다만 WM_PAINT 이벤트를 처리하기 위해서는 다른 방법이 필요한 듯 하다.
내 속 마음을 아는 사람은 아무도 없다. 힘들어도, 술을 마셔도, 마시다 취해도 속 마음이 밖으로 나가는 일이 없다. 긍정적인 마음은 그다지 숨기진 않는다. 그러나 부정적인 것들을 표현해 본 적은 거의 없는 것 같다. 남들보다 늦게 크는 만큼 더 확실히 클거라 기대해 본다.


