연초부터 시끌시끌했던 레이디 가가 콘서트가 끝난 모양이다. 이 시점에서 가가에 대한 생각들을 잠깐 정리해보려고 한다.

기독교인으로서, 기독교계(특히 한기총을 중심으로 한 보수 교계)의 가가에 대한 반발을 무시할 수 없었다. 그들의 논지는 크게 다음과 같다.

  1. 가가는 사탄을 숭배한다. 그녀의 음악은 음악 이상의 영적 공격을 내포한다.
  2. 가가는 동성애를 긍정한다. 가가의 동성애 합법화 운동이 동성애가 합법화에 영향을 미칠 수가 있다.
  3. 가가의 공연은 음란과 살생 등 엽기적인 요소를 담고 있다. 뿐만 아니라 그녀의 공연에서 동성애를 옹호하는 듯한 퍼포먼스를 보인다.
한기총은 콘서트 주최측인 현대카드 불매운동까지 내걸고 콘서트 반대 운동을 펼쳤지만 결국 콘서트는 별 탈 없이 진행되었다.

이와 같은 주장을 두고 사람들의 반응은 다양했다. 비기독교인은 대부분 이와 같은 기독교의 반응을 소위 개독의 헛소리로 치부하며 무시했고, 기독교인들 또한 가가의 공연에 대한 찬반 양론 사이에서 혼란스러운 모양이었다.

우선, 한기총의 이러한 주장에 대한 내 생각은 이렇다. 기본적으로 나도 가가의 콘서트에 반대하는 입장이라는 것을 주지하고 읽으면 좋을 것 같다. 너무 길면 뒤쪽의 결론만 읽어도 충분할 것 같다.

  1. 가가는 사탄을 숭배한다. 그녀의 음악은 음악 이상의 영적 공격을 내포한다.

    지금까지 나는 가가의 음악은 들어본 적도 없고, 앞으로 들을 생각도 없다. 가가의 신앙과 사탄 숭배 여부에 대해서는 더더욱 알지 못한다. 그렇기 때문에 그녀의 음악의 영적 영향에 대해 내가 논하는 것은 부적절할 수 있다. 그렇기에 조금 일반론적으로 이야기해보려고 한다.

    나는 분명히 음악은 우리의 영혼과 가장 밀접히 닿아 있는 부분이라고 생각한다. 때문에 그녀의 음악이 영적으로 악할 수도 있다는 부분에는 동의한다. 그러나 그것을 절대적 '악'으로 규정하는 것에 대해서 우리는 충분히 조심스러울 필요가 있다고 생각한다. 우리는 영적 실체에 대해 충분히 알지 못하고, 많은 기독교인들조차도 이에 대해 성경적인 지식을 가지고 있는 경우가 많지 않기 때문이다. 신중한 연구와 근거를 제시해야 할 책임을 가진 한기총조차도 이단 연구는 몇 년씩 하는 데에 반하여 가가에 대해서는 섣불리 영적인 악을 논하고 있지 않은가 싶다.

    결론적으로, 단편적 사실들을 통해 가가를 악마 숭배자로 규정하고 그렇기 때문에 그녀가 한국에 오면 어둠의 일들이 가속될 것이라는 주장에 대해 여전히 나는 동의할 수 없으나, 그 가능성에 대해서는 어느 정도 동의하는 바가 있기 때문에 조심스럽다.

  2. 가가는 동성애를 긍정한다. 가가의 동성애 합법화 운동이 동성애가 합법화에 영향을 미칠 수가 있다.

    가가의 노래나 그녀의 여러 가지 활동으로 볼 때 가가가 동성애를 긍정하는 것은 분명한 것 같다. 또한 동성애가 기독교의 가르침에 반하는 것도 분명하다. 때문에 가가의 콘서트가 기독교의 입장에서 달가울리가 없다. 동성애가 왜 죄인가의 문제는 너무 복잡하고 이야기할 거리가 많은 문제이기 때문에 여기서는 짧게 성경에서 죄라고 하기 때문이라고 하고 넘어가겠다. (사실 이걸로 충분하지만) 동성애가 개인의 선택과는 무관한 선천적 형질이라는 주장도 있지만 다른 죄 또한 우리가 선천적으로 가지고 태어나는 것임을 볼 때 그것이 동성애를 옹호하는 근거로서 충분한 것 같지는 않다.

    동성애에 대한 올바른 기독교적 입장은 정말 어려운 것 중 하나이다. 동성애자를 배척하고 죄인으로 취급하는 한 쪽 극단과 동성애를 용인하고 죄로 다루지 않는 반대쪽 극단 사이 어딘가에서 잘 균형을 잡아야 하기 때문이다. 분명히 예수님은 동성애자들과 함께 식사하시고, 그들의 집에서 머무셨을 것이다. 그러나 그것이 동성애를 긍정해야 한다는 논리로 귀결되어서는 안된다. 예수님은 간음하다 잡혀 온 여인을 절대 정죄하지 않으셨지만 그렇다고 간음을 용인하신 것은 아니다. 죄는 죄로 대하되 죄인은 사랑으도 대하는 것이 예수님의 방식이다.

    그러한 면에서 동성애의 합법화를 내세우는 가가의 주장은 위험하다고 생각한다. 또한 그러한 그녀의 주장이 공연을 통해 관객들에게 알게 모르게 영향을 미칠 것이라는 우려도 가지고 있다. 동성애에 대한 경계심이 허물어지면 동성애자가 늘어날 것인지 어떤지는 동성애의 선천성에 대한 논쟁이 계속되는 지금 이야기할 수 있는 문제는 아니지만, 가능성을 배제할 수 없는 상황에서 교계가 가가의 공연에 반대하는 것은 이해할 수 있다.

  3. 가가의 공연은 음란과 살생 등 엽기적인 요소를 담고 있다. 뿐만 아니라 그녀의 공연에서 동성애를 옹호하는 듯한 퍼포먼스를 보인다.

    공연 이후 나온 기사들을 보니 확실히 가가의 공연이 다분히 엽기적이고 선정적이라는 이미지를 지울 수가 없었다. 의상도 선정적이었고, 댄서들이 동성애를 연상시키는 퍼포먼스를 하기도 했다고 한다. 보수적 입장에서 이런 공연이 혐오스럽게 다가오는 것은 충분히 이해가 된다. 그리고 이러한 것들을 악마의 형상과 연결시키는 것도 무리는 아닐 것이다.

    그러나 이것은 중요한 이유는 될 수 없다고 본다. 나는 이미 충분히 많은 한국의 대중 미디어가 선정적인 것으로 치면 선을 넘었고, 죄에 대한 우리의 감각을 무디게 만들고 있다고 생각하는데(내가 이런 면에서 보수적인 것도 있지만), 이러한 것들이 중요한 이유라면 이미 기독교 전체적으로 TV 없애기 운동 같은 것이 일어났을 것이기 때문이다.

