Paws The VIII (The Henry Factor)

Ok today I am going to look a the impact my changes from the last few post have had on the systems as a whole. So far I have tinkered with a few things

  1. Got my RestoreObject to work
  2. Modified the Botocore S3 json file to add in some documentation
  3. I added code to get the 'resopnse' status back by modifying both the code generation templates and the Paws/lib code
  4. Expanded on the test suite
  5. I fiddled with the S3 json file to see if I can get correct error to come up. I did roll this back as Paws does not use these
  6. Created a new test and then modified the paws lib code to get what I think is the correct response back from Paws when there is an error returned by the server
  7. Started to work on the tests I broke with my changes

So today I am going to see what I else I have broken since I have started.

Rakudo.js Final Grant Update

We have a Dart Pad inspired REPL called 6Pad that allows you to play with Rakudo.js without installing it.
We have a step by step tutorial how to get your code running in Rakudo.js

You can see an example that uses a canvas to draw a spaceship at https://perl6.github.io/6pad/#5a889cc9d6385853af2ff6a3fa165662

6pad has been used in the Perl 6 advent calendar demonstrating that it's usable by community members not directly working on rakudo.js

Rakudo.js has been released on NPM as rakudo
The Rakudo.js backend has been fully merged into the master branches of rakudo and NQP

Look at the Rakudo NPM page for information on how to use it.
The NPM package release process is fairly complex. But a repo yarn workspace helps set everything up.

For deploying Perl 6 in the browser we have a Parcel plugin parcel-plugin-nqp.
The plugin will be upgraded to Parcel 2 once that has a non-alpha relase (or maybe even sooner).

London.PM Tech Meet - Report

Having missed the last Tech Meet because of fasting during the month of Ramadan, I made every attempt to attend the 3rd Tech Meet of the year. Not only that but I decided to give a short talk on "Perl Weekly Challenge", an improved and updated version of lightning talk that I gave earlier at The Perl Conference in Riga.

Perl Unicode versions

A spell of hacking around with Unicode got me wondering which version of Unicode shipped with which version of Perl. Here's what I came up with:

Perl version Unicode version
5.7.33.1.1
5.8.03.2.0
5.8.14.0.0
5.8.44.0.1
5.8.74.1.0
5.8.95.1.0
5.9.44.1.0
5.9.55.0.0
5.10.15.1.0
5.11.35.2.0
5.13.76.0.0
5.15.86.1.0
5.17.16.2.0
5.19.56.3.0
5.21.17.0.0
5.23.08.0.0
5.25.39.0.0
5.27.210.0.0
5.29.211.0.0
5.29.912.0.0
5.29.1012.1.0

This table is in order by Perl version (obviously), and lists every time the Unicode version changed as Perl version increased. Unicode version does not increase monotonically with Perl version because Unicode 5.1.0 was retrofitted to Perl 5.8.9, which was actually released after 5.10.0.

The Unicode version numbers come from file lib/unicore/version under the top-level directory in each distribution, where it has been since Perl 5.7.3.

Paws the VII (B4 and After)

Well I left off in my last post with having 2 of the 3 tests I created failed;

ok 10210 - Got _status eq 200 from result ok 10211 - Call S3->RestoreObject from t/10_responses/s3-restore-object.3.response not ok 10212 - Got request_id eq 195AF4042CD6DF80 from result

# Failed test 'Got request_id eq 195AF4042CD6DF80 from result'
# at t/10_responses.t line 136.
# got: 'AC65B3BF8AC3AA34'
# expected: '195AF4042CD6DF80'
not ok 10213 - Got message eq Object restore is already in progress from result

# Failed test 'Got message eq Object restore is already in progress from result'
# at t/10_responses.t line 136.
# got: 'Conflict'
# expected: 'Object restore is already in progress'
ok 10214 - Got code eq 409 from result

10213 was easy to fix I just had to change the test value in the test file 's3-restore-object.3.response.test.yml'

Perl Newbies weekly update 2019/09/21

Perl Newbies weekly update 2019/09/21. Perl Newbies is a site for people who want to learn Perl from now.

I wrote articles about sin function, cos function, warnings module, FindBin module at this week.

sin function

sin function - calculate the sine value

cos function

cos function - calculate the cosine value

warnings module

warnings module

FindBin module

FindBin - Get the path of the directory where the script exists

Information

Perl Newbies is created by Giblog. Giblog is a tool to create your website and blog. If you use Giblog, you can mange all entries using git.

Author

