Today I am going to expand on the '20_where_basic.t' test case going from a simple one level Element to Param 'where clause' such as
SELECT people.first_name, people.last_name, people.user_id FROM people WHERE ( people.first_name = ? AND people.last_name = ?
to the much more complex Function, Expression, nested and mixed clauses that I was using in the last few posts.
First I decided to re-factor my tests from the start and using the 'element_sql_ok' sub from this post I re-factored it to this sub
The PPIx-Regexp package provides a PPI-like parse of Perl regular expressions. Part of its functionality includes reporting on the versions of Perl under which a given regular expression or its elements are valid. Up to this point the version fumctionality has been fairly simple: method perl_version_introduced() returns the version of Perl that introduced the element, and perl_version_removed() returns the version under which it was removed, or undef if the element is valid in the most-recent Perl.
Unfortunately reality is not so constrained, and Perl 5.27.1 contains the first instance known to me of regular expression functionality which was removed and then reinstated: the un-escaped literal left curly bracket following another literal. Yes, this is just a development release, but the explanation given in perl5271delta (use of the construct in GNU Autoconf) makes it sound to me like the reinstatement needs to be taken seriously. Here is how I plan to deal with all such occurrances:
It's just over a month until this year's Swiss Perl Workshop in Villars-sur-Ollon. We already have Damian speaking as well as a few talks submit on topics such as: starting afresh with Mojolicious up to building an API using Swagger, profiling with Devel::NYTProf and memory leak tracing, high precision math in Perl 6, and using perl and Java together; but of course we would like more!
If you would like to attend this year's Swiss Perl Workshop and give a talk then please register and submit a talk. Your talk can be short (5 or 10 minutes) or longer (20, 40, or even 120 minutes) and we welcome talks on any topic, not just perl.
Many thanks to our sponsors, who have enabled this event to take place:
Just another quick test postette day here in the Moose Pen.
As we seen in this post I found a bug where I was not coercing correctly on deeply nested Element Attributes. So that means back into the test suite of Database::Accessor I go to cover that bug and the new recusion functionality I have added recently.
Checking the current state of the test suite I see that I never did go deeper than one level of elements, though I do check to ensure that the View on elements are correct and the correct Class is passed in. Howeve I only test for Param and Element classes now I have at lest two others to check for.
I decided it is best to go for broke and create one have that will cover I think all of the combinations I could think of. Here is the hash;
When a company hires All Around the World to develop new systems or work on existing ones, they're sometimes surprised to find out that, with few exceptions, we only hire senior engineers. We're not a "body shop." We're the experts you hire when you need things to work and you've discovered that the $100 a day freelancer wasn't such a bargain after all (true story).
So when a self-described intermediate developer asked me what I meant by "Senior Developer", and does it just meant "time on duty", I realized that what we're looking for is different from what other companies look for. We have high standards and a difficult hiring process, but it's worth it.
What follows is my (edited) response to that developer.
A Silicon Valley engineer seems to have rarely introduced Perl, but recently it tells us that we have used Perl at the Google APP engine, and Amazon scalable MXNet cloud support Perl library AI::MXNet officially.
And about a month ago, I hear a veteran google engineer is writing Perl tutorial over 150 hours.
I'm glad for Silicon Valley engineer to be interested in Perl.
This site start with Perl download and installation, then there are basic topics.
Over the past few days I have made up quite a few tests and they where all the same pattern
Base hash
add function/expression element
create DA
run select/retrieve
check SQL
check parms
so a little re-factoring is in order me thinks., Though there is a school of thought that it is a waste of resources to re-factor working test. Fortunately I do not ascribe to that thought so here we go.
The re-factoring was quite simple, I took my test;
The most notable change is the addition of the register command, which allows you to copy/move existing Strawberry Perl portable editions from your local/remote systems and have them operate as custom instances within berrybrew. Before registering a new instance:
In the time while I was thinking about what I should write about Bailador a new Github Issue was created. So I changed my mind...
Actually I just wanted to let you all know that I've released version 0.0.8 of Bailador today. I wanted to show you the Changelog and maybe I wanted to explain a few bits. I could've talked about Github Issue #169, because it appeared to be more work as I thought at first glance. I realized that some parts of the code in Bailador::App and Bailador::Route could be better and during refactoring I stumbled over https://rt.perl.org/Public/Bug/Display.html?id=131707. After all I am hoping that I have left the code in a better state and the behaviour of Bailador is now more reasonable and consistent.
I got a fantastic opportunity to give a talk at Barcelona.pm meetup in August. I'll speak about The Perl Foundation, focusing on grants and donations. For those who love technical talks as much as I do, there will be three more interesting talks by other Perl Mongers.
I started learning Spanish using Lingua::ES::Numeros. Uno, dos, tres. ¡Buenas tardes a todos!
Now that I have 'Functions' nicely working I am going to move on to the next logical field and that is an 'Expression'. In SQL (and 99.9% of other languages) an expression is just a predicate that can be evaluated. So an SQL like this
SELECT user.username, user.salary + 10 FROM users WHERE username='BOB'
In Database::Accessor I have an Expression class for this and it works 90% the same as the Function class I just finished. Thus this expression;
The Dancer Core team has just released Dancer2 0.205001. This release primarily fixes some documentation issues with a couple of notable exceptions:
If HTTP::XSCookies is installed, Dancer2 will check at install time to see if the correct version is installed (Peter Mottram)
Dancer2 is now tested by Travis CI on Perl versions 5.22, 5.24, and 5.26, as well as Appveyor (Dave Jacoby)
All reference checking under the hood is handled by Ref::Util (Mickey Nasriachi)
We have several new contributors this release. Thanks to Dave Jacoby, Abdullah Diab, Glenn Fowler, and Jonathan Cast for your first patches to Dancer2!
The bug report described that in some cases, when the user searched
for an edit distance with Unicode strings, the user's input value,
$string in the following, seemed to be being overwritten and
corrupted:
$tf->distance ($string);
I couldn't reproduce the user's bug using the script he supplied, but
just in case, I went through the code and tried to find anywhere that
a string might be being overwritten, by adding const in front of
every char * pointer which was used to store a Perl string.
This led me to this
line
where the value corresponding to $string in the above is read using
SvPV, and this
line
where the value pointed to is overwritten by the code. This is a
special case which only executes when the user matches a byte string
against a character string.
I put out a notice not long ago that I was contemplating writing a guide to using the Raspberry PI with Perl.
One person who pointed out one minor mistake of mine with follow up with some other questions, asked about how to run a servo without needing a controller board. I realized that I hadn't exposed a couple of functions in the core WiringPi::API distribution that allowed a user to configure the PWM frequency, which is required as the Pi default doesn't play nice with typical servos.
The default PWM base frequency on a Pi is 19.2MHz, which is then divided by the clock signal (default: 32) and the PWM range (0-1023). So to get the default operating frequency:
# base range clck operational freq
19.2e6 / 1024 / 32 == 586Hz
This article represents my own thoughts on the matter alone and is not an
official statement on behalf of the Rakudo team or, perhaps, is not even
representative of the majority opinion.
When I came to Perl 6 around its first stable Christmas 2015 release,
"The Name Issue" was in hot debate. Put simply: Perl 6 is not a replacement to Perl; Perl 6 is not the "next" Perl; Perl 6 is a very different language
to Perl; so why does it still have 'Perl' in its name?
From what I understand, the debate raged on
for years prior to my arrival, so the topic always felt taboo to talk about,
because it always ended up in a heated discussion, without a solution at end.
However, we do need that solution.