8월, 2015의 게시물 표시

애니 < 기생수 > 를 보고...

고등학교 때였나 ? <기생수> 라는 만화책을 보았던 것이. 오른손에 기생수가 살면서 벌어지는 일이었다. 꽤 재밌게 읽었던 기억이 있다. 다만 몇 권 읽지 못했던 것이 아쉬웠다. 그런데 지난해 말에 애니 <기생수> 가 방영되었고, 올해 초에 완결되었다. 역시 애니는 완결판을 몰아보아야 제 맛이다. 지난 주말에 <기생수> 를 몰아보았다. 만화책을 몇 권 읽지 못했던 터라, 전체적인 내용과 주제를 알지 못했는데, 꽤 재밌는 내용과 주제를 담고 있었다. 우선 인간다움이라는 것이 무엇인지 묻는다. 신이치의 여자 친구로 등장하는 사토미는 계속해서 신이치에게 묻는다. 신이치가 맞느냐고. 기존의 신이치와 분위기가 다르다는 느낀 것이지만, 이것이 곧 신이치의 인가다움에 대한 질문이다. 오른쪽이가 기생하면서 신이치의 성격이 달라지던 차에, 신이치가 신이치의 엄마를 조종하는 기생수에게 심장을 뚫려 목숨이 위태로워졌다. 숙주인 신이치가 죽게 되면, 기생수인 오른쪽이도 죽게되므로, 심장을 꿰매 기능을 되돌린다. 이 와중에 오른쪽이의 일부가 신이치의 몸에 퍼지면서, 더욱 차가워졌다. 신이치 자신도 이런 모습이 인간답지 않다고 괴로워한다. 인간다움은 무엇일까 ? 어떤 이들은 인간을 인간 답게 하는 것은 이성이라고 한다. 하지만 이성의 우월성을 강조하던 근대주의적 사고는 결국 제1차, 제2차 세계대전을 거치면서 무너진다. 그리고 이성/합리성으로 따지자면 기생수보다 인간이 더 앞설 수 있을까 ? 그렇다면 이제 무엇으로 인간다움을 규정할 수 있을까 ? <기생수> 에서 제시하고 있는 것은 감성이다. 특히 맹자가 주장했던 측은지심. 주변에 자기보다 못하다고 생각되는 존재들을 어여쁘게 여길 수 있는 마음. 신이치는 차에 치여 죽을 위험에 처한 강아지를 구하고서 살 가망이 보이지 않자 죽을 때까지 기다린다. 하지만 문제는 그 다음. 신이치는 그 강아지를 쓰레기통에 버린다. 하지만 사토미는 이를 보고 경악한다. 물론 사토미가 사라진

< 누구를 구할 것인가 > 를 읽고...

시사 주간지 <시사IN> 을 읽는다. 뒷부분에 보면 책을 추천해 주는데, 눈에 들어온 책이 있었다. <누구를 구할 것인가>. 이 책은 마이클 샌델의 <정의란 무엇인가> 에도 등장했던 "전차 문제" 를 다룬 책이라고 했다. <정의란 무엇인가> 를 읽을 때도 재미있는 문제라고 생각했는데, 그 문제를 주제로 다룬 책이라니 읽고 싶어졌다. 다행히 책 자체는 두껍지 않고, 어렵지 않게 씌여 있어서, 부담없이 읽을 수 있었다. "전차 문제" 는 일종의 철학 퍼즐이라고 한다. 그리고 이를 연구하는 "전차학" 이라는 학문 분야도 만들어졌다고 한다. 대체 무슨 내용일까 ? <정의란 무엇인가> 를 읽었다면 알고 있는 사람도 있겠지만, 내용을 보자. 브레이크가 듣지 않는 전차 앞에 다섯 명이 서 있다. 기관사는 선로를 유지하여 다섯 명을 치어 죽일 수도 있고, 다른 선로로 틀어 한 사람만 치어 숨지게 할 수 있다. 기관사는 사람이 적은 선로로 방향을 틀어 다섯 사람 대신 한 사람을 죽여야 할까 ? 그리고 다음의 문제도 함께 나온다. 의사가 한 사람을 죽여 혈청을 뽑아낸면 여러 사람의 목숨을 살릴 수 있다. 이 경우에는 전차 시나리오와 어떻게 다를까 ? 이로부터 다양한 형태의 변형들이 나타난다. 그런데 만약 이 전차 문제가 현실이 되었다면 어떻게 될까 ? 이에 대해 검사, 변호사, 교수, 심리학자, 주교 등 다양한 입장을 가진 사람들의 의견이 개진된다. 이와 함께 벤담, 칸트, 흄, 니체, 마키아 벨리 등 여러 철학자들의 입장들도 소개된다. 필자는 "여론 법정" 을 도입하여 다양한 입장의 의견들을 소개하고서, 이렇게 묻는다. 당신은 누구를 구할 것인가 ? 

