python은 버전업이 자주 되기 때문에
한 컴퓨터에 여러 개의 python을 깔아야 할 경우가 있습니다.

개발용으로는 버전이 바뀌면 귀찮으니까 옛날에 나온 python-2.5.2 를 쓰고,
도구용으로는 최신 안정 버전인 python-2.6.1 을 사용하고,
공부용으로는 python-3.0 을 사용하는 식이죠 ~(-_-)~

그냥 설치하면 꼭 python2.5 혹은 python3.0 식으로 실행해줘야 하고
python 이라고 하면 아무것도 실행되지 않습니다.

python 이라고 입력했을때 특정 버전이 실행되게 하려면
/etc/make.conf 파일을 수정한 다음
인스톨 해주셔야 합니다.

# vim /etc/make.conf
PYTHON_DEFAULT_VERSION=python2.5

아-_-; 힘들었어요..


2009/01/05 18:42 2009/01/05 18:42
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/124

댓글+트랙백 ATOM :: http://myevan.net/atom/response/124

http://cybershin.x-y.net/tt/trackback/196

트랙백을 걸줄 몰라서 일단 링크입니다 ~(-_-)~

서버 관리툴을 만들면서 리모트로 접속해서 이것저것 하고 싶을때

그냥




이런식으로 작업했었는데

paramiko 이런게 있다네요 햐햐

나중에 써먹어봐야지


ps.
근데  os.system 함수는 글작성이 안되네요-_-;
2008/12/28 23:52 2008/12/28 23:52
TAG ,
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/122

댓글+트랙백 ATOM :: http://myevan.net/atom/response/122

게임에서 선형 보간으로 하면 촌스러운 느낌이됩니다. ~(-_-)~

가속 감속을 주는 방정식을 만들고 싶을때 사용하는
뉴턴 제차분을 이용한 방정식 만들기 프로그램 입니다.

def __newton_subcalc(sx, sy, ex, ey):
    return (ey - sy)/float(ex - sx)

def __newton_build(srcList, stack):
    """
    x   y
    1   11
    2   12  F[1,2] = (1, 11, 2, 12)
    3   13  F[2,3] = (2, 12, 3, 13) F[1,3] = (1, F[1,1], 3, F[2,3])
    """
    stack.append((srcList[0][2], srcList[-1][2]))

    if len(srcList) <= 1:
        return stack

    sx, mx, sy = srcList[0]
    dstList = []
    for mx, ex, ey in srcList[1:]:
        dstList.append((sx, ex, __newton_subcalc(sx, sy, ex, ey)))
        sx, sy = mx, ey
    return __newton_build(dstList, stack)

def newton_gen_polyf_items(srcList):
    srcList = [(cx, cx, cy) for cx, cy in srcList]

    stack = __newton_build(srcList, [])

    fc, bc = stack[0]
    fr = fc

    yield "%f" % (fr)

    count = 1
    for fc, bc in stack[1:]:
        cx, ct, cy = srcList[0]
        yield " * ".join(["%f * (x - %f)" % (fc, cx)] + ["(x - %f)" % (cx) for cx, ct, cy in srcList[1:count]])
        count += 1

def newton_gen_polyb_items(srcList):
    srcList = [(cx, cx, cy) for cx, cy in srcList]

    stack = __newton_build(srcList, [])

    revList = [] + srcList
    revList.reverse()

    fc, bc = stack[0]
    br = bc

    yield "%f" % (br)

    count = 1
    for fc, bc in stack[1:]:
        cx, ct, cy = revList[0]
        yield " * ".join(["%f * (x - %f)" % (bc, cx)] + ["(x - %f)" % (cx) for cx, ct, cy in revList[1:count]])
        count += 1

def newton_make_polyf(positions):
    return " + ".join((expr for expr in newton_gen_polyf_items(positions)))

def newton_make_polyb(positions):
    return " + ".join((expr for expr in newton_gen_polyb_items(positions)))

if __name__ == "__main__":
    positions = [
            (0.0,  0.3),
            (0.33, 0.7),
            (0.66, 0.9),
            (1.0,  1.0),
    ]

    print newton_make_polyf(positions)
    print newton_make_polyb(positions)

게임에서는 최종값이 중요하니 newton_make_polyb 를 사용하는 것이 좋은듯 합니다.
2008/08/14 23:01 2008/08/14 23:01
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/117

댓글+트랙백 ATOM :: http://myevan.net/atom/response/117

게임을 만들다보면 두점 사이의 방향이나 거리를 구해야 하는 일이 많습니다.
이거 하나 하자고 벡터 클래스 만들기도 귀찮아서 아래와 같은 코드를 작성하곤 했는데...

import math

src = (sx, sy)
dst = (dx, dy)
scale = 2.0

