SlideShare a Scribd company logo
1 of 22
GetWeatherInfo
Advanced technology of system
국민대학교 컴퓨터공학부
20123381 신혜수
무작정 따라하
기
Outline
본 프로젝트는 node.js와 MySQL을 연동하는 프로젝트이다. 본
프로젝트의 요구사항은 다음과 같다.
1. node.js를 이용하여 기상청으로부터 날씨 정보 얻기
2. 얻어낸 날씨 정보(XML)를 JSON 형식으로 저장하기
3. JSON 형식의 정보를 MySQL 데이타베이스에 손쉽게 저장하
기
Index
1. 기상청 사이트로부터 날씨 정보 얻기
2. 날씨 정보를 데이타베이스에 저장하기
3. 소스 코드(getWeatherInfo.js)
4. 소스 코드(insertWeatherInfo.js)
5. 프로젝트 실행 코드(project.sh)
1. 기상청 사이트로부터 날씨 정보 얻기
기상청에 정보 요청 Query
기상청 사이트에 http 프로토콜을 통해 request를 통해 쿼리하면 된다.
Node의 http 모듈을 얻고, 쿼리의 옵션을 설정한다. 날씨 정보를 요청하고자 하
는 지역에 따라 zone에 대한 값(정수)이 달라질 수 있다. 옵션 설정 후, http 모
듈을 통해 request를 한다. Request에 대한 response가 전달되면 callback 함수
가 호출된다. 따라서 http.request~ 문장 이전에 callback 함수가 정의 되어 있
어야 한다. (소스 전체는 “4. 소스코드(getWeatherInfo.js)”를 참고)
기상청에 정보 요청 Query
파라미터 response에는 http request에 대한 응답 내용이 들어있으며, response의 data부분으로부터 날씨 정
보를 XML 형식으로 추출할 수 있다. JSON.stringify(str)을 통해 날씨 정보에 대한 XML을 json으로 손쉽게
바꿀 수 있다. 하지만 본 프로젝트에서 쓸 필드는 몇 개 없으므로, 직접 json 형식의 string을 만들었다.
2. 날씨 정보를 데이타베이스에 저장하기
데이타베이스 스키마 정의
본 슬라이드는 node.js가 설치되어 있는 컴퓨터에 MySQL 또한 설치 되어 있다
고 가정한다. 또한 설치 후 날씨 정보를 저장하기 위한 스키마 또한 정의 되어
있음을 가정한다. 현재 프로젝트에서 사용한 스키마는 다음과 같다.
연동할 데이타베이스 정보 설정
MySQL의 모듈을 얻어내어 연결을 한다. 연결할 때 정보를 설정할 수 있는데
user는 데이타베이스에 접근할 수 있는 사용자의 계정이고, password는 해당
user의 비밀번호이다. Database는 접근할 데이타베이스 이름을 의미한다.
정보를 설정한 후 연결을 시도한다. 연결 에러(ex: 데이타베이스 서버가 켜지지
않은 상황)가 발생하면 connect 함수의 파라미터 함수가 호출된다.
데이타베이스에 저장할 값(JSON) 획득
파일 시스템 모듈을 획득하고, JSON 형식으로 작성한 정보를 써둔 파일로부터
정보를 읽어 JSON 객체를 만든다. JSON 객체는 JSON.parse(string)을 호출함
으로써 간단하게 만들 수 있다.
JSON객체를 데이타베이스에 저장하기
연결된 데이타베이스에 JSON 객체를 저장하기 위해 INSERT 쿼리를 한다. 쿼리
에 ‘?’문자를 포함하여 쿼리에 대한 파라미터를 설정할 수 있으며, 파라미터는
바로 다음에 ‘,’로 구분하여 써준다. JSON 객체를 그대로 써주면 된다.
에러가 없는 경우 SELECT 쿼리를 통해 현재 값이 잘 저장되어 있나 확인한다.
3. 소스 코드(getWeatherInfo.js)
getWeatherInfo.js(1)
getWeatherInfo.js(2)
getWeatherInfo.js(3)
getWeatherInfo.js(4)
4. 소스 코드(insertWeatherInfo.js)
insertWeatherInfo.js(1)
insertWeatherInfo.js(2)
4. 프로그램 실행 코드(project.sh)
project.sh
아래 내용을 shell에 직접 입력해도 되지만, 한 번에 실행하기 좋게 shell script
파일을 만들어서 실행하는 방법도 있다.
$vi project.sh # 아래 내용을 파일에 작성
$chmod 755 project.sh
$./project.sh # 이 라인을 실행하면 순서대로 파일 내용의 명령어를 실행함
감사합니다

More Related Content

Viewers also liked

Wear weather
Wear weatherWear weather
Wear weatherjjuhyeoni
 
120127 마구 1992 오클랜드 세트덱 소개
120127 마구 1992 오클랜드 세트덱 소개120127 마구 1992 오클랜드 세트덱 소개
120127 마구 1992 오클랜드 세트덱 소개애니파크
 
heidigarrettpeltiergcc2014
heidigarrettpeltiergcc2014heidigarrettpeltiergcc2014
heidigarrettpeltiergcc2014GWT
 
