2007-12-11

라프코스터의 재미이론

게임은 무엇인가

좋은 게임의 정의는 '플레이어가 게임을 그만두기 전에 줄 수 있는 모든 것을 다 가르치는 게임'일 것이다.

게임은 선생님이다. 재미는 학습의 또 다른 표현일 뿐이다.

게임을 함으로써 학습이라는 마약을 얻는다. 인간의 학습은 종으로써의 생존에 중요하므로 우리의 몸은 즐거움을 느끼게 함으로써 학습에 대해 보상을 해 주는 것이다.



성공적인 게임은 다음과 같은 기본 요소들을 포함한다.

  • 준비 : 준비가 없으면 게임이 너무 운에 의존하는 것 같고,
  • 공간감: 공간감이 없으면 시시하며,
  • 정연한 핵심 구조: 이게 없으면 게임도 아니다.
  • 일련의 도전 : 도전이 없으면 게임이 너무 빨리 끝나고,
  • 대결을 위해 필요한 능력 : 이것이 많지 않으면 게임은 단순하고,
  • 능력을 사용하기 위한 기술 : 기술이 요구되지 않는 게임은 지루하다.
또한
  • 다양한 피드백: 대결의 결과가 완벽하게 예측가능하면 안된다.
  • 기술의 숙달 : 높은 수준의 플레이어는 쉬운 대결에서 얻는 것이 별로 없도록 해야 한다.
  • 실패에 따른 대가 : 최소한의 기회비용

2007-11-16

Yum 설정

새로 install한 linux(FC5)에서 yum 실행은 잘 되었지만, 예전 (약 3년전)에 설치한 linux (2.6.6-1.435.2.3)에서는 yum이 실행이 잘 되지 않았다.

그래서 lighttpd를 yum을 이용해서 설치하려고 시도하다가... 잘 않되어서 이것저것 해보았는데, linux os 버전 문제, python 버전 문제, python 패키지 버전 문제, python-rpm 버전문제, yum 버전문제, yum의 configuration 문제 등이 복합적으로 걸리면서 계속 실패했다.

최종적으로 어찌 어찌 되었는데...

1. yum 실행환경인 python은 /usr/bin에 설치된 것을 기준으로 해야 한다. /usr/local 에 설치된 python으로 하면 여러가지 문제에 부딪힌다.

2. yum 설치는 rpm으로 해야한다. yum.xxx.tar.gz를 받고 rpmbuild로 rpm을 만든 후 설치를 한다. rpm을 빌드할 때 추가로 설치가 필요한 모듈들은 이 때 rpm build가 알려준다.
# rpmbuild -tb yum-2.6.1.tar.gz
# rpm -ivh /usr/src/redhat/RPMS/noarch/yum-2.6.1-1.noarch.rpm

3. yum.conf 및 yum.repo.d 에 있는 서버 리스트는 http://mirrors.fedoraproject.org/publiclist 에서 한국 서버로 대체한다. 그리고 서버 리스트에 관해 좋은 예제는 http://towis.net/tag/Fedora 를 참조한다.

2007-11-09

Samba 3 설정

  1. samba, samba-swat를 설치한다.
    yum 이 사용가능하면 yum으로 설치한다.
    # yum install samba
    # yum install samba-swat
  2. /etc/xinetd.d/swat를 edit하여 swat를 enable 시키고 보안을 위해 swat에 접근할 수 있는 host를 제한한다.
    (only_from 필드와 disable 필드 수정)
  3. swat를 기동한다.
    # /etc/rc.d/init.d/xinetd restart
  4. /etc/samba/smb.conf를 수정한다.

    [global]
    dos charset = cp949 # PC의 charset
    display charset = UTF8 # linux의 charset
    workgroup = MYGROUP
    server string = "Samba Server"
    max log size = 50
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    dns proxy = No
    hosts allow = <접속을 허용할 서버목록>

    [homes] # 각 사용자의 home directory 접속을 허용한다.
    comment = Home Directories
    read only = No
    browseable = No

  5. web browser로 swat에 접속하여 status에서 smbd를 start한다.
  6. swat/passwd에서 samba사용자를 등록한다.
  7. PC의 explorer로 samba server의 원격폴더에 접근한다. 처음에는 6번에서 사용한 user와 password를 입력해 주어야 한다.






2007-07-23

authkit error message log 가 필요할 때

source: http://www.mail-archive.com/pylons-discuss@googlegroups.com/msg03705.html

in case you may want to get more debug information from AuthKit I
found a way to get log information in the "paster serve" window.
Add these lines to the config/middleware.py right after
app = authkit.authenticate.middleware...

