앱 클라우드 서비스 개발
Post on 20-Dec-2014
1.674 Views
Preview:
DESCRIPTION
TRANSCRIPT
• ����������� ������������������ 클라우드에서����������� ������������������ 앱����������� ������������������ 서비스����������� ������������������ 개발����������� ������������������
• ����������� ������������������ VERSION����������� ������������������ 1.3����������� ������������������ • ����������� ������������������ Release����������� ������������������ Date����������� ������������������ :����������� ������������������ 2012.8����������� ������������������
����������� ������������������ ����������� ������������������ Android����������� ������������������ OS����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ Programming����������� ������������������
<고����������� ������������������ 강����������� ������������������ 태>����������� ������������������ /����������� ������������������ james@thinkbee.kr
010-8269-3535����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ @gtko����������� ������������������
http://www.slideshare.net/gtko
http://goo.gl/9V3H6
http://www.facebook.com/gangtai.goh
• 2
목차����������� ������������������
0.����������� ������������������ Me����������� ������������������
1. ����������� ������������������ Cloud����������� ������������������
2. ����������� ������������������ node.js����������� ������������������
3. ����������� ������������������ baas.io����������� ������������������
• 3
0.Me����������� ������������������
01.����������� ������������������ 강사����������� ������������������ 약력����������� ������������������
02.����������� ������������������ 강의����������� ������������������
• 4
현����������� ������������������ Thinkbee����������� ������������������ 대표����������� ������������������ ����������� ������������������ -����������� ������������������ 스마트디바이스����������� ������������������ 분야����������� ������������������ 저술,����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 강의����������� ������������������ 및����������� ������������������ 개발����������� ������������������
����������� ������������������ -����������� ������������������ 안드로이드����������� ������������������ /����������� ������������������ 스마트TV����������� ������������������ /����������� ������������������ HTML5����������� ������������������ /����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ Node.js����������� ������������������ 전문����������� ������������������ 강사����������� ������������������
전����������� ������������������ 미주제강����������� ������������������ 전산팀장����������� ������������������
����������� ������������������ -����������� ������������������ ERP����������� ������������������ /����������� ������������������ Groupware����������� ������������������
전����������� ������������������ LG전자����������� ������������������ 연구소����������� ������������������ ����������� ������������������ -����������� ������������������ Web����������� ������������������ application����������� ������������������ /����������� ������������������ Network����������� ������������������ engineer����������� ������������������ /����������� ������������������ Unix����������� ������������������ system����������� ������������������ Admin.����������� ������������������
주요����������� ������������������ 개발����������� ������������������ 경력����������� ������������������ ����������� ������������������ -����������� ������������������ Android:����������� ������������������ 신한카드����������� ������������������ /����������� ������������������ KT향����������� ������������������ 4종����������� ������������������ 앱����������� ������������������ /����������� ������������������ 메트로놈����������� ������������������ /����������� ������������������ 트윗메모����������� ������������������
����������� ������������������ -����������� ������������������ 웹����������� ������������������ 메일����������� ������������������ 서버,����������� ������������������ 그룹웨어,����������� ������������������ 도서/자산/바코드����������� ������������������ 관리,����������� ������������������ 채팅,����������� ������������������ 8좌화상회의용����������� ������������������ 서버����������� ������������������
강사����������� ������������������ 약력����������� ������������������
• 5
한빛미디어,����������� ������������������ ‘태블릿����������� ������������������ 호환����������� ������������������ 안드로이드����������� ������������������ 앱����������� ������������������ 프로그래밍’����������� ������������������
����������� ������������������ -����������� ������������������ http://goo.gl/NUZEk����������� ������������������
����������� ������������������
마이크로소프트웨어����������� ������������������ ����������� ������������������ -����������� ������������������ 마이크로소프트웨어����������� ������������������ Google����������� ������������������ TV����������� ������������������ 플랫폼(2012/6)����������� ������������������
����������� ������������������ -����������� ������������������ 마이크로소프트웨어����������� ������������������ LG전자����������� ������������������ 스마트TV����������� ������������������ 프로그래밍����������� ������������������
����������� ������������������ -����������� ������������������ ICS����������� ������������������ vs.����������� ������������������ iOS5����������� ������������������
����������� ������������������
삼성전자����������� ������������������ ����������� ������������������ -����������� ������������������ 삼성전자����������� ������������������ 안드로이드����������� ������������������ 기반����������� ������������������ S����������� ������������������ Pen����������� ������������������ SDK����������� ������������������ 응용과정����������� ������������������ 교재����������� ������������������
����������� ������������������ -����������� ������������������ 안드로이드����������� ������������������ 개발자를����������� ������������������ 위한����������� ������������������ bada����������� ������������������ 포팅����������� ������������������ 가이드,����������� ������������������ 2011,����������� ������������������ 삼성전자����������� ������������������
주요����������� ������������������ 저술����������� ������������������
• 6
주요����������� ������������������ 강의����������� ������������������
• Android����������� ������������������ 기본,����������� ������������������ 심화,����������� ������������������ 전문����������� ������������������ 과정����������� ������������������ • 삼성����������� ������������������ 개발자센터����������� ������������������ /����������� ������������������ 인하대학교����������� ������������������ /����������� ������������������ 원광대학교����������� ������������������ ����������� ������������������ • 안양지식산업진흥원����������� ������������������ /����������� ������������������ 대구대학교����������� ������������������ /����������� ������������������ 청강대학교����������� ������������������
• HTML5����������� ������������������ /����������� ������������������ Smart����������� ������������������ TV����������� ������������������ 과정����������� ������������������ • K����������� ������������������ 모바일����������� ������������������ /����������� ������������������ 대구디지털산업진흥원����������� ������������������
• 대외����������� ������������������ 활동����������� ������������������ • 삼성전자����������� ������������������ Android����������� ������������������ Developer����������� ������������������ Guide����������� ������������������ to����������� ������������������ bada����������� ������������������ 저술����������� ������������������ • 경희대학교����������� ������������������ bada����������� ������������������ 교재����������� ������������������ 감수����������� ������������������ • 구글코리아����������� ������������������ 2011����������� ������������������ 개발자랩����������� ������������������ 튜터����������� ������������������ 참여����������� ������������������ • NIPA����������� ������������������ 한국공개소프트웨어협회����������� ������������������ 멘토����������� ������������������ 참여����������� ������������������ • OSS����������� ������������������ OpenTech����������� ������������������ Day����������� ������������������ 다수����������� ������������������ 강연����������� ������������������
• 7
1.cloud����������� ������������������
01.����������� ������������������ Don’t����������� ������������������ buy,����������� ������������������ be����������� ������������������ use!����������� ������������������
02.����������� ������������������ Beyond����������� ������������������ the����������� ������������������ cloud.����������� ������������������
03.����������� ������������������ Don’t����������� ������������������ stack����������� ������������������ up����������� ������������������ the����������� ������������������ server!����������� ������������������
����������� ������������������
• 8
Don’t����������� ������������������ buy,����������� ������������������ be����������� ������������������ use!����������� ������������������
• 10
눈에����������� ������������������ 보이는게����������� ������������������ 다가����������� ������������������ 아니다����������� ������������������
http://sam9040.tistory.com/entry/구름에-관하여����������� ������������������
• 11
클라우드����������� ������������������ 컴퓨팅����������� ������������������
Storage����������� ������������������
Server����������� ������������������
Database����������� ������������������
Everything����������� ������������������ as����������� ������������������ a����������� ������������������ Service����������� ������������������ Through����������� ������������������ Internet����������� ������������������
Ram����������� ������������������
• 12
SaaS����������� ������������������ =����������� ������������������ AaaS����������� ������������������ +����������� ������������������ PaaS����������� ������������������
• 13
Don’t����������� ������������������ stack����������� ������������������ up����������� ������������������ the����������� ������������������ server,����������� ������������������
Only����������� ������������������ write����������� ������������������ a����������� ������������������ code!����������� ������������������
Software����������� ������������������ as����������� ������������������ a����������� ������������������ Service����������� ������������������
• 14
WoW����������� ������������������
http://www.slideshare.net/CiscoSP360/vmworld-2009-vmworld-data-center����������� ������������������
• 16
2.����������� ������������������ Node.js����������� ������������������
01.����������� ������������������ install����������� ������������������ node.js����������� ������������������
02.����������� ������������������ node����������� ������������������ application����������� ������������������
03.����������� ������������������ mongodb����������� ������������������
• 17
01.����������� ������������������ install����������� ������������������ node.js����������� ������������������
install����������� ������������������ node.js����������� ������������������
REPL����������� ������������������
npm����������� ������������������
node����������� ������������������ version����������� ������������������ manager����������� ������������������
nave����������� ������������������
• 18
node.js����������� ������������������ 설치����������� ������������������
nodejs.org����������� ������������������ 에서����������� ������������������ 원하는����������� ������������������ OS로����������� ������������������ 다운로드후����������� ������������������ 설치����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
*����������� ������������������ Windows����������� ������������������ 설치:����������� ������������������ forum.falinux.com/zbxe/index.php?document_srl=572233����������� ������������������
����������� ������������������
설치����������� ������������������
• 19
REPL����������� ������������������ ����������� ������������������
REPL����������� ������������������ Read����������� ������������������ Eval����������� ������������������ Print����������� ������������������ Loop����������� ������������������ 라는����������� ������������������ Node의����������� ������������������ 입력����������� ������������������ 환경이����������� ������������������ 나타난다.����������� ������������������ 이����������� ������������������ 환경에서����������� ������������������ 자바스크립트����������� ������������������ 코드를����������� ������������������ 한����������� ������������������ 줄씩����������� ������������������ 입력해서����������� ������������������ 실행해����������� ������������������ 볼����������� ������������������ 수����������� ������������������ 있다.����������� ������������������ ����������� ������������������
설치����������� ������������������
$ node > console.log("Hello, World!"); Hello, World! undefined >
• 20
npm����������� ������������������ ����������� ������������������
node.js����������� ������������������ 관련����������� ������������������ 라이브러리들을����������� ������������������ 관리하게����������� ������������������ 편하도록����������� ������������������ Isaac����������� ������������������ Z.����������� ������������������ Schlueter����������� ������������������ 이����������� ������������������ 만든����������� ������������������ npm����������� ������������������ 이����������� ������������������ 포함되어����������� ������������������ 있다.����������� ������������������ ����������� ������������������
레드헷의����������� ������������������ rpm(Redhat����������� ������������������ Package����������� ������������������ Manager)과����������� ������������������ 같이����������� ������������������ ����������� ������������������ npm����������� ������������������ 을����������� ������������������ 통해서����������� ������������������ node.js����������� ������������������ 라이브러리들을����������� ������������������ 관리해주는����������� ������������������ 역할을����������� ������������������ 하고����������� ������������������ 있다.����������� ������������������
설치����������� ������������������
npm install [package_name] npm install [package_name@x.x.x] npm ls npm find [name] npm search [name] npm view [name] npm config get userconfig npm config get globalconfig
• 21
npm-Global����������� ������������������ 설치와����������� ������������������ Local����������� ������������������ 설치����������� ������������������ ����������� ������������������
npm으로����������� ������������������ 모듈을����������� ������������������ 설치할����������� ������������������ 때����������� ������������������ 글로벌����������� ������������������ 설치와����������� ������������������ ����������� ������������������ 로컬����������� ������������������ 설치로����������� ������������������ 나누어����������� ������������������ 진다는����������� ������������������ 것입니다.����������� ������������������ 글로벌����������� ������������������ 설치와����������� ������������������ 로컬설치를����������� ������������������ 구분하는����������� ������������������ 것은����������� ������������������ 아래와����������� ������������������ 같습니다����������� ������������������
설치����������� ������������������
Global 설치: 터미널에서����������� ������������������ 모듈의����������� ������������������ 명령어를����������� ������������������ 사용할����������� ������������������ 일이����������� ������������������ 있다면����������� ������������������ Global로����������� ������������������ 설치합니다. Local 설치����������� ������������������ : 소스내에서����������� ������������������ require()로����������� ������������������ 불러들이는����������� ������������������ 모듈들은����������� ������������������ Local로����������� ������������������ 설치합니다.
• 22
npm����������� ������������������ package����������� ������������������
Node.js����������� ������������������ ����������� ������������������ 를����������� ������������������ 실행하는����������� ������������������ 것으로����������� ������������������ 웹����������� ������������������ 프로그래밍이����������� ������������������ 가능합니다.����������� ������������������ 그렇지만����������� ������������������ 하나의����������� ������������������ 프로그램����������� ������������������ 파일만����������� ������������������ 있지����������� ������������������ 않고����������� ������������������ 여러개의����������� ������������������ 파일이����������� ������������������ 관련되어����������� ������������������ 있습니다.����������� ������������������ 그래서����������� ������������������ 배포����������� ������������������ 가능한����������� ������������������ 패키지로서����������� ������������������ 모듈을����������� ������������������ 개발하신다면,����������� ������������������ Node.js����������� ������������������ 프로그램을����������� ������������������ npm기반의����������� ������������������ 패키징����������� ������������������ 구조인����������� ������������������ 아래와����������� ������������������ 같은����������� ������������������ 파일����������� ������������������ 구조를����������� ������������������ 권장합니다.����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
• package.json����������� ������������������ npm����������� ������������������ 용����������� ������������������ 패키지����������� ������������������ 명세서����������� ������������������ 파일����������� ������������������
• lib����������� ������������������ 프로그램����������� ������������������ 관련한����������� ������������������ 사용자����������� ������������������ 모듈����������� ������������������
• www����������� ������������������ 주로����������� ������������������ HTML,����������� ������������������ image����������� ������������������ 등의����������� ������������������ 자료����������� ������������������
• node_modules����������� ������������������ npm����������� ������������������ 에서����������� ������������������ 설치해서����������� ������������������ 관리하는����������� ������������������ 로칼����������� ������������������ 모듈����������� ������������������
설치����������� ������������������
• 23
Node����������� ������������������ Version����������� ������������������ Manager ����������� ������������������ ����������� ������������������
노드는����������� ������������������ 자주����������� ������������������ 업그레이드가����������� ������������������ 된다.����������� ������������������ 그에����������� ������������������ 따라����������� ������������������ 실제����������� ������������������ 개발시,����������� ������������������ 실행시����������� ������������������ 노드����������� ������������������ 버전의����������� ������������������ 변경에����������� ������������������ 고민스럽기도����������� ������������������ 하다.����������� ������������������ ����������� ������������������
다른����������� ������������������ 버전의����������� ������������������ 노드����������� ������������������ 사이의����������� ������������������ 스위칭을����������� ������������������ 할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 툴이����������� ������������������ nave,����������� ������������������ nvm이다.����������� ������������������ 여러개의����������� ������������������ 설치된����������� ������������������ 노드����������� ������������������ 버전을����������� ������������������ 관리할����������� ������������������ 수����������� ������������������ 있다.����������� ������������������
설치����������� ������������������
npm install –g nave
nave����������� ������������������ ls����������� ������������������ nave����������� ������������������ ls-remote����������� ������������������ nave����������� ������������������ install����������� ������������������ <version>����������� ������������������ nave����������� ������������������ use����������� ������������������ <version>����������� ������������������
• 24
nave����������� ������������������
nave를����������� ������������������ 이용해����������� ������������������ node����������� ������������������ 설치를����������� ������������������ 관리한다.����������� ������������������
설치����������� ������������������
$ nave ls-remote remote: … 0.8.14 0.8.15 0.8.16 0.8.17 0.8.18 0.8.19 0.8.20 0.8.21 0.8.22 0.9.0 0.9.1 0.9.2 0.9.3 0.9.4 0.9.5 0.9.6 0.9.7 0.9.8 0.9.9 0.9.10 0.9.11 0.9.12 $ nave install 0.8.22 $ nave install 0.9.12 $ nave ls src: 0.8.22 0.9.12 installed: 0.8.22 0.9.12 named:
• 25
02.����������� ������������������ Node����������� ������������������ application����������� ������������������
structure����������� ������������������ of����������� ������������������ node����������� ������������������ app.����������� ������������������
Subscibing����������� ������������������ form����������� ������������������
Android����������� ������������������ MainActivity����������� ������������������
Node����������� ������������������ –����������� ������������������ app1.js����������� ������������������
• 26
Node����������� ������������������ app.����������� ������������������ ����������� ������������������
app용����������� ������������������ 폴더를����������� ������������������ 하나����������� ������������������ 만들고����������� ������������������ app.js����������� ������������������ 시작����������� ������������������ 파일을����������� ������������������ 작성한다.����������� ������������������
모듈을����������� ������������������ 통해����������� ������������������ 다양한����������� ������������������ 객체를����������� ������������������ 이용할����������� ������������������ 수����������� ������������������ 있고,����������� ������������������ 크게����������� ������������������ 아래의����������� ������������������ 구조����������� ������������������
//// app.js//var http = require('http'),url = require('url'),fs = require('fs'),server,PORT = 8080;server = http.createServer( function(req, res) { ����������� ������������������ ����������� ������������������ ����������� ������������������ … }����������� ������������������ );server.listen(PORT, function() { console.log('Server running at :'+PORT);});
Node����������� ������������������ App.����������� ������������������
모듈����������� ������������������ 객체를����������� ������������������ 정의.����������� ������������������ 변수����������� ������������������ 정의����������� ������������������
로직����������� ������������������ 본문����������� ������������������
서버����������� ������������������ 객체����������� ������������������ 리스닝����������� ������������������
• 27
Subscribing����������� ������������������ form����������� ������������������
아이디와����������� ������������������ 이름으로����������� ������������������ 가입����������� ������������������ 처리����������� ������������������
Node����������� ������������������ App.����������� ������������������
• 28
MainActivity����������� ������������������
안드로이드����������� ������������������ 단말에서����������� ������������������ 사용자����������� ������������������ 아이디,����������� ������������������ 이름을����������� ������������������ 입력받는다.����������� ������������������
String result = null;EditText editId = (EditText) findViewById(R.id.editText1);EditText editName = (EditText) findViewById(R.id.editText2);RadioGroup rg = (RadioGroup)findViewById(R.id.radioGroup1);if( rg.getCheckedRadioButtonId() == R.id.radio0 ) { // Node.js User user = new User(editId.getText().toString(), editName.getText().toString()); try {
result = new HttpPostTask().execute(user).get(); } catch (InterruptedException e) {
e.printStackTrace(); } catch (ExecutionException e) {
e.printStackTrace(); }
txtOut.setText(result);}
Node����������� ������������������ App.����������� ������������������
• 29
MainActivity-2����������� ������������������
안드로이드����������� ������������������ 단말에서����������� ������������������ 사용자����������� ������������������ 아이디,����������� ������������������ 이름을����������� ������������������ 입력받는다.����������� ������������������
class HttpPostTask extends AsyncTask<User, Void, String> { protected String doInBackground(User... param) { HttpResponse resp = null; UrlEncodedFormEntity entity = null; List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("user_id", param[0].id)); params.add(new BasicNameValuePair("user_name", param[0].name)); HttpPost post = new HttpPost(); try { entity = new UrlEncodedFormEntity(params); post.setEntity(entity); post.setURI(new URI(HOST_IP)); resp = client.execute(post); } catch (URISyntaxException e1) { // …} String result = getHttpResponse(resp); return result; } }
Node����������� ������������������ App.����������� ������������������
• 30
app1.js����������� ������������������
안드로이드����������� ������������������ 단말에서����������� ������������������ 사용자����������� ������������������ 아이디,����������� ������������������ 이름을����������� ������������������ 받아����������� ������������������ 처리합니다.����������� ������������������
server = http.createServer( function(req, res) { ����������� ������������������ ����������� ������������������ if( req.method == 'POST') { var body = ''; req.on('data', function (data) { body += data; }); req.on('end', function() { var queryData = qs.parse(body); console.log(queryData); res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('<ul><li>' + queryData.user_id + '<li>' + queryData.user_name + '</ul>'); }); }});
Node����������� ������������������ App.����������� ������������������
POST����������� ������������������ 수신����������� ������������������
• 31
03.����������� ������������������ mongodb����������� ������������������
install����������� ������������������ mongodb����������� ������������������
start/stop����������� ������������������ mongodb����������� ������������������
node-mongodb-native����������� ������������������
sample����������� ������������������ app����������� ������������������ –����������� ������������������ app2.js����������� ������������������
����������� ������������������ ����������� ������������������
• 32
install����������� ������������������ mongodb����������� ������������������
http://www.mongodb.org/downloads����������� ������������������ 에서����������� ������������������ 다운����������� ������������������ 받는다.����������� ������������������
����������� ������������������
Mac����������� ������������������ OS����������� ������������������ binary����������� ������������������ 설치:����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
Data����������� ������������������ directory:����������� ������������������
$ curl http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.0.5.tgz> mongo.tgz$ tar xzf mongo.tgz$ mv mongodb-osx-x86_64-2.0.5/ ~/MyDEV/$
mongodb����������� ������������������
$sudo mkdir -p ~/MyDEV/mongodb/$sudo chown `id -u` ~/MyDEV/mongodb/
• 33
start/stop����������� ������������������ mongodb����������� ������������������
mongo����������� ������������������ 는����������� ������������������ 1Tier����������� ������������������ 엔진,����������� ������������������ 클라이언트,����������� ������������������ 미들웨어.����������� ������������������
����������� ������������������
mongod����������� ������������������ 실행:����������� ������������������ dbms����������� ������������������ 실행.����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
mongod����������� ������������������ 종료:����������� ������������������
$ mongod –-dbpath ~/MyDEV/mongodb
mongodb����������� ������������������
$mongo>use admin>db.shutdownServer()
javascript����������� ������������������ shell����������� ������������������
$ mongod --fork --dbpath ~/MyDEV/mongodb --logpath ~/MyDEV/mongodb.logforked process: 8287gogangtaeui-MacBook-Air:bin androidbee$ all output going to: /Users/androidbee/MyDEV/mongodb.log
• 34
node-mongodb-native����������� ������������������
a����������� ������������������ node.js����������� ������������������ driver����������� ������������������ for����������� ������������������ MongoDB����������� ������������������
https://github.com/mongodb/node-mongodb-native����������� ������������������ ����������� ������������������
����������� ������������������
Install����������� ������������������ node-mongodb-native����������� ������������������ driver.����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
To����������� ������������������ install����������� ������������������ the����������� ������������������ latest����������� ������������������ from����������� ������������������ the����������� ������������������ repository,����������� ������������������
mongodb����������� ������������������
npm����������� ������������������ config����������� ������������������ set����������� ������������������ loglevel����������� ������������������ info����������� ������������������ npm����������� ������������������ install����������� ������������������ mongodb����������� ������������������
npm����������� ������������������ install����������� ������������������ path/to/node-mongodb-native����������� ������������������
• 35
app2.js����������� ������������������
require����������� ������������������ mongodb����������� ������������������ driver.����������� ������������������
var http = require('http'),fs = require('fs'),qs = require('querystring'),url = require('url'),Db = require('mongodb').Db,Connection = require('mongodb').Connection,DbServer = require('mongodb').Server,PORT = 12345;server = http.createServer( function(req, res) { ����������� ������������������ ����������� ������������������ if( req.method == 'POST') { … }});
Node����������� ������������������ App.����������� ������������������
mongodb����������� ������������������ driver����������� ������������������
• 36
app2.js����������� ������������������ -����������� ������������������ 2����������� ������������������
process����������� ������������������ on����������� ������������������ POST����������� ������������������ User����������� ������������������ data����������� ������������������ to����������� ������������������ store����������� ������������������ into����������� ������������������ mongodb.����������� ������������������
req.on('end', function() { var queryString = qs.parse(body); new Db('usertable_tutorial', new DbServer("127.0.0.1", 27017), {safe:false}) .open(function(err, db) { db.collection('documents', function(err, collection) {
collection.insert(queryString, function(err, document) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end(JSON.stringify(document)); });
}); });});
Node����������� ������������������ App.����������� ������������������
end����������� ������������������ of����������� ������������������ POST����������� ������������������
• 37
app2.js����������� ������������������ -����������� ������������������ 3����������� ������������������
process����������� ������������������ on����������� ������������������ GET,����������� ������������������ fetching����������� ������������������ users����������� ������������������ from����������� ������������������ mongodb.����������� ������������������
Db('usertable_tutorial', new DbServer("127.0.0.1", 27017), {safe:false} ) .open(function(err, db) { var result; db.collection('documents', function(err, collection) { collection.find().toArray(function(err, result) {
if (err) throw err; res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end(JSON.stringify(result));
db.close(); }); });});
Node����������� ������������������ App.����������� ������������������
• 38
navigate����������� ������������������ mongodb����������� ������������������
fetching����������� ������������������ users����������� ������������������ from����������� ������������������ mongod.����������� ������������������
$ mongoMongoDB shell version: 2.0.5connecting to: test> show dbsfirst 0.203125GBlocal (empty)test 0.203125GBusertable_tutorial 0.203125GB> use usertable_tutorialswitched to db usertable_tutorial> show collectionsdocumentssystem.indexes> db.documents.find(){ "user_id" : "gtko", "user_name" : "???", "_id" : ObjectId("5139d3b73345197320000001") }{ "user_id" : "hhhhh", "user_name" : "????", "_id" : ObjectId("5139db9c3964af8e20000001") }{ "user_id" : "hhhhhh", "user_name" : "???", "_id" : ObjectId("5139dc32f400f29120000001") }{ "user_id" : "aaaaa", "user_name" : "ccccc", "_id" : ObjectId("513a148a78d2ed2b21000001") }
Node����������� ������������������ App.����������� ������������������
• 39
04.cloudfoundry����������� ������������������
install����������� ������������������ vmc����������� ������������������
vmc����������� ������������������ publish����������� ������������������
• 40
install����������� ������������������ vmc����������� ������������������
http://cloudfoundry.com/����������� ������������������
����������� ������������������
sign����������� ������������������ in����������� ������������������ 후����������� ������������������ invite����������� ������������������ 메일을����������� ������������������ 받는다.����������� ������������������ 이����������� ������������������ 메일에는����������� ������������������ 임시����������� ������������������ 패스워드를����������� ������������������ 포함하고����������� ������������������ 있다.����������� ������������������ ����������� ������������������
vmc를����������� ������������������ 이용해서����������� ������������������ 호스팅����������� ������������������ 관리를����������� ������������������ 한다.����������� ������������������
vmc����������� ������������������ 명령어����������� ������������������ 설치����������� ������������������ http://docs.cloudfoundry.com/tools/vmc/installing-vmc.html����������� ������������������
����������� ������������������
아래����������� ������������������ vmc����������� ������������������ 명령을����������� ������������������ 실행해서����������� ������������������ 새로운����������� ������������������ 패스워드를����������� ������������������ 발급해야����������� ������������������ 한다.����������� ������������������
vmc target https://api.cloudfoundry.comvmc loginvmc infovmc passwd
cloudfoundry����������� ������������������
• 41
publish����������� ������������������ node����������� ������������������ app.����������� ������������������
계정의����������� ������������������ app����������� ������������������ 확인����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
cloudfoundry에����������� ������������������ 올릴����������� ������������������ node����������� ������������������ app을����������� ������������������ 작성한다.����������� ������������������ ����������� ������������������
����������� ������������������
vmc infovmc apps…name status usage runtime url quizquiz running 1 x 64M node08 quizquiz.cloudfoundry.com spen-server stopped 1 x 64M node spen-server.cloudfoundry.com
cloudfoundry����������� ������������������
• 42
publish����������� ������������������ node����������� ������������������ app����������� ������������������ -����������� ������������������ 2����������� ������������������
package.js����������� ������������������ 를����������� ������������������ 작성����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
vi…{ "name":"subscribe-users", "version":"0.0.1", "scripts":{ "start":"node app1.js" }}
cloudfoundry����������� ������������������
app.����������� ������������������ name����������� ������������������
startup����������� ������������������ script����������� ������������������ name����������� ������������������
• 43
publish����������� ������������������ node����������� ������������������ app����������� ������������������ -����������� ������������������ 3����������� ������������������
package.js����������� ������������������ 에����������� ������������������ 맞춰����������� ������������������ cloudfound����������� ������������������ 계정으로����������� ������������������ push����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
$ vmc pushName> subscribe-usersInstances> 11: node2: otherFramework> node1: node2: node063: node084: otherRuntime> 31: 64M2: 128M3: 256M4: 512M5: 1GMemory Limit> 64M...
cloudfoundry����������� ������������������
app.����������� ������������������ name����������� ������������������
node.js����������� ������������������ version����������� ������������������
• 44
publish����������� ������������������ node����������� ������������������ app����������� ������������������ -����������� ������������������ 4����������� ������������������
최종����������� ������������������ manifest.yml����������� ������������������ 에����������� ������������������ 설정����������� ������������������ 저장����������� ������������������ –����������� ������������������ 업그레이드����������� ������������������ 등에����������� ������������������ 이용.����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
����������� ������������������
Creating subscribe-users... OK1: subscribe-users.cloudfoundry.com2: noneURL> subscribe-users.cloudfoundry.comUpdating subscribe-users... OKCreate services for application?> nSave configuration?> ySaving to manifest.yml... OKUploading subscribe-users... OKUsing manifest file manifest.ymlStarting subscribe-users... OKChecking subscribe-users... OK
cloudfoundry����������� ������������������
URL����������� ������������������
application����������� ������������������ manifest����������� ������������������
• ����������� ������������������ VERSION����������� ������������������ 1.3����������� ������������������ • ����������� ������������������ Release����������� ������������������ Date����������� ������������������ :����������� ������������������ 2012.8����������� ������������������
����������� ������������������ ����������� ������������������ 3.����������� ������������������ baas.io����������� ������������������
<고����������� ������������������ 강����������� ������������������ 태>����������� ������������������ /����������� ������������������ james@thinkbee.kr
010-8269-3535����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ @gtko����������� ������������������
http://www.slideshare.net/gtko
http://goo.gl/9V3H6
http://www.facebook.com/gangtai.goh
• 46
3.����������� ������������������ baas.io����������� ������������������
01.baas.io����������� ������������������ 서비스����������� ������������������
02.����������� ������������������ baas.io����������� ������������������ 이용����������� ������������������
03.����������� ������������������ baas.io����������� ������������������ SDK����������� ������������������ 이용����������� ������������������
05.����������� ������������������ Back����������� ������������������ End����������� ������������������ 이용����������� ������������������
• 47 47
클라우드����������� ������������������ 서버에서����������� ������������������ 앱����������� ������������������ 서비스를����������� ������������������ 위한����������� ������������������ 공간을����������� ������������������ 제공하고����������� ������������������ 여러����������� ������������������ 기능을����������� ������������������ 이용할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ Open����������� ������������������ API를����������� ������������������ 준비해준다.����������� ������������������ ����������� ������������������ 개발자는����������� ������������������ RestFull����������� ������������������ 기반의����������� ������������������ Open����������� ������������������ API����������� ������������������ 를����������� ������������������ 호출하기만����������� ������������������ 하면����������� ������������������ 서버����������� ������������������ 공간에����������� ������������������ 자신만의����������� ������������������ 백엔드����������� ������������������ 서비스를����������� ������������������ 손쉽게����������� ������������������ 구축할����������� ������������������ 수����������� ������������������ 있다.����������� ������������������
baas.io����������� ������������������ 서비스����������� ������������������ Baasio����������� ������������������ 서비스����������� ������������������
https://api.baas.io/<user_id>/<app_name>����������� ������������������
• 48 48
����������� ������������������ 모바일����������� ������������������ 앱����������� ������������������ 개발자의����������� ������������������ 서버측����������� ������������������ 기능을����������� ������������������ 제공,����������� ������������������ 백엔드����������� ������������������ 기능.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ 사용자����������� ������������������ 관리����������� ������������������
����������� ������������������ -����������� ������������������ 파일����������� ������������������ 업/다운로드����������� ������������������ ����������� ������������������ -����������� ������������������ 위치����������� ������������������ 기반����������� ������������������ 로그����������� ������������������
����������� ������������������ -����������� ������������������ Push����������� ������������������ 메시지����������� ������������������ 송/수신����������� ������������������
����������� ������������������ -����������� ������������������ 고객센터����������� ������������������ 등의����������� ������������������ 기능����������� ������������������
����������� ������������������ ����������� ������������������
백엔드����������� ������������������ 서비스����������� ������������������ Baasio����������� ������������������ 서비스����������� ������������������
• 49
02.����������� ������������������ baas.io����������� ������������������ 이용����������� ������������������
01.baas.io����������� ������������������ 서비스����������� ������������������ 가입����������� ������������������
02.����������� ������������������ My����������� ������������������ Page����������� ������������������
03.����������� ������������������ 백엔드����������� ������������������ 앱����������� ������������������ 목록����������� ������������������
04.����������� ������������������ 백엔드����������� ������������������ 앱����������� ������������������ 추가����������� ������������������
• 50 50
앱을����������� ������������������ 개발하기����������� ������������������ 전에����������� ������������������ baas.io����������� ������������������ 에서����������� ������������������ 가입����������� ������������������ 후����������� ������������������ 개발에����������� ������������������ 필요한����������� ������������������ SDK����������� ������������������ 를����������� ������������������ 다운받으셔야����������� ������������������ 합니다.����������� ������������������ ����������� ������������������ MyPage����������� ������������������ 에서����������� ������������������ 앱을����������� ������������������ 위한����������� ������������������ Data����������� ������������������ 저장소와����������� ������������������ 초기����������� ������������������ 데이터를����������� ������������������ 저장할����������� ������������������ 수����������� ������������������ 있습니다.����������� ������������������ ����������� ������������������
baas.io����������� ������������������ 서비스����������� ������������������ 가입����������� ������������������ baas.io����������� ������������������ 이용����������� ������������������
• 51 51
백엔드����������� ������������������ 앱을����������� ������������������ 관리하고����������� ������������������ 상태를����������� ������������������ 살펴����������� ������������������ 볼����������� ������������������ 수����������� ������������������ 있다.����������� ������������������ ����������� ������������������
My����������� ������������������ Page����������� ������������������ baas.io����������� ������������������ 이용����������� ������������������
• 52 52
백엔드����������� ������������������ 앱����������� ������������������ 목록에����������� ������������������ 두����������� ������������������ 가지����������� ������������������ 샘플����������� ������������������ 앱이����������� ������������������ 있다.����������� ������������������ ����������� ������������������ -����������� ������������������ SandBox����������� ������������������ ����������� ������������������ -����������� ������������������ HelloWorld����������� ������������������
백엔드����������� ������������������ 앱����������� ������������������ 목록����������� ������������������ baas.io����������� ������������������ 이용����������� ������������������
• 53 53
백엔드����������� ������������������ 앱����������� ������������������ 목록에����������� ������������������ 두����������� ������������������ 가지����������� ������������������ 샘플����������� ������������������ 앱이����������� ������������������ 있다.����������� ������������������
백엔드����������� ������������������ 앱����������� ������������������ 추가����������� ������������������ baas.io����������� ������������������ 이용����������� ������������������
• 54
03.����������� ������������������ baas.io����������� ������������������ SDK����������� ������������������ 이용����������� ������������������
baas.io����������� ������������������ Android����������� ������������������ SDK����������� ������������������
SDK����������� ������������������ 다운로드와����������� ������������������ 설치����������� ������������������
• 55
baas.io����������� ������������������ Android����������� ������������������ SDK����������� ������������������
baas.io����������� ������������������ Android����������� ������������������ SDK����������� ������������������
SDK����������� ������������������ 구성����������� ������������������
SDK����������� ������������������ for����������� ������������������ Android����������� ������������������
• 56 56
baas.io����������� ������������������ Android����������� ������������������ client����������� ������������������ SDK����������� ������������������ 는����������� ������������������ 다음과����������� ������������������ 같이����������� ������������������ 구성되어����������� ������������������ 있다.����������� ������������������ ����������� ������������������ -����������� ������������������ git����������� ������������������ 을����������� ������������������ 이용해����������� ������������������ 체크아웃����������� ������������������ ����������� ������������������ ����������� ������������������
• Sample����������� ������������������ Project����������� ������������������ • https://github.com/baasio/baas.io-sample-android����������� ������������������
• StartUp����������� ������������������ Project����������� ������������������ • https://github.com/baasio/baas.io-startup-android����������� ������������������
• SDK����������� ������������������ Project����������� ������������������ • https://github.com/baasio/baas.io-sdk-android����������� ������������������
• Help����������� ������������������ Center����������� ������������������ UI����������� ������������������ Library����������� ������������������ Project����������� ������������������ &����������� ������������������ Sample����������� ������������������ • https://github.com/baasio/baas.io-helpcenter-android����������� ������������������
baas.io����������� ������������������ Android����������� ������������������ SDK����������� ������������������ baas.io����������� ������������������ SDK����������� ������������������
• 57 57
baas.io����������� ������������������ Client����������� ������������������ SDK����������� ������������������ for����������� ������������������ Android는����������� ������������������ Android����������� ������������������ OS����������� ������������������ 2.2����������� ������������������ 이상,����������� ������������������ 4.2.x����������� ������������������ 이하를����������� ������������������ 지원합니다.����������� ������������������ ����������� ������������������ ����������� ������������������ 1)����������� ������������������ 주����������� ������������������ 라이브러리����������� ������������������ baasio용����������� ������������������ API����������� ������������������ 라이브러리����������� ������������������ 프로젝트����������� ������������������ 2)����������� ������������������ 다양한����������� ������������������ 외부����������� ������������������ 라이브러리로����������� ������������������ 구성되어����������� ������������������ 함께����������� ������������������ 사용하고����������� ������������������ 있습니다.����������� ������������������
• gcm.jar����������� ������������������ • spring-android-core-1.0.0.RELEASE.jar����������� ������������������ • spring-android-rest-template-1.0.0.RELEASE.jar����������� ������������������ • jackson-core-asl-1.9.1.jar����������� ������������������ • jackson-mapper-asl-1.9.1.jar����������� ������������������ • slf4j-android-1.6.1-RC1.jar����������� ������������������
����������� ������������������ ����������� ������������������
baas.io����������� ������������������ Android����������� ������������������ SDK����������� ������������������ baas.io����������� ������������������ SDK����������� ������������������
• 58 58
baas.io����������� ������������������ Client����������� ������������������ SDK����������� ������������������ for����������� ������������������ Android����������� ������������������ 라이브러리는����������� ������������������ 아래����������� ������������������ github에서����������� ������������������ 체크아웃����������� ������������������ 할����������� ������������������ 수����������� ������������������ 있다.����������� ������������������ https://github.com/baasio/baas.io-sdk-android����������� ������������������ 에서����������� ������������������ git����������� ������������������ 주소를����������� ������������������ 복사한다.����������� ������������������
SDK����������� ������������������ git����������� ������������������ 주소����������� ������������������ baas.io����������� ������������������ SDK����������� ������������������
• 59 59
git����������� ������������������ repositories����������� ������������������ view����������� ������������������ 에서����������� ������������������ Clone����������� ������������������ a����������� ������������������ Git����������� ������������������ repository����������� ������������������ 를����������� ������������������ 선택하면����������� ������������������ 복사한����������� ������������������ git����������� ������������������ 주소가����������� ������������������ 입력된다.����������� ������������������
baasio����������� ������������������ git����������� ������������������ 주소����������� ������������������ baas.io����������� ������������������ SDK����������� ������������������
• 60 60
다운받은����������� ������������������ 소스는����������� ������������������ 로컬����������� ������������������ git����������� ������������������ 저장소에����������� ������������������ 위치하는데,����������� ������������������ 여기에는����������� ������������������ Baasio����������� ������������������ 안드로이드����������� ������������������ 프로젝트가����������� ������������������ 구성되어����������� ������������������ 있다.����������� ������������������ 이클립스에서����������� ������������������ import����������� ������������������ 해온다.����������� ������������������ ����������� ������������������ ����������� ������������������ *����������� ������������������ 단,����������� ������������������ library����������� ������������������ project이니����������� ������������������ copy����������� ������������������ 하지����������� ������������������ 않는다.����������� ������������������
import����������� ������������������ library����������� ������������������ project����������� ������������������ baas.io����������� ������������������ SDK����������� ������������������
• 61
import한����������� ������������������ 프로젝트는����������� ������������������ 안드로이드����������� ������������������ 라이브러리����������� ������������������ 프로젝트로����������� ������������������ 구성되어����������� ������������������ 있다.����������� ������������������ 속성에서����������� ������������������ is����������� ������������������ Library����������� ������������������ 속성을����������� ������������������ 확인한다.����������� ������������������ ����������� ������������������
BaasioAndroid����������� ������������������ library����������� ������������������ project����������� ������������������ baas.io����������� ������������������ SDK����������� ������������������
• 62
04.Back����������� ������������������ end����������� ������������������ 이용����������� ������������������
백엔드����������� ������������������ –����������� ������������������ sandbox����������� ������������������
샘플����������� ������������������ Startup����������� ������������������ project����������� ������������������ 소개����������� ������������������
데이터엔터티����������� ������������������ BassioEntity����������� ������������������
GCM����������� ������������������ Push����������� ������������������ 이용����������� ������������������
• 63
01.백엔드-sandbox����������� ������������������
백엔드����������� ������������������ 목록����������� ������������������ 사용����������� ������������������
sandbox����������� ������������������ 상세����������� ������������������ 정보����������� ������������������
• 64 64
백엔드����������� ������������������ 앱����������� ������������������ 목록에는����������� ������������������ 사용중인����������� ������������������ baasio����������� ������������������ 앱을����������� ������������������ 볼����������� ������������������ 수����������� ������������������ 있다.����������� ������������������ 그리고����������� ������������������ 새로운����������� ������������������ 앱을����������� ������������������ 생성할����������� ������������������ 수����������� ������������������ 있다.����������� ������������������ 여기서는����������� ������������������ 샘플����������� ������������������ 앱인����������� ������������������ sandbox����������� ������������������ 를����������� ������������������ 사용해서����������� ������������������ 샘플을����������� ������������������ 이용해����������� ������������������ 보겠다.����������� ������������������
백엔드����������� ������������������ 목록����������� ������������������ 사용����������� ������������������ sandbox����������� ������������������
• 65
백엔드����������� ������������������ 앱����������� ������������������ 설정����������� ������������������ 항목����������� ������������������
65
앱����������� ������������������ 이름과����������� ������������������ 아이콘����������� ������������������ ����������� ������������������ 기본����������� ������������������ 정보,����������� ������������������ API����������� ������������������ 상태����������� ������������������ 현황����������� ������������������ ����������� ������������������ 데이터����������� ������������������ 사용����������� ������������������ 정의����������� ������������������ ����������� ������������������ PUSH����������� ������������������ 서비스(GCM)����������� ������������������ 사용����������� ������������������ 등록����������� ������������������ ����������� ������������������ API����������� ������������������ console����������� ������������������
sandbox����������� ������������������
• 66 66
앱의����������� ������������������ 기본정보와����������� ������������������ 데이터브라우저,����������� ������������������ 콘솔,����������� ������������������ 푸시����������� ������������������ 관리등����������� ������������������ 제공.����������� ������������������
sandbox����������� ������������������ 앱����������� ������������������ 상세����������� ������������������ 정보����������� ������������������ sandbox����������� ������������������
baas.io����������� ������������������ ID와����������� ������������������ Application����������� ������������������ ID를����������� ������������������ 사용하게����������� ������������������ 된다.����������� ������������������
• 67 67
key-value����������� ������������������ 형태의����������� ������������������ 데이터를����������� ������������������ 추가하고����������� ������������������ 사용할����������� ������������������ 수����������� ������������������ 있다.����������� ������������������ ����������� ������������������ -����������� ������������������ 사용자,����������� ������������������ 롤,����������� ������������������ 그룹,����������� ������������������ 파일,����������� ������������������ 장치����������� ������������������ 등����������� ������������������ 실제����������� ������������������ 데이터����������� ������������������ 관리.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 이어서����������� ������������������ 안드로이드����������� ������������������ baasio����������� ������������������ Startup����������� ������������������ project����������� ������������������ 를����������� ������������������ 통해����������� ������������������ 사용해����������� ������������������ 보자.����������� ������������������
데이터브라우저����������� ������������������ sandbox����������� ������������������
• 68
02.baas.io����������� ������������������ Startup����������� ������������������ App����������� ������������������
startup����������� ������������������ 프로젝트����������� ������������������ import����������� ������������������ 하기����������� ������������������
startup����������� ������������������ 프로젝트����������� ������������������ 제공����������� ������������������
AndroidManifest����������� ������������������ 살펴보기����������� ������������������
백엔드-sandbox����������� ������������������ 정보����������� ������������������ 확인����������� ������������������
BaasioConfig.java����������� ������������������
데이터엔터티����������� ������������������ BaasioEntity����������� ������������������ class����������� ������������������
• 69 69
github로����������� ������������������ 제공하는����������� ������������������ baasio����������� ������������������ 샘플����������� ������������������ 프로젝트로,����������� ������������������ 새로운����������� ������������������ baasio����������� ������������������ 앱을����������� ������������������ 만드는데����������� ������������������ 필요한����������� ������������������ 기본����������� ������������������ 앱����������� ������������������ 프로젝트����������� ������������������ 파일����������� ������������������ 제공.����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ https://github.com/baasio/baas.io-startup-android����������� ������������������ ����������� ������������������
baas.io����������� ������������������ startup����������� ������������������ project����������� ������������������ Startup����������� ������������������ App.����������� ������������������
BaasioStartupProject로����������� ������������������ copy����������� ������������������ 해서����������� ������������������ ����������� ������������������ import����������� ������������������ ����������� ������������������
BaasioAndrodi����������� ������������������ library����������� ������������������ 프로젝트를����������� ������������������ 추가한다.����������� ������������������
• 70 70
제공되는����������� ������������������ Startup����������� ������������������ 프로젝트는����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ AndroidMenifest.xml����������� ������������������ 설정����������� ������������������
����������� ������������������ -����������� ������������������ Push����������� ������������������ 서비스를����������� ������������������ 위한����������� ������������������ GCM����������� ������������������ 모듈이����������� ������������������ 이미����������� ������������������ 구현되어����������� ������������������ 적용.����������� ������������������ ����������� ������������������ -����������� ������������������ baas.io에����������� ������������������ 가입된����������� ������������������ 정보����������� ������������������ (BaasioConfig.java)����������� ������������������ ����������� ������������������ -����������� ������������������ 관련����������� ������������������ 라이브러리����������� ������������������ ����������� ������������������ 등을����������� ������������������ 포함해서����������� ������������������ 개발자가����������� ������������������ 손쉽게����������� ������������������ baasio����������� ������������������ 백엔드를����������� ������������������ 이용한����������� ������������������ 앱����������� ������������������ 개발을����������� ������������������ 할����������� ������������������ 수����������� ������������������ 있다.����������� ������������������
startup����������� ������������������ 프로젝트����������� ������������������ 제공����������� ������������������ Startup����������� ������������������ App.����������� ������������������
• 71 71
manifest����������� ������������������ 에����������� ������������������ GCM����������� ������������������ 관련����������� ������������������ 퍼미션����������� ������������������
AndroidManifest����������� ������������������ 살펴보기����������� ������������������ Startup����������� ������������������ App.����������� ������������������
<manifest xmlns:android="http://schemas.android.com/apk/res/android" … <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.INTERNET" /> <permission android:name="com.kth.baasio.startup.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.kth.baasio.startup.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ <uses-permission android:name="android.permission.GET_ACCOUNTS" />����������� ������������������ <uses-permission android:name="android.permission.WAKE_LOCK" />����������� ������������������ <uses-permission android:name="android.permission.USE_CREDENTIALS" />����������� ������������������ …
• 72 72
baas.io에����������� ������������������ 생성된����������� ������������������ 앱����������� ������������������ 정보를����������� ������������������ 확인해서����������� ������������������ BaasioConfig.java에����������� ������������������ 입력해����������� ������������������ 주어야����������� ������������������ 합니다.����������� ������������������ ����������� ������������������ 백엔드목록에서����������� ������������������ sandbox의����������� ������������������ 기본정보����������� ������������������ 화면에����������� ������������������ ID를����������� ������������������ 확인합니다.����������� ������������������
백엔드-sandbox����������� ������������������ 정보����������� ������������������ 확인����������� ������������������ Startup����������� ������������������ App.����������� ������������������
baas.io����������� ������������������ ID����������� ������������������ Application����������� ������������������ ID����������� ������������������
• 73 73
"com.kth.baasio.startup"����������� ������������������ 위치에����������� ������������������ 있는����������� ������������������ BaasioConfig.java을����������� ������������������ 열어,����������� ������������������ BAASIO_URL,����������� ������������������ BAASIO_ID,����������� ������������������ APPLICATION_ID에����������� ������������������ 백엔드의����������� ������������������ sandbox����������� ������������������ 기본정보에����������� ������������������ 있는����������� ������������������ ID를����������� ������������������ 입력한다.����������� ������������������ ����������� ������������������
BaasioConfig����������� ������������������ Startup����������� ������������������ App.����������� ������������������
public class BaasioConfig {����������� ������������������ public static final String BAASIO_URL = "https://api.baas.io";����������� ������������������ // baas.io member ID����������� ������������������ public static final String BAASIO_ID = "779460bb-2437-SDFSFD...";����������� ������������������ // baas.io application ID����������� ������������������ public static final String APPLICATION_ID = "779460bb-2437-1...";����������� ������������������ // GCM(google cloud messaging service) sender ID����������� ������������������ public static final String GCM_SENDER_ID = null; ����������� ������������������ }
샘플����������� ������������������ 백엔드����������� ������������������ sandbox에����������� ������������������ 정의한����������� ������������������ ID����������� ������������������
• 74 74
"com.kth.baasio.startup"����������� ������������������ 위치에����������� ������������������ 있는����������� ������������������ BaasioApplication.java은����������� ������������������ BaasioConfig에서����������� ������������������ 정의한����������� ������������������ BAASIO_URL,����������� ������������������ BAASIO_ID,����������� ������������������ APPLICATION_ID를����������� ������������������ 이용해����������� ������������������ 초기화����������� ������������������ 한다.����������� ������������������
Baasio����������� ������������������ initialize����������� ������������������ Startup����������� ������������������ App.����������� ������������������
public class BaasioApplication extends Application { AsyncTask mGCMRegisterTask; @Override public void onCreate() { super.onCreate(); Baas.io().init(this, BaasioConfig.BAASIO_URL, BaasioConfig.BAASIO_ID, BaasioConfig.APPLICATION_ID); mGCMRegisterTask = Baas.io().setGcmEnabled(this, null, new BaasioDeviceCallback() { .. } ); }
Push를����������� ������������������ 위한����������� ������������������ GCM����������� ������������������
• 75 75
액티비티����������� ������������������ 종료시����������� ������������������ 연결을����������� ������������������ 해제해����������� ������������������ 준다.����������� ������������������
Baasio����������� ������������������ terminate����������� ������������������ Startup����������� ������������������ App.����������� ������������������
public class BaasioApplication extends Application { ... @Override public void onTerminate() { if (mGCMRegisterTask != null) { mGCMRegisterTask.cancel(true); } Baas.io().uninit(this); super.onTerminate(); }}
• 76
03.데이터엔터티����������� ������������������ BassioEntity����������� ������������������
데이터엔터티란?����������� ������������������
BaasioEntity����������� ������������������ class����������� ������������������
MainActivity����������� ������������������ 적용����������� ������������������
• 77
데이터엔터티란?����������� ������������������
77
BassioEntity����������� ������������������
엔터티란����������� ������������������ baas.io에����������� ������������������ 저장되는����������� ������������������ 모든����������� ������������������ 데이터.����������� ������������������ 기본����������� ������������������ 속성����������� ������������������ 두가지.����������� ������������������ ����������� ������������������ -����������� ������������������ uuid:����������� ������������������ 엔터티에서����������� ������������������ 유일한����������� ������������������ 식별����������� ������������������ 값.����������� ������������������ ����������� ������������������ -����������� ������������������ Entity����������� ������������������ type:����������� ������������������ users,����������� ������������������ roles,����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ groups,����������� ������������������ files,����������� ������������������ devices����������� ������������������ ...����������� ������������������ ����������� ������������������ ����������� ������������������
• 78 78
BaasioEntity����������� ������������������ class����������� ������������������ 에서����������� ������������������ 데이터����������� ������������������ 엔터티����������� ������������������ 제공.����������� ������������������ ����������� ������������������ -����������� ������������������ baasio에����������� ������������������ 새로운����������� ������������������ 엔터티(데이터)를����������� ������������������ 추가하고����������� ������������������
데이터����������� ������������������ 엔터티����������� ������������������ BassioEntity����������� ������������������
• 79 79
BaasioEntity����������� ������������������ ����������� ������������������ 생성����������� ������������������
엔터티����������� ������������������ 생성����������� ������������������ Startup����������� ������������������ App.����������� ������������������
BaasioEntity entity = new BaasioEntity("usertable_tutorial");entity.setProperty("user_id", user.id);entity.setProperty("user_name", user.name);entity.setProperty("reg_date", System.currentTimeMillis());entity.saveInBackground(new BaasioCallback<BaasioEntity>() { @Override public void onResponse(BaasioEntity response) { if (response != null) { savedUuid = response.getUuid(); String result = response.getProperty("usertable_tutorial").getTextValue(); txtOut.setText(result); } } @Override public void onException(BaasioException e) { Log.e("baas.io", e.toString()); }});
• 80
04.baas.io����������� ������������������ Push����������� ������������������
GCM����������� ������������������ 소개����������� ������������������
• 81 81
GCM에서����������� ������������������ 발급받은����������� ������������������ API����������� ������������������ Key를����������� ������������������ 입력해����������� ������������������ 준다.����������� ������������������ - ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ https://code.google.com/apis/console/����������� ������������������
새로운����������� ������������������ 프로젝트를����������� ������������������ 추가한다.����������� ������������������
GCM����������� ������������������ 소개����������� ������������������ GCM����������� ������������������ Push����������� ������������������
• 82 82
1) 새로운����������� ������������������ Google����������� ������������������ API����������� ������������������ project����������� ������������������ 생����������� ������������������
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ Google����������� ������������������ API����������� ������������������ console����������� ������������������ 페이지에서Services����������� ������������������ ����������� ������������������ 선택����������� ������������������
2)����������� ������������������ Google����������� ������������������ Cloud����������� ������������������ Messaging����������� ������������������ 을����������� ������������������ ‘On’����������� ������������������ 3)����������� ������������������ API����������� ������������������ Access에서����������� ������������������ API����������� ������������������ Key����������� ������������������ 얻기����������� ������������������
서비스����������� ������������������ 약관����������� ������������������ 동의����������� ������������������
GCM����������� ������������������ 활성화����������� ������������������ GCM����������� ������������������ Push����������� ������������������
https://code.google.com/apis/console/#project:4815162342����������� ������������������
• 83 83
1.새로운����������� ������������������ 프로젝트를����������� ������������������ 추가한다.����������� ������������������ ����������� ������������������
GCM����������� ������������������ 새����������� ������������������ 프로젝트����������� ������������������ GCM����������� ������������������ Push����������� ������������������
• 84 84
2.����������� ������������������ 새로����������� ������������������ 추가된����������� ������������������ 프로젝트의����������� ������������������ 주소의����������� ������������������ 맨����������� ������������������ 뒷자리����������� ������������������ 숫자가����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ sender����������� ������������������ ID����������� ������������������ 이다.����������� ������������������ 이����������� ������������������ ID를����������� ������������������ BaasisConfig.java����������� ������������������ 에����������� ������������������ 입력한다.����������� ������������������
Sender����������� ������������������ ID����������� ������������������ GCM����������� ������������������ Push����������� ������������������
• 85 85
GCM����������� ������������������ Sendter����������� ������������������ ID를����������� ������������������ BaasioConfig����������� ������������������ 에����������� ������������������ 등록한다.����������� ������������������
BaasioConfig����������� ������������������ Startup����������� ������������������ App.����������� ������������������
public class BaasioConfig { public static final String BAASIO_URL = "https://api.baas.io"; // baas.io member ID public static final String BAASIO_ID = "779460bb-2437-SDFSFD..."; // baas.io application ID public static final String APPLICATION_ID = "779460bb-2437-1..."; // GCM(google cloud messaging service) sender ID public static final String GCM_SENDER_ID = “234456778...”; }
GCM����������� ������������������ Sender����������� ������������������ ID����������� ������������������
• 86 86
manifest����������� ������������������ 에����������� ������������������ GCM����������� ������������������ 리시버����������� ������������������ 추가����������� ������������������
AndroidManifest����������� ������������������ Startup����������� ������������������ App.����������� ������������������
<manifest xmlns:android="http://schemas.android.com/apk/res/android"����������� ������������������ …����������� ������������������ <receiver����������� ������������������ android:name=".gcm.GCMRedirectedBroadcastReceiver"����������� ������������������ android:permission="com.google.android.c2dm.permission.SEND" >����������� ������������������ <intent-filter>����������� ������������������ <!-- Receives the actual messages. -->����������� ������������������ <action android:name="com.google.android.c2dm.intent.RECEIVE" />����������� ������������������ <!-- Receives the registration id. -->����������� ������������������ <action android:name="com.google.android.c2dm.intent.REGISTRATION" />����������� ������������������ <category android:name="com.kth.baasio.sample" />����������� ������������������ </intent-filter>����������� ������������������ </receiver����������� ������������������ …
• 87 87
manifest����������� ������������������ 에����������� ������������������ GCM����������� ������������������ 서비스����������� ������������������ 추가����������� ������������������
AndroidManifest����������� ������������������ Startup����������� ������������������ App.����������� ������������������
<manifest xmlns:android="http://schemas.android.com/apk/res/android"����������� ������������������ …����������� ������������������ ����������� ������������������ <service android:name=".gcm.GCMIntentService" />����������� ������������������ …
• 88 88
Services����������� ������������������ 목록중����������� ������������������ Google����������� ������������������ Cloud����������� ������������������ Message����������� ������������������ for����������� ������������������ Android����������� ������������������ ����������� ������������������ 스의치를����������� ������������������ 'on'����������� ������������������ 으로����������� ������������������ 한다.����������� ������������������
GCM����������� ������������������ for����������� ������������������ android����������� ������������������ 'ON'����������� ������������������ GCM����������� ������������������ Push����������� ������������������
• 89 89
API����������� ������������������ key����������� ������������������ 얻기����������� ������������������
����������� ������������������ -����������� ������������������ Google����������� ������������������ API����������� ������������������ console����������� ������������������ 페이지에서����������� ������������������ API����������� ������������������ Access����������� ������������������ 를����������� ������������������ 선택����������� ������������������ 하고����������� ������������������ 'Create����������� ������������������ New����������� ������������������ Server����������� ������������������ key…⋯'����������� ������������������ 를����������� ������������������ 실행한다.����������� ������������������
New����������� ������������������ Key����������� ������������������ GCM����������� ������������������ Push����������� ������������������
• 90 90
API����������� ������������������ key����������� ������������������ 얻기����������� ������������������
����������� ������������������ -����������� ������������������ create����������� ������������������ 버튼을����������� ������������������ 실행한다.����������� ������������������
API����������� ������������������ Key����������� ������������������ GCM����������� ������������������ Push����������� ������������������
• 91 91
백엔드����������� ������������������ 설정에서����������� ������������������ Google����������� ������������������ API����������� ������������������ Key를����������� ������������������ 등록한다.����������� ������������������
백엔드����������� ������������������ 설정����������� ������������������ 푸시����������� ������������������ 관리����������� ������������������ GCM����������� ������������������ Push����������� ������������������
• 92 92
메시지를����������� ������������������ 작성해서����������� ������������������ 발송해����������� ������������������ 본다.����������� ������������������
백엔드����������� ������������������ 설정����������� ������������������ 푸시����������� ������������������ 발송����������� ������������������ GCM����������� ������������������ Push����������� ������������������
감사합니다.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 클라우드����������� ������������������ 서비스����������� ������������������ 활용에����������� ������������������ 대해����������� ������������������ 질문을����������� ������������������ 해주십시요.����������� ������������������ ����������� ������������������ ����������� ������������������
Q&A����������� ������������������
top related