Personal learning networks and personal learning environments
Personal learning networks and personal learning environmentsPersonal learning networks and personal learning environments
Personal learning networks and personal learning environmentsTumelo Matlou
 
Wavcore introduction
Wavcore introductionWavcore introduction
Wavcore introductionWAVCORE
 
[20131002 gct606] 날씨,감정,그리고 트위터
[20131002 gct606] 날씨,감정,그리고 트위터[20131002 gct606] 날씨,감정,그리고 트위터
[20131002 gct606] 날씨,감정,그리고 트위터Kunwoo Park
 
150520_테헤란로 커피클럽_호우호우
150520_테헤란로 커피클럽_호우호우150520_테헤란로 커피클럽_호우호우
150520_테헤란로 커피클럽_호우호우StartupAlliance
 
STP Marketing Strategy_Ver#1_
STP Marketing Strategy_Ver#1_STP Marketing Strategy_Ver#1_
STP Marketing Strategy_Ver#1_의철 김
 
마케팅 무작정 따라하기 80 [호환 모드]
마케팅 무작정 따라하기 80 [호환 모드]마케팅 무작정 따라하기 80 [호환 모드]
마케팅 무작정 따라하기 80 [호환 모드]Gunyoung Pak
 
웨더뮤직(최종)
웨더뮤직(최종)웨더뮤직(최종)
웨더뮤직(최종)bomi song
 
Weather Music
Weather MusicWeather Music
Weather Musicbomi song
 
하루만에 배우는 마케팅전략 the one day Marketing Plan
하루만에 배우는 마케팅전략 the one day Marketing Plan하루만에 배우는 마케팅전략 the one day Marketing Plan
하루만에 배우는 마케팅전략 the one day Marketing Plankim kwang il
 
우당탕탕아이쿠 파트너 모십니다 (라이선싱 제안서)
우당탕탕아이쿠 파트너 모십니다 (라이선싱 제안서)우당탕탕아이쿠 파트너 모십니다 (라이선싱 제안서)
우당탕탕아이쿠 파트너 모십니다 (라이선싱 제안서)SuJeong Park
 

Viewers also liked (13)

Wear weather
Wear weatherWear weather
Wear weather
 
120127 마구 1992 오클랜드 세트덱 소개
120127 마구 1992 오클랜드 세트덱 소개120127 마구 1992 오클랜드 세트덱 소개
120127 마구 1992 오클랜드 세트덱 소개
 
heidigarrettpeltiergcc2014
heidigarrettpeltiergcc2014heidigarrettpeltiergcc2014
heidigarrettpeltiergcc2014
 
Personal learning networks and personal learning environments
Personal learning networks and personal learning environmentsPersonal learning networks and personal learning environments
Personal learning networks and personal learning environments
 
Wavcore introduction
Wavcore introductionWavcore introduction
Wavcore introduction
 
[20131002 gct606] 날씨,감정,그리고 트위터
[20131002 gct606] 날씨,감정,그리고 트위터[20131002 gct606] 날씨,감정,그리고 트위터
[20131002 gct606] 날씨,감정,그리고 트위터
 
150520_테헤란로 커피클럽_호우호우
150520_테헤란로 커피클럽_호우호우150520_테헤란로 커피클럽_호우호우
150520_테헤란로 커피클럽_호우호우
 
STP Marketing Strategy_Ver#1_
STP Marketing Strategy_Ver#1_STP Marketing Strategy_Ver#1_
STP Marketing Strategy_Ver#1_
 
마케팅 무작정 따라하기 80 [호환 모드]
마케팅 무작정 따라하기 80 [호환 모드]마케팅 무작정 따라하기 80 [호환 모드]
마케팅 무작정 따라하기 80 [호환 모드]
 
웨더뮤직(최종)
웨더뮤직(최종)웨더뮤직(최종)
웨더뮤직(최종)
 
Weather Music
Weather MusicWeather Music
Weather Music
 
하루만에 배우는 마케팅전략 the one day Marketing Plan
하루만에 배우는 마케팅전략 the one day Marketing Plan하루만에 배우는 마케팅전략 the one day Marketing Plan
하루만에 배우는 마케팅전략 the one day Marketing Plan
 
우당탕탕아이쿠 파트너 모십니다 (라이선싱 제안서)
우당탕탕아이쿠 파트너 모십니다 (라이선싱 제안서)우당탕탕아이쿠 파트너 모십니다 (라이선싱 제안서)
우당탕탕아이쿠 파트너 모십니다 (라이선싱 제안서)
 

Similar to Get weatherinfo

스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015uEngine Solutions
 
Android Network
Android NetworkAndroid Network
Android Networkcooddy
 
Web Socket
Web SocketWeb Socket
Web Socketymtech
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 
손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)Devgear
 
overview of spring4
overview of spring4overview of spring4
overview of spring4Arawn Park
 
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경YoungSu Son
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링OpenStack Korea Community
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드봉조 김
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약세빈 정
 
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCore.Today
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIHyunghun Cho
 
Web socket
Web socketWeb socket
Web socketymtech
 
