파이썬을 두루 이해하는 데 도움 되는(?) 퀴즈

얼마 전에 “사랑하지 않으면 떠나라”의 서평 제목으로는 좀 독특한 “당신은 자바 가상 머신을 죽일 수 있나요?”라는 글을 보고 떠올라서, 혹시 파이썬을 쓰다가 발생하는 문제를 얼마나 잽싸게 해결하고, 문제가 생길만한 코드를 짜지 않는 등 이해정도와 관련된 것을 시험해 볼 수 있는 문제를 한 번 내 봤습니다. -ㅇ-;; 물론 제가 냈기 때문에 제가 아는 한에서만 나온거라 좀 편향돼 있을 수도 있지만.. 그냥 재미로 한 번;;

구글코리아 테크토크: 파이썬 – 상상력에 날개 달기

어제 구글코리아에서 있었던 테크토크 자료입니다.
주제는 “파이썬 – 상상력에 날개 달기”로 C와 자바를 쓰시던 프로그래머들이 자주 갇히게 되는 상상력의 굴레에서 벗어날 수 있게, “헉 이런 것도 되다니!”를 통해서 창의적인 구조를 디자인하는데 도움을 드리는 것이 목적이었습니다.

소개해드리는 소스코드는 각 문제를 해결하는 데 최적의 해결방법이 아니라, 이렇게 하는 방법도 있다는 정도이니 감안해서 참고하시면 좋겠습니다~ (실제로 여기서 사용된 hack을 그냥 막 도입해서 쓰시면 왕따당합니다. ^^*)

녹화된 현장 비디오는 편집이 완료되는대로 유튜브 한국 사이트에 올리신다고 합니다. ^.^;;;

파이썬 웹 프로그램 순식간에 만들어서 친구들과 나눠 쓰기

얼마 전에 nohmad님 이 소개해 주신 AppJet을 보고 파이썬 모듈들을 쓸 수 있으면
무척 좋겠구나! 생각을 했었는데요. 결국 파이썬으로 된게 나왔습니다.

이름은 UtilityMill 대략 우리말로 대장간 정도 되겠습니다~
Zope에서 입력 변수를 웹 UI에서 편집하면 주석에다 달아주듯이, Utility Mill에서는 주석에 달지는 않지만, 양식에 들어갈 변수들의 성질만 정해주면 자동으로 웹 양식을 만들어줍니다. 파이썬 프로그램에는 그냥 전역변수로 들어오기 때문에 그냥 쓸 수 있고, 출력은 print하면 됩니다. 간단!

저도 간단하게 테스트를 해 보려고 예전에 만들었던 한국어 lorem ipsum의 라틴어-한글 변환기 부분을 집어 넣어 보았습니다. 뭔가 처음엔 이상한 에러가 났었는데, 어딘가 고치다보니 저절로(?) 고쳐져서 잘 돌아가는군요;

그러나, 그냥 단순한 프로그램만 돌리면 아무래도 파이썬의 매력은 다 살리지 못한 것일텐데, 여기서는 파이썬의 표준 라이브러리 “전부”뿐만 아니라, BeautifulSoup, numpy, PyCrypto, feedparser, pyparsing, PyRSS2Gen, ReportLab, SciPy 까지도 지원하기 때문에, 정말 간단한 도구들은 웬만하면 불편없이 만들 수 있군요. 웹을 긁어와서 작업하는 것도 가능하기 때문에, 앞으로 아이디어가 생기면 저기에 올려놓고 모두 같이 쓸 수 있게 해야겠습니다. ^-^*

Watch Full Movie The Shack (2017)

The Shack (2017) Full Movie Online Watch Free , English Subtitles Full HD, Free Movies Streaming , Free Latest Films.


Quality : HD
Title : The Shack.
Director : Stuart Hazeldine
Release : March 03, 2017
Language : en.
Runtime : 132 min
Genre : Drama, Fantasy.

