post list

2014년 1월 18일

[iOS] 그림 그리기

http://www.raywenderlich.com/ko/19716/how-to-make-a-simple-drawing-app-with-uikit

2014년 1월 11일

[Daily] 스타트업과 회의에 대해서

 오늘 제가 참여한 스타트업에서 회의를 했습니다. 회의는 매일마다 이루어지고 이른 아침부터 저녁까지 모두 함께 같은 사무실에 있습니다. 한 2주 동안 함께 했는데 팀에 대해 떠오른 생각이 있습니다.

 회의는 정말 필요할 때만 해야한다는 겁니다. 아니, 적어도 스타트업에서는요. 제가 아직 많은 사람들과 회의는 몇번해보지 않아서 잘 모르겠습니다만 이 점은 확실합니다. 왠지 한번 쯤 모여야 할 것 같은 기분이 든다고 회의를 하는 행동이나 날짜를 정해서 꼭 회의를 해야 한다는 등의 규칙등은 팀의 시간과 비용을 포함한 에너지를 소모하는 결정일 뿐입니다. 왜 그럴까요? 여기에는 몇 가지 이유가 있습니다. 경험에서 우러나오는 글이니 분명 필요하신 분에게 도움이 될꺼라 믿습니다.

 첫 번째로 팀원마다 해야할 일이 있습니다. 보통 스타트업은 많아 봤자 5-6명입니다. 특히 우리팀은 앱을 개발하는 사업을 진행중이기 때문에 개발자, 디자이너, 기획자가 모두 있습니다. 이 때 회의라는 것은 서로가 생각하던 바를 드러내고 조율하기 위해 존재합니다. 기획자가 이러이러한 생각을 이야기 했을 때 개발자나 디자이너는 기획자의 생각을 어느 정도 필터링하고 변환해서 받아들이게 되죠. 사람마다 모두 자라난 환경이 다르고 성별도 다르고 자기가 잘아는 분야도 다릅니다. 그러니 당연히 어느 정도의 생각 차이가 모두들 생기게 됩니다. 이러한 차이를 줄이기 위한 동기화 작업이 바로 현실에서는 '회의'라고 불리는 것입니다. 말 몇마디로 모든 사람이 완벽하게 이해한다면 이 세상은 달라졌을 겁니다.

 그런데 이런 동기화 작업이 너무 많아지다보면 작업 진행이 안됩니다. 작업이 어느 정도 진행되고 나서 동기화하는 시간을 가져야 하는데 작업이 진행되지도 않았는데 계속 동기화를 해봤자 일은 앞으로 나아가질 못합니다. 그럼 제자리 걸음을 하는 것이죠. 적어도 각자 해야할 일을 어느 정도 진행되었을 때 동기화를 해야합니다. 

 두 번째로 회의에서는 리더의 생각이 강하게 주입됩니다. 아무리 '수평화'를 외치면 뭐합니까. 결국 최종 결정은 최고 결정자인 리더가 해야 하는 것입니다. 그런데 회의를 자주 한다고 해봅시다. 또한 디자인을 예로 들어보죠. 회의가 잦아지니 디자이너는 뭔가를 리더에게 보여줘야 합니다. 놀고 있다는 느낌을 주지 않기 위해서죠. 그럼 디자이너는 자신의 설익은 시안을 계속적으로 리더에게 제출하게 됩니다. 그럼 리더는 맘에 들지 않게 되고 점점 디자인에 자신이 참여하게 됩니다. 

 자 여기서 문제가 생깁니다. 디자인 분야는 리더가 잘할까요, 디자이너가 잘할까요. 적어도 경험이라는 것을 잘한다고 못한다의 기준으로 본다면 당연하게도 디자이너가 잘하는 것이라고 할 수 있죠. 그런데 리더가 디자인에 깊숙이 참여하게 되면 디자이너의 입장에서는 자신의 디자인이 아니라 리더의 디자인에 맞추게 됩니다. 수평화를 위해서 함께 한다고는 하지만 결국 리더의 결정에 따라 움직이는 수직화가 발생하게 됩니다. 그럼 결과는 딱 리더의 디자인 실력만큼 나오게 됩니다. 그럼 망하는거죠. 리더는 사람을 선택하는 자리이지, 디자인을 선택하는 자리가 아닙니다. 리더는 각 분야마다 어느 정도의 거리를 둬야합니다. 

 세 번째로 회의는 즐겁지가 않습니다. 이 부분은 리더에 따라 다르긴 하지만 리더의 존재 자체가 이미 솔직한 대회가 되기는 힘든 것이 보통입니다. 리더가 권위나 지위를 모두 내려놓으면 모를까... 보통 그러기 쉽지 않죠. 게다가 자신의 사업이라는 인식이 강하기 때문에 모든 것을 통제하려 하는 리더가 많습니다. 그런 상황에서 회의를 하면 어떨까요.

 다른 사람들은 아이디어를 내고 리더는 자신의 마음에 들지 않으면 버리고 마음에 드는 것만 넣습니다. 이런 분위기에서 사람들이 과연 즐거울까요.. 본래 사람은 솔직해지지 않으면 즐거운 마음이 들질 않습니다. 리더의 존재가 부담스럽고 회의에서는 리더를 만나야하니 사람들은 점점 리더의 입맛에 맞는 아이디어를 냅니다. 그럼 사용자가 아닌 리더의 입장에 맞는 결과물이 나오게 되겠죠. 두번째와 마찬가지입니다. 딱 리더의 생각만큼만 나옵니다.

 결과적으로 리더는 회의라는 것을 정말 필요할 때만 해야합니다. 일이 어느 정도 진척이 되어서 동기화가 필요할 때 혹은 예기치 못한 일이 발생해서 팀원 모두가 이 사실을 알아야하고 대처를 하기위해서죠. 이것도 사실 동기화 부분입니다. 리더는 사람을 뽑는 사람이지 각 분야를 자신의 생각대로 통제해야하는 사람이 아닙니다.. 미래에 혹은 현재의 리더 분들은 이 점을 명심하시고 팀을 이끄시길 바랍니다.










