jeudi 24 avril 2008

Google analytics...

Depuis hier soir, l'extension Joomla 'Google analytics tracking module' est activée et permet de pister les habitudes des internautes de notre site.
L'outil PhpMyVisites de Free, déjà mis en place, fournit des résultats comparables. Pourquoi donc avoir activé un second système de statistiques?

Réponse:
L'outil PhpMyVisites de Free ne collecte les informations que pour un site hébergé chez Free (évidemment).
Si un jour le site est hébergé ailleurs sur le Net alors cet outil sera indisponible. Les données collectées seront perdues. (il est toujours possible d'exporter les données mais il faut les réimporter dans un autre système et c'est pas gagné d'avance)
'Google analytics' est un outil généraliste mais néanmoins complet. Il suffit d'insérer dans les pages HTML du site, un petit script Javascript. L'extension joomla s'en charge fort bien. L'inscription et l'utilisation sont gratuites.
La qualité des rapports est (aujourd'hui) bien meilleure que PhpMyVisites et fait la part belle aux nouvelles technologies Ajax chères au Web 2.0. Convivialité exemplaire. Le tableau de bord est paramétrable. Google met la barre très haut.

Dans quelques mois, on désactivera un des deux systèmes mis en place.
La sélection darwinienne existe aussi en informatique.

vendredi 18 avril 2008

L'art de se faire Google-iser

J'ai pris l'habitude d'utiliser le moteur de recherche Google pour quasiment toutes mes recherches sur Internet. Le navigateur Firefox dispose même d'une zone de recherche qui pointe évidemment sur Google. CTRL+K quand tu nous tiens.
Il est alors évident que le site doit être correctement référencé sur les moteurs de recherche. Je me suis donc focalisé sur Google, moteur le plus populaire en France, et connu mondialement. Leader mondial même si la concurrence existe.

La dernière visite des googlebots date du 11 avril, soit quelques jours après la mise en exploitation du site le 2 avril 2008. La précédente visite datait du 3 mars 2008. Le site n'était jusqu'alors que peu mis à jour. Google ne passait donc pas souvent. D'où viennent ces informations? De Google même qui met gracieusement un portail web https://www.google.com/webmasters/tools/ pour aider le référencement.
Ainsi on peut détecter les anomalies, aider les moteurs d'indexations avec un bon fichier 'robots.txt', et gérer un fichier Sitemap (généré par l'excellente extension Joomla xmap), etc...

On peut également connaitre ce que Google sait de votre site. C'est pas un mal. Un peu de transparence dans cet univers virtuel.

Le référencement d'un site est surtout affaire d'expérience. Des sociétés se sont spécialisées dans ce business... On se contentera dans un premier temps de corriger les manques et anomalies pour aider les googlebots. Opérations en cours...

jeudi 17 avril 2008

Captcha: des nouvelles...

Assez tôt dans la conception du site, j'avais évalué l'emploi des captcha. La jeunesse de 'Joomla 1.5' ne facilite pas les recherches sur le sujet car les solutions packagées sont rares. J'en ai trouvé deux.

  • BigoCaptcha
    Cette solution qui nous vient du Brésil est la plus pertinente en théorie. Le captcha généré est lisible. La solution privilégiée dès le départ mais, mais,...
    BigoCaptcha ne fonctionne pas du tout chez le fai FREE.
    Sur un forum, une discussion a eu cours entre le développeur de bigocaptcha Matheus Mendes et un utilisateur d'un site hébergé chez Free (sans le mentionner, on le devine). La version édulcorée de Php5 et l'emploi du SAFE_MODE=ON de php ne permettent pas une utilisation de l'extension actuelle de bigocaptcha . Dommage.
    discussion: http://forum.joomla.org/viewtopic.php?f=46&t=234509&st=0&sk=t&sd=a&sid=4051301df77c1dfda4f33bbd0b945f4d&start=90

  • OSTWigits-Captcha
    disponible sur: http://www.ostlabs.com/our-software/joomla-wigits/captcha/
    L'utilisation de ce plugin nécessite la modification de codes PHP d'autres composants Joomla. Mieux vaut connaitre la programmation PHP, le HTML et savoir se débrouiller.
    Les essais avec le formulaire email fonctionnent parfaitement. Les captcha générés sont parfois (souvent) difficiles à lire. Mais cette solution fonctionne parfaitement sur FREE. Ouf!
J'ai donc adopté temporairement OSTWigits-Captcha pour la gestion des contacts.
Dorénavant, le visiteur peut émettre un courriel directement du site Tendoryu.
Les menaces de mail-bots (générateurs de SPAM) sont écartées. Il m'est difficile de décrypter visuellement les captcha. Je doute qu'un robot puisse le faire.
Quoique, ne sous-estimons pas l'intelligence de l'homme pour inventer des solutions de contournement. L'homme aime les défis.
Nul besoin que l'ordinateur du visiteur soit paramétré pour communiquer par email avec les membres du site 'tendoryu'.
La technique s'efface. L'ergonomie du site en est que meilleure.

Externalisation de la sauvegarde

Suite du précédent post, quelques jours plus tard.

L'externalisation du fichier d'archive est opérationnelle. Le fichier TAR est ainsi copié sur un compte Gmail à partir du PC Linux de la maison. J'ai opté pour l'emploi de l'outil GMAILFS disponible sur toute plateforme Linux. Le transfert du fichier est assez lent mais c'est prévisible. L'ADSL à la maison n'est par particulièrement rapide. 70ko/s en upload seulement. (3600 mètres du DSLAM).
Afin d'éviter d'éventuels courroux de Google sur l'emploi de leurs messagerie, j'ai créé un compte dédié à la sauvegarde. Si Google ferme le compte mail pour non-respect des clauses d'utilisation, je ne perdrai pas un compte utilisé par mes contacts. un moindre mal.
La disposition de 6go d'espace disque par Google, est largement suffisante pour conserver environ 90 versions du fichier TAR.
J'externalise uniquement les archives qui ont eu une signature fichier différente (emploi du programme md5sum) . En résumé, j'externalise seulement s'il y a eu ajout, suppression ou modification d'un ou de plusieurs fichiers sur le site, dans la journée.
Comme les fichiers qui composent le site sont identiques d'un jour à l'autre, la plupart du temps, on ne surcharge inutilement notre capacité d'externalisation chez Google.

A la fin du processus journalier, on génère un email comme celui-çi:

De: xxxx@monfai.fr
A: xxxx@monfai.fr
Objet: Tendoryu:aiki.tendo:2008-04-17--03:00:01:backup-files:log

Bonjour,


lftp log:
Suppression de l'ancien fichier `administrator/components/com_contact/contact_items.xml'
Émission du fichier `administrator/components/com_contact/contact_items.xml'
Suppression de l'ancien fichier `components/com_contact/contact.php'
Émission du fichier `components/com_contact/contact.php'
Suppression de l'ancien fichier `components/com_contact/controller.php'
Émission du fichier `components/com_contact/controller.php'
Émission du fichier `plugins/system/captcha.php'
Émission du fichier `plugins/system/captcha.xml'
Création du répertoire `plugins/system/freecap'
...
...
Émission du fichier `plugins/system/freecap/.ht_freecap_font1.gdf'
Émission du fichier `plugins/system/freecap/.ht_freecap_font2.gdf'
Émission du fichier `plugins/system/freecap/.ht_freecap_font3.gdf'
Émission du fichier `plugins/system/freecap/.ht_freecap_font4.gdf'
Émission du fichier `plugins/system/freecap/.ht_freecap_font5.gdf'
Émission du fichier `plugins/system/freecap/.ht_freecap_im1.jpg'
Émission du fichier `plugins/system/freecap/.ht_freecap_im2.jpg'
Émission du fichier `plugins/system/freecap/.ht_freecap_im3.jpg'
Émission du fichier `plugins/system/freecap/.ht_freecap_im4.jpg'
Émission du fichier `plugins/system/freecap/.ht_freecap_im5.jpg'
Émission du fichier `plugins/system/freecap/.ht_freecap_words'
Émission du fichier `plugins/system/freecap/COPYING.txt'
Émission du fichier `plugins/system/freecap/freecap.php'
Émission du fichier `plugins/system/freecap/freecap_wrap.php'
Création du répertoire `tmp/install_48063230ee1b4'
Création du répertoire `tmp/install_48063230ee1b4/plugins'
Création du répertoire `tmp/install_48063230ee1b4/plugins/system'
Création du répertoire `tmp/install_48063230ee1b4/plugins/system/freecap'
lftp log:

Fichier aiki.tendoryu.20080417-030001.tar.gz 65671896 octets.

Le fichier est a externaliser!
Timestamp : 2008-04-17--03:24:48
cp aiki.tendoryu.20080417-030001.tar.gz gspace/ en cours...
rc=0

-rw-r--r-- 1 ehamon ehamon 65671896 2008-04-17 03:24 aiki.tendoryu.20080417-030001.tar.gz

Timestamp : 2008-04-17--04:17:24

Cordialement
Les ajouts/suppressions/modifications sur le site sont détectés, ainsi que les actions suspectes (ou légitimes heureusement). Big brother n'est pas loin. Everything is under control.

Les informations sont suffisantes pour une exploitation souple et efficace, sans douleur.
Bref, du temps est libéré à se consacrer à d'autres activités autrement plus intéressantes.

dimanche 13 avril 2008

Sauvegarde des fichiers du site

Le répertoire 'Joomla' du site 'Tendoryu' contient le programme Joomla, ses extensions, les extensions tierces, les images et les quelques fichiers multimedia.

Aujourd'hui cela se traduit par les quelques chiffres suivants:
  • 1375 répertoires
  • 7894 fichiers
  • 110 168 175 octets, 105 mega-octets.

Dans un précédent post, la sauvegarde de la base de données avait été abordée. Voyons un peu comment est organisée celle pour les fichiers.

Le fai FREE fournit un seul moyen d'accéder au système de fichiers de notre
site. On y accède par le protocole FTP.
A l'usage, l'accès est difficile car FREE limite à deux accès simultanés et les débits sont très limités: 20Ko/s en moyenne. Le timeout (temps d'inactivité de la session à partir duquel le système vous déconnecte) est de quelques secondes seulement. Malgré ces inconvénients on peut batir un système de sauvegarde assez efficace.

La sauvegarde est réalisée avec un script-shell en Bash, et lancée quotidiennement à 03h00am par l'ordonnanceur des taches cron. Le script lance principalement un appel à la commande lftp qui permet la synchronisation de deux répertoires: un en local (le PC) à partir de l'autre sur le site d'hébergement de Free.

A la première synchronisation, le répertoire '/tendoryu' de chez Free est copié intégralement en local.
L'opération est longue. 1h30.

Par la suite, seuls les fichiers et répertoires créés ou plus récents que ceux du site en local, sont recopiés du site de Free en local.
L'opération de synchronisation ne dure alors plus que d'environ 25 minutes. Ce temps est passé principalement à balayer les fichiers et répertoires fort nombreux du site.

A l'issu de la synchronisation, on 'zippe' le répertoire en local avec la commande tar. Le fichier est horodaté et conservé un certain temps. Le fichier TAR compressé occupe 65 mo actuellement.

La rétention du fichier archivée n'est pas encore fixée. On constate que la signature numérique des archives d'un jour sur l'autre est la même quand aucune action de mise à jour du site a été faite. Il est alors inutile de conserver des archives identiques en local. Le script-shell est donc en cours de finalisation pour prendre en compte ce genre de détails. Il n'est pas rare que le site ne soit pas modifié pour quelques jours consécutifs.

La réflexion sur l'externalisation du fichier 'archive' est en cours. Actuellement, la copie manuelle sur clef USB ne me satisfait pas beaucoup. L'automatisation totale est l'objectif.

Pour finir, le script envoie un courrier électronique au gestionnaire pour l'informer des résultats des différents processus passés.

mardi 8 avril 2008

L'audience du site

Comment savoir qu'un site est visité?
Quel est la fréquence des visites? A quelle heure? Reviennent-ils nous visiter?
Qui visite le site? D'où viennent-t-ils?
Que recherche les visiteurs? les vidéos, images,...

Voilà quelques questions, que tout créateur d'un site web aimerait savoir répondre.
Cela permet de 'corriger le tir' et adapter le site pour répondre aux mieux aux attentes des visiteurs. Au mieux infléchir l'éditorial.

Trois outils ont été mis en place dernièrement.

Chaque visite d'une page génère quelques lignes d'information dans un fichier 'journal' du serveur web Apache de notre FAI.
"You are not alone! Big brother is watching you!". Gloups...

Le fai FREE met à disposition deux outils pratiques pour traiter ces journaux.

  • Webalizer
    Cet outil est accessible depuis "l'interface de gestion de compte" de Free et est proposé par défaut, sans modifier votre site web. Les résultats sont complets mais 'basiques'. Les chiffres sont présentés, le plus souvent, sous forme de tableaux. Quelques graphiques existent mais très peu.
    Les résultats de Webalizer sont austères au vue de ses concurrents. Par contre, webalizer n'interfère pas avec votre site. La charge cpu et réseau et disque de Webalizer sont donc nulles pour votre site. C'est votre fai, à partir d'un autre serveur, qui exploite les journaux 'log' Apache de tous ses sites hébergés. Les statistiques sont reconstruites quotiennement pour les jours antérieurs.

  • PhpMyVisites
    Depuis peu de temps, Free propose l'utilisation de ce formidable outil en beta-test. Il suffit de l'activer dans votre 'interface de gestion de comptes Free' et de modifier votre site pour insérer un bout de code programme sur chaque page de votre site. Ainsi, à chaque visite d'une page, le script javascript accède au site http://st.free.fr . Ce site 'collecteur' de Free note alors consciensement diverses informations du visiteur: la date de connexion, son adresse ip, le type de navigateur (firefox, explorer, safari,...), la taille de votre écran, etc...
    Cela alourdit donc légèrement la charge de travail des serveurs de Free et ralentit un peu le surf du visiteur. Mais bon, c'est pour la bonne cause.
    Il n'était pas envisageable de modifier Joomla pour activer la fonctionnalité PhpMyVisites de Free. Il fallait donc trouver une extension Joomla. Bingo. La société 'Alter systems' a réalisé et mis à disposition un composant Joomla pour PhpMyVisites. Je l'ai donc téléchargé, dézippé et modifé avec un éditeur les deux fichiers de type 'texte' pour tenir compte des particularités du fai Free. Après avoir re-zippé le composant, il suffisait simplement d'installer le composant sur le site 'tendoryu', d'activer le composant et voilà. C'est fait, rien d'autre à réaliser. Le composant est débrayable par l'interface de gestion intégré de Joomla, si besoin. Le petit logo de Free est visible en bas de la page dans votre navigateur. (prix à payer pour l'emploi de cet outil)
    La solution de PhpMyVisites de Free est excellente. Les statistiques sont recalculées chaque matin pour les jours antérieurs. On n'a donc pas de statistiques en temps réel. Ce n'est pas le but de PhpMyVisites, d'ailleurs. A moins de regénérer les stats plus fréquemment mais le site 'tendoryu' n'est pas hébergé sur du matériel dédié. Il est hébergé chez FREE et on doit se plier aux contraintes de ce fai. (merci à Free encore).

  • JoomlaWatch
    JoomlaWatch est une fantastique extension/composant Joomla. Il complète les deux outils précedents.
    Le mieux est de visiter le site des concepteurs. Quelques "copies d'écran" sont plus explicites que mes commentaires. JoomlaWatch permet de tracer 'en direct' les connexions sur votre site. Il est inutile d'attendre les statistiques journalières de Webalizer ou de PhpMyVisites. De plus, il permet de 'bannir' une adresse ip d'un visiteur indélicat (bots la plupart du temps). Cet outil est précieux pour l'exploitant du site web mais a aussi son revers. Les informations des connexions sont stockées dans la base mySql pendant les dix derniers jours. Cela peut devenir très très vite volumineux, surtout quand les visites sont nombreuses. Ainsi le fichier dump de la base mySql est passé d'une taille de 60ko à plus de 700ko en 3 jours, avec très peu de connexions. Ce dernier point n'est pas encore alarmant pour l'externalisation des sauvegardes, mais cet indicateur reste à surveiller.
On ne dispose pas encore d'assez de recul pour exploiter les statistiques du site 'tendoryu'. Les outils sont en place depuis deux jours seulement. Ne reste plus qu'à attendre... vos visites bien sûr. ;-)