< 다윈의 식탁 > 을 읽고...

팟캐스트 <과학하고 앉아 있네> 를 애청하고 있다. 방송 중에 몇 가지 책을 추천/광고 했었는데, <다윈의 식탁> 은 그 중의 하나이다. <다빈치 노트> 라는 KBS2 에서 방영되다가 종영된 프로그램에서 패널로 등장했던 장대익 교수의 저서이다. 이름에서도 알 수 있듯이 이 책은 진화론에 대한 책이다. 당대 최고로 칭송받던 진화 생물학자인 윌리엄 해밀턴의 장례식을 계기로 전 세계에서 굴지의 진화론자들이 한 자리에 모여 각 주제별로 논쟁을 벌이는 이야기이다. 언뜻 보면, 실제 벌어진 사건처럼 읽히지만, 가상의 논쟁이다. 필자가 토론자들의 저서를 바탕으로 각자의 의견으로 꾸민 것이다. 전체 7 개의 장/주제로 구성되어 있다. 첫째, "강간도 적응인가 ?" 둘째, "이기적 유전자로 테레사 수녀를 설명할 수 있나 ?" 셋째, "유전자에 관한 진실을 찾아서", 넷째, "진화는 1백미터 경주인가, 넓이뛰기인가 ?" 다섯째, "박테리아에서 아인슈타인까지", 여섯째, "진화론의 나무 아래서", 마지막은 "다윈의 진정한 후예는 ?". 큰 줄기는 <이기적 유전자> 로 월드 스타가 된 리처드 도킨스 측과 그 대척점인 스티븐 제이 굴드 측의 대립이다. 리처드 도킨스 측이 진화론의 주류라면, 스티븐 제이 굴드 측은 이에 도전하는 비주류이다. 대체로 저자는 도킨스 측에 기울어져 있는 듯하다. 하지만, 그렇다고해서 도킨스 측을 그대로 받아들이지도 않는다. 때로는 굴드 측의 의견으로 도킨스 측을 비판하기도 한다. 나름의 비판적 시각일 것이다. 이 책을 읽다보면, 토론에 참여하는 진화론자들의 성격도 어느 정도 알 수 있다. 그리고 더욱 중요한 것은 진화론에 대한 기본적인 흐름을 파악할 수 있다는 것이다. 일종의 입문서/개론서 역할을 하고 있는 것이다. 진화론에 대해서 체계적으로 살펴보고 싶다면 크게 도

MinGW/MSYS 에서 *** Couldn't reserve space for cygwin's heap, Win32 error 0 문제 해결하기

32 비트 윈도7 에 MinGW 패키지를 설치해서 사용하다가, 어느날 갑자기 *** Couldn't reserve space for cygwin's heap, Win32 error 0 에러가 발생하면서 ls 같은 binutils 를 사용할 수 없게 되었다. 일시적인 오류인가 했는데, 전혀 달라지지 않았다. 그래서 구글신께 물어보았다. 이 문제로 고통받는 것은 나뿐만이 아니었다. 방법도 여러가지가 있었다. 시스템을 새로 부팅하라는 말도 있었고, 윈도 7의 가상 메모리 설정을 바꾸라는 말도 있었지만, 아무것도 문제를 고치지는 못했다. 계속해서 방법을 찾다가, 이 문제는 msys-1.0.dll 의 베이스 주소가 충돌하기 때문이라는 설명과 함께 이 베이스 주소를 바꾸면 된다는 해결책을 찾았다. 실제였다. 이 방법으로 해결했다. 방법은 간단하다. msys-1.0.dll 이 설치되어 있는 디렉토리로 이동하자. 보통은 x:\MinGW\msys\1.0\bin 이다. 그 디렉토리에서 다음을 실행하자. rebase -b 0x50000000 msys-1.0.dll 베이스 주소 0x50000000 은 고정값이 아니다. 필요하다면 다른 값으로 바꾸어도 된다. 그리고 만일 rebase.exe 가 없다면 다음에서 받자. http://repo.or.cz/w/msysgit.git/blob_plain/76920dc49da361257cbccb02ea63b3e5357fe353:/bin/rebase.exe 해당 파일은 bin_rebase.exe 로 저장이 되니, rebase.exe 로 바꾸자. 그리고, rebase 를 실행할 때 msys-1.0.dll 을 이용하는 프로그램이 실행되고 있으면 안된다. 예를 들어 sh. 참조 : http://jakob.engbloms.se/archives/1403

ATM 에 돈을 놓고 오다...

어제였다. 오늘(8/18) 쓸 현금을 미리 뽑아 놓으려고 했다. KB국민은행 ATM 에서 현금을 뽑았다. 아니 뽑았다고 생각했다. 분명 ATM 에서 체크카드를 회수했으니까... 오늘 아침에 어제 뽑아 놓은 현금을 쓰려고 지갑을 열었더니, 웬걸. 지갑에 현금이 없었다. 이상했다. 어제 분명히... ㅠ.ㅠ 떠올랐다. 체크카드만 챙기고 정작 현금은 챙기지 않았다는 것이... 오전에 있었던 일이라 하루 종일 우울했다. 비록 그렇게 큰 돈은 아니었지만, 그럼에도 우울했다. 그래도 돈이니까... ㅠ.ㅠ 퇴근하던 길이었다. 갑자기 한 통의 전화가 걸려왔다. 으레히 통신사 ARS 마켓팅이겠지 하면서 아무 생각없이 받았는데, 여자분이 내 이름을 확인하고 혹시 어제 ATM 에서 돈을 놓고 가지 않았냐고 묻는 것이었다. 나도 모르게 솔~~~ 음이 나왔다 보다. 그 여자분께서 꽤 놀라셨다. 상관없다. 정말 반가웠으니까. ATM 에 놓고 간 돈을 통장으로 다시 입금해준다고 했다. 궁금했다. 그래서 물었다. 어떻게 놓고 간 것을 알게 되었냐고. 그랬더니, 설명해주더라... 보통 ATM 에서 돈을 뽑아놓기만 하고 가져가지 않으면, ATM 의 현금 입출부분이 닫히면서 작동을 멈춘단다. 그러면 ATM 을 관리하는 기사분이 오셔서 ATM 의 이상 유무를 확인하고, 나처럼 돈을 놓고 간 경우라면, 해당 내역을 적어 놓는다고 한다. 은행에서는 이 내역을 확인하고, ATM 의 실제 입출 내역을 비교하여, 돈을 놓고 간 고객에게 돌려준다고 한다. 호~~~ 훌륭하다, 훌륭해. 솔직히 찾을 수 없을 것이라 생각했다. 그래도 혹시나 하는 마음에 은행에 확인이나 해볼까 했다. 그런데 은행에서 알아서 전화를 해주고, 돈도 돌려준다니. 대박이다. 예전에 같은 ATM 에서 돈을 뽑고 있을 때, 어떤 여자분이 혹시 놓고 간 돈을 보지 못했느냐고 물었었다. 의심의 눈초리를 보내면서... 정말 누군가 가져가지 않았다면, 아마 그 분도 이렇게 돌려받지 않으셨을까 ? 많지 않은 금액

Qt 로 만들자: 환율 계산기

이미지
이번에는 <환율 계산기> 를 만들어보자. 환율은 시시 각각 변하므로, 계산하는 시점의 환율을 아는 것이 중요하다. 이를 위해 웹페이지를 분석하는 방법을 사용할 것이다. 1. 요구 사항 환율을 계산할 나라들을 정할 수 있다  딱히 더 이상의 요구 사항은 없다. ^^ 2. 코드 작성 2.1 프로젝트 생성 프로젝트 이름 : Exchange 메인 클래스 이름 : Exchange 메인 클래스 유형 : QMainWindow  2.2 헤더 분석(exchange.h) Colored By Color Scripter ™ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include  <QMainWindow> #include  <QtWidgets> #include  <QtWebKitWidgets> /**  * @brief 환율 계산기 클래스  */ class  Exchange :  public  QMainWindow {     Q_OBJECT public :     Exchange(QWidget *parent = 0);     ~Exchange(); private :     QAction *_webPageViewAction;     ///< 웹페이지 보기 액션     QComboBox *_fromCombo;   ///< 바꿀 나라     QLineEdit *_fromLine;    ///< 바꿀 금액     QComboBox *_toCombo;     ///< 바뀐 나라     QLineEdit *_toLine;      ///< 바뀐 금액     QWebView *_web;                  ///< 웹 보기/편

Qt 로 만들자: 계산기

이미지
이번에는 계산기를 만들어보고자 한다. 모델은 Windows 7 에 있는 "계산기" 일반용이다. 1. 요구 사항 사칙연산 제곱근, 백분율, 역수 계산 부호바꾸기 수식 수정 이 정도의 기능을 구현하도록 하자. 2. 구현 2.1 프로젝트 생성 프로젝트 이름 : Calc 메인 클래스 이름 : Calc 메인 클래스 유형 : QMainWindow 2.1 헤더 헤더 파일을 보자 Colored By Color Scripter ™ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 /*! \file calc.h  */ #ifndef  CALC_H #define  CALC_H #include  <QMainWindow> #include  <QtWidgets> /*!  * \brief 계산기 클래스  */ class  Calc :  public  QMainWindow {     Q_OBJECT public :     Calc(QWidget *parent = 0);     ~Calc(); protected :      void  keyPressEvent(QKeyEvent *e); private :      /*!      * \brief 연산 모드      */      enum  OperationMode {None = 0,    //!< 초기 상태                         Plus,        //!< 더하기                         Minus,       //!< 빼기