2010년 7월 5일 월요일

간단한 나눔로또 Web API

근래에 로또와 관련된 글을 좀 자주 쓰는 듯 하군요. ;-)

앞서 Google App Engine 위에 만들었던 로또 정보 제공 사이트의 내용을 조금 수정해서 원하는 로또 정보를 제공 받을 수 있는 Web 용 API를 만들어보았습니다.

사용 방법은 간단합니다.

기본 URL

나눔로또 Web API 기본 URL은 아래와 같습니다.

http://lotto.kaisyu.com/api

파라미터

method = get | check

실행할 동작을 결정합니다. 아래 두 가지 중 하나를 선택할 수 있으며, 생략은 불가능합니다.

  • get: 로또 정보 반환
  • check: 로또 번호 당첨 여부 확인

gno = 0 ~ 최근 로또 회차 번호

로또 회차 번호입니다. 생략하거나 0 이하의 값이면 DB에 저장된 회차 번호 중 가장 최근의 번호가 사용됩니다.

type = json | python | emacs

반환되는 값의 형식을 지정합니다. 생략하면 json 형식이 기본으로 사용됩니다.

  • json: JSON 형식
  • python: Python dict 형식
  • emacs: Emacs lisp를 포함한 일반적인 Lisp object 형식

callback = (javascript_function_name)

method 파라미터의 값이 json일 때만 사용되며, 지정된 JavaScript 함수에 결과값을 인자로 주어 호출하는 코드를 반환합니다.

numlist = [[n,...],[n,...],...]

당첨 여부를 확인할 번호 목록입니다. method가 check로 지정되었을 때만 사용되며, 리스트의 리스트 형식입니다.

반환값

get

일반적으로 볼 수 있는 사전 형식을 사용합니다. (각 아이템의 순서는 일정하지 않음)

  • gno: 로또 회차 번호
  • gdate: 추첨일
  • nums: 당첨 번호 목록
  • bnum: 보너스 당첨 번호

예를 들어보면,

202회차, 2006년 10월 14일 추첨, 보너스 번호는 17, JSON 형식

{"bnum": 17, "gno": 202, "gdate": "2006-10-14", "nums": [12, 14, 27, 33, 39, 44]}

301회차, 2008년 9월 6일 추첨, 보너스 번호는 26, Python 형식

{'bnum': 26, 'gno': 301, 'gdate': '2008-09-06', 'nums': [7, 11, 13, 33, 37, 43]}

396회차, 2010년 7월 3일 추첨, 보너스 번호는 30, Emacs Lisp object 형식

((bnum . 30) (gno . 396) (gdate . "2010-07-03") (nums . (18 20 31 34 40 45)))

check

[당첨 등수, 일치 번호 목록] 형식의 리스트를 반환합니다. (리스트의 리스트) 이때, 당첨 등수값이 0이면 꽝!!을 의미합니다.

예를 들어보면,

1 게임을 확인했고, 5 등 당첨되었으며, 일치한 번호는 27, 33, 44, JSON 형식

[[5, [27, 33, 44]]]

2 게임을 확인했고, 하나는 꽝, 나머지 하나는 5 등 당첨, Python 자료 구조 형식

[(0, [12]), (4, [14, 27, 33, 44])]

3 게임을 확인했고, 하나는 꽝, 하나는 5 등 당첨, 나머지 하나는 대망의 1 등 당첨, Emacs Lisp object 형식

((0 (12)) (4 (14 27 33 44)) (1 (12 14 27 33 39 44)))

예제

JavaScript Callback 함수를 활용한 예제

JavaScript Callback 함수를 활용한 예제는 별도의 페이지에서 제공하므로 아래 링크를 따라가세요.

기타 URL 예제들

get

check

2010년 6월 7일 월요일

OpenSSL 1.0.0a & 0.9.8o Win32 Binary

2010년 3월 29일자로 릴리즈된 OpenSSL 1.0.0 버전에서 중요한 버그와 보안 이슈가 수정된 1.0.0a 버전이 릴리즈 되었습니다. 그리고, 동일한 이유로 0.9.8o 버전도 함께 릴리즈 되었습니다.

여기서 제공하는 binary는 MS Visual C++ 2008 Express Edition으로 빌드되었기 때문에 MS VC++ Runtime 2008 SP1이 필요합니다. 현재 시스템에 아직 설치되어 있지 않다면 아래 링크에서 다운로드한 후 설치하시면 됩니다.
LINK: Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)

더 최신 버전의 바이너리가 릴리즈 되었습니다.
아래 링크를 확인하세요.
LINK: Kaisyu's Notes: OpenSSL

그리고, OpenSSL 1.0.0a 버전 Win32 binary는 아래에서 받으세요.

만약 위 아이콘이 보이지 않으면 아래 링크를 따라가세요.
LINK: OpenSSL 1.0.0a Win32 Binary (MSVC90)
Mirror: openssl-1.0.0a-win32-msvc90.zip


OpenSSL 0.9.8o 버전 Win32 binary는 아래에서 받으세요.

만약 위 아이콘이 보이지 않으면 아래 링크를 따라가세요.
LINK: OpenSSL 0.9.8o Win32 Binary (MSVC90)
Mirror: openssl_0.9.8o-win32-msvc90.zip



Binary build에 사용된 환경은 다음과 같습니다.
Microsoft Visual C++ Express Edition 2008 SP1 - http://www.microsoft.com/express/Downloads/#2008-Visual-CPP
NASM - http://www.nasm.us
ActivePerl - http://www.activestate.com/activeperl/