[google-appengine] Sign up to use Java in appEngine
I singed up to use Java several hours ago; how long does it take to get approved? - e --~--~-~--~~~---~--~~ 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: Sign up to use Java in appEngine
i got my approval in 3-4 hrs. On Sun, Apr 12, 2009 at 12:24 PM, Edward 061...@gmail.com wrote: I singed up to use Java several hours ago; how long does it take to get approved? - e --~--~-~--~~~---~--~~ 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: Sign up to use Java in appEngine
Minutes, in my case... HTH, -- T.J. On Apr 12, 7:54 am, Edward 061...@gmail.com wrote: I singed up to use Java several hours ago; how long does it take to get approved? - e --~--~-~--~~~---~--~~ 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] users.User.email()
Does this function guarantee that the email will be returned as all lowercase for the currently logged in user? If it is can this be added to the docs? -- Alkis --~--~-~--~~~---~--~~ 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: users.User.email()
2009/4/12 Alkis Evlogimenos ('Αλκης Ευλογημένος) evlogime...@gmail.com: Does this function guarantee that the email will be returned as all lowercase for the currently logged in user? If it is can this be added to the docs? If it's not in the docs, it's probably not guaranteed. Just call User.email().lower(). Dave. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] 500 error for static files today April 12 5:23am
Hi there, I've been encountering this problem @ around 5:23am Central Time. Two of my static files for my page (a .css and a .js) seem to consistently give a 500 error. The .css file sometimes loads (30% of the time) as I refresh. I wasn't sure where else to report this. I know its kinda early in the morning, but I got kinda worried, since my entire app could break if the server can't consistently serve a .js file! I've checked the down-time group and the dashboard system status. --~--~-~--~~~---~--~~ 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: users.User.email()
If it is not in the docs it might be an oversight :-) 2009/4/12 David Symonds dsymo...@gmail.com 2009/4/12 Alkis Evlogimenos ('Αλκης Ευλογημένος) evlogime...@gmail.com: Does this function guarantee that the email will be returned as all lowercase for the currently logged in user? If it is can this be added to the docs? If it's not in the docs, it's probably not guaranteed. Just call User.email().lower(). Dave. -- Alkis --~--~-~--~~~---~--~~ 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: PageContextImpl giving issues (java.lang.ClassCastException: java.security.AccessControlException) with Spring form tag?
It seems that this is cause by all specific forms fromthe Spring taglib form:form... . Any idea how to get around this? Anybody got Spring forms to work on GAE? On Apr 10, 4:50 pm, N. Peeters peete...@gmail.com wrote: Hi, I'm getting the following error when the JSP page tries to compile. Any idea? Nested in org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: java.security.AccessControlException cannot be cast to javax.servlet.ServletException: java.lang.ClassCastException: java.security.AccessControlException cannot be cast to javax.servlet.ServletException at org.apache.jasper.runtime.PageContextImpl.handlePageException (PageContextImpl.java:754) at org.apache.jsp.WEB_002dINF.jsp.searchCustomerInput_jsp._jspService (searchCustomerInput_jsp.java:64) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) The page code is as follows: %@ include file=/WEB-INF/jsp/include.jsp% %@ taglib prefix=form uri=http://www.springframework.org/tags/form% html body form:formcommandName=searchCustomer table tr tdFirst Name:/td tdform:input path=firstName //td /tr tr tdLast Name:/td tdform:input path=lastName //td /tr tr td colspan=3 input type=submit value=Search / /td /tr /table /form:form --~--~-~--~~~---~--~~ 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 inter-apps communication
Humm.. Didn't remember that, and with a quick (really quick) look didn't find that too... But that make sense, as It would be a way to 'bypass' the quotas and a way to do bad things (dos)...and other evil stuff too! lol But then, with an application like I said - central database, to use for score, person info, 'virtual currency',etc - what would you suggest to do? Thanks! On Apr 11, 1:15 pm, 风笑雪 kea...@gmail.com wrote: There is a policy of GAE that you CAN NOT use an app to support another app. 2009/4/11 DarkCoiote darkcoi...@gmail.com I thinking about creating a couple of applications that have a common data-base. As I'm pretty new at this stuff, I don't have many ideas. One possible solution would be: create the applications A,B,C create an master app. D that controls the central database: Then, apps A,B,C would query app D to use the database (get, post, put) For D I guess an REST solution would be fine (although I don't even know for sure what REST is), then A,B,C would use the D REST api. As the database should not be public, some kind of authentication must be done to ensure that D processes only requests from A,B,C (no idea on how to do this, except from the stupid method of sending a large known (to A,B,C,D) random string as a parameter) Other alternatives to REST would be SOA and RPC, right? from what I've just read about these architecture REST would be the best one Useful linkI found around: http://code.google.com/p/appengine-rest-server/ Any suggestion will be appreciated ! Thanks! --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] URLFetch can't parse the content-type header
I tried to fetch following url and check the content-type: http://www.pbc.gov.cn/diaochatongji/tongjishuju/gofile.asp?file=2009S07.htm The html seems: meta http-equiv=Content-Type content=text/html; charset=gb2312 It's a page generated by Excel. The response header content-type only return text/html, but charset is missed. What's wrong with this page? Is it OK with http-equiv=Content-Type not http-equiv=Content-Type? --~--~-~--~~~---~--~~ 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: Sudden Issues: Datastore timeout and
Hi, Its weird, I am still seeing lots of timeouts for puts and reads at the moment. The app does a lot of writes, but I wouldn't expect these to cause too much of an issue, saying that I am starting to see a lot of contention issues too. Paul. 2009/4/11 Alkis Evlogimenos ('Αλκης Ευλογημένος) evlogime...@gmail.com There was a short outage last night: http://code.google.com/status/appengine/ On Sat, Apr 11, 2009 at 9:41 AM, Paul Kinlan paul.kin...@gmail.comwrote: Hi, I solved the issue with the build-in indicies problem, The problem that I have is that I see a very very large number of DataStore Timeouts with what appear to be simple puts (an update to an existing object). Is anyone else experiencing these? Paul. 2009/4/9 Paul Kinlan paul.kin...@gmail.com Hi, Application: twitterautofollow. My application www.twollo.com has all of a sudden started to get DataStore timeouts and the following error: The built-in indices are not efficient enough for this query and your data. Please add a composite index for this query. Now, I would understand this if I had made any changes but I have not made any significant changes in months, and the last change I did upload last week was a change to a template. The Query in question has two filters on and a count as follows. db.Query(Follow).filter(usernameLc =, user_a.lower()).filter(user =, user).count() Any insight would be greatly appreciated. Paul -- Alkis --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] Re: Will Google support a relational database in the future?
Pushing calculations from read time to write time makes sense in that reads seriously out number writes for most web applications. Pushing calculations at write time instead of read time has some other very very strong implication that you're probably missing: that you know in advance what you want to calculate. For very narrow application domains this is probably true. In the business environment it's often not know, and the flexibility in this regard provided by relational databases is part of what has made them so popular. For Google own apps this is not probably a problem, since they have other means of processing massive amounts of data. If your only window to your business knowledge is accessible via GAE, you're in a serious problem each time your requirements do not fall into the realm of what you anticipated. --~--~-~--~~~---~--~~ 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] Datastore Question
Hi Guys, My app is Twitterautofollow. I have a question about the quota, basically my app was serving between 6-13 requests a second and jumped up to 32 requests per-second and subsequently went over the quota. I am not sure where the 32 requests a second are comming from although some of them might come from my ping service that I am running to regularly perform some tasks - I wouldn't be suprised if it was a bug I created Additionally the DataStore CPU Time is Limited even though it is only at 3% of quota. Its starting to get a bit frustrating at the moment because I am having Data Store Timeouts very often on reads and puts. Nothing in my model is in an EntityGroup, that is, there is no use of parent, however there are many RefernceProperties. The general process I have that is causing the process goes as follows 1. Get the user (User Entity) from the datastore 2. Get the current search term (Search Entity) for the user - I don't use the refernce propery set from the user because I need to filter it 1. Query Twitter 2. For up to 3 search results add a new entity of type Follow and reference the search and user 1. For each result check to see if the Follow entity already exists for the user - if it does we ignore the result 3. update the search entity with some basic stats Overall there are, with 5 (1 user, 1 search and 3 reads of Follow) reads and up to 4 puts (3 for new entities 1 for the Search entity). I don't think this is too heavy, but it might be. So my question is, am I being too excessive, why would this cause a lot of datastore timeouts in both the reads and puts? What tips do people have for DataStore performance? Thanks, Paul --~--~-~--~~~---~--~~ 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: Datastore Question
Pervasive use of memcache + exponential backoff retries on most operations solved it for me. On Sun, Apr 12, 2009 at 11:55 PM, Paul Kinlan paul.kin...@gmail.com wrote: Hi Guys, My app is Twitterautofollow. I have a question about the quota, basically my app was serving between 6-13 requests a second and jumped up to 32 requests per-second and subsequently went over the quota. I am not sure where the 32 requests a second are comming from although some of them might come from my ping service that I am running to regularly perform some tasks - I wouldn't be suprised if it was a bug I created Additionally the DataStore CPU Time is Limited even though it is only at 3% of quota. Its starting to get a bit frustrating at the moment because I am having Data Store Timeouts very often on reads and puts. Nothing in my model is in an EntityGroup, that is, there is no use of parent, however there are many RefernceProperties. The general process I have that is causing the process goes as follows 1. Get the user (User Entity) from the datastore 2. Get the current search term (Search Entity) for the user - I don't use the refernce propery set from the user because I need to filter it 1. Query Twitter 2. For up to 3 search results add a new entity of type Follow and reference the search and user 1. For each result check to see if the Follow entity already exists for the user - if it does we ignore the result 3. update the search entity with some basic stats Overall there are, with 5 (1 user, 1 search and 3 reads of Follow) reads and up to 4 puts (3 for new entities 1 for the Search entity). I don't think this is too heavy, but it might be. So my question is, am I being too excessive, why would this cause a lot of datastore timeouts in both the reads and puts? What tips do people have for DataStore performance? Thanks, Paul -- Alkis --~--~-~--~~~---~--~~ 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 inter-apps communication
Terms Of Service 4.4 You can put your separate applications at different URLs of the appid with the data. http://greatappid.appspot.com/application1/ http://greatappid.appspot.com/application2/ http://greatappid.appspot.com/application3/ 2009/4/12 DarkCoiote darkcoi...@gmail.com: Humm.. Didn't remember that, and with a quick (really quick) look didn't find that too... But that make sense, as It would be a way to 'bypass' the quotas and a way to do bad things (dos)...and other evil stuff too! lol But then, with an application like I said - central database, to use for score, person info, 'virtual currency',etc - what would you suggest to do? Thanks! On Apr 11, 1:15 pm, 风笑雪 kea...@gmail.com wrote: There is a policy of GAE that you CAN NOT use an app to support another app. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] Transactions - Entity Groups
Does anybody else find transactions very restricting? How do I solve this problem? Here is my data model... Team(db.Model): name = db.StringProperty() Game(db.Model): team1 = db.ReferenceProperty(Team, collection_name='game1_set') team2 = db.ReferenceProperty(Team, collection_name='game2_set') ... if I delete a team, I want to delete all the games associated with it as well so I need to put the delete operation in a transaction. But how would I setup the entity group? setup 1) Team as parent of Game - but there can be only 1 parent and team1 and team2 should both be parents - DOESN'T WORK setup 2) Game as parent of Team - then that would mean each team can only play 1 game? DOESN'T WORK setup 3) create a 3rd entity and let that be the parent of both Team and Game - but then all teams and games would be in the same entity group - is this my only option? Thanks. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] Re: Transactions - Entity Groups
Start with answering the question: Do I need a transaction? I don't think you need it to delete a team. Every Team and every Game are root entities, no child objects. When you want to delete a Team 1) find all Games that have the Team in attribute team1 2) delete these Games, maybe delete in groups of 10 to 20 per request 3) find all Games that have the Team in attribute team2 4) delete these Games, maybe delete in groups of 10 to 20 per request 5) delete the Team object You can use the method from [1] to delete the Games [1] http://code.google.com/appengine/articles/update_schema.html 2009/4/13 ae gappengin...@gmail.com: Does anybody else find transactions very restricting? How do I solve this problem? Here is my data model... Team(db.Model): name = db.StringProperty() Game(db.Model): team1 = db.ReferenceProperty(Team, collection_name='game1_set') team2 = db.ReferenceProperty(Team, collection_name='game2_set') ... if I delete a team, I want to delete all the games associated with it as well so I need to put the delete operation in a transaction. But how would I setup the entity group? setup 1) Team as parent of Game - but there can be only 1 parent and team1 and team2 should both be parents - DOESN'T WORK setup 2) Game as parent of Team - then that would mean each team can only play 1 game? DOESN'T WORK setup 3) create a 3rd entity and let that be the parent of both Team and Game - but then all teams and games would be in the same entity group - is this my only option? Thanks. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] Re: Transactions - Entity Groups
Ok maybe I don't absolutely need it to delete a team but what about... 1) when I'm creating a new game - team1 or team2 could be deleted as I'm creating a new game, then the game will have a team that does not exist OR 2) for arguments sake, I need the deletion of a team (and all the games it's in) to be atomic. What you're suggesting can fail at anywhere between 1 and 4. On Apr 12, 4:35 pm, djidjadji djidja...@gmail.com wrote: Start with answering the question: Do I need a transaction? I don't think you need it to delete a team. Every Team and every Game are root entities, no child objects. When you want to delete a Team 1) find all Games that have the Team in attribute team1 2) delete these Games, maybe delete in groups of 10 to 20 per request 3) find all Games that have the Team in attribute team2 4) delete these Games, maybe delete in groups of 10 to 20 per request 5) delete the Team object You can use the method from [1] to delete the Games [1]http://code.google.com/appengine/articles/update_schema.html 2009/4/13 ae gappengin...@gmail.com: Does anybody else find transactions very restricting? How do I solve this problem? Here is my data model... Team(db.Model): name = db.StringProperty() Game(db.Model): team1 = db.ReferenceProperty(Team, collection_name='game1_set') team2 = db.ReferenceProperty(Team, collection_name='game2_set') ... if I delete a team, I want to delete all the games associated with it as well so I need to put the delete operation in a transaction. But how would I setup the entity group? setup 1) Team as parent of Game - but there can be only 1 parent and team1 and team2 should both be parents - DOESN'T WORK setup 2) Game as parent of Team - then that would mean each team can only play 1 game? DOESN'T WORK setup 3) create a 3rd entity and let that be the parent of both Team and Game - but then all teams and games would be in the same entity group - is this my only option? Thanks. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Google App Engine group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] Re: Will Google support a relational database in the future?
In the business environment it's often not know, and the flexibility in this regard provided by relational databases is part of what has made them so popular. Only if the schema makes it possible to get what you want. And, even if it does, the cost may be excessive. If your only window to your business knowledge is accessible via GAE, you're in a serious problem each time your requirements do not fall into the realm of what you anticipated. Nope. The difference is that GAE's query language is weaker so you have to do more in user code, such as joins and aggregations. Relational databases write this code for you. However, regardless of who writes this code, it has to be run. Maybe the query optimizer will write better code than you do, but maybe it won't. On Apr 12, 1:03 pm, Consultuning consultun...@gmail.com wrote: Pushing calculations from read time to write time makes sense in that reads seriously out number writes for most web applications. Pushing calculations at write time instead of read time has some other very very strong implication that you're probably missing: that you know in advance what you want to calculate. For very narrow application domains this is probably true. In the business environment it's often not know, and the flexibility in this regard provided by relational databases is part of what has made them so popular. For Google own apps this is not probably a problem, since they have other means of processing massive amounts of data. If your only window to your business knowledge is accessible via GAE, you're in a serious problem each time your requirements do not fall into the realm of what you anticipated. --~--~-~--~~~---~--~~ 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: Should I take my website somewhere else? - blocked in China
For this second, you can set an A record to 74.125.113.121. But google.dns.tancee.com will keep available if this IP got banned. So when Chinese can't visit your web site, you can ping google.dns.tancee.com to see if there is a new available IP, and change your A record again. Hope this would be helpful. 2009/4/12 kiss242 kiss...@gmail.com I suggest never do that, since google.dns.tancee.com is not your own domain name, what if the owner/cracker directs it to another malicious page? You'd better find an google ghs ip, and then make an A record to it. I think the best way is that Google provides unique static ips. http://groups.google.com/group/google-appengine/browse_thread/thread/78c7b96fd653f24b On 4月10日, 下午5时52分, 风笑雪 kea...@gmail.com wrote: You can try this CNAME to instead of ghs: google.dns.tancee.com My website(http://gae.keakon.cn/) is ok by visiting from China. 2009/4/10 T.J. Crowder t...@crowdersoftware.com Hi Wally, Happy to help (if I did). ...you have certainly covered all the technical bases of implementing a proxy. Oh, I very much doubt it. :-) (BTW, I don't know where that six came from in my earlier post. You'll incur 2-3 times, not 2-6 times, as much transfer on requests for dynamic content through the proxy.) 1. I have experienced being blocked by the app engine (try again in an hour etc.), so I could reasonably assume that it would be likely that a lot of traffic coming from one source may be blocked. Perhaps Brett Slatkin or someone else from Google's technical wing could comment on this. I don't know about AppEngine, but Google does place rate limits on end users' use of various apps they provide (such as Google Groups!), and so this is something to be aware of. But I'd be surprised if those rate-limits are naive enough to be confused by requests from a properly-configured proxy. A request from a properly-configured proxy includes the original source of the request as well as the proxy (or proxies) through which it's passed.[1] Proxies are widely used across the web, including by ISPs with hundreds of thousands of end users or more. To lump them all together under one rate limit (or at least under a rate limit intended for individuals) would be inappropriate. [1]http://tools.ietf.org/html/rfc2616#section-14.45 This also applies to your points 2 and 3; the original request's origin is preserved across the proxy (in the normal case; we're not talking about intentionally non-compliant -- but useful! -- proxies such as anonymizers and the like). In any case, the adsense stuff won't go through your proxy, remember that the script comes directly from googlesyndication.com. Google has also said nothing about the China block, which again means to expect the worst. Wally, I'm quite certain that any time China blocks the whole of AppEngine (which they don't appear to be doing currently, from other comments), Google is aware of it very quickly and does everything they reasonably can to clear up the problem working through channels with the appropriate Chinese officials. They cannot afford to be closed to China. Now, the degree to which they'll succeed largely depends on the Chinese government. AppEngine is a bit of a problem for them, it's just ridiculously easy to throw together an app that provides a way for Chinese citizens to break through the great firewall and get unfiltered information. I'm not surprised the whole of AppEngine was blocked for a time last year, and I'm not surprised it got unblocked -- presumably the result of discussion and negotiation between the Chinese government, U.S. government, and Google. If Google haven't commented on the situation, FWIW I wouldn't take that as evidence of their not being concerned about and actively engaged in addressing the problem. Public statements can sometimes cause trouble in sensitive negotiations. But hey, not like I'm an expert on international business and government relations. ;-) And I didn't mean to get into the politics; mainly I was trying to address your question about how to go about getting a proxy set up. Good luck, -- T.J. Crowder tj / crowder software / com Independent Software Engineer, consulting services available On Apr 10, 1:08 am, WallyDD shaneb...@gmail.com wrote: Hi TJ, That really is an amazing post. I'm impressed, you have certainly covered all the technical bases of implementing a proxy. My biggest concern is that Googles behaviour is unpredictable and I not entirely sure how well they will respond to something like this being implemented. 1. I have experienced being blocked by the app engine (try again in an hour etc.), so I could reasonably assume that it would be likely that a lot of traffic coming from one source may be