[google-appengine] API calls/minute quotas

2009-01-27 Thread Blixt

Hi there!

From what I understand, there are invisible quotas that limit how
many API requests you can do every x time. Here's an example of an
exception raised when this quota is exceeded: The API call
images.Transform() required more quota than is available.

How should these be handled? It seems irrational to force users to
retry their requests later, when some of the limits seem to be
enforced already with only a few simultaneous users (in this case I'm
referring to the images.Transform API call, with a few people
uploading, say, five images each that then need to be resized to
multiple sizes.) I hope these quotas will be visible in the future so
that they can be monitored, and that there will be options to extend
these quotas.

Regards,
Andreas
--~--~-~--~~~---~--~~
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 Paging on App Engine

2009-01-27 Thread conman

yes, you are right, this is even better :)

Tx for the tip!

Constantin

On 26 Jan., 19:32, ryan ryanb+appeng...@google.com wrote:
 agreed, that would definitely help prevent multiple created values.
 using a guid generator would be even better.

 having said that, paging on created properties like that aren't
 really necessary now that we have __key__ filters and sort orders:

 http://code.google.com/appengine/docs/python/datastore/queriesandinde...

 they can be used manually, but i've also described a general way to
 use them to support scalable paging with any query:

 http://groups.google.com/group/google-appengine/browse_thread/thread/...
--~--~-~--~~~---~--~~
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: Django, including a file

2009-01-27 Thread Larry

Good point. =)

Here is my page that is being rendered without the template included:
http://silicon.appspot.com/readdoc?id=12619

Here's the template (contained in / and /templates):
http://silicon.appspot.com/readdoc?id=12620

And finally, here is my app.yaml file:
http://silicon.appspot.com/readdoc?id=12480

Thanks again for the continued help! :)

On Jan 26, 12:19 am, Alexander Kojevnikov alexan...@kojevnikov.com
wrote:
 Please post here your templates and also the app.yaml file, you can
 use dpaste as @theillustratedlife has suggested.

 On Jan 26, 8:27 am, Larry larry.ches...@googlemail.com wrote:

  I'm using the templates that are currently inbuilt into AppEngine (I'm
  not including Django myself). My folder structure has the parent and
  template in the root directory and also a copy of the template in /
  templates.

  Would getting the latest Django be necessary? Or do I just need to
  tweak things?

  Thanks,
  Lster

  On Jan 24, 2:01 am, Alexander Kojevnikov alexan...@kojevnikov.com
  wrote:

Has anyone got include working? I've been searching everywhere but
find any simple examples of AppEngine including templates!

   {% include %} works for me, I'm using app-engine-patch.

   Which version of Django do you use? What is your folder structure,
   where the templates are kept (both the parent and the included one)?
--~--~-~--~~~---~--~~
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 append to BlobProperty

2009-01-27 Thread Will
Here you go,

--
class UploadStorage(db.Model):
def __init__(self, field_name, file_name, content_type, content_length,
charset):
self.content = db.BlobProperty(required=True)
self.last_change = db.DateTimeProperty(required=True, auto_now=True)
self.field_name = db.StringProperty(required=True, default=u'')
..

if (field_name):
self.field_name = field_name

def append(self, src):
self.content += src
-
class GAEUploadedFile(UploadedFile):
def __init__(self, field_name, file_name, content_type, content_length,
charset):
self.__storage = UploadStorage(field_name, file_name, content_type,
content_length, charset)
..

 def write(self, content):   # append
self.__storage.append(content)
self.size = len(self.__storage.content)

Thanks,

Will

On Tue, Jan 27, 2009 at 7:47 AM, Alexander Kojevnikov 
alexan...@kojevnikov.com wrote:


  No, doesn't work. I got
 
  unsupported operand type(s) for +=: 'BlobProperty' and 'str'
 
  Same as before.
 
 Could you post here all related code, including the construction of a
 Storage entity?
 


--~--~-~--~~~---~--~~
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 append to BlobProperty

2009-01-27 Thread Alexander Kojevnikov

Rewrite your UploadStorage class to declare the module properties in
the class body, not in the __init__ method. App Engine forwards access
to property definitions to the actual property values, creation of the
properties in __init__ is probably not compatible with it.