vendredi 4 avril 2008

La sauvegarde de la base de données mySql hébergée chez Free

Il est toujours vital de sauvegarder les données d'une base de données mysql comme celle du site 'Tendoryu'. Les sauvegardes permettent de restaurer totalement (ou en partie) les données perdues.
Chaque article, la configuration du site, les journaux font l'objet, chacun d'un enregistrement dans la base. Perdre la base, c'est perdre le travail de tous les contributeurs du site.

Evènements possibles:
  • Le fai Free peut suspendre l'accès au site pur une raison ou une autre. (sécurité)
  • Crash serveur(s) de Free.
  • Incohérence dans le contenu de la base.
  • Une migration de données mal engagée. (Joomla évolue)
  • Une extension a mis le 'bordel'.
  • Altération malveillante des données par un hacker ou autre
  • ...
On voudrait également pouvoir 'cloner' simplement le site sur une clé usb pour des démonstrations. Etc...

Comme Free ne permet pas l'accès distant à leurs serveurs mySql avec une interface de programmation ( API), on contourne le manque de liberté en biaisant le système presque officiellement. ;-)
Pour se faire, je me suis inspiré de l'excellent script de Olivier BERGER (blob).

Au script, j'ai ajouté l'envoi du fichier 'dump' compressé en pièce jointe d'un courrier electronique à destination d'un compte Gmail dédié aux sauvegardes tendoryu.
Sur ce compte, j'ai créé un filtre de messages.
Si le message reçu provient de 'mon-adresse@monfai' et le sujet débute par 'MySql-backup:OK:' et qu'une pièce jointe est présente alors j'archive directement le message dans un dossier dédié aux backups.
Sinon, par défaut, si le fichier dump a été mal-généré ou pas du tout, alors j'envoie un courrier électronique avec pour sujet 'MySql-backup:KO:'. Je le laisse dans la "boite de réception" Gmail.

