RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
I like that you use +'s to concat strings, it shows a real lack of
experience doing optimizations since that is the very first thing on every
list.

> System.out.println(new Date() + ":" + new
Random().nextInt());

At least most of your code uses objects correctly I didn't find any
instances of places you did a type conversion functionally. That is usually
one of the lowest hanging fruits, because it creates additional objects, and
is a memory hog.



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



Re: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Jeff Schnitzer
I feel like I need to keep following up just in case a Java newbie
takes this advice seriously.

On Mon, Jul 23, 2012 at 11:14 PM, Drake  wrote:
> Also None of your references are weak? Do you just hate garbage collectors?
> That won't help much with startup, but again it would reduce your need to
> startup as often.

That makes absolutely no sense.  The app doesn't cache data in
instances; there's utterly no point to using weak references.

> You do a lot of String + String..  use stringbuffer instead

"this" + "that" is compiler syntactic sugar for using a StringBuilder
to assemble the string.  There is no difference between the two.  It's
probable that I could do the same trick I did with imports and create
with two classes that generate identical bytecodes, but figuring out
the exact pattern is more effort than I care to spend at the moment.

Also, never use StringBuffer; it's a legacy class from JDK 1.0 which
unnecessarily synchronizes method calls.  StringBuilder is the
replacement.

> You do a lot of .Trim when you should use Vector

I'm genuinely afraid to ask, but... huh?  Vector? (!!!)

Jeff

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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
> That makes absolutely no sense.  The app doesn't cache data in instances;
> there's utterly no point to using weak references.

Your app runs for multiple seconds, you get garbage collection in that time
and since you also feel no need to destroy objects you aren't using... this
would be a lazy way to deal with it.

> "this" + "that" is compiler syntactic sugar for using a StringBuilder to
assemble
> the string.  There is no difference between the two.  It's probable that I
could
> do the same trick I did with imports and create with two classes that
> generate identical bytecodes, but figuring out the exact pattern is more
> effort than I care to spend at the moment.

No, the intermediary objects are different and you have a much larger memory
foot print using loops with + than stringbuilder
For Print "this" + "that" you are essentially correct, but for 1000+ loops
the difference is huge.  Typically for small stuff it isn't worth messing
with but you have some long loops of this.


>
> Also, never use StringBuffer; it's a legacy class from JDK 1.0 which
> unnecessarily synchronizes method calls.  StringBuilder is the
replacement.
>

Yes I misspoke. I have been up for 48 hours and would be sleeping except
someone said I couldn't do hello world in 1.5 seconds and I missed it by
100ms on an F1, so I didn't want to be slow getting response to this.


> > You do a lot of .Trim when you should use Vector
>
> I'm genuinely afraid to ask, but... huh?  Vector? (!!!)

Vector resizes an object without creating an intermediary or placeholder
object, so there is nothing for garbage collection to deal with, and you
don't have to create a new object which gets renamed to the old object.
(which is what trim does)

Again a Pain in the ass for doing a trim on something once, but when you
have it in a for loop it adds up.





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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
Oh, and you are right the biggest slow down is grabbing data via HTTP.
(usually is)
But that doesn't seem to be hurting concurrency.

The obvious question.
Why aren't you mirroring the site so that you have your own fast copy?



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



Re: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Jeff Schnitzer
On Tue, Jul 24, 2012 at 12:00 AM, Drake  wrote:
> I like that you use +'s to concat strings, it shows a real lack of
> experience doing optimizations since that is the very first thing on every
> list.
>
>> System.out.println(new Date() + ":" + new
> Random().nextInt());

You're either trolling me or have yet another wild misconception about
Java.  This one is really easy to disprove though:

--- Stringy.java ---
public class Stringy {
public static void main(String[] args) {
String foo = "def";
System.out.println("abc" + foo);
}
}

$ javac Stringy.java
$ javap -c Stringy

Compiled from "Stringy.java"
public class Stringy extends java.lang.Object{
public Stringy();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."":()V
   4:   return

public static void main(java.lang.String[]);
  Code:
   0:   ldc #2; //String def
   2:   astore_1
   3:   getstatic   #3; //Field java/lang/System.out:Ljava/io/PrintStream;
   6:   new #4; //class java/lang/StringBuilder
   9:   dup
   10:  invokespecial   #5; //Method java/lang/StringBuilder."":()V
   13:  ldc #6; //String abc
   15:  invokevirtual   #7; //Method
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   18:  aload_1
   19:  invokevirtual   #7; //Method
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   22:  invokevirtual   #8; //Method
java/lang/StringBuilder.toString:()Ljava/lang/String;
   25:  invokevirtual   #9; //Method
java/io/PrintStream.println:(Ljava/lang/String;)V
   28:  return

}

I'm pretty sure you can read that.

Jeff

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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
I can't get over how much memory this thing uses before it does something.
Like just warming up I'm at 248M of memory.

On an F2 I can do like 5 places and it soft memories and restarts.

On an F4 I do about 350

How many requests are you seeing.

Why do you hate garbage collection so much?

I don't live in objectify, is it putting everything in an instance cache?
Each request seems to add about 1.5Megs to the used memory.

I can't see any difference (300ms) between load speed on an f2 and an F4
That usually means you are object creation bound, but you aren't front
loading the Object creation, so that seems unlikely. (though you aren't
doing lazy classes so maybe you are creating every object in your entire
code at startup?)

Tell me again why you are against Lazy Classes. Like I am the 3 year old you
seem to think I am?



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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
What does your usage profile look like?  It looks like if I kill off all the
places code I can get this to 86 megs after warm up.

If you put places on a backend, it looks like you could serve this off of an
always one F1 backend, and alwasys on F1 frontend. And your warmups would be
about 2.5 seconds, and you would have a very minor code tweak. Like you
would access places like it was an API.  Places should scale well since it
isn't CPU dense.



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



Re: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Jeff Schnitzer
On Tue, Jul 24, 2012 at 12:37 AM, Drake  wrote:
> I can't get over how much memory this thing uses before it does something.
> Like just warming up I'm at 248M of memory.

I'd start looking at what you've changed, or some defect in your test
environment.

https://img.skitch.com/20120724-cwa7r2g9x774aj4rb6xgmbiywa.jpg

This is the "production" system in normal use, even with appstats
turned on.  There's no instance cycling (other than normal load
expansion and contraction).

You're doing something wrong.

Jeff

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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
That's on your stock code. No changes.




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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
Ok so it works its way down to the same levels you are seeing it takes 3-5
minutes.

That's a first for me as well.

In your production can you hit shutdown an app, hit it and see what the
memory is 30 seconds after start?



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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
I am crashing now.

