Bon, petit coup de gueule contre les développeurs de Xorg,
Je viens d’installer Gnome (Arch) sur un vieux portable, et quelle fut ma surprise de constater que ni le Ctrl+Alt+Backspace, ni les Ctrl+Alt+F[0-9] fonctionnent !
C’est excellent, étant donné que j’ai quelques problèmes et que Xorg crashe quelquefois, ils veulent vraiment nous enlever tout moyen de reprendre le contrôle sur la machine à part Ctrl+Alt+Suppr ou un reset hard ? Non mais vraiment, les noobs appuyaient dessus sans faire exprès et étaient perdus ou ils veulent tout simplement nous bloquer car ça les amuse ?
C’est pas grand chose mais ça énerve vraiment.
Related Posts:
Posted in: Uncategorized
Tags: Arch, GNU/Linux, Xorg
Je me suis rendu compte il y a quelques semaines que mon interface réseau (msk0) cessait de fonctionner après un certain temps (jours, parfois des semaines) sous une charge modérée ou importante, tout en inondant le journal système de « msk0: watchdog timeout ». Ce qui est plûtot gênant pour un serveur… Je n’ai malheureusement pas réussi à corriger le problème en désactivant le MSI via l’outil sysctl(8)…
Le problème viendrait de :
- Une carte de mauvaise qualité (Marvell 88E8053)
- Un driver
msk(4) peu testé et donc rempli de bugs potentiels
La seule façon de rétablir la connexion est de redémarrer la machine. Ce qui pose problème quand on a accès à la machine en question uniquement par SSH la majorité du temps… J’ai donc réalisé un petit script (vraiment fait à la vite), faisant office de solution de secours, qui fait automatiquement redémarrer la machine si un watchdog timeout a été détécté. Cela permet de ne pas complètement bloquer l’accès via SSH.
Il suffit donc de lancer ce script en cronjob (effectué par root, bien sûr) :
#!/bin/sh
LOGFILE="/var/log/check_msk0"
DATE=`date`
CLEAN=`echo | grep zero`
LOGDATE=`date "+%b %d"`
TIMEOUTS=`cat /var/log/messages | grep "msk0: watchdog timeout" | tail | grep "$LOGDATE"`
if [ "$TIMEOUTS" = "$CLEAN" ]
then
echo "$DATE OK, no timeouts." >> $LOGFILE
echo OK.
else
echo "$DATE WATCHDOG TIMEOUT, initiating reboot..." >> $LOGFILE
echo Rebooting in 15 seconds. Press ^C to abort.
sleep 15
cp /var/log/messages /var/log/messages.timeout
echo > /var/log/messages
/sbin/reboot
fi
Inutile de préciser que j’ai commandé une nouvelle carte réseau, plus adaptée pour un serveur, et que cette solution est vraiment temporaire…
Related Posts:
Posted in: FreeBSD
Tags: FreeBSD
Il s’agit du dernier album de Saelynh. J’écoute ses compositions depuis… longtemps, et hmmm, je dois dire que je ne décroche pas du tout de ton changement de style musical.
Il s’agit de la couverture de présentation du disque. Juste pour le style en fait, car il n’y a pas (encore) d’album physique commandable. Dommage !
Et oui, les morceaux sont aussi bons que le titre est long.
Ce lecteur n’est sûrement pas valide et est très crade, mais ça vous donne une idée du genre…
N’hésitez donc pas à aller le télécharger (gratuitement et légalement) sur Jamendo, et à visiter son blog. On regrettera malgré tout l’absence de fichiers FLAC achetables quelque part (comme c’était le cas pour Old Beats of Industry).
Related Posts:
Posted in: Uncategorized
Tags: Jamendo, Music, Saelynh
Hello there,
Désolé pour la petite indisponibilité d’environ une semaine, la faute à un bloc d’alim qui a rendu l’âme…
Bon, j’en ai en attendant profité pour mettre à jour le système, avec :
- Une nouvelle alim, et un onduleur, pour ne pas avoir des soucis de FS corrompu
- Quatre disques de 1.5 TB en RAID10, grâce à ZFS. Ce système de fichiers est réellement génial.
- FreeBSD 8.0 avec Apache qui tourne dans une jail :-)
Related Posts:
Posted in: FreeBSD
Tags: FreeBSD, ZFS
Ma première compo avec quelqu’un d’autre, le résultat est vraiment cool.
Faut dire que c’était plus pour s’amuser qu’autre chose… Pari réussi !
Le résultat est ici : http://8bitcollective.com/music/Kontaktproblem/v++r+f++rsta/ . Le .xm peut se lire avec Winamp ou VLC.
J’espère que ça vous plaît autant que moi ! :-)
Related Posts:
Posted in: Uncategorized
Tags: Chiptracking, Music
Comme je lis ça un peu partout et que j’en ai assez de toujours me répéter, voici les cinq préjugés à propos de Freenet qui n’ont pas (plus) lieu d’être :
1. Freenet est compliqué à utiliser
C’est sûrement le préjugé le plus faux de tous. Depuis l’introduction des niveaux de sécurité, il est très simple de configurer un noeud. Le nouvel installeur Windows est performant et il y a toujours l’installation avec un installeur Java ou bien en headless pour les autres machines. Je suis d’accord pour dire que fms n’est par exemple pas utilisable par n’importe qui, mais Freetalk sera très, très bientôt disponible, et il sera directement intégré dans le noeud.
Si vous ne me croyez pas, vous croirez peut-être l’auteur de l’article sur The Guardian :
Installing the software takes barely a couple of minutes and requires minimal computer skills. You find the Freenet website, read a few terse instructions, and answer a few questions [...] Then you enter a previously hidden online world.
Traduction approximative pour les non-anglophones : installer le logiciel prend à peine quelques minutes et demande très peu de connaissances techniques. Vous allez sur le site de Freenet, lisez quelques instruction et répondez à quelques questions [...] Ensuite vous pouvez entrer dans un monde auparavant caché.
2. Freenet n’a aucun contenu
Il y a du contenu. Il n’est juste pas servi sur un plateau d’argent comme sur le web classique. Il y a les forums de discussion (fms, Freetalk), un plugin IRC (frirc, encore en développement), un plugin permettant de publier des blogs simplement (FlogHelper, développé et maintenu par moi même).
Il y a également l’index par défaut, assez conséquent, permettant à Library (le plugin permettant de faire des recherches) de trouver des résultats. Et si ça ne produit aucun résultat convaincant il y a toujours les indexes. Même si la quantité d’informations stockées n’est pas du tout du même ordre de grandeur que sur le web classique, il est faux de dire qu’il n’y a rien.
3. Il y a déjà Tor, I2P, …
Oui mais non. Ça ne fonctionne pas de la même façon. Tor est exactement l’opposé de Freenet. Tor permet d’accéder au web classique, Tor publie une liste de tous les noeuds de sortie, Tor ne stocke pas de données d’une façon décentralisée.
D’une façon générale, Tor et I2P n’ont pas de datastore distribué, Freenet oui. Qu’est-ce qu’un datastore distribué ? C’est ce qui fait que quand vous insérez du contenu dans Freenet, personne ne peut le supprimer. Et plus le contenu est populaire, plus il se répand et est stocké chez de nombreuses personnes. Il a donc moins de risques d’être effacé par un autre contenu nouvellement inséré. D’ailleurs, si vous coupez votre noeud, le contenu que vous avez inséré est toujours accessible. Le fait qu’il soit distribué (et décentralisé) fait qu’il n’y a pas un unique point d’échec. Tor et I2P ne fonctionnent pas selon ce principe ; l’anonymat fourni n’est pas le même.
Disons pour résumer que le seul point commun entre Freenet, Tor et I2P est qu’ils sont tous les trois des logiciels de P2P utilisant la cryptographie. Mais c’est tout, le fonctionnement, les objectifs et les moyens ne sont pas du tout les mêmes.
4. Freenet est inutile
Pas du tout. Il y a déjà des pays qui en ont besoin, comme par exemple en Chine, en Corée du Nord ou la liberté d’expression sur Internet n’est pas garantie. Cela pourrait aussi devenir le cas en Europe dans un futur plus ou moins proche… Freenet garantit une liberté d’expression non restreinte permettant de s’exprimer sans pour autant révéler son identité. L’idéal pour contrer la censure.
Je vous rappelle aussi qu’il est beaucoup plus simple de conserver sa liberté d’expression quand on la possède encore que de la regagner lorsqu’on l’a perdue.
5. Freenet est lent
Rappelez-vous que plus un contenu est populaire, plus il se propage et donc plus il devient facile d’y accéder. La place est limitée, on ne peut pas tout conserver. On obtient quand même de très bons taux de transferts (de l’ordre de 100 KiB/s) sur les gros fichiers populaires.
Comparé au web classique, ça n’est pas aussi rapide du tout. Même si grâce au « Client Cache » les sites que vous visitez deviennent rapidement accessibles après.
Related Posts:
Posted in: Freenet
Tags: Freenet
Il y a quelques mois, j’ai implémenté une barre de statut pour Freenet, l’idée était de Toad et j’étais plûtot emballé. Le but ? Améliorer la facilité d’utilisation en concentrant des informations dans une barre. L’emplacement dépend du thème, les thèmes bar défaut l’ont en haut alors que mon thème minimaliste la met en bas, fixe (c’est à dire qu’elle ne bouge pas même si on défile la page).
Voici en gros à quoi ressemble la barre :
On aperçoit tout à gauche les messages divers, la couleur dépend de la gravité des messages (les erreurs sont affichées directement en haut de la page, les avertissements s’affichent avec un fond jaune dans la barre et les autres messages mineurs s’affichent en bleu dans la barre), puis le choix de la langue (le choix de placer ça ici est relativement discutable, mais Toad le voulait et ça prend pas beaucoup de place) ; après tout, pourquoi pas. Il y a ensuite bien sûr le switch mode simple/avancé qui permet d’économiser de la place en haut, les niveaux de sécurité qui sont colorés (LOW, NORMAL, HIGH, MAXIMUM) avec une courte description qui s’affiche quand on passe la souris dessus, puis le nombre de noeuds connectés.
Ce dernier élément n’est pas très utile en soi ; l’utilisateur ne sait pas trop comment l’interpréter. Quelles sont les bonnes valeurs ? C’est pour cela qu’on a eu l’idée (enfin plutôt digger3 sur IRC) d’utiliser une barre de progression à la place. Une sorte d’« indicateur de vitesse » qui permettrait de clarifier cela. Le texte est déjà coloré en fonction du nombres de noeuds connectés, j’ai réutilisé ce système pour la barre de progression mais en scindant deux cas :
- Si le noeud utilise l’Opennet (cela inclut les noeuds hybrides qui sont connectés à des amis et à des inconnus), alors la barre sera colorée en fonction du pourcentage de noeuds connectés ; la limite au nombre de noeuds connectés est déterminée par la limite de bande passante configurée.
- Si le noeud est en Darknet pur (c’est à dire qu’il ne se connecte qu’à des amis), alors la barre sera colorée en fonction du nombre brut de noeuds connectés. La notion de pourcentage n’a plus de sens car il n’y a pas de limite formelle au nombre d’amis, et il est tout à fait normal de ne pas avoir 100% des amis connectés à un instant quelconque.
Voici un aperçu de la nouvelle barre de statut qui sera normalement présente dans le build 1240 de Freenet :



