Geekeries du front [fr]

[en] Spent a lot of time fixing various server and device annoyances. Thanks to everyone who helped me for one thing or another! Everything seems to be running fine now, except for MySQL on the web server which continues to choke pretty regularly. Lesson learned in all these adventures: sometimes a clean reinstall is a better strategy than lengthy troubleshooting.

Ouh là, il faut vraiment que j’écrive un article. Je crois qu’un article sur deux de mon blog commence comme ça, ces temps.

Le temps.

Arbre et mauvais temps

Je suis perdue dedans. Les journées filent les unes après les autres. Déjà mi-janvier. Déjà six semaines depuis mon retour d’Inde. L’absence de structure, ça ne me réussit pas. Alors je suis en train de restructurer, mais c’est long, c’est long.

Je n’ai pas chômé, pourtant. J’ai passé des heures et des heures devant des écrans de machines récalcitrantes: mon petit serveur lubuntu qui sert surtout à recevoir des sauvegardes Crashplan, le NAS, dont les volumes partagés doivent être visibles par au moins trois machines avec des OS différents (la machine lubuntu, mon MacBook Air, et l’Android TV), l’Android TV Box, justement, dont le Kodi refusait de jouer quoi que ce soit, et pour finir mon serveur web, qui plante toujours allègrement.

Qu’est-ce que j’ai appris?

La principale leçon, vraiment la plus importante, c’est que c’est souvent moins de travail de réinstaller ou faire une mise à jour que de troubleshooter.

Sur l’Android TV Box, supprimer puis réinstaller Kodi a réglé le problème. Oui, il a fallu reconfigurer et reinstaller les extensions, mais c’est mieux de passer du temps à faire quelque chose qu’on a déjà fait et qui est du “terrain connu” que de rajouter encore des changements non maîtrisés dans le système.

Pour lubuntu, un problème de déconnexion du réseau local a été résolu par une mise à jour foireuse, qui a introduit d’autres problèmes, mais qui, après quelques commandes de réparation, de mise à jour partielle, de redémarrages, et de re-mise à jour, semblent avoir disparu.

Côté présence web, je bosse en priorité à terminer la migration de mon site web professionnel. Pas terrible, quand on désire de nouveaux mandats et développer des nouvelles offres, d’avoir un site web professionnel pas à jour et qui redirige une fois sur deux sur ce blog, suivant comment on en tape l’adresse.

Là, je me heurte à la difficulté suivante: un vieux WordPress et un vieux WPML, qu’il faut transférer dans un WordPress multisite à jour. L’importation toute bête ne marche pas. Il faut d’abord mettre à jour l’installation sur le vieux serveur avant de faire le transfert. Un post sur le forum de WPML me donne l’ordre pour les updates à faire. Je passe une demi-journée à faire tout ça, backups y compris. La home page se charge bien, je vérifie à chaque pas. Mais à la fin, misère, je réalise que tous les contenus “traduits” on disparu.

Le site contient une trentaine de pages. Au lieu de replonger pour tenter de voir quelle mise à jour “casse” l’installation, je vais copier-coller à la main les contenus. Ça me prendre quelques heures mais au moins je sais que ce sera réglé à la fin.

Côté serveur web qui se casse la figure, malgré quelques réglages à la configuration Apache faits déjà il y a un moment, puis l’installation de WordFence pour mettre un stop à d’éventuelles requêtes malicieuses (il y en a, mais pas de quoi en faire tout un fromage), ça continue. La dernière expédition spéléo a permis de mettre à jour une base de données WordPress de 250Mb (même pour 15 ans de blog et 8 “site” ça fait beaucoup).

En y regardant de plus près, c’est la table commentmeta qui pèse le plus lourd: près de 100Mb, si ma mémoire est bonne. 150’000 lignes. Cure d’amaigrissement grâce à un peu de googlage, ici et , déjà. Je remarque aussi que Antispam Bee, un plugin anti-spam que j’avais essayé à un moment donné et que je croyais avoir supprimé, est encore actif et a aussi laissé tout un tas de chenit. Bref, après nettoyage, et vidage du spam, la table est vide.

Bon, c’est visiblement pas ce qui causait les problèmes avec le serveur, puisque c’est à nouveau arrivé depuis le nettoyage, mais ça fait plaisir d’avoir une base de données qui fait moins de 100Mb. Merci au passage à PhpMyAdmin, qui malgré toutes les critiques qu’on peut lui faire, est quand même un outil vachement pratique pour repérer et régler ce genre de chose. Les informations sur le status du serveur MySQL, ainsi que les stats, sont aussi présentées de façon accessibles et me donnent des idées pour la suite: peut-être une histoire de taille de cache pour les tables qui n’est pas optimale.

Etape suivante, donc, du coup, avant de faire l’apprenti-sorcière, c’est de voir ce que raconte l’utilitaire mysqltuner. Je vous ferai un rapport si je trouve ce que c’est!

WPML to Make Your WordPress Site Multilingual [en]

[fr] A tester absolument si vous devez mettre en place un site multilingue: le plugin WPML pour WordPress.

I’ve been wanting to play with the WPML WordPress plugin for a while now, and I finally took the plunge today and updated my professional site to the latest version of WordPress, as well as WPML. (Sadly, the content still needs a major overhaul.)

Until now, I had built it using two separate WordPress installations, one in English, one in French, linked together by my quick-and-dirty plugin Bunny’s Language Linker (which, in the light of today’s experiment, I will be retiring from rather inactive development — Basic Bilingual remains, though, and still very much makes sense).

Here’s a summary of what I did:

  • backed up my database
  • upgraded both WordPress blogs to the latest version and exported their content
  • removed the automatic language redirection based on browser language preferences to make sure it wouldn’t interfere (I want to find a way to insert it back in, help appreciated)
  • added and activated the WPML plugin on the English installation
  • went through the settings after activating advanced mode
  • translated widget text and site tagline
  • manually imported content from the French site (import failed due to PHP on my server not being compiled with ctype_digit()), but it was only a dozen pages — it’s easy to specify language and of which English page a new one is a translation of, if any)

Setting up WPML

I did encounter some grief:

  • when selecting the “different languages in directories” I kept getting an error message which didn’t make much sense to me; tip: if that happens, make sure that your site and pages all work fine (in my case, I had to reset permalink structure because it had got lost somewhere on the way — even though the settings didn’t change)
  • I’m using a theme with an existing .mo file for French, so I selected that option (to figure out what the textdomain is, look through a theme file to see what the second argument to the gettext calls is — they look like __("Text here", "text domain here")) but it seems that all the strings for my theme still appear in the “string translation” pane
  • initially the strings for my widgets and site tagline weren’t appearing in the “string translation” pane — you have to click the “Save options and rescan strings” button for that, even if you haven’t changed any settings (that was not exactly obvious to me)

Here’s what I still need to fix:

  • the rewrite rules are set to hide the “language directory” part of the URL when browsing the site in the default language — I want to change this as explained in this forum post
  • reimplement automatic language detection
  • set up a custom language switcher that looks more like “Français | English” somewhere at the top right of the page

And honestly, once that is settle, WPML is as close as it gets to my dream multilingual plugin for WordPress!