Le corps du message contient le fichier 'curl.headers'.
Voici un exemple.
HTTP/1.1 200 OK
Date: Fri, 04 Apr 2008 09:38:42 GMT
Server: Apache/1.3.39 (Unix)
Pragma: public
Expires: 0
Cache-Control: must-revalidate, post-check=0, pre-check=0
Cache-Control: private
Content-Disposition: attachment; filename="aiki_tendo-2008-04
-04-10-38-42.gz";
Content-Transfer-Encoding: binary
Content-Length: 54691
Connection: close
Content-Type: application/x-gzip
Je conserve les dix derniers fichiers dump sur le poste initiateur de la sauvegarde. (je vous laisse deviner où c'est. Bon, j'entends une mouche voler. La réponse: sur mon poste linux, à la maison). Les fichiers sont horodatés.
Le script est exécuté automatiquement par le cron à 06h00 tous les jours.
Pourquoi 06h00? Ben c'est juste avant mon réveil (raison principale mais il y en a d'autres). Je consulte normalement mes emails avant de partir au travail. Voilà, voilà.

Je ne gère pas de période de rétention pour les backups sur le compte Gmail. C'est parfaitement inutile. Un compte Gmail peut stocker pas loin de 6go actuellement. A raison de 80ko par sauvegarde, le compte ne sera saturé avant environ 215 ans... Oups. No comment. Merci Google.

