HTML5 : corriger l'erreur

WordPress : valider le code oEmbed Youtube en HTML5

Le problème : le code des vidéos n’est pas valide en HTML5

Maintenant que nous avons mis à jour le code des oEmbed Youtube, nous allons rendre le code de l’iframe valide. Voici ce que le code oEmbed de WordPress donne par défaut avec un lien Youtube :

<iframe src="https://www.youtube.com/embed/Gvh2Zo7UL6E?fs=1&feature=oembed" width="660" height="371" frameborder="0" allowfullscreen="allowfullscreen"></iframe>Code language: HTML, XML (xml)

Résultat:

Or le petit problème, c’est que tout cela n’est pas vraiment valide au niveau W3C et je commence à me lasser de voir ces erreurs de validation sur toutes les pages du site avec des vidéos :

Erreur 1 : Attribute allowfullscreen not allowed on element iframe at this point.
Erreur 2 : The frameborder attribute on the iframe element is obsolete. Use CSS instead.Code language: JavaScript (javascript)

La solution : filtrer le rendu oEmbed de WordPress pour purifier le code

HTML5 logo

Voici donc la solution que j’ai mise en place sur le site : je filtre le code oEmbed de WordPress de manière à retirer le tag allowfullscreen qui n’a rien à faire là et à supprimer l’attribut frameborder, que je remplace par un style="border: none".

Éditez le fichier functions.php de votre thème et ajoutez-y cette fonction:

<?php
/*
|-----------------------------------------------------------------------
| Sky oEmbed Filter by Matt - www.skyminds.net
|-----------------------------------------------------------------------
|
| The sky_oembed_filter() function attempts to validate WordPress 
| video oEmbeds for HTML5.
| $return is the normal HTML that the oEmbed process would return. 
| $data is the data received from the oEmbed call, in an object format. 
| $url is the original URL being queried for oEmbed info. 
|
*/
add_filter('oembed_dataparse', 'sky_oembed_filter', 90, 3 );
function sky_oembed_filter( $return, $data, $url ) {
 	$return = str_replace('frameborder="0" allowfullscreen', 'style="border: none"', $return);
	return $return;
}Code language: HTML, XML (xml)

Notez que WordPress cache les résultats oEmbed dans la table postmeta donc après avoir installé ce code et si vous voulez vérifier que cela fonctionne, éditez un article pour que le postmeta se mette à jour.

Voilà, vos pages avec vidéos YouTube devraient maintenant être valides.

Linux : résoudre l'erreur

Linux : joindre plusieurs fichiers avec cat

linux logo

Si vous avez besoin de joindre (ou concaténer) plusieurs fichiers qui ont été nommés en ordre alphabétique, comme par exemple file0001.dat, file0002.dat, file0003.dat…. file1000.dat, une commande s’impose sous Linux : cat.

Dans un terminal, vous pouvez juste lancer cat comme ceci pour rassembler tous vos fichiers en un seul :

cat file*.dat >all_files.datCode language: CSS (css)

C’est une commande système, il n’y a rien à installer et c’est plutôt pratique.

HTML5 : corriger l'erreur

HTML5 : résoudre l’erreur “keyword publisher is not registered” (validateur W3C)

HTML5 logo

Sur votre site ou blog, vous avez peut-être ajouté le widget ou bouton +1 de Google+, le réseau social de Google. Or le petit problème, c’est que le code fourni empêche la bonne validation du document.

Voici le code fourni par Google :

<a title="Google+" href="https://plus.google.com/114535411372700844744" rel="publisher nofollow">Google+</a>Code language: HTML, XML (xml)

et voici l’erreur renvoyée par le validateur W3C :

Keyword publisher is not registered

HTML5 étant toujours en cours de réalisation, les valeurs de la balise rel sont assez restreintes et on ne peut pas mettre tout ce que l’on veut sans déclencher l’erreur.

La solution est toute simple : il faut ajouter la valeur du rel en argument dans le lien, comme ceci :

<a title="Google+" href="https://plus.google.com/114535411372700844744?rel=publisher" rel="nofollow">Google+</a>Code language: HTML, XML (xml)

Et voilà, plus d’erreur lors de la validation.

Linux Mint : mettre à jour le noyau linux avec le kernel liquorix photo

Installer wine sous Linux Mint Debian Edition

lmde J’ai réinstallé Linux Mint Debian Edition aka LMDE sur mon portable et j’en suis extrêmement satisfait, cela tourne très bien et c’est d’une stabilité remarquable.

Par contre, avec la nouvelle version (12.04), qui vient de sortir il y a quelques mois, il ne semble plus possible d’installer wine avec les dépôts par défaut.

Solution : ajouter un nouveau dépôt

Dans le terminal, en root, tapez :

echo 'deb http://boisson.homeip.net/debian/ squeeze wine' >> /etc/apt/sources.list

ensuite, on met à jour les dépôts :

apt-get update

et on installe wine :

apt-get install wine

Et hop, une version plutôt récente de wine (1.5.x) est installée.

Réinitialiser le mot de passe root de MySQL ou MariaDB sous Debian photo

MySQL : changer le mot de passe de l’utilisateur root

icon mysql

J’ai installé la mise à jour Ubuntu 12.04 Precise Pengolin il y a quelques semaines (et je n’aurais pas dû, ma machine laggue comme ce n’est pas permis) et au moment de lancer SAM Broadcaster, un message d’erreur apparaît comme quoi il ne peut se connecter à la base MySQL.

sudo service mysql restart

Résultat :

stop: Unknown instance: 
start: Job failed to startCode language: HTTP (http)

Autre message d’erreur :

/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'Code language: JavaScript (javascript)

Etrange, je n’avais rien modifié.

Voici donc en quelques étapes comment changer le mot de passe MySQL de l’utilisateur root lorsqu’on l’a oublié ou qu’il faut le changer sans connaitre l’ancien.

Toutes ces commandes sont à exécuter en tant qu’utilisateur root donc :

sudo -i

Je vous propose deux méthodes : la première méthode s’adresse aux barbus qui veulent mettre les mains dans le cambouis, la seconde à ceux qui veulent faire ça en 2 commandes.

Méthode 1 (mode cambouis)

Etape 1 : arrêt du service mysql

/etc/init.d/mysql stop

Résultat :

Stopping MySQL database server: mysqld.

Etape 2 : lancement du serveur MySQL sans mot de passe

mysqld_safe --skip-grant-tables &

Résultat :

[1] 5025
mysqld_safe Logging to syslog.
mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Code language: JavaScript (javascript)

Lire la suite

WordPress : récupérer la liste emails des membres et commentateurs photo

WordPress : nettoyage de la base de données

wordpress_icon_blue Avec le temps, les mises à jour successives et l’installation de différents plugins, la base de données de WordPress a tendance à prendre du poids, ce qui nuit aux performances. Voici donc comment lui faire bénéficier d’un petit régime.

N’oubliez pas de faire une sauvegarde de votre base de données avant de lancer ces requêtes. Backup now.

Nettoyage de wp_postmeta

Avant optimisation, ma table wp-postmeta faisait 12 403 enregistrements.

DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock';
DELETE FROM wp_postmeta WHERE meta_key = '_edit_last';
DELETE FROM wp_postmeta WHERE meta_key = '_wp_old_slug';

Maintenant : 12 240.

Nettoyage de wp_commentmeta

On supprime tout ce qu’Akismet nous a mis dans la table wp_commentmeta :

DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet%';

et on supprime toutes les entrées qui n’ont aucune relation avec wp_comments :

DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);

Nettoyage de wp_options

Passage de 880 enregistrements à 476. WordPress crée ces entrées automatiquement et les purge occasionnellement, autant l’aider un peu.

DELETE FROM wp_options WHERE option_name LIKE '_site_transient_browser_%';
DELETE FROM wp_options WHERE option_name LIKE '_site_transient_timeout_browser_%';
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';

Lire la suite

PHP: résoudre l'erreur

PHP : résoudre l’erreur “assigning the return value of new by reference is deprecated”

Si, lors d’une journée de débuggage PHP, vous tombez sur l’erreur suivante :

Deprecated: Assigning the return value of new by reference is deprecated in  on line 12 Code language: JavaScript (javascript)

pas de panique, c’est extrêmement simple à résoudre. Vous avez probablement une ligne dans ce goût-là :

$data =& new Structured_Info();Code language: PHP (php)

Or, depuis PHP5, le passage par réference est systématique sur new, donc il suffit d’enlever le ‘&’ et d’écrire :

$data = new Structured_Info();Code language: PHP (php)

Tout simplement.

PHP: résoudre l'erreur

PHP : les bons en-têtes pour permettre la mise en cache d’une page

Je me suis rendu compte qu’un des fichiers javascript d’un plugin WordPress est appelé sur chaque article du site et qu’il n’est pas mis en cache par défaut…

C’est très moyen au niveau optimisation étant donné que c’est typiquement le genre de fichier statique qui n’est pas prêt d’être modifié.

