samedi 10 avril 2010

Horoscope

Ce matin, j'ai pris le métro vers 9h15-9h20. Je me rendais à McGill. J'en ai donc profité pour prendre le journal du Métro pour faire le Sudoku dedans.

Je fais le Sudoku pas mal à chaque jour, et la fin de semaine il n'y a pas de nouveau journal. Les fins cerveaux concluront que j'ai fait le Sudoku que j'ai fait hier matin, et ils auront bien raison, mais ne les flattons pas trop.

Quelques stations après le départ (Langelier?), une vieille madame est rentrée et s'est assise à côté de moi. Elle avait un manteau laid vert-laid et avait les cheveux blanchâtres teints blanc pâle. Bref, une vieille.

Comme je voyageais dans les méandres de mon journal avant de commencer le quadrillé de la veille, j'ai pu passer par-dessus plein d'articles d'actualité (le gouvernement du Kazakhstan est tombé, bla bla bla) et me sentir coupable parce qu'une fois de plus je ne m'instruisais pas.

À la page des jeux, il y a aussi l'horoscope. C'est là que la madame s'est mise à lire au-dessus de mon épaule. Au début je pensais qu'elle voulait regarder mes prouesses intellectuelles et mathématiques. Je me suis donc empressé de tremper mon stylo dans un pot de cire et essayer de le faire reluire le plus possible. J'étais aussi en train de me demander si je devais peut-être sortir un chronomètre ou quelque chose comme ça.

Mais ma bulle a été pêtée quand elle m'a carrément demandé, "est-ce que je peux voir l'horoscope?".

Yup, écouteurs aux oreilles et air bête, je me suis fait déranger pour voir l'horoscope.

Je lui ai donné le journal, j'ai essayé tant bien que mal d'enlever toute la maudite cire de mon stylo, et j'ai repris mon journal en prenant bien soin de dire "de rien" quand elle m'a chaleureusement remercié de lui avoir prêté mon journal.

Sympathique la vieille.


Entre-temps je me demandais à quel point il fallait croire à ces pacotilles-là pour aller jusqu'à déranger quelqu'un pour lire l'horoscope. Je me suis aussi demandé si elle s'était fait dire que sa journée allait être belle, qu'elle allait avoir une promotion et qu'elle allait rencontrer l'âme-soeur. Parce qu'à cet âge-là, je ne pense pas que ça puisse la préoccuper tant que ça, ou à tout le moins pas assez pour me déranger tandis que je veux faire mon Sudoku.

Peut-être que c'est le type de personne qui a lu l'horoscope pendant 50 ans et que du jour au lendemain arrêter la rendrait dépressive. Mais qu'importe.


Une fois à la station Frontenac (donc déjà un bon bout de fait), elle est sortie du wagon. Elle a regardé à droite, puis regardé à gauche, puis elle s'est dépêchée à rebrousser chemin et revenir dans le métro. Trop vieille pour bien courir, et encore et toujours trop humaine pour ne pas perdre la face ("n'importe qui aurait perdu la face"). Certains sourires étaient apparus sur le visage de mes comparses de transport, tandis que moi j'avais rapidement compris ce qui s'était passé: elle rejoignait une amie (aussi une vieille peau) à la station Frontenac, et son amie était rentrée plus loin dans le wagon, et quand elle s'en est rendue compte elle s'est dépêchée à revenir. Ç'aurait pu arriver à n'importe qui, alors passons.

Avec chance, les deux se sont assises près de moi. J'ai donc pu entendre des parcelles de conversations, et j'ai pu me perdre dans la douce mélodie que leurs voix toutes deux stridentes chantaient, comme une symphonie de malheur.


Et après toutes ces péripéties, cette longue histoire qui ne faisait que commencer la journée pour ces deux ancêtres, pendant que tout le monde souriait encore en se rappelant la première vieille qui essayait frénétiquement de revenir dans le wagon, la seule chose à laquelle j'arrivais à penser était qu'après 10 minutes intenses de vie, elle ne se rappelait probablement même plus son horoscope.

Con périphérique

Tiré de la chronique de Pierre Foglia d'aujourd'hui.


PÉRIPHÉRIE - Je vous ai déjà dit que le mot qui me dépeignait avec le plus de justesse est probablement périphérique, parce que je me retrouve très souvent à la périphérie des choses. Tout seul. Où sont donc passés les autres? Je m'en inquiète chaque fois. Dites-moi, docteur, je souffre de quoi exactement?

Robinson. Le Robinson. Résumons à toute vitesse. Il écrit (ou dessine, je ne sais trop) un truc qu'il se fait voler. Les voleurs sont condamnés. C'est l'histoire d'une incroyable saga juridique qui va durer des années et des années. Le héros, d'une formidable ténacité, finit par triompher des méchants très puissants. Yé, il a enfin gagné. Pas du tout. Cela rebondit à nouveau. Les méchants interjettent appel et notre héros, exsangue, risque de s'étouffer de sa victoire.

Nous voilà repartis pour un tour ou plusieurs tours et personne, absolument personne, pour se demander, après toutes ces années, cout'donc, c'est quoi le truc, déjà, qu'il s'est fait voler?