결론적으로, 나의 입장은 다음과 같다. 가가의 사탄 숭배 및 영적 악영향에 관해서는 더욱 충분한 연구가 이루어지기 전까지는 함부로 말할 수 없는 문제이다. 또한 그녀의 공연은 다분히 선정적이고 엽기적이며, 그녀의 동성애 옹호론적 입장이 공연에 반영되어 관객들로 하여금 선정적, 엽기적인 것과 동성애에 대한 경계심을 상실하도록 할 수 있다. 이는 전체적인 문화에 대한 인식을 변화시키는 중요한 문제이기 때문에 반대 입장을 나타낼 수 있다.

그러나 교계의 이토록 민감한 반응과 조심성 없는 묻지마 반대에는 기독교인인 나조차도 거부감이 든다. 가가 공연 반대보다도 대중 문화에 대한 올바른 시각 및 대안 미디어 제공이 훨씬 더 의미있고 중요한 사역이라고 생각된다. 또한 무조건적 반대 때문에 기독교 내부에서도 작은 분열이 나타났는데, 충분한 근거 제시와 논의가 이루어졌어야 한다고 생각한다.

그러나 내가 가가의 공연이 위험하다고 생각하는 이유는 다른 게 아니라 그녀의 예술이 담고 있는 사상 때문이다. 가가의 음악과 콘서트는 '다른 사람에게 피해를 주지 않는 모든 것은 용인된다'라는 메시지를 담고 있는 듯 하다. 그녀의 동성애 옹호와 엽기적 공연 모두 이와 같은 맥락 안에서 이해할 수 있다. 그녀는 파격적인 대중 문화에 대한 반감도 우리가 보수적 시각을 탈피하지 못했기 때문이라고 생각하며, 심지어 옷을 입어야 한다 사회 규범조차도 보수적 문화가 만들어 놓은 제약으로 인식하는 듯 하다. (물론 이러한 해석에는 약간은 무리한 추측이 섞여 있다.)

나는 이러한 사상이 가가의 다른 어떠한 면보다도 위험하며 쉽게 사람들을 '감염'시킬 수 있다고 생각한다. 가가의 주장은 극단적인 포스트모더니즘으로, 어떠한 절대적 규범은 존재하지 않고 정의(justice)는 사람들의 동의에 의해 결정되는 것일 뿐이라는 것이다. 하자가 없어보이는 이 주장이 예술을 등에 업고 퍼질 때 사람들은 너무나 경계심 없이 받아들일 수 있다는 것이 문제이다.

이러한 포스트모더니즘이 왜 문제가 되는지에 대해서 여기서 모두 서술할 수는 없지만, 상대주의는 기독교적 진리가 설 자리를 아예 없애버린다고 짧게 말할 수 있겠다. 기독교에는 유일신 여호와 하나님과 그 분에 의해 결정되는 정의가 있을 뿐, 절대 사람들의 호불호는 선악을 결정하는 잣대가 되지 못한다. 그러나 가가의 상대주의는 이러한 기독교적 가치에 '꽉 막힌 보수'라는 이미지를 선사하고 있다. 사람들로 하여금 포스트모더니즘을 무비판적으로 수용하게 만들고, 기독교적 가치에 대한 반감을 가지게 한다.

교계에서 이러한 이유를 들어서 가가 콘서트 반대를 했었더라면 나는 훨씬 더 잘 동의할 수 있었을지도 모른다. 하지만 그것도 가가 자체가 아닌 가가의 공연이 가진 위험성에 대한 경계가 되어야 할 것이다. 그래야 가가의 공연을 반대하느라 우리 주변에 훨씬 더 많이 도사리고 있는 다른 악의 공격에 대해서 둔감해지지 않을 수 있다.

진짜 결론. 나는 가가를 잘 알지는 못하지만, 그녀의 공연 후기나 기사를 통해 그녀의 사상이 극단적 포스트모더니즘을 내포하고 있다는 것을 느꼈고, 때문에 그녀의 공연이 위험하다고 생각한다. 물론 공연의 선정성이나 폭력성 등도 그녀의 공연을 부정적으로 생각하는 중요한 이유이다. 그러나 그 위험성을 충분히 인지하지 못한 채 가가 공연을 반대하는 것은 본질을 잊은 것이며 오히려 우리 주변에 더 많이 도사리고 있는 위험을 보지 못하게 만들 수도 있다. 따라서 우리는 계속적인 분별 속에 살아가야 한다.

이올린에 북마크하기

최근 정말 우연히 Programming Erlang(조 암스트롱, 인사이트)이라는 책을 접했는데, 함수형 언어이고 분산 처리에 적합하게 설계되며 실제로 많이 쓰이고 있다는(!) 것에 감명을 받아 열심히 공부하고 있다. 아직 다 읽지는 못했지만 공부 한 내용을 블로그에 정리해 두려고 한다. (아직 공부한 지 일주일도 되지 않아 코드가 세련되지 못할 수도 있으니 코멘트 부탁드립니다.)

얼랭을 처음 보았을 때의 느낌은 함수형 언어라는 면에서는 LISP와 굉장히 닮았고(실제로 LISP의 많은 철학과 용어를 차용한 것 같다) 문법은 Scala와 많이 유사하다는 것이었다. 일반적으로 C나 Java와 같은 언어로 프로그래밍을 시작한 사람들에게 있어 가장 혼란스러운 부분은

  • 변수가 없다.
  • 반복문이 없다.
일 것이다. 저장해야 할 자료는 모두 함수의 매개변수에 담아 놓고, 반복문을 작성하는 대신 함수를 재귀호출해야 한다는 함수형 언어의 특징이 낯설 수도 있었을텐데, 다행히 나는 Scheme에 조금은 익숙한 상태라 큰 반감 없이 받아들일 수 있었다.