Voici donc les en-têtes (headers) qui vont nous permettre de mettre un fichier en cache en PHP :

<?php
/*
|--------------------------------------------------------------------------
| Enable Caching with PHP headers by Matt - www.skyminds.net
|--------------------------------------------------------------------------
|
| Let's set it to 90 days caching.
| seconds, minutes, hours, days 
|
*/
$expires = 60*60*24*90;

header('Pragma: public');
header('Cache-Control: maxage='.$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');Code language: HTML, XML (xml)

Et voilà, page mise en cache.

Cela fait moins de requêtes sur le serveur puisque le navigateur n’a pas besoin de redemander la page à chaque visite.

Linux : vider un fichier de son contenu avec la commande truncate photo

Linux : vider un fichier avec truncate

truncate

De temps en temps, il peut être utile de pouvoir effacer le contenu d’un fichier qui prend de l’embonpoint, comme un fichier de log par exemple.

Dans ce cas, vous pouvez lancer la commande truncate sous linux dans un terminal :

truncate -s 0 /home/skyminds/error.log

L’argument -s 0 signifie que l’on réduit sa taille (size) à zéro. Simple et efficace !

No-IP, logo, banner

Créer une redirection No-IP

Plusieurs personnes m’ont demandé une alternative à DynDNS, qui est passé à un modèle exclusivement payant pour les nouveaux comptes.

Sept ans après l’article Créer une redirection DynDNS, je vous propose donc un tuto pour créer une redirection No-IP.

La redirection No-IP vous permettra d’avoir une adresse facile à retenir, malgré vos changements d’IP.

La création d’une redirection prend moins de 5 minutes.

Etape 1 : création du compte No-IP

Créez votre compte gratuitement sur No-IP. Il vous suffit de remplir vos identifiants, mot de passe et adresse email puis de valider votre compte en cliquant sur le lien que vous recevrez par mail (pensez à regarder dans le dossier spam, il peut s’y trouver).

Une fois dans l’espace membre, vous obtenez cet écran :

redrection no ip member panel

Lire la suite

fireofx-aurora

Ubuntu : installer la dernière version de Firefox

Sur ma machine principale, j’utilise principalement Firefox parce que j’y ai mes habitudes : passwords, bookmarks, extensions. Or, je tourne sous 10.10 parce que j’aime bien Gnome et que je ne veux pas passer à Unity. Bref, je suis resté en 10.10 et en 10.10, on a le droit qu’à Firefox 12 !

fireofx aurora

Voici donc comment mettre Firefox à jour sur une “vieille” Ubuntu.

Etape 1 : vérification du fichier /etc/apt/sources.list

On commence par vérifier que le fichier /etc/apt/sources.list ne contient pas d’entrées obsolètes ni de sources externes pour l’installation de firefox (genre mozilla-daily-builds etc) :

sudo nano /etc/apt/sources.list

Etape 2 : ajout du dépôt firefox-aurora

Nous allons y ajouter le dépôt firefox-aurora :

deb http://ppa.launchpad.net/ubuntu-mozilla-daily/firefox-aurora/ubuntu/ lucid main 
deb-src http://ppa.launchpad.net/ubuntu-mozilla-daily/firefox-aurora/ubuntu/ lucid main 

Lire la suite

microsd-card

Récupérer l’espace disque d’une carte SD

microsd card Nous avons tous des cartes SD ou microSD dans nos appareils photos, caméras, téléphones mobiles, laptops…

C’est petit, cela s’emporte avec soi partout et les capacités de stockage commencent à augmenter petit à petit.

Problème : après suppression des fichiers, plus d’espace disque disponible

Il vous est peut-être déjà arrivé de procéder à la suppression de fichiers sur ces cartes et de constater que, bien que vous ayez supprimé les fichiers, l’espace disque disponible n’augmente pas, comme si les fichiers étaient toujours présents sur la carte. Et vider la corbeille ne change rien.

Solution : afficher les fichiers cachés

En fait, les fichiers n’ont pas été supprimés mais simplement déplacés dans le répertoire .Trash-1000 à la racine de la carte. Ce répertoire est caché. Pour l’afficher, il faut afficher les fichiers cachés avec Ctrl + h.

Supprimez le répertoire, cela supprimera les fichiers définitivement et vous pourrez regagner de l’espace libre sur votre carte.

sdcard empty trash

N’ayez crainte, le répertoire .Trash sera recréé automatiquement à la prochaine suppression de fichiers.