Skip to main content

Mangling CPAN with Plack::App::Proxy

·356 words·2 mins·
CPAN perl Plack proxy syntax highlighting
Table of Contents
❤️ It's great to see you here! I'm currently available on evenings and weekends for consulting and freelance work. Let's chat about how I can help you achieve your goals.

If you want syntax highlighting when viewing docs and source at search.cpan.org, you don’t actually need to use Greasemonkey. You can do it with Plack and be up and running in just a few minutes.

Last night I gave a lightning talk about this at Toronto.pm and I’ve just posted the slides

Basically, all you need to do is this:


git clone http://github.com/ioncache/Plack-Middleware-HTMLify.git git clone http://github.com/oalders/cpan-mangler.git

cpanm Plack Plack::App::Proxy Plack::Handler::Twiggy

cd cpan-mangler plackup -I../Plack-Middleware-HTMLify/lib
#

Once you’ve got that done, just point your browser at http://localhost:5000 and use search.cpan.org as you normally would. It’s the same site, only prettier. Now, it’s not perfect, but it’s a fun idea. Using the proxy setup you can bend the site to your will and add or remove features as you see fit.

cpan-pod-after.png
{.mt-image-center width=“600” height=“433” style=“text-align: center; display: block; margin: 0 auto 20px;”}{onclick=“window.open(‘ http://blogs.perl.org/users/olaf_alders/assets_c/2010/10/cpan-pod-after-319.html','popup','width=1119,height=809,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false”}

cpan-source-after.png
{.mt-image-center width=“600” height=“433” style=“text-align: center; display: block; margin: 0 auto 20px;”}{onclick=“window.open(‘ http://blogs.perl.org/users/olaf_alders/assets_c/2010/10/cpan-source-after-320.html','popup','width=1119,height=809,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false”}

On a related note, Plack::App::Proxy is a great tool for running multiple ad campaigns using the same web site. Imagine a client wants to set up X ad campaigns using Google ads. They want to use the same site, but they want each version of the site to have different phone numbers in the content as well as custom analytics code in the source. Using Plack::App::Proxy you don’t have to know (or care) how the underlying site works.

Just set up a X proxies running under X domain names. Each proxy points back at the original site, but substitutes the phone numbers and the analytics code with something unique to that proxy. Now your ad campaigns all point at what is essentially the same site, but you can track your traffic and your telephone contacts on a per-site basis. The dynamic parts of the site should continue to work as expected and you haven’t had to re-implement the original site.

Comments
#

Author: oylenshpeegul

Date: 10/02/2010 01:46:26 AM

Nice! I also had to add

  cpanm Plack::Handler::Twiggy

to get it to work.


Author: Olaf Alders

Date: 10/02/2010 02:34:29 AM

Thanks! I’ve added Plack::Handler::Twiggy to the article and the README now.


Related

iCPAN: Now Bigger, Faster and with Syntax Highlighting
·517 words·3 mins
CPAN iCPAN iPad iPhone iPod perl perldoc
iCPAN: CPAN on your iPhone
·1010 words·5 mins
CPAN iPhone Objective-C perl
HTTP::BrowserDetect for all of your UserAgent parsing needs
·954 words·5 mins
browser detection HTTP HTTP::BrowserDetect perl UserAgent