On pourrait également fiabiliser l'externalisation des sauvegardes avec le même principe en créant d'autres comptes courriels. Au hasard, chez Yahoo. Chez eux, la capacité de stockage des emails est illimité. No comment. Un grand merci (virtuel) à Yahoo également.
Il suffirait de modifier une ligne du script:
cat curl.headers | mutt -a backup_mysql_$filename \
-s "MySql-backup:OK:${taille}ko:${filename}" mon-compte@gmail.com
par
cat curl.headers | mutt -a backup_mysql_$filename \
-s "MySql-backup:OK:${taille}ko:${filename}" mon-compte@gmail.com,mon-compte-secours@yahoo.fr
Que c'est facile, l'externalisation de données pour un particulier, n'est-ce pas? Et c'est gratuit.

On pourrait également chiffrer les fichiers dump. Inutile pour l'instant. Laissons à la NSA le soin d'analyser nos courriels correctement avec facilité. Hugh.

jeudi 3 avril 2008

Pourquoi n'avoir pas autorisé les inscriptions des visiteurs sur le site?

Permettre à un visiteur de s'enregistrer sur le site ajoute de l'interactivité. Le visiteur devient acteur. Il peut laisser des commentaires, proposer des liens internet, écrire des articles. Mais, cet univers idyllique est menacé par:
Ces menaces demandent une vigilance de tous les instants du responsable du site. Les commentaires désobligeants ou déplacés demandent souvent la mise en place d'un système de modération sur le site. Cela accroit la charge de travail pour faire vivre le site internet. Un oubli ou un manque de vigilance et le site peut être bloqué par le FAI. Le site devient alors injoignable. Il peut être débloqué après avoir pallier aux remarques pertinentes et sans appel (mais justifiées) des administrateurs systèmes (de chez Free ici).

