Assigning a user defined function at runtime

I recently wrote my first XS module, and found myself wanting to dynamically load it in the parent module if possible. The next problem was what if the user wants to change back to the pure Perl version? And then, what if the user wants to use Other::Module's similar_function?

PtPW 2012 recorded in Video

This is not that interesting for most people that can not understand Portuguese. Nevertheless, the Portuguese Perl Workshop was recorded in Video, and we managed to upload the talks and a Moose tutorial to youtube. Check the talk list and links to the videos in out perl.pt blog.

Net::Amazon::EC2 0.22 released; supports AWS v2 signatures

I just released 0.22 of Net::Amazon::EC2 to CPAN which resolves RT #80407 about EC2 requiring version 2 signatures.

Until today, this module had been using v1 signatures. If you use this module and start getting "version mismatch errors" from EC2 calls, you will need to update to this version.

Please be aware that URI::Escape and Digest::SHA were added to the module dependencies to implement AWS v2 signatures.

WxTut is complete, whats next from you?

In the next Perl Magazine will come the 12th and last part of my big WxPerl tutorial. To me its almost like my teenage child is now out of the house (brain). You might complain: "but its German, I can't read that". Don't worry the resulting book will be in English. But this post is really about something different, but related, in fact about coming English articles: written by You.

Alien::Base Perl Foundation Grant Report Oct

This month has been a good one for Alien::Base, and I’m happy to report that I believe that the grant is winding up. We saw a beta release and had a project night during which we hacked on a few issues, but also I was keenly observing people assessment of usability, which I consider key to the success of the project.

I think I have only a few issues to work out before I declare success:

  1. Fix a bug which has crept up on OpenBSD - I am almost certain this is related to my implementation of a parser for pkgconfig files
  2. Investigate a solaris bug reporting from the extended test chain (i.e. Alien::DontPanic and Alien::Ford::Prefect)
  3. Polish up my Alien::GSL distribution and release to CPAN as an example. BTW this was my project on project night, though with all my activity I didn’t get a whole lot done (visibly)

I think that it is conceivable that these last issues can be addressed this month.

"Essential Modern Perl" Track at Austrian Perl Workshop