Voici un screenshot complet d’une page, avec le thème Minimalist :
Au passage, le persona Firefox est de moi, une réalisation faite à la va vite sous Inkscape en dix minutes.
Le commit en lui même, au cas ou vous voudriez voir à quel point je fais du mauvais code :-|
Voilà tout ; ce petit changement n’est pas grand chose en soi, mais l’interface doit avant tout être simple pour les utilisateurs, qui n’ont pas les mêmes connaissances techniques que nous. Cela n’est pas si simple que cela au premier coup d’oeil ; il faut par exemple éviter d’utiliser le mot peer et utiliser friend ou stranger à la place.
Related Posts:
Posted in: Développement, Freenet, Java, Opensource
Tags: Développement, Freenet, Java, Usability
Tout est parti de ce message sur la mailing-list de Freenet (réponse de Toad) :
Fascinating… What we really need in this area IMHO is a web-based blogging interface:
- It must be as easy to use for a newbie as the centralised blogging sites, for writing blogs.
- It must support basic blog features – sort by date, tags, etc.
- It must have a web interface so it can integrate into fred as a plugin, and add itself to the Browse menu. IMHO this is important, and http://freenet.uservoice.com/ seems to agree.
- It should have at least two themes, and the default should look reasonable.
- It must support embedding pictures, linking to other freesites, and linking to arbitrary files. Eventually we will have embedded video, but that will require more work on other parts of fred.
- *Eventually* it will need integration with Freetalk, for posting comments, for announcing it in the first place, and maybe for the whole blog to be just showing somebody’s top level posts… But p0s has a lot of work to do on Freetalk/WoT, and IMHO the earlier we have an easy to use blog tool integrated into the UI the better.
[...]
When you’re not busy with writing fred themes, would you be interested?
Bien évidemment, j’étais intéressé. L’occasion de contribuer à un projet que je soutiens de façon significative. J’ai donc crée un répo Git pour faire quelques expérimentations… Je n’avais aucune idée de comment créer un plugin pour Fred.
Après m’être rendu compte que les plugins étaient en fait codés à l’arrache en recréant la roue à chaque fois même pour les trucs les plus simples (localisation de l’interface, stockage de données de façon sécurisée sans avoir à refaire des milliers de lignes de code de crypto), j’ai réalisé la quantité de travail qu’il fallait faire si je voulais faire un truc propre. J’ai donc factorisé toute l’interface de localisation du noeud afin d’utiliser exactement le même code pour les plugins. Sur le coup, ça a été beaucoup de changements pour pas grand chose, mais maintenant on en profite bien : en changeant quelques lignes de code seulement, il est possible de traduire les plugins en utilisant la même interface que pour le noeud ; et WoT et Freetalk utilisent aussi ce nouveau système depuis peu.
Après avoir fixé ce problème de localisation, je bute sur un autre problème : comment stocker des données de façon sécurisée sans se farcir plein de code de crypto ? (Je déteste la crypto, c’est compliqué et une toute petite erreur peut tout ruiner ; d’autant plus que le noeud a déjà ce code là.) J’ai pensé à pas mal de méthodes : utiliser des fichiers XML, utiliser une base de données db4o dans un fichier à part, utiliser node.db4o, … C’est finalement cette dernière solution que j’ai choisie. Avec l’aide de Toad, j’ai crée une classe simple PluginStore permettant aux plugins de stocker des données dans node.db4o sans se soucier des problèmes de chiffrement, … Le seul problème est en cas de corruption de ce fichier ; c’est pourquoi j’ai également crée des méthodes pour exporter et importer des PluginStore sous forme de fichiers. C’est donc aux utilisateurs de faire attention et de sauvegarder leur données cruciales dans un endroit sûr ; un auteur de Flog peut très bien publier du contenu qui serait susceptible de le mettre en prison ou de lui attirer de gros ennuis dans son pays, il faut donc faire attention.
Finalement, quelques mois plus tard arrive la première version fonctionnelle de FlogHelper, manquant encore cruellement de fonctionnalités intéressantes et remplie de bugs.
Après avoir fignolé l’interface et ajouté les fonctionnalités telle que la recherche intégrée (ce qui implique de générer un index XML, peu simple vu comment c’est documenté), les tags, les pièces jointes, … Le plugin est passé semi-officiel, ce qui veut dire que la source est vérifiée par Toad et que les Jars sont hébergés sur les miroirs, mais il n’est pas encore promu en tant que plugin officiel sur la page des plugins.
Le plugin sera officiel dès que WoT sera lui-même officiel, espérons que ça sera pour bientôt.
Liens
Related Posts:
Posted in: Développement, FlogHelper, Freenet, Java, Opensource
Tags: FlogHelper, Freenet
Andy Beckett a publié jeudi un article à propos des darknets et plus particulièrement de Freenet.
Sans entrer dans les détails, je trouve que l’article fait trop dans le « sensationnel » en écrivant par exemple en première phrase « In the ‘deep web’, Freenet software allows users complete anonymity as they share viruses, criminal contacts and child pornography » (traduction approximative : Dans le web profond, Freenet permet à ses utilisateurs un anonymat total leur permettant de partager des virus, des contacts entre criminels et des contenus pédophiles)… Cela est certes vrai, et on ne peut pas du tout mesurer l’amplitude des « mauvais usages » du réseau Freenet.
L’auteur a très largement surestimé la taille du réseau, citant par exemple « The deep web is currently 400 to 550 times larger than the commonly defined world wide web [...] » ; il y a confusion ici entre réseaux de type Freenet, et protocole différent d’http. Peut-on considérer le P2P, IRC ou encore Usenet comme « web profond » ?
Mis à part, cela a permis de faire connaître Freenet à un plus grand nombre de lecteurs, et d’utilisateurs/contributeurs potentiels. Voici le graphe des noeuds connectés à mon propre noeud, la quantité de noeuds qui ont eu besoin de s’introduire sur le réseau a pratiquement doublé en un seul jour. Il s’agit de la zone Seeding for sur le graphe. Cela reviendra sûrement à la normale dans quelques jours, semaines si l’article reste plus longtemps dans les pages les plus consultées.

