no ident specified when using Log::Dispatchouli (MooseX::Role::Loggable)

Sometimes when working with the lovely MooseX::Role::Loggable you might encounter the following fatal error:

no ident specified when using Log::Dispatchouli at Loggable.pm line 117.

I keep running into this and resolving this each time without remembering what this means, so I keep having to debug it all over again. While I've documented this issue in the new version of MooseX::Role::Loggable, I'd like to explain it here as well.

Auto-detection of clusters in Graphviz *.gv files

Hi

I've released GraphViz2::Marpa::PathUtils V 1.01, which now offers an algorithm that performs auto-detection of clusters in Graphviz *.gv files, via the find_clusters() method.

Download, or read the docs at the usual place:

GraphViz2::Marpa::PathUtils

Peruse the demo.

The most complex input file I tested ran foul of a bug in Graphviz itself, which I've reported. I am using Graphviz V 2.26.3, and the bug has been kindly confirmed by Ryan Schimdt in 2.28.0 and 2.29.20121022.0445 on OS X. So, that image is not yet on the demo page.

Note: An option in the code allows outputting the resultant *.gv file, hence making it available for further processing, and the format of the (optional) output image (svg, png, ...) is also an option (which is passed to 'dot').

Note: Nodes and edges using ports are not yet supported.

Thanx to Ron Newman (on the Graphviz mailing list) for the suggestion to implement this (despite the complexity of the code I had to write :-).

Lastly, the previous algorithm in the module (in V 1.00), accessed via the find_fixed_length_paths() method, finds all paths of a given length starting from a given node. Demo output is included in the above URL.

Strawberry Perl 5.16.2.1 released

Strawberry Perl 5.16.2.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.16.2.1-32bit.html
http://strawberryperl.com/release-notes/5.16.2.1-64bit.html

RFC Module::Build::CleanInstall

Edit: Module::Build::CleanInstall has been released!

Following the recent work (chronicled here) by Yanick Champoux and this StackOverflow question, I got it into my mind to try to write a Module::Build subclass which first removes all the files previously installed by a module before installing the new version. In those posts, this is motivated by File::ShareDir concerns, but this problem is more general than that.

If your new version of a module does not come with some file that a previous version did, installing the new version will not remove that file. Most of the time this is ok, but every now and again you need to know that those files don’t exist. That’s usually when you see warnings in the POD saying, “be sure to remove all previous installations …” or “only install on a fresh copy of Perl”. The author knows that a problem is possible, but the user has to fix it. Sounds bad.

git related bourne-like shell functions

Wanted to post git related shell functions, so they are now at PerlMonks.

How to put desired data & snaps in word .doc defined format from xls & snaps folder?