Synopsis :
‘The Shack’ is a movie genre Drama, Fantasy, was released in March 03, 2017. Stuart Hazeldine was directed this movie and starring by Sam Worthington. This movie tell story about After suffering a family tragedy, Mack Phillips spirals into a deep depression causing him to question his innermost beliefs. Facing a crisis of faith, he receives a mysterious letter urging him to an abandoned shack deep in the Oregon wilderness. Despite his doubts, Mack journeys to the shack and encounters an enigmatic trio of strangers led by a woman named Papa. Through this meeting, Mack finds important truths that will transform his understanding of his tragedy and change his life forever.

Watch Full Movie The Shack (2017)

So..do not miss to Watch The Shack Online for free with your family. only 2 step you can Watch or download this movie with high quality video. Come and join us! because very much movie can you watch free streaming.

Incoming search term :

The Shack Full Episodes Online
The Shack English Full Episode Online
Watch The Shack Online Indiewire
Watch The Shack Online Hitfix
The Shack English Full Episodes Free Download
The Shack HD English Full Episodes Download
The Shack Free Download
Watch The Shack Online Putlocker
The Shack Full Episodes Watch Online
The Shack Free Online
The Shack HD Full Episodes Online
The Shack English Full Episodes Online Free Download
The Shack Full Episode
Watch The Shack Online Free Putlocker
The Shack Episodes Watch Online
Watch The Shack Online HDQ
UltraHD Watch Stream Online The Shack
Watch The Shack Online HD1080px
Watch The Shack Online Mediafire
The Shack For Free Online
The Shack English Episode
The Shack Watch Online
Watch The Shack Online Latinpost
Watch The Shack Online Collider
Watch The Shack Online Free Viooz
Watch The Shack Online Free putlocker
The Shack Episodes Online
Watch The Shack Online Boxofficemojo
The Shack English Episodes Free Watch Online
The Shack English Episodes

자주 바뀌는 흩어져 있는 여러 변수를 다루는 여러 방법

파이썬 마을에 올라온 질문을 읽다가
답변을 하려고보니, 파이썬을 처음 접하는 분들이 빈번하게 궁금해 하시는 문제인 것 같아서,
좀 더 깊게 후벼파서 글로 만들어 봅니다.

질문의 요지는 아래 소스에서 a~f까지 딕셔너리를 임의로 섞고 싶은데 목록이 많을 수도 있고
자주 바뀌기도 하니까 좀 더 좋은 방법이 없을까 하는 것입니다.

이거랑 완전히 똑같은 상황이 자주 일어나지는 않겠지만, 그래도 종종 처음엔 네임스페이스에
변수를 왕창 넣어놓고 이걸 어떻게 해보고 싶은 경우가 있긴 하니까 그래도 파이썬 프로그램들이
자주 사용하는 패턴들로 해결해 보겠습니다.

[1] 정면승부! 네임스페이스 직접 접근해서 거시기하기

첫 번째로는 원래 프로그램 자체는 전혀 안 건드리고 그냥 원하는 작업만 하는 방법입니다.
(변수 개수는 소스코드 길이를 줄이려고 3개로 줄였습니다.)
shufflelocaldicts()를 호출하면 바깥 프레임에 접근해서 바깥 네임스페이스의 딕셔너리를 모두
가져다가 섞은 다음에 다시 넣어줍니다.
이건 고칠 부분이 줄기는 하지만, 모든 하이테크 방법들이 그렇듯
깨지기도 쉽고 사용하는 사람들이 제대로 알지 않으면 엉뚱하게 흘러갈 수도 있는 잠재적 위험성이 있습니다.

[2] 구차하더라도 열심히 고치기

두 번째 방법으로 바깥 네임스페이스를 검색하는 흑마법을 쓰지 않고 일일이 등록해주는 것이
있습니다. 이 방법은 일일이 등록해야한다는 것이 약간 중복의 냄새도 있긴 하지만, 단순하고
잘 작동하고 명시적이라서 잘 보인다는 점에서 상당히 자주 사용되는 패턴입니다. 그렇지만 역시
이 경우에는 그다지 썩 좋지는 않네요.