2014년 1월 6일

[Tip] TED 추천 영상 15선

1. 음악: 이타이 탈감 (위대한 지휘자들처럼 지휘하기)


2. 교육: 켄 로빈슨 (학교가 창의력을 죽인다)


3. 바이오: Anthony Atala (인간의 신장을 프린팅한다)


4. 창의: 다니엘 핑크 (동기부여의 놀라운 과학)


5. 리더쉽: Simon Sinek (How great leaders inspire action)


6. 사회공헌:멜린다 게이츠 (What nonprofits can learn from Coca-Cola)


7. 마케팅: Malcolm Gladwell (스파게티 소스에 관하여)


8. 에너지: 빌 게이츠 (에너지에 관해 말하다: 제로 탄소를 향한 혁신)


9. 신기술: Patti Maes and Pranav Mistry (Sixth Sense Demo)

Pranav Mistry: The thrilling potential of SixthSense technology


10. 역경: 에이미 멀린스 (Come dance with me!)


11. 환경: 앨 고어 (기후 변화 위기를 막으려면)


12. 웹: 크리스 앤더슨 (웹 비디오는 어떻게 전세계에서 혁신을 움직이게 해주는가)


13. 디자인: 존 마에다 (단순한 삶에 관하여)


14. 뇌: 찰스 림 (즉흥연주 때의 여러분의 두뇌)


15. 철학: 엘리자베스 길버트 (창의성의 양육)



2014년 1월 5일

[Tip] MicroSoft 프로그램 학생은 무료!! DreamSpark 등록방법



 마이크로소프트에서 DreamSpark라고 해서 학생에게 개발, 디자인용 툴 패키지를 무료로 제공하고 있습니다. 이 서비스를 받기 위해서는 학생 인증을 해야 합니다. 절차는 다음과 같습니다.

1. www.dreamspark.com 에 먼저 접속합니다. 아래와 같은 이미지를 볼 수 있죠.

 위의 이미지에서 상단에 보면 '학생'이 있습니다. 클릭합니다.



 무료로 사용하라는 배너가 뜨는군요. 저도 어서 무료로 쓰고 싶습니다. 위의 화면에서 스크롤을 아래로 주욱 내려봅니다.

2. 계정 만들기



 스크롤을 주욱 내리면 계정 만들기라는 칸이 있습니다. 클릭.



 학생으로 등록하기 위해서 필요한 정보들을 입력합니다.  그리고 다음으로 넘어가면...



