appengine-py-demo / NOTES.txt

default
=======
* http://code.google.com/appengine/whyappengine.html
* http://code.google.com/appengine/docs/python/overview.html
    - web2 (but also Django, CherryPy ....)
    - Go over datastore + services
* Free hosting under .appspot.com
    - Can redirect domain (combine with Google Apps)
* Show admin console 
    - https://appengine.google.com/dashboard?&app_id=s~you-are-el
    - Go over Logs (filter), Versions, Datastore Viewer, Application Settings
* Many examples at http://code.google.com/p/google-app-engine-samples/


hello-appengine
===============
* Go over app.yaml
    - Talk about versions
    - python vs python27
    - shortie.app
* shortie.py
    - get (and other handlers)
    - routing
* run-local.sh
    - Run and show
* push.sh
    - tag deployed version

template
========
* app.yaml
    - libraries section
    - You can also use Django and other templating systems
* shortie.py
    - Jinja2 loader
* index.html

static
======
* app.yaml
    - /static handler
* index.html
    - icon and stylesheet
* static dir
    - Some demo files

post
shortie.py
- post handler

user
====
shortie.py
- Using the user service

index.html
- Show user

template-error
==============

shortie.py
- Check params
- env

index.html
- Show error

counter
=======

shortie.py
- Global counter: same key
- record_hit

index.html
- Show count

counter-txn
===========

Ask if they can see the problem.

shortie.py
- Run in transaction
- Note that you can't run query in transaction (get_counter)

next-id
=======
shortie.py
- next_id (talk about "count = [0]" hack)
- get_counter does not increment

url
===
shortie.py
- URL
- full_url for localhost vs AppEngine

url-error
=========
shortie.py
- Add schema (otherwise redirect won't work)
- Check save error

redirect
========
shortie.py
- Redirect handler
- URL mapping
- log

memcache
========
shortie.py
- For speed
- Less datastore API calls
- Admin memcache viewer

url-hits
========

shortie.py
- inc_hits (transaction again)

user-urls
=========
shortie.py
- user_urls

index.html
- For loop

index.yaml
- Show it's created after run
- Talk about waiting for index
    - appcfg.py update_indexes
    - Look in "Datastore Indexes" in admin panel, wait for "Serving"

queue
=====
shortie.py
- taskqueue in redirect handler
- Hit handler
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.