predevcamp san diego slides

51
WIFI: Linksys (unprotected)

Upload: david-horn

Post on 11-Nov-2014

3.111 views

Category:

Travel


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: PreDevCamp San Diego slides

WIFI: Linksys (unprotected)

Page 2: PreDevCamp San Diego slides

Welcome to PreDevCamp!

Wifi: linksys (unencrypted)

Page 3: PreDevCamp San Diego slides

Introductions

Name/handle3 tags

Page 4: PreDevCamp San Diego slides

I can haz Pre?

Page 5: PreDevCamp San Diego slides

IDE

(TextMate)

Page 6: PreDevCamp San Diego slides

SDK Installed?

Page 7: PreDevCamp San Diego slides

webOS experience

Page 8: PreDevCamp San Diego slides

HTML/Javascript experience

Page 9: PreDevCamp San Diego slides

Javascript FrameworksPROTOTYPE

SCRIPTACULOUS

Page 10: PreDevCamp San Diego slides

HTML5 knowledge?

Page 11: PreDevCamp San Diego slides

CANVAS interest

Page 12: PreDevCamp San Diego slides

GPS interest

Page 13: PreDevCamp San Diego slides

Accelerometer interest

Page 14: PreDevCamp San Diego slides

Background apps

Page 15: PreDevCamp San Diego slides

What’s your app?

• Twitter• Foursquare• Porting iPhone apps• GPS loggers• Productivity/todo app• Exercise logger

Page 16: PreDevCamp San Diego slides

Schedule10:00 Doors open10:30 Welcome session10:45 to 12:30 Intro to Pre development12:30 to 1:30 Lunch1:30 to 6:00 Open hacking & more talks6:00 to 6:30 Demo your app & prizes!6:30 Closing remarks7:00 Cleanup8:00 Afterparty

Page 17: PreDevCamp San Diego slides

Before we begin…

Who needs the SDK?Got Windows 7 and having trouble?

Page 18: PreDevCamp San Diego slides

Ready?

Let’s begin!

Page 19: PreDevCamp San Diego slides

Go into dev mode

upupdowndownleftrightleftrightbastart

Page 20: PreDevCamp San Diego slides

Got root?

http://tr.im/preRoot

Page 21: PreDevCamp San Diego slides

Mac users

Type novaterm at the command line…done!

Page 22: PreDevCamp San Diego slides

Windows users

Novaterm proxy @ http://tr.im/novaterm

Page 23: PreDevCamp San Diego slides

Specs

320px

480px

Top bar: 50px

Notification bar:20px up to 240px

Shrink screenshots by65%

Page 24: PreDevCamp San Diego slides

Resources

• http://webos-internals.org• http://precentral.net• http://developer.palm.com• PreDevCamp IRC!– Irc.freenode.net #predevcamp

Page 25: PreDevCamp San Diego slides

Intro to app dev

Hello world!

Page 26: PreDevCamp San Diego slides

Generate a project

palm-generate -p "{title:'Hello World', id:com.mystuff.hello, version:'1.0.0'}" HelloWorld

Page 27: PreDevCamp San Diego slides

File Structure

• app/• images/• Appinfo.json• Icon.png• Index.html• Sources.json

Page 28: PreDevCamp San Diego slides

appinfo.json

{"id": "com.palm.developer","version": "1.0.0","vendor": "My Company","type": "web","main": "index.html","title": "Hello World","icon": "icon.png"

}

Page 29: PreDevCamp San Diego slides

sources.json[

{"source": "app\/assistants\/app-assistant.js"},

{"source": "app\/assistants\/stage-assistant.js"},

{"source": "app\/assistants\/main-assistant.js","scenes": "main"}]

Page 30: PreDevCamp San Diego slides

Icon.png

• 64x64

Page 31: PreDevCamp San Diego slides

Index.html<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>

<title>Hello World</title><script src="/usr/palm/frameworks/mojo/mojo.js" type="text/javascript" x-mojo-version="1" />

<!-- application stylesheet should come in after the one loaded by the framework --><link href="stylesheets/helloworld.css" media="screen" rel="stylesheet" type="text/css" />

</head><body>

<h2>This text verifies your application is running.</h2><p>To create a fully functional Palm application create a scene and remove this text from index.html. See the documentation on Palm Applications for more information on creating applications and scenes.</p>

</body></html>

Page 32: PreDevCamp San Diego slides

App/

• Assistants– Javascript files that govern the html files

• Models– Data sources

• Views– HTML that defines the layout of a screen

Page 33: PreDevCamp San Diego slides

Scenes