3. 인증받기




 학생임을 인증하는 방법에는 위의 4가지 방법이 있습니다. 여기서는 첫번째 방법을 사용할 것입니다. 왜냐구요? 저는 다른걸로 인증 받은 적이 없기 때문입니다..    ;(  


 첫번째 방법인 '내 학교를 통해 인증 받기'를 클릭하시면 요런 화면이 뜹니다.



자신의 학교를 입력합니다.. 그리고 계속 클릭.



 전자 메일 주소를 입력하라는군요. 이 전자 메일 주소는 학교측에서 제공하는 웹메일을 의미합니다. 그런거 없다구요? 아닙니다. 있습니다. 자신의 학교 사이트로 접속해서 잘 찾아보시면 학교에서 제공하는 웹메일이 있습니다. 여기에 그 주소를 입력해야합니다. 


 입력하고 나면 그 메일 주소로 들어가서 확인을 받으라는 메시지를 줍니다. 그러면 자신의 학교 웹메일로 접속해서 마이크로소프트에서 보낸 메일을 통해 인증을 받으시면 됩니다. 그러면




인증끝!! (계정 매핑은 마이크로소프트 계정과 DreamSpark를 연동시키는 것입니다. 이건 옵션)

4. 소프트웨어 다운 받기

이제 우리는 무료로 소프트웨어를 다운만 받으면 됩니다. 아까 dreamspark 학생 페이지로 들어가면 다음과 같은 화면이 보입니다.

학생 카탈로그로 이동을 클릭합니다.



짜잔!! 이제 다운로드 하면 됩니다.

끝!


2014년 1월 4일

[Data Structure] Binary Search Tree - deleting node


 저번 글에 이어서 이진 탐색 트리에서 노드를 삭제하는 함수를 만들어 볼 것이다. 이진 탐색 트리에서 삭제를 할 때에는 3가지 타입을 알아야 한다.


삭제하고자 하는 노드가..

1. 단말 노드 일 때
2. 하나의 자식 노드가 존재할 때
3. 두개의 자식 노드가 존재할 때

 자신이 단말 노드일 경우 그냥 삭제하면 된다. 이 부분은 아주 간단하다. 하나의 자식 노드가 가지고 있는 노드일 경우에는 자식 노드에게 자신의 자리를 넘겨주면 된다. 


 마지막으로 두개의 자식 노드가 존재 할 때에는 두개의 정파를 생각해야한다. 그리고 우리는 그 중에서 그나마 중도를 걷는 녀석을 후계자로 삼아야 한다. 즉, 지우고자 하는 노드이 key값과 가장 가까운 자식 노드를 후계자로 삼아야 한다는 점이다. 그리고 가장 값이 가까운 노드는 왼쪽 서브 트리의 가장 오른쪽 아래의 노드 혹은 오른쪽 서브 트리의 가장 왼쪽 아래 노드이다. 



(참고로 코드에서 succ 은 후계자, succ_p 는 후계자의 부모 노드

t 는 현재 노드 혹은 지우고자 하는 노드
p 는 t의 부모 노드
child 는 t의 자식 노 드 이다.)

void delete_node(TreeNode **root, element key){
    TreeNode *p, *t, *child; // p는 부모 노드, t는 현재 노드, child는 서브 노드가 하나 일때 사용
    TreeNode *succ_p, *succ; // succ_p는 후계자 부모, succ는 후계자 노드. 서브 노드가 둘 일때 사용
    
    t = *root;
    p = NULL;
    
    while (t != NULL) {
        if (key == t->data) break;
        p = t;
        t = key < t->data ? t->left : t->right;
    } // 동일 key를 가진 노드를 찾는다
    
    if (t == NULL) return; // 동일키가 없다
    
    // 1. t가 단말 노드일 경우
    if (t->left == NULL && t->right == NULL) {
        if (p == NULL) { // 삭제 노드가 root일 경우다.
            *root = NULL;
        } else  {
            if (p->left == t) {
                p->left = NULL;
            } else {
                p->right = NULL;
            }
        }
    }
    // 2. 서브 노드가 하나일때
    else if (t->left == NULL || t->right == NULL){
        child = t->left == NULL ? t->right : t->left;
        if (p != NULL) {
            if (p->left == t) {
                p->left = child;
            } else {
                p->right = child;
            }
        } else {// 삭제 노드가 root일 경우
            *root = child;
        }
    }
    // 3. 서브 노드가 둘일때
    else {
        printf("p :: %d , t :: %d\n", p->data, t->data);
        succ_p = t;
        succ = t->right;
        
        while (succ->left != NULL) {
            succ_p = succ;
            succ = succ->left;
        }
        
        // 여기서부터 이게 대체 뭔소리인가 싶다. ... 조금 더 알아봐야할 코드다.
        if (succ_p->left == succ) {
            succ_p->left = succ->right;
        } else {
            succ_p->right = succ->right;
        }
        t->data = succ->data;
        t= succ;
    }
    free(t);
}

int main(){
    TreeNode root = {18,NULL,NULL};
    TreeNode *exp = &root;
    
    insert_node(&exp, 7);
    insert_node(&exp, 26);
    insert_node(&exp, 3);
    insert_node(&exp, 12);
    insert_node(&exp, 31);
    insert_node(&exp, 27);
    insert_node(&exp, 25);
    delete_node(&exp, 26);
    
    TreeNode *result = iter_search(exp, 26);
    if (result != NULL) {
        printf("There is %d\n", result->data);
    } else {
        printf("There isn't\n");
    }
    
    return 0;
}

adf


코드에서 보면 서브 노드가 2개일 때 마지막 코드 부분이 이해가 안된다.

코드는 다음과 같다.

       if (succ_p->left == succ) {
            succ_p->left = succ->right;
        } else {
            succ_p->right = succ->right;
        }
        t->data = succ->data;
        t= succ;

이 코드가 이해되면 즉시 포스팅을 수정하고 업데이트하겠다..

[Data Structure] Binary Search Tree - Inserting node

 저번 포스트에서 이진 탐색 트리에서의 탐색을 다뤘다면 오늘은 삽입을 다룰 예정이다. 삽입을 위해서는 3단계를 거치게 되는데 

1. 탐색
2. 정의
3. 삽입

탐색은 인자값인 key가 존재하는지를 검사함과 동시에 없다면 어떤 자리에 들어가야 하는지를 보는 것이다. 탐색 후 결과적으로 해당 자리의 부모 노드를 가져오게 되는데 다음의 코드와 같은 패턴을 보여준다.


    TreeNode *p, *t; // p 는 부모노드, t 는 현재노드
    t = *root;
    p = NULL;
    while (t != NULL) { // 이러한 코드 패턴은 트리에서 부모를 찾는데 이용됨.
        if (key == t->data) return;
        p = t;
        if (key < t->data) {
            t = t->left;
        } else {
            t = t->right;
        }
    }

while 문이 종료될 때 p는 새로운 노드가 들어가야할 자리의 부모 노드가 된다.
정의는 노드의 동적 할당을 의미한다. 코드에서는 간단하게 n 으로 나타내었다. 그리고 나서 이 새로운 노드를 실제로 삽입해야 하는데 이진 탐색 트리의 정의에 따라 부모 노드의 값과 key를 비교해서 작으면 왼쪽 자식으로 크면 오른쪽 자식으로 한다. 단, 부모가 null일 경우가 있다. 이 경우는 트리가 완전히 빈 것이다. 그러므로 root 로 지정해준다.



#include <stdio.h>
#include <stdlib.h>

typedef int element;
typedef struct {
    element data;
    struct TreeNode* left;
    struct TreeNode* right;
} TreeNode;

// iteration-search
TreeNode *iter_search(TreeNode *root, element key){
    TreeNode *p = root;
    while (p!=NULL) {
        if (key == p->data) {
            return p;
        } else if (key < p->data){
            p = (TreeNode*) p->left;
        } else {
            p = (TreeNode*) p->right;
        }
    }
    return NULL;
}

void insert_node(TreeNode **root, element key){
    // root 는 TreeNode* 를 가리키게 된다.
    TreeNode *p, *t; // p 는 부모노드, t 는 현재노드
    TreeNode *n; // n 은 새로운 노드
    t = *root;
    p = NULL;
    
    // 1. 먼저 들어갈 자리의 부모노드를 Search
    while (t != NULL) { // 이러한 코드 패턴은 트리에서 부모를 찾는데 이용됨.
        if (key == t->data) return;
        p = t;
        if (key < t->data) {
            t = t->left;
        } else {
            t = t->right;
        }
    }
    
    // 2. 새로운 노드를 정의
    n = (TreeNode *) malloc(sizeof(TreeNode));
    n->data = key;
    n->left = NULL;
    n->right = NULL;
    
    // 3. 노드를 실제로 삽입
    if (p == NULL) {
        *root = n;
    } else if (key < p->data) {
        p->left = n;
    } else {
        p->right = n;
    }
}

int main(){
    TreeNode n1 = {3,NULL,NULL};
    TreeNode n2 = {12,NULL,NULL};
    TreeNode n3 = {7,&n1,&n2};
    TreeNode n4 = {27,NULL,NULL};
    TreeNode n5 = {31,&n4,NULL};
    TreeNode n6 = {26,NULL,&n5};
    TreeNode n7 = {18,&n3,&n6};
    TreeNode *exp = &n7;

    insert_node(&exp, 25);
    TreeNode *result = iter_search(exp, 25);
    printf("There is %d\n", result->data);
    
    return 0;
}



2014년 1월 3일

[Data Structure] Binary Search Tree 의 Traversal

 아래 주석에도 달아놓았지만 이진 트리와 이진 검색 트리는 다르다. 물론 이진 검색트리는 이진트리다. 그러나 이진트리는 반드시 이진 검색 트리라고 할 수 없다. 그 기준이 뭐냐하면 바로 내부에 있는 '값'이다.

 노드 내부의 키는 유일해야 한다. 그래야 노드간의 구별이 되기 때문이다. 또한 부모 노드의 왼쪽 서브 노드들의 값은 부모 노드의 값보다 작아야하며, 부모 노드의 오른쪽 서브 노드들의 값은 부무 노드의 값보다 커야 한다. 이러한 점을 지키면 이진 검색 트리가 된다.

 이진 검색 시에는 반복(iteration)과 순환(recursion) 방법이 있다. 언제나 그러하듯 반복은 효율이 좋고 순환은 이해가 편하다. 코드를 보자.



#include <stdio.h>
#include <stdlib.h>

// 이진 트리와 이진 탐색 트리는 서로 정의가 다르다.
// 이진 탐색 트리는 ..
// 1. 모든 노드의 키는 유일하다
// 2. 왼쪽 서브 트리의 키들은 루트의 키보다 작다.
// 3. 오른쪽 서브 트리의 키들을 루트의 키보다 크다.
// 4. 왼쪽, 오른쪽 서브 트리도 이진 탐색 트리다.

typedef int element;
typedef struct {
    element data;
    struct TreeNode* left;
    struct TreeNode* right;
} TreeNode;

// recursion
TreeNode *rec_search(TreeNode *root, element key){
    if (root == NULL) return root;
    if (key == root->data) return root;
    if (key < root->data) {
        return rec_search((TreeNode*)root->left, key);
    } else {
        return rec_search((TreeNode*)root->right, key);
    }
}

// iteration
TreeNode *iter_search(TreeNode *root, element key){
    TreeNode *p = root;
    while (p!=NULL) {
        if (key == p->data) {
            return p;
        } else if (key < p->data){
            p = (TreeNode*) p->left;
        } else {
            p = (TreeNode*) p->right;
        }
    }
    return NULL;
}

int main(){
    TreeNode n1 = {3,NULL,NULL};
    TreeNode n2 = {12,NULL,NULL};
    TreeNode n3 = {7,&n1,&n2};
    TreeNode n4 = {27,NULL,NULL};
    TreeNode n5 = {31,&n4,NULL};
    TreeNode n6 = {26,NULL,&n5};
    TreeNode n7 = {18,&n3,&n6};
    TreeNode *exp = &n7;
    
    TreeNode *rec = rec_search(exp, 18);
    TreeNode *iter = iter_search(exp, 3);

    printf("recursion : %d\n", rec->data);
    printf("iteration : %d\n", iter->data);
    
    return 0;
}

2014년 1월 1일

[영화] 7번방의 선물 리뷰 - 재미, 슬픔 그리고 사형제도에 대한 메시지





 7번방의 선물을 보게 되었다. 이미 개봉한지 1년이 지난 작품이라 이 리뷰를 보는 사람이 있을지 모르겠다. ㄷㄷㄷ. 뭐 아무도 안봐도 상관없다. 어차피 혼자 주절 거릴 공간이 필요해서 만든 블로그니까 :)

 영화에 대한 소감을 간략하게 먼저 밝히자면.. 스토리 전개는 어설픈데도 무지하게 슬프면서 무지하게 웃기다. 게다가 사회에 대한 메시지도 담겨있다. 이 부분들에 대해서 나름대로 느낀바가 있다. 이러한 내 생각들을 중심으로 리뷰를 펼쳐보겠다.



1. 연기파 배우들의 활약

 이 영화 중간 중간 정말 빵빵 터지는 재미를 준다. 우선 몇 가지 생각나는 대사들이 있는데 나열해보겠다. 읽으면 그 장면들이 새록새록 떠오른다..

 바보 아빠 이용구가 감옥에 처음 들어와 자기 소개를 할 때,
  "1961년생 1월 18일 태어났어요. 제왕절개..엄마 아팠어. 내 머리 커성ㅋㅋ"

 감옥에서 예승이를 데려오자 신봉식(소매치기범)이 예승이의 존재를 꼰지르려다가 
 "여기 방에 빵 하나만 더 주세요ㅠ"
그러자 정교도관 왈
"니가 장발장이냐? 빵 하나 때문에 울고 ㅈ ㄹ이야"

 딸 예승이가 감옥에서 여기가 학교라며 나가기 싫다고 말할 때 용구가 한 대사도 한건 했다.
 "여기 학교 아니야. 감옥. 다 나쁜 사람들 :("

 신봉식이 아내와 딸 이름을 갖고 아웅 다웅하다가 결국 이름을 신봉선으로 하기로 했을 때 강만범(간통범)이 하는 말
 "ㅅㅂ 이름부터 글러먹었어. 신봉선이가 뭐여 신봉선이"



 용구가 예승이 밥 먹일 때
