À un article qui pose la question des interférences dans le monde du wireless, quelqu’un avec qui je suis bien d’accord dit

[...] nowadays I see wireless being installed everywhere, even when not needed. I know people who connect their desktop to the modem 10 feet away by wireless. And two months ago I went to a big store to buy a simple ethernet card and they told me "nobody produces them anymore, get wireless".[...]

Ce à quoi quelqu’un répondit

Lemme guess: Circuit City?

Bon, il faut quand même se tenir au courant des dernières faillites aux US, mais ça a fait quand même bien rire votre serviteur.

Cela fait quelques mois que nous sommes passés en courant porteur (CPL), en utilisant un DHP-300 de chez D-Link.
En fin d’année dernière, nous avons eu une surcharge électrique occasionnée par le transformateur 110/220 VDC. Une sombre histoire d’imprimante (laser) débranchée, en position allumée, qui fait disjoncter le courant à son branchement sur le transformateur.

Seuls deux appareils ont grillé, les deux qui récupéraient leur connexion réseau directement du courant porteur : la boite Linksys de voix sur IP et la carte mère de l’ordinateur.
Beaucoup d’appareils électriques étaient branchés sur le même fusible : l’imprimante, le modem ADSL, l’ecran LCD, le scanner (etc.). Eux sont intacts.

Il semblerait logique d’imaginer que le DHP-300 a fait remonter la surcharge électrique par les câbles réseaux.
Conclusion ? Depuis cette aventure, un switch (commutateur) isole l’ordinateur familial de sa boite CPL.

Un article suivra (peut-être) sur le débit réseau que nous obtenons.

34 952 packages disponibles au compteur de l’Ubuntu des familles. Pas toujours facile de se rendre compte quand l’un d’entre eux pourrait être utile.
C’est là qu’entre en jeu screenshots.debian.net, et ses captures d’écran des packages Debian.
Il  a permis de dégoter entre autres ri-li, qui a presque autant de succès que la version en bois qui trône au milieu de la salle de jeux.

Le firmware original de Mon iAudio X5, aimant pomper allègrement sur la batterie, se trouva fort dépourvu quand l’hiver et ses températures négatives fut venu.
Pas moyen de démarrer quand il fait frais et que les dix premières secondes sont consacrées à utiliser le disque dur de manière irraisonnée.
Vint alors Rockbox, ses playlists, lecture de vidéos et autres fonctionnalités que mon X5 ignorait.
Il peut alors chanter tout l’hiver, monsieur X5.
Rockbox

nov 08 2008

Lenteurs d’Intrepid

Guillaume | Geek | 1 Commentaire

Depuis la mise à jour vers Ubuntu Intrepid, notre bon vieux P4 se traînait. Il montrait des faiblesses à la lecture de vidéos, et surtout plus énervant pendant les rafraichissements de fenêtres. Le seul moyen de lui donner un peu de fraicheur était de mettre en route Compiz, via les effets visuels.
Problème habituel, sur notre carte graphique (Intel 82865G), Compiz ne parvient pas à gérer les deux sessions X simultanées dont nous avons besoin.

Le fait que Compiz résoud le problème est un indice, cependant. Indice que quand la majeure partie des tâches graphiques est envoyée au GPU, les choses se passent mieux.

Ah, et Facebook aussi était très lent.

En fait, le CPU semblait avoir pris un coup, comme le montre ce graphique issu de Munin. Désolé pour les blancs, l’ordinateur était éteint la nuit la semaine dernière.
Si vous n’aviez pas deviné, la mise à jour vers Intrepid, c’était le 5 dans la journée.

Et dans la même journée, j’ai essayé de remettre en route l’hyperthreading (CPU au-delà de 100%), ce qui comme d’habitude a causé un crash après quelques heures d’utilisation. Il faut remonter à des noyaux dans le début de la série des 2.16 pour ne pas rencontrer ce problème.
J’m'égare, là.
Utilisation du CPU

Si un process avait été la source de nos problèmes, system ne serait pas monté aussi haut. En fait, il semblerait que toutes les taches soient devenues plus gourmantes. Ou bien que le CPU a perdu globalement de la puissance.
Voilà, c’est dit.
CPU frequency scaling.
Le gouverneur par défaut chez Ubuntu est ondemand (les choix sont userspace, powersave, conservative, ondemand, performance), ce qui faisait que le CPU passait beaucoup de temps à 325 MHz. Certes il remontait en puissance à la demande, mais pas de manière assez réactive pour que les performances graphiques ne s’en ressentent.

Pour tester l’effet d’un changement de gouverneur, sous root :
# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Pour le rendre permanent, s’il semble répondre au problème, il suffit de rajouter cette ligne dans le /etc/rc.local, avant le exit 0:

echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Valérie s’est lancée dans une suite de joutes Facebookestes à grands coups de Scramble. Un tableau de 4×4 ou 5×5 avec des lettres, le but du jeu est de dénombrer tous les mots que l’on trouve dedans.

En anglais avec des amies anglophones, bonjour les corrections sur les premières parties.
Petit à petit, Valérie comble son handicap.

Finalement, qu’est-ce que jeu sinon regarder une case, puis ses voisines récursivement ? Ah oui, il ne faut pas repasser deux fois par la même case. Et à la fin il faut vérifier que les mots existent.

Bon.
On sort son Perl favori, et on précise que ce logiciel est sous GPL v3.

Pour vérifier que les mots existent, il existe des listes qui améliorent l’ordinaire du /usr/share/dict/words. Dans ce cas particulier de la liste TWL06.zip, un dos2unix permet d’enlever des sauts de lignes peu linuxiens.

On met les mots en mémoire avec un

open DICT,"< TWL06.txt";
my $dict;
while (<DICT>) {
  chomp($_);
  $dict->{$_}=0;
}
close(DICT);

Il reste un gros bout : parcourir le tableau pour dénombrer les mots candidats.
On commence par récupérer depuis la ligne de commande tapée par l’utilisateur le tableau en question, sous forme d’une chaîne de caractères unique.

my $string = uc(shift());

Avoir la dimension du tableau (combien de lignes = combien de colonnes) est utile par la suite :

my $dimension = int(sqrt(length($string)));

Le Scramble se joue en s’intéressant aux cases adjacentes, on définit donc la métrique (distance entre deux cases) :

sub distance {
  my $x = shift();
  my $y = shift();
  my $dx = abs($x->[0]-$y->[0]);
  my $dy = abs($x->[1]-$y->[1]);
  return ($dx>$dy) ? $dx : $dy;
}

Dans ces conditions, deux cases sont adjacentes si la distance qui les sépare vaut 1. On peut alors créer un hash qui donne donne tous les voisins ($i,$j) de la case ($i0,$j0) :

sub neighbors {
  my $nei;
  for (my $i0=0 ; $i0<$dimension ; $i0++) {
    for (my $j0=0 ; $j0<$dimension ; $j0++) {
      my @a=($i0,$j0);
      for (my $i=0 ; $i<$dimension ; $i++) {
        for (my $j=0 ; $j<$dimension ; $j++) {
          my @b=($i,$j);
          $nei->{$i0.$j0}->{$i.$j}=1 if (distance(\@a,\@b)==1);
        }
      }
    }
  }
  return $nei;
}

my $neighbors=neighbors();

Il nous manque encore la possibilité d’extraire la lettre d’une case donnée. On donne deux entrées possibles à cette fonction, par coordonnées (x puis y) ou en format concaténé (xy) :

sub get_str {
  my $a = shift();
  my $b;
  unless ($b = shift()) { $b=substr($a,1,1); $a=substr($a,0,1); }
  my $res = substr($string,$a+$b*$dimension,1);
  $res=$res."U" if ($res eq "Q");
  return ($res);
}

Au passage, on s’occupe du cas du "Q" qui apparaît toujours sous la forme "QU".

La partie récursive maintenant, celle qui se baladera dans le tableau.

my @allwords;
sub get_neighbors {
  my $a = shift();
  my $b = shift();
  my $depth = shift();
  my $word = shift();
  $word->{$a.$b}=$depth;
  if ($depth==0) {
    push @allwords,$word;
  } else {
    foreach my $nei0 (keys %{$neighbors->{$a.$b}}) {
      next if defined($word->{$nei0});
      my $word0={};
      %$word0=%$word;
      my ($a0,$b0)=(substr($nei0,0,1),substr($nei0,1,1));
      get_neighbors($a0,$b0,$depth-1,$word0);
    }
  }
  return;
}

Si le mot candidat a la longueur souhaitée ($depth à 0), alors on le stocke dans le tableau @allwords en référençant sa taille, pour aider au tri plus tard).
Sinon, on s’intéresse récursivement à ses voisins.

On peut alors lancer la balade dans le tableau à partir de toutes les cases une par une, et pour toutes les longueurs de mots désirées.
Si un mot candidat est référencé dans le hash %$dict, alors on l’imprime à l’écran.

for (my $wordsize=7 ; $wordsize>2 ; $wordsize–) {
  for (my $i0=0 ; $i0<$dimension ; $i0++) {
    for (my $j0=0 ; $j0<$dimension ; $j0++) {
      @allwords=();
      my $word;
      get_neighbors($i0,$j0,$wordsize,$word);
      foreach my $myword ( @allwords ) {
        my @thewords;
        @thewords=sort { $myword->{$b} <=> $myword->{$a} } keys %$myword;
        my $myword = join("",map { get_str($_) } @thewords);
        print($myword,"\n") if (defined($dict->{$myword}));
      }
    }
  }
}

