-+  Associazione
-+  Documenti
-+  Eventi
-+  Community
-+  Blog
-+  Link

Ottobre 2013

Dom Lun Mar Mer Gio Ven Sab
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Cerca






 


« Agosto 2006 | Home | Ottobre 2006 »

Podcast mania

Il mio problema è che sono pieno di colleghi. Ne ho uno che s'è comprato un iPod nano 8G di recente (bellissimo!), e s'è innamorato dei podcast. Uno di questi è quello di Radio 2 della RAI, che mette a disposizione varie trasmissioni più sul faceto che sul serio.

Il tizio di turno si lamenta perché il feed RSS del podcast, pur integrandosi alla perfezione con iTunes... gli fa vedere troppe cose. In particolare, a lui non interessano tutti i programmi, ma solo un paio. Che fare? Beh, un'idea potrebbe essere quella di prendere il feed RSS e filtrarlo lasciando solamente quello che ci interessa. E' per l'appunto quello che ho fatto con XML::Twig:

#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;

my $rss_url = shift
  || 'http://www.radio.rai.it/radio2/podcast/rssradio2.jsp';
my $filter = shift || 'Ottovolante';
$filter = qr/\A$filter\z/;

my $twig = XML::Twig->nparse(pretty_print => 'indented', $rss_url);
foreach my $item ($twig->descendants(qr/\Aitem\z/)) {
   my ($author) = $item->descendants(qr/\Aauthor\z/);
   $item->delete() unless $author->text() =~ /$filter/;
}
$twig->print();
Le inizializzazioni sono banali; in questo caso, per default prendiamo il feed di cui sopra, ed ipotizziamo di voler isolare la trasmissione "Ottovolante". XML::Twig è sufficientemente simpatico da prendersi il file direttamente (con nparse, che immagino stia per new & parse), per cui $twig è già un oggetto con precaricato tutto quel che ci serve.

I vari elementi del podcast sono racchiusi nel tag item: nel ciclo foreach li cerchiamo e ci assicuriamo di cancellare tutti quelli il cui sotto-campo author non corrisponde al filtro impostato. Da notare che tali campi non sono figli diretti della radice del documento, ma non importa: il metodo descendants fa tutto da solo. Una volta finito basta stampare e siamo a posto!

Rendere questo script un CGI vagamente più generale è un gioco da ragazzi... ma lasciamolo fare al collega ;)

Inviato da polettix alle 00:12 | Commenti (0)

iPod mania

Un mio collega appassionato di musica classica s'è comprato, un po' di tempo fa, un bell'iPod Video: il video non serviva, ma con 30 GB poteva metterci di tutto.

Ora, a parte che l'ha praticamente riempito, è successo che ha cominciato a dargli noie su un canale audio. Santa garanzia gli consentirà una sostituzione, ma a che prezzo! Non gli faranno il trasferimento dei dati. Fortunatamente i brani già li ha, ma... da quel che ho capito, aveva fatto tante piccole "modifiche" ai tag ID3 in quelli trasferiti sull'iPod, e di perdere tanto lavoro non gli andava giù. Allora mi ha chiesto se c'era un modo di esportare la lista dei brani in iTunes sotto forma di file XML.

Premesso che non so cosa voglia farci esattamente, ho pensato che - figuriamoci! - Perl sarebbe stato adattissimo allo scopo. Un salto su CPAN, una rapida ricerca per ipod e salta fuori nientepocodimenoche Mac::iPod::GNUpod. Mi ero copiato il file iTunesDB in /tmp... ecco cosa è uscito fuori:

#!/usr/bin/perl
use strict;
use warnings;
use Mac::iPod::GNUpod;

my $ipod = Mac::iPod::GNUpod->new(
    itunes_db => '/tmp/iTunesDB',   # File input
    gnupod_db => '/tmp/GNUtunesDB', # File output
) or die "ach!";
$ipod->read_itunes();
$ipod->write_gnupod();
Insomma, è venuto fuori che bastava leggere il file DB Apple e scrivere quello GNUpod!

Un'avvertenza: la documentazione mette in guardia sul fatto che dovrebbe funzionare solo su sistemi tipo Unix... insomma, una buona occasione per dare un'occhiata a Linux ;)

Inviato da polettix alle 02:47 | Commenti (0)

The State of the Onion 10

Come è consuetudine, Larry Wall ha tenuto durante OSCON il suo talk The State of the Onion. Non l'ho ancora letto, ma ad una prima occhiata mi sembra non tradisca le aspettative: divertente, brillante, di ispirazione. Buona lettura :)

Inviato da larsen alle 14:03 | Commenti (0)

Link! (21/9/2006)

Questa settimana giusto un paio di link:

  • EuroOSCON2006 volge alla sua conclusione. A partire da questo link foto, notizie e resoconti
  • Interview: Perl 6 on Perl 5 Audrey Tang pubblica la breve intervista che ha concesso a Flávio Soibelmann Glock, a proposito dello stato di Pugs e Perl 6

Se vuoi contribuire alla raccolta settimanale di link per Perl.it manda una mail a larsen@perl.it, indicando i link che ti piacerebbe segnalare, con una breve descrizione per ciascuno.

Inviato da larsen alle 01:18 | Commenti (0)

OpenExp

oebannerpiccolo.png

Tra un paio di settimane si svolgerà a Cerea (VR) la prima edizione dell' OpenExp, un evento dedicato all'Open Source e alla sua diffusione. Il programma della conferenza prevede anche qualche talk sul Perl (per i dettagli dei quali, vi rimando al programma dettagliato):

  • "Linguaggio Giusto Al Momento Giusto (integrazione Fra Linguaggi Di Alto Livello)
  • POE - Perl Object Environment
  • Mathweb, Un'interfaccia Web Per Il Calcolo Scientifico

Inviato da larsen alle 14:13 | Commenti (0)

L'operatore che non c'è

Di recente, mi sono imbattuto in Enigmatic Perl,un talk tenuto durante YAPC::EU 2006 a Birmingham (rubo un po' il lavoro a larsen segnalandovi la lista dei talk disponibili). L'autore spiega alcuni costrutti piuttosto criptici che si possono trovare in giro (come l'infame select((select($h), $| = 1)[0])), ed uno mi ha colpito in particolare perché mi è stato utile di recente.

Sostanzialmente il mio problema consisteva nel voler forzare un contesto scalare su un'espressione che però andava, inizialmente, valutata in contesto lista.

*** OK, PANIC ***

L'esempio che riporta l'autore dell'articolo è il seguente: supponete di voler contare quante volte ricorre la parola 'ciao' in una stringa qualsiasi; si potrebbe essere tentati di fare:

my $stringa = 'ciao a tutti, ciao a tutti, ciaoooooo';
my $occorrenze = $stringa =~ m/ciao/g;  # ERRORE: NON CONTA PROPRIO NIENTE!

Ahinoi, il risultato in occorrenze è 1 invece di 3, semplicemente perché il match viene effettuato direttamente in contesto scalare, nel qual caso dà un semplice risultato vero o falso.

La soluzione più elegante (e forse meno leggibile :) individuata è questa:

my $stringa = 'ciao a tutti, ciao a tutti, ciaoooooo';
my $occorrenze =()= $stringa =~ m/ciao/g;

utilizzando cioè =()=, l'operatore che non c'è. Non si tratta, infatti, di un operatore dalla forma bizzarra, ma di una doppia assegnazione, la prima (a destra) dal match ad una lista (rappresentata dalle due parentesi), la seconda dalla lista allo scalare, che è in effetti ciò che ci interessa per "contare" il numero di occorrenze.

Nel mio caso, è stato utile per avere questo tipo di conteggio da una funzione sensibile al contesto di chiamata, come ad esempio quella che segue:

sub sensibile {
   my @retval = qw( ciao a tutti );
   return @retval if wantarray;
   return \@retval;
}

Questa funzione, come si può vedere, restituisce una lista quando chiamata in contesto lista (ossia, quando wantarray è "vera"), altrimenti restituisce un riferimento all'array con i risultati. Per avere il conteggio degli elementi restituiti, quindi, non si può scrivere:

my $conteggio_errato = sensibile(); # ERRORE: OTTENGO UN RIFERIMENTO!

perché altrimenti otterrei come risultato un riferimento ad un array! Con l'operatore che non c'è, invece, risolvo il mio piccolo problema di conteggio:

my $conteggio_corretto =()= sensibile();

Dove ho trovato una funzione del genere? In Mail::IMAPClient, funzione unseen! Il che porta all'inevitabile domanda: "ma non facevi prima ad utilizzare la funzione unseen_count?!?" - ehr...

Inviato da polettix alle 18:18 | Commenti (0)

Link! (12/9/2006)

In extremis, ecco i link di questa settimana:

  • CPAN 6 Così come Perl 6 sarà il successore di Perl 5, CPAN 6 dovrebbe essere l'evoluzione dell'attuale CPAN. Qui si parla del progetto.
  • Vim Perl Support Se usate Vim per programmare in Perl, val la pena di dare un'occhiata. Anche solo per prendere spunto...
  • Perl Audio Converter Perl Audio Converter is a tool for converting multiple audio types from one format to another. (segnalato da ludan)
  • tprove_gtk Un proof of concept: un tool GUI per l'esecuzione di test.

Se vuoi contribuire alla raccolta settimanale di link per Perl.it manda una mail a larsen@perl.it, indicando i link che ti piacerebbe segnalare, con una breve descrizione per ciascuno.

Inviato da larsen alle 00:07 | Commenti (0)

Un breve tutorial su Jifty

Sono già due volte di seguito che dimentico di segnalare, nel post settimanale, un piccolo ma istruttivo tutorial scritto da Ovid nel suo blog sul portale O'Reilly. Ecco il rimedio:

Hey, That's Pretty Jifty, er, Nifty

Inviato da larsen alle 10:07 | Commenti (0)

Il primo technical meeting di Firenze.pm

Siamo orgogliosi di segnalare il primo technical meeting di Firenze.pm.
Avrà luogo il 28 Settembre, presso gli uffici di Dada Spa, in Viale Giovine Italia, 17, a Firenze.

Le tempistiche e il programma sono ancora in fase di definizione, ma possiamo anticipare alcuni degli argomenti che si tratteranno (con la formula dei lighting talk):

  • Perl::Tags
  • Test-driven programming
  • IPW2006: come è andato, cosa è successo, perchè vale la pena di partecipare al prossimo

C'è spazio per altri interventi, e ovviamente invitiamo chi volesse cimentarsi a inviarci una proposta. Per dettagli, notizie, proposte e così via, visitate il sito di Firenze.pm, oppure scrivetemi a stefano.rodighiero@gmail.com

A presto! :)

Inviato da larsen alle 02:20 | Commenti (0)

Link! (5/9/2006)


Questa settimana è YAPC::Europe a farla da padrone, con il molto materiale che emerge come al solito dalla conferenza.

  • What was that again? Il link alle slide del talk di acme, che per la gioia di emazep parla proprio di KinoSearch. Ricco di spunti, piacevole da leggere, e arancione, ovviamente :)
  • The Perl Review Il 1° Settembre è uscito il nuovo numero di The Perl Review. Anche se la rivista è disponibile su abbonamento, si può leggere liberamente l'articolo di Jim Brandt sulla Google Summer of Code


La foto è di Andrew David Black

Se vuoi contribuire alla raccolta settimanale di link per Perl.it manda una mail a larsen@perl.it, indicando i link che ti piacerebbe segnalare, con una breve descrizione per ciascuno.

Inviato da larsen alle 01:58 | Commenti (0)

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google