1 Server versus Client-Side Programming Server-SideClient-Side.
Server-side programming 2 - Stanford University · Server-side programming 2 CS147L Lecture 7 Mike...
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
Action on link before changing page?
- http://groups.google.com/group/cs147-tech-2009/browse_thread/thread/7b26b35f41041a28
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