Blog Haypo

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

vendredi 31 août 2007

wikimapia, ohloh et web 2.0

J'aimerai vous présenter aujourd'hui deux sites internets qui me plaisent beaucoup. Les deux thèmes sont très différents mais ils ont un point commun : le « web 2.0 ».

Lire la suite

mercredi 29 août 2007

Crazy Hacks

Il y a quelques mois, un ami m'avait passé le lien crazy-hacks.org. Comme je m'étais bien amusé à le parcourir, je vais vous en faire part. Le site référence les projets de hackers les plus atypiques comme en témoigne ma sélection qui suit.

Hacks matériels

Histoire d'entrer directement en matière, voici quelques projets visant à produire des sons (voir musique selon les auteurs) avec des écrans, disque dur et scanner.

Afrotech's Hard-disk Sound System : Haut parleurs montés à partir de trois disques durs de taille différentes. Visionnez les vidéos pour vous donner une idée de la qualité du son (pas terrible, mais ça fonctionne !). Afrotech semble assez constructif en bidouilles plus ou moins foireuses.

Tempest for Eliza : programme écrit par Erik Thiele jouant sur la fréquence d'un écran cathodique pour transmettre de la musique sur les ondes FM ! Le projet porte le nom de la technique TEMPEST qui permet de visionner un écran à distance.

Alan Parekh's Hard Drive Clock : En contrôlant la vitesse de rotation des plateaux d'un disque dur, Alan Parekh a réussi à créer un montre plutôt chouette.

ScanJet music : Le hacker GanjaTron a réussi à jouer de la musique sur son scanner HP en le programme en Scanner Control Language. Pour cela, il fait varier la vitesse du moteur.

Painstation

Le nom Painstation parodie la marque PlayStation sauf que pain signifie douleur en anglais. L'œuvre montée par les artistes allemands Volker Morawe et Tilman Reiff est un jeu Pong qui afflige des douleurs physiques au perdant. Brûlure, fouet, etc. J'avais déjà vu une démonstation sur la chaîne Arte dans la superbe émission Tracks, et je trouve ça rigolo.

Blinkenlights

Les projets Blinkenlights et Arcade utilisent des lampes derrières les fenêtes d'immeubles pour créer des dessins.

Et les autres

Découvrez de nombreux autres projets tous aussi dingues sur crazy-hacks.org : liste de tous les projets.

lundi 27 août 2007

Sélection du site Pile of Photos

Ce billet est une sélection des galleries du site Pile Of Photos qui lui-même est déjà une sélection de photographies.

High voltage

Source : HAARP Photo Gallery, HF Antenna Array repris par Pile of Photos et Dark Roasted Blend.

Star Wars origami

Source : gallerie flickr de PhillipWest repris par Pile of Photos.

Have a little fun with your coffee

Source : œuvre de Simon Law repris par Vancouver coffee et Pile of Photos.

Drunk shamings

Source : shamings.com repris par Pile of Photos.

Bathroom signs

Source : Scary Monkey, intégralement repompé par Pile of Photos.

Autres liens

African air scenes, Safety at work, Colored water, Satellite dish art, Atomic Bomb, Funny T-Shirts for all, etc.

Honte sur Pile Of Photos

Avant d'écrire ce billet, je voulais faire l'éloge du site Internet Pile Of Photos. Or en l'écrivant, j'ai réalisé que ce site ne cite jamais ses sources, n'indique pas les droits d'auteurs et repompe même intégralement le travail des autres. Honte à/aux auteurs de ce site ! En plus, les titres comportent des fautes de frappe et les articles de grossières erreurs : l'article High Voltage mélange de gros alternateurs et des antennes hautes fréquences...

Enfin, j'espère quand même que vous apprécirez cette sélection. N'hésitez à suivre les liens pour découvrir d'autres photos.

Sélection Wikipédia d'Août 2007

Charles Osborne détient le record du monde du hoquet : il hoqueta sans interruption pendant 68 années, de 1922 à 1990. Avec un rythme de 40 fois par minute, on obtient un total d'à peu près 430 millions de fois !

