So it is write a little code day here at the Moose-Pen.
I now have my first test case checked in thanks to yesterdays post and a few min setting up a new GitHub repo.
I also found my first bug as I used the code from this post as a template for my first crack at 'Database::Accessor::Driver::DBI'. After hanging out the name-space from SQL to DBI I ran my test and got
first argument should be a role at C:/Dwimperl/perl/site/lib/MooseX/Test/Role.pm line 41
MooseX::Test::Role::consuming_class('Database::Accessor::Driver::DBI') called at 00_load.t line 16
# Looks like your test exited with 255 just after 2.
ok 1 - require Database::Accessor;
ok 2 - require DBI;
seem in my haste the other day to get post up I did this mistake
The last half-year or so, I've been hacking on different Integrated Circuits, various small hardware, learning how to wrap specific C software (while ensuring the code remains within the Perl license) in order to bring the Raspberry Pi toward the realm of reasonable Perl programming.
I have written numerous pieces of software to allow this. The first was WiringPi::API. This is the core wrapper that allows you to use the wiringPi library right from your Perl scripts.
I pushed this further with RPi::WiringPi, which is an object oriented wrapper for WiringPi::API, but performs important benefits; it registers pins so you can't re-use them by 'accident', and it does an auto-cleanup (ie. it resets everything back to non-dangerous state) on failure. It also allows you to pull in other RPi-type objects and use them directly.
With the different ICs, hardware, etc that the RPI:: scope encompasses, I've finally run into a situation where I can't effectively ensure the quality of it all.
Dancer2 0.205000 is on it’s way to CPAN, and brings with it a number of bug fixes, documentation improvements, and enhancements. The changes with the most potential impact to your existing applications include:
I left off form my last post with a name-space change from 'SQL' to 'DBI' and the first think I have to do today is come up with an initial test case to work against. The usual first test is you simple does it load test like 00_load.t
#!perl
use Test::More tests => 1;
BEGIN {
use_ok('Database::Accessor') || print "Bail out!";
}
1;
The releases to date have been relatively minor fixes, but the development releases of a couple days ago are more significant, to the extent that I thought users of these modules should get a "heads up."
Common code and data have been factored out into Date::Tolkien::Shire::Data. This module also provides time formatting, allowing the implementation of a strftime() method in both the original modules.
The direct conversion of dates between Gregorian and Shire in both modules has been replaced by calculations in terms of Rata Die days. Regression tests have been provided (in xt/author/regression.t) to try to ensure that this did not break anything.
Duration and date arithmetic. I hope to add this in a subsequent release.
format_cldr(). I am not sure whether this will be added or not; at the moment the implementation path is unclear to me.
era(), which is marked as deprecated in the DateTime code.
I can not imagine that there are any mission-critical uses of these modules, but interested parties should probably take a look at the revisions, and let me know if anything untoward turns up.
That moment when your auto-scaling, self-healing servers and continuously integrated and continuously deployed codebase all start working together seamlessly and flawlessly.
If none of that made any sense to you, then just understand this:
muhahahahah! *rubs hands together while laughing maniacally*
Well it is another planning day here in the Moose-pen
In my last post I did manage to get the change of name-space 'DAD' to 'Driver' done rather easily, thanks test suite, but I did leave an question open to me once I made the change. Have I the right name-space for my 'SQL' driver.
My plan so far was that I expected a DBI handle (DBI::db) was going to be passed into my Driver as some point. So would it not be better to call this driver 'Driver::DBI' than what I was originally thinking 'Driver::SQL'
Taking one step back I also want to make a 'Driver::Mongo' as well so I think the name-space change to DBI dose make sense. Now before I do that I want to take a closer look at DBI and its DBSs.
I did a quick count of all the DBDs out there and there are the numbers I came up with
We’re doing a survey for the entire Perl community to find out some specifics and peculiarities about Perl and more importantly, about Perl developers. The survey itself is meant to gather some perspective regarding how developers are using Perl, where are they using it and how Perl is used with other technologies. This is basically a State of Perl in 2017 survey.
The survey will be open from the 7th of March to the 14h of April.
Please share it within your local Perl communities, every answer counts and makes this survey more relevant. The results will be available for the entire community to see, we will publish them the following week after the end of the survey. The data acquired through this project will show just how Perl is used and how the developer community is presenting itself at this point in time. It has 31 questions and it covers personal programming preferences, employment facts, geographical criteria, community events, tech stack data and more.
This is a great opportunity to capture the state of Perl as a language and as a community.
10:26 < kd> me: "how do I integrate the REST API with our psgi/mod_perl abomination?"
10:26 < kd> colleague: "aah I've been wanting to do that for a while, do you really need it?"
10:26 < kd> me: "yeah it would be good"
10:26 < kd> [waits two days]
10:26 < kd> colleague: "here, have a code review"
10:29 < kd> meanwhile it gave me the opportunity to prototype an important thing via a semi-abomination that would never be acceptable in production. So 1. We got a feature we really needed, and ensures the longevity of the platform, and 2. I got to do the important thing of getting my thing wrong on the first try.
I am happy to announce the initial release as an independent application of Camel Doctor - a simple HTML user interface for the default Perl debugger implemented as a Qt 5 executable. The debugger output is displayed together with the corresponding syntax highlighted source by a small formatting script. Syntax highlighting is achieved using Syntax::Highlight::Engine::Kate CPAN module by Hans Jeuken and Gábor Szabó. Camel Doctor is an implementation of an idea proposed by Valcho Nedelchev and provoked by the scarcity of graphical interfaces for the Perl debugger. Camel Doctor was started as a part of Perl Executing Browser in 2014.
As usual, any ideas and feedback are quite welcome!
CPAN modules are normally distributed with Makefile.PL or Build.PL,
so that people can install them by
> perl Makefile.PL
> make
> make test
> make install
This makes CPAN modules installable without any CPAN clients help
unlike other programing language ecosystem (such as ruby(gem), node(npm)).
On the other hand, today, people mostly use CPAN clients (such as CPAN.pm, cpanm) to install CPAN modules.
And it seems that when CPAN modules are not "complicated",
CPAN clients easily expect how to build/test/install them
even without executing Makefile.PL or Build.PL.
Now we have the concept Static Install.
That is, if CPAN modules are not "complicated" and set x_static_install 1 in their META.json,
then we may install them statically.
OK, the tag “worst
Perl” might be overstating the case, but we ran into a funny error message
yesterday from a program that runs on all of our production equipment.
As each lot is tracked into a piece of equipment, the program running on it contacts our MES (manufacturing
execution system) to verify information about the lot. Because the MES used to
run on a really slow server, timeouts were common, so at some point the function
to look up a lot was wrapped in a function to retry a few times in that event. The MES server has since been upgraded, but we never took out the retry functionality. Here's the code in question:
Seems I have kinda drifted far from my original intent of all this blogging get a useable version of my Database::Accessor module out on CPAN. Though the last little while has been a very good learning experience for me it is time I get back on track to make sure I get a version out by Christmas.
In my first round of Moose-Pen post I gave a good example of how test driven development really does work well. The very short cycle of write a small test for requirement, write a little code, pass the test, reactor the code if needed and rerun test, it you pass out start the cycle again.
I also spend a good deal of time getting into Dist::Zilla and in this round of coding I am going to see how add in a little Dist::Zilla and Pod::Weaver to start along with my test driven development works out.
In my previous post I explained how many utf-8 related issues are now fixed in the latest DBD::mysql development release, and I asked for feedback and testing from our users.
Even better utf-8 handling
I'm happy to inform you that, thanks to your feedback, we've now released yet another development version, with even more UTF8 issues fixed. Tanabe Yoshinori reported that column names and database warnings were not properly encoded and prolific contributor Pali Rohár fixed that issue, and much more.
Serialization issue under taint mode
One other issue which was reported by amavisd users has to do with how perl stores values internally under taint mode, which is the default way amavisd is run. This is now fixed, see for more information https://github.com/perl5-dbi/DBD-mysql/issues/78.