avr
14
2011

par Paul
chat

Ça y est c’est fait !

Le chat est passé sur le framework Symfony, aurevoir cakePHP

Le chat n’est pas complètement iso-fonctionnel (c’est à dire qu’il y a des fonctionnalités qui existaient avant et qui n’existent plus et inversement) comme l’option « ?display=embedded » qui est absente pour le moment.

Avant de finaliser l’implémentation, je suis entrain de regarder les performances.
Je constate que le serveur met plus de temps à traiter une requête HTTP (avant ~400ms à 8 sur le serveur, mainteant ~1000ms toujours à 8), je pense que cela doit venir du fait que je suis moins familier avec Symfony qu’avec cakePHP et que du coup j’exploite pas encore bien ce nouveau framework.

Prochaine étape : Passage de MongoDB à MySQL

mar
27
2011

par Paul
chat

Une petite modification mineur du source a rendu possible d’insérer le chat dans d’autre page web:

<iframe src="http://wayr.org/LeNomDuSalon?display=embedded"></iframe>


Je suis entrain de réécrire le code avec le Framework Symfony
Pourquoi ?

  • Pour voir si c’était possible
  • Une fois avoir tout réécrit avec Symfony, passer de MongoDB à MySQL.

Et pourquoi passer de MongoDB à MySQL? Juste pour comparer les performances.

Symfony ne gérant pas les bases de données NoSQL (ici MongoDB), je dois aussi écrire la partie qui stocke en BD.
Ce n’est pas super compliqué vu que j’ai préféré ne pas crée un « vrai » ODM, mais je fais juste hériter mes modeles d’une classe qui se charge des ajouts/modifications/suppressions.

Ce qui donne du genre:
WhispsMessage hérite de MongoMessage qui hérite de Message

  • WhispsMessage ne sert qu’à « typer » les objects dans le code, que ce soit avec MongoDB ou MySQL.
  • MongoMessage qui gère l’implémentation spécifique à MongoDB.
  • Message est une classe abstraite qui rassemble les méthodes commune aux différentes BD.

J’avoue que ce point est encore un peu flou dans ma tête.

Le plus gros problèmes que je rencontre, c’est écrire les modeles de tel façon à ce que le changement de MongoDB à *SQL soit très simple.
Du coup la réutilisation des classes/objets/fonctions qui n’interagissent pas avec la BD est plus complexe, car j’avais un peu fait ça comme un porc.

En effet, j’avais l’habitude de faire:

$monDocument->champsDuDocument = 'foo';

Ce qui ne pose aucun problème si on change de BD, sauf quand il s’agit de liaison entre les tables.
Avec MongoDB, les relations entre les « collections » je les gérais directement dans le document.

Pour simplifier je faisais du genre:

//$document1 dans la collection1
//$document2 dans la collection2
$document1->$collection2 = array($document2->id);
$document2->$collection1 = array($document1->id);

Je n’ai pas changé ma façon de gérer les relations (vu que le but c’est de refaire à l’identique dans un premier temps).
Par contre, j’ai crée des méthodes spécifique pour les gérer.

$document1->linkWith($document2);
$document1->linkWith($document3);
$document1->unlinkWith($document2);

$documents = $document1->getAllLinks();
//$documents[0] == $document3

Au final ça ne change rien si ce n’est que lors du passage à MySQL, je n’aurais que ces méthodes à réécrire (à priori).


En écrivant ces lignes je me rends compte que ce n’est pas très clair donc ça ne doit pas être la meilleure solution.
Mais le but ultime est vraiment de passer à MySQL et donc d’utiliser les fonctionnalités de l’ORM Doctrine.

mar
03
2011

par Paul
chat

Voici la liste des fonctionnalités dispo :

/join <room> : Join the room <room>
/quit : Quit the current room
/nick <nickname> : Change your nickname
/privmsg <nickname> <message> : Send private <message> to <nickname>
/w <nickname> <message> : Send private <message> to <nickname>
/topic <message> : Set the topic <message> for the current room
/notopic : Unset the topic for the current room
/me <message> : Send <message> to the current room
/smiley : Toggle smiley replacement : Pour ceux qui en ont marre des smileys
/ns <message> : Force nosmiley for the : Pour pouvoir écrire Toto::Doo ou autre...
/ignore <pseudo> : Ignore <pseudo> : Un utilisateur vous saoule ?

Je suis toujours à la recherche de nouvelles «Features» donc si quelqu’un a des idées, qu’il n’hésite surtout pas.

mar
03
2011

par Paul
chat

J’en avais marre de devoir lancé un client lourd pour pouvoir chatter avec mes amis, surtout que la plus part ne pouvaient pas car IRC était filtrer par le proxy de leur entreprise. J’ai donc développé mon propre chat pour le Web en utilisant les technos :

Continue reading ‘Whisps : Le chat 2.0 …’ »