2009-09-07

Tumblr로 이사갑니다.

http://truwater.tumblr.com 으로 떠나갑니다.
truwater.pe.kr 도 새 블로그로 포워딩 됩니다.
안녕 Blogger~~ 시즌2 나오면 다시 올지도 넌 너무 옛날 시스템이야~

2009-09-05

Balsamiq Mockup - UI 디자인 툴

Balsamiq Mockup(발사믹 모컵?), 발음을 어떻게 하는지 모르겠지만 무료로 라이센스를 받아서 한 달 정도 사용해 보았다. 무료로 받을 수 있었던 이유가 블로그에 리뷰를 써 주겠다고 했기 때문이다. ^^ 사실 적절한 이유를 메일로 보내면 무료 라이센스 키를 보내주는데 참 국내외를 막론하고 보기 드문 마케팅 방식이다. 아마도 경영진이 깨어 있는 사람이 아닌가 생각된다. 이렇게 공짜로 쓰지만 언젠가는 회사를 통해 구입해야 겠다라는 생각이 들게 된다.
일단 툴에 대해서 보자면 말 그대로 UI 디자인 툴이다. 그냥 종이에다 그림 그리는 것과 다름 없다. 거기다 약간의 보너스로 기능들에 링크를 걸어 디자인 파일을 옮겨 다닐 수 있다. 가령 어떤 로긴 버튼을 누르면 로긴 페이지로 이동하는 식으로 말이다.
여러 UI툴을 찾아 다녀 봤는데 정말 발사믹모컵과 같이 이쁘게 디자인 할 수 있는 툴은 잘 없는 것 같다. 정말 손으로 대충 그린것같지만 멋스럽게 나오는 이런게 이 툴의 매력이 아닌가 싶다. 조만간 웹 버전으로도 이용할 수 있다고 한다. 그러면 UI 디자인을 공동으로 작업할 수 있게 될터인데 정말 나오면 꼭 써 보고싶은 마음 밖에 없다. 사실 요즘 마인드마이스터와 스크럼피도 유용하게 쓰고 있다. 둘 다 웹 앱인데 정말 기능에 충실하고 특히나 공동으로 작업할 수 있다는 것이 마음에 쏙 든다. 앞으로 대세는 웹 앱이 아닌가 싶다.
만들고 있는 웹 게임 화면 디자인을 해 보았다.발사믹모컵에 무한한 발전을~~


2009-08-07

SyntaxHighlighter 2.0 적용하기

SyntaxHighlighter는 블로그 같은 곳에서 소스코드를 인용할 일이 있을 때 유용한 도구이다. 2.0버전 부터는 http://alexgorbatchev.com/wiki/SyntaxHighlighter 에서 관리되고 있으며 관련 파일도 호스팅 해 준다. 그래서 필요 파일들을 웹상의 어딘가 올리려고 삽질 하지 않아도 된다. 만세~

1.5버전에서 업그레이드 되면서 사용법이 좀 변했는데 2.0버전 사용법과 주의사항을 간략히 알아보자.

먼저 아래의 내용을 웹사이트의 적당한 곳에 끼워 넣는다. 이 때 주의할 점은 대소문자가 틀리면 안된다는 것이다.

<link href='http://alexgorbatchev.com/pub/sh/2.0.320/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/2.0.320/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shCore.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushPython.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushBash.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/2.0.320/scripts/shBrushPlain.js' type='text/javascript'/>
<script type='text/javascript'>
//<![CDATA[
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/2.0.320/scripts/clipboard.swf';
SyntaxHighlighter.all();
dp.SyntaxHighlighter.HighlightAll('code');
//]]>
</script>

shBrushPython.js 같은 것들을 사용하고 있는데 자신이 사용하고 싶은 언어를 추가하면 된다. 가령 루비는 shBrushRuby.js 와 같이...

그 후 코드를 삽입하고 싶은 곳에 아래와 같이 넣으면 된다.

<pre class="brush: js">
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
...
SyntaxHighlighter.all();
</pre>

그러면 아래와 같은 화면을 보실 수 있을 것이다.

SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
...
SyntaxHighlighter.all();

가끔 콘솔창에서 명령을 실행시키는 화면을 넣고 싶을때가 있다. 그럴때는 아래와 같이 brush를 plain으로 하고 gutter를 false로 주면 된다. 그리고 오토링크가 기본으로 켜져 있는데 auto-links를 false로 주면 끌 수 있다.

