2011. 7. 1. 23:22

[ Problem ] - http://huge:file@www.pythonchallenge.com/pc/return/disproportional.html

♧ 타이틀은 'call him', 'phone that evil' 이란 힌트와 함께 전화기 그림이 보인다.

즉, 악마에게 전화를 걸어야 하는데 그 악마가 누구인지 어떻게 호출해야 될지 모른다.

   

▷ 그림의 숫자'5'에는 링크가 걸려 있는데 클릭해 들어가 보면 XML형식의 코드가 보인다.

   

▷ 이는 XML-RPC Fault 형식과 유사한데 XML-RPC란,

인코딩 형식은 XML을 채택하고, HTTP를 통한 간단하고 이식성 높은 원격 프로시저 호출 방법을 제공하는

RPC 프로토콜의 일종이다.

   

   

▷ 파이썬 2.2부터 XML-RPC가 표준 모듈(xmlrpclib)로 포함되어 있으므로 따로 설치할 필요는 없다.

▷ 주요 함수는 다음과 같다.

♧ 주요 함수

ServerProxy.system.listMethods

- 서버가 어떠한 프로시저를 제공하는지 문자열 이름들을 리스트 형태로 출력.
ServerProxy.system.methodSignature(name)

- 프로시저가 어떻게 호출되는지 서명(인수 전달 목록)의 리스트를 돌려준다.
ServerProxy.system.methodHelp(name)

- 프로시저를 설명하는 문서 문자열을 가져다 준다.

   

▷ 위의 주요 함수를 통하여 해당 서버(phonebook)의 프로시저에 대한 정보를 출력해보자.

#encoding=utf8
from pprint import pprint
import xmlrpclib

# ① 해당 XML-RPC를 지원하는 phonebook 서버에 접속.
url = 'http://www.pythonchallenge.com/pc/phonebook.php'
phonebook = xmlrpclib.Server(url)

# ② 서버가 어떠한 API 제공하는지 리스트 형태로 출력.
pprint (phonebook.system.listMethods())

# ③ 'phone'에 대한 도움말 정보 얻기.
print phonebook.system.methodHelp("phone")

# ④ 'phone'에 대한 인수 목록 알아내기.
print phonebook.system.methodSignature('phone')

   

[ 출력 결과 ]

['phone',

'system.listMethods',

'system.methodHelp',

'system.methodSignature',

'system.multicall',

'system.getCapabilities']

Returns the phone of a person

[['string', 'string']]

▷ 위의 마지막 methodSignature('phone')의 결과로 얻어진 [['string', 'string']] 에서

처음 'string'은 프로시저의 리턴형이고 나머지는 입력 인수의 형이다.

▷ 즉, phone은 특정 이름을 string형으로 받아 string형으로 리턴 해주는 프로시저다.

   

▷ 악마는 누구인가!

이제 악마에게 전화를 거는 방법을 알았으니 그 악마가 누구 인지만 알면 된다.

Level12에서의 기억을 상기 시켜보면 evil4.jpg 에는 빈 화면이 보이는데

이것을 편집기로 보면 'Bert is evil! go back!' 라는 메시지가 출력 되었다.

즉, Bert가 evil이다.

   

▷ Bert에게 전화를 걸어 보자. (※ 위 소스코드 마지막 줄에 추가)

# ⑤ Bert에게 전화 걸기.
print phonebook.phone('Bert')

   

[ 출력 결과 ]

555-ITALY

  

   

[ Solution ] - http://huge:file@www.pythonchallenge.com/pcc/return/italy.html

(※ 문제에 대한 다양한 해결법은 링크 참조.)

Posted by devanix
2011. 6. 29. 04:46

[ Problem ] - http://huge:file@www.pythonchallenge.com/pc/return/evil.html

♧ 카드 패를 5장씩 돌리고 있습니다. (타이틀은 dealing evil)

♧ 소스를 보면 evil1.jpg 링크가 걸려 있습니다. (이번 문제에만 숫자가 붙어 있습니다)

♧ 해당 그림의 패를 돌리는 모습을 연상하여 숫자를 증가 시켜 보면('evil2.jpg', 'evil3.jpg')

다음과 같은 그림 힌트가 주어 집니다.

♧ evil2.jpg를 보면 'not jpg-_.gfx' 메시지가 보입니다.
evil2.jpg를 -> evil2.gfx로 변경해 보면 evil2.gfx 파일을 받을 수 있습니다.

(
※ 참고로 evil4.jpg에는 빈 화면이 보이는데 이것을 편집기로 보면 'Bert is evil! go back!'
라는 메시지가 보인다. 이것은 다음 문제에 관련 되어 있다.)

 

♧ 해당 타이틀과 그림의 힌트를 다시 상기시키며

다음과 같이 'evil2.gfx' 파일을 5개의 파일로 각각 한 Byte씩 나눠 저장 합니다.

# encoding=utf8
from PIL import Image
from cStringIO import StringIO

# ① 해당 gfx 파일을 오픈.
im_file = open("evil2.gfx", 'rb').read()

# ② 해당 gfx파일을 각각 한 Byte씩 5개의 파일로 나눠서 저장.
for i in range(5):
    priece = im_file[i::5]
    im = Image.open(StringIO(priece))
    f = open(("%d.%s" % (i, im.format)), 'wb')
    f.write(priece)
    f.close()

   

♧ 'evil2.gfx'를 5분할 한 결과 입니다.

   

♧ 해당 그림의 단어를 연결해 보면 'disproportionality'에서

'ity'빼면 'disproportional'이 됩니다.

   

[ Solution ] - http://huge:file@www.pythonchallenge.com/pcc/return/disproportional.html 
( 문제에 대한 다양한 해결법은 링크 참조.)

Posted by devanix
2010. 7. 30. 04:48
[파이썬 설치]

 Windows
  • 공식 홈 (http://www.python.org) 다운로드.
  • 설치 디렉토리를 묻는 설치 초기화면.(기본값으로 설치).

  • 설치 구성 요소를 선택.(별 무리 없으면 모두 선택).

  • 설치 완료.

  • 파이썬 설치 요소들에 대한 간략한 설명
    • IDLE(Python GUI) - 파이썬 표준 GUI 대화식 인터프리터.
    • Module Docks – 원하는 모듈 검색 도구(파이썬 2.1 이상 지원)
    • Python (Command Line) – 도스창에서 수행되는 파이썬 대화식 인터프리터.
    • Python Manuals – HTML 파일 형식의 파이썬 온라인 문서 모음.


 Mac OS X

맥 OS X나 리눅스 계열에서는 대부분 Default로 설치 되어 있다.

다음과 같이 버전 확인을 하여 설치 유무를 확인 해 보자.

Devanix ~ $  python --version

Python 2.7.10


Posted by devanix