[google-appengine] App Engine O'Reilly ebook $9.99 today only

2010-09-22 Thread Dan Sanderson
Hi all -

My book, Programming Google App Engine, is O'Reilly's EBook Deal of
the Day for September 22.  For the next 24 hours, you can buy the
ebook edition of PGAE from O'Reilly's website for only $9.99 (73%
off!).  Use the code DDPGA during checkout.

http://oreilly.com/catalog/9780596522728/
http://twitter.com/oreillymedia

Be sure to see the website for the book for up-to-date code samples
and news:

http://ae-book.appspot.com/

Thanks!
-- Dan

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Announcing: Programming Google App Engine, 2nd Edition Rough Cuts

2011-08-19 Thread Dan Sanderson
Greetings all -

I'm pleased to announce that *Programming Google App Engine, 2nd Edition* is
now available through O'Reilly Media's early-access Rough Cuts program:
  http://oreilly.com/catalog/0636920017547

Book blog announcement:
  http://ae-book.appspot.com/blog/entry/The_2nd_Edition_Has_Begun

Rough Cuts gets you early access to drafts and online access to the final
draft, and O'Reilly also offers a print pre-order + Rough Cuts bundle.  We
did Rough Cuts for the 1st ed, and it was especially useful.  It was great
to hear from the community about what you wanted to see in the book, and
work that feedback into the text in real time.  I hope you'll consider
joining us for the 2nd ed.

Let me know if you have any questions, feedback on the 1st edition, or ideas
of what you want to see covered in the new edition.

Many thanks!
-- Dan

P.S.  Of course, the 1st edition is still available for purchase, in print,
Kindle, PDF + ePub + Mobi + DAISY, and iPhone editions.  The book is also
available in Japanese.  Check out the links in the sidebar of the book
website:
  http://ae-book.appspot.com/

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Programming Google App Engine book and code samples now available

2010-01-25 Thread Dan Sanderson
Greetings App Engine developers -

The book *Programming Google App Engine*, written by yours truly and
published by O'Reilly Media, is now available in bookstores everywhere. The
book covers everything from the datastore to task queues, using both Java
and Python.

http://www.amazon.com/Programming-Google-App-Engine-Infrastructure/dp/059652272X
http://oreilly.com/catalog/9780596522735/

All of the code from the book is now available for download and online
browsing. The code is released under the Apache 2.0 license, and is
available as a Zip archive and accessible via a Mercurial repository in
Google Project Hosting. Even if you don't (yet) have a copy of the book, the
samples may be useful as a reference. And it's free! :)

http://ae-book.appspot.com/
http://ae-book.appspot.com/downloads/
http://code.google.com/p/pgae-examples/