그럼 본론으로 넘어가서 Erlang으로 Factorial을 계산하는 코드를 작성해 보고 실행 시간을 비교해 보고자 한다. 우선, 가장 쉽게 생각할 수 있는 코드는 다음과 같을 것이다. 좋은 코드이지만, Erlang의 장점인 병렬 처리를 충분히 활용하지 못한 코드인 것 같다. 이번에는 병렬 처리를 위해 다음과 같은 코드를 생각할 수 있다. 이 코드는 크게 네 부분으로 구성된다. 우선 fact/1은 작은 문제의 답을 모으는 collector를 띄운 후 문제를 작은 문제로 분할한다. 이 때 작은 문제의 크기는 T의 값에 의해 결정된다. 우선은 T=10000이라는 상수로 두었다. split/4는 문제를 작은 문제들로 분할하는 함수이다. 큰 문제를 T 이하의 크기의 작은 문제 하나와 나머지 크기의 문제로 나눈 후 각각을 푸는 방식이다. 일종의 Divide & Conquer라고 생각할 수도 있겠다. fact/2, fact/3은 먼저 살펴 본 코드와 크게 다르지 않고, 다만 값을 반환하는 것이 아니라 C로 보낸다는 것이 다르다. 마지막으로 collector/3은 작은 문제의 개수를 기억하고 있어서 그 개수 만큼의 답을 얻으면 얻은 답의 곱을 fact/1로 보낸다.

가령 50000!을 계산하고자 한다면, 이 코드는 10000! * (10001 * ... * 20000) * ... * (40001 * ... * 50000)을 계산할 것이다. 싱글 코어라면 오히려 문제를 분할하고 합치는 데에 overhead가 발생하여 성능 저하가 일어나겠지만, 멀티 코어 시스템에서는 작은 문제를 각 코어에서 처리할 수 있으니 더 빠른 성능을 보여 줄 것이라 기대할 수 있다.

실제로, 성능 분석을 해 보면 50000!을 계산하는 데에 처음 제시한 코드는 3095ms, 병렬 처리를 사용한 두 번째 코드는 1059ms가 소요되었다.(i3 머신에서 statistics/1 사용하여 5회 테스트 한 평균) 대략 3배 정도 빠르다는 것을 알 수 있다!

심심하여 큰 수를 자유롭게 계산할 수 있는 또 하나의 언어인 Python으로도 팩토리얼을 구하는 함수를 작성한 후 분석을 해 보았다. 같은 조건에서 5회 테스트 평균을 구해 보았더니 5999ms가 나왔다. 이것은 병렬 처리를 사용하지 않은 Erlang 버전의 2배, 병렬 처리를 사용한 Erlang 버전의 6배 수준이다. 아, Erlang 좋구나.

이올린에 북마크하기

7월부터 T wifi zone이 T 가입 핸드폰에서만 접속 가능하도록 바뀌면서 노트북에서는 인터넷을 쓸 수 없는 상황이 발생하곤 했다. 핸드폰으로 T wifi zone에 접속한 뒤 다시 무선 인터넷 공유를 해서 노트북에서 접속하도록 할 수 있으면 좋으련만, wifi 접속과 핫스팟 역할을 동시에 수행할 수는 없는지라 T wifi zone밖에 없는 곳에서는 핸드폰 조그만 화면으로 서핑을 하곤 했다.


OS가 Windows라면 Kies를 깔아서 USB 테더링을 했겠지만 Ubuntu를 사용하고 있기에 이마저도 불가능하여 이래저래 방법을 찾던 중, 제법 깔끔한 방법을 찾았다. 기본적인 아이디어는, localhost:8080을 프록시로 사용하도록 한 후 ADB를 통해서 localhost:8080 연결을 안드로이드 폰의 8080 포트로 포워딩하고, 다시 안드로이드 폰에서는 8080을 자체 네트워크로 포워딩시키는 것이다.

  1. 안드로이드에서 네트워크 포워딩

    마켓에서 Proxoid라는 어플(무료)을 찾아서 설치한다. 실행시킨 후 Start/Stop Proxoid 버튼을 눌러 포워딩을 동작시킨다. 기본적으로 8080 포트를 포워딩하도록 되어 있다.

  2. ADB를 이용해 안드로이드로 네트워크 포워딩

    우선 Android sdk를 설치해야 한다. 안드로이드 개발자 페이지 (새 창으로 열기) 에서 플랫폼에 알맞은 파일을 다운받은 후 압축을 풀어 준다. 압축을 푼 디렉터리 안에 platform-tools/adb 라는 바이너리가 존재할 것이다. 이것을 이용하여 포트를 포워딩할 것이다.


    /etc/udev/rules.d/ 디렉터리 아래에 90-android.rules라는 파일을 생성하고 다음 한 줄을 입력한 후 저장한다. 이 때 04e8 대신 자신의 핸드폰 제조사에 알맞는 ID를 적어야 한다. ID 리스트 또한 안드로이드 개발자 페이지 (새 창으로 열기) 에서 구할 수 있다.

    이제 다운받은 SDK 안의 platform-tools 디렉터리로 가서 다음 명령을 실행시킨다. 이제 localhost:8080은 핸드폰 네트워크를 이용하는 프록시가 되었다.

  3. 프록시 설정

    대부분의 브라우저에 프록시 설정을 변경하는 메뉴가 존재한다. 예를 들어, Chromium browser에서는 '기본 설정'->'고급 설정'->'프록시 설정 변경'에서 프록시 설정을 변경할 수 있다. 프록시 주소를 127.0.0.1, 포트를 8080으로 설정하고 적용한다. System-wide로 적용하도록 설정하면 브라우저 뿐만 아니라 모든 네트워크 연결에서 해당 프록시를 사용하게 된다.

    적절한 네트워크를 찾아서 더 이상 테더링이 필요하지 않을 때에는 핸드폰에서 Proxoid를 종료하고, 프록시를 사용하지 않도록 설정을 변경하면 된다.

이올린에 북마크하기

Redmine을 써 볼까 하고 깔다가... 생각지도 못한 삽질을 하게 되어서 삽질 로그를 남겨 봅니다. 삽질은 한 번으로 충분하니까.