"예승이 콩 먹어 콩 비타민"


 이 외에도 정말 재밌는 장면들이 많았다. 그런데 잠깐 여기서 짚고 넘어가야할게 있다. 과연 이런 코믹한 장면들을 연기력이 없는 사람들이 했어도 재밌었을까? 



2. 아역배우의 더 눈부신 활약



 여기서 이예승으로 나오는 아이의 활약이 정말 눈이 부시다. 귀여운 외모도 한 몫을 했음은 물론이고 감옥에서 범죄자 삼촌들과 능청스럽게 얘기한다던지 아빠를 그리워 하는 모습, 밥 많이 먹는다고 핀잔받으니까 삐치는 모습이나 정말 아역배우 하나는 잘 키웠다. 누구 딸인지 정말 복덩어리 받으셨습니다 ;)



 특히나 마지막에 용구가 사형당하는 장면에서 하나, 둘, 셋... 아빠!!! 하고 우는 장면은 어느 노련한 연기자 못지않게 편친 열연이었다. 아 정말 이 장면에서 눈가에 땀이 막 나더라ㅜㅜ 더워서 그래 더워서...



3. 불쌍한 아빠라는 소재



아빠 딸로 태어나서 고맙습니다.

 정말 불쌍한 소재는 다 모아놨다. 바보 아빠, 사형 당하는 아빠, 누명을 쓰게 된 아빠, 딸을 위해 목숨을 버리는 아빠, 어린 딸을 가진 아빠, 죽는 와중에도 딸을 위해 웃는 아빠... 정말 세상에는 존재하지도 않을 불쌍하고 불쌍한 아빠다. 

 이런 불쌍한 아빠는 딸을 위해 무엇이건 다 하고 딸을 위해서라면 죽음까지도 불사하고 누명까지 인정한다. 이렇게 눈물을 짜내는데 안버틸 재간이 있을까. 물론 이런 소재를 적절하게 배치하고 부자연스럽지 않게 유도한 제작진도 대단하다 :)



