Bonjour,

Commençons par expliquer ce qu’est l’admin generator de Symfony… Globalement, en 2 temps 3 mouvements, et quelques lignes de codes, cela nous permet de créer une interface pour administrer notre base de données. Typiquement, on se crée un phpmyadmin pour notre partie administration.

J’ai donc créer un petit « layout », le schéma de page globale à chaque page d’admin, avec un menu en haut pour accéder à chacune de mes tables, et j’ai laissé faire la magie Symfony :

menu_admin

une page d'admin... certes, c'est pas très joli ces inputs sombres... mais c'est lié à mon thème d'Ubuntu, qui permet de ne pas se fatiguer les yeux :)

Malgré tout, mieux vaut avoir quelques connaissances assez pointues en PHP pour comprendre comment ça fonctionne, et l’adapter à ses besoins… Car les « fatal error » ou autres « parse error » s’accumulent…

Déjà, premier réflexe, ajouter des méthodes __toString() à chacun de ses classes de la base de données objet.

Exemple, dans le fichier lib/model/MaTable.php :

class MaTable extends BaseMaTable
{
  public function __toString()
  {
    return $this->getName();
  }
}

Cela lui permettra de savoir quoi afficher quand vous faites des liens entre plusieurs tables (la méthode toString est une « méthode magique », qui est appelé quand on fait un echo sur un objet).

Autre déconvenue qui m’a pris bien plus de temps à résoudre… Quand vous faites des liens entre des tables, par exemple, une table qui relie les utilisateurs à des droits :

doselectjoinall

le doSelectJoinAll

L’idée est d’avoir, dans la liste, le nom du droit et le nom de l’utilisateur… et nom leurs id respectifs… La solution st venu du doSelectJoinAll, dans le fichier de configuration generator.yml :

      list:
        title: Droits des utilisateurs
        display: [user_id, credential_id, credential_comment]
        peer_method:  doSelectJoinAll

Très facilement, j’ai pu créer mes propres modules à la structure proposée par Symfony… Par exemple, ce module qui permet de créer des QCM, réalisé en « Ajax », à l’aide de Mootools…

qcm

création d'un QCM en javascript

Un petit défaut sur le HTML/CSS de base… Le filtre est une bonne idée… mais à moins d’avoir un écran de 50″, le div de filtre recouvre les champs de la table… Du coup, je vais devoir modifier le CSS pour le passer en dessous de la table…

filtre

un recouvrement de filtre pas très joli

Voila pour les grandes lignes… J’ai encore pas mal à explorer sur l’admin generator, mais l’essentiel est que, en pas trop longtemps, j’ai réussi à répondre à mon besoin ! Et c’est bien là l’intérêt d’un framework !

Depuis 2 semaines, je me suis (enfin) lancé dans mon projet Symfony ! Il s’agit de coder la nouvelle version de mon site, le PJEA (site de pronostics sur le sport automobile).

La première chose à noter, c’est que c’est TOTALEMENT différent de coder son projet perso que de suivre un tuto, genre Jobeet :) On a beau recopier à la main le bout de code, le copier-coller… on se dit qu’on comprend ce que ça fait…. mais quand on part d’une feuille blanche, c’est bien différent… Les débuts ont été laborieux…

Mes outils

Je vais commencer par détailler mes outils pour ce nouveau projet.

Bien que toujours fidèle à mon Windows Vista, il faut se rendre à l’évidence… coder sous Symfony demande d’être sous un système Linux… Donc, la parade, pour pas non plus changer toutes mes habitudes… la virtualisation !

J’ai donc installé VirtualBox, et virtualisé avec Ubuntu 8. L’installation du packetage minimum fait (un apache, un mysql…), j’ai commencé à chercher un éditeur plus sympathique que Vim… J’ai jeté mon dévolu sur Eclipse PDT 2.0. Très pratique, beaucoup plus maniable que Vim… De l’autocomplétion, une analyse du code en live pour les oublis de  » ;  » ou autre… A côté de ça, un terminal, pour pouvoir lancer les commandes Symfony… et hop, en avannt !