설치 환경은 Ubuntu 10.04 LTS입니다. Database는 MySQL5를 사용합니다(설치되어 있는 것으로 간주합니다). 여기서 설명하는 버전 이외의 버전은 안 될 가능성이 높습니다. 버전 간 호환성이 매우 안 좋은 듯 합니다...

  1. RVM을 설치합니다. 현재 RVM에서 제공하는 스크립트가 약간 문제가 있어서 home 디렉터리 설치밖에 안됩니다. Home 디렉터리에 설치하고 환경 변수에 등록해 버리면 그만이지만, 저는 system-wide한 설치를 좋아해서, 스크립트를 조금 수정해서 설치했습니다. Home 디렉터리에 설치하고 환경변수 등록하는 방법은 여기 (새 창으로 열기) 참조. 아무 에디터로나 다운받아진 스크립트를 엽니다. 178번째 줄의 rvm_ignore_rvmrc, 203번째 줄의 UID, 214번째 줄의 UID 앞에 달러 사인($)을 넣어 줍니다. 예를 들어, 203번째 줄은 다음과 같이 바뀌어야 합니다. 저장을 하고 닫은 후에 스크립트를 실행시켜 설치합니다.
  2. Ruby 1.8.7를 설치합니다. RVM이 알아서 설치를 해 주면, 1.8.7 버전을 default로 지정해 줍니다.
  3. RubyGems 1.4.2를 설치합니다.
  4. 필요한 것들을 설치합니다.
  5. Database 세팅을 해 줍니다. Database 및 계정 생성 권한을 가지고 있는 계정으로 mysql에 접속하여 다음을 실행합니다. 물론 some_password 부분에 적절한 비밀번호를 적어야 합니다.
  6. 이제 redmine을 본격적으로 설치합니다. Remine이 설치될 위치로 이동하여 redmine repository를 checkout 받습니다. 저는 /var/www/ 에 받았습니다.
  7. DB 연결 설정을 해 줍니다. config/database.yml 파일을 열어(sudo) 다음과 같이 설정한 후 저장합니다.
  8. Session store를 생성합니다.
  9. DB 마이그레이션을 진행합니다. 언어를 선택하는 부분에서는 편한 언어(기본값은 영어)를 선택합니다. 한국어를 선택하려면 ko를 입력하면 됩니다.
  10. 드디어 redmine을 띄워 봅니다! 3000번 포트로 접속하시면 redmine이 떠 있는 걸 볼 수 있습니다!
  11. Sudo로 서버를 띄우는 건 위험할 수 있으므로 redmine이라는 사용자를 만들어서 적절히 권한 설정을 해 줍니다. 이제 다음 명령을 통해 권한이 축소된 redmine 계정으로 서버를 동작시킵니다. 이번에는 데몬 모드로 동작시켜 봅니다.
  12. 마지막으로 apache를 thin에 프록시로 연결시켜 줍니다. Apache2와 proxy 모듈이 설치되어 있다고 가정합니다. 다음 명령으로 proxy 모듈을 활성화시킵니다. 다음으로 /etc/apache2/site-enabled/000-default 파일을 수정하여 <VirtualHost *:80> 항목 안에 다음을 넣습니다. 이제 apache를 재시작한 후 80번 포트로 접속합니다! 기본 관리자 계정은 admin:admin입니다.

Troubleshooting

Rake 명령 실행시 'no such file to load -- openssl' 에러 발생

References

이올린에 북마크하기

'운하의 도시'는 네덜란드 암스테르담만 있는 것이 아니었습니다. 벨기에의 브뤼헤(Brugge)도 멋있는 운하가 도시를 가로지르는 운하의 도시 중 하나라고 합니다. 셋째 날 암스테르담을 관광하고, 넷째 날에는 브뤼헤를 관광하게 되었습니다. 브뤼헤는 수도인 브뤼셀보다 매우 서쪽에 위치해 있어서, 바다와 거의 접해 있습니다.

사용자 삽입 이미지

브뤼헤는 마을 전체가 유네스코 세계 문화유산으로 지정되어 있습니다. 마을의 건물이며, 도로 모두가 옛 중세 시대의 모습을 유지하고 있어서 훼손시키지 않기 위해 마을 입구부터 차도 들어가지 못하게 되어 있었습니다. 덕분에 걸으면서 천천히 브뤼헤를 감상할 수 있었습니다.

사용자 삽입 이미지

브뤼헤도 운하 도시이기는 하지만 암스테르담처럼 골목마다 운하가 있지는 않았습니다. 그러나 마치 도시에 흐르는 강의 느낌으로, 꽤 운치있었습니다.

사용자 삽입 이미지

마을 중심의 광장으로 들어가는 길이 꽤 길어서 걷는 동안 사진도 많이 찍고, 많이 본 것 같습니다. 도중에 브뤼헤의 Notre Dame 성당도 구경할 수 있었습니다. 브뤼헤의 Notre Dame 성당은 성당 자체보다도 여러 가지 예술 작품들이 전시되어 있어서 유명하다고 합니다.

사용자 삽입 이미지

밖에서 보기에는 다른 성당들과 비교했을 때 그렇게 큰 성당이라고 생각되지는 않았는데, 안에 들어가보니 그 규모가 상당했습니다. 양쪽 벽에는 여러 가지 조각 등의 작품들이 전시되어 있었고, 가운데에는 예배당이 있었습니다. 궁금한 것은, 지금도 이 성당을 미사에 사용할까요?

사용자 삽입 이미지

위 사진에서 중앙의 하얀 조각상이 미켈란젤로의 '성모와 아기 예수'라는 작품입니다.


성당은 광장으로 가는 길에 들른 것이었기 때문에 그렇게 오래 보지는 않고 빠져나왔습니다. 전에 방문했던 브뤼셀과 같이, 벨기에 특산품이라고 할 수 있는 초콜릿과 여러 가지 과자를 팔고 있었습니다. 벨기에에서 선물용으로 초콜릿을 많이 사 놓았었는데, 여기서 사도 되는데 하는 생각도 들었습니다. 그냥 눈요기만 하고 지나갔습니다.

사용자 삽입 이미지
사용자 삽입 이미지

