Linux 및 Mac OS X의 POSIX 기반의 운영체제에서 작동하는 wxPython Module은 기본적으로 문자셋을 지정해줘야 인식함

문자셋 지정 예 

# -*- coding: cp949 -*-
# -*- coding: utf8 -*-
# -*- coding: ansi -*-
Posted by WebPeace


 난 솔직히 이전부터 영화나 소설 작품에 울지 않는, 눈물이 메말라 버린 인간이었다. 20년이라는 어떻게 보면 길지도 않은 삶인데다가, 그다지 문학적 감수성도 풍부하지 않았고 그렇다고 6.25 전쟁, 5.18 혁명 같은 역사의 굴레속에도 살지 않은 인간, 즉 풍랑을 견뎌 보지 않은 온실 속의 화초라고나 할까.. (절대로 귀하게 자랐다는 말은 아니다. 단지, 삶의 굴곡이 없었을 뿐)
 하지만, 옛 격언에 "겪어보지 않은 자 어찌 알리오."라는 말이 있듯이.. 좀 특이한 작품을 이야기해볼까한다. (스포일이 있으니 아직 보시지 않은 분들은 조용히 Backspace를 누르시길.. 영화를 보고 읽을 것을 강력히 추천하는 바이다.)

 세상은 언제나 현실적이다. 세상에는 "바람과 함께 사라지다"와 같은 불꽃 같은 로맨스도 존재하지 않고, "슈렉"과 같은 개연성 없는 해피엔딩도 존재하지 않는다. 단지, 원인과 결과라는 굴레 속에 사람들의 슬픔과 기쁨, 아픔이 얽히고 설키어 응어리 질 뿐..
 이 영화는 그러한 세상의 현실성을 꿈과 같은 작화에 담은 작품이다. 한마디로 배경과 그들의 추억은 꿈과 같지만 현실로 돌아오는 순간 이 영화의 감동은 시작된다. (작자 주 : 이 영화를 보고 감동이라는 단어는 적절치 않다는 사람 분명히 존재할 것이다. 작자도 감동이라는 단어를 적절히 다른 단어로 바꾸고 싶지만, 나와 비슷한 느낌을 가진 사람들에게는 분명히 감동이라 전달될 것이라 생각하기에 그냥 단어를 놔둔다.)

 - 첫사랑이라는 느낌의 표현 : 누군가는 한 번쯤은 겪어 봤을 아름다운 이야기
 첫사랑을 떠올리면 사람들은 보통 어떻게 생각을 할까? 이 영화에서 표현한 타카키(남자 주인공 분)의 첫사랑은 말그대로 아련한 추억일까? 아니면 현실을 살아가는 데 방해가 되는 제거해야 할 응어리 일까...
 사실 이 영화에서의 1화 "벚꽃 무리"에서는 어느 드라마, 소설, 영화에서나 표현 할 수 있는 "사랑 이야기"이다. 아름다운 벚꽃 무리의 배경으로 부터 시작하여, 아름다운 벚꽃 무리의 배경으로 끝나는 1화, "벚꽃무리"는 아름다운 첫사랑의 이야기를 표현하기에 충분하다. 하지만, 이것으로 첫사랑에 대한 청자들의 느낌을 표현 할 수는 없다. 왜냐, 사람들은 추억이나 해피앤딩만으로는 이러한 이야기들을 그저 시시콜콜하고 뻔한 사랑이야기로 넘겨 버릴 것이 뻔할테니..
 하지만, 3화의 "초속 5cm"에서 그러한 사랑이야기를 아련한 추억이냐, 방해가 되는데 제거해야 할 것이냐를 청자에게 결정권을 넘기면서 첫사랑이라는 느낌의 표현을 시작하게 된다. 청자는 그러한 선택의 기로속에서 자신의 경험을 비추어 보면서 알 수 없는 감정이입에 끌리 듯이 현실에서는 끌어낼 수 없는 자신의 첫사랑의 이야기를 떠올리게 된다. 특히나 배경음악으로 깔리는 "one more time, one more chance"는 첫사랑에 대한 미련 아닌 미련을 표현하고 있지만, 지나가는 그림들은 현실 세계를 보여주며 더욱더 청자들의 아쉬움과 미련을 극대화 시킨다. 이는 1화에서 보여주었던 첫사랑의 이야기가 아름답고 아련하면 아련할 수록 마지막에서 보여주는 현실이 더욱더 슬프고 아쉬운 것이다.

