Dist::Zilla Its a Wrap II

Well it not a very creative day today in the old Dist-pen

So careering on from my las post here it the next bunch of posts to do with Dist-Zilla.

Dist::Zilla Takes Instructions

Another chore post this time creating the README file.

Dist::Zilla VCS Opps!
In this post I had a go at linking up my distribution to my VCS which in this case was GitHub. Though I am quite sure I did things corrctly I was just way to earl in the developement cycle to actually hook things up.

Dist::Zilla Do Kwallitee Test
This was a first of a series on how Dist::Zilla does its testing. The first time I really figured out the difference between author, release and automated test cases. I also put in my first Test plug-in [Test::Kwalitee]

Dist::Zilla Likes Critic

This post I played with the [Test::Critic] plug-in and also figured out how to run just the 'author' tests.

Rakudo.js update - we passed a first roast test

After spending a long time chasing a bunch of bugs (a lot of ones that boiled to a few lines of code had really weird consequences that needed to be painstakingly chased down) and implementing some missing parts I finally got Test.pm6 to compile and load.
This allowed rakudo to pass few roast tests (like S03-operators/not.t) for the first time. Once some remaining issues with the Test.pm6 get solved hopefully a whole bunch of others will pass.
Currently the coroutine ops needed for Test (for gather/take type stuff) to load are implemented in a node.js specific manner using the fibres. I previously had an pure js implementation of them using a CPS transform but it carried a large cost in terms of generated code and compile time so it got disabled as it was slowing down development. Some careful thought will be needed later on how to re-nable it with only paying for it for use.
Now that rakudo.js is starting to run actual Perl 6 code my current focus is to make rakudo.js easier for others to play it.
That includes means making the way it builds (at least remotely) sane and cutting down the horrible (10+ second locally) startup cost of loading the setting. A lot of the startup cost seems to be caused by the way lexical scopes are setup in rakudo.js which also needs a cleanup as it's currently to influenced by how nqp does things.

Perl 5 Porters Mailing List Summary: February 13th-19th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week.

Enjoy!

Else Clauses on Loops

I am curious whether anyone else would like to see else clauses applied to for/foreach and while loops,  where the code in the else clause would be executed if the loop body was completely skipped due to the conditions/boundaries. So for example:

…with a for/foreach loop:

for my $temperature ($temp_lower_bound .. $temp_upper_bound) {
  set_temperature($temperature, $soak_time);
  push @data, get_sensor_reading();
}
else {
  die "Temperature upper bound must be greater than lower bound!\n";
}

foreach my $datum (@data) {
  print "processing $datum...\n";
  process($datum);
}
else {
  warn "No data!\n";
}

…with a while loop:

open LOG_FILE, "<", $log_file
  or die "Could not open log file: $!\n";
while (<LOG_FILE>) {
  process_log_entry($_);
}
else {
  print "The log file was empty!\n";
}
close LOG_FILE;

Obviously all of these examples could be implemented by wrapping the loop in an if…then…else that checks the condition or boundaries, or by setting a “ran once” flag in the body and checking it after, but those solutions—that I use all the time—seem unwieldy and inelegant to me.

Note this isn’t a Perl-specific concept; it could apply to almost any procedural programming language. (Does it already exist anywhere else?)

Dist::Zilla Its a wrap!

The great Dist-Pen wrap up part the first.

So has it been really sixty days of blogging about Dist::Zilla and Pod::Weaver? Yes it has so here is a quick round up of what is where.

For the first few post in this series I had a look at the basic install using Dist::Zilla

No Such thing as Moose-Zilla!

In this post I try my hand at building a distribution with Dist::Zilla. Here I found out about some of the required attributes that Dist::Zilla needs and how to use my first plug-in and generate my first distibution with dzil and had a quick look at the mass of Plug-in found on CPAN

Mmm! Dist::Zilla Tea

Carrying on from my first attempts I added in an 'Abstract' into the mix and then started to add in other Plug-Ins to really make a useful distribution for CPAN and learning that dzil has a clean as well as a build command.

'Dist::Zilla' A Bath for Your Distro

Adventure Series Part 3

See part 1 and part 2 to get caught up. In our part 2 meetup (last night), we changed things up a bit. I decided that tackling the space mission to start was going to be a bit much (too much content), so I switched us to Action Castle, the first adventure in the Parsely series. And built out a mission config file with notes from the adventure using the structures that we designed in our first meetup.

After explaining the reason for the change, the group agreed, and we continued on our merry way. As we continued to define our mission spec, we figured out an API for plugging code calls into the spec. For example, you could replace an exit like this:

exits:
  North : catacombs

With a code call like this:

exits:
  North :
    code: PluginNameGoesHere
    params:
      destination: catacombs
      foo: bar

We built some sample code for exits, actions, and turns. None of this is final or anything, just building some samples so we could work through the the thought exercise. 

Perl 5 Porters Mailing List Summary: February 7th-12th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week.

Enjoy!

Of Dates, and Sigs, and Shiny Things (and cabbages and kings)

You know, I’ve been trying to analyze my working patterns lately, and I think I’ve hit on something.  Looking back over the past few years, it seems like I get obsessed with one particular project, work frantically on it and produce lots of great stuff, then I get distracted and next thing I know I’m obsessing over an entirely different project.  And then sometimes I circle back around to the first project, but it’s usually a long time later.  I’m actually starting to wonder if maybe I have some undiagnosed ADHD (not only because of the easily distracted, but also because of the hyperfocus, and SQUIRREL!).  Anyways, that appears to be the pattern of my life, so I think at this point I’m just going to have to learn to roll with it.

Dist::Zilla Disclaims

Well it is section end day here in the Dist-pen.

Today I am looking at the I think the last section plug-in the [WarrantyDisclaimer] plug-in. This is your standard blurb type plug-in that will dump a bunch of legal words that is suppose to cover your arse if someone uses you code to control a self-driving car that goes berserk and crashes into a children's hospital causing a fire as the cute puppy store.

This plug-in has a number of subclasses that you can use to match up the license you are using to the correct subclass. So far there are six sub-clases

  • Default
  • Artistic
  • Custom
  • GPL1
  • GPL2
  • GPL3
Myself as I am using the GPL 3 so in my 'weaver.ini' file all I need to add in is

Our Adventures in Logging

NB: I've written a follow-up post

Before we start: this is my first post at blogs.perl.org. Awesome that you're reading it despite me being a noob! :)

Three years ago, I started to change the way I think about logging in applications. Before that, to me it was just printing lines into text files, in order to later read and grep my way through them.

Then, a friend pointed me to ElasticSearch and Kibana, with its infinite ways to search through, and visualize, large amounts of textual data. Due to the nature of my $work, I was well aware of the benefits of a full text search database, however, it soon became clear that text alone was only part of the deal. The real fun in ElasticSearch begins when you add structured data into it, allowing filtering, grouping, and get all businessy with pie charts and world maps and whatnot. This would be where you'd start to gain knowledge that wouldn't be available anywhere in text-based logfiles.

Outthentic - quick way to develop users scenarios

Whether you are operations guy, devops or developer from time to time you deal with scripts development for various tasks - handy utilities, automation scripts, monitoring tools, so on.

Outthentic - is universal, language independent framework to encourage scripts development in easy and fun manner.

Here is short introduction into it - "Outthentic – quick way to develop users scenarios".

Forthcoming site downtime

The blogs.perl.org site will be unavailable for a few hours during the night of February 16th to 17th 2017. The site will stop responding at approximately 21:00 UTC on the 16th, and is expected to be back by 05:00 UTC on the 17th.

The reason for this downtime is that the data centre where the site hardware is hosted is being closed, so our hosting company is transporting all servers in that data centre to a new location.

We apologise for any inconvenience caused.

Dist::Zilla Templated

Well it 'T' day here at the Dist-Pen

Getting near the end of the section plug-ins I am looking at the [Template] plug-in. This one is much like the [GenerateSection] plug-in I had a look at in this post.

To use this plug-in to generate the same section I created in the other post above

=head3 Database::Accessor Tutorial 
Welcome to  Page xxxxx
I will first have to create that in a file with the {{}} in the right spots. So I created the file 'header.section' with this content;

Welcome to Page {{$name}} of the {{ $main_module_name }} tutorial.

Test::BDD::Cucumber and `prove`

Thanks to some sterling work by ehuelsmann, not least of which was badgering me to commit some code, Test::BDD::Cucumber now integrates directly into prove. This means you can run your feature files in parallel, and in a shuffled order more easily. This is a bit of a mouthful to achieve:

prove -s -j 5 -r --source Feature --feature-option extensions=.feature --ext=.feature examples/

and any suggestions on how to make that a little easier gratefully received.

Perl 5 Porters Mailing List Summary: January 30th - February 6th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week.

Enjoy!

About the Perl Toolchain Summit

We've had a few questions and discussions about the toolchain summit since our announcement in January. In this blog post we'll address some of those: why the name change, what things are fair game to be worked on, and who decides who comes?

The Perl Toolchain Summit is the new name of the Perl QA Hackathon, an event organised for the first time by Salve J. Nilsen in Oslo in April 2008. In Salve's words from 2008:  "The purpose of a QA hackathon would be to Quality Assurance-related problems that are easier to solve when everyone is gathered in the same physical location. This can include issues with packaging, testing modules, community support or with tools."

Over time, the event has grown in importance (it is now the major non-conference event of the Perl community), and moved around Europe, organized every year by a different team in a different European city. It is entirely financed by corporate and community sponsors interested in having a healthy and reliable Perl environment.

Dist::Zilla No See

It is the big 'S' round-up here on the Dist-pen today.

Well just a post-ette today as I am a little hard pressed to find things to blog about. I am going to have a quick look at the three remaining section plug-ins that start with 'S'

  • [SQL]
  • [SourceGitHub]
  • [Source::DefaultGitHub]

SQL

This is a neat little plug-in that I might find useful when I go the write up my DAD::SQL. If you wrap any sql in you POD like this

=sql 

SELECT * FROM records where id =1

=cut

A repo for SQL docs

For a number of years Jonathan Leffler has been providing SQL docs, which I hosted on my web site.

At the prompting of Brian Van Klaveren I've converted Jonathan's index.html page into the landing page of a github pages project.

Perl talk at Linuxtag Chemnitz

Its on the 12.03.2017 12:00 in Room V5 and by ... me (you guessed it). It will have a small Perl 5 section handling 5.24 and 5.22 (since i've gone full P6 last year). Ant to not repeat myself i want to go more practical with Perl 6 this time. some nice alorythms and useful modules - answering: what can I do with Perl 6 today.

Automation of ssh/scp commands with sparrowdo

Hi! here is short post on how to automate ssh/scp commands using sparrowdo - configuration management tool, written on Perl6.

https://sparrowdo.wordpress.com/2017/02/01/sshscp-commands-with-sparrowdo/

Regards.

Alexey

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.