Also check out the website for the book for updates (there's a blog feed)
and errata. I'll be maintaining the code samples and testing them with
releases of App Engine for the near future.

Feedback, bug reports and questions about the book and these samples are
most welcome. Let me know what you think!

Thanks!
-- Dan

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Reg. HelloWorld! Tutorial: Problems Running an Error-Free Guestbook Application

2008-10-20 Thread Dan Sanderson
What errors are you getting?
-- Dan

On Mon, Oct 20, 2008 at 11:17 AM, [EMAIL PROTECTED] <
[EMAIL PROTECTED]> wrote:

>
> Running Python Launcher Version 2.5.1 & Google App Engine SDK release:
> 1.1.5
> on Mac OS X Version 10.4.11
>
>
> First time user, so far the tutorial is easy to follow. I get to
> "Using Datastore" "Edit the Guestbook handler to appear similar to the
> following..." and now my application will not run error-free. I simply
> copied and pasted the code found here:
> http://code.google.com/appengine/docs/gettingstarted/usingdatastore.html
>
> Up till this point I receive errors when refreshing http://localhost:8080/
> in my safari browser.
>
> This is the code I am running:->
>
> from google.appengine.ext import db
> import cgi
>
> from google.appengine.api import users
> from google.appengine.ext import webapp
> from google.appengine.ext.webapp.util import run_wsgi_app
>
> class MainPage(webapp.RequestHandler):
>  def get(self):
>self.response.out.write("""
>  
>
>  
> textarea>
>
>  
>
>  """)
>
>
> class Guestbook(webapp.RequestHandler):
>  def post(self):
>greeting = Greeting()
>
>if users.get_current_user():
>  greeting.author = users.get_current_user()
>
>greeting.content = self.request.get('content')
>greeting.put()
>self.redirect('/')
>
> def main():
>  run_wsgi_app(application)
>
> if __name__ == "__main__":
>  main()
>
> END-->
>
> If i finish and "Edit the MainPage handler to appear similar to the
> following..." I will also run into a massive error message when
> viewing the application on Safari browser.
>
> This would then be the code I am runnnig: -
> >
>
> from google.appengine.ext import db
> import cgi
>
> from google.appengine.api import users
> from google.appengine.ext import webapp
> from google.appengine.ext.webapp.util import run_wsgi_app
>
> class MainPage(webapp.RequestHandler):
>  def get(self):
>self.response.out.write('')
>
>greetings = db.GqlQuery("SELECT * FROM Greeting ORDER BY date DESC
> LIMIT 10")
>
>for greeting in greetings:
>  if greeting.author:
>self.response.out.write('%s wrote:' %
> greeting.author.nickname())
>  else:
>self.response.out.write('An anonymous person wrote:')
>  self.response.out.write('%s' %
>  cgi.escape(greeting.content))
>
># Write the submission form and the footer of the page
>self.response.out.write("""
>  
> textarea>
>
>  
>
>  """)
>
>
> class Guestbook(webapp.RequestHandler):
>  def post(self):
>greeting = Greeting()
>
>if users.get_current_user():
>  greeting.author = users.get_current_user()
>
>greeting.content = self.request.get('content')
>greeting.put()
>self.redirect('/')
>
> def main():
>  run_wsgi_app(application)
>
> if __name__ == "__main__":
>  main()
>
> END>
>
>
> What am I doing wrong?
> I reload http://localhost:8080/ in my browser and cannot post, I get a
> full page of Errors. Thank u.
>
> ~Adrie S.
> SilvaPrints.com
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Inconsistency in documented semantics of transactions.

2008-10-22 Thread Dan Sanderson
On Wed, Oct 22, 2008 at 5:28 PM, Ian MacLarty <[EMAIL PROTECTED]>wrote:
...

> However the article
> http://code.google.com/appengine/articles/transaction_isolation.html
> gives the impression that the transaction isolation level is read
> committed.  That would imply that another concurrent transaction
> *could* update the counter value after the get, but before the put
> (even inside a transaction).


While an update to an entity group is in progress, the datastore bounces
other attempts to update the group.  (The client retries several times
before giving up.)  It does this during the entire transaction, so the
entity group will not change between the beginning of the transaction and
the end of the transaction.  In the increment_counter example, this includes
the get() as well as the put().  The client knows which group to update
because it queues all datastore changes during the transaction code, then
executes them all at the end.

The transaction isolation article is more about reads.  Reads succeed even
while another client is performing an update.  Up to the first milestone,
reads return the entity in the state prior to the update.  After the first
milestone but before the second, reads return the entity in its new state,
but queries match the old state.  After the second milestone, both reads and
queries use the new state.


> Would someone mind clarifying this for me?  Is the counter example
> above guaranteed to atomically update the counter if it succeeds?  If
> that is the case, then I think the isolation level article is a bit
> misleading, because the isolation level would be closer to
> serializable.


Are there a particular passages in the article that imply this?  Maybe it
could be clarified in the text.

Thanks!
-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: is there a way to tell the deployer to ignore some directories and/or files?

2008-10-22 Thread Dan Sanderson
Check out the skip_files configuration directive:
http://code.google.com/appengine/docs/configuringanapp.html#Skipping_Files

-- Dan

On Wed, Oct 22, 2008 at 7:54 PM, Mariano Benitez <[EMAIL PROTECTED]> wrote:

>
> I've moved my data directory inside the app "gae/trunk/data". I've
> marked it "ignored" for subversion, but I assume the appengine is
> still uploading everything.
>
> I think I read somewhere that there's no way to ignore some files, but
> I am just asking again... (maybe there's a new answer now).
>
> MAriano
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Use cases for Memcache using the client vs. the functions?

2008-10-27 Thread Dan Sanderson
The object interface is intended to be similar to the Python interface to
Danga Interactive's Memcache.  The equivalent functions are for convenience,
since the object doesn't need to maintain state, like a connection to a
particular Memcache server.  No other differences that I'm aware of.
-- Dan

On Mon, Oct 27, 2008 at 7:15 AM, pr3d4t0r <[EMAIL PROTECTED]> wrote:

>
> Greetings,
>
> Is the reason there are two Memcache APIs, one for the Memcache
> client, one for calling the functions directly, just having one that's
> more OO than the other?  Are there any use-cases for preferring one
> vs. the other?  It looks at first glance like Client is just a wrapper
> around the functions and doesn't provide any additional features.
>
> Are there any use cases where one is preferred over the other?
>
> (I'm thinking of the differences between running db.Query vs. GqlQuery
> and how they execute queries.  Maybe there is something like that in
> play here that I've missed.)
>
> Thanks in advance and have a fantastic week,
>
> E
> http://www.istheserverup.com
> http://www.teslatestament.com
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Complete Newb Question

2008-10-27 Thread Dan Sanderson
You shouldn't need cgi.escape(), either:
class MainPage(webapp.RequestHandler):
  def get(self):
data = self.request.get('123xyz')
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello world! ' + data)

http://localhost:8080/?123xyz=blah%20blah

-- Dan

On Mon, Oct 27, 2008 at 1:16 AM, loell <[EMAIL PROTECTED]> wrote:

>
> you need to enclose that in a class like the examples you've been
> reading,
>
> and enclose that line, specifically on a get method. let's say for
> example you named the class as  "MainPage" in the above example , then
> it must be mapped in "/"  like
>
> ---
>
> from google.appengine.ext.webapp import Request
> from google.appengine.ext import webapp
>
> class MainPage(webapp.RequestHandler):
>def get(self):
> test = cgi.escape(self.request.get('test')
>#eeewww, i'm using print :P
>print test
>
>
> application = webapp.WSGIApplication([('/',MainPage)], debug = True)
>
> def main():
>run_wsgi_app(application)
>
> if __name__ == "__main__":
>main()
>
> On Oct 27, 3:44 pm, fishfin <[EMAIL PROTECTED]> wrote:
> > I've been reading through the documentation a little bit more
> > carefully and decided to try this:
> >
> > from google.appengine.ext.webapp import Request
> >
> > test = Request.get(test)
> >
> > and I get an error message about how something is insufficient...
> >
> > On Oct 26, 7:01 pm, jeremy <[EMAIL PROTECTED]> wrote:
> >
> > > Are you calling those print statements in the same scope as
> > > MainPage.get? If you could paste your entire handler script, that
> > > might help us identify what's going wrong.
> >
> > > On Oct 26, 1:05 am, fishfin <[EMAIL PROTECTED]> wrote:
> >
> > > > Ok, I don't think I'm being very clear = )
> >
> > > > Say a user visits my website with this address bar:
> https://www.mywebsite.com/index.htm?data=123xyz
> >
> > > > I would like to place the '123xyz' into a variable so that I can
> > > > access it whenever I want to. I think that loell's code does that
> > > > except that I can't figure out how to get the value of 'data.'
> >
> > > > After using this: (and importing cgi and google.appengine.ext.webapp)
> >
> > > > class MainPage(webapp.RequestHandler):
> > > > def get(self):
> > > > data = cgi.escape(self.request.get('data'))
> >
> > > > I've tried:
> > > > print data
> > > > print MainPage.data
> > > > print MainPage.self.data
> > > > etc.
> >
> > > > I can't figure out how to access the '123xyz' from the url. I get the
> > > > same error message every time: name 'data' is not defined
> >
> > > > On Oct 25, 4:35 pm, Hakayati <[EMAIL PROTECTED]> wrote:
> >
> > > > > You can retrieve URL parameters from the request object like this:
> >
> > > > > # e.g.www.mysite.com/?my_parameter=hello%20world
> >
> > > > > class MainPage(webapp.RequestHandler):
> > > > >   def get(self):
> > > > > my_parameter = ''
> > > > > for param in self.request.query.split('&'):
> > > > >   if param.startswith('my_parameter'):
> > > > > my_parameter  = param.split('=')[1]
> >
> > > > > On 25 Okt., 07:40, fishfin <[EMAIL PROTECTED]> wrote:
> >
> > > > > > I'm coming over from php and am trying to figure out how to do
> > > > > > something.
> >
> > > > > > In php you can put data in the user's address bar (index.php?
> > > > > > data=somedata) and then get it from the address bar really easily
> (you
> > > > > > just use $_GET and $_REQUEST), so I was wondering what the
> equivalent
> > > > > > is in python?
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: A minor mistake in doc of Datastore API

2008-10-29 Thread Dan Sanderson
Good catch!  You're right, the code sample does not match the description.
 The intent was for the new object to be created with a key name based on
account_id.  I'll fix it.
Thanks!
-- Dan

On Wed, Oct 29, 2008 at 2:17 AM, an0 <[EMAIL PROTECTED]> wrote:

>
>
> http://code.google.com/appengine/docs/datastore/transactions.html#Uses_For_Transactions
>
> >> Another common use for transactions is to update an entity with a named
> >> key, or create it if it doesn't yet exist:
> >>
> >> class SalesAccount(db.Model):
> >>   address = db.PostalAddressProperty()
> >>   phone_number = db.PhoneNumberProperty()
> >>
> >> def create_or_update(parent_obj, account_id, address, phone_number):
> >>   obj = db.get(Key.from_path("SalesAccount", account_id,
> parent=parent_obj))
> >>   if not obj:
> >> obj = SalesAccount(parent=parent_obj,
> >>address=address,
> >>phone_number=phone_number)
> >>   else:
> >> obj.address = address
> >> obj.phone_number = phone_number
> >>
> >>   obj.put()
> >>
> >> As before, a transaction is necessary to handle the case where another
> user
> >> is attempting to create or update an entity with the same account_id.
> >> Without a transaction, if the entity does not exist and two users
> attempt
> >> to create it, the second will fail. With a transaction, the second
> attempt
> According to Paths and Key Uniqueness(http://code.google.com/appengine/
> docs/datastore/keysandentitygroups.html#Paths_and_Key_Uniqueness
> ),
> just same kind and same parent do no mean same key, since the ids or
> key names differ. Without the same key, obj2 should be put without
> clash, even with same properties of obj1. Thus, the second should not
> fail even without a transaction.
> >> will retry, notice that the entity now exists, and update the entity
> >> instead.
>
>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Django + GAE

2008-10-29 Thread Dan Sanderson
I'd recommend Django 1.0 along with the Helper or something similar.  You
could use Django without the Helper if you accommodate some of the import
technicalities, the Helper just makes it easier.  This article discusses
using Django without the Helper (though I'm not sure if the article works
out of the box with Django 1.0):
http://code.google.com/appengine/articles/django.html

See also the article on using the Helper, and the article on using Django
1.0 via a feature called zipimport (which the Helper also supports):
  http://code.google.com/appengine/articles/appengine_helper_for_django.html
  http://code.google.com/appengine/articles/django10_zipimport.html

As far as compatibility goes, the runtime environment is versioned, with the
intent that changes to a given version of the runtime will remain backwards
compatible with apps that run with that version.  When a new version of the
runtime environment is released containing incompatible changes, your app
will continue to use the original version until you update your app.yaml
file.  I haven't tried appenginepatch, but a version of it that works with
v1 of the Python runtime ought to continue to do so even when there's a v2.

-- Dan

On Wed, Oct 29, 2008 at 9:24 AM, Daniel Larkin <[EMAIL PROTECTED]>wrote:

>
> Hi all,
>
> I'd like to use Django on GAE for a small project. Ideally I'd like to
> use version 1.0 of Django rather than 0.96, and I'm aware there are
> various patches and helper scripts etc to make this possible. Yet,
> these approaches seem less than straight-forward (perhaps I'm
> incorrect there? I haven't actually tried them) and are such patches
> going to break with newer versions of GAE. After initially deciding to
> use Django 1.0, I'm now considering just using the built-in 0.96
> version, would this be such a bad idea for someone moving from php-
> land to an elegant python MVC design pattern based solution.
>
> Any comments would be greatly appreciated!
> thanks
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Pure Python .egg files?

2008-10-30 Thread Dan Sanderson
Do you have __init__.py files in your google/ and google/protobuf/
directories?  That's how Python knows those directories are packages that
contain modules.  (The files can be empty.)
-- Dan

On Thu, Oct 30, 2008 at 10:46 AM, Bradley Kite <[EMAIL PROTECTED]>wrote:

>
> Hi Marzia,
>
> OK - I have the source too - but I'm not sure where to put it. I've
> tried including it in my project's src directory but it still
> complains.
>
> I'm trying to use google's protocol buffers modules:
>
> from google.protobuf import descriptor
>
> I have the following in my source directory:
>
> google/protobuf/descriptor.py (plus a bunch of other related
> files/directories)
> myapp.py - my application which imports the above module
>
> But its still not right. I'm sure its something silly but I've been
> trying many different things so far without success.
>
> Your help is much appreciated!
>
> Regards
> --
> Brad
>
>
> On 30/10/2008, Marzia Niccolai <[EMAIL PROTECTED]> wrote:
> > Hi Brad,
> >
> > Google App Engine doesn't support egg modules.  You will need the source
> > files for the pure python module to upload with App Engine.
> >
> > -Marzia
> >
> >
> > On Thu, Oct 30, 2008 at 8:02 AM, Bradley Kite <[EMAIL PROTECTED]>
> > wrote:
> >
> > >
> > > Hi all,
> > >
> > > I'd like to use a pure-python module, however when ever I run my app
> > > it complains that the python interpreter cannot find the module?
> > >
> > > What is the correct procedure for including 3rd party python modules
> > > within app-engine applications?
> > >
> > > Thanks in advance
> > > --
> > > Brad.
> > >
> > >
> > >
> >
> >
> >  >
> >
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Pure Python .egg files?

2008-10-30 Thread Dan Sanderson
That should be True with a capital T, the Python Boolean literal.  I'm not
sure what may have defined "true" if that had been working before.
-- Dan

On Thu, Oct 30, 2008 at 12:30 PM, Bradley Kite <[EMAIL PROTECTED]>wrote:

>
> Genius!
>
> Thanks very much Marce, I think I'm nearly there now!
>
> Just one more thing now tho, I'm getting this error now:
>
> : name 'true' is not defined
>  args = ("name 'true' is not defined",)
>  message = "name 'true' is not defined"
>
> This is from here:
>
> application = webapp.WSGIApplication(
> [('/', MainPage),
>  ('/pbmessage', PBMessageHandler)],
> debug=true)
>
> The definition of true (and probably other def's) seems to have
> disappeared (as a result of the import_fixer ?)
>
> Regards
> --
> Brad.
>
> On 30/10/2008, Marce (Google) <[EMAIL PROTECTED]> wrote:
> >
> >  H, my email post doesn't seem to be showing up, so I'm going to
> >  try it through the web, this will probably end up being a re-post :)
> >
> >  Hi Brad,
> >
> >  This is a conflict with package names.  Our packages are
> >  google.appengine, and you are trying to use a packaged named
> >  google.protobuf.
> >
> >  You should include the google.protobuf files in your application's
> >  source directory, but you need to do a bit of sys.modules magic to get
> >  it to work.
> >
> >  First, make a file called import_fixer.py.  The contents should be:
> >
> >  import os
> >  import sys
> >
> >  BASE_PACKAGE = 'google'
> >
> >  def FixImports(*packages):
> >
> >
> >   topdir = os.path.dirname(__file__)
> >   def ImportPackage(full_package):
> > """Import a fully qualified package."""
> > imported_module = __import__(full_package, globals(), locals())
> >
> > # Check if the override path already exists for the module; if it
> >  does,
> >
> > # that means we've already fixed imports.
> > original_module = sys.modules[full_package]
> > lib_path = os.path.join(topdir, full_package.replace('.', '/'))
> >
> > if lib_path not in original_module.__path__:
> > # Insert after runtime path, but before anything else
> >   original_module.__path__.insert(1, lib_path)
> >
> >   ImportPackage(BASE_PACKAGE)
> >
> >   for package in packages:
> >   # For each package, we need to import all of its parent packages.
> > dirs = package.split('.')
> > full_package = BASE_PACKAGE
> > for my_dir in dirs:
> >   full_package = '%s.%s' % (full_package, my_dir)
> >   ImportPackage(full_package)
> >
> >  ~~~
> >
> >  Then, in your application file, do the following after importing all
> >  your appengine modules:
> >
> >  import import_fixer
> >  import_fixer.FixImports('protobuf')
> >
> >
> >  from google.protobuf import descriptor
> >
> >
> > Then your imports should work.
> >
> >  -Marzia
> >
> >
> >  On Oct 30, 12:08 pm, "Bradley Kite" <[EMAIL PROTECTED]> wrote:
> >  > Hi Dan,
> >  >
> >  > I've checked and these files are present.
> >  >
> >  > How are other people using 3rd party python modules? Do you have to
> >  > give any special arguments when starting dev_appserver.py ?
> >  >
> >  > Regards
> >  > --
> >  > Brad.
> >  >
> >
> > > On 30/10/2008, Dan Sanderson <[EMAIL PROTECTED]> wrote:
> >  >
> >  > > Do you have __init__.py files in your google/ and google/protobuf/
> >  > > directories?  That's how Python knows those directories are packages
> that
> >  > > contain modules.  (The files can be empty.)
> >  >
> >  > > -- Dan
> >  >
> >
> > > > On Thu, Oct 30, 2008 at 10:46 AM, Bradley Kite <
> [EMAIL PROTECTED]>
> >
> > > > wrote:
> >  >
> >  > > > Hi Marzia,
> >  >
> >  > > > OK - I have the source too - but I'm not sure where to put it.
> I've
> >  > > > tried including it in my project's src directory but it still
> >  > > > complains.
> >  >
> >  > > > I'm

[google-appengine] Re: Getting total count from datastore

2008-11-03 Thread Dan Sanderson
See also the docs on fetch(limit, offset):
http://code.google.com/appengine/docs/datastore/queryclass.html#Query_fetch

In particular: "The query has performance characteristics that correspond
linearly with the offset amount plus the limit."

-- Dan

On Sun, Nov 2, 2008 at 8:23 PM, David Symonds <[EMAIL PROTECTED]> wrote:

>
> On Sun, Nov 2, 2008 at 11:58 AM, monmonja <[EMAIL PROTECTED]> wrote:
>
> > Now i don't know if this is the best way of doing it but it does not
> > require you to do some writing on datastore and it uses memcache, if
> > there is a better way of doing this please stress out. Thanks. :)
>
> That's a terrible way of doing this: (a) possibly inaccurate, and (b)
> unscalable. The correct way to implement such a global counter is via
> something like a sharded counter that you increment each time you add
> an entity and decrement each time you remove an entity.
>
>
> Dave.
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Crappiest Product from Google

2008-11-04 Thread Dan Sanderson
On Mon, Nov 3, 2008 at 11:42 PM, Kannaiyan <[EMAIL PROTECTED]> wrote:

> As a software developer I would allow users to reuse the same code. I
> won't make million copies of the same code. (If used by millions of
> people). If Python does not allow such sharing model, then the
> language is a total CRAP.
>

Bundling a bunch of libraries with the runtime environment could be a bad
idea in the long run.  For example, consider the case where version 1 of the
runtime environment includes version 1.0 of module A and version 1.0 of
module B, and you write an app that uses these modules.  Then later, App
Engine releases version 2 of the runtime environment, which includes version
2.0 of module A and version 2.0 of module B.  Perhaps your app is
incompatible with module A v2.0 and would take several weeks to port, but
there's nothing in A v2.0 that you need so you'd prefer to just stay with A
v1.0.  But you desperately need a feature in module B v2.0.

Thankfully, in Python it's easy to stay with version 1 of the runtime
environment then add your own copy of B v2.0 to your app.  But you can
imagine that with many modules and many versions, this could get extremely
difficult to manage very quickly, and you'll soon be including all of your
dependencies with your app.

Bundled libraries make it easy to get started, and it's a good suggestion
for App Engine to include the gdata library with the runtime as a starting
point.  Feel free to create an issue in the issue tracker for this.  But
beyond getting started, you probably won't want to use bundled libraries.

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Crappiest Product from Google

2008-11-04 Thread Dan Sanderson
On Tue, Nov 4, 2008 at 9:48 AM, Kannaiyan <[EMAIL PROTECTED]> wrote:

> We need to have a smart way of maintaining versions.
> What if Google Upgrades the version of Python Intrepreter to a higher
> version when the code is written for lower version?
>

Runtime environments are versioned, and you control which version your app
uses in the app.yaml configuration file.  Right now, there is only one
version of the Python runtime: 1.  Changes made to an existing version of
the runtime environment are intended to be backwards compatible.  If there
is ever a non-backwards compatible change, it will be released in a new
version of the runtime.  When a new version of the runtime is released, an
app will continue to use the original version until the app owner changes
the app.yaml file.

The biggest example of this would be upgrading Python itself.  Version 1 of
the runtime uses Python 2.5.  If App Engine were to support a later version
of Python, it would have to be in a later version of the runtime
environment.  You wouldn't want the version of the Python language to change
automatically.

Upgrading an app to a new runtime environment is likely to be non-trivial
for everyone, so it's better if new non-backwards compatible versions are
few and far between.  This is one of many reasons you don't want lots of
libraries bundled with the runtime.  Consider that the runtime bundles
Django 0.96; updating this to Django 1.0 would require a new version of the
runtime.  I'd recommend to anyone wanting to use Django on App Engine to add
Django 1.0 to their app instead of using the bundled 0.96 and waiting for a
new version of the runtime.  Thankfully, this is easy to do.


> What happens if there is a bug (BETA) in GData module and the website
> is not updated with that gdata update.
>

It sounds like you're asking about what would happen if we bundled the GData
library in the runtime, and a bug were discovered in the library.  In this
case, if the bug fix is backwards compatible, the library would be upgraded
in place with a minor release of the runtime environment, and all apps using
that version of the runtime would see the fix automatically, just as with
fixes in the API libraries.

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: appcfg.py & .xaml files (silverlight) & mimtype issue

2008-11-07 Thread Dan Sanderson
You can specify the MIME type manually with the mime_type option in
app.yaml.  For example:
- url: /silverlight/(.*\.xaml)
  static_files: silverlight/\1
  mime_type: application/xaml+xml

(I didn't test this, so let me know how it goes.  :) )

-- Dan

On Fri, Nov 7, 2008 at 4:41 AM, Neo42 <[EMAIL PROTECTED]> wrote:

>
> How do I use the upload tool (appcfg.py) and my app.yaml file to
> upload .XAML (silverlight) files?
>
>
> Here are the handlers in my yaml:
> handlers:
> - url: /stylesheets
>  static_dir: stylesheets
>
> - url: /silverlight
>  static_dir: silverlight
>
> - url: /.*
>  script: helloworld.py
>
>
>
> My xaml and such is in the silverlight directory.  My appcfg.py
> command is:
> appcfg.py  update  C:\GoogleAppsProjects\HelloWorld
>
>
> When I try to do it I get this:
> "Could not guess mimetype for silverlight/scene.xaml.  Using
> application/octet-stream."
>
>
>
> And the uploaded xaml file doesn't work.  By the way, the localhost
> version of the app runs fine.  It's the upload tool that is screwing
> something up.
>
>
> I can't figure out how to do it from this page:
>
> http://code.google.com/appengine/docs/configuringanapp.html#Static_File_Handlers
>
>
>
> I'm new to python.  Please help.  I suppose I could try to put my xaml
> code in the html code, but I'd prefer not to.
>
> Thanks.
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: App engine on mac eclipse

2008-11-10 Thread Dan Sanderson
The SDK is inside the Launcher application bundle:
/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/dev_appserver.py

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/appcfg.py

These are the destinations of the symlinks created in /usr/local/bin/.

-- Dan

On Mon, Nov 10, 2008 at 8:48 AM, Sylvain <[EMAIL PROTECTED]> wrote:

>
> Did you read this article ?
>
> http://code.google.com/appengine/articles/eclipse.html
>
> It's for Windows but it should be similar for Mac.
>
> regards
>
> On 10 nov, 17:32, ohayo <[EMAIL PROTECTED]> wrote:
> > I am still not able to link the py libs into eclipse (app engine
> > related libraries). the youtube video only talks windows, and I am
> > having problems with mac install. any help really appreciated.
> >
> > On Nov 9, 9:22 pm, Roberto Saccon <[EMAIL PROTECTED]> wrote:
> >
> > > Create the symlinks (from the launcher menu), then things just work as
> > > expected (at least they did for me)
> >
> > > regards
> > > Roberto
> >
> > > On Nov 10, 12:12 am, ohayo <[EMAIL PROTECTED]> wrote:
> >
> > > > hi , thanks I search for *.py files no files were found.
> > > > i also searched for djangoforms.py did I install incorrectly.
> >
> > > > On Nov 9, 9:05 pm, "Rodrigo Moraes" <[EMAIL PROTECTED]>
> wrote:
> >
> > > > > On Sun, Nov 9, 2008 at 10:08 PM, ohayo wrote:
> > > > > > I am not sure if the app engine is available to developers any
> more.
> > > > > > However I downloaded from google site - app engine sdk. i donot
> see
> > > > > > any libraries to link to in eclipse. does the sdk come with the
> > > > > > libraries. i am only able to see launcher.
> >
> > > > > i am not sure where the libraries are placed by default, but you
> could
> > > > > use finder to look for one of the framework files, for example
> > > > > "djangoforms.py", do discover the location of the libraries.
> >
> > > > > hope this helps.
> >
> > > > > -- rodrigo- Hide quoted text -
> >
> > > - Show quoted text -
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Join us for App Engine Chat Time

2008-11-19 Thread Dan Sanderson
This is happening right now: irc.freenode.net #appengine  See you there!
-- Dan

On Tue, Nov 18, 2008 at 1:49 PM, Marzia Niccolai <[EMAIL PROTECTED]> wrote:

> Hi,
>
> A reminder that we will have App Engine Chat Time tomorrow, November 19th
> from 9-10AM PST.  Hope to see some of you there!
>
> Transcripts of previous chat times are here:
>
> http://groups.google.com/group/google-appengine/browse_thread/thread/cedc737d9678af06/ec5af0d421e445da
> and
>
> http://groups.google.com/group/google-appengine/browse_thread/thread/9f1c2775a354c78/ee0ce30274b1543
>
> -Marzia
>
>
> On Thu, Nov 6, 2008 at 10:01 AM, Marzia Niccolai <[EMAIL PROTECTED]> wrote:
>
>> Chat log will be forthcoming.
>>
>> -Marzia
>>
>>
>> On Thu, Nov 6, 2008 at 7:42 AM, Sylvain <[EMAIL PROTECTED]> wrote:
>>
>>>
>>> Is there any chat log ?
>>>
>>> On 5 nov, 17:37, Marzia Niccolai <[EMAIL PROTECTED]> wrote:
>>> > Just a reminder that the next App Engine chat time is this evening (for
>>> us
>>> > at least!) from 7-8PM PST.
>>> >
>>> > Hope to see you there!
>>> >
>>> > On Mon, Oct 20, 2008 at 10:23 PM, Marce <[EMAIL PROTECTED]> wrote:
>>> >
>>> > > Hi,
>>> >
>>> > > My bad! I've updated the blog, but the correct date for this
>>> Wednesday
>>> > > is the 22nd.
>>> >
>>> > > Concerning the quota requests, in general, you can apply for an
>>> > > increase in your quota by using our request page:
>>> > >
>>> http://code.google.com/support/bin/request.py?contact_type=AppEngineC...
>>> >
>>> > > However, currently we are not able to lift the 1MB file size quota.
>>> > > We are currently working on solutions that would allow users to host
>>> > > larger files, and it's something we are interested in supporting in
>>> > > the future.
>>> >
>>> > > Lastly, we plan to post chat transcripts on the group.
>>> >
>>> > > -Marzia
>>> >
>>> > > On Oct 20, 10:20 pm, Peter Recore <[EMAIL PROTECTED]> wrote:
>>> > > > Can someone please post a transcript somewhere for those of us who
>>> > > > won't be able to attend 'live'?
>>> >
>>> > > > On Oct 20, 8:54 pm, "Marzia Niccolai" <[EMAIL PROTECTED]> wrote:
>>> >
>>> > > > > Have something to ask the App Engine team? Spending time
>>> scratching
>>> > > your
>>> > > > > head on a problem and want to ask someone who spends his or her
>>> days
>>> > > and
>>> > > > > nights working with App Engine? Spend all of your time on IRC
>>> anyway?
>>> >
>>> > > > > Starting this week, the App Engine developer relations team will
>>> be
>>> > > > > experimenting with holding bi-monthly 1 hour developer chat
>>> sessions on
>>> > > the
>>> > > > > #appengine IRC channel on irc.freenode.net. Look here:
>>> > >http://en.wikipedia.org/wiki/List_of_IRC_clientsforahelpful list of
>>> IRC
>>> > > > > clients. We welcome all App Engine questions, and will try to
>>> answer as
>>> > > many
>>> > > > > as we can get through in the hour. We'll be posting the complete
>>> chat
>>> > > > > sessions on the group for those not able to make the scheduled
>>> chat
>>> > > times.
>>> >
>>> > > > > The first chat session will be this Wednesday at 9AM PDT. In
>>> general,
>>> > > we are
>>> > > > > planning on holding the sessions the first and third Wednesday of
>>> the
>>> > > month,
>>> > > > > alternating between day and evening. We're test-driving this
>>> program,
>>> > > so the
>>> > > > > days and times may change.
>>> >
>>> > > > > Here are the currently scheduled dates and times:
>>> > > > > * Wednesday, October 20, 9am-10am PDT
>>> > > > > * Wednesday, November 5, 7pm-8pm PST
>>> > > > > * Wednesday, November 19, 9am-10am PST
>>> > > > > * Wednesday, December 3, 7pm-8pm PST
>>> > > > > * Wednesday, December 17, 9am-10am PST
>>> >
>>> > > > > We look forward to chatting with you!
>>>
>>>
>>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Connecting your own domain name via Google Apps

2008-11-25 Thread Dan Sanderson
Hi Amir -

On Tue, Nov 25, 2008 at 6:15 PM, Amir Michail <[EMAIL PROTECTED]> wrote:

> When signing up, is there a chance that the application will be
> rejected?


No, you can set up your app right away, there is no approval process.  Your
app must comply with the Terms of Service:
  http://code.google.com/appengine/terms.html


> If so, should I get some traffic first before signing up?


No need!  Just sign up and start building.


> The problem though is I want people to start linking to my domain, not
> the appspot one.


You can associate your own domain with your App Engine app using Google
Apps.  You can set this up from within the Apps console, or from within the
App Engine Admin Console.  See this article:
  http://code.google.com/appengine/articles/domains.html


> Also, it says that the standard edition of Google apps is ad-
> supported.  What does this mean in the context of connecting my domain
> name to an app engine service?
>

The phrase "ad-supported" in this context has nothing to do with App Engine.
 No ads will appear in your app, unless you put them there.  The ads this
phrase is referring to are in a couple of the applications included with
Google Apps, such as GMail.  Businesses using those applications can upgrade
to a service level where those ads won't appear.

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Connecting your own domain name via Google Apps

2008-11-25 Thread Dan Sanderson
On Tue, Nov 25, 2008 at 8:52 PM, Amir Michail <[EMAIL PROTECTED]> wrote:

> >> If so, should I get some traffic first before signing up?
> >
> > No need!  Just sign up and start building.
>
> I was referring to the sign up for Google Apps, not the Google app
> engine.  There's no approval process there?
>

Nope.  Google Apps also has a Terms of Service, but there's no approval
process.
  http://www.google.com/apps/intl/en/terms/standard_terms.html

Is there a particular aspect of your domain or application that you're
concerned would not meet the Terms of Service?  (Feel free to respond
privately if you'd like to take this conversation off the list.)

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: How To Communicate Between App Engines

2008-11-29 Thread Dan Sanderson
Roberto is correct.  Using multiple applications in concert to subvert the
quota system is a violation of the terms of service.
http://code.google.com/appengine/terms.html

7.2. "You may not ... attempt to disable or circumvent any security
mechanisms used by the Service or any Application..."

-- Dan

On Sat, Nov 29, 2008 at 9:00 AM, Roberto Saccon <[EMAIL PROTECTED]> wrote:

>
> An App Engine application is already a distributed system, so I would
> recommend you just to write a single app and wait until the quotas get
> lifted, so you can purchase as much as you need.
>
> If you just want provide web services to your apps, the common way in
> Python land seems to be HTTP REST.
>
> If you want to maximize your free quota with countless accounts, each
> one with ten apps, that might be against the terms.
>
> regards
> Roberto
>
> On Nov 29, 1:39 pm, jeffkyjin <[EMAIL PROTECTED]> wrote:
> > I have create some applications in App Engine. If  I want to build a
> > distributed system which will use many application in App Engine.
> > Because the quota of App Engine, I have to split the whole work to
> > pieces and send these pieces to other applications. Any advices on
> > this? And how can i use API to communicate between my applications?
> >
> > Thanks a lot!
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Wrong Ordering Of Query!

2008-11-29 Thread Dan Sanderson
On Sat, Nov 29, 2008 at 3:24 PM, Alexander Kojevnikov <
[EMAIL PROTECTED]> wrote:

>
> > That should never be the case. If the index wasn't fully updated, it
> > should serve you an old version of both the index and the data. If
> > something else happens, it is definitely a bug, so you should file a
> > ticket giving as much information as you can.
>
> Dave, this behaviour is documented here (see the section called "The
> commit() process"):
> http://code.google.com/appengine/articles/transaction_isolation.html
>

Yup.  The put() happens in two stages.  During the first stage, queries use
indexes that reflect the old data, and fetches of the entity get the old
data.  During the second stage, queries continue to use indexes that reflect
the old data, but fetches of the entity get the new data.  Once the put() is
complete, both queries and fetches use the new data.

This means there is a brief period of time while indexes are being updated
during which queries will return entities that may no longer be valid
results for the query.  Note, however, that the request handler performing
the put() will never notice this, because the put() doesn't return until
indexes are up to date.

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: how to do text search in GAE?

2008-11-30 Thread Dan Sanderson
The datastore does not have a built-in feature for doing full-text search of
an entity property.  You can maintain your own search indexes, as the search
module does, but this can be expensive.  (The search module included with
the SDK is not very practical, and can result in very large indexes.)
-- Dan

On Sun, Nov 30, 2008 at 3:21 AM, lookon <[EMAIL PROTECTED]> wrote:

>
> I've read the article
> http://code.google.com/appengine/articles/bulkload.html
>
> but I found it not work well...How to do text search in GAE? wish you
> can help me~
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: How To Communicate Between App Engines

2008-12-01 Thread Dan Sanderson
I agree the current terms are a little vague for this case.  When we launch
billing, we'll have an updated version of the policy that discusses this
case more concretely.  In short, any strategy that applies multiple
allocations of the free quotas toward a single use (multiple apps acting as
a single application) would be against the terms of service.
Remember that if you need additional quota during the free preview period,
you can request a temporary increase:
http://code.google.com/support/bin/request.py?contact_type=AppEngineContact

-- Dan

On Sun, Nov 30, 2008 at 8:28 AM, Peter Recore <[EMAIL PROTECTED]> wrote:

>
> The TOS does seem to be a bit vague.
>
> If I design my app as a collection of disjoint web services, and
> decide to implement each web service in a different app, is that
> subverting the quota system?
>
> Let's say I was writing a facebook clone.  I might have an image
> processing service, a 'profile editing' service, and a feed publishing
> service.  If my client side code makes calls to all three of these
> services, does that mean i've subverted the quota system?
>
>
>
>
>
>
> On Nov 30, 4:49 am, "Andrew Badera" <[EMAIL PROTECTED]> wrote:
> > Since when did resource quotas == security mechanisms? Apples and
> oranges,
> > but if they ARE considered the same by Google, then the ToS needs to be
> > cleaerer. If I can use 10 * x, what difference does it make if I do the
> same
> > thing ten times over?
> >
> > Apples and oranges.
> >
> > Thanks-
> > - Andy Badera
> > - [EMAIL PROTECTED]
> > - (518) 641-1280
> >
> > -http://higherefficiency.net/
> > -http://changeroundup.com/
> >
> > -http://flipbitsnotburgers.blogspot.com/
> > -http://andrew.badera.us/
> >
> > - Google me:http://www.google.com/search?q=andrew+badera
> >
> > On Sun, Nov 30, 2008 at 12:09 AM, Dan Sanderson <[EMAIL PROTECTED]
> >wrote:
> >
> > > Roberto is correct.  Using multiple applications in concert to subvert
> the
> > > quota system is a violation of the terms of service.
> > >http://code.google.com/appengine/terms.html
> >
> > > 7.2. "You may not ... attempt to disable or circumvent any security
> > > mechanisms used by the Service or any Application..."
> >
> > > -- Dan
> >
> > > On Sat, Nov 29, 2008 at 9:00 AM, Roberto Saccon <[EMAIL PROTECTED]>
> wrote:
> >
> > >> An App Engine application is already a distributed system, so I would
> > >> recommend you just to write a single app and wait until the quotas get
> > >> lifted, so you can purchase as much as you need.
> >
> > >> If you just want provide web services to your apps, the common way in
> > >> Python land seems to be HTTP REST.
> >
> > >> If you want to maximize your free quota with countless accounts, each
> > >> one with ten apps, that might be against the terms.
> >
> > >> regards
> > >> Roberto
> >
> > >> On Nov 29, 1:39 pm, jeffkyjin <[EMAIL PROTECTED]> wrote:
> > >> > I have create some applications in App Engine. If  I want to build a
> > >> > distributed system which will use many application in App Engine.
> > >> > Because the quota of App Engine, I have to split the whole work to
> > >> > pieces and send these pieces to other applications. Any advices on
> > >> > this? And how can i use API to communicate between my applications?
> >
> > >> > Thanks a lot!
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Programming Google App Engine, website for the book now available

2008-12-01 Thread Dan Sanderson
Hi all -

Some of you have noticed that Programming Google App Engine, a new book to
be published by O'Reilly Media in 2009, is now available through O'Reilly's
Rough Cuts program.  Rough Cuts gives you early access to electronic drafts
of the book as it is being written, and can optionally include a pre-order
of the printed book when it comes out.  The first few chapters are available
now:
  http://oreilly.com/catalog/9780596156732/

The support site and blog for the book are now available.  I'll be blogging
about the book, updates to the Rough Cuts edition, and App Engine in
general:
  http://ae-book.appspot.com/

The blog has a feed:
  feed://ae-book.appspot.com/blog/atom.xml/

I'm excited to have the opportunity to improve the book prior to publishing
based on your feedback.  Please let me know, via the site or via email, if
you have any questions or comments.

Thanks!
-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: how do I delete files that I have uploaded

2008-12-02 Thread Dan Sanderson
If you remove the file from your local development directory then upload the
app using the same "version" parameter in the app.yaml file, the file will
be deleted from App Engine.  If the file is in a different "version" of the
app and the version is no longer the default version, you can delete the
entire version from the Admin Console.
-- Dan

On Tue, Dec 2, 2008 at 3:29 PM, Vee Why <[EMAIL PROTECTED]> wrote:

>
> I'm not very experienced at this, but I want to know how I can delete/
> tidy up files that I have uploaded to my Apps Engine?
>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: 3 feature requests

2008-12-03 Thread Dan Sanderson
I haven't used them myself, but at first glance I don't see why they
wouldn't work, assuming you're using Django for your request handling.  Give
'em a try.
Django features that don't work out of the box on App Engine tend to be
those that use Django's ORM layer, which doesn't work with the App Engine
datastore.  One notable example is the admin app.

-- Dan

On Wed, Dec 3, 2008 at 4:00 PM, niklasr <[EMAIL PROTECTED]> wrote:

>
> There are 3 features from django that are interesting
>
> RSS syndication
> http://docs.djangoproject.com/en/dev/ref/contrib/syndication/?from=olddocs
> Form preview framework
>
> http://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-preview/#ref-contrib-formtools-form-preview
> Sitemap generator
> http://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/?from=olddocs
>
> Django has these features, can we apply them to our gae projects?
>
> Niklas
>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Python 3.0 and GAE

2008-12-04 Thread Dan Sanderson
We have no time frame to announce regarding a Python 3.0 runtime
environment.  Feel free to create and star an issue!
-- Dan

On Thu, Dec 4, 2008 at 10:36 AM, Larry <[EMAIL PROTECTED]> wrote:

>
> I'm not sure about time-frame but I am very interested about Python 3
> support although it was only released yesterday! However some
> information about it is available here:
>
>
> http://groups.google.com/group/google-appengine/browse_thread/thread/8c0ece4a7b14d92/458116fbae634a00?lnk=gst&q=%22python+3%22
>
> On Dec 4, 5:42 pm, kellan <[EMAIL PROTECTED]> wrote:
> > On Dec 4, 11:59 am, Brian <[EMAIL PROTECTED]> wrote:
> >
> > > Just wondering if GAE has a plan to support python 3, perhaps as an
> > > alternative language instead of replacing 2.5 altogether.
> >
> > I'd also be interested in a timeline for Python 3.0 support in GAE.
> >
> > thanks
> > -kellan
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: how do I delete files that I have uploaded

2008-12-04 Thread Dan Sanderson
On Thu, Dec 4, 2008 at 3:29 PM, Vee Why <[EMAIL PROTECTED]> wrote:

>
> Dan, thanks for clarifying that. Where in the Admin console can I see
> the files that I want to delete? (I am in the Admin console now, but
> it is not obvious where I can see and delete unwanted files.
>

You wouldn't delete a file, you'd delete a version of the application.  See
the Versions section of the Admin Console.

If you want to delete a file from the current version, simply delete it
locally, then re-upload the app.  You don't need the Admin Console for that.

-- Dan


> On Dec 3, 1:07 am, Dan Sanderson <[EMAIL PROTECTED]> wrote:
> > If you remove the file from your local development directory then upload
> the
> > app using the same "version" parameter in the app.yaml file, the file
> will
> > be deleted from App Engine.  If the file is in a different "version" of
> the
> > app and the version is no longer the default version, you can delete the
> > entire version from the Admin Console.
> > -- Dan
> >
> >
> >
> > On Tue, Dec 2, 2008 at 3:29 PM, Vee Why <[EMAIL PROTECTED]> wrote:
> >
> > > I'm not very experienced at this, but I want to know how I can delete/
> > > tidy up files that I have uploaded to my Apps Engine?- Hide quoted text
> -
> >
> > - Show quoted text -
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Why not allow developers of libraries to upload them?

2008-12-05 Thread Dan Sanderson
On Thu, Dec 4, 2008 at 6:46 PM, Amir Michail <[EMAIL PROTECTED]> wrote:

> Instead of asking GAE developers to upload libraries they need, why
> not ask the developers of the libraries to upload versions that work
> with GAE?
>

It's important for an app owner to control which version of each dependency
the app uses.  To do this using shared libraries, App Engine would need to
provide a mechanism for the owner to request which version of each library
to use.  You'd also want inter-library dependency tracking features to help
prevent the app owner from requesting an incompatible set of libraries,
ideally including a dependency on the runtime version as well.  The app
owner would need this facility built in to the SDK to help ensure that the
local environment looks like the App Engine environment.  I gather something
like this could be based on PyPI and EasyInstall, but it'd be a substantial
project.

It's mostly easier for the app owner to bundle the library with the app.
 Most pure-Python packages are easy to bundle, and non-pure-Python packages
don't work with App Engine.  See the article on zipimport for information on
mitigating the file count and file size limits when using third-party
libraries.
  http://code.google.com/appengine/articles/django10_zipimport.html

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Inconsistent behaviour when if __name__ == '__main__' missing

2008-12-16 Thread Dan Sanderson
Good catch!  I'll make sure the docs address this case, in both samples and
descriptions.
Thanks!
-- Dan

On Mon, Dec 15, 2008 at 10:49 AM, Jeff S  wrote:

>
> Thank you for pointing this out. It seems like most code snippets do
> include the if __name__ == '__main__' but I did find one that omitted
> it
>
> http://code.google.com/appengine/docs/webapp/running.html
>
> Were there others that you had seen?
>
> Thank you,
>
> Jeff
>
> On Dec 13, 7:45 am, mrts  wrote:
> > This is really a doc bug report, but perhaps it should be discussed
> > first.
> >
> > The problem:
> >
> > Given
> >
> >  def main():
> > run_wsgi_app(handler)
> >
> > if
> >
> >   if __name__ == '__main__':
> >  main()
> >
> > is omitted from the end of main.py, the application serves a blank
> > page (i.e. null body) on first request and sporadically later as well
> > (probably when the main module is imported in another server in the
> > cloud, i.e. main() is *not* run only on import). Otherwise, main() is
> > run automagically and everything works as expected.
> >
> > This is highly confusing and hard to track down -- so it would make
> > sense to either not run main() automagically at all so that zero
> > length response is always returned if no __name__ == '__main__' clause
> > is present, or document this behaviour with a big warning in the
> > official docs.
> >
> > At least two people have tripped on this as of now.
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: non-users need easy url

2008-12-16 Thread Dan Sanderson
Thanks for the catch on the typo, I'll make sure that gets fixed.
-- Dan

On Sat, Dec 13, 2008 at 11:18 PM, thebrianschott wrote:

>
> I think I have found an error in the documentation: in the example I
> have been using where Key.from_path() is used, it should be
> db.Key.from_path() [notice the db.]. Things work better that way.
>
>
> http://code.google.com/appengine/docs/datastore/typesandpropertyclasses.html
>
> On Dec 14, 1:48 am, thebrianschott  wrote:
> > Looking at the rest of that last example, maybe they are saying not
> > that "susan5" is the key, but that using Key.from_path(,"susan5") can
> > get the key?
> >
> > m = Employee(name="Susan", key_name="susan5")
> > m.put()
> > e = Employee(name="Bob", manager=m.key())
> > e.put()
> >
> > m_key = Key.from_path("Employee", "susan5")#did I miss the
> > importance of this?
> > e = Employee(name="Jennifer", manager=m_key)
> >
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Understanding how the mail api works.

2008-12-17 Thread Dan Sanderson
App Engine apps cannot receive email directly.  You'd need a third-party
email-to-HTTP relay, or just direct users to your website to enter their
contact information.
-- Dan

On Wed, Dec 17, 2008 at 5:25 AM, Nora  wrote:

>
> Hello,
> I have developed a 'Contact us' form that collects the contact
> information of the visitors and should send this information to the
> administrator of the website.  I used the EmailMessage function from
> the Mail api.  Now, how can I get real email messages.
> When I publish my website, how can people send me their contact
> details in an email message?
>
> Thank you very much.
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: dynamic kind and problem when restarting the server

2008-12-17 Thread Dan Sanderson
The NewKind class must be defined before accessing entities of that kind.
 It sounds like you have a code path where a request handler would retrieve
such an entity before the kind is defined.  Is the code that defines the
NewKind class being evaluated on every request, or at least evaluated on
import and stored as a global?

-- Dan

On Wed, Dec 17, 2008 at 7:28 AM, riq  wrote:

>
> Hello,
>
> According to this post:
>
> http://groups.google.com/group/google-appengine/browse_thread/thread/d756063d6deaf10e/dd2aa7a2a7f01948?lnk=gst&q=dynamic+table#dd2aa7a2a7f01948
>
> one of the best ways to create a dynamic Kind is by creating a new
> python class using 'type'. eg:
> Newkind = type("NewKind", (db.expando,), dict() )
> Newkind().put()
>
>
> And everything works OK with the new Kind until I restart the server.
> When I restart the server and I try to access 'NewKind' (the new kind)
> I got this exception:
>
> Traceback (most recent call last):
>  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
> GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
> google/appengine/ext/webapp/__init__.py", line 499, in __call__
>handler.get(*groups)
>  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
> GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
> google/appengine/ext/webapp/util.py", line 57, in check_login
>handler_method(self, *args)
>  File "/Users/riq/progs/src/appengine/helloworld.py", line 135, in
> get
>scores = db.GqlQuery("SELECT * FROM %s WHERE game= :1" % game,
> game)
>  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
> GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
> google/appengine/ext/db/__init__.py", line 1629, in __init__
>super(GqlQuery, self).__init__(class_for_kind
> (self._proto_query._entity))
>  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
> GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
> google/appengine/ext/db/__init__.py", line 208, in class_for_kind
>raise KindError('No implementation for kind \'%s\'' % kind)
> KindError: No implementation for kind 'NewKind'
>
>
> Any ideas why the 'NewKind' kind is not being persisted ?
> Thanks,
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Prevent redirect in fetch()

2008-12-17 Thread Dan Sanderson
http://code.google.com/appengine/docs/urlfetch/fetchfunction.html
follow_redirects=False

-- Dan

On Tue, Dec 16, 2008 at 9:26 PM, Soybean  wrote:

>
> The documentation notes that you can prevent a redirect (hopefully
> this means ignoring a 302) with an argument, but the argument is not
> specified. Help?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Announcing: System Status Dashboard, Quota Details Page, and a Preview of Billing

2008-12-20 Thread Dan Sanderson
The quotas you will be able to buy more of are marked as "adjustable" on
this page:
http://code.google.com/appengine/docs/quotas.html

URL Fetch API calls are currently not one of the quotas intended to be
adjustable, but we can consider it for the future.

-- Dan

On Fri, Dec 19, 2008 at 10:52 AM, luke  wrote:

>
> Hi,
>
> There is a limit on the number of url fetches you can do (currently
> 160,000), will it be possible to buy more.
> My app needs to do to a number of API calls per request so this limit
> will be a problem for me.
>
> - Luke
>
>
>
> On Dec 17, 1:45 am, Marzia Niccolai  wrote:
> > Hi,
> >
> > As many of you have already noticed, we released some Admin Console
> changes
> > today, and we've also announced a System Status Dashboard (
> http://code.google.com/status/appengine), and have some more details on
> > Google App Engine's billing plans.
> >
> > You can read all about these announcements on our blog:
> http://googleappengine.blogspot.com/2008/12/system-status-dashboard-q...
> >
> > -Marzia
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: GqlQuery bind method - is it safe to share the same query instance between requests?

2008-12-20 Thread Dan Sanderson
The advantage of caching GqlQuery objects between requests is that it saves
on having to compile the GQL for future requests.  By storing it in a global
and binding new values prior to calling, it gets compiled on the first
request for the web server instance, and uses the pre-compiled version on
subsequent requests.
The only caveat is that you must remember to bind values prior to executing
the query (calling fetch(), get() or using the iterator interface).  If you
call without binding, it might use values bound during a previous request.

-- Dan

On Sat, Dec 20, 2008 at 3:25 AM, djidjadji  wrote:

>
> Be aware that the value of a global variable is not known at the start
> of a request.
> It could be the value from the previous request if the interpreter was
> already warm/running.
> It would be the initial value if the interpreter was started cold.
>
> Why not put the GQL object in the request handler self.gql1=
> GqlQuery(...) or just a local variable?
> How often do you bind new values to the query for each request?
>
> 2008/12/17 Alex Epshteyn :
> >
> > Ah, I see.  It's safe because a new request will not be processed by
> > the same instance of the python interpreter until the previous request
> > has fully completed, right?
> >
> > Thanks, Ryan!
> >
> > On Dec 16, 7:37 pm, Ryan Barrett  wrote:
> >> hi alex! you're right to be cautious, but happily, requests are not
> >> handled by different threads. our python interpreters are single
> >> threaded, and handle only a single request at a time. more:
> >>
> >>
> http://code.google.com/appengine/docs/python/sandbox.htmlhttp://groups.google.com/group/google-appengine/browse_thread/thread/.
> ..
> >>
> >> given that, you don't need to worry about concurrent accesses to the
> >> query global variable, so this should be safe. even better, fetch() re-
> >> runs the query from the beginning, so if the parameters are the same
> >> across requests, you don't even need to bind() each time.
> > >
> >
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Announcing: System Status Dashboard, Quota Details Page, and a Preview of Billing

2008-12-20 Thread Dan Sanderson
We haven't yet announced information that answers your question directly.
 If you haven't seen it, check out the billing sneak peak we snuck in to the
last blog entry:
http://googleappengine.blogspot.com/2008/12/system-status-dashboard-quota-details.html#sneakpeak

Of course, you'll see the whole thing when we launch the feature, which will
be soon.

-- Dan

On Sat, Dec 20, 2008 at 5:57 PM, Thomas Johansson wrote:

>
> Hey,
>
> Will we be able to set a max spending limit per week and/or per month
> in addition to the daily limit, much like adwords?
>
> As an example, I might be comfortable spending, say, $20 on a day to
> survive a digg/slashdot or what have you, but not *every* day. Rather,
> my monthly max might be for example $100, where $20 daily with no roof
> would mean a lot of managing of the daily limit, or the chance of
> getting a lumpy $600 bill.
>
> Thanks.
>
> - Thomas
>
> On Dec 16, 7:45 pm, Marzia Niccolai  wrote:
> > Hi,
> >
> > As many of you have already noticed, we released some Admin Console
> changes
> > today, and we've also announced a System Status Dashboard (
> http://code.google.com/status/appengine), and have some more details on
> > Google App Engine's billing plans.
> >
> > You can read all about these announcements on our blog:
> http://googleappengine.blogspot.com/2008/12/system-status-dashboard-q...
> >
> > -Marzia
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Announcing: System Status Dashboard, Quota Details Page, and a Preview of Billing

2008-12-21 Thread Dan Sanderson
On Sat, Dec 20, 2008 at 11:06 PM, Thomas Johansson wrote:

>
> Speaking of the billing, perhaps you can elaborate on the other quotas
> in place, like sending emails, urlfetch and so forth?
>

The best sources of info on the quotas right now are the Quotas section of
the Admin Console, and the new section in the documentation:
  http://code.google.com/appengine/docs/quotas.html

The docs have the definitions, and the Console has the precise amounts for
your application (the free levels) and how much your app has used in the
past 24 hours.  Please let me know if you have any further questions after
looking at these pages, so we can improve the docs.

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: zipimport support for .pyc files: is it an official feature of standard Python?

2008-12-22 Thread Dan Sanderson
Yup, it looks as though the docs for the Python zipimport now include the
.pyc feature.  Great!
More importantly to App Engine users, though, .pyc files in zips are not
supported by App Engine's implementation of zipimport.  dev_appserver will
use Python's zipimport, so when preparing your zips, be careful to include
all .py files so that your zips will work both in dev and on App Engine.

-- Dan

On Mon, Dec 22, 2008 at 3:27 PM, Alexander Konovalenko wrote:

> The "Using Django 1.0 on App Engine with Zipimport" article by Dan
> Sanderson [1] calls the support for .pyc files an "undocumented
> feature" of the standard zipimport implementation.
>
> On the other hand, the module's documentation for Python 2.5.3 [2]
> mentions .pyc files along with .py files everywhere and thus suggests
> that they are equally supported by zipimport. Here are some relevant
> quotations:
>
> "This module adds the ability to import Python modules (*.py, *.py
> [co]) and packages from ZIP-format archives."
>
> "Any files may be present in the ZIP archive, but only files .py
> and .py[co] are available for import. ZIP import of dynamic modules
> (.pyd, .so) is disallowed. Note that if an archive only contains .py
> files, Python will not attempt to modify the archive by adding the
> corresponding .pyc or .pyo file, meaning that if a ZIP archive doesn't
> contain .pyc files, importing may be rather slow."
>
> Looks like that feature was still undocumented when the article was
> originally written. Should the article be corrected to call it a
> feature that is currently missing from the App Engine implementation
> of zipimport?
>
> Or do I misunderstand something?
>
> [1] http://code.google.com/appengine/articles/django10_zipimport.html
> [2] http://www.python.org/doc/2.5.3/lib/module-zipimport.html
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Quick query - "Powered by appengine" logo

2008-12-30 Thread Dan Sanderson
There is no requirement to mention Google App Engine in your App Engine
application.
-- Dan

On Tue, Dec 30, 2008 at 5:17 PM, Gareth Nelson wrote:

>
> Is this a requirement to place on the site or can one simply put some
> text or not mention app engine at all?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Is the Datastore just too slow for 100+ returned records?

2009-01-08 Thread Dan Sanderson
If you only need some of the properties for the query that needs 100+
results, you'll need to create a separate set of entities with just those
properties, and query those.  Similarly, if you want the query to return
just the keys, you'll need entities containing the properties that are the
subjects of query filters and the keys for the full entities.

100+ entities in a single request is a lot, especially with 40 properties on
each entity.  Smaller entities will get() faster, but you might also
consider avoiding needing so many results at once. If you're hitting request
timeouts and really need that much data, you could spread the requests
across multiple requests using JavaScript.  This won't reduce the total user
time for the complete result set, but you could reduce perceived latency by
displaying the first 20 results immediately while the remaining 80 are
fetched.

If you're trying to deliver the results all at once like in a downloadable
spreadsheet, you'll have to get clever, maybe use memcache as a workspace
and build it over multiple requests.

-- Dan

On Thu, Jan 8, 2009 at 1:07 PM, Tzakie  wrote:

>
> Looking at it more deeply every 20th one takes a long time. I assume
> that's the data fetch.
>
> Still need a way to optimize...
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Is the Datastore just too slow for 100+ returned records?

2009-01-08 Thread Dan Sanderson
There is currently no way to retrieve only parts of entities, nor just keys,
from the datastore in response to queries.  There's no way to dig out the
keys either: the datastore returns the full entities in response to queries,
there is no intermediate app-side step that fetches entities for keys.
The datastore is designed with the expectation that the complete entity is
needed as the result of a query.  If you're storing many facts about a
notional thing (such as a product in a catalog), and you only need some of
those facts back in response to a query, you may want to represent the thing
using multiple entities.  Depending on the nature of the queries, the
entities for a thing may store duplicate information.  You can manage this
duplication using the Python class API and transactions.

For what it's worth, I was once an engineer in the catalog department of a
major online retailer, and we used a similar technique for "fast" product
data, which showed up in search and browser results and the like, and "slow"
product data which was only needed on the product page.

-- Dan

On Thu, Jan 8, 2009 at 2:00 PM, Tzakie  wrote:

>
> >Similarly, if you want the query to return
> >just the keys, you'll need entities containing the properties that are the
> >subjects of query filters and the keys for the full entities.
>
> so there is no way to
>
> QueryString="SELECT * FROM USER_INVENTORY WHERE TUSER_ID=432 AND
> CATEGORY_ID=23423"
> CategoryRows = db.GqlQuery(QueryString)
>
> KeyNames=CategoryRows.getKeyNames()
>
> Without creating separate entities?
>
> That's crazy. There must be a way to dig the identifiers out of the
> db.GqlQuery() return.
>
> Unless you can get the keys out and memcache I'm beginning to think
> beyond trivial
> applications app engine is just unusable. I've put so much time into
> this some expert
> person help me out here please.
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Is the Datastore just too slow for 100+ returned records?

2009-01-08 Thread Dan Sanderson
On Thu, Jan 8, 2009 at 3:35 PM, Tzakie  wrote:

>
> Thanks very much for your time guys.
>

No problem, happy to help.


> When you call:
> CategoryRows = db.GqlQuery(QueryString)
> It's fast.
>
> It's the loop where you try and access the returned entities that
> is slow. Doesn't it follow that the CategoryRows has the keys in it
> and the next() in the python loop is fetching them? every 20th
> next() call is also takes extra time. Like it's fetching 20 at a
> time from some place.


Actually, db.GqlQuery() (and db.Query() and Model.all() and Model.gql())
only sets up the query, it does not execute it.  The query is executed when
you retrieve the results using q.fetch(), q.get(), or the iterator interface
(for result in q: ...).

We definitely hear your concerns about the desired scale of single
operations, and we're always working to improve these numbers.  But it's
worth considering that App Engine is a scalable system intended to offer the
same performance characteristics whether your data set has thousands of
items or millions of items.  To do that, it has to behave differently than a
single-server relational database.

Quite frankly, I can't think of a Google web app that displays 100 of
anything all at once...

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Beginner Question - About using App Engine

2009-01-08 Thread Dan Sanderson
Yup, you can definitely use App Engine to create web services like you
describe.  A networked backend for an Android app is a great use of App
Engine.
-- Dan

On Thu, Jan 8, 2009 at 2:56 PM, mscwd01  wrote:

>
> I have taken a look around the App Engine documentation but havent
> been able to find a definitive answer to my question, so I hoped i'd
> get an answer by posting here ;)
>
> I am developing an Android application which makes substantial use of
> Google APIs; I had planned to set up my own dedicated server for tasks
> such as user authentication and storing certain data relating to
> members using the application. It would be great, having learnt of the
> inbuilt API support offered by App Engine, if I could make use of the
> App Engine service for my needs, without the need to setup and run my
> own server.
>
> My question however, is, am I able to use App Engine as a "web
> service" instead of a usual "web application"?
>
> Basically, what I had planned to do was use App Engine, via http calls
> from my Android App, as a mechanism to authenticate users and return
> security "priviliges" of their account (what content they can/cant
> access) and also a method of storing a "facebook style wall" for each
> user.
>
> In short, i'd like to use App Engine to return xml responses to my
> Android App - instead of using App Engine for the usual browser based
> web application.
>
> Is this allowed?
>
> Thanks
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Is the Datastore just too slow for 100+ returned records?

2009-01-08 Thread Dan Sanderson
Repeating a couple of things I mentioned to Greg in email, for the list
discussion:
A single-server SQL database with low load and tables with rows numbering in
the thousands can do lots of cool things with that data in a reasonable
amount of time.  But many of the features of a SQL query engine have
difficulty scaling to hundreds of machines, millions of records, and 50+
qps.  The App Engine datastore is designed to scale, and inevitably lacks
features of single-server SQL databases that don't scale.  The datastore is
designed to maintain its performance characteristics over very large data
sets and heavy traffic, so performance with small data sets and low traffic
may not always compare to a single-server SQL database under similar
conditions. in the same sense that it won't compare to a RAM cache of the
same data.
I'll be the first to admit that this means some applications are not
well-suited to App Engine.  However, I wouldn't say that a table of 300
items of product data is necessarily impractical, even if it isn't as simple
as rendering the results of a SQL query.  One simple option in this case is
to store an entity per item as you're doing now, but use range queries and
multiple requests driven by JavaScript to build the page.  (Watch how Google
Reader renders lists of hundreds of items; you can barely tell the data
wasn't all there on the first request.)

Going to the primary database to retrieve 300 items of 40 fields each is
asking for 12,000 instantly dynamic fields for a single page.  That's a
*lot* to ask if the app expects to scale.  Part of scaling data is
determining how quickly updates need to be available, so you can
pre-calculate and cache results to optimize queries, i.e. make data that
doesn't need to be instantly dynamic less dynamic.

In the case of a product catalog, most of the catalog data can be largely
static.  You can pre-build and store the product lists, then store dynamic
data (like product availability) on separate entities queried at render
time.  The upcoming cron service will make this kind of pre-building and
cache warm-up easier to do, and in some cases you can just update lists and
caches when you update individual fields in primary storage.  You have the
right idea with wanting to cache this information, but you'll probably need
to do something other than performing the 12,000-field query during a user
request with the intent to cache.

Incidentally, returning just keys for a query has been on our radar for a
while, we just haven't gotten to it.  I can't promise anything, but it's on
our list.  Feel free to file a feature request in the issue tracker to
promote it.

-- Dan

On Thu, Jan 8, 2009 at 6:15 PM, Tzakie  wrote:

>
>
> > Quite frankly, I can't think of a Google web app that displays 100 of
> > anything all at once...
>
> I'm getting the impression that people think what I'm asking for is
> ridiculous
> and off the radar. I sent you an e-mail with the urls of the current
> app and
> what I am working on. When you see it in context I think it looks
> pretty
> reasonable.
>
> E commerce apps particularly need long lists for a lot of things. On
> the
> e-commerce apps I do paging kills customers. They don't "next" they
> just leave.
>
> Can't you guys make something that just returns the keys from a query?
> That seems consistent with how I think big table works.
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Very urgent

2009-01-09 Thread Dan Sanderson
You're on the right track.  A web service works very similarly to a web
application, except instead of serving UI to a browser, it uses a protocol
based on HTTP that describes the structure of requests and responses that
make up the interaction between the client and the service.  You can use a
Python WSGI app on App Engine for a web service.  The details depend on
which protocol you wish to use.  There are several common protocols to
choose from, or you could invent your own HTTP-based format if you control
both the client and the service.  Search the web for information on REST and
SOAP, and general information about web services.
-- Dan

On Fri, Jan 9, 2009 at 6:27 AM, arnie  wrote:

>
> Hi all
> I am using google app engine sdk to develop a python web service. I am
> totally new to both google app engine sdk and python so struggling
> hard to create a simple python web service.
> Is creating a wsgi application using google app engine sdk [in python]
> with no user interface is a web service?
> If No, then can anybody suggest steps to create a simple web service?
> If Yes, then a sub question how can i return a collection of data
> containing say FirstName, LastName, Age, Address to the client?
> Please any body can help
> Thanks
> arnie
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: typo in docs

2009-01-09 Thread Dan Sanderson
Thanks, I'll fix it.
-- Dan

On Fri, Jan 9, 2009 at 11:11 AM, adelevie  wrote:

>
> http://code.google.com/appengine/docs/appcfgpy.html
>
> towards the bottom it says "appcfy.py" where it should be "appcfg.py".
> I didn't know where else to post this.
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: What is the fastest way to check if an item is in the datastore?

2009-01-12 Thread Dan Sanderson
If you don't need the entity, count(1) would be faster than fetch(1) or
get().
-- Dan

On Mon, Jan 12, 2009 at 12:54 PM, SM  wrote:

>
>
> I have a simple model like this:
>
> class MyModel(db.Model):
>  prop = db.StringProperty()
>  active = db.BooleanProperty(default=False)
>
> Given an input string, s, I'd like to know if it is in the datastore.
> Would this be the best way to check?
>
> if MyModel.gql("WHERE prop = :1 AND active = True", s).fetch(1):
>  print "Found"
> else:
>  print "Not found"
>
> Is there a faster/better way? Do I need to do anything with indexes to
> make this query better?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Canwe share?

2009-01-16 Thread Dan Sanderson
On Thu, Jan 15, 2009 at 2:06 AM, arnie  wrote:

>
> Can we share same datastore tables [2 tables with 1-to many
> relationships] between more than one wsgi applications on GAE?


If your question is about sharing a datastore between 2 App Engine
applications, such as app1.appspot.com and app2.appspot.com, then the answer
is no.  Each App Engine application gets its own datastore that is
completely separate from other applications.

If your question is about 2 WSGI application classes defined in the code of
a single App Engine application, the answer is yes.  All code running in a
single App Engine application accesses the same datastore.

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: how to do GqlQuery since OR is not supported

2009-01-18 Thread Dan Sanderson
You should be able to use the prefix match technique on a
StringListProperty.

Your searchname query does not need a custom index, so the dev server
doesn't define one in index.yaml.  Every property for a kind gets an
automatic index of just that property's values for entities of that kind.  A
query doesn't need a custom index unless it has filters or sort orders on
multiple properties--with the exception of a query with only equality
filters, which can use an efficient algorithm on the automatic
single-property indexes to produce the results.  (You can define custom
indexes for queries with multiple equality filters, and this is necessary in
some cases, but it's not needed in all cases.)

As for exploding indexes, this won't be a problem unless you have custom
indexes that mention more than one multi-value property.  An index with
multi-value properties has one row for each combination of all of the values
for all of the properties for each entity.  If the index only includes one
multi-valued property, the index will have one row for each value of the
property.  If the index includes more than one multi-valued property, you
may end up with very many rows.  When a value is updated, every occurrence
of the value in indexes must be updated, which impacts the time it takes to
do the update.

Not sure what to say about "tom" producing a result in your example.  You
can use the dev server's datastore inspector to look at the actual data in
your dev datastore.  http://localhost:8080/_ah/admin
-- Dan

On Sun, Jan 18, 2009 at 6:17 AM, Dave  wrote:

>
> Hi Barry, I just gave it a go and it looks like it will work just
> great except for the searching part. This is very bizarre at least to
> me. I put it in my code and it's acting as below:
>
> Created 3 records as below(note there are others in db but these 3 are
> only ones with searchname property as ListStringProperty().
>
> record 1: searchname = ['willie','dave','superman']
> record 2: searchname = ['rodney','dave','superman']
> record 3: searchname = ['mike','mike','wonderwoman']
>
> so that's all good. For my query I have:
>
>
> query = UserProfile.all().filter('searchname >=',
> locate_user_lower).filter('searchname < ', locate_user_lower
> +u"\ufffd").fetch(50)
>
> when locate_user_lower = "willie", i get just willie
> when locate_user_lower = "karen", i get all willie & rodney
> when locate_user_lower = "barry", I get none makes sense, no barry
> in db!
> when locate_user_lower = "rodney", I get all willie & rodney
> when locate_user_lower = "mike", i get all three
> when locate_user_lower = "tom", i get willie ...crazy there's no
> tom in the database at all
>
> any ideas? One thing I'm go to look at now is I just noticed my
> index.yaml file appears to have no entries. It appears SDK is not
> automatically updating it...perhaps that's the problem?
>
> On Jan 18, 7:49 am, Dave  wrote:
> > Thanks Barry, I thought about that but got scared off with the docs
> > recommendation not to use this for large sets. However, in reading
> > your post I realize my previous thinking about StringListProperty was
> > all wrong. If i create an extra field on the model and then stuff the
> > username + first_name + last_name in the list field it may just work.
> > I'll give it a try.
> >
> > thx!
> >
> > On Jan 17, 5:03 pm, "Barry Hunter" 
> > wrote:
> >
> > > I beleive you should put the words into a StringListProperty. ie
> > > 'phil', 'gus', 'david' in case of record 3. and search on that field.
> > > Disclaimer: untested - but that is now understand would do it.
> >
> > > 2009/1/17 Dave :
> >
> > > > Hi,
> >
> > > > This is  probably (hopefully!) simple and lack of caffeine has me
> > > > lost. I want to do a query such as:
> >
> > > > select * from profile where (nickname >= searchname AND nickname <
> > > > searchname+'z') OR (fullname >= searchname AND fullname < searchname
> > > > +'z')
> >
> > > > my model is:
> >
> > > > class profile (db.Model):
> > > >nickname = db.StringProperty()
> > > >fullname = db.StringProperty()
> >
> > > > searchname would be something like 'dav'
> >
> > > > and the query would pick up all records such that:
> >
> > > > record 1: nickname = 'david', fullname = 'gus'
> > > > record 2: nickname = 'gus', fullname = 'dave'
> > > > record 3: nickname = 'phil', fullname = 'gus david'*** This may
> be
> > > > asking for too much. Is it?
> > > > 
> >
> > > > Any help is greatly appreciated!
> >
> > > > thx,
> >
> > > > Dave
> >
> > > --
> > > Barry
> >
> > > -www.nearby.org.uk-www.geograph.org.uk-
> >
> >
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~

[google-appengine] Re: dev_appserver.py missing after an GAE update

2009-01-20 Thread Dan Sanderson
Start the GoogleAppEngineLauncher application.  It will re-create the
symlinks.  (Annoying, I know.  I believe the issue has to do with the
permissions the updater has when it runs.)
-- Dan

On Tue, Jan 20, 2009 at 1:43 PM, pjesi  wrote:

>
> Hi
>
> GAE was automatically updated today. Since then I can no longer run
> dev_appserver.py on my Mac.Any ideas?
>
> Thanks
> Viðar
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Any way to set domain for version of my app?

2009-01-21 Thread Dan Sanderson
There's no way to assign a subdomain to a specific version of an app.  The
most practical solution to host a "beta" version like this is to install
both versions of your software within the same app, and control the
difference with URL path mapping.

You could create a second app, associate it with a subdomain in Google Apps
(such as beta.howsfvotes.com), then deploy the beta version to the new app.
 The new app will not be able to access the datastore of the original app,
though.

-- Dan

On Wed, Jan 21, 2009 at 10:53 AM, Jesse  wrote:

>
> Hi,
>
> I am deploying a beta version of my app. The domain is listed as
> 2a.latestappspot.com. My main app is hosted at www.howsfvotes.com.
> I would like a way to deploy the beta version on a subdomain of
> howsfvotes.com. One reason is that I have a Google Maps API key that
> is only valid for howsfvotes.com. Is there a way to do this? Thanks,
>
> Jesse
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: What means "Deployment" ???

2009-01-22 Thread Dan Sanderson
A "deployment" is the act of uploading your app to App Engine using the
"appcfg.py update ..." command.  You are allowed to upload an app up to 250
times every 24 hours (1 day).
For other definitions of quotas, see the documentation:
  http://code.google.com/appengine/docs/quotas.html

-- Dan

On Thu, Jan 22, 2009 at 2:09 AM, Yeradis  wrote:

>
> Hello and good day to everybody
>
> Sorry by my english
>
> I have a question:
>
> What means Deployments 
>
> It appear under "Quota Details" menu and the end of all of the page
>
> This number is the avalilable possible deployment  a day ?
>
> Thanks
>
> With no more
> Bye bye
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: availibity of gcc

2009-02-03 Thread Dan Sanderson
No.
-- Dan

On Tue, Feb 3, 2009 at 1:47 AM, minorproject...@gmail.com <
minorproject...@gmail.com> wrote:

>
> Is gcc available in the server provided by the appengine?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Clarification

2009-02-09 Thread Dan Sanderson
On Mon, Feb 9, 2009 at 5:17 AM, arnie  wrote:

>
> I would like to become clear about this:
> I have registered an app on appspot.com that is consuming a datastore
> table [created within the app]. The GAE allows for creating 10
> applications, so i created another with version 2. Earlier app has
> version 1. Will the app with version 2 share the same data [as is
> created using version1] or does the version2 will have a copy of the
> datastore table as is available in version 1?


It sounds like you registered 2 applications.  One application cannot see
another application's datastore.

App versions allow you to upload a new version of an application for testing
without making it the publicly accessible version right away.  The "default"
version is accessible by the public on your usual domain name.  Any other
version that isn't the default can be accessed by admins with a special URL
of the form: #.latest.app-id.appspot.com  All versions of the same
application use the same datastore.

To upload a new version of an application, change the "version:" parameter
in your app.yaml file before uploading.  Visit the "Versions" section of the
Admin Console to see what versions have been uploaded, change the default
version, and delete old versions.

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Roadmap update and XMMP

2009-02-09 Thread Dan Sanderson
XMPP support will not take the form of long running processes.  XMPP
connections will be maintained by servers that relay incoming messages to
the app's XMPP handlers, each of which will execute just like an HTTP
request handler.  There will also be an API for sending XMPP messages from
the app, among other things.
-- Dan

On Sat, Feb 7, 2009 at 7:24 AM, Roberto Saccon  wrote:

>
> Uuhh, typo, I mean XMPP, see
> http://code.google.com/intl/und/appengine/docs/roadmap.html
>
> On Feb 7, 12:20 pm, Roberto Saccon  wrote:
> > Now we know it, XMMP comes to appengine. So far, appengine has been
> > limited to shortlived-HTTP requests.  What are the educated guesses
> > (or somebody who knows it, is allowed to speak out loud here ...),
> > will XMMP bring streaming HTTP request with possibly longer lifetime
> > than 10 sec to appengine (but also higher cost, like HTTPS), so we can
> > do long-polling or other serverpush hacks ? Or none of this, it will
> > run on the same platform and just normal polling will be
> > "encouraged" ?
> >
> > Roberto
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: GAE Team, How does the import cache work? How do we reduce custom django overhead?

2009-02-09 Thread Dan Sanderson
I can answer of couple of these:

On Mon, Feb 9, 2009 at 9:29 AM, Mike Wesner  wrote:

> 1. How does the import cache work exactly?  I have read docs but still
> am left with questions on how exactly it works.  If we have a main.py
> with our main() method in it... are all the imports in that file
> cached? Is there a way to keep our custom django in memory?
>

All imports are cached on a per app server basis.  The first time the app
imports a module on an app server, the module is loaded from disk and
evaluated.  Subsequent imports of that module on that app server do not load
or evaluate any code, in the same sense as if you imported a module more
than once in a single run of a Python application.

If a handler script (a Python code file associated with a URL mapping in
app.yaml) has a main() method, the entire script is loaded and evaluated the
first time the URL is requested.  On subsequent requests for the URL, the
main() method is called without re-loading or re-evaluating the script.
 This is similar to "importing" the handler script, with the minor
difference that the main() method is not called directly on the first
request, so you still have to call it in the script's code (see docs for
examples) for the first request to succeed.

If a handler script does not have a main() method, it is evaluated in full
for every request, and its global variables are not retained on the app
server between requests.


> 2. Since so many people use custom django, is there any plan to
> provide other versions of django besides the .96 version?   Would it
> be possibe to provide .97 and 1.0 under some other name (import
> django97 as django)?   I have read that the provided django is always
> loaded in memory and thus would be faster.  It would sure save us a
> lot of files to upload also.


So far we're mostly considering upgrading the bundled Django only for the
next major API version.  With the way the module load path works today, it'd
be difficult to introduce new modules into the default environment as a
backwards compatible change.  As I've gone on about before here in the
group, having major third-party packages bundled with the API is not a good
way to go in the long run, and I'd rather see this need addressed by making
third-party packages easier to add to apps.

App caching ought to be sufficient for mitigating the time spent importing
modules.  Have you profiled your imports to see if they're a major
contributor to performance issues?  Lazy importing (putting the import
statements directly in the code paths, instead of on module start-up) can
help reduce the cost of that first per-server request, though that's not
always easy to do when using a framework.

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: SDK version 1.1.9 Released

2009-02-09 Thread Dan Sanderson
On Mon, Feb 9, 2009 at 6:37 PM, Barry Hunter 
 wrote:

>
> Looks exciting! But how do we try out the bulk client? The 'here' in
> the blog post, points to the same page :(
>

The bulk loader docs are here:
http://code.google.com/appengine/docs/python/tools/uploadingdata.html

-- Dan


2009/2/10 Jeff S :
> >
> > Today we released version 1.1.9 of our SDK. Here's what's new in this
> > release:
> >
> >  * You can now use the Python standard libraries urllib, urllib2
> > or httplib to make HTTP requests. This has been a frequent request on
> > our issue tracker.
> >  * We've been working on a set of tools that will make the
> > process of uploading and downloading data from App Engine applications
> > easier. Today we're excited to announce an early release of our new
> > bulk uploading client. You can try it out here. Let us know what you
> > think in our Google Group!
> >  * Several updates to our datastore, including the automatic
> > generation of single property indexes and the addition of IN and !=
> > operators to db.Query. See the Datastore API docs for more details.
> >  * A bunch of additional bugfixes and enhancements, listed in our
> > Release Notes.
> >
> > See the blog post:
> http://googleappengine.blogspot.com/2009/02/sdk-version-119-released.html
> >
> > and the downloads are available here:
> http://code.google.com/appengine/downloads.html
> >
> > Happy coding,
> >
> > Jeff
> > >
> >
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Roadmap update and XMMP

2009-02-09 Thread Dan Sanderson
We have no such plans to announce at this time.  Feel free to make and star
an issue for it.
-- Dan

On Mon, Feb 9, 2009 at 4:43 PM, Onestone  wrote:

>
> Dan, are there any plans to eventually support client-side BOSH
> (a.k.a. HTTP-binding for XMPP)? Server-side XMPP support is not very
> useful, but client-side BOSH support would be great.
>
> On Feb 9, 7:56 pm, Dan Sanderson  wrote:
> > XMPP support will not take the form of long running processes.  XMPP
> > connections will be maintained by servers that relay incoming messages to
> > the app's XMPP handlers, each of which will execute just like an HTTP
> > request handler.  There will also be an API for sending XMPP messages
> from
> > the app, among other things.
> > -- Dan
> >
> > On Sat, Feb 7, 2009 at 7:24 AM, Roberto Saccon 
> wrote:
> >
> > > Uuhh, typo, I mean XMPP, see
> > >http://code.google.com/intl/und/appengine/docs/roadmap.html
> >
> > > On Feb 7, 12:20 pm, Roberto Saccon  wrote:
> > > > Now we know it, XMMP comes to appengine. So far, appengine has been
> > > > limited to shortlived-HTTP requests.  What are the educated guesses
> > > > (or somebody who knows it, is allowed to speak out loud here ...),
> > > > will XMMP bring streaming HTTP request with possibly longer lifetime
> > > > than 10 sec to appengine (but also higher cost, like HTTPS), so we
> can
> > > > do long-polling or other serverpush hacks ? Or none of this, it will
> > > > run on the same platform and just normal polling will be
> > > > "encouraged" ?
> >
> > > > Roberto
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: GAE Team, How does the import cache work? How do we reduce custom django overhead?

2009-02-09 Thread Dan Sanderson
We have some things in the works to help with the CPU hassles, so I won't
comment directly on the feasibility of zipimporting frameworks.  But I will
confirm your excellent observations regarding the caching behavior: App
caching on a single app server expires least recently used apps, and
sometimes traffic spikes are handled by spinning up the app on new app
servers.

As for bundling Django, we plan to upgrade the bundled Django with the next
major version of the Python runtime environment.  Upgrading Django 0.96 to
1.0 in place does not meet our criteria for a backwards compatible change,
and so cannot happen without a major version bump.

-- Dan

On Mon, Feb 9, 2009 at 1:41 PM, cz  wrote:

>
> I have noticed that the app cache does not keep things around for much
> more than a few seconds, so if your site gets relatively little
> traffic it will have more problems than if it gets heavier traffic
> (paradoxically). Also, if your app returns pages with many images or
> other embedded content that it also served by GAE then when the
> browser does a multithreaded set of requests GAE then forks off more
> processes to handle these which in turn also reload your app. (At
> least this is what I've gathered looking at the logs and the number
> and timing of zipimport invocations).
> Basically, using a large framework with GAE like Django 1.0 (when it's
> imported at startup via zipimport) is sort of unusable right now if
> your site gets light traffic and does some non-trivial stuff on the
> server side.
>
> I understand the hesitancy to bundle a particular framework with GAE,
> but the GAE api, the webapp framework, and the bundled Django .96, all
> seems to indicate that Django was a major influence and I suspect many
> if not most of the applications use Django. It would make sense to
> bundle an up to date version of Django just as a default framework,
> non-Django users can always use whatever framework they want. And I
> don't buy the argument that upgrading the Django .96 release will
> cause a lot of grief, it really is not that hard to upgrade an
> application to use a more recent version.
>
> On Feb 9, 12:32 pm, johnP  wrote:
> > Another question:  where does one start to troubleshoot if caching
> > seems to fail.  In my case (using appengine patch) - the app.yaml
> > handler points to a script:  common/appenginepatch/main.py  This
> > module *does* define a main() script.
> >
> > I placed logging.debug calls at the top of 5 common modules.  When I
> > click through 5 different views (each defined in the different
> > modules) 5 times in quick succession, I see one instance of the
> > logging.debug evaluating for each of these modules in the logs.  So
> > this tells me that something is caching, at least for this brief
> > period of time.
> >
> > But the interesting thing is if I wait 30 seconds or a minute.  Then I
> > repeat the process (clicking through the 5 views in quick succession,
> > 5 times - for a total of 25 clicks).  I see that the logging.debug
> > evaluates once again for each module - while the remaining 4 clicks
> > don't reevaluate.  So it's like the interpreter goes cold in 30
> > seconds.
> >
> > If it is caching for 20 seconds, shouldn't it cache for a minute?  How
> > long should the cache last for?  Any suggestions where to look
> > further?
> >
> > On Feb 9, 11:53 am, Andy Freeman  wrote:
> >
> > > > Lazy importing (putting the import
> >
> > > statements directly in the code paths, instead of on module start-up)
> > > can
> > > help reduce the cost of that first per-server request, though that's
> > > not
> > > always easy to do when using a framework.
> >
> > > Hold it.  I thought that the first instance was special in that it got
> > > extra CPU quota.  (I don't remember if the "first instance" that gets
> > > extra CPU is the first invocation of a given handler in a process or
> > > the first handler used by a new process.)
> >
> > > If the "first instance" does get extra CPU, lazy import is a bad
> > > idea.  Instead, the first instance should use that extra CPU to do
> > > things, such as import, that subsequent instances will/might need.
> >
> > > On Feb 9, 11:03 am, Dan Sanderson  wrote:
> >
> > > > I can answer of couple of these:
> >
> > > > On Mon, Feb 9, 2009 at 9:29 AM, Mike Wesner 
> wrote:
> > > > > 1. How does the import cache work exactly?  I have read docs but
> still
> > > > > am left with questions on how exactly it works.  If we have a
> main.p

[google-appengine] Re: SDK version 1.1.9 Released

2009-02-09 Thread Dan Sanderson
Correct, all of the functionality and restrictions of the URL Fetch service
apply to the httplib interfaces.

-- Dan

On Mon, Feb 9, 2009 at 6:33 PM, gesteves  wrote:

>
> Quick question: The docs state that "You can use the Python standard
> libraries urllib, urllib2 or httplib to make HTTP requests. When
> running in App Engine, these libraries perform HTTP requests using App
> Engine's URL fetch service, which runs on Google's scalable HTTP
> request infrastructure."
>
> Does that mean that changing the user-agent header is still not
> allowed, even when using one of Python's standard libraries?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: How do I "select * from entity where 'foreignkey' = blah"

2009-02-09 Thread Dan Sanderson
I'm not sure I understand your example.  The way you set it up here, select
* from Location where birthplace = whatever returns a set of Location
objects, each of which has a property with the key of a Person entity that
you're looking for.  You can access each Person object simply by referencing
location.name, e.g. location.name.name for the Person's StringProperty.  The
first time you reference the Person object for the property, the full entity
is fetched from the datastore.
Does that meet your needs?

-- Dan

On Mon, Feb 9, 2009 at 9:27 PM, adelevie  wrote:

>
> I know the datastore is not relational but this should still be
> simple.
>
> I have two models:
>
> class Person(db.Model):
> name = db.StringProperty()
>
> class Location(db.Model):
> birthplace = db.StringProperty()
> name = db.ReferenceProperty()
>
> So I want to be able to select all People given a birthplace. I tried
> messing with keys, but to no avail.
>
> thanks,
> Alan
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: GAE Team, How does the import cache work? How do we reduce custom django overhead?

2009-02-10 Thread Dan Sanderson
Hi Waldemar -

Making it practical to include libraries and frameworks with app code is the
priority.  We'd rather support multiple compatible frameworks equally well
than support a custom version of just one.  As I've ranted about before, I
think most app developers need control over their dependencies more than
they need the convenience of a bundled framework.
We bundled Django because parts of it work out of the box on App Engine, and
using those parts makes getting started easier.  We'll upgrade the bundled
version with the next API version because it's a frequent feature request
and generally the right thing to do.  But products like your
app-engine-patch are the real story for frameworks.

-- Dan

On Tue, Feb 10, 2009 at 5:09 AM, Waldemar Kornewald wrote:

>
> Hi Dan,
>
> On Feb 10, 5:05 am, Dan Sanderson  wrote:
> > As for bundling Django, we plan to upgrade the bundled Django with the
> next
> > major version of the Python runtime environment.  Upgrading Django 0.96
> to
> > 1.0 in place does not meet our criteria for a backwards compatible
> change,
> > and so cannot happen without a major version bump.
>
> It's not really a pratical solution to have an unpatched Django
> release which gets monkey-patched. The django-helper's monkey-patching
> technique works at a small scale, but if you need the admin interface
> and the other interesting Django features you have to stay compatible
> with very specific implementation details (this can even happen for
> minor features), so even upgrading between API-compatible bugfix
> releases (Django 1.0 => 1.0.2) could break at least django-helper
> which means you break a whole website. Thus, you couldn't even provide
> bugfix releases without introducing a new API version.
>
> I can see only two practical options:
>
> 1. Remove Django from App Engine and let everyone take care of
> installing it, manually. That's what most of us already do. We just
> need a solution for the request timeouts, but maybe they're related to
> the zipimport bug which finally got identified?
>
> 2. Patch Django in-place and bundle the pre-patched version with App
> Engine, so we get a real Django port. This is only acceptable if you
> support almost all of Django's features, including the admin
> interface. Even better, Django 1.2 or 1.3 might come with support for
> query backends, so it could be possible to provide a backend that
> makes Django's Model class compatible with App Engine. I've started
> documenting the high-level changes here:
> http://code.djangoproject.com/wiki/AppEngine
> The discussion is here:
>
> http://groups.google.com/group/django-developers/browse_thread/thread/516626d18f6f3fca?hl=en
>
> Maybe I missed something. What plan did you have?
>
> Bye,
> Waldemar Kornewald
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: SDK version 1.1.9 Released

2009-02-10 Thread Dan Sanderson
There's no need to rewrite existing URL Fetch calls.  httplib support is
just intended to make it easier to use other libraries that depend on
httplib/urllib/urllib2.
The HTTP referrer issue you mention has been acknowledged.  I don't have any
information on its status to report, but I feel your pain.  :)

-- Dan

On Tue, Feb 10, 2009 at 7:45 AM, jordisan  wrote:

>
>  Dan, so there's no need to rewrite our URL Fetch calls to get more
> performance or functionalities, is there?
>
>  And I guess this issue is still open:
> http://code.google.com/p/googleappengine/issues/detail?id=445
>  Are you working on this? We need to set/unset HTTP-referer to
> connect to remote APIs as Delicious or Twitter.
>
>  Thanks.
>
> On Feb 10, 7:52 am, Dan Sanderson  wrote:
> > Correct, all of the functionality and restrictions of the URL Fetch
> service
> > apply to the httplib interfaces.
> >
> > -- Dan
> >
> > On Mon, Feb 9, 2009 at 6:33 PM, gesteves  wrote:
> >
> > > Quick question: The docs state that "You can use the Python standard
> > > libraries urllib, urllib2 or httplib to make HTTP requests. When
> > > running in App Engine, these libraries perform HTTP requests using App
> > > Engine's URL fetch service, which runs on Google's scalable HTTP
> > > request infrastructure."
> >
> > > Does that mean that changing the user-agent header is still not
> > > allowed, even when using one of Python's standard libraries?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: bulk loader/uploader typo

2009-02-12 Thread Dan Sanderson
Thanks, I'll fix it.
-- Dan

On Thu, Feb 12, 2009 at 7:41 AM, Joe Blau  wrote:

>
> http://code.google.com/appengine/docs/python/tools/uploadingdata.html
>
> On OSX, the command in /usr/local/bin is called "bulkloader.py", but
> in the docs under the sections "Uploading the Data to App Engine" and
> "Loading Data Into the Development Server", it says
> "bulkuploader.py".  I'm not 100% sure the word "up" should be in that
> scripts file name.
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: GAE Team, How does the import cache work? How do we reduce custom django overhead?

2009-02-13 Thread Dan Sanderson
Hi Andy -
Now that we've announced the elimination of the high CPU request quota, I
can answer your question directly: When we had the high CPU request quota,
the quota was waived for the first request to the app on a given app server
to allow for imports and zipimports that consumed more CPU on the first
request.  With that design, it made sense to do many imports up front.  Now
that the high CPU request quota has been eliminated, lazy imports are a good
idea again to keep the first-on-server requests from taking overly long
compared to other requests.

It's probably not worth thinking about too much unless you identify a
significant performance problem in your app related to imports.  No more
high CPU request limits and longer request times means you're less likely to
hit a limit or timeout (and not complete the request) just due to imports.

-- Dan

On Mon, Feb 9, 2009 at 11:53 AM, Andy Freeman  wrote:

>
> > Lazy importing (putting the import
> statements directly in the code paths, instead of on module start-up)
> can
> help reduce the cost of that first per-server request, though that's
> not
> always easy to do when using a framework.
>
> Hold it.  I thought that the first instance was special in that it got
> extra CPU quota.  (I don't remember if the "first instance" that gets
> extra CPU is the first invocation of a given handler in a process or
> the first handler used by a new process.)
>
> If the "first instance" does get extra CPU, lazy import is a bad
> idea.  Instead, the first instance should use that extra CPU to do
> things, such as import, that subsequent instances will/might need.
>
> On Feb 9, 11:03 am, Dan Sanderson  wrote:
> > I can answer of couple of these:
> >
> > On Mon, Feb 9, 2009 at 9:29 AM, Mike Wesner  wrote:
> > > 1. How does the import cache work exactly?  I have read docs but still
> > > am left with questions on how exactly it works.  If we have a main.py
> > > with our main() method in it... are all the imports in that file
> > > cached? Is there a way to keep our custom django in memory?
> >
> > All imports are cached on a per app server basis.  The first time the app
> > imports a module on an app server, the module is loaded from disk and
> > evaluated.  Subsequent imports of that module on that app server do not
> load
> > or evaluate any code, in the same sense as if you imported a module more
> > than once in a single run of a Python application.
> >
> > If a handler script (a Python code file associated with a URL mapping in
> > app.yaml) has a main() method, the entire script is loaded and evaluated
> the
> > first time the URL is requested.  On subsequent requests for the URL, the
> > main() method is called without re-loading or re-evaluating the script.
> >  This is similar to "importing" the handler script, with the minor
> > difference that the main() method is not called directly on the first
> > request, so you still have to call it in the script's code (see docs for
> > examples) for the first request to succeed.
> >
> > If a handler script does not have a main() method, it is evaluated in
> full
> > for every request, and its global variables are not retained on the app
> > server between requests.
> >
> > > 2. Since so many people use custom django, is there any plan to
> > > provide other versions of django besides the .96 version?   Would it
> > > be possibe to provide .97 and 1.0 under some other name (import
> > > django97 as django)?   I have read that the provided django is always
> > > loaded in memory and thus would be faster.  It would sure save us a
> > > lot of files to upload also.
> >
> > So far we're mostly considering upgrading the bundled Django only for the
> > next major API version.  With the way the module load path works today,
> it'd
> > be difficult to introduce new modules into the default environment as a
> > backwards compatible change.  As I've gone on about before here in the
> > group, having major third-party packages bundled with the API is not a
> good
> > way to go in the long run, and I'd rather see this need addressed by
> making
> > third-party packages easier to add to apps.
> >
> > App caching ought to be sufficient for mitigating the time spent
> importing
> > modules.  Have you profiled your imports to see if they're a major
> > contributor to performance issues?  Lazy importing (putting the import
> > statements directly in the code paths, instead of on module start-up) can
> > help reduce the cost of that first per-server request, though 

[google-appengine] Re: About new Limits

2009-02-13 Thread Dan Sanderson
On Fri, Feb 13, 2009 at 6:11 PM, Will  wrote:

> Is the limit on datastore entry to be lifted soon, or will be around for a
> while? Is it possible now for a user to upload a 10MB file and save into 10
> datastore entries?
>

It is possible for the user to upload a 10MB file, and for the app to save
it into 10 datastore entities.  The upload and the datastore save need to
complete within the 30 second request time limit, though.

I have nothing to report yet on plans to raise the API call limit.

-- Dan

On Sat, Feb 14, 2009 at 12:47 AM, Marzia Niccolai  wrote:
>
>> Hi,
>>
>> You can upload and serve static files up to 10MB, so if you are using
>> static files you should not have an issue.  However, the limit on datastore
>> entity size is still 1MB, so you couldn't store a 10MB file in the datastore
>> after a user upload, for instance.
>>
>> -Marzia
>>
>>
>> On Fri, Feb 13, 2009 at 8:17 AM, Neves  wrote:
>>
>>>
>>> That´s right. Any body knows if I´m right?
>>>
>>> On 13 fev, 12:35, "Michael O'Brien"  wrote:
>>> > I would imagine the 10MB is for static files that are served directly
>>> > by your app...
>>> >
>>> > Michael
>>> >
>>> > On Feb 13, 1:55 pm, Neves  wrote:
>>> >
>>> >
>>> >
>>> > > The new HTTP request/response limit is 10MB, but the datastorage
>>> limit
>>> > > still 1MB. So, if I upload a 10MB file, I need to split it em 10MB
>>> > > parts to storage it?
>>>
>>>
>>
>>
>>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: indexes for expando objects

2009-02-20 Thread Dan Sanderson
On Fri, Feb 20, 2009 at 12:13 PM, pedepy  wrote:

>
> Hi .. I just stumbed upon a NeedIndexError. I understand why it
> happens, but I dont quite understand the 'motivations' behind it.
>
> If the development server can just generate indexes for queries as I
> make them, why would that not be possible for the deployed app? My app
> makes extensive use of Expando objects who's properties I cannot fully
> predict. As such, the combination of all possible queries is also
> almost possible to determine before hand.
>
> What .. am I stuck here?
>

App Engine needs to know which properties to index in advance so the index
is ready by the time the app needs it for the query.  Building a new index
requires processing all entities with the indexed properties, which could be
millions of entities and property values.  This doesn't scale as a run-time
operation.

You want to manage indexes carefully because each index increases the amount
of time it takes to create, update or delete an entity with a property for
each of the property names mentioned in the index.  Even if creating new
indexes weren't a scalability concern, linear (or worse) growth in the cost
of updates would be.

You can have properties with names calculated at run time, but you can't
perform queries on those properties without explicit index configuration
uploaded with the application.

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Billing Questions

2009-02-27 Thread Dan Sanderson
Ross is correct.  You only pay for what you use.  If your app doesn't go
over the free quotas, you pay nothing, regardless of how you set your
maximum daily budget.
When you set your budget for the first time, you go through the Google
Checkout process to authorize the maximum budget.  This process does *not*
charge you any money, it only authorizes the budget.

-- Dan

On Fri, Feb 27, 2009 at 1:50 PM, Ross M Karchner wrote:

> From what I can tell, the $1 is a *budget*, you won't be charged anything
> if you don't go over the free quotas.
>
>
> On Fri, Feb 27, 2009 at 4:23 PM, MajorProgamming wrote:
>
>>
>> Suppose I set up billing with a $1 budget/day (which is the minimum).
>> I understand that I will be billed $7/week.
>>
>> What happens if I don't go over any of the free quotas the first week?
>> Will Google bill me again the next week?
>>
>> What happens if I use $2 the first week? Will Google only charge me $2
>> [to get the balance back up to $7] or will Google bill me again $7 the
>> next week?
>>
>> If my account has money in it, can I cancel billing, and allow GAE to
>> remain on the "paid version" until the remaining $ has been used up?
>>
>> Thanks in advance for all your help,
>>
>>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: What happened to minor version numbers?

2009-03-02 Thread Dan Sanderson
Hi Bender -
Yes, that paragraph needs to be updated.  A long time ago the Admin Console
displayed the number of times a given major version was uploaded as a
"minor" version number.  (And that last sentence should read, "Only the
latest *minor* version is retained for each major version.")

As for integrating with source control, keep in mind that the version
identifier (the "major" version number) can be any string.  I know
developers who have their build process automatically update app.yaml to use
the source control revision number as the version identifier for every
deployment.  This technique requires manually switching the public
("default") version after each deployment and regularly cleaning up old
versions, but that may be worth doing anyway.

-- Dan

On Mon, Mar 2, 2009 at 12:52 PM, Bender  wrote:

>
> Hi -- I have a follow up to this question.
>
> In the GAE documentation (http://code.google.com/appengine/docs/python/
> tools/configuration.html), it says:
>
> "On the Administration Console, the version number appears as a major
> version (version), and a minor version that corresponds to the number
> of times this major version has been uploaded. Only the latest major
> version is retained."
>
> Google may maintain minor version numbers internally somehow, but
> there don't appear to be any minor version numbers that are visible to
> GAE developers.  If your e-mail is true, then the above quote is
> misleading.  Additionally, if only major version numbers are available
> to developers, then that doesn't give us a lot to work with in terms
> of source control/tracking/maintenance.
>
> Thanks!!
>
> On Feb 27, 12:07 pm, Marzia Niccolai  wrote:
> > Alex,
> >
> > It should never have been the case that we displayed distinct minor
> version
> > numbers allowing you to switch between them.  The system was always
> designed
> > to make different major versions accessible through the admin console.
> >
> > Previously, if you had, say, major version 1.3 and 2.5, you would have
> > accessed each version through:
> > 1.3.app-id.appspot.com and 2.5.app-id.appspot.com
> >
> > The problem with this is everytime you deployed a new minor version you
> > would have to iterate the number in the URL.  Now, however, with major
> > versions 1 and 2 you can always access the versions at the URL:
> > 1.latest.app-id.appspot.com and 2.latest.app-id.appspot.com
> >
> > The default version will also be the one deployed onhttp://
> app-id.appspot.com.
> >
> > -Marzia
> >
> > On Thu, Feb 26, 2009 at 6:56 PM, Alex Epshteyn <
> alexander.epsht...@gmail.com
> >
> > > wrote:
> >
> > > Last summer, when I would upload my app with app_cfg without changing
> > > the version number in app.yaml, the admin console showed a minor
> > > version number.  Example:
> >
> > > Say I upload version "3" twice - I would get roughly the following in
> > > the console:
> >
> > > version 3.1 (default)
> > > version 3.2
> >
> > > The subdomain 3.latest would have pointed to 3.2, but the default url
> > > still went to 3.1 until you change the default version.
> >
> > > That system was very nice because it allowed you to rollback if you
> > > forgot to change the version number in app.yaml by accident.
> >
> > > Now, however, uploading the same version number seems to clobber the
> > > previous version.
> >
> > > Where did the minor versions go?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: ### What is the best way for paginating a list of records? ###

2009-03-11 Thread Dan Sanderson
http://code.google.com/appengine/articles/paging.html
-- Dan

On Wed, Mar 11, 2009 at 2:00 PM, Let Delete My Apps <
davide.rogn...@gmail.com> wrote:

>
> What is the best way for paginating a list of records?
>
> See "30. Object pagination"
> http://www.djangoproject.com/documentation/models/pagination/
>
> >>> from django.core.paginator import Paginator
> >>> paginator = Paginator(Article.objects.all(), 5)
> >>> paginator.count
> 9
> >>> paginator.num_pages
> 2
> >>> paginator.page_range
> [1, 2]
>
> --
> http://pyoohtml.appspot.com/let-delete-my-apps/home
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: A question for Jaiku's developers, if they're watching..

2009-03-16 Thread Dan Sanderson
The XMPP support mentioned on the roadmap does not include BOSH.
-- Dan

On Sun, Mar 15, 2009 at 6:14 PM, David Wilson  wrote:

>
> 2009/3/15 thuan :
> >
> > I know the topic is more about microblogging services than xmpp, but
> > by chance, have somebody achieved to install some comet/ajax push
> > applications? The technique might be used to speed up message display
> > for popular conversations as it is used for the chat function in
> > google mail.
>
> Since there are no blocking / sleeping primitives in AppEngine, it's
> not really possible without spinning and burning a tonne of CPU, or
> making lots of requests. You really need an external component for it.
>
> Hopefully the AppEngine XMPP support that is on the roadmap will
> include support for BOSH (),
> which would solve the Comet problem beautifully. :)
>
>
> David
>
> > >
> >
>
>
>
> --
> It is better to be wrong than to be vague.
>  — Freeman Dyson
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: doc files suddenly missing from google apps domain

2009-03-16 Thread Dan Sanderson
Hi James -
Please contact Google Apps support for this issue:
  http://www.google.com/support/a/?hl=en

The google-appengine group is for App Engine issues and discussions.

Thanks!
-- Dan

On Sat, Mar 14, 2009 at 4:51 AM, Legacy FamilyTree  wrote:

>  Hi guys,
>
> This one is very serious for us at at our googleapps domain of
> kycevents.com
>
> Some time yesterday, March 13, 2009, our major group of users at our
> sailing club found that all of the doc files they were sharing suddenly
> disappeared
> off of their doc folder.
>
> The doc files that were not shared with that list of users are intact.
> There were half a dozen collaborators using the missing files and all
> report the loss of these same files. The Trash basket is empty for each of
> the users.
>
> Testing shows that I can share my files today with these same users, but
> all of their own files seem to have gone up the pipe.
>
> any ideas.?
>
>
> James Anderson
> webmaster, Kelowna Yacht Club
> Kelowna, B.C.
> Canada
> legacyfamilyt...@shaw.ca
> www.kelownayachtclub.com
>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: remote_api documentation's example, batching on __key__ without ordering?

2009-03-16 Thread Dan Sanderson
__key__ is the default ordering when no other filters or sort orders are
requested.  (In general, __key__ is the last ordering applied after all
other orders.)

-- Dan

On Fri, Mar 13, 2009 at 8:37 PM, Simo Salminen  wrote:

>
> Hi.
>
> In http://code.google.com/appengine/articles/remote_api.html there is
> example:
>
> entities = MyModel.all().fetch(100)
> while entities:
>  for entity in entities:
># Do something with entity
>  entities = MyModel.all().filter('__key__ >', entities[-1].key
> ()).fetch(100)
>
>
> How come there is no ordering on __key__?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Realease versions

2009-03-16 Thread Dan Sanderson
You can actually use any string for the version identifier.  So yes, you can
use floats.
-- Dan

On Mon, Mar 16, 2009 at 1:36 PM, Ronn Ross  wrote:

> Can you on use integers for version numbers? For example 1,2, and 3, or can
> you uses floats e.g. 1.1,1.2,1.3?thanks
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: 308K CSV file cost 20% GAE data space!

2009-04-05 Thread Dan Sanderson
Specifically, a query with multiple equality filters on a single list
property requires an (exploding) custom index with the property repeated in
multiple columns if and only if the query also uses inequality filters or
sort orders on other properties.  If a query uses nothing but equality
filters and no sort orders, it can be performed using the "merge join"
algorithm using only the built-in single property indexes.

It's a lot to ask for a tag search to not use a custom sort order, so I
won't say it's a complete solution.  If it helps, the effective sort order
of an equality-filter-only query is key order, ascending.

-- Dan

On Sun, Apr 5, 2009 at 1:04 PM, Barry Hunter wrote:

>
> That thread is refering to 'in' which effectivly is a OR - which as
> pointed out by ryan expands to three(or multiple) queries under the
> hood.
>
> But 秦锋 I think is referring to AND, the code in the quoted post is
> only pseudo code (and/or gql expands to 'and' internally - sorry, I
> dont know enough python)
>
> a query of "WHERE tag = 'tag1' AND tag = 'tag2' AND tag = 'tag3' " -
> will require *three* indexes on `tag`
>
>  - this only make sense for ListProperties. But is a valid query. For
> Lists, " tag = 'tag1' " could be written like " ('tag1' IN LIST `tag`)
> " - which is different to the sql/gql IN keyword.
>
>
>
> On 05/04/2009, Andy Freeman  wrote:
> >
> >  Something is wrong here - it should not generate multiple indices per
> >  tag, regardless of the length of the list.  (The query won't work if
> >  the length is greater than 30, but that's a different problem.)
> >
> >  see Ryan's message in
> >
> >
> http://groups.google.com/group/google-appengine/browse_thread/thread/1285c272c0e1b62a
> >
> >  That time, the problem turned out to be some user error, but I didn't
> >  see an explanation.
> >
> >
> >
> >
> >  On Apr 3, 8:58 am, 秦锋  wrote:
> >  > Alkis:
> >  > I re-check my code and found if I use list property in gql like
> >  > following:
> >  >
> >  > WHERE tags = :1, inputTags (it's a list)
> >  >
> >  > If there are 3 tag in inputTags, index will be:
> >  >
> >  > name:tag
> >  > name:tag
> >  > name:tag
> >  >
> >  > Does this cost huge space?
> >  >
> >  > But it's really cool for multi-tags searching in app!
> >  >
> >  > On 4月3日, 下午8时50分, Alkis Evlogimenos ('Αλκης Ευλογημένος)
> >  >
> >  >
> >  >
> >  >  wrote:
> >  > > What do your models look like?
> >  >
> >  > > On Fri, Apr 3, 2009 at 2:00 PM, 秦锋  wrote:
> >  >
> >  > > > My App: cndata4u.appspot.com
> >  > > > Now I have imported about 2500 records there, and with only THREE
> >  > > > entities. But I have found that these data have occurred 20% data
> >  > > > store, about 200M!
> >  > > > My original CSV files have only 308K!
> >  >
> >  > > > Any idea?
> >  >
> >  > > --
> >  >
> >
> > > > Alkis- Hide quoted text -
> >  >
> >  > - Show quoted text -
> >
> > >
> >
>
>
> --
> Barry
>
> - www.nearby.org.uk - www.geograph.org.uk -
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Using both Python and Java

2009-04-08 Thread Dan Sanderson
On Wed, Apr 8, 2009 at 7:27 AM, J  wrote:

I'm fairly new to web development and AppEngine. I'm wondering if it's
> possible to use both Python and Java in AppEngine. Certain modules
> would be written in Python and other are written in Java. Why or why
> not?
>

An application can only use one of the two runtime environments at one time,
either the Java (JVM) environment or the Python environment.  Specifically,
each version of an app can only use one environment: you can upload a Python
app with a version of "1" and a Java app with a version of "2", though only
one version can be the "default" version for the application at one time.

If you just want to use the Python language with Java technology, consider
using Jython, a Python interpreter that runs on the JVM.  We don't yet have
the Python App Engine APIs implemented in a way that would work with Jython
in the Java environment, though the Python SDK is open sourced so you could
make a project of it.  :)

-- Dan


>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: On which technology is the datasotre for Java AppEngine based?

2009-04-08 Thread Dan Sanderson
The App Engine datastore is a distributed schemaless object store, with
support for index-based queries and local transactions.  It is built on
BigTable, a major component of Google's storage infrastructure.

Full support for SQL is unlikely to happen in the near future, as is full
support for RDBMS-style joins.  There are many opportunities to meet
specific use cases, though, and we're actively considering many of those.

-- Dan

On Wed, Apr 8, 2009 at 11:32 AM, Marcel Overdijk
wrote:

>
> I'm asking this as I'm wondering if SQL queries including joins will
> be available.
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Will Google support a relational database in the future?

2009-04-08 Thread Dan Sanderson
Some of the same problems can be solved in different ways.  For instance,
aggregate data can often be calculated at write time, obviating the need for
an expensive aggregate runtime query involving millions of records and
hundreds of machines.  The tricky bit is implementing the different
solutions using compatible APIs, which isn't always possible.

-- Dan

On Wed, Apr 8, 2009 at 12:31 PM, Marcel Overdijk
wrote:

>
> Maybe for performance the datastore as it is now is best.
> But when working with data (e.g. aggregate functions like sum, avg
> etc.) a relational database has also advantages.
>
>
> On 8 apr, 19:58, Andrew Badera  wrote:
> > It might not make "sence" but it certainly makes "sense" when you're
> living
> > in a world full of RDBMS, and want to make the barrier to entry as low as
> > possible.
> >
> > Thanks-
> > - Andy Badera
> > - and...@badera.us
> > - Google me:http://www.google.com/search?q=andrew+badera
> >
> > Sent from Albany, NY, United States
> >
> > On Wed, Apr 8, 2009 at 1:56 PM, Barry Hunter <
> barrybhun...@googlemail.com>wrote:
> >
> >
> >
> >
> >
> > > similar, but it wouldnt make sence to have two database backends.-
> Tekst uit oorspronkelijk bericht niet weergeven -
> >
> > - Tekst uit oorspronkelijk bericht weergeven -
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Will Google support a relational database in the future?

2009-04-08 Thread Dan Sanderson
I agree that the datastore is not good for adhoc runtime queries.  The
datastore was designed to maintain its performance characteristics
independent of the number of entities stored, including query performance.
 (The performance of our index-backed queries is a factor of the size of the
result set, not the size of the data set.)  Consistent performance is
usually more important than adhoc runtime queries for large scale web
applications, so that's the focus of this design.

I push the alternative techniques (e.g. calculating aggregates at write
time) because many web developers that grew up with single-server SQL
databases--myself included--are accustomed to pushing application logic into
database queries, because at a small scale that's often a best practice.
 Some common tasks for web apps seem like they require SQL-style features,
but the lack of those features in a scalable environment doesn't make those
tasks unreasonable.  Yet other tasks are genuinely untenable in a scalable
environment, at least not without heavy background processing.  (I love our
new cron feature, but we're still looking at more thorough background
processing solutions.)

-- Dan

On Wed, Apr 8, 2009 at 1:34 PM, Marcel Overdijk wrote:

>
> The datastore implementation (non-relational) is one of the last
> things I'm bumping against (now Java is supported ;-)
>
> I understand that aggregate data *can* be calculated at write time.
> But this is not what I want and I guess a lot of other users will
> think the same.
>
> Also adhoc querying will be difficult with the current datastore.
> Maybe I want the sum of revenue per User
> or the sum of all users
> or maybe the sum per Country or, City, or... this would mean a lot of
> calculations to be done. IMHO this is also very error prone.
>
> And maybe someday our business department wants average figures
> instead of sums...
>
> I guess Amazon is not for nothing offering persistent storage which
> allows user to use e.g. MySQL.
> Also Sun's Cloud features a relational database (again MySQL).
>
> I think 95% of all developers attracted to Google App Engine are using
> relational databases in the daily job...
> Like Andrew said it's a issue of barrier.
>
> PS: I will look into the index documentation to see if it can help me
> with aggregate data.
>
> Cheers,
> Marcel
>
>
>
>
>
>
>
>
> On 8 apr, 21:40, Dan Sanderson  wrote:
> > Some of the same problems can be solved in different ways.  For instance,
> > aggregate data can often be calculated at write time, obviating the need
> for
> > an expensive aggregate runtime query involving millions of records and
> > hundreds of machines.  The tricky bit is implementing the different
> > solutions using compatible APIs, which isn't always possible.
> >
> > -- Dan
> >
> > On Wed, Apr 8, 2009 at 12:31 PM, Marcel Overdijk
> > wrote:
> >
> >
> >
> >
> >
> > > Maybe for performance the datastore as it is now is best.
> > > But when working with data (e.g. aggregate functions like sum, avg
> > > etc.) a relational database has also advantages.
> >
> > > On 8 apr, 19:58, Andrew Badera  wrote:
> > > > It might not make "sence" but it certainly makes "sense" when you're
> > > living
> > > > in a world full of RDBMS, and want to make the barrier to entry as
> low as
> > > > possible.
> >
> > > > Thanks-
> > > > - Andy Badera
> > > > - and...@badera.us
> > > > - Google me:http://www.google.com/search?q=andrew+badera
> >
> > > > Sent from Albany, NY, United States
> >
> > > > On Wed, Apr 8, 2009 at 1:56 PM, Barry Hunter <
> > > barrybhun...@googlemail.com>wrote:
> >
> > > > > similar, but it wouldnt make sence to have two database backends.-
> > > Tekst uit oorspronkelijk bericht niet weergeven -
> >
> > > > - Tekst uit oorspronkelijk bericht weergeven -- Tekst uit
> oorspronkelijk bericht niet weergeven -
> >
> > - Tekst uit oorspronkelijk bericht weergeven -
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Dynamically scheduled Cron Jobs?

2009-04-08 Thread Dan Sanderson
You can't change an app's cron config dynamically.  However, you can write
your own process that is invoked by cron on a regular basis and decides what
to do on each invocation based on application data.

-- Dan

On Wed, Apr 8, 2009 at 2:57 PM, Michael Bailey  wrote:

>
> From the documentation it looks like the Cron Job schedule is static.
>
> Is there a way to programatically add cronjobs ( with a server-side
> python/java API)?
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: GAE Java: Conflicting Information on Threading & Network

2009-04-09 Thread Dan Sanderson
The URL fetch interface uses a scalable service to fetch URLs, not direct
network connections.  The Java runtime supports using the URLConnection
interface to use this service.

There's probably a reason why the thread-related classes are on the
whitelist, though I don't know what it is.  Spawning threads is not allowed
by the sandbox.

-- Dan

On Thu, Apr 9, 2009 at 12:29 AM, JavaMiner wrote:

>
> http://code.google.com/appengine/docs/java/overview.html
> "The JVM runs in a secured "sandbox" environment to isolate your
> application for service and securityFor instance, an app cannot
> spawn threads...or make arbitrary network connections."
>
> http://code.google.com/appengine/docs/java/jrewhitelist.html
> java.lang.Thread
> java.util.concurrent.ThreadPoolExecutor
> java.util.concurrent.ScheduledThreadPoolExecutor
>
> Thread Pools are whitelisted.
>
> http://code.google.com/appengine/docs/quotas.html#UrlFetch
> You can fetch URLs from the App?
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Cron Schedule Format parsing error

2009-04-14 Thread Dan Sanderson
My apologies for the frustration.  I'll get the docs fixed.  (There is a
pending fix that makes the example work, but it didn't get out in time for
launch.)
*hangs head in shame*

-- Dan

On Tue, Apr 14, 2009 at 8:27 PM, an0  wrote:

> Yes, it is quite verbose, and I am using the long trivial 'day of week'
> list, too.
>
> However, whatsoever, it is not reasonable that the very first example they
> gave does not work. What a shame to doc writer and what a frustration to the
> readers, including me:(
>
> On Tue, Apr 14, 2009 at 8:18 PM, daly  wrote:
>
>>
>>
>> I tried and met this error too.
>> You can solve it by
>> every mon of month 09:00
>>
>> month looks like replacing all months,
>> but there seems no abbr. for weekdays,
>> so I have to using
>> "every mon,tue,wed,thu,fri,sat,sun of month 00:00"
>> for my target
>>
>> hope they can add 'days' or 'day' for replacing the long days string
>>
>>
>>
>
>
> --
> Hell boy is cool, but let me be healthy boy first.
>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Cron Schedule Format parsing error

2009-04-17 Thread Dan Sanderson
The docs have been fixed to match 1.2.0.
-- Dan

2009/4/16 Anthony Baxter 

>
> No, I'm asking as a future feature for the grammar. The doc will be
> fixed soon to match the 1.2.0 release, and a future release will make
> the "of month" words unnecessary.
>
> Anthony
>
> On Apr 16, 1:27 pm, 风笑雪  wrote:
> > try this:every day of month 09:00
> >
> > The document is wrong, i met the same error.
> >
> > 2009/4/16 Anthony Baxter 
> >
> >
> >
> > > Would something as simple as "every day 09:00" be enough? (No it's not
> > > there yet, just enquiring).
> >
> > > On Apr 15, 9:10 pm, an0  wrote:
> > > > Dan, It is nice to see quick response and even better, quick
> reactions.
> > > > And I'm really glad to hear that the "every month" shortcut given in
> the
> > > > "premature" doc is indeed going to work; but what about the
> "everyday"
> > > > shortcut?
> >
> > > > On Wed, Apr 15, 2009 at 12:44 PM, Dan Sanderson <
> dansander...@google.com
> > > >wrote:
> >
> > > > > My apologies for the frustration.  I'll get the docs fixed.  (There
> is
> > > a
> > > > > pending fix that makes the example work, but it didn't get out in
> time
> > > for
> > > > > launch.)
> > > > > *hangs head in shame*
> >
> > > > > -- Dan
> >
> > > > > On Tue, Apr 14, 2009 at 8:27 PM, an0  wrote:
> >
> > > > >>  Yes, it is quite verbose, and I am using the long trivial 'day of
> > > week'
> > > > >> list, too.
> >
> > > > >> However, whatsoever, it is not reasonable that the very first
> example
> > > they
> > > > >> gave does not work. What a shame to doc writer and what a
> frustration
> > > to the
> > > > >> readers, including me:(
> >
> > > > >> On Tue, Apr 14, 2009 at 8:18 PM, daly  wrote:
> >
> > > > >>> I tried and met this error too.
> > > > >>> You can solve it by
> > > > >>> every mon of month 09:00
> >
> > > > >>> month looks like replacing all months,
> > > > >>> but there seems no abbr. for weekdays,
> > > > >>> so I have to using
> > > > >>> "every mon,tue,wed,thu,fri,sat,sun of month 00:00"
> > > > >>> for my target
> >
> > > > >>> hope they can add 'days' or 'day' for replacing the long days
> string
> >
> > > > >> --
> > > > >> Hell boy is cool, but let me be healthy boy first.
> >
> > > > --
> > > > Hell boy is cool, but let me be healthy boy first.
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Are you a human ?

2009-04-20 Thread Dan Sanderson
Hi Tom -
Can you explain what you mean by a "large database put"?  Are you using the
bulk uploader tool?  The error message you quoted is printed by appcfg when
it gets a certain error from the Google Accounts system.  This error can be
caused by several things, including multiple unsuccessful login attempts for
the affected account.

For what it's worth, there is no relationship between datastore activity and
Google Accounts verification via Captcha.  Also, the Google Accounts Captcha
has both visual and audible options.

-- Dan

On Sat, Apr 18, 2009 at 2:34 AM, Tom Wu  wrote:

>
> Hi All,
>
> During my large database put into datastore, it shows
>  Please go to
>"https://www.google.com/accounts/DisplayUnlockCaptcha\n";
>"and verify you are a human. Then try again.")
>
> Yeah, I am a human.  ha ha ha!  Are you human ?
>
>
> The captcha will stop my application until I unlock the captcha.
>
> Is anyway to get my app continue without crack the captcha ?
>
>
> Best Regards
> Tom Wu
>
>
> >
>

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Downloadable documentation for App Engine updated

2009-04-22 Thread Dan Sanderson
Hi all -
The downloadable documentation for App Engine has been updated with the
latest revision.  This Zip archive of all of the docs includes all App
Engine for Java documentation, App Engine for Python up to today's 1.2.1
release, and all FAQs and articles.

http://code.google.com/appengine/downloads.html#Download_the_Google_App_Engine_Documentation

Great for hacking apps on airplanes!  :)

-- Dan

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---