2012년 11월 10일 토요일

IPython notebook

IPython 의 notebook function

뜨아 ,, 이건 거의 뭐 , 꼭 한번 써보시길 바랍니다.

웹브라우저를 interactive console로 사용하는데,

정말 머리를 한대 맞은 듯한, 느낌입니다.  센세이션이라고 해도 될듯합니다.





앞으로 모든 툴의 방향이 어떤식으로 변할지를 미리 알려주는

무언가 조각조각 나있던 퍼즐이 맞춰지는 느낌입니다.




2012년 8월 20일 월요일

Lua vs Python

루아라는 언어를 요즘 보고 있습니다

파이썬을 주로 사용을 하는데

파이썬의 철학인 battery included 와는 좀 다른 성격의 루아를 보고있자니 좀 헷갈립니다

파이썬은 그냥 설치하자마자 왠만한 라이브러리가 다 들어있어서 상당히 편했는데

이 놈은 진짜 인터 프리터 달랑 하나 입니다.

대신 장점은 명확하네요 light-weight , 즉 다른 프로그램 안에 내장하기 참 좋습니다

Embedding을 목적으로 한 언어라고 해야할까요

파이썬은 특유의 메모리 관리와 스레드가 안되는 점  ,

또 의외로 크다는 점 때문에 , 편리하긴 하나 embedding python 하기에는 좀 무리인 점이 있었는데

이건 다른 프로그램안에 다시 넣을 수가 있어서 좋네요

다만 파이썬같은 경우는 진짜 바로 사용할 수 있는 라이브러리들이 많아서

쓰다보면 정말 편하다는 느낌을 받았는데 ,

루아는 아직 익숙하지 않아서그런지 모르겠지만,

당연하게 될거라 생각한것들을 다시 깔아야 되는 번거로움이 있네요

펄이나 파이썬에서 당연한 split 함수도 보니깐 외장으로 있고 list의 길이는 구하는 함수도

버젼 별로 다르고 (5.1 ,5.2) 좀 갈길은 멀어 보입니다

두 언어의 장점은 c 함수를 붙이기가 쉽다는거 이건

정말 장점이네요,  이건 공통점이면서 장점입니다

파이썬이 다만 c에서 call 하기는 조금 어렵다는거 파이썬은 c를 불러들이기는.정말 좋은데

C에서 불러들이기는 좀 무겁다는 느낌을 받았습니다.

반면에 루아는 c에서 불러들이기 정말 좋다는거

C를 붙이기도 편하고요 , 다만 기본 라이브러리가 적어서 그건 좀 불편하네여

이상.

2012년 5월 18일 금요일

PIL (Python Image Library)


일단 PIL의 출처는 아래와 같습니다
http://www.pythonware.com/products/pil/

Python Image Library. 줄여서 PIL 이라고 하고 ,

Python의 image libarary 중 사실상 표준이라고 보시면 됩니다.

알기로는 Django 라든지, Google App engine같은데서도 지원을 합니다.

Image Processing를 시작하려면 일반적으로 C++로 된 책으로

Image Processing 보다는 열심히 VC++를 익히던 때가 있었는데,

그것보다는 PIL로 이론을 빠르게 익히는걸 추천합니다.

뿐만 아니라, 파이썬의 장점은 몇줄 안짜고도 ,

알고리즘이나 이런부분에 집중할 수 있는 장점이 있습니다.


짤은 Image Processing 책에 항상나오는 그분 입니다.







2012년 5월 13일 일요일

django , rst 파일을 위한 Sphinx



파이썬에 Sphinx 라는 Project가 있습니다.

이것은 reStructure 라는 format으로 작성된 문서를 

html 이나 기타 다른 문서 포맷으로 바꿔주는 파일입니다. 


출처는 위와 같고, 실제 최종 인스톨 방법은 저 사이트를 들어가서 확인하시면 되고, 


easy_install -U Sphinx