For example, when you access self.content in your append() method, GAE
returns the value of the append property, not the property definition.

Try this code:

class UploadStorage(db.Model):
content = db.BlobProperty(required=True)
last_change = db.DateTimeProperty(required=True, auto_now=True)
field_name = db.StringProperty(required=True, default=u'')
..

def __init__(self, field_name, file_name, content_type,
content_length, charset):
if field_name:
self.field_name = field_name

def append(self, src):
self.content += src


On Jan 27, 9:25 pm, Will vocalster@gmail.com wrote:
 Here you go,

 --
 class UploadStorage(db.Model):
     def __init__(self, field_name, file_name, content_type, content_length,
 charset):
         self.content = db.BlobProperty(required=True)
         self.last_change = db.DateTimeProperty(required=True, auto_now=True)
         self.field_name = db.StringProperty(required=True, default=u'')
         ..

         if (field_name):
             self.field_name = field_name

     def append(self, src):
         self.content += src
 -
 class GAEUploadedFile(UploadedFile):
     def __init__(self, field_name, file_name, content_type, content_length,
 charset):
         self.__storage = UploadStorage(field_name, file_name, content_type,
 content_length, charset)
         ..

      def write(self, content):   # append
         self.__storage.append(content)
         self.size = len(self.__storage.content)

 Thanks,

 Will

 On Tue, Jan 27, 2009 at 7:47 AM, Alexander Kojevnikov 

 alexan...@kojevnikov.com wrote:

   No, doesn't work. I got

   unsupported operand type(s) for +=: 'BlobProperty' and 'str'

   Same as before.

  Could you post here all related code, including the construction of a
  Storage entity?
--~--~-~--~~~---~--~~
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: Form support on a PDA/Smart Phone

2009-01-27 Thread Kajikawa Jeremy
I personally see no reason why a smartphone would remain unsupported...
 you only need to write the site to cater for the phones limitations.

This appears straight forward to simply choosing a different style of
output,
 as long as  the smartphone is able to talk HTTP to the host and
GET/POST
 or use a RESTful service (the iPhone is an example RESTful device).

The only limitations I know for device access would be down to
connectivity
 and the limits of what you know about providing to the device.

just my 2 cents ... 

Sincerely,
 Jeremy

On Tue, 2009-01-27 at 00:53 -0800, vb wrote:
 Hi,
 
 Is it possible to access an application created in AppEngine through
 PDA/Smart Phones.
 Is there any support for certain versions of Smart Phones.
 
 Thanks  Regards,
 Vignesh.
 --~--~-~--~~~---~--~~
 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
 -~--~~~~--~~--~--~---
 


signature.asc
Description: This is a digitally signed message part


[google-appengine] Re: How to append to BlobProperty

2009-01-27 Thread Alexander Kojevnikov

When creating an UploadStorage entity, you should initialise the
content property:

my_entity = UploadStorage(content='')

or:

my_entity = UploadStorage()
my_entity.content = '' # or whatever your initial value is

I know, it a bit confusing. When you define the property in the class,
UploadStorage.content is an instance of db.BlobProperty.

But when you access it after the entity is created, it returns the
actual value of the property, which is of db.Blob type (subclass of
str).


On Jan 27, 10:13 pm, Will vocalster@gmail.com wrote:
 I rewrote it, now the error message became

 unsupported operand type(s) for +=: 'NoneType' and 'str'

 pointing at

 self.content += src

 Seems *content* was not constructed in modified __init__. If I added

     self.content = db.BlobProperty(required=True)

 into __init__ while keeping the definition in the class body, I got

 Property content must be convertible to a Blob instance (Blob() argument
 should be str instance, not BlobProperty)

 Seems this time* content* was constructed but in __init__() somehow it
 wanted to initialize it by a Blob instance, not BlobProperty?!

 Will

 On Tue, Jan 27, 2009 at 6:43 PM, Alexander Kojevnikov 

 alexan...@kojevnikov.com wrote:

  Rewrite your UploadStorage class to declare the module properties in
  the class body, not in the __init__ method. App Engine forwards access
  to property definitions to the actual property values, creation of the
  properties in __init__ is probably not compatible with it.

  For example, when you access self.content in your append() method, GAE
  returns the value of the append property, not the property definition.

  Try this code:

  class UploadStorage(db.Model):
      content = db.BlobProperty(required=True)
      last_change = db.DateTimeProperty(required=True, auto_now=True)
      field_name = db.StringProperty(required=True, default=u'')
     ..

      def __init__(self, field_name, file_name, content_type,
  content_length, charset):
          if field_name:
             self.field_name = field_name

     def append(self, src):
         self.content += src

  On Jan 27, 9:25 pm, Will vocalster@gmail.com wrote:
   Here you go,

   --
   class UploadStorage(db.Model):
       def __init__(self, field_name, file_name, content_type,
  content_length,
   charset):
           self.content = db.BlobProperty(required=True)
           self.last_change = db.DateTimeProperty(required=True,
  auto_now=True)
           self.field_name = db.StringProperty(required=True, default=u'')
           ..

           if (field_name):
               self.field_name = field_name

       def append(self, src):
           self.content += src
   -
   class GAEUploadedFile(UploadedFile):
       def __init__(self, field_name, file_name, content_type,
  content_length,
   charset):
           self.__storage = UploadStorage(field_name, file_name,
  content_type,
   content_length, charset)
           ..

        def write(self, content):   # append
           self.__storage.append(content)
           self.size = len(self.__storage.content)

   Thanks,

   Will

   On Tue, Jan 27, 2009 at 7:47 AM, Alexander Kojevnikov 

   alexan...@kojevnikov.com wrote:

 No, doesn't work. I got

 unsupported operand type(s) for +=: 'BlobProperty' and 'str'

 Same as before.

Could you post here all related code, including the construction of a
Storage entity?
--~--~-~--~~~---~--~~
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 append to BlobProperty

2009-01-27 Thread TLH

from google.appengine.ext import db

class Foo(db.Model):
  b = db.BlobProperty()
  def butWhy(self, s):
self.b = self.b + s

f = Foo(
  b = Append to a Blob?

)

f.butWhy( You can, but why?)

print f.b  # Append to a Blob? You can, but why?

I suspect you should be using a Text property.





On Jan 23, 11:20 am, Will vocalster@gmail.com wrote:
 Hi all,

 I'd like to append a byte string to a db.BlobProperty, but can't figure out
 how. For example,

 Any ideas? Thanks in advance.

 Will
--~--~-~--~~~---~--~~
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] internal error when deploying a new non-default version

2009-01-27 Thread konryd

Almost every time I deploy a new version of my app and try to access
it using http://[version].latest.myappnamae.appspot.com I get internal
error, unless I make it default.
--~--~-~--~~~---~--~~
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: Complex tagging of items

2009-01-27 Thread Seronja

Here's where old good relational databases theory comes in.

How will I do it:
Create a model ``Tags'':
class Tags(db.Model):
  tag_name = db.StringProperty()
Create a model ``Items'':
class Items(db.Model):
  item_name = db.StringProperty()
And create a model  ``ItemTags''
class ItemTags(db.model):
  tag = db.ReferenceProperty(Tags)
  item = db.ReferenceProperty(Items)

So when you need to get items for some tags you first query the
``ItemTags'' for items with concrete tag(s) thgan by key you get
Items.

Cheers,
Serhiy

On Jan 24, 3:17 am, George Sudarkoff sudark...@gmail.com wrote:
 I have a bit of a problem coming up with an efficient data model/algo
 for a project I am working on:

 I have a few hundred items, each tagged with zero or more tags. I need
 to be able to fetch items that, for example, are tagged with tag1 AND
 (tag2 OR tag3) AND NOT tag4.

 Any help would be greatly appreciated!

--~--~-~--~~~---~--~~
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: API calls/minute quotas

2009-01-27 Thread Marzia Niccolai

Hi,

If you are hitting this quota limit, please just apply for an increase:
http://code.google.com/support/bin/request.py?contact_type=AppEngineContact

Every resource on the system has some quota associated with it, for
things like Image Transforms, it's high enough that the majority of
applications will never hit it. Of course, there are always
exceptions, and if you are hitting it, we are usually happy to
increase your quota.

-Marzia