[3] 좀 머리를 굴려보자

이번에는 노장 프로그래머들이 동적 언어들이 그렇게 활발하기 전에 예전에 자주 사용했던 방법으로,
태그를 보고 코드를 자동생성하는 방법입니다. 요새도 전혀 사용되지 않는 것은 아닌데, 프로그램이
변경될 때마다 스크립트를 한 번씩 실행해 주면 자동으로 소스의 주석을 보고 [] 사이의 빈칸을 채워줍니다.
이 기법은 파이썬 프로그램보다는 C프로그램에서 보통 유용하게 쓰이는데요,
cog
같은 툴들을 쓰면 좀 더 간편하게 할 수 있습니다. 이건 뭐 대체로 잘 작동하기는 하지만, 어쩌다
소스코드 업데이트가 빠지면 재앙이 생기기도 하고, 그다지 멋지지 않다는게 좀 흠입니다. 주석에 의존한다는게
특히 좀 찝찝하죠. -o-

[4] 객체지향 좀 배운 사람인 척 티내보기

앞에서 썼던 방법들은 직관적이고 단순하기는 해도
역시 너무 무식한 방법같은 냄새가 납니다.
이번엔 파이썬에서 객체 꽁수를 배우고 한참 기분낼 때 아주 재미있게 하는 객체 오버라이딩으로
위임(proxy) 객체 만들어주기입니다. 대형 프로젝트에서는 이런 스타일을 종종 사용하기도 하지만,
짧은 스크립트에서 쓰면 좀 격에 안 맞기는 하죠. 직접 딕셔너리를 만들어서 그걸 어쩌고 저쩌고하는
대신에 리스트에 원래 걸 넣어두고 그 첫번째, 두번째~ 등을 간접적으로 작업을 지원해 주도록 하는 방법입니다.
이 방법은 shuffle이 매우 빠른 게 장점이고, 참조가 리스트 하나 안에 모여서 깔끔하게 정리가 돼 있는게
좋습니다. 그런데 문제는 역시 위임이 중간에 거치기 때문에 속도상 불이익이 있고, 위임을 제대로 하려면
위 소스보다 훨씬 길게 짜야 한다는 거겠죠.

[5] 딕셔너리들을 모두 관리하는 오버마인드

이번엔 딕셔너리 자체를 상속받아서, 2번에서처럼 따로 등록하는 대신 딕셔너리 초기화 도중에
자동으로 등록되게 하고, 4번처럼 위임을 구질구질하게 하지 않고도 자체가 그냥 딕셔너리가 되게 했습니다.
요것도 어느 정도 장점이 있긴 하지만, 역시 딕셔너리를 만들 때 마다 일일이 캐스팅을 해 줘야하고,
원래 객체의 참조를 건드리려면 역시 이름 없이는 할 수 없기 때문에, 참조를 놔둔채로 내용을 바꾸기 위해서
내용을 싹 비워서 다른데 옮겼다가 다시 부어주는 좀 심각하게 비싼 작업이 들어가는게 단점입니다.

[6] 억지로 구겨넣지 말고 원래 모양을 바꿔보자

앞에서 썼던 여러 구질구질한 방법들은 결국 네임스페이스에 흩어져 있는 것들을 어떻게든
관리를 하려다보니 생기는 문제입니다. 그냥 네임스페이스에 흩어지지 않게 따로 모아두면
결국 그렇게 고생 안 해도 간단하게 해결됩니다. 굳이 __dict__를 쓰지 않더라도 그냥 리스트에
번호붙여서 넣어서 쓰거나, 다양한 깔끔한 방법이 네임스페이스에 흩어놓는 것만 포기하면
마구 생겨납니다.

결국은!

