mardi 6 mai 2014

DataTables, un plugin jQuery pour manipuler des tables en Javascript

Cela fait un peu plus d'un an que j'utilise DataTables dans un projet où les clients doivent manipuler de gros tableaux de données affichés dans des pages web.

DataTables est un plugin jQuery assez simple à configurer et à utiliser et qui permet d'éviter la plupart de la lourde programmation Javascript que ce type de développement peut impliquer.

Les principales fonctions de DataTables que j'utilise sont les suivantes :

  • Tri des tableaux en cliquant sur les noms des colonnes.
  • Recherche des lignes contenant des mots clés saisis dans un champ de texte.
Mais ce plugin permet bien d'autres choses comme par exemple de paginer des tableaux.

Dans sa configuration initiale, DataTables travaille uniquement en Javascript ce qui signifie que tous les traitements de données sont effectués sur le poste client. Personnellement je l'utilise avec des performances tout à fait convenables pour des tableaux contenant entre 500 et 1000 lignes de 6 ou 7 colonnes. Pour des données nettement plus lourdes, DataTables peut également être configuré pour effectuer des appels Ajax chaque fois que la table doit être redessinée permettant ainsi de déplacer la charge vers le serveur.

mardi 25 mars 2014

AquaMail pour mettre fin aux problèmes de synchronisation des mails sous Android

Depuis un an que j'utilise ma tablette Nexus 7, je n'ai jamais été vraiment satisfait de la lecture des mails avec l'application standard d'Android.

Je dispose de plusieurs comptes mails chez OVH que je consulte en POP sous Thunderbird sur ma machine Ubuntu.
C'est sur cette machine que je filtre les spams, supprime ce qui ne m'intéresse pas et archive ce qui doit être conservé.
Sur ma tablette, je veux juste voir ce qui arrive sur mes adresses principales pour éventuellement réagir à une urgence lorsque je ne suis pas au bureau.

L'appli standard d'Android pour les mails n'est vraiment pas pratique à utiliser dans ce contexte car :

  • La synchronisation fonctionne mal. Parfois les mails sont supprimés du serveur après suppression de la tablette, parfois non. Les mails reçus sur la tablette n'en sont pas automatiquement supprimés après lecture sous Thunderbird et vidage du serveur.
  • Il n'existe aucun moyen pour vider la corbeille en une seule fois. Tous les mails qui y sont placés doivent être effacés manuellement.

Un peu lassé de tester une à une toutes les combinaisons des différentes options de synchronisation, j'ai fini par chercher sur le net et par découvrir que je n'étais vraiment pas le seul dans cette situation et que personne n'avait de solution à proposer.
J'ai donc abandonné l'appli standard et installé Aquamail. Depuis, tous mes problèmes sont résolus :

  • La corbeille peut être vidée d'un seul coup.
  • Les mails supprimés de la tablette sont bien effacés du serveur.
  • Lorsque Thunderbird efface les mails du serveur après téléchargement, l'appli se synchronise bien et ses boîtes de réception sont automatiquement nettoyées.

Pour ceux que ça intéresse, une très bonne FAQ est disponible ici.

samedi 1 mars 2014

OVH Problème d'accents lors du passage d'un hébergement 90 Plan à Perso 2014

Il y a quelques jours j'ai rencontré un problème de disparition de certains caractères accentués du site d'un de mes clients lors d'un changement d'hébergement chez OVH.

Ce site était hébergé depuis une dizaine d'années sur une ancienne offre 90 Plan et je devais le transférer vers la nouvelle offre Perso 2014.

L'encodage des caractères utilisé était ISO-8859-1 et l'affichage du contenu du site faisait appel à la fonction Php htmlspecialchars.
La version de Php utilisée sur l'ancienne offre d'hébergement était PHP 4 alors que sur les mutualisés 2014, la version par défaut est actuellement PHP 5.4.

Avec PHP 4, la valeur par défaut du paramètre facultatif encoding de htmlspecialchars est ISO-8859-1 alors qu'avec PHP 5.4 cette valeur est UTF-8.

La solution la plus simple et la plus rapide pour retrouver mes caractères accentués a été de revenir à la version 5.3 de Php en plaçant à la racine du site le fichier .ovhconfig suivant :

app.engine=php
app.engine.version=5.3
http.firewall=none
environment=production

Remarque : Un autre problème courant pouvant survenir lors du passage de PHP 4 à PHP 5 est lié aux modifications de la directive Register_globals. Voir ici.