On Tue, Jan 27, 2009 at 6:04 AM, Blixt andreasbl...@gmail.com wrote:

 Hi there!

 From what I understand, there are invisible quotas that limit how
 many API requests you can do every x time. Here's an example of an
 exception raised when this quota is exceeded: The API call
 images.Transform() required more quota than is available.

 How should these be handled? It seems irrational to force users to
 retry their requests later, when some of the limits seem to be
 enforced already with only a few simultaneous users (in this case I'm
 referring to the images.Transform API call, with a few people
 uploading, say, five images each that then need to be resized to
 multiple sizes.) I hope these quotas will be visible in the future so
 that they can be monitored, and that there will be options to extend
 these quotas.

 Regards,
 Andreas
 


--~--~-~--~~~---~--~~
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] Suggestion for anyone using session classes that rely on the datastore

2009-01-27 Thread bowman.jos...@gmail.com

I've started work on version 1.1.3 of gaeutilities which is going to
add a flag to not save new sessions by default, as well as adding a
save method. I've got the first bit of functionality live on a site
that every hour has a script that connects and adds anywhere from
80-150 items to my datastore. The script doesn't store cookies, so
every request started a new session.

Last night, since adding the new sessions code in, there is a
noticeable (though not dramatic) decrease in the CPU Seconds Used/
Second.

My suggestion for anyone using sessions is to avoid using datastore
backed sessions for anonymous users. gaeutilities with version 1.1.3
will make this easier. Those of you using memcache or pure cookie
solutions should not have the overhead that the datastore backed
cookies bring to the table, so this may be less of an issue for 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 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Are query/fetch LIMITs a suggestion or a guarantee?

2009-01-27 Thread Andy Freeman

When is it safe to assume that a fetch that returns less than LIMIT
items has returned all matching items?  (Clearly if a fetch returns
LIMIT items, there may be more matching items.)

returns is important - I'm assuming that the fetch isn't running
into cpu quotas.

For example, is there a limit on the total size of a fetch result?
(If the matching items are 990kbytes, 1000 items is almost a
gigabyte.)

However, I'm primarily interested in cases where total size isn't an
issue.  (My items are reasonably small and I'm specifying a limit that
is significantly less than 1000.)  Does the datastore ever just say
that's enough, if you really want more items, fetch again before it
reaches the specified limit?  (Yes, I know how the LIMIT clause in the
query interacts with the limit specified in the fetch itself.)



--~--~-~--~~~---~--~~
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: Django, including a file

2009-01-27 Thread Larry

Thanks! I have found my problem...

When I render the templates I first load the Template and then for
each page render I create a Context object and do:

self.response.out.write(templateObject.render(contextObject))

When I change this back to:

self.response.out.write(template.render(templatePath, contextVals))

it works perfectly. I wasn't aware of the difference except thought
that loading in the template object would be faster since it removes
repeated operations. Can I still use the template-object method and
includes together?

Thanks loads! At the very least I know the problem and can get it
working now. =)


On Jan 27, 11:03 am, Alexander Kojevnikov alexan...@kojevnikov.com
wrote:
 I've created a sample project with just one page and the inclusion
 works fine both in the SDK and in production. Take a look, may be you
 will spot differences with your project:

 http://www.sendspace.com/file/qrsyjh
--~--~-~--~~~---~--~~
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] Cloud hosted IDE

2009-01-27 Thread adelevie

Does anyone else agree that a web-based IDE for GAE would be awesome?
Thoughts?
How can this be done?
I'm thinking Google could whip out a pretty neat solution--maybe using
a Google Docs-like text editor and an ajaxy file system.
--~--~-~--~~~---~--~~
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: Serving static files

2009-01-27 Thread James Ashley

That did the trick.  Thank you [both]

On Jan 26, 2:50 am, Blixt andreasbl...@gmail.com wrote:
 Looks to me like there's three spaces in front of static_dir:
 static. Try removing one of the spaces so that there are only two.

 Regards,
 Andreas

 On Jan 26, 5:41 am, James Ashley james.ash...@gmail.com wrote:

  I feel like a complete idiot.

  Here's my app.yaml:

  application: whatever
  version: 1
  runtime: python
  api_version: 1

  handlers:
  - url: /static
     static_dir: static

  When I try to run dev_appserver, I get this exception/stack trace:

  $ python ./dev_appserver.py  -d ../pyjamas/
  ERROR    2009-01-26 04:15:15,236 dev_appserver_main.py] Fatal error
  when loading
   application configuration:
  mapping values are not allowed here
    in ../pyjamas/app.yaml, line 8, column 14

  I've compared it with app.yaml's from various working projects, and I
  just don't see the difference.

  What am I doing that's bone-headed here?

  Thanks,
  James


