Couple of things I would like to share with fellow Perl Hackers, last month when I posted a blog about completing 1000th consecutive days releasing to CPAN, I talked about releasing new distribution to mark the day. Hence I came up with new distribution Calendar::Hebrew and released on the special day. I was hoping that my new distribution gets the attention of @PerlTricks, monthly series "What's new on CPAN". However as soon as I uploaded the distribution Calendar::Hebrew, I got email notifying the namespace Calendar::Hebrew is already owned by fellow Perl Hacker, "Yitzchak Scott-Thoennes".
I was little disappointed because of this, my new code would not be seen by others, specially @PerlTricks editor. I didn't want to miss the opportunity of getting mentioned in the July series of "What's new on CPAN". I sent an email to the owner and asked if he is planning to release code under the same namespace. To my surprise, I received reply with 24 hours, offering me the namespace. I was over the moon, honestly.
This year's Swiss Perl Workshop in Villars-sur-Ollon overlaps with the historic hill climb, consequently there are some road closures that you need to be aware of if you plan to leave early or the day after the workshop. This isn't a big deal, it just means you will leave the village a different way to that which you arrived. The following flyer details the closures, I have translated the important parts below:
Important bits: The road from Ollon to Villars will be completely closed between 9.30am to 12.30pm and 2pm to 5pm on both Saturday 26th and Sunday 27th August. Therefore the only bus running on those days between 9.30am and 5pm will be the 12.55pm (from Villars to Aigle and vice-versa).
If you wish to get down to the valley you will need to go via Gryon, to Bex. The train from Villars to Bex will not be affected by the road closures, nor will the cantonal road from Villars to Bex. There will be diversion signs in place to show you the way from Villars to Bex.
These features make it easier to log structured data which will then be picked up by log parsers. Adding a single, unblessed hashref as the last argument to a log method will write that data structure as a compact entry at the end of your log string:
use Log::Any '$LOG';
use Log::Any::Adapter 'Stdout';
$LOG->info( "Hello, World", { foo => 'bar' } );
$ perl test.pl
Hello, World {foo => "bar"}
SPVM is not another implementaion of Perl. SPVM is a language and you can call SPVM function from Perl. Installation is very easy. "cpan SPVM" or "cpanm SPVM".
Don't afraid not to run CPAN module. You can use any CPAN modules and use SPVM together.
use FindBin;
use lib "$FindBin::Bin/lib";
use SPVM 'MyModule2';
my $total = SPVM::MyModule2::foo(3, 5);
print $total . "\n";
can display two data structures side by side (DDTR::MultiColumns)
can display the difference between two data structures (DDTR::Diff)
can generate DHTM output (DDTR::DHTML)
can display a folding structure in Curses (DDTR::Folding)
can display parts of the data structure Horizontally ( :flat() )
can be used to "visit" a data structure and call callbacks you define
install Term::ANSIColor and get colored output (highly recommended)
This blog entry is about the the latest changes.
I'll start with dd, the rakudo built-in dumper, which I learner to hate and love. I certainly love it when I am debugging my module and I can't use my own data dumper. I have in this version copied a few of its features which I found better.
This new release would not happen without the endlessly caring people on #perl6.
Well I have been on a role since I started on 'Group By' so I figure I might as well get the last of the base SQL code snippets in place. The last one is 'sort' or in SQL 'ORDER BY' and why change something that isn't broke here is a new test case '
60_order_by.t
' and here it the hash I am going to start with;
Since I started my journey of PullRequest, I always wanted to do at least one PR a day every month. I found it very tough and have only managed few times. To be precise 3 times in the year 2015 (Oct: 45, Nov: 31, Dec: 60). However the following year 2016 wasn't as good as expected, unfortunately. I could only successfully managed to do that in one month (Dec: 77). This year 2017, I am charged up again to do at least 6 months, if not at least beat my year 2015 target of 3 months. So far I could only do 2 months (Jan: 63, Jul: 32). I still have plenty of time in my hand and hopeful to get another 4 months, in the remaining months of the year.
At times, I feel like starting with one PR a week challenge and then move up slowly.
Any suggestions/ideas?
I'm delighted to be attending The Perl Conference in Amsterdam in just over a week's time.
We'll be kicking off the event with two days of public training courses. I'll be offering a full-day class on Perl 6's awesome regexes and grammars on Monday August 7, and then my popular Presentation Aikido class on Tuesday August 8.
In addition to my own two events, brian d foy and Jeff Goff are also offering some great classes in Perl 5 or Perl 6...so you're guaranteed some first-rate training, whichever course you choose. All the classes are just €150 per day (including lunch and recaffeination breaks) and you can sign up for any of them on the conference's new training webpage.
Now that I did the re-factoring for gather it is time to move on the Driver::DBI and do to code to generate the SQL. Of course I always start with a test case and this time it is a new one
50_having.t.
It is much the same as the other test cases so no need to repeat that here, the only important bit is this hash;
All of the credit for this update goes to PETERCJ who went far above and beyond with this PR. It's a pleasure to have him contributing to this (or any) project.
The significant change here is the addition of the use command. I feel that this addition adds tremendous value to the software, and makes it much easier to use.
This allows you to temporarily switch to one of your other installed Perl instances either in the same command window or new ones without switching your currently switched to one. Here are some examples:
Temporarily use a different installed version, in the same window. Typing exit will return you to your previous environment within the same window:
CPAN Day marks the date of the first recorded upload to CPAN: Andreas König uploaded Symdump 1.20 (it's since been renamed Devel::Symdump).
On CPAN Day this year, you could do some small thing to help celebrate. This could be as simple as emailing the author of a module that you regularly use, and say "thank you". It may not sound like much, but it's great to be on the receiving end.
There are lots of other things you could do to help someone else's module. For a previous CPAN Day I posted a list of ideas.
Or if you've got your own distributions on CPAN, you could fix a bug, or merge an outstanding pull request *cough*. This year I plan to merge at least one PR, and do at least one release to CPAN. I'll submit a PR too.
The official training schedule is still being drawn up, but I'm pleased to offer a full day of Perl 6 training at the b.amsterdam venue the day before TPC::EU . Please feel free to join me in a day of hands-on interactive learning about Perl 6. If you were at the Perl 6 training seminar last year, don't worry, I have new content and insight to bring to the table, and if you weren't, just bring your curiosity and a laptop loaded with Rakudo Star and we'll sit down and start learning.
Well going to skip a post on creating a gaggle of new tests today and instead do some core coding in Driver::DBI and Database::Accessor. Now believe it or not I had a dream last night that something was wrong in the way I set the architecture of Grathers and Filters, GROUP BY and , HAVING in SQL, in Database::Accessor. Boy this does sound corny!. So today I started to look at that part of my code.
In the original Data::Accessor a 'GROUP BY' and 'HAVING' looked like this
This branch contains about 50 commits, which collectively optimise
various aspects of perl's behaviour when detailing with boolean values
or ops that are called in boolean context.
various boolean-related optimisations - perl.git
so about 10% of tests became marginally slower - usually due to one extra
conditional in an op to test for a private BOOL flag or ReANY(); about 70%
of tests were almost unaffected, while 20% of tests showed improvement,
most with considerable improvement, and a few with spectacular improvement.
(The 314% is for an empty @lexical tested in boolean context).
various boolean-related optimisations - perl.git