I'm yuki kimoto, a Japanese Perl engeneer. If you want to ask question about Perl newbies, please lnform at Twitter.

Itch.scratch()

In writing my past few blog entries I’ve repeatedly come across a situation that Raku doesn’t handle as well as I could wish. It’s a little thing, but like so many other little things
its presence is a source of minor but persistent irritation.

In my previous entry I used some Raku code that illustrates the point perfectly. I needed to build an object for every value in the @values array, or a single special object if @values was empty:

Perl Weekly Challenge 26: Common Letters and Mean Angles

These are some answers to the Week 26 of the Perl Weekly Challenge organized by Mohammad S. Anwar.

Spoiler Alert: This weekly challenge deadline is due in several days from now (September 22, 2019). This blog post offers some solutions to this challenge. Please don't read on if you intend to complete the challenge on your own, which you're strongly encouraged to do.

Challenge # 1: Common Letters Count

Create a script that accepts two strings, let us call it, “stones” and “jewels”. It should print the count of “alphabet” from the string “stones” found in the string “jewels”. For example, if your stones is “chancellor” and “jewels” is “chocolate”, then the script should print “8”. To keep it simple, only A-Z,a-z characters are acceptable. Also make the comparison case sensitive.

We're given two strings and need to find out how many characters of the second string can be found in the first string.

Common Letters Count in Perl 5

Paws the VI (Pardon my Error)

Now things are going good so far but I have run into a little snag with the program that is using my S3 RestoreObject code with Paws. Namely at this point my end user is trying to make the same restore request before the first restore has finished.

Right now if I capture the error with an eval {} in my call I get in the @$ is 'Conflict';

The API documentation does state that I can get as few special errors that are interesting to me;

Perl Weekly Challenge 025: Pokemon Sequence and Chaocipher

The longest sequence

Generate a longest sequence of the following “English Pokemon” names where each name starts with the last letter of previous name.

I’m not sure whether the term “sequence” has a unique and generally accepted definition. For example, does it have to contain each element just once? If not, the longest sequence might be

girafarig girafarig girafarig girafarig girafarig girafarig girafarig girafarig...

If we want each element to appear just once in the sequence, we are in the graph theory and we search for the longest simple path. For a general graph, this is an NP-hard problem, but fortunately, our input is small enough to be solved in reasonable time.

We can implement a brute-force search (i.e. trying all the possible sequences) recursively. The recursive steps takes the sequence constructed so far and tries to extend it by all the possible next steps, calling itself to extend each of them further.

Circular observations

Selfies demonstrate one of the principal laws of physics, psychosocial development of teenagers and programming. The act of observation alters that which is being observed. It becomes more complicated if the observer is observing itself. As the observer changes, so might future observations particularly if the tool being used is known to impact the parameter that is being measured; rapidly one loses hope that any meaningful data will be obtained from such a direction of development. Sounds gibberish? Look at the collection of "duckfaces" on your teenage daughter's phone (if she ever lets you near it) and I am sure you will find no resemblance of those images to anyone you would recognise as your offspring.

Let's do it any way

London Perl Workshop CFP Deadline: Mon 30 Sept

The London Perl Workshop 2019 is fast approaching on Saturday 19 October!

We've already had some great talks submitted and will start announcing these soon. If you'd like to tell people about what you have been doing with Perl 5, Perl 6 or any related topics please submit your proposal before the end of Monday 30 September.

If you have any questions then write to us at organisers@londonperlworkshop.org - we are happy to discuss ideas with you. See you at the Workshop!

Paws the V (The Joy of Paws)

Lest see I last left off with this in my test;

not ok 10207 - Exception accessing status: Can't locate object method "status" via package "Paws::S3::RestoreObjectOutput" at t/lib/Paws/Crawler.pm line 19.

I think I am going to fix that but first I will as a general question up on the Paws website to get a little advice in case I am going down a rabbit hole.

While I am waiting for a response this is a good opportunity to have a look at why test driven development is fun.

Right now I have that failing test and I would like to make it pass, but first, let's create the second test for the '202' case.

In Paws test when we are writing more than one test for the same call we add in a sequential number in the test name and data so it will keep the same order when the test cases are run.

So a quick rename and copy I know have

Task::Kensho needs your help!

CPAN is wonderful and it is vast. Task::Kensho offers a curated look at the best it has to offer for those who don't know what to look for. But to remain useful, it must keep up with the trends of CPAN and the community. Thus, the community's input is vital to its maintenance.