Related Posts:
Posted in: Freenet
Tags: Freenet, The Guardian
Bon, comme c’est les vacances et que je n’ai pas grand chose à faire, j’ai décidé de me pencher un peu sur les automates cellulaires – comme par exemple le Jeu de la Vie de Conway.
Je trouve que les automates cellulaires sont parfaits car ils ont un côté programmation, un côté algorithmique et un côté ludique non négligeable… Voilà donc de quoi tuer de sérieuses heures.
Alors bien sûr, comme utiliser un programme déjà existant ça n’est pas marrant, j’ai décidé d’implémenter le mien avec mon langage de programmation favori : Java.
Cependant, il y a déjà plein d’automates cellulaires “classiques”, optimisés, paramétrables, opensource, bref parfaits. Donc, pour compliquer la tâche, j’ai décidé de choisir un pavage hexagonal au lieu du classique pavage rectangulaire que les programmeurs choisissent la plupart du temps.
Réalisation technique
L’avantage du pavage rectangulaire, c’est qu’on peut exprimer les coordonnées d’une case (un carré dans la majorité des cas) très simplement…

On peut observer alors qu’une cellule possède quatre voisins directs. En général les conditions de survie ou d’apparition de la vie dans une case dépendent du nombre de voisins vivants. La notion de “voisin” ne se limite pas aux cases immédiatement adjacentes (même si c’est comme ça dans la plupart des cas).
Avec un pavage hexagonal, établir un système de coordonnées est déjà plus complexe, même si ça n’est pas impossible.