<pre class="brush: plain; gutter: false; auto-links: false;">
$ ls -al
...
</pre>

그러면 아래와 같이 콘솔창과 비슷하게 라인 번호가 안 붙은 모습을 볼 수 있다.

$ ls -al
...

콘솔창이라면 검정색 바탕화면인데 이런 것은 custom brush로 만들 수 있단다. 누가 만들어 놓으면 가져와서 써야지~ 이 놈의 게으름이란..

사용자 경험에 미쳐라!

'사용자 경험에 미쳐라!'라는 책은 괜찮은 UX 소개서이며 전체적인 내용은 UX 디자인의 필요성에 대해서 강조하고 있다.

UX 디자인은 제품이 아닌 사용자의 경험(제품의 사용전과 사용후까지)을 디자인하는 것이며 이제 제품은 하나의 시스템이라는 것이다.

하지만 현실 세계에서 UX디자인의 필요성을 인지했다고 해서 뭔가 변화가 일어나는 것은 아니다. 디자인은 조직의 능력이라는 사실이 변화의 물결을 방해하는 장애물로 작용한다. 혼자서 UX디자인의 중요성을 인식하고 변화하려 해도 조직 안에 그 문화가 녹아 들지 않으면 빛을 발하기 힘들기 때문이다. 그래도 UX디자인이 필요하다는 생각만 퍼져도 많은 변화가 있을 듯 싶다. 당신이 UX디자인의 필요성을 공감하고 있다면 이 책을 팀원들에게 소개하면 좋을 것 같다.

책의 내용 중 인상적인 내용을 정리해 보았는데...
대부분은 인정하고 있지 않지만 창조라는 행위는 어떠한 근거나 기반도 없이 갑자기 하늘에서 떨어기는 것이 아니라 현실이라는 진흙탕속에서 이루어진다. 무엇인가를 발견해내는 과정은 항상 산만하며 이것저것 탐구해보는 일이 항상 위험하다. - 스콧 버쿤
로열티는 훌륭한 경험의 반복으로 만들어진다.
고객의 통제가 목적도 아니고 달성될 수도 없음을 이해하고 오히려 고객의 경험을 통제하는 것을 포기하라! - 트위터의 예만 보더라고 유저의 사용 행태와 문화를 시스템적으로 뒷받침 해 준다. 하지만 조사와 적응도 중요한 요소지만 탐험의 과정(미래의 창조)도 필요하다.
저렴한 비용으로 쉽게 반복적인 프로세스 만들기(애자일 방법론과 연관) - Balsamiq Mockup과 같은 소프트웨어가 유용하다. 다음에 Balsamiq Mockup에 대한 포스팅이 들어갑니다.^^
불확실성의 포용, 고객과 공감, 아이디어를 프로토타입으로 만드는 능력은 무한한 가능성을 열어준다.
소프트웨어는 이제 제품이 아닌 사용자와 끊임없이 상호작용을 불러 일으키는 변화무쌍한 과정이다.
아이디어 퀄리티의 부족을 보상해 줄 새로운 제품 프로세스를 기대해서는 안됩니다. 어떠한 프로세스를 거친다고해도 평범한 아이디어가 비범하게 바뀔 수는 없는 노릇입니다. - 로버트 G. 쿠퍼

드디어 UX세계의 문을 열었군요. 오늘도 무궁무진한 세상의 문 하나를 열었으니...

2009-07-30

파이썬 클래스의 맴버 변수를 이터레이션하기

가끔 인스턴스의 내용을 사전식으로 출력할 필요가 있을 때가 있다.
__repr__()함수를 만들어서 나열식으로 만들면 되긴 하지만 맴버 변수가 몇십개가 되면 노가다가 아닐 수 없다.
그래서 자동으로 이런 기능을 하는 클래스를 만들어서 상속을 받으면 될 것 같아 구현해 보았다.
아래와 같이 test.py를 작성한 후 실행해 보자.


class Representer:
def __repr__(self):
attributes = []
for key in dir(self):
if not key.startswith('_'):
try:
value = getattr(self, key)
except (AttributeError, ValueError):
pass
if isinstance(value, str):
attributes.append("'{0}': '{1}'".format(key, value))
elif isinstance(value, int) or isinstance(value, float):
attributes.append("'{0}': {1}".format(key, value))
return '{' + ', '.join(attributes) + '}'

