Piwik : nouvelle version 1.5 et erreur de session.

PiwikPiwik vient de sortir officiellement dans sa version 1.5.

Nouveautés

La liste des nouveautés est alléchante. Outre les corrections habituelles de bug, on retrouve une nouvelle fonctionnalité de tracking spécialisé dans le e-commerce. Nous pourrons alors effectuer des statistiques sur le achats effectués, les paniers abandonnés, etc. Ce sont des statistiques orientées produit, et non plus visiteur.

Un autre point très important (pour moi en tout cas) est l’abandon de Flash pour l’utilisation de la balise canvas et de jQuery. Bien que je n’aprécie pas jQuery (je préfère de loin Mootools), je trouve que c’est un choix important qu’ils viennent de faire. Ça tend à prouver que Flash devient de moins en moins indispensable dans le domaine du graphisme (dans le sens graphe, etc. et non pas design de site).

Pour plus d’informations sur les autres nouveautés, vous pouvez visiter le blog de Piwik.

Continue reading

GPosition : aide à la SEO.

Édit : page des dernières modifications.

Nouveau : 11/10/2011 – le script prend maintenant en charge Bing.

Présentation

GPosition va vous permettre de faire des analyses sur la position de votre site sur certain mot clé dans le moteur de recherche Google. Je l’ai créé à la base pour rechercher où se situait mon site dans le SERP (Search engine results page) de Google sur une certaine recherche. Ça, c’était dans sa première version. Aujourd’hui, je lance la version 1.2, qui permet plus de possibilités. Mais lisez la suite pour en savoir plus.

Continue reading

Mise en forme : passer des tableaux (table) aux blocs (div)

Cet article est inspiré d’une conversation sur WebRankInfo.

Introduction

Aujourd’hui, la conception des sites web se fait de plus en plus en respectant les recommandations de la W3C (il y a encore des irréductibles). Il est maintenant recommandé de séparer la mise en forme de la structure HTML. Pour cela, on externalise cette mise en forme dans des fichiers CSS.

Ce principe permet de rendre l’application plus flexible en permettant de modifier la mise en forme d’un site sans remanier le HTML. En outre, en configurant correctement le cache du navigateur, vous épargnez à vos visiteurs un chargement plus long. Grâce au cache, les fichiers CSS seront téléchargés une et seulement une seule fois. Résultat :

  • moins de requête
  • moins de bande passante utilisée (ça va vite).
  • économie de serveur : au lieu de rendre toujours le même fichier, il peut s’occuper d’autre chose.

Ce sont les gros points.

Maintenant, il reste un gros point noir. En effet, certain utilise encore les tableaux pour mettre en forme leur site web. Hors, cela va à l’encontre du rôle des tableaux, conçut pour afficher des données tabulaires (comme dans un tableur). C’était bien pratique il y a 10 ans (voir plus), mais maintenant, il est temps de revenir sur la bonne route.
Continue reading

Plusieurs boutons « submit » dans un formulaire

Dans quel cas aurions-nous besoin d’envoyer un formulaire via deux boutons « submit » différents ?

L’exemple typique est de définir une action « prévisualiser » et une action « envoyer » dans un formulaire de message d’un forum (ou un commentaire, etc.).

En effet, il est utile pour l’utilisateur de pouvoir prévisualiser son message avant de l’envoyer aux yeux de son public ce qui lui permet de voir le rendu de son message après traitement (BBcode, mot banni, etc.).

Il y a deux solutions, l’une utilisant JavaScript, l’autre en pur HTML. Par principe, nous préfèrerons utiliser la seconde solution, bien évidemment ;)

Continue reading

Comment créer un « Lire la suite » avec TinyMCE

Pourquoi « lire la suite » ?

Récemment, j’ai eu besoin d’intégrer un système d’actualité pour mon application d’alerte mail leboncoin.fr. Le problème provient des actualités avec un long contenu. Une actualité peut effectivement occuper une grande place sur la page. Si bien que les autres passent un peu inaperçues.

La solution est donc de tronquer l’actualité afin de la rendre d’une taille raisonnable, linéarisant ainsi la page. En outre, cette technique permet d’éviter d’avoir du contenu dupliqué dans votre site web. Ce qui sera apprécié pour un bon référencement.

Pour la rédaction des articles, j’utilise TinyMCE. Je souhaite donc ajouter un bouton permettant d’insérer un élément séparateur indiquant l’endroit où l’article sera tronqué.
Continue reading

Site bloqué durant un téléchargement

C’est un problème que j’ai rencontré il y a de cela quelques temps déjà. Mais, apparemment, je ne suis pas le seul à tomber dans le « piège ».

Il est parfois nécessaire de créer un script de téléchargement pour des raisons diverses (statistiques, contrôle d’accès, etc.). Mais un problème peut subvenir en cours de téléchargement : il n’est plus possible de parcourir le site. On a l’impression que le site ne répond plus, et lorsque le téléchargement est terminé, tout se débloque.

J’ai mis du temps à résoudre le problème, mais il s’avère très simple. Tout tourne autour des sessions. En effet, comme l’indique la documentation de la fonction « session_write_close« , un verrou est mis sur les fichiers de session durant l’exécution du script, ce qui fait qu’il n’est pas possible d’avoir 2 requêtes HTTP simultanées. La seconde attendant que la première soit terminée (du moins, tant que les sessions sont encore ouvertes).

Quand le fichier à télécharger ne fait que quelques kilooctets, ce problème n’est pas visible. Par contre, dans le cas de téléchargement de gros fichiers (plusieurs mega), nous pouvons voir le blocage.

La solution est donc de libérer la session (la terminer) avant l’envoi des données. Ce qui donne par exemple :

session_start();

// code de contrôle, statistique, etc.

// envoi des en-têtes …
header('...');
header('...');
header('...');

session_write_close(); // les données de session sont écrites dans le fichier, et le verrou libéré.

readfile($fichier); // on envoi maintenant les données

Et voilà, normalement le problème disparait.

Mootools : utiliser sa modularité

Dans mes projets, j’utilise principalement Mootools en tant que framework JavaScript. Je me sens vraiment à l’aise avec celui-ci par rapport aux autres framework (ex: JQuery).

Pour le premier article, il sera question de la modularité de Mootools. Mais avant tout, je vais faire une courte présentation.

Présentation de Mootools

Comme écrit précédemment, Mootools est un framework permettant de coder en JavaScript sans se soucier des problèmes récurrents de la compatibilité entre les différents navigateurs. En outre, il ajoute des fonctionnalités afin de gérer des animations, effectuer des requêtes XmlHttpRequest, parcourir le DOM, et bien plus encore. Tout cela avec simplicité.

Bien entendu, dans un projet, nous n’avons pas systématiquement besoin de toutes les fonctionnalités fournies par le framework. Grâce à sa conception modulaire, il est possible de ne télécharger que le stricte minimum de code. C’est le sujet de cet article.
Continue reading

ZF : envoyer des images embarquées dans un mail

Dans mon précédent article, je vous ai présenté comment envoyer un mail avec une pièce jointe. Dans la même ligné, je vais vous montrer ici comment envoyer des pièces jointes en ligne.

Qu’est qu’une pièce jointe embarquée ?

Le principe est d’attacher le fichier directement à l’intérieur du mail. Si vous créer un lien interne vers ce fichier, vous ne le verrez alors pas en tant que pièce jointe à télécharger. Ce système présente des avantages comme des inconvénients.
Continue reading

ZF : Comment envoyer un mail avec une pièce jointe ?

Introduction

Que ce soit pour la confirmation d’inscription ou pour une newsletter, à un moment ou un autre, vous devrez envoyer un mail.

Mais cette tâche peut devenir compliquée, et encore plus s’il vous prend l’idée d’envoyer une ou plusieurs pièces jointes avec votre mail.

Heureusement, des bibliothèques existent et permettent d’éviter de concevoir notre propre code. Étant utilisateur de Zend Framework, je vais vous présenter comment envoyer des mails accompagnés de pièces jointes en utilisant ce dernier. Vous verrez alors la simplicité de la chose.
Continue reading

Fonction PHP du jour : array_chunk()

Nous avons vu précédemment la fonction Levenshtein, permettant de calculer une distance entre deux mots.

Aujourd’hui, je vais vous présenter la fonction array_chunk(). Pour les « pros » de PHP, cela ne sera peut-être pas intéressant, mais même après des années de programmation, on passe parfois à coté de fonctions pouvant se révéler bien utiles.
Continue reading