- 짝사랑 : 역설? 짝사랑은 사랑이 아니지만, 사랑이다.
 짝사랑, 생각하면 참으로 가슴아픈 단어이다. 짝사랑을 하는 대상이 몰라 주는 것도 상당히 아픈 일이지만, 그러한 현실을 알면서도 자신의 감정을 조절 할 수 없다는 현실 자체도 상당히 슬프다. 2화 "우주비행사"는 바로 이러한 짝사랑을 나타내었다.
 대사중에 이런게 있었다. "나는 ㅇㅇ를 사랑하지만, ㅇㅇ는 날 사랑하지 않는 것을 알고, 하지만 그래도 난 ㅇㅇ를 사랑 할 수 밖에 없어." 짝사랑은 온전한 사랑이 아니지만, 사람이기에, 사랑이기에 분명 냉철한 판단에 아님을 알고서도 할 수 밖에 없는게 짝사랑이라는 것..

- 숨겨진 의미들과... 첫사랑, 짝사랑, 이별 사랑의 삼박자의 감동 포인트
 살면서 누구나 한 번 쯤은 겪어 봤을 이야기, 그런 시시콜콜한 이야기 속에서 작가는 현실적인 결말에 감동을 걸었고, 사람들은 그러한 이야기 속에서 주인공들 속에서 자신을 발견한다. 그로테스크한 일상들의 배경은 이별과 현실에 대한 표현을 극대화 시켰으며, 그러한 일상속에서 보여지는 숨겨진 사물들 하나하나의 의미는 이 영화의 감동을 더욱더 극대화 시킨다. 3화에서 비록 빠른 장면 전환때문에 제대로 보지 못했던 "말"들도, 그들의 표정도.. 1화에서 보여주었던 편지를 전달하지 않았던 것도, 스치며 지나가는 "다이죠브(괜찮아)"라는 말도.. 다 한 맥락에서 볼 수 있다.

- 원점으로 : 첫사랑.. 설레나..후에 시리게 남는다.
 그 건널목에서 과연 첫사랑을 만났다면 나는 그렇게 매몰차게 지나갈 수 있겠는가?  그렇게 쉽게 첫사랑과 연락을 끊었을까? 그렇게 첫사랑을 사랑했다면 한 번 쯤은 붙잡을 용기가 없는가? 필자는 마지막 장면에서 이러한 고민들을 했다. 자연스럽게 시리게 남은 나의 첫사랑에 대한 똑같은 잣대의 질문이 주어졌고, 이러한 질문 하나하나를 생각할 때마다 가슴 한 켠이 시려오는 건 메말랐던 감정의 우물을 조금이라도 적신 기분이지 않을까 생각해본다.

- 글 쓴 후에
 사실 이런 글을 쓰고 나서 내 자신에 너무 실망한다. 분명 내가 받은 것은 200%인데 글로 표현할 수 있는 것은 20% 뿐인 것 같아 상당히 서운하다. 하지만, 이러한 감정을 Native하게 느끼는 방법은 영화를 여러 번 보는 것이 가장 좋은 방법임은 틀림없다.

Posted by WebPeace

트랙백은 내가 이전에 생물 공부를 했었을 때 신기한  내용이 있어서 포스팅한 것이다. (벌써 2년하고도 4개월이 되었다.) 블로그 이웃분이랑 이야기하면서 전 생명과학을 하고 싶어요라고 이야기했었고 블로그 이웃분도 열심히 하라고 했던 기억이 새록새록 나는데...
 어느덧 POSTECH 생명과학과 학생이 되어 생명과학을 공부하고 있다는게 감회가 새로워진다.
 오늘 포스팅할 내용은 이전에 ATPase의 비밀이라는 포스트를 다시 한 번 배운거에 기초하여(?) 제대로 서술해 보려고 한다. 제목도 좀 거창하게.. (실은 Stryer Biochemistry에 나와있는 제목이다.) 그림은 Stryer책의 CD판이 없어, 이전에 썼던 그림을 그대로 이용하여 설명한다. (하지만 내용은 다르다는거..-_-;;)


          


 왼쪽 그림은 ATP Synthase가 matrix와 intermembrane space사이의 Proton의 Gradient (intermembrane space의 charge가 +)에 의해 ADP + Pi가 ATP로 합성되는 모식도를 나타내는 그림이다. 오른쪽은 역으로 intermembrane charge가 상대적으로 -를 띨 때 ATP가 ADP+Pi로 분해되는 모식도를 나타내느 그림이다.