Splitting out the app I can make it load much faster. That seems to work.
You would have two "apps" one living only on a backend, and accessed via an
"api" (places)  This gets your warm up way down, and shouldn't cost much
more money.



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



Re: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Jeff Schnitzer
https://img.skitch.com/20120724-xdwyfjbfe7pxeyh2aa98938yxd.jpg

No memory spikes.

Jeff

On Tue, Jul 24, 2012 at 12:51 AM, Drake  wrote:
> Ok so it works its way down to the same levels you are seeing it takes 3-5
> minutes.
>
> That's a first for me as well.
>
> In your production can you hit shutdown an app, hit it and see what the
> memory is 30 seconds after start?
>
>
>
> --
> 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.
>

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



[google-appengine] Re: is there any datastore-like open source db could be used outside of gae?

2012-07-24 Thread timh
There is typhoonae which is a compatible environment to appengine.   
http://code.google.com/p/typhoonae/   ie compatible api as well as tasks 
etc...

Otherwise you probably need to look at what elements of the datastore that 
you actually want and have a look at the myriad of 
nosql options that match your requirements.

Wikipdeia has a rundown on various nosql systems   
http://en.wikipedia.org/wiki/NoSQL 

Cheers

T

On Saturday, July 21, 2012 7:26:20 PM UTC+8, saintthor wrote:
>
> if not, i have to consider mongodb.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/D-L9Ggt5xacJ.
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: Startup time exceeded...on F4?!

2012-07-24 Thread André Pankraz


Am Donnerstag, 12. Juli 2012 18:26:40 UTC+2 schrieb David Hardwick:
>
> Hello,
>
> I realize there's been a lot of discussion on startup times exceeded on 
> this forum recently, but wanted needed to post this experience we had this 
> morning to keep the attention on this important issue.
>
> We uploaded a point release of our app to a "not-live" version this 
> morning and, of course, we were going to click around on that instance to 
> make sure it's all kosher before making that version "live."   The warm-up 
> requests for the "not-live" version were exceeding the deadline limit of 
> 60s... __and__we__are__on__F4s__!_!.
>
> However, the LIVE version of the app crashed too, 500 server errors, 
> instance counts went to zero, all sorts of whacky stuff was seen in the 
> control panel.  All that happened to our LIVE version without when all we 
> did was upload another "non-live" version and hit it with a single 
> request...did I mention we were on F4s?  ;-)  Does the failure of any 
> instance to exceed the 60s limit take down all instances to include live 
> one?
>
> We did a few things as quickly as possible since our live application was 
> down, so clearly we didn't have the time to take the scientific approach of 
> only changing one thing at a time and wait to see if it that did it.
>
> We...
> 1. Switched from F4s to F2 (i figured if this would least get us on some 
> new servers/instances)
> 2. Increased max idle instances from 1 to 2 (with F4s running, I'm fine 
> with having just 1 idle instance and not at all happy about paying for 2 
> idle instances, so maybe we'll just increase this prior to deployments and 
> then back down again after the deployment succeeds until we know more)
> 3. Made the recently uploaded version live (hey, why not, the production 
> app was down for 10 minutes, so how much more harm could we do?)
>
> We use GWT and Guice, we jar everything (as I have been paying attention 
> to this startup time discussions for quite some time now.  We are also 
> considering switching our Guice libraries to a non-AOP version as we saw 
> suggested in another blog since we just need the injection.
>
> Any insight, and I'm all ears!  app_id=s~myflashpanel
>
> Regards,
>   -Hardwick
>
> -- 
>
>  *We make Google Apps even better.*
>
> *David Hardwick*
> *CTO*
> david.hardw...@bettercloud.com
>  
> *Signature by Flashpanel *
>  *See us in Mashable: Growing Up Google: How Cloud Computing Is Changing 
> a Generation
> *
>
>  

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/2M_6SmcBWdwJ.
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.



Re: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread André Pankraz
You should really focus an general architecture of the app for 
optimizing...havn't looked into the provided example.

Your micro-optimizing suggestions for Java ...I think all Java guys are 
like ROFL now.

Star visa Full Imports, String Concatenations in this example visa 
StringBuilder

Really, if I carefully craft line numbers or embed no debug info in classes 
I can generate byte-identical class files with either import and string 
style.
Import statements are not stored at all in Java class code and this 
string+string in one expression automatically use the StringBuilder pattern.


you can lazy load classes - I just fear you mean something different ;)
and it's the same problem like separating end points into micro apps - 
complex business code doesn't work that way - you have to load all that 
stuff anyway.




Am Dienstag, 24. Juli 2012 09:00:15 UTC+2 schrieb Brandon Wirtz:
>
> I like that you use +'s to concat strings, it shows a real lack of 
> experience doing optimizations since that is the very first thing on every 
> list. 
>
> > System.out.println(new Date() + ":" + new 
> Random().nextInt()); 
>
> At least most of your code uses objects correctly I didn't find any 
> instances of places you did a type conversion functionally. That is 
> usually 
> one of the lowest hanging fruits, because it creates additional objects, 
> and 
> is a memory hog. 
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/iYnYrW5SL2EJ.
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] Is HTTP standard 'Date' header stripped from response when using Appengine's urlfetch?

2012-07-24 Thread Youssef El Bied
Hi,

I'm using Appengine's urlfetch (Python) to retrieve some data over the 
network.
For caching purposes, I need the HTTP standard 'Date' header to be found in 
the received response.
Unlike in dev environment, when I deploy my application in your remote 
servers, I don't receive this header anymore in the response.
Is this behavior excepted? Did I miss something?
Thanks in advance for your help,

Youssef

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/YvqH__YQHiEJ.
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.



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
On 5 hours now of sleep so I can form sentences:

 

>Your micro-optimizing suggestions for Java ...I think all Java guys are
like ROFL now.

>Star visa Full Imports, String Concatenations in this example visa
StringBuilder



Y'all'd be right if this was 100 lines of code in Java 101.

 

What you aren't looking at is that what is slow in this code set is object
creation and object recycling.

 

You are right that

 

Import Io.*

 

And 

 

Import Io.Blah

Import Io.Blah2

 

Results in the same code,

 

What doesn't result in the same code is doing import Io.Blah in classa and
import io.blah2 in classb and io.blah3 in classC because it changes the
order and timing of the Object and imported Class Creation.

 

+ doesn't matter if you do it once, but at one point this code is doing up
to 15k +'s in a loop, and + doesn't do efficient recycling of
temporary/intermediary objects.

 

So laugh all you want, but there are serious gains in profiling the code and
seeing where object and memory manipulation are sub optimal, especially when
you have long loops.

 

The problem I see with you guys is that you don't test, "REAL" application
you test micro bits of code and don't look at the impact or history of how
the code got to where it is.  You say "it doesn't matter in 4 lines of
codes" but you don't have "THOSE" 4 lines of codes in your app, you have 4
lines intermingled in with 80 other lines that change what is going on.

 