Please, take a moment and look through the open issues. Comment or add a reaction in support of changes that make sense to you, and open a new issue if you think something is missing.

Perl Weekly Challenge W025 - Longest Pokemon Sequence, Chaocipher

New week new challenge!

And for this week we have two awesome tasks for this week's challenge, too awesome not to blog about it.

If you'd like to join the fun and contribute, please visit the site site managed by Mohammad S Anwar.

Task #1 - Longest Pokémon Sequence:
Generate a longest sequence of the following “English Pokemon” names where each name starts with the last letter of previous name.

audino bagon baltoy banette bidoof braviary bronzor carracosta charmeleon cresselia croagunk darmanitan deino emboar emolga exeggcute gabite girafarig gulpin haxorus heatmor heatran ivysaur jellicent jumpluff kangaskhan kricketune landorus ledyba loudred lumineon lunatone machamp magnezone mamoswine nosepass petilil pidgeotto pikachu pinsir poliwrath poochyena porygon2 porygonz registeel relicanth remoraid rufflet sableye scolipede scrafty seaking sealeo silcoon simisear snivy snorlax spoink starly tirtouga trapinch treecko tyrogue vigoroth vulpix wailord wartortle whismur wingull yamask

The above names borrowed from wiki page.

SPVM monthly report 2019/9/11

Do you hear SPVM until now?

If you don't hear SPVM, it is good chance.

SPVM is the project to improve Perl culcuration and array operation.

I recently do benchmark.

SPVM add(+) operator performance in for loop is same as C language!

It is faster than Perl 100x.

I'm creating SPVM document in Japanese.

You can see the following.

SPVM Document

I almost finish(90%) specifications.

SPVM Launguage Specification

SPVM Exchange API Specification - Link Perl world to SPVM world

SPVM Native API - Link SPVM World to C World

Paws the IV

Well I left off from my last post doing a little update to the documentation of Paws which introduced the basic layout and concept of botocore json data and it use in auto-generating code. In today's post I am going to look at an equally important part of auto-generated code and that is testing said code.

Paws has a massive test suite which is nice and good the only problem I have with it is it is 100% static data driven.

What this means you are testing against canned expected results, or as we say in the testing world

nugas quae in nugas quae sunt


or in other words you are not really testing anything you are just testing a test.
Lets look at a typical Paws test, the tests for S3 DeleteObject
It consists of two Yaml files the 'test';

Perl Weekly Challenge 25: Pokémon Sequence and Chaocipher

These are some answers to the Week 25 of the Perl Weekly Challenge organized by Mohammad S. Anwar.

Spoiler Alert: This weekly challenge deadline is due in several days from now (September 15, 2019). This blog post offers some solutions to this challenge, please don't read on if you intend to complete the challenge on your own.

Challenge # 1: Sequence of Pokémon Names

Generate a longest sequence of the following English Pokemon names where each name starts with the last letter of previous name.ù

audino bagon baltoy banette bidoof braviary bronzor carracosta charmeleon cresselia croagunk darmanitan deino emboar emolga exeggcute gabite girafarig gulpin haxorus heatmor heatran ivysaur jellicent jumpluff kangaskhan kricketune landorus ledyba loudred lumineon lunatone machamp magnezone mamoswine nosepass petilil pidgeotto pikachu pinsir poliwrath poochyena porygon2 porygonz registeel relicanth remoraid rufflet sableye scolipede scrafty seaking sealeo silcoon simisear snivy snorlax spoink starly tirtouga trapinch treecko tyrogue vigoroth vulpix wailord wartortle whismur wingull yamask

Simple CLIs using Do v1.70

Command-line Interfaces using Modern Perl

If you Perl or you're Perl-curious, or you build command-line interfaces, you should read this, but before we dive in building the command-line application, lets first talk about the command line.

Command-line programs have been with us since the early days of the computer and are programs based upon on commands (single or multiple). A command-line program is a program that operates from the command-line or shell.

A command-line interface is a user interface that is navigated by typing commands in a terminal, shell or console, as opposed to using a GUI (graphical user interface). The console is a display mode for which the entire monitor screen shows only text, no images or GUI objects.

According to Wikipedia:

Perl Newbies weekly report 2019/9/11

I started Perl Newbies recently.

Perl Newbies is for yung people who want to learn Perl.

Perl Newbies describes basic things of Perl, not complex things.

Perl Newbies weekly report

I add the following entries about Functions and module.

What is "use strict"?

You may think you see perl program at first.

I describe effects of strict module.

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.