Aller au contenu | Aller au menu | Aller à la recherche

dimanche 7 juin 2009

Mais arrête de m'interrompre un peu !

Le noyau 2.6.30 n'est pas encore sorti en version finale mais c'est déjà trop la fête. J'ai testé le noyau 2.6.30-rc8 mis en paquet par un développeur Debian pour l'architecture ARM (oui faut le faire à la main car ARM n'est pas compilé par défaut sur le dépôt experimental des noyaux Debian...). Et le moins que l'on puisse dire c'est que les résultats sont impressionnants. Je me plaignais depuis longtemps du débit avec les disques durs, et je fais donc les tests à chaque installation d'un nouveau noyau (à tout autre logiciel égal, le serveur étant laissé en Debian Lenny depuis sa sortie).

Résultats avant le changement de noyau :

(en raid5) Timing buffered disk reads:   46 MB in  3.00 seconds =  15.31 MB/sec
(en raid10) Timing buffered disk reads:   36 MB in  3.08 seconds =  11.68 MB/sec

Résultats après le changement de noyau :

(en raid5) Timing buffered disk reads:  110 MB in  3.04 seconds =  36.14 MB/sec
(en raid10)  Timing buffered disk reads:   96 MB in  3.01 seconds =  31.86 MB/sec

Plus du double, ça fait beaucoup de différence. Comme hier soir c'était également « jour de vérification du raid » (premier samedi du mois quoi...) j'ai pu sentir la différence. Si par exemple au mois d'avril les logs indiquaient :

 
Apr  5 18:51:31 floolf kernel: md: md2: data-check done. 

Aujourd'hui j'ai eu le droit avant le réveil à ceci :

 
Jun  7 09:15:18 floolf kernel: md: md2: data-check done. 

Dans les deux cas même heure de départ vers 1h du matin :)

L'explication de cette énorme amélioration se trouve en surveillant les interruptions. Sur les noyaux précédents j'obtenais des graphiques avec munin de plus de 1500 interruptions par seconde lors de la reconstruction du raid. Désormais ça plafonne à 150, réduisant énormément la part du processeur utilisée pour les traiter. Dix fois moins d'interruptions pour un travail supérieur, je ne dis pas non. Reste à savoir ce qui coinçait exactement et pourquoi cette optimisation possible n'avait pas été repérée avant... En attendant je remercie mille fois la qualité de l'équipe Debian en ARM et les développeurs du noyau.

mercredi 20 mai 2009

L'anonymat n'est pas un crime

Non ce titre un peu racoleur n'a pas de rapports avec l'évolution législative récente et à venir française concernant les télécommunications. Ça en est loin, mais c'est plus ou moins le fond d'un des cours que je suis à la faculté de Dresde, dont le thème est la protection des données personnelles et de la vie privée en générale. Vaste sujet en Allemagne, ou des scandales à répétitions n'en finissent plus d'apparaître.

L'ensemble des enseignants de ce cours sont forcément très engagés sur le sujet, mais également reconnus dans toute l'Allemagne pour leurs connaissances. Le cours de ce mardi commençait par des évidences toujours bonnes à rappeler sur la facilité de fichage grandissante. Deux exemples grands publics, la télévision et les journaux. Si la diffusion « à l'ancienne » par satellite ou hertzienne ne permet pas de savoir qui regarde quoi (et conduit à des instituts de sondages plus ou moins fiables, dont l'excellent film Free Rainer traite un peu), la télévision par IP permet très facilement d'établir un profil d'utilisateur et des émissions favorites, tout comme la télévision à la demande quel qu'en soit le genre. De la même façon, un acheteur de journaux en kiosque fournira bien moins d'informations sur ces goûts qu'un utilisateur de journaux sur Internet. Et ainsi de suite...

La suite était un peu plus technique avec la présentation du logiciel JAP, projet de recherche de la TU-Dresden. À la base c'était une preuve de la faisabilité de l'anonymisation des communications, désormais on peut je pense le considérer comme un logiciel complet. Contrairement à Tor ou l'utilisateur ne sait pas le chemin de ses paquets, JAP est plutôt déterministe, et il faut faire confiance aux serveurs intermédiaires qui s'ils s'associent peuvent bien évidemment retrouver qui fait quoi.

