북유럽 신화(닐 게이먼, 2017)




   0. 마블 코믹스의 영화가 세계적으로 히트를하면서 '어벤저스' 등에 나온 '토르', '로키'는 이제 매우 유명한 캐릭터가 되었다. 그리고 판타지 소설의 고전이라 불리는 '반지의 제왕'이 있고, 최근에는 '왕좌의 게임'이 있다. 이 두 판타지 소설들은 그 설정이 많은 부분 북유럽 신화에 나오는 내용에 바탕을 두고 있고, '토르'와 '로키'는 아예 북유럽 신화의 주인공들이다.

   1. 시초의 거인 이미르에서 시작하여 오딘, 그의 아들 토르와 거인족 라우페이의 아들 로키가 겪는 일들이 북유럽 신화 이야기의 큰 축을 이룬다. 그리고 마지막장의 라그나로크에서 신들의 마지막 싸움과 멸망을 그린다.
   북유럽신화는 그리스 신화와 다르게 상당히 내용이 거칠고 어둡다. 저술 과정에서 아마도 순화되었겠으나, 꽤나 잔혹한 장면이 많고, 별 것아닌 동기로 잔혹하게 상대방을 살해하는 듯한 내용도 꽤 많다. 아마도 이것은 이야기가 전승되어오는 북유럽의 고대 바이킹들의 성정이 반영된 것이 아닌가 한다. 전승되어오는 국가 또는 장소의 역사와 신화의 분위기를 엮어본다면 꽤 재미있는 주제가 될 듯하다. 실제 그리스 신화의 신들은 매우 부유하고 사치스럽다.

   2. 닐게이먼은 알고보니 꽤나 유명한 작가였다. 그래픽노블 작가이고, 그 외 소설로 상도 많이 탔다. 덕분에 책의 내용들이 술술 읽히며 이야기가 매우 흥미롭다. 번역도 나름 괜찮은 편이어서 읽는데 부데끼지 않는다. 기분 전환하기 참 좋은 책인 듯 싶다. 

잡설 3 - 오늘의 운세

   2003년이었던 것 같다. 대학원 진학 후 좋지 않은 일들이 있었고, 대인관계가 힘들어 하루하루가 고통이었다. 답도 잘 안나오고 하니 인터넷으로 운세도 찾아보고 그랬다. 그러다 전화로 하는 유료 운세상담을 5천원 주고 해보기도 했었다. 그 때 말로는 6월인가 지나면 나아질 것이라고 했는데, 사실 별 일이 일어나지도 않았고 그냥 그런 날들이 계속되고 있었다.
    2014년도 비슷했다. 처음 트레이딩이라는 것을 시작하고 잘못된 모형으로 손실을 입었을 때, 여기저기서 들어오는 압박이 너무 힘들기도 했고, 처음 겪는 일에 괴로움의 강도가 너무 강했었다. 그 때도 여기저기 오늘의 운세나 보며 무언가 돌파구가 생기길 바랬었다. 하지만 역시나 맞는 것은 별로 없었고, 그저 시간이 지나면서 어떻게 어떻게 흘러갔다.
   그런 일들을 겪으며 그나마 배운 것은 그래도 시간이 지나면, 물론 허투루 시간을 보내지 않는다는 기본 가정을 지킨다면, 일이 어떻게든 해결은 난다는 것이었다. 그 것이 유야무야 되어 잊혀지든, 아니면 해결 방안이 생기든 말이다.

   요즘 내 모습을 보면 저 때와 비교해 그다지 나아진 것 같지는 않다. 시간이 지나더라도 어떤 일들이 고통스러운 것은 그대로이고, 그 때마다 마음이 급해져 요행을 바라는 것도 말이다. 요즘도 혹시나 하는 기대로 오늘의 운세를 뒤적거리기도 한다. 지금처럼 삶을 잘 유지하며 버티면 다 끝이 보이겠지만, 그럼에도 마음이 급해지는 이유는 무엇일까?