Un commentaire mal-venu est susceptible de vous voir notifier, par huissier de justice, de votre présence au tribunal. Argh... (cas le plus extrême)
Le propriétaire d'un site web est donc juridiquement responsable! Sans précaution élémentaire, personne n'endosserai la responsabilité d'un site. Et pourtant, il n'y a jamais eu autant de sites web qu'actuellement. Abusus non tollit usum (*L'abus n'exclut pas l'usage)

Souvent, les composants logiciels qui permettent la saisie d'information sur un formulaire internet, sont les voies naturelles pour hacker le site. Fermer les portes, et vous améliorez, un peu, la sécurité.

'Joomla! 1.5' ne dispose pas encore d'un système performant et natif pour se prémunir des 'spambots'. Le système tierce captcha testé 'bigocaptcha' ne fonctionne pas dans sa version actuelle dans l'environnement PHP du fai Free. (fonctionne parfaitement en mode local). J'ai donc différé tout type de fonctionnalités sympathiques qui emploient des formulaires web. Dommage, mais c'est comme çà.

Dans un premier temps, le site 'tendoryu' restera donc une vitrine où le visiteur ne pourra pas intervenir directement sur le contenu éditorial. Il devra joindre par courriel (ou autre moyen) un rédacteur éditorial du site pour soumettre ses remarques.
Le cercle de personnes de confiance s'agrandira lentement mais restera très limité dans un premier temps. Un système de captcha efficace et fonctionnel est la clé indispensable pour débloquer toute évolution majeure.

Description de mon environnement de travail Joomla

L'utilisateur avancé, inscrit sur le site Tendoryu, n'a guère besoin d'outils spécialisés pour gérer ses activités. La remarque est également valable pour les plateformes logicielles modernes comme: dotclear, wordpress, drupal, spip,... Je ne vais pas tous les citer, ils sont bien trop nombreux. On migre doucement mais surement vers le tout internet.

Deux composants principaux:
  • Le navigateur
  • un outil de transfert de fichiers
Le navigateur:
  • Firefox: Mon préféré! J'utilise Firefox pour ses extensions, la gestion 'multi-tab', son portage sur différents systèmes. Opensource.
  • Internet Explorer: de Microsoft n'existe que pour Windows et est installé par défaut. C'est son seul intérêt. Voilà, c'est dit. (un 'portage' existe sous linux avec wine: ies4linux pour tester la compatibilité des pages html dans ce navigateur)
  • Opera: excellente alternative à Firefox. Pas encore testé dans les versions récentes. multi-plateforme également. closed-source. un critère qui me fait pencher pour firefox.
  • Safari: pour les MacUsers. Pas de mac à la maison. Trop cher! (pour l'instant). Un portage existe sous Windows. (je n'utilise plus Windows couramment)
  • Lynx / Elinks: pas encore testé avec le site. Je manquerai pas d'y revenir. Le mode full-text n'est pas mort!
  • Konqueror: je l'utilise très peu malgré que mon poste est sous kubuntu.
Logiciel pour les transferts de fichiers via ftp:

  • filezilla : opensource, gratuit. multi-platfeforme. Bon, mais je ne l'utilise pas car je travaille sous Linux. Sur Windows, c'est un excellent choix.
  • en ligne de commande (shell) : intéressant pour dépanner. Chez Free, le 'timeout' de la session inactive est vraiment, vraiment très court: une dizaine de secondes. Il faut pas chômer sinon, on est 'jeté' par free. Difficile pour maintenir un site basé sur Joomla.
  • FireFtp est une extension Firefox. Excellent choix. multi-plateforme car les extensions de Firefox le sont par conception.
  • Krusader : mon préféré et de très loin. A lui seul, il mérite son installation sur toute plateforme linux. Clone de TotalCommander sur Linux.
  • TotalCommander : le meilleur gestionnaire de fichiers sous Windows imho. Indispensable sur cette plateforme. Payant mais son achat est justifié.
Voilà. En résumé, ma plateforme se résume au binome Firefox/Krusader sous système linux.
Avec Windows, le couple Firefox/TotalCommander s'impose.

JOUR J. Lancement du nouveau site Tendoryu.

Mercredi 2 avril 2008 à 22H00 (heure à Paris donc GMT+2), le nouveau site est visible en lieu et place de l'ancien.
A la racine du site, j'ai créé un fichier '.htaccess' avec pour contenu une unique ligne:
Redirect seeother index.html http://aiki.tendo.free.fr/tendoryu

Le fichier '/index.html' a été renommé en '/index-old.html'.

Grâce à l'interface d'administration Joomla du site, j'ai créé, en 20 secondes, une entrée dans le menu de gauche pour offrir la possibilité d'atteindre l'ancienne page d'index.

Et voilà. Une nouvelle ère commence.

Encore une fois, la tâche la plus longue a été l'élaboration de l'article 'Flash' pour annoncer la nouvelle sur le site.

mercredi 2 avril 2008

Hébergement des vidéos

<troll>
L'accès haut-débit s'est démocratisé. Les internautes ne se contentent plus de lire. Ils veulent des images et nec-ultra des vidéos. Bientôt de la HD (Haute Definition) et la saturation de la bande passante qui l'accompagne...
</troll>

