Programming Google App Engine /
Google App Engine makes it easy to create a web application that can serve millions of people as easily as serving hundreds, with minimal up-front investment. With Programming Google App Engine , Google engineer Dan Sanderson provides practical guidance for designing and developing your application...
Clasificación: | Libro Electrónico |
---|---|
Autor principal: | |
Formato: | Electrónico eBook |
Idioma: | Inglés |
Publicado: |
Sebastopol, CA :
O'Reilly,
2012.
|
Edición: | 2nd ed. |
Temas: | |
Acceso en línea: | Texto completo (Requiere registro previo con correo institucional) |
Tabla de Contenidos:
- 1.Introducing Google App Engine
- The Runtime Environment
- The Static File Servers
- The Datastore
- Entities and Properties
- Queries and Indexes
- Transactions
- The Services
- Namespaces
- Google Accounts, OpenID, and OAuth
- Task Queues and Cron Jobs
- Developer Tools
- The Administration Console
- Things App Engine Doesn't Do... Yet
- Getting Started
- 2.Creating an Application
- Setting Up the SDK
- Installing the Python SDK
- Installing the Java SDK
- Developing the Application
- The User Preferences Pattern
- Developing a Python App
- Developing a Java App
- The Development Console
- Registering the Application
- The Application ID and Title
- Setting Up a Domain Name
- Google Apps and Authentication
- Uploading the Application
- Using Two-Step Verification
- Introducing the Administration Console
- 3.Configuring an Application
- The App Engine Architecture
- Configuring a Python App
- Runtime Versions
- Configuring a Java App
- Domain Names
- App IDs and Versions
- App IDs and Versions in Python
- App IDs and Versions in Java
- Multithreading
- Request Handlers
- Request Handlers in Python
- Request Handlers in Java
- Static Files and Resource Files
- Static Files in Python
- Static Files in Java
- Secure Connections
- Secure Connections in Python
- Secure Connections in Java
- Authorization with Google Accounts
- Authorization in Python
- Authorization in Java
- Environment Variables
- Inbound Services
- Custom Error Responses
- Administration Console Custom Pages
- More Python Features
- Python Libraries
- Built-in Handlers
- Includes
- Java Servlet Sessions
- 4.Request Handlers and Instances
- The Runtime Environment
- The Sandbox
- Quotas and Limits
- The Python Runtime Environment
- The Java Runtime Environment
- The Request Handler Abstraction
- Introducing Instances
- Request Scheduling and Pending Latency
- Warm-up Requests
- Resident Instances
- The Instances Console
- Instance Hours and Billing
- Instance Classes
- 5.Datastore Entities
- Entities, Keys, and Properties
- Introducing the Python Datastore API
- Introducing the Java Datastore API
- Property Values
- Strings, Text, and Blobs
- Unset Versus the Null Value
- Multivalued Properties
- Keys and Key Objects
- Using Entities
- Getting Entities Using Keys
- Inspecting Entity Objects
- Saving Entities
- Deleting Entities
- Allocating System IDs
- The Development Server and the Datastore
- 6.Datastore Queries
- Queries and Kinds
- Query Results and Keys
- GQL
- The Python Query API
- The Query Class
- GQL in Python
- Retrieving Results
- Keys-Only Queries
- The Java Query API
- Building the Query
- Fetching Results with PreparedQuery
- Keys-Only Queries in Java
- Introducing Indexes
- Automatic Indexes and Simple Queries
- All Entities of a Kind
- One Equality Filter
- Greater-Than and Less-Than Filters
- One Sort Order
- Queries on Keys
- Kindless Queries
- Custom Indexes and Complex Queries
- Multiple Sort Orders
- Filters on Multiple Properties
- Multiple Equality Filters
- Not-Equal and IN Filters
- Unset and Nonindexed Properties
- Sort Orders and Value Types
- Queries and Multivalued Properties
- A Simple Example
- MVPs in Python
- MVPs in Java
- MVPs and Equality Filters
- MVPs and Inequality Filters
- MVPs and Sort Orders
- Exploding Indexes
- Query Cursors
- Cursors in Python
- Cursors in Java
- Projection Queries
- Projection Queries in Python
- Projection Queries in Java
- Configuring Indexes
- Index Configuration for Python
- Index Configuration for Java
- 7.Datastore Transactions
- Entities and Entity Groups
- Keys, Paths, and Ancestors
- Ancestor Queries
- What Can Happen in a Transaction
- Transactional Reads
- Eventually Consistent Reads
- Transactions in Python
- Transactions in Java
- How Entities Are Updated
- How Entities Are Read
- Batch Updates
- How Indexes Are Updated
- Cross-Group Transactions
- 8.Datastore Administration
- Inspecting the Datastore
- Managing Indexes
- The Datastore Admin Panel
- Accessing Metadata from the App
- Querying Statistics
- Querying Metadata
- Index Status and Queries
- Entity Group Versions
- Remote Controls
- Setting Up the Remote API for Python
- Setting Up the Remote API for Java
- Using the Remote Shell Tool
- Using the Remote API from a Script
- 9.Data Modeling with Python
- Models and Properties
- Property Declarations
- Property Value Types
- Property Validation
- Nonindexed Properties
- Automatic Values
- List Properties
- Models and Schema Migration
- Modeling Relationships
- One-to-Many Relationships
- One-to-One Relationships
- Many-to-Many Relationships
- Model Inheritance
- Queries and PolyModels
- Creating Your Own Property Classes
- Validating Property Values
- Marshaling Value Types
- Customizing Default Values
- Accepting Arguments
- 10.The Java Persistence API
- Setting Up JPA
- Entities and Keys
- Entity Properties
- Embedded Objects
- Saving, Fetching, and Deleting Objects
- Transactions in JPA
- Queries and JPQL
- Relationships
- For More Information
- 11.The Memory Cache
- Calling Memcache from Python
- Calling Memcache from Java
- Keys and Values
- Setting Values
- Setting Values that Expire
- Adding and Replacing Values
- Getting Values
- Deleting Values
- Locking a Deleted Key
- Atomic Increment and Decrement
- Compare and Set
- Batching Calls to Memcache
- Memcache Batch Calls in Python
- Memcache Batch Calls in Java
- Memcache and the Datastore
- Handling Memcache Errors
- Memcache Administration
- Cache Statistics
- Flushing the Memcache
- 12.Large Data and the Blobstore
- Accepting User Uploads
- Web Forms and MIME Multipart Data
- Blobstore Upload Requests
- Handling Uploads in Python
- Handling Uploads in Java
- Using BlobInfo Entities
- Using BlobInfo Entities in Python
- Using BlobInfo Entities in Java
- Serving Blobstore Values
- Serving Blobstore Values in Python
- Serving Blobstore Values in Java
- Deleting Blobstore Values
- Reading Blobstore Values
- Fetching Byte Ranges
- Reading Values with Streams
- A Complete Example
- A Blobstore Example in Python
- A Blobstore Example in Java
- 13.Fetching URLs and Web Resources
- Fetching URLs in Python
- Fetching URLs in Java
- Outgoing HTTP Requests
- The URL
- The HTTP Method and Payload
- Request Headers
- HTTP Over SSL (HTTPS)
- Request and Response Sizes
- Request Deadlines
- Handling Redirects
- Response Objects
- 14.Sending and Receiving Email Messages
- Sending Email Messages
- Sending Email from the Development Server
- Sender Addresses
- Recipients
- Attachments
- Sending Email in Python
- Sending Email in Java
- Receiving Email Messages
- Receiving Email in Python
- Receiving Email in Java
- 15.Sending and Receiving Instant Messages with XMPP
- Inviting a User to Chat
- Sending Invitations in Python
- Sending Invitations in Java
- Sending Chat Messages
- Sending Chat Messages in Python
- Sending Chat Messages in Java
- Receiving Chat Messages
- Receiving Chat Messages in Python
- Receiving Chat Messages in Java
- Handling Error Messages
- Managing Presence
- Managing Subscriptions
- Managing Presence Updates
- Probing for Presence
- Checking a Google Talk User's Status
- 16.Task Queues and Scheduled Tasks
- Configuring Task Queues
- Enqueuing a Task
- Enqueuing a Task in Python
- Enqueuing a Task in Java
- Task Parameters
- Payloads
- Task Names
- Countdowns and ETAs
- Push Queues
- Task Requests
- Processing Rates and Token Buckets
- Retrying Push Tasks
- Pull Queues
- Enqueuing Tasks to Pull Queues
- Leasing and Deleting Tasks
- Retrying Pull Queue Tasks
- Transactional Task Enqueueing
- Transactional Tasks in Python
- Transactional Tasks in Java
- Task Chaining
- Task Queue Administration
- Deferring Work
- Deferring Work in Python
- Deferring Work in Java
- Scheduled Tasks
- Configuring Scheduled Tasks
- Specifying Schedules
- 17.Optimizing Service Calls
- Calling Services Asynchronously
- Asynchronous Calls in Python
- Asynchronous Calls in Java
- Visualizing Calls with AppStats
- Installing AppStats for Python
- Installing AppStats for Java
- Using the AppStats Console
- 18.The Django Web Application Framework
- Using the Bundled Django Library
- Creating a Django Project
- Hooking It Up to App Engine
- -- Creating a Django App
- Using Django Templates
- Using Django Forms
- The django-nonrel Project
- 19.Managing Request Logs
- Writing to the Log
- Logging in Python
- Logging in Java
- Viewing Recent Logs
- Downloading Logs
- Logs Retention
- Querying Logs from the App
- Querying Logs in Python
- Querying Logs in Java
- Flushing the Log Buffer
- 20.Deploying and Managing Applications
- Uploading an Application
- Using Versions
- Managing Service Configuration
- Application Settings
- Managing Developers
- Quotas and Billing
- Getting Help.