--~--~-~--~~~---~--~~
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: Cloud hosted IDE

2009-01-27 Thread Peter Cooper
I get the impression that what adelevie  was after was an app that lives on
appspot.com with .py, .yaml, etc., in datastore, that would be accessible
from the cloud with the proper authentication, but would be an IDE for GAE
only. No more dev_appserver.py or appcfg.py or the accoutrements therewith,
for them that want the GAE IDE on appspot.com. Does that comport with what
you meant adelevie?

On Tue, Jan 27, 2009 at 8:43 AM, kang areyouloo...@gmail.com wrote:

 Zoho Creator got an update today with a new feature that lets you deploy
 your Zoho Creator applications to Google App Engine.
 http://blogs.zoho.com/general/zoho-creator-deploys-to-google-app-engine/

 On Tue, Jan 27, 2009 at 8:34 AM, adelevie adele...@gmail.com wrote:


 Does anyone else agree that a web-based IDE for GAE would be awesome?
 Thoughts?
 How can this be done?
 I'm thinking Google could whip out a pretty neat solution--maybe using
 a Google Docs-like text editor and an ajaxy file system.




 --
 Stay hungry,Stay foolish.

 


--~--~-~--~~~---~--~~
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] Basic Question concerning def get(self) and def post(self)

2009-01-27 Thread 0815pascal

Hello,

I'm new to google app engine and also new to python. I don't
understand why you have to code it like this:

class MainPage(webapp.RequestHandler):
  def get(self):

I thought that def would define a function. But if I label it
different then get or post it doesn't work. Can somebody give me a
basic idea?

--~--~-~--~~~---~--~~
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: Cloud hosted IDE

2009-01-27 Thread Peter Cooper
Yes, I looked at New Zoho and I certainly did not mean to imply
disparagement of the product. I believe in diversity and to prove it I admit
I once used pico and pine.

Cloud based IDE would be nice for a scenario where there were coders, test
engineers, and managers all in different locations without any way to walk
into each other's office. Version control in the Cloud -- how would that
work?

On Tue, Jan 27, 2009 at 8:58 AM, adelevie adele...@gmail.com wrote:


 Peter, that is what I had in mind. Although, I must say I am quite
 impressed with this New Zoho product. I think there is room for both
 such products.
 One is meant for ultra-fast, noob-friendly deployment and the other
 would be meant for coders who would like programming to be as
 convenient as Gmail (the gateway drug to web 2.0 :) )

 On Jan 27, 11:49 am, Peter Cooper petercoo...@pgctesting001.com
 wrote:
  I get the impression that what adelevie  was after was an app that lives
 on
  appspot.com with .py, .yaml, etc., in datastore, that would be
 accessible
  from the cloud with the proper authentication, but would be an IDE for
 GAE
  only. No more dev_appserver.py or appcfg.py or the accoutrements
 therewith,
  for them that want the GAE IDE on appspot.com. Does that comport with
 what
  you meant adelevie?
 
  On Tue, Jan 27, 2009 at 8:43 AM, kang areyouloo...@gmail.com wrote:
   Zoho Creator got an update today with a new feature that lets you
 deploy
   your Zoho Creator applications to Google App Engine.
  
 http://blogs.zoho.com/general/zoho-creator-deploys-to-google-app-engine/
 
   On Tue, Jan 27, 2009 at 8:34 AM, adelevie adele...@gmail.com wrote:
 
   Does anyone else agree that a web-based IDE for GAE would be awesome?
   Thoughts?
   How can this be done?
   I'm thinking Google could whip out a pretty neat solution--maybe using
   a Google Docs-like text editor and an ajaxy file system.
 
   --
   Stay hungry,Stay foolish.
 


--~--~-~--~~~---~--~~
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: API calls/minute quotas

2009-01-27 Thread boson


On Jan 27, 12:04 am, Blixt andreasbl...@gmail.com wrote:
 I hope these quotas will be visible in the future so
 that they can be monitored, and that there will be options to extend
 these quotas.