class A:
name = 'nahaha'
number = 19

class B(A, Representer):
_secret = 'secret'
pi = 3.141592
email = 'truwater@gmail.com'

b = B()
print b


$ python test.py
{'email': 'truwater@gmail.com', 'name': 'nahaha', 'number': 19, 'pi': 3.141592}

파이썬에 중독된 지금은 C++로는 코딩 못할 것 같다. ^^;
파이썬 만세~

2009-07-29

일반 어플리케이션 개발에 장고 프레임웍 이용하기

웹 게임의 서버를 만들던 중 너무나 많은 쿼리문 때문에 복잡해서 장고 프레임 웍의 DB모델 같은 걸 구현 할 수 있을지 고민하게 되었다. 처음에는 장고의 DB모델을 분석해서 비슷하게 구현하려고 생각했는데 분석해 보니 의외로 쉽게 그냥 가져다 쓸 수 있을 것 같았다.

장고가 깔린 디렉토리를 살펴보면 '/usr/local/lib/python2.6/dist-packages/django/core/management/commands'이란 폴더가 있는데 여기에 어떤 파이썬 스크립트를 구현해 놓으면 manage.py를 통해서 실행 할 수 있다. 그 중에 가장 간단한 shell.py를 가져와서 아래와 같이 고쳐서 myapp.py를 만들어 보았다. 만들 때 주의 할 점은 이 폴더가 루트 권한이 필요하다는 것이다.

from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
def handle_noargs(self, **options):
from nahaha.main import run
run()

그리고 장고를 아시는 분은 다 아시듯이 프로젝트를 생성한다.
$ django-admin.py startproject myapp
$ cd myapp
$ python manage.py startapp nahaha

이제 settings.py를 아래와 설정한다.
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'myappdb'
INSTALLED_APPS 에 'myapp.nahaha'를 추가

그 후 nahaha폴더에 models.py를 아래와 같이 만든다.

from django.db import models
class Person(models.Model):
name = models.CharField(max_length=64, unique=True)

그리고 nahaha폴더에 main.py파일을 아래와 같이 만든다.

# -*- coding: utf-8 -*-
from nahaha.models import Person
def run():
if len(Person.objects.all()) == 0:
person1 = Person(name='오호라')
person1.save()
person2 = Person(name='나하하')
person2.save()
for person in Person.objects.all():
print person.name
print 'It worked!'

이제 장고를 통해서 우리가 만든 어플리케이션을 실행시켜 보자. 이렇게!
$ python manage.py syncdb
$ python manage.py myapp
오호라
나하하
It worked!

야호~ 잘 된다. 한글도 잘 나온다. ^^
이제 리펙토링의 세계로 고고싱~~

2009-07-28

슈퍼크런처

'슈퍼크런처'란 책은 수집한 방대한 데이터로 경향을 파악해서 미래를 예측하는 내용을 담고 있다. 책을 선전하기 위한 슬로건에는 전문가의 종말을 얘기 하는데 사실 책 내용에서는 전문가의 필요성을 강조하고 있다. 직관이 뛰어난 전문가가 방대한 데이터에서 슈퍼크런칭을 해 낼 수 있다는 것이다. 게다가 슈퍼크런칭만을 하면서 먹고사는 회사가 있다는 사실도 알았다.

이 책은 나에게 또 다른 세상을 열어 주었다. 정말 강추하고 싶다. 어떤 데이터가 있으면 어떤 것들을 분석해 보고 싶다는 아이디어가 자꾸 떠 오른다. 가령 채팅 내용을 분석해서 사기꾼을 가려낸다던가 아니면 연령을 유추해 본다든가, 게임 패턴을 분석해서 학교성적을 분석해 본다던가, 방문하는 웹사이트를 분석해서 지름신을 내려준다든가... 데이터만 있으면 해볼만한게 정말 많을 것 같다.

하지만 DB를 잘 하지 못한다는거... 또 네거티브 에너지가 샘솟는다.

다음 읽을 책은 '괴짜경제학 플러스'인가 고고싱~~ 책도 네거티브 에너지로 고고싱~~

구글 앱 엔진 첫번째 테스팅

