29 juin 2006
Ah mais mon bon monsieur, la glace ça fond !
Bon, dans mon précédent billet je vous livrais un génial tarball plein de jolis petits fichiers ruby tout mignons sans expliquer comment ça s'utilise ni même à quoi ça sert.
Alors imaginez un instant que vous êtes un joli marchand de glace en pleine campagne et en plein été. Dans le coin ou vous vous trouvez il y a 60 villages et vous voulez tous les visiter pour vendre vos glaces. Ah mais mon bon monsieur, la glace ça fond ! Vous ne pouvez donc pas vous permettre de prendre n'importe quel chemin, il faut que vous visitiez les 60 villages au plus vite. Or, et c'est là que nôtre pauvre glacier bute, il y a factorielle de 60, c'est à dire à peu près 10 puissance 82 chemins possibles ! Heureusement grâce au Wimax et à vôtre ordinateur portable, vous vous connectez sur cette page, et vous êtes sauvés !
En effet, ce super algorithme va vous permettre de trouver un des meilleurs chemins possibles pour visiter toutes les villes. Il vous suffira d'écrire un super fichier de configuration dans lequel chaque ligne représente une ville et est de la forme «NomDeLaVille Abcisse Ordonnée». Dans le tarball vous trouverez un fichier d'example nommé villes.txt. Une fois écrit ce fichier texte et enregistré sous un joli petit nom, pour sauver vos glaces il vous suffira de faire, dans le fichier extrait du tarball : $ ruby algogen.rb JoliPetitNomDeVotreFichier, de laisser tourner un moment et d'appuyer sur Control+C (ou d'envoyer un SIGTERM au processus) pour que les résultats s'affichent avec joie et entrain !
Si vous n'avez pas de glaces à vendre et vous voulez faire un simple test, faire simplement $ruby algogen.rb 10 fera travailler le script sur dix villes aléatoires.
Et pis une petite roadmap pour la route :
- Éliminer les solutions redondantes
- Introduire des mutations pour éviter la convergence
- utiliser optparse pour parser la ligne de commande
- Utiliser YAML pour le fichier de configuration ?
- Rendre l'algorithme plus générique
Algorithme Génétique basique en Ruby
Dans le cadre de mon TPE, j'avais commencé une ébauche d'algorithme génétique pour la démo, mais ne l'avais jamais terminé.
Eh bah j'ai pris un peu de temps et puis voilà.
Sachez que cet algorithme ne sert à rien, qu'il est lent et peu efficace, et que si vous êtes un peu programmeur vous en ferez un mieux en trois claquements de doigts.
Il est sous une license libre sinon libertaire ;) :
I, the author of this work, grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
Je donne à tous le droit d'user ce travail pour n'importe quelle raison, sans aucune restriction, sauf si ces restrictions sont requises par la loi.
Là je suis trop fatigué pour documenter ça tout de suite, donc stay tuned ;)
Téléchargez là ici si vous avez du temps à perdre
24 juin 2006
Enfant de la nuit, ton chemin est sombre.
Marche
Marche vers l'oubli
Vers la lumière
Oubliée.
23 juin 2006
À propos de l'égalité
On me demande, en commentaire de ce post déplorant l'utilisation de techniques discriminatoires pour lutter contre la discrimination sexiste, quels sont mes arguments, et surtout, quelles sont mes propositions pour faire avancer les choses.
Pour ce qui est des arguments, ils me paraissaient clairs : Ce n'est pas par la discrimination que l'on vaincra la discrimination, et surtout ce n'est pas en se séparant qu'on se rassemblera.
Maintenant il faut des propositions pour faire avancer les choses.
Le premier problème à régler se situe selon moi au niveau de l'éducation. Lorsqu'un enfant est éduqué selon le principe que les garçons jouent avec les camions et les filles avec des poupées, comment voulez vous qu'il n'aie pas de préjugés ? Partout, jusque dans les problèmes de maths, les caissières sont toujours des femmes, les mères font la cuisine et les pères lisent le journal, jusque dans les dictionnaires (Cherchons le mot poupée dans un dictionnaire. L'exemple est : Ursula joue à la poupée. Sautons à la définition de cuisinier : Pour la personne dont le métier est de faire la cuisine, c'est un homme dans l'example, mais pour celle qui sait faire la cuisine, c'est une femme.), jusque dans les discours des maîtres et maîtresse, on trouve une avalanche de clichés, de préjugés, qui nous sont inculqués inconsciemment et innocemment.
Il faut donc une vraie volonté qui part du ministère de l'éducation d'aller à contre courant de cette tendance. Il faut que l'IUFM fasse aussi des professeurs des écoles des missionnaires de l'égalité. À l'école, aujourd'hui, on éduque les enfants contre le racisme. On apprend à l'école les valeurs de la république. Ou du moins on devrait. Il faut maintenant qu'on apprenne à l'école l'égalité des sexes. Mais ça passe aussi par l'éducation des parents, chose plus difficile mais tout aussi nécessaire.
Un autre problème se situe au niveau de la religion. La religion chrétienne considère la femme comme inférieure à l'homme. Dixit une catholique : «franchement c'est con». Même chose dans le Judaïsme et l'islam.
Et là la solution est plus difficile à trouver. Car comment marier le respect de la religion et de la liberté de culte de chacun avec celui des valeurs de la république ? C'est là, je pense, toute la problématique de la laïcité. Et c'est une problématique complexe est difficile. (Il est d'autant plus difficile de s'exprimer sur ça pour un athée comme moi)
Le troisième problème, au moins aussi important, c'est le sexisme que j'appellerais «correct», qu'il soit innocent (comme dans le cas de l'humour sexiste) ou bien intentionné (comme les initiatives que je fustigeais dans le post sus-cité). C'est aussi les conneries comme la galanterie, le «on ne frappe pas les filles», et le sexisme anti-homme qui lui ne représente pas un si gros problème en lui même car il n'entraîne pas de discriminations de nature à aller au delà de lui même, des copinages et autres bêtises, mais qui est par contre un obstacle au rassemblement et à l'égalisation, bref à la mort du sexisme. Et là il n'y a pas de solution immédiate. La solution à long terme est bien sur celle que je citais précédemment, l'éducation. À court terme, on peut se contenter de fustiger le sexisme. Dans toutes ses formes. Mais ça va prendre du temps à faire bouger les choses.
Pour récapituler, je vois, en plus du sexisme caractérisé et ordurier, du machisme primaire et cætera, Il reste trois problèmes : l'éducation sexiste, la religion sexiste et le sexisme «correct». Et je n'y vois que deux solutions : Faire un effort d'éducation pour en éliminer le racisme banal, et fustiger toutes les formes de sexismes, même sympatiques ou bien intentionnées.
19 juin 2006
Irma 1.0 : Birth of a myth
En avant première et sur ce blog seulement, la première release d'Irma :D
Je tiens à remercier tout le monde, particulièrement mes parents, mes amis, l'ordinateur, Linux, GNU, KDE, blabla, blabla, blabla, et surtout le meilleur langage de programmation qu'il m'aie été donné d'utiliser... Ruby !.
Irma est un chatterbot, c'est à dire un programme qui parle en imitant un humain.
Mais Irma elle même est aussi un simple fichier texte d'à peine 170 lignes, une classe écrite en Ruby au doux nom de Bot. La licence, inclue au fichier, est :
I, the author of this work, grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
Voilà une très brève documentation d'Irma :
- Bot::new(fichier) Permet de créer une instance d'irma grâce à la base de données *fichier*.
- Bot#save(fichier) Permet de sauvegarder Irma dans le fichier *fichier*. Sans précision du fichier, c'est le même fichier qu'on avait utilisé pour l'initialisation qui est utilisé.
- Bot#answerTo(phrase) Retourne une chaîne de caractère jugée comme meilleure réponse à donner à *phrase*
- Bot#vocabulaire#add(replique_irma, replique_utilisateur) Apprends à Irma que l'utilisateur a répondu *replique_utilisateur* à *replique_irma*
Voilà donc un exemple très simple d'utilisation d'irma :
require 'irma'
irma = Bot.new("talk2irma.irma")
while true
print "Moi: "
replique_utilisateur = gets.chomp
exit if replique_utilisateur == "exit"
irma.vocabulaire.add(replique_utilisateur, replique_irma) if defined?(replique_irma)
replique_irma = irma.answerTo replique_utilisateur
puts "Irma: " + replique_irma
end
Les bases de données pour Irma sont de forme :
Replique
Reponse1
Reponse2
Reponse3
#
Autre replique
reponse
#
--
mot nombre_de_fois_qu'irma_l'a_lu
exemple 8
autrexemple 1
Et divers fichiers utile au fonctionnement d'Irma.
- Une base de données pour Irma. Autorisation vous est donnée d'en faire tout ce que vous voulez, sans aucune restriction sauf si ces conditions sont requises par la loi.
- La même, légèrement adaptée pour exciter les imbéciles qui veulent une «cam chode sur msn» ;) Autorisation vous est donnée d'en faire tout ce que vous voulez, sans aucune restriction sauf si ces conditions sont requises par la loi.
- Un script qui permet de parler à Irma. Supporte l'option --help ;). La licence est à l'intérieur
- Un script marrant qui fait parler Irma à elle même. Usage : ruby irma2irma.rb nombre_d'échanges. Licence à l'intérieur.
- Petit script pour se foutre de la gueule des gens sur le chat voila.fr par IRC. Il faut le modifier pour changer quoique ce soit, un support des options sur la ligne de commande arrivera bientôt.
Peut-être dans la prochaine version ou après :
- Surement un moyen de noter les réponses d'Irma
- utilisation d'un parser XML ou YAML externe plutôt que le truc crade actuel
- Un script de connection à IRC propre et fonctionnel (plus que l'actuel)
NB: Les bases de données sont en UTF-8
17 juin 2006
Irma is ready for you !
Depuis de nombreuses années, tous l'attendaient avec impatience... Et elle arrive, galopante !
Irma est arrivée !
Et elle est disponible tant que mon PC est allumé (et que cette conne plante pas), c'est à dire pas souvent.
Irma est un chatterbot, c'est à dire un logiciel qui vous parle en imitant un humain.
Irma est programmée en Ruby et son code source vous sera bientôt diffusé, surement sous licence WTFPL. J'aurais voulu le mettre dans le domaine public mais c'est impossible sauf si j'étais mort il y a 70 ans.
Pour lui parler, vous aurez besoin d'un client IRC comme XChat (ou Chatzilla si vous utilisez Firefox).
Pus d'infos dans 48 heures.
15 juin 2006
Stupide
Stupide.
Stupide, je vous dis
Décidément...
Eux au moins il n'ont pas un site entier pour ça.
Enfin bref...
Voilà tout plein de projets de logiciels libres qui ont un site spécialement réservé aux femmes. Pour «construire une communauté d'utilisateur femelles de KDE» ou encore «fournir une plate-forme et des encouragements aux femmes voulant contribuer à Ubuntu».
La question est : quand les gens comprendront-ils que ce n'est pas par la discrimination que nous vaincront la discrimination ? Quand comprendront-ils que ce n'est pas par la catégorisation que nous vaincrons la catégorisation ? Quand comprendront-ils que c'est en nous considérant comme tous égaux que nous arriveront à nous considérer tous égaux ?
edit: De pire en pire :'(
09 juin 2006
Choix
- Je préfère être malheureux et intelligent que heureux et con
- Mouais mais bon, je sais pas... À la limite je me dis...
C'est peut-être une question d'éthique...
06 juin 2006
La fin du monde est proche !
Mes frères, nous avons aujourd'hui le devoir de prier pour sauver nos âmes. En effet, les conjonctions numériques nous montrent le danger apocalyptique qui pèse sur notre existence. Depuis de nombreuses années, le poids de la fin pèse sur nos vies, et les signaux s'affolent aujourd'hui : nous n'avons plus beaucoup de temps !
- En 666, le numéro de l'année correspondait au nombre de la bête
- Les humains n'ayant pas fait attention, les cieux nous renvoient un signal en 1666
- L'apocalypse approche, la guerre se déclare comme un prémice à la fin du monde en 1939. on remarque que les trois derniers chiffres du numéro de l'année sont 9, 3 et 9. Or 9-3=6, c'est donc une forme camouflée du nombre de la bête.
- En 1940, la guerre préapocalyptique continue. Le numéro de l'année multiplié par 39981 ( 8+1 = 9 donc au final on a 3999, c'est à dire 3 puis 666 à l'envers) s'écrit diable en base 22, nous rappelant l'origine de toute autorité sur cette terre.
- Dans la fin du vingtième siècle, un triple signal numérique apparait : 1966, puis 1996, puis 1999 : le nombre de la bête se met progressivement en mouvement !
- En 2004, le numéro de l'année en base 9 (6 à l'envers) s'écrit 2666 ! Plus effrayant encore, si on déplace le 4 pour obtenir 2400 et qu'on écrit le nombre en base 7 (nombre symbolique lui aussi) on obtient 6666 !
- En 2006, plusieurs conjonctions nous montrent que l'apocalypse est de plus en plus proche :
- Le 4 Mai à une heure deux minutes et trois secondes, l'heure s'écrit 01:02:03 04/05/06. Cet alignement magique est unique
dans l'histoire : la fin est plus proche que jamais - Le 25 Mai, un grand tsunami annonciateur a été évité grâce à nos prières préalables. Si nous n'avions pas été prévenus, qui sait ce qu'il serait arrivé ?
- Aujourd'hui, à l'heure même ou j'écris ceci, l'heure s'écrit 06:06:06 06/06/06. Deux fois le nombre de la bête ! Plus inquiétant encore, en multipliant 060606060606 (la date) par 17952.5744846482 (en revenant 17952 jours en arrière, nous sommes juste après le signal apocalyptique de 1966 !) on obtient un nombre qui s'écrit apocalypse en base 36 !
- Le 4 Mai à une heure deux minutes et trois secondes, l'heure s'écrit 01:02:03 04/05/06. Cet alignement magique est unique
J'espère vous avoir convaincu de l'urgence de la prière pour aboutir a notre survie..
Je paraitrais prochainement dans cette catégorie les éléments utile pour sauver nos âmes
05 juin 2006
Les souvenirs m'assaillent
Souvenirs et broussailles
d'antérieures années
Vous enserrez mon coeur
Contre les jours perdus
Les amours qui se meurent
Les désirs révolus
Moi, je m'arrête alors
Sur le bord d'une rivière
Ou d'éreintés efforts
Et légers et amers
Coulent tous, et muets
Sans un bruit et hurlant
Immobiles regrets
Luttes, rivières de sang
M'appellent et me déchirent
Et me font espérer
Ce passé dans le pire
Ce futur regretté.
Les souvenirs m'assaillent
Et puis : moi, étonné.