Affichage des articles dont le libellé est perl. Afficher tous les articles
Affichage des articles dont le libellé est perl. Afficher tous les articles

samedi 26 février 2011

Perl Dancer - Sinatra Ruby



En consultant les pages de compte rendu des Perl Mongueurs Paris , je suis tombé sur cette phrase:
Guillaume a installé Dancer sur sa machine. Compte tenu des dépendances, il a été obligé d'installer Moose et « la moitié de CPAN ». La recherche des dépendances n'est pas un problème lorsque l'on utilise CPAN.pm,


Quel est ce fameux Dancer ? . Une recherche après sur google, je tombe sur:
http://perldancer.org/ : Minimal-effort oriented web application framework for Perl (inspired by Ruby's Sinatra)
Sinatra Ruby est cadriciel qui permet d'écrire un application WEB en quelques lignes.

Le grand Confucius disait même: si tu veux connaitre Ruby, regarde le code source de Sinatra.

En effet parmi les étapes recommandées pour connaitre Ruby , la lecture du code source de Sinatra figure en bonne place.


Reading the Sinatra code is a good start. You might also want to read up on Rack, the HTTP interface Sinatra uses. Not necessarily for coding practices but just to understand how Sinatra fits in the whole stack.

#!/usr/bin/env perl

Avec dancer :

use Dancer;
get '/' => sub {
"Hello World!"
};
dance;
$ perl bin/app.pl &...
$ curl http://localhost:3000/
Hello world!


Avec Sinatra:

require 'sinatra'
get '/hi' do
"Hello World!"
end

mercredi 4 novembre 2009

Une devinette


Petite devinette au sujet de l'image ci-contre:
Cette image est :
  • Un dessin réalisé par ma fille en CM2
  • Le logo d'un nouveau jeux sur WII
  • Le boss du niveau 65 de DOOM II (hyper difficile à tuer)
  • Le logo de l'association pour la dépénalisation de la culture des champignons de Paris sur balcon.
  • Le logo de la version 6 du langage post-moderne Perl

Indice: la solution est dissimulée dans les ailes.

mardi 17 juin 2008

Comment mesurer la vitesse de propagation de l'information ?

Je suis souvent amené à mesurer la vitesse de propagation de l'information au travers des annuaires.
Pour cela j'ai un programme qui réalise les opérations suivantes:

a) Modifier une entrée de l'annuaire maitre LDAP
b) Armer un timer
c) Interroger à intervalle régulier l'annuaire replicat jusqu'a obtenir l'information à jour.

Voici le programme :
#!/usr/bin/perl -w

### by germanlinux

use Net::LDAP;
use Time::HiResi qw( usleep ualarm gettimeofday tv_interval) ;
my $master= { 'host' => 'ip.ip.ip.ip' ,
'dn' =>'dn bnd' ,
'password' => 'password' ,
'base' => 'base',
'filter' =>'filtre'
};
my $replicat= { 'host' => 'ip.ip.ip.ip' ,
'dn' =>'dn bnd' ,
'password' => 'password' ,
};
#### first bind to master ########
my $master_ldap_connection = Net::LDAP->new($master->{host});
my $msg =$master_ldap_connection->bind($master->{dn} ,
$master->{password} ) ;
my $rech = $master_ldap_connection->search (
base =>$master->{base},
filter =>$master->{filter} ,
);
my $retour= $rech->entry(0) ;
exit if !$retour;
my $dn= $retour->dn;
#### armement du chronometre
my $change=time();
my $t0= [gettimeofday];
#### modification ###########
my $modif = $master_ldap_connection->modify($dn,
replace => { 'unelettre' => $change} );
$master_ldap_connection->unbind;
############# boucle de calcul de temps de propagation ##############
my $not_found=1;
while ($not_found) {
my $replicat_ldap_connection = Net::LDAP->new($replicat->{host});
my $msg =$replicat_ldap_connection->bind($replicat->{dn} ,
$replicat->{password} ) ;
my $compare = $replicat_ldap_connection->compare ($dn,
attr => 'unelettre' ,
value => $change,
);
$not_found =0 if ($compare->code == 6 ) ;
$replicat_ldap_connection->unbind;
sleep(5);
}
## calcul t1-t0;
my $delta = tv_interval ($t0);
print "Vitesse :$delta\n";