드디어 브뤼헤의 중심이라고 할 수 있는 Markt 광장(마르크트 광장)에 도착했습니다. 광장을 중심으로 빙 둘러서 있는 그림같은 건물들, 그리고 광장 한가운데에 자리잡은 스케이트장이 인상적이었습니다. 이렇게 유럽에서는 매년 겨울이면 광장 한가운데를 스케이트장으로 만들어 시민들에게 공개한다고 하네요. 점심 시간까지 자유 시간이어서 근처에 즐비한 가게들을 돌아 보기로 했습니다.


우선 짧은 바지에 스타킹만 신고 나온 동생에게 양말을 신겨야겠다는 할머니의 주장에 따라 신발 가게를 둘러 보기 시작했습니다. 처음 들어간 신발 가게에서 다행히 양말을 팔고 있어 양말을 한 켤레 사서 동생에게 신겼습니다. 이런 저런 가게를 구경하다가 전자제품 몰에 들어갔는데, 한 때 사고 싶었던 iPod touch를 포함한 다양한 전자 제품이 (꽤 싼 가격에) 전시되고 있었습니다. 별로 살 생각은 없어 이리 저리 둘러 보던 중에 발견한 DVD를 한 장에 1유로에 파는 일명 '떨이' 코너에서 동생이 원하는 DVD를 몇 장 집어 들어 나름 수확을 올렸습니다.

사용자 삽입 이미지

한켠에 삼성의 '코비' 선전물도 크게 자리하고 있었습니다. 왠지 반가웠습니다. 대충 볼 건 다 본 것 같아서 나서려고 하는데, 갑자기 할머니가 보이지 않는 것이었습니다. 설마 멀리 가셨을까 하며 기다리는데 시간이 지나도 안오셔서 근처 가게를 다 뒤지는데, 이런 데에서 서로 잃어버리면 정말 답이 없겠다는 생각이 덜컥 들더군요. 한참을 찾다가 멀리서 유유히 걸어오시는 우리의 멋쟁이 할머니를 보고 안도했습니다. 할머니도 우리를 잃어버리셔서 광장을 돌며 찾고 계셨다고...

사용자 삽입 이미지

이번엔 동생이 근처의 신발 가게에서 부츠를 사달라고 조르는 바람에 한참 어떤 부츠를 살건지 실갱이를 했습니다. 저는 별로 관심도 없는 신발 가게에서 멀뚱거리며 있다가 겨우 하나를 골라서 계산하는 엄마와 동생의 뒤를 따라 점심을 먹으러 향했습니다.


점심은 어둑한, 마치 반군의 지하 소굴과 같은 분위기를 풍기는 식당 지하에서 먹게 되었습니다. 그렇다고 싫은 분위기는 아니었고, 뭔가 비밀스럽고 아늑하달까요. 그렇게 점심을 먹고, 드디어 프랑스 파리를 향해 출발했습니다. 파리까지 거리가 꽤 되었기 때문에, 오후 내내 도로를 달려 저녁에 드디어 (말로만 듣던) 프랑스 파리에 발을 디뎠습니다.


파리에서는 파리 전문 가이드분께서 가이드를 대신 해 주시게 되었는데, 내일 있을 루브르 박물관 견학을 위한 사전 교육을 해 주시기 위해 미리 합류하셔서 함께 저녁 식사를 했습니다. 저녁은 오랜만에 한식으로, 김치찌개를 먹었습니다. 작은 한식당이었는데, 오랜만에 먹어서 그런 건지 정말 맛있었습니다. 유럽 요리가 입맛에 맞지 않아 지친 사람들에게는 정말 오아시스 같았을 것입니다. 식사 후 식당에서 루브르 박물관의 작품 사진들을 영사기로 띄워 주시며 가이드 분께서 작품 해설 및 감상 포인트를 하나씩 설명해 주셨습니다. 루브르 박물관 하나를 돌아보려면 일주일 내내 다녀도 힘들다고 하시면서, 중요한 작품들이 무엇인지, 그것들을 어떤 관점에서 감상해야 하는지 설명해 주셨습니다. 확실히 설명을 듣기 전과 들은 후에 작품에서 발견할 수 있는 게 많았습니다. 설명을 들으면서, 더욱 내일의 루브르 박물관이 기대되었습니다.


식사를 마치고 짧게 파리 시내를 버스를 타고 한 바퀴 돈 후 호텔에 들어왔습니다. 도시 자체가 문화 유산이요, 관광지인 파리, 그 파리를 돌아볼 내일이 기다려집니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

3일째 날의 이른 아침, 해가 미처 제대로 뜨기도 전에(사실 해는 8시도 넘어서 뜨기 때문에 이른 시간은 아닙니다만) 호텔을 나서 버스를 타고 향한 곳은 네덜란드의 수도, 암스테르담(Amsterdam)이었습니다. 운하의 도시로 알려져 동화에서 나오는 아름다운 도시의 전형으로 머릿속에 그려지는 암스테르담에 직접 발걸음을 옮길 때의 기분은 정말 설렜습니다!

사용자 삽입 이미지
사용자 삽입 이미지

버스는 암스테르담의 중심지, 담 광장(Dam square)에서 멈췄습니다. 새해 첫날의 아침이라 그런지 정말 썰렁했습니다. 가장 큰 건물도 공사중이어서 활력 넘쳐야 할 광장이 뭔가 삭막했습니다. 광장 한가운데에 있는 국립 기념비 주변은 온갖 쓰레기로 넘쳤는데, 전날 한해를 보내고 새 해를 맞는 것을 축하하며 사람들이 먹고 마신 흔적이라고 합니다. 유럽을 여행하면서 계속 생각하는 것이지만, 유럽 사람들은 정말 편하게 세상 걱정 없이 사는 것 같습니다.


원래 담 광장은 큰 백화점도 있고, 기념품 가게도 많아 시간을 보내기 좋은 곳이라고 하는데, 때가 때인지라 모든 백화점과 가게들이 문을 닫고, 사람들도 없어 별 수확 없이 장소를 옮겼습니다. 골목을 따라 잠깐 이동하자 드디어 암스테르담의 운하를 볼 수 있었습니다. 건물과 건물 사이에는 어두운 골목 대신 물이 흐르고 있었습니다. 모든 길이 물을 끼고 뻗어 있는 모습이 정말 장관이었습니다.

사용자 삽입 이미지