'쉽고 빠른 웹 개발 Django'의 마지막 부록인 구글앱엔진 사용해보기를 따라 해 봤다. 책에서 잘못된 곳도 간간히 있고 오타도 많아서 간신히 첫화면과 북마크 추가 정도만 되게 하여 올려 보았다.

처음 올리고 로컬에서는 잘 돌아가는데 앱엔진 서버에 올리면 돌아가지 않아서 이것저것 고치면서 테스팅해 봤는데 이상하게도 버전 1에서 변하질 않는 것이었다.

한참을 삽질 한 후에 알아낸 것이 update한다고 최신 버전이 자동으로 적용되지 않는다는 것이다. 구글앱엔진 관리 사이트의 대시보드에 보면 버전 적용하는 메뉴가 있다.


만세~~ 드디어 돌아간다. 하지만 안 되는 기능이 반 이상이라는거...
이제 틈 날때마다 조금씩 고쳐보련다. 틈이 날려나 ㄷㄷㄷ
놀러 오실 분은 http://trubookmarks.appspot.com 으로 오시면 되요.

웹 이후의 세계

'웹 이후의세계'라는 책은 IT 트랜드를 너무나도 잘 분석한 책이다. 게다가 세상을 현실계, 이상계, 환상계로 분류해 설명하는데 정말 그 안목에 감탄하게 된다. 게다가 SOA, SaaS, PaaS, Cloud 등 개념도 모호한 여러 용어들을 명쾌하게 설명해 주신다. 저자분께서 이 책을 쓰시기 전에 '웹2.0 경제학'과 '코드 한 줄 없는 IT 이야기'도 쓰셨는데 꼭 읽어봐야 할 것 같다.(하지만 돈이 ㅠㅠ)

가상화에 대한 내용을 읽고나서 회사 조차도 가상화 될 것 같다는 생각이 든다. 요즘은 소규모로 시작할 수 있는 일이 너무 많고 마음만 맞으면 회사를 만들어서 서비스를 오픈할 수 있다. 돈도 많이 들지 않으면서 말이다. 아이디어만 있으면 (물론 기술도) 손쉽게 서비스를 오픈해서 대박을 노릴 수 있다.

햇병아리 시절 창업을 했을 때 주식회사라는 개념이 너무나도 이상했다. 주주와 직원이 왜 갈리는지도 이해하지 못했다. 그래서 인력을 뽑을 때 주식을 퍼다 주면서 데려왔다. 대신 나갈 땐 다 토해내야 했지만 ^^
암튼 성공하면 같이 부자되고 망하면 다 같이 망하는 그런 공산주의식 운영체제의 회사였다. 물론 주식회사의 탈을 쓰고 있었지만...
대학 다닐 때 까지 자본주의보다는 의리로 뭉친 공산주의가 너무나도 익숙했다.
지금은 회사가 어느 정도 커져서 그런 시기가 지나갔지만 그 시절이 그립기도 하다.(맨날 죽을 쒀서 그렇지 ㅠㅠ)

회사에 있어서 할 수 있는 일도 있지만 회사에 매어 있어서 할 수 없는 일도 너무 많다. 특히 새로운 시도를 하기가 너무 힘들다. 기존에 했던 일들이 끊임없이 태클을 걸어와서 새로운 시도를 할 수가 없다. 새로운 시도를 쉽게 해 보고 안되면 또 다른 시도를 해보는 그런, 새로운 세상이 도래했는데 그렇게 할 수 없어서 뒤쳐질까 너무 두렵다.

오늘도 네거티브 에너지가 샘솟는다. ㅠㅠ

2009-07-27

초난감 기업의 조건

'초난감 기업의 조건'이라는 제목에서 나오는 단어와 마찬가지로 나에게는 초난감한 책이었다. 최근 본 책들 중에 재미도 없고 깨달음도 없었다. 오래전 컴퓨터 산업이 태동하는 시기의 향수를 느껴 보고 싶다면 읽어볼만 하겠지만 책에서 말하는 내용 중 대다수는 공감하기 어려웠다.

특히 포지셔닝에 관한 내용이 특히 공감하기 어려웠는데 윈도우즈 95와 NT, 윈도우즈 98과 2000을 같이 내놓은 점을 무지막지하게 비판하는 것이 이해할 수가 없었다. 읽을 당시에는 수긍할 듯 했지만 시간이 지나면서 뭔가 찝찝했다.

