You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Chris Mylonas <ch...@mrvoip.com.au> on 2010/07/03 03:09:19 UTC

Tapestry 5 + Google App Engine - initial success!

Hi,

I'm pretty new around here but thought I would let you know that this post
by Christophe Dufour works.
http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine

You can check it out here: http://tapgae1.appspot.com/
It's pretty much the default tapestry5 maven archetype with a link to
Christophe's instructions.

I googled for tapestry appengine and there didn't appear to be any recent
success stories so thought I'd let you all know.

Cheers
Chris

Re: Tapestry 5 + Google App Engine - initial success!

Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
On Sun, 04 Jul 2010 11:40:23 -0300, Alex Kotchnev <ak...@gmail.com>  
wrote:

> My cron job runs
> about every three minutes , fetching all pages on the site and in 24hrs
> consumes about 20-30% of the free quota.

Just curious: why fetching all pages?

-- 
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor
Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Tapestry 5 + Google App Engine - initial success!

Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
On Mon, 05 Jul 2010 23:17:08 -0300, Alex Kotchnev <ak...@gmail.com>  
wrote:

> Thiago,

Hi, Alex!

>    you're probably right, loading a single page might be enough . I
> mentioned what I do and it seems to work OK - I didn't necessarily imply
> that it was the only or the best way of keeping the app warm.

I have plans to do some Tapestry 5 development in GAE and I'm curious to  
know what works well and what doesn't. :)

-- 
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor
Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Tapestry 5 + Google App Engine - initial success!

Posted by Chris Mylonas <ch...@mrvoip.com.au>.
Hi Alex & Co.,

I've found that even running off appengine's own cron facility (every  
2 minutes), there is the occasional time, looks like once every 3  
hours, that the app is unloaded and the 8 - 10 second response delay  
occurs.

Here is a portion of the logs.  You'll see at 01:23PM the app loads  
fine but even 2 minutes later it takes nearly 10 seconds.  Looks like  
the the paid reserve instance when it becomes available will be the  
most reliable way to keep the app "warm".

I'm only fetching /

Chris



• 07-05 01:25PM 06.806 / 200 6096ms 9508cpu_ms 2kb AppEngine-Google; (+http://code.google.com/appengine) 
  See details
0.1.0.1 - - [05/Jul/2010:13:25:12 -0700] "GET / HTTP/1.1" 200 2614 -  
"AppEngine-Google; (+http://code.google.com/appengine)"  
"tapgae1.appspot.com" ms=6097 cpu_ms=9508 api_cpu_ms=0  
cpm_usd=0.264438 queue_name=__cron  
task_name=70250254b79e5ded197224d2233e2917 loading_request=1
/snipped tapestry logging of a reload

•
	• 07-05 01:23PM 06.757 / 200 30ms 38cpu_ms 2kb AppEngine-Google; (+http://code.google.com/appengine) 
  See details
0.1.0.1 - - [05/Jul/2010:13:23:06 -0700] "GET / HTTP/1.1" 200 2614 -  
"AppEngine-Google; (+http://code.google.com/appengine)"  
"tapgae1.appspot.com" ms=30 cpu_ms=38 api_cpu_ms=0 cpm_usd=0.001383  
queue_name=__cron task_name=70250254b79e5ded197224d2233e2917
	• I 07-05 01:23PM 06.782
[tapgae1/3.343092403328231167].<stdout>: [INFO] AppModule.TimingFilter  
Request time: 10 ms



On 06/07/2010, at 12:17 PM, Alex Kotchnev wrote:

> Thiago,
>   you're probably right, loading a single page might be enough . I
> mentioned what I do and it seems to work OK - I didn't necessarily  
> imply
> that it was the only or the best way of keeping the app warm.
>
>   On the benefits of keeping GAE from shutting down the app server :  
> I've
> noticed that if I don't keep it warm, I easily spend the same 20% of  
> the
> quota just starting and stopping the app , with the downside that  
> the first
> page load takes forever (e.g. 30 secs).
>
> Regards,
>
> Alex K
>
> On Sun, Jul 4, 2010 at 6:31 PM, Thiago H. de Paula Figueiredo <
> thiagohp@gmail.com> wrote:
>
>> On Sun, 04 Jul 2010 15:31:32 -0300, Howard Lewis Ship <hlship@gmail.com 
>> >
>> wrote:
>>
>> It seems to me that just getting the root index page would accomplish
>>> most of the goal: keeping the whole application from being unloaded.
>>> Your spider will do that, plus keep the page pool filled with pages.
>>> Did you experiment with just getting the root index page?
>>>
>>
>> Wouldn't any page work as well as the root page to keep GAE from
>> deallocation the application?
>> I would create a page that returns nothing for that.
>>
>>
>> --
>> Thiago H. de Paula Figueiredo
>> Independent Java, Apache Tapestry 5 and Hibernate consultant,  
>> developer,
>> and instructor
>> Owner, Ars Machina Tecnologia da Informação Ltda.
>> http://www.arsmachina.com.br
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Tapestry 5 + Google App Engine - initial success!

Posted by Alex Kotchnev <ak...@gmail.com>.
Thiago,
   you're probably right, loading a single page might be enough . I
mentioned what I do and it seems to work OK - I didn't necessarily imply
that it was the only or the best way of keeping the app warm.

   On the benefits of keeping GAE from shutting down the app server : I've
noticed that if I don't keep it warm, I easily spend the same 20% of the
quota just starting and stopping the app , with the downside that the first
page load takes forever (e.g. 30 secs).

Regards,

Alex K

On Sun, Jul 4, 2010 at 6:31 PM, Thiago H. de Paula Figueiredo <
thiagohp@gmail.com> wrote:

> On Sun, 04 Jul 2010 15:31:32 -0300, Howard Lewis Ship <hl...@gmail.com>
> wrote:
>
>  It seems to me that just getting the root index page would accomplish
>> most of the goal: keeping the whole application from being unloaded.
>> Your spider will do that, plus keep the page pool filled with pages.
>> Did you experiment with just getting the root index page?
>>
>
> Wouldn't any page work as well as the root page to keep GAE from
> deallocation the application?
> I would create a page that returns nothing for that.
>
>
> --
> Thiago H. de Paula Figueiredo
> Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,
> and instructor
> Owner, Ars Machina Tecnologia da Informação Ltda.
> http://www.arsmachina.com.br
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: Tapestry 5 + Google App Engine - initial success!

Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
On Sun, 04 Jul 2010 15:31:32 -0300, Howard Lewis Ship <hl...@gmail.com>  
wrote:

> It seems to me that just getting the root index page would accomplish
> most of the goal: keeping the whole application from being unloaded.
> Your spider will do that, plus keep the page pool filled with pages.
> Did you experiment with just getting the root index page?

Wouldn't any page work as well as the root page to keep GAE from  
deallocation the application?
I would create a page that returns nothing for that.

-- 
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor
Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Tapestry 5 + Google App Engine - initial success!

Posted by Howard Lewis Ship <hl...@gmail.com>.
So if there was no page pool, the work I'm currently engaged in, then
there would be no advantage, in GAE, to pinging the application?

On Sun, Jul 4, 2010 at 11:55 AM, Dmitry Gusev <dm...@gmail.com> wrote:
> GAE doesn't do application unload, it shuts down entire appserver instance
> whenever it wants no matter what application state is.
> I believe the only reason why GAE do this is to balance GAE cluster
> performance.
>
> On Sun, Jul 4, 2010 at 22:31, Howard Lewis Ship <hl...@gmail.com> wrote:
>
>> It seems to me that just getting the root index page would accomplish
>> most of the goal: keeping the whole appSo if lication from being unloaded.
>> Your spider will do that, plus keep the page pool filled with pages.
>> Did you experiment with just getting the root index page?
>>
>> On Sun, Jul 4, 2010 at 7:40 AM, Alex Kotchnev <ak...@gmail.com> wrote:
>> > In addition to having the cron job (note, it's running on a compltely
>> > different box , not the cron from GAE), I also use Dmitry's ping service
>> to
>> > watch the response times (http://ping-service.appspot.com). My cron job
>> runs
>> > about every three minutes , fetching all pages on the site and in 24hrs
>> > consumes about 20-30% of the free quota. When the cron job is running, it
>> > keeps the application warm and ping-service reports that it's always
>> > available. If for some reason the cron job stops running, ping service
>> > immediately starts reporting intermittent issues w/ the application
>> failing
>> > to respond.
>> >
>> > This is my command looks like in the crontab:
>> >
>> > wget --spider --force-html http://foobar.com --random-wait -r --level=1
>> >
>> > Regards,
>> >
>> > Alex K
>> >
>> >
>> > On Sat, Jul 3, 2010 at 9:29 AM, Dmitry Gusev <dm...@gmail.com>
>> wrote:
>> >
>> >> Its discourged to use cron jobs (as well as task queues) to keep
>> >> application
>> >> worm on GAE.
>> >> Moreover this will not work anyway if your application have intensive
>> >> traffic. You will still have this issue.
>> >>
>> >> Currently GAE team is working feature to reserve application instances
>> and
>> >> this will cost money.
>> >> On Sat, Jul 3, 2010 at 17:20, Chris Mylonas <ch...@mrvoip.com.au>
>> wrote:
>> >>
>> >> > OK - that seems to work.
>> >> > GAE has a cron facility configurable with a cron.xml file in the
>> WEB-INF
>> >> > directory.
>> >> > I've set it to request the application root "/" every 2 minutes -
>> should
>> >> > keep things crisp.
>> >> >
>> >> > Have a good weekend,
>> >> > Cheers
>> >> > Chris
>> >> >
>> >> >
>> >> > On 03/07/2010, at 10:58 PM, Andreas Andreou wrote:
>> >> >
>> >> > i think someone in this list has mentioned setting up a cron job to
>> wget
>> >> >> the app so that the unloading never occurs.
>> >> >>
>> >> >> On Sat, Jul 3, 2010 at 15:19, Chris Mylonas <ch...@mrvoip.com.au>
>> >> wrote:
>> >> >>
>> >> >> Howdy,
>> >> >>>
>> >> >>> Well I haven't hit any snags yet.
>> >> >>>
>> >> >>> I'll try to put a few of the jumpstart examples on there to see how
>> >> they
>> >> >>> go.  Sometime in the next week - ajaxformloop and some crud with
>> GAE's
>> >> >>> datastore (using JDO over JPA as it seems to be the preferred way
>> >> seeing
>> >> >>> as
>> >> >>> it's not a relational db).
>> >> >>>
>> >> >>> The only problem I've got at the moment is that whenever the app
>> hasn't
>> >> >>> been called for a while there is this message in the appengine admin
>> >> >>> logs:
>> >> >>>
>> >> >>> This request caused a new process to be started for your
>> application,
>> >> and
>> >> >>> thus caused your application code to be loaded for the first time.
>> This
>> >> >>> request may thus take longer and use more CPU than a typical request
>> >> for
>> >> >>> your application.
>> >> >>>
>> >> >>> And the request takes 8000ms - 10000ms to process - once the app is
>> >> >>> loaded
>> >> >>> it has fast responses as one would expect.  At this stage I'm not
>> sure
>> >> >>> whether this is something within GAE that can be configured or some
>> >> >>> tapestry
>> >> >>> do-not-let-me-unload setting which I haven't encountered in my
>> tapestry
>> >> >>> devving.
>> >> >>>
>> >> >>> I'll post further once there's a bit more work done to it (or if
>> there
>> >> >>> are
>> >> >>> still the problems you mentioned)
>> >> >>>
>> >> >>> Thanks for your feedback,
>> >> >>> Cheers
>> >> >>> Chris
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> On 03/07/2010, at 8:22 PM, Robin Komiwes wrote:
>> >> >>>
>> >> >>> Hi!
>> >> >>>
>> >> >>>>
>> >> >>>> Good news! I don't see any workaround to use another XML parser
>> than
>> >> >>>> woodstox. Does it means that there no compatibility issue anymore?
>> It
>> >> >>>> would
>> >> >>>> be a very good point in order to resolve all issues related to
>> HTML5
>> >> and
>> >> >>>> entities resolutions problems.
>> >> >>>>
>> >> >>>> On Sat, Jul 3, 2010 at 3:09 AM, Chris Mylonas <chris@mrvoip.com.au
>> >
>> >> >>>> wrote:
>> >> >>>>
>> >> >>>> Hi,
>> >> >>>>
>> >> >>>>>
>> >> >>>>> I'm pretty new around here but thought I would let you know that
>> this
>> >> >>>>> post
>> >> >>>>> by Christophe Dufour works.
>> >> >>>>>
>> http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine
>> >> >>>>>
>> >> >>>>> You can check it out here: http://tapgae1.appspot.com/
>> >> >>>>> It's pretty much the default tapestry5 maven archetype with a link
>> to
>> >> >>>>> Christophe's instructions.
>> >> >>>>>
>> >> >>>>> I googled for tapestry appengine and there didn't appear to be any
>> >> >>>>> recent
>> >> >>>>> success stories so thought I'd let you all know.
>> >> >>>>>
>> >> >>>>> Cheers
>> >> >>>>> Chris
>> >> >>>>>
>> >> >>>>>
>> >> >>>>>
>> >> >>>
>> ---------------------------------------------------------------------
>> >> >>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> >> >>> For additional commands, e-mail: users-help@tapestry.apache.org
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>
>> >> >> --
>> >> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> >> >> Tapestry PMC / Tacos developer
>> >> >> Open Source / JEE Consulting
>> >> >>
>> >> >
>> >> >
>> >> > ---------------------------------------------------------------------
>> >> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> >> > For additional commands, e-mail: users-help@tapestry.apache.org
>> >> >
>> >> >
>> >>
>> >>
>> >> --
>> >> Dmitry Gusev
>> >>
>> >> AnjLab Team
>> >> http://anjlab.com
>> >>
>> >
>>
>>
>>
>> --
>> Howard M. Lewis Ship
>>
>> Creator of Apache Tapestry
>>
>> The source for Tapestry training, mentoring and support. Contact me to
>> learn how I can get you up and productive in Tapestry fast!
>>
>> (971) 678-5210
>> http://howardlewisship.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
>
> --
> Dmitry Gusev
>
> AnjLab Team
> http://anjlab.com
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Tapestry 5 + Google App Engine - initial success!

Posted by Dmitry Gusev <dm...@gmail.com>.
GAE doesn't do application unload, it shuts down entire appserver instance
whenever it wants no matter what application state is.
I believe the only reason why GAE do this is to balance GAE cluster
performance.

On Sun, Jul 4, 2010 at 22:31, Howard Lewis Ship <hl...@gmail.com> wrote:

> It seems to me that just getting the root index page would accomplish
> most of the goal: keeping the whole application from being unloaded.
> Your spider will do that, plus keep the page pool filled with pages.
> Did you experiment with just getting the root index page?
>
> On Sun, Jul 4, 2010 at 7:40 AM, Alex Kotchnev <ak...@gmail.com> wrote:
> > In addition to having the cron job (note, it's running on a compltely
> > different box , not the cron from GAE), I also use Dmitry's ping service
> to
> > watch the response times (http://ping-service.appspot.com). My cron job
> runs
> > about every three minutes , fetching all pages on the site and in 24hrs
> > consumes about 20-30% of the free quota. When the cron job is running, it
> > keeps the application warm and ping-service reports that it's always
> > available. If for some reason the cron job stops running, ping service
> > immediately starts reporting intermittent issues w/ the application
> failing
> > to respond.
> >
> > This is my command looks like in the crontab:
> >
> > wget --spider --force-html http://foobar.com --random-wait -r --level=1
> >
> > Regards,
> >
> > Alex K
> >
> >
> > On Sat, Jul 3, 2010 at 9:29 AM, Dmitry Gusev <dm...@gmail.com>
> wrote:
> >
> >> Its discourged to use cron jobs (as well as task queues) to keep
> >> application
> >> worm on GAE.
> >> Moreover this will not work anyway if your application have intensive
> >> traffic. You will still have this issue.
> >>
> >> Currently GAE team is working feature to reserve application instances
> and
> >> this will cost money.
> >> On Sat, Jul 3, 2010 at 17:20, Chris Mylonas <ch...@mrvoip.com.au>
> wrote:
> >>
> >> > OK - that seems to work.
> >> > GAE has a cron facility configurable with a cron.xml file in the
> WEB-INF
> >> > directory.
> >> > I've set it to request the application root "/" every 2 minutes -
> should
> >> > keep things crisp.
> >> >
> >> > Have a good weekend,
> >> > Cheers
> >> > Chris
> >> >
> >> >
> >> > On 03/07/2010, at 10:58 PM, Andreas Andreou wrote:
> >> >
> >> > i think someone in this list has mentioned setting up a cron job to
> wget
> >> >> the app so that the unloading never occurs.
> >> >>
> >> >> On Sat, Jul 3, 2010 at 15:19, Chris Mylonas <ch...@mrvoip.com.au>
> >> wrote:
> >> >>
> >> >> Howdy,
> >> >>>
> >> >>> Well I haven't hit any snags yet.
> >> >>>
> >> >>> I'll try to put a few of the jumpstart examples on there to see how
> >> they
> >> >>> go.  Sometime in the next week - ajaxformloop and some crud with
> GAE's
> >> >>> datastore (using JDO over JPA as it seems to be the preferred way
> >> seeing
> >> >>> as
> >> >>> it's not a relational db).
> >> >>>
> >> >>> The only problem I've got at the moment is that whenever the app
> hasn't
> >> >>> been called for a while there is this message in the appengine admin
> >> >>> logs:
> >> >>>
> >> >>> This request caused a new process to be started for your
> application,
> >> and
> >> >>> thus caused your application code to be loaded for the first time.
> This
> >> >>> request may thus take longer and use more CPU than a typical request
> >> for
> >> >>> your application.
> >> >>>
> >> >>> And the request takes 8000ms - 10000ms to process - once the app is
> >> >>> loaded
> >> >>> it has fast responses as one would expect.  At this stage I'm not
> sure
> >> >>> whether this is something within GAE that can be configured or some
> >> >>> tapestry
> >> >>> do-not-let-me-unload setting which I haven't encountered in my
> tapestry
> >> >>> devving.
> >> >>>
> >> >>> I'll post further once there's a bit more work done to it (or if
> there
> >> >>> are
> >> >>> still the problems you mentioned)
> >> >>>
> >> >>> Thanks for your feedback,
> >> >>> Cheers
> >> >>> Chris
> >> >>>
> >> >>>
> >> >>>
> >> >>> On 03/07/2010, at 8:22 PM, Robin Komiwes wrote:
> >> >>>
> >> >>> Hi!
> >> >>>
> >> >>>>
> >> >>>> Good news! I don't see any workaround to use another XML parser
> than
> >> >>>> woodstox. Does it means that there no compatibility issue anymore?
> It
> >> >>>> would
> >> >>>> be a very good point in order to resolve all issues related to
> HTML5
> >> and
> >> >>>> entities resolutions problems.
> >> >>>>
> >> >>>> On Sat, Jul 3, 2010 at 3:09 AM, Chris Mylonas <chris@mrvoip.com.au
> >
> >> >>>> wrote:
> >> >>>>
> >> >>>> Hi,
> >> >>>>
> >> >>>>>
> >> >>>>> I'm pretty new around here but thought I would let you know that
> this
> >> >>>>> post
> >> >>>>> by Christophe Dufour works.
> >> >>>>>
> http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine
> >> >>>>>
> >> >>>>> You can check it out here: http://tapgae1.appspot.com/
> >> >>>>> It's pretty much the default tapestry5 maven archetype with a link
> to
> >> >>>>> Christophe's instructions.
> >> >>>>>
> >> >>>>> I googled for tapestry appengine and there didn't appear to be any
> >> >>>>> recent
> >> >>>>> success stories so thought I'd let you all know.
> >> >>>>>
> >> >>>>> Cheers
> >> >>>>> Chris
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>
> ---------------------------------------------------------------------
> >> >>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> >>> For additional commands, e-mail: users-help@tapestry.apache.org
> >> >>>
> >> >>>
> >> >>>
> >> >>
> >> >> --
> >> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> >> >> Tapestry PMC / Tacos developer
> >> >> Open Source / JEE Consulting
> >> >>
> >> >
> >> >
> >> > ---------------------------------------------------------------------
> >> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> > For additional commands, e-mail: users-help@tapestry.apache.org
> >> >
> >> >
> >>
> >>
> >> --
> >> Dmitry Gusev
> >>
> >> AnjLab Team
> >> http://anjlab.com
> >>
> >
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Dmitry Gusev

AnjLab Team
http://anjlab.com

Re: Tapestry 5 + Google App Engine - initial success!

Posted by Howard Lewis Ship <hl...@gmail.com>.
It seems to me that just getting the root index page would accomplish
most of the goal: keeping the whole application from being unloaded.
Your spider will do that, plus keep the page pool filled with pages.
Did you experiment with just getting the root index page?

On Sun, Jul 4, 2010 at 7:40 AM, Alex Kotchnev <ak...@gmail.com> wrote:
> In addition to having the cron job (note, it's running on a compltely
> different box , not the cron from GAE), I also use Dmitry's ping service to
> watch the response times (http://ping-service.appspot.com). My cron job runs
> about every three minutes , fetching all pages on the site and in 24hrs
> consumes about 20-30% of the free quota. When the cron job is running, it
> keeps the application warm and ping-service reports that it's always
> available. If for some reason the cron job stops running, ping service
> immediately starts reporting intermittent issues w/ the application failing
> to respond.
>
> This is my command looks like in the crontab:
>
> wget --spider --force-html http://foobar.com --random-wait -r --level=1
>
> Regards,
>
> Alex K
>
>
> On Sat, Jul 3, 2010 at 9:29 AM, Dmitry Gusev <dm...@gmail.com> wrote:
>
>> Its discourged to use cron jobs (as well as task queues) to keep
>> application
>> worm on GAE.
>> Moreover this will not work anyway if your application have intensive
>> traffic. You will still have this issue.
>>
>> Currently GAE team is working feature to reserve application instances and
>> this will cost money.
>> On Sat, Jul 3, 2010 at 17:20, Chris Mylonas <ch...@mrvoip.com.au> wrote:
>>
>> > OK - that seems to work.
>> > GAE has a cron facility configurable with a cron.xml file in the WEB-INF
>> > directory.
>> > I've set it to request the application root "/" every 2 minutes - should
>> > keep things crisp.
>> >
>> > Have a good weekend,
>> > Cheers
>> > Chris
>> >
>> >
>> > On 03/07/2010, at 10:58 PM, Andreas Andreou wrote:
>> >
>> > i think someone in this list has mentioned setting up a cron job to wget
>> >> the app so that the unloading never occurs.
>> >>
>> >> On Sat, Jul 3, 2010 at 15:19, Chris Mylonas <ch...@mrvoip.com.au>
>> wrote:
>> >>
>> >> Howdy,
>> >>>
>> >>> Well I haven't hit any snags yet.
>> >>>
>> >>> I'll try to put a few of the jumpstart examples on there to see how
>> they
>> >>> go.  Sometime in the next week - ajaxformloop and some crud with GAE's
>> >>> datastore (using JDO over JPA as it seems to be the preferred way
>> seeing
>> >>> as
>> >>> it's not a relational db).
>> >>>
>> >>> The only problem I've got at the moment is that whenever the app hasn't
>> >>> been called for a while there is this message in the appengine admin
>> >>> logs:
>> >>>
>> >>> This request caused a new process to be started for your application,
>> and
>> >>> thus caused your application code to be loaded for the first time. This
>> >>> request may thus take longer and use more CPU than a typical request
>> for
>> >>> your application.
>> >>>
>> >>> And the request takes 8000ms - 10000ms to process - once the app is
>> >>> loaded
>> >>> it has fast responses as one would expect.  At this stage I'm not sure
>> >>> whether this is something within GAE that can be configured or some
>> >>> tapestry
>> >>> do-not-let-me-unload setting which I haven't encountered in my tapestry
>> >>> devving.
>> >>>
>> >>> I'll post further once there's a bit more work done to it (or if there
>> >>> are
>> >>> still the problems you mentioned)
>> >>>
>> >>> Thanks for your feedback,
>> >>> Cheers
>> >>> Chris
>> >>>
>> >>>
>> >>>
>> >>> On 03/07/2010, at 8:22 PM, Robin Komiwes wrote:
>> >>>
>> >>> Hi!
>> >>>
>> >>>>
>> >>>> Good news! I don't see any workaround to use another XML parser than
>> >>>> woodstox. Does it means that there no compatibility issue anymore? It
>> >>>> would
>> >>>> be a very good point in order to resolve all issues related to HTML5
>> and
>> >>>> entities resolutions problems.
>> >>>>
>> >>>> On Sat, Jul 3, 2010 at 3:09 AM, Chris Mylonas <ch...@mrvoip.com.au>
>> >>>> wrote:
>> >>>>
>> >>>> Hi,
>> >>>>
>> >>>>>
>> >>>>> I'm pretty new around here but thought I would let you know that this
>> >>>>> post
>> >>>>> by Christophe Dufour works.
>> >>>>> http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine
>> >>>>>
>> >>>>> You can check it out here: http://tapgae1.appspot.com/
>> >>>>> It's pretty much the default tapestry5 maven archetype with a link to
>> >>>>> Christophe's instructions.
>> >>>>>
>> >>>>> I googled for tapestry appengine and there didn't appear to be any
>> >>>>> recent
>> >>>>> success stories so thought I'd let you all know.
>> >>>>>
>> >>>>> Cheers
>> >>>>> Chris
>> >>>>>
>> >>>>>
>> >>>>>
>> >>> ---------------------------------------------------------------------
>> >>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> >>> For additional commands, e-mail: users-help@tapestry.apache.org
>> >>>
>> >>>
>> >>>
>> >>
>> >> --
>> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> >> Tapestry PMC / Tacos developer
>> >> Open Source / JEE Consulting
>> >>
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> > For additional commands, e-mail: users-help@tapestry.apache.org
>> >
>> >
>>
>>
>> --
>> Dmitry Gusev
>>
>> AnjLab Team
>> http://anjlab.com
>>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Tapestry 5 + Google App Engine - initial success!

Posted by Alex Kotchnev <ak...@gmail.com>.
In addition to having the cron job (note, it's running on a compltely
different box , not the cron from GAE), I also use Dmitry's ping service to
watch the response times (http://ping-service.appspot.com). My cron job runs
about every three minutes , fetching all pages on the site and in 24hrs
consumes about 20-30% of the free quota. When the cron job is running, it
keeps the application warm and ping-service reports that it's always
available. If for some reason the cron job stops running, ping service
immediately starts reporting intermittent issues w/ the application failing
to respond.

This is my command looks like in the crontab:

wget --spider --force-html http://foobar.com --random-wait -r --level=1

Regards,

Alex K


On Sat, Jul 3, 2010 at 9:29 AM, Dmitry Gusev <dm...@gmail.com> wrote:

> Its discourged to use cron jobs (as well as task queues) to keep
> application
> worm on GAE.
> Moreover this will not work anyway if your application have intensive
> traffic. You will still have this issue.
>
> Currently GAE team is working feature to reserve application instances and
> this will cost money.
> On Sat, Jul 3, 2010 at 17:20, Chris Mylonas <ch...@mrvoip.com.au> wrote:
>
> > OK - that seems to work.
> > GAE has a cron facility configurable with a cron.xml file in the WEB-INF
> > directory.
> > I've set it to request the application root "/" every 2 minutes - should
> > keep things crisp.
> >
> > Have a good weekend,
> > Cheers
> > Chris
> >
> >
> > On 03/07/2010, at 10:58 PM, Andreas Andreou wrote:
> >
> > i think someone in this list has mentioned setting up a cron job to wget
> >> the app so that the unloading never occurs.
> >>
> >> On Sat, Jul 3, 2010 at 15:19, Chris Mylonas <ch...@mrvoip.com.au>
> wrote:
> >>
> >> Howdy,
> >>>
> >>> Well I haven't hit any snags yet.
> >>>
> >>> I'll try to put a few of the jumpstart examples on there to see how
> they
> >>> go.  Sometime in the next week - ajaxformloop and some crud with GAE's
> >>> datastore (using JDO over JPA as it seems to be the preferred way
> seeing
> >>> as
> >>> it's not a relational db).
> >>>
> >>> The only problem I've got at the moment is that whenever the app hasn't
> >>> been called for a while there is this message in the appengine admin
> >>> logs:
> >>>
> >>> This request caused a new process to be started for your application,
> and
> >>> thus caused your application code to be loaded for the first time. This
> >>> request may thus take longer and use more CPU than a typical request
> for
> >>> your application.
> >>>
> >>> And the request takes 8000ms - 10000ms to process - once the app is
> >>> loaded
> >>> it has fast responses as one would expect.  At this stage I'm not sure
> >>> whether this is something within GAE that can be configured or some
> >>> tapestry
> >>> do-not-let-me-unload setting which I haven't encountered in my tapestry
> >>> devving.
> >>>
> >>> I'll post further once there's a bit more work done to it (or if there
> >>> are
> >>> still the problems you mentioned)
> >>>
> >>> Thanks for your feedback,
> >>> Cheers
> >>> Chris
> >>>
> >>>
> >>>
> >>> On 03/07/2010, at 8:22 PM, Robin Komiwes wrote:
> >>>
> >>> Hi!
> >>>
> >>>>
> >>>> Good news! I don't see any workaround to use another XML parser than
> >>>> woodstox. Does it means that there no compatibility issue anymore? It
> >>>> would
> >>>> be a very good point in order to resolve all issues related to HTML5
> and
> >>>> entities resolutions problems.
> >>>>
> >>>> On Sat, Jul 3, 2010 at 3:09 AM, Chris Mylonas <ch...@mrvoip.com.au>
> >>>> wrote:
> >>>>
> >>>> Hi,
> >>>>
> >>>>>
> >>>>> I'm pretty new around here but thought I would let you know that this
> >>>>> post
> >>>>> by Christophe Dufour works.
> >>>>> http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine
> >>>>>
> >>>>> You can check it out here: http://tapgae1.appspot.com/
> >>>>> It's pretty much the default tapestry5 maven archetype with a link to
> >>>>> Christophe's instructions.
> >>>>>
> >>>>> I googled for tapestry appengine and there didn't appear to be any
> >>>>> recent
> >>>>> success stories so thought I'd let you all know.
> >>>>>
> >>>>> Cheers
> >>>>> Chris
> >>>>>
> >>>>>
> >>>>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >>> For additional commands, e-mail: users-help@tapestry.apache.org
> >>>
> >>>
> >>>
> >>
> >> --
> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> >> Tapestry PMC / Tacos developer
> >> Open Source / JEE Consulting
> >>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
> >
>
>
> --
> Dmitry Gusev
>
> AnjLab Team
> http://anjlab.com
>

Re: Tapestry 5 + Google App Engine - initial success!

Posted by Dmitry Gusev <dm...@gmail.com>.
Its discourged to use cron jobs (as well as task queues) to keep application
worm on GAE.
Moreover this will not work anyway if your application have intensive
traffic. You will still have this issue.

Currently GAE team is working feature to reserve application instances and
this will cost money.
On Sat, Jul 3, 2010 at 17:20, Chris Mylonas <ch...@mrvoip.com.au> wrote:

> OK - that seems to work.
> GAE has a cron facility configurable with a cron.xml file in the WEB-INF
> directory.
> I've set it to request the application root "/" every 2 minutes - should
> keep things crisp.
>
> Have a good weekend,
> Cheers
> Chris
>
>
> On 03/07/2010, at 10:58 PM, Andreas Andreou wrote:
>
> i think someone in this list has mentioned setting up a cron job to wget
>> the app so that the unloading never occurs.
>>
>> On Sat, Jul 3, 2010 at 15:19, Chris Mylonas <ch...@mrvoip.com.au> wrote:
>>
>> Howdy,
>>>
>>> Well I haven't hit any snags yet.
>>>
>>> I'll try to put a few of the jumpstart examples on there to see how they
>>> go.  Sometime in the next week - ajaxformloop and some crud with GAE's
>>> datastore (using JDO over JPA as it seems to be the preferred way seeing
>>> as
>>> it's not a relational db).
>>>
>>> The only problem I've got at the moment is that whenever the app hasn't
>>> been called for a while there is this message in the appengine admin
>>> logs:
>>>
>>> This request caused a new process to be started for your application, and
>>> thus caused your application code to be loaded for the first time. This
>>> request may thus take longer and use more CPU than a typical request for
>>> your application.
>>>
>>> And the request takes 8000ms - 10000ms to process - once the app is
>>> loaded
>>> it has fast responses as one would expect.  At this stage I'm not sure
>>> whether this is something within GAE that can be configured or some
>>> tapestry
>>> do-not-let-me-unload setting which I haven't encountered in my tapestry
>>> devving.
>>>
>>> I'll post further once there's a bit more work done to it (or if there
>>> are
>>> still the problems you mentioned)
>>>
>>> Thanks for your feedback,
>>> Cheers
>>> Chris
>>>
>>>
>>>
>>> On 03/07/2010, at 8:22 PM, Robin Komiwes wrote:
>>>
>>> Hi!
>>>
>>>>
>>>> Good news! I don't see any workaround to use another XML parser than
>>>> woodstox. Does it means that there no compatibility issue anymore? It
>>>> would
>>>> be a very good point in order to resolve all issues related to HTML5 and
>>>> entities resolutions problems.
>>>>
>>>> On Sat, Jul 3, 2010 at 3:09 AM, Chris Mylonas <ch...@mrvoip.com.au>
>>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>>>
>>>>> I'm pretty new around here but thought I would let you know that this
>>>>> post
>>>>> by Christophe Dufour works.
>>>>> http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine
>>>>>
>>>>> You can check it out here: http://tapgae1.appspot.com/
>>>>> It's pretty much the default tapestry5 maven archetype with a link to
>>>>> Christophe's instructions.
>>>>>
>>>>> I googled for tapestry appengine and there didn't appear to be any
>>>>> recent
>>>>> success stories so thought I'd let you all know.
>>>>>
>>>>> Cheers
>>>>> Chris
>>>>>
>>>>>
>>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>>
>>
>> --
>> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> Tapestry PMC / Tacos developer
>> Open Source / JEE Consulting
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Dmitry Gusev

AnjLab Team
http://anjlab.com

Re: Tapestry 5 + Google App Engine - initial success!

Posted by Chris Mylonas <ch...@mrvoip.com.au>.
OK - that seems to work.
GAE has a cron facility configurable with a cron.xml file in the WEB- 
INF directory.
I've set it to request the application root "/" every 2 minutes -  
should keep things crisp.

Have a good weekend,
Cheers
Chris

On 03/07/2010, at 10:58 PM, Andreas Andreou wrote:

> i think someone in this list has mentioned setting up a cron job to  
> wget
> the app so that the unloading never occurs.
>
> On Sat, Jul 3, 2010 at 15:19, Chris Mylonas <ch...@mrvoip.com.au>  
> wrote:
>
>> Howdy,
>>
>> Well I haven't hit any snags yet.
>>
>> I'll try to put a few of the jumpstart examples on there to see how  
>> they
>> go.  Sometime in the next week - ajaxformloop and some crud with  
>> GAE's
>> datastore (using JDO over JPA as it seems to be the preferred way  
>> seeing as
>> it's not a relational db).
>>
>> The only problem I've got at the moment is that whenever the app  
>> hasn't
>> been called for a while there is this message in the appengine  
>> admin logs:
>>
>> This request caused a new process to be started for your  
>> application, and
>> thus caused your application code to be loaded for the first time.  
>> This
>> request may thus take longer and use more CPU than a typical  
>> request for
>> your application.
>>
>> And the request takes 8000ms - 10000ms to process - once the app is  
>> loaded
>> it has fast responses as one would expect.  At this stage I'm not  
>> sure
>> whether this is something within GAE that can be configured or some  
>> tapestry
>> do-not-let-me-unload setting which I haven't encountered in my  
>> tapestry
>> devving.
>>
>> I'll post further once there's a bit more work done to it (or if  
>> there are
>> still the problems you mentioned)
>>
>> Thanks for your feedback,
>> Cheers
>> Chris
>>
>>
>>
>> On 03/07/2010, at 8:22 PM, Robin Komiwes wrote:
>>
>> Hi!
>>>
>>> Good news! I don't see any workaround to use another XML parser than
>>> woodstox. Does it means that there no compatibility issue anymore?  
>>> It
>>> would
>>> be a very good point in order to resolve all issues related to  
>>> HTML5 and
>>> entities resolutions problems.
>>>
>>> On Sat, Jul 3, 2010 at 3:09 AM, Chris Mylonas <ch...@mrvoip.com.au>
>>> wrote:
>>>
>>> Hi,
>>>>
>>>> I'm pretty new around here but thought I would let you know that  
>>>> this
>>>> post
>>>> by Christophe Dufour works.
>>>> http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine
>>>>
>>>> You can check it out here: http://tapgae1.appspot.com/
>>>> It's pretty much the default tapestry5 maven archetype with a  
>>>> link to
>>>> Christophe's instructions.
>>>>
>>>> I googled for tapestry appengine and there didn't appear to be  
>>>> any recent
>>>> success stories so thought I'd let you all know.
>>>>
>>>> Cheers
>>>> Chris
>>>>
>>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
>
> -- 
> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> Tapestry PMC / Tacos developer
> Open Source / JEE Consulting


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Tapestry 5 + Google App Engine - initial success!

Posted by Andreas Andreou <an...@di.uoa.gr>.
i think someone in this list has mentioned setting up a cron job to wget
the app so that the unloading never occurs.

On Sat, Jul 3, 2010 at 15:19, Chris Mylonas <ch...@mrvoip.com.au> wrote:

> Howdy,
>
> Well I haven't hit any snags yet.
>
> I'll try to put a few of the jumpstart examples on there to see how they
> go.  Sometime in the next week - ajaxformloop and some crud with GAE's
> datastore (using JDO over JPA as it seems to be the preferred way seeing as
> it's not a relational db).
>
> The only problem I've got at the moment is that whenever the app hasn't
> been called for a while there is this message in the appengine admin logs:
>
> This request caused a new process to be started for your application, and
> thus caused your application code to be loaded for the first time. This
> request may thus take longer and use more CPU than a typical request for
> your application.
>
> And the request takes 8000ms - 10000ms to process - once the app is loaded
> it has fast responses as one would expect.  At this stage I'm not sure
> whether this is something within GAE that can be configured or some tapestry
> do-not-let-me-unload setting which I haven't encountered in my tapestry
> devving.
>
> I'll post further once there's a bit more work done to it (or if there are
> still the problems you mentioned)
>
> Thanks for your feedback,
> Cheers
> Chris
>
>
>
> On 03/07/2010, at 8:22 PM, Robin Komiwes wrote:
>
>  Hi!
>>
>> Good news! I don't see any workaround to use another XML parser than
>> woodstox. Does it means that there no compatibility issue anymore? It
>> would
>> be a very good point in order to resolve all issues related to HTML5 and
>> entities resolutions problems.
>>
>> On Sat, Jul 3, 2010 at 3:09 AM, Chris Mylonas <ch...@mrvoip.com.au>
>> wrote:
>>
>>  Hi,
>>>
>>> I'm pretty new around here but thought I would let you know that this
>>> post
>>> by Christophe Dufour works.
>>> http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine
>>>
>>> You can check it out here: http://tapgae1.appspot.com/
>>> It's pretty much the default tapestry5 maven archetype with a link to
>>> Christophe's instructions.
>>>
>>> I googled for tapestry appengine and there didn't appear to be any recent
>>> success stories so thought I'd let you all know.
>>>
>>> Cheers
>>> Chris
>>>
>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
Tapestry PMC / Tacos developer
Open Source / JEE Consulting

Re: Tapestry 5 + Google App Engine - initial success!

Posted by Chris Mylonas <ch...@mrvoip.com.au>.
Howdy,

Well I haven't hit any snags yet.

I'll try to put a few of the jumpstart examples on there to see how  
they go.  Sometime in the next week - ajaxformloop and some crud with  
GAE's datastore (using JDO over JPA as it seems to be the preferred  
way seeing as it's not a relational db).

The only problem I've got at the moment is that whenever the app  
hasn't been called for a while there is this message in the appengine  
admin logs:

This request caused a new process to be started for your application,  
and thus caused your application code to be loaded for the first time.  
This request may thus take longer and use more CPU than a typical  
request for your application.

And the request takes 8000ms - 10000ms to process - once the app is  
loaded it has fast responses as one would expect.  At this stage I'm  
not sure whether this is something within GAE that can be configured  
or some tapestry do-not-let-me-unload setting which I haven't  
encountered in my tapestry devving.

I'll post further once there's a bit more work done to it (or if there  
are still the problems you mentioned)

Thanks for your feedback,
Cheers
Chris


On 03/07/2010, at 8:22 PM, Robin Komiwes wrote:

> Hi!
>
> Good news! I don't see any workaround to use another XML parser than
> woodstox. Does it means that there no compatibility issue anymore?  
> It would
> be a very good point in order to resolve all issues related to HTML5  
> and
> entities resolutions problems.
>
> On Sat, Jul 3, 2010 at 3:09 AM, Chris Mylonas <ch...@mrvoip.com.au>  
> wrote:
>
>> Hi,
>>
>> I'm pretty new around here but thought I would let you know that  
>> this post
>> by Christophe Dufour works.
>> http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine
>>
>> You can check it out here: http://tapgae1.appspot.com/
>> It's pretty much the default tapestry5 maven archetype with a link to
>> Christophe's instructions.
>>
>> I googled for tapestry appengine and there didn't appear to be any  
>> recent
>> success stories so thought I'd let you all know.
>>
>> Cheers
>> Chris
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Tapestry 5 + Google App Engine - initial success!

Posted by Robin Komiwes <ro...@gmail.com>.
Hi!

Good news! I don't see any workaround to use another XML parser than
woodstox. Does it means that there no compatibility issue anymore? It would
be a very good point in order to resolve all issues related to HTML5 and
entities resolutions problems.

On Sat, Jul 3, 2010 at 3:09 AM, Chris Mylonas <ch...@mrvoip.com.au> wrote:

> Hi,
>
> I'm pretty new around here but thought I would let you know that this post
> by Christophe Dufour works.
> http://blog.dooapp.com/running-tapestry5-maven-on-google-app-engine
>
> You can check it out here: http://tapgae1.appspot.com/
> It's pretty much the default tapestry5 maven archetype with a link to
> Christophe's instructions.
>
> I googled for tapestry appengine and there didn't appear to be any recent
> success stories so thought I'd let you all know.
>
> Cheers
> Chris
>