There are times when just changing the order of your Imports can add or
remove 200ms to your app.

 

As to architecture changes. No one liked those. Don't calculate hashes if
you are already in a session, use memcache and instance cache. Thread really
long loops.

 

 

 

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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
With a shower so the sentences might be a little better.

Lazy Loading classes is a variation on the same Object creation stuff.

 

On warm up all you are doing is initializing Objects, and creating classes.
If you lazy load those, whole branches of your code won’t do that until you
need to use those things.

 

As a result an “Empty” warm up can go from 15s to 2. your first request of
type X will be 4s, and of type y will be 4s and Z will be 4s until you have
paid 20% more than what the non-lazy version would be, but the advantage is
that a “cold” request will be 2+4s not 15s

 

This is especially useful when you have something like the “places” in this
sample code that needs a whole bunch of objects that aren’t used anywhere
else. And uses libraries no other part of the code shares.

 

You aren’t making the code more efficient, and it sucks because you have to
know what dependencies each bit of your code has or things explode (much
like when you do threading) but when your goal is to reduce the maximum
suckage for the end user and instead spread the suckage around. (like the
walmart check out analogy) Lazy Object and Class creation can be a big win. 

 

Lastly, there are some really hierarchical objects in this code, which is
great for Object oriented code writing and is easier on the dev, but I think
that functionalizing some of this would speed up the code base pretty
significantly as Objects with like 4 tiers in their hierarchy don’t store
efficiently. 

 

If you do need those, create them with the hierarchy early rather than
attaching to them later, because you get an intermediary copy of the old
object in creating the new object.

 

 

 

 

From: google-appengine@googlegroups.com
[mailto:google-appengine@googlegroups.com] On Behalf Of André Pankraz
Sent: Tuesday, July 24, 2012 5:25 AM
To: google-appengine@googlegroups.com
Subject: Re: [google-appengine] Re: Startup time exceeded...on F4?!

 

You should really focus an general architecture of the app for
optimizing...havn't looked into the provided example.

Your micro-optimizing suggestions for Java ...I think all Java guys are like
ROFL now.

Star visa Full Imports, String Concatenations in this example visa
StringBuilder

Really, if I carefully craft line numbers or embed no debug info in classes
I can generate byte-identical class files with either import and string
style.
Import statements are not stored at all in Java class code and this
string+string in one expression automatically use the StringBuilder pattern.


you can lazy load classes - I just fear you mean something different ;)
and it's the same problem like separating end points into micro apps -
complex business code doesn't work that way - you have to load all that
stuff anyway.




Am Dienstag, 24. Juli 2012 09:00:15 UTC+2 schrieb Brandon Wirtz:

I like that you use +'s to concat strings, it shows a real lack of 
experience doing optimizations since that is the very first thing on every 
list. 

> System.out.println(new Date() + ":" + new 
Random().nextInt()); 

At least most of your code uses objects correctly I didn't find any 
instances of places you did a type conversion functionally. That is usually 
one of the lowest hanging fruits, because it creates additional objects, and

is a memory hog. 




-- 
You received this message because you are subscribed to the Google Groups
"Google App Engine" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-appengine/-/iYnYrW5SL2EJ.
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.

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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
>the same problem like separating end points into micro apps - complex
business code doesn't work that way - you have to load all that stuff
anyway.

First, but not all at once.  Which I addressed in Lazy Load, but since you
are still attacking the micro-app / API model

 

This sample app has a “Places” that is the slowest part of the code, and
loads things nothing else uses. Spinning that off to an API handled by a
backend would make a HUGE difference. Any functionalized code can be
converted to standalone apps, and the overhead is that you have a wrapper,
but the advantage is that you have huge memory and caching advantages.  So
any very slow memory intensive function can be converted to an API
especially if it doesn’t need to modify globals. If it does need to modify
globals you can do that on return.

 

Say for example you have an imaginary app that does business stuff.

Selling stuff and searching stuff.

 

Searching works better the more in instance caching you can do.  You might
want an F4 just for the memory.  And because of the shared memory 128
+128+128+128 doesn’t have the cache hit ratio of 1 512.  Because of that an
F4 with 100% of its available memory dedicated to caching search info your
single purpose F4 could serve as many search requests as 8 F1s. but even
when that isn’t the case if your “Idle” is 78 megs, an F2 will still idle at
78, but instead of having 50 megs for cache will have 178.   Even better if
that is the only place you need a wrapper for the complex queries to the
datastore this is the only place you need Factory or Objectify.

 

The selling stuff app is likely the only place you need Crypto libraries and
because you want to cache sessions again having more memory in instance
dedicated to the task of session management increases your cache hits by
orders of magnitude.

 

In both cases reducing the number of imports and the frame works required
for both of these “microapps” is going to reduce Cold start time.

 

 

 

From: google-appengine@googlegroups.com
[mailto:google-appengine@googlegroups.com] On Behalf Of André Pankraz
Sent: Tuesday, July 24, 2012 5:25 AM
To: google-appengine@googlegroups.com
Subject: Re: [google-appengine] Re: Startup time exceeded...on F4?!

 

You should really focus an general architecture of the app for
optimizing...havn't looked into the provided example.

Your micro-optimizing suggestions for Java ...I think all Java guys are like
ROFL now.

Star visa Full Imports, String Concatenations in this example visa
StringBuilder

Really, if I carefully craft line numbers or embed no debug info in classes
I can generate byte-identical class files with either import and string
style.
Import statements are not stored at all in Java class code and this
string+string in one expression automatically use the StringBuilder pattern.


you can lazy load classes - I just fear you mean something different ;)
and it's the same problem like separating end points into micro apps -
complex business code doesn't work that way - you have to load all that
stuff anyway.




Am Dienstag, 24. Juli 2012 09:00:15 UTC+2 schrieb Brandon Wirtz:

I like that you use +'s to concat strings, it shows a real lack of 
experience doing optimizations since that is the very first thing on every 
list. 

> System.out.println(new Date() + ":" + new 
Random().nextInt()); 

At least most of your code uses objects correctly I didn't find any 
instances of places you did a type conversion functionally. That is usually 
one of the lowest hanging fruits, because it creates additional objects, and

is a memory hog. 




-- 
You received this message because you are subscribed to the Google Groups
"Google App Engine" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-appengine/-/iYnYrW5SL2EJ.
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.

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



Re: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread André Pankraz
But back to the roots...long loops have nothing to do with class loading in 
java ;) imports and loops - we would be hard pressed to find a _relevant_ 
example. really... I don't believe you the Smart-Java-Guy story.
200 ms through import-reordering? nope...no imports in bytecode...just 
straigt bytecode with ful types: GET com.bla.C fieldname, INVOKE com.bla.D 
methodname methoddescriptor
You know the GAE very well and for sure python and your cache stuff...but 
very often you generalize this for all and that gets really annoying.

You can "lazy load" classes if you don't use their functionallity, thats 
right - this classes are not fully loaded at the beginning. But many 
annotation-scanning frameworks (DI / O/R mapper etc.) in Java don't work 
this way.


Am Dienstag, 24. Juli 2012 16:48:36 UTC+2 schrieb Brandon Wirtz:
>
> On 5 hours now of sleep so I can form sentences:
>
>  
>
> >Your micro-optimizing suggestions for Java ...I think all Java guys are 
> like ROFL now.
>
> >Star visa Full Imports, String Concatenations in this example visa 
> StringBuilder
>
> Y’all’d be right if this was 100 lines of code in Java 101.
>
>  
>
> What you aren’t looking at is that what is slow in this code set is object 
> creation and object recycling.
>
>  
>
> You are right that
>
>  
>
> Import Io.*
>
>  
>
> And 
>
>  
>
> Import Io.Blah
>
> Import Io.Blah2
>
>  
>
> Results in the same code,
>
>  
>
> What doesn’t result in the same code is doing import Io.Blah in classa and 
> import io.blah2 in classb and io.blah3 in classC because it changes the 
> order and timing of the Object and imported Class Creation.
>
>  
>
> + doesn’t matter if you do it once, but at one point this code is doing up 
> to 15k +’s in a loop, and + doesn’t do efficient recycling of 
> temporary/intermediary objects.
>
>  
>
> So laugh all you want, but there are serious gains in profiling the code 
> and seeing where object and memory manipulation are sub optimal, especially 
> when you have long loops.
>
>  
>
> The problem I see with you guys is that you don’t test, “REAL” application 
> you test micro bits of code and don’t look at the impact or history of how 
> the code got to where it is.  You say “it doesn’t matter in 4 lines of 
> codes” but you don’t have “THOSE” 4 lines of codes in your app, you have 4 
> lines intermingled in with 80 other lines that change what is going on.
>
>  
>
> There are times when just changing the order of your Imports can add or 
> remove 200ms to your app.
>
>  
>
> As to architecture changes… No one liked those. Don’t calculate hashes if 
> you are already in a session, use memcache and instance cache. Thread 
> really long loops.
>
>  
>
>  
>
>  
>

Am Dienstag, 24. Juli 2012 16:48:36 UTC+2 schrieb Brandon Wirtz:
>
> On 5 hours now of sleep so I can form sentences:
>
>  
>
> >Your micro-optimizing suggestions for Java ...I think all Java guys are 
> like ROFL now.
>
> >Star visa Full Imports, String Concatenations in this example visa 
> StringBuilder
>
> Y’all’d be right if this was 100 lines of code in Java 101.
>
>  
>
> What you aren’t looking at is that what is slow in this code set is object 
> creation and object recycling.
>
>  
>
> You are right that
>
>  
>
> Import Io.*
>
>  
>
> And 
>
>  
>
> Import Io.Blah
>
> Import Io.Blah2
>
>  
>
> Results in the same code,
>
>  
>
> What doesn’t result in the same code is doing import Io.Blah in classa and 
> import io.blah2 in classb and io.blah3 in classC because it changes the 
> order and timing of the Object and imported Class Creation.
>
>  
>
> + doesn’t matter if you do it once, but at one point this code is doing up 
> to 15k +’s in a loop, and + doesn’t do efficient recycling of 
> temporary/intermediary objects.
>
>  
>
> So laugh all you want, but there are serious gains in profiling the code 
> and seeing where object and memory manipulation are sub optimal, especially 
> when you have long loops.
>
>  
>
> The problem I see with you guys is that you don’t test, “REAL” application 
> you test micro bits of code and don’t look at the impact or history of how 
> the code got to where it is.  You say “it doesn’t matter in 4 lines of 
> codes” but you don’t have “THOSE” 4 lines of codes in your app, you have 4 
> lines intermingled in with 80 other lines that change what is going on.
>
>  
>
> There are times when just changing the order of your Imports can add or 
> remove 200ms to your app.
>
>  
>
> As to architecture changes… No one liked those. Don’t calculate hashes if 
> you are already in a session, use memcache and instance cache. Thread 
> really long loops.
>
>  
>
>  
>
>  
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/mV8RrorNY2oJ.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsub

Re: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Jeff Schnitzer
On Tue, Jul 24, 2012 at 7:48 AM, Drake  wrote:
>
> + doesn’t matter if you do it once, but at one point this code is doing up
> to 15k +’s in a loop, and + doesn’t do efficient recycling of
> temporary/intermediary objects.

Did you even read the bytecode output I posted?  Seriously, I've never
met someone who is given all the right answers to the test but just
keeps insisting on the wrong answers anyways.

Try compiling these two classes.  They produce *identical* class files:

 File m1/Stringy.java 
public class Stringy {
public static void main(String[] args) {
String foo = "def";
System.out.println("abc" + foo);
}
}
 File m2/Stringy.java 
public class Stringy {
public static void main(String[] args) {
String foo = "def";
System.out.println(new
StringBuilder().append("abc").append(foo).toString());
}
}


If you don't believe me that the JVM lazy-loads classes, you can
either run some experiments with -XX:+TraceClassLoading or just spend
a few minutes with Google.  I've wasted enough time with this
discussion.


The honorable thing to do is apologize and star my issue:

http://code.google.com/p/googleappengine/issues/detail?id=7865

Jeff

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



Re: [google-appengine] Do F1 F2 F4 Google App Engine frontend instances really cost more

2012-07-24 Thread Douglas Pollock
Yes, as it stands right now, you need to restart the instances.  You can do
this by manually restarting the instances, or by deploying a new version of
the app.



On Thu, Jul 19, 2012 at 12:59 AM, Marc Hacker  wrote:

> Thanks yes we found that stopping instances is necessary to activate
> changes in the F1/F2/F4 settings.
>
> But we are still getting F4 at most 2-3x faster than F1 even for a pure
> CPU benchmark (for loop)
>
>
> On Thursday, July 19, 2012 10:50:22 AM UTC+3, Francois Masurel wrote:
>>
>> Have you tried to shutdown your currently running instances?  It should
>> help.
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-appengine/-/Heey-25_BqkJ.
>
> 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.
>

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



RE: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Drake
And you get a new string builder each loop. If you use string builder and
recycle it you don't have to re-create the object. Which doesn't create so
much garbage.
You have the answer and you don't understand it.



