Categorie: Blog

De retour

Depuis un peu plus de 15 jours, le GuiGui's Show avait disparu des écrans. Je vais vous expliquer rapidement le pourquoi du comment, à titre d'information.

Flashback.

Nous sommes début novembre et le blog est encore inaccessible ... Ça devient une habitude. En effet, depuis quelques mois, ce blog est indisponible au moins une fois par mois. Cela a commencé en juillet, puis fin août, puis le 5 et le 6 septembre, puis le 6 octobre et quasiment une semaine en novembre. Et je ne parle ici que des indisponibilités totales dont j'ai la connaissance, ce qui exclu les indisponibilités de courte durée mais répétitives (= les visiteurs ont le droit à une page blanche pour la moitié de leurs requêtes) et les indisponibilités dont je n'ai pas eu connaissance.

Je songeais, depuis début septembre, à passer à un hébergement payant offrant plus de garanties. Mais, je pensais que rien ne pressais et j'ai donc laissé l'affaire traîner. Mais à partir du 14 novembre, mon compte a été suspendu pour un dépassement de la limite de la charge CPU ayant eu lieu plus de 1000 fois. Ce qui amène les questions suivantes : Quel événement a provoqué cette surcharge ? Pourquoi l'hébergeur ne m'a-t-il pas prévenu dés les premiers dépassements ?

Ces deux questions restent des mystères. Une attaque informatique aurait d'abord affectée la bande passante et semble improbablement. Seuls les comptes client payants ont accès aux logs donc je ne peux pas affiner mes recherches.

Une deuxième piste se profile cependant. Les CMS comme WordPress sont réputés gourmands par rapport à d'autres applications web dynamiques et les hébergeurs mutualisés n'ont pas été conçus pour ce genre d'applications mais s'y sont adaptés afin d'élargir leur clientèle. Il est donc possible que mon WordPress ait fait exploser la charge CPU. Mais là encore, cela ne correspond pas à la situation de ce blog : le nombre de visiteurs et de pages vues sont stables sur le dernier trimestre (août, septembre, octobre) et le CMS est toujours le même : je n'ai pas rajouté d'extensions ou autre, juste fait les mises à jour de WordPress ... WordPress est-il devenu soudainement plus chronophage ? Cela m'étonnerai car rien ne remonte à ce sujet sur Google. Ce dépassement de la limite de charge CPU reste donc suspect car, si l'environnement n'a pas changé, alors il aurait dû survenir plus tôt.

Au final, je suppose qu'il s'agit d'une manœuvre commerciale de l'hébergeur afin de faire souscrire à son offre payante un maximum de personnes ayant assez profité de l'offre gratuite. Je m'aperçois d'ailleurs que je n'ai plus accès à quoi que ce soit : ni phpmyadmin, ni FTP, entre autres. Le message d'erreur est clair : je doit passer à l'offre payante pour que mon compte soit remis en service avec les services associés. Sur le principe même je trouve cela lamentable. À partir de cet instant, l'offre payante pouvait être la plus attractive du monde que je l'aurais refusée : mes données n'ont pas à être retenues en otage dans l'attente d'un paiement. Attention : je fais bien la différence entre un hébergement payant où l'hébergeur suspend mon compte et supprime mes données car je n'ai pas payé le service à la date convenue et un hébergement gratuit où l'hébergeur maintient mes données en otage pour me faire passer à son offre payante. À ceux qui ne voient pas l'intérêt de faire des sauvegardes régulières de leurs données, j'espère vous avoir donné un exemple supplémentaire de ce que vous encourez. En ce qui me concerne, j'étais à jour dans mes sauvegardes donc pas de problèmes.

Je me met donc à la recherche d'un hébergeur mutualisé payant car je souhaite un sérieux et des garanties que les hébergeurs gratuits ne peuvent pas proposer (vous n'avez pas de contrats avec eux et vous n'êtes pas leur priorité, par exemple). Les étapes les plus difficiles sont clairement de fixer les critères de choix les plus importants à vos yeux (bande passante nécessaire, espace de stockage nécessaire, applicatifs nécessaires, ...), de comparer les nombreuses offres qui se ressemblent et de lire et de comprendre les conditions générales et particulières de vente (19 pages dans mon cas, vache !). Le reste, c'est de la technique et ça, on connaît ;).

Me voici donc parti de 000webhost, filiale (indirecte) de II Hosting Media pour Free-h, service d'Inulogic. Hébergement en France par un hébergeur français (non, il n'y a pas de redondance d'information dans cette phrase) d'où un temps de réponse très bon, sans engagement (liberté quand tu nous tiens), payable mensuellement, dans mes prix, une équipe visiblement compétente et passionnée, une offre claire sans limites bidons (pas d'option payante par-ci par-là, pas de limite bloquante (ex. : nombre de connexions simultanées aux bases de données, max "hits", ...) ici et là), du SSL presque partout (espace client, Plesk, phpmyadmin, ...) ... Pour l'instant, je n'ai que trois bémols à signaler : on utilise encore des applications propriétaires comme Plesk, le FTPS n'est pas proposé et l'hébergement est payable par allopass ce qui laisse une porte ouverte à une certaine clientèle à même de faire laguer les autres hébergements avec des applications non optimisées et des comportements suspects ;). Reste à voir la réaction du matos et de l'équipe de Free-h lorsque ce genre d'incident survient.

J'ai profité de la migration pour faire quelques optimisations qui n'étaient pas possibles sur l'ancien serveur comme activer la compression des contenus avant envoi au client ou avoir des permaliens plus clairs (date + titre du billet), par exemple.

J'ai également vérifié, un minimum, la sécurité : application à jour, htaccess "complet" (en fonction de mes connaissances en fait), prendre connaissance de mon nouvel environnement (configuration matérielle et logicielle du serveur, réseau ...), ...

Je profite de ce billet pour vous dire que le GuiGui's Show est désormais accessible intégralement via le protocole HTTPS. Oui, même les images. Pour ceux qui veulent laisser le choix entre HTTP et HTTPS à leurs visiteurs et qui galèrent avec les images et autres contenus : Enable Complete support for SSL on WordPress chez Pro Sauce. Bon d'accord, le certificat est celui de Free-h et pas le mien donc vous allez vous manger un message d'avertissement de votre navigateur. Mais 2011 a bien montré la limite des certificats X.509 (même si des mecs avaient déjà conceptualisé tout ça depuis bien longtemps). Bon d'accord, le certificat est signé par AlphaSSL qui est un prestataire low-cost qui me semble avoir la main très légère sur les vérifications d'identité. Bon d'accord, AlphaSSL appartient à GlobalSign, autorité de certification dont le ComodoHacker prétend avoir eu accès. Mais malgré tout, le GuiGui's Show est accessible en HTTPS :D.

Et pour ceux qui s'exclament "WTF ! il t'as fallu tout ce temps pour choisir un hébergeur et migrer un simple blog ?!" : oui 😀 . Ce blog n'est qu'un passe-temps, un lieu où je viens partager mes connaissances et mes découvertes. Ce n'est donc pas un blog professionnel, pas un blog qui génère des revenus et créer de l'activité. Donc, comme tout passe-temps, il a une priorité moins forte quand d'autres activités chronophages mais plus importantes entre en concurrence avec lui.

Voilà, ce billet touche à sa fin. Par contre, vous allez devoir attendre un peu avant de voir arriver de nouveaux billets techniques :).

Quelques changements sur le blog (bis)

Table des matières

Ces temps-ci, j'ai effectué quelques modifications sur le blog.

Mise à jour de billets

J'ai mis à jour quelques billets, afin, comme toujours, d'apporter un complément d'information ou une correction. Ce coup-ci, c'est les billets suivants ont été mis à jour :

Amélioration de la structure des billets

Qu'est ce que j'entends par "structure" ? Le titre du blog ("GuiGui's Show" dans mon cas) est mis entre des balises qui symbolisent un titre de premier niveau (h1) et le titre d'un billet est mis entre des balises qui symbolisent un titre de deuxième niveau. Il apparaît donc logique, pour les sous-parties d'un billet, de continuer avec un titre de troisième niveau, etc.

Cela permet de mieux faire ressortir la structure du document auprès des moteurs de recherche afin que ceux-ci le "comprennent" mieux et l'indexent mieux. Mais pas seulement : une meilleure structure aide les logiciels dédiés aux personnes ayant une déficience visuelle.

Or, la qualité de ce blog en la matière était inégale. Certains corps de billet commençaient avec un titre de premier niveau, d'autres avec un titre de deuxième niveau, etc. Bref, c'était la jungle.

J'ai donc harmonisé tout cela en accord avec ce que je viens de vous dire.

J'ai également modifié les feuilles de style afin de faire ressortir la structure des billets et ainsi améliorer la lisibilité des billets.

Validation W3C

J'ai profité de l'optimisation ci-dessus afin d'améliorer la validation W3C des pages de ce blog. En effet, certaines balises sont mal fermées par WordPress et d'autres erreurs sont purement dues à des actions humaines ;) . Mais cela est corrigé.

Les seules erreurs qui restent sont provoquées :

  • Par le JS que l’hébergeur incruste en bas de chaque page, en dehors de la balise html ...
  • L'attribut aria-required, qui indique si un champ de formulaire est obligatoire. Il fait partie du brouillon WAI-ARIA qui, comme je viens de le dire, est un brouillon et donc pas reconnu par le validateur.

J'ai fait cette optimisation dans le même but que la précédente : afin d'améliorer l’accessibilité et l'affichage de ce blog sur l'ensemble des navigateurs. Après, ce n'est pas encore la perfection (notamment au niveau du CSS) mais c'est moins urgent ... et puis, je ne suis pas le pire du web ;) .

Table des matières

Contrairement aux autres changements cités dans ce billet, la mise en place d'une table des matières au début de chaque billet, était une fonctionnalité prévue depuis quelque temps sur ma TODO list.

Désormais, une table des matières sera donc insérée au début de chaque billet pour lequel cela se justifie (longueur, complexité entre autres). Comme vous pouvez le constater, les anciens billets sont déjà passés à la moulinette.

Choix de l'extension

Pour réaliser une table des matière de manière automatique, j'utilise l'extension Table of Contents Generator. Une extension libre (GNU GPL), simple et légère (un fichier, 120 lignes de PHP, point). C'est la seule extension parmi celles que j'ai essayées (Hackadelic SEO Table Of Contents, Table of Contents Creator) qui me convient.

Hacker l'extension

Personnaliser le style de l'extension

Cette extension utilise la feuille de style de votre thème. Il est donc très facile de la personnaliser : il suffit de créer/modifier un style div#main div.post div.entry ul dans la feuille de style de votre thème et de lui affecter les propriétés voulues.

On peut même faire un style rien que pour les tables des matières : il suffit de créer un style dédié, div.post div.entry ul.toc par exemple. Ensuite, dans le code de l'extension, il suffit de modifier deux lignes de la fonction get_toc() : la 51e et la 67e. Exemple avec la ligne 67 :

$html .= "<ol><li>$link";

devient

$html .= "<ol class=\"toc\"><li>$link";

Même modification pour la ligne 51.

Utiliser une liste non ordonnée à la place d'une liste ordonnée :

Il suffit de modifier le code de l'extension et notamment celui de la fonction get_toc() et de remplacer les écritures de balise "ol" par des balises "ul". Cela se joue aux lignes : 51, 59, 67, 73. Exemple avec la ligne 51:

$html .= "<ol><li>$link";

devient

$html .= "<ul><li>$link";
Un bug bien ennuyeux

Parfois, il arrive que la table des matières présente un bug d'affichage. En effet, WordPress ajoute une balise "</p>" dés qu'il voit un retour à la ligne ("\n" ou "<br />"). Le problème, c'est que cette balise est parfois insérée n'importe où et provoque un bug d'affichage de la table des matières. Voir un exemple.

