<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-2527666923797847301</id><updated>2009-10-13T17:57:22.163+02:00</updated><title type='text'>Ferdirand's Log</title><subtitle type='html'>La vie sans histoires d'un ingénieur IT en suisse</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default?start-index=26&amp;max-results=25'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-5781104844076492430</id><published>2009-10-01T17:27:00.004+02:00</published><updated>2009-10-13T17:57:22.176+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multicast'/><category scheme='http://www.blogger.com/atom/ns#' term='ftp'/><category scheme='http://www.blogger.com/atom/ns#' term='uftp'/><category scheme='http://www.blogger.com/atom/ns#' term='clusters'/><title type='text'>Cluster Tricks: copie en masse</title><content type='html'>Dans un cluster, la vitesse des disques ou du réseau peut être un facteur limitant critique pour la performance. Considérons le scénario suivant, qui a été rencontré en pratique au Lacal:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Une première phase de calcul est lancée sur chaque noeud, et produit plusieurs GB de données par noeud (stockées dans l'espace de travail sur le disque local)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Une deuxième phase de calcul est lancée, et elle a besoin de toutes les données précalculées sur tous les autres noeuds.&lt;/li&gt;&lt;/ol&gt;Les disques sont assez gros pour acueillir chacun une copie du dataset intermédiaire complet (quelques centaines de GB). Mais comment les distribuer efficacement ?&lt;br /&gt;&lt;br /&gt;Evidemment, un bête SCP ferait l'affaire, mais il serait impensable de le lancer a la main entre les différentes machines suivant un ordonnancement précis (ou alors, trop emmerdant, et pas assez réutilisable).&lt;br /&gt;&lt;br /&gt;Un bête scp de toutes les machines vers un noeud "principal", puis de ce noeud vers les autres, ferait aussi l'affaire. Mais terriblement lent.&lt;br /&gt;&lt;br /&gt;Au moment ou je suis intervenu sur le problème, la copie sur un noeud maître avait déja été faite, mais le scp séquenciel était hors de question (trop lent).&lt;br /&gt;&lt;br /&gt;Une première solution intéressante s'est révélée en Bittorrent. Les outils pour cela sont disponible dans portage (nous avons utilisé BitTornado, qui est un peu plus pratique que le client original "mainline" tout en étant très similaire d'utilisation). Une fois le hash initial accompli sur le noeud maitre (ce qui prend toutefois beaucoup de temps), la copie s'est faite relativement efficacement.&lt;br /&gt;&lt;br /&gt;Mais on est encore très en dessous du maximum théorique, ce qui m'a amené a découvrir la solution idéale pour le job: uftp (&lt;a href="http://www.tcnj.edu/%7Ebush/uftp.html"&gt;http://www.tcnj.edu/~bush/uftp.html&lt;/a&gt;), un système ftp-like over udp, supportant le multicast.&lt;br /&gt;&lt;br /&gt;Avec le multicast, chaque noeud peut envoyer un seul paquet de données au switch, le paquet sera répété sur toutes les interfaces (ou seulement sur les interfaces utiles si le switch gère le Multicast Snooping, ce qui n'était pas notre cas), et chaque machine pourra réceptionner le paquet simultanément, ce qui génère un gain très appréciable de vitesse (dans notre cas, vitesse de copie globale d'environ 400MB/s, au lieu des 6MB/s offerts par scp, et des 150MB/s offerts par bittorrent.)&lt;br /&gt;&lt;br /&gt;L'utilisation est très simple, même si manquant un peu de flexibilité. Le recepteur est un daemon tournant sur chaque machine, qui stockera tous les fichiers reçus dans un répertoire public sur le disque local. L'émetteur est un client lancé par un utilisateur, qui prendra simplement un nom de fichier en argument.&lt;br /&gt;&lt;br /&gt;Evidemment, ce système est totalement abusable et n'intègre absolument aucune sécurité. et ne doit être employé qu'a l'intérieur d'un réseau de confiance. L'ebuild est disponible ici (&lt;a href="https://xolus.net/%7Emax/uftp-ebuild.tar.gz"&gt;https://xolus.net/~max/uftp-ebuild.tar.gz&lt;/a&gt;) en attendant qu'elle fasse son chemin dans Sunrise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-5781104844076492430?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/5781104844076492430/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=5781104844076492430' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/5781104844076492430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/5781104844076492430'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2009/10/cluster-tricks-copie-en-masse.html' title='Cluster Tricks: copie en masse'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-5946880195297105012</id><published>2009-06-09T16:46:00.010+02:00</published><updated>2009-10-06T16:35:27.746+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='credit'/><category scheme='http://www.blogger.com/atom/ns#' term='sms'/><category scheme='http://www.blogger.com/atom/ns#' term='nagios'/><title type='text'>Contrôler le crédit sur une carte SIM avec Nagios</title><content type='html'>Il est inutile de présenter &lt;a href="http://www.nagios.org/"&gt;Nagios&lt;/a&gt;, un système de monitoring très populaire et flexible.&lt;br /&gt;&lt;br /&gt;J'ai la chance d'avoir a disposition, depuis mon serveur Nagios, un modem GSM très pratique pour envoyer des SMS d'alerte en cas de problème sur un service quelconque. Pour l'envoi de SMS, j'utilise &lt;a href="http://smstools.meinemullemaus.de/"&gt;SMSTools&lt;/a&gt;, qui s'installe sous la forme d'un daemon prenant le contrôle&lt;br /&gt;du modem, et d'un répertoire de spooling (/var/spool/sms) dans lequel on dépose les messages sortants, au format adéquat.&lt;br /&gt;&lt;br /&gt;Pour rendre la chose plus facile, il existe également un script d'envoi simple (sendsms) qui a l'avantage d'éviter les problèmes classiques aux répertoires de spool (conditions de course, etc..). Nagios se configure très simplement pour envoyer des notifications:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;define command{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        command_name    notify-host-sms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        command_line    /usr/local/sbin/sendsms $CONTACTPAGER$ "'Host $HOSTNAME$ is $HOSTSTATE$'"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;define command{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        command_name    notify-service-sms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        command_line    /usr/local/sbin/sendsms $CONTACTPAGER$ "'Service $SERVICEDESC$ @ $HOSTALIAS$ is $SERVICESTATE$'"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;C'est parfait, tout va bien. Mais la carte SIM installée dans le modem est une carte prépayée. Comment faire si le crédit sur cette carte s'épuise ? nous allons justement utiliser Nagios pour surveiller le crédit sur la carte, et émettre un avertissement s'il tombe trop bas.&lt;br /&gt;&lt;br /&gt;Avec mon opérateur téléphonique, on peut contrôler son crédit restant depuis le téléphone, en entrant une commande de service au clavier: *130#. Le téléphone répond avec un message indiquant le crédit restant.&lt;br /&gt;&lt;br /&gt;Quelques recherches sur google indiquent que ce type de commandes s'envoie au modem au moyen de la commande AT CUSD. On teste immédiatement avec minicom:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;AT+CUSD=1,*130#,15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;OK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;+CUSD: 2,"Credit actuel: CHF -0,44; 25 SMS gratuits jusqu'au 01.10.2009",15&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Reste a interagir correctement avec le modem, ce qui n'est pas totalement trivial a cause de quelques détails pratiques. J'utilise pour piloter le terminal un obscur outil appelé comgt, un équivalent de "chat" (le système de script utilisé par ppp) mais en plus flexible. Voila le script (a mettre dans /etc/comgt/credit):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;set com 115200n81&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;set senddelay 0.05&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;send "AT+CUSD=1,*130#,15^m"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;waitfor 60 "+CUSD:"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;get 10 "^m" $s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;print "Reply: ",$s,"\n"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On teste avec comgt:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;gate # comgt -d /dev/ttyS0 credit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SIM ready&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Waiting for Registration..(120 sec max)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Registered on Home network: "Swisscom"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Signal Quality: 21,99&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Got: "  2,"Crdit actuel: CHF -0,44;  Xtra-liberty: 25 SMS gratuits jusqu'au 01.11.2009.",15&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Reste à traiter la sortie pour l'envoyer vers nagios (exercice pour le lecteur parce que je suis paresseux).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-5946880195297105012?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/5946880195297105012/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=5946880195297105012' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/5946880195297105012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/5946880195297105012'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2009/06/controler-le-credit-sur-une-carte-sim.html' title='Contrôler le crédit sur une carte SIM avec Nagios'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-2358950553953348820</id><published>2009-05-25T10:45:00.002+02:00</published><updated>2009-05-25T10:59:04.208+02:00</updated><title type='text'>Gare au Hadophishing !</title><content type='html'>J'ai discuté récemment avec un internaute français, téléchargeur occasionnel, qui était persuadé d'avoir reçu un mail d'avertissement Hadopi.&lt;br /&gt;&lt;br /&gt;  Le mail en question est arrivé sur la mailbox de son ISP, "contre-signé par la gendarmerie", et incluait des prétendues preuves sous la forme d'une liste de téléchargements avec dates et heures.&lt;br /&gt;&lt;br /&gt;  J'ai hésité un instant. Pour autant que je sache, l'infrastructure Hadopi est loin d'être opérationnelle, cet e-mail était donc selon toute vraisemblance une tentative de phishing.&lt;br /&gt;&lt;br /&gt;  Comment la liste de téléchargements a-elle été produite ? Etait-ce simplement une liste aléatoire de titres populaires ? Comment un phisher pourrait-il relier une liste de téléchargements à une mailbox d'ISP ? Il est sûrement assez facile de moissonner des adresses IP sur un réseau P2P public, mais le lien avec les mailboxes correspondantes ne devrait être connu de personne hormis l'ISP.&lt;br /&gt;&lt;br /&gt;  Faut-il donc voir une brèche de sécurité chez son ISP ? un employé mécontent aurait-il pu revendre ces informations à un phisher ? ou pire, l'attaque pourrait-elle directement émaner d'un insider ?&lt;br /&gt;&lt;br /&gt;  Tout ceci fait réfléchir aux implications du processus prévu par la loi Hadopi. Les mails de phishing de ce genre sont une deuxième attaque évidente contre ce processus (la première est l'envoi de plaintes arbitraires et invérifiables a l'encontre d'inconnus)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-2358950553953348820?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/2358950553953348820/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=2358950553953348820' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/2358950553953348820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/2358950553953348820'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2009/05/gare-au-hadophishing.html' title='Gare au Hadophishing !'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-33573526399132425</id><published>2008-04-10T23:18:00.003+02:00</published><updated>2008-04-10T23:25:56.943+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PolyLAN'/><title type='text'>Threads perl avec Gentoo - Beware !</title><content type='html'>Je viens de perdre deux bonnes heures avec un problème bien tordu.&lt;br /&gt;&lt;br /&gt;  A PolyLAN X, il semblerait que la cause du gros foirage de l'authentification soit dû non pas au dimensionnement du nombre de transactions autorisé, comme je l'ai d'abord pensé, mais au fait que l'interpréteur Perl n'était pas threadé, et que par conséquent un seul login simultané pouvait avoir lieu pour le serveur radius.&lt;br /&gt;&lt;br /&gt;  Après un "echo dev-lang/perl ithreads &gt;&gt;/etc/portage/package.use ; emerge perl", radiusd s'est retrouvé incapable de démarrer, se plaignant d'un symbole manquant dans le module rlm_perl.&lt;br /&gt;&lt;br /&gt;  Ré-emerger freeradius n'a bien entendu rien donné.&lt;br /&gt;&lt;br /&gt;  Le problème était qu'a la compilation, freeradius à utilisé les headers de perl pour compiler son module, mais au lancement, il se liait dynamiquement à la libperl. Sous Gentoo, l'interpréteur perl et la libperl sont deux packages séparés, et je n'avais pas réinstallé la libperl.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  De manière générale, plein de problèmes de linking sont apparus. Ces problèmes auraient du être résolus par perl-cleaner; malheureusement, si perl threadé et non threadé sont considérées comme des versions différentes, avec des répertoires séparés pour les libs, perl-cleaner les considère comme une seule et même version, et ne déclenche pas la reconstruction par défaut. Il fallait donc utiliser "perl-cleaner allmodules" plutot que "perl-cleaner modules".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-33573526399132425?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/33573526399132425/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=33573526399132425' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/33573526399132425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/33573526399132425'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2008/04/threads-perl-avec-gentoo-beware.html' title='Threads perl avec Gentoo - Beware !'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-4322197788246449324</id><published>2008-03-30T21:35:00.003+02:00</published><updated>2008-03-30T22:04:54.314+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PolyLAN'/><title type='text'>PolyLAN XI, Topologie Réseau</title><content type='html'>Voici le plan pour la topologie du réseau PolyLAN XI (en admettant que nous recevions bien le 6248 à temps)&lt;br /&gt;&lt;br /&gt;Places: 216&lt;br /&gt;&lt;br /&gt;Couche Physique :&lt;br /&gt;&lt;br /&gt;Au centre, le 6242 en haut du rack. Fifi, Riri, Loulou sur ports 1,2,3.&lt;br /&gt;ports 27-48 trunkés par paires, donc 11 trunks (9 zones joueurs, 2 zones admin)&lt;br /&gt;ports 4-26 pour serveurs de jeu.&lt;br /&gt;&lt;br /&gt;Couche Ethernet :&lt;br /&gt;&lt;br /&gt;Vlan 1: réseau de production. Vlan par défaut, untagged partout sauf ports 2 et 3&lt;br /&gt;Vlan 10: réseau administratif. Tagged sur tous les trunks et sur port 1 (fifi)&lt;br /&gt;Vlan 20: réseau passerelle vers internet. Untagged sur ports 2 et 3.&lt;br /&gt;&lt;br /&gt;Couche IP:&lt;br /&gt;&lt;br /&gt;Réseau administratif: 10.0.4.0/24 sur Vlan 10.&lt;br /&gt; Fifi: 10.0.4.10&lt;br /&gt;&lt;br /&gt;Réseau passerelle: 10.0.8.0/24 sur Vlan 20.&lt;br /&gt; Core: 10.0.8.1&lt;br /&gt; Adresse de routage flottante: 10.0.8.2&lt;br /&gt; Loulou (primaire): 10.0.8.3&lt;br /&gt; Riri (secours): 10.0.8.2&lt;br /&gt;&lt;br /&gt;Réseau production: 10.0.0.0/22 sur Vlan 1&lt;br /&gt; 10.0.0.0/24 : Services réseau&lt;br /&gt;   10.0.0.1: Core&lt;br /&gt;   10.0.0.2: Fifi&lt;br /&gt; 10.0.1.0/24 : Serveurs &amp;amp; Admins&lt;br /&gt; 10.0.2.0/23 : Joueurs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pfew.... un vrai jeu d'enfant, comparé à PolyLAN X :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-4322197788246449324?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/4322197788246449324/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=4322197788246449324' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/4322197788246449324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/4322197788246449324'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2008/03/polylan-xi-topologie-rseau.html' title='PolyLAN XI, Topologie Réseau'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-6371480050437341518</id><published>2008-03-30T13:51:00.001+02:00</published><updated>2008-03-30T13:54:57.428+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='radio'/><title type='text'>C'est pas demain que j'aurai ma license...</title><content type='html'>... Vu que la personne qui s'occupe de ça a l'OFCOM a pris des vacances. Du coup, va falloir attendre encore un peu... frustration frustration&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-6371480050437341518?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/6371480050437341518/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=6371480050437341518' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/6371480050437341518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/6371480050437341518'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2008/03/cest-pas-demain-que-jaurai-ma-license.html' title='C&apos;est pas demain que j&apos;aurai ma license...'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-7053804178006552630</id><published>2008-03-11T21:34:00.006+01:00</published><updated>2008-03-12T20:18:37.086+01:00</updated><title type='text'>Diplôme, HAM-Radio, LACAL, Polylan</title><content type='html'>Ca y est, je suis "Officiellement autorisé à porté le titre d'ingénieur en systèmes de communication", avec le petit papier qui va bien. Je ne suis donc plus un bon a rien d'étudiant, yesss !&lt;br /&gt;&lt;br /&gt; Petite geulante contre l'administration de l'EPFL: c'est bien d'avoir une gestion automatique des droits, avec un bel annuaire LDAP et tout. Mais quand le lendemain de la réception de la jolie enveloppe, on se retrouve avec tous les accès physiques et une bonne partie des accès éléctroniques coupés, ça fait un peu l'effet d'un bon coup de pied au cul... et c'est pas franchement pratique pour finaliser les projets encore en cours.&lt;br /&gt;&lt;br /&gt; Mercredi, j'ai passé l'examen de radio-amateur CEPT. J'attends de recevoir la concession. En attendant, j'ai fait l'acquisition d'un IC-271E en excellent état pour le 145MHz, et une antenne GP qui va avec. J'ai posé l'antenne sur le balcon du toit d'INJ en attendant de pouvoir faire mon premier QSO légal. J'ai aussi une superbe antenne magnétique pour la HF, qui venait avec un tuner automatique et SWR-mètre intégré. Malheureusement je n'ai pas (encore) de transceiver HF.&lt;br /&gt;&lt;br /&gt; Je suis sur le point d'être engagé par le LACAL avec pour mission officielle de mettre en place le cluster de playstations. Nous avons gardé le front-end que j'avais configuré il y a trois mois, mis au point un schéma d'allocation d'adresses et de noms. Dans un premier temps, il n'y aura pas de scheduler, les noeuds seront directement accessibles en SSH depuis le front-end. Nous allons probablement acheter une meilleure machine pour le front-end, et reconvertir l'ancien en station de gestion réseau. Aujourd'hui, Dag Arne a enfin obtenu les droits administratifs de resp. technique du labo, ce qui nous à permis d'obtenir une adresse fixe pour ce foutu front-end. L'objectif est de pouvoir lancer les premiers calculs à la fin de la semaine prochaine.&lt;br /&gt;&lt;br /&gt; PolyLAN XI aura lieu le w-end du 12-13 Avril, au hall du SG à l'EPFL. Ceci risque d'être ma dernière ou avant-dernière édition :( Grâce au soutien technique de Dell, nous allons pouvoir acquérir à prix préférentiel un superbe PC6248 tout neuf, ce qui couvrira nos besoins pour cette édition en terme d'interconnexions Gigabit. La performance niveau ARP devrait rester bonne puisque nous gardons un routeur matériel, et il n'y aura plus de trunk limitant au milieu qui coupe la salle en deux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-7053804178006552630?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/7053804178006552630/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=7053804178006552630' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/7053804178006552630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/7053804178006552630'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2008/03/diplme-ham-radio-lacal-polylan.html' title='Diplôme, HAM-Radio, LACAL, Polylan'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-1806057985512697461</id><published>2008-02-01T13:41:00.000+01:00</published><updated>2008-02-01T13:45:04.609+01:00</updated><title type='text'>Yatta !</title><content type='html'>Ca y est, j'ai rendu mon mémoire de master !&lt;br /&gt;&lt;br /&gt;La défense aura lieu le 18 février. D'ici la, un peu de temps pour me reposer !&lt;br /&gt;&lt;br /&gt;Accessoirement, comme une bonne nouvelle ne vient jamais seule: le papier dont je suis co-auteur (Parity-regular Steinhaus graphs) a été accepté par l'AMS et sera publié dans leur prochaine édition ! (détails &lt;a href="http://www.ams.org/mcom/0000-000-00/S0025-5718-07-02063-7/home.html"&gt;ici&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-1806057985512697461?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/1806057985512697461/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=1806057985512697461' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/1806057985512697461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/1806057985512697461'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2008/02/yatta.html' title='Yatta !'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-1513774096656970096</id><published>2008-01-16T23:48:00.000+01:00</published><updated>2008-01-16T23:55:00.535+01:00</updated><title type='text'>EPFL::Restaurant</title><content type='html'>Voici mon dernier gadget Perl, le module &lt;a href="http://xolus.net/%7Emax/Restaurant.pm"&gt;EPFL::Restaurant&lt;/a&gt;. Il permet d'accéder directement aux menus hebdomadaires sur &lt;a href="http://restauration.epfl.ch"&gt;http://restauration.epfl.ch&lt;/a&gt;. La doc POD explique sommairement son utilisation.&lt;br /&gt;&lt;br /&gt;Dépendances: LWP, HTML::TableExtract&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-1513774096656970096?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/1513774096656970096/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=1513774096656970096' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/1513774096656970096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/1513774096656970096'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2008/01/epflrestaurant.html' title='EPFL::Restaurant'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-1023884103814861789</id><published>2008-01-11T11:04:00.000+01:00</published><updated>2008-01-11T19:45:05.769+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant programmation scala entreprise'/><title type='text'>Sus aux "programmeurs d'entreprise" !</title><content type='html'>Suivant une discussion plus ou moins aléatoire sur #scala/Freenode, j'ai suivi par hasard &lt;a href="http://stephan.reposita.org/archives/2008/01/09/qi4j-the-next-java-forget-scala/"&gt;ce rant&lt;/a&gt;, qui m'a conduit à &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=221903"&gt;cet autre rant&lt;/a&gt;, sans compter &lt;a href="http://creativekarma.com/ee.php/weblog/comments/my_verdict_on_the_scala_language/"&gt;celui-là&lt;/a&gt;. Amusant, suivant de près &lt;a href="http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html"&gt;ce dernier&lt;/a&gt; lancé il y a peu de temps sur Slashdot.&lt;br /&gt;&lt;br /&gt; Je n'ai absolument aucune compétence en Scala, n'ayant jamais rien programmé d'utile avec. Je n'en ai pas encore eu l'opportunité. Je n'ai donc pas d'intérêts particuliers à défendre Scala.&lt;br /&gt;&lt;br /&gt; En revanche, je trouve absolument effarant et dramatique l'avis de ces prétendus programmeurs&lt;br /&gt;, et reste béat devant l'absurdité et l'incohérence de leur discours. Par ou commencer ?&lt;br /&gt;&lt;br /&gt; Le plus incroyable reste certainement celui qui prétend que les évolutions sophistiquées du langage Java le condamnent, que les génériques étaient une erreur monumentale, les casts étant un mécanisme bien plus naturel, et qu'il est hors de question d'y ajouter des fermetures, encore moins des horreurs fonctionnelles; que ces solutions sont bonnes uniquement pour des chercheurs isolés dans leur tour d'ivoire, mais que les "vrais programmeurs" qui travaillent sur des applications "business" n'en ont pas besoin.&lt;br /&gt;&lt;br /&gt; Mais quelle sorte de programmeur prendrait donc une telle position ?? Ces gens seraient nés quelques dizaines d'années plus tôt, ils auraient été du lot qui défendait fermement le COBOL contre tous ces langages modernes bizarres et sans intérêts comme le C ou le Pascal... la récursion ? la programmation structurée ? baaah, ca sert a rien, c'est inutile, et le Lisp on en parle même pas..&lt;br /&gt;&lt;br /&gt; Mon premier langage de programmation fut le Basic. Avec mes premiers pas d'autodidacte, j'ai produit quantité de code bancal et inélégant. Et au fur et a mesure que ce code expérimental boiteux s'accumulait, je commençais à identifier des problèmes récurrents.&lt;br /&gt;&lt;br /&gt;J'ai découvert le Pascal, et la programmation structurée. Me suis-je dit "beeeeh, c'est compliqué, les gosub ca suffit, et la récursion ca s'émule avec des boucles quoi qu'on dise" ? certes non! Enfin, l'assurance d'un scope restreint, la fin de l'erreur de typo a la ligne 1642 qui plante le programme à la ligne 492...&lt;br /&gt;&lt;br /&gt;J'ai découvert les pointeurs en C. Me suis-je dit: "beeeeh, c'est compliqué, c'est dur a comprendre, de toutes façons je peux tout faire avec des tableaux et des indices" ? certes non! enfin des noms cohérents pour des alternatives hétérogènes !&lt;br /&gt;&lt;br /&gt;J'ai découvert Perl, premier contact avec les fermetures. Je ne savais même pas ce qu'était une fermeture. Pourtant, c'est grâce aux fermetures qu'une bonne partie du code perl faisant appel à des subs anonymes fonctionne correctement après un premier jet...&lt;br /&gt;&lt;br /&gt;J'ai découvert Java. Après avoir travaillé sur plusieurs programmes relativement sophistiqués, j'ai mordu la poussière sur des erreurs de typage dynamique, je haïssais le système de types de Java et en particulier la technique hideuse du cast systèmatique pour utiliser une collection. Avec Java 5, j'ai découvert les génériques. Me suis-je dit: "beeeeh, les casts sont bien plus faciles, de toutes facons ces types sont juste un encombrement inutile ?" certes non ! les génériques me donnaient la garantie de l'absence d'erreurs de type dans mon programme, au prix de quelques modifications très intuitives.&lt;br /&gt;&lt;br /&gt;J'ai découvert Haskell, le premier langage fonctionnel que j'ai utilisé sérieusement. Me suis-je dit: "baaah, les fonctions d'ordre supérieur, c'est inutile, c'est un passe-temps d'académique inutile dans la vraie vie ?" certes non ! j'abusais déja des map, grep et sort en Perl, et quel plaisir de pouvoir utiliser des callbacks sans définir une centaine de classes internes de 3 lignes, comme il est nécessaire de faire en java !&lt;br /&gt;&lt;br /&gt; Que dire maintenant, des deux dirigeants d'AdaCore, qui se plaignent que l'enseignement de Java comme langage primaire dans les universités a été une terrible décision. Java "encouragerait les programmeurs a chercher des solutions toutes faites dans des librairies pré-existantes, plutôt que de développer ses propres routines plus performantes."&lt;br /&gt;&lt;br /&gt; HELLOOO ? il me semble que l'immense majorité de la communauté s'accorde à dire que la performance était le problème de la dernière décennie; la loi de Moore n'a de loin pas l'air de s'essoufler, et les évolutions récentes des langages de programmation se font toutes dans la même direction: améliorer la ré-usabilité du code. Quel idiot choisirait de pénaliser un programmeur qui préfère chercher une solution standard, éprouvée, répandue, et optimisée par sélection naturelle, plutôt que de réinventer une roue octogonale chaque fois que l'occasion le permet ?&lt;br /&gt;&lt;br /&gt;Ces gens m'énervent. ça m'énerve. Rhaaaah&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-1023884103814861789?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/1023884103814861789/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=1023884103814861789' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/1023884103814861789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/1023884103814861789'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2008/01/sus-aux-programmeurs-dentreprise.html' title='Sus aux &quot;programmeurs d&apos;entreprise&quot; !'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-3797489478671921813</id><published>2007-12-10T22:12:00.000+01:00</published><updated>2007-12-10T22:38:09.467+01:00</updated><title type='text'>Softs ham-radio</title><content type='html'>J'ai écrit quelques ebuilds pour des logiciels de radio-amateurisme qui ne sont pas dans portage:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://xolus.net/%7Emax/hamradio-ebuilds-pack.tar.gz"&gt;https://xolus.net/~max/hamradio-ebuilds-pack.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Contenu:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;xastir-1.9.2 - X Amateur Station Tracking and Information Reporting&lt;br /&gt;&lt;/li&gt;&lt;li&gt;fldigi-2.05 - Digital Modem&lt;br /&gt;&lt;/li&gt;&lt;li&gt;xlog-1.6 - QSO Logger&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;  Xastir permet de recevoir les données APRS (Automatic Position Reporting System), soit directement via un périphérique AX.25, soit via internet, a travers l'un des nombreux ponts publics (swiss.aprs2.net par exemple). Le traffic APRS non filtré représente un volume important. Spécifier un filtre (j'utilise a/53/-4/34/12, pour avoir uniquement la Suisse, la France, une bonne partie de l'Espagne, de l'Allemagne, et l'Italie du nord) permet de restreindre le traffic a un volume acceptable. Les données reçues incluent la position GPS des différentes stations (y compris voitures et autres stations portables), des relevés pour les stations météorologiques. Tout ça gratuitement... fun !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  Fldigi est un modem software qui fonctionne avec une carte son ALSA ou OSS. Il permet de faire de l'analyse de fréquences, et module/démodule le morse, différents modes MFSK, BPSK et QPSK, RTTY, Olivia et Throb, entre autres. Pour le morse, j'arrive tout a fait a m'en servir en tenant ma radio devant le micro de mon portable.&lt;br /&gt;&lt;br /&gt;  Xlog est un logiciel pour tenir un journal de contacts radio. Je ne m'en suis pas encore servi pour l'instant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-3797489478671921813?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/3797489478671921813/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=3797489478671921813' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/3797489478671921813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/3797489478671921813'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/12/softs-ham-radio.html' title='Softs ham-radio'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-8210346678649852354</id><published>2007-11-19T16:12:00.000+01:00</published><updated>2007-11-19T17:35:53.170+01:00</updated><title type='text'>Bouton power sur un PowerMac G4 sous Gentoo</title><content type='html'>J'ai hérité d'un sympathique petit PowerMac G4, que j'utilise à la maison comme serveur de stockage. Il tourne sous Gentoo Linux PPC.&lt;br /&gt;&lt;br /&gt;  Dans la configuration par défaut, il y a un petit détail ennuyeux: le bouton Power ne fait rien par défaut. Utilisant mon serveur sans écran ni clavier, je devais me connecter avec SSH depuis mon portable pour l'éteindre, ce qui est peu pratique. Le petit truc suivant m'a permis de configurer le bouton Power pour éteindre la machine proprement:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Un coup de showkeys en root via ssh, et appuyer sur le bouton. Chez moi, showkeys indique que le bouton est reconnu comme touche de clavier standard (keycode 116).&lt;/li&gt;&lt;li&gt;Dumpkeys indique que la touche est reconnue comme touche de clavier "Do":&lt;/li&gt;&lt;br /&gt;&lt;pre&gt;dumpkeys |grep 116&lt;br /&gt;keycode 116 = Do&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Ajoutons au script de boot (pour gentoo, /etc/conf.d/local.start fait l'affaire) un mapping qui associe le symbole KeyboardSignal à cette touche:&lt;/li&gt;&lt;br /&gt;&lt;pre&gt;loadkeys - &lt;&lt;&lt; 'keycode 116 = KeyboardSignal'&lt;/pre&gt;&lt;li&gt;Configurons init pour intercepter ce KeyboardSignal et éteindre la machine, en ajoutant cette ligne dans /etc/inittab:&lt;/li&gt;&lt;br /&gt;&lt;pre&gt;ha:12345:kbrequest:/sbin/shutdown -h now&lt;/pre&gt;&lt;br /&gt;&lt;/ol&gt;Voila :) Si j'ai le temps, je ferai une version sûre contre les extinctions accidentelles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-8210346678649852354?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/8210346678649852354/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=8210346678649852354' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/8210346678649852354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/8210346678649852354'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/11/bouton-power-sur-un-powermac-g4-sous.html' title='Bouton power sur un PowerMac G4 sous Gentoo'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-142673006751246581</id><published>2007-11-08T09:37:00.001+01:00</published><updated>2007-11-08T09:39:32.799+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PolyLAN'/><title type='text'>Screenshot PLT 0xA</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_is9Y35ir1Bg/RzLLBZMW-sI/AAAAAAAAAAU/litAxTLrbPc/s1600-h/plt-trunks.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_is9Y35ir1Bg/RzLLBZMW-sI/AAAAAAAAAAU/litAxTLrbPc/s320/plt-trunks.jpg" alt="" id="BLOGGER_PHOTO_ID_5130386150331448002" border="0" /&gt;&lt;/a&gt;Un petit screenshot du nouveau plan de réseau pour PolyLAN 0xA&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-142673006751246581?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/142673006751246581/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=142673006751246581' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/142673006751246581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/142673006751246581'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/11/screenshot-plt-0xa.html' title='Screenshot PLT 0xA'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_is9Y35ir1Bg/RzLLBZMW-sI/AAAAAAAAAAU/litAxTLrbPc/s72-c/plt-trunks.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-5704859987544056385</id><published>2007-11-08T04:28:00.000+01:00</published><updated>2007-11-08T05:05:46.530+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PolyLAN'/><title type='text'>En direct du local PolyLAN...</title><content type='html'>La configuration progresse à petits pas... Comme toujours, je perds mon temps en gadgets inutiles (ou pas). Dans la liste des fonctionnalités manquant à PLT, on peut maintenant barrer:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Des quittances pour les alertes sur l'état des trunks. Une touche dans le trunk monitor permet d'arrêter le clignotement, l'alarme est supprimée jusqu'a ce que le trunk récupère un état normal.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Un script wiring-map.pl permet d'obtenir une vue graphique de la configuration d'un switch donné dans la DB. Le script affiche la disposition des différents trunks et leurs destinations supposées, et les ports utilisateur déclarés.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Le code de gestion des traps SNMP a été largement réécrit pour être polymorphique, il est maintenant possible de traiter les traps en fonction du modèle de switch qui les envoie; il n'est plus nécessaie de maintenir de multiples entrées dans snmptrapd.conf, une seule entrée par défaut suffit.&lt;/li&gt;&lt;/ul&gt;Autrement, les backbones sont complètement configurés, et je vais commencer la configuration des 6 derniers switches 3424 (mise a jour firmware + configuration PolyLAN)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-5704859987544056385?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/5704859987544056385/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=5704859987544056385' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/5704859987544056385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/5704859987544056385'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/11/en-direct-du-local-polylan.html' title='En direct du local PolyLAN...'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-8537023070008908085</id><published>2007-11-05T21:24:00.000+01:00</published><updated>2007-11-05T21:29:41.530+01:00</updated><title type='text'>OIDs de versions sur Dell PowerConnect</title><content type='html'>SNMPv2-SMI::mib-2.47.1.1.1.1.9.67108992&lt;br /&gt;SNMPv2-SMI::mib-2.47.1.1.1.1.10.67108992&lt;br /&gt;SNMPv2-SMI::mib-2.47.1.1.1.1.8.67108992&lt;br /&gt;&lt;br /&gt;Ces OIDs permettent de récupérer les versions du bootcode, du firmware et du matériel des switches Dell PowerConnect. Confirmé sur 3424 et sur 5324.&lt;br /&gt;&lt;br /&gt;PLT inclut maintenant un script ./check-versions.pl qui affiche les versions des firmwares des équipements connectés.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-8537023070008908085?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/8537023070008908085/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=8537023070008908085' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/8537023070008908085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/8537023070008908085'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/11/oids-de-versions-sur-dell-powerconnect.html' title='OIDs de versions sur Dell PowerConnect'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-1949360818063949501</id><published>2007-11-02T12:42:00.000+01:00</published><updated>2007-11-02T12:46:53.997+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPFL'/><title type='text'>CaveShooter 0.3</title><content type='html'>Ca-y-est, CaveShooter a atteint une version utilisable ! on peut se tirer dessus tout en discutant. Après quelques ajustements au gameplay, c'est devenu carrément amusant.&lt;br /&gt;&lt;br /&gt;  Reste a y intégrer quelques cheat codes... je verrai ça quand j'ai le temps :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-1949360818063949501?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/1949360818063949501/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=1949360818063949501' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/1949360818063949501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/1949360818063949501'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/11/caveshooter-03.html' title='CaveShooter 0.3'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-829784424380351280</id><published>2007-11-02T01:43:00.000+01:00</published><updated>2007-11-02T02:22:03.427+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cudoku'/><title type='text'>cudoku 0.2 !</title><content type='html'>Voila une nouvelle version de CuDoKu, mon solveur de sudoku en curses !&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Il est maintenant possible d'importer et de sauvegarder les grilles&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pour les cas ou l'algorithme d'induction-déduction ne suffit pas, le solveur effectue une descente récursive&lt;/li&gt;&lt;/ul&gt;Pour rappel, cudoku est écrit en Perl pur, et utilise une interface Curses (nécessite le module Curses de perl).&lt;br /&gt;&lt;br /&gt;Vous pouvez obtenir la dernière version via mon serveur Mercurial tout neuf:&lt;br /&gt;&lt;pre&gt;hg clone https://xolus.net/hg/cudoku&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ou simplement le tarball:&lt;br /&gt;&lt;a href="http://xolus.net/%7Emax/cudoku-0.2.tar.gz"&gt;https://xolus.net/~max/cudoku-0.2.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;lancez simplement avec ./cudoku &lt;nom&gt;. La grille démarre vide si le fichier n'existe pas.&lt;br /&gt;&lt;br /&gt;Une grille enregistrée est composée de neuf lignes de neuf caractères, pouvant être les chiffres de 1 à 9 pour les valeurs connues, ou 0 si la case est inconnue. Le programme est souple et acceptera des caractères arbitraires entre les chiffres.&lt;br /&gt;&lt;br /&gt;N'hésitez pas à y apporter des améliorations et à me soumettre par mail des patches Mercurial:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(hack hack hack...)&lt;br /&gt;hg commit -m 'uber-cool changes'&lt;br /&gt;hg bundle mes-ameliorations.hg https://xolus.net/hg/cudoku&lt;br /&gt;(envoyer mes-ameliorations.hg par mail)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-829784424380351280?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/829784424380351280/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=829784424380351280' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/829784424380351280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/829784424380351280'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/11/cudoku-02.html' title='cudoku 0.2 !'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-7012297596693761936</id><published>2007-11-01T09:48:00.000+01:00</published><updated>2007-11-01T17:59:19.423+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPFL'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Du bon usage de /finally/</title><content type='html'>Dans le cadre du cours de réseaux informatiques, nous constatons malheureusement quelques légères difficultés avec de la matière de première année... un point particulièrement problématique est celui du traitement des exceptions en Java.&lt;br /&gt;&lt;br /&gt;En particulier, la formation en première année (selon mes souvenirs) ne se concentre que sur l'aspect interception des exceptions, comme une nuisance mineure mais inévitable; la création d'exceptions propres au programme, et le report du traitement des erreurs, sont malheureusement mis de coté. Je ne crois pas avoir jamais fait d'exercice consistant a remonter une exception dans un cas concret.&lt;br /&gt;&lt;br /&gt;L'intérêt des exceptions est évidemment de pouvoir déférer le traitement d'erreurs a une couche plus élevée du code, la ou il est possible de prendre une décision pertinente quant au traitement de l'erreur, et ce sans saturer l'interface de la méthode.&lt;br /&gt;&lt;br /&gt;Exemple: voici une fonction sensée construire un objet 'blob' à partir d'un fichier:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Blob lire(String fichier) {&lt;br /&gt;   Blob b = ...&lt;br /&gt;   FileInputStream f = ...&lt;br /&gt;   ...&lt;br /&gt;   f.close();&lt;br /&gt;   return b;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Mais si le fichier ne peut être lu ? d'ailleurs, le code précédent ne compile même pas; il y a plein d'exceptions IOException non récupérées. Que faire ? j'ai vu beaucoup de gens tomber dans le travers suivant:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Blob lire(String fichier) {&lt;br /&gt;   try {&lt;br /&gt;       Blob b = ...&lt;br /&gt;       ...&lt;br /&gt;       return b;&lt;br /&gt;   } catch (Exception e) {&lt;br /&gt;       return null;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;FAUX !!!&lt;br /&gt;Non seulement le code appelant risque de se manger une NullPointerException à tout moment, mais en plus on perd complètement la traçe de l'erreur initiale. Et en plus, si un problème survient pendant la lecture (formatage, etc...) le fichier ne sera jamais fermé !&lt;br /&gt;&lt;br /&gt;On réessaie:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Blob lire(String fichier) {&lt;br /&gt;   try {&lt;br /&gt;       FileInputStream f = ...&lt;br /&gt;       //fichier bien ouvert, il faut le fermer&lt;br /&gt;       Blob b;&lt;br /&gt;       try {&lt;br /&gt;           ...&lt;br /&gt;       } catch (IOException e) {} //Erreur pendant lecture&lt;br /&gt;       f.close();&lt;br /&gt;       return b;&lt;br /&gt;   } catch (Exception e) {&lt;br /&gt;       return null;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ARCHI-FAUX !!!&lt;br /&gt;&lt;br /&gt;La encore, on retourne un b qui risque d'être incorrect si le parsing n'a pas marché. Sans compter la laideur... notez qu'on ne peut retourner le b avant le f.close(), puisque le return termine la fonction, forcément...&lt;br /&gt;&lt;br /&gt;On nous a enseigné que la syntaxe appropriée est:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;try {&lt;/b&gt; ... &lt;b&gt;}&lt;/b&gt; { &lt;b&gt;{ catch(&lt;/b&gt;&lt;i&gt;Type e&lt;/i&gt;&lt;b&gt;) {&lt;/b&gt; ... &lt;b&gt;}&lt;/b&gt; } &lt;b&gt;} finally {&lt;/b&gt; ... &lt;b&gt;}&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;en première année, on se contente de dire que "le contenu du bloc finally est toujours exécuté après le contenu du bloc try, même si celui-ci a levé une exception.&lt;br /&gt;&lt;br /&gt;Naif étudiant en première que j'étais, je me suis posé la question: Mais quelle est donc la différence entre:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;try {&lt;br /&gt;   ... //throws MyException&lt;br /&gt;} catch (MyException e) {&lt;br /&gt;   ...&lt;br /&gt;} finally {&lt;br /&gt;   ... // blah blah&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;et&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;try {&lt;br /&gt;   ... //throws MyException&lt;br /&gt;} catch (MyException e) {&lt;br /&gt;   ...&lt;br /&gt;}&lt;br /&gt;// blah blah&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;? Dans les deux cas, si le contenu du bloc try lève une exception MyException, celle-ci est attrapée, et le code "blah blah" est exécuté. Alors pourquoi cette clause finally ?&lt;br /&gt;&lt;br /&gt;Ce qui n'a pas assez été répété, c'est que le code dans le "try" peut très bien lever une &lt;span style="font-style: italic;font-size:100%;" &gt;autre&lt;/span&gt;exception que celle de la clause catch (qui est d'ailleurs facultative). D'une part, le code peut lever une exception de type RuntimeException (dont l'interception n'est pas obligatoire, car de telles exceptions sont considérées imprévisibles), d'autre part, la méthode contenant le bloc try/finally peut très bien déclarer elle-même lever des exceptions. Enfin, sachez également qu'il est possible de faire un "return" a l'intérieur d'un bloc try/finally, et que la clause finally sera exécutée tout de même !&lt;br /&gt;&lt;br /&gt;Ce qui nous amène naturellement a la version légèrement plus correcte de l'exemple précédent:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Blob lire(String fichier) throws IOException {&lt;br /&gt;   FileInputStream f = ...&lt;br /&gt;   //fichier ouvert&lt;br /&gt;   try {&lt;br /&gt;       Blob b = ...&lt;br /&gt;       ...&lt;br /&gt;       return b;&lt;br /&gt;   } finally {&lt;br /&gt;       f.close();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notez que nous n'avons utilisé qu'un seul try/catch, que nous n'avons pas besoin de prédéclarer b dans un autre bloc (ce qui est laid), que f.close() sera toujours appelé si le fichier a été correctement ouvert, que le b retourné sera toujours correct, que le programme appelant aura a sa disposition toute l'information nécessaire pour réagir correctement à l'erreur, et que le compilateur informera le programmeur si le code de traitement d'erreur est oublié.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-7012297596693761936?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/7012297596693761936/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=7012297596693761936' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/7012297596693761936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/7012297596693761936'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/11/du-bon-usage-de-finally.html' title='Du bon usage de /finally/'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-8267987319045853854</id><published>2007-10-29T22:37:00.000+01:00</published><updated>2007-10-29T22:56:30.265+01:00</updated><title type='text'>Tests de VCS distribués</title><content type='html'>Je suis depuis quelques temps à la recherche d'un nouveau VCS (Version Control System). J'utilise habituellement Subversion, qui a l'avantage d'être répandu. Mais le versionage centralisé commence à montrer ses limites. La goutte d'eau qui a fait déborder le vase a été le serveur SVN du LCA auquel je n'ai pu accéder a cause d'un glitch administratif, et qui nous a poussé à héberger l'arbre de CaveShooter sur un serveur à part, et la perte de temps qui s'en est suivie.&lt;br /&gt;&lt;br /&gt;  Quatre VCS distribués ont retenu mon attention pour l'instant: Bazaar, Darcs, Mercurial et Monotone.&lt;br /&gt;&lt;br /&gt;  J'ai eu tenté de migrer vers Arch (l'ancêtre de Bazaar) il y a quelque temps, mais j'ai trouvé l'interface rébarbative. Il semblerait que Bazaar aie porté le focus sur la facilité d'utilisation; c'est probablement une bonne chose.&lt;br /&gt;&lt;br /&gt;  Darcs prétend fournir des merges plus puissants, étant basé sur la "théorie des patches". L'interface est en revanche assez différente des VCS que je connais pour être déstabilisant.&lt;br /&gt;&lt;br /&gt;  Mercurial est très façile a prendre en main pour un utilisateur habitué à Subversion, la migration étant quasiment transparente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-8267987319045853854?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/8267987319045853854/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=8267987319045853854' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/8267987319045853854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/8267987319045853854'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/10/tests-de-vcs-distribus.html' title='Tests de VCS distribués'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-265455504576456541</id><published>2007-10-26T03:00:00.000+02:00</published><updated>2007-10-26T03:07:58.000+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPFL'/><title type='text'>CaveShooter 0.2</title><content type='html'>La programmation de CaveShooter avance gentiment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; La machine d'états TCP inclut maintenant le système de discussion et les join/part des divers participants.&lt;/li&gt;&lt;li&gt;Côté UDP, un nouveau trick de multithreading permet d'avoir des ticks un peu plus réguliers.&lt;/li&gt;&lt;li&gt;Les Magic Numbers manquants ont été corrigés&lt;br /&gt;&lt;/li&gt;&lt;li&gt;La logique de jeu a évolué, les objets sont maintenant capables de se déplacer, le tir devrait suivre sous peu.&lt;/li&gt;&lt;li&gt;La structure dans caveshooter.protocol.* a été revue et concerne maintenant la sérialisation/désérialisation des messages udp uniquement, le reste étant géré par les clients et serveurs respectifs&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-265455504576456541?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/265455504576456541/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=265455504576456541' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/265455504576456541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/265455504576456541'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/10/caveshooter-02.html' title='CaveShooter 0.2'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-3763577980489778508</id><published>2007-10-24T17:34:00.000+02:00</published><updated>2007-10-25T11:45:23.378+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PolyLAN'/><title type='text'>Configuration de l'équipement réseau</title><content type='html'>J'ai commencé à reconfigurer les équipements en accord avec le nouveau schéma d'allocation choisi.&lt;br /&gt;&lt;br /&gt; Il semblerait que le protocole de trunking utilisé par le Dell 6224 soit incompatible avec les autres équipements Dell que nous avons (5224 et 3424); sur les switches que nous avions, le vlan 1 est considéré comme le vlan par défaut, et ses paquets ne sont jamais taggés, mais toujours envoyés tels quels sans étiquette de vlan. C'est une mesure de compatibilité; un client qui ne comprend pas les vlans 802.1q et se retrouve accidentellement connecté à un port trunk sera vu comme appartenant au vlan 1.&lt;br /&gt;&lt;br /&gt; Sur le 6224, les paquets appartenant au vlan 1 sont taggés quand ils sortent par un port trunk. C'est probablement une mesure de sécurité, soit pour empêcher un client hostile du vlan 1 d'injecter des paquets a destination d'autres vlans à travers un port trunk.&lt;br /&gt;&lt;br /&gt;La différence entre ces deux modes de gestion empêche les paquets du vlan 1 de traverser les port trunk entre le 6224 et les autres modèles. Il faudrait passer les trunks entre les backbones en mode générique, pour forcer les paquets du vlan 1 à sortir en mode non-taggé, ou ne plus utiliser le vlan 1 du tout. Pour l'instant, je retiens la 2e solution, qui est plus simple à configurer, mais empêche un client mal configuré de fonctionner sur un port trunk (ce peut être un mal ou un bien, en fonction de la situation)&lt;br /&gt;&lt;br /&gt; Je pense également placer Loulou dans un micro-subnet à part, de manière a faire tout transiter par le 6224. Ca permettra à tous les autres équipements du réseau de n'avoir a configurer qu'une entrée de routage par défaut.&lt;br /&gt;&lt;br /&gt; Le système de génération des configurations a été mis a jour pour inclure le nouveau schéma de vlans, et mettre les ports utilisateurs dans le vlan 2 par défaut.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-3763577980489778508?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/3763577980489778508/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=3763577980489778508' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/3763577980489778508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/3763577980489778508'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/10/configuration-de-lquipement-rseau.html' title='Configuration de l&apos;équipement réseau'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-2866209618561464225</id><published>2007-10-23T23:37:00.000+02:00</published><updated>2007-10-24T17:47:19.916+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PolyLAN'/><title type='text'>La structure réseau se met en place</title><content type='html'>On commence gentiment à planifier la topologie du réseau pour PolyLAN X.&lt;br /&gt;&lt;br /&gt; Comme nous ne sommes pas certains de la performance qu'apportera la segmentation du réseau, nous allons prévoir quatre subnets pouvant accomoder ~ 500 machines chacun. Au début de la LAN, tous les participants seront dans un subnet unique, et nous couperons le réseau en 2 segments de 200, ou 4 segments de 100, si nécessaire.&lt;br /&gt;&lt;br /&gt; La classe d'allocation 10.0.4.0/24 sera gardée pour le vlan administratif de l'équipement réseau. Nous utiliserons 10.1.0.0/16 à 10.4.0.0/16 comme subnets opérationnels. Dans ces subnets, 10.x.0.0/24 sera réservé pour les serveurs multihomed, tandis que 10.x.2.0/23 sera une classe libre à allouer aux joueurs.&lt;br /&gt;&lt;br /&gt; Pour ce faire, nous abandonnons l'utilisation du proxy-arp. Premièrement, cette technique n'apporte qu'un faible avantage par rapport à des subnets distincts. Avec des subnets distincts, déplacer une machine de segment requiert de la déconnecter pour lui réallouer une adresse différente, tandis qu'avec le proxy-arp, même si l'adresse peut rester la même, il est quand même nécessaire de purger la table arp pour que le réseau fonctionne correctement, mais également de purger les entrées relatives a ce client sur toutes les autres machines. En pratique, on devra donc se baser sur le timeout arp pour faire expirer ces entrées, ce qui est peu pratique et exclut l'utilisation d'un timeout large. Or, nous comptons sur l'utilisation d'un timeout large pour réduire le traffic ARP.&lt;br /&gt;&lt;br /&gt; Deuxièmement, l'architecture en subnets permet aux applications de savoir qu'elles ne communiquent pas avec des machines locales. Le proxy-arp peut en théorie rendre impossible le fonctionnement de certaines applications, et nous manquons de temps pour tester.&lt;br /&gt;&lt;br /&gt; Pour permettre a tous les joueurs de voir tous les serveurs, les serveurs découvrables par broadcast (CS, BF ?) seront tous multi-homed; chaque serveur disposera d'une adresse dédiée pour chaque subnet différent.&lt;br /&gt;&lt;br /&gt; Pour réduire encore plus le traffic de broadcast, nous installerons un serveur WINS, et demanderons si nécessaire a nos joueurs de configurer leur machine en p-mode (pas de broadcasts netbios). J'essaierai de bricoler qqch pour envoyer des messages popups aux machines fonctionnant en b-mode.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-2866209618561464225?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/2866209618561464225/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=2866209618561464225' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/2866209618561464225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/2866209618561464225'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/10/la-structure-rseau-se-met-en-place.html' title='La structure réseau se met en place'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-5231294946809052827</id><published>2007-10-19T18:55:00.000+02:00</published><updated>2007-10-19T19:02:27.891+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPFL'/><title type='text'>SpaceShooter devient CaveShooter</title><content type='html'>Le projet du cours sc250 pour l'année 2007 s'appelle désormais CaveShooter. Plus question de vaisseaux spatiaux, mais des hommes des cavernes opérant des catapultes pour lancer des rochers.&lt;br /&gt;&lt;br /&gt; Côté implémentation, Aris a terminé les classes du modèle, et a attaqué la vue graphique; j'ai implémenté le serveur TCP, la machine d'états pour le prologue TCP, et le receveur UDP.&lt;br /&gt;&lt;br /&gt; Le code est versioné avec SVN sur Xolus, mais je me demande sérieusement si je ne vais pas migrer vers Bazaar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-5231294946809052827?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/5231294946809052827/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=5231294946809052827' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/5231294946809052827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/5231294946809052827'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/10/spaceshooter-devient-caveshooter.html' title='SpaceShooter devient CaveShooter'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-2344273261317817938</id><published>2007-10-17T16:53:00.000+02:00</published><updated>2007-10-18T09:25:30.560+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PolyLAN'/><title type='text'>Résolu les crashs sur Fifi, structure réseau finalisée</title><content type='html'>Le plantage systématique de Firefox sur Fifi a été résolu. Apparemment, il s'agit d'un bug dans le driver ATI de X.org, propre à un modèle de carte particulier (ATI Rage IIC). L'accélération 2D hardware a été désactivée (option NoAccel de X.org), le système ne plante plus.&lt;br /&gt;&lt;br /&gt; L'organisation réseau a été finalisée pour PolyLAN X. Nous aurons 3 subnets dans des VLANs séparés, respectivement 10.0.[1,2,3].*, pour les joueurs. 10.0.x.1 sera reservé pour le routeur Dell. 10.0.x.2 sera réservé également pour Fifi, qui aura besoin d'un accès a tous les domaines de broadcast pour le monitoring DHCP notamment.&lt;br /&gt;&lt;br /&gt; Chaque joueur se trouvera dans un VLAN correspondant initalement au tournoi correspondant (CSS, RTS, et Autres). Il sera possible de changer dynamiquement de VLAN via une interface web, mais chaque VLAN sera limité à 200 personnes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-2344273261317817938?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/2344273261317817938/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=2344273261317817938' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/2344273261317817938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/2344273261317817938'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/10/rsolu-les-crashs-sur-fifi-structure.html' title='Résolu les crashs sur Fifi, structure réseau finalisée'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2527666923797847301.post-2141635769197384650</id><published>2007-10-16T11:12:00.000+02:00</published><updated>2007-10-16T11:13:07.325+02:00</updated><title type='text'>Ouf</title><content type='html'>Ma demande de déplacement pour mon service militaire a été acceptée. Je vais pouvoir finir mon PDM tranquille, j'aurai tout le temps nécessaire pour m'occuper du milliard de choses que j'ai a faire. Champagne !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2527666923797847301-2141635769197384650?l=blafh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blafh.blogspot.com/feeds/2141635769197384650/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2527666923797847301&amp;postID=2141635769197384650' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/2141635769197384650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2527666923797847301/posts/default/2141635769197384650'/><link rel='alternate' type='text/html' href='http://blafh.blogspot.com/2007/10/ouf.html' title='Ouf'/><author><name>Maxime Augier</name><uri>http://www.blogger.com/profile/15622717038591082366</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17962062917763231287'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>