아름다운 유럽풍 건물과 물가의 나무, 그 멋있는 풍광을 실컷 감상하고 점심 식사를 할 식당으로 향했습니다. 식당은 담 광장에서 얼마 떨어지지 않은 곳에 있었습니다. 함께 한 가족들은 모두 유럽 음식에 아직도 불만을 표하고 있었지만, 저는 매 끼니가 기대되었습니다. 원래 타국의 문화를 가장 잘 느낄 수 있는 것은 음식이라고 생각하기 때문에, 각지의 다양한 음식을 먹어보는 것 자체가 큰 즐거움이었습니다.

사용자 삽입 이미지
사용자 삽입 이미지

음식이 나오자마자 먹기 바빠서 사진 찍는 것을 깜빡 하고 있다가 조금 먹은 뒤 뒤늦게 찍은 것입니다. 살짝 먹은 자국이 있네요. 전채로는 감자 튀김과 야채가 나왔고, 주 요리로는 생선이 나왔습니다. 부드러운 생선을 크림 소스로 마무리한 조금 독특한 생선 요리였습니다. 살짝 느껴지는 허브향이 정말 좋았던 것 같습니다. 가족들도 이 요리만큼은 맛있게 먹었던 것 같습니다.

사용자 삽입 이미지

후식으로는 생크림을 얹은 과일이 나왔습니다. 깔끔하게 식사를 마무리했습니다.


다음 일정은 드디어 암스테르담의 운하를 제대로 감상할 수 있는 보트 탑승이었습니다. 보트 탑승은 다소 비싼 옵션 상품이었지만, 암스테르담에 와서 운하를 빠트리면 안되기에 함께 했던 일행 대부분이 보트에 탑승했습니다.

사용자 삽입 이미지

구글 어스 (새 창으로 열기) 로 본 암스테르담의 모습입니다. 노란 별로 표시한 곳이 처음 버스가 멈춘 담 광장입니다. 담 광장을 중심으로 해서 도시 전체가 부채꼴의 운하로 연결되어 있는 것을 볼 수 있습니다.

사용자 삽입 이미지

우리가 탄 보트입니다. 낮은 1층짜리 천장이 있는 모터 보트였습니다. 후미에는 천장이 없는 부분도 있어 밖의 풍경을 더 자유롭게 볼 수 있었지만, 날씨가 추워서 저는 포기하고 배 안에서 풍경을 감상했습니다.

사용자 삽입 이미지
사용자 삽입 이미지

건물과 건물 사이에 도로가 있는 대신 물이 흐르고 배가 떠다닌다는 게 참 신기했습니다. 운하변에 있는 건물들에는 대부분 배가 정박할 수 있는 곳이 있어서 수상 교통도 꽤 많이 이용한다는 것을 볼 수 있었습니다.

사용자 삽입 이미지

비싼 만큼 꽤 오래간 운하를 돌아다녔습니다. 40분 정도의 운하 관광을 마치고 배가 정박한 곳은 갓산 다이아몬드 공장(Gassan diamond factory)이었습니다. 다이아몬드 가공 산업은 네덜란드의 가장 발달한 산업 중 하나라고 합니다. 갓산 다이아몬드 공장은 세계에서도 가장 큰 다이아몬드 가공 공장이어서, 일부러 견학도 많이 온다고 하네요. 들어가서 나누어주는 입장 스티커를 가슴에 붙이고 엘리베이터를 타고 위층으로 올라갔습니다. 위층에서는 한국인 직원분께서 공장 설명을 해 주고 계셨습니다.

사용자 삽입 이미지

그 바로 옆에서 실제로 다이아몬드를 가공하고 계시던 다른 직원분입니다. 중간에 가공중인 다이아몬드를 보여 주기도 했는데 너무 작아서 잘 볼 수도 없었습니다. 그런 것 하나에 싸게는 몇 백에서 몇 천 만원까지 한다는게, 역시 보석인가봅니다.

사용자 삽입 이미지

한국인 직원분께서 다이아몬드의 가공 과정에 대해서 열심히 설명하고 계십니다. 보석은 쉽게 탄생하는 게 아닙니다... 가공 과정에 대한 설명이 끝나고 장소를 옮겨 본격적인 세일링이 시작되었습니다. 당연하게도(?) 공장에 견학을 온 것은 다이아몬드가 어떻게 가공되는지 소개하기 위함이라기보다는, 이 세일링이 목적일 테니까요.

사용자 삽입 이미지

다이아몬드의 품질을 정하는 기준인 4C(Carat weight, Color, Clarity, Cut)을 자세히 설명하고, 다양한 다이아몬드를 종이에 펼쳐 보여주었습니다. 정말 같은 무게라도 눈에 보이지도 않을 조그만 티끌 하나 때문에 가격이 몇 천 만원씩 차이나는 경우도 있더군요. 관심을 보이는 분들도 계셨으나, 다이아몬드 살 일은 웬만하면 당분간 없을 것 같은 우리 가족은 일단 그냥 흥미로운 이야기로 들어 넘겼습니다.

사용자 삽입 이미지

엄청난 가격을 자랑하는 다이아몬드들이 진열된 1층의 매장을 빠져 나와 잠깐의 여유를 즐기고 곧바로 네덜란드의 또 다른 멋, 풍차를 보기 위해 떠났습니다. 일반적으로 '풍차마을'이라고 불리우는 잔세스칸스(Zoanse Schans)는 동화 속에서 그려질 법한 네덜란드의 모습이 살아 있는 도시입니다. 원래는 지금보다 훨씬 더 많은 풍차가 있었다고 하지만, 산업화에 밀려 지금은 관광용으로 몇 개만이 보존되어 있다는 게 아쉬울 따름이었습니다.

사용자 삽입 이미지

잔세스칸스에 도착할 때쯤 해가 뉘엿뉘엿 넘어가고 있어 노을을 배경으로 한 풍차의 모습이 색다른 운치를 자아냈습니다. 눈이 하얗게 내린 너무나 아름다운 배경에 모두가 사진을 찍느라 바빴습니다. 본래 특산품인 치즈를 비롯한 여러 가지 기념품을 파는 가게들이 있어서 둘러 봐도 좋지만 새해 첫 날인지라 모두들 문을 닫은 덕분에 많은 시간을 밖의 풍경을 감상하는 데에 쓸 수 있었습니다.