옥자(2017, 봉준호)




   0. 무려 500억 가량의 제작비를 들여 만든 넷플릭스 오리지널 무비다. 스토리 설명이야 워낙 많은 곳에서 하고있으니, 간단히 소감만 적어보려한다.

   1. 옥자에서 좋았던 점은, 일단 그래픽과 옥자 캐릭터가 좋다. 서글서글한 눈매에 하마인 듯하고, 다시 보면 매너티 같기도 한 이 슈퍼돼지는, 표정만 봐도 편안하고 기분이 좋아진다. 거기에 안서현양이 분한 미자와 함께 꽁냥거리는 장면은 흐뭇하게 바라볼 수 있다.
   그리고 이 영화의 메시지가 좋다. 개인적으로 채식주의자도 아니고 가히 고기테리안에 가까운 나지만, 한 번쯤 대량생산 품목처럼 취급되는 동물들에 대해 생각해볼만한 기회를 준다. 결론 자체도 의외인데, 한 마디로 설명하자면, 판타지같은 영화에 너무나도 현실적인 결말이다. 물론 이 결말때문에 호불호가 갈리는 듯한 인상이 있다.
   마지막으로 배우들의 연기가 좋다. 어느 하나 발연기가 없어 마음에 들었다.

   2. 그런데, 이 영화가 몇가지 애매한 점이 있다. 일단 캐릭터들이 색이 조금 불 분명하다. 전작 '괴물', '마더' 등에서는 캐릭터가 꽤나 색이 강하고, 그럼에도 영화속에서 각과 부드러움을 적절히 버무렸는데, '옥자'에선 그런 것들이 조금 약했다. 그리고 결말이 어떤 영화적 카타르시스를 기대하기는 무리이다보니, 호불호가 갈릴 수밖에 없다. 하지만 영화 자체의 내용을 놓고보면 결말로 가는 과정이 어거지거나, 난삽하거나하진 않아 보인다.  개인적으로 결말로만 보면 '마더'가 압권이었다. 그 뽕 맞은 듯한 엔딩은...

   3. 봉감독의 헐리웃 데뷔작인 '설국열차'는 처음엔 뭔가 무거웠지만, 그래도 두 세번 보더라도 재미가 반감되는 느낌은 없었다. 그래서 국내에선 호불호가 갈렸지만, '설국열차'를 꽤 좋아한다. 이번 '옥자'는 어떨지 모르겠다. '설국열차'에 비하면 힘이 많이 빠졌지만, 메시지는 더욱 직접적이다. 캐릭터는 조금 약해도 헐리웃 배우들의 명연기를 보는 맛은 있다. 결론적으로, 나는 재미있게 잘 봤다.

Uncopyable class와 clone 함수

   C++의 경우 class를 생성하면 기본적으로 default constructor와 copy constructor, 대입 연산자가 기본으로 만들어진다. 이 세가지는 프로그래머가 작성하지 않더라도 컴파일러가 알아서 마치 사람이라면 밥 먹고 화장실 가듯이 자연스럽게 만들어 버린다.

   C++의 가장 어려운 점이자, OOP(Object Oriented Programming)이라면 어느 언어든 가지고 있는 문제는 객채의 state 관리이다. Class도 하나의 type으로 보므로 각종 사칙 연산의 overloading이 가능한데다, 구조 안에 다양한 class의 객체를 state variable로 가질 수 있어 까딱 잘못하단 지옥문이 열린다. 특히 멀티 쓰레드 환경에선 더 심하다.(덕분에 Functional Programming 추종자들에게 대차게 까이지만, FP도 VM은 C++로 만든게 많다. -_-)

   이런 고통을 조금이나마 완화할 수 있는 방법은, class 자체의 복사를 막아버리는 것이다.  물론 다 막으라는 것이 아니라, 한 클래스의 각각의 객체가 서로 독립적인 상태를 가져야 한다든가, copy는 허용하고 싶은데 내용물에 pointer가 있다던가 하는 경우에 고려할만하다. 특히 후자의 pointer를 내용물로 가졌을 때는 앞에 소개할 방법을 심각하게 고려해봐야 한다.

   다음과 같은 코드를 실행해보자.


class B 
{
public:
    B(int i)
    {
        k = new int;
        (*k) = i;
    }

    int val()
    {
        return *k;
    }

    int* valp()
    {
        return k;
    }
private:
    int *k;

};

...
B b(1);
B b3 = b;

std::cout  << "b : "  << b.valp()  << std::endl;
std::cout  << "b3 : " << b3.valp()   << std::endl; 

   이 코드를 실행하면 다음과 같은 결과를 얻을 수 있다.


 b : 0047AD50
b3 : 0047AD50

   즉, 같은 위치의 메모리 영역을 가리키게 되고, 한 객체에서 메모리 영역 내의 값을 바꾸면 다른 객채까지 영향을 준다.


   이런 문제를 해결하기 위해서는 일단 class의 기본적인 복사를 막는다. 다음과 같이 Uncopyable이라는 클래스를 선언하고 copy constructor와 대입연산자를 private으로 선언한다.