Comme on peut le voir, cette fois-ci une cellule a six voisins directs. Cela ouvre bien sûr de nouvelles possibilités. Le système de coordonnées que j’ai choisi n’est sans doute pas le meilleur mais il permet de calculer la simulation de façon théorique relativement simplement. En fait, peu importe le système de coordonnées choisi, tant qu’il est possible de donner les coordonnées des voisins d’une cellule à partir de ses coordonnées.
Le problème est d’afficher tout ça d’une façon simple… Autant pour dessiner et colorier des rectangles, c’est simple. Pour des hexagones, c’est déjà un peu plus subtil.
Je me suis inspiré de cet excellent article expliquant comment créer une grille hexagonale en .NET. J’ai repris les grands principes, adapté à ma sauce. Voici le résultat :

Une fois que j’ai pu avoir un résultat visible, j’ai réellement été agréablement surpris au niveau des performances. Avec mon modeste Core2 Duo E6600 standard, je peux générer et afficher environ 20 fois par seconde une carte de plus de 5700 hexagones (en gros tout mon écran avec une résolution de 1680×1050 avec des hexagones ayant pour côté 10 pixels). C’est un résultat convenable et tout à fait suffisant pour un usage “simple”, c’est à dire des observations basiques et l’aspect amusant de la chose, mais ça ne suffira évidemment pas à faire de grandes simulations très complexes.
Observations effectuées
Pour la suite de cet article, j’utiliserai la notation Bx/Sy pour définir les règles du jeu utilisées. Il s’agit d’une notation utilisée dans la majorité des programmes, notamment Golly. La notation est très simple à comprendre, surtout à partir d’un example : si la règle est B456/S23, alors une cellule va naître si elle a exactement 4, 5 ou 6 voisins, et elle va survivre si elle a exactement 2 ou 3 voisins.
Règle B34/S34
D’après mes premières estimations, les cellules tendent à disparaître très rapidement en formant beaucoup d’oscillateurs, le plus souvent de période 2, de formes très variées mais suivant toutes le même principe : une « chaîne » de cellules, circulaire ou non, forme le coeur de l’oscillateur et est invariable. Cette chaîne est entourée de cellules espacées en général d’une cellule vide, parfois de deux. Ce sont ces cellules là qui vont osciller, comme si elles “tournaient” autour de la chaîne.