사용자 삽입 이미지
사용자 삽입 이미지

안쪽으로 들어가자, 정초임에도 불구하고 문을 연 치즈 가게가 있어서 들어가 보았습니다. 들어가자 마자 고소한 치즈 냄새가 느껴졌습니다. 엄청나게 많은 종류의 치즈를 조금씩 썰어서 맛을 보게 해 주고, 파는 가게였습니다.

사용자 삽입 이미지

일반적으로 먹는 체다 치즈부터 훈제 치즈, 매콤한 치즈, 야채 치즈 등 다양한 치즈가 있었습니다. 문제는 모두 너무 맛있어서(...) 다 사고 싶더라는 것입니다. 결국 6개 묶음으로 할인하는 것을 사서 가게를 빠져나왔습니다.

사용자 삽입 이미지

동화같은 나라, 네덜란드를 뒤로 하고 우리는 다시 벨기에로 향했습니다. 나라 간의 경계가 무색해서, 숙소를 벨기에에 잡고 네덜란드 관광을 한 후 다시 벨기에로 돌아가는 일정이 가능하다고 합니다. 외국이라면 너무 멀게 느껴지는 한국인으로서는 역시 적응이 안되는군요. 가는 길에 1958년 벨기에 국제 박람회를 기념하여 세운 조형물인 아토미움(Atomium)을 멀리서나마 보고 지나갔습니다. 본래 전혀 일정에 없었던 것이지만, 우리에게 보여 주시기 위해 버스 기사님께서 일부러 아토미움을 볼 수 있는 길을 택해서 지나갔다고 하시네요. 잠시 내려서 휴식도 취할 겸 아토미움을 배경으로 사진을 찍었습니다.

사용자 삽입 이미지

버스는 저녁 식사를 위해 전 날 갔었던 브뤼셀의 그항 쁠라를 다시 찾았습니다. 유럽에서의 중식-별로 좋은 선택은 아니지만, 문을 연 식당이 많지 않아 선택의 여지가 좁았다고 합니다-을 먹고, 전 날 묵었던 숙소에 돌아가는 것으로 3일째의 일정은 마무리됐습니다.

남은 이야기
  1. 암스테르담이나 담 광장의 'Dam'은 우리가 일반적으로 말하는 댐을 의미합니다. 운하의 도시, 암스텔 강의 범람하는 강물을 막기 위해 댐을 지은 자리가 지금의 담 광장이고, 이것이 암스테르담이라는 도시 이름의 시효가 되었다고 합니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)

거위

Murmuring 2010/04/23 23:59

이런 우스갯소리가 있다. KAIST에서의 서열은 총장, 거위, 교수, 그리고 학생이라는.

사용자 삽입 이미지
사용자 삽입 이미지

온 캠퍼스를 누비고 다니시는 거위님.
이번에는 무려 반대협 후드티 메인 캐릭터로 거듭나셨다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
TAG KAIST, 거위

Murmuring 2010/04/22 01:15
사용자 삽입 이미지

요즘 날씨가 꼭 가을 같아요.


봄이나 가을이나 날씨는 비슷하잖아?


아녜요, 달라요.


뭐가 다른데?


봄은 미분하면 양수지만 가을은 미분하면 음수잖아요.

이올린에 북마크하기(0) 이올린에 추천하기(0)
TAG 가을, 계절,

C에서 코드 길이를 줄이고 깔끔하게 만들기 위해 많이 사용하는 것이 바로 삼항 연산자(ternary operator)이다. ?:으로 구성되는 삼항 연산자의 사용법은 다음과 같다.



위 코드는 Condition이 true일 때 result에 resultWhenTrue가 대입되고, Condition이 False일 때 result에 resultWhenFalse가 대입된다. if문을 쓰면 오히려 소스가 보기 싫어지고 이해하기 어렵게 될 때 복잡한 연산 사이에 잘 사용하면 참 간편한 녀석이다.


그러나 Python을 배우면서 삼항 연산자는 공부한 기억이 없다. 코딩을 하면서 색상값을 증가시켜야 하는 부분이 있었다. 색상값이기에 최댓값을 255로 제한해야 했는데, C 같았으면 삼항 연산자를 이용해서 할 터였다. 와 같이 말이다. 그러나 Python에서는 if문을 쓰자니 지저분해지고, 분명히 다른 방법이 있을 것이라는 생각이 들어 찾아보았더니 여러 가지 방법이 존재했다.


  1. 2.5부터 지원되는 공식 삼항 연산자

    다행스럽게도, Python 2.5부터 기본적으로 공식 삼항 연산자가 지원된다고 한다. C와 비교하면, ?와 : 대신 if, else를 쓰고, 순서가 조금 바뀌었다.,




    읽었을 때 자연스럽게 의미가 있는 문장으로 읽히는 것은 좋지만 resultWhenTrue와 resultWhenFalse 사이에 Condition이 들어 있어 가독성 면에서는 조금 부정적인 면이 있지 않나 생각한다.

  2. 튜플을 이용한 방법:

    Python에서 True는 1이고, False는 0이다. 따라서 조건을 시퀀스의 인덱스로 사용할 수 있다.




    형태는 간결하지만 처음 보는 사람의 경우 그 의미를 이해하기까지 시간이 걸린다. 또한 resultWhenFalse와 resultWhenTrue를 미리 계산해 놓기 때문에 미리 계산하면 안되는 경우(조건에서 인덱스의 범위를 검사하여 범위 안에서만 원소에 접근해야 하는 경우 등)에는 부적절하다.

  3. 논리 연산자를 이용한 방법:

    x and y는 x를 먼저 실행한 후 결과가 False이면 x를 리턴하고, True이면 y를 계산한 후 이를 리턴한다.
    x or y는 x를 먼저 실행한 후 결과가 True이면 x를 리턴하고, False이면 y를 계산한 후 이를 리턴한다.
    자세한 설명은 Documentation (새 창으로 열기) 에 잘 나와 있다. 이와 같은 특성을 이용하면 논리 연산자로도 삼항 연산자를 구현할 수 있다.




    만약 Condition이 True라면 and 연산자는 resultWhenTrue를 리턴할 것이다. resultWhenTrue가 True라면 or 연산자는 resultWhenTrue를 리턴하므로 결과적으로 전체 문장은 resultWhenTrue를 리턴한다. 만약 Condition이 False라면 and 연산자는 Condition, 즉 False를 리턴할 것이다. or 연산자는 앞에 있는 문장이 False이므로 뒤에 있는 resultWhenFalse를 리턴하므로, 전체 문장은 resultWhenFalse를 리턴한다.
    이 방법의 큰 문제는 resultWhenTrue가 항상 True일 때에만 사용할 수 있다는 것이다. 만약 resultWhenTrue가 False라면 Condition이 True일 때 or 연산자는 resultWhenTrue 대신 resultWhenFalse를 리턴할 것이다. 이를 해결하기 위해 약간의 수정을 한다.




    resultWhenTrue를 담고 있는 리스트는 항상 True이므로(원소 개수가 1개 이상이면 True) 둥근 괄호는 resultWhenTrue와 resultWhenFalse 중 하나를 원소로 가지는 리스트를 리턴할 것이고, 이의 첫 번째 원소를 취하면 우리가 원하는 값을 얻을 수 있다.
    논리 연산자의 특성상 이 방법은 조건이 거짓일 때에는 아예 resultWhenFalse를 계산하지 않는다.