FYI there is a page in the App Engine admin console that shows all
your quota and gives up-to-the-minute monitoring, including 4 separate
Image-related quotas.

Go to:
http://appengine.google.com/

Select your app, then select Quota Details in the left column.


--~--~-~--~~~---~--~~
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] Debug with pdb + Django + app-engine-patch ?

2009-01-27 Thread boson

I can't get pdb to work with Django + app-engine-patch.

When I do this in my code:
  import pdb
  pdb.set_trace()

I get a stack trace printed to the console with a BdbQuit exception,
but the (Pdb) prompt itself is written to the HTML output with the
HTML for the Debug error page immediately following.

No interactive prompt ever comes up.

Am I missing a step?
--~--~-~--~~~---~--~~
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 datastore insertion rate

2009-01-27 Thread djidjadji

Why do you put all nodes for a device in one entity group (same parent node)?
Entity groups should be kept small (in most cases) because you lock
all members of the group if you do a put() on one of them. Only use
entity groups if you need some transaction function to do the update
on some of the group members or you need the parent / grandparent
relation. All members of an entity group are stored on the same
Bigtable disk (no possibility for distributed storage for members in
an entity group).

Why don't you add a ReferenceProperty to the node class? [1]
This property references the device object you now set as parent.
For a query you now select on this ReferenceProperty instead of
selecting for parent.
This is what the back-reference property is doing behind the scene,
construct a Query object that filters on the ReferenceProperty.

[1] 
http://code.google.com/appengine/docs/python/datastore/entitiesandmodels.html#References

--~--~-~--~~~---~--~~
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 datastore insertion rate

2009-01-27 Thread iDavid

Thank you for your suggestions, I really appreciate them.

My load test is sending data exactly as the physical devices in the
field would do.  Each device will send 4 Notes per POST, once a minute
(a note every 15 seconds).

I did not know about the batch-put, I will make the necessary code
changes for that.  (Thank you Brett)

I'm grouping the notes with the devices they came from.  My first
implementation, simply used the ReferenceProperty(), but quickly ran
into thetoo much contention for these entities problem on the Note
entity.  Afterwatching Brett's presentation on sharding, I thought
I'd get moreparallelizm by making the devices a group entity and
putting the notes in them. Which seemed to work, until I hit my
quota.  It's ok if the device group entity is 'locked' while inserting
notes associated with it.  Each physical device is unique, and it will
only make one POST at a time.  My goal is to be able to handle each
device in parallel.

If this works out, I'd like to run a 1 hour load test with 5,000
devices, to come up with a cost model for my company.  I expect the
number of devices to grow over the coming year, and need a scalable
system to support this load.

Thank you,
-David Story

--~--~-~--~~~---~--~~
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: Cloud hosted IDE

2009-01-27 Thread adelevie

I do know of a company that may offer a similar service, but for Ruby:
http://devver.net/ . They are part of the TechStars incubator, I
believe.

On Jan 27, 5:58 pm, ryan ryanb+appeng...@google.com wrote:
 On Jan 27, 9:11 am, Peter Cooper petercoo...@pgctesting001.com
 wrote:

  I believe in diversity and to prove it I admit I once used pico and pine.

 wait, you admit? as in, there's something wrong with them now? :P

 http://snarfed.org/space/gmail+vs+pine
--~--~-~--~~~---~--~~
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] A possible way to improve this Google Group

2009-01-27 Thread adelevie

I hope this is in compliance with posting rules etc etc and I know
that it is not usually a good sign to start off with such a sentence,
so I'll cut to the chase:

I have about 20 beta invites available for a service called Aardvark.
Aardvark is new application that facilitates user-to-user questions
and answers. Users can both ask and answer questions. Upon
registration, users list their areas of expertise. Questions relating
to those areas are routed to them. All of this can take place via IM,
GChat, and a UI on their web site. You can read more here:
http://venturebeat.com/2008/11/05/social-search-product-aardvark-think-yahoo-answers-meets-twitter-but-better/

I think it would be neat if a sizable portion of the Google App Engine
Google Group signed up for this service and listed Google App Engine
as an area of expertise.

