Safe.pm, originally released with perl 5.002, has been an experiment to bring compile-time safety to perl. It allows to compile a (usually user-provided) snippet of perl code and execute it, while forbidding a configurable list of operations -- for example, all perl built-ins that would require disk or operating system access. Moreover, Safe "chroots" perl's main:: namespace, so the real program's variables can't be overwritten by the ones created by the code executed from Safe.
It's pretty clear that Safe does not provide absolute safety. For once, even overly restricted, it can be abused to execute code that allocates gigabytes of RAM, or goes into an infinite loop. Also, Safe is forced to share a small list of variables and functions with the main program; $_ is an obvious example, being the default topic for a lot of built-ins; functions from the UNIVERSAL:: and utf8:: namespaces also come to mind.
Major release of Dancer finally out. You can read about it on Alexis' blog.
Basically this version provides a lot of improvements to Dancer:
Alexis Sukrieh worked hard on refactoring and optimizing.
David Precious did a lot of awesome work on documentation: we now have a cookbook and a deployment manual for various situations you might encounter. He also added a session backend with clean recursive dumps.
P****, the P*** I**, apparently has a blog. Unfortunately, it has a "please socially network me" crapstain (1) on every post, and requires Javascript and cookies to post. Color me not surprised.
I had the opportunity to help out the Perl::Staff at this years CeBIT. There was lots of interest in Perl, and we had lots of talks with people about what they are using Perl for, and how to bring the community and the companies using Perl closer together. This is quite a long post so I’ll put it behind the jump.
ExtUtils::CBuilder supports C code compilation mechanisms whenever a C compiler is available. That is true on most Mac OS X installations and other UNIX flavors like Linuxes. Unfortunately that is not so common for Windows, but Strawberry Perl includes a GCC-based C compiler and a standard libc library.
This means that if a C compiler is available it should be possible to compile a C program, and to compile a C library. And that is true. Unfortunately ExtUtils::CBuilder includes method to compile bundle libraries and not common dynamic libraries. If you do not know what that means, probably you are using a common Linux. For Mac OS X we have that difference: the libraries created by standard Perl modules are bundles and not full featured libraries.
In the world of Perl programming, nothing annoys me more than opening up a module and finding a bunch of POD interleaved with code. I've heard people argue in favor of this atrocious practice, saying that it allows the documentation for a function to be next to its implementation. But if I'm reading the code at all, it's only because I've already read the documentation and it wasn't good enough. That's not meant to be an insult -- maybe I was trying something weird that the author didn't intend, or trying to track down a bug that the author was not aware of.
I work with a small team (in a large company) to maintain a widely used and system critical test automation framework developed in-house. This framework was developed when perl 5.6 was considering cutting-edge, and the archaic techniques of the C programmers who designed the system are readily apparently. As an ardent supporter of Modern Perl this frustrates me on a daily basis.
This framework, and the tests written to use it, encompass nearly 2.5 million lines of code. Because of the horrendous design of the framework, I would imagine that at least a million lines of that (and probably more) is boilerplate. The organization places on on this code and any efforts made to actually improve the sad state of affairs, are almost always rebuffed.
As the first talk in series of talks on form validation, Fred Moyer will present an overview of Data::FormValidator. Real world code examples will be presented, and you'll see how you can use Data::FormValidator to implement form validation for legacy codebases as well as new code. Data::FormValidator is a loosely coupled, highly flexible, and easy to use form validation module written by Mark Stosberg.
This meeting will take place on Tuesday, March 23rd at 7pm at Six Apart World Headquarters.
RSVP at Meetup - http://www.meetup.com/San-Francisco-Perl-Mongers/calendar/12793946/
Fred Moyer's CPAN page:
http://search.cpan.org/~phred/
Data::FormValidator on CPAN:
http://search.cpan.org/dist/Data-FormValidator/
You might recall we made an announcement a few months ago, regarding a deadline. The deadline, 1st March 2010, was the date we had to switch from SMTP to HTTP for report submissions. Since December there has been a lot of work behind the scenes, and some public changes too. Much of the publicly visible work has been done that can be done, while the remaining backend pieces are completed. David Golden has been posting regarding his progress on the Metabase, which will stand as a core component of CPAN Testers in the future.
Sub::WrapPackages 2.0 is a fairly substantial rewrite from the previous version, and may introduce some minor incompatibilities. But what you get in exchange makes it worth it.
The code is now marginally less batshit-insane;
It uses Devel::Caller::IgnoreNamespaces, which I factored out of Hook::LexWrap, so caller() works;
It is better tested;
It protects its magic @INC subroutine from 'use lib'
In Pre-commit hooks and breaking the build, I wrote a little wrapper around 'svn' to ensure that I could locally alter how it functions. However, I hard-coded the name to the actual executable. I should actually be doing the equivalent of $self->next::method to find the next executable in my path. So I wrote the following bash function to give this a try.
The sao-paulo.pm group is releasing this month the vernal equinox calendar, with daily articles until the day and night are equally long :). The articles are in Portuguese and the idea is spread modern web development using Perl to Portuguese speakers.
A quick announcement. A couple of months ago I brought up a problem with Dist::Zilla in that it had no way to stop modules from being indexed that are included in the distribution for testing or example purposes only. Ricardo gave me a work around, but I decided it was time to actually implement a real fix. So today I've released Dist::Zilla::Plugin::MetaNoIndex.
Adding this to your dist.ini:
[MetaNoIndex]
folder = author.t
Will add a section to your META.yml file like this:
no_index:
directories:
- author.t
Which will stop PAUSE/CPAN from complaining at you about Foo.pm or whatever other classes you might have created for testing.
I just started using Search::GIN a while ago and it's a lot of fun. It's also an amazing example of how to write code correctly, using roles, abstraction and introspection. Reading the source is illuminating.
Search::GIN 0.04 has a few fixes that existed for a while in the Github repo but were not uploaded to CPAN.
There is now some docs on writing queries to help beginners. Hopefully I'll get around to documenting the extractors and write up some usage examples.
A major thanks goes to Stevan Little which helped me understand KiokuDB and Search::GIN and Yuval Kogman for writing these great tools. :)
Based on an explanation from Aristotle which has worked for me, here's one way you can make blogs.perl.org work a bit better for you. I've approved these and they seem to be OK.
As you may know, anonymous commenters are getting "Text was entered wrong" errors. This is because of a currently undiagnosed error with ReCaptcha. To work around this:
Log in
Click "POST"
On the next page, select "Comment" from the preferences menu
At the top, where it says "Immediately approve comments from", make sure that "Trusted commenters only" is selected
Further down where it says "E-mail Notification", select "On".
Near the bottom where it says "CAPTCHA Provider", select "None"
Now select "Registration" from the "Preferences" menu.
For "Authentication Methods", make sure "Anonymous Comments" is checked.
Whenever someone posts to your blog, you should be emailed notification. If they're "not trusted", you'll have to approve their posts. When you do, you'll have the option to make them a trusted commenter and not have to approve their posts again.
Open development seems to be percolating into the arts. A friend of mine, MG Lord, is on a team
commissioned by the LA Opera to write an opera about LA's 110 Freeway.
They (MG, her co-librettist Shannon Halwes, and composer Laura Karpman)
are putting 110 on the Web one aria/overture/intermezzo at a time,
as they workshop it. In effect, they're blogging the opera.
Have you ever needed to create an application server quickly? Maybe you tried SOAP? It's never a fun experience, and if you're like me you may have ended up reinventing the wheel a lot due to poor quality modules on CPAN, or confusing documentation. Today I'm announcing JSON::RPC::Dispatcher. It's a super easy way to create JSON RPC 2.0 web services. It's built on top of Plack so you can easily deploy it anywhere you need.
How easy is it to create an app server? This easy:
Yesterday and today I released to CPANCantella::Worker and Cantella::Worker::Role::Beanstalk. I am very happy with these two packages. They are the culmination of about a month of on-and-off playing around with different approaches to having distributed event-driven worker processes. As an added benefit, I can also run a pool of beanstalkd servers in case I need to bring one down for maintenance or I have some unexpected downtime.