mardi 24 juin 2008

Fete de la musique 2008 chez Yves et Marie

Invités chez Marie et Yves cette fête était particulière par la place occupée par les jeunes artistes. La nouvelle génération avait pris le micro et les instruments pour faire une brillante démonstration de leurs talents.
La soirée était réussie aidée en cela par la température estivale.
Quelques photos :









Et surtout une jeune canadienne nous a chanté :Jeff Buckley's Hallelujah

Cette chanson entendue dans un épisode du Docteur House est renversante , mais cette jeune fille l'a interprétée de manière encore plus inspirée:



fetemusique2008-4
envoyé par germanlinux


Pour les photos j'ai utilisé Flickr ce site permet de déposer des albums photos pour partager les images.
les photos ici

vendredi 20 juin 2008

cockpit d'un A380 en 3 D

Un superbe panaramique animé de l'interieur du cockpit d'un A380 en 3 D.

LE lien est ici.

Une capture d'écran : on distingue en bas de l'écran des boutons pour commander le déplacement de la caméra.

mardi 17 juin 2008

Comment verifier l'état de replication de syncrepl ?

Pour connaitre le niveau de replication de syncrepl , il faut interroger l'attribut 'contextCSN' du maitre et du replicat

Voici un exemple de programme qui réalise cette opération :
#! /usr/bin/perl
### by germanlinux
use strict;
use Date::Calc qw(Delta_DHMS);
use Net::LDAP ();
## mes fonctions
sub lookup_csn {
my ($ldap, $server_name) = @_;

my $search = $ldap->search(
scope => 'base',
base => $server_name->{base},
filter => "(objectclass=*)",
attrs => [ 'contextCSN' ]
);

$search->code() and do {
print STDERR "Error: failed to execute search on
$server_name->{host}: "
. $search->error() . " (" . $search->code() .
")\n";
exit(1);
};

my $entry = $search->shift_entry() or do {
print STDERR "Error: search on $server_name->{host} failed to find
entry\n";
exit(1);
};
my $csn = $entry->get_value('contextCSN');
if (!defined($csn)) {
print STDERR "Error: no contextCSN attribute found in
$server_name->{host} entry\n";
exit(1);
}
return $csn;
}

my $ldap_master = Net::LDAP->new($master->{host}, ) or do {
print STDERR "Error: failed to connect to LDAP master: $@";
exit(1);
};

my $ldap_replicat = Net::LDAP->new($replicat->{host},port => $replicat->{port},) or do {
print STDERR "Error: failed to connect to LDAP replicat: $@";
exit(1);
};

my $msg1 =$ldap_master->bind(dn =>$master->{dn} ,
password => $master->{password} ) ;

my $msg2 =$ldap_replicat->bind(dn =>$replicat->{dn} ,
password =>$replicat->{password} ) ;

my $master_csn = lookup_csn($ldap_master,$master);
my $replicat_csn = lookup_csn($ldap_replicat, $replicat);

if ($master_csn eq $replicat_csn )
{ print "0 - 0\n";

}
else {

my $master_csn_date=$master_csn;
my $replicat_csn_date =$replicat_csn;
$master_csn_date=~ s/Z.*//;
$replicat_csn_date =~s/Z.*//;
(my $y1,my $m1,my $d1,my $h1,my $mm1,my $s1) = $master_csn_date=~/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/;
(my $y2,my $m2,my $d2,my $h2,my $mm2,my $s2) = $replicat_csn_date=~/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/;
(my $dt,my $ht,my $mmt,my $st) = Delta_DHMS (
$y2,$m2,$d2, $h2, $mm2,$s2,
$y1,$m1,$d1, $h1, $mm1,$s1,
);

print "$master_csn_date - $replicat_csn_date\n";
my $deltamin = ($ht * 60) + $mmt ;
print "$dt - $ht - $mmt - $st\n";
print "$deltamin minutes\n";
}



Le résultat du programme est de la forme :

20080617144859 - 20080617140355
0 - 0 - 45 - 4
45 minutes

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";

Ce soir (mardi 17/06) comment devenir champion du monde ?

Je ne parle pas foot , mais d'ordinateur . Ce soir vers 19h la version 3 de firefox sera disponible.
A cette occasion , il vous est demandé d'aider à battre un records mondial de téléchargement.

Donc ce soir et demain rendez vous ici.

Les nouveautés :
*Une couleur dans la barre d'adresse en fonction de la classification du site.
*Une 'super barre' ( awesome bar) d' adresse .


Voila , il faut l'essayer

Mon nouvel habit de lumière

La nuit pendant que vous dormez , Super German veille sur Gotham city.

Pourchassant sans relâche les vista et autres créatures malfaisantes sur votre PC. Pour ensuite les erradiquer sans pitié.

lundi 16 juin 2008

vi : virez moi ces couleurs

Quand on lance vi sur une machine , c'est le programme VIm qui est appelé à la place de ce bon vieux vi . Mais vim affiche les sources des programmes en utilisant la coloration syntaxique.

Or souvent le programme devient illisible . Pour remédier à ceci 2 ou trois astuces :
  • Créer un alias vers le vrai vi (alias vix='/bin/vim-minimal' )
  • Dans le mode édition faire :sy off
  • Modifier les caractéristiques du terminal

samedi 7 juin 2008

Le bookcrossing ou comment faire découvrir des livres à d'autres personnes

Il y à quelques jours j'ai abandonné un livre sur un lieu public. Mais se livre n'était pas seul : j'avais préalablement collé une étiquette sur la couverture et la premiere page. Sur cette étiquette était indiqué un numéro de référence et un lien vers le site de bookcrossing. L'idée de ce site est simple : suivre le voyage de lecteur en lecteur de son livre . Chaque lecteur devant ajouter une entrée (un commentaire) sur le site. J'ai déposé mon livre dans la salle Internet d'un centre de formation où je donnais un cours. Le livre est resté sur une table 1 heure. Les gens avaient peur de le prendre malgré l'invite sur la couverture.

Comme premier essai j'ai pris :





La Conspiration des ténèbres

by Theodore Roszak

C'est un très bon roman, j'ai mis dans la note de lecture :
Pour mon premier essai de bookcrossing j'ai choisi un roman qui mêle cinema,histoire des religions, mystères et quete initiatique.
C'est une enquête sur un film , un cinéaste disparu.
Un bon moment de lecture

Il faut sauver le soldat 'souris'

Un jeu très simple , votre souris se trouve sur une image vide , qui peu à peu se remplie de soldat , de tank ou d'avion . Tous ont une seule cible :votre pointeur de souris. C'est pas compliqué , ca va vite . Le lien ici. Mon record : 50 s.