Oscillateurs de période 2 et de longueur de chaîne respectives de 1, 2 et 5.
Il n’y a pas l’air d’avoir de motifs invariables ou de vaisseaux « simples » dans cette configuration.
Règle B34/S234
Cette règle, qui a l’air de ressembler à la précédente, est en réalité très différente.
Les motifs statiques « still life » profusent, énormément de motifs simples sont stables. Lorsqu’il y a beaucoup de cellules, elles ont tendance à former des polygônes stables, de taille très variable, oscillant avec des périodes en général comprises entre 2 et 5. Lorsque les cellules en vie sont présentes en plus grande quantité, elles forment un motif caractéristique, qui possède une capacité d’adaptation extraordinaire.

Ce motif répétable peut s’adapter à un grand nombre de formes, tout en laissant place à plusieurs types d’oscillateurs.
Règle B3/S23
Avec cette règle, éponyme à celle du Jeu de la Vie dans sa version orthogonale, les cellules vont à première vue se stabiliser très rapidement en motifs statiques invariables simples. Les oscillateurs sont rares et n’apparaîssent que très peu comparés aux autres formes statiques.
J’espère que j’ai réussi à vous donner envie de vous intéresser aux automates cellulaires, ils sont vraiment intéressants. Le projet est maintenu et distribué via Github.
Related Posts:
Posted in: Développement, Java, Opensource
Tags: Cellular automata, Développement, Github, Java