Hi Craig, See below... On 30 October 2012 16:15, Craig Chant <cr...@homeloanpartnership.com> wrote:
> Hi Hugh, > > > > I assume this is for Apache and I’m running IIS7, so I guess it isn’t > compatible? > Although Japanese is a 'somewhat' family language, I can't read most of the text in this: http://d.hatena.ne.jp/xaicron/ but it looks like an install of the 'mother' non-Apache module to Windows with Strawberry Perl. Obviously your mileage may vary, but if you get anywhere, you'd be something of a pioneer too, tell everyone. > > > “It looks like I've been having performance problems because millions of > rows get blessed into objects, not sure of this but it looks like a DBIC > thing at the moment.” > > > > That’s not good, and is part of the issue of ORM (so I’ve read), I’m not > as old as you, but I’m still old school, get only the columns and rows you > need when you need them, well that’s my take on it and it seems to work for > me. > Depends, DBIC is often really 'natural' and less hand-coding but, like everything, I think its limits need to be understood. For high performance on big datasets, hand-rolled seems intuitively better in some cases. > > > Regards, > > > > Craig. > > > > *From:* Hugh Barnard [mailto:hugh.barn...@gmail.com] > *Sent:* 30 October 2012 15:47 > *To:* The elegant MVC web framework > > *Subject:* Re: [Catalyst] Global 'helper' methods > > > > Hi > > On measurement in general, I'd recommend: Devel::NYTProf::Apache ; there's > a write up here: > http://www.slideshare.net/bobcatfish/profiling-with-develnytprof > > I'm dealing with a largish Catalyst/mod_perl thing at the moment and it's > been tremendously helpful. One tip is that it is very picky about closing > the files that it needs to compile the profiles, I write these into /tmp > and then crunch them with the command line tools. > > Incidentally, I am 62 and therefore pretty old-skool and not mad for > ORM-everywhere. It looks like I've been having performance problems because > millions of rows get blessed into objects, not sure of this but it looks > like a DBIC thing at the moment. Currently I've 'cursor'-ed them: > my $cursor = $entries->cursor; > while ( my @row_values = $cursor->next ) { > and that seems to give some improvements in that area... > > Best regards Hugh > > On 30 October 2012 15:24, Lukas Thiemeier <spamcatc...@thiemeier.net> > wrote: > > Hm... how to measure the overhead of a module? > > There is a XS version of the module which is used if you have a C > compiler. I don't know the exact overhead, but I know that it is fast. > > I have no experience with the pure perl version of that module. > > If all you have to do with the dates is the simple string transformation > you are right. As I said before: I recommend to use DT if you are > working with dates a lot. Doing math on dates and times is annoying, > because of leap years, epochs, timezones and so on. If you need this: > Using DateTime is recommended. If not: Its not :) > > If you are ONLY using pure perl modules: > You can include all required modules in your distribution. It should run > on any perl installation, even in a shared host environment. > > App::FatPacker helps you doing this... > > But this doesn't work as soon as you use XS modules. > > > On 10/30/2012 04:03 PM, Craig Chant wrote: > > Thanks Lukas, > > > > I appreciate there is DateTime , though I have so much legacy code that > uses my helper class re-writing everything will be a mammoth task. > > > > I hand rolled a lot when I first started out with Perl, didn't know much > about CPAN or PPM, and couldn't load any modules that weren't part of the > core install on the original 'shared' hosting I was using. > > > > Plus I always felt loading an entire module to re-arrange a tiny string > seems a bit OTT? > > > > Dunno, what's the overhead of DateTime? > > > > Craig. > > > > -----Original Message----- > > From: Lukas Thiemeier [mailto:spamcatc...@thiemeier.net] > > Sent: 30 October 2012 14:52 > > To: catalyst@lists.scsys.co.uk > > Subject: Re: [Catalyst] Global 'helper' methods > > > > You can also define your constants in "YourApp/Constants.pl", and "use" > > YourApp::Constants wherever you need them. > > > > YourApp/Constants.pm: > > use constant { FOO => 1 }; > > 1; > > > > Controller.pm: > > > > use YourApp::Constants; > > > > # and in some method > > ... > > my $global_foo = FOO; > > > > There might be a better way, but this works... > > > > For handling dates, I recommend "DateTime", available on cpan: > > > > Another reason to use DBIC: > > DBIx::Class::Inflatecolumn::DateTime automatically transforms dates > stored in a database into a DateTime object, which can be used like this: > > > > my $uk_string = $datetime->dmy('/'); > > my $us_string = $datetime->ymd('-'); > > > > But DateTime is not related to DBIC, DBIC just makes using it easy. > > > > Use it if you have to work with dates a lot. It has lots of methods for > outputting dates, times or both in different formats, and it allows > datetime-math... > > > > > > On 10/30/2012 03:39 PM, Craig Chant wrote: > >> Well I opted for putting my globals (methods and constants) in > >> MyApp.pm > >> > >> It's working grand with $c->myMethod or $c->MY_CONSTANT > >> > >> I use to have them working as a bareword within my application , but > $c->MY_CONSTANT is just as easy! > >> > >> Many thanks for all the input and help, it really is appreciated. > >> > >> -----Original Message----- > >> From: Lukas Thiemeier [mailto:spamcatc...@thiemeier.net] > >> Sent: 30 October 2012 13:56 > >> To: catalyst@lists.scsys.co.uk > >> Subject: Re: [Catalyst] Global 'helper' methods > >> > >> Hi Craig, > >> > >> Writing helpers in your main App.pm and using roles is not either-or. > >> > >> Roles are one possibility to modify your classes in a reusable way. > >> > >> If your helpers are really global, which means that they are used by > all, or almost all your controllers, I would put them into your main > application class. > >> > >> If you have more than one application which make use of the same > >> helpers: Put them into a role: > >> > >> YourHelperRole.pm: > >> > >> package YourHelperRole; > >> use Moose::Role; > >> > >> has "some_attribute" => ( ... ); # if you need attributes > >> > >> sub helpermethod1{ > >> my ($self, $other, $args) = @_; > >> do_something(); > >> } > >> > >> sub helpermethod2{ > >> my ($self, $other, $args) = @_; > >> do_something_different(); > >> } > >> > >> no Moose::Role; # or use namespace::autoclean or MooseX::MarkAsMethod > >> 1; > >> > >> App.pm: > >> > >> use Catalyst qw( ... ); > >> extends "Catalyst"; > >> with qw/YourHelperRole/; > >> > >> ... > >> > >> In my opinion, extending your main App.pm with roles is only useful if > you need the same helpers in different locations, too. > >> If you only need them for that single application, avoid the overhead > related to using roles. > >> > >> If you have helpers which are only needed by some controllers, create a > role for your controllers. You can not only implement helpers in you roles, > you can also create method-modifiers, which change the way your methods > behave. > >> > >> Here is an example, which writes sth to the log, after the "delete" > >> method was called: > >> > >> YourLogRole.pm: > >> > >> package YourLogRole; > >> > >> use Moose::Role; > >> requires qw/delete/; #die if the consuming class has no "delete" > >> > >> after "delete" => sub{ > >> my ($self, $c) = @_; > >> $c->log->debug("DELETE called"); > >> }; > >> > >> no Moose::Role; > >> 1; > >> > >> Controller1.pm: (has the helpers, but no logging) > >> > >> package Controller1; > >> use Moose; > >> extends "Catalyst::Controller"; > >> with qw/ > >> YourHelperRole > >> /; > >> > >> sub someaction :Local { > >> my ($self, $c) =@_; > >> $self->helpermethod1(); > >> } > >> > >> ... > >> > >> Controller2.pm: (has helpers AND logging) > >> > >> package Controller2; > >> use Moose; > >> extends "Catalyst::Controller"; > >> with qw/ > >> YourLogRole > >> YourHelperRole > >> /; > >> > >> sub delete :Local :Args(1) { ... } > >> > >> Controller3.pm (has logging, but no helpers) > >> > >> package Controller3; > >> use Moose; > >> extends "Catalyst::Controller"; > >> with qw/ > >> YourLogRole > >> /; > >> > >> sub delete :Local :Args(1) { ... } > >> > >> Roles are very powerful tools. I use them a lot. > >> Read the Moose docs for more information. > >> > >> If you don't want to learn Moose, roles and so on now, just remember: > >> > >> 1. write sth in a role > >> 2. consume the role in a moose class, using "with" > >> 3. your roles methods and attributes will be available in the > >> consuming class > >> > >> Lukas > >> > >> On 10/30/2012 02:03 PM, Craig Chant wrote: > >>> Hi, > >>> > >>> > >>> > >>> Please could you advise the best way of having a global 'helper' > >>> class that has all commonly used methods in it accessible for any > >>> part of the catalyst app. > >>> > >>> > >>> > >>> I found this thread > >>> http://stackoverflow.com/questions/11941836/catalyst-global-subroutin > >>> e > >>> s > >>> > >>> > >>> > >>> With one indicating it's ok to put them in the main MyApp.pm and > >>> another saying to use Moose & Roles. > >>> > >>> > >>> > >>> What is considered the correct way and could you provide an example > >>> of how I create this helper class and bolt it to the Catalyst > application. > >>> > >>> > >>> > >>> Many thanks, > >>> > >>> > >>> > >>> */Craig Chant/* > >>> > >>> I.T. Manager > >>> > >>> Description: cid:image001.png@01CD5F4A.17E848D0 > >>> > >>> Main Line 01903 602664 > >>> > >>> Direct Line 01903 227753 > >>> > >>> Visit our website http://www.homeloanpartnership.com > >>> > >>> *HomeLoan Partnership have been named the Best Mortgage Network, > >>> 2012, at the myintroducer.com Industry Awards* > >>> > >>> > >>> > >>> This Email and any attachments contain confidential information and > >>> is intended solely for the individual to whom it is addressed. If > >>> this Email has been misdirected, please notify the author as soon as > >>> possible. If you are not the intended recipient you must not > >>> disclose, distribute, copy, print or rely on any of the information > >>> contained, and all copies must be deleted immediately. Whilst we take > >>> reasonable steps to try to identify any software viruses, any > >>> attachments to this e-mail may nevertheless contain viruses, which > >>> our anti-virus software has failed to identify. You should therefore > >>> carry out your own anti-virus checks before opening any documents. > >>> HomeLoan Partnership will not accept any liability for damage caused > >>> by computer viruses emanating from any attachment or other document > supplied with this e-mail. > >>> HomeLoan Partnership reserves the right to monitor and archive all > >>> e-mail communications through its network. No representative or > >>> employee of HomeLoan Partnership has the authority to enter into any > >>> contract on behalf of HomeLoan Partnership by email. HomeLoan > >>> Partnership is a trading name of H L Partnership Limited, registered > >>> in England and Wales with Registration Number 5011722. Registered > >>> office: 26-34 Old Street, London, EC1V 9QQ. H L Partnership Limited > >>> is authorised and regulated by the Financial Services Authority. > >>> > >>> > >>> _______________________________________________ > >>> List: Catalyst@lists.scsys.co.uk > >>> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > >>> Searchable archive: > >>> http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > >>> Dev site: http://dev.catalyst.perl.org/ > >> > >> > >> _______________________________________________ > >> List: Catalyst@lists.scsys.co.uk > >> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > >> Searchable archive: > >> http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > >> Dev site: http://dev.catalyst.perl.org/ This Email and any attachments > >> contain confidential information and is intended solely for the > >> individual to whom it is addressed. If this Email has been > >> misdirected, please notify the author as soon as possible. If you are > >> not the intended recipient you must not disclose, distribute, copy, > >> print or rely on any of the information contained, and all copies must > >> be deleted immediately. Whilst we take reasonable steps to try to > >> identify any software viruses, any attachments to this e-mail may > >> nevertheless contain viruses, which our anti-virus software has failed > >> to identify. You should therefore carry out your own anti-virus checks > >> before opening any documents. HomeLoan Partnership will not accept any > >> liability for damage caused by computer viruses emanating from any > >> attachment or other document supplied with this e-mail. HomeLoan > >> Partnership reserves the right to monitor and archive all e-mail > >> communications through its network. No representative or employee of > >> HomeLoan Partn > > ership ha > > s the authority to enter into any contract on behalf of HomeLoan > Partnership by email. HomeLoan Partnership is a trading name of H L > Partnership Limited, registered in England and Wales with Registration > Number 5011722. Registered office: 26-34 Old Street, London, EC1V 9QQ. H L > Partnership Limited is authorised and regulated by the Financial Services > Authority. > >> > >> _______________________________________________ > >> List: Catalyst@lists.scsys.co.uk > >> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > >> Searchable archive: > >> http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > >> Dev site: http://dev.catalyst.perl.org/ > > > > > > _______________________________________________ > > List: Catalyst@lists.scsys.co.uk > > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > > Searchable archive: > http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > > Dev site: http://dev.catalyst.perl.org/ > > > This Email and any attachments contain confidential information and is > intended solely for the individual to whom it is addressed. If this Email > has been misdirected, please notify the author as soon as possible. If you > are not the intended recipient you must not disclose, distribute, copy, > print or rely on any of the information contained, and all copies must be > deleted immediately. Whilst we take reasonable steps to try to identify any > software viruses, any attachments to this e-mail may nevertheless contain > viruses, which our anti-virus software has failed to identify. You should > therefore carry out your own anti-virus checks before opening any > documents. HomeLoan Partnership will not accept any liability for damage > caused by computer viruses emanating from any attachment or other document > supplied with this e-mail. HomeLoan Partnership reserves the right to > monitor and archive all e-mail communications through its network. No > representative or employee of HomeLoan Partn > > ership ha > s the authority to enter into any contract on behalf of HomeLoan > Partnership by email. HomeLoan Partnership is a trading name of H L > Partnership Limited, registered in England and Wales with Registration > Number 5011722. Registered office: 26-34 Old Street, London, EC1V 9QQ. H L > Partnership Limited is authorised and regulated by the Financial Services > Authority. > > > > _______________________________________________ > > List: Catalyst@lists.scsys.co.uk > > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > > Searchable archive: > http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > > Dev site: http://dev.catalyst.perl.org/ > > > _______________________________________________ > List: Catalyst@lists.scsys.co.uk > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > Searchable archive: > http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > Dev site: http://dev.catalyst.perl.org/ > > > > > -- > http://www.hughbarnard.org > http://www.twitter.com/hughbarnard > http://www.big-wave-heuristics.com/ > This Email and any attachments contain confidential information and is > intended solely for the individual to whom it is addressed. If this Email > has been misdirected, please notify the author as soon as possible. If you > are not the intended recipient you must not disclose, distribute, copy, > print or rely on any of the information contained, and all copies must be > deleted immediately. Whilst we take reasonable steps to try to identify any > software viruses, any attachments to this e-mail may nevertheless contain > viruses, which our anti-virus software has failed to identify. You should > therefore carry out your own anti-virus checks before opening any > documents. HomeLoan Partnership will not accept any liability for damage > caused by computer viruses emanating from any attachment or other document > supplied with this e-mail. HomeLoan Partnership reserves the right to > monitor and archive all e-mail communications through its network. No > representative or employee of HomeLoan Partnership has the authority to > enter into any contract on behalf of HomeLoan Partnership by email. > HomeLoan Partnership is a trading name of H L Partnership Limited, > registered in England and Wales with Registration Number 5011722. > Registered office: 26-34 Old Street, London, EC1V 9QQ. H L Partnership > Limited is authorised and regulated by the Financial Services Authority. > > _______________________________________________ > List: Catalyst@lists.scsys.co.uk > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > Searchable archive: > http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > Dev site: http://dev.catalyst.perl.org/ > > -- http://www.hughbarnard.org http://www.twitter.com/hughbarnard http://www.big-wave-heuristics.com/ <http://www.hackney-environment-network.org.uk/>
_______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/