> Try compiling these two classes.  They produce *identical* class files:
>
>  File m1/Stringy.java 
> public class Stringy {
> public static void main(String[] args) {
> String foo = "def";
> System.out.println("abc" + foo);
> }
> }
>  File m2/Stringy.java 
> public class Stringy {
> public static void main(String[] args) {
> String foo = "def";
> System.out.println(new
> StringBuilder().append("abc").append(foo).toString());
> }
> }


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



[google-appengine] Suggestion: Python Requests library

2012-07-24 Thread rdodev
Would it be possible to add Python Requests library ( 
http://docs.python-requests.org/en/latest/index.html ) to AppEngine? urllib 
and urllib2 are rather cumbersome for complex/custom http requests to other 
web services. Your attention is much appreciated.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/gMHme7EfuYwJ.
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.



Re: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Jeff Schnitzer
On Tue, Jul 24, 2012 at 10:40 AM, Drake  wrote:
> And you get a new string builder each loop. If you use string builder and
> recycle it you don't have to re-create the object. Which doesn't create so
> much garbage.
> You have the answer and you don't understand it.

Just give it up and star the issue, mkay?

http://code.google.com/p/googleappengine/issues/detail?id=7865

Jeff

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



Re: [google-appengine] Re: Startup time exceeded...on F4?!

2012-07-24 Thread Aleksei Rovenski
I didn't read in full everything here, but using StringBuilder is good old 
optimization, strange many don't know it here...
http://www.venishjoe.net/2009/11/java-string-concatenation-and.html
Having said that it seems that both of you are kind of right, recent JDK's 
compile '+' into StringBuilder, but not in all cases, so you have to be 
carefull. 
For example, this would be compiled into builder: 
String ab = a + b;
but this will be compiled into 2 StringBuilder... 
String ab = "ab";
ab += a;
ab += b;

вторник, 24 июля 2012 г., 20:40:10 UTC+3 пользователь Brandon Wirtz написал:
>
> And you get a new string builder each loop. If you use string builder and 
> recycle it you don't have to re-create the object. Which doesn't create so 
> much garbage. 
> You have the answer and you don't understand it. 
>
>
>
> > Try compiling these two classes.  They produce *identical* class files: 
> > 
> >  File m1/Stringy.java  
> > public class Stringy { 
> > public static void main(String[] args) { 
> > String foo = "def"; 
> > System.out.println("abc" + foo); 
> > } 
> > } 
> >  File m2/Stringy.java  
> > public class Stringy { 
> > public static void main(String[] args) { 
> > String foo = "def"; 
> > System.out.println(new 
> > StringBuilder().append("abc").append(foo).toString()); 
> > } 
> > } 
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/CDZcdLF0bIgJ.
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: Task Queue on backend runs much slower than it's configured to

2012-07-24 Thread Bogdan Nourescu
I've designed a mail sender using java and front-end instances that can 
send ~70-80 mails /second  (i sometimes over-hit that 4900 mails/minute 
that is enforce by Google)(Using 5 front-end instances 
and thread-safe activated)
If you are not send mails single thread i suggest you read about another 
but I've encountered (
http://code.google.com/p/googleappengine/issues/detail?id=5769 - appears when 
you try to send 2 mails in the exact same millisecond or something like 
that)
I've seen that 20 seconds delay in some of my tasks execution, but only in 
queues that have a low number of tasks in them (1-5).


On Wednesday, August 31, 2011 1:10:38 PM UTC+3, pdknsk wrote:
>
> I haven't been able to figure out what the reason is. It seems to have 
> improved slightly to about 3/s but it still had 20 seconds delays 
> occasionally for no apparent reason. I've since moved mail sending to 
> a named version (rather than backend), and it works great. It can 
> easily send 6/s, with one instance.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/6a7XUwMMtDcJ.
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.



Re: [google-appengine] Re: Task Queue on backend runs much slower than it's configured to

2012-07-24 Thread Jeff Schnitzer
On Wed, Aug 31, 2011 at 3:10 AM, pdknsk  wrote:
> I haven't been able to figure out what the reason is. It seems to have
> improved slightly to about 3/s but it still had 20 seconds delays
> occasionally for no apparent reason. I've since moved mail sending to
> a named version (rather than backend), and it works great. It can
> easily send 6/s, with one instance.

This sounds related to a thread I started a couple weeks ago:

https://groups.google.com/d/topic/google-appengine/rAmZi6a8ZaI/discussion

If I understand my results correctly, every request to a backend has
an extra 100+ms added to it in transit (before your code starts
executing).  It could actually be considerably worse; doing a urlfetch
from a frontend to a backend (no-op) typically takes hundreds of
milliseconds.  Combined with doing actual work per request, this could
explain low throughput numbers.

It would make sense that the task queue is overloading the backend and
therefore failing a lot of requests.  These failures will cause the
task queue to back off, producing the longer delays you see.

This really isn't a good application for a backend.  If you want to
split logs out, put your processing on a separate frontend version.
Alternatively, you could convert your backend push-queue to a
pull-queue... but it really sounds like a job for a properly scaled
and load-balanced frontend.  If you are worried about spinning up too
many instances, throttle the queue with max-concurrent-requests.

Jeff

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



Re: [google-appengine] is there any datastore-like open source db could be used outside of gae?

2012-07-24 Thread Jeff Schnitzer
On Sat, Jul 21, 2012 at 4:26 AM, saintthor  wrote:
> if not, i have to consider mongodb.

What's wrong with MongoDB?

>From a high-level features-of-the-api perspective, MongoDB is
reasonably similar to the datastore.  If I ever had to move an app,
it's probably where I would go.

Jeff

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



Re: [google-appengine] Re: managing bulk emails from app engine app

2012-07-24 Thread SGBoulder
Would highly recommend SendGrid over Message Bus...

3 years mature and proven. It's my understanding that Message Bus is not 
yet scalable and drops often.

2 cents!

On Thursday, July 19, 2012 12:31:44 PM UTC-6, Vivek Kumar wrote:
>
> Jeff
>
> Does it play nice with google app engine for java?  Also how the pricing 
> looks like? As you said not yet public so emailed them.
>
>
> Thankx and Regards
>
> Vik
> Founder
> http://www.sakshum.org
> http://blog.sakshum.org
>
>
> On Thu, Jul 19, 2012 at 11:18 AM, Jeff Schnitzer wrote:
>
>> On Thu, Jul 12, 2012 at 10:51 PM, Vivek Kumar  wrote:
>> > Hie Jeff
>> >
>> > Which thrid party system do you guys use? please share the details like 
>> how
>> > u r using their service to send emails from your gae app
>>
>> Sorry I missed this earlier.  We use messagebus.com.  We're very happy
>> with them, although I don't think their service is generally available
>> to the public yet.
>>
>> Jeff
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "Google App Engine" group.
>> To post to this group, send email to google-appengine@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> google-appengine+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/google-appengine?hl=en.
>>
>>
>

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