Est-ce bon? Est-ce nul?

Tous les gens à qui j'ai posé la question, dont quelques collègues, se sont aussitôt récriés: mais c'est pas la question. Ça n'a rien à voir. T'es complètement con.

Comment ça, rien à voir? Justement si, je veux le voir. D'abord par simple curiosité. Y'ont volé quoi, les voleurs?

La pietà d'Avignon ou un portrait de Toto à bicyclette? De la poutine ou du caviar?

Je comprends que cela ne fasse pas de différence pour la justice qui a à évaluer les dommages, qui a à défendre la propriété du petit qui se fait voler par des puissants, qui a à rétablir la vérité. Je trouve la justice admirable, mais moi, moi qui ne suis pas du tout admirable, moi qui suis un con périphérique, j'peux-tu le savoir, si c'est de la poutine ou du caviar?

jeudi 8 avril 2010

Chaton < 20$

mercredi 7 avril 2010

Signaling games

J'ai trouvé un article nommé Signaling games sur Wikipédia qui est relativement intéressant. Apparemment, the dating games is a signaling game as well... fait que si quelqu'un a le livre des règlements, je suis preneur.


One of the major uses of signaling games both in economics and biology has been to determine under what conditions honest signaling can be an equilibrium of the game. That is, under what conditions can we expect rational people or animals subject to natural selection to reveal information about their types?

If both parties have coinciding interest, that is they both prefer the same outcomes in all situations, then honesty is an equilibrium. (Although in most of these cases non-communicative equilbria exist as well.) However, if the parties interests do not perfectly overlap, then the maintenance of informative signaling systems raises an important problem.

dimanche 4 avril 2010

La jalousie de Patrick

En parlant du fait que je venais de faire un "don" de 5$ (pas à une oeuvre caritative):

Platou dit (18:14) :
anyway demain en te levant tu vas probablement trouver un 20$ dans tes jeans ou dkoi dmeme pis rester deboutte planté devant ta porte comme un écoeurant les yeux vides, "mais douesse quil vient lui...."

samedi 3 avril 2010

MySQL & Java

Dans le cadre de mes apprentissages fanfrelesques, j'ai dû installer un serveur MySQL, créer un utilisateur, créer une base de données, créer une table, la formatter, la remplir de données, puis extraire ces données en me connectant à la base depuis un programme Java. Yup, c'était fastidieux.


Créer la base de données

CREATE DATABASE IF NOT EXISTS db_test;
USE db_test;



Créer la table members

CREATE TABLE members
(
userID MEDIUMINT NOT NULL AUTO_INCREMENT,
username VARCHAR(12) NOT NULL UNIQUE,
password CHAR(40) NOT NULL,
creationdate DATE,
email VARCHAR(25),
CONSTRAINT db_test_pk PRIMARY KEY (userID)
);



Remplir la table

INSERT INTO members
(username, password, creationdate, email)
VALUES
("seigneur", SHA1("motdepasse"), CURRENT_DATE,
"seigneur101@gmail.com");

INSERT INTO members
(username, password, creationdate, email)
VALUES
("ezox00", SHA1("bananemolle"), CURRENT_DATE, "donk@gmail.com");



Table

SELECT * FROM members;






Accéder à la base de données depuis Java

Okay, ça c'est vraiment de la marde. Il faut utiliser un pilote JDBC (Java Database Connectivity) créé par MySQL. J'ai dû télécharger ça sur le site de MySQL et le mettre dans le CLASSPATH de mon projet (je vous épargne les détails). Avec un code qui ressemble à ce qui suit, je me connecte à la base de données db_test:

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost/db_test", "seigneur", "mdp");


À partir de là, je peux me créer plein d'objets me permettant d'extraire des données, d'en rajouter, de les modifier, etc. Le tout se fait avec un mélange de Java et de SQL. Par exemple, j'ai créé un truc pour se connecter à un compte en utilisant le nom d'utilisateur et le mot de passe crypté dans la table. J'extrais le nom d'utilisateur, le e-mail et la date de création du compte, puis je les affiche à l'écran (simplement pour les besoins de la cause).

La requête est la suivante:

"SELECT username, email, creationdate FROM members
WHERE username = ? AND password = SHA1(?)"


Les '?' signifient que je vais fournir ces valeurs plus tard (i.e. lors de l'appel de la requête, après que les champs aient été remplis). La fonction SHA1() sert à crypter le mot de passe. Techniquement, les mots de passes sont cryptés dans la table et ne peuvent pas être décryptés, alors je fais l'opération inverse: je crypte le mot de passe fourni et je vérifie que le code de cryptage est bel et bien le même.

Si la requête me retourne un résultat, il sera unique car j'ai spécifié que chaque nom d'utilisateur doit être unique dans la table (username VARCHAR(12) NOT NULL UNIQUE). J'utilise ce résultat pour remplir les étiquettes de la fenêtre (e-mail & compagnie). Sinon, j'imprime un message qui dit que la combinaison username / password est incorrecte.

Au passage, je soulignerai que j'ai appris à me servir des JPasswordField de Java. :)