95와 NT, 98과 2000이 나올 시기에 둘 사이의 포지셔닝은 적어도 나에게는 명확했다. 멀티태스킹 방식이 선점형이냐 비선점형이냐의 차이로인해 하나는 게임에 적합하고 하나는 서버 운영에 적합한 방식이었다. 게다가 ms라는 회사에서 기술 혁신을 위해서 많이 노력하는구나 라는 이미지도 있었다.

책 마지막 부분에는 구글도 비판하고 SaaS도 비판하는 내용이었는데 책이 눈에 안들어왔다. 암튼 최근에 읽은 책 중에 젤 영양가가 없었다.

굳이 책을 통해 얻은 내용 하나를 꼽으라면 빌게이츠의 이미지 매이킹 정도?
빌게이츠는 돈이 많지만 돈에 관한 말은 거의 하지 않았다. 게다가 언제나 기술 혁신에 대해서 연설했다. 많은 돈을 들여 사택을 지을 때도 기술을 테스팅 한다는 명목이었다는 것.
암튼 빌게이츠는 똑똑하다.

우분투에서 콘솔용 사전 사용하기


kldp cdic이라는 콘솔용 사전이 있다.

이 사전은 현재 euc-kr 밖에 지원이 안된다. utf-8을 지원한다고 나와 있지만 도움말 정도만 지원하고 사전 검색 결과는 여전히 지원하지 않는다.
하지만 방법이 있다. 파이프를 이용해서 문자 인코딩을 변경하면 된다.

먼저 http://kldp.net/projects/cdic/ 에서 최신 버전(현재 1.1.2)을 다운 받고 압축을 푼다.
그리고 아래 명령으로 컴파일을 한다.

$ gcc -Wall -g -O2 -g -c cdic.c -o cdic.o
$ gcc -o cdic cdic.o

그 후 ~/bin 등과 같은 path가 걸린 디렉토리로 cdic 파일을 옮긴다.
~/bin 폴더에 쉘 스크립트 파일을 아래와 같이 만든다.(참고로 저는 d라고 이름을 지었습니다.)
물론 chmod +x d 로 실행 가능하게 만들어야 겠죠.

#!/bin/bash
cdic $1 | iconv -f euc-kr -t utf-8 | more

이제 잘 되는지 실험해 보자.


$ d apple
단어 검색결과 (1 - 10 / 41건)

apple
1 사과 《과일 중에 가장 전형적인 것》;사과나무(=apple tree)
2 사과 비슷한 과실 《crab apple, love apple, May apple 등》
3 (크기·형태·색 등이) 사과 같은 것
4 《구어》 야구공
5 [종종 the apple] 금단의 열매

adam's apple
dam's pple 결후(結喉), 후골(喉骨)

alley apple
lley pple 《미·속어》 (길바닥의) 말똥;돌멩이

apple blossom
pple blssom 사과꽃 《Arkansas와 Michigan주의 주화(州花)》

apple brandy
pple brndy 사과 브랜디(《미》 applejack)

apple butter
pple btter 사과 잼;《미·방언》 능변, 수다

apple cheese
pple chese (사과주 만들 때 짜고 남은) 사과 찌꺼기의 덩어리

apple dumpling
pple dmpling 사과(가 든) 경단

apple green
pple gren 밝은 녹황색

apple knocker
pple kncker 《미·속어》 시골뜨기, 농부

잘 되는 군요. 우분투 만세~~(라고 외치고 싶지만 현실은 윈도우즈가 더 편하다. -_-)

리눅스에서 텍스트 인코딩 바꾸는 방법


리눅스를 쓰다보면 가끔 사용해서 기억이 잘 나지 않는 기능들이 너무 많다.
그 중에 하나가 인코딩 변환인데 zip파일을 받은 후 풀고나면 인코딩을 변환해야 할 경우가 종종 생긴다.

- iconv를 이용하는 방법

$ iconv -f 소스포맷 -t 목적포맷 소스파일 > 목적파일
$ iconv -f EUC-KR -t UTF-8 s.txt > t.txt

- recode를 이용하는 방법

recode는 우분투에서 기본으로 깔려 있지 않기 때문에 먼저 설치해 줘야 한다.

$ sudo apt-get install recode

사용법은 아래와 같다.

$ recode -v 소스포맷...목적포맷 변환파일
$ recode -v EUC-KR...UTF-8 a.txt

iconv보다 recode가 더 사용하기 편한 것 같다. 왜냐하면 파일을 변환 후 예전 파일을 남겨 놓아야 할 경우가 많지 않기 때문이다. 그리고 여러 파일을 한꺼번에 변환하려면 recode가 훨씬 낫다.

이런 인코딩을 해 줘야 하는 이유는 윈도우즈가 utf-8을 기본으로 쓰지 않기 때문인 것 같다. 요즘 시대에는 유니코드 형식을 기본 지원해 주는게 추세가 아닌가 싶은데...

2009-07-26

미라지폰에서 아이스크림폰2로 변경

미라지폰이 사망하셨다. 그간 느린 속도와 SKT를 사용하는 관계로 제대로 무선인터넷을 이용해 보지 못하는 점이 불만이었다. 아이폰과 안드로이드폰을 기다리면서 그럭저럭 사용하던 중에 끝내 사망하셨다. 이런 애매한 시점에 비싼 폰으로 바꿀 수도 없고 어쩔 수 없이 잠시 사용하기 위해 아이스크림폰2를 약정 할인(거의 공짜)으로 구매하게 되었다.

오즈를 신청했는데 터치폰이 아니다보니 여간불편한게 아니다. 게다가 브라우징 방식이 프록시 서버에서 랜더링 한 다음에 화면을 보내는 구조라 반응성이 극악에 가깝다. 이런 폰에 OZ 기능을 넣은 것은 어떻게 해석해야 하나... 다음달에는 취소하게 될지도...

LGT는 언제쯤 안드로이드폰을 내 놓을지...

네거티브 에너지로 시작한 트위터

얼마전에 트위터에 가입했다. 물론 글은 하나도 올리지 않았다. 블로그도 3년 동안 글 하나 올리지 않은 나이기에 당연한 결과였다. 남들이 다하고 안 하면 왠지 트랜드에 뒤쳐질 것 같아 시작했지만 딱히 커뮤니케이션을 하고 싶지 않았다. 그냥 트위터 주변을 배회하면서 어떤 세상이 펼쳐지고 있는지 구경만 하고 싶었다. 스파이 마스터라는 게임도 해보고 여러 유명인들을 팔로잉했다.

블로그 같은 경우는 구글리더로 읽고 있는데 너무 많은 블로그를 올려 놓다 보니 하루에 읽어야 할 양이 어마어마하다. 그런데 트위터를 하고 부터는 정보의 양을 소화 못할 지경이 되었다. 메일을 읽고 블로그를 읽고 트위터를 읽고 링크된 웹사이트를 읽고 또 링크된 사이트를 읽고 새로운 책을 소개 받고 책상 옆에 책으로 탑을 쌓아놓고는 또 책을 주문하는 나를 발견하게 된다. 동시에 읽고 있는 책이 10권이 넘을까... 책갈피를 끼워 놓은 책이 탑을 이루고 있다.
뭔가 모르게 정보에 쫒기는 느낌이고 새롭고 놀랄만한 세상이 너무 많다. 조금씩만 경험해 보려고 해도 하루는 너무 짧고 경험한 양보다 새로운 것들이 더 많이 생겨난다.

나는 특이하게도 트위터보다 얌머를 먼저 시작했다. 회사 사람들과 커뮤니케이션을 하기 위해서였다. 회사 내에서 얌머를 퍼트리려고 해 보았지만 나름 테크니컬 에반젤리스트들만 주로 쓰는 비밀 메신저화 되어 가고 있다. 하긴 트위터가 뭔지도 모르는 사람이 대다수인 우리 회사니까 당연한 결과가 아닌가 싶다.

트위터는 이제 더 이상 마이크로 블로그가 아닌 듯 싶다. 인터넷 세상의 플랫폼이 되어버렸다.
이 플랫폼을 타고 수 많은 재밌는 시도들이 이루어 지고 있는데 그런 재밌고 새로운 시도를 하기 위해서는 웹 쪽 개발 지식이 필수이다. 하지만 게임프로그래밍으로 시작한 나는 아직 웹 쪽에서는 왕초보이고 공부해야 할 것이 너무 많다.
파이썬, 장고, 구글앱엔진, jQuery로 한 발을 내 디딜 수 있을까...

정말 괜찮은 파이썬 입문서가 나왔다.

