I left off from yesterdays
post
with few more tests to clean up and a new one or two to write up. Might as well get the low hanging fruit first and that is this error;
Can't locate object method "dynamic_conditions" via package "Database::Accessor::Driver::Test" at 43_dynamic_conditions.t line 54.
and the change was a very easy removal of that 'dynamic_' from the test;
I don't mind working with Spreadsheets. Much of my work consists of creating
Spreadsheets from SQL queries. Sometimes, the resulting spreadsheet should be
a pivot table, listing some values across the spreadsheet. For most of my
Spreadsheet-generation needs, Querylet
is sufficient, but it cannot create pivot tables.
Still stuck in the Accessor.pm in the Moose-pen today.
Since I decided in yesterday's post to make one more round of changes I am a little closeer to getting back to Driver::DBI but not much.
For today's changes I decided to go full out and re-factor a good chunk of the common code between Accessor.pm and any DAD that I might write. Not to bore you with reamls of code pasting you will never read I will give you the over-view.
First action was to strip out the attributes from Database::Accessor::Roles::Driver and Database::Accessor that where the same and put them into a new role 'Database::Accessor::Roles::Common'. My Driver Role is now just a few lines
As proposed to and approved by the Grant Manager, I've extended the due date
for this grant by 1 extra month, in exchange for doing some extra optimization
work on IO routines at no extra cost. The new completion date is May 22nd;
right after the next Rakudo compiler release.
Communications
I've created and published three notices as part of this grant, informing the
users on what is changing and how to best upgrade their code, where needed:
I recently added some functionality for random number generation to my modules, which led me on a digression about rand(). This is a short look at some modules for getting random floating point values. A later one will look at random ints and bytes.
The Perl Toolchain Summit (PTS)
is the annual event where we assemble the people who are actively working on the Perl toolchain, and give them 4 days to work together. In this blog post, we'll look at how we decide what everyone will work on, and give you a chance to make suggestions.
This blog post is brought to you by Perl Jobs by Perl Careers,
which as well as helping Perl programmers find jobs, supports a number of community events, including the QA Hackathon last year.
Autoload can be a very powerful tool in Perl, though often you should first consider if there's a better way; Autoload is not necessarily the best solution for cases where you just need to generate many methods by name, and definitely is not the best solution for "wrapping" static methods. But if your use-case does necessitate methods created on the fly, I have released Autoload::AUTOCAN to make this easier to get right.
Keeping in step with yesterday's post I am continuing with my code-review of Accessor.pm. It was suggested that I explain a little more on my reasons for doing most of the validation on the Accessor.pm side rater than the DAD side so here we go.
As today’s title suggests I want to make a promise to the DAD from the Accessor.pm that all the attributes that I have passed down to it are ready to go into a the requested CRUD query, so only a minimal amount of extra Database::Accessor::Driver logic is required.
What this mean is that I will have to carefully explain to potential users that the Update and Create methods only work with the initial set of 'Elements' and only with elements that have the same View. I have already did this one in yesterday's post.
In my long-term quest to host all of my data on my systems, one of the major
points is to replace the note-taking app Google Keep with something that allows
me to take my notes back to me. I've looked at various open-source apps for
taking and synchronizing notes, but they either feel like overdesigned monsters
that don't fit my workflow (Laverna) or don't have good synchronization from
mobile phone to the server.
You are invited to join us for this months Sydney PM meeting. We are hosted for the fist time by BarNet and we are glad and grateful for their invitation.
Everyone with an interest is welcome regardless of your experience with Perl and although we appreciate people RSVP'ing on Meetup, there is no need. Feel free to show up (and bring a friend) if you can make it.
There will be two speakers.
Lloyd will be speaking on his config management system, written in perl6
Brendan will be speaking about HashiCorp's Vault software, and how you can make use of it in your systems
When? Tuesday, April 18, 2017 6:00 PM
Where? BarNet ( Technology Dispute Centre ) 7/155 King Street, Sydney (St James Station is probably closest)
After yesterday's post where I decided to much more validation on the Accessor side of things I had a chance to takke a deep and close look at Accessor.pm.
A code review is always a good thing and I found a few problems right from the start, in mose of my CRUD functions I was still doing this
return $container;
which is dead wrong and funny thing I did not have a check for this. So today I added that in with a simple change to 20_dad_load.t
Hello everyone, today I'd like to present
Neaf [ni:f], a web tool
that tries hard to stay out of the way. Initially it was started for
my own education. However, the result may be worth looking at even for
users of serious stuff like
Mojo,
Dancer,
and Kelp.
The main usage scenarios are perhaps sharing an existing module or
script via the network, as well as supplementary tools and admin interfaces.
My day job involves programming in Go.
One feature I like about Go is "defer".
Any function that's deferred gets ran at the end of the functions scope.
As a very simple example, the program below prints
hello
world
instead of the other way around, because "world" is deferred until the main() function exits.
I just saw the release of Aristotle's Try::Tiny::Tiny to CPAN, which aims to speed up Try::Tiny. That led me to wonder how fast the various Try* modules were. I cannibalized the benchmark code from Try::Catch, and off I went.