2.5버전부터는 새로운 연산자가 생겨 굳이 편법을 사용하지 않아도 되게 되었지만 편법을 쓴 사람들이 쓴 다른 코드를 읽을 때에는 조금 도움이 되지 않을까.

이올린에 북마크하기(0) 이올린에 추천하기(0)

정신없이 지내다 보니 어느새 중간고사가 끝나 있네요. 무려 대학 들어와서는 대학 생활에 관한 포스팅은 하나도 못 하고 있었습니다. 성적이 어떻게 나올지 몰라서 일단은 공부에 신경을 쓰다보니 시간이 별로 없었습니다;; 사실 포스팅 거리는 정말 많은데, 어떻게 어디서부터 시작해야 할 지 모르겠고, 글감을 잡고 있노라면 시간이 너무 오래 걸려서 그냥 생각나는 대로 조금 프리스타일로 쓰기로 했습니다. 그게 부담 없이 많이 쓸 수 있는 방법인 것 같네요.


2월 1일에 개학을 했으니 이제 2달이 지나가고 있습니다. 지난 주에 중간고사를 치렀으니 학기의 반이 지나간 것입니다. 학기 초에는 새터다, 동아리다, 동문 모임이다 해서 여기저기서 먹고 마시느라 정신이 없었고, 조금 진정되나 싶으니 숙제가 밀려들어 정신이 없더니 곧바로 시험이 닥쳤습니다. 동아리는 두 개를 가입했습니다. IVF와 SPARCS인데요, IVF는 Inter-Varsity christian Fellowship의 약자로, 전국적인 학생 선교단체이고, SPARCS는 KAIST 내 다양한 전산 서비스를 제작·관리·운영하는 동아리입니다. 사실 기독교 동아리에 가입하는 것을 조금 망설였습니다. 글쎄요, 정확히 어떤 생각이었는지는 모르겠지만 뭔가 저항이 없었다고는 말할 수 없을 것 같습니다. 그래도 결국에는 열심히 활동하고 있습니다.


가입한 동아리가 두 개라 학기 초 MT도 2번 다녀왔습니다. MT는 정말 체력을 완전 소진시키는 것 같습니다. 술 때문만은 아닌게, IVF MT에서는 술이 없었지만 역시 며칠간 체력적 파장이 심하더군요. SPARCS MT가 끝나고는 거의 이틀간 제대로 먹지를 못했고 말입니다. 그래도 재미있는 시간들이었습니다.


친구들이 제 시간표를 보고 축복받은 시간표라고들 합니다. 금요일이 공강이어서 주말에 하루를 더해서 쉴 수 있는게 가장 좋은 점인 것 같습니다. 월요일부터 목요일까지 매일 아침 9시에 수업이 있는 것도 어떻게 보면 힘들 수도 있지만, 생활 패턴이 흐트러지지 않게 잡아주는 것 같아서 저는 나름 괜찮다고 생각하고 있습니다. 적어도 밥 먹을 시간도 없이 강의와 강의가 붙어 있다거나 하는 시간표가 아닌 건 정말 다행인 것 같습니다. 새내기 세미나 1학점을 포함해서 총 15학점을 듣고 있는데, 시간적인 압박이 있다거나 숙제의 부담이 크다거나 하진 않습니다. 할 일이 없이 빈둥거리는 것보다는 계속적으로 할 일이 있는 게 사람을 좀 더 활기차게 만든다고 할까요. 그 정도가 심하면 힘들겠지만, 힘들 정도는 아니라서 지금까지는 괜찮은 것 같습니다.

사용자 삽입 이미지

제 수첩 앞에 붙어 있는 시간표입니다. 월요일이 조금 바쁘고 낼 것도 많지만 그것 빼고는 꽤 괜찮은 것 같습니다. 수업보다도 퀴즈와 연습반의 부담이 더 큰데, 다행히 매일 수업이 적어도 4시 전에는 끝나서 퀴즈를 볼 때까지 시간이 꽤 비어 그 동안 공부를 하면 웬만큼 커버할 수 있습니다.


선배들은 시험 끝나고 집에 가는 게 설 이후 처음이라는 사람이 많은 것 같은데, 저는 수도 없이 올라간 것 같습니다. 가족들을 볼 수 있으니 좋은 것이라면 좋은 것이겠지만, 교통비도 만만찮아서 사실 조금 부담이 되긴 합니다. 어쩔 수 없이 올라가야 하는 이유는, 치아 교정 초기라 수시로 치과에 가야 하기 때문입니다. 다행히 금요일이 공강이어서 목요일 저녁이나 금요일 아침에 올라가서 금요일에 진료를 받고, 다시 돌아오는 스케쥴이 가능합니다. 지난 주에도 치과 진료를 받았고, 이번주에는 올라가지 않지만 다음 주와 그 다음 주에 예약을 해 놓았으니 올라가야 합니다...;


두서 없이 쓰다 보니 다음에 어떤 내용을 써야 할 지 모르겠네요. 또 시간이 나면 포스팅하도록 하겠습니다. 사진도 올리고 싶은데 카메라 충전기를 잃어버려 찍지를 못하고 있네요.

이올린에 북마크하기(0) 이올린에 추천하기(0)