예전에 처음 파이썬을 공부하려고 할 때 정말 국내 서적이 없었다. 유일한 책이 '열혈강의 파이썬'이었다. 물론 '파이썬 시작하기'와 같은 외국 번역서가 간간히 있었으나 철 지난 구닥다리 버전에 기반을 두었고 책 내용도 부실했었다. '열혈강의 파이썬'은 국내에서 파이썬 프로그래밍을 하려면 봐야만 하는 바이블이었다.

그런데 최근에 '빠르게 활용하는 파이썬 3 프로그래밍'이라는 책이 나왔다. 번역서가 아닌 국내서인데다가 내용이 아주 꼼꼼해서 파이썬으로 웹 게임을 만들고 있는 나로써는 정말로 많은 도움이 되었다.

파이썬을 활용해서 프로젝트를 하는 것은 이번이 두번째이다. 처음 파이썬을 공부하고는 써 먹을데를 찾다가 처음으로 써 먹은 곳이 '포키포키'라는 게임의 스크립트 시스템으로 사용하였다. 1년 정도 잘 사용했지만 게임에서 메모리 세는 곳을 잡기 위해서 파이썬을 버리고 루아로 이동하게 되었다. 파이썬을 임베딩하면 알 수 없는 여러 곳에서 메모리 누수 보고가 나왔다. 물론 프로그램 동작 중에 메모리가 세지는 않는다고 하지만 프로그램이 종료되고 보고서를 보면 세는 곳이 너무 많이 나와서 정작 게임에서 메모리 릭을 잡기가 너무 어려웠다. 울며 겨자먹는 심정으로 루아로 옮기느라 파이썬으로 된 스크립트를 모조리 루아로 포팅했다. 그리고 파이썬은 절대 임베딩 방식으로는 써 먹지 않을 꺼라고 다짐했다. 하지만 임베딩이 아닌 곳에는 써 먹을꺼라고도 다짐했다.^^

그 뒤 웹게임을 만들게 되었는데 파이썬으로 게임 서버를 만들고 php와 통신을 하게 했다. 파이썬에서 웹서버 역할까지 하려고 생각했지만 파이썬을 그다지 잘하지 못한다는 이유와 특히 웹프레임 워크를 한 번도 써 보지 않았고 특히나 같이 작업하실 분이 php를 워낙 잘하시는 분이었다. 그래서 게임 서버는 파이썬으로 만들고 udp를 통해서 php와 통신을 하는 구조로 만들었다.
최근에 '쉽고 빠른 웹 개발 장고'라는 책을 봤는데 정말 괜찮은 웹 프레임 웍 이라는 생각이 들었다. 자연스럽게 구글앱엔진으로도 관심이 가기 시작했는데 예전 webapp을 통한 튜토리얼 정도를 해보고 나중에 써 볼 기회가 있으면 좋겠다 싶었는데 구글앱엔진에서 장고를 쓸 수 있다는 사실을 알고 급 관심이 일어났다.

언젠가 GTD를 지원하는 개인일정 관리 사이트나 스크럼을 활용한 관리 사이트를 구글앱엔진을 이용해서 만들어 봐야겠다. 언젠가... 언제?

2009-07-25

총표현사회

우메다 모치오의 웹진화론에 나오는 총표현사회라는 표현을 읽고 블로깅을 해야겠다라는 생각이 들었다. 블로그를 만든지는 벌써 3년도 훨씬 지났지만 제대로 된 글을 하나도 올리지 않았다. 귀차니즘과 이익이 없으면 안 하는게 경제적인 생활이라는 생각, 그리고 선천적으로 글 쓰는 것을 무지 싫어 하는 까닭에...

우리는 총표현사회에 살고 있다는 사실을 오늘에서야 깨닳았다. 이제는 표현이 이 시대를 살아가는 사람으로써의 의무가 아닌가 싶다. 그래서 블로깅을 다시 시작하려 한다.

나란 인간이 시작은 많이 하나 끝은 없기에 어느 한 분야에서 스페셜리스트가 될 수도 없고 언제나 네거티브 에너지(뒤쳐지지 말아야 겠다라는 생각)로 공부를 하기에 한 분야를 공부하면 다른 분야가 아쉬워서 걱정이 된다.
이제는 좀 느긋하게 마음을 먹고 내가 습득하는 지식과 생각들을 블로그를 통해서 정리해 보고자 한다.

이 시도 또한 언제까지 갈 지 모르겠지만...