이번 포스팅에서는 GitHub 의 인증 수단인 개인 토큰(a personal access token)을 발급하고 인증하는 절차를 소개하겠습니다.
터미널에서 GitHub 을 사용하다가 아래와 같은 에러 메시시가 나왔다면, 이는 2021년 8월 13일 부로 "비밀번호로 인증"하는 방식이 더이상 사용할 수 없게 됨에 따라, 개인 토큰 (a personal access token) 을 새로 발급받아서 인증해야 GitHub API 에 접속할 수 있다는 뜻입니다.
[error messages] remote: support for password authentication was removed on august 13, 2021. please use a personal access token instead
(1) 프로필 메뉴 (우측 상단) > (2) Settings > (3) Developer settings > (4) Personal access tokens > (5) Generate new token > (6) New personal access token 설정 (Note, Expiration, Select scopes) 후 Generate token 클릭 > (7) 새로 생성된 token 을 복사(Ctrl + C) --> 터미널에서 붙여넣기 (Ctrl + V)
의 순서로 진행해주면 됩니다.
GitHub: a process of generating a new personal access token
아래의 화면 캡쳐는 GitHub의 개인 인증 토큰에 대한 설명(note), 만료일(expiration), 접근 권한(access scopes)을 설정하는 UI 화면입니다. 용도에 맞게 만료일과 접근 권한을 다르게 해서 Git Token을 여러개 새로 발급할 수 있습니다.
select git token's access scopes
위의 (1)~(6)의 절차를 따라서 새로운 GitHub 개인 인증 토큰을 발급하였다면, 이를 복사(Ctrl+C)해서 --> 터미널의 패스워드 입력 커맨드라인에 붙여넣기(Ctrl+V) 해주면 됩니다.
만약, 특정 버전의 kubectl 을 다운로드 하고 싶다면 $(curl -L -s https://dk.k8s.io/release/stable.txt) 부분의 커맨드를 특정 버전으로 바꿔주면 됩니다. 가령, Intel macOS의 kubectl v1.22.0 를 더운로드 하고 싶다면 아래처럼 버전을 명시해주면 됩니다.
-- 특정 버전의 kubectl 을 다운로드 하려면,
-- for example, to download kubectl version v1.22.0 macOS on Intel macOS
$ curl -LO "https://dl.k8s.io/release/v1.22.0/bin/darwin/amd64/kubectl"
-- for macOS on Apple Sillicon, type:
$ curl -LO "https://dl.k8s.io/release/v1.22.0/bin/darwin/arm64/kubectl"
(Optional) binary 를 검증해보고 싶으면 아래의 kubectk checksum file 을 다운로드 받아서 확인해볼 수 있습니다. 이때 kubectl binary 와 같은 버전의 checksum file 을 다운로드 해주세요.
-- Validate the kubectl binary against the checksum file
$ echo "$(<kubectl.sha256) kubectl" | shasum -a 256 --check
==> (output) kubectl: OK
(1-1-b) Homebrew 를 사용해서 kubectl 설치하는 방법
Homebrew 는 macOS 운영 체제의 소프트웨어 설치를 단순하게 해주는 소프트웨어 패키지 관리자입니다.
맥북에 이미 Homebrew 를 설치해서 사용 중이라면 아래의 한 줄이면 kubectl 을 간단하게 설치할 수 있습니다. 완전 심플 그 자체예요!
-- Install the kubectl with Homebrew on macOS
$ brew install kubectl
(1-2) MiniKF's kubeconfig 파일 다운로드
MiniKF's kubeconfig 파일은 아래 화면 캡쳐한 곳에 파란색 점선으로 표시해 놓은 링크를 클릭하면 다운로드 할 수 있습니다. (아래 화면은 MiniKF 실행하면 아래에 나오는 화면이구요, MiniKF 설치 및 실행은 https://rfriend.tistory.com/676 를 참고하세요.)
Download MiniKF's kubeconfig file
아래처럼 minikf-kubeconfig file이 잘 다운로드 된거 확인했습니다.
(base) lhongdon@Hongui-MacBookPro minikf % cd ..
(base) lhongdon@Hongui-MacBookPro ~ % cd Downloads
(base) lhongdon@Hongui-MacBookPro Downloads % ls
minikf-kubeconfig
(base) lhongdon@Hongui-MacBookPro Downloads %
(1-3) 다운로드한 minikf-kubecinfig 파일을 홈 디렉토리(home directory)에 옮겨서 저장해주세요.
kubectl 이 minikf-kubeconfig 파일을 찾아서 사용할 수 있도록 KUBECONFIG 환경 변수를 설정해주세요.
-- macOS / Linux: Open a terminal, then run:
$ export KUBECONFIG=$HOME/minikf-kubeconfig
-- Windows: Open a Command Prompt, then run:
$ SET KUBECONFIG=%HOMEPATH%/minikf-kubeconfig
(2-2) cluster 의 마스터와 서비스 상태 정보 확인:$ kubectl cluster-info
(base) lhongdon@Hongui-MacBookPro ~ % kubectl cluster-info
Kubernetes control plane is running at https://10.10.10.10:8443
KubeDNS is running at https://10.10.10.10:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
(base) lhongdon@Hongui-MacBookPro ~ %
(base) lhongdon@Hongui-MacBookPro ~ % kubectl get all
NAME READY STATUS RESTARTS AGE
pod/admission-webhook-7cdddfc7b-r2p78 1/1 Running 1 32d
pod/startup-lock-kf4tg 1/1 Running 1 32d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/admission-webhook ClusterIP 10.105.96.165 <none> 443/TCP 32d
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 32d
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/startup-lock 1 1 1 1 1 <none> 32d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/admission-webhook 1/1 1 1 32d
NAME DESIRED CURRENT READY AGE
replicaset.apps/admission-webhook-7cdddfc7b 1 1 1 32d
(base) lhongdon@Hongui-MacBookPro ~ %
(2-5) pods 목록 보기: $ kubectl get pod
(base) lhongdon@Hongui-MacBookPro ~ %
(base) lhongdon@Hongui-MacBookPro ~ % kubectl get pod
NAME READY STATUS RESTARTS AGE
admission-webhook-7cdddfc7b-r2p78 1/1 Running 1 31d
startup-lock-kf4tg 1/1 Running 1 31d
(base) lhongdon@Hongui-MacBookPro ~ %
(2-6) 서비스 목록 보기: $ kubectl get service
(base) lhongdon@Hongui-MacBookPro ~ % kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
admission-webhook ClusterIP 10.105.96.165 <none> 443/TCP 32d
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 32d
(base) lhongdon@Hongui-MacBookPro ~ %
(2-7) Daemonsets 목록 보기: $ kubectl get daemonset
(base) lhongdon@Hongui-MacBookPro ~ % kubectl get daemonset
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
startup-lock 1 1 1 1 1 <none> 32d
(base) lhongdon@Hongui-MacBookPro ~ %
(2-8) Deployment 목록 보기: $ kubectl get deployment
(base) lhongdon@Hongui-MacBookPro ~ % kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
admission-webhook 1/1 1 1 32d
(base) lhongdon@Hongui-MacBookPro ~ %
(2-9) ReplicaSets 목록 보기: $ kubectl get replicasets
(base) lhongdon@Hongui-MacBookPro ~ % kubectl get replicasets
NAME DESIRED CURRENT READY AGE
admission-webhook-7cdddfc7b 1 1 1 32d
(base) lhongdon@Hongui-MacBookPro ~ %
(2-10) Nodes 목록 보기: $ kubectl get node
(base) lhongdon@Hongui-MacBookPro ~ % kubectl get node
NAME STATUS ROLES AGE VERSION
minikf Ready master 32d v1.16.15
(base) lhongdon@Hongui-MacBookPro ~ %
(2-11) Events 목록 보기: $ kubectl get events
(base) lhongdon@Hongui-MacBookPro ~ % kubectl get events
No resources found in default namespace.
(base) lhongdon@Hongui-MacBookPro ~ %
[ <미움받을 용기 (The Courage to Be Disliked)>, 자유롭고 행복한 삶을 위한 아들러의 가르침 ]
기시미 이치로(Ichiro Kishimi), 고가 후미타케(Fumitake Koga) 지음, 전경아 옮김, 인플루엔셜
이 책은 “인간은 변할 수 있어. 그뿐 아니라 행복해질 수도 있지. 한사람도 예외없이, 지금 이 순간부터.”(p14) 라는 도발적이면서도 귀가 솔깃한 제안으로 시작을 합니다. 그리고 기존의 상식이라든지 프로이드와 융으로 대변되는 상담 심리학의 주류에 정면으로 도전장을 내밀면서 따박따박 반박하는 싸움을 벌이는 용기(?!)있는 책이기도 해서, 사상 싸움을 구경하면서 읽는 재미가 솔찬합니다. 그리고 책이 약속했던 대로 실제 삶에 큰 영향을 미칠 내용, 주장, 통찰이 가득해서 매우 유용하고 실제적인 책이기도 합니다. 완전 강추해요.
철학자와 청년의 대화, ‘심리학자’와 청년이 아니라 ‘철학자’와 청년인게 재미있습니다. 그리스 철학자 소크라테스도 아들러도 모두 "대화와 논쟁"을 즐기고, 이를 통해 제자들에게 깨달음을 주었던 것을 이 책도 모방하고 있습니다.
"이 책에 나오는 ‘청년’’은 학창 시절 철학자들을 찾아다니던 나와 고가 씨이며, 무엇보다 이 책을 손에 쥔 여러분입니다. 철학자와의 대화를 통해 의문을 해결하는 동시에 여러분이 변화하는 데 조금이라도 도움이 된다면 더 바랄 게 없습니다." (p331. 저자 '기시미 이치로')
철학자는 말하길, '용기'를 내어 선글라스를 벗었을 때 완전 다른 세상이 펼쳐질 것이라면서 청년(혹은 독자)에게 대화에 초대합니다.
p13. 철학자: “어쩌면 자네는 선글라스 너머로 세계를 보고 있는지도 몰라. 그런 상태에서는 세계가 어둡게 보이는 것이 당연하지. 그렇다면 세계가 어둡다고 한탄할 것이 아니라 선글라스를 벗으면 되네. 맨눈에 비치는 세계는 강렬하고 눈이 부셔서 절로 눈을 감게 될지도 모르네. 다시 선글라스를 찾게 될지도 모르지. 그래도 선글라스를 벗을 수 있을까? 세계를 정면으로 바라볼 수 있을까? 자네에게 그런 ‘용기’가 있을까? 그게 관건이지.”
미움받을 용기 (The Courage To Be Disliked)
저자는 "아들러 심리학", 또는 "용기의 심리학"을 그리스 철학에 버금가는 이 시대를 살아가는 현실에 실질적인 도움을 주는 철학이자 사상으로 보고 있습니다. 책의 표지에서 심리학자 아들러를 아래와 같이 소개하고 있습니다.
[ 알프레드 아들러 (Alfred Adler) ] 오스트리아 출신의 정신의학자이자 심리학자로 미래 지향적이고 긍정적 사고를 강조하는 ’개인심리학’을 창시했다. 현대 심리학에 큰 영향을 끼진 알프레드 아들러(Alfred Adler)는 지그문트 프로이트(Sigmund Freud), 칼 구스타프 융(Carl Gustav Jung)과 어깨를 나란히 하며 ‘심리학의 3대 거장’으로 일컬어지고 있다. 또한 데일 카네기, 스티븐 코비 등 자기개발의 멘토라고 불리는 사람들에게도 영향을 주어 ‘자기개발의 아버지’라고도 불린다. 오늘날 거의 상식처럼 되어버린 프로이트의 원인론을 정면으로 부정하고, 사람은 현재의 ‘목적’을 위해 행동한다는 ‘목적론’을 네놓았다. 아들러에 의하면 우리는 얼마든지 ‘변할 수 있는 존재’이며, 그러기 위해서는 지금의 나를 그대로 받아들이고 인생에 놓인 문제를 직시할 ‘용기’가 필요하다고 한다. 즉 자유도 행복도 모두 ‘용기’의 문제이지 환경이나 능력의 문제는 아니라는 것이다. 그렇기에 아들러 심리학을 ‘용기의 심리학’이라고 부른다.
Alfred Adler (image source: https://prezi.com/xdpbdfy2_vcs/presentation/)
책은 아래처럼 5개의 밤으로 구성이 되어 있어요. 책을 읽으면서 마음에 울림이 있는 글귀를 메모를 했었는데요, 모두 청년의 질문에 답한 철학자의 말들이네요. 철학자가 한 말들의 메모가 너무 많고 길다보니, 제가 여기에 사족을 붙이는 것은 하지 않겠습니다.
[ 목차 ] 첫번째 밤: 트라우마를 부정하라. 두번째 밤: 모든 고민은 인간관계에서 비롯된다. 세번째 밤: 타인의 과제를 버려라. 네번째 밤: 세계의 중심은 어디에 있는가 다섯째 밤: ‘지금, 여기’를 진지하게 살아간다.
미움받을 용기 - (1) 트라우마를 부정하라
— 첫번째 밤: 트라우마를 부정하라.
“자네가 불행한 것은 과거의 환경 탓이 아니네. 그렇다고 능력이 부족해서도 아니고. 자네에게는 그저 ‘용기’가 부족한 것뿐이야.”
p33~35. 철학자: “과거의 원인에 주목해서 상황을 설명하려 든다면, 모든 이야기는 저절로 ‘결정론’에 도달하게 되네. 즉 우리의 현재, 그리고 미래는 전부 과거 사건에 의해 결정되고 움직일 수 없는 것이라고 말이지. … 그래서 아들러 심리학에서는 과거의 ‘원인’이 아니라 현재의 ‘목적’을 본다네. … 원인론을 맹신하면서 사는 한, 우리는 한 발자국도 앞으로 나갈 수 없다네.”
p37. 철학자: 아들러는 트라우마를 부정하면서 “어떠한 경험도 그 자체는 성공의 원인도 실패의 원인도 아니다. 우리는 경험을 통해서 받은 충격-즉 트라우마-으로 고통받는 것이 아니라, 경험 안에서 목적에 맞는 수단을 찾아낸다. 경험에 의해 결정되는 것이 아니라, 경험에 부여한 의미에 따라 자신을 결정하는 것이다” 라고 말했다네.
p43. 철학자: “요컨데 분노란 언제든 넣었다 빼서 쓸 수 있는’도구’라네. 전화가 오면 순식간에 집어넣었다가 전화를 끊으면 다시 커낼 수 있는. 엄마는 화를 참지 못해서 소리를 지른 것이 아니야. 그저 큰소리로 딸을 위압하기 위해, 그렇게 해서 자기의 주장을 밀어붙이기 위해 분로라는 감정을 이용한 걸세.”
p55~57. 철학자: “지금 자네가 불행한 것은 자네 손으로 ‘불행한 상태’를 선택했기 때문일세. … ‘불행한 상태’를 자신에게 ‘선’이라고 판단했기 때문이지.”
p60. 철학자: “만약 생활양식이 선천적으로 주어진 것이 아니라 스스로 선택한 것이라고 한다면 다시 선택하는 것도 가능할 테지. … 자네가 변하지 않는 것은, 스스로 ‘변하지 않겠다’고 결심했기 때문이네. … 생활양식을 바꾸려고 할 때, 우리는 큰 ‘용기’가 있어야 하네. 변함으로써 생기는 ‘불안’을 선택할 것이냐, 변하지 않아서 따르는 ‘불만’을 선택할 것이냐. … 인생을 결정하는 것은 ‘지금, 여기’를 사는 자네라고 말일세.”
미움받을 용기 - (2) 모든 고민은 인간관계에서 비롯된다
— 두번째 밤: 모든 고민은 인간관계에서 비롯된다.
p82. 철학자: “아들러는 “인간의 고민은 전부 인간관계에서 비롯된 고민이다”라고 단언했으니까. … 개인에 국한된 고민, 이를테면 내면의 고민이라는 것은 존재하지 않아. 어떤 종류의 고민이든 거기에는 반드시 타인의 그림자가 드리워져 있지.”
p89. 철학자: “그렇지. … 그런데 주관적으로 생각하면 좋은 점이 하나 있네. 자신의 뜻대로 선택이 가능하다는 점. 내 키를 장점으로 볼 것인가, 단점으로 볼 것인가 하는 것은 모두 주관에 달린 문제라서 나는 어느 쪽이나 선택할 수 있지.”
p95. 철학자: “열등감 자체는 그다지 나쁜 게 아닐세. 아들러도 말했듯이 열등감은 노력과 성장을 자극하는 계기가 되기도 하니까. … 하지만 열등 콤플렉스는 자신의 열등감을 변명거리로 삼기 시작한 상태를 가리킨다네. … 자네가 말한 인과관게에 관해 아들러는 ‘무늬만 인과법칙’이라는 용어로 설명하고 있네. 원래는 어떤 인과관계도 없는 것을, 마치 중대한 인과관걔가 있는 것처럼 스스로에게 설명하고 납득한다고 말이야.”
p98. 철학자: “심한 열등감에 괴로워하면서도 노력과 성장 같은 건전한 수단을 이용해서 보완할 용기가 없어. 그렇다고 “A라서 B를 할 수 없다”라는 열등 콤플렉스도 더는 견뎌낼 수 없지. ‘못난 나’를 아들일 수가 없거든, 그러면 인간은 더 값싼 수단으로 보상하려고 한다네. 마치 자신이 우월한 것처럼 행동하며 ‘거짓 우월성’에 빠지는 걸세. … 예를 들어 자신이 그ㅓㄴ략자와 각별한 사이라는 것을 짐짓 어필하는 걸세. 그를 통해 자신이 특별한 존재인 것처럼 행세하지. 경력을 속이거나, 옷이나 장신구 등 브랜드 제품을 과시하는 것도 일종의 권위 부여이자 일부분 우월 콜플렉스라고 할 수 있지. … 나는 패션에 대해서는 잘 몰라. 하지만 열 손가락 모두 다 루비 반지와 에메랄드 반지를 낀 사람이 있다고 한다면, 그것은 미적 감각의 문제라기 보다는 열등감의 문제, 즉 우월 콤플렉스의 증거라고 봐야겠지.”
p101. 철학자: “열등감 자체를 첨예화시켜 특이한 우월감에 빠지는 패턴이라네. 구체적으로는 ‘불행 자랑’이라고 하지. … 불행을 무기로 상대방을 지배하려고 해. 자신이 얼마나 불행하고, 얼마나 괴로운지 알림으로써 주변 사람들-이를테면 가족이나 친구-을 걱정시키고, 그들의 말과 행동을 속박하고 지배하려 들지.”
p105. 철학자: “건전한 경쟁심이란 타인과 비교해서 생기는 것이 아니라 ‘이상적인 나’와 비교해서 생기는 것이라네. … 다른 사람과 차이가 있다는 곳은 나도 순순히 인정해. 하지만 모든 인간은 ‘같지는 않지만 대등’한 존재일세. … 우리가 걷는 것은 누군가와 경쟁하기 위해서가 아니야. 지금의 나보다 앞서 나가려는 것이야말로 가치가 있다네.”
p109. 철학자: “인간관계의 중심에 ‘경쟁’이 있으면 인간은 영영 인간관계에 대한 고민에서 벗어나지 못하고, 불행에서 벗어날 수가 없어. 경쟁의 끝에는 승자와 패자마니 남으니까. … 언제부터인가 자네를 제외한 모든 사람을, 더 나아가 세계를 ‘적’으로 느끼게 된다네.”
p113. 철학자: “자네가 전에 말했지? “행복해 보이는 사람을 진심으로 축복할 수가 없다”라고 말이야. 그것은 인간관계를 경쟁으로 바라보고 타인의 행복을 ‘나의 패배’로 여기기 때문에 축복하지 못한 걸세. 하지만 일단 경쟁의 도식에서 해방돠면 누군가에게 이길 필요가 없네. ‘질지도 모른다’는 공포에서도 해방되지. 다른 사람의 행복을 진심으로 축복할 수 있게 되고, 다른 사람의 행복을 위해 적극적으로 공헌할 수 있게 되네. 그 사람이 곤경에 처했을 때 언제든 도움의 손길을 내어줄, 믿을 수 있는 타인. 그것이 친구가 아니면 무엇이겠나.”
p117. 철학자: “만약 면전에서 욕을 먹었다면 그 사람이 숨겨놓은 ‘목적’이 뭔지 생각할 걸세. 면전에서 욕을 먹었을 뿐 아니라 상대의 언동으로 진짜로 화가 났을 때는, 상대가 ‘권력투쟁’을 위해 싸움을 거는 것이라고 생각하게. … 하지만 권력투쟁은 거기서 끝나지 않아. 싸움에서 진 상대는 바로 다음 단계로 돌입할 걸세. ‘복수’ 단계일세. 일단은 물러나지만, 상대는 다른 장소에서 다른 형태로 뭔가 복수를 계획하고 보복에 나선다네.”
p122. 철학자: “아무리 자신이 옳다고 여겨도 그것을 이유로 상대를 비난하지 말게. 이것이 많은 사람이 빠지는 인간관계의 함정이지. 인간관계에서 ‘나는 옳다’고 확신하는 순간, 권력투쟁에 발을 들이게 되네.”
p123. 철학자: “잘못을 인정하는 것, 사과하는 것, 권력투쟁에서 물러나는 것, 이런 것들이 전부 패배는 아니야. … 흐릿한 안경을 쓰면 눈앞의 승패밖에 보지 못하고 길을 잘못 들게 되지. 경쟁이나 승패의 안경을 벗어야 비로서 자신을 바로 보게 되고, 자신을 바꿀 수 있는 걸세.”
p125. 철학자: “아들러 심리학은 인간의 행동과 심리, 양 측면에서 아주 분명한 목표를 제시했지. 먼저 행동의 목표로는 ‘자립할 것’과 ‘사회와 조화를 이루며 살아갈 것’이라는 두 가지를, 이러한 행동을 뒷받침하는 심리적 목표로는, ‘내게는 능력이 있다’는 의식을 갖는 것과 그로부터 ‘사람들은 내 친구다’라는 의식을 갖는 것을 제시했네.”
p132. 철학자: “자네가 변하면 주변도 달라지네. 달라질 수밖에 없지. 아들러 심리학은 타인을 바꾸기 위한 심리학이 아니라 자신을 바꾸기 위한 심리학일세. 타인이 변하기를 기다리는 것도, 상황이 변하기를 기다리는 것도 아닐세. 자네가 첫발을 내딛기를 기다리고 있지.”
p133. 철학자: “인간은 ‘이 사람과 함계 있으면 자유롭게 행동할 수 있다’는 생각이 들었을 때 사랑을 실감할 수 있네. 열등감을 느끼지도 않고, 우월함을 과시할 필요도 없는, 평온한, 지극히 자연스러운 상태라고 할 수 있지. 진정한 사랑이란 그런 걸세.”
p137. 철학자: “그건 그 사람이 어느 단계에서 ‘이 관걔를 끝내고 싶다’고 결심하고, 관계를 끝내기 위한 구실을 찾고 있기 때문에 그렇게 느끼는 걸세. 상대는 아무것도 바뀌지 않았네. 자신의 ‘목적’이 변했을 뿐이지. 알겠나? 사람은 그럴 마음만 있으면 상대의 결점이나 단점을 얼마든지 발견할 수 있는 이기적인 생물이네. … 아들러는 여러 가지 구실을 만들어서 인생의 과제를 회피하려는 사태를 가리켜 ‘인생의 거짓말’이라고 했어.”
p139. 철학자: “아들러는 인생의 과제나 인생의 거짓말을 선악으로 구분해 말하지 않았네. 지금 우리가 말해야 할 것은 선악도 도덕도 아닌 ‘용기’의 문제일세.”
p140. 철학자: “프로이드의 원인론은 ‘소유의 심리학’이고 결국엔 결정론으로 귀결돼. 반면 아들러 심리학은 ‘사용의 심리학’이고 결정은 자네가 하는 걸세.”
미움받을 용기 - (3) 타인의 과제를 버려라
— 세번째 밤: 타인의 과제를 버려라.
p153. 철학자: 적절한 행동을 하면 칭찬을 받는다. 부적절한 행동을 하면 벌을 받는다. 아들러는 이런 상벌에 의한 교육을 맹렬히 비판햇네. 상벌교육의 결과로 생기는 것은 “칭찬하는 사람이 없으면 적절한 행동을 하지 않는다”, “벌주는 사람이 없으면 부적절한 행동을 한다” 등과 같은 잘못된 생활양식일세. 칭찬받고 싶은 목적이 있어서 쓰레기를 치운다, 그리고 누구에게도 칭찬받지 못하면 분개하거나 다시는 이런 짓을 하지 않겠다고 결심한다. 딱 봐도 이상한 얘기지.
p1154. 철학자: 자네는 타인의 기대를 충족시키기 위해 사는 것이 아니네. 나도 타인의 기대에 부응하기 위해 사는 것이 아니고. 타인의 기대 같은 것은 만족시킬 필요가 없다는 말일세.
p157. 철학자: … 의외라고 생각할지 모르겠지만, 상담을 받으러 오는 내담자 중에 성격이 제멋대로인 사람은 별로 없네. 오히려 타인의 기대, 부모와 선생의 기대에 부응하려고 애쓰다가 괴로워하지. 쉽게 말해 자기 마음대로 행동하지 못하는걸세.
p160. 철학자: 우리는 ‘이것은 누구의 과제인가?’라는 관점에서 자신의 과제와 타인의 과제를 분리할 필요가 있네. … 모든 인간관계의 문제는 타인의 과제에 함부로 침범하는 것 - 혹은 자신의 과제에 함부로 침범해 들어오는 것 -에 의해 발생한다네. 과제를 분리할 수 있게 되면 인간관계가 급격히 달라질 걸세.
p161. 철학자: 누구의 과제인지 구분하는 방법은 간단하네. ‘그 산택이 가져온 결과를 최종적으로 받아들이는 사람은 누구인가?’를 생각하게. … 세상 부모들이 흔히 “너를 위해서야”라고 말하지. 하지만 부모들은 명백히 자신의 목적-세상의 이목이나 체면일지도 모르고, 지배욕일지도 모르지-을 만족시키기 위해 행동한다네. 즉 ‘너를 위해서’가 아니라 ‘나를 위해서’이고, 그 기만을 알아차렸기에 아이가 반발하는 걸세.
p163. 철학자: 자신을 바꿀 수 있는 사람은 자신밖에 없네.
p165. 철학자: 아이와의 관계를 고민하는 부모는 대개 ‘아이의 인생은 곧 내 인생’이라고 생각하는 경향이 있어. 요컨대 아이의 과제까지도 자신의 과제라고 생각하고 떠안는 걸세. 그렇게 늘 아이만 생각하다가 문득 정신을 차렸을 떼에는 인생에서 ‘나’는 사리지고 없지. 하지만 어느 정도 아이의 과제를 떠맡았다고 한들 아이는 어느 정도 아이의 독립적인 개인일세. 부모가 바라는대로 되지 않아. … 오히려 거리가 가까운 가족이야말로 더 의식적으로 과제를 분리할 필요가 있네.
p167. 철학자: 만약 인생에 고민과 괴로움이 있다먄-그 고민은 인간관계에 있으니-먼저 “여기서부터 저기까지는 내 과제가 아니다”라고 경계선을 정하게. 그리고 타인의 과제는 버리게. 그것이 인생의 짐을 덜고 인생을 단순하게 만드는 첫걸음일세.
p171. 철학자: 먼저 ‘이것은 누구의 과제인가’를 생각하게. 그리고 과제를 분리하게. 어디까지가 내 과제이고, 어디서부터가 타인이 과제인가. 냉정하게 선을 긋는걸세. 그리고 누구도 내 과제에 개입시키지 말고, 나도 타인의 과제에 개입하지 않는다. 이것이야말로 구체적이고도 대인관계의 고민을 단숨에 해결할 수 있는, 아들러 심리학만의 획기적인 점이라고 할 수 있지.
p175. 철학자: 과제의 분리는 인간관계의 최종 목표가 아니야. 오히려 입구라고 할 수 있지. … 손을 내밀면 닿을 수 있되 상대의 영역에는 발을 들이지 않는 거리, 그런 적당한 거리를 유지하는 것이 중요하다네.
p181. 철학자: 그러면 왜 부자연스러운 삶을 택하는 것일까? 자네는 자꾸 인정욕구라고 하는데, 종확하게는 누구에게도 미움을 받고 싶지 않아서 그런는 걸세.
p182. 철학자: 과제를 분리하는 것은 자기중심적인 것이 아니야. 타인의 과제에 개입하는 것이야말로 자기중심적인 발상이지. 부모가 자식에게 공부를 강요하고 진조와 배우자감까지 간섭한다, 이게 자기중심적인게 아니면 뭔가?
p186. 철학자: 단적으로 말해 “자유란 타인에게 미움을 받는 것”일세. 자네가 누군가에게 미움을 받는 것. 그것은 자네가 자유롭게 살고 있다는 증거이자 스스로의 방침에 따라 살고 있다는 증표일세.
p189. 철학자: 행복해지려면 ‘미움받을 용기’도 있어야 하네. 그런 용기가 생겼을 때, 자네의 인간관계는 한순간에 달라질 걸세.
p193. 철학자: 인간관계의 카드는 언제나 ‘내’가 쥐고 있다는 말일세. 사람들은 대개 인간관계의 카드는 다른 사람이 쥐고 있다고 생각하지. 그래서 ‘그 사람은 나를 어떻게 생각할까’에 지나치게 신경을 쓰고, 타인이 바라는 것을 충족시키는 삶을 산다네. 하지만 과제의 분리를 배우고 나면 모든 카드를 내가 쥐고 있다는 사실을 알게 될 거야.
미움받을 용기 - (4) 세계의 중심은 어디에 있는가
— 네번째 밤: 세계의 중심은 어디에 있는가
p201. 철학자: 아들러는 정신과 신체를 나누어 생각하는 것, 이성과 감정을 분리해서 생각하는 것, 그리고 의식과 무의식을 나누어서 생각하는 것 등의 모든 이원론적 가치관에 반대했네.
p206. 철학자: 타인을 친구로 여기고, 거기서 ‘내가 있을 곳은 여기’라고 느낄 수 있는 것이 ‘공동체 감각’일세. 아들러는 가정이나 학교, 직장, 지역사회는 물론이고 국가와 인류 등을 포괄한 전체와 과거에서 미래로 이어지는 시간 축, 나아가서는 동식물과 무생물까지도 공동체에 포함된다고 했네. 더시 말해 ‘공동체’라고 했을 때 우리가 생각하는 기존의 범위뿐 아니라 과거에서 미래 그리고 우주 전체를 아우른, 글자 그대로 ‘만물’을 공동체라고 역설한 걸세.
p211. 철학자: ‘남에게 어떻게 보이느냐’에만 집착하는 삶이야말로 ‘나’ 이외에는 관심이 없는 자기중심적인 생활양식이라는 것을.
p215. 철학자: 방금 전에 나는 “자네는 세계의 중심이 아니야”라고 했네. 이 말을 지구의에 비추어 생각해보게. 자네는 공동체의 일부이지 중심이 아닐세. … 우리는 모두 ‘야기에 있어도 좋다’는 소속감을 갖기를 원해. 하지만 아들러 심리학에서는 소속감이 가만히 있어도 얻어지는 것이 아니라 공동체에 적극적으로 공헌해야 얻을 수 있는 것이라고 보았네. … 소속감이란 태어나면서부터 주어지는 것이 아니라 스스로 획득하는 것일세.
p223. 철학자: 관계가 깨질까 봐 전전긍긍하며 사는 것은 타인을 위해 사는 부자유스러운 삶이야. 눈앞의 작은 공동체에 집착하지 말게. 보다 다른 ‘나와 너’, 보다 다양한 ‘사람들’, 보다 큰 공동체는 반드시 존재하네.
p226. 철학자: 인간이 남을 칭찬할 떼 그 목적은 ‘자기보다 능력이 뒤떨어지는 상대를 조종하기 위한 것’이라네. 거기에는 감사하는 마음도, 존경하는 마음도 없지. … 우리가 남을 칭찬하거나 야단치는 것은 ‘당근을 쓰느냐, 채찍을 쓰느냐’ 하는 차이에 불과해. 배후에 자리한 목적은 조종에 있지. 아들러 심리학이 상벌교육을 강하게 부정하는 것도 아이를 조종하려는 측면 때문일세.
p227. 철학자: 누군가의 칭찬을 받고 싶다고 바라는 것. 아니면 반대로 다른 사람을 칭찬하는 것. 이는 인간관계를 ‘수직관계’로 바라본다는 증거일세. 자네가 칭찬받기를 원하는 것은 수직관계에 익숙해졌기 때문일세. 아들러 심리학에서는 온갖 ‘수직관계’를 반대하고 모든 인간관계를 ‘수평관계’로 만들자고 주장하네.
p229. 철학자: 과제의 분리에 대해 설명할 때 ‘개입’이라는 말을 쓴다네. 타인의 과제에 불쑥 끼어드는 행위를 뜻하지. 그러면 왜 인간은 개입을 하는 걸까? 그 배경에는 사실상 수직관계가 있지. 인간관계를 수직으로 받아들이면, 상대를 자신보다 아래라고 보고 개입을 하네. 상대를 바람직한 방향으로 이끈다, 내가 옳고 상대는 틀렸다고 믿고 있지. 물론 여기서 개입은 조종이나 다름없네.
p231. 철학자: 그야말로 “말을 물가에 데리고 갈 수는 있지만, 물을 마시게 할 수는 없다”라는 말에 딱 들어맞는 일이지. 과제를 하는 것도 본인이고, 과제를 하겠다고 결심하는 것도 본인이지. … 창찬하지도 야단치지도 않네. 이러한 수평관계에 근거한 지원을 아들러 심리학에서는 ‘용기 부여’라고 하지.
p232. 철학자: 인간은 칭찬을 받을수록 ‘나는 능력이 없다’는 신념을 갖게 된다네. … 칭찬은 ‘능력 있는 사람이 능력 없는 사람에게 내리는 평가’이기 때문이지.
p234. 철학자: 여기서 중요한 것은 타인을 ‘평가’하지 않는 것이네. 평가란 수직관계에서 비롯된 말일세. 만약 수평관계를 맺고 있다면 존경, 감사, 기쁨의 인사 같은 더 순수한 말이 나오겠지.
p235. 철학자: “인간은 자신이 가치 있다고 느낄 때에만 용기를 얻는다.”
p236. 철학자: 공동체, 즉 남에게 영향을 미침으로써 ‘내가 누군가에게 도움이 된다’고 느끼는 것. 타인으로부터 ‘좋다’는 평가를 받을 필요 없이 자신의 주관에 따라 ‘나는 다른 사람에게 공헌하고 있다’고 느끼는 것. 그러면 비로소 우리는 자신의 가치를 실감하게 된다네. 지금까지 논의했던 ‘공동체 감각’이나 ‘용기 부여’에 관한 말도 전부 이와 연결되네.
p239. 철학자: 타인을 ‘행위’의 차원이 아닌 ‘존재’의 차원에서 살펴야지. 타인이 ‘무엇을 했는가’로 판단하는 것이 아니라 거기에 존재하는 그 자첼,ㄹ 기뻐하고 감사해야 하는 걸세.
p243. 철학자: 마침 공동체 감각에 대해 아들러에게 비슷한 문제제기를 한 사람이 있었지. 그때 아들러의 대답은 이러했네. “누군가가 시작하지 않으면 안 됩니다. 다른 사람이 협력하지 않더라도 그것은 당신과는 관계없습니다. 내 조언은 이래요. 당신부터 시작하세요. 다른 사람이 협력하든 안 하든 상관하지 말고.”
p244. 철학자: 일단 다른 사람과, 한 명이라도 좋으니 수평관계를 맺을 것. 거기서부터 시작하는 걸세.
p246. 철학자: 의식상에서 대등할 것, 그리고 주장할 것은 당당하게 주장하는 것이 중요하단 말이지.
미움받을 용기 - (5) '지금, 여기'를 진지하게 살아간다
— 다섯째 밤: ‘지금, 여기’를 진지하게 살아간다.
p259. 철학자: 우리는 ‘나’라는 내용물이 담긴 그긋을 버릴 수도, 교환할 수도 없네. 하지만 중요한 것은 ‘주어진 것을 어떻게 활용하느냐’이지. ‘나’에 대한 견해를 바꾸는 것, 쉽게 말해 사용 용도를 바꾸라는 거네.
p260. 철학자: 자기긍정이란 하지도 못하면서 “나는 할 수 있다”, “나는 강하다”라고 스스로 주문을 거는 걸세. 이는 자신에게 거짓말을 하는 삶의 방식으로 자칫 우월 콤플렉스에 빠질 수 있지. 한편 자기수용이란 ‘하지 못하는 나’를 있는 그대로 받아들이고, 할 수 있을 때까지 앞으로 나아가는 걸세. 자신을 속이는 일은 없지.
p261. 철학자: 과제를 분리하는 것과 마찬가지로 ‘변할 수 있는 것’과 ‘변할 수 없는 것’을 구분해야 하네. 우리는 ‘테어나면서 주어진 것’에 대해서는 바꿀 수가 없어. 하지만 ‘주어진 것을 이용하는 방법’에 대해서는 내 힘으로 바꿀 수가 있네. 따라서 ‘바꿀 수 앖는 것’에 주목하지 말고, ‘바꿀 수 있는 것’에 주목하란 말이지. … 교환이 불가능함을 받아들이는 것. 있는 그대로의 ‘이런 나’를 받아들이는 것. 그리고 바꿀 수 있는 것은 바꾸는 ‘용기’를 낸다. 그것이 자기수용이야.
p264. 철학자: 다른 사람을 믿을 때 조건을 일절 달지 않는 걸세. 바록 신용할 수 있을 만큼의 객관적 근거가 없더라도 믿는다, 담보가 있든 말든 개의치 않고 무조건 믿는다. 그것이 신뢰라네.
p268. 철학자: 산뢰하는 것을 두려워하면 결국은 누구와도 깊은 관계를 맺을 수 없다네.
p272. 철학자: 타자공헌이란 ‘나’를 버리고 누군가에게 최선을 다하는 것이 아니라, 오히려 ‘나’의 가치를 실감하기 위한 행위인 셈이지.
p273. 철학자: 가장 알기 쉬운 타자공헌은 ‘일’이라네. 사회에 나가 일하는 것, 또는 집안일을 하는 것. 노동이란 돈을 버는 수단이 아니야. 우리는 노동을 통해 타인에게 공헌하고, 공동체에 헌신하며, ‘나는 누군가에게 도움이 된다’는 것을 실감하지. 나아가서는 자신의 존재가치를 받아들이게 되지.
p277. 행동의 목표: 1. 자립할 것, 2. 사회와 조화를 이루며 살아갈 것. 위의 행동을 뒷받침하는 심리적 목표: 1. 내게는 능력이 있다는 의식을 가질 것, 2. 사람들은 내 친구라는 의식을 가질 것.
p283. 철학자: 일중독자는 인생의 특정한 측면에만 주목한다네. 아마 그들은 “일하느라 바빠서 가정을 돌볼 여유가 없다”라고 변명할 것이네. 그런데 이는 인생의 거짓말이지. 일을 구실로 다른 책임을 회피하려는 것에 불과하거든. 원래는 집안일에도, 아이 양육에도, 혹은 친구와 교류하는 것이나 취미에도, 전부 관심을 가져야 하네. 어느 한 가지만 돌출되는 삶의 방식을 아들러는 인정하지 않네.
p287. 철학자: 인간에게 있어 최대의 불행은 자신을 좋아하지 않는 거라네. 이런 현실에 대해 아들러는 간단하게 대답했지. ‘나는 공동체에 유익하다’, ‘나는 누군가에게 도움이 된다’는 생각을 통해서만 자신이 가치 있음을 실감한다고.
p288. 철학자: “행복이란 공헌감이다.” 이게 행복의 정의라네. 행복이란 자신이 누군가에게 도움이 된다고 느끼는 것이다.
p291. 철학자: 공헌감을 얻기 위한 수단이 ‘남들로부터 인정받는 것’이라면 결국 남이 의도한 대로 인생을 살 수밖에 없어. 인정욕구를 통해 얻은 공헌감에는 자유가 없지. 우리는 자유를 선택하면서 더불어 행복을 추구하는 존재라네.
p294. 철학자: 특별히 잘하는 것도, 특별히 못되게 구는 것도 목적은 같아. 남들로부터 주목받고 ‘평밤한’ 상태에서 탈피해 ‘특별한 존재’가 되는 것. 그것이 목적이네.
p296. 철학자: 왜 ‘특별’해지려고 하는 걸까? 그건 ‘평범한 자신’을 받아들이지 못하기 때문이지. 그러니까 ‘특별히 잘하는’ 상태가 실패로 돌아가면 극단적으로 ‘특별히 못되게 구는’ 상태로 빠르게 넘어가는 걸세. 그런데 보통인 것, 평범한 것은 정말로 좋지 않은 걸까? 어딘가 열등하다는 뜻인가? 실은 누구나 평범하지 않나? 그 점을 깊이 생각해볼 필요가 있네. ‘평범해질 용기’
p301. 철학자: 인생은 ‘지금’이라는 찰나의 연속이지. 우리는 ‘지금, 여기’를 살아갈 수밖에 없어. 우리의 삶이란 찰나안에서만 존재한다네. 이걸 알지 못하는 어른들은 청년들에게 ‘선’의 인생을 강요하지. 좋은 대학, 대기업, 안정된 가정 등 이런 선로를 따라가는 것이 행복한 인생이라먄서. 그래도 인생은 선이 아니라네.
p303. 철학자: 인생이란 지금 이 찰나를 뱅글뱅글 춤추듯이 사는, 찰나의 연속이라고. 그러다 문득 주위를 볼아봤을 때 “여기까지 왔다니!” 하고 깨닫게 될 걸세. … 춤을 추고 있는 ‘지금, 여기’에 충실하면 그걸로 충분하니까. … 춤을 출 때는 춤추는 것 자체가 목적이고, 춤을 추면서 어디론가 가야겠다고는 생각하지 않지. 그래도 춤춘 결과 어딘가에 도달은 하겠지. 춤추는 동안 그 자리에 머물러 있지는 않을 테니까. 하지만 목적지는 존재하지 않아.
p305. 철학자: 여행을 하는 목작이 뭐지? 예를 들어 자네가 이집트로 여행을 갔네. 그때 자네는 되도록 효율적으로, 되도록 빨리 쿠푸 왕의 거대 피라미드에 도착했다가 그대로 최단거리로 돌아올 텐가? 그런 건 여행이라 부를 수 없지. 집에서 나온 순간, 그 자체가 이미 ‘여행’이야. 물론 어떤 사정이 생겨 피라미드에 도착하지 못한다고 해도 ‘여행을 하지 않은 것’은 아니네.
p309. 철학자: ‘지금, 여기’에 스포트라이트를 비춘다는 것은, 지금 할 수 있는 것을 진지하고 빈틈없이 해나가는 것을 뜻한다네.
p312. 철학자: 목표 같은 건 없어도 괜찮네. ‘지금, 여기’를 진지하게 사는 것, 그 자체가 춤일세. 심각해질 필요 없어. 진지하게 사는 것과 심각한 것을 착각하지 말게.
p313. 철학자: 인생 최대의 거짓말, 그것은 ‘지금, 여기’를 살지 않는 것이라네. 과거를 보고, 미래를 보고, 인생 전체에 흐릿한 빛을 비추면서 뭔가를 본 것 같은 착각에 빠져 있는 거지. 자네는 지금까지 ‘지금, 여기’를 외면하고 있지도 않은 과거와 미래에만 빛을 비춰왔어. 자신의 인생에 더없이 소중한 찰나에 엄청난 거짓말을 했던 거야.
p315. 철학자: 가령 엄청난 천재지변을 당했을 때 원인론에 입각해서 “왜 이런 일이 일어난 걸까?”라고 과고를 돌아보며 따져봤자 무슨 의미가 있겠나? 우리는 곤경에 처했을 때야말러 앞을 보며 “이제부터 무엇을 할 수 있을까?”를 생각해야 하네. 그래서 아들러는 “일반적으로 인생의 의미란 없다.”라고 말하고는, 이어서 “인생의 의미는 내가 나 자신에게 주는 갓이다”라고 말했다네.
p318. 철학자: 자네가 어떠한 찰나를 보내더라도, 설령 자네를 싫어하는 사람이 있다고 하더라도 ‘타인에게 공헌한다’는 길잡이 별만 놓치지 않는다면 헤맬 일도 없고 뭘 해도 상관없어. 나를 싫어하는 사람에게 미움을 받으먀 자유롭게 살면 되네.
p319. 철학자: 한 사람의 힘은 크다. 아니, ‘내 힘은 헤아릴 수 없이 크다’라는 점일세. ‘내’가 바뀌면 ‘세계’가 바뀐다. 세계란 다른 누군가가 바꿔주는 것이 아니라, 오로지 ‘나’의 힘으로만 바뀔 수 있다는 뜻이지. 아들러 심리학을 배우고 나면 내 눈에 보이는 세계는 이제 과거의 세계가 아니라네.
[ 책 읽기를 마치며 ]
가기개발이나 심리치유 관련된 책이 서점에 가면 참 많은데요, 그중에서도 이 책은 참 통찰이 많고 실질적인 도움을 주는 책이어서 e-book으로 원서를 사서 먼저 읽고, 또 번역서 종이책을 사서 또 읽었습니다. 철학자가 말했듯이 "내 힘은 헤아릴 수 없이 크다. 내가 바뀌면 세계가 바뀐다"는 말처럼, 남 탓하고 남 눈치보면서 허송세월할 게 아니라 '지금, 여기'에서 '바로 내가' 시작할 수 있는 '용기'를 낼 수 있게 북돋아주는 고마운 책입니다.
"정-반-합"의 변증법의 관점에서 보면 이 책은 "프로이드의 원인론 (정)"을 정면 반박하는 "아들러의 목적론 (반)" 을 소개하였습니다. 이제 "정"과 "반"을 잘 소화하고 취사선택해서 나의 것으로 만드는 "합"은 독자에게 남겨진 과제일 것입니다.
"자신의 삶을 자유롭게 주체적으로, 행복하게 지금 여기를 춤추며 살기"를 원하는 모든 분들께 이 책을 강력히 추천합니다.
시계열 데이터를 분석할 때 꼭 확인하고 처리해야 하게 있는데요, 바로 결측값 여부 확인과 결측값 처리입니다.
시계열 데이터의 결측값을 처리하는 방법에는
(1) 보간 (Interpolation)
(2) 이전 값 또는 다음 값 이용 (previous/next value)
(3) 이동 평균 (Moving average)
등의 여러가지 방법이 있습니다.
[ 시계열 데이터 결측값 처리 방법 (How to handle the time series missing data) ]
아래의 보간(Interpolation)에 대한 내용은 Wikipedia 의 내용을 번역하여 소개합니다.
데이터 분석의 수학 분야에서는 "보간법(Interpolation)을 이미 알려진 데이터 포인트들의 이산형 집합의 범위에 기반해서 새로운 데이터 포인트들을 만들거나 찾는 추정(estimation)의 한 유형"으로 봅니다.
공학과 과학 분야에서는 종종 샘플링이나 실험을 통해서 많은 수의 데이터 포인트들을 획득하는데요, 이들 데이터는 어떤 함수(a function)의 값이나 독립변수(independent variable)의 제한적인 수의 값을 표현한 것입니다. 종종 독립변수의 중간 사이의 값을 위한 함수의 값을 추정(estimate the value of that function for an intermediat value of the independent variable)하는 보간이 필요합니다.
밀접하게 관련된 문제로서 복잡한 함수를 간단한 함수로 근사하게 추정(the approximation of a complicated function by a simple function)하는 것이 있습니다. 어떤 주어진 함수의 공식이 알려져있지만, 너무 복잡해서 효율적으로 평가하기가 어렵다고 가정해봅시다. 원래의 함수로부터 적은 수의 새로운 데이터 포인트는 원래의 값과 상당히 근접한 간단한 함수를 생성해서 보간할 수 있습니다. 단순성(simplicity)으로부터 얻을 수 있는 이득이 보간에 의한 오차라는 손실보다 크고, 연산 프로세스면서도 더 좋은 성능(better performance in calculation process)을 낼 수도 있습니다.
이번 포스팅에서는 Python scipy 모듈을 이용해서 시계열 데이터 결측값을 보간(Interpolation)하는 방법을 소개하겠습니다.
1. 이전 값/ 이후 값을 이용하여 결측값 채우기 (Imputation using the previous/next values)
2. Piecewise Constant Interpolation
3. 선형 보간법 (Linear Interpolation)
4. 스플라인 보간법 (Spline Interpolation)
[ Python scipy 모듈을 이용한 결측값 보간 (Interpolation using Python scipy module) ]
먼저 '0.5'로 동일한 간격을 가지는 x 값들에 대한 사인 함수 (sine function) 의 y값을 계산해서 예제 데이터로 사용하겠습니다. 아래 예졔의 점과 점 사이의 값들이 비어있는 결측값이라고 간주하고, 이들 값을 채워보겠습니다.
import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt
## generating the original data with missing values
x = np.arange(0, 4*np.pi, 0.5)
y = np.sin(x)
plt.plot(x, y, "o")
plt.show()
original data with missing values
1. 이전 값/ 다음 값을 이용하여 결측값 채우기 (Imputation using the previous/next values)
데이터 포인트 사이의 값을 채우는 가장 간단한 방법은 이전 값(previous value) 나 또는 다음 값(next value)을 이용하는 것입니다. 함수를 추정하는 절차가 필요없으므로 연산 상 부담이 적지만, 데이터 추정 오차는 단점이 될 수 있습니다.
## Interpolation using the previous value
f_prev = interpolate.interp1d(
x, y, kind='previous') # next
y_new_prev = f_prev(xnew)
plt.plot(x, y, "o", xnew, y_new_prev, '-')
plt.show()
interpolation using the previous value
2. Piecewise Constant Interpolation
위 1번의 이전 값 또는 다음 값을 이용한 사이값 채우기를 합쳐놓은 방법입니다. Piecewise Constant Interpolation은 특정 데이터 포인트를 기준으로 가장 가까운 값 (nearest value) 을 가져다가 사이값을 보간합니다. ("최근접 이웃 보간"이라고도 함)
간단한 문제에서는 아래 3번에서 소개하는 Linear Interpolation 이 주로 사용되고, Piecewise Constant Interpolation 은 잘 사용되지 않는 편입니다. 하지만 다차원의 다변량 보간 (in higher-dimensional multivariate interpolation)의 경우, 속도와 단순성(speed and simplicity) 측면에서 선호하는 선택이 될 수 있습니다.
## Piecewise Constant Interpolation
f_nearest = interpolate.interp1d(
x, y, kind='nearest')
y_new_nearest = f_nearest(xnew)
plt.plot(x, y, "o", xnew, y_new_nearest)
plt.show()
Piecewise constant interpolation
3. Linear Interpolation
선형 보간법은 가장 쉬운 보간법 중의 하나로서, 연산이 빠르고 쉽습니다. 하지만 추정값이 정확한 편은 아니며, 데이터 포인트 Xk 에서 미분 가능하지 않다는 단점도 있습니다.
일반적으로, 선형 보간법은 두 개의 데이터 포인트, 가령 (Xa, Ya)와 (Xb, Yb), 를 사용해서 다음의 공식으로 두 값 사이의 값을 보간합니다.
Y = Ya + (Yb - Ya) * (X - Xa) / (Xb- Xa) at the point (x, y)
## Linear Interpolation
f_linear = interpolate.interp1d(
x, y, kind='linear')
y_new_linear = f_linear(xnew)
plt.plot(x, y, "o", xnew, y_new_linear, '-')
plt.show()
Linear interpolation
4. Spline Interpolation
다항식 보간법(Polynomial Interpolation)은 선형 보간법을 일반화(generalization of linear interpolation)한 것입니다. 선형 보간법에서는 선형 함수를 사용했다면, 다항식 보간법에서는 더 높은 차수의 다항식 함수를 사용해서 보간하는 것으로 대체한 것입니다.
일반적으로, 만약 우리가 n개의 데이터 포인트를 가지고 있다면 모든 데이터 포인트를 통과하는 n-1 차수의 다차항 함수가 존재합니다. 보간 오차는 데이터 포인트 간의 거리의 n 차승에 비례(interpolation error is proportional to the distance between the data points to the power n)하며, 다차항 함수는 미분가능합니다. 따라서 선형 보간법의 대부분의 문제를 다항식 보간법은 극복합니다. 하지만 다항식 보간법은 선형 보간법에 비해 복잡하고 연산에 많은 비용이 소요됩니다. 그리고 끝 점(end point) 에서는 진동하면서 변동성이 큰 값을 추정하는 문제가 있습니다.
스플라인 보간법은 각 데이터 포인트 구간별로 낮은 수준의 다항식 보간을 사용 (Spline interpolation uses low-degree polynomials in each of the intervals) 합니다. 그리고 이들이 함께 부드럽게 연결되어서 적합될 수 있도록 다항식 항목을 선택(, and chooses the polynomial pieces such that they fit smoothly together)합니다. 이렇게 적합된 함수를 스플라인(Spline) 이라고 합니다.
스플라인 보간법(Spline Interpolation)은 다항식 보간법의 장점은 살리고 단점은 피해간 보간법입니다. 스플라인 보간법은 다항식 보간법처럼 선형 보간법보다 보간 오차가 더 작은 반면에, 고차항의 다항식 보간법보다는 보간 함수가 부드럽고 평가하기가 쉽습니다.
## Spline Interpolation
f_quadr = interpolate.interp1d(
x, y, kind='quadratic') # cubic
y_new_quadr = f_quadr(xnew)
plt.plot(x, y, "o", xnew, y_new_quadr)
plt.show()
이번에도 아주 오래된 영화인 ‘초콜릿 (Chocolat, 2000년)’를 기억 속에서 끄집어 내서 다시 보았어요. 영화 포스터 처럼 영화 속의 수많은 연인들 중에서 가장 사랑스럽고 또 성숙한 관계의 연인을 꼽으라면 저는 자유로운 두 영혼끼리 만난 비엔(줄리엣 비노시)과 록스(조니뎁) 커플을 꼽을 거예요.
영화 초콜렛, Chocolat
하지만 이 영화는 단지 ‘남녀 간의 사랑’ 영화인 것만은 아니예요. 이 영화는 자유로운 영혼에 대한 영화, 남의 눈치를 보며 남의 기대에 맞추어 살기 보다는 참 나로 지금, 여기를 사는 것이 무엇인지, 또 그게 얼마나 어렵고 또 큰 “용기”가 필요한지를 보여주는 영화예요. 종교와 공동체가 때론 얼마나 억압적일 수 있는지, 반면에 포용과 섬김과 배려 속에서는 얼마나 큰 행복의 근원이 될 수 있는지도 볼 수 있게 해주는 영화예요. <미움받을 용기> 라는 책이 생각났어요.
<경고: 여기서 부터는 영화에 대한 내용이 노출되므로 아직 영화를 안보신 분들은 나중에 읽어주세요. 스포일러가 상당히 포함되어 있습니다.>
1. 있는 그대로의 나 자신으로, 지금 여기를 사는 데는 큰 “용기(Courage)”가 필요하다.
영화는 적막한 프랑스 시골의 Lansquenet 라는 마을을 보여주면서 “만약 당신이 이 마을에 산다면, 당신은 다른 사람들이 당신에게 무엇을 기대하는지 알고 있습니다 (If you live in this village, you understood what was expected of you.”) 라는 말로 시작을 해요. 왠지 남의 집에 숫가락, 젓가락이 몇 개가 있는지까지 서로 모조리 꾀뚫고 있어서 개인의 사생활이라고는 거의 없는 숨막히는 시골 마을이 상상이 됩니다. 이 마을에 북풍이 불던 날 Vianne(줄리엣 비노시 역)과 딸 Anouk 이 "운명처럼(were fated)" 오게 돼요.
Chocolat - fate
이 시골 마을의 시장인 레이노드 백작(the Comte de Reynaud, 알프레드 몰리나 역)은 성당도 나가지 않고, 사순절에 금식은 커녕 초콜렛 가게를 열려고 하고, 법적으로 결혼도 하지 않았는데 딸이 있는 비엔을 마을의 안녕을 해칠 위험이 있는 적(enemy)이자 사탄(Satan)으로까지 생각해요.
* 레이노드 (성당 신부에게): “아직 새로운 초코렛 가게에 가보지 않았다면 한번 가보는게 좋겠어요. 우리의 적을 아는 것은 중요하니깐요. (It’s important to know one’s enemy.)”
그리고 Reynaud 시장은 성당 신부의 설교문에 초콜렛을 사탄에 비유하는 문장을 추가해서 Vianne이 마을 사람들로부터 사탄의 조력자인 것처럼 비난을 받게 만듭니다.
* 성당 신부 Pere Henri의 설교 중에서: “사탄은 여러 모습으로 나타납니다. 대중음악 속의 가사로, … 그중에서도 초콜렛 만큼 무해하고 순수한 것처럼 보이는 사탄의 조력자가 있을까요?(For what could seem more harmless, more innocent… than chocolate?)”
Chocolat - corrections on preach notes
마을의 아이들에게 왕따를 당하고 울면서 집에 들어온 Vianne의 딸 Anouk 은 물어봐요.
* Anouk: “우리는 사탄의 조력자인가요(Are you Satan’s helper)?” * Vianne: “남들과 다르게 산다는 것은 쉽지 않단다.(It’s not easy being different.)”
사실 Vianne 의 가족이 시골 마을에 와서 법을 어겼다던지, 다른 사람을 해쳤다든지, 재물상의 손해를 끼쳤다든지, 남의 자유를 침해했다든지… 그런거 없어요. 모두 개인의 자유의 한도 내에서 허용될 수 있는 것들이거든요. 시장 Reynaud 와 마을 사람들이 적대감을 가지고 Vianne 가족을 차별했던 이유는 단지 Vianne 가족이 자신들과 다르게 성당도 안나가고, 자신들처럼 사순절에 금식도 안하고, 자신들처럼 결혼이라는 제도를 따르지 않았기 때문이예요.
Roux (조니뎁 역)와 집시 일행이 배를 타고 강둑에 나타났을 때도 마을 사람들의 태도는 똑같았어요. 시의회에서는 법적으로 강변은 공동의 자산이므로 집시 일행을 쫓아낼 명분이 없다고 했어요. 하지만 Reynaud 시장은 마을사람들을 선동해서 Roux 일행에게 마을사람들이 보이콧을 해서 적대감을 보여주자고 해요. Roux 가 소다수를 사기 위해 Serge의 가게에 들렸을 때 이런 모욕적인 말을 듣게 돼죠.
Vianne의 정착할 생각은 없냐는 질문에 대해 Roux는 다른 사람의 시선을 의식하면서 살기는 싫기 때문에 비록 차별 대우를 당할지언정 방랑자의 삶을 선택할거라고 답해요. 앞서의 Vianne가 딸 Anouk에 했던 “남들과 다르게 산다는 것은 쉽지 않단다.”와 슬프게도 통하는게 있지요?!
* Vianne: “당신은 어딘가에 정착하는 거에 대해서 생각해본적 있어요?” (Don’t you ever think about belonging somewhere?) * Roux: “치러야할 비용이 너무 커요. 결국 다른 사람이 기대하는대로 살아야 할거예요. 그건 싫어요.” (Price is too high. You end up caring what people expect of you. No.)
2. 상처받은 치유자 (Wounded healer)
이 영화에서 주인공 Vianne과 버금가게 중요한 인물이 저는 남편에게 매맞고 살던 Josephine (레나 올린 역) 이라고 생각해요. (심지어 조니뎁이 연기한 Roux 보다도 더 중요한 인물이라고 생각해요.) Josephine이 Vianne를 만나서 어떻게 치유받고, 성장하고, 더 나아가서는 치유자가 되는지를 보는 것은 흥미롭고 짜릿해요. 비슷한 처지에 힘들어하는 누군가에게는 큰 힘이 될거라고 봐요.
Josephine은 남편 Serge로 부터 구타를 당하면서, 거의 하녀 혹은 동물 (젖소 cow) 취급을 당하면서 살고 있어요. 이런 남편을 사랑하지도 않구요. 그렇다보니 심리적으로 불안정하고, 강박적으로 다른 사람의 물건을 훔치기까지 해요. 아래의 대화는 초반에 Josephine이 Vianne를 만났을 때 나눴던 대화예요. Josephine은 자유롭게 사는 Vianne을 보고 다른 마을 사람들처럼 비난하면서도, 동시에 엄청 부러워했을거 같아요.
* Josephine: “I heard you don’t go to church” * Vianne: “That’s right.” * Josephine: “You won’t last long here. People talk.
You don’t misbehave here. It’s just not done, did you know that?
If you don’t go to confession or if you don’t dig your flower beds or if you don’t pretend. …
that you want nothing more in your life than to serve your husband three meals a day
and give him children and vacuum under his ass, then… you’re… then you’re crazy. …
I’m weak. I don’t love my husband and I lie.”
참다 못한 Josephine은 결국 남편 Serge를 떠나고, Vianne의 집으로 와서 초콜렛을 만드는 방법을 배우면서 같이 살게 돼요. 그리고 조금씩 자존감을 회복하게 되지요. 양복을 쫙 빼입고 꽃을 들고 찾아와 사과를 하는 법률적 남편 Serge에게 Josephine 은 위트있으면서도 당당하게 말해요. Josephine의 한마디는 정말 크크~하고 웃게 만들면서도 말속에 뼈가 있는 촌철살인의 힘이 있어요.
* Serge: “안돼. 제발 그러지마, 조세핀. 우리는 아직 하나님의 이름으로 맺어졌던 부부라구. (No, please don’t, Josephine. We are still married in the eyes of God.)” * Josephine: “그렇다면 하나님은 장님인게 분명해요.(Then he must be blind.)”
Chocolat - he must be blind
술에 잔뜩 취해 Josephine을 강제로 데리러 온 법률상의 남편 Serge 가 Vianne에게 폭력을 휘두르자 Josephine은 후라이팬으로 Serge를 제압하지요. 이 장면에선 조마조마 하다가 통쾌하고 후련해져요. 예스~!
* Serge: “You don’t know how to use skillet without me.” * Josephine (Serge를 후라이팬으로 내려친 후): “Who says I can’t use a skillet?”
영화의 끝부분에서 당뇨병이 있던 Armande 가 생일 파티 후에 죽게 되자 마을 사람들은 Armande에게 초콜렛 음식을 준 Vianne을 비난하고, Vianne은 죄책감을 느껴요. 마을사람들로부터 환영받지 못한다고 느낀 Vianne는 북풍이 불자 다시 현재의 마을을 떠나 다른 마을로 떠나려고 해요. 이때 Josephine이 Vianne을 막아서면서 마을에 남아서 같이 살기를 부탁해요. Vianne가 “변한건 없다”고 말하면서 떠나겠다고 하자 Josephine이 “나한테는 아니예요 (Not for me)” 라고 말하는 장면은 가슴 뭉클해요. 그동안 상처받은 약자(wounded, weak person) 였던 Josephine이 이제는 자가 스스로 서기 시작하고, 더 나아가서 Vianne을 보듬어주기 시작했거든요.
* Josephine: “Did you believe that I can change?
If you leave, everything will go back to the way it always was.” * Vianne: “It is the way it always was.” * Josephine: “Not for me.”
Chocolat - Not for me
이 영화 ‘초콜릿’은 심리적으로, 경제적으로 홀로 선 여성들의 나눔과 치유, 우정에 대한 영화이기도 해요. 이 영화를 보면서 여성이 주체로서 삶과 공동체를 일궈나가는 ‘안토니아스 라인(Antonia's Line, Antonia, 1995)’ 이라는 영화가 생각났어요. 남성보다는 특히 여성들에게 크기 울림이 있을 영화일거 같아요.
<Cafe Armande 를 운영하며 독립한 Armande>
Chocolat - cafe Armande
3. 인간관계는 행복과 불행의 원천, 나의 선택은? 나의 역할은?
심리학자 아들러는 “인간의 고민은 전부 인간관계에서 비롯된 고민이다”라고 말했어요. 이 영화를 “인관관계”에 주목해서 풀어보는 것도 재미있을거 같아요. 이 영화의 주인공 비엔(Vianne, 줄리엣 비노시 역)은 삐거덕 거리는 관계의 “치유자”, 열정이 식은 관계의 “촉진자”, 사랑에 머뭇거리는 관계의 “중매자” 역할을 했거든요.
Vianne은 초콜릿 가게에 들어온 손님들에게 각가지 모양이 새겨진 원판 접시를 돌리면서 “저는 사람들의 초콜릿 취향을 알아보는 특별한 재능이 있어요. 무엇이 보이나요?” 라는 질문을 해요. (사람들은 보이는 것을 보는게 아니라 자기가 보고 싶은 것을 보죠! ^^)
광야를 달리는 야생말이 보인다는 아주머니에게 선물로 “남편의 열정을 일깨워 줄 초콜릿”을 선물해요. 초콜릿이 잠만 늘어지게 잘 줄 아는 남편의 열정을 일깨워 주는 장면이 너무 재미있었어요.
저 행복해하는 남편과 아내의 모습, 음큼하면서도 야릇한 미소를 짓는 저 부부를 한번 보세요! 유후~ ㅎㅎ
Chocolat - Passion
할머니 미망인 Audel과 할아버지 Blerot 가 서로 호감을 가지고 있지만 고백을 못하고 있다는 것을 눈치챈 Vianne는 초콜릿 선물을 매개로 해서 두 어르신의 사랑을 연결해줘요. Blerot 이 성당에 찾아가서 Henri 신부에게 “Audel 생각이 자꾸 나요”라고 고해성사를 하자, 젊은 Henri 신부는 “그 나이에요?”라면서 두 노인들의 사랑에 대해 이해를 못해요. 하지만, 주변을 보세요. 외로움을 느끼는 어르신들의 연애, 사랑이 결코 혈기왕성한 20대에 못지 않다는 것을요.
Chocolat - Love between Seniors
이 영화에서 미망인 Madame Audel 은 전사한 남편을 애도하고 있다고 나오는데요, 남편이 전사한게 제2차 세계대전이 아니라 제1차 세계대전이었다는게 함정이예요. 남의 시선을 의식하면서 미망인으로 죽은 남편을 30년 넘게 애도하고 있었던 거예요. -_-;
* Vianne: “전쟁 후로 15년이 지났겠네요.(It must have been 15 years since he passed away).” * Blerot: “아니요. 그 전쟁말구요. 아우델씨는 1917년 1월12일에 전사하셨어요.
(Not that war. Monsieur Audel was killed on January the 12th, 1917.)”
4. 성당(교회)에 잘 나가는 당신은 예수님의 참 제자인가, 아니면 그저 바리새인인가?
이 영화의 감독 라세 할스트롬이 종교에 대해서 어떤 생각을 가지고 있는지는 모르겠어요. 다만, 이 영화는 종교에 대해 얄밉도록 실랄하게 풍자를 하면서 ‘종교의 문자적인 교리’에 맞춰사는 삶과 ‘종교의 참 의미와 가르침’을 따라 사는 삶은 다르다는 것을 보여주고 있어요. 사실, 이는 비단 종교뿐만이 아니라 우리가 가지는 정치적인 사상, 윤리적인 신념, 공동체의 가치 등에 대해서도 똑같이 해당이 될거예요.
Roux의 배가 강변에 도착했을 때 Vianne과 Anouk가 와서 데화를 하자 Roux가 약간은 비꼬면서 물어봐요.
Roux: “Are you here to save us? Are you the catholic Aid Society?
French Family League? Communist workers? Which idea are you selling?” Anouk: “Chocolate” Roux: “I should probably warn you. You make friends with us…
you’ll make enemies of others.”
성당이나 교회 다니는 분들 중에서 이 영화를 보고 불편해할 분들도 계실거 같아요. 하지만 저는 이 영화가 성경 말씀에 반하거나 기독교를 비꼬려고 한다고는 생각 안해요. 성경 속의 예수님은 하나님의 아들이면서 동시에 인간의 몸을 하고 이 세상에 가장 낮은 자의 곁으로, 가장 낮은 자를 위해서, 인간의 죄를 사하여 주기 위해서 이 땅에 오셨잖아요. 단지 “나와, 우리와 다르다”는 이유 만으로 예수님께서 누군가를 차별하고 부당하게 대우하는 모습을 저는 도저히 상상할 수가 없어요. 그런면에서 보면 비록 겉으로는 경건하고 율법에 충실히 따르는 시장과 마을 주민들이 예수님의 제자인것 처럼 보일수는 있지만, 그 마음이나 행동은 실제 예수님께서 불같이 화를 내셨던 바리새인의 모습 그 이상도 그 이하도 아니예요.
게다가 영화 감독은 친철하게도 영화의 마지막에 신부 Pere Henri 의 설교를 통해서 너무나 친절하게도 감독이 전하고자 하는 종교나 사상의 참모습에 대해서 말해주고 있어요.(설교라는 형식을 통해 전달하다보니 너무 노골적이고 직설적이긴 해요. 여운없이 너무 돌직구마냥 교훈적이랄까요… ^^;)
* Henri: “I don’t want to talk about His divinity. I’d rather talk about his humanity.
His kindness, His tolerance. Listen, here’s what I think.
I think we can’t go around measuring our goodness by what we don’t do.
By what we deny ourselves, what we resist, and who we exclude.
I think we got to measure goodness… by what we embrace…
what we create… and who we include.”
Vianne 를 못잡아 먹어서 안달이던 시장 Reynaud 는 Vianne 의 가게에 무단침입해서 깽판을 치게 되고, 그 와중에 사탄이라고 욕했던 초콜렛의 달콤한 유혹에 넘어가서 정신을 잃을 정도로 초콜렛의 쾌락에 빠져들어요. 그리고 다음날 아침에 Vianne 와 Henri 신부에게 발각이 되지만요. Vianne 는 아무에게 말하지 않겠다고 약속하면서 눈감아주지요. 이러면서 시장 Reynaud 도 다른 사람에게 점점 관용을 베풀게 되게 사람이 나긋나긋해져요. 이처럼 용서의 힘이 커요. 나도 죄인이구나, 나도 약한 인간이구나 하는 깨우침의 힘도 크고 말이지요.
Chocolat - forgivenesschocolat - forgiveness 2
5. 억압당한 욕망은 터지기만을 기다리는 시한폭탄이다.
Josephine은 자신의 욕망을 억압하면서 자신에게 거짓말을 하면서 살다보니 “(비록 의도적은 아닐지라도) 남의 물건을 훔치는 도벽”이라는 비정상적인 행동을 보이고 다른 사람들과 어울리지 못하는 삶을 살고 있어요. 그러다가 결국 폭발해서 남편으로 부터 도망치게 되지요.
Vianne는 가게의 임대인인 할머니 Armande와 손자 Luc 가 서로 만나서 행복한 시간을 보내게 주선해주기도 해요. 미망인이자 Luc의 엄마인 Carolline (캐리 앤 모스 역) 은 Armande가 Luc에게 나쁜 영향을 끼칠까봐 할머니와 손자인데도 서로 못 만나게 해요. 이 영화에서 Carolline은 시장 Reynaud 와 버금가게 기독교 교리와 사회 규율에 충실하게 살아가는 모범생으로 묘사되고 있어요. 그러다보니 할머니 Armande는 숨도 못쉬고 살아가는 손자 Luc가 안쓰러워 보였을 거예요.
* Armande: “Well, I’m a bad influence. Because I don’t like her treating him like a trained poodle.
I swear, that boy doesn’t piss without her permission.
If only she’d let him run, let him breathe, let him live.”
Vianne 덕분에 손자 Luc를 만나서 소소한 재미를 느끼며 시간을 보내면서, “~을 해야만 해요” 또는 “~을 하면 안돼요”라면서 규율에 억매여 사는 손자 Luc에게 Armande가 말해요.
* Armande: "<하면 안돼요>라는 말에 대해 너무 걱정하기 말거라."
(Don’t worry so much about <not supposed to>.)
손자 Luc 의 그림을 보면 피, 뼈와 해골, 창과 칼, 시체가 즐비해요. 엄마로 부터 광잉보호를 받으며 도덕적으로 옳다고 여겨지는 것들만 보고 듣고 행동하라고 가르침을 받지만, 아마 그러면 그럴수록 그 반대편에 있는 느낌, 욕망, 생각들이 Luc의 마음속을 채웠을 거얘요. “Sould”, “Have to”, “not supposed to do” 와 같이 사람의 본성을 억압하는 말들에 둘러싸여 살면 ‘내가 아닌 나로 살아야 하기에’ 사람 마음은 병이 들거예요. 때론 해방, 발산, 자유가 필요할텐데요, 이걸 Armande가 Luc에게 느끼고 맛보게 해줘요.
어둡기만 했던 Luc의 그림은 ‘실물보다 더 젊은 모습의 할머니 초상화’로 거듭나요. 코피를 흘리며 집안에 갇혀(?) 살던 Luc는 이제 초콜릿 파티에서 웃고, Roux의 배위에서 할머니와 함께 춤을 추면서 놀아요. 욕망은 억압하면 병이 되고 쌓였다가 폭발할 수도 있고, 사회적 규범과 잘 조화를 이루면서 승화시키면 건전한 발전과 성숙의 촉매제가 될 수도 있음을 알 수 있습니다.
6. 인생의 거짓말 앞에 솔직해지기, 나도 때론 사랑받고 싶다.
Josephine 은 남편을 사랑하지 않지만 매를 맞으면서도 같이 살고 있는 자신을 향해 “I don’t love my husband and I lie.” 라고 말해요. 자신의 인생에 대해 거짓말을 하고 있다구요.
Vianne도 한 마을에 머무르지 않고 북풍이 불 때마다 마을을 떠돌아 다니는 이유에 대해서 자신에게 거짓말을 해요. 표면적으로는 Vianne의 할머니와 어머니로 부터 흐르는 마야인의 피, 운명, 사명같은 것에 어쩔 수 없이 끌려서 Cocoa의 치유와 열정의 효염을 전파하고 사람들을 치유하기 위한 것처럼 말해요. 하지만 파티 후 Roux 와의 대화를 나누면서 Roux는 눈물을 터트려요.
* Vianne: “모든 마을 사람들이 저를 좋아하지 않아요(against me). …
사실은 딸 아녹은 마을을 떠돌아 다니는 것을 너무나 싫어해요
(Anouk hate moving around the villages.).”
다른 사람을 치유해주고 또 관계를 맺어주곤 했던 Vianne 도 사실은 사랑받고 싶고, 의지하고 싶고, 다른 사람들에게 인정도 받고 싶은 욕구도 그만큼 컸던 거예요. 하지만 마을 사람들로부터 배척당하고 소속감을 느끼지 못하자 할머니와 어머니로부터 내려오는 운명과 북풍을 핑계로, 자신에게 거짓말을 하면서 다른 마을로 떠나는 회피를 하려던 것이었지요.
Josephine이 Vianne로 부터 도움을 받아 행복과 삶의 활력을 찾았던 마을 사람들을 모아서 Vianne 에게 ‘이 모습을 보세요. 당신은 혼자가 아니예요. 우리는 당신을 사랑해요. 우리는 당신과 함께 이고 싶어요!’ 라는 마음을 전해주었을 때 비로서 Vianne 는 이 마을에 정착을 하기로 마음을 정해요.
Chocolat - we love you too
영화의 마지막에 Anouk의 나레이션이 시처럼 흘러요. (영어의 운율이 너무나 멋져서 원문 그대로 옮겨요.) 마지막 문장, 눈여겨 보세요. “다른 누군가에 의해서, 나중에(By someone else, next time)” 이라면서 이제 Vianne과 Anouk는 어찌보면 운명처럼 옭아매었던 방랑의 사슬을 끊고 진짜 자유로운 영혼이 되었어요.
The wind spoke to Vianne of towns, yet to be visited. Friends in need, yet to be discovered. Battles, yet to be fought. By someone else, next time
세상의 모든 문제를 내가 다 짊어질 필요는 없잖아요? 예수님께서 "너 자신을 사랑하는 것처럼 네 이웃을 사랑하라"고 말씀하셨을 때는 "나 자신을 사랑하기"가 "네 이웃을 사랑하기"와 동급으로 중요하다는 의미였을거예요.
북풍이 불던 날 비엔과 아눅이 처음 마을에 왔을 때는 조용하고 엄숙한 분위기에 회색빛으로 물들어 있었다면, 영화가 끝날 때쯤에는 온 마을이 축제 속에 즐거워하는 아이들의 웃음소리, 색깔이 알록달록한 옷을 입고 달콤한 음식을 입에 머금고 활짝 웃고 있는 사람들로 광장이 가득해요.
정말 가슴 따뜻해지고 사랑스러운 영화예요! (What a lovely movie it is!)
Python pandas의 DataFrame은 특이하고 재미있게도 두 개 이상의 MultiIndex Column 을 가지는 DataFrame 도 지원합니다. R의 DataFrame 이나 DB의 Table 에서는 칼럼이라고 하면 당연히 1개 layer의 칼럼들만을 지원하기에, Python pandas의 2개 이상 layer의 칼럼들을 가진 DataFrame 이 처음에는 생소하고 재미있게 보였습니다.
이번 포스팅에서는 Python pandas DataFrame 중에서 두 개의 MultiIndex Column 을 가지는 DataFrame 에 대해서, 이중 한개 layer의 칼럼을 기준으로 Stacking을 해서 wide-format 을 long-format으로 DataFrame을 재구조화 해보겠습니다.
reshaping pandas DataFrame with MultiIndex Column by Stacking
(1) csv 파일을 읽어와서 MultiIndex Column을 가진 pandas DataFrame 으로 만들기
(2) MultiIndex Column 의 Level에 이름 부여하기
(3) MultiIndex Column DataFrame의 특정 Level을 Stacking 해서 Long-format 으로 재구조화 하기
(4) 재구조화한 DataFrame의 Index 를 칼럼으로 재설정하고 정렬하기
위의 순서대로 간단한 샘플 데이터를 가지고 예를 들어보겠습니다.
(1) csv 파일을 읽어와서 MultiIndex Column을 가진 pandas DataFrame 으로 만들기
아래에 첨부한 dataset.csv 파일을 pandas 의 read_csv() 메소드로 csv 파일을 읽어와서 DataFrame으로 만들 때 header=[0, 1] 옵션을 지정해줌으로써 ==> 첫번째와 두번째 행을 MultiIndex Column 으로 해서 DataFrame을 만들 수 있습니다.
(3) MultiIndex Column DataFrame의 특정 Level을 Stacking 해서 Long-format 으로 재구조화 하기
위의 (2)번에서 MultiIndex Column의 첫번째 Level 에 'grp_nm' 이라는 이름을 부여했는데요, 이번에는 'grp_nm' 이름의 Level 을 기준으로 stack() 메소드를 사용해서 wide-format 을 long-format 의 DataFrame으로 재구조화(reshaping) 해보겠습니다.
이렇게 stacking을 해서 재구조화하면 MultiIndex Column DataFrame 이 (우리가 익숙하게 사용하는) SingleIndex Column의 DataFrame으로 바뀌게 되며, ==> 이제 'grp_nm'은 Index 로 들어가 있습니다.
마지막으로, MultiIndex Column 의 첫번째 Level 을 Stacking 하고 난 후 Index로 사용된 'grp_nm' 을 reset_index() 메소드를 사용해서 칼럼으로 재설정하고, ==> 가시성을 높일 수 있도록 sort_values(by=['grp_nm'])을 사용해서 'grp_nm' 칼럼을 기준으로 오름차순 정렬을 해보겠습니다.
<인간 만남 그리고 창조 (Human BE-ing)>, 일치와 나눔의 인간관계를 위하여 윌리암 피취 지음, 홍순철/ 고재섭 옮김, 도서출판 민훈당
<Human BE-ing>, How to have a creative relationship instead of a power struggle, written by William V. Pietsch
이 책은 제가 참 좋아하고 선물로도 여러번 사서 지인들에게 줬던 책이예요. 저는 원서랑 번역서랑 둘 다 가지고 있어요.
영어 원서의 제목은 <Human BE-ing> 예요. Not a Man but Human, Not to BE but to BE-ing 인 이유를 먼저 생각해보면 좋겠습니다. “인간(Human)”은 사회적 동물이기에 책 내용의 핵심이 만남과 관계임을 시사하고 있어요. 그리고 “성장하고 성숙하는 과정으로서의 존재(BE-ing)” 라는 점도 제목이 강조하고 있습니다(“BE”가 아니라 “BE-ing”인 것은 오타가 아니라, 진행형이자 과정으로서의 인간 존재를 강조하기 위해 저자가 만든 단어예요). 부제목은 “How to have a creative relationship instead of power struggle” (힘의 겨루기 대신 창조적인 인간관계를 맺는 방법) 이예요. 한글로 번역된 책의 제목 “인간 만남 그리고 창조 : 일치와 나눔의 인간관계를 위하여”도 나쁘지는 않은데요, 그래도 원서 제목이 무엇이고, 제목에 저자가 담고 싶었을 의미에 대해서는 한번 짚고 넘어가면 좋겠습니다.
인간 만남 그리고 창조, Human BE-ing, William V. Pietsch
글과 함께 그림도 같이 있어서 한결 이해하기 쉬워요. 게다가 풍선, 압력밥솥, 나무, 물 호스, 자동차, 소리굽쇠 같이 알기 쉬운 비유를 사용해서 우리 눈에 보이지 않는 마음의 작동 원리를 설명해주고 있어서 직관적으로 알기 쉽도록 설명해주고 있는 것 또한 다른 심리학이나 의사소통 관련 책과는 다른 이 책만의 장점이예요. 저자의 독자를 향한 배려를 느낄 수 있어요.
인간 만남 그리고 창조 : 감정 (Emotions)
심리상담 책을 읽다보면 빠지지 않고 항상 나오는 주제, 단어가 “전이(Transference)” 입니다. 이 책에서 전이(transference, 轉移)가 만약 우리가 의식적인 노력을 통해서 제대로 인식하지 못하면 일상의 많은 문제와 갈등의 원인이 될 수 있다고 경고하고 있어요.
“우리 모두에게는 자신이 만나는 사람들로부터 친숙한 타입을 찾으려는 경향이 있다. 기대하고 있는 ‘그 타입’에 맞지 않는 자질들은 무시해 버리는 것이다. 이러한 사실을 깨닫지 않으면 이전에 만났던 사람들로부터 받은 감정과 그로 인한 반응을 지금 만나고 있는 사람에게 그대로 적용시키려 할 것이다. 이 과정을 전이(轉移)라고 한다.” (p23)
우리의 뇌는 정보처리의 효율을 위해서 익숙한 상황에서는 “자동적으로 (automatically), 무의식적으로 (unconsciously)” 으로 행동하도록 프로그램되고, 습관(habits)이 된다는 것이예요. 의식하지 못하니깐 더 무서운거예요. 특히 “힘을 가진 사람과 관계를 갖게 될 때 종종 어린시절의 감정들이 다시 나타나” 자신이 의식하지 못한 채 어릴 때 습관화했던 셍존 전략을 성인이 되어서도 힘있는 사람 (예: 직장 상사) 에게 전이하기 쉽다는 거예요.
그러면 어떻게 어린시절의 감정의 전이에 나도 모른채 휘둘리지 않고 어떻게 창조적인 인간관계(creative relationship)을 맺을 수 있을지 궁금하지요? 이 물음에 대한 답이 바로 이 책의 목차랍니다. (책 본문 내용을 감안해서 역자가 좀더 길게 풀어서 제목을 번역했음. 괄호 안의 영어는 원서에 있는 목차 제목임.)
[ 목차 ] — 우리 자신을 이해하기 (Understanding Ourselves) 1장. 감정의 전이와 힘겨루기 (Transference and Power Struggles) 2장. 인간 존재의 유기적 본성 (The Problem of Trust) 3장. 진정한 자신이 되도록 그 조건을 제공함 (The Need to Be Somebody)
— 핵심적인 2단계 적용하기 4장. 신뢰, 경청, 명료화 (Reflecting) 5장. 존재하고자 하는 용기를 가지는 일 (Protecting)
— 문제 해결하기 (Solving Problems) 6장. 선택할 대안의 추구 (Exploring Alternatives) 7장. 변화를 향한 모험의 시도 (Risking Awareness)
원서의 p46, 번역서의 p45에 위의 목차를 한 페이지로 요약한 내용이 나오는데요, 아래에 원서의 내용에 충실하게 제가 다시 한번 옮겨보고 ‘직역’해보겠습니다.(최대한 직역, 일부 의역했음. 번역서는 너무 간소화해서 번역해 놓아서 충분히 뜻이 전달 안될 위험있어 보임.)
우리는 힘 겨루기를 넘어서 창조적인 인간관계로 발전시키기 위해 아래의 방법을 적용할 수 있습니다.: (We move away from a power struggle and toward a creative relationship when we:)
1. 각 개별 사람의 깊은 내면(본성)에는 기본적으로 건강한 동기와 잠재력이 존재한다는 것을 믿으세요. (1. TRUST that there is a basic healthy drive deep within each person.)
2. 각 개별 사람에게 감정적으로 의미있고 중요한 사람으로서 존재할 수 있는 것이 쉽고 자연스러울 수 있는 환경을 만들어주세요. (2. PROVIDE conditions that make it easy for a person to BE somebody emotionally.)
3. 신뢰하기, 경청하기, 명료화하기를 통해서 우리가 들은 것을 반영해서 상대방에게 재현해주세요. (3. REFLECT back what we are hearing through TRUSTING, LISTENING, and CLARIFYING.)
4. 내가 허용할 수 있는 경계선을 정의하고 방어함으로써 “자아”를 보호하세요. (4. PROTECT our own “self” through DEFINING and DEFENDING territory.)
6. (위의 1~5에 대한 행동을 통해) 우리 각자가 처한 위치와 관계에서 발생할 변화에 대한 위험을 감수하세요. (6. RISK a change in our own position.)
사실 이게 이 책의 내용 전부인데요, 이 각 문장들을 이해하기 쉽게 본문에 그림과 비유, 설명이 본문에 충실하게 나와있어요. 상대방의 감정에 대한 반영/재현(Reflecting)이 상대방의 존재에 대한 신뢰(Trust on “Other BE-ing”)라면, 자아존중에 기반한 나의 영역/경계선 보호(Protcting: Courage to “BE-ing”)는 나로 존재하기 위한 용기라고 말할 수 있을거예요.
시중에는 논리적 사고(Logical Thinkong), 문제 해결 방법 (Problem Solving) 관련된 책이 무척 많으며, 이들 책에서는 상황진단을 위한 프레임워크, 분석 툴, 지표, 알고리즘 등을 제시합니다. 단 한가지를 빼놓고서 말이지요. 시중의 문제해결 관련된 책들이 쏙 빼놓고 있는 한가지는 바로 “인간(Human)” 이예요. 우리는 논리로 무장해 “내가 옳다”는 주장을 관철시키면 상대방은 이에 순응하여 문제가 해결될 것이라고 생각하기 쉽지만, 실제로 우리 인간은 “감정(emotion)”과 “무의식(unconsciousness)”에 더 크게 좌지우지 되기 때문에 굴복당한 상대방은 속으로 분개하면서 복수할 기회를 노릴 것이예요. 이건 문제를 해결한게 아니라 승-패의 구도 속에서 패자가 언제 다시 승자의 등 뒤에 칼을 꽂을 지 모르는 시한폭탄과 같은 문제 봉합인 것이 잖아요. <인간 만남 그리고 창조> 책에서 집중적으로 다루고 있는게 바로 “인간(Human BE-ing)”, 그리고 “감정(Emotions)” 이란 점은 갈등 해결의 첫 단추로서 다른 시중의 책들이 쏙 빠트린 내용이라서 더 주목할 가치가 있다고 생각해요.
“감정이란 상대방이 우리에게 고의적으로 ‘만들어 준’것이 아니며, 단지 특정한 순간에 그가 ‘지닌’것에 불과”하므로 어느 누구도 상대방에게 (혹은 자기 자신에게도 물론) 감정에 대해 옳고 그름을 판단하고 평가해서 “그런 식으로 느껴선 안돼!” 라고 충고할 권리가 없다고 저자는 말하고 있어요.
신뢰한다는 것(Trusting)은 “(1) 두 사람 모두에게 그리고 그들의 관계 속에 무의식적인 일정한 형식이 존재하고 있다는 것과, (2) 공격으로 여겨지는 것은 대개 <존재>하고자 하는 상대방의 시도이며, (3) 인간관계에서의 성장은 <왜> 그 사람이 지금과 같은 감정을 느끼게 되었는지에 대해 의식적으로 판단을 미루고자 노력하는데서 비롯된다는 사실을 깨달음”을 뜻한다고 해요. (p86)
그리고 경청한다는 것(Listening)은 단지 표면에 드러난 생각만을 이해하는데서 그치는 것이 아니라 “감정이 전하는 <깊은 메시지>를 <듣고자> 노력하는 것”을 의미한다고 해요.
인간 만남 그리고 창조 (Human BE-ing by William V. Pietsch): 신뢰, 경청
신뢰와 경청을 통해서 상대방의 감정을 수용했다면, “상대방의 감정을 어떻게 들었는지를 나누는 명료화(Clarifying)를 통해서” 오해의 소지도 막고 “말하는 사람으로 하여금 상대방이 얘기를 듣기 위해 관심과 노력을 기울이고 있다는 것을 알게 할 수 있다”고 해요.(p97~98) 저도 상대방이 내 말에 귀 기울이고 있다고 느끼면 상대방의 진심이 느껴지고, 그때서야 이후의 대화가 감정적이지 않고 이성적으로 순탄하게 풀렸던 경험이 여러번 있어요.
저자는 “듣는 것은 곧 치유하는 것이다 (Hearing is Healing)” (p130) 이라고 말할 정도로 신뢰에 기반한 경청과 명료화는 사람의 마음을 움직이고 치유하는 놀라운 힘을 가지고 있어요. (가족과 같이 친밀하고 일상 속에 부딪치는 관계에선 잘 못하는게 함정. ㅠ_ㅠ 잊을 만 하면 자주 책 읽어보면서 상기하고 연습하는 방법밖에 없을거 같아요.)
5장 Protecting 은 “우리 자신이 되고자 하는 용기”, “나 자신을 오롯이 사랑하려는 용기”에 대한 내용이예요. 나의 “영역/경계선(Territory)”이라는 용어가 나오는데요, 우리도 일상적으로 “선 넘어오지 마세요”라는 말 쓰잖아요. 그거랑 비슷해요.
“영역(Territory)은 상대방이 그 안에 들어오면 우리가 계속해서 고통을 받게 되는 그런 부분으로, 우리의 존재가 영향을 받는 부분”이라고 저자는 정의하고 있어요. 그러면서 “우리에게는 우리의 영역이 어떤 것인지를 명시해 줄 책임이 있으며, 영역의 한계는 육체적이든 감정적이든 <아야!> 선(OUCH! line)에 의해 명시된다”고 강조하고 있어요. 자신의 영역, 아야!선을 상대방이 명확하게 알도록 해주는건 어느 누구도 아닌 바로 “내가” 해야만 하는 책임이라는 거예요. 이래서 나로 존재하기 위해서는 “나의 영역의 한계, 아야!선”을 예기할 수 있는 용기, 그로 인해 야기될 관계의 변화와 위험(Risk)도 기꺼이 감수하려는 용기가 필요해요. “성장에는 반드시 모험/위험이 따른다”고 하는거 다 인정하시죠?!
6장에서는 “자아 존중을 통해 선택할 대안을 탐색하는 것”에 대한 내용이예요. 이때 유일한 해결방안이라고 믿는 것을 고집할 것이 아니라 다양한 “창조적인 대안들”을 탐색하는 것이 “창조적 관계”로 나아가는 방법이라고 저자는 말하고 있어요. 우리는 각자 “자기 방어”에 집중된 “의미 체계”를 가지고 있다보니 사물이나 사건을 볼 때 다면적이고 다양하게 볼 줄 모르고 하나의 단면만을 전체인양 보는 한계가 있다는 거예요.
부록에 ‘가정에서’ 그리고 ‘직장에서’ 일어날 법한 갈등 상황을 가정하고 이 책에서 소개한 의사소통과 문제해결 방법을 적용해 본 사례가 나와요. ‘어, 이거 내 얘기네’ 싶은 내용들인데요, 나라면 어떻게 대응을 했을지 생각해보고 이 책에서 소개한 방법대로 했을 때와 비교를 해보면 차이점과 효과를 극명하게 대비해서 느낄 수 있을거예요.
부록에 힘겨루기/ 갈등 해결을 위한 10가지 점검 사항(Check list for problem solving)이 있습니다. 각 항목별로 상세한 설명까지 있으니 차분하게 읽어보고 실생활에 적용을 해보면 분명 도움을 받을 수 있을 거예요.
인간 만남 그리고 창조 (Human BE-ing by William V. Pietsch) : Check List for Problem Solving
나 자신의 존재를 있는 그대로 인정하고 사랑하며 보호하고, 또 내 주위의 가족, 친구, 동료를 더 잘 이해하고, 건강하고 성숙하게 의사소통하면서 창조적으로 갈등을 해결하고, 함께 성숙해나가길 원하는 모든 과정으로서의 인간(Human BE-ing)에게 이 책을 권합니다.
“만약 당신이 힘겨루기를 멈추고 상대방과 당신의 존재를 존중하고 사랑하게 된다면, 당신은 만남 사이에 가로놓인 장벽을 허물고 창조적 인간관계의 건설자가 될 수 있다”
저는 김형경씨의 소설 <사랑을 선택하는 특별한 기준 (2001)> 과 심리 에세이 <사람 풍경 (2004)>, <천 개의 공감 (2006)>를 30대 초반에 정말 재미있게 여러번 읽었답니다. 자전적 소설이었던 <세월 (1995)>은 저자의 고통이 전해져서 인지 너무나 힘들게 읽었던 기억이 나요. 집을 이사할 때마다 수십~수백 권의 책들을 버리곤 했는데요, 아마 저자의 책들도 버렸는지 지금은 찾을 수가 없고<천 개의 공감> 만 용케 책꽂이에 살아 남아서 올 해 다시 읽어봤어요.
이 책 <천 개의 공감>은 소설가 김형경씨가 한겨레신문의 “형경과 미라에게” 코너에서 독자들의 상담 질문에 저자가 답했던 내용을 책으로 엮어낸 “심리 치료 에세이” 입니다.(소설이 아니예요!)
천 개의 공감, 김형경 저
소설가가 왠 ‘심리 치유 에세이’란 말인가 하고 의아할 수도 있겠습니다. 하지만 저자의 자기소개 내용을 보고 있노라면 정신분석학과 심리학을 공부하고 자신을 치열하게 분석해본 소설가 만이 쓸 수 있는 글, 책 임을 알 수 있습니다. (최고의 과학자가 일반 대중을 위한 과학 교양서를 쓸 수 있는 것 처럼요.)
“소설가라는 직업은 인간과 세상을 탐구하는 영역의 일이라 믿으며 이십대 중반부터 정신분석학과 심리학에 관한 책을 읽어왔다. 지금 책장에는 그 분야의 책이 4백여 권쯤 꽃혀 있는데 그 중에는 한두 장만 읽은 책도 있고 서너 번쯤 반복해서 읽은 책도 있다. 삼십대 후반에는 실제로 약 1백회 가량 정신분석을 받았고, 그 후 여행과 일상생활 속에서 ‘잔존 효과’라 할 만한 긴 자기 분석의 시간을 보냈다”
독자의 상담 요청 글들 속에서 독자는 자신의 마음 속에서 소용돌이 치고 있는 불만과 화를, 그리고 다른 이와의 관계 속에서 겪는 갈등과 상처를 마주치게 될거예요. ‘어, 이거 내 얘긴데…… 나같은 사람이 여기도 있었네.’ 하면서요. 그러면서 저자는 어떻게 상처와 갈등의 근원이 되는 심리에 대해서 분석을 해보고, 이에 대한 조언과 처방도 해주고 있기에 특히 자신에게 울림이 있는 상담 요청 글이었다면 숨을 죽이면서 몰입해서 읽게 될거예요.
목차
1. 자기 알기
2. 가족 관계
3. 성과 사랑
4. 관계 맺기
1. 자기 알기
천 개의 공감 - (1) 자기 알기
“이 세상에서 우리가 바꿀 수 있는 유일한 사람은 우리 자신밖에 없다” - 괴테 -
모든 문제의 시작과 핵심은 “나의 마음을 있는 그대로 관찰해서 느끼고, 그 원인을 정확하게 이해하고 아는 것”일 거예요. 저자는 우리 안의 “과도한 의존성”을 살펴보라고 말합니다. 그리고 정신분석은 “주도적으로 행해야하는 지난한 과정”이라며 중도에 포기하지 말기를 권합니다.
그리고 “문제도, 해결책도 나의 내부에 있으니” 타인에게 너무 큰 것을 기대하지 말고 자신이 선택하고 반응하는 삶의 주도권을 가져오라고도 해요. 이때 “누군가가 하는 말과 행동에는 다 그럴 만한 이유가 있다”는 점을 깨닫고 유아기나 성장 과정에서 결핍되었거나 억압되었던 욕구가 특정 패턴으로 자신이 의식하지 못하게 고착화된건 아닌지 깊이 들여다보라고 해요.
또 하나, “타인의 싫은 점은 자신의 내면”이라고도 해요. 놀랍게도 말이지요. “치유의 핵심은 직면하기”라고 하는걸 보면 우리에게 필요한 걸 ‘직면할 수 있는 용기’, ‘타인의 싫은 점이 결국은 나의 그림자임을 인정하고 받아들일 수 있는 용기’ 이겠지요.
2. 가족 관계
천 개의 공감 - (2) 가족 관계
한 인간의 인격과 가치관, 자신에 대한 인식, 세상올 대하는 시선을 결정짓는 가장 큰 영향 요소를 꼽으라면 단연 가족일 것입니다. 저자는 “부모형제는 우리의 정신을 형성하는 자양분”이라고 말해요. 그러면서 유아기의 부모와 자식의 관계에 대해서는 프로이드 심리학을 차용해서 “엄마와 딸은 근원적 갈등 관계”, “아버지와 아들은 신화적 살해 관계”, “형제자매는 시기하고 질투하는 관계”라고 해요. 원천적으로 부모와 자식 간에 갈등 관계가 내재된 듯해서 왠지 불편하지요?
아래는 “중독성은 중독성끼리 의존한다”는 제목의 글에서 독자의 상담글에 저자가 남긴 진단의 한 문장인데요, 전 소름돋더라구요.
“사실 언니와 형부는 처음부터 신경증끼리 서로 알아보고 만났을 것입니다. 두 분 다 표면적으로 드러나는 중독 성향보다 더 깊은 내면에 오래된 결핍이 존재하며, 그 강도 역시 비슷할 것입니다.” (p140)
이게 어찌보면 악순환의 되먹임 같은거 잖아요. 둘 중에 한명이 자신의 충족되지 않은 욕구와 중독성을 자각하고 이 악순환 고리를 끊겠다는 용기를 내지 않는 한 병적인 관계가 더욱 강화되는 악순환이요.
가족 간의 역학구도 속에서 생존하기 위해 나름의 심리적 전략을 채택하게 되고, 그걸 의식하지 못하면 평생을 그 패턴 속에서 의존적인 삶을 살 수 밖에 없다고 하는 군요. 가족 관계에서 쌓인 갈등, 불만, 상처에 대해서도 직면하는 것이 꼭 필요하다고 말해요. 사과할 것이 있으면 진심으로 가족에게 사과하고, 자신의 유아기때의 감정을 돌아보고, 보듬어주고, 가족들과 그에 대해 성인이 되었더라도 어릴적 충족되지 못한 욕구와 감정에 대해 얘기해보라고 해요. 편지를 써보거나 협상을 할 수도 있고, 혼자서는 힘들면 상담을 받으면서 도움을 받을 수도 있구요. 저자는 종교의 치유 능력에 대해서도 우호적으로 말하며 기도나 명상도 권하고 있어요.
3. 성과 사랑
천 개의 공감 - (3) 성과 사랑
저자는 “사랑과 성욕을 통해 우리는 다시 한번 태어납니다”라고 말하고 있어요. 세번째 챕터의 제목이 ‘사랑’이 아니라 ‘성과 사랑’인 것은 그만큼 ‘성’과 ‘사랑’을 따로 떼어놓고 생각하기 힘들기 때문일거예요.
“사랑에는 책임과 의무가 따른다”면서 뜨거운 열정이나 편안한 친밀감 뿐만이 아니라 책임과 의무도 기꺼이 짊어질 수 있을 때에야 비로서 진정한 그리고 성숙한 사랑이라고 말할 수 있다고 해요. 그리고 “피학적이고 고통스러운 것은 사랑이 아니”고, “가학적이고 잔인한 사랑은 자신을 파괴한다”고도 말하고 있어요. 책임과 의무는 지지 않으려는 쿨한 사랑, 일방적으로 희생하고 의존하는 가짜 사랑의 관계는 반복적으로 빠지게 되는 경향이 있다고 해요. 서글프고 무서운 인생의 아이러니가 아닐 수 없어요.
“어느 쪽이든, 나쁜 여자/나쁜 남자를 사랑하는 사람들은 반복적으로 비슷한 유형의 상대방을 만나는 경향이 있습니다. 그들의 컴플렉스가 왜곡된 신호를 보내어 저쪽의 콤플렉스를 끌어들이기 때문입니다” (p191)
이처럼 사랑을 가장한 병적인 관계의 원인을 찾아가다 보면 어렸을 적 부모와의 관계 속에서 실마리가 있을 것이라고, 부모와 자신이 어떻게 상호작용하고 있는지 유심히 관찰해보라고 권하고 있어요. 혹시 부모와의 관계 속에서 생존전략으로 익힌 심리적 방어기제를 사랑하는 이에게 전이, 투사하고 있는 것은 아닌지 조심해야 한다고요.
“욕망은 본질적으로 충족될 수 없다”거나 “남녀의 성적 욕망은 성격이 다르다”는 점에 대해서 남녀가 서로 이해를 하고 있다면 상대방에 대한 과도한 기대와 욕구를 하지 않을 수 있을거예요. 차이를 인정하고 받아들일 때 여유와 관용이 싹트고, 또 성숙한 관계로 한발짝 더 나아갈 수 있겠지요.
“남성과 여성은 사랑 행위를 인식하는데 이처럼 차이가 납니다. 그리하여 남성의 삶은 성적 욕망에 고착되어 있는 듯 보이고, 여성의 삶은 로맨스에 고착되어 있는 듯 보입니다. 남성은 자주 성적 능력을 제대로 사용하지 못할까봐 염려하는 거세 불안에 시달리고, 여성은 자주 애착의 감정을 박탈당할지도 모른다는 분리 불안에 시달립니다.”(p232)
4, 관계 맺기
천 개의 공감 - (4) 관계 맺기
네번째 챕터 “관계 맺기”의 핵심은 “승-승의 관계는 이익과 즐거움을 공유하면서 발전”하는 것이라고 말하며, “자신의 못나고 부족한 면을 사랑합니다”라는 내용으로 시작을 해요. 자신의 좋고 긍적적인 면뿐만이 아니라 못나고 부정적이고 숨기고 싶은 면까지 모두 사랑하는 것이 관계 맺기의 시작이라는 것이지요.
무라카미 류가 에세이 제목으로 “자살보다는 섹스”를 썼다고 해요. 뭔가 장난스럽게 느껴지기도 한데요, “생존 욕망과 죽음 욕망은 한 몸이다”는 정신분석학에서 정설로 받아들여지는 주장에 대한 문학적 표현이라고 하네요.
화와 분노에 대한 내용도 있어요. 자신의 내면에 쌓인 화와 분노는 자신을 죽이는 독과 같으니 단계적으로 표현하라는 조언도 있구요, 반면에 “화는 보살핌을 간절히 바라는 자신의 아기다”(틱낫한, p276)라는 말처럼 타인의 화에 대해서는 사랑을 갈구하는 신호로 해석하라는 내용도 있어요. 일면 상충되는 듯 하면서도 일리있는 말 같아요.
“거절해도 사랑받을 수 있는 존재입니다”라는 제목의 내용은 제가 거절을 잘 못하다 보니 주의깊게 봤습니다. 저자는 상대방의 자기애를 배려해서 “중립적이고 완곡한 말투로”, 뭔가 나중에라도 해줄것처럼 기대를 줄게 아니라 “처음에 거절하라”고 조언해주고 있어요.
“중년의 문턱에서 생의 목표를 수정합니다”로 이 책은 마무리를 하고 있습니다. 죽음에 맞닥드렸을 때 어떤 삶을 살았노라고 기억되길 원하는지 깊이 고민해보고, 남은 후반전의 인생을 재설계해보라는 거예요. 내가 받은 천복을 감사하며, 남과 사회, 공동체로 흘려보내고 나누고 베풀고 기여할 수 있는 것이 무엇일지를 그려보는게 중년의 위기를 승화시킬 수 있는 방법이라구요.
<비폭력 대화 (마셜 B. 로젠버그 저)> 책에 보면 프랑스 작가 사몬 베유(Simone Weil)이 말하길, “고통을 받고 있는 사람에게 관심을 집중할 수 있는 능력(즉, 공감)은 매우 드물고 어려운 것이다. 그것은 기적과 같은 일이다. 사실 기적이다.” 라고 했어요. 이 책의 제목 <천 개의 공감>은 그런 면에서 무척 대범한 제목이고, 별명으로는 <천 개의 기적> 이라고 부를 수도 있을거 같아요.
책 머리에서 소설가인 저자는 <천 개의 공감> 책이 <사람 풍경 (2004)> 에 이은 두번째 외도라면서, 이 책이 아마도 자신의 방어기제의 산물일 것이라고 고백하고 있어요. (p6)마지막 문장이 왠지 모르게 저한테는 위안이 되는거 있죠. :-)
아마도 이 책은 제가 하는 말이 옳다고 믿는 나르시시즘, 틈만 나면 잘난 척하려는 열등감, 자신의 삶에서 실천해야 하는 덕목들을 타인에게 충고하는 투사 방어기제의 산물일 것입니다. 사실 이 책 전체가 지식화 방어기제의 결정체라고 볼 수 있습니다. 소설 쓰기에서 맞닥뜨려야 하는 불안과 좌절감으로부터 뒷걸음질 치는 회피 방어기제의 한 모습일지도 모릅니다. 그러므로 이 책의 모든 꼭지에는 다음과 같은 문장이 생략되어 있습니다.
“저도 그렇습니다. 그래서 이렇게 하고 있습니다.”
아마도 여자에게 더 울림이 큰 책일 수도 있겠다 싶습니다. 물론 남성에게도 자신의 내면 심리를 더 잘 이해하는데 도움이 될 것이며, 또 여성을 더 잘 이해하고 공감하며 동반자로 살아가는데 도움이 될 것이라고 생각해요.
자신에 대해, 상대에 대해, 인간에 대해 더 잘 이해하고, 사랑하고, 사랑받고자 하는 모든 이들에게 이 책을 강추합니다. :-)
이번 포스팅에서는 이들 여러개의 플랫폼 중에서도 Laptop/ Desktop에 간편하게 설치해서 쉽게 Kubeflow 기능을 체험해보고 싶은 사용자에게 적합한 "Vagrant 플랫폼 기반의 Arrikto MiniKF (Mini-Kubeflow)" 를 MacOS의 맥북에 설치하는 방법을 소개하겠습니다.
MiniKF 는 이름에서 유추할 수 있듯이, 단지 몇 번의 클릭만으로 Kubeflow의 전체 파이프라인을 사용해볼 수 있게 해줌으로써 Kubernetes를 전문적으로 알지는 못하는 데이터 과학자 또는 개발자라도 Kubeflow 를 빠르고 쉽게 시작할 있도록 해줍니다. 더불어서, 만약 나중에 MiniKF에서 만든 기계학습/딥러닝 모델을 규모있게 운영을 하고 싶으면, 기존 코드를 다시 쓰는 것 없이 단지 원클릭 만으로 Kubeflow 클라우드 배포로 이동시킬 수 있습니다. 완전 신기하고 멋지죠?!!
MiniKF로 로컬머신에서 원활한 실험을 하기 위한 시스템 사양으로 Kubeflow 커뮤니티 사이트에서는 아래의 사양을 추천하고 있습니다.
[ System Requirements for MiniKF ]
12 GB RAM
2 CPUs
50 GB disk space
제가 사용하는 맥북 사양은 메모리 32GB, CPU 2.4 Ghz 8코어 Intel Core i9, 1TB disk space 인데요, MiniKF 구동시킬때마다 비행기 이륙하는 소리가 나는 것으로 봐서는 MiniKF가 리소스를 상당히 많이 사용하는 것 같습니다.
MiniKF 는 Linux, macOS, Windows 의 주요 OS 에서 사용 가능합니다.
이번 포스팅에서는 macOS (Big Sur 버전 11.3) 에 Homebrew, Vagrant 를 사용해서 MiniKF를 설치해보겠습니다.
사전 준비사항으로 랩탑/데스크탑에 Vagrant, Virtual Box 를 설치해야 합니다.
Vagrant 는 단일 워크플로우에서 가상 머신 환경을 구성하고 관리하는 툴입니다. Vagrant 는 사용하기 쉬운 워크플로우오ㅓ 자동화에 중점을 두어 개발환경 구성에 소요되는 시간을 줄이고 생산성을 올려줍니다.
%brew tap hashicorp/tap
% brew install vagrant
(base) lhongdon@Hongui-MacBookPro ~ % brew tap hashicorp/tap
Updating Homebrew...
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
firefoxpwa
==> Updated Formulae
Updated 127 formulae.
==> Tapping hashicorp/tap
Cloning into '/usr/local/Homebrew/Library/Taps/hashicorp/homebrew-tap'...
remote: Enumerating objects: 1444, done.
remote: Counting objects: 100% (198/198), done.
remote: Compressing objects: 100% (127/127), done.
remote: Total 1444 (delta 122), reused 117 (delta 71), pack-reused 1246
Receiving objects: 100% (1444/1444), 263.75 KiB | 5.27 MiB/s, done.
Resolving deltas: 100% (818/818), done.
Tapped 1 cask and 11 formulae (42 files, 380.5KB).
(base) lhongdon@Hongui-MacBookPro ~ %
(base) lhongdon@Hongui-MacBookPro ~ %
(base) lhongdon@Hongui-MacBookPro ~ %
(base) lhongdon@Hongui-MacBookPro ~ % brew install vagrant
==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...
remote: Enumerating objects: 586340, done.
remote: Counting objects: 100% (510/510), done.
remote: Compressing objects: 100% (264/264), done.
remote: Total 586340 (delta 262), reused 384 (delta 246), pack-reused 585830
Receiving objects: 100% (586340/586340), 258.95 MiB | 6.46 MiB/s, done.
Resolving deltas: 100% (414124/414124), done.
Tapped 3975 casks (4,055 files, 277.8MB).
==> Downloading https://releases.hashicorp.com/vagrant/2.2.18/vagrant_2.2.18_x86_64.dmg
######################################################################## 100.0%
==> Installing Cask vagrant
==> Running installer for vagrant; your password may be necessary.
Package installers may write to any location; options such as `--appdir` are ignored.
Password:
Sorry, try again.
Password:
installer: Package name is Vagrant
installer: Installing at base path /
installer: The install was successful.
🍺 vagrant was successfully installed!
(base) lhongdon@Hongui-MacBookPro ~ %
(base) lhongdon@Hongui-MacBookPro ~ %
(2) Virtual Box 사전 설치
가상 머신 Virtual Box 를 https://www.virtualbox.org/wiki/Downloads 에서 자신의 OS 에 맞는 패키지를 다운로드해서 랩탑/데스크탑에 설치해 줍니다. 저는 MacBook Pro 에 설치할 것이므로 OS X hosts 메뉴에서 VirtualBox-6.1.26-145957-OSX.dmg 파일을 다운로드하여 앱을 실행시켰습니다.
사전 준비사항이 완료되었으면 이제 MiniKF를 설치하고 업그레이드 해보겠습니다.
- (3) MiniKF 설치
- (4) MiniKF 업그레이드
(3) MiniKF 설치
% vagrant init arrikto/minikf
$ vagrant up
먼저 터미널에서 'minikf' 라는 디렉토리를 만들고, 'minikf' 로 디렉토리를 변경하여, 위의 vagrant 명령문을 실행하여 MiniKF 를 설치하였습니다.
(base) lhongdon@Hongui-MacBookPro ~ %
(base) lhongdon@Hongui-MacBookPro ~ % mkdir minikf
(base) lhongdon@Hongui-MacBookPro ~ % cd minikf
(base) lhongdon@Hongui-MacBookPro minikf %
(base) lhongdon@Hongui-MacBookPro minikf %
(base) lhongdon@Hongui-MacBookPro minikf % vagrant init arrikto/minikf
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
(base) lhongdon@Hongui-MacBookPro minikf %
(base) lhongdon@Hongui-MacBookPro minikf %
(base) lhongdon@Hongui-MacBookPro minikf % vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'arrikto/minikf' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box 'arrikto/minikf'
default: URL: https://vagrantcloud.com/arrikto/minikf
==> default: Adding box 'arrikto/minikf' (v20210428.0.1) for provider: virtualbox
default: Downloading: https://vagrantcloud.com/arrikto/boxes/minikf/versions/20210428.0.1/providers/virtualbox.box
Download redirected to host: storage.googleapis.com
Progress: 0% (Rate: 5291k/s, Estimated time remaining: 5:06:30)
Progress: 0% (Rate: 5865k/s, Estimated time remaining: 1:52:28)
Progress: 3% (Rate: 5216k/s, Estimated time remaining: 0:52:52)vagrant box update
Progress: 3% (Rate: 5324k/s, Estimated time remaining: 0:51:46)
Progress: 4% (Rate: 5418k/s, Estimated time remaining: 0:51:17)
==> default: Successfully added box 'arrikto/minikf' (v20210428.0.1) for 'virtualbox'!
Plugin 'vagrant-persistent-storage' is missing, running `vagrant plugin install vagrant-persistent-storage`...
Installing the 'vagrant-persistent-storage --version '>= 0.0.47'' plugin. This can take a few minutes...
Fetching vagrant-persistent-storage-0.0.49.gem
Installed the plugin 'vagrant-persistent-storage (0.0.49)'!
Plugin installed successfully, please re-run `vagrant up`.
(base) lhongdon@Hongui-MacBookPro minikf %
(base) lhongdon@Hongui-MacBookPro minikf %
(4) MiniKF 업그레이드
(4-1) MiniKF box를 최신버전으로 업그레이드 하기
% vagrant box update
(base) lhongdon@Hongui-MacBookPro minikf % vagrant box update
==> default: Checking for updates to 'arrikto/minikf'
default: Latest installed version: 20210428.0.1
default: Version constraints:
default: Provider: virtualbox
==> default: Box 'arrikto/minikf' (v20210428.0.1) is running the latest version.
(4-2) 최신 버전으로 업데이트 했는지 확인해보기
% vagrant box list
(base) lhongdon@Hongui-MacBookPro minikf % vagrant box list
arrikto/minikf (virtualbox, 20210428.0.1)
(4-3) 'vagrant-persistent-storage' 플러그인을 v0,0.47 또는 이후 버전으로 업그레이드 하기
(base) lhongdon@Hongui-MacBookPro minikf % vagrant plugin update vagrant-persistent-storage
Updating plugins: vagrant-persistent-storage. This may take a few minutes...
All plugins are up to date.
(4-4) VM 없애기
% vagrant destroy
(base) lhongdon@Hongui-MacBookPro minikf % vagrant destroy
==> default: VM not created. Moving on...
(4-5) 모든 local state 제거하기.
(notebooks, pipelines, Rok snapshots 등의 MiniKF의 모든 custimization 을 제거함)
[Linux/macOS] % rm minikf-user-data.vdi
[Windows] % del minikf-user-data.vdi
(4-6) VM 을 다시 생성하기
% vagrant up
(base) lhongdon@Hongui-MacBookPro minikf %
(base) lhongdon@Hongui-MacBookPro minikf % vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Using /Users/lhongdon/minikf/minikf-user-data.vdi for persistent storage.
==> default: Importing base box 'arrikto/minikf'...
==> default: Generating MAC address for NAT networking...
==> default: Using /Users/lhongdon/minikf/minikf-user-data.vdi for persistent storage.
==> default: Checking if box 'arrikto/minikf' version '20210428.0.1' is up to date...
==> default: Setting the name of the VM: minikf_default_1628746272800_96697
Vagrant is currently configured to create VirtualBox synced folders with
the `SharedFoldersEnableSymlinksCreate` option enabled. If the Vagrant
guest is not trusted, you may want to disable this option. For more
information on this option, please refer to the VirtualBox manual:
https://www.virtualbox.org/manual/ch04.html#sharedfolders
This option can be disabled globally with an environment variable:
VAGRANT_DISABLE_VBOXSYMLINKCREATE=1
or on a per folder basis within the Vagrantfile:
config.vm.synced_folder '/host/path', '/guest/path', SharedFoldersEnableSymlinksCreate: false
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 32123 (guest) => 32123 (host) (adapter 1)
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Using /Users/lhongdon/minikf/minikf-user-data.vdi for persistent storage.
==> default: Running 'pre-boot' VM customizations...
==> default: Using /Users/lhongdon/minikf/minikf-user-data.vdi for persistent storage.
==> default: ** Creating persistent storage **
==> default: Using /Users/lhongdon/minikf/minikf-user-data.vdi for persistent storage.
==> default: ** Attaching persistent storage **
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 5.2.42_Ubuntu r137960
default: VirtualBox Version: 6.1
==> default: Using /Users/lhongdon/minikf/minikf-user-data.vdi for persistent storage.
==> default: ** Managing persistent storage **
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /Users/lhongdon/minikf
==> default: Machine 'default' has a post `vagrant up` message. This is a message
==> default: from the creator of the Vagrantfile, and not from Vagrant itself:
==> default:
==> default: Welcome to MiniKF!
==> default: Visit http://10.10.10.10/ to get started.
==> default:
(base) lhongdon@Hongui-MacBookPro minikf %
(base) lhongdon@Hongui-MacBookPro minikf %
(5) MiniKF 설치 여부 확인해 보기
웹 브라우저를 열어서 "http://10.10.10.10" 주소로 접속했을 때 아래와 같은 화면이 나타난다면 랩탑/데스크탑에 MiniKF 설치가 성공한 것입니다.
첫 화면의 중앙에 'OK' 라는 부분에 커서를 가져다놓고 엔터를 치면 Kubeflow 가 실행이 되면서 한참동안 progress bar 가 진행이 되고, 맥북에서 비행기 이륙하는 소리가 날거예요. (MiniKF 가 실행되는데 5분 정도 걸리니깐 커피 한잔 하고 오세요.)
Provisioning 이 모두 끝나면 아래의 화면처럼 "Provisioning completed" 라는 메시지와 함께 "Credentials" 에 Username 과 Password 가 나타납니다. 오른쪽 하단의 "Connect to MiniKF"를 메뉴를 누르면 Log-In 화면이 새로 뜹니다.
Connect to MiniKF
아래의 화면처럼 MiniKF Log In 화면이 나타나면 바로 앞의 화면에서 왼쪽 하단에 있는 Credentials 의 Username, Password 를 사용해서 로그인을 해주면 됩니다.
Log In to MiniKF
쨔잔~ 드디어 Kubeflow의 main home 페이지의 UI 화면이 떴습니다. 이제 Kubeflow 를 로컬 머신에서 UI 를 통해 편리하게 사용할 수 있는 환경이 마련되었습니다. ^^b
Kubeflow Main Home UI
Kubernetes 고급사용자라면 Kubernetes Commandline Tool 인 kubectl 을 설치해서 사용하면 빠르고 편리하게 K8s 상태를 조회하고 조작할 수 있습니다. (* kubectl 설치 참조: https://kubernetes.io/docs/tasks/tools/)
아래 화면의 2번에 'MiniKF's kubeconfig file: Download file' 링크를 클릭하면 kubeconfig file을 다운로드할 수 있습니다. 이 파일이 있으면 누구나 당신의 MiniKF 에 접근할 수 있으므로 보안에 신경써서 보관해야 합니다. 이 파일을 Home directory에 보관해주세요. 아래의 4번을 참고해서 KUBECONFIG 환경변수를 설정해주면 kubectl 이 이 파일을 찾을 수 있습니다.
$ kubectl -n kubeflow get pods 을 커맨드라인에 입력해주면 MiniKF 에서 실행 중인 Kubeflow pods 목록을 볼 수 있을거예요.
MiniKF 와 Kubernetes, Vurtual Box 를 모두 종료하려면 아래와 같이 % vagrant halt 를 해주면 됩니다.
(base) lhongdon@Hongui-MacBookPro minikf %
(base) lhongdon@Hongui-MacBookPro minikf % vagrant halt
==> default: Attempting graceful shutdown of VM...
==> default: Using /Users/lhongdon/minikf/minikf-user-data.vdi for persistent storage.
==> default: ** Detaching persistent storage **
(base) lhongdon@Hongui-MacBookPro minikf %
위에서 새로 만들었던 VM을 $ vagrant halt 로 종료하고 내렸는데요, 이전에 만들었던 VM target machine 을 새로 시작하려면, $ vagrant global-status 로 VM ID를 확인하고 ==> $ vagrant up [target machine ID] 를 입력해주면 됩니다.
-- get an ID of target machine --
(base) lhongdon@Hongui-MacBookPro ~ % vagrant global-status
id name provider state directory
-------------------------------------------------------------------------
a6427be default virtualbox poweroff /Users/lhongdon/minikf
The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date (use "vagrant global-status --prune" to prune invalid
entries). To interact with any of the machines, you can go to that
directory and run Vagrant, or you can use the ID directly with
Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"
(base) lhongdon@Hongui-MacBookPro ~ %
-- run target machine ID again --
'
(base) lhongdon@Hongui-MacBookPro ~ % vagrant up a6427be
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Using /Users/lhongdon/minikf/minikf-user-data.vdi for persistent storage.
==> default: Using /Users/lhongdon/minikf/minikf-user-data.vdi for persistent storage.
==> default: Checking if box 'arrikto/minikf' version '20210428.0.1' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
....
....
참고로, Vagrant 의 명령어 리스트와 설명을 보려면 % vagrant -h 또는 % vagrant --help 로 해서 command line 명령어를 인쇄할 수 있습니다. 아래의 Vagrant 명령어 리스트 참고하세요.
(base) lhongdon@Hongui-MacBookPro minikf % vagrant -h
Usage: vagrant [options] <command> [<args>]
-h, --help Print this help.
Common commands:
autocomplete manages autocomplete installation on host
box manages boxes: installation, removal, etc.
cloud manages everything related to Vagrant Cloud
destroy stops and deletes all traces of the vagrant machine
global-status outputs status Vagrant environments for this user
halt stops the vagrant machine
help shows the help for a subcommand
init initializes a new Vagrant environment by creating a Vagrantfile
login
package packages a running vagrant environment into a box
plugin manages plugins: install, uninstall, update, etc.
port displays information about guest port mappings
powershell connects to machine via powershell remoting
provision provisions the vagrant machine
push deploys code in this environment to a configured destination
rdp connects to machine via RDP
reload restarts vagrant machine, loads new Vagrantfile configuration
resume resume a suspended vagrant machine
snapshot manages snapshots: saving, restoring, etc.
ssh connects to machine via SSH
ssh-config outputs OpenSSH valid configuration to connect to the machine
status outputs status of the vagrant machine
suspend suspends the machine
up starts and provisions the vagrant environment
upload upload to machine via communicator
validate validates the Vagrantfile
version prints current and latest Vagrant version
winrm executes commands on a machine via WinRM
winrm-config outputs WinRM configuration to connect to the machine
For help on any individual command run `vagrant COMMAND -h`
Additional subcommands are available, but are either more advanced
or not commonly used. To see all subcommands, run the command
`vagrant list-commands`.
--[no-]color Enable or disable color output
--machine-readable Enable machine readable output
-v, --version Display Vagrant version
--debug Enable debug output
--timestamp Enable timestamps on log output
--debug-timestamp Enable debug output with timestamps
--no-tty Enable non-interactive output
(base) lhongdon@Hongui-MacBookPro minikf %