Hans le malin est un cheval élevé en Allemagne, au début du XXe siècle, qui savait calculer, lire, épeler et identifier des notes de musiques. De multiples savants ont démontrés qu'il ne sagissait pas d'un canular.

Armin Meiwes est un informaticien allemand qui a mangé Bernd Jürgen Brandes. Les deux hommes se sont rencontrés sur Internet suite à une annonce postée par Armin. « Armin Meiwes déclare regretter son geste, mais il garde tout de même un « bon » souvenir du repas. »

La Loi de Parkinson affirme que « le travail s’étale de façon à occuper le temps disponible pour son achèvement ». Je suis bien placé pour dire que cette loi est diablement vraie. (source : blog d'Uwe Hermann)

Le Candirú est un petit poisson parasite vivant dans le fleuve Amazone. Des cas cliniques ont montré que ce poisson peut remontrer le long de l'urètre (comprendre, le pénis). (source : épisode de Grey's Anatomy).

Le Trou analogique explique pourquoi toute protection de la musique (CD audio, fichier informatique, DVD, ...) est futile.

Pour finir, une anecdote de l'Exploration de données :

[Une étude des magasins Wal-Mart a mis en évidence] une corrélation très forte entre l’achat de couches pour bébés et de bière le samedi après-midi. Les analystes s'aperçurent alors qu'il s'agissait des messieurs envoyés au magasin par leur dame pour acheter les volumineux paquets de couches pour bébé. Les rayons furent donc réorganisés pour présenter côte à côte les couches et les packs de bière... dont les ventes grimpèrent en flèche !

Je vous conseille de creuser les articles pour en découvrir d'autres encore plus insolites mais attention à ne pas s'y perdre ;-)

Rappel : Pour ceux qui ont loupé l'explosion de la baleine ou le poulet sans tête, lisez mon précédent billet sur Wikipédia (mars 2007).

mercredi 22 août 2007

Historique du site haypocalc.com

Étant donné que je suis en train de nettoyer mon site Internet, haypocalc.com, je vais en profiter pour en retracer son histoire.

Contenus hébergés

J'ai acheté le nom de domaine haypocalc.com ainsi qu'un hébergement chez OVH en décembre 2001 pour y publier ma calculatrice scientifique HaypoCALC. Ce logiciel restera le contenu essentiel du site web pendant plusieurs années.

J'ai ensuite hébergé deux sites Internet d'un ami (Nicolas Letavernier) : Le Système Solaire d'Exoscin et Généalogie des LETAVERNIER (sites hebérgés aujourd'hui sur son propre site, letavernier.com). Ami avec qui je suis d'ailleurs parti au Québec de Septembre à Décembre 2003. Ensemble nous avons monté un site Internet pour y narrer nos aventures : Notre aventure au Québec.

Enfin, le dernier gros événement est la création du blog que vous êtes en train de lire en mai 2006.

Vous trouvez les détails ainsi que mes autres sites Internet, anciens et actuels, dans mon article Mes sites web. La mémoire de l'Internet, archive.org, a conservé de nombreuses copies de mon site depuis sa création : consultez les archives d'haypocalc.com depuis 2002.

Évolutions technologiques

Le partie technique du site web où je publie mes articles d'informatique (de mathématiques et divers autres sujets) a connu trois grandes époques.

Au départ, j'écrivais mes articles sous forme de document HTML. Je me servais de l'éditeur Macromedia Dreamweaver 4 car j'appréciais de voir directement le résultat (principe d'un éditeur WYSIWYG). Un jeu de scripts PHP me permettaient d'ajouter un entête, un menu dynamique et un pied de page.

Émerveillé par les norme XML, XSLT et CSS, j'ai alors migré tout mon site sous forme de documents XML. Je voulais respecter la sacro-sainte rêgle « séparation du fond et de la forme » (dans mon cas : du texte et de la mise style). J'ai extrait le style pour rédiger une feuille de style CSS et j'ai écrit des outils XSLT pour générer du HTML à partir du XML. Les articles étaient écrits dans ma variante simplifiée du HTML.