Les premières lignes

Le projet généré, la première étape a été de créer le schema.yml, le fichier qui permet de définir la base de données. Histoire de commencer en douceur, je me suis limité en nombre de tables… 7 tables pour l’instant, avec le minimum de champs dedans. Le premier objectif est de pouvoir s’inscrire au site, se connecter, et faire des pronostics. Quand cela marchera, j’ajouterai les autres fonctionnalités (et elles sont nombreuses…).

Pour le module de connexion/inscription, ma première étape, j’ai préféré le recodé entièrement au lieu d’utiliser le plugin sfGuard.Ca me permettait de commencer en douceur… Je me suis quand même inspiré du plugin, quand j’étais bloqué dans mon code.

Ca m’a pris du temps, mais c’est bon, à présent, ça fonctionne bien… Avec pose de cookie si le joueur veut être connecté à la prochaine visite… de l’ajax (utilisation de Mootools, une librairie légère est très sympahique à utiliser).

Je me suis ensuite attaqué au module « prono », qui permet au joueur de faire ses pronostics. Pas mal de complications là… J’ai crée mon propre « validator » pour mon formulaire (on ne doit pas pouvoir pronostiquer 2 fois le même pilote).

De grosses difficultés avec la gestion des timestamp et des datetime… La comparaison ne voulait pas se faire… Heureusement, après de longues recherches, la fonction strtotime() m’a sauvée la vie :)

Côté formulaire aussi, pré-remplir les <select> avec les valeurs précédemment rentrées par le joueur (si il veut modifier son prono, il falllait que le formulaire soit pré-remplit avec les anciennes pilotes choisis). J’ai demandé un peu d’aide sur le forum de la communauté Symfony… J’y reviendrai dans la partie « Bilan »…

Au final, après ces 2 semaines (pas intensives non plus, je vous rassure :) ), je suis arrivé à mon premier objectif. Mes 2 modules fonctionnent ! Je vais pouvoir attaquer de nouvelles fonctionnalités.

Bilan personnel

Quel bonheur la programmation « agile ». Certes, il y a beaucoup de fichiers, beaucoup de dossiers… mais comme tout est agencé de façon parfaitement logique, on peut apporter des modifications au fiur et à mesure du développement. On commence par le minimum de ce que doit faire la fonction, et on étoffe au fur et à mesure.

La refactorisation est aussi indispensable. Dès que quelque chose fonctionne, il faut prendre le temps de réorganiser le code (placer ce qui a rapport aux données dans les fonctions liées à la gestion de la base de données « objet »… créer des classes séparées… ne pas répéter son code en différents endroits… et toujours bien respecter le principe MVC (Modèle-Vue-Controleur).

Dans les déceptions… Un peu déçu quand même par la communauté Symfony… J’ai posé 2 questions sur le forum… La première, j’ai du la relancer pour que quelqu’un s’intéresse à moi… la deuxième attend toujours… Et pourtant, ce n’est pas des questions que j’ai posé par flemme de chercher… J’ai d’ailleurs non sans mal trouvé la réponse à ma deuxième question tout seul… Je me suis donc auto répondu… Bien évidemment, je suis conscient que ça n’est pas leur métier de répondre aux questions, et qu’ils doivent voir passer pas mal de questions stupides tout les jours… mais bon, ça fait pas trop esprit ouvert… Pis la première personne a m’avoir répondu a envoyé de façon bien stupide un lien vers un autre topic, que j’avais déjà lu, et qui ne répodnait pas du tout à ma question…

Pour finir, dans mon approche de la découverte de ce framework… J’ai pas pris la meilleure décision je pense… Je me suis lu la totalité de la doc (un genre de gros pdf de 350 pages, expliquant les bases de tout le fframework) avant de commencer. Ca m’a pris du temps, et au final, je suis forcé de reprendre pleins de parties… Car c’est quand on est vraiment confronté au problème qu’on comprend l’intérêt de telle ou telle fonction.

Mon petit conseil donc… Lire le minimum pour commencer… A la limite les introductions à chaque partie du framework… Et aller lire en détail seulement quand on se retrouve confronté au problème (les filtres par exemple, qui permettent de faire des actions avant ou après chaque requête – typiquement, l’utilisateur n’est pas connecté, on regarde si il a un cookie pour se connecter automatiquement) – j’étais passé à côté quand je l’ai lu la première fois.. j’ai du tout me relire cette partie quand j’étais confronté au problème.

Conclusion

A suivre… Et oui, je suis loin d’en avoir terminé avec ce nouveau site ! Mais plus je maîtriserai le framework, et plus le développement ira vite ! J’ai déjà pas mal gagné en rapidité par rapport au tout début.

A partir d’aujourd’hui, je vais ajouter de nouvelles tables, et de nouveaux modules à mon application… Développement agile… On avance petits pas par petits pas !

A bientot donc, pour de nouvelles aventures :)

