13.2.1 세계 은행 방문 데이터
5671 단어 실 용 함수 프로 그래 밍F#함수 프로 그래 밍
우리 가 본 장 에서 사용 하 는 데이터 소스 는 세계 은행 이 제공 하 는 서비스 로 발전 도상 국 에 자금 과 지식 을 제공 하 는 국제 기구 이다.그 업무 의 일부분 으로서 어떤 유형의 지원 이 가장 효과 적 인지 식별 하고 수요 가 어디 에 있 는 지 확인 하 며 발전 도상 국 의 경제,삶 의 질,환경 에 영향 을 미 쳤 는 지 평가 해 야 한다.세계 은행 은 세계 발전 지표(World Development Indicators)라 는 데 이 터 를 가지 고 있 으 며,여러 나라 의 정 보 를 포함 하고 있 으 며,데이터 온라인 으로 사용 할 수 있다.이 장 에서 우 리 는 환경 정보,더 구체 적 인 삼림 커버 지역 정 보 를 사용 할 것 이다.세계 은행 이 제공 하 는 데 이 터 는 무료 로 사용 할 수 있 지만 먼저 홈 페이지 에 등록 해 야 한다.
제시 하 다.
등록 하려 면 먼저 가세 요.http://developer.worldbank.org양식 을 작성 하고 확인 한 이메일 을 받 으 면 사이트 로 돌아 가 API 키 를 받 아 세계 은행 서비스 에 요청 할 수 있 습 니 다.사 이 트 는 서비스 와 관련 된 문서 와 간단명료 한 튜 토리 얼 도 제공 했다.너 는 거기에서 볼 수 있 지만,우 리 는 이 장 에서 도 사용 한 내용 을 설명 할 것 이다.웹 페이지 에 중요 한 기능 이 있 습 니 다.조회 생 성기 입 니 다.서로 실행 하고 조 회 를 설정 할 수 있 습 니 다.표 시 된 URL 은 프로 그래 밍 방식 으로 데 이 터 를 요청 할 수 있 습 니 다.
세계 은행 은 간단 한 HTTP 기반 서비스 로 데 이 터 를 공개 하기 때문에 이전에 만 든 downloadUrl 함 수 를 사용 할 수 있 습 니 다.문 서 를 보 거나 조회 생 성 기 를 한 동안 체험 한 적 이 있다 면 URL 을 요청 하 는 구 조 를 빨리 배 울 수 있 을 것 입 니 다.주 소 는 항상 서버 의 같은 페이지 를 가리 키 며 모든 추가 속성 은 URL 에서 키-값 으로 제 공 됩 니 다.목록 13.5 에서 우 리 는 먼저 요청 URL 을 구성 하 는 함 수 를 만 들 었 습 니 다.키-값 은 F\#목록 에 포함 되 어 있 습 니 다.그러면 우 리 는 데 이 터 를 더욱 편리 하 게 접근 할 수 있 습 니 다.
목록 13.5 요청 URL 생 성(F\#)
open System.Web
let worldBankKey = "xxxxxxxxxx" let worldBankUrl(functions, props) =
seq { yield "http://open.worldbank.org"
for item in functions do | [1]
yield "/" + HttpUtility.UrlEncode(item:string) |
yield "?per_page=100"
yield "&api_key=" + worldBankKey
for key, value in props do
yield "&" + key + "=" + HttpUtility.UrlEncode(value:string) } [2]
|> String.concat "&"
함수 worldBankUrl 은 문자열 집합 을 만 든 다음 URL 로 연결 하 는 시퀀스 표현 식 을 포함 합 니 다.시퀀스 식 에서 우 리 는 먼저 URL 의 기본 부분 을 되 돌려 줍 니 다.다음은 서버 가 제공 하 는 데 필요 한 함 수 를 가리 키 는 경 로 를 추가 합 니 다.예 를 들 어 함 수 는'/keywords/Wood'일 수 있 습 니 다.따라서 함수 명 각 부분의 목록 을 설명 하고 이 모든 것 을 구분자'/'로 연결 할 수 있 습 니 다[1].함 수 를 지정 한 후에 API 키 와 페이지 길 이 를 추가 합 니 다.이 부분 도 이 장 에서 우리 가 필요 로 하 는 모든 요청 에 공 유 됩 니 다.마지막 으로 사용자 가 지정 한 추가 속성 을 처리 하고 매개 변수 값 props 가 지정 한 모든 키-값 쌍 을 교체 하여 문자열'&키=값'[2]을 되 돌려 줍 니 다.URL 형식 이 정확 한 지 확인 하려 면 System.Web 네 임 스페이스 의 Http Utility 클래스 를 사 용 했 습 니 다.파일 을 컴 파일 하려 면 프로젝트 의 일부분 으로 System.Web 프로그램 집합 에 대한 인용 을 추가 해 야 하기 때문에 기본 인용 이 아 닙 니 다.이 도 구 는 URL 에 포함 할 수 있 는 문자열 로 임의의 문자열 을 인 코딩 할 수 있 습 니 다.UrlEncode 방법 은 서로 다른 리 셋 이 있 습 니 다.형식 주석(type annotation)을 사용 하여 지정 한 매개 변수 값 value 의 형식 은 문자열 입 니 다.이 장 에서 우 리 는 전통 적 인 프로그램 이 아 닌 F\#스 크 립 트 파일 을 만 들 것 입 니 다.따라서 다음 단 계 는 F\#대화 명령 을 몇 개 쓰 는 것 입 니 다.바로 실행 하고 쓴 함수 가 올 바 르 게 실행 되 는 지 확인 할 수 있 습 니 다.이러한'테스트 요청(test request)'은 은행 이 사용 하 는 데이터 형식 에 도 매우 유용 하 다.왜냐하면 우 리 는 뒤에 데 이 터 를 분석 해 야 한 다 는 것 을 알 고 있 기 때문이다.세계 은행 이 제공 한 통계 데 이 터 는 개별 국가 에 도 사용 할 수 있 고 지역 이나 수입 에 따라 조 를 나 눌 수 있 으 며 이런 종합 통 계 는 전체적인 추 세 를 보 는 데 유리 하 다.우리 가 해 야 할 첫 번 째 일 은 사용 가능 한 모든 그룹 정 보 를 얻 는 것 이다.사이트 에서 조회 생 성 기 를 사용 해 볼 수 있다.우선 Country Calls 옵션 에서 Country(국가)를 선택 하고 API 키 를 입력 합 니 다.국가 별로 그룹 을 나 누 는 집계 목록 을 얻 으 려 면 Region(지역)목록 에서 Aggregates(집계)를 선택 한 다음 요청 을 실행 하 십시오.목록 13.6 은 F\#Interactive 를 사용 하여 같은 요청 을 실행 하 는 것 을 보 여 줍 니 다.
리스트 13.6 테스트 세계 은행 데이터 서비스(F\#Interactive)
> let url =
worldBankUrl(["countries"], | [1]
["region", "NA" ];; | URL
val url : string =
http://open.worldbank.org/countries?per_page=100&
api_key=hq8byg8k7t2fxc6hp7jmbx26®ion=NA"
> Async.RunSynchronously(downloadUrl(url));; [2] "1.0\" encoding=\"utf-8\" (...)"
우 리 는 먼저 방금 실 현 된 함수 로 URL[1]을 만 들 고 countries 를 우리 가 호출 하고 자 하 는 함수 이름 으로 전달 합 니 다.또 다른 매개 변수 region 은 우리 가 열거 하고 자 하 는 국가 유형 을 지정 하고 NA 값 은 우리 가 모 은 국가 정보 에 관심 이 있다 는 것 을 나타 낸다.F\#Interactive 를 사용 하기 때문에 구 성 된 URL 을 바로 볼 수 있 습 니 다.지정 한 매개 변수,세계 은행 의 키,그리고 각 페이지 를 지정 하기 위해 100 개의 기록 을 되 돌려 주 는 표지 가 포함 되 어 있 습 니 다.그 다음 에 우리 가 더 많은 지 표를 얻 을 필요 가 있 을 때 페이지 별 출력 을 토론 할 것 이다.URL 이 있 으 면 우 리 는 그것 을 브 라 우 저 에 복사 하여 세계 은행 이 돌아 온 데 이 터 를 볼 수 있다.페이지 를 프로 그래 밍 방식 으로 다운로드 하면 downloadUrl 함수(목록 13.1 에서)를 사용 할 수 있 습 니 다.모든 네트워크 작업 을 사용 하면 다운로드 가 실패 할 수 있 습 니 다.요청 을 수 동 으로 실행 하 는 것 은 중요 하지 않 습 니 다.그러나 대량 작업 을 수행 하고 URL 에서 데 이 터 를 다운로드 할 때 코드 가 치 명 적 이지 않 은 고장 에서 회복 하 는 능력 이 필요 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
F#에서 블랙잭을 구현했습니다.아래의 2기사에서 영감을 받아 자신도 심플한 블랙잭을 구현해 보았습니다. 소스 코드는 이쪽. 120행 정도입니다. 이미 당긴 카드의 관리 방법에 대해입니다. 가능한 한 Array등의 mutable인 컬렉션은 사용하지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.