I am willing to give away about 10 invites on this group, the only
condition is that you *promise* to use your beta invites to invite
others from this Google Group as well. In case you were wondering, the
other 10 invites will go to the Django Users Group ;)

Simply reply or private message me with your email address and I'll
get you set up.

Thanks, and I apologize if I broke any rules,

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: Complex tagging of items

2009-01-27 Thread George Sudarkoff



On Jan 25, 11:17 pm, ryan ryanb+appeng...@google.com wrote:
 On Jan 25, 11:43 am, Anthony acorc...@gmail.com wrote:

  If you store the tags as a StringList wouldn't this query work..

  WHERE tags = tag1 AND tags IN [tag2,tag3] AND tags != tag4

  From the docs it says the IN  != do run multiple queries behind the
  scenes so not sure if it will be as quick as running it in memory for
  a few hundred items, but if you need more than a few hundred items you
  are not going to be able to do it in memory before it starts timing
  out.

 good call, anthony! that query does indeed do what george wants, and
 you're right about how != and IN work behind the scenes.

 the problem with that query, unfortunately, is that it needs this
 index:

 - kind: Foo
   properties:
   - name: tags
   - name: tags
   - name: tags

 ...which is almost certain to explode on entities with any more than a
 handful of tags:

 http://code.google.com/appengine/docs/python/datastore/queriesandinde...

Very cool! On average I won't have more than 2-3 tags per item, so I
really think this solution might work! I'll try it and report back the
results.


--~--~-~--~~~---~--~~
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: Complex tagging of items

2009-01-27 Thread George Sudarkoff

This is what I have right now for simple 'tag1 OR tag2' cases. But how
do you efficiently retrieve items for 'tag1 AND (tag2 OR tag3) AND NOT
tag4' with this model?

On Jan 27, 12:59 am, Seronja ser...@oplakanets.com wrote:
 Here's where old good relational databases theory comes in.

 How will I do it:
 Create a model ``Tags'':
 class Tags(db.Model):
   tag_name = db.StringProperty()
 Create a model ``Items'':
 class Items(db.Model):
   item_name = db.StringProperty()
 And create a model  ``ItemTags''
 class ItemTags(db.model):
   tag = db.ReferenceProperty(Tags)
   item = db.ReferenceProperty(Items)

 So when you need to get items for some tags you first query the
 ``ItemTags'' for items with concrete tag(s) thgan by key you get
 Items.

 Cheers,
 Serhiy

 On Jan 24, 3:17 am, George Sudarkoff sudark...@gmail.com wrote:

  I have a bit of a problem coming up with an efficient data model/algo
  for a project I am working on:

  I have a few hundred items, each tagged with zero or more tags. I need
  to be able to fetch items that, for example, are tagged with tag1 AND
  (tag2 OR tag3) AND NOT tag4.

  Any help would be greatly appreciated!



--~--~-~--~~~---~--~~
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: Googe App Engine and Friend Connect...

2009-01-27 Thread anand

Thanks sir!

It worked for me. It was great help.

Regards
Anand

On Jan 11, 6:13 am, Jove jovezh...@gmail.com wrote:
 Hi benzrad,

 Go ahead adding that code to your app.yaml. It works for my site on
 GAE.

 Few more informations:
 * I put the canvas.htmland rpc_relay.htmlon %AppHome%/media/ folder
 * Add the following code at the begining of app.yaml. Make sure those
 handles are registered **before** other python/django handlers
 - url: /canvas.html
   static_files: media/canvas.html
   upload: media/canvas.html

 - url: /rpc_relay.html
   static_files: media/rpc_relay.html
   upload: media/rpc_relay.html

 * test on your local server. It should work. Then upload to GAE to
 check the live gadget

 On Jan 4, 10:12 am, benzrad dab...@gmail.com wrote:

  i tried the code, but it don't work on my app athttp://app21zh.appspot.com
  .in friend connect in the process to setup the site, it still reported
  can't find the 2files, which i had place all over includingstatic
  folder.
  i need more instruction.TIA.

  On Jan 1, 3:56 pm, Shalin Shekhar Mangar shalinman...@gmail.com
  wrote:

   You can add them inside the static directory. You must also map them to
   '/' (root) by adding the following in your app.yaml file.

   - url: /canvas.html
     static_files:static/canvas.html
     upload:static/canvas.html

   - url: /rpc_relay.html
     static_files:static/rpc_relay.html
     upload:static/rpc_relay.html

   Hope that helps.

   On Mon, Dec 29, 2008 at 7:21 AM, benzrad dab...@gmail.com wrote:

dear sir,
i also want to add google friend connect onto my GAE, but where
directory should i place the 2 file google asked for uploading, ie.,
canvas.htmlrpc_relay.html? i place them on the root folder of my
app, also place them in thestaticfolder with otherhtmlfiles, but
neither working, ie, the setup process of google friend connect can't
find them. where and how to setup in the py file to let the 2html
   filescan be found on root folder? i absolutely bland on python code,
but i try to learn.p help me out.

   --
   Regards,
   Shalin Shekhar Mangar.
--~--~-~--~~~---~--~~
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: Permanent Unique User Identifier (part 2)

2009-01-27 Thread bowman.jos...@gmail.com

The openid solution is as easy to use as the user api for appengine.
In my implementation, I direct the users using a Login using Google
link, which sends them to a google page where they click a Continue to
sign in button, which sends them back to my site where I finish
handling the openid authentication process.

On Jan 27, 8:31 pm, Ryan Lamansky spam...@kardax.com wrote:
 I'm aware of the OpenID option, but I'm concerned about having to
 train users how to use it.  Ease of use is critical.

 The ability to migrate off App Engine isn't useful to me because I
 could never cost effectively reach the same level of scalability.

 -Ryan

 On Jan 26, 5:21 pm, bowman.jos...@gmail.com

 bowman.jos...@gmail.com wrote:
  As someone suggested in that thread, I'd suggest you look at Google
  Openid. I went this route because it also offers a way for you to
  persist your user identity if you move your domain off of appengine.

  On Jan 26, 5:22 pm, Ryan Lamansky spam...@kardax.com wrote:

   As a follow-up to this thread 
   here:http://groups.google.com/group/google-appengine/browse_thread/thread/...

   I've created a defect report 
   here:http://code.google.com/p/googleappengine/issues/detail?id=1019

   I'm really hoping Google can do something, as I'm hesitant to proceed
   with any of my App Engine ideas knowing that my users are going to get
   burned :|

   -Ryan
--~--~-~--~~~---~--~~
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 datastore insertion rate

2009-01-27 Thread sebastian.ov...@gmail.com

Hi David,

accordingly with
http://code.google.com/appengine/docs/python/datastore/keysandentitygroups.html#Entity_Groups_Ancestors_and_Paths
An entity without a parent is a root entity...

so you don't need to associate each note to a parent...

I'm wondering... when you got these contention errors, were you
assiging a parent to the notes (entity groups) ? if that is the case,
then you were using a single entity group !

On Jan 27, 12:03 am, iDavid idavidst...@gmail.com wrote:
 After watching Brett's video, the answer became 
 clear.http://sites.google.com/site/io/building-scalable-web-applications-wi...

 Create a group entity for each device.  Then all device's can
 have their notes inserted in parallel.

 I will give this a try and report back.

 -David Story
--~--~-~--~~~---~--~~
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 datastore insertion rate

2009-01-27 Thread iDavid

I got the contention errors, during my first run, using a
ReferenceProperty to link a Note to a Device (not a parent).  Only
after I watched Brett's presentation did I add the device group entity
and parent=device code.

Adding the device group entity and parent=device code, seems to have
solved the too much contention for these entities problem.

Quote From 'Keys and Entity Groups':
http://code.google.com/appengine/docs/python/datastore/keysandentitygroups.html#Entity_Groups_Ancestors_and_Paths
The more entity groups your application has—that is, the more root
entities there are—the more efficiently the datastore can distribute
the entity groups across datastore nodes.

Brett does a great job of describing this in his presentation:
http://sites.google.com/site/io/building-scalable-web-applications-with-google-app-engine

For me, having all the notes from a device grouped together on a
datastore node is great.  I process the notes in sequence, but, I'd
like to process the devices in parallel.  This is where I'm looking
for scalability, across the devices.  I need to inform the App Engine
that its ok to process these (notes) in sequence, but handle these
(devices) in parallel.  Making the device group entity seems to have
done that.

Thank you for your help,
-David Story
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---