La partie la plus intéressante était pour moi la question du droit. Ils sont très pointus sur le sujet, et la loi allemande actuelle (bien qu'évoluant régulièrement...)leur permet en toute légalité de fournir le service sans conserver les données, hormis ce qui est explicitement mentionné. La bonne nouvelle c'est ça :

According to §113a Section 8 of the German Telecommunications Act it is forbidden to log any information about destinations and requested Internet pages. Therefore neither IP-addresses of contacted servers nor requested URLs will be logged.

Ils ont dans le passé déjà reçu des injonctions de la police leurs demandant des informations pour retracer les agissement de certains utilisateurs, jamais avec succès. Le logiciel est multiplateforme et devrait marcher sans trop de soucis un peu partout. Bien entendu, si comme Tor il permet un certain dégré d'anonymat, il ne protège en rien de l'utilisation des données volontairement publiées sur l'internet, et ne garanti aucune sécurité en dehors de la « zone de Mix ». Et en cas d'utilisation de protocoles en clairs, il suffit de se mettre en sortie du système pour attraper les mots de passe.

Mais ça c'est le sujet des cours de cryptographie. :)

lundi 23 février 2009

Brücke

Sur le pont d'avignon, on y danse... Euh nan c'est pas ça.

Dans ma petite maison, le réseau n'est pas très très complexe. Nous avons une box au milieu du couloir, pour envoyer du WiFi dans les quatre chambres. Et hop, ça fait un réseau qui convient globalement à tout le monde. De mon côté ensuite, j'ai deux ordinateurs portables avec une connexion WiFi et filaire, un « serveur » avec une antenne WiFi externe (une clef USB quoi...), et une imprimante qui n'a pas accès au WiFi. En résumé, un superbe schéma :

reseau_dresde.png

Comme l'imprimante n'a pas le WiFi, et que le serveur fourni des fichiers en NFS aux deux portables (ouais le film en WiFi, c'est pas top top...), la connexion filaire est obligatoire. Par simplicité et pour conserver la configuration existante auparavant dans mon précédent logement, je n'utilisais pas le WiFi sur les deux portables et utilisait le serveur comme passerelle. Le tout de la façon la plus moche possible, avec du NAT.

  • Avantages ;
    • Ben ça marchait
    • J'avais rien à changer ou presque, juste brancher et configurer le WiFi sur le serveur,
    • Pas de questions de gestion des droits sur le NFS,
    • Je pouvais faire ce que je voulais avec les annonces DHCP sur mon réseau.
  • Inconvénients ;
    • Imprimante non accessible depuis le réseau WiFi,
    • Aucune mobilité (quand je déplace un portable, je passe en WiFi, et l'accès aux autres machines devient chiant),
    • Solution très moche.

J'ai récemment voulu changé pour une solution plus « propre », en unifiant les réseaux filaires et WiFi. Ma motivation principale était de pouvoir imprimer depuis le salon ou la cuisine, et ne pas être obligé de reconfigurer le réseau à chaque déplacement. Objectif donc faire un pont avec brctl, le serveur aurait retransmis tous les paquets qu'il était nécessaire de retransmettre sur les deux interfaces.

  • Avantages ;
    • Techniquement le plus simple (genre 3 commandes),
    • Le plus beau :)
  • Inconvénients ;
    • Ça justepasmarche...

J'ai tenté de le mettre en place, mais malheureusement sans succès. Après analyse, en fait l'arp ne passait que dans un sens du réseau. Ma carte WiFi USB ne semble pas capable d'émettre de paquets avec une adresse MAC qui n'est pas la sienne, ce qui est très balaud pour un pont.

En gardant plus ou moins le même plan, si la carte refuse d'utiliser une MAC qui n'est pas la sienne, et bien faisons lui émettre la sienne ! Un logiciel tout simple permet de le faire, parprouted.

  • Avantages ;
    • Pas besoin de sortir l'artillerie lourde,
    • Ça fait ce que je voulais,
  • Inconvénients ;
    • Publicité mensongère...

Ce que fais techniquement ce programme, c'est que lorsqu'il voit passer une requête arp, il rajoute une route vers cet host sur la bonne interface, et transmet la requête. Malheureusement, deux gros défauts. Le premier, pas forcément si grave, d'après ce que j'en ai vu il ne répond pas « proprement » lorsqu'il transmet une réponse arp. Plutôt que de répondre en unicast, il le fait en broadcast pour dire « titi à l'adresse toto ». C'est pas glop. Le second, bien plus chiant, les interfaces réseaux du « pont de niveau 3 » ne répondait plus aux requêtes arp qui leurs étaient adressées directement. Pas de bol... On oublie donc.

Du coup, par dépit, je l'ai fait à la main. J'ai décidé unilatéralement que les adresses ip finissant par 200 jusqu'à 210 seraient pour le réseau filaire. Les autres laissées pour le réseau filaire. J'ai ensuite mit la même adresse IP sur les deux interfaces du serveur. Le tout résumé dans un énorme /etc/network/interfaces :

auto lo
iface lo inet loopback
  # On réécrit l'arp qui doit l'être des deux côtés
  up echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp

auto eth0
iface eth0 inet static
  # .34 est l'adresse IP donnée côté WiFi par la box
  address 192.168.178.34
  netmask 255.255.255.0
  # La liste des IP côté filaire
  up route add -host 192.168.178.200 dev eth0
  up route add -host 192.168.178.201 dev eth0
  up route add -host 192.168.178.202 dev eth0
  up route add -host 192.168.178.203 dev eth0
  up route add -host 192.168.178.204 dev eth0
  up route add -host 192.168.178.205 dev eth0
  up route add -host 192.168.178.206 dev eth0
  up route add -host 192.168.178.207 dev eth0
  up route add -host 192.168.178.208 dev eth0
  up route add -host 192.168.178.209 dev eth0
  up route add -host 192.168.178.210 dev eth0
  # Tout ce qui n'est pas dans cette liste doit passer par l'autre côté
  up route del -net 192.168.178.0 netmask 255.255.255.0 dev eth0

# Configuration automatique du WiFi
auto wlan0
iface wlan0 inet dhcp
        wpa-conf /etc/wpa_supplicant.conf

Cette solution ne propage que l'unicast. Pour le DHCP, il fallait donc soit faire un dhcp-relay sur le serveur, soit reconfigurer le serveur DHCP. J'ai choisi la seconde solution, car la box ne permet aucune configuration des adresses distribuées. Ainsi côté fil, les IP attribuées sont bien entre 200 et 210.

  • Avantages ;
    • Une solution qui marche...
    • Elle permet la mobilité, je peux imprimer, y'a plus de NAT, la vie est belle
    • Je vois pas passer tout le broadcast bizarre des voisins :)
  • Inconvénients ;
    • Une configuration chiante. Mais très fortement facilité néanmoins par le /etc/network/interfaces et les outils Debian associés (et je les remercie vraiment...)
    • Les portables ne peuvent pas avoir la même IP sur l'interface WiFi et filaire
    • Sûrement pas la solution dont je rêvais.

Si jamais vous avez d'autres idées pour faire plus propre et qui fonctionne avec mon matériel, n'hésitez pas à le signaler...

Sans transition aucune, petit bulletin météo. Depuis une semaine, c'est assez marrant à Dresde. Il neige beaucoup durant la nuit, et tout les matins c'est tout blanc partout. Par contre la journée, tout fond progressivement, ce qui rend la vie des piétons affreuse. J'en ai d'ailleurs conclu qu'il y avait pire que le gel, c'était le dégel. Dommage que tout ça ne soit pas resté, on en aurait une belle quantité maintenant.

mardi 17 février 2009

Dépendances

Un peu par hasard je me suis demandé à quoi pouvait bien ressembler l'arbre de dépendance des paquets sur mes machines. Aptitude why et consort, c'est bien joli, mais visuellement, ça donne quoi ? KiBi m'a fait gagné énormément de temps en m'indiquant l'existence de debtree, qui fait presque ce que je voulais, mais paquet par paquet, et non pas l'ensemble du système.

Pour contourner le problème sans trop réfléchir, j'ai créé un paquet dépendant de tous les paquets installés manuellement, et ceci tout d'abord sur un serveur avec très peu de paquets installés (300 paquets au total, 80 installés « manuellement »). Je suis très content du résultat, même s'il faudrait un écran énorme pour le visualiser entièrement tout en restant lisible. Petit extrait du graphique :

floolf-extrait.jpg

Et comme c'est trop gros pour ressembler à quelque chose, la version réduite et en jpg (1,4Mo), l'originale en png (6,4 Mo).

debtree supprime naturellement les paquets comme libc6 dont beaucoup trop de paquets dépendent, ce qui a le bon goût d'éviter les points d'agglomérations évidents. Je n'ai pas encore testé toutes les options de debtree, mais il est probable qu'il soit possible de faire plus clair encore (l'option --condense par exemple...).

vendredi 19 décembre 2008

VLC de noël

vlc.png À gauche, une icône de vlc lancé avant minuit. À droite, un VLC lancé depuis moins de deux heures.

J'aime bien, je trouve que ça change agréablement, dommage que plus de programmes ne fassent pas pareil.

vendredi 28 novembre 2008

OCaml schnellste

Tous ceux qui touchent un peu trop à l'informatique ont tendances à devenir amoureux des graphiques et des statistiques, surtout peut-être quand ils ont étudiés quelques matières scientifiques auparavant. Or, dans un article du dernier Linux Magazine version allemande, un petit article bien sympa compare les performances de différents langages de programmation, par des programmes écrits par les lecteurs.

Pour bien comprendre, il faut dire que cette histoire traîne depuis plusieurs numéros. Dans le numéro d'octobre, ils publiaient plusieurs articles de comparaisons de langages. L'un d'entre eux était un test grandeur nature, dont les règles du jeu étaient assez simples. On prend en entrée un texte rempli de références, sous la forme X. Ces références sont non triées, bordéliques à souhait. Le programme doit donc chercher tout ces références, les trier, et modifier la bibliographie en fin d'article en conséquence. Le texte en question est de 55Mo, avec un million de notes de bas de page, autant dire que c'est conséquent.

L'article du mois d'octobre demandait à des « noms » de certains langages d'écrire une solution à ce problème. Cela pouvait par exemple être quelqu'un qui a écrit un livre sur le langage considéré. Les résultats étaient décevant et surprenant, Java FX était ainsi avec ses 30 secondes plus rapide que le Perl s'exécutant en 52s. Le php était bien classé en 36s, et le python consommait trop de mémoire et ne finissait pas, bref c'était pas la joie. En conséquence on pouvait lire dans le numéro du mois de novembre une solution en python fonctionnelle, et une annonce d'un nouvel article pour décembre.

Et que nous dit le numéro de décembre ? Que le OCaml est le plus rapide. Ils ont reçus plus de 50 contributions des lecteurs, dans de nombreux langages, du C au java, en passant par awk. Les résultats par rapport aux « personnes connues » sont impressionnants, OCaml s'exécute en 6s, une solution en Java en 6,8s, et le perl en 7,7s. Bref rien à voir, et le nombre de lignes des programmes diminue lui aussi fortement.

OCaml a donc je pense encore une fois montré ses qualités, grâce à Rörd Hinrichsen qui semble manger du fonctionnel à tout les petits déjeuner, sa solution en Haskell étant aussi pas trop mal classée (et il a l'air aussi de faire du Lisp...).

Au niveau popularité par contre Python et Perl mènent de loin. Au niveau nombre de lignes, la solution en Java est assez catastrophique avec 365 lignes, là ou en perl ou en Ruby il n'en faut pas plus de 15. Le C n'est pas ultra rapide avec 8,3s, il faut dire qu'a priori il n'est pas très naturel d'effectuer de telles opérations en C (une solution en C++ par contre pointe en troisième position en 7,5s).

Tout ces petits programmes sont disponibles sur le site de Linux Magazine, et je dois avouer qu'il est assez rigolo d'en regarder certains. Bien entendu, ce test vaut ce qu'il vaut, un langage n'étant classé que par les performances des différents programmeurs et lecteurs du magazine. Mais il en ressort tout de même quelques tendances que je trouve intéressantes.

  • Remarque inutile 1 : marrant personne n'a tenté de faire mieux en php
  • Remarque inutile 2 : la solution en awk est peut-être lente mais je trouve qu'elle a trop la classe
  • Remarque inutile 3 : y'a même eu des (3) contributions en Tcl... Étrangement, ben elles sont trop lentes pour avoir été classées, faut chercher en fin du fichier avec tout les résultats pour les trouver.
  • Remarque inutile 4 : écrire un livre de référence sur le Perl ne suffit apparemment pas pour l'utiliser au mieux
  • Remarque inutile 5 : l'enchaînement de trois articles sur OCaml n'était pas prémédité, ce n'est pas que je deviens mono-maniaque

mercredi 26 novembre 2008

Algorithmus (2)

Reprise de l'article précédent sur le sujet, après avoir fortement amélioré les temps de calculs par un changement d'algorithme, voici quelques améliorations basées uniquement sur des modifications d'implémentations. En effet le lecteur attentif aura par exemple pu remarquer quelques lignes assez jolies, comme :

let cache_chemin = Array.make (power 2 n_nageurs) (0,[]) in

Ça commence bien, un "petit" tableau de taille 2 puissance n, avec à l'intérieur une liste de taille moyenne n/2. Ça fait beaucoup de mémoire. De plus, la récurrence est mal construite et on va chercher les résultats jusqu'en bas de l'arbre pour ensuite "dépiler" les résultats; Du coup on parcourt le tout deux fois, c'est un peu dommage.

Mais donc, situation initiale, pour n=20 le programme s'exécute en 6 minutes et prend jusqu'à 90Mo de mémoire. Maintenant améliorons tout ça ;

  • Changeons de compilateur, cool, plus que 45s. Assez logiquement cependant la mémoire n'évolue pas.
  • Procédons niveau par niveau. Si vous vous souvenez de ce schéma, il suffit de calculer une ligne puis la suivante, et de ne conserver en mémoire qu'au maximum deux lignes (une ligne ou l'on effectue les calculs, la ligne précédente pour chercher les meilleurs chemins déjà calculés). Cela implique pas mal de changements, mais ça vaut le coup. On arrive à 40Mo et 23s. Ce résultat est assez logique et prévu, on ne parcourt l'arbre qu'une fois à la place de deux pour le temps d'exécution. Pour la mémoire au pire moment on conserve les deux lignes centrales, qui représentent (de loin dans le brouillard breton) en terme de nœuds la moitié du total dans le triangle de pascal).
  • Quelques optimisations plus tard (utilisation du tri rapide à la place du tri classique, diminution du nombre d'affectations de variables dans la boucle principale, insertion propre d'un élément dans une liste triée plutôt que la retrier entièrement, quelques trucs que j'ai peut-être oubliés) on arrive à 19s. Merveilleux n'est-ce pas ?
  • Reste la mémoire, qui est toujours problématique. Pour les listes d'entiers représentant le chemin, j'utilisais le type "int" de OCaml. Soit 32 ou 64 bits, selon l'architecture. Pourtant je ne dépasse jamais 30 nageurs, donc la taille de l'entier est disproportionnée. Il n'existe pas de type "short" en OCaml, le mieux que l'on puisse faire c'est utiliser le type Int32 quand on est en architecture 64bits, mais c'est pas la joie. Mais désormais Batterie fournit facilement un petit module appelé BigArray. Ce module permet d'utiliser des entiers de 8bit, de manière indirecte. Ils ne sont utilisables que pour le « stockage » dans un tableau, quand on lit et quand on écrit on doit utiliser le type Int. Le reste après, c'est un tableau en C, mais c'est transparent pour le programmeur. Chouette, c'est juste pour le stockage que j'ai des problèmes. Donc je convertis tout ça (cela n'a pas été si simple, mais bref), peut-être pas de la façon la plus élégante mais en conservant au maximum ce qui était déjà fait (quitte à faire du fonctionnel, autant que ce soit utile). Et zioupla plus que 8Mo de mémoire occupée, et on gagne en moyenne une demi seconde en 18,5s.
  • L'implémentation précédente considérait que pour calculer une solution ou le nombre de nageurs étaient supérieurs au nombre de courses, il suffisait de rajouter des nages "virtuelles" qui rapportaient 0 point. C'est vrai, ça marche. Mais on peut faire mieux, en s'arrêtant à la N_ième ligne du parcours. Ensuite on prend le meilleur résultat parmi les noeuds de la ligne, et on aura le bon résultat. On y gagne encore un peu, mais comme on quitterait le cadre de "20 nageurs pour 20 courses" étudié depuis le début il n'est pas vraiment pertinent de le chiffrer.

Enfin voilà encore une belle victoire de canard. À compilateur constant on a divisé plus que par deux le temps d'exécution, et par plus de 10 la mémoire utilisée. L'intérêt n'est pas vraiment le gain de temps, qui reste dans des échelles raisonnables de mon point de vue. Par contre la diminution d'occupation mémoire permet de calculer des valeurs encore plus hautes de n, typiquement jusqu'à 28x28 sur mon ordinateur en 2h et 1,6Go de mémoire (pour 29x29 on peut l'imaginer en moins d'un jour, le swap dégradera fortement les performances mais tout de même. Par contre pour 30x30 on oublie, il faut changer l'algorithme ou m'acheter une machine avec plus de mémoire). Mais honnêtement on s'en fou vu qu'il n'est pas très utile d'atteindre ces valeurs :)

Note : j'ai volontairement négligé quelques aspects, comme la consommation de mémoire de la matrice des nageurs, ce genre de trucs, car leur complexité est négligeable devant celle de l'algorithme (même pour l'occupation mémoire). En vérité, les gains pour des n > 20 est encore plus grand que ce qui est présenté ici.

mardi 25 novembre 2008

Moi aussi je lis la doc

En cherchant comment peut-être faire un jour un paquet OCaml dans Debian, j'ai finit par lire la doc, en particulier la page sur la compilation. J'avais l'habitude d'utiliser ocamlc, que j'avoue avoir trouvé en tapant ocaml{tab} dans un terminal un jour ou je me suis dit que compiler mon truc serait mieux que de le lancer manuellement.

Et bien j'avoue avoir été bluffé par le résultat. Le temps de compilation est certes plus long (mais honnêtement je m'en fou vu que mes programmes en OCaml sont rarement très volumineux), mais le résultat en terme de performance est impressionnant, entre 6 et 7 fois plus rapide sur ce que j'utilise. Malheureusement ce n'est pas disponible pour les processeurs ARM, mais bon, c'est pas tout les jours noël...

samedi 22 novembre 2008

Les joies du passage en 64bit

Il y a désormais quelques semaines, j'ai rapidement réinstallé mon dernier portable en 64bit, ce que j'aurais du faire depuis longtemps vu qu'il n'y avait aucun raison de rester en 32. Bref bref, quelques constatations :

  • Le pilote libre "nv" est plus de deux fois plus rapide pour lire un film, c'est plus qu'impressionnant (avant ce n'était pas possible de lire un film en grand écran sans saccade, maintenant si). Tellement plus rapide que j'ai redémarré sur l'ancienne installation pour vérifier que c'était bien la même configuration et la même version de pilote.
  • Le pilote "nouveau" plante par contre toujours autant sur ma machine
  • # max_int ;; - : int = 4611686018427387903 (ça fait toujours plaisir)

Autrement à Dresde c'est aujourd'hui journée sous la neige, on rentre dans l'hiver pour de vrai. Pourtant je demande à chaque allemand que je croise, Dresde est beaucoup moins touchée par la neige que le reste de la Saxe, notamment grâce à l'Elbe.

vendredi 7 novembre 2008

Mise à jour

Grâce à Jeb le blog a été mis à jour, en passant à une version Dotclear2. Pas grand chose de nouveau du côté utilisateur (hormis peut-être le nouveau design, toujours celui par défaut, un jour j'en chercherais un mieux), par contre du côté de l'administration les changements sont assez impressionnants. J'ai pas encore compris l'utilité de tout, mais bon pourquoi pas (genre protéger des articles par des mots de passe, youhou).

Normalement ça devrait être un peu comme avant, sauf des changements volontaires. Mais si par hasard vous croisez des bugs faut pas hésiter à les signaler :)

samedi 18 octobre 2008

Albertbrücke oder Carolabrücke ?

J'ai récemment changé légèrement le réseau chez moi, et oh drame d'après les graphiques Munin le ping moyen était passé de 0,4ms à 0,6ms. Intrigué, j'ai tenté de comprendre pourquoi, car après tout je n'avais pas changé grand chose.

La modification en question était de transformer une machine en passerelle, avec une carte Wifi USB, qui renvoie ensuite sur le réseau filaire (ça évite de faire passer le NFS sur le Wifi et de pourrir ainsi mes colocataires, par exemple). Donc premier réflexe, me serais-je trompé de câble en rebranchant, avec un câble différent (et de mauvaise qualité, car bon, la longueur devrait pas changer de 0,2ms, ou alors c'est vraiment bien plus long...) ? Rapidement je constate que non, c'est donc plutôt côté logiciel.

Je commence par me demander si ce n'est pas l'ajout d'une route supplémentaire, donc je surcharge par une dizaine de routes en plus, supprime tout puis remet pour changer l'ordre, rien n'y fait, le temps de ping ne varie pas et stagne aux alentours des 0.66 (moyenne sur 20 ping)). Soit, si ce n'est pas un problème de panneaux routiers supplémentaires, tentons du côté du Nat (oui c'est moche le double NAT, je configurerais mon PC en pont bientôt, mais c'est chiant pour les DNS locaux de dépendre du DHCP de la box, et ça supporte pas le café). Je vide les règles iptables, et hop recommence. Rien de mieux, ça commence à devenir frustrant (enfin si, 0.656, mais on est clairement dans la marge d'erreur...).

Soit, et si c'était l'interface réseau supplémentaire ? Un "modprobe -r" plus tard, la pauvre carte Wifi doit se sentir bien seule au bout du câble, mais le reste ne bouge pas d'un iota. À la guerre comme à la guerre, que reste-t-il ? Je constate que bien que les règles Iptables soient nettoyés, tout les modules associés restent chargés. Par exemple ipt_MASQUERADE, ip_tables, etc. Par dépit je me décide à les supprimer un par un (instincts sadiques, le retour). Cela ne change rien jusqu'à la mort du iptable_nat, d'un coup le monde redevient rapide avec 0.47ms de temps de réponse en moyenne.

Je ne sais pas trop en conclure, rien que par sa présence il augmente le temps de latence d'un ping, pour une machine non chargée (mais très peu rapide certes), de 0,2ms. C'est rien et beaucoup à la fois. Je me demande si le compiler dans le noyau et non en module changerait quelque chose, ça sera pour une prochaine fois, ça occupe mon processeur pendant plusieurs heures vu qu'il est vraiment pas rapide.

Reste à tenter en mode pont :) (les marionnettes, tout ça...)

mercredi 15 octobre 2008

Werbung

Une fois n'est pas coutume, un peu de publicité. Un très bon livre sur LaTeX vient de sortir, en licence libre. Concrètement les sources sont disponibles, il est modifiable, et compagnie et compagnie (libre quoi, en fait). Il est également achetable en version papier pour un prix que je trouve très raisonnable étant donné le contenu. J'ai été un peu déçu de la présentation, persuadé qu'on peut faire mieux en LaTeX, mais à mettre en toutes les mains qui répondent aux cinq critères expliqués en début de livre et répétés sur la page de commande.

En résumé, un livre libre, bien construit, parlant d'un sujet très intéressant, ce serait dommage de passer à côté. Sur le même sujet, y'a toujours également le blog de guiling.

Ajout : ah oui et testé pour vous, ils acceptent Paypal (mais les frais de livraisons vers l'allemagne, 6€, sont pas cool).

Ajout après réception : le livre est pas trop mal, mais ils ont un peu négligés la taille des marges je trouve (dommage pour un livre écrit en LaTeX...)

lundi 29 septembre 2008

Planète ResEleuse

Pour tromper mes angoisses, je me suis un jour demandé ce que cela donnerait de construire les liens entre les blogs sous la même forme que le réseau de confiance des clefs GPG. Je suis donc parti du site resel.eu, et ensuite appliqué juste quelques règles :

  • Sur chaque blog, on recherche les liens vers d'autres blogs, et itérer autant que possible
  • Il doit y avoir au moins deux liens vers un autre blog pour apparaître

Et hop ça suffisait globalement à construire le réseau. Ce qui permet d'observer la superbe topographie de la blogosphère en prenant pour centre resel.eu (certains mots sont là pour faire savant).

Ce graphique est bien entendu très limité, une planète teubreuse complète serait certainement plus amusante (ou pas) à étudier.

jeudi 18 septembre 2008

Internationalisation

L'un des critères pour utiliser un système pourrait être la qualité de sa traduction, et la facilité à changer facilement la langue des outils utilisés. Je trouve par exemple les équipes de traduction de Debian très efficaces, que ce soit sur le site, les traductions des nouvelles (site et liste de diffusion) , et j'en passe beaucoup. Le français et l'allemand sont d'ailleurs les deux langues à la pointe de la traduction (voir la nouvelle du 1er septembre, paragraphe "Debian Translations for French and German Reach 100%", ironiquement pas encore traduit). Mais concrètement, quelques petits rappels pour utiliser votre linux préféré dans la bonne langue.



Tout d'abord il suffit simplement de reconfigurer les locales, avec

# dpkg-reconfigure locales

J'ai ainsi personnellement les locales :

* de_DE.UTF-8 UTF-8 
* fr_FR.UTF-8 UTF-8

Ensuite il vous demandera quelle locale utiliser par défaut sur le système. Vous pouvez ainsi pour vous amuser passer tout votre système par défaut dans une autre langue, par exemple l'allemand, les utilisateurs de passage apprécieront.

Cependant un changement global n'est pas toujours ce que vous souhaitez. Vous pouvez avoir des correspondants dans une autre langue, et vouloir leur expliquer quelque chose (ou recevoir des aides de leur part). Comme la traduction des menus n'est pas toujours très intuitive, par chance vous pouvez lancer vos programmes favoris dans la langue qui vous plaira. Dans un terminal un petit :

$ export LANG=de_DE.UTF-8
$ gimp

Et hop vous avez Gimp en allemand, avec les menus correspondants. Pour certains logiciels il vous faudra installer un paquet supplémentaire, par exemple openoffice.org-l10n-fr pour Open Office, iceweasel-l10n-fr pour Iceweasel, et ainsi de suite. Rechercher dans aptitude les paquets l10n-fr permet de rapidement retrouver ses petits. Après comme il est souvent plus reposant de lire dans sa langue maternelle (dans l'hypothèse ou la traduction est de qualité bien entendu), de nombreuses pages de man sont traduites. Installer les paquets manpages-fr / manpages-fr-dev / manpages-fr-extra repose le cerveau en fin de journée (vous pouvez remplacer le -fr par le pays que vous voulez, les -de m'amusent beaucoup).

Enfin voilà, les traductions c'est bien, utilisons les. Et remercions les traducteurs bénévoles qui y passent énormément de temps.

dimanche 20 juillet 2008

Algorithmus

Un vieux projet me tenait à coeur depuis très longtemps (environ depuis la troisième), et je viens enfin d'en venir à bout. Je vous explique le contexte, il existe en natation (mais ça doit être transposable à plein d'autres problèmes) des compétitions par équipe, pour schématiser N nageurs sur N épreuves (avec donc un nageur par épreuve). La natation n'étant pas comme l'athlétisme, on peut sortir de sa spécialité et on considère donc a priori que les N nageurs peuvent concourir sur les N épreuves. Chacun fait un certain nombre de point sur chacune d'elles, déterminé par son temps (mais nous ne conserverons ici que la notion de points). La question est donc : comment faire l'équipe la plus optimisée possible ? (en théorie seulement bien entendu, car nul ne peut prédire avec exactitude les performances le jour J). Donnée importante : un nageur ne peut faire qu'une seule épreuve.

Lire la suite...

vendredi 27 juin 2008

Télécommunications

Non ce n'est pas pour parler de la panne de transmission télévision lors du match Turquie-Allemagne (on peut cependant remarquer que les chaînes allemandes s'en sont bien mieux tirées en achetant des images rapidement aux rares chaînes qui fonctionnaient encore, ce qui a fortement limité la coupure par rapport à TF1). Même si l'explication d'une coupure électrique semble un peu foireuse (un centre contrôlant la transmission vers autant de chaînes sans alimentation de secours ? Ça fait doucement rigoler), c'est bien de mon téléphone portable que je vais vous parler.

Lire la suite...

mardi 29 avril 2008

Debian et EM-7220

L'arrivée du noyau 2.6.25 dans les dépôts Debian est une bonne occasion pour revenir sur l'installation de cette distribution sur une machine assez étrange : une carte mère em7220. Cette carte mère est utilisée dans quelques produits de stockages vendus pour les petites entreprises, notamment le Acer Easy Store, le même chez son fabricant d'origine, Lanner NS-4410. On peut installer (c'est pas vraiment fait pour, mais bon) une debian dessus. Petit guide de comment j'ai fini par y arriver.

Lire la suite...