SlideShare a Scribd company logo
1 of 43
Download to read offline
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?

More Related Content

Viewers also liked

Viewers also liked (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實戰大公開
 

Similar to 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
 

Similar to 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
 

More from KAI CHU CHUNG

More from 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 經驗分享
 

Recently uploaded

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
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
( 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
 
💚😋 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
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
ydyuyu
 
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
nirzagarg
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
 

Recently uploaded (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
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
 
( 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...
 
💚😋 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💚😋
 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
 
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Salem Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
 

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.