Wednesday, February 27, 2013

Snippets Teil 1 - 100 Distributionen mit den meisten "++" auf MetaCPAN

Mojolicious ist ein Modul, das gewisse Diskussionen auslöst. Zum Einen hat es den Vortreil, dass es alle notwendigen Module mitliefert und somit keine Abhängigkeiten (außer Perl > 5.10) hat, zum Anderen nutzt es nicht CPAN.

Klingt paradox, aber genau so ist es. Viele sagen, dass Mojolicious Anti-CPAN ist und damit die Anti-CPAN-Haltung einiger Unternehmen unterstützen würde. Im Perl-Weekly Newsletter #64 sind ein paar Blogposts zu dem Thema verlinkt.

Ich kann die Argumente nachvollziehen, aber ich persönlich finde es auch eine Stärke von Mojolicious. Man kann das Modul sehr einfach auch auf Shared Webhosting Paketen installieren - man muss nicht erst noch die ganzen Abhängigkeiten installieren.

Außerdem hat Sebastian Riedel ganze Arbeit geleistet. Die Module, die die Basisarbeiten machen, sind ausgereift und haben einige nette Features. Eines der Module, die ich im Moment am häufigsten verwende ist Mojo::UserAgent (und hat damit LWP::UserAgent abgelöst). Gerade wenn ich irgendwelche JSON-APIs von Webseiten abfragen möchte, ist es schnell und einfach. Und ich kann aus der Antwort schon direkt den geparsten JSON-Part holen und mit einem Auszug daraus arbeiten.

Hier ein Beispiel wie man die Distributionen auf MetaCPAN bekommt, die die meisten "++" bekommen haben:



#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';
use Mojo::UserAgent;

my $ua = Mojo::UserAgent->new;

my $res = $ua->post(
    'http://api.metacpan.org/v0/favorite/_search' => json => {
          "query" => { 
            "match_all" => {}
           },
          "facets" => { 
            "leaderboard" => {
              "terms" => {
                "field" => "distribution",
                "size"  => 100
          } } },
          "size" => 0
    }
);

my $terms = $res->res->json( '/facets/leaderboard/terms' );
say $_->{term} for @{$terms};

No comments: