Acme-PM-Barcelona

 view release on metacpan or  search on metacpan

lib/Acme/PM/Barcelona/12x5_ca.pod  view on Meta::CPAN

i publicar-los.

=head3 Els mòduls

Un mòdul és un fitxer de text que conté la definició d'un o més
paquets de Perl. Per exemple el paquet C<Acme::PM::Barcelona::Meeting>
defineix el codi que calcula quan serà la propera reunió dels mongers
de Barcelona. Aquest paquet es troba al fitxer següent dins del
directori de mòduls de Perl:

  Acme/PM/Barcelona/Meeting.pm

=head3 Els paquets

Els paquets defineixen espais de noms reservats per a agrupar
trossos de codi relacionat amb un mateix tema. Així s'hi poden
utilitzar els noms de funcions que hom desitgi sense que això
afecti a d'altres parts del codi.

  package Acme::PM::Barcelona::Meeting;

  sub festival {
      # ...
  }

=head3 Les distribucions

Els paquets s'agrupen dins els mòduls i aquests s'agrupen en
distribucions. Una distribució no només conté el codi d'un o
més mòduls sinó que a més a més disposa dels mecanismes adients
per a fer-ne la configuració, la verificació i la instal·lació.

Les distribucions de Perl acostumen a tenir un format concret,
especialment si hom les vol publicar al CPAN.

=head3 Avantatges del CPAN

El CPAN posa a disposició dels autors que hi publiquen un gran
ventall de serveis i avantatges a canvi de què el que publiquin
sigui lliure. Alguns d'ells són:

=over 4

=item * un repositori replicat arreu del món

=item * la publicació de la documentació dels mòduls

=item * la possibilitat que els usuaris facin comentaris i anotacions

=item * un sistema automàtic de tests de versions i plataformes

=item * un servei de notificació i seguiment d'errors

=back

=head2 Tests en Perl

=head3 Perl utilitza tests des del principi

Ja des de la primera versió de Perl, un cop construït l'executable
es verifica que es comporta com cal. El codi font de Perl inclou
un gran nombre de tests de tot tipus, que no només permeten veure
objectivament que la construcció de l'executable ha anat bé sinó
que ajudaran a detectar errors en cas que passi res.

=head3 La cultura dels tests

Aquesta filosofia d'incorporar tests va quallar molt bé des de
bon començament dins la comunitat de Perl i els autors que
publicaven mòduls amb llicència lliure de seguida es van pujar
al carro dels tests, afegint-los a les seves distribucions.

=head3 Els tests al CPAN

Avui en dia és imprescindible com a mínim tenir 1 test que
funcioni per a poder publicar un mòdul al CPAN. Això a més
facilita que els CPAN I<smokers> (robots que executen els
tests periòdicament) puguin dedicar-se a provar tot el codi
que hi ha el CPAN sense que els autors hagin de fer molts
esforços.

Com a resultat, els autors tenen informes d'error i d'èxit
en múltiples plataformes a les quals habitualment no tenen
accés i poden veure si els canvis que introdueixen en noves
versions provoquen algun maldecap a d'altra gent.

=head3 Com es poden provar els tests?

En les distribucions basades en C<ExtUtils::MakeMaker>:

  perl Makefile.PL
  make
  make test

En les distribucions basades en C<Module::Build>:

  perl Build.PL
  perl Build
  perl Build test

=head2 WWW::Mechanize

=head3 Robots web

Amb Perl es poden escriure programes que naveguen per la web.

=head3 La pàgina d'inici de La Vanguardia

Aquest programa descarrega la pàgina web de La Vanguardia.

  use WWW::Mechanize;
  
  $mech = WWW::Mechanize->new;
  $mech->get("http://www.lavanguardia.es");
  
  print $mech->content;

=head3 Una cerca a Google

Aquest programa cerca la paraula "Perl" a Google.

  use WWW::Mechanize;
  
  $mech = WWW::Mechanize->new;
  
  $mech->get('http://www.google.com');
  $mech->field('q', 'Perl');
  $mech->click('btnG');
  
  print $mech->content;

=head3 L'extracte d'un compte de La Caixa

Aquest programa treu per pantalla la primera pàgina de l'extracte
d'un compte de La Caixa.

  use WWW::Mechanize;
  
  $user = 'el-teu-dni';
  $password = 'contrasenya';
  
  # fes-te passar per un iPhone
  $iphone = "Mozilla/5.0 (iPhone; U; ...";
  $mech = WWW::Mechanize->new(agent => $iphone);

=for ToBeUsedInTheFuture =head3 L'extracte d'un compte de La Caixa (2)

  # home page
  $mech->get(
      "http://lacaixa.mobi/apl/index_es.html?select=true"
  );
  $mech->follow_link(url_regex => qr/es-mobi-menu-lo/);
  
  # fes login
  $mech->submit_form(
  	form_name => "formu",
  	fields => {
  		E => $user,
  		B => $password
  	}
  );

=for ToBeUsedInTheFuture =head3 L'extracte d'un compte de La Caixa (3)

  # segueix el primer enllac,	
  $mech->follow_link(tag => 'a', n => 1);	
  
  # captura els moviments
  ($movements) = $mech->content
      =~ m{(<ul[^>]*>\s*<li[^>]*>\s*<a.*?</ul>)}i;
  
  $mov_regexp = qr{
      <td\s+align="left"> (.+?) </td>
      .*?
      <font[^>]+> ([\d,-]+) .*? </font>
      .*?
      <li[^>]+> (\d+/\d+/\d+)
  }sx;

=for ToBeUsedInTheFuture =head3 L'extracte d'un compte de La Caixa (4)

  print "$1, $2, $3\n"
      while $movements =~ /$mov_regexp/g;
  
  # AHORRA EL CAMBIO, -2,10, 06/09/2009
  # FRANKFURT PLATJA-, -14,40, 05/09/2009
  # DECATHLON ILLA PR, -7,90, 05/09/2009
  # CAPRABO, -7,64, 04/09/2009
  # GESOIL S.A. LEVAN, -18,88, 04/09/2009
  # ...

=head2 Finance::Quote i Cache::FileCache

=head3 Com està el canvi?

Es pot obtenir el canvi actualitzat de la moneda d'arreu del món.

=head3 Conversió de dòlars a euros

  use Finance::Quote 1.16;

  $quote = Finance::Quote->new();
  $ratio = $quote->currency('USD', 'EUR');

  print "10 USD = ", 10 * $ratio, " EUR\n";

=head3 Millorem la velocitat amb una còpia temporal

  use Cache::FileCache;
  use Finance::Quote 1.16;

  $cache = Cache::FileCache->new({
    default_expires_in => '1 day',
  });

  $ratio = $cache->get("USD:EUR");
  if ( !defined $ratio ) {
    $quote = Finance::Quote->new();
    $ratio = $quote->currency('USD', 'EUR')
    $cache->set("USD:EUR", $ratio);
  }

  print "10 USD = ", 10 * $ratio, " EUR\n";

=head2 Flickr::Upload

=head3 Teniu compte al Flickr?

Una eina que utilitza C<Flickr::API> per a publicar fotos a Flickr.

=head3 flickr_upload

La manera més fàcil d'utilitzar l'eina és amb
l'ordre C<flickr_upload> des de l'intèrpret d'ordres. Primer
heu de configurar l'accés al vostre compte de Flickr seguint



( run in 1.405 second using v1.01-cache-2.11-cpan-b16cb0d3907 )