SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Travel Service at GCP
waldo-gcp
Cage, F2E, Mitac
Road trip stopping at popular U.S. cities -
Computing the optimal road trip across the U.
S. | Randal S. Olson(http://goo.gl/pDNfp0)
My own road trip (https://goo.gl/SzBwbM)
Waldo-gcp overview
What is waldo
Demo
https://waldo-gcp.appspot.com/
Waypoints address sample text file
What is waldo
"台北市內湖區瑞光路227號1樓",
"高雄市鼓山區美術東二路106號",
"台南市長榮路一段175號",
"臺北市松山區南京東路五段123巷1弄15號",
"高雄市五福四路131號2樓"
Waldo-gcp Google Cloud Platform Features
What is waldo-gcp
Compute Storage
App Engine
Cloud
Datastore
Cloud
Storage
Compute
Engine
Waldo-gcp architecture
queue
MetadataWaldo Server
App Engine
Task Queues
Cloud Storage
Optimal-
waypoints
managed VMs
(python27)
...
endpoints API
(OAuth 2)
Object Notification
Cloude
Datastore
snapshot
managed VMs
(nodejs)
Android App
CSV
uploadwaypoints
Store/retrieve
metadata
waypoint map
snapshotRESTful APIs for waypoints list, upload
waypoints
optim
al
road
trip
Waldo-gcp dispatch.yaml
dispatch:
- url: "*/favicon.ico"
module: default
- url: "waldo-gcp.appspot.com/"
module: default
- url: "*/notice/*"
module: notice
- url: "*/waypoints/*"
module: optimal-waypoints
- url: "*/screenshot/*"
module: screenshot
- url: "*/google40fc41ccc276e5c5.html"
module: ownership
- url: "*/*"
module: "default"
Waldo-gcp architecture
Application hierarchy
[App Engine Modules in Python](https://goo.gl/p3nl48)
Compute
Cloud Computing
Compute
PaasIaaS
Application
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
Application
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
Saas
Application
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
Infrastructure as a Service Platform as a Service Service as a Service
You manage Google manage
Managed VMs
Compute | Managed VMs
● Managed VMs
○ The Flexibility of Compute Engine
○ The productivity of App Engine
● Provides best of both
○ IaaS + PaaS
Waldo-gcp storage - cloud datastore
queue
MetadataWaldo Server
App Engine
Task Queues
Cloud Storage
Optimal-
waypoints
managed VMs
(python27)
...
endpoints API
(OAuth 2)
Object Notification
Cloude
Datastore
snapshot
managed VMs
(nodejs)
Android App
CSV
uploadwaypoints
Store/retrieve
metadata
waypoint map
snapshot
optim
al
road
trip
RESTful APIs for waypoints list, upload
waypoints
Waldo-gcp storage - cloud datastore
queue
MetadataWaldo Server
App Engine
Task Queues
Cloud Storage
Optimal-
waypoints
managed VMs
(python27)
...
endpoints API
(OAuth 2)
Object Notification
Cloude
Datastore
snapshot
managed VMs
(nodejs)
Android App
CSV
uploadwaypoints
Store/retrieve
metadata
waypoint map
snapshot
optim
al
road
trip
RESTful APIs for waypoints list, upload
waypoints
Storage
Waldo-gcp Storage
Storage
Cloud Datastore Cloud Storage Cloud SQL
Compute Engine
(Persistent Disk)
BlobNoSQL SQL Block
Waldo-gcp storage - cloud datastore
queue
MetadataWaldo Server
App Engine
Task Queues
Cloud Storage
Optimal-
waypoints
managed VMs
(python27)
...
endpoints API
(OAuth 2)
Object Notification
Cloude
Datastore
snapshot
managed VMs
(nodejs)
Android App
CSV
uploadwaypoints
Store/retrieve
metadata
waypoint map
snapshot
optim
al
road
trip
RESTful APIs for waypoints list, upload
waypoints
Waldo-gcp storage - cloud storage
queue
MetadataWaldo Server
App Engine
Task Queues
Cloud Storage
Optimal-
waypoints
managed VMs
(python27)
...
endpoints API
(OAuth 2)
Object Notification
Cloude
Datastore
snapshot
managed VMs
(nodejs)
Android App
CSV
uploadwaypoints
Store/retrieve
metadata
waypoint map
snapshot
optim
al
road
trip
RESTful APIs for waypoints list, upload
waypoints
Waldo-gcp storage - cloud storage
queue
MetadataWaldo Server
App Engine
Task Queues
Cloud Storage
Optimal-
waypoints
managed VMs
(python27)
...
endpoints API
(OAuth 2)
Object Notification
Cloude
Datastore
snapshot
managed VMs
(nodejs)
Android App
CSV
uploadwaypoints
Store/retrieve
metadata
waypoint map
snapshot
optim
al
road
trip
RESTful APIs for waypoints list, upload
waypoints
Setup Cloud Storage Buckets
Waldo-gcp cloud storage
queue
MetadataWaldo Server
App Engine
Task Queues
Cloud Storage
Optimal-
waypoints
managed VMs
(python27)
...
endpoints API
(OAuth 2)
Object Notification
Cloude
Datastore
snapshot
managed VMs
(nodejs)
Android App
CSV
uploadwaypoints
Store/retrieve
metadata
waypoint map
snapshot
optim
al
road
trip
RESTful APIs for waypoints list, upload
waypoints
Waypoints GCS Bucket
Waldo-gcp cloud storage
Waldo Server
Android App
endpoints API (OAuth 2)
Waldo-gcp-file
Waldo-gcp-file-in
Waldo-gcp-file-image
endpoint API upload waypoints address to
managed VMs upload optimal address to
managed VMs upload screenshot image to
GCS Bucket Notification
Waldo-gcp setup gcs object notification
Waldo Server
Android App
endpoints API (OAuth 2)
Waldo-gcp-file
Waldo-gcp-file-in
Waldo-gcp-file-image
GCS Bucket Notification
Waldo-gcp storage
Waldo Server
Android App
endpoints API (OAuth 2)
Waldo-gcp-file
Waldo-gcp-file-in
Waldo-gcp-file-image
● bucket push notification
○ https only
○ domain owned/notice
Google Cloud Storage Notification
class BucketNotificationHandler(webapp2.RequestHandler):
def post(self):
# Decode the name and bucket of the notification
def notification_decoder(object):
if 'kind' in object:
return dict(name=object['name'], bucket=object['bucket'], id=object['id'])
...
# Add a new task to the queue
taskqueue.add(url='/waypoints/', params={
'bucket': notification['bucket'],
'name': notification['name'],
'id': notification['id']
},queue_name='new-files')
...
Create the App Engine backend
Waypoints address text file
Create the App Engine backend | Waldo-gcp-file
"台北市內湖區瑞光路227號1樓",
"高雄市鼓山區美術東二路106號",
"台南市長榮路一段175號",
"臺北市松山區南京東路五段123巷1弄15號",
"高雄市五福四路131號2樓"
Waypoints address distance_m & distance_s
Create the App Engine backend | Waldo-gcp-file-in
waypoint1 waypoint2 distance_m duration_s
台南市長榮路一段175號 高雄市五福四路131號2樓 89300 4375
台南市長榮路一段175號 高雄市鼓山區美術東二路 106號 84212 4243
台北市內湖區瑞光路227號1樓 臺北市松山區南京東路五段 123巷1弄15號 5204 763
高雄市五福四路131號2樓 高雄市鼓山區美術東二路 106號 4163 732
台北市內湖區瑞光路227號1樓 高雄市五福四路131號2樓 356184 13972
臺北市松山區南京東路五段 123巷1弄15號 高雄市鼓山區美術東二路 106號 354392 14071
臺北市松山區南京東路五段 123巷1弄15號 高雄市五福四路131號2樓 359450 14230
台北市內湖區瑞光路227號1樓 台南市長榮路一段175號 275002 10503
台北市內湖區瑞光路227號1樓 高雄市鼓山區美術東二路 106號 352764 13541
臺北市松山區南京東路五段 123巷1弄15號 台南市長榮路一段175號 276930 10674
Create Managed VMs Server
● Optimal road trip
● screenshot
Waldo-gcp waypoint optimization
● Gather the distance between wall
waypoints
● Google Map APIs
● genetic algorithm
optimal road trip
[nbviewer.ipython.org/github/rhiever/Data-Analysis-and-Machine-Learning-
Projects/blob/master/optimal-road-trip/Computing the optimal road trip across
the U.S..ipynb](http://goo.gl/SYoh53)
Pandas
● Python library
● Powerful data structures for data
analysis, time series,and statistics
optimal road trip
http://pandas.pydata.org/
Using Managed VMs
Waldo-gcp architecture
Waldo Server
Android App
endpoints API (OAuth 2)
/notice
- url: "*/notice/*"
module: notice
- url: "*/waypoints/*"
module: optimal-waypoints
- url: "*/screenshot/*"
module: screenshot
- url: "*/*"
module: default
bucket notification entry point
optimal road trip
screenshot
waldo-gcp
Managed VMs
Waldo-gcp architecture
Waldo Server
Android App
endpoints API (OAuth 2)
/notice
- url: "*/notice/*"
module: notice
- url: "*/waypoints/*"
module: optimal-waypoints
- url: "*/screenshot/*"
module: screenshot
- url: "*/*"
module: default
Auto-scaled managed VMs
(python27)
...
managed VMs
(nodejs)
Containers on Managed VMs
FROM google/appengine-python27
# Install pandas
RUN apt-get update && apt-get install -y -q --no-install-
recommends python-pandas python-numpy
# Install Google Map APIs, Google Client Library
ADD requirements.txt /app/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . /app
Create the App Engine | Dockerfile
[Managed VMs - App Engine — Google Cloud Platform](https://goo.gl/4FFSmm)
Optimal waypoint Module Configuration
application: waldo-gcp
module: optimal-waypoints
version: 1
runtime: python27
api_version: 1
threadsafe: yes
vm: true
automatic_scaling:
min_num_instances: 1
max_num_instances: 5
cool_down_period_sec: 60
cpu_utilization:
target_utilization: 0.5
Create the App Engine | app.yaml
Waldo-gcp screenshot
● Screenshot as a service
● Phantomjs + nodejs
snapshot server
[fzaninotto/screenshot-as-a-service](https://github.com/fzaninotto/screenshot-as-
a-service)
Screenshot Module Configuration
application: waldo-gcp
module: screenshot
version: 1
runtime: custome
api_version: 1
threadsafe: yes
vm: true
resources:
cpu: .5
memory_gb: 1.3
manual_scaling:
instances: 1
snapshot server
Waldo-gcp
Road trip on Google Map
waldo-gcp google map
optimal_route = [/*optimal waypoint calculate by genetic algorithm*/]
optimal_route = list(optimal_route)
optimal_route += [optimal_route[0]]
subset = 0
while subset < len(optimal_route):
waypoint_subset = optimal_route[subset:subset + 10]
output = "calcRoute("%s", "%s", [" % (waypoint_subset[0], waypoint_subset[-1])
for waypoint in waypoint_subset[1:-1]:
output += ""%s", " % (waypoint)
if len(waypoint_subset[1:-1]) > 0:
output = output[:-2]
output += "]);"
print(output)
print("")
subset += 9
...
● Google Map APIs
○ split max waypoints (11)
in one route
Road trip on Google Map
waldo-gcp google map
calcRoute("605嘉義縣阿里山 鄉二萬坪106號", "605嘉義縣阿里山 鄉二萬坪106號", ["500彰化縣彰化市溫泉
路31號", "224九份風景區瑞芳區新北市 ", "971花蓮縣新城 鄉海岸路", "555南投縣魚池 鄉中山路599號"]);
function calcRoute(start, end, routes) {
switch (start) {
case "605嘉義縣阿里山 鄉二萬坪106號" ,"605嘉義縣阿里山 鄉二萬坪106號":
directionsDisplay1 = new google.maps.DirectionsRenderer(directionsDisplayOptions);
..
}
var request = {origin: start, destination: end, waypoints: waypts, optimizeWaypoints:
false, travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function (response, status) {
case "605嘉義縣阿里山 鄉二萬坪106號" ,"605嘉義縣阿里山 鄉二萬坪106號":
directionsDisplay1.setDirections(response);
}
});
..
}
}
1. 605嘉義縣阿里山鄉二萬坪106號
2. 500彰化縣彰化市溫泉路31號
3. 224九份風景區瑞芳區新北市
4. 971花蓮縣新城鄉海岸路
5. 555南投縣魚池鄉中山路599號
Thanks you!
● [Here's Waldo: Computing the optimal search strategy for finding Waldo | Randal S. Olson](http://goo.
gl/DSOZbv)
● [Computing the optimal road trip across the U.S. | Randal S. Olson](http://goo.gl/pDNfp0)
● [nbviewer.ipython.org/github/rhiever/Data-Analysis-and-Machine-Learning-Projects/blob/master/optimal-
road-trip/Computing the optimal road trip across the U.S..ipynb](http://goo.gl/SYoh53)
● [GoogleCloudPlatform/abelana-gcp](https://goo.gl/6L55oa)
Reference
《威利在哪裡?》(英文:Where's Wally?),也譯《威力在哪裡?》、《大家一起找沃裡?》、《聰明的沃
裡?》,是一套由英國插畫家Martin Handford創作的兒童書籍。這個書的目標就是在一張人山人
海的圖片中找出一個特定的人物——威利。威利穿著紅白條紋的襯衫並戴著一個絨球帽,手上拿
著木製的手杖,還戴著一副眼鏡。他總是會弄丟東西,如書本、野營設備甚至是他的鞋子,而讀者
也要幫他在圖中找出這些東西來。
wikipedia
http://goo.gl/D4mH6
Where's Waldo?

Contenu connexe

En vedette

En vedette (9)

Continuous Integration & Continuous Delivery with GCP
Continuous Integration & Continuous Delivery with GCPContinuous Integration & Continuous Delivery with GCP
Continuous Integration & Continuous Delivery with GCP
 
Gae managed vm introduction
Gae managed vm introductionGae managed vm introduction
Gae managed vm introduction
 
Google app engine (gae) 演進史
Google app engine (gae) 演進史Google app engine (gae) 演進史
Google app engine (gae) 演進史
 
Django oscar introduction
Django oscar introductionDjango oscar introduction
Django oscar introduction
 
Introduction to chrome extension development
Introduction to chrome extension developmentIntroduction to chrome extension development
Introduction to chrome extension development
 
Google apps script introduction
Google apps script introductionGoogle apps script introduction
Google apps script introduction
 
Screenshot as a service
Screenshot as a serviceScreenshot as a service
Screenshot as a service
 
Google apps script introduction
Google apps script introductionGoogle apps script introduction
Google apps script introduction
 
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
 

Similaire à Waldo-gcp

Mobile, web and cloud - the triple crown of modern applications
Mobile, web and cloud -  the triple crown of modern applicationsMobile, web and cloud -  the triple crown of modern applications
Mobile, web and cloud - the triple crown of modern applications
Ido Green
 
Rəcəb Davudov - Developing location based services on Android
Rəcəb Davudov - Developing location based services on AndroidRəcəb Davudov - Developing location based services on Android
Rəcəb Davudov - Developing location based services on Android
Farhad
 
Cloud Connectivity Service
Cloud Connectivity ServiceCloud Connectivity Service
Cloud Connectivity Service
jhpark
 
ql.io: Consuming HTTP at Scale
ql.io: Consuming HTTP at Scale ql.io: Consuming HTTP at Scale
ql.io: Consuming HTTP at Scale
Subbu Allamaraju
 
How to measure everything - a million metrics per second with minimal develop...
How to measure everything - a million metrics per second with minimal develop...How to measure everything - a million metrics per second with minimal develop...
How to measure everything - a million metrics per second with minimal develop...
Jos Boumans
 

Similaire à Waldo-gcp (20)

KSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptxKSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptx
 
Android things introduction - Development for IoT
Android things introduction - Development for IoTAndroid things introduction - Development for IoT
Android things introduction - Development for IoT
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
Nomad, l'orchestration made in Hashicorp - Bastien Cadiot
Nomad, l'orchestration made in Hashicorp - Bastien CadiotNomad, l'orchestration made in Hashicorp - Bastien Cadiot
Nomad, l'orchestration made in Hashicorp - Bastien Cadiot
 
Mobile, web and cloud - the triple crown of modern applications
Mobile, web and cloud -  the triple crown of modern applicationsMobile, web and cloud -  the triple crown of modern applications
Mobile, web and cloud - the triple crown of modern applications
 
Rajab Davudov - Developing Location Based Applications for Android
Rajab Davudov - Developing Location Based Applications for AndroidRajab Davudov - Developing Location Based Applications for Android
Rajab Davudov - Developing Location Based Applications for Android
 
Rəcəb Davudov - Developing location based services on Android
Rəcəb Davudov - Developing location based services on AndroidRəcəb Davudov - Developing location based services on Android
Rəcəb Davudov - Developing location based services on Android
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011
 
Fork 4 Developers
Fork 4 DevelopersFork 4 Developers
Fork 4 Developers
 
Cloud Connectivity Service
Cloud Connectivity ServiceCloud Connectivity Service
Cloud Connectivity Service
 
Aws Lambda in Swift - NSLondon - 3rd December 2020
Aws Lambda in Swift - NSLondon - 3rd December 2020Aws Lambda in Swift - NSLondon - 3rd December 2020
Aws Lambda in Swift - NSLondon - 3rd December 2020
 
NSC #2 - D2 03 - Nicolas Collignon - Google Apps Engine Security
NSC #2 - D2 03 - Nicolas Collignon - Google Apps Engine SecurityNSC #2 - D2 03 - Nicolas Collignon - Google Apps Engine Security
NSC #2 - D2 03 - Nicolas Collignon - Google Apps Engine Security
 
ql.io: Consuming HTTP at Scale
ql.io: Consuming HTTP at Scale ql.io: Consuming HTTP at Scale
ql.io: Consuming HTTP at Scale
 
Simple APIs for Spatial Data (OGC API - Features)
Simple APIs for Spatial Data (OGC API - Features)Simple APIs for Spatial Data (OGC API - Features)
Simple APIs for Spatial Data (OGC API - Features)
 
How to measure everything - a million metrics per second with minimal develop...
How to measure everything - a million metrics per second with minimal develop...How to measure everything - a million metrics per second with minimal develop...
How to measure everything - a million metrics per second with minimal develop...
 
Automatic Ingress in Kubernetes
Automatic Ingress in KubernetesAutomatic Ingress in Kubernetes
Automatic Ingress in Kubernetes
 
Cloud-native Java EE-volution
Cloud-native Java EE-volutionCloud-native Java EE-volution
Cloud-native Java EE-volution
 
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - PleskAutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
 
Remote Config REST API and Versioning
Remote Config REST API and VersioningRemote Config REST API and Versioning
Remote Config REST API and Versioning
 
Home sensor prototype on Arduino & Raspberry Pi with Node.JS
Home sensor prototype on Arduino & Raspberry Pi with Node.JSHome sensor prototype on Arduino & Raspberry Pi with Node.JS
Home sensor prototype on Arduino & Raspberry Pi with Node.JS
 

Plus de KAI CHU CHUNG

Plus de KAI CHU CHUNG (13)

Devfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdfDevfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdf
 
DevFest 2022 - Skaffold 2 Deep Dive Taipei.pdf
DevFest 2022 - Skaffold 2 Deep Dive Taipei.pdfDevFest 2022 - Skaffold 2 Deep Dive Taipei.pdf
DevFest 2022 - Skaffold 2 Deep Dive Taipei.pdf
 
DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChung
 
Devfest 2021' - Artifact Registry Introduction (Taipei)
Devfest 2021' - Artifact Registry Introduction (Taipei)Devfest 2021' - Artifact Registry Introduction (Taipei)
Devfest 2021' - Artifact Registry Introduction (Taipei)
 
Velero search &amp; practice 20210609
Velero search &amp; practice 20210609Velero search &amp; practice 20210609
Velero search &amp; practice 20210609
 
Gdg cloud taipei ddt meetup #53 buildpack
Gdg cloud taipei ddt meetup #53 buildpackGdg cloud taipei ddt meetup #53 buildpack
Gdg cloud taipei ddt meetup #53 buildpack
 
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
GDG Cloud Taipei: Meetup #52 - Istio Security: API AuthorizationGDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
 
Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (ht...
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (ht...Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (ht...
Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (ht...
 
Google App Engine: Basic
Google App Engine: BasicGoogle App Engine: Basic
Google App Engine: Basic
 
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes with ...
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes  with ...GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes  with ...
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes with ...
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
 
Global GDG Leaders Summit, Google I/O 2018 經驗分享
Global GDG Leaders Summit, Google I/O 2018 經驗分享Global GDG Leaders Summit, Google I/O 2018 經驗分享
Global GDG Leaders Summit, Google I/O 2018 經驗分享
 

Dernier

VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
nirzagarg
 
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
nirzagarg
 
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
nilamkumrai
 
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
nilamkumrai
 

Dernier (20)

VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
 
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
Yerawada ] Independent Escorts in Pune - Book 8005736733 Call Girls Available...
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
 
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls DubaiDubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
 
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts ServiceReal Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
 
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
 
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck Microsoft
 
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
( Pune ) VIP Baner Call Girls 🎗️ 9352988975 Sizzling | Escorts | Girls Are Re...
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
 
Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls Dubai
 
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
 

Waldo-gcp

  • 1. Travel Service at GCP waldo-gcp Cage, F2E, Mitac
  • 2. Road trip stopping at popular U.S. cities - Computing the optimal road trip across the U. S. | Randal S. Olson(http://goo.gl/pDNfp0)
  • 3. My own road trip (https://goo.gl/SzBwbM)
  • 6. Waypoints address sample text file What is waldo "台北市內湖區瑞光路227號1樓", "高雄市鼓山區美術東二路106號", "台南市長榮路一段175號", "臺北市松山區南京東路五段123巷1弄15號", "高雄市五福四路131號2樓"
  • 7. Waldo-gcp Google Cloud Platform Features What is waldo-gcp Compute Storage App Engine Cloud Datastore Cloud Storage Compute Engine
  • 8. Waldo-gcp architecture queue MetadataWaldo Server App Engine Task Queues Cloud Storage Optimal- waypoints managed VMs (python27) ... endpoints API (OAuth 2) Object Notification Cloude Datastore snapshot managed VMs (nodejs) Android App CSV uploadwaypoints Store/retrieve metadata waypoint map snapshotRESTful APIs for waypoints list, upload waypoints optim al road trip
  • 9. Waldo-gcp dispatch.yaml dispatch: - url: "*/favicon.ico" module: default - url: "waldo-gcp.appspot.com/" module: default - url: "*/notice/*" module: notice - url: "*/waypoints/*" module: optimal-waypoints - url: "*/screenshot/*" module: screenshot - url: "*/google40fc41ccc276e5c5.html" module: ownership - url: "*/*" module: "default" Waldo-gcp architecture Application hierarchy [App Engine Modules in Python](https://goo.gl/p3nl48)
  • 12. Managed VMs Compute | Managed VMs ● Managed VMs ○ The Flexibility of Compute Engine ○ The productivity of App Engine ● Provides best of both ○ IaaS + PaaS
  • 13. Waldo-gcp storage - cloud datastore queue MetadataWaldo Server App Engine Task Queues Cloud Storage Optimal- waypoints managed VMs (python27) ... endpoints API (OAuth 2) Object Notification Cloude Datastore snapshot managed VMs (nodejs) Android App CSV uploadwaypoints Store/retrieve metadata waypoint map snapshot optim al road trip RESTful APIs for waypoints list, upload waypoints
  • 14. Waldo-gcp storage - cloud datastore queue MetadataWaldo Server App Engine Task Queues Cloud Storage Optimal- waypoints managed VMs (python27) ... endpoints API (OAuth 2) Object Notification Cloude Datastore snapshot managed VMs (nodejs) Android App CSV uploadwaypoints Store/retrieve metadata waypoint map snapshot optim al road trip RESTful APIs for waypoints list, upload waypoints
  • 16. Waldo-gcp Storage Storage Cloud Datastore Cloud Storage Cloud SQL Compute Engine (Persistent Disk) BlobNoSQL SQL Block
  • 17. Waldo-gcp storage - cloud datastore queue MetadataWaldo Server App Engine Task Queues Cloud Storage Optimal- waypoints managed VMs (python27) ... endpoints API (OAuth 2) Object Notification Cloude Datastore snapshot managed VMs (nodejs) Android App CSV uploadwaypoints Store/retrieve metadata waypoint map snapshot optim al road trip RESTful APIs for waypoints list, upload waypoints
  • 18. Waldo-gcp storage - cloud storage queue MetadataWaldo Server App Engine Task Queues Cloud Storage Optimal- waypoints managed VMs (python27) ... endpoints API (OAuth 2) Object Notification Cloude Datastore snapshot managed VMs (nodejs) Android App CSV uploadwaypoints Store/retrieve metadata waypoint map snapshot optim al road trip RESTful APIs for waypoints list, upload waypoints
  • 19. Waldo-gcp storage - cloud storage queue MetadataWaldo Server App Engine Task Queues Cloud Storage Optimal- waypoints managed VMs (python27) ... endpoints API (OAuth 2) Object Notification Cloude Datastore snapshot managed VMs (nodejs) Android App CSV uploadwaypoints Store/retrieve metadata waypoint map snapshot optim al road trip RESTful APIs for waypoints list, upload waypoints
  • 21. Waldo-gcp cloud storage queue MetadataWaldo Server App Engine Task Queues Cloud Storage Optimal- waypoints managed VMs (python27) ... endpoints API (OAuth 2) Object Notification Cloude Datastore snapshot managed VMs (nodejs) Android App CSV uploadwaypoints Store/retrieve metadata waypoint map snapshot optim al road trip RESTful APIs for waypoints list, upload waypoints
  • 22. Waypoints GCS Bucket Waldo-gcp cloud storage Waldo Server Android App endpoints API (OAuth 2) Waldo-gcp-file Waldo-gcp-file-in Waldo-gcp-file-image endpoint API upload waypoints address to managed VMs upload optimal address to managed VMs upload screenshot image to
  • 23. GCS Bucket Notification Waldo-gcp setup gcs object notification Waldo Server Android App endpoints API (OAuth 2) Waldo-gcp-file Waldo-gcp-file-in Waldo-gcp-file-image
  • 24. GCS Bucket Notification Waldo-gcp storage Waldo Server Android App endpoints API (OAuth 2) Waldo-gcp-file Waldo-gcp-file-in Waldo-gcp-file-image ● bucket push notification ○ https only ○ domain owned/notice
  • 25. Google Cloud Storage Notification class BucketNotificationHandler(webapp2.RequestHandler): def post(self): # Decode the name and bucket of the notification def notification_decoder(object): if 'kind' in object: return dict(name=object['name'], bucket=object['bucket'], id=object['id']) ... # Add a new task to the queue taskqueue.add(url='/waypoints/', params={ 'bucket': notification['bucket'], 'name': notification['name'], 'id': notification['id'] },queue_name='new-files') ... Create the App Engine backend
  • 26. Waypoints address text file Create the App Engine backend | Waldo-gcp-file "台北市內湖區瑞光路227號1樓", "高雄市鼓山區美術東二路106號", "台南市長榮路一段175號", "臺北市松山區南京東路五段123巷1弄15號", "高雄市五福四路131號2樓"
  • 27. Waypoints address distance_m & distance_s Create the App Engine backend | Waldo-gcp-file-in waypoint1 waypoint2 distance_m duration_s 台南市長榮路一段175號 高雄市五福四路131號2樓 89300 4375 台南市長榮路一段175號 高雄市鼓山區美術東二路 106號 84212 4243 台北市內湖區瑞光路227號1樓 臺北市松山區南京東路五段 123巷1弄15號 5204 763 高雄市五福四路131號2樓 高雄市鼓山區美術東二路 106號 4163 732 台北市內湖區瑞光路227號1樓 高雄市五福四路131號2樓 356184 13972 臺北市松山區南京東路五段 123巷1弄15號 高雄市鼓山區美術東二路 106號 354392 14071 臺北市松山區南京東路五段 123巷1弄15號 高雄市五福四路131號2樓 359450 14230 台北市內湖區瑞光路227號1樓 台南市長榮路一段175號 275002 10503 台北市內湖區瑞光路227號1樓 高雄市鼓山區美術東二路 106號 352764 13541 臺北市松山區南京東路五段 123巷1弄15號 台南市長榮路一段175號 276930 10674
  • 28. Create Managed VMs Server ● Optimal road trip ● screenshot
  • 29. Waldo-gcp waypoint optimization ● Gather the distance between wall waypoints ● Google Map APIs ● genetic algorithm optimal road trip [nbviewer.ipython.org/github/rhiever/Data-Analysis-and-Machine-Learning- Projects/blob/master/optimal-road-trip/Computing the optimal road trip across the U.S..ipynb](http://goo.gl/SYoh53)
  • 30. Pandas ● Python library ● Powerful data structures for data analysis, time series,and statistics optimal road trip http://pandas.pydata.org/
  • 31. Using Managed VMs Waldo-gcp architecture Waldo Server Android App endpoints API (OAuth 2) /notice - url: "*/notice/*" module: notice - url: "*/waypoints/*" module: optimal-waypoints - url: "*/screenshot/*" module: screenshot - url: "*/*" module: default bucket notification entry point optimal road trip screenshot waldo-gcp
  • 32. Managed VMs Waldo-gcp architecture Waldo Server Android App endpoints API (OAuth 2) /notice - url: "*/notice/*" module: notice - url: "*/waypoints/*" module: optimal-waypoints - url: "*/screenshot/*" module: screenshot - url: "*/*" module: default Auto-scaled managed VMs (python27) ... managed VMs (nodejs)
  • 33. Containers on Managed VMs FROM google/appengine-python27 # Install pandas RUN apt-get update && apt-get install -y -q --no-install- recommends python-pandas python-numpy # Install Google Map APIs, Google Client Library ADD requirements.txt /app/ RUN pip install --upgrade pip RUN pip install -r requirements.txt ADD . /app Create the App Engine | Dockerfile [Managed VMs - App Engine — Google Cloud Platform](https://goo.gl/4FFSmm)
  • 34. Optimal waypoint Module Configuration application: waldo-gcp module: optimal-waypoints version: 1 runtime: python27 api_version: 1 threadsafe: yes vm: true automatic_scaling: min_num_instances: 1 max_num_instances: 5 cool_down_period_sec: 60 cpu_utilization: target_utilization: 0.5 Create the App Engine | app.yaml
  • 35. Waldo-gcp screenshot ● Screenshot as a service ● Phantomjs + nodejs snapshot server [fzaninotto/screenshot-as-a-service](https://github.com/fzaninotto/screenshot-as- a-service)
  • 36. Screenshot Module Configuration application: waldo-gcp module: screenshot version: 1 runtime: custome api_version: 1 threadsafe: yes vm: true resources: cpu: .5 memory_gb: 1.3 manual_scaling: instances: 1 snapshot server
  • 38. Road trip on Google Map waldo-gcp google map optimal_route = [/*optimal waypoint calculate by genetic algorithm*/] optimal_route = list(optimal_route) optimal_route += [optimal_route[0]] subset = 0 while subset < len(optimal_route): waypoint_subset = optimal_route[subset:subset + 10] output = "calcRoute("%s", "%s", [" % (waypoint_subset[0], waypoint_subset[-1]) for waypoint in waypoint_subset[1:-1]: output += ""%s", " % (waypoint) if len(waypoint_subset[1:-1]) > 0: output = output[:-2] output += "]);" print(output) print("") subset += 9 ... ● Google Map APIs ○ split max waypoints (11) in one route
  • 39. Road trip on Google Map waldo-gcp google map calcRoute("605嘉義縣阿里山 鄉二萬坪106號", "605嘉義縣阿里山 鄉二萬坪106號", ["500彰化縣彰化市溫泉 路31號", "224九份風景區瑞芳區新北市 ", "971花蓮縣新城 鄉海岸路", "555南投縣魚池 鄉中山路599號"]); function calcRoute(start, end, routes) { switch (start) { case "605嘉義縣阿里山 鄉二萬坪106號" ,"605嘉義縣阿里山 鄉二萬坪106號": directionsDisplay1 = new google.maps.DirectionsRenderer(directionsDisplayOptions); .. } var request = {origin: start, destination: end, waypoints: waypts, optimizeWaypoints: false, travelMode: google.maps.TravelMode.DRIVING }; directionsService.route(request, function (response, status) { case "605嘉義縣阿里山 鄉二萬坪106號" ,"605嘉義縣阿里山 鄉二萬坪106號": directionsDisplay1.setDirections(response); } }); .. } } 1. 605嘉義縣阿里山鄉二萬坪106號 2. 500彰化縣彰化市溫泉路31號 3. 224九份風景區瑞芳區新北市 4. 971花蓮縣新城鄉海岸路 5. 555南投縣魚池鄉中山路599號
  • 41. ● [Here's Waldo: Computing the optimal search strategy for finding Waldo | Randal S. Olson](http://goo. gl/DSOZbv) ● [Computing the optimal road trip across the U.S. | Randal S. Olson](http://goo.gl/pDNfp0) ● [nbviewer.ipython.org/github/rhiever/Data-Analysis-and-Machine-Learning-Projects/blob/master/optimal- road-trip/Computing the optimal road trip across the U.S..ipynb](http://goo.gl/SYoh53) ● [GoogleCloudPlatform/abelana-gcp](https://goo.gl/6L55oa) Reference
  • 42.