[google-appengine] A Basic Question on Static File

2012-07-24 Thread Michel Spiero
I am new to app engine and python. I am having a relativelly simple doubt. 
I want to publish a static file and always get a 500 error message. Can 
Anyone Help me? I am posting bellow my code 

*main.py*

import os
import webapp2

import jinja2


jinja_environment = jinja2.Environment(autoescape=True,
loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 
'templates')))

class MainPage(webapp2.RequestHandler):
def get(self):
template = jinja_environment.get_template('index.html')
self.response.out.write(template.render('template')

app = webapp2.WSGIApplication([('/', MainPage)],
  debug=True)

*app.yaml:*

application: fashionroombrasil
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: main.app

libraries:
- name: jinja2
  version: latest  

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/UF69Zk7M2fcJ.
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] Java - javax.servlet source files

2012-07-24 Thread creative


Using Eclipse (juno) and GAE plugin, I've compiled and ran the "guestbook" 
example 
(https://developers.google.com/appengine/docs/java/gettingstarted/creating) 
without any problem. Both of the class of the example extend "HttpServlet" 
class of javax.servlet.http package.

I'd like to see the source code (and javadoc) of this class and of the 
other class of the package (and super package), but I can't figure out 
where they are.

They are not in Program 
Files\eclipse-jee-juno-win32\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.7.0\appengine-java-sdk-1.7.0\src
 
(I've tried all of the files in there)

Binary files should be in servlet-api.jar in Program 
Files\eclipse-jee-juno-win32\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.7.0\appengine-java-sdk-1.7.0\lib\shared

I've googled a lot without success. Anybody knows where to find sources of 
javax.servlet package? Thanks a lot.


P.S.: first attempt to post this question failed, i guess.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/FQWEvAc3wYkJ.
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] JDO

2012-07-24 Thread ouidad moussa
when I try to connect to my database using google app engine and jdo  I get 
this error  

Uncaught exception from servlet
javax.jdo.JDOFatalUserException: No meta data for com.gestion.utilisateur.  
Perhaps you need to run the enhancer on this class? 


can you help me please !!! 

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/zbSq5CC8PF4J.
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] /_ah/adminconsole

2012-07-24 Thread Mike Dougherty
This is driving me crazy. The local dev server has suddenly started 
redirecting 
http://localhost:8080/_ah/admin
 to http://localhost:8080/_ah/adminconsole?subsection=datastoreviewer for 
some unknown reason. I have nothing in my web.xml specifying this redirect. 
Nothing in my appengine-web.xml file that would indicate a need for this 
redirect. I can't find anything anywhere in either my application or in 
Google App Engine code. Yet, the development server continues to redirect 
all requests for the admin console to this address. I'm very, very puzzled 
by this. Any insights would be greatly appreciated. 

Thanks,
Mike

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/msdIiHauQiwJ.
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] Erro no creative Sandbox

2012-07-24 Thread João Vitor
Sempre que tendo enviar uma ideia para o Google Creative Sendbo me deparo 
com esse erro na seção "Sobre você"

"type":"500", "status":"fail", 
"message":"com.google.apphosting.api.ApiProxy$CancelledException: The API 
call datastore_v3.Put() was explicitly cancelled 


-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/pOK4M25Fc4IJ.
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: Frameworks on GAE

2012-07-24 Thread Bill Graham
I have been struggling with the same issue of whether GAE is suitable for 
business apps or not (by business apps, I am thinking of order  
processing, credit processing system, shipping systems, billing, etc. 
eCommerce, etc.).  For the past 10 years I have built web-based SaaS 
applications and there is hard to envision building applications that have 
hundreds of users divided into many dozens of roles that govern access to 
many hundreds of various parts of the application with lots of workflow 
management without a framework.

I have no problem being able to develop my own user and permissions 
management system, but since almost everyone developing business 
applications needs this same functionality, it appears to be a great 
redundancy of reinventing the wheel by everyone.  

Almost every other application platform has a very active eco-system where 
developers make their modules available to others.Having said that, I don't 
favor a single comprehensive framework that attempts to do everything, but 
rather   an approach where I can pick and chose which functionality/modules 
I want to add to my application.  I would imagine there would be a place 
where developers would share such functionality and one could just download 
the code and then include it in the applicable files.  This would apply not 
only to the core of a framework that deals with users, roles and 
permissions, but also to plug-in functionality such as discussion forum 
comments, file (Excel) import/export, CRUD scaffolding, etc.  

I also noticed that almost everyone who had been trying to build a 
framework on GAE seems to have given up.  It is scary committing to build a 
web development business around GAE when one does not know if this platform 
is going to survive or whether the powers to be at Google are committed to 
protecting the investment of their business partners in their technology 
(in other words, ensuring that evolution provides a path for those who 
developed on previous versions to migrate to the newer versions relatively 
easily).

Sooo. I hope someone will tell me where the GAE developers share their 
modules and building blocks and where I can find some tutorials about how 
to connect these building blocks to build a solid foundation to almost any 
web application because otherwise I really like much of what I see at GAE.


On Sunday, July 22, 2012 5:32:41 AM UTC-4, glimmung wrote:
>
> Hi All,
>
> I've been reading, initially with amusement but more recently with 
> concern, the "dialogue" (for want of a better word) between Brandom Wirtz 
> and Jeff Schnitzer re. startup time/optimisation. Brandom has now made 
> the following very strong statement: "NO FRAMEWORKS. NONE. Deal with it."
>
> This leads me to ask the Google team for their position on this: Is it 
> your position that GAE is an unsuitable platform for framework-driven apps?
>
> I'm using a framework, and trust the framework's authors to optimise their 
> part of the piece as much as possible, but I'm paid to solve business 
> problems, and am not about to dive into that timesink of esoterica. It's 
> outside my skill-set, and properly so in my view. I've only really tinkered 
> with GAE so far, and this is putting me off investing more time in what is 
> starting to look like a risky platform for me.
>
> So Google peeps, if I want to write B2B apps using a framework, am I your 
> market or not? 
>
> Or is it your position that the low-level optimisation to balance start-up 
> time and hosting cost will always be required?
>
>
> --
>
> Cheers,
>
> PhilK
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/6Pxstk-bnmcJ.
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: GWT 2.4.0/GAE: java.lang.ClassNotFoundException: javax.validation.Path

2012-07-24 Thread Rohan
Any idea...what that jar does or why this error occurred?. Is this 
something missing from the google's documentation?