Un jour j'en ai eu assez de passer plus de temps à développer des logiciels pour mon site web plutôt qu'à écrire des articles. J'ai alors décidé d'utiliser un outil existant pour me concentrer sur le contenu et j'ai choisi MediaWiki. J'ai découvert cet outil par l'encyclopédie Wikipédia et j'ai rapidement adoré l'édition en ligne par un simple clic. Depuis que j'utilise MediaWiki, j'ai réalisé que mon site web était plus actif. Je n'hésite plus à corriger mes fautes de frappes et à ajouter des informations à un article. Un autre avantage de MediaWiki est qu'il est toujours développé et je profite donc des mises à jour.

Publicité

Mon site haypocalc.com n'a jamais vu la moindre banière de publicité. Je me suis toujours refusé à me laisser tenter par cette pollution visuelle (Résistence À l'Agression Publicitaire). Pourtant, le traffic du site augmente continuellement. Je suis passé de 26.000 visiteurs en 2002 à 953.000 en 2006 pour atteindre aujourd'hui 3.700 visiteurs par jour. Il est tentant de gagner de l'argent en ajoutant des encarts publicitaires, mais je préfère préserver mes visiteurs pour un meilleur confort de lecture.

lundi 20 août 2007

Illusion d'optique

Strip d'xkcd que j'adore :

  • Vous voulez voir une illusion d'optique ?
  • Placez le clavier en face de vous et regardez la touche home
  • Maintenez croisez votre regard jusqu'à ce que les touches G et H se chevauchent
  • Conservez le focus, mettez le clavier au dessus de votre tête.
  • Hey !
  • Ha ha

mardi 14 août 2007

État des lieux de Python 3000

Profitant de mes vacances, j'ai testé Python 3000 (relire mon billet précédent sur Python 3000) pour voir si c'était utilisable. Autant ne pas se mentir : Python 3000 n'est pas prêt pour un usage quotidient. Selon moi, il y avait deux évolutions majeures et pénibles (pour les développeurs CPython) : fusion des types int et long, et la distinction entre les types bytes et str (anciennement str et unicode).

Types int et long

Pour les types int et long, en fait c'est le type long est renommé int et le l'ancien type int disparait. Pour les programmmeurs Python, on aura plus besoin d'écrire « isinstance(valeur, (int, long)) » pour vérifier si une valeur est un entier : « isinstance(valeur, int) » est désormais suffisant. Le suffixe L indiquant qu'un nombre est un entier long disparait également.

Pour la manipulation des entiers, Python 2.4 était déjà une avancée majeure. Si le résultat d'un calcul sur des entiers courts (int) dépasse la capacité d'un entier court, une conversion automatique en entier long est réalisée. Exemple : 2 ** 100 (où 2 et 100 sont des entiers courts) retourne 1267650600228229401496703205376L (type long).

Selon moi, Python va dans le bon sens : s'abstraire des limitations matérielles pour simplifier la vie au développeur. Python s'occupe tout seul des tâches pénibles : allouer la mémoire, faire des calculs sur les entiers longs, etc.

Types bytes et str

La distinction entre octet et caractère est un changement majeur dans Python. La compatibilité est brisée car le type bytes n'a plus les méthodes relatives à la manipulation de caractère telle que lower() et splitlines(), et un élément d'une chaîne bytes est un entier et non pas une sous-chaîne bytes. Exemple : b'xyz'[0] retourne 120. C'est d'ailleurs déroutant car le test « b'xyz'[0] == b'x' » est faux (120 == b'x' est faux). Il faut écrire explicitement « b'xyz'[0] == ord(b'x') » ou « b'xyz'[0] == 120 ».

La tâche est quasiment terminée : la branche subversion py3k-struni qui lui était dédiée a été fusionnée dans la branche py3k (branche python 3000 officielle). Il reste quelques bogues en particulier le module « email » qui est loin de fonctionnner en Python 3000.

