Archive pour septembre 2008

Big news pour jQuery

29/09/2008  |  Publié dans cakephp

jQuery, la librairie javascript qui a (toujours) le vent en poupe, vient d’enregistrer deux gros succès : Nokia et Microsoft l’embarquent maintenant l’un dans son runtime basé sur Wekbit et visant au déploiement d’appli web, l’autre dans son environnement de développement. Gain à attendre pour tout un chacun : plus de tests unitaires et un meilleur fonctionnement sous IE et les navigateurs basés sur Webkit.

Plus petite news naissante : sur Twitter, Jeff Loiselle et Marc Grabanski annoncent qu’ils ont passé la nuit à bosser sur l’intégration de jQuery à CakePHP via un helper et un composant réalisant la validation en Ajax d’un formulaire. J’ai hâte de voir (et d’essayer) ça. Pour l’instant, c’est prototype et script.aculo.us qui sont intégrés dans le noyau de CakePHP et donc facilement utilisables au sein du framework.

update 30/09 : ça y est, comme l’annonce Jeff, une demo est et le code disponible sur github.

Signets remarquables du 23/09/2008 au 27/09/2008

27/09/2008  |  Publié dans cakephp

Quelques bonnes adresses CakePHP vues entre le 23/09/2008 et le 27/09/2008:

CakePHP WhoIs Component
Un composant qui permet fort simplement d'obtenir les informations fournies par la commande "whois". Utilise le classe phpWhoIs.
Une ébauche de Merge behavior
Un behavior qui peut être utile. Il fusionne deux enregistrements en un troisième. A voir : comment se comporte les enregistrements liés dans d'autres tables. A priori : mal. Il y a encore eu peu de boulot.
Saving extra fields in the join table (for HABTM models) « nuts and bolts of cakephp
Une autre idée pour gérer des champs supplémentaires dans la table de liaison d'une habtm., tout simplement en créant une liaison hasMany temporaire.
Tutorial - CakePHP Ajax "Quick Save" with jQuery: CakePHP, jQuery
Un tutoriel simple et efficace pour insérer un bouton "sauvegarde rapide" sur un formulaire, qui réalise une sauvegarde en ajax et permet de continuer à éditer les champs ensuite. Petit problème à gérer en sus à mon avis : la (non-)validation.

Plus sur ma page delicious consacrée à CakePHP.

Incrémenter un champ

25/09/2008  |  Publié dans cakephp

Suite à une question à laquelle j’avais répondu sur le Google Group français consacré à CakePHP, je me suis dit que j’allais ajouter à mon app_model.php la méthode suivante :

  1. <?php
  2. // dans {app}/app_model.php
  3.         /**
  4.          * incrémente d’un le champ $field de l’enregistrement de clef primaire $id
  5.          *
  6.          * @var int id clef primaire de l’enregistrement dont on veut incrémenter un champ
  7.          * @var string field champ du modèle à incrémenter
  8.          * @var int value valeur de l’incrément, par défaut 1
  9.          * @return bool
  10.          * @author Guillaume
  11.          **/
  12.         function incField($id = null, $field = null, $value = 1) {
  13.                 if(!empty($field) && !empty($id)) {  
  14.                  return $this->updateAll(array($this->alias.‘.’.$field => $value.‘ + ‘.$this->alias.‘.’.$field),  
  15.                                         array($this->alias.‘.’.$this->primaryKey => $id));  
  16.             }
  17.                 return false;
  18.         }
  19. ?>

On l’utilise ainsi simplement dans, par exemple, une méthode view, pour incrémenter un compteur à chaque visualisation d’un contenu, et ce dans n’importe quel modèle :

  1. function view($id = null) {
  2.                 if (!$id) {
  3.                         $this->flash(__(‘Invalid Link’, true), array(‘action’=>‘index’));
  4.                 }
  5.                 $this->Link->incField($id, ‘hits’);
  6.                 $this->set(‘link’, $this->Link->read(null, $id));
  7.         }

Signets remarquables du 21/09/2008 au 22/09/2008

22/09/2008  |  Publié dans cakephp

Quelques bonnes adresses CakePHP vues entre le 21/09/2008 et le 22/09/2008:

alkemann - Google Code
Trois behaviors à essayer : LogableBehavior, OrderedBehavior et Chartable.
HTML Cache Helper (Articles) | The Bakery, Everything CakePHP
Une solution de cache html. Très simple, ma foi. Limitations : ne permet pas de cacher les pages d'index, doit être vidangé à la main, ne gère pas les éléments spécifiques aux utilisateurs
Multiple Display Field (Articles) | The Bakery, Everything CakePHP
Un behavior qui permet de contourner la limitation de l'attribut de la classe Model $displayField, qui est une chaîne de caractère alors qu'on aimerait tant que ce soit un tableau, histoire de générer automatiquement des listes "prénom nom" avec Model::find('list')…
CakePHP validation cheatsheet
Fran Iglesias a synthétisé les différentes façons de valider les champs d'un modèle en un PDF. Grâce lui soit rendue.
Point polygon intersection with Cake | joebeeson
Intéressante transposition en CakePHP d'une requête permettant de déterminer si un point est à l'intérieur d'une zone délimitée par un polygone. Manque la clause "HAVING", non gérée par Model::find(), que Joe fait "à la main".

Plus sur ma page delicious consacrée à CakePHP.

Le guide du Router::

21/09/2008  |  Publié dans cakephp

La classe Router permet, à travers le ficher de configuration routes.php, de se mitonner des URLs aux petits oignons pour son application. On peut également utiliser sa méthode url de manière statique et c’est très pratique. Petit échantillon avec deux exemples d’utilisation.
Lire la suite de ce post »

Signets remarquables du 20/09/2008 au 21/09/2008

21/09/2008  |  Publié dans cakephp

Quelques bonnes adresses CakePHP vues entre le 20/09/2008 et le 21/09/2008 :

Cake PHP | ActiveState Community Site
A l’initiative de Jonathan Snook Chris Hartjes, un développeur de Komodo a ajouté à l’IDE la capacité de reconnaître les vues et de les traiter intelligemment (autocomplétion, reconnaissance des helpers). Je n’ai pas essayé Komodo depuis bien longtemps, je vais peut-être retenter.
Amazon ECS Component
Un composant pour faciliter le travail avec l’API d’Amazon. A noter que Felix de debuggable.com a proposé récemment une autre approche avec un datasource plutôt qu’un composant.
Clean your HTML output | Devconsite
Une méthode simple et sans utilisation de module complémentaire (Tidy par exemple) pour réduire la taille du code html généré (suppression des tabulations, des espaces, des commentaires…)

Plus sur ma page delicious.

Un nouveau livre sur CakePHP en prévision

17/09/2008  |  Publié dans cakephp

Récapitulons. Sur le front de l’édition concernant CakePHP (un peu en retard de ce point de vue là sur ses rivaux), nous avons :

  • CakePHP Application Development, de Anupom Syam et Ahsanul Bari, déjà disponible, par exemple chez Amazon, et dont je prépare un petit compte-rendu pour bientôt,
  • Beginning CakePHP, de David Golding, lui aussi déjà disponible,
  • Practical CakePHP Projects, de Kai Chanet John Omokore, pas encore sorti et sans date de sortie connue
  • Cakephp Recipes de Fabio Cevasco, projet avorté pour de sombres raisons (impliquant des membres de la Core team de CakePHP ayant sale caractère… je ne prends pas partie, je vous laisse chercher sur Google pour plus de détails), mais dont la sortie est étrangement toujours annoncée pour 2010.

Et donc un nouveau s’annonce… Il est “supporté et validé techniquement” par la fondation CakePHP (ce qui aurait dû j’imagine être le cas du “CakePHP Recipes” cité plus haut), et il s’appelle “CakePHP in Action“, il est l’oeuvre de Andrew M. Dawson (aka le fameux AD7six) et Duane O’Brien. Si les premiers chapitres sont d’ores et déjà disponibles, sa sortie en version papier n’est prévue qu’en mai 2009… pour la sortie de la version 1.2 définitive ?!

CakePHP : comment bien débuter

16/09/2008  |  Publié dans cakephp

Le succès de CakePHP s’accompagne fort logiquement d’un afflux de nouveaux développeurs voulant utiliser le framework. Voici quelques pistes pour démarrer au mieux.

A mon avis, le coeur de cible de CakePHP (et sans doute des autres outils du même genre), c’est le développeur PHP qui, après plusieurs applications développées avec ses petites mains, se rend compte qu’il en a marre de réinventer la roue, que certaines taches fastidieuses (par exemple les validations de formulaires, les requêtes d’insertion dans la base de données…) se répètent à chaque nouveau projet, que l’utilisation de bibliothèques externes récupérées à droite et à gauche nuit à l’homogénéité de son code. Si vous ne vous reconnaissez pas dans ce profil, ne passez pas votre chemin, tout reste possible ! Néanmoins, CakePHP impose à mon avis quelques prérequis qu’il est important d’avoir en tête avant de se jeter à corps perdu dans un projet :

connaître la programmation en PHP : oui, il faut connaître un minimum la syntaxe de PHP pour utiliser CakePHP. Le framework fait plein de choses magiques, génère lui-même du code sans qu’on n’ait rien à faire, mais ne se substitue aucunement à PHP. Les bases se trouvent dans le manuel PHP.
connaître les bases de la conception d’application et en particulier de la conception de modèles de données. Dès que l’application est un tantinet spécifique et complexe, il faut réfléchir avant de se lancer, impossible d’y couper. Une fois votre base de données bien construite, CakePHP fera son boulot. Un post sur la bakery (en anglais) explique bien l’articulation entre cette tache et le développement avec CakePHP.
connaître les bases de la programmation à objets. Pas besoin d’être un cador mais il est préférable de maîtriser les concepts de base : héritage, classe, objet, méthode, …
connaître quelques uns des Design Patterns sur lesquels est fondé le framework est un sérieux plus : MVC, Active Records

Une fois acquises ces connaissances de base, voici les ressources (avec un accent sur les francophones) qui vous seront essentielles pour démarrer :

  • longtemps le point faible de CakePHP dans sa version 1.2, le manuel collaboratif s’enrichit de jour en jour. Il est perfectible, peut-être pas assez progressif et il y a encore quelques zones d’ombre, mais il faut absolument le lire au moins une fois, et le garder sous le coude en référence ensuite. En particulier, le tutoriel du blog est un passage obligé pour découvrir le framework.
  • la communauté française se met en place. Elle dispose notamment d’un forum et d’un Google Groupe où vous pourrez discuter et poser des questions.
  • le blog Formation CakePHP est la référence francophone en matière de tutoriels clairs et détaillés. 

Quand le manuel ne suffit pas, quand Google n’est pas votre ami, voici trois pistes supplémentaires.

  • la plus ardue est d’aller lire le code des librairies composant le framework pour comprendre comment la méthode qui vous pose souci fonctionne - problème, il faut comprendre ce code, ce qui n’est pas toujours aisé. Mais l’exercice est toujours formateur.
  • la lecture de la documentation de l’API (générée automatiquement et basée sur les commentaires présents dans le code) est plus accessible, mais sa pertinence dépend de celle des commentaires, qui sont parfois laconiques.
  • troisième méthode, peut-être plus efficace : la stabilité et la fiabilité du fonctionnement de CakePHP au fil des évolutions est assurée par une multitude de tests unitaires. Outre ces garanties de fonctionnement, ces tests unitaires apportent une extraordinaire documentation par l’exemple sur le “comment ça marche”. Un exemple ? Avant qu’elle ne soit documentée dans le manuel, nous sommes nombreux à avoir découvert le fonctionnement de la puissante classe Set en lisant ses tests unitaires.

Voilà donc un peu de lecture :)

Derniers conseils : débutants, évitez de vous lancer directement dans une “grosse” application (plus de 10 tables, disons), essayez d’abord de développer votre petite application à vous. Une application simple, facile à modéliser, sur laquelle vous pourrez vous faire la main. Pour James Fairhurst, ça a été une application de gestion de DVDthèque en ligne, et il en a fait un tutoriel en douze épisodes qui commence ici (en anglais).

Et comme on dit par chez nous, happy baking !

La fin d’une vieille blague ?

16/09/2008  |  Publié dans google

Ca vous est forcément arrivé : vouloir envoyer un (ou des) document par mail et oublier la pièce jointe.

Les utilisateurs de Gmail auront bientôt un filet pour éviter  de se livrer involontairement à ce comique de répétition. Une fonction détectant (en se basant a priori sur des mots-clefs) si votre message est censé comporter des pièces jointes et n’en a pas est apparue dans l’onglet “Labs” de Gmail (un mode spécial permettant de tester en avance les éventuelles futures fonctionnalités de Gmail). La détection est pour l’instant en anglais (le mode “Labs” impose d’utiliser Gmail en anglais), mais ça marche !

Chrome : j’aime / j’aime pas

03/09/2008  |  Publié dans Non classé, web 2.0

Après l’annonce d’hier, une journée avec Chrome en lieu et place de Firefox au bureau… quelques observations au passage (article mis à jour au fil de la journée)

J’aime pas

  • arf, je suis déstabilisé bêtement par le fait que dans le menu contextuel, les items “ouvrir dans un nouvel onglet” et “ouvrir dans une nouvelle fenêtre” soit inversés
  • du coup, je n’ai pas trouvé d’option “les nouvelles pages s’ouvrent dans un nouvel onglet”… dommage. 
  • mes extensions favorites me manquent (Firebug, Yslow, delicious…).
  • le rendu me paraît un peu en retrait comparé à celui de Safari sur Windows, sur les polices notamment (par exemple le nombre d’items non lus dans les onglets de NetVibes).
  • avec ma dizaine d’onglets, il y a, quand je pense de l’un à l’autre, un temps de latence pendant lequel l’onglet de destination reste blanc avant d’afficher la page. Ce n’est sans doute pas moins rapide que FF ou Safari, mais en terme de perception, l’impression de lenteur est renforcée (au passage, mon PC est un peu à la RAMasse, manière de dire que je flirte dès le démarrage avec les limites de la mémoire vive, ce qui peut expliquer ce phénomène),
  • Jeffrey Zeldman a trouvé un bug sur les styles alternatifs
  • je constate parfois un petit bug sur les textarea, le première caractère d’un mot tapé en fin de ligne disparaît quand le mot passe à la ligne !
  • javascript rapide, oui… mais pas si rapide que ça. En tout cas, quand on est habitué à Safari sur Mac, ça ne paraît pas révolutionnaire,

 

J’aime

  • le fait que lorsqu’on ouvre un lien dans un nouvel onglet, ce nouvel onglet apparaisse immédiatement à la suite de l’onglet courant et non à l’extrême droite de la barre des onglets.
  • plus de fenêtre de téléchargement, cette fenêtre un peu stupide toujours paumée et dont je n’arrivais jamais à me souvenir du raccourci clavier. Les fichiers téléchargés viennent se loger en bas de la page/de l’onglet à partir duquel on l’a téléchargé. On peut faire apparaître une page dédiée les listant tous sous forme d’onglet et plus de fenêtre, avec un moteur de recherche.
  • la disparition du faux champ de saisie texte pour les éléments de formulaire “télécharger un fichier”
  • la transformation en “mode vignette” de la page quand on fait un cliquer-déplacer sur un onglet

Archives

Liens au pif

  • blogcatalog
  • Julien Bourgeois
  • Communauté française CakePHP
  • snook.ca
  • Le blog de Pierre
  • pictures of the north country
  • mes photos
  • Pseudocoder
  • Formation CakePHP
  • Chez Trân
  • Frédéric de Villamil
  • Yahoo Pipe des sites CakePHP FR
  • POPnews
  • Cakebaker
  • Web Development 2
  • Derniers commentaires

    • Guillaume: Merci pour cette précision, Pierre, je vais aller voir ça.
    • Pierre Martin: Bonjour Guillaume, et merci encore une fois pourle lien vers mon article ! Juste...
    • Guillaume: De loin, on ne voyait pas très bien :)
    • Gabriiiel: Roy nous a remis un trophée… :D
    • Pierre MARTIN: Il y a aussi cet article de teknoid contenant un lien vers un plugin de recherche...
  • Derniers trackbacks