4. 어설픈 이야기 전개

 영화를 보다보면 말이 이상한 부분이 몇 개가 있다. 감옥에서 갑자기 옆방 범죄자(박상면 역)가 뜬금없이 용구네 방장을 찌르려고 하는 장면이라던지. (고작 이유는 내 나와바리를 건드려서..ㅎㄷㄷ)

 마찬가지 범죄자가 뜬금없이 감옥에다 불을 지르다던지.. (아에 정신이상자로 나왔으면 할 말이 없겠다만 나중에 이런 역할이 없어지자 주인공 아빠를 도와주는 착한 범죄자로 변신한다. 뭐이래) 하는 이상한 장면들이 등장한다. 

 물론 이런 장면들로 인해 생겨나는 다음 장면들 때문에 썼다는건 이해가 간다. 박상면이 방장 삼촌을 찌르려다가 용구가 대신 맞고 결국 예승이가 감옥에 들어오게 힘을 쓴다던지. 불이 나자 용구가 교도소장을 살리게 되어 오해가 풀린다던지...하는 이런 복선!!!! 정말 뜬금없고 말도 안맞다. 


5. 사형제도에 대한 나름의 메시지




 그렇다고 이 영화가 어떠한 메시지도 말하지 않다고 생각하는가? 그렇다면 큰 오산이다. 감독은 어떤 장면을 찍을 때 이유 없이 찍지 않는다. 영화에 담겨 있는 부분은 모두 감독의 판단으로 만들어지는 것이다. 그런데 위의 장면을 보자. 위의 장면은 용구가 사형당하러 가는 장면에서 딸과 용구 모두 오열하는 부분이다. 특히 여기서 용구는 카메라를 향해 


 "살려주세요! 잘못했어요!! 살려주세요..!!"

라고 외친다. 이 영화에서 어떤 장면도 배우가 카메라를 향해 말하는 부분은 없다. 오직 이 장면만이 카메라를 향해 말한다.

 조금 전의.. 감독은 어떤 장면을 이유 없이 찍지 않는다는 말에 우리가 동의할 수 있다면 이 장면이 특별하다는 점에도 동의할 것이다. 단지 감동을 더 키우기 위해서라면 차라리 딸을 부둥켜안고 오열하는 면이 나았을 것이다. 

 "살려주세요. 잘못했어요"는 관객들을 향해 던지는 메시지다. 사형제도에 대한 간접적 비판이자 감독이 던지고자 하는 메시지에 동의해 달라는 무언의 설득이다. 

 나는 이 문제에 통계학의 개념을 가져오고자 한다. 통계학에는 1종 오류와 2종 오류가 있다. 쉽게 설명하자면 1종 오류란 어떤 사람이 범죄자인데 무죄라고 오판할 경우이며,  2종 오류란 어떤 사람이 선량한 사람인데 유죄라고 오판할 경우이다. 여기서 가장 나쁜 것은 2종 오류다. 
 즉, 선량한 사람이 범죄자라고 오판할 경우다. 

 자.. 다시 한번 사형제도를 돌아보자. 사형은 누가 판단하는가? 결국 판사가 하게 되어있다. 근데 판사가 신이 아닌 이상 분명히 확률적으로 오판을 할 경우가 생긴다. 그 오판이 적든 크든 확률상 분명히 일어나게 되어 있다. 즉... 2종 오류가 발생하게 되어 선량한 사람이 죽게 된다. 영화는 이 상황을 보여주고 있는 것이다. 


"이런 사람이 존재할 수 있는데도 사형제도가 필요한가요?" 


 참고로 한국의 사형제도를 찾아보면 재밌는 이야기들이 많다. 한번 꼭 검색해보시길..


 그럼 이제 마지막으로 내가 가장 좋아하는 7번방의 선물의 한 장면을 마지막으로 리뷰를 끝마치고자 한다. 혹시 안보신 분이 있다면 강력 추천이다. 좀 어설프긴 하지만 그정도는 참고 봐도 충분히 감동적이면서 재밌기까지하다. 이런 영화는 드물다. 꼭 한번 보라 :D