import logging
log_StreamHandler = logging.StreamHandler() # points to stderr
authkit.authenticate.log.addHandler(log_StreamHandler)
authkit.authenticate.log.setLevel(logging.DEBUG)

2007-07-02

스타니슬라브스키 극장의 카르멘을 보고

지난 토요일 일산 아람극장에서 러시아 모스크바의 스타니슬라브스키 극장의 카르멘 오페라를 보았다.


모스크바시립 스타니슬라프스키극장 오페라단 초청공연 시리즈는 뉴스위크지 선정 가장 역동적인 세계 10대 도시들의 자랑인 고양 아람누리와 모스크바시립 스타니슬라프스키극장과의 역사적인 의미 교류이다. 국내 최대 규모와 시설의 문화예술시설 ‘고양 아람누리'의 개관에 맞추어 세계 10대 도시에 선정된 모스크바의 대표적인 시립극장인 ‘스타니슬라프스키 극장'의 우수한 오페라 작품을 초청하는데 큰 의의가 있다.

이번 시리즈는 특히 국내 공연계의 새로운 자극이 되는 아람누리 개관 페스트벌 하이라이트로서 오페라단과 오케스트라가 200여 명이 내한, 오페라의 두 작품을 공연하는 초대형 프로젝트로서 2007년 공연예술계에 사건적 의미가 있다고 할 것이다.

세계적인 작품이자 유명한 오페라인 ‘카르멘'과 ‘스페이드의 여왕' 공연을 작품화하는 고양 아람누리의 기능성을 최대한 활용하는 프로젝트이다. 국내 최초의 최대의 시설을 가진 아람누리의 위상에 맞는 세계적인 대형 오페라 작품의 아람극장 공연과 오페라 갈라 콘서트의 아람음악당, 열린 야외음악회인 ‘러시아음악의 밤'의 노루목 야외극장에서 국내 최고의 시설을 자랑하는 고양 아람누리의 기능을 최대로 보여주고자 한다.

또한 러시아시립 스타니슬라프스키극장과의 교류는 공연과 관련된 일체의 문화적 교류로서 모스크바시와 고양시와의 대표적인 극장간, 단체 간의 교류, 학술회의 향후 업무제휴까지 심화된 관계뿐만 아니라 이후 공동 작품개발로까지 이루어지는 문화예술적으로 역사적인 의의가 있는 대형 문화예술행사인 것이다.

모스크바시립 스타니슬라프스키극장 오페라단

모 스크바시립 스타니슬라프스키극장 오페라단은 1941년 20세기 연극계에 일대 변혁을 일으킨 것으로 평가받는 전설적인 두 연출가 콘스탄틴 스타니슬랍스키와 블라디미르 네미로비치 단첸코가 각각 운영하던 스타니슬라프스키 오페라단(1918년 말 볼쇼이 극장의 오페라 스튜디오로 설립)과 네미로비치 단첸코 예술단(1919년 모스크바 예술극장 단체로 설립)이 합병하면서 설립되었다. 스타니슬라프스키극장 오페라단은 모스크바 예술연극의 시스템을 오페라와 발레에 적용시킨 바 있는 설립자들의 예술적 원칙을 따르고 있다.

두 연출가는 심리적으로 동기 부여된 연기를 통해 구성의 주제를 드러냄으로써 오페라를 더욱 드라마적이고 희극적으로 만들고자 했다. 또한 젊은 가수들을 ‘노래하는 배우'로 훈련 시켜, 관객들이 줄거리에 몰입할 수 있도록 배역의 미묘한 캐릭터를 잘 살려낼 수 있게 했다.

이 극장의 오페라단은 고전과 함께 현대화된 오페라를 선보이는 한편 유망한 젊은 작곡가들을 후원하며 새로운 오페라와 발레를 창작해내는 실험실로 불리기도 한다. 또한 모스크바 최초로 쇼스타코비치의 ‘카타리나 이즈마일로바'(1934년 단첸코의 연출로 초연), 프로코피예프의 ‘전쟁과 평화'(1957년 바라토프 연출로 초연)와 같은 20세기의 명작을 공연하기도 했다. 또한 티콘 크레니코프의 몇몇 작품들은 스타니슬라프스키극장 오페라단만을 위해 쓰여졌으며, 드미트리 카발레프스키는 자신의 오페라를 오페라단에 헌정했다.

1991년 부터 오페라단은 레프 미하일로프 아래에서 수학한 알렉산드르 티텔의 지휘 하에 현재까지 운영되었다. 오페라단이 공연한 그의 첫 작품은 글린카의 루슬란과 루드밀라로 유명한 고전 오페라를 대담하고 현대적으로 해석한 이 공연은 많은 논란을 불러왔다.