Node.js
Node.jsNode.js
Node.jsymtech
 

Similar to Get weatherinfo (20)

Spring portfolio2
Spring portfolio2Spring portfolio2
Spring portfolio2
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015
 
테스트
테스트테스트
테스트
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
Android Network
Android NetworkAndroid Network
Android Network
 
Web Socket
Web SocketWeb Socket
Web Socket
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)
 
overview of spring4
overview of spring4overview of spring4
overview of spring4
 
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
 
Internship backend
Internship backendInternship backend
Internship backend
 
사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
 
Web socket
Web socketWeb socket
Web socket
 
Node.js
Node.jsNode.js
Node.js
 

Get weatherinfo

  • 1. GetWeatherInfo Advanced technology of system 국민대학교 컴퓨터공학부 20123381 신혜수 무작정 따라하 기
  • 2. Outline 본 프로젝트는 node.js와 MySQL을 연동하는 프로젝트이다. 본 프로젝트의 요구사항은 다음과 같다. 1. node.js를 이용하여 기상청으로부터 날씨 정보 얻기 2. 얻어낸 날씨 정보(XML)를 JSON 형식으로 저장하기 3. JSON 형식의 정보를 MySQL 데이타베이스에 손쉽게 저장하 기
  • 3. Index 1. 기상청 사이트로부터 날씨 정보 얻기 2. 날씨 정보를 데이타베이스에 저장하기 3. 소스 코드(getWeatherInfo.js) 4. 소스 코드(insertWeatherInfo.js) 5. 프로젝트 실행 코드(project.sh)
  • 4. 1. 기상청 사이트로부터 날씨 정보 얻기
  • 5. 기상청에 정보 요청 Query 기상청 사이트에 http 프로토콜을 통해 request를 통해 쿼리하면 된다. Node의 http 모듈을 얻고, 쿼리의 옵션을 설정한다. 날씨 정보를 요청하고자 하 는 지역에 따라 zone에 대한 값(정수)이 달라질 수 있다. 옵션 설정 후, http 모 듈을 통해 request를 한다. Request에 대한 response가 전달되면 callback 함수 가 호출된다. 따라서 http.request~ 문장 이전에 callback 함수가 정의 되어 있 어야 한다. (소스 전체는 “4. 소스코드(getWeatherInfo.js)”를 참고)
  • 6. 기상청에 정보 요청 Query 파라미터 response에는 http request에 대한 응답 내용이 들어있으며, response의 data부분으로부터 날씨 정 보를 XML 형식으로 추출할 수 있다. JSON.stringify(str)을 통해 날씨 정보에 대한 XML을 json으로 손쉽게 바꿀 수 있다. 하지만 본 프로젝트에서 쓸 필드는 몇 개 없으므로, 직접 json 형식의 string을 만들었다.
  • 7. 2. 날씨 정보를 데이타베이스에 저장하기
  • 8. 데이타베이스 스키마 정의 본 슬라이드는 node.js가 설치되어 있는 컴퓨터에 MySQL 또한 설치 되어 있다 고 가정한다. 또한 설치 후 날씨 정보를 저장하기 위한 스키마 또한 정의 되어 있음을 가정한다. 현재 프로젝트에서 사용한 스키마는 다음과 같다.
  • 9. 연동할 데이타베이스 정보 설정 MySQL의 모듈을 얻어내어 연결을 한다. 연결할 때 정보를 설정할 수 있는데 user는 데이타베이스에 접근할 수 있는 사용자의 계정이고, password는 해당 user의 비밀번호이다. Database는 접근할 데이타베이스 이름을 의미한다. 정보를 설정한 후 연결을 시도한다. 연결 에러(ex: 데이타베이스 서버가 켜지지 않은 상황)가 발생하면 connect 함수의 파라미터 함수가 호출된다.
  • 10. 데이타베이스에 저장할 값(JSON) 획득 파일 시스템 모듈을 획득하고, JSON 형식으로 작성한 정보를 써둔 파일로부터 정보를 읽어 JSON 객체를 만든다. JSON 객체는 JSON.parse(string)을 호출함 으로써 간단하게 만들 수 있다.
  • 11. JSON객체를 데이타베이스에 저장하기 연결된 데이타베이스에 JSON 객체를 저장하기 위해 INSERT 쿼리를 한다. 쿼리 에 ‘?’문자를 포함하여 쿼리에 대한 파라미터를 설정할 수 있으며, 파라미터는 바로 다음에 ‘,’로 구분하여 써준다. JSON 객체를 그대로 써주면 된다. 에러가 없는 경우 SELECT 쿼리를 통해 현재 값이 잘 저장되어 있나 확인한다.
  • 20. 4. 프로그램 실행 코드(project.sh)
  • 21. project.sh 아래 내용을 shell에 직접 입력해도 되지만, 한 번에 실행하기 좋게 shell script 파일을 만들어서 실행하는 방법도 있다. $vi project.sh # 아래 내용을 파일에 작성 $chmod 755 project.sh $./project.sh # 이 라인을 실행하면 순서대로 파일 내용의 명령어를 실행함