class Uncopyable
{
public:
    Uncopyable() {}
    ~Uncopyable() {}

private:
    Uncopyable(const Uncopyable&);
    Uncopyable& operator=(const Uncopyable&);
};



    그리고 다음 처럼 위의 클래스를 상속한 클래스를 만들어주자.
 class A : private Uncopyable
{
public:
    A(int i)
    {
        k = i;
    }

    int val() 
    {
        return k;
    }
private:
    int k;

};

A a(1);
A a2 = a; 


    위의 코드를 컴파일하면 Uncopyable 클래스에 대한 access violation이 일어나면서 컴파일이 되지 않는다. 그리고 베이스 클래스에 가상 함수로 clone이라는 것을 지정하여 하위 클래스가 clone을 구현하도록 하면 내가 원하는 방식으로 객체 복사를 할 수 있다.
 
class Base 
{
public:
   ...
   virtual Base* clone() = 0;
}


   개인적으로도 이 방식을 잘 활용하는데, 아직까지는 꽤 성공적인 듯 하다.

잡설 2 - 고개 숙임

   90년대 월드와이드웹이 개발되어 퍼지고, 네트워크를 컴퓨터에 연결하면서 사람들은 새로운 세상을 경험했다. 어디서든 컴퓨터가 있는 곳이라면 누구나 정보를 열람할 수 있고, 각종 채팅 서비스들로 일면식도 없는 사람과 대화를 나누었다. 그리고 그와 함께 사람들이 모이는 커뮤니티라는 것이 생기고, 그 안에서 각자의 모습을 분출하며, 누군가는 그 안에서 스타가 되기도 하였다.

   2008년 경 아이폰의 출시는 이런 인터넷 사용 모습을 완전히 바꾸어놓았다. 물론 아이폰 이전에도 인터넷이 되는 전화기는 이미 많이 있었고, 스마트폰이라는 개념도 사실 없던 것이 아니었다. 하지만 누구나 앱(app)을 개발할 수 있고, 다양한 기능을 앱을 통해 사용할 수 있다는 개념을 대중화시킨 것은 분명 아이폰이다.

   이렇게 손으로 들고다닐 수 있는 전화기는 통신망을 통해 언제 어디서나 인터넷에 접속할 수 있었고,  이를 바탕으로 다양한 서비스가 폭발적으로 성장했다. 그러다보니 사람들은 언제 어디서나 다른 사람들의 소식을 들을 수 있었고, 자신의 소식과 생각을 공유할 수 있었다.

   출퇴근 시간에 전철이나 버스에서 고성능 스마트폰으로 여러 소식에 심취해있는 모습은 이미 오래된 풍경이다. 그리고 길을 가다 무슨 일이 생기면 그 것을 공유하기 위해 스마트폰을 들이대는 모습도  현 시대 인류의 스테레오타입이 돼버린지 오래다.  물론 나도 예외는 아니리라.
 
   이런 고개 숙인 인간상은 비단 교통수단 안에서 혼자 있을 때만 한정되진 않는 것 같다. 식당이나 공원, 또는 여러 곳에서 여러 사람이 모여있더라도 서로 이야기를 나누기 보단 고개를 숙이고 스마트폰을 본다. 분명 만나고 싶어서 만난 사람들일텐데, 옆에 있는 사람보다 더 멀리있는 누군가의 소식이 더 궁금한가보다.
   그리고 길을 가다보면 무엇이 그리 궁금한지 스마트폰에 눈을 고정하고 위태위태하게 걷는 사람들도 많이 있다. 물론 그들의 사정이 있겠지만, 길을 가는 사람들을 너무 방해하는 것이 아닌가 하는 생각도 든다.

   어디서나 시간과 공간에 구애받지 않고 소식을 얻을 수 있는 자유는 얻었다. 하지만 그 것이 과연 진정한 연결을 제공하는지는 다시 생각해볼 문제인 것 같다.