J'ai aidé en corrigeant les modules ctypes, imghdr et sndhdr. Voir les commits 56838 (ctypes) et 56987 (imghdr et sndhdr). J'ai tenté avec beaucoup de mal de migrer le module email, mais comme il est assez gros et mélange allégrement octet et caractère, c'est loin d'être terminé. J'ai envoyé plusieurs emails à la liste de diffusion email-sig mais j'ai eu peu de retours.

Python 3000 ça sort quand ?

Une partie du wiki Python est dédiée à Python 3000 où on trouve en particulier les articles Py3kToDo (ce qu'il reste à faire dans Python 3000) et Py3kStrUniTests (tests unitaires cassés par la distinction bytes/str). La PEP 3100 (Miscellaneous Python 3.0 Plans) liste également toutes les tâches à faire pour Python 3000 avec leur état : [done] (fait), [UNLIKELY] (tâché en discussion), [no] (tâche refusée).

Migration à MediaWiki 1.10 et réduction de la taille de la base MySQL

J'ai reçu récemment un email indiquant que ma base de donnée haypocalc.com atteignait 90% du quota de 25 Mo. J'ai rapidement suspecté mon wiki de monopoliser toute la place dans MySQL. Je sais que MediaWiki, logiciel gérant le wiki, est très gourmant en place : chaque révision d'une page est stockée intégralement dans la base de donnée et non pas juste les changements.

Changement de contrat

La première chose qui m'a choqué est que les termes de mon contrat OVH, une offre d'hébergement « 300GP » (GP pour Grand Public), avaient changé. Pour preuve, en 2003 l'offre comportait « espace MySQL illimité », alors qu'aujourd'hui il y a un quota de 25 Mo. Je n'ai pas été informé de ce changement. Il existe des options pour avoir 100 ou 250 Mo de base MySQL, mais ça se paie très cher : respectivement 72€ et 144€ (prix TTC par an). Un mauvais point pour OVH.

La grosse boulette

J'ai alors commencé par faire une sauvegarde de la base. Par expérience, j'ai appris à toujours sauvegarder avant de faire une opération délicate (susceptible d'être une connerie).

Pour faire le ménage dans le wiki, j'ai décidé de vider la table MySQL « wiki_text » qui semblait ne contenir que les anciennes versions. Les noms des colonnes de cette table sont préfixés par « old » (ancien) alors que pour la table « wiki_cur », les noms des colonnes sont préfixés par « cur » (current, actuel). Manque de bol, j'ai alors cassé le wiki : impossible de modifier une page (le formulaire d'édition était vide) !

Je réalise que j'ai fait une boulette : j'aurai du la renommer plutôt que de la vider.

Tentative de restauration du SQL par phpMyAdmin

Pour restaurer la base MySQL, je commence par la vider (supprimer toutes les tables) et j'utilise le phpMyAdmin d'OVH pour envoyer la sauvegarde. Sachant que la taille maximale de l'envoi est de 8 Mo (compressé ou non), je compresse mon dump SQL de 22 Mo avec gzip. Le fichier tient dans 4 Mo, la taille est bonne : je l'envoie. Premier échec : timeout PHP.

J'installe alors phpMyAdmin dans mon hébergement pour résoudre le problème de timeout. J'ai passé la première épreuve mais j'ai un nouveau soucis : la requête SQL s'interrompt. Il est possible de reprendre son exécution en réenvoyant le même fichier, sauf qu'après quelques étapes, c'est MySQL qui échoue. Décidément, rien ne fonctionne !

Concentration

À ce point là, la base de donnée MySQL de mon site était vide. Mon wiki et mon blog étaient donc hors-service depuis trois heures. Autre idée pour contourner les erreurs phpMyAdmin : j'écris un script Python pour découper le dump SQL de 22 Mo en petits bouts de 8 Mo. Nouvel échec. Je tente alors 6 Mo, 5 Mo, 4 Mo : rien à faire.

Finalement, je réunis tous mes neurones pour me souvenir que j'avais déjà eu ce même soucis quelques années auparavant. Pour les gros transferts SQL, il faut utiliser la commande « mysql » (en ligne de commande via un script PHP) après avoir envoyé le dump SQL par FTP. J'upload le dump et je lance la commande: ça marche !

Merde alors, si j'avais une meilleure mémoire, j'aurai gagné 4h :-( « Quand on n'a pas de tête, on a des jambes pour courir »

Migration à MediaWiki 1.10

Après de nombreuses heures, j'avais réussi à corriger ma boulette, mais mon soucis de taille de la base MySQL persistait. Entre temps, j'étais tombé sur l'article Help:Reduce size of the database de l'encyclopédie dédiée à Star Trek. En suivant les liens, j'ai vu que le problème est ancien et corrigé : il existe un script « maintenance/deleteOldRevisions.php » pour faire le ménage. Je récupère le script pour MediaWiki 1.6 par subversion et je le lance : erreur PHP (appel à une fonction non déclarée). Je comprend que ma version de MediaWiki est trop ancienne, il faut migrer à la nouvelle version.

Je prend mon courrage à deux mains et décide de migrer MediaWiki en version 1.10. C'est toujours une bonne idée niveau sécurité. Je récupère la base de donnée de mon wiki et l'installe dans un MediaWiki 1.10 neuf. Je lance le script « php upgrade.php --quick » (lu dans la documentation MediaWiki) et à mon grand étonnement, c'est un succès au premier essai !

Réduction de la base MediaWiki

Je peux enfin lancer « php maintenance/deleteOldRevisions.php --delete ». La commande dure longtemps, une dizaine de minutes, mais s'est terminée correctement.

Je renvoie ma base de donnée mise à jour et j'installe MediaWiki 1.10 sur haypocalc.com. Tout baigne.

Conclusion

Ce qu'il faut retenir : Pensez à faire des sauvegardes et assurez vous de pouvoir l'utiliser (avant de tout casser) !

Au total, j'ai du passer environ 6h sur mon problème en transpirant tout le long à grosses gouttes. Effectivement, j'avais supprimé volontairement six ans de boulot et j'étais incapable de le restaurer.

Je doute que ce billet intéresse grand monde, mais je me devais de l'écrire pour ne pas retomber dans les mêmes pièges ;-)

mercredi 8 août 2007

Sécurité des systèmes virtualisés

La virtualisation est décidément à la mode. Niveau logiciel (libre) : QEMU, Xen, Bochs et VirtualBox offrent un large panel de possibilités. Niveau matériel, les microprocesseurs grand public gagnent des jeux d'instructions supplémentaires avec Intel VT (Virtualization Technology) et AMD-V (AMD Virtualization).

La virtualisation présente un intérêt en sécurité pour isoler les composants logiciels. C'est une alternative aux prisons logicielles existantes : chroot(*), BSD Jail, zones Solaris, etc.

Un nouveau moyen de protection attire forcément des hackers qui vont chercher à le contourner. Joanna Rutkowska a proposé en juin 2006 une technique appelée Blue Pill (la pillule bleue du film Matrix) qui permet d'être totalement invisible pour le système d'exploitation. En avril 2007, Rutkowska fonde la startup InvisibleThingsLab, et récemment le code source de Blue Pill est rendu disponible sur bluepillproject.org (vous y trouverez présentations et détails techniques). Lire également l'annonce par heise Security.

En février dernier, Tavis Ormandy, de l'équipe sécurité de Google, publie un papier sur la sécurité des hôtes virtualisés pour CanSecWest 2007. Il a trouvé plusieurs failles de sécurité comme par exemple dans la carte réseau de Bochs : NE2000 RX Frame Overflow (mai 2007). N'ayant pour l'instant que survollé le papier, j'ai cru comprendre qu'il a utilisé le fuzzing avec deux outils : crashme et iofuzz (écrit à l'occasion ?). Il va falloir que je les teste un de ces jours, ainsi qu'ioctlfuzz et syscallfuzz de la Digital Dwarf Society :-)

(*) chroot est une prison logicielle écrite pour des raisons pratiques et non pas pour répondre à une problématique de sécurité, il existe de nombreuses manières de s'en évader !