Below you will find pages that utilize the taxonomy term “python”
Posts
구글에서 또 재밌는 프로그래밍 언어를 만들고 있다고 합니다.
구글에서 또 재밌는 프로그래밍 언어를 만들고 있다고 합니다.
https://github.com/carbon-language/carbon-lang/tree/trunk/docs/design
C/C++ 과 상호 연결이 쉽게 되게 하는 것이 주 목적중 하나라고 하는데 Rust는 좋은 언어지만 C/C++ 상호 연동이 그리 편하지 않아서 새로 만든듯 합니다. 그래서인지 Rust의 syntax를 많이 가져온 듯한 부분이 보입니다. 덕분에 C/C++의 가독성을 떨어 트리는 주범중하나인 변수/인자의 type 선언 형태가 타입이름 변수이름 형태에서 var 변수이름: 타입이름 형태로 바뀌었습니다. (이거 아주 맘에 드는 군요. ) javascript -> dart python -> golang 에 이어서 C/C++ -> carbon 이 될지 기대 됩니다.
Posts
wxgame2의 go 언어 포팅 gowasm2dgame
https://github.com/kasworld/gowasm2dgame
python 2.x 와 wxpython tcp connection 으로 만들었던 wxgame2 를
golang, websocket, wasm 으로 포팅(이라기보단 리메이크)하는 프로젝트 입니다.
python2가 지원이 종료된다니 겸사 겸사 이기도 합니다. (python3로 포팅할 계획은 없습니다.)
goguelike를 만들면서 정리한 go언어 서버 제작 용 라이브러리(프레임웍) 의 총정리 예제이기도 합니다.
중요한 역할을 하는 것들을 정리해보면
genprotocol 서버 클라이언트가 사용할 프로토콜 생성, 관리
argdefault : config와 command line arguments
prettystring : struct 의 string 화 / admin web , debug용
Posts
저 라즈베리파이 3은 시다.
2년 전부터 embedded linux 장비를 호시 탐탐 노리고 있었는데.
http://kasw.blogspot.kr/2014/01/diy.html
http://kasw.blogspot.kr/2014/02/diy-2.html
어제 부로 라즈베리 파이 3이 발매 되었답니다.
https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/
무선랜과 블루투스도 내장하고 64bit 4코어를 내장해 성능도 좋아 졌다고 하는군요.
문제는 제가 2주전에 라즈베리 파이2 를 구입 했다는 거지요.
게다가 무선랜카드도 필요해서 또 따로 주문했구요. http://prod.danawa.com/info/?pcode=3708216&cate=1131685
위 랜카드는 라즈베리 파이에서 기본으로 지원하지는 않지만 http://blog.ngelmaum.org/entry/research-note-install-iptime-n500u-raspberry 를 보니 사용가능한듯 하여 주문했지요.
더 큰 문제는 기존에 사두고 까먹고 있던 무선랜 카드가 있었고 라즈베리파이에서 아무문제없이 인식 및 사용이 가능했다는 사실입니다.
Posts
goguelike의 네트웍 속도
일단 python에서 네트웍 속도로 이것 저것 해본 글들 http://kasw.blogspot.kr/search/label/wxgame
goguelike를 튜닝하던 중에 네트웍 패킷 처리량이 얼마나 되나 하고 테스트 해보니 20000 packet/sec 정도 밖에 안나와서 충격을 먹고 네트웍 부분을 집중적으로 검사및 튜닝을 한 이야기..
결론만 말하면 go 언어의 능력이면 1000 클라이언트 ( 10000클라이언트 에서도 속도 저하는 10% 이하) 에서 150000 패킷 / 초 정도를 처리 할 수 있습니다.
파이썬에선 정말로 최후까지 쥐어 짜야 60000넘기는 것도 힘들었던것에 비하면 깨끗한 구조를 유지하면서도 2.
Posts
pycrust의 split 이 가로로 되는 것을 세로로 바꾸기.
pycrust는 wxpython에 따라오는 ( wxtools 에있음 ) interactive python shell로 ipython을 쓰기 전에 잘 쓰던 것이었습니다.
최근 ipython 이 살짝 이상해진 관계로 다시 pycrust를 쓰고 있는데 역시 wide 화면에서 가로 분할 윈도우는 짜증 나는 관계로 수정을 시도 하였습니다.
패치가 이루어진 다음엔
과 같이 와이드 화면에 어울리게 된 것을 볼 수 있습니다. /usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/py 에 존재하는 crust.py 내의
self.SplitHorizontally(self.shell, self.notebook, -self.sashoffset) 를 self.SplitVertically(self.shell, self.notebook, -self.sashoffset) 로 바꾸면 됩니다.
( 두번 나옵니다. , _CheckShouldSplit 와 ToggleTools 함수 )
Posts
wxgame2를 개선 하고 있습니다.
새로 바뀐 스크린 샷
client/server 실행법
서버는 인자없이 그냥 실행하면 됩니다. python wxgame2server.py 또는 이번 C/S 분리의 목적중 하나인 wxpython 코드 제거로 wxpython코드가 서버에는 없기 때문에 pypy를 사용할 수도 있습니다.
클라이언트 실행 python wxgame2client.py -s serverip -t teamname -s 는 접속할 서버의 주소, port는 고정입니다. -t 는 클라이언트 AI의 팀 이름 -t 옵션이 생략되면 서버에 observer mode로 접속합니다. ( 서버가 보내주는 정보를 화면에 표시만 하는 모드 ) 각 팀은 랜덤한 teamcolor를 가지며 그 color대로 표시됩니다.
Posts
wxgame2 의 네트웍 버전이 거의 완료 되었습니다.
사진 설명 - 서버에 네개의 네트웍 클라이언트를 접속하여 실행 중인 화면.
이전 글들 이후로 개인적 여유 시간을 대부분 투자하여 ( 아직 버그가 좀 남아있긴 하지만;) wxgame2 의 네트웍 버전을 거의다 만들었습니다.
github의 코드 를 보시면 알게 되겠지만 기존 wxgame2 코드의 상당부분이 재 작성 되었으며 네트웍 쪽 코드도 수차례 재 작성하였습니다.
정식 MMORPG처럼 모든 판단은 서버에서 이루어지며 각 클라이언트는 시각화와 클라이언트 AI 만 작동하는 형태 입니다. 서버 사이드 AI도 존재 하는데 이것은 서버의 NPC를 시뮬레이션 하는 것입니다.
Posts
wxgame2의 네트웍버전을 위한 기반 작업을 진행하고 있습니다.
이전 글 이후에 강의 준비를 하면서 코드를 보니 코드가 오래 되기도 했고 또 설계상의 결정들이 맘에 들지 않아 전체적인 재 정리를 해야겠다고 생각하고 있었습니다.
지난 주부터 시간 되는 대로 작업을 진행해서 로직을 수행하는 wxgame2server.py와 서버로 부터 받은 정보를 시각화하는 뷰어인 wxgame2client.py 로 만드는 것을 일정부분 끝냈습니다.
현재까지는 네트웍으로 데이터를 주고 받는 것은 안되어 있으며 간단하게 file/pickle 을 상용해서 서버-> 클라이언트간 정보를 전달하고 있습니다.
코드를 작성하다 보니 구조가 맘에 들지 않아 거의 뜯어 고치게 되었습니다.
Posts
게임 프로그래밍 이란 주제로 결국 강의를 했습니다.
고려 대학교 고공 겨울학기의 한 꼭지로 게임 프로그래밍 이란 주제로 2시간 짜리 강의를 진행했습니다.
원래는 4일간 2시간씩 총 8시간 짜리 강의지만 첫날 2시간만 제가 하고 이후는 능력 좋고 경험 많은 후배가 강의를 진행하고 있습니다.
이전에 썼던 글 게임프로그래밍이라는 주제로
과 예전에 파이썬으로 만들었던 게임프레임웍을 github에 올렸습니다. 을 사용해서 강의를 진행 했으며
강의에 사용했던 프리젠테이션은 https://docs.google.com/presentation/d/1fNa2hY5qGE_bGnsT0NhmnVQQC6kjLuUb4i3HtQATJCI/edit#slide=id.p 에서 볼 수 있습니다.
전산 실습실에서 진행해서 실습과 병행하여 진행할 생각으로 실습 준비를 해갔으나 생각만큼 잘 되지는 않은 것 같습니다.
Posts
예전에 파이썬으로 만들었던 게임프레임웍을 github에 올렸습니다.
파이썬과 wxpython을 사용해서 간단한! 2d 슈팅게임을 만들 수 있는 프레임웍과 예제 삼아 만들어본 AI만 있는 게임?을 github에 올렸습니다.
코드 내부의 주석을 보니 2011년에 만들어둔 것이군요.
그 동안 python홍보용으로 잘 써먹었던 프로젝트입니다. ( 파이썬으로 이런 게임도 만들 수 있어. 너도 배워 보지 않을래? 등 ^^ )
원래는 더 일찍 공개하려고 했으나 코드 정리등이 귀찮아서 미루다가 모 후배의 압박으로 대충 정리해서 올립니다.
관심 있으신 분은 https://github.com/kasworld/wxgame2 에서 받으면 됩니다.
원래 코드는 제가 개인적으로 만들어 사용하고 있는 kaswlib이란 것을 사용하도록 되어 있는데 github에 올리려니 서로다른 두개의 프로젝트가 되고 또 참조를 하려면 import path를 설정하는 것도 해야 해서 쓰기 불편할 듯 하여 아예 프로젝트 내부에 wxgamelib 파일에 사용하는 코드만 복사해 넣었습니다.
Posts
게임프로그래밍이라는 주제로
지인으로 부터 뜬금 없이 “게임프로그래밍"라는 주제로 특강을 해달라는 부탁을 받아서 ( 아직 할지 말지는 미정이긴 하지만 ) 이런 저런 생각이 들어 적어보고 있는( 즉 아직 작성중인 ) 문서입니다.
“게임을 만든다는 것은 무엇일까?” 게임이란 무엇일까? 게임의 정의를 논하는 것은 프로그래머 입장에선 쓸데없는 것일 테니 무시하기로 하고 ^^;;; 게임을 만드는 회사를 10년 넘게 다녔던 프로그래머로서 게임을 만든다는 것을 생각해보면 게임을 만들기 위한 직능을 준비하고 그 실무를 진행하는 것으로 정의해볼 수 있을 것 같습니다.
Posts
web2py access control(접근 제어) 정리.
회사 세미나용으로 http://web2py.com/books/default/chapter/29/09/access-control 을 요약한 내용 입니다.
접근제어 access control web2py 는 Role Based Access Control 제공 (RBAC)
역할을 기반으로하는 접근제어로 context-based access control (CBAC) 과는 다르다. ( message의 context에 따라 달라지지 않는다, 상태, 혹은 데이터 ) user - role - job function 형태
web2py 에서는 Auth class를 통해서 구현된다. 아래와 같은 테이블이 필요한데 프로젝트를 만들때 자동으로 코드가 생성된다. auth_user : 유저이름 , email , 암호 , 상태 (등록 대기, 완료, 블럭됨 )
auth_group : 유저의 그룹(롤) 정보 , 이게 role ( 사용자 역할 ) auth_membership : group - user link table , user - group의 다대 다 연결.
Posts
구글 리더가 서비스 종료한다는 소식을 듣고
버럭! 한 사람이 어디 저 뿐만이겟습니까만;; ^^
저 역시 소식을 접한 후부터 계속해서 대안을 찾고 있기는 했습니다.
일단 feedly로 임시 도피를 해서 살고 있긴 합니다.
쓰는 소감을 말하자면 뭐 그냥 그냥..이란 느낌입니다.
최근 집에 오래된 노트북으로 서버를 구축하고 그를 중심으로 사용 패턴을 정리해서,
unison 으로 개인 파일들을 반자동 sync 한다던지 하는 설정을 하다 보니 , 외부 서비스를 점점 사용 하지 않게 되더군요.
그래서 다음 클라우드,box.com,그리고 dropbox 마져도 더이상은 사용하지 않고 살게 되었습니다.
Posts
web2py 소개
회사에서 세미나 용으로 작성한 글인데 쓰고 보니 이것 만으로도 web2py의 소개 용으로는 충분 할 것 같아서 그리고 블로그에 올려도 좋을 듯한 내용이어서 올려 봅니다.
원문은 http://web2py.com/books/default/chapter/29/03 이며 번역을 한 것이 아니고 업무에 필요한/필요할 것 같은 것들을 정리한 글이라 원문과 같이 놓고 보셔야 이해가 될 듯 합니다. 제가 맡은 부분인 Overview 부분 만 입니다. ^^
web2py 개요 - overview
** **
시작하기 - startup web2py는 윈도우와 맥에선 실행 프로그램으로도 제공되기 때문에 따로 python 이 필요하지 않다.
Posts
windows의 vim에서 python 활성화 하기
간단한 팁입니다만 기록을 위해서 적습니다.
전 윈도우건 리눅스건 환경을 거의 통일 시켜놓고 작업을 하는 편입니다.
이 환경의 통일에서 상당히 중요한 역할을 하는 것이 gvim 인데 http://www.vim.org/download.php 주 에디터/뷰어로 항상 gvim을 사용하도록 세팅해 놓으면 chrome/firefox와 더불어 종종 “내가 지금 윈도로 부팅한 상태인가?” 를 헷갈릴 정도로 일관된 환경을 유지 할수 있습니다. ( 과장이 좀 많이 있지만요. ^^)
아무튼 vim을 쓰고 있는 시간이 많아지니 이런저런 플러그인 들도 설치하게 되고 http://kldp.org/node/125263 설정들도 이렇게 저렇게 하곤 합니다.
Posts
현재 까지 언어별 투자시간
세월이 하수상하지만 ( 정치건 it 판이건 ) 곰곰히 생각해보니 python을 실무에 적용해서 써 온지도 어느덧 10000시간이 넘어간듯 합니다.
얼마전 아는 후배가 첫 8bit kid들이 아직 프로그래밍을 하고 있으면 대충 30년이 되었다고 하는글을 올렸는데 그 글을 보면서 만감이 교차 하더군요.
정말로 30년이 된겁니다. ㅠㅠ 살아온 시간의 3/4 이상을 컴퓨터와 함께 지낸거지요.
그래서 생각해본 언어별 투자? 시간입니다. ( 중복 시간이 있으니 총합은 30년이 넘을수 있습니다 ) basic ( apple soft ) : 5년 Assembly : ( 6502 ) : 3년 ?
Posts
uwsgi 사용시 주의점
uwsgi 사용시 (http://projects.unbit.it/uwsgi/wiki)
post data를 처리 하고 싶으면 결과 return/yield 를 내보내기 전에 읽어 와야 한다.
그렇지 않으면 메롱한 에러를 내는 경우가 왕왕 생긴다. ( 검색해보니 알려진 버그인듯. )
이것때문에 오늘 시간좀 소비 했음.
아 그리고 web service 개발할때 curl 이 정말 편하다. command line으로 http post를 할수 있으니 코드 테스트가 정말 편하게 이루어지더라. ;;;
역시 인간은 검색을 생활화 해야 하는 것이었다 ;;;
Posts
python으로 웹 서비스 만들어보기.
를 하기전에 ^^;;;
web server : apache , lighttpd, nginx , cherokee, cherrypy, simplehttpserver(python) web app protocol : static file, wsgi , uwsgi web app frame work : node, cherrypy, django , web2py, 중 어떤 조합을 사용할지를 결정해야 해서
그동안 써왔던 것을 모두 점검하는 의미로 간단/대충 벤치마크를 해봤음. 즉 이글은 그 기록을 남기기 위한 글. ^^
기본적으로 다 hello world 를 리턴하는 static file 또는 print 코드 를 사용 해서 테스트 했습니다.
Posts
좋은 AI 만들기?
시간 날때마다 집에서 간단한 슈팅 게임? 을 만들고 있습니다만.. ( 엄밀히 말하면 2D 게임을 위한 프레임웍 )
전 게임을 하는 것보다 구경하는 것을 더 좋아하는 편이기 때문에 대신 플레이해줄 AI들을 몇가지 만들고 있습니다.
몇종의 AI를 만들고(허접하지만) 각각의 AI끼리 대전을 시켜보며 구경을 하고 있는데..
만든 입장에서 더 실력이 좋을 거라고 생각하면 만든 AI 보다 대충 머리수 채우기로만든 AI가 더 점수가 좋은 경우가 꽤 있군요.
그러면 다시 코드를 보면서 이유를 생각하고 그 결과를 다시 반영해보고 하면서 즐기고 있습니다.
Posts
단정한 python , 자유분방한 perl
개인 취향에 따라 언어 취향도 갈리는지.. php,python,perl,ruby를 공부 하다보면 기능의 강력함과 별도로 언어의 철학이 취향에 맞는지가 신경쓰이더군요.
전 C의 단순함과 강력함은 좋아 하지만 perl의 자유분방함은 적응이 안되었고 pascal의 딱딱함은 싫어 하지만 python의 단정함은 매우 맘에 들었습니다. ;;;
smalltalk의 순수성은 이해를 못해도 ruby의 oo에 대한 고집은 공감하게 됩니다.