(이러한 Enzyme의 특성을 reversible하다고 한다.)

   
  왼쪽 그림은 F1에서 alpha, beta, gamma Subunit complex를 보여준다. 실제적으로 gamma subunit의 모양이 non-symetric, 한마디로 대칭성을 이루고 있지 않기 때문에 gamma와 conformational한 interact ion을 가지고 있는 beta subunit들은 gamma의 회전으로 인해 각각 3개의 다른 conformational formation을 가지게 되고 3개의 다른 formation은 ATP 합성 반응의 각각 다른 상태를 보여주게 된다.


  이게바로 3개의 Status를 나타내는 것인데 각각 T, L, O form이라고 한다. T form은 Tight Binding이 되어 있어 ATP <-> ADP+Pi의 반응이 reversible하게 교차적으로 일어나는 상태라고 할 수 있다. 여기서 Proton의 Gradient에 의해서 위의 reversible한 반응이 ATP쪽으로 쏠리게 되고 3개의 Proton에 의하여 gamma subunit이 120도 회전하는 순간 O form으로 바뀌어 ATP가 빠져 나오게 된다. L form은 loosing binding으로 ADP + Pi가 Covalent Bonding에 의하여 beta subunit에 느슨한 결합을 하는 form이라고 보면 된다.
(여기서 중요한 것은 alpha, beta subunit이 회전하는 것이 아니라 gamma subunit의 회전으로 각각 alpha subunit의 conformational한 chage가 일어나 form이 각각 T->O->L, L->O->T, O->L->T순으로 3개의 beta subunit이 돌림노래처럼 conformation이 바뀐다는 것이다.


왼쪽 그림을 살펴보면 어떻게 Proton Gradient가 gamma subunit을 회전시키는지 알 수 있다. 사실 그림이 자세히 안나와 있어서 그렇지만 a subunit에는 2개의 Channel이 존재한다. Cytoplasmic half-Channel과 Matrix half-channel인데 두개의 채널은 각각 H+의 통로 역할을 한다. 전자의 채널은 Cytoplasm 방향쪽으로 뻗어서 Cytoplasm에 있는 Proton을 Subunit c의 Aspartic Acid Residue에 붙여주는 역할을 한다. Matrix half-channel의 경우 matrix쪽의 Proton을 마찬가지로 Aspartic Acid Residue에 붙여주는 역할을 한다.
 사실 왼쪽의 그림은 좀 잘못된 면이 있다. (그림이 아무래도 이전의 것이라고 제대로 나와있지 않은 것 같다.) ring of c subunit이 반시계 방향으로 도는 이유는 설명된 지 얼마 안되서 그런듯 하다. 사실 a subunit의 왼쪽에 있는 channel이 cytoplasm에서 proton을 받아들이는 Channel이다. 왼쪽에서 proton을 받아들이게 되면 왼쪽의 Aspartic Acid를 가지고 있는 c subunit은 charge를 가지고 있게 되지 않는다. (Aspartic Acid에 Proton이 붙기 때문이다.) 하지만 오른쪽은 그대로 (-) Charge를 띠게 되는데 c subunit은 transmembrane, 즉  membrane에 박혀있는 subunit이기 때문에 (-) Charge를 띠게 되면 membrane의 지질쪽으로 들어갈 수 없다. (극성을 띠는 물질은 membrane을 통과할 수 없다는 이야기는 익히 들어보았을 것이다.)
 그러한 이유로 (-) Charge를 띠는 오른쪽의 subunit c가 오른쪽으로 갈 수 없기 때문에 (a subunit은 membrane내에서 charge를 sheilding하여 polar한 subunit이 안정하게 존재할 수 있게 하는 역할도 한다.) Charge를 띠지 않은 왼쪽의 subunit c가 왼쪽으로 가게 되어 반시계 방향으로 돌게 되는 것이다.
 한 번의 회전과정을 거치게 되면 (-) Charge의 subunit c는 왼쪽으로 가게 되고 오른쪽에서 한 바퀴를 돌고 다시 돌아온 aspartic acid에 proton에 붙어있는 형태의 subunit c가 도착하게 되고 Proton Gradient에 의해 matrix 쪽으로 proton을 배출하는 것이다.





위의 그림은 ATP Synthase의 전체 Structure을 나타낸 그림이다. 오른쪽의 mitochondral ATP Synthase로 설명하자면  b, delta subunit은 높은 nickel에 대한 affinity로 alpha, beta subunit을 고정하고 (내 생각이지만 아직 구조가 밝혀지지 않은 beta subunit에 nickel center가 존재할 거라고 추측한다.) epsilon은 ring of  subunit c의 회전력을 gamma subunit에 전달하는 역할을 한다.
 
 자 이제 제목에 대한 설명을 해야 겠다. gamma subunit에 actin filament를 달고 flourscent molecule을 taging하면 (발광 물질을 달면) 현미경으로 오랜시간에 걸쳐 여러 사진을 찍어 돌려보면 gamma subunit의 회전을 눈으로 확인할 수 있다. 바로 이러한 나노단위의 모터, 세계에서 가장 작은 Molecular Motor라고 하는 이유가 바로 그것이다.

 기나긴 설명의 시간이 끝났다. 이번 포스트를 적으면서 이전에 적은 포스트와 한 번 비교해 보았다. 몽땅 영어로 바뀐 term들, (이건 전공책 덕분-_-;;이다..) 내가 이전에 틀리게 생각하고 있던 것들을 수정해 보면서 배움의 과정은 계속 진행되어야 한다고 생각한다. (아마 몇년 후에 학사 졸업 후, 석박사 때도 블로그를 하고 또 이에 대한 포스팅을 하게 된다면 그동안 생명과학에서 수정되었던 사항들과 아직 모르는 실체들을 추가적으로 설명할 수 있을 것이다.)
 개인적으로 이 내용은 내가 생명과학에 대한 전공을 결심하게 된 계기이고, 상당히 뜻깊게 생각한다. (그리고 이번에 생화학에 대한 공부를 하면서 더욱더 자세 알게 되었기도 하다.)

Posted by WebPeace

흐린 날씨의 까마귀~

일상 2007. 6. 17. 11:27

 더위가 잠시 주춤 하는 듯 하더니 날씨도 선선하고....

 무엇보다도 까치의 울음소리가 너무 좋다 ~_~

 역시 시험기간이다 보니까 평소에 관심을 두지 않은 것들이

 눈에 들어오는듯 하다...


 그리 어둡지 않은 적당한 햇빛에 시간도 정오전의 딱 좋은 시간..

 거기에 좋은 음악까지...

 그냥 쉬고 싶은 기분이다...ㅎㅎ

Posted by WebPeace
사용자 삽입 이미지
.NET은 MS의 전유물이다??
사실 맞는말이다. 하지만 Google을 헤엄쳐 다니다 보면 많은 개발자들의 Windows용 Application의 Linux Porting 프로젝트를 살펴 볼 수 있다. (sourceforge나 kldp.org 뭐 이런 싸이트들..)
 .NET 환경도 마찬가지로 멀티플랫폼을 위해 (특히 유닉스 환경을 위해) 구축된 환경이 존재하는데 이름하여 Mono이다.
(자세한 정보는 http://www.go-mono.com을 통해 확인할 수 있다.) 사실 2004년 부터 이 프로젝트를 눈여겨 봐왔는데 상당히 개발이 많이 진척된 듯 하다. 현재 Mono 1.2.16에서는 windows 고유의 클래스인 System.Winform() 클래스까지 구현된 것으로 보인다. (Mono를 개발하고 있는 Novel사에서는 아직 불안정하다고 한다)
 Mono에 대한 나의 경험은 이정도로 하기로 하고, 소개할 책은 Mono에 대한 문서를 Internet에서 PDF나 Html Form의 Document 밖에 구할 수 없다고 생각한 사람들, 새로운 것을 접하고 싶은 사람들을 위한 책이다.
 Mono의 구버전을 기준으로 설명이 되었지만 대체적으로 Mono의 기본적인 개념이나 Mono가 지원하는 Feature 등을 이야기하고 있다. 나름대로 설명이 상당히 깨끗하게 되어있는 책이라고 볼 수 있다. (사실 많은 컴퓨터에 관련된 지식을 인터넷으로 찾고 읽어보지만, 상당히 Instant한 정보들이라 뭐 하나를 배워보고자 할때는 좋지 않은 거 같다. 그러한 사람들에게 추천하고 싶은 책이다, 물론! Mono에 대해서 알고 싶은 사람들에게..)
 개인적으로 .NET Web Application을 표현하는 양식인 ASP.NET에 예전부터 관심이 많았으나 오픈소스 신봉자인 나로써는 굉장히 구미가 땅겼다고 보면 된다.
 글이 상당히 두서 없는데, 책에 대한 설명은 요정도로 하고 Mono에 대한 이야기와 여러가지 내가 알고 있는 지식들을 한 번 다음에 포스팅 해 볼 생각이다. (시험 기간이 끝나고...)
Posted by WebPeace

 C에서는 String을 character array로 처리하기 때문에 분명 다른언어보다 문자열 처리가 어려운 반면에 Low Level의 문자처리가 가능한 장점이 있다.

 보통 C에서 쓰이는 gets()함수는 New Line Character ('\n')까지 글자를 받아들일 수 있는 장점이 있지만 Character Array의 저장공간이 넘어서 메모리에 까지 Character을 저장하기 때문에 주로 BOF Hacker의 공격대상이 된다. 이에 대한 버그를 수정하고 char을 array가 아니라 pointer로 처리하여 메모리의 낭비를 적게한 gets함수를 나름대로 수정해 보았다.

/* 입력된 글자가 저장되어 있는 양만큼의 메모리 포인터를 return */
/* Argument에 입력된 integer pointer에 입력된 문자의 수 return */

char *get_line2mem(int *char_num) {
     int n = -1;
     char temp;
     char *input;
     while(1) {
          temp = getch_linux();
          input = realloc(input, ++n * sizeof(char));
          input[n] = temp;
          if(temp == '\n') {
               input[n] = '\0';
               break;
           }
      }
     *char_num = n;
     return input;
}

Posted by WebPeace

 Windows/DOS 환경에서 지원하는 Turbo C에서는 "conio.h"라는 패키지에서 getch(), getche()함수를 지원한다. 하지만, gcc를 이용한 컴파일에 사용되는 glibc에는 stdio.h/stdlib.h를 눈을 뒤집어 쓰고 찾아봐도 위 함수를 지원하지 않는다.

 그럼 리눅스에서는 이런함수를 어떻게 대체해서 쓸까? 찾아본 결과, 아래와 같이 대체하여 쓸 수 있다고 한다!!

/* 꼭 include 해주도록 한다. */
#include <termios.h>
#include <unistd.h>

char getche_linux(void) {
    struct termios oldt, newt;
    int ch;
    tcgetattr(STDIN_FILENO, &oldt);
    newt = oldt;
    newt.c_lflag &= ~(ICANON | ECHO);
    tcsetattr(STDIN_FILENO, TCSANOW, &newt);
    ch = getchar();
    printf("%c", ch);
    tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
    return ch;
}

 위의 진한 소스코드 부분을 조금더 응용하여, 진한 부분을

 printf("*");로 치환하게 되면 비밀번호를 입력하는 형태의 입력 방식을 구현할 수 있다. 또한 printf()명령을 사용하지 않으면 getch함수를 구현할 수 있다. (위의 함수는 getche()함수를 구현한 것이다.)

Posted by WebPeace

사실.. 아는 사람이 Tistory.com으로 이주했다는 소식을 들었는데..

베타 서비스에 아직 일반 사용자들이 이주하는 것이 안된다는 것으로 알고...;;

그냥, 관심 없이 보내다가...초대권에 혹하여 블로그를 시작하게 된

WebPeace라고 합니다..-_-;;;
P.S. 앞으로 싸이보다는 블로그에 치중할 것인가 그것이 문제로다...!!!


Posted by WebPeace

사이드바 열기