이 경우에 우선 문제를 해결하려다보면 앞에서 소개해 드렸던 다양한 방법으로 억지로 해결할 수도 있습니다.
다 만들어 놓은 프로그램을 막판에 약간 어떻게든 고쳐서 출시를 해야하는 경우나, 당장 여자친구가
얼른 안 오면 삐진다고 문자를 수십통을 보내고 있는데 과장님은 얼른 고쳐내라고 옆에서 1분마다 보채고 있을 때
뭐 이런 극한 상황에서나 얼른 쓰고 도망갈 때 쓸만한 방법이겠죠;

역시 이 문제의 경우에는 질문 자체의 요구사항을
파이썬에서 쉽게 해결할 수 있는 방법으로 바꾸는 게 중요합니다. 딕셔너리 여러개를 마구 섞는 문제라고 최종 문제를
보면 상상력의 한계가 있지만, 그것보다 원초적으로 다뤄야하는 문제를 보면 딕셔너리를 여러개 마구 섞는게
아니라 간단하게 해결할 수 있는 다른 자료구조가 반드시 있을 것 같은 예감이 강렬하게 드는군요. -O-; (그리고 마지막으로 하나 덧붙이고 싶은 것은, 생각보다 원래 질문의 코드도 보기에는 좀 그렇더라도 복잡한 방법을 안 썼다는 점에서 그런대로 쓸만한 코드입니다. 물론 문제 자체를 바꾸는게 더 좋을 것 같긴 하지만요;)

고등학생을 위한 Summer of Code, GHOP Contest

Summer of Code를 여러 해 동안 성공적으로 운용해오고 있는
구글에서 드디어 얼마 전, 고등학생을 위한 행사를 공개했습니다.
이름은
The Google Highly Open Participation Contest
이고,
대상은 13세 이상이고 대학이전의 학교(한국에서는 초,중,고등학교)에 다니고 있는 사람입니다. 그리고, 북한에 사는 학생들은 참가가 제한됩니다. -O-
그동안 SoC가 대학생이 주 대상이었는데, 실제로 요즘은
고등학생들이 꽤 많이 참가하고 있고, 앞으로 오픈소스 새싹을 키우려면 (상투적이지만;;) 중,고등학생이 프로젝트에 적극적으로
참여할 수 있는 이런 기회가 생겨서 무척 좋습니다.

파이썬 재단의 GHOP 목록
보면 그다지 어렵지 않으면서도 파이썬의 중요한 부분에 재미있게
참여할 수 있는 여러 작업들을 가지고 있어서 중고등학생이
오픈소스 프로젝트의 마수에 걸려들게 하는 좋은 미끼일 것 같군요. 🙂

구체적인 형식은 Summer of Code와는 많이 다른데요, 큰 프로젝트를 멘터와 함께 만들어서 제안하는 방식이 아니라, 일정기간
(2007년 11월 27일부터 2008년 2월 3일까지)동안 이뤄낸 작은
작업들에 대해 보상을 받습니다. 쿠폰바꾸는 것과 비슷한데요, 도장 1개는 24달러짜리 티셔츠를 받을 수 있고, 3개는 100달러를 현금으로 받을 수 있습니다. 1인당 티셔츠 1개 + 500달러 현금으로 최대 상금이 제한되어있습니다.

구체적인 규칙은 GHOP 2007-8 Rules에 나와 있습니다. 우리나라의 열의 넘치는 중고등학생들이 많이 참가해서 다음 행사에 티셔츠 우루루 입고 참가하면 좋겠네요~ 🙂

파이썬 모듈 관광 4회: 기본제공 자료구조 겉핥기!

오늘은 파이썬에서 기본으로 제공하는 자료구조가 어떤
것이 있는지 겉핥기식으로 쭉 고속으로 관광가겠습니다~ 🙂

내장 자료구조

우선 기본 내장자료구조 str, unicode, list, tuple, dict, set 여섯가지에서 아무 기능이나 하나씩 써 봅시다. ^.^;

밑의 타입들은 보통 다른 언어에서는 자료구조라기보다는 그냥 primitive 타입이지만 그래도 그냥 나머지도 끼워줘 봅시다;