Si on appelle ce script break_scramble, alors on peut trouver les mots anglais entre 3 et 7 lettres compris dans le tableau

a b c d
e f g h
i j k l
m n o p

$ ./break_scramble abcdefghijklmnop
KNIFE
PLONK
MINK
FINK
FINO
JINK
GLOP
KNOP
KOJI


Des optimisations possibles ? Oui, plein. Pour commencer, éviter de repasser par toutes les tailles de mots possibles et imaginables.

Mais en attendant, il devient difficile de perdre les duels Scramble même avec les 30 secondes d’exécution sur un pauvre Pentium 4 HT.

mar 08 2008

Comment Fonctionne Google ?

Guillaume | Geek | 0 Commentaire

Joli article de Michael Eisermann : Comment fonctionne Google ?
Et comme inclure ce lien fait parti de l’expérience…

Notre petit Shuttle Reflexion des familles s’est fait amputer d’un ventilateur de plus, le 4cm qui trônait sur le Northbridge et tournait à 5000 tours par minute. Mignon, mais après l’avoir remplacé trois fois on se lasse.

La carte mère est une SB61, ce qui mine de rien a son importance dans le choix du radiateur qui remplace le ventilateur. En effet, le ZM-NBF47 commandé sur Internet suppose que la carte mère a des boucles d’ancrage "en haut à droite et en bas à gauche" (quand on regarde la carte mère depuis le bus PCI), les intégristes des espaces vectoriels orientés me pardonneront mes approximations. Pas de chance, la SB61 n’a de boucles qu’"en haut à gauche et en bas à droite".

Il faut donc se fendre d’une adaptation sauvage du système d’ancrage du radiateur original de la SB61 par-dessus le ZM-NBF47. Pas très orthodoxe, mais ça marche. Ah, et il faut aussi préciser que le ZM-NBF47 vient avec sa pâte thermique, nul besoin d’essayer de se lancer à la recherche d’un accessoire bien difficile à trouver au pays du froid… Comme de juste, il convient de bien gratter la pâte thermique résiduelle avant de mettre la nouvelle, hein, on est pas des cochons.

Le niveau sonore de la bête a très largement diminué – au point qu’on entend maintenant le disque dur interne. Il faut aussi noter que le ventilateur du CPU s’était déjà fait aménager, pour un plus gros qui tourne moins vite (1000 tours par minute en régime moyen).
Point de vue température, pas de grand changement :

Températures

Le disque dur (placé juste au-dessus du Northbridge) n’a pas beaucoup souffert non plus du changement :

Température Disque Dur

sdb, c’est le disque pour les sauvegardes, celui qui ne s’allume qu’une fois par jour et qui est branché en eSATA dans une boîte séparée de l’unité centrale – et sans ventilateur.
mai 11 2007

Commande du jour

Guillaume | Geek | 0 Commentaire

Au détour de la documentation Debian du paquet mysql, votre serviteur est tombé sur les options de netstat qui répondent élégamment à la sempiternelle question mais qu’est-ce que j’ai comme services qui tournent et sur quels ports

$ sudo netstat -tnpl

mai 06 2007

Bleeding Feisty

Guillaume | Geek | 1 Commentaire

Petit goût de déjà-vu, je sais.

Il existe un bug dans la mise en œuvre de postscript chez Feisty, qui entre autres m’empêchait d’ouvrir mon fichier OpenOffice de l’article publié récemment dans Linux Magazine 94.
Le problème est connu, et peut être contourné comme suit :
$ sudo apt-get install gs-gpl
$ sudo update-alternatives –config gs

[ choisir gs-gpl ]

Difficile à manquer, comme bug, compte-tenu de l’omniprésence de postscript dès qu’on veut échanger des graphiques entre applications. Bug ouvert en décembre 2006, tout de même.

Dans la même veine, Monsieur Feisty se targue de geler régulièrement l’ensemble de l’ordinateur sans crier gare. Suspects en cours d’investigation : ivtv et SMP (réintroduction d’un bug passé) ou vmware serveur (dont il faut modifier cavalièrement les sources des modules noyaux pour qu’ils veuillent bien compiler).

En-dehors de ces deux animaux-là, le passage à Feisty s’est avéré beaucoup plus calme que celui à Edgy. Ouf !

Dans la liste des un jour il faudra que, quitter Tetex pour Texlive (toujours dans Universe, donc il n’y a pas le feu).

© 2007 Au petit plombier | Wordpress | Gallerie | dKret2 2.1 | WPG2 Optimized | XHTML | CSS | Haut |