[google-appengine] Re: Why are my plus signs disappearing?
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?
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?
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?
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
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?
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
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
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?
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)
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
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 -~--~~~~--~~--~--~---