과 같이 작서하면 일단 설치는 끝납니다. 


여기서 tutorial 같은 내용은 안적겠습니다. 


일단 Sphinx는 메뉴얼 같은것을 만들 때 좋은 툴입니다. 

다만 이것이 static 으로 동작을 하기 때문에, 

온라인에서 바로 수정하고 하는 dynamic한 것이 지원이 되지 않습니다. 


sphinx 로 문서를 만들게 되면 우리가 흔히 보아왔던, 

아래 와 같은 문서들이 만들어 지게 됩니다.

맨 아래 보시면
아래와 같은 문구에서 Sphinx 로 작성이 되었다는 말을 확인할 수가 있죠, 

우리는 문서를 작성할때 structured Text (구조적으로) 작성하지는 않죠,

구조적인 글쓰기를 할때 매우 유용한 형태입니다.

그래서 외국 페이지를 보다보면,  매우 단순하면서도,

구조적으로 잘 갖춰져 있는 경우가 많더라고요,

우리 처럼 문서하나를 작성하더라도 워드같은걸로 작성하는 것이 아니라.

텍스트로 작성을 해서 그걸 doc, html로 변환시키는 접근법을 하는 사람들이 많더라고요

특정 플래폼에 종속되기 보다는 내용적인 면에 집중하게 되는 장점도 있고요,

암튼, 그런 구조적인 글쓰기를 지원해주는 Sphinx 라는 project 입니다.


2012년 1월 24일 화요일

파이썬 yield (2) - yield는 언제 사용하는가.

파이썬 yield에 대해서 부가적으로 써보겠습니다.

 왜 yield를 사용하느냐,,,

 이것을 왜 코루틴으로 사용하는가..? 대한 답입니다.

 함수는 기본적으로 실행이 종료 되면, 그 안의 모든 로컬 변수들은 날라가 버립니다.

 함수라는 것 자체가 기본적으로 휘발성이기때문에, 날라가 버리죠,, 

그래서 날라가는 것을 방지하기 위해서 global로 선언을 해버립니다.

 교과서에서는 global로 선언하는 것은 후진 방법이라고 써져있습니만,

 실제로은 후진방법은 아닙니다. 다만, 그 사이드 이펙트가 컨트롤 할 수 없을 정도로 복잡해지기에, 쓰지말라고 하는것이죠,,

실제로는 많이들 사용합니다. 왜냐하면 중앙 변수를 건드리는게 편하니깐요,

 yield는 그럼 무엇일까요,, 기본적으로 함수이지만, 휘발성이 없는 함수입니다.

 실행이 끝난다고 , 날라가 버리지 않지요,, global하게 살아 있는 함수인것입니다.

 함수 실행중에 잠시 세워놓고 딴짓거리를 해도 변수나 이런게 다 살아 있습니다.

 이게 무엇을 얘기하느냐,, 멀티프로세싱의 기본이 되는것이죠,, 일종의 thread입니다.

다만, 실제로 real time multi-thread가 아니라, turn 방식의 thread, 게임으로 말하면 스타크래프트 같은것이 실시간으로 다른 task들을 처리하는 반면에 삼국지,HMM 스타일은 실시간으로 처리를 하지 않고, 턴 방식으로 처리를 합니다.

 서로 간의 장단점이 있습니다만, 턴방식의 장점은, 그리 많은 프로세서 파워를 요구하지 않죠,, 이것도 yield에서도 마찬가지 입니다. 다양한 멀티 작업들을 돌릴때, 한번에 하나씩 돌리면서, synchronous하게 움직이죠,, 그러면서 , 실시간 처리하면서 생기는 asynchronous의 문제들이 사라집니다. 좀더 세밀하게 컨트롤 할 수도 있고요,,, 이것이 yield의 장점입니다.

 활용처는 이 기본적인 차이를 알고 계시면 충분히 활용은 쉬우리라 봅니다.