bool, frozenset 등등은 그냥 넘어갑시다 -ㅇ-;

이제 기본 자료형을 보았으니 다음으로 표준 확장 모듈 자료구조들을..

표준 라이브러리 자료구조

작은 값을 많이 저장할 때 효율적으로 메모리또는 디스크에 들고 있을
수 있는 array
모듈입니다.

heapq
모듈은 기본 list자료형을 가지고 우선순위 큐(priority queue)
쓸 수 있게 해줍니다. 스케줄링 루틴 같은 곳에서 정말 편리합니다.
속도가 무진장 빠릅니다. 🙂

bisect
모듈은 정렬된 list에서 이진검색법으로 자료의 위치를 찾아줍니다.
dict로 다루기에는 자료의 양이 많거나, 순서가 중요한 경우에 쓸만합니다.
아래 예제는 동전을 몇 번 던지면 앞면이 나오나 같은 경우를 나타내는

기하분포
랜덤함수를 bisect로 만든 방법인데, 그냥 계산해버리는
방법도 있지면 예제를 위해서 –; (실제로 분포함수가 없고 그냥 이산확률만
덩그러니 주어졌을 때 bisect가 꽤 쓸만합니다.)

다음은 어정쩡한 이름을 달고 있는
collections
입니다.

빼놓으면 서운하니까
bsddb
도 한 번..

이 외에도
UserString,
UserDict,
StringIO,
decimal,
Queue
등 유용한 것이 많이 있습니다만, 신비감 조성을 위해서 모두 소개하지 않고
이쯤에서 마칩니다. =3=33

파이썬 모듈 관광 3회: durus

별로 관심있는 분들이 없는 것 같아서 다음 편을 안 쓰고
있었는데, 오늘 어딘가에서 모듈 관광을 읽었다는 분을 만나고
어딘가에는 읽는 분이 있구나! 싶어서 생각난 김에 한 번 또 씁니다;

오늘의 모듈은 durus 입니다. 이미 SCGI같은 여러 프로그램들로 유명한 CNRI MEMS-Exchange 팀에서 만들었습니다. 원래 파이썬 뿐만 아니라 다양한 환경에서 캐시 공유나 분산 배치 작업 같이 한 데이터 공간을 여러 프로세스가 써야하는 경우에는 memcached가 거의 압도적으로 많이 쓰이는 솔루션이겠지요. durus는 이와 비슷한 역할과 표준 shelve의 기능이 모두 필요한 경우에 요긴하게 쓸 수 있습니다.

미리 서버를 띄워두고.

시험삼아 접속해서 UUID 객체를 하나 넣어봅니다.Watch Full Movie Online Streaming Online and Download

이렇게 되면 서버에 커밋되었다는 메시지가 보입니다.

이제 다시 클라이언트를 따로 띄워서 접속해서 확인해 봅니다.

역시 MEMS Exchange에서 만들었던 다른 작품들과 같이 기능도 괜찮으면서 단순해서 속도도 쓸만합니다. 여러 프로세스가 협업하거나 임시로 떴다 죽었다 하는 프로그램들에서 객체를 다뤄야할 때 쓰면 좋겠네요. ?

파이썬 모듈 관광 2회: imputil

지난 번 모듈 관광 1회의 뜨거운 성원에 힘입어 (;;)
2회를 준비했습니다. 으흐흣~
오늘은 역시 초기이니, 많이 안 알려진 것을 일부러 골라 봤는데요.
파이썬 표준라이브러리에 들어있지만 문서화가 안 되어 있고
책에서도 좀처럼 소개해주지 않기 때문에, 쓰는 곳도 찾기
힘든 그런 모듈로 이름은 imputil 입니다.