L'aïkido est un sport (mot réducteur) basé sur des mouvements souples, amples, fluides. Il faut bien observer pour apprécier les détails, à leur juste valeur. Faire partager ces détails, n'est pas simple.
Les photos
Les photos ne sont que des clichés, des instantanés. On perd beaucoup d'informations sur une prise d'aïkido mais une bonne photo reste une valeur sûre, j'en conviens.
N'étant pas très doué en photographie, j'ai donc essayé la vidéo.

La vidéo
Et là, on fait face rapidement à de fortes contraintes techniques.
  • une video pèse lourd. Quelques dizaines de mega-octets pour une vidéo de petit format, en basse qualité.
  • une video HD est hors de portée de téléchargement hors abonnement ADSL.
  • La place disque disponible sur le site est de facto limité par l'hébergeur FAI. 10 Go sur Free, c'est bien mais que restera-t-il après plusieurs années en compilant quelques videos par mois?
  • Le temps de montage des vidéos est conséquent. Quatre fois le temps de tournage en moyenne (mais je suis lent, c'est vrai. On ne rigole pas).
  • Le site 'Tendoryu' ne se résume pas à ses vidéos.
J'ai donc opté pour un hébergement extérieur à Free. Youtube.com est un bon candidat. Je disposais déjà d'un compte chez eux. Et c'est parti.

Avantages de sites spécialistes videos comme youtube ou dailymotion:
  • On peut 'uploader' un nombre illimité de vidéos.
  • les utilisateurs peuvent laisser des commentaires. (bons ou mauvais)
  • Statistiques: Nombre de visualisation de la video
  • Références extérieures possibles.
  • Classement hiérarchique de la vidéo. sport/aïkido par exemple
  • Possibilité de laisser des mots clefs pour une recherche de vidéos sur le site.
  • ...
Joomla permet la visualisation des vidéos à l'aide d'extensions. J'ai retenu 'denvideo' d'une équipe de développeurs d'Argentine. Bravo à eux. Il suffit de mettre une balise dans l'article comme:
{denvideo URL largeur hauteur}
Ca se passe de commentaire. C'est hyper-simple d'emploi. Bluffant.

La bande passante sur les serveurs de Free est préservée. Les videos sont accessibles et indépendantes de la vie du site 'TendoRyu' hébergé chez Free. Ce découplage est salutaire.
Tout le monde est content. L'internaute en premier. En visitant Youtube (site connu mondialement) il pourra rebondir sur http://aiki.tendo.free.fr/tendoryu C'est notre objectif après tout.

Synchronisation des environnements

Il est très facile de cloner un environnement Joomla, composé de deux parties:
  1. Les fichiers de l'applicatif et vos fichiers peuvent être copiés via votre 'gestionnaire de fichiers' habituel ou via un client FTP (comme filezilla) si votre site est distant chez un hébergeur.
  2. la base de données mySql. L'interface de phpmyadmin est suffisante pour la sauvegarde dans un premier temps.
Par contre, on rencontre vite un problème quand on mixe des environnements Windows et Linux. Les caractères accentués comme éèàëêûüäâ passent mal lors de clonages/migrations. (codepages utf8, cp1252 pour les technophiles)

Un autre soucis très commun également vient des chemins absolus/relatifs des url stockés dans les articles de votre site.
Par exemple, quand vous insérez une image dans votre article, l'éditeur intégré à Joomla vous transformera le lien en absolu.
Exemple: 'http://aiki.tendo.free.fr/tendoryu/images/stories/mon-image.jpg'.
Ok, no problemo sauf quand on veut l'installer sur votre installation joomla 'uniform -server' de votre clef usb, hors connexion internet. Là on a besoin de remplacer 'aiki.tendo.free.fr' par 'localhost'.
Pour peu que le nom du répertoire d'installation de Joomla soit différent entre deux environnements, (répertoire: 'tendoryu' sur votre site et répertoire 'joomla1.5' sur votre site local de développement), vous allez devant des problèmes d'affichage de ces images.
Au mieux, votre navigateur internet va chercher les images sur le site référencé dans votre article. Par contre, il ne pourra rien faire si l'url est 'localhost' et que votre site est hébergé chez votre fai.

Bref, quelques soucis qui se soignent facilement à coup de quelques scripts sous linux.
Pourquoi Linux? Ben, c'est le système d'exploitation de mon PC à la maison. Le système de base pour 'bidouiller' librement. Le couteau suisse aux possibilités infinies. Je ne cherche pas à rester scotché sur un système compliqué, onéreux, qui demande un anti-virus pour aller sur internet, qui plante régulièrement, qui demande beaucoup d'efforts pour maintenir un service basique. Je suis passé aux génériques et çà marche.

Avec phpmyadmin, je réalise un 'export' de la base de données. Le fichier généré est ensuite 'retravaillé'.
Je détermine le codepage du fichier avec l'utilitaire utrac (installé à la main sur mon Kubuntu v7.10).
utrac -p mon-fichier.sql

Les fichiers sous windows ont le codepage: CP1252
Les fichiers sous linux: utf8

Puis, on transforme le fichier

Exemple: Windows vers Linux/(k)ubuntu

utrac -f CP1252 -t UTF8 < mon-fichier.sql | sed 's/\/joomla1.5\//\/tendoryu\//g' > mon-fichier-utf8.sql



J'ai profité de l'occasion pour chercher/remplacer une chaine de caractère par une autre.
On peut chainer (on dit aussi 'piper') les recherches/remplacements, autant que nécessaire.

Voilà, voilà. Ne reste plus qu'à 'dropper' les tables de la base mysql via phpmyadmin et de réimporter votre fichier 'transformé'.
Enfin, on visualise certains articles contenant des caractères accentués qui ne manquent pas dans la langue française. ;-)

Je ne rentre pas dans le détail des manipulations. Cela dépasse le cadre de ce blog (imho).

mardi 1 avril 2008

Le cycle d'intégration d'une extension Joomla

Le site Tendoryu n'est que la partie finale, visible sur internet.

Avant d'être incorporé sur le site, un composant Joomla doit passer par une série de phases:
  • Repérage du composant Joomla sur les sites dédiés à Joomla
  • Lecture des critiques sur le composant.
  • Butinage sur le site du créateur du composant.
  • Repérage de composants similaires (vive la concurrence)
  • Lecture approfondie du forum de discussion associé aux composants (concurrents aussi).
  • Téléchargement du composant
  • installation sur un environnement 'Joomla-uniform server' (sous Windows XP)
  • Paramétrage du composant. Prise en main. Montée en compétence.
  • Tests divers.
  • Installation du composant sur une plate-forme Joomla sous système linux/kubuntu avec une configuration personnelle apache/php/mysql . Tests intensifs. Intégration sur une maquette/clone 'Tendoryu'.
  • Installation du composant sur un environnement Joomla! chez l'hébergeur Free. Remarque: l'accès à l'environnement est restreint. (protégé par login/password). Inutile de me demander l'accès. Non mais, une fois...
  • Vérification du bon fonctionnement du composant avec le mode PHP édulcoré de chez Free.
  • Installation sur le site officiel 'aiki.tendo.free.fr'.
  • Recettage.

ouf.

Le choix de l'hébergeur

Historiquement, le site 'Tendoryu' était déjà hébergé chez 'FREE.FR'.
L'ancienne url est conservée. Jetez un coup d'oeil au passé. Nostalgie?

Il était alors préférable de conserver l'adresse du site. Les références du site 'aiki.tendo.free.fr' par nos amis surfeurs français, belges, allemands, incitent à ne pas générer le fameux syndrome 'erreur 404'.


FREE offre des commodités:
  • Une base mySql/postgresql
  • accès Ftp
  • Php4 et/ou Php5
  • 10 go d'espace disque
  • C'est gratuit (pour les personnes dont l'adresse postale est en France)

Difficile de faire mieux. Mais, mais... Ce n'est pas si rose. sic

1- Votre site est très étroitement surveillé par les administrateurs de chez Free.
Tant mieux, c'est leur métier. Mais pour peu que vos programmes ou logiciels permettent à des hackers ou pirates de s'immiscer dans votre site, et ensuite, de générer des courriels indésirables (spam) à votre insu, les admins suspendront illico l'accès à votre site.
On ne rigole pas avec la sécurité. Je vous recommanderai de lire les requêtes sur le forum 'news.free.fr'. Instructif.
A la lecture des expériences de responsables de sites hébergés chez Free, cela m'a amené à restreindre drastiquement l'accès au site 'Tendoryu'. J'en parlerai plus longuement dans un autre article. De facto, des failles potentielles sont moins nombreuses.
Le risque zéro n'existe pas. Il faut rester vigilant.
(remarque: Free limite à 2000 courriers electroniques par mois, par site, pour limiter le spam).

2- Par soucis de sécurité, Free met à disposition une version édulcorée de PHP5. Certaines fonctions PHP sont inexistantes dans la version PHP compilée par Free.
Résultat: des extensions pourtant bien écrites ne fonctionnent pas ou mal sur un hébergement chez Free. Ces mêmes extensions fonctionnent parfaitement sur 'uniform server' ou un environnement classique sur votre poste (linux?) ou un autre hébergeur. Ne négliger pas l'aspect des tests unitaires des extensions chez Free. Certains n'hésitent pas à écrire que le fai Free n'est pas joomla-friendly.
Je suis plus mesuré. C'est un peu facile de critiquer un fournisseur qui vous offre gracieusement un espace pour héberger votre site personnel et/ou associatif. Faut faire avec... huh

3- L'accès à la base mySql n'est possible que par des scripts PHP (ou Perl) hébergés sur votre site ou via l'interface phpmyadmin de chez Free. Impossible d'y accéder à distance (soucis de sécurité, encore une fois).

4- Pas d'ordonnanceur de type cron.

5- Pas de ssh/scp. empêchant tout développement de programmes distants pour l'administration du site. (scripts shell bash/perl/ruby, rsync)

6- Mutualisation des ressources chez Free. Les temps d'accès au site peuvent fluctuer selon la charge réseau. Indépendant de votre volonté.

Les points 3, 4,5 et 6 sont des commodités pour un site personnel. Mais bon, mes réflexes d'administrateur unix me font rappeler des environnements de travail informatique mijotés aux petits oignons. Argh le confort...

L'hébergement à l'extérieur de Free est toujours possible mais je n'ai pas réussi à trouver d'hébergeurs qui offrent un environnement comparable à Free pour zéro euro.

Des solutions à partir de 5€ TTC/mois existent. Je citerai

On en restera là pour l'instant. Mais rien n'est définitif. L'avenir nous dira s'il faut consolider le socle technique du site 'tendoryu'. Mais cela a un prix.

Le choix de Joomla!

Bref cahier des charges:
  • Permettre à plusieurs personnes la rédaction d'articles
  • Gestion type workflow (lecteur/rédacteur/correcteur/publication...)
  • Pas ou peu de codage dans un langage informatique.
  • Interface d'administration simple
  • Prise en main rapide
  • Déploiement rapide
  • Exploitation quotidienne simplifiée.
  • Possibilité de trouver un hébergeur facilement.
  • Composants opensource
  • 'Click and run'
  • Orientation multimedia (gestion galleries d'images, video,...)
  • Extensions par plugins (à la firefox)
  • Sortie de nouvelles versions majeures pas trop fréquentes. (On ne doit pas passer son temps à migrer son site)
  • ...
Première sélection: on s'oriente de suite vers un CMS.
On le choix. Zope/Plone, Spip, Drupal, Mambo, Joomla 1.x, Joomla 1.5, etc...


Choix atypiques

Zope/plone:
solution lourde, efficace mais hébergement problématique. Trouver un hébergeur offrant un environment python gratuit est, somme toute, assez rare.
La courbe d'apprentissage n'est pas négligeable. Zen attitude.
Bonne solution pour un hébergement dédié. Pas d'expérience sur les extensions multimedia.
Solution sans doute trop lourde pour une petite association, club sportif.

Solutions à base de PHP/mySql

L'hébergement est facile à trouver sur le Web.

Spip:
.J'avais testé la version 1.9. Pas trop emballé, connaissance HTML/CSS quasi-obligatoire. Quelques doutes sur la facilité de maintenance par un non-informaticien. Sortie des versions rapides, trop, pour le projet 'tendoryu'.

Mambo:
PHP/MySql également. L'ancêtre géniteur de Joomla. Logiciel propriétaire. Equivalent à joomla série 1.x.

Joomla 1.x:
Fork de mambo. pas ou peu de différences. Stable, réactif, extensions nombreuses.

Joomla 1.5:
Sortie le 22 janvier 2008. Produit très jeune mais stable dû à la longue gestation du produit.
Cassure nette avec la série Joomla 1.x.
L'architecture s'inspire du concept Modele/Vue/Controlleur.
Point très important (imho), comme ruby on RAILS, MVC est très bien adapté pour les développement de petits sites web.
Inconvénient de la version 1.5: beaucoup d'extensions deviennent incompatibles. Compatibilité ascendante des extensions plus ou moins assurée par le 'mode legacy', mais insuffisante.
La nouvelle version demande une ré-écriture des composants tierces qui seront plus robustes (avec MVC) à terme. En attendant, les fonctionnalités courantes sur les sites web ne sont pas encore disponibles .
Pas de gestion de version des articles en natif.
Pas de Captcha en natif! Etonnant mais bon.

Drupal:
La version 6 est sorti très peu de temps après 'Joomla 1.5'.
J'ai commencé à l'évaluer brièvement après que le site 'Tendoryu' soit presque terminé avec 'Joomla 1.5'.
Drupal est, sans doute, le concurrent le plus direct de Joomla.
L'administration est plus austère que Joomla.
Puissance cachée.
Gestion de versions des articles que n'a pas encore Joomla (en natif).
Pas encore assez 'click and run' comme Joomla.
On cherche trop pour réaliser des actions, somme toute, simples comme changement de la langue par défaut.
La nouvelle version Drupal souffre, pour un temps, de l'incompatibilité des extensions tierces. Mérite le détour. Laissons murir un peu. Quelques mois comme 'Joomla 1.5'.
Les versions se succèdent rapidement sur Drupal.


Conclusion:

'Joomla 1.5' semblait, au moment, des évaluations des produits disponibles, la solution la plus idoine. Le 23 janvier, la nouvelle version 1.5 était téléchargée et testée.
Produit encore jeune mais étonnamment stable et très facile à utiliser, 'Joomla 1.5', combiné avec certaines extensions tierces, étonnera plus d'un... Bluffant.

Uniform server pour Joomla!

Ou comment monter en 5 minutes une installation locale de 'Joomla! 1.5'

Le plus simple pour débuter avec Joomla! est de télécharger et d'installer sur une clef USB ou le disque dur de votre PC , un cocktail très réussi nommé 'Uniform server'.
Une version dédiée à Joomla est disponible ici.
(màj 30/07/2008: le précédent lien n'existe plus. Il faut donc recréer l'environnement uniformServer/Joomla. Un bon tutoriel (en anglais malheureusement) est cependant disponible .)

Il est souhaitable d'installer de suite les derniers correctifs Joomla 1.5.2 de suite.
Je recommande également de
  • Renommer le répertoire 'joomla -1.5' en 'joomla'.
  • Modifier le fichier 'udrive\www\joomla\index.php' pour tenir compte du point précédent.

Rem: on peut aussi renommer le répertoire avec un nom plus proche de votre projet.
Ici on a pris 'tendoryu'.

Familiarisez-vous avec les exemples.
Butinez sur joomlafrance.org et fouillez dans la liste des extensions disponibles.
Installez quelques uns et testez. Vous ne risquez rien.

Joomla est un écosystème très intéressant pour monter un CMS rapidement, sans codage (ou presque).

'Uniform-server' dispose d'une panoplie d'applications des plus utiles comme 'Phpmyadmin', 'phpMyBackupPro'.
L'agencement des applicatifs dans l'arborescence des fichiers est un modèle du genre.
Pour les apprentis 'webmaster' qui souhaitent installer leur propre serveur web, inspirez vous d'Uniform-server. Vous gagnerez du temps.