delta = dst[0] - src[0], dst[1] - src[0]
deltaLen = math.sqrt(delta[0] * delta[0], delta[1] * delta[1])
deltaDir = (delta[0] / deltaLen, delta[1] / deltaLen)
newPos = deltaDir[0] * scale, deltaDir[1] * scale

속도는 둘째치고, 코드량의 압박이 장난이 아닙니다.

오늘 몬스터 날리기를 구현하던 도중 불현듯 재밌는 아이디어가 떠오르더군요

바로 복소수!! 입니다.

(x, y) 좌표 연산이나 복소수 연산이나 2차원 연산이라는 점에서 동일하거든요


src = (sx, sy)
dst = (dx, dy)
scale = 2.0

delta = complex(*dst) - complex(*src)
deltaLen = abs(delta)
deltaDir = delta / abs(delta)
newPos =
delta / abs(delta) * scale
짠 ~

와하하 너무 좋아요

2008/08/14 17:04 2008/08/14 17:04
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/116

댓글+트랙백 ATOM :: http://myevan.net/atom/response/116

boost::python 을 쓰게 된지도 1년 남짓이 되었습니다.
vc6 -> vc2005 로 바꾼 이후 컴파일 속도가 상대적(-_-)으로 빨라져서 쓰게되었습니다만...
이제 슬슬 인내력의 한계에 다다르게 되었습니다. 와아아아 =ㅁ=)/ 제길슨!

컴파일 속도도 답답하고
확장해서 쓰려고 해도 소스 코드도 개판이라 흑흑 ~(- -)~

그래서 며칠을 고민하던끝에 swig 나 한번 볼까 했는데!
엄청 편하군요 orz;

사용예 보기



헤더 파일만 정리 잘해서 연결만 시켜주면 끝이라는 사실이 너무 감동적입니다.
컴파일 속도도 빠른데다가
boost 에 비해서 읽을 수 있는 코드라는 점이 -_-)~
너무 너무 마음에 듭니다.

생성 코드 보기

shared_ptr 하고 weak_ptr 만 되면 boost::python 은 내다버려야겠어요.
2008/08/06 20:08 2008/08/06 20:08
TAG , ,
받은 트랙백이 없고, 댓글 4개가 달렸습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/115

댓글+트랙백 ATOM :: http://myevan.net/atom/response/115

from socket import *
s.setsockopt(SOL_SOCKET, SO_RCVBUF, newSize)
2008/07/04 18:32 2008/07/04 18:32
TAG ,
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/113

댓글+트랙백 ATOM :: http://myevan.net/atom/response/113

>>> import operator
>>> reduce(operator.add, [[1, 2], [3, 4], [5,6]])
[1, 2, 3, 4, 5, 6]
2008/06/26 18:53 2008/06/26 18:53
TAG
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/112

댓글+트랙백 ATOM :: http://myevan.net/atom/response/112

from pysvn import Client
from os import access
from os import R_OK
from os import walk
from os import sep

KEY = "paladin"
OLD_FOLDER = "fighter"
NEW_FOLDER = "fighter2p"

c = Client()
for root, dirs, files in walk(OLD_FOLDER):
    dirs.remove(".svn")
    for fileName in files:
        if KEY in fileName:
            oldName = sep.join((root, fileName))

            newRoot = root.replace(OLD_FOLDER, NEW_FOLDER)
            newName = sep.join((newRoot, fileName))
            c.move(oldName, newName)

2008/06/24 16:15 2008/06/24 16:15
TAG ,
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/111

댓글+트랙백 ATOM :: http://myevan.net/atom/response/111

from pysvn import Client
from os import access
from os import R_OK
from os import walk
from os import sep

c = Client()
if access("monster", R_OK) and not access("npc", R_OK):
    c.move("monster", "npc")

for root, dirs, files in walk("npc"):
    dirs.remove(".svn")
    for fileName in files:
        if "monster" in fileName:
            oldName = sep.join((root, fileName))
            newName = sep.join((root, fileName.replace("monster", "npc")))
            c.move(oldName, newName)
2008/06/04 22:28 2008/06/04 22:28
TAG ,
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/110

댓글+트랙백 ATOM :: http://myevan.net/atom/response/110

GB2312 테이블 만들기

python 2008/06/04 13:44 자루
lines = []
for high in xrange(0, 0xff):
    highPart = high << 8
    line =""
    for low in xrange(0, 0xff):
        lowPart = low
        data = u"%c" % (highPart | lowPart)
        try:
            data.encode("gb2312")
        except UnicodeError:
            continue

        line += data

    if line:
        lines.append(line.encode("utf8"))

open("gb2312.txt", "w").write("\n".join(lines))

GB2312 테이블
2008/06/04 13:44 2008/06/04 13:44
TAG ,
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://myevan.net/rss/response/109

댓글+트랙백 ATOM :: http://myevan.net/atom/response/109