예쁜 별님 달님 장면












[책] 안네의 일기 리뷰

 



 안네의 일기는 너무도 유명해서 나도 언젠가 들어봤었던 책 이름이었고  도서관에서 책을 고를 때 나는 내가 조금이라도 아는 책을 고르려는 경향이 있어서 안네의 일기가 내 손에 잡혔다. 그러고 보면 사람은 익숙한 것을 찾는 경향이 있나보다. 너무 일반화 시켰나 :( 

 일기라는 것은 비밀스럽고 진실된 것이고 자신과의 대화를 할 수 있게 만들어주는 최고의 매개체이기도 하다. 물론 일기는 누구나 쓸 수 있다. 하지만 안네는 느긋하게 쓸만한 상황이 아니었을 것이다.

 히틀러가 독일을 좌지우지하며 세계를 뒤흔들 때 안네는 고작 10대 중반이었다. 그 어린 아이가 감당하기에는 너무도 어려운 상황이 아니었을까. 그럼에도 상황에 적응하는 사람의 힘이란 대단하다.

 독일은 네덜란드를 점령했고 네덜란드에서도 유태인들에 대한 학살이 이어졌다. 안타깝게도 안네의 가족은 유태인이었고 그들은 결국 오토 프랑크(안네 아빠)의 회사 건물의 숨겨진 공간에서 약 2년동안 살아야 했다. 게슈타포라고 불리는 독일 나치 비밀 국가 경찰은 그들에게 악마보다 무서운 존재였고 그들이 다른 유태인들을 잡아가는 것을 방안 창문을 통해 보면서 두려움에 떨어야 했다. 

 사실 나에게는 그런 상황이 쉽사리 상상되지 않는다. 국가가 나를 잡기 위해 눈에 불을 켜고 돌아다닌다니. 나라면 ... 무엇하나 제대로 할 수 있는 것이 없을 것이다. 그럼에도 그들은 이런 절박한 상황속에서도 꿋꿋이 삶을 살아간 다. 여기까지가 대략적인 줄거리이다. 줄거리도 중요하지만 내가 느낀 것은 줄거리보다도 안네의 시선으로 본 사람들과의 관계 부분이다. 


1. 페터와의 관계

 가장 흥미로웠던 것은 페터와의 관계다. 일기의 초기에 안네는 페터에 대해서 정말 매력 없고 철부지로 표현한다. 그러다 안네가 너무도 힘들고 괴로워할 때 안네는 페터를 가지고 싶어했다. 이 때쯤 안네의 눈에는 콩깍쥐가 씌이기 시작했다. 갑자기 페터에 대한 욕망에 대해서 서슴없이 이야기하고 그의 행동 하나 하나에 신경을 쓰기시작했다. 사춘기 소녀가 사랑에 빠진 것이다! 

 솔직히 말하자면.. 내가 이 부분까지 읽었을때, 안네가 페터와 특별한 관계를 맺게 될 것이라고 생각했다. 왜냐하면 안네는 어리고 뒤채의 생활은 너무도 힘들었기 때문에 기댈 사람이 필요할 것이라고 생각했기 때문이다. 

 그런데 반전이 일어났다. 어느 순간부터 페터에 대한 감정이 돌연 식어버린 것이다. 안네는 어째서 페터에 대한 감정을 잃어버린 것일까. 짐짓 예상하기에 페터가 자꾸만 안네에게 의지하려 했기 때문이 아닐까. 페터는 더욱 안네에게 애정표현을 원했고 같이 있길 원했고 자꾸만 안네를 칭찬하면서 자신을 낮췄다. 아마도 안네에게는 자신이 의지할 사람이 필요했던 모양이다. 그래도 뒤채의 외롭고 어려운 상황속에서 그렇게 페터를 버릴 수 있었던 것은 참으로 대단하다. 그 타이밍도 공교롭게도 안네의 내면이 급속히 성장하던 시기였다. 

 여기서 배울 수 있는 점은 여자는 자신이 기대고 싶은 사람을 찾는다는 점이다. 음.. 너무 일반화시킨 경향이 있긴 하지만 적어도 약한 남자는 별로인 것 같다.

 그렇다고 남자라서 여자에게 기대지 말라고는 할 수 없다. 사람은 언제나 서로에게 기대어 살아가야 하니까. 하지만 너무 기댄다면 반대쪽에서 기대는 사람은 결국 똑바로 설 수 밖에 없고 그러면 너무 기대는 쪽은 넘어지게 된다. 그러니 사랑하는 사람에게 의지하되 그 사람도 기댈 수 있는 공간은 마련해 줘야한다. 너무 집착하고 기대려고 하면 사람은 떠나가나보다. 


2. 뒤채 사람들간의 관계

 또 다른 흥미로운 점으로 뒤채 사람들간의 관계를 볼 수 있겠다. 반 단 부부, 치과의사 뒤셀 그리고 어머니까지. 안네는 방금 언급된 모든 사람들과 올바른 관계를 형성하지 못했다. 안네는 그들에 대해서 천박하고 야비하다고 험담을 늘어놓았다. 안네의 말만 들으면 반 단 아주머니는 정말 철부지이고 뒤셀은 옹졸한 인간이다. 

 그런데 내가 생각하기에 사람들과의 관계에서 엉망인 이유가 꼭 그들 탓만 있는가 하는 점이다. 어쩌면 안네가 어렸고 사람과의 관계에 서툴렀던 것이 아닐까. 사실 안네도 일기의 후반부에서 어머니에 대해서 매몰차게 대했던 것을 후회하는 말들을 한다. 후회는 안네의 내면이 성장하고 나서 다가왔다. 

 그런 점에서 과거에 후회되는 일이 있다는 것은 그만큼 자신의 내면이 성장했고 그 때는 어렸다는 것을 인식했다는 것과 동일하지 않을까. 

 그렇게 사람들과 마찰을 겪어가면서 안네는 너무도 괴로워하고 외로워했다. 이 때 안네는 베개를 눈물로 적시고 하루 종일 우울한 기분으로 생활한다. 이런 과정이 나쁘다고만 볼 수 없는 것이 이런 괴로움을 겪으면서 안네가 조금씩 성장했기 때문이다. 사람은 고통을 겪으면서 성장한다. 지금에서야 말하건데 고통은 변화의 시작이다.


3. 안네의 내면의 성장

 마지막으로 안네의 일기를 통해서 느낀 내면의 성장이 흥미롭다. 일기의 초반부와 후반부는 극명하게 그 깊이 차이가 드러난다. 초반에는 철부지 소녀가 다른 사람들을 험담하고 주변 상황에 불평하는 글들로 가득했다면 후반부는 자신의 내면을 돌아보는 글들로 빼곡하다. 특히나 안네가 게슈타포에게 끌려가기 전에 마지막으로 쓴 일기는 내면 성찰의 극치를 보여줬다. 

 나는 책을 보게 되면 어떻게든 내면의 성장이 이루어진다고 생각했었다. 그런데 안네의 경우를 보면 안네는 책을 너무도 사랑한 아이였으나 일기 초반에 그녀의 글을 보면 아직 어리다는 느낌을 받게 된다. 그런데 안네가 일기를 써가며 자신과의 대화가 늘어날 수록 그녀가 점점 성장하고 있다는 것이 느껴진다. 책이 사람을 성장시키는 것이 아니다. 책은 매개체일 뿐이었다. 결국 사람의 내면이 성장한다는 것은 자신과의 대화를 얼마나 했는가에 달려있다. 

 물론 책은 자기성찰을 위한 훌륭한 도구다. 다만 책을 읽고 나서 그냥 쓩 하고 잊어버리면 성찰의 기회마저 쓩하고 날라가는 것이다. 책을 읽으면서 마음에 와닿았던 구절이나 느낀 것을 담담히 자신과 대화할 수 있어야 한다. 그리고 그 대화는 일기라는 두번째 매개체를 이용하는 것이 좋다.

 일기를 쓴다는 것은 자신을 객관적으로 볼 수 있게 해준다. 자신의 내면에 또 다른 자신이 있음은 인정하는 것이다. 그리고 내면의 자신이 왜 그렇게 행동하고 왜 그렇게 생각하는지 내면과의 대화를 통해서 점점 성숙해져간다. 책과 일기는 내면 성찰을 위한 최고의 도구다. 

 꼭 책이 아니더라도 문화를 접하면서 많은 대화 소재를 찾을 수도 있다. 이를테면 영화나 노래 가사, 웹툰 따위도 자신과의 대화를 위한 좋은 소재가 될 수 있다. 적어도 사람이 문화 생활을 왜 해야하는지에 대해서 이유가 될법하다.

 안네가 안타깝게 죽었다는 사실이나 독일의 만행이 세상에 알려지게 한 작품이라는 말은 솔직히 내 가슴에 와닿지는 않는다. 다만 한 소녀의 내면의 성장과정을 너무도 적나라하게 보여줬기 때문에 진실된 마음이 느껴진 것은 확실하다. 안네가 아우슈비츠에서 살아왔다면 훌륭한 여작가가 되었을 법하다. 그녀가 새로운 삶을 통해 못다이룬 꿈을 다시 한번 꾸고 있기를 바란다.



결론

1. 여자는 약한 남자에게 매력을 느끼지 않는다.
2. 고통은 변화의 시작이다.
3. 책은 자기 성찰을 위한 도구일 뿐, 마냥 읽는다고 내면이 성장하는 것은 아니다.
4. 일기는 자기 성찰을 위한 훌륭한 도구다.