La solution à ce problème est dans l'énoncé : il suffit d'enlever les retours à la ligne : <br /> ou \n. Là encore, il suffit de modifier, dans le code de l'extension, le code de la fonction get_toc. Le caractère \n est présent aux lignes 36, 55, 64, 67 mais il n'est pas utile de modifier la ligne 36. Voici un exemple de la modification de la ligne 55 :

$html .= "</li>\n<li>$link";

devient

$html .= "</li><li>$link";

Pour les autres lignes, la modification est identique. Mais ça, vous l'aviez déjà compris.

De nouveaux billets sont en cours de rédaction, stay tuned ! (Tiens, je n'ai pas déjà dit ça ? ;) )

Quelques changements sur le blog

Ces derniers jours, j'ai effectué deux changements sur ce blog.

D'une part, j'ai changé légèrement son nom, le passant de "The GuiGui's Show" à "GuiGui's Show". J'ai effectué cette modification pour deux raisons. La première : The GuiGui's show n'est pas valable en anglais : on ne combine pas "the" et la possession ("'s"). La deuxième : car il s'agissait d'une coquille présente depuis le début. En effet, cela a toujours été "GuiGui's Show" depuis le début mais mal retranscrit lors de la création de ce blog.

D'autre part, j'ai décidé de mettre en valeur les morceaux de code et les lignes de commande (et leurs sorties) en utilisant l'extension WP-Syntax. Elle permet une coloration syntaxique du code, un respect de la mise en forme, etc. Cela est surtout appréciable lorsque l'on veut copier les morceaux de code (notamment le code assembleur) de ce blog : le code ne plante plus à la compilation suite à une mauvaise mise en forme par WordPress. Tous les billets de ce blog ont maintenant été passés à la moulinette.

De nouveaux billets sont en préparation, stay tuned :P.

Le grand retour

Table des matières

Les raisons d'une absence

Aujourd'hui sera marqué par mon retour sur le réseau mondial. Hé oui, j'avais un site avant ce blog, toujours sur le thème de l'informatique en général. Je l'ai fermé il y a bientôt 3 ans. Il ne manquera qu'à quelques visiteurs occasionnels. Je l'ai fermé car il ne me permettait pas de m'exprimer comme je le souhaitait : seul un blog me le permettrait. Mais il faillait tout recoder. Cela aurait dû être rapide mais le manque de temps et mon entêtement ont ralentit mon retour sur le web.

En effet, j'ai codé une première version en suivant l'architecture MVC et le modèle objet. Mais elle ne me satisfaisait pas. Mais ce fût une bonne expérience car l'objet en PHP est passionnant à étudier.

J'ai ensuite découvert Blogotext. Il s'agit d'un moteur de blog simpliste, efficace et qui n'utilise pas de bases de données. Dans un premier temps, j'ai reporté à Timo, le repreneur de Blogotext, quelques failles et leurs correction ainsi que des idées d'amélioration sous couvert d'un pseudonyme. Notamment :

  • un bug lors de l'installation dû à l'utilisation des tags PHP courts (<? ?>) non supportés sur tous les serveurs selon la configuration du php.ini
  • appel à une variable non définie dans le fichier lastcomm.php
  • non filtrage, avec htmlspecialchars par exemple, des champs du formulaire des commentaires lors d'un retour du formulaire si une erreur survenait
  • le système de sessions de l'administration était faillible à la fixation et au détournement
  • amélioration du système de déconnexion de l'administration pour une meilleure suppression de la session

J'avais aussi découvert la faille CSRF dans l'administration qui permettait la suppression d'un ou plusieurs billet(s) et/ou commentaire(s) mais quelqu'un a reporté cette faille avant moi.

Puis la license de Blogotext, Creative Commons BY-NC-ND me fit réviser mon choix. En effet, je ne pouvait pas modifier tout ce qui ne me plaisait pas comme par exemple le système de captcha que je jugeait vulnérable. C'est dans ce genre de situation que l'on comprend qu'il y a une nuance entre un logiciel open source et un logiciel libre. Dans le premier cas on n'a le code source mais pas forcement l'autorisation d'en faire ce qu'on en veut.

C'est environ dans cette période que j'ai décidé de partager mon blog avec Dodo, un ami, afin d'enrichir le contenu de ce blog : chacun de nous évoquera des thèmes complémentaires. Mais il faillait toujours choisir le moteur de blog ...

J'ai donc essayé Dotclear qui ne m'a pas convenu pour des raisons purement techniques cette fois-ci. Mais ma mémoire commence à flancher et je ne sais pas vous dire ce qui m'avais déplu.

Puis, j'ai essayé WordPress. Celui-ci ne m'a pas convaincu pour ces raisons :

  • les thèmes et notamment le thème par défaut, sont codés avec les pieds.
  • tout comme Dotclear, n'importe qui peut utiliser le pseudonyme de l'administrateur. J'adore les blagues mais pas trop non plus.
  • il est difficile a sécuriser, notamment avec des fichiers htaccess à cause d'un mauvais rangement des fichiers
  • le code est globalement sale : encore du PHP4 (bon ok va pour la compatibilité), des fonctions qui en appellent d'autres qui en appellent d'autres et j'en passe.
  • WordPress enregistre de très nombreux brouillons (automatique ou dû à la prévisualisation) pendant la saisie d'un article. Cela encombre inutilement la base de données. Il faut le voir pour le croire. Oui bien sûr je pourrais écrire mon billet dans un éditeur de texte sur ma machine et le copier/coller au dernier moment. Mais si je faisais ça, d'une part, je n'ai plus besoin de WordPress : j'accède à la base de données et j'y enregistre mon billet et d'autre part, je me priverai de la prévisualisation.

Malgré tout, j'ai décidé de le garder temporairement, le temps de coder notre propre moteur, taillé à nos besoins. Peut-être faudrait-il ressortir la version objet/MVC des cartons et l'améliorer ...

Les sujets évoqués sur ce blog

Il n'y aura pas vraiment de thématique globale sur ce blog. Bien évidemment, nous parlerons majoritairement d'informatique et de nouvelles technologies mais nous pourrions très bien dériver sur de l'économie, de la politique, le cinéma ou tout autre sujet. Bref : aucune porte n'est fermée.

Il n'y aura pas non plus de niveau bien que nous ne soyons pas les élites du monde high tech.

La liberté d'expression sera de rigueur. Les propos que nous tiendrons n'engageront que nous.

Le délai de parution des articles

Aucun délai n'est prévu : nous posterons quand nous aurons quelque chose à dire et c'est tout. Je préviens d'avance qu'il va y avoir beaucoup de billets dans les jours suivants, histoire de "rattraper le temps perdu". Ne soyez donc aps déçu de voir le rythme diminuer par la suite.

A propos du nom de domaine

Guiguishow.info en voila un nom bizarre ! D'ailleurs quand on le cherche sur google on trouve des sites ... bizarres.

Premièrement, ce nom symbolise une époque, celle où j'essayais d'ouvrir l'esprit des gens en leur montrant l'autre côté de la loi dite HADOPI, les dangers de la vidéo-surveillance et le pour et le contre de la loi LOPPSI 2, le tout d'une manière relativement virulente. Mes moments de parole ont donc été surnommés "guigui's show" sans que je sache vraiment pourquoi. En manque d'imagination lorsque j'ai réalisé la version objet de ce blog, j'ai pris ce mot comme nom pour ce blog.

Deuxièmement, je n'ai pas fais de recherches avant de louer ce nom de domaine et je n'avais donc pas eu connaissance que ce mot était déjà pas mal utilisé même par des sites proposant des webcam sexy. Mais j'en vois le bon côté : guigui's show ou comment se fondre dans la masse.

Quoiqu'il en soit, méfiez-vous des imitations.