On Wednesday, October 26, 2011 6:43:00 AM UTC-5, ZS wrote:
>
> I solved this by adding gwt-servlet-deps.jar to war/WEB-INF/lib and then 
> to the classpath!
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/ajd0o__PdIYJ.
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: iOS - Verifying authentication, Reading a Cookie and...

2012-07-24 Thread Andy
Did you ever get this sorted out? I am in the same position, I have my 
cookie, but I don't know how to send it to app engine, nor do I know what 
to do with it once it's there.

On Saturday, June 16, 2012 2:54:25 PM UTC-4, Mike wrote:
>
> Hi, I am building an iOS app that communicates with GAE (java) backend.
>
> After authenticating in a WebView, I am able to see the cookie data: 
> (example, slightly obfuscated)
>
> **
> *
> 2012-06-16 10:00:13.784 FooApp[6342:12203]  "ACSID" value:
> "0iU6sgFWaAaYLymPddSzdhgVsBDlX5at3YBKPReysywriSbl16DohKteJWrLdc8GZEJFm0Ppgrb1jC4Ns7S9JgIV3UkSZrsLjNbNtsbvG8A2g4B24Xa_RFJZvohpFHYBZ2mmVL82YXM_mQ6Q1Q_xEicwebd4FAp2mVV6AQ5AsAgHjC_xJjk3q_rR7XLQVfsPEru4E27qk3WfsdPqky-IqSbfUXvNgRmgkde9QWishsoG62JVyFSMVmp9XPoHxTpspzXOe-OB5TkyNBL3FtI14_XDtzR3yAZXCKJcO6mLG_7qbF_eCYfdYksJuWxVmM1G6yq9LldZmDyVJvW-zVqJMlwHnDJE5sRdQCtxjr74bc2bkehKYgen88tu6V_5iiZUcoZyQpTAeb2poBpCzMo2ejpcp9MELIG23ZsfXXCIn1bTmgNBr2PlRPGvsYWxADf77x3CJ989QoNTNujqnxpEDmBAWbkoxYOUjRwNbekYjGyZkW-cNZ_RDA3PaNFhSYlwBUD9IVFKuQRZTajnq-SsCAUc-xcaNCHHhk"expiresDate
> :2012-06-30 13:57:59 + created:2012-06-16 13:58:01 + 
> (3.61548e+08)sessionOnly
> :FALSE domain:"foo.appspot.com" path:"/" isSecure:FALSE>
> *
> *
> *
>
> My 1st question is: what key value should I check against to "prove" a 
> user authenticated properly? Is the mere existence of an **
> *
> ACSID 
> *
>
> value enough to verify?*
> *
>
>
> Secondly, How would I get the email address the person logged in with to 
> authenticate?
>
> Thanks for you time,
>
> Mike
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/JkvSVy-10BAJ.
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] Where find shared building blocks for building real applications with GAE?

2012-07-24 Thread Bill Graham
I am new to AppEngine (previous Microsoft developer).  So far I like what I 
see (I have always developed for SaaS).  But I get the feeling I have to 
reinvent everything from scratch.  

I think there must be a place where developers share solution 
components/snippets (reusable code) such as discussion forum modules, 
newsletter modules, Excel import/export modules, menu management, expanded 
roles/permission administration, expanded user management, etc.  I am 
working on a very custom application so I need all the data from such 
modules to be fully accessible from my code and to be extensible.

I am looking for a repository of shared modules or similar something like 
what the open source CMSs like Drupal, DotNetNuke, Joomla, etc. have, but 
specifically for AppEngine/Python27 (using NDB or Datastore - not 
CloudSQL).  I read about DjangoCMS but I am not sure how well that 
integrates with datastore.

Any suggestions of where I should be looking?  Has anyone developed robust 
applications with lots of roles and rich community as well as business 
functionality that might be able to advise me of how that approached these 
problems?

Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/WlbKmBE3mEUJ.
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.



Re: [google-appengine] JDO

2012-07-24 Thread Amy Unruh
hi,

It sounds like the post-compilation JDO 'enhancement' step is not getting
performed.
https://developers.google.com/appengine/docs/java/datastore/jdo/overview#Enhancing_Data_Classes

If you are using the Eclipse plugin (
https://developers.google.com/appengine/docs/java/tools/eclipse), it can do
that for you.

On 24 July 2012 21:28, ouidad moussa  wrote:

> when I try to connect to my database using google app engine and jdo  I
> get this error
>
> Uncaught exception from servlet
> javax.jdo.JDOFatalUserException: No meta data for com.gestion.utilisateur.  
> Perhaps you need to run the enhancer on this class?
>
>
> can you help me please !!!
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-appengine/-/zbSq5CC8PF4J.
> 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.
>

-- 
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 SOAP call SocketTimeoutException

2012-07-24 Thread Emanuele Ziglioli
It times out for me at times on the local server. Haven't found a way to 
increase the socket timeout. Have tried:
System.setProperty("sun.net.client.defaultConnectTimeout", "1");
System.setProperty("sun.net.client.defaultReadTimeout", "1");

It makes no difference. Then have tried:
   ((BindingProvider) 
port).getRequestContext().put(BindingProviderProperties.REQUEST_TIMEOUT, 
30);
 
but it says "BindingProviderProperties is not supported by Google App 
Engine's Java runtime environment".
But at least when testing locally, it works most of the time.

Instead, on GAE servers, it fails. Have tried catching any exception but 
can't even do that.
The call that fails is:

new javax.xml.ws.Service(java.net.URL wsdlDocumentLocation, QName 
serviceName) 



On Thursday, 21 June 2012 21:49:28 UTC+12, Michel Jonker wrote:
>
> Yes I have the same issue, I cannot find a way to increase the connect 
> timeout through JAX-WS that is allowed by Google...
>
> On Friday, June 1, 2012 11:32:20 AM UTC+2, Deepak Singh wrote:
>>
>> Hi Aljaz,
>>  
>> I am still facing the same problem and app is running with problem.
>>  
>> Let us do something out of the box so that google puts an attention over 
>> the issue.
>>  
>> Thanks
>> Deepak
>>
>> On Fri, Jun 1, 2012 at 2:35 PM, Aljaz Delakorda wrote:
>>
>>> Hi Deepak,
>>>
>>> Sorry to contact you in this way, but the Issue where you were 
>>> discussing has been marked as obsolete.
>>>
>>> I am having exact same Problem as you described here:
>>> http://code.google.com/p/googleappengine/issues/detail?id=5927#c5
>>>
>>> I am calling a soap service (via jax-ws) which uses UrlFetch internally. 
>>> I become very often a SocketTimeotException while fetching the response... 
>>> Did you find a way how to increase this Timeout? How did you solve the 
>>> problem? I cannot find any solutions on the web...
>>>
>>> I hope you can take a second to help me out.
>>>
>>> Thank you for your time,
>>> Best regards,
>>> Aljaz Delakorda
>>>
>>
>>
>>
>> -- 
>> Deepak Singh
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/DbLPCLSYVGoJ.
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: 500 Internal Server Errors Not Logged

2012-07-24 Thread Emanuele Ziglioli
I see 500 errors and not a thing in the logs, Java, call to:

  javax.xml.ws.Service(java.net.URL wsdlDocumentLocation, QName 
serviceName) {
delegate = 
Provider.provider().createServiceDelegate(wsdlDocumentLocation,
serviceName,
this.getClass());
}


On Monday, 23 July 2012 22:43:23 UTC+12, timh wrote:
>
> You might want to configure warmup requests if you haven't already.
>
> T
>
> On Friday, July 20, 2012 9:18:15 PM UTC+8, Chris Vaughn wrote:
>>
>>
>> Thanks for the reply Kyle.  I don't know for sure if it was while a new 
>> instance was being added.  I'll keep an eye on that if I see it again.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/9Jp6OFwEah0J.
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] SOAP example not working?