(crossposted from http://domm.plix.at/perl/2012_10_essential_modern_perl.html)

To get more new participants to this years Austrian Perlworkshop we (Vienna.pm) came up with the following plan: On Saturday, 17th November, we will have one track of talks called Essential Modern Perl. We came up with ~15 topics that should introduce newcomers and old timers to the wonderful world of CPAN and the various toolkits and modules that lead to the Perl renaissance labeled Modern Perl.

We are still looking for speakers for some of the topics, so if you're near Vienna or need an excuse to visit us, just grab one of the currently un-assigned talks! Also, if you're a member of one of the core groups working on the listed modules etc and have a good presentation about the topic at hand, please let us know where we can find it (if we're allowed to reuse the slides...). We're looking for ~20 minutes introduction talks targeted at people that know programming, but do not necessarily know a lot of Perl.

Progress::Any

I usually implement "progress bar" in a command-line application via logging. For example:

use Log::Any::App qw($log);
$log->info("Starting ...");
for my $i (0..@items-1) {
    my $item = $items[$i];
    $log->infof("(%d/%d) Processing item %s ...", $i+1, ~~@items, $item);
    do_stuff($item);
}
$log->info("Finished");

Log::Any::App already gives me an easy way to output those log lines to screen and/or file. I can turn on the log by giving VERBOSE=1 or --verbose to my program. The log lines are printed with a timestamp, so I can guess how long a run will last.

Domain-based session affinity/persistency

So, here is another pretty cool feature I've implemented. It might interest you if you use multiple domains with reverse proxies.

I was recently asked to add to Perlbal::Plugin::SessionAffinity the ability to allow consistent session affinity per domain. Hell, it's a paid feature so I took a look at it.

The idea is that if you have a lot of domains and you use Perlbal::Plugin::SessionAffinity in your Perlbal reverse proxy, you might get a fragmented cache because each user will reach a different (yet consistent) backend, regardless of the domain they requested. When someone has more than 300 domains behind the same reverse proxies (and let me tell you, some people actually do), this fragmented cache reduces efficiency.

Perl 5 Porters Weekly: October 7-October 13, 2012

Welcome to Perl 5 Porters Weekly, a summary of the email traffic of the perl5-porters email list. Sorry this week's summary was delayed, I just ran out of tuits this past weekend. Let's get right to the topics this week:

  • Perl 5.14.3 is now available
  • maint-5.12, maint-5.14, and CVE-2012-5195
  • perl 5.16.2 cometh
  • Stupid COW benchmarks
  • aasign'ing hash with odd number of elements and duplicates
  • Compile option to disable taint mode: speedup
  • Making PerlIOStdio_invalidate_fileno() less invasive on FreeBSD

Tapper release 4.1 "Cagney & Lacey"

Lacey: Looks like a young Omar Sharif.
Cagney: He's got crooked teeth.
Lacey: You know, Christine, you're very critical. That's your trouble with men. You want them all to be perfect.
Cagney: No, I just have a thing about teeth.

-- Cagney & Lacey, "Let Them Eat Pretzels" (1983)

Tapper release 4.1 codename "Cagney & Lacey"

We just finished a new release of "Tapper", our all-embracing test infrastructure, used for Linux and virtualization testing in the OSRC and the infrastructure behind Perl::Formance.

Changelog for this release:

Databases

  • refactoring to also work with PostgreSQL

Automation

  • scheduler 10x speedup
  • host blacklisting per queue
  • beginning Cobbler support

Tools

  • CLI command harmonization

Documentation

  • migrated to POD for maintainability
  • complex precondition and testplan examples

Misc

  • overall cleanup to sync with upstream technologies
    • autotest 0.14.x
    • Perl 5.16
    • Catalyst 5.9

Credits

Kudos as usual to the CPANTESTERS infrastructure which allows us to test over a wide variety of platforms.

Kind regards,
renormalist

Is there a list of CERT advisories keyed to fixed Perl versions?

Is there a list of CERT advisories for Perl and the corresponding version in which p5p fixed them? I know that they have responded to almost all of the serious advisories with the patched versions for even the "unmaintained" versions.

I was wondering about that last week as I was reviewing a code base that runs on v5.8, a common situation for companies with big Perl applications that have been around for awhile. I'd like to have some chart that shows which vulnerabilities you have based on your Perl version.

I figure someone might have this somewhere, so I haven't done the work to make the list myself.

Curiously, I found that CERT has Perl programming standards. Now I'd like a Perl::Critic plugin that checks all the CERT things. I think that would be a good candidate for a TPF grant, actually.

Who's invented the day extender so I can get twice the time each day to do all the things I want? :)

Map of CPAN - The Movie

poster.pngIf you've visited the Map of CPAN more than once, you'll notice that it has changed quite significantly over time. Coloured namespace areas expand as new distributions are uploaded and this expansion pushes other namespaces around - producing a kind of continental drift.

I thought it might be interesting to assemble a stop-motion animation of these changes. The result is: Map of CPAN – The Movie.

As with the static map, the colours don't really have any meaning beyond grouping together modules that share a namespace. The colours have even less meaning in the animation since I've used a static namespace-to-colour mapping which doesn't change as the areas move.

If you look closely you'll see little dark blue squares flashing by. Each flash represents the upload of a new distribution (i.e.: not a new release of an existing distribution).

Using MooseX::Types to inflate config values

For a large application, configuration files become a necessity. They help flexible code be used in multiple instances across multiple modules. But they are, for the most part, only data structures, which can be a problem if the configured object is expecting another configured object.

YAPC::Europe 2013 in Kiev, week minus 43. Hotels

Last week we talked about air tickets, thus let's talk about hotels now.

Basically, there are lots of hotels in Kiev with a wide price range. It's worth to spend some time to find the most appropriate variant for your needs. There are hotels and hostels in Kiev, or you may rent an apartment.

Our previous events in Kiev show that it's safe and reliable to rent a flat in Kiev, although you should know that before the EURO-2012 there appeared a number of fake or unreasonably expensive places. We hope it is now completely gone, but please be sure to double check if you are going to rent a flat with no reviews, contacts etc. As there are no more global EURO football events in Kiev in 2013, you may expect affordable prices for the hotels of all types.

Strawberry Perl 5.14.3.1 released

Strawberry Perl 5.14.3.1 is available at http://strawberryperl.com
(all editions: MSI, ZIP, PortableZIP for both: 32/64bit MS Windows)

More details in Release Notes:
http://strawberryperl.com/release-notes/5.14.3.1-32bit.html
http://strawberryperl.com/release-notes/5.14.3.1-64bit.html

A WebSocket Mojolicious/DBI Example

Building on my (second) example from my recent post A Simple Mojolicious/DBI Example, I thought I would take it just a little bit futher. One of my favorite features of Mojolicious is that it comes with WebSockets out of the box! In this example I show how you can take the example script and allow it to run without refreshing the window.

Configuring the Ruby Slippers for HTML

[ This is cross-posted from the new home of the Ocean of Awareness blog. ]

This post is part of a series describing Marpa::R2::HTML, a configurable HTML parser. The last two posts described how to change the context and contents of the HTML elements, both new and existing. This post describes how to configure optional start tags: how to change which start tags are optional, and how to specify the circumstances in which they will be supplied.

How the parser works

In the first posts in this series I went into some detail describing my Marpa-based approach to HTML parsing. Briefly, it combines a parse engine using a "wishful thinking" grammar with a Ruby Slippers lexer. The "wishful thinking" grammar expects all elements, without exception, to have both start and end tags. This overstrict grammar demands tags even in cases where the HTML 4.01 Strict DTD mandates that they be treated as optional.

German Perl-Workshop 2013 - Call for Papers

The 15th German Perlworkshop is taking place from March 13th to 15th 2013 in Berlin. The main workshop language is german, but we also welcome talks in english.
The venue is located in the center of Berlin-Kreuzberg at the Betahaus.

We are ready to accept talk proposals. Usually we have 20 and 40 minute talks and Lightning talks (5 minutes).

To submit a talk, go to http://act.yapc.eu/gpw2013/newtalk. The deadline is December 13th 2012. You can also contact us via gpw2013@froggs.de or at #dpw2013 on irc.perl.org.

We thank the $foo-Magazin for being our first sponsor.

Announcing TheGameCrafter::Client

I've been publishing simple web service wrappers on CPAN for other people's web services for years, but for some reason I never got around to writing a wrapper for my own web services until now. I'm pleased to announce TheGameCrafter::Client. It is just a light-weight wrapper around The Game Crafter's web service API so that you can get down to the business of writing your app and not worrying about how to make requests and serialize/deserialize data.

Testing for HTTP compression

How do I determine what the content-encoding of a web page is? A simple question which after doing a little searching did not turn up a simple answer. A stackoverflow question lead me to the solution but did not answer the question directly so here I am writing it up. We will need to install these modules first:


cpan Compress::Zlib LWP::UserAgent

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.