파이썬에서는 임포트 과정을 직접 조작할 수 있는데, 그 기능을
이용한 것이 대표적인게 바로 zipimport 모듈입니다. 그 덕분에
파이썬에서는 모듈을 zip에 묶어놔도 읽어들일 수 있게 되어
있는데요. 이 과정을 직접 만들려면 파이썬 내부 동작을
건드릴 부분이 많다보니 귀찮은 과정을 겪어야합니다.
이런 과정을 파이썬 언어스럽게 간단하게 해결할 수 있게
대충 껍데기를 만들어 놓은 것이 바로 imputil입니다.

관광에서는 역시 복잡한 걸 해 보면 안 되니까, 간단하게
파이썬 프로그램 확장자를 .py가 아니라 .pl인 것도 읽을
수 있게 고쳐봅시다. (-O-;;) 우선 foo.pl 라는 이름으로 파일을
만듭니다.

그리고 이제 imputil로 쓱싹~

플러그인에 괜히 자기 프로그램 이름을 붙여서 파이썬 아니고
뭔가 특별한 것인 척 할 때 좋겠죠? 🙂 괜히 암호화해 놨다가 풀면서 임포트하게 할 수도 있고.. 여러가지 응용이 가능하겠습니다.
— (플러그인 프레임워크를 위해 제어할 때는 마찬가지로 표준 모듈인 imp를 쓰면 멋있게 만들 수 있습니다.)

파이썬 모듈 관광 1회: ezpyinline

요새 블로그가 있다는 존재를 스스로 까먹을 정도로 안 썼더니만
뭔가 블로그 들어오기가 무서워서, 연재물을 하나 구상했습니다.
예전에 회사에서 한번 옆 사람한테 “모듈 관광”을 한번 시켜줬더니
좋아하길래 블로그 버전으로 모듈의 용도와 특징만 겉핥아보는
모듈관광 연재를 해 보려구요!

첫 관광명소(?)로 뭐가 좋을까 한참 고민을 하다가, 아무래도
첫회이니만큼 너무 잘 알려진 모듈을 하면 보는 분들이
지루하지 않을까 싶은 생각이 들었습니다. 그래서 결국 아무도
모를만한(;;) 모듈을 찾아봤는데 뭐 사실 인터넷에 다 있는데
아무도 모를리야 없을테고 그래도 잘 안 쓰지만 저는 매일매일
쓰는 모듈을 하나 건져 올려 봤습니다. 🙂

처음으로 소개해 드릴 모듈은 “ezpyinline“이라는 모듈인데,
이름에서 풍기듯 “쉽게 파이썬에 C를 인라인”할 수 있는 모듈입니다.
이런 건 전에도 몇 번 나오기는 했지만, 그래도 보통 시대 흐름에
따라서 요구사항이 달라지는데 오래 전에 나온 것은 스타일도 다르고
여러모로 취향이 다르니까 새것이 유지만 잘 되면 쓰기는 편할 것 같네요.

인라인 같은 요구사항이 있을 때는 보통 C로 간단하게 인터페이스를
줄인 다음에 pyrex를 쓰거나, SWIG같은 래퍼를 쓰거나, 아니면 직접 다 모듈을 짜버리는 방법이 정통적인 방법입니다.
간단한 것 할 때는 뭘 해도 상당히 귀찮죠. 파이썬은 역시 기동성이 힘! ez붙은 건 거짓말만 아니라면 다 한번씩은 봐 둘 가치가 있겠죠;

관광에 설명이 너무 많으면 안 되니 경치구경으로 대신합니다. 🙂

진정 보람을 느끼려면 항상 예전과 비교를.. ^.^

대략 10배 넘게 성능 향상이 있었습니다. 와우~! (뻔한 일에도 감동을;)

그래도 아무래도 타입이 조금만 복잡해져도 자동 처리가 난감해지고 하는 면이 있기 때문에,
아주 인터페이스를 단순화해서 임시 실험용으로 쓸 코드에서
C코드로 가속을 하고 싶을 때 유용할듯 합니다.

자 그럼 다음 이 시간에 또 만나요~ (TV 세계관광 프로그램 컨셉으로;;)