2012-07-24 Thread Emanuele Ziglioli
Can't get a SOAP client working on GAE servers, but not problem locally.
Now, trying the example you provided, it seems the same: error 500

http://greeter-soap-example.appspot.com/hellosoapclient



-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/Igq9bga-pTsJ.
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.



Re: [google-appengine] Problem with ctypes

2012-07-24 Thread Brian Quinlan
Hi Yuval,

Take a look at this link:
https://developers.google.com/appengine/kb/libraries

Cheers,
Brian

On Mon, Jul 23, 2012 at 3:11 AM, Yuval Kalev  wrote:
> I seem to be having problems with importing ctypes to use for an MGRS module
> I want to load.
> I keep getting this error:
>
> ImportError: No module named _ctypes
>
>
> Reading posts I read that version 2.7.1-2 might have fixed this issue. Still
> I cannot get it to work.
>
> Any ideas?
>
>
> Thanks,
>
> - Yuval
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-appengine/-/S7pu8and_AEJ.
> 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.

-- 
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] How to create JDO metatdata?

2012-07-24 Thread MikeDee
It has been a while since I've used JDO.  I prefer to put metadata in a 
separate .jdo file.  Is there an easy way to do this with GAE?  

Previously I experimented with the DataNucleus Eclipse plugin.  However, 
that seemed to be a newer version than the JDO built in to the Google 
Eclipse plugin and it caused problems.

Any pointers would be appreciated.


-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/1An8sL7KVucJ.
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: SOAP example not working?

2012-07-24 Thread Emanuele Ziglioli
I'm going to file a bug report (not sure where: googlecode, 
stackoverflow?), anyway, the problem seems to be when invoking the 
constructor for  javax.xml.ws.Service.

I've created my own copy of Service and have added some debug messages.
This particular call seems to fail: 
javax.xml.ws.spi.Provider.provider()

Anyway, if anybody has got any clue, please let me know

On Wednesday, 25 July 2012 14:35:20 UTC+12, Emanuele Ziglioli wrote:
>
> Can't get a SOAP client working on GAE servers, but not problem locally.
> Now, trying the example you provided, it seems the same: error 500
>
> http://greeter-soap-example.appspot.com/hellosoapclient
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/jaWYvCzfV0MJ.
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: SOAP example not working?

2012-07-24 Thread Emanuele Ziglioli
I'm posting updates here 
now: http://code.google.com/p/googleappengine/issues/detail?id=4910#c23

On Wednesday, 25 July 2012 16:23:56 UTC+12, Emanuele Ziglioli wrote:
>
> I'm going to file a bug report (not sure where: googlecode, 
> stackoverflow?), anyway, the problem seems to be when invoking the 
> constructor for  javax.xml.ws.Service.
>
> I've created my own copy of Service and have added some debug messages.
> This particular call seems to fail: 
> javax.xml.ws.spi.Provider.provider()
>
> Anyway, if anybody has got any clue, please let me know
>
> On Wednesday, 25 July 2012 14:35:20 UTC+12, Emanuele Ziglioli wrote:
>>
>> Can't get a SOAP client working on GAE servers, but not problem locally.
>> Now, trying the example you provided, it seems the same: error 500
>>
>> http://greeter-soap-example.appspot.com/hellosoapclient
>>
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/3FU1g01znKMJ.
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: 500 Internal Server Errors Not Logged

2012-07-24 Thread Emanuele Ziglioli
At least in Java I've managed to capture it and write the logs myself.
I had to capture a Throwable rather than an Exception

On Wednesday, 25 July 2012 14:32:35 UTC+12, Emanuele Ziglioli wrote:
>
> I see 500 errors and not a thing in the logs, Java, call to:
>
>   javax.xml.ws.Service(java.net.URL wsdlDocumentLocation, QName 
> serviceName) {
> delegate = 
> Provider.provider().createServiceDelegate(wsdlDocumentLocation,
> serviceName,
> this.getClass());
> }
>
>
> On Monday, 23 July 2012 22:43:23 UTC+12, timh wrote:
>>
>> You might want to configure warmup requests if you haven't already.
>>
>> T
>>
>> On Friday, July 20, 2012 9:18:15 PM UTC+8, Chris Vaughn wrote:
>>>
>>>
>>> Thanks for the reply Kyle.  I don't know for sure if it was while a new 
>>> instance was being added.  I'll keep an eye on that if I see it again.
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/2tlDSmaWyFcJ.
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: App Engine hangout Wed. 25th July, 4pm PDT - Projection Queries

2012-07-24 Thread Amy Unruh
Reminder: there will be an App Engine G+ Office Hours hangout this coming
Wed., 25th July, at 4pm Pacific time. It will include an introduction to
Projection Queries.
See the announcement below for the link for questions. Hope you can join
us!

On 20 July 2012 14:52, Amy Unruh  wrote:

> We will have an App Engine G+ Office Hours hangout this coming Wed., 25th
> July, at 4pm Pacific time (23:00 UTC, 9:00 Thu in Sydney, 8:00 in Tokyo :),
> including an introduction to a relatively new App Engine feature--
> Projection queries.
>
> Visit this event to find the hangout when it starts up:
>
> https://developers.google.com/events/ahNzfmdvb2dsZS1kZXZlbG9wZXJzcg4LEgVFdmVudBjX79QCDA/
>
> Submit questions via Google Moderator:
> https://www.google.com/moderator/#15/e=1faeac&t=1faeac.45
>
> Find the hangout in your time zone: http://goo.gl/Ri9iJ
>
> We're going to start doing these hangouts much more regularly -- keep an
> eye on https://developers.google.com/live and our calendar (
> http://goo.gl/GGkgx).
> Hope you can join us!
>

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