 Donc, je vais vous montrer quelques screenshots. C'est Jaypocker et c'est ce que je vais parler de. C'est un client poker et je vais expliquer pourquoi on a fait ça. On a fait un client poker web parce qu'il a besoin d'un nom sur un nom. Et parce que tout le monde peut accéder au client depuis que tout le monde a un browser. Parce qu'on peut utiliser un URL pour tourner votre table. Parce qu'on est dans le web. Parce que le browser est bien displayant 2D. Donc, le target dans le browser pour les clients poker 2D, ça fait sens. Et c'est facile à customiser. Parce qu'on peut changer les images et faire des CSS. Donc, la histoire du projet est que ça a commencé avec un AJAX hack, qui était juste displayant des images et des logs sur ce qui se passe sur le server poker. Puis, Loic Dacherie a fait des développements. Et là, il y a 4 compagnies de développement et customisation du client. Donc, comment ça fonctionne ? C'est pour le server poker en utilisant le request HTTP. Le server s'appuie avec JSON Packet. Et puis, de ce JSON Packet, il décide de l'aider ou de montrer l'élément HTML. Ou de craft nouveau, ou d'updater l'élément HTML existant. Et quand vous cliquez sur le bouton, comme des ingrédients réguliers, c'est JSON back to the server. Donc, comment le table est displayant ? C'est de fixer la position d'images avec des textes d'imagination dynamique. Et vous pouvez voir ici. Les images d'imagination sont comme ça. Donc, chaque image que vous voyez ici est un div. Et c'est tout en animant les CSS. Donc, il y a aussi pas seulement le table, mais aussi le lobby, qui est bien displayant table list, tournée list, user info, cashier, le nombre de monnaies que vous avez, et une searching box pour une particularité de table ou de joueurs. Donc, c'est ce que le budget semble. Donc, c'est pour éditer l'information de l'utilisation. C'est juste des formes régulaires. Et c'est le lobby de tournée. Quand vous pouvez voir ce qui se passe, il y a un tournage, avec seulement un joueur. Évidemment, c'est faux. Et il a un, donc il a ce prix. Et c'est la liste régulière de table quand vous pouvez cliquer pour joindre. Donc, quand nous faisons un web app, donc, on a vu que c'est génial de targeter le web pour Pocahontes, mais il y a aussi des drogues. Il y a aussi l'issue de crossbow. Parce que vous avez marié beaucoup de différentes implementations de JavaScript, de différentes implementations de CSS, et de débutant, pour exemple, dans l'internet explorer, c'est un BMS. Donc, nous devons ajouter un code afin d'être capable, à moins d'appliquer un stack trace sur chaque browser. Donc, pour ça, pour faire partie de l'issue de crossbow, nous avons utilisé GQuery où il y a plein de plugins existants. Il aide beaucoup avec le issue de crossbow et il y a un bon API. Ici, vous pouvez voir comment nous avons abattu les éléments qu'on a créés pour envoyer un packages pour le service. Mais, grâce à GQuery Chain, nous pouvons aussi dire que nous voulons ajouter un class de CSS et définir la marque pour le bouton ici. Et pour aider aussi avec le issue de crossbow, donc, currently, jpoker est 5000 lignes de code mais il y a 10 000 lignes de test. Il y a 300 tests individuels et ils proviennent 100% de coverage sur le base de code. C'est ce que le test est, vous avez des tests mini, et vous regardez que le scrollbar est à la fin. Et c'est le reportage de coverage de GSCoverage. Et c'est un test régulier de GQuery qui s'appelle QUnit. Et ici, vous pouvez voir que nous avons 100%. Mais évidemment, c'est un autre version parce qu'il n'y a que 2000 lignes de code. Et pour le début, nous avons utilisé le Firebug. Il s'agit d'abandonner les étapes dans Live pour s'entraîner dans le Java Strip pour voir les variables et aussi, l'interactive JavaScript console et le live édition de CSS. C'est ce que ça ressemble. Quand je focusse sur un élément je peux éditer le CSS. C'est très bien intégraté à la base et nous sommes heureux d'avoir un Firebug pour nous aider à développer Jpocker. Pour le layout, vous avez vu qu'il y a beaucoup d'étapes fixés. Pour la bootstrapping, nous étendons sur Inkscape. Nous pouvons utiliser Inkscape, l'élément d'images et exporter à SVG et convertir le SVG à l'HTML et la position fixée de CSS. Il n'y a pas d'étapes fixés pour chaque élément. Vous avez le défaut skin et vous voyez qu'il y a un élément pour chaque joueur. Et c'est SVG. Nous avons fait un petit pipeline d'étapes fixés pour la position de l'élément dans le CSS. Pour la skinning, nous étendons l'image de l'élément existant en utilisant le CSS. Nous avons aussi un test skin. Parce que quand vous faites un jeu, il pourrait être difficile de reproduire tous les scénarios possible. Parce que si vous voulez, pour l'exemple, faire quelque chose spécial, faire un jeu créateur et les mettre tous ces scénarios et d'être dans toute la situation. Pour cela, nous avons un test skin avec un serveur et le client envoie un packet pour les clients. Donc, nous n'avons pas de manuel de cliquer pour aller dans une situation particulière. Ça aide à dealer avec l'aspect visuel. Vous pouvez faire le même test sur beaucoup de browser et voir si c'est le même visuel. Oups. Oups. Ah, c'est le bad image. Sorry. Donc, pour l'intégration, jQuery est juste un set de jQuery plugins. Donc, pour les displays de la table, vous avez juste un code et vous dites que vous voulez des displays de table. Si vous voulez des displays de table, vous pouvez utiliser le contenu et vous voulez des displays de table. Et c'est seulement un file javascript donc ça pourrait aller dans une page HTML si vous voulez remplacer les contents. Par exemple, vous cliquez sur la table et dans la liste de table vous voulez la table pour displays. Vous pouvez remplacer la liste de table ou vous pouvez also have a link and point to it support permalink. So, if jQuery, if a web page is open and jpoker is included in it, it look at the URL and if there is a game ID in it, it can start joining automatically the table and display it. For integrating into your website, you can override templates. So, there are just javascript code, if you want to have a different DOM structure for each row of the table list, you have a row template where you can put custom HTML and you have callbacks. For example, if you want some javascript code to be executed when you are integrating with jpoker for example, when someone click a table to join, you want to display a pop-up say are you sure do you want to join this table you could do it using callbacks. There is also good support for internalization. We have translation into web language and these are there are two kinds of translation client-side and server-side. For client-side, we are using getText and jQuery plugin which is called jQuery getText and we just have a PO file which are translated into JSON and loaded directly into the page and for server-side translation it's unlet by the server and we tell the server which local we have and then the server when you have to send us some string, translate them in the good language. So we can see all of it. So there are many contributors as there is Loic who took over the project, that's me, that's Zach who is in the in this room and I've done a lot of CSS work there is Vincent Angers who has made many graphics there is Thomas Vincent who has done some javascript work there is Pierre Boulle I don't know I know him only on IRC so I maybe have misunderstood his name but he has done a lot of work into Drupal integration there are Shandan who are working on 2PHP integration with Gpoker, Ulrike who do a lot of CSS work and many company Gpoker Mania who have founded custom development so recent development we these are the recent development into Gpoker we have way more skins now which are only CSS and image file there are also blocking pulse implementations before that Gpoker was asking every 5 seconds to the server is there something new is there something new when there were nothing the server were just replied with an empty response no Gpoker the connection is blocking until there is an un pulse from the server so it reduce a lot the latency there is animation for example when you win some chips they go back to your player there are some zones so we are just we convert some OJJ file to SWF using some SWF tools and then we insert the SWF into the dem document and just play the zone there are support for multiple window so you can have multiple integration in multiple tabs if you want to play more than table than a tie and there is a no pulse social gadgets which just is an XML file which embeds the Gpoker code and allow it to allow to embed it in existing social network there is Drupal integration where Pierre has worked a lot and it is relying on the open social gadgets in order to integrate it into Drupal so if you have any question I will just show you a video first because there are only been screenshot and it could be nice to have video this is on page of the project the license is AGPLv3 and if you have no more question you can go after the question you could go play on this URL if you want I will just show you a video which is a skin case which is showing all the elements of the game so you can see so this is a list of skin case we click on it and it simulates all the packets that we can receive from server so you see the last stuff with animation ok, that's it so we have 3 minutes left do you have any question yes so the question is do we support internet explorer 6 so yes and no at the beginning of the project they have been testing done in internet explorer 6 but we have not made that testing anymore so the correct answer c'est la diante and the nicest answer would be that you could figure it out by just running the test suite in internet explorer if there is some red, that means it's not supported ok so the question is do we provide ready to go stack for the client in the server the short answer is no, we don't have clue let's imagine yet for the world stack the nice answer is yes we have Debian packages for the server for the client and Fedora packages as well so the stable version is currently in Fedora and and Debian and Ubuntu and the last and stable version is in all repository with all the animation stuff the building farm which is providing ready to go debs and ERPM for for each distribution but the last session is not pushed into Debian yet yes it depends because we don't maintain a website where user can play we just providing the software so there is when you go to this URL you will see no user all those selling services and development and the biggest user base we have is on a website called skyrock which have like 200 and 500 user playing on the stable version but I mean that's just customer running the same copy of the software so any more question so one minute left ah that's a very good question what ah oui yes sorry how do you debug javascript into other browser than Firefox so SAC we use SAC which is in the room we have very good internet explorer debugging skills and basically it is used by the test because when we run the test we first try to write the test that reproduce the issues a way to reproduce the error and then we can even debug with alert and stuff because it's it's not difficult to put in condition to reproduce the bug when using test ok so thank you