Any particular view/assistant combination in an app is called a

“scene”

Page 34: PreDevCamp San Diego slides

Make a scene!

palm-generate -t new_scene -p "name:First" HelloWorld

Page 35: PreDevCamp San Diego slides

First-scene.html

<div id="main" class="palm-hasheader"><div class="palm-header">Header</div><div id="count" class="palm-body-text">0</div><div id="MyButton" name="MyButton1" x-mojo-element="Button"></div>

</div>

Page 36: PreDevCamp San Diego slides

Stage-assistant.js

function StageAssistant () { }

StageAssistant.prototype.setup = function() {this.controller.pushScene('first');

}

Page 37: PreDevCamp San Diego slides

First-assistant.js

FirstAssistant.prototype.handleButtonPress = function(event){

this.total++;

this.controller.get('count').update(this.total);}

Page 38: PreDevCamp San Diego slides

First-assistant.js (cont.)• FirstAssistant.prototype.setup = function() {

// set the initial total and display itthis.total=0;this.controller.get('count').update(this.total);

// a local object for button attributesthis.buttonAttributes = {};

// a local object for button modelthis.buttonModel = {buttonLabel : 'TAP HERE',buttonClass : '',disabled : false};

// set up the buttonthis.controller.setupWidget("MyButton", this.buttonAttributes, this.buttonModel);// bind the button to its handlerMojo.Event.listen(this.controller.get('MyButton'), Mojo.Event.tap, this.handleButtonPress.bind(this));}

Page 39: PreDevCamp San Diego slides

Recap

• Theater metaphor– Stage: manages the whole app– View: the layout/structure of a page (HTML)– Assistant: the code/behavior of a page (JS)– Scene: combo of a view and an assistant

Page 40: PreDevCamp San Diego slides

Models

• …

Page 41: PreDevCamp San Diego slides

Install your app!

palm-launch –d usb|tcp com.example.app

Page 42: PreDevCamp San Diego slides

Package for Homebrew Install

palm-package

Page 43: PreDevCamp San Diego slides

Services API

GPSAccelerometer

palm-install –l –d usb

Page 44: PreDevCamp San Diego slides

GPSthis.controller.serviceRequest('palm://com.palm.location', {

method:“getCurrentPosition",parameters:{}, //accuracy=int,maximumAge=int,responseTime=intonSuccess:{}, //pointer to async functiononFailure:{} //}});

onSuccessFunction = function(heading,hAccur,lat,lon,t,vel,vAccur) { … }

onFailureFunction = function(errorCode) { … }

Page 45: PreDevCamp San Diego slides

getReverseLocationthis.controller.serviceRequest('palm://com.palm.location', {

method:"getReverseLocation",parameters:{}, //latitude=double,longitude=doubleonSuccess:{},onFailure:{}}});

onSuccessFunction = function(address,errorCode) { … }

onFailureFunction = function(errorCode) { … }

Page 46: PreDevCamp San Diego slides

Continuous trackthis.trackingHandle =

this.controller.serviceRequest('palm://com.palm.location', {method:"startTracking",parameters: {"subscribe":true},onSuccess: this.trackingSuccessResponseHandler.bind(this),onFailure: this.trackingFailedResponseHandler.bind(this)});

this.trackingHandle.cancel();

Page 47: PreDevCamp San Diego slides

Accelerometer

Set ability to switch orientationif (this.controller.stageController.setWindowOrientation) {

this.controller.stageController.setWindowOrientation("free");}

Run code when orientation changesthis.controller.listen(document, 'orientationchange',

this.handleOrientation.bindAsEventListener(this));

handleOrientation(event) { … } //.position=[1:5], .roll=float, .pitch=float

Page 48: PreDevCamp San Diego slides

Shake!this.controller.listen(document, 'shakestart',

this.handleShaking.bindAsEventListener(this));this.controller.listen(document, 'shaking',

this.handleShaking.bindAsEventListener(this));this.controller.listen(document, 'shakeend',

this.handleShaking.bindAsEventListener(this));

handleShaking(event) = { … } //.magnitude=float (in number of g’s of acceleration)

Page 49: PreDevCamp San Diego slides

In the rawthis.controller.listen(document, 'acceleration',

this.handleAcceleration.bindAsEventListener(this));

handleAcceleration(event) = { … } //.accelX=float,.accelY=float,.accelZ=float//.time=time

Page 50: PreDevCamp San Diego slides

Debugging

palm-launch -i com.example.app

…then launch Inspector (part of SDK)

Page 51: PreDevCamp San Diego slides

HTML5!

Take it away, Ted!