[google-appengine] Re: Why are my plus signs disappearing?

2009-08-08 Thread Bennomatic

Thank you!  This totally works!

Ben

On Aug 4, 11:02 pm, Hrishikesh Bakshi bakshi.hrishik...@gmail.com
wrote:
 Use encodeURIComponent() instead of escape() for encoding your POST data.

 This will solve your issue.

 http://tinyurl.com/mcbgxg





 On Wed, Aug 5, 2009 at 1:00 AM, Bennomatic readyass...@gmail.com wrote:

  OK, here's the last item on the list.  I used my non-ajax form to save
  the data as a string as well, and now the + signs are being saved.

  Should I not be escaping?  Should I double-escape?  Should I use a
  content type other than application/x-www-form-urlencoded?

  Thanks for any guidance you can offer!

  On Aug 4, 9:47 pm, Bennomatic readyass...@gmail.com wrote:
   One other thing: I set up a form post option, so I was able to set up
   the output to echo the input and the + signs are still there.  It only
   seems to be when I put those + signs into the datastore that they
   become spaces or disappear.

   Hlp! (please?)

   On Aug 4, 9:28 pm, readyass...@gmail.com readyass...@gmail.com
   wrote:

I've noticed a strange bug in my application, which has an AJAX
callback for saving form (textarea) content into a blob in the
database. The problem is that while everything else saves fine, any
'+' characters disappear.

I've added an alert to the AJAX save routine so I can see that, before
the save, the '+' is still in the string, and then the meat of the
callback is this:

  http_request.open('post', xmlUrl, true);
  http_request.setRequestHeader(Content-Type, application/x-www-
form-urlencoded);
  http_request.send('file_name=' + escape(file_name) +
'file_content=' + escape(ta_content));

the ta_content variable is the TextArea content that I just verified
with the javascript alert.

This posts against a save routine which does the following:

class Save(webapp.RequestHandler):
  def post(self):
    #fn = self.request.get('file_name')
    fc = self.request.get('file_content')

    newfile = db.GqlQuery('SELECT * FROM Posts WHERE [yadda yadda]).get
()
    if newfile is not None:
      newfile.content = db.Blob(str(fc))
    else:
      newfile = Posts(content = db.Blob(str(fc)),
                      content_type = ct)
    newfile.put()

    self.response.out.write('responseok/response')

And the DB entity is as follows:

class Posts(db.Model):
  content = db.BlobProperty()
  created = db.DateTimeProperty(auto_now_add=True)
  #content2 = db.StringProperty()

So my question is, where are my '+' signs disappearing and how can I
stop this?  I'm encoding my data on the post.  I'm converting to a
string before storing to a blob on the AppEngine side.  I even
temporarily added a string to the entity so that I could actually see
the data as it's stored in the datastore and guess what?  I can see my
,,,', and everything else.  Just no +.

Can anyone see what I'm doing wrong here, or does AppEngine just hate
me, plus signs or both?

 --
 Hrishikesh Bakshi
--~--~-~--~~~---~--~~
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: Why are my plus signs disappearing?

2009-08-08 Thread Bennomatic

Oh, and thank you for the snarky link!  I had wasted my time searching
this group with the same phrase, rather than the general web.

On Aug 4, 11:02 pm, Hrishikesh Bakshi bakshi.hrishik...@gmail.com
wrote:
 Use encodeURIComponent() instead of escape() for encoding your POST data.

 This will solve your issue.

 http://tinyurl.com/mcbgxg





 On Wed, Aug 5, 2009 at 1:00 AM, Bennomatic readyass...@gmail.com wrote:

  OK, here's the last item on the list.  I used my non-ajax form to save
  the data as a string as well, and now the + signs are being saved.

  Should I not be escaping?  Should I double-escape?  Should I use a
  content type other than application/x-www-form-urlencoded?

  Thanks for any guidance you can offer!

  On Aug 4, 9:47 pm, Bennomatic readyass...@gmail.com wrote:
   One other thing: I set up a form post option, so I was able to set up
   the output to echo the input and the + signs are still there.  It only
   seems to be when I put those + signs into the datastore that they
   become spaces or disappear.

   Hlp! (please?)

   On Aug 4, 9:28 pm, readyass...@gmail.com readyass...@gmail.com
   wrote:

I've noticed a strange bug in my application, which has an AJAX
callback for saving form (textarea) content into a blob in the
database. The problem is that while everything else saves fine, any
'+' characters disappear.

I've added an alert to the AJAX save routine so I can see that, before
the save, the '+' is still in the string, and then the meat of the
callback is this:

  http_request.open('post', xmlUrl, true);
  http_request.setRequestHeader(Content-Type, application/x-www-
form-urlencoded);
  http_request.send('file_name=' + escape(file_name) +
'file_content=' + escape(ta_content));

the ta_content variable is the TextArea content that I just verified
with the javascript alert.

This posts against a save routine which does the following:

class Save(webapp.RequestHandler):
  def post(self):
    #fn = self.request.get('file_name')
    fc = self.request.get('file_content')

    newfile = db.GqlQuery('SELECT * FROM Posts WHERE [yadda yadda]).get
()
    if newfile is not None:
      newfile.content = db.Blob(str(fc))
    else:
      newfile = Posts(content = db.Blob(str(fc)),
                      content_type = ct)
    newfile.put()

    self.response.out.write('responseok/response')

And the DB entity is as follows:

class Posts(db.Model):
  content = db.BlobProperty()
  created = db.DateTimeProperty(auto_now_add=True)
  #content2 = db.StringProperty()

So my question is, where are my '+' signs disappearing and how can I
stop this?  I'm encoding my data on the post.  I'm converting to a
string before storing to a blob on the AppEngine side.  I even
temporarily added a string to the entity so that I could actually see
the data as it's stored in the datastore and guess what?  I can see my
,,,', and everything else.  Just no +.

Can anyone see what I'm doing wrong here, or does AppEngine just hate
me, plus signs or both?

 --
 Hrishikesh Bakshi
--~--~-~--~~~---~--~~
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: Why are my plus signs disappearing?

2009-08-04 Thread Bennomatic

One other thing: I set up a form post option, so I was able to set up
the output to echo the input and the + signs are still there.  It only
seems to be when I put those + signs into the datastore that they
become spaces or disappear.

Hlp! (please?)

On Aug 4, 9:28 pm, readyass...@gmail.com readyass...@gmail.com
wrote:
 I've noticed a strange bug in my application, which has an AJAX
 callback for saving form (textarea) content into a blob in the
 database. The problem is that while everything else saves fine, any
 '+' characters disappear.

 I've added an alert to the AJAX save routine so I can see that, before
 the save, the '+' is still in the string, and then the meat of the
 callback is this:

   http_request.open('post', xmlUrl, true);
   http_request.setRequestHeader(Content-Type, application/x-www-
 form-urlencoded);
   http_request.send('file_name=' + escape(file_name) +
 'file_content=' + escape(ta_content));

 the ta_content variable is the TextArea content that I just verified
 with the javascript alert.

 This posts against a save routine which does the following:

 class Save(webapp.RequestHandler):
   def post(self):
     #fn = self.request.get('file_name')
     fc = self.request.get('file_content')

     newfile = db.GqlQuery('SELECT * FROM Posts WHERE [yadda yadda]).get
 ()
     if newfile is not None:
       newfile.content = db.Blob(str(fc))
     else:
       newfile = Posts(content = db.Blob(str(fc)),
                       content_type = ct)
     newfile.put()

     self.response.out.write('responseok/response')

 And the DB entity is as follows:

 class Posts(db.Model):
   content = db.BlobProperty()
   created = db.DateTimeProperty(auto_now_add=True)
   #content2 = db.StringProperty()

 So my question is, where are my '+' signs disappearing and how can I
 stop this?  I'm encoding my data on the post.  I'm converting to a
 string before storing to a blob on the AppEngine side.  I even
 temporarily added a string to the entity so that I could actually see
 the data as it's stored in the datastore and guess what?  I can see my
 ,,,', and everything else.  Just no +.

 Can anyone see what I'm doing wrong here, or does AppEngine just hate
 me, plus signs or both?
--~--~-~--~~~---~--~~
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: Why are my plus signs disappearing?

2009-08-04 Thread Bennomatic

OK, here's the last item on the list.  I used my non-ajax form to save
the data as a string as well, and now the + signs are being saved.

Should I not be escaping?  Should I double-escape?  Should I use a
content type other than application/x-www-form-urlencoded?

Thanks for any guidance you can offer!

On Aug 4, 9:47 pm, Bennomatic readyass...@gmail.com wrote:
 One other thing: I set up a form post option, so I was able to set up
 the output to echo the input and the + signs are still there.  It only
 seems to be when I put those + signs into the datastore that they
 become spaces or disappear.

 Hlp! (please?)

 On Aug 4, 9:28 pm, readyass...@gmail.com readyass...@gmail.com
 wrote:



  I've noticed a strange bug in my application, which has an AJAX
  callback for saving form (textarea) content into a blob in the
  database. The problem is that while everything else saves fine, any
  '+' characters disappear.

  I've added an alert to the AJAX save routine so I can see that, before
  the save, the '+' is still in the string, and then the meat of the
  callback is this:

    http_request.open('post', xmlUrl, true);
    http_request.setRequestHeader(Content-Type, application/x-www-
  form-urlencoded);
    http_request.send('file_name=' + escape(file_name) +
  'file_content=' + escape(ta_content));

  the ta_content variable is the TextArea content that I just verified
  with the javascript alert.

  This posts against a save routine which does the following:

  class Save(webapp.RequestHandler):
    def post(self):
      #fn = self.request.get('file_name')
      fc = self.request.get('file_content')

      newfile = db.GqlQuery('SELECT * FROM Posts WHERE [yadda yadda]).get
  ()
      if newfile is not None:
        newfile.content = db.Blob(str(fc))
      else:
        newfile = Posts(content = db.Blob(str(fc)),
                        content_type = ct)
      newfile.put()

      self.response.out.write('responseok/response')

  And the DB entity is as follows:

  class Posts(db.Model):
    content = db.BlobProperty()
    created = db.DateTimeProperty(auto_now_add=True)
    #content2 = db.StringProperty()

  So my question is, where are my '+' signs disappearing and how can I
  stop this?  I'm encoding my data on the post.  I'm converting to a
  string before storing to a blob on the AppEngine side.  I even
  temporarily added a string to the entity so that I could actually see
  the data as it's stored in the datastore and guess what?  I can see my
  ,,,', and everything else.  Just no +.

  Can anyone see what I'm doing wrong here, or does AppEngine just hate
  me, plus signs or both?
--~--~-~--~~~---~--~~
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: Querying for N random records on Appengine datastore

2009-07-14 Thread Bennomatic

I was just thinking this last night when I wasn't at my computer.
Darn you for publishing my good idea first! :)

It doesn't bring the number of queries down to 1, but it does bring
them down to 2, at least on the request side.

Of course, it also means one extra transactions every time a new
entity is created, so I don't know if there's any net savings, but
this does seem like a reasonable way to address the issue at hand.

-Ben

On Jul 12, 11:08 pm, johnP j...@thinkwave.com wrote:
  Dont know quite how would implement a fifo buffer on AppEngine, would
  almost certainly use the datastore, so is going to be expensive...

 A possibility is to maintain an index, which is a pickled list of
 entity keys, stored as a blob somewhere.  You'll need to maintain the
 index by adding/removing keys as you add/remove entities.  But then,
 when you need to make a random choice, just unpickle the list, grab
 any five keys from the list, and db.get([keys]).

 johnP

 On Jul 11, 12:41 pm, Barry Hunter barrybhun...@googlemail.com wrote:



  On 11/07/2009, Devel63 danstic...@gmail.com wrote:

    Barry, I understand your objections below, but do you have a better
    approach?

  no, I dont. The way in my first reply is the best I can think off. Not
  totally uniform, but dont think any 'random' solution is going to be,
  unless you keep the data uptodate - which is not practical on
  AppEngine.

  A reasonably good solution, is to use a FIFO buffer, when the queue is
  empty you get all keys, and shuffle them and add to the queue. then
  getting random results is a matter of poping that many keys off the
  queue, and fetching them.

  Dont know quite how would implement a fifo buffer on AppEngine, would
  almost certainly use the datastore, so is going to be expensive.

    Assigning random numbers to entities is guaranteed to be worse.  If
    you are worried about an entity being deleted and opening a gap in the
    sequence, imagine the thousand-fold gaps you will see with random ID
    generation (e.g. 1, 10001, 10002, 2, ...).

    See below.

    On Jul 10, 3:03 pm, Barry Hunter barrybhun...@googlemail.com wrote:

On 10/07/2009, Devel63 danstic...@gmail.com wrote:

       The best way is to assign a one-up counter to each record as you
       create it, then call random.randint(1,max_counter) to determine the
       desired record.

       To retrieve multiple random entities in a query, do a filter('IN ',
       [my random nums]).

     doent work that well once records start getting deleted (get the same
     issue, non uniform distribution)

   If an app needs to support entity deletion, you can still ensure
    uniformity by running a periodic cron job to compress the counter
    sequence.

     nor does it work if you filtering at the same time :(

   Correct, in that the distribution is no longer uniform.  But this is
    also true of the random ID approach. I admit that the random ID
    approach seems appealing at first, but when you actually look into it,
    you'll find that you are guaranteed that many results will be 3X more
    likely than others, or worse.  It IS better in the case that you want
    to randomize based on time of entity creation, but there are other
    ways to deal with this.

    I would love it if someone could come up with a good way to do true
    random results of an arbitrary query set!!

       Note that behind the scenes this generates multiple queries, so 
   you're
       not saving much time.

       On Jul 10, 7:34 am, Wooble geoffsp...@gmail.com wrote:
        Highly non-optimal solution: have a cron job assign new random 
   numbers
        to your entities often enough to simulate randomness.  Even just 
   re-
        assigning numbers to entities that have been previously selected 
   might
        work.  This involves a lot more CPU as you'd be doing writes, but
        shifts the work from request time to a background process so your
        users don't see the added latency for doing N queries.

        Another possible solution would be to fetch keys only for X*N 
   entities
        (where greater X's produce more apparent randomness) then choose 
   N of
        those keys to actually fetch entities.

        On Jul 9, 12:33 pm, aloo aleem.maw...@gmail.com wrote:

         Hi all,

         I'm trying to write a GQL query that returns N random records 
   of a
         specific kind. My current implementation works but requires N 
   calls to
         the datastore. I'd like to make it 1 call to the datastore if
         possible.

         I currently assign a random number to every kind that I put 
   into the
         datastore. When I query for a random record I generate another 
   random
         number and query for records  rand ORDER BY asc LIMIT 1.

         This works, however, it only returns 1 record so I need to do N
         queries. Any ideas on how to make this one query? Thanks.

  --
  Barry

  -www.nearby.org.uk-www.geograph.org.uk-

[google-appengine] Re: urlfetch... Implementing my own cache? Memcache?

2009-05-25 Thread Bennomatic

Hi Jordisan,

I'm working on something very similar, and yes, I do use both memcache
and the datastore, to ensure that the cached data lasts as long as I
want it to.  Memcache, IIUC, is not guaranteed to hold onto your data
for as long as you specify.  So my code looks like this:

on request for data:
 - Check memcache to see if I have it stored (the identifier is the
URL path).  This way, oft-requested files are served most quickly.
 - If not, check the datastore.  This way, I don't have to hit the
originating site for any non-updated data.
 - If not, do a URL fetch and grab it, caching it in memcache and
datastore.


For my purposes, I don't store posts--since they're usually dynamic
CGI script requests on the sites I'm using it with, and I don't cache
gets that have query strings.  Eventually, I'm going to build a
management app that will allow me to specify cache time, purge stored
data manually, etc., but right now it's set up as described above.

-Ben

On May 25, 2:49 am, jordisan ram...@gmail.com wrote:
 Hi.
 I'm developing an application which connects to external APIs
 (delicious) via URLFETCH. Currently every request to my application
 causes one (or more) calls to that external APIs.

 I want to implement some kind of INTERMEDIATE CACHE BETWEEN MY APP AND
 EXTERNAL APIS to speed up response time and avoid bothering too much
 external systems.

 I'm not sure MEMCACHE is a good solution since every external call may
 be different depending on the request (typically it will be different
 for every user).

 Is there any easy-to-use solution for implementing that cache? Should
 I implement my own system? Is it a good idea to use Memcache?

 Thanks :)
 __
 jordisanhttp://jordisan.net
--~--~-~--~~~---~--~~
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: Google App Engine use in Sub Saharan Africa

2009-05-01 Thread Bennomatic

It's hard to know for sure, but it looks to me like GAE apps are
served at least somewhat locally.

Trace to one of my apps from a server in AZ, US:
 1  64.34.162.131 (64.34.162.131)  0.718 ms  0.555 ms  0.527 ms
 2  1ge-gi2-22.wdc-sp2-cor-2.peer1.net (216.187.120.249)  0.779 ms
0.612 ms *
 3  10ge.xe-2-0-0.nyc-telx-dis-1.peer1.net (216.187.115.221)  5.898
ms  5.964 ms  5.845 ms
 4  64.34.44.126 (64.34.44.126)  197.317 ms  105.316 ms  5.974 ms
 5  72.14.239.46 (72.14.239.46)  6.514 ms  6.118 ms  6.157 ms
 6  *Icmp checksum is wrong
 209.85.249.11 (209.85.249.11)  8.402 msIcmp checksum is wrong
  8.161 ms
 7  209.85.248.75 (209.85.248.75)  19.720 ms 209.85.248.73
(209.85.248.73)  19.908 ms  19.617 ms
 8  * 209.85.254.233 (209.85.254.233)  19.654 ms 209.85.254.239
(209.85.254.239)  19.587 ms
 9  216.239.46.78 (216.239.46.78)  21.203 ms  28.852 ms  19.693 ms
10  * qw-in-f141.google.com (74.125.93.141)  19.799 ms  19.769 ms

From a site in Austria:
 1  hq (213.235.199.19)  0.059 ms  0.028 ms  0.020 ms
 2  Ge2-1-c2.oe3.sil.at (86.59.127.153)  0.361 ms  0.398 ms  0.547 ms
 3  de-cix10.net.google.com (80.81.192.108)  23.925 ms  15.261 ms
15.568 ms
 4  209.85.255.172 (209.85.255.172)  15.713 ms 209.85.255.170
(209.85.255.170)  16.127 ms  16.015 ms
 5  72.14.232.201 (72.14.232.201)  15.810 ms  15.782 ms 72.14.232.165
(72.14.232.165)  16.033 ms
 6  209.85.250.46 (209.85.250.46)  21.511 ms  27.661 ms 72.14.232.194
(72.14.232.194)  27.695 ms
 7  fg-in-f141.google.com (72.14.221.141)  16.406 ms  15.992 ms
15.805 ms

And to the OP's question, one from South Africa:
 1  cisrb1-net109-64.posix.co.za (160.124.109.126)  0.185 ms  0.241
ms  0.224 ms
 2  cisldn1-cisrbc1.posix.co.za (160.124.1.2)  167.005 ms  166.704 ms
167.003 ms
 3  de-cix10.net.google.com (80.81.192.108)  178.228 ms  178.028 ms
178.479 ms
 4  209.85.255.172 (209.85.255.172)  178.583 ms 209.85.255.170
(209.85.255.170)  178.672 ms  178.861 ms
 5  72.14.232.208 (72.14.232.208)  192.585 ms 209.85.248.182
(209.85.248.182)  185.017 ms  185.251 ms
 6  72.14.232.130 (72.14.232.130)  189.842 ms  189.803 ms  191.241 ms
 7  209.85.251.231 (209.85.251.231)  189.712 ms 72.14.236.191
(72.14.236.191)  191.885 ms *
 8  * 209.85.243.81 (209.85.243.81)  199.829 ms 209.85.243.73
(209.85.243.73)  200.722 ms
 9  ww-in-f141.google.com (209.85.229.141)  190.988 ms  190.207 ms
190.185 ms

Note that, on this last one, the latency doesn't increase all that
significantly from the second hop all the way to the destination hop,
and the third hop is de-cix10, which *might* mean that it's a
peering point in Germany.  The end-point is only 34ms further than
that, which implies to me that it's somewhere in Europe, though
interestingly enough, it's not the same one that's at the end of the
Austria trace.

For more detective work, check out the int'l traceroute sites at
http://www.traceroute.org.

-Bne


On Apr 30, 12:35 pm, Wooble geoffsp...@gmail.com wrote:
 On Apr 30, 8:08 am, Martin martin.konz...@gmail.com wrote:

  1. How stable is the availability of apps down in Sub Saharan Africa;
  does Google have server-farms there, or is the traffic just routed to
  data-center somewhere in the Middle East?

 I don't believe Google's going to reveal any information on server
 location, but my impression is that most of not all of the servers
 doing app engine serving now are in the US.  I could be completely
 wrong.
--~--~-~--~~~---~--~~
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: I've reached my quota, only I have this great new name for my app

2009-04-25 Thread Bennomatic

Hi Jeff,

Can you up my account limit, too?  I've got a bunch of projects in the
pipeline and even though I don't have deployments for all of my apps
yet, I could foresee needing 15 in the next few weeks.

Thanks!

On Apr 24, 11:04 am, Jeff S (Google) j...@google.com wrote:
 Hi Ted,

 I've increased the max apps count to 20 for your account. Rather than just
 creating a new account we'd prefer if people ask for an increase :-)

 Happy coding,

 Jeff



 On Fri, Apr 24, 2009 at 7:40 AM, Ted Gilchrist egilc...@gmail.com wrote:
  Ok, I starred it. And added the following plaintive plea:

  I could do the tricky thing, and start creating new apps under a different 
  email id.
  But I'm a straight up Google fan boy, and I don't want to do you this way. 
  Sigh, but

  if I must  For me, it's not about deleting the data. It's about 
  thinking of
  really cool new names for my apps, and not wanting to go off and register 
  the
  domains, etc. Hey, wait a minute. About allowing aliases for apps? Is that 
  any

  easier? I just wanna use my new cool app name. Is that so wrong?

  On Fri, Apr 24, 2009 at 10:18 AM, T.J. Crowder 
  t...@crowdersoftware.comwrote:

  And you have starred this issue[1], right?

  [1]http://code.google.com/p/googleappengine/issues/detail?id=335

  I find it truly astonishing that there's no way to delete an
  application.  That's a v0.1 feature, full stop.
  --
  T.J. Crowder
  tj / crowder software / com
  Independent Software Engineer, consulting services available

  On Apr 24, 2:26 pm, egilchri egilc...@gmail.com wrote:
   I've reached my quota of 10 apps, and I really want to either rename
   one of them, or delete it, and then get back one for my quota. That
   way, I'll be able to use this great new name for an app I have. I
   realize I could register the domain, but I don't want to have to do
   that, if possible.

   I know this question has been asked before, but are there any updates?

   Or, you could just raise my quota by one little bitty app.

   Thanks,

   Ted Gilchrist

  --
  Speech, not just for humans

  VnoTed:http://vnoted.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: push http not allowed?

2009-04-22 Thread Bennomatic

The AJAX disconnect and reconnect option is not all that difficult.
While it's certainly nice to do push, the limitation is certainly
understandable from a billed-resources perspective.

Basically, to do it, you build into your AJAX request handlers a
setTimeout command which queues up a request for a new connection in X
milliseconds.

To make it easier, I even recommend pushing request parameters onto a
stack, and then having a run queue function that's executed
periodically.  That 'rq' function pops out whatever's on the stack and
uses it to determine what sort of job needs to be done.  That might be
updating a display, doing an AJAX request, saving work in progress,
issuing an alert to the user.  It's a nice way to manage tasks.

Bne

On Apr 20, 9:33 am, 风笑雪 kea...@gmail.com wrote:
 GAE must give a response in 30 seconds.
 So if you want use server push, you have to let clients disconnect every 30
 seconds, then build new connections( maybe use AJAX ).

 Gmail is doing this way, but I think it's very difficult to do it.

 2009/4/20 q2 tauru...@gmail.com



  I am planning to create a web application that will use BlazeDS server
  to push data to Flash clients. Would I be able to install it in Google
  App Engine environment? It comes bundles with Tomcat server, so
  probably I would need to install Tomcat as well.

  Also, this sentence about Google App Engine Sandbox makes me doubt
  that I can use any kind of push HTTP technology in Google App Engine:
  Application code only runs in response to a web request or a cron
  job Does that mean I'm not supposed to broadcast?

  Thank 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] Re: Disappointed with free quota changes (probably not surprising)

2009-02-26 Thread Bennomatic

I could make a pretty good guess as to why it happened.  Google's
major income is from advertising, and while they're not going broke
any time soon, the amount of money coming in from their advertising
has dropped significantly, and so things they could have done as loss
leaders to get more advertising dollars now are weighing more on the
budget, so they needed to lower the payment bar on this service.

I'm sure they set the initial quotas with best intentions, but
crunching some numbers, found that it was not going to be profitable.
However, as with Gmail service, where the disk space available just
keeps growing and growing, I'd be willing to bet that as AppEngine
matures, we might see some new features and/or changes in quotas to
make it even more appealing than it was in the pre-quota-change days.

That having been said, there may be other reasons for the change.
when they set the initial quotas, they did it based on a light-
processing app getting, IIRC, 5 million hits per month.  That number
hasn't changed.  It could very well be that when they set the quotas,
they were thinking of the 5 million hits per month and it turns out
that with proper accounting in place, what they were offering was
enough for 50 or 500 million.

I understand your frustration.  I do.  And they certainly could have
handled this better so that it wouldn't feel like a bait-and-switch.
But at the end of the day, the amount of free service they are
offering is pretty substantial and for every case like yours I'd bet
there are hundreds of people who are going to be able to start a
business and get it profitable before they have to pay a dime.

If this is for a non-profit organization, it still isn't the end of
the world.  I'm sure that the organization has grant writers who could
get a $1,000/year grant to pay for the hosting without a problem, if
it's going to help them do their good works.  Good luck; I hope that
the optimizations aren't too difficult, and that you can find some way
to stay under those quotas.  Keep the community posted!

On Feb 24, 6:12 pm, B.J. bjp...@gmail.com wrote:
 I don't know that I have ever whined at an organization like Google
 for trying to make money.

 That's changing with this message.

 By my calculations, it could cost me $1000 over the next year to host
 my app that I had anticipated being hosted under the quotas.  It may
 cost me nothing right now our usage is just under the daily CPU
 limits.  If the traffic doesn't grow, no problem  But whose goal is it
 for an app not to get more usage?

 My only real gripe is that App Engine caused me to invest a lot of
 effort in shoe-horning my app into the Google Way.  I did that with
 the understanding that the trade-off was a certain amount of free
 hosting.  Was that a promise?  Of course not.  Is Google under any
 obligation to meet my expectation?  No.

 However, as I attempt to further optimize the application in an effort
 to not exceed limits, the future of the application is now in
 question.  This is not a profit deal.  I gave away my time in an
 effort to help an organization.  Had I known this change was coming, I
 probably would have chosen a different solution.  Because of the
 vendor lock-in of App Engine, the end result of all this may be
 simply turning the app off and letting the organization do without.
 (or find someone else to help them out.)  Better that than hit daily
 free limits or find money out of someone's pocket.

 Look $1000/year is not a big deal for world-class hosting.  I get it.
 I also understand that the free quotas are only there to get people
 hooked such as it were.  I guess I wish had listened to those who
 said, Don't do App Engine.  They'll lock you in and change the deal.
 It's not portable enough.

 Shame on me, I guess.

 And before people chime in with all the, You could always move it
 to..., or If you had just written it this way...  or It's a
 business, of course they're trying to get you to go over the limits..
 please don't.

 This is just a note to let the people at Google know there is a very
 real cost to changing the deal on people.
--~--~-~--~~~---~--~~
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 Computing

2009-02-24 Thread Bennomatic

The greatest advantages of AppEngine are the ease of set-up, the
scalability, and the fact that your application is available
throughout the infrastructure that Google has built worldwide the
moment you publish.  If you need a python-based environment and are OK
with the limitations of AE--proprietary non-relational datastore, some
python libraries not available--it's a great way to get started.
There's no cost while you're building your app, and if it's not a
resource hog, you might even get to run it in production mode for free
for some time.

But if you need finer-grain control over  your environment, and you'd
prefer the type of cloud system that allows you to spawn virtualized
servers, then you may want to look into one of the other services.
Amazon EC2 is a good one, and I've heard good things about SliceHost.
Instead of a limited application environment, those services allow you
to configure a virtual server which functionally is the same as a
physical server, but which is running on a cloud layer in those
companies' infrastructure.

Personally, after years of administrating linux boxes, I'm thrilled to
move what I can to systems like AppEngine.  It's not the right
solution for everything, though; neither are any of them.  Your
question about which is the best one is kind of like if you were going
to build something and you asked, What's the best tool?  A hammer or
a saw?  Depending on the job, you might need just one, just the
other, or both.

--BIC

On Feb 24, 1:07 am, SANMI ssa...@gmail.com wrote:
 We have an application and I would want to introduce it in Cloud Computing.
 We have read a lot of things about Cloud Computing and theirs advantages. I
 don't know if GAE is just a hosting which supports python environment or if
 I could get all the advantages of Cloud Computing with GAE.

 I'm reading all the information of the differents actors of Cloud Computing
 and I must choose one and introduce my application into. Anybody knows the
 best application?? (Microsoft Azure, Intalio, Amazon...)

 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
-~--~~~~--~~--~--~---