Bonjour,

Le mois dernier, j’ai proposé à l’ensemble des joueurs du PJEA de répondre à un petit questionnaire de « satisfaction ».  (visible ICI si vous êtes curieux)

En le lançant, je ne n’étais vraiment pas confiant dans le résultat… Je m’attendais à moins de 10 réponses… Et au final, 26 personnes ont répondues ! Soit dans les 25% des joueurs réguliers ! Un grand merci à eux pour leur implication, cela m’a fait très plaisir.

Je vous propose en bas de page de télécharger le PDF regroupant tout les chiffres… et vous offre dans les lignes qui suivent mon analyse de tout ça !


Comment avez vous connu le site ?

Sans surprise, la majorité des joueurs viennent des forums (LTV mais aussi WRC.com du temps de son vivant !). D’ailleurs, moi même, c’est sur le forum de WRC.com que j’ai connu le jeu !

Conclusion : Il faudrait que je prenne plus de temps pour m’investir sur des forums… On verra dans le futur, là, pas trop le temps…


Utilisez-vous la messagerie ?

Environ la moitié ne l’utilisent jamais, l’autre « parfois »… En même temps, j’admet qu’elle n’est pas très pratique, pas très intuitive… et avec quelques bugs de ci de la…

Conclusion : fonctionnalité à conserver mais à améliorer dans les prochaines versions du site

Utilisez-vous les temps en direct à partir de votre portable ?

La majorité ne l’utilisent pas… je ne suis pas surpris en même temps.

Mauvaise communication de notre côté sur la fonctionnalité… Pas besoin d’avoir un iPhone ou un téléphone ultramoderne pour y accéder, ni un forfait illimité Internet. Un téléphone milieu de gamme suffit largement, et les pages sont très légères pour ne pas que la connexion coute trop cher.

Pour la saison prochaine, je ne sais pas trop si on pourra la reconduire. En effet, il est compliqué de récupérer ces infos en live.

Conclusion : mieux communiquer à l’avenir, bien expliquer le principe…

Avez-vous remplit votre profil ?

Majorité de oui… pourtant, j’ai l’impression qu’il y a peu de profils remplis sur le site. En même temps, ça n’est pas des plus clairs, je l’accorde… A l’époque, j’y avais implémenté trop de réglages possibles (choix du fuseau horaire et autres format de date…). Au final, beaucoup de temps pour rien :)

Votre avis sur le design ?

Ca fait plaisir, personne ne le trouve moche :) à moins que personne ne voulait vexer… Ca fait doublement plaisir, parce que le graphisme, c’est pas le domaine où j’excelle… c’est assez galère à faire pour moi. content que ça plaise !

Votre avis sur la navigation ?

Bon, en mettant cette question, je me doutais de la réponse… Moi même, je trouve la navigation mal étudiée… 50% ont quand même répondu que c’était simple… Encore une fois, pas envie de vexer peut être :)

Conclusion : la navigation de la prochaine version sera largement mieux réfléchie, je vous l’assure !

Des pronos sur d’autres catégories du sport mécanique ?

Très intéressante ces réponses ! Le championnat de France des rallyes fait envie… La F1 aussi… Télécharger le PDF en bas de page pour avoir les réponses complètes des joueurs.

Conclusion : A l’avenir, se diversifier dans les pronos !

Fréquence de visite ?

La majorité passe au moins une fois tout les 15 jours. Il faudrait proposer plus de nouveautés pour avoir des visites plus régulières… mais cela demande beaucoup de temps et d’énergie pour proposer du neuf tout les jours…

Que pensez vous du QCM ?

Les réponses m’intéressaient beaucoup sur cette question… Je cherche depuis toujours un nouveau format de QCM plus pratique… Et vos réponses m’ont permises de mettre le doigt sur le souci du QCM : certaines questions sont trop aléatoires (« différence entre hasard et réflexion », à souligné un joueur)… Et rapportent pourtant le même nombre de points…

Certains proposent d’ajouter une question historique… Perso, j’aime bien… mais comme on me l’a fait remarquer, on s’éloigne de l’esprit de « pronostic ».

Conclusion : le QCM va surement évoluer la saison prochaine… Un peu plus lié au prono surement, moins de questions, peut être, pour moins rebuter certains joueurs

Envie d’une newsletter ?

Encore quelque chose qui me tenait à cœur… Personnellement, je déteste être harcelé par des newsletters à tout va… Mais il est vrai que cela permet de se rappeler à la mémoire de nos joueurs, leur faire découvrir de nouvelles fonctionnalités…

Au final, il ne faudrait pas dépasser une toute les 2/3 semaines… Voir même une seulement en début de mois, résumant les activités proposés pour le mois entier.

Vos commentaires :

Beaucoup de commentaires très intéressants.

En vrac :

- un score forfaitaire pour les joueurs qui n’ont pas pu pronostiquer : ingérable je craint, idée pas vraiment retenue, désolé

- passer les pronos à 8 pilotes au lieu de 6 : j’y avais déjà pensé pour tout dire… mais je ne pense pas que cela apporterait grand chose finalement, et rendrait le prono plus long à faire (d’où, risque de perte de joueurs…)

- mail envoyé si on n’a pas fait le prono : cela est mis en place depuis 2-3 rallyes… en espérant que ça fonctionne :) car j’ai pas eu de retour la dessus

- problèmes de navigations divers… A l’étude pour la prochaine version

- forums trop compliqués : j’en suis conscient… j’ai voulu créer de toute pièces mon forum… au final, il n’a jamais été totalement fini… et est pas des plus intuitif…

- il manque des photos et des news : cela est en grande partie liée aux problèmes de droits pour les photos… Je verrai sur la prochaine version pour améliorer ça. Côté news, manque de personnes dans l’équipe…

- le GP PJEA, devenu plébiscite du vainqueur : certes, le GP PJEA n’a pas bien pris… malheureusement, très peu de joueurs y ont participé ou ont proposé des nominés. Si il y avait eu des propositions d’acteurs du rallye plus méritants, ils auraient bien évidemment proposés au vote ! Cela dit, une page se tourne sur cela… il ne sera très certainement pas reconduit, sauf si quelqu’un veut le reprendre en main.

- une récompense pour les vainqueurs ? c’est à l’étude… ;)

Comme promis, le PDF avec tout les chiffres : télécharger

PJEA : bilan de la saison 2008

Cela fait une semaine que le dernier rallye de la saison a eu lieu… Voici l’heure du bilan de cette nouvelle  saison du PJEA !

Alors, quelques chiffres…

Le PJEA 2008, c’est :

  • 222 membres (tous n’ont pas participé à la saison entière…)
  • 29 rallyes différents à pronostiquer
  • … pour 1640 pronostics enregistrés
  • 15 QCM différents
  • … pour 1059 QCM enregistrés
  • 16 quizz différents proposés
  • … pour 752 quizz de validés par les joueurs
  • 108 news (peut mieux faire…)

Quelques grosses déceptions :

  • le GP PJEA qui n’a pas pris du tout… j’ose même pas donner le nombre total de votes sur la saison… allez, si, parce que c’est vous… 147 :(
  • le forum interne, qui n’est pas du tout simple à utiliser (malgré tout, je me suis bien amusé à le faire, et j’en ai pas mal ch***…). Du coup, il a quasi pas été utilisé… 230 messages… en comptant les propositions pour le GP PJEA… très faible.
  • la version anglaise, qui n’a jamais vu le jour (reporté – à nouveau – pour 2009)
  • les nombreux soucis lors du changement de serveur… pas mal d’indisponibilités du site… beaucoup plus que les 3 dernières années et ma reprise du site de Gagak

Dans les points positifs, je pourrai aussi ajouter le premier « questionnaire de satisfaction » mis en place… Avec plus de participation que je ne l’espérais ! Je ferai d’ailleurs un bilan de tout cela dans un prochain article. Il y a eu de nombreux commentaires très constructifs !

Cela nous amène au futur du PJEA… nous avons, Cyr et moi, encore pleins de nouveaux projets dans les cartons. Malheureusement, cette année, la nouvelle version ne sera pas disponible pour le lancement de la nouvelle saison. Mais devrait être ouvert au cours du premier semestre 2009.

Au passage, pour ceux qui ne l’ont pas lu, voici la présentation du PJEA et son histoire.

A bientot !

Présentation du PJEA

A l’origine, au début de la saison 2003, ce jeu a été lancé par Gagak, sur le forum du site wrc.com. Ce « Petit Jeu Entre Amis » consistait a envoyer un mail à Gagak avant chaque rallye, avec le pronostic des 8 premiers pilotes, ainsi que le « meilleur performer » (pilote qui remporte le plus d’épreuves spéciales). L’innovation du jeu, par rapport aux autres jeux de pronostics existants, se trouvait dans le calcul des points. Il récompensait autant d’avoir trouvé le 6ème que le 1er (surtout que bien souvent, les 3 premiers ne sont pas les plus durs à trouver…).

L’étape suivante fut la réalisation d’un site web basique, avec un formulaire qui envoyait par mail à Gagak les pronostics. C’est d’ailleurs à partir de ce moment que j’ai découvert le site.

Les calculs se faisaient encore à la main… et plus le nombre de joueurs augmentait, plus cela devenait ingérable. Cyr est arrivé à la rescousse, en automatisant le calcul avec un tableau Excel.

Devant son manque de temps pour contiuer à gérer le jeu, Gagak décida, durant l’année 2005, que ça serait sa dernière saison en tant qu’organisateur du PJEA. Je venais d’apprendre le PHP (sur l’excellent site du zéro), et je me proposait donc de reprendre la boutique, avec un site plus moderne, et où la majorité des calculs seraient automatisés (il suffit de rentrer le résultat final du rallye, et les points de chaque joueurs sont générés automatiquement).

La première version du site PHP (le langage de programmation utilisé pour réaliser le site) est sorti en janvier 2006, avec un pronostic de test « grandeur nature » sur le Paris-Dakar.

La version 1 (2006)

Les évolutions se sont alors enchainées, au rythme de mes nouvelles connaissances en PHP…

La V2, lancée en janvier 2007, était déjà plus aboutie, avec un design beaucoup plus « moderne ».

La version 2 (2007)

Puis, V3 en janvier 2008 qui, même si elle ne proprosait pas une grosse révolution en terme de design, était basée sur un moteur totalement différent, utilisant notamment le principe de la Programmation Orientée Objet.

La version 3 (2008)

Cette année, malheureusement, il n’y aura probablement pas de nouvelle version en janvier… Une nouvelle version est en projet, beaucoup plus puissante, totalement différente… Mais loin d’être prête… J’y reviendrai dans de prochains articles.

A bientot !