I have an xls containing (Sr. Name Address Remarks etc) & a folder containing pictures with the same Name as in xls Name.
Now I want to convert desired data from excel & snaps/images from folder to a Word .doc file which has a format (Sr. Name Address Remarks etc & a portion for placing snaps/images.
Is there any SCRIPT or Software which runs & creates .Doc file.

Tree, Tree::Binary, Tree::DAG_Node, Tree::Persist and Forest

Hi

I wanted to title this post: The Tree::Hugger Chronicles: Tree, etc, but that was too long.

Anyway, I mention Forest only to say I won't mention it further.

I've become co-maint (or accidentally, owner) of various Tree-ish modules, so I thought I mention what's up. Each module is followed by an extract from the CHANGES file.

o Tree: I've just released V 1.03:
- Rename Tree::Binary to Tree::Binary2 so it no longer clashes with the Tree::Binary shipped in the Tree-Binary distro. MetaCPAN was getting confused, and automatically redirected links from this module's Tree:Binary to the other one.

o Tree:Binary: No activity.

CPAN In The Sky With Diamonds

A few weeks ago, I pondered a service for hosting private CPAN repositories in the cloud. The idea was well received, so I pulled together a prototype. The result is here:

http://alpha.stratopan.com

Be aware that this site is not secure nor reliable, but I think it demonstrates the concept pretty well. Most of the links on the landing page go nowhere. Just click the big "Sign Up Now" button and you'll be on your way. If you like what you see, let me know.

Another view of XML schema attributes vs. elements

Another way to look at whether you should add information as an attribute or a child element while designing an XML schema element is whether you are talking about an IS-A or a HAS-A relationship.

Attributes are great for IS-A relationships -- "I am an element with ID='20121101-i1' or "I am an element for the Dublin Core (METS MDTYPE='DC')".

Child elements are great for HAS-A relationships -- "I have several groups of files" or "I have binary and XML data for a file".

Garbage Collection

UntitledGarbage Collection

A Marpa DSL tutorial: Error reporting made easy

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

Using Marpa's facilities for error reporting, a quickly written domain-specific language can, as of its first draft, have error reporting whose helpfulness and precision exceeds that of carefully hand-crafted production compilers. This post will show how, with an example.

Two techniques will be used. First and most basic, Marpa's knowledge of the point at which the parse can no longer proceed is 100% accurate and immediate. This is not the case with yacc-derived parsers, and is not the case with most recursive descent parsers.

Read/Write Web bag o links

* Command Query Responsibility Segregation - http://martinfowler.com/bliki/CQRS.html
* https://metacpan.org/module/Web::Hippie
* https://blogs.perl.org/users/joel_berger/2012/10/a-websocket-mojoliciousdbi-example.html
* http://www.slideshare.net/dkrotkine/dancing-with-websocket
* http://daniel.wertheim.se/2012/05/01/realtime-web-application-using-cqrs-and-websockets/
* http://jfarcand.wordpress.com/2010/10/25/scalling-your-websocketcomet-real-time-application-using-redis-pubsub/
* http://blog.newsblur.com/post/20371256202/building-real-time-feed-updates-for-newsblur
* http://cdent.tiddlyspace.com/TiddlySpaceSockets
* https://github.com/carlhoerberg/knockout-websocket-example
* http://stackoverflow.com/questions/12733985/job-processing-via-web-application-real-time-status-updates-and-backend-messagi
* https://gist.github.com/3764706
* http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#REALTIME_WEB
* https://hacks.mozilla.org/2011/06/a-wall-powered-by-eventsource-and-server-sent-events/
* http://www.html5rocks.com/en/tutorials/eventsource/basics/

When to create a branch in Git?

Upon reflection:

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 297 commits.

I think maybe I should have created a branch…

Let's Have a Distributed Perl Hackathon

Q. What is a hackathon?

A. In the Perl world, it's a meeting, generally of one day's or a weekend's length, where Perl hackers come together in one physical location (primarily) to work collectively on projects which will improve Perl, CPAN and the Perl ecosystem.

Q. What is a "distributed" hackathon? Is it something like a "distributed" source code control system?

A. In a way. A distributed hackathon, like a distributed source code control system, is designed from the outset to be clonable. In the Perl community, we've had many hackathons over the past eight years, but they generally haven't been planned to be clonable, i.e., easily reproducible in different locations at later points in time. They've been planned as events in one geographic location that when they're over, they're over. They aren't intended to be reproduced elsewhere.

Q. What would it mean for a hackathon to be "clonable"?

Calling David Hand, author of Tree::DAG_Node

Hi

Neither I nor Sean Burke can get a response from David, bit if anyone knows him, please let him know I'd like to take co-maint of Tree::DAG_Node in order to fix bugs.

So, I'll ask the CPAN admins on Friday to do that if I don't hear from him beforehand.

If he doesn't want me to be co-maint, I'll fork the code...

Chicago.PM Report - Scripting Git With Perl

This month's presentation was on the Git::Repository Perl module, given by me. In both my jobs, I use the Git::Repository module to automate releases.

At Double Cluepon, I use it to create the release packages based on tagged commits, so that releasing our software is exactly: git tag vX.X.X && git push --tags. A Perl script builds every package and then pushes them to our update server, where the game will check for a new release.

At Bank of America, we use it to combine our 20-30 Perl distributions into a single release. Using git submodules, we have a "release repository" that holds references to all the modules for each team's releases (some are team-specific, others are shared between teams). A Perl script manages the submodules, determines when the submodule refs need to be updated, tags and branches for each release, and finally builds and installs our modules using Module::Build and local::lib.

All this Git stuff gave me some ideas for possible useful code I can release, perhaps leading to me finally recovering my CPAN ID.

The slides for my Scripting Git With Perl talk

The code for the script that automatically builds releases tagged like "vX.X.X"

YAPC::Europe 2013 in Kiev, week minus 42. Food

I hope you expect that we announce the date and place of the next YAPC::Europe in Kiev, but please be patient a little bit more. Next week Viacheslav visits a venue where a PyCon was held and after that we select the venue. It is a difficult choice as we don't have now exact budget and the venue rent cost strongly varies. It would be much easier to decide after the attendees pay :-)

Anyway, let's talk today about eating during and around the conference. There are four different type of food supply we have to organise.

1) Pre-conference meeting;
2) Coffee breaks during the conference days;
3) Lunches;
4) Attendees dinner.

Food at a pre-confernece meeting is simple. We invite everybody and depending on the level of sponsorship we get we offer either nothing, or beer, or beer and snacks. It is also possible for any company to become a Pre-conference meeting sponsor right now.

DBIx::Class::FilterColumn: making transformation easier

Over a year ago I was tasked with creating a data warehouse for sports data. Having known absolutely nothing about data warehousing/ETL, my first sport ended up quite the mess; scrapers would extract and transform at the same time then stuff it into a database where it most likely needed additional transformations. At the time, additional transformations meant writing a script to iterate over every row and change whatever column to whatever regex I had constructed. Sometime later after i'd have generated a report i'd find something wrong, often missing data due to a bad transform regex, which meant re-scraping websites (and often times purchasing another membership).

Perl 5 Porters Weekly: October 15-October 21, 2012

[ crossposted from its original blog ]

Welcome to Perl 5 Porters Weekly, a summary of the email traffic of the perl5-porters email list. Let's get to this week's topics.

  • Perl 5.17.5 is now available
  • Timely destruction guarantees
  • COW status
  • perl5db refactoring
  • hash assignment fixes and speedup are ready for review
  • Pull request CPAN-1.99_51
  • sub signatures status and performance
  • No-taint support in Perl

The YAPC Europe Organizers Mailing List


The YAPC Europe Foundation (YEF) has created a dedicated Organizers Mailing List. The purpose is to share relevant information between organizers of Perl workshops, conferences and hackathons, in Europe, such that we can all benefit from each others rapidly accumulating knowledge. Here's the link:

http://lists.yapceurope.org/mailman/listinfo/organizers

By letting everyone else know where, what and when, an event is going to take place, and sharing our intentions, this might help to avoid the unfortunate case where two events happen at the same time, as well as helping to spread Perl events sensibly over the year. The list is intended as a one-stop shop for anyone interested to participate in helping to propose, ask for help, and to organize, all Perl-related events in the European sphere. Discussions have already started. Please join and help us to promote local, as well as nation-wide, events for the benefit of the larger Perl community in Europe.

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.