Server-side programming 2 - Stanford University · Server-side programming 2 CS147L Lecture 7 Mike...

Post on 19-Mar-2021

2 views 0 download

Transcript of Server-side programming 2 - Stanford University · Server-side programming 2 CS147L Lecture 7 Mike...

Server-side programming 2

CS147L Lecture 7Mike Krieger

Friday, November 13, 2009

Intro

Friday, November 13, 2009

Welcome back!

Friday, November 13, 2009

By the end of today...

- Questions from implementations

- A note on Wizard of Oz

- Debugging PHP & Javascript

- More SQLite examples

- Full app: Where my friends at?

Friday, November 13, 2009

Administrative Stuff

- One more lecture next week

- No lecture dead week

- Email me with an honor code statement stating you attended 7/8 of the lectures

Friday, November 13, 2009

Question from Google Group

Friday, November 13, 2009

SolutionGive link an id:

Respond & return true:

Friday, November 13, 2009

Any other current Qs?

Friday, November 13, 2009

A note on WoZ

Friday, November 13, 2009

Wizard of Oz

- Have gotten some questions about camera, SMS, phone...

Friday, November 13, 2009

My app needs to take a picture

- Problem: iPod Touch has no camera

- WoZ: Take a screenshot of camera app from iPhone, bring it up at appropriate moment (or a video of the camera app moving around)

- I put some screenshots & video in the "resources" section

Friday, November 13, 2009

My app needs to make a call

- Problem: iPod Touch has no phone app

- WoZ: Present fake phone call screen (or build quick one in JS), have users act out call

Friday, November 13, 2009

App needs SMS send/receive

- WoZ: pop up Javascript alert() or prompt() with SMS message, have your app respond

Friday, November 13, 2009

Debugging Webapps

Friday, November 13, 2009

Quick Note

- WebKit nightly builds have terrific debugging tools

- http://webkit.org

- Windows, Mac, & Linux

Friday, November 13, 2009

Key Questions

- Is the right data living on the server?

- Is the right data making it back from the server?

- Is the Javascript parsing the data correctly?

Friday, November 13, 2009

Is the right data living on the server?

- Run same SELECT command using command-line tool

Friday, November 13, 2009

dumpdb.phpIn this week's folder, will go through all your entries in all your tables and print them out.

Friday, November 13, 2009

Running PHP from commandline

php yourfilename.php

No browser required!

Friday, November 13, 2009

Is it making it back?

- Just browser will work

- On Mac, can also use HTTP Analyzer

- Use Inspector's Request view

Friday, November 13, 2009

DemosJust browser (friends-1.php)HTTP ClientSafari Inspector

Friday, November 13, 2009

Debugging Javascript

Friday, November 13, 2009

General approach

- Set breakpoints in Safari

- Use console.log when breakpoints are impractical / too much work

Friday, November 13, 2009

Demosdebug-1 to debug-3.html

Friday, November 13, 2009

FriendFinder

Friday, November 13, 2009

Demo app features

- Locate user (we know how to do this)

- Update a central DB of locations

- Show:

- People around me

- Friend list

Friday, November 13, 2009

Approach

- Write JS and PHP separately, join near the end (you can do this on your team too)

- Use browser/HTTP Client to debug PHP calls

- Use Inspector to debug & develop JS & use fake data in meantime

Friday, November 13, 2009

Getting started

Friday, November 13, 2009

friends-0

- jQTouch template

Friday, November 13, 2009

friends-0.html

Friday, November 13, 2009

friends-1.html

- Skeleton menu

Friday, November 13, 2009

friends-1.html

Friday, November 13, 2009

friends-2.html

- Get location

- Get a user's status

Friday, November 13, 2009

Now-familiar location

Friday, November 13, 2009

prompt()

- Takes a string, returns whatever was entered into the prompt window

Friday, November 13, 2009

Callback

Friday, November 13, 2009

friends-3.html

- Provide confirmation that the status was sent to server

Friday, November 13, 2009

Feedback

Friday, November 13, 2009

friends-4.html

- Get a username and save it for this particular user using window.localStorage

Friday, November 13, 2009

localStorage

- HTML5 specification

- Provides key/value store

- Easier & more robust than using cookies

Friday, November 13, 2009

Two functionswindow.localStorage.getItem("itemName");

window.localStorage.setItem("itemName", "value");

// example:

if (!window.localStorage.getItem("city")) {� // prompt user for city� var city = prompt("What city are you in?");� window.localStorage.setItem("city", city);}

Friday, November 13, 2009

global object

Friday, November 13, 2009

Friday, November 13, 2009

friends-5.php

- Cache the found location globally so we don't have to fetch it every time we switch pages

- Have getLocation handle different callbacks

Friday, November 13, 2009

Save Position

Friday, November 13, 2009

Callbacks

Friday, November 13, 2009

Flexibility

Friday, November 13, 2009

friends-6

- Beginning of findNearby function

Friday, November 13, 2009

Friday, November 13, 2009

friends-7.php

- Import geoutil from last week's code

- Adding placeholder JSON object for response

Friday, November 13, 2009

Friday, November 13, 2009

Friday, November 13, 2009

friends-8.php

- getFriends() function

-

Friday, November 13, 2009

Server-side

Friday, November 13, 2009

Preparing the DB

- preparedb.php

Friday, November 13, 2009

Make the tables

Friday, November 13, 2009

Clear the tables

Friday, November 13, 2009

Fixture data

Friday, November 13, 2009

DB Commands

Friday, November 13, 2009

Iterate over friends

Friday, November 13, 2009

Iterate over others

Friday, November 13, 2009

checkin.php// grab data

Friday, November 13, 2009

Insert row

Friday, November 13, 2009

nearby.php// grab params

Friday, November 13, 2009

Grab all checkins// in real app we would search in the SELECT

Friday, November 13, 2009

Find nearby

Friday, November 13, 2009

Sort & Print

Friday, November 13, 2009

friends.php// JOIN

Friday, November 13, 2009

Run command

Friday, November 13, 2009

Iterate over results

Friday, November 13, 2009

Sort & Print

Friday, November 13, 2009

Closing the loop

Friday, November 13, 2009

friends-9.html

- .get -> .getJSON

- Remove placeholder data

Friday, November 13, 2009

Final Demo

Friday, November 13, 2009

Q’s?

Friday, November 13, 2009