잡설 1


   지금 사는 행신에서 직장이 있는 을지로까지 출퇴근 하는데, 대략 한시간이 덜 걸린다. 행신역에서 전철을 타고 갈 수 있고, 집 앞 버스 정류소에서 버스를 타고 신촌으로 나올 수도 있다. 전철을 타면 신촌/홍대입구까지 전철 타는 시간만 20분 남짓이면 되지만, 버스는 막히면 40분을 넘기기 일쑤다.
   그럼에도 종종 버스를 타고 출근을 하는 이유는 나름 상반된 풍경을 즐길 수 있어서다.

   베드타운 성격이 강할지언정 나름 도시의 모습을 잘 갖춘 행신을 빠져나오면 쭉 뻗은 도로 양 옆으로 간판이 바랜 상점들이 꽤 즐비하게 서있다. 하지만, 그 뒤로는 멀리 북한산이 보이고, 넓은 초지가 펼쳐져있어 마치 한적한 시골에 와 있는 느낌이 든다. 그렇게 한 15분여를 달리면 서울의 경계에 있는 수색에 다다른다.
   수색과 가좌는 2010년도 넘어서나 재개발이 이루어진 곳이라 참 묘한 풍경을 하고 있다. 도로가에는 딱 봐도 정말 오래된 상점들과 상가들이 있지만, 바로 뒤 블럭을 보거나 조금만 그 곳을 지나가면 새로지은 거대한 아파트 단지가 눈에 들어온다. 또 눈을 오른쪽으로 돌리면 '디지털미디어시티'라는 거창한 이름을 가진 거대한 상업/업무지구가 눈에 들어온다.

   이곳을 지날때마다 과연 이런 개발이 이루어지기 전 이곳의 모습이 어땠을지 궁금해진다. 길가를 따라 들쭉날쭉 지어진 허름한 건물들이 주는 풍경과, 무 자른 듯 딱 떨어지는 각도로 서있는 아파트의 풍경이 너무나도 대조적이기 때문이다.
   아마도 예전엔 그저 사람들이 소소히 모여사는 작은 마을이었겠지. 아니면 이전에도 이미 사람들이 몰려사는 시끄러운 동네였을까. 누군가는 재개발의 수혜를 입었을테고, 누군가는 삶의 터전을 빼앗겼겠지. 이런저런 생각이 든다.

   그리고 이런 대조적 풍경도 지나고 거대도시 속으로 버스는 쑥 빨려들어간다. 대충 시간을 계산해보면 늦지는 않겠구나 안도하며 지하철로 갈아타고 나는 인파속으로 총총히 사라진다.

완벽한 공부법 (2017, 고영성, 신영준)



   0. 이 책은 2017년 초반 발행되어 베스트셀러에 등극하며 나름 센세이션을 일으켰다.

   1. 이런 류의 자기 계발 서적은 어떤 것은 너무 자기 위주의 내용을 진리인양 써서 거부감을 일으키기도 하고 현실과 어울리지 않는 경우도 많이 있다. 이 책은 조금 다른 것이 저자들이 이것 저것 열심히 찾아보고, 공부하고, 짜집고 쓴 책이기 때문에 꽤나 도움되는 내용이 많다. 거기에 저자들의 경험이 녹아들어 한 번쯤은 읽어보는 것이 도움될 듯 하다.

   2. 완벽한 공부법의 내용을 요약하면 다음과 같은 키워드로 정리할 수 있다. 기억을 더듬기 위해 가끔 들춰보면 앞으로도 도움이 많이 될 듯하다.
  1. 자기 자신을 믿고 작은 성공부터
  2. 자기 자신을 아는 메타인지
  3. 기억 잘하기(공부는 어렵게)
    1. 시험효과
    2. 인출효과(시험,안성,토론,요약,글쓰기,발표 등)
    3. 분산연습 - 몰아치는 것이 아닌 시기를 나눠서
    4. 교차 - 두 가지 이상을 번갈아가며
    5. 그 외 - 자기참조, 맥락, 심상활용, 조직화, 첫 낱자 조합
  4.    감정
    1. 부정적 감정보다 긍정적 감정이 학습효과를 높임
    2. 부정적이거나 걱정되는 감정을 표현하거나 긍정적 감정으로 바꿔주면 효율이 높아짐
  5. 사회성
    1. 외로운 사람은 학습 능력 저하
    2. 사람과의 관계를 잘 유지해야 함
  6. 환경
    1. 습관은 의지력이 아닌 알람으로 고침
    2. 스스로 집중이 잘 되는 환경 필요
    3. 스마트폰 쉣
  7. 창의성
    1. 있던 아이디어들의 새로운 조합
    2. 그래서 다양한 경험 필요(취미, 여행, 독서 등)
  8. 독서
    1. 다양한 경험 필요
    2. 독서를 많이 해라
    3. 다독 후 정독으로

 사족) 이 전에 '레버리지'라는 책을 봤는데, 딱 내가 싫어하는 스타일이 자기 계발서다. 건진거는 인생에 목표를 가지고 살아라 정도...

인생논어 - 1

  0. 조형권님이 쓴 <<인생논어>> 를 읽고 필사한다는 생각으로 구문들을 옮겨 적으려 한다.  1. 나만의 속도를 유지하라.   子曰, 射不主皮 爲力不同科 古之道也 (자왈, 사부주피 위력부동과 고지도야)  해석: 활을 쏠 때 ...