오 페라단은 이탈리아, 중국, 독일, 스위스, 벨기에, 유고슬라비아, 일본, 한국, 프랑스와 미국에서 투어를 진행하였다. 국내에는 오페라 주역 위주의 부분 캐스트로 두 차례 내한하였으나 오케스트라 포함 대규모의 공연팀이 내한하는 공연은 이번 아람누리 공연이 최초이다



러시아의 음악수준이 높은 건 알았지만, 역시 단원들의 평균 가창 능력은 매우 높아서, 그 자체만으로도 오페라에 몰두할 수 있게 해 주었다.

너무 좋아서 이 극단이 오늘 저녁에 하는 오페라 갈라 콘서트도 예약하였다 ~

2007-06-15

error: Linking with liblualib failed

context:
building ethereal-0.99 with lua plugin
lua 5.1.2

solution:
cd /usr/local/lib
ln -s liblua.a liblualib.a

2007-06-05

Python의 defaultencoding을 바꾸는 법

import sys
reload(sys)
sys.setdefaultencoding(encoding)

보통 sys.setdefaultencoding(encoding)은 site.py에서만 동작하지만
reload(sys) 명령으로 임의의 코드에서 실행된다.

출처: http://www.mail-archive.com/pylons-discuss@googlegroups.com/msg03775.html

2007-05-18

RubyOnRails vs Pylons vs TurboGears

사내 정보시스템용 Web Application을 위해 WAF를 survey했다.

결론적으로 TurboGears를 선택하게 되었다.

RubyOnRails

아직 가장 인기있는 WAF는 ROR일 것이다. 15분만에 weblog 사이트를 만드는 screencast를 보고 감명받지 않을 프로그래머가 있을까? Amazon에서 Ruby On Rails로 검색을 해보면 108권이 나온다. 오히려 우리나라에서 이제 겨우 관심을 주는 게 이상할 정도다.

그래서 가장 많이 사용하는 WAF라고 생각되는 ROR를 선택하였고, 간단하고 풍부한 기능에 어느정도 만족하였으나, Ruby라는 언어를 새로 익혀야 하는 부담이 있었다.

Ruby언어는 python이나 Perl을 알면 기본적인 문법을 배우는 시간이 많이 걸리지 않으나 usage에 익숙해지는 것은 또 다른 문제이고, 상대적이기는 하지만 아무래도 성능 문제
부담이 되었다. 그리고 앞으로 나올 Ruby의 VM에 대한 전망도 그리 밝아 보이지 않았다. 그리고

Programming Ruby를 읽으면서, 언어의 동적 특성이 편해 보이기는 했지만, 전혀 성능상의 고려를 안한 것처럼 보였다. Ruby는 재미있고 좋은 언어이다. 하지만 Perl이 그랬던 것처럼 탄탄한 내부 구조를 갖지 않으면 전문적인 소프트웨어를 개발하는데 사용하기가 꺼려질 수 밖에 없다.

RubyOnRails는 이러한 일반적인 인식을 뒤집어 엎은 소프트웨어다. 그리고 ROR에 붙은 가속도를 생각할 때, ROR 및 Ruby가 앞으로 어떻게 발전할지는 쉽게 예측할 수 없고 절대로 평가절하할 수 없다.

하지만 앞으로 일정기간 이상 유지보수되어야 하는 시스템을 내가 충분히 납득하지 못하는 언어로 개발하기에는 부담이 되었다.

Pylons

그래서 찾아 본 WAF가 Pylons였다. Pylons는 Python으로 작성되었으며 ROR과 유사한 구조를 갖고 있다는 게 가장 마음에 들었다. 그리고 MVC를 구성하는 모듈들도 유연하게 바꿀 수 있었다. 가장 큰 문제는 아직 mature하지 않았다는 점이다. 문서도 절대적으로 부족하고 안되는 기능이 너무 많다. 특히 REST를 아직 제대로 지원하지 못하여서 사용 목적에는 맞지 않았다. Pylons 코드를 보고 Pylons 자체를 개발 하려는 것이 아니라면 아직은 많이 부족한 상태였다.

TurboGears

django 사이에서 약간 고민은 되었지만, TG가 훨씬 ROR에 가깝다는 점에서 TG를 선택했다. 그래도 TG에는 ROR과 비슷한 screencast들도 있고 어쩌면 ROR보다 더 전문적인 Catwork 및 admi18n 과 같은 도구들도 있다. 물론 ROR의 짧고 우아하게 보이는 코드에 비해서 많이 늘어져 보이는 것은 어쩔 수 없다.

2007-05-15

utf8 Linux에서 vi로 euckr 한글문서 편집하기

이 설정은 samba를 통해, 혹은 ftp등으로 windows의 text파일을 공유하는 경우 필수적이다.


모든 파일의 내용이 euckr이라면 ~/.vimrc에 다음 라인을 추가한다.

set fileencodings=euc-kr,latin1

간혹 euckr파일을 편집해야 한다면 vi를 실행하고 나서

set fileencodings=euc-kr,latin1 을 command line에 입력한다.

Samba3와 SWAT 추천

삼바3 사용 강력 추천

이유는?

Samba의 서버로 많이 사용하는 linux는 보통 charset로 UTF8을 기본으로 한다. 그런데 삼바2까지는 window의 charset과 서버의 charset이 다르면 공유하는 한글파일명에 문제가 발생해서 linux의 charset을 euckr로 바꾸어서 사용했었다.

삼바3는 이 문제를 완전히 해결한 것 같다.

linux의 charset이 utf8이라면

[global]
unix char set = utf8
dos char set = cp949
라인을 넣어주면 된다.

그리고 swat는 그 전부터 있었던 util이지만, 사용해 보니 역시 편하다~

telnet에서 한글 문제는 putty를 사용해서 translation page에서 utf-8을 선택해주면 된다.

프로그래밍용 폰트

프로그램밍용 폰트로 Bitstream Vera Sans Mono 가 인기가 좋다.
여기에 맑은 고딕 폰트를 합쳐놓은 것도 있다.

참조 :
한글을 사용하는 프로그래머를 위한 폰트..
참조 : Finding the Best Programmer's Font

Linux에서 한글 setting

linux는 설치시 기본으로 locale이 utf8로 되어있다.
euckr로 바꾸려고 할 때, 2가지 방법이 있는데

1. 자신의 계정에서만 변경: ~/.bashrc에 "export LANG=ko_KR.euckr" 을 추가
2. 시스템 전체 변경: /etc/sysconfig/i18n에서 "LANG=ko_KR.euckr" 로 변경

소스 : 영문 레드헷에서 한글사용환경 만들기

Putty에서 한글폰트 사용하기

Putty에서는 기본 한글폰트이외의 폰트의 영문폰트에서는 한글입력이 안된다.
검색해 본 결과 소스를 컴파일하는 방법이 무식하지만 가장 효과가 있어보인다.

소스: 한글 iPutty에서 한글 폰트 변경


수정은 WINDOWS.C 의 GetCPInfo 를 콜하는 라인 바로 위에 ucsdata.font_codepage = 949; 라고 한줄만 추가해 주면 됩니다.
그럼, 폰트에 상관없이 무조건 한글이 깨지지 않고 입력됩니다.

추가로, 영문폰트와의 매칭은 기본이 바탕체지만, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink 에 다른 등록내용을 참고해서 영문폰트명을 키로 매치시키고 싶은 한글폰트를 적어주면 됩니다.


2007-03-27

청각 테스트

http://meiclamo.net/tag/music 를 통해 보게되어 http://jakemandell.com/tonedeaf/ 에서 테스트 해봤다.
deaftest - 75% ; 70점 이상이면 정상
pitchtest - 16,10,42% ; 점수가 너무 나빠서 3번이나 테스트했다. 500Hz이하에서 2.1Hz 차이까지 분별해 내지만 8-12Hz에서는 평균이하, 16Hz 이상은 구별 못함; 예전에 tone test로 알고 있었지만, 별로 기분이 좋지 않다.
rythme test - 84%; 80점 이상이면 뛰어난 편임, 역시 나이 때문에 고역구분에 문제가 있지만 리듬에 대한 감각은 좋은 것 같다. 그런데 테스트할 때는 확신이 없이 찍었던 것 같은데 -_-;

2007-03-22

Flex2 공부하기

아직은 http://www.adobe.com/devnet/flex/ 만한 사이트는 없다. 이 말은 flex2가 가지는 벤더 종속성때문에 오픈소스 커뮤니티에서의 공감대가 충분하지 않다는 뜻도 된다.

국내에서 출간된 예제로 배우는 adobe 플렉스2 역시 전문적인 개발서적으로 보기에는 ... 많이 부족하다. 온라인 서점에서 서평을 보고 별 생각없이 구매했는데, 역시...

아직 쓸만한 번역서가 없는 상황에서 가장 추천할 contents는 아도비의 http://livedocs.adobe.com 의 매뉴얼과 아도비의 위 아도비 사이트의 많은 sample 들이다. 소스가 제공되는 것들이 많다.