Reconstruire un ePub (rezipper le fichier) et le vérifier

Après avoir modifier un ePub, ou compresser un ePub, vous aurez besoin de reconstruire un ePub avant de le diffuser. Le fichier ePub est une archive zip ayant quelques spécificités qu’il faut suivre pour obtenir un fichier ePub valide et compréhensible par un maximum de liseuse.

Reconstruire un ePub

Pour reconstruire un ePub, la méthode est pareil quelques soit les logiciels que vous utilisez. Je fais ce tutoriel depuis macOs.

La reconstruction se passe en 3 temps:

  • Supprimer les fichiers temporaires
  • Créer une archive non compressée avec le fichier mimetype
  • Ajouter les autres informations compressées

Supprimer les fichiers temporaires de son ePub

Sur macOs, des dossiers cachés ._DS_Store sont créés à tout bout de champs. On va les supprimer de notre ePub pour ne pas les embarquer inutilement:

flogg@MacBook:~/ePub$ find . -name '.DS_Store' -type f -delete

Créer un fichier zip non-compressé

Le fichier mimetype doit être non-compressé et être le premier fichier de l’archive. On commence donc avec lui:

flogg@MacBook:~/ePub$ zip -X0 MonEbook.epub mimetype

-X permet de ne pas enregistrer les informations additionnels du fichier (propriétaire, groupe): -X: Do not save extra file attributes (Extended Attributes on OS/2, uid/gid and file times on Unix).

-0 permet de ne pas compresser

Ajouter les informations compressées de l’ePub

On peut compresser les autres informations de l’ePub, alors on va les compresser au maximum, en les ajoutant au fichier zip existant:

flogg@MacBook:~/ePub$ zip -rX9 MonEbook.epub META_INF OPS

-r permet d’incorporer tout le contenu des dossiers

-9 permet de compresser au maximum

Terminé. Le fichier ePub reconstruit est prêt! C’est normalement un fichier ePub valide, mais il est préférable de le vérifier.

Vérifier son ePub

Pour vérifier la qualité du nouveau fichier ePub, on peut utiliser le programme epubcheck. C’est la même vérification que Kobo Writing Life fera après l’importation de votre fichier.

Pour l’installer:

flogg@MacBook:~/ePub$ brew install epubcheck

Pour contrôler notre fichier epub:

flogg@MacBook:~/ePub$ epubcheck MonEbook.epub

Vous devez obtenir un ePub sans erreur, ou au moins sans plus d’erreur que dans votre fichier d’origine.

C’est tout! Le fichier est prêt à être distribuer, via Kobo Writing Life ou par vous même.

Mes outils SEO indispensables, c’est quoi? #partage

Le SEO, Search Engine Optimisation, c’est l’ensemble des techniques qui permettent d’améliorer son référencement naturel. Il n’y a pas de secret: plus le site est bon, mieux il est classé. Le SEO va donc consister en un ensemble de bonnes pratiques pour créer du contenu de qualité. Je vais partager ici mes outils seo indispensables, ceux que j’utilise.

Avant de commencer, c’est quoi des outils SEO? C’est un logiciel, un service qui va donner des pistes d’améliorations, pour le SEO technique et pour le contenu.

Le contenu

Le nerf de la guerre. Le contenu doit être intéressant et optimisé.

Intéressant: c’est à vous de le définir, c’est une thématique sur lesquelles vous avez des informations utiles à apporter et que recherchent les internautes.

Optimisé: ce sont de bonnes pratiques. C’est une approche plus mécanique: quelle est la requête cible sur laquelle vous souhaitez apparaitre? Cette trame est-elle écrite mot pour mot dans le contenu? Est-elle repetée plusieurs fois? Le champ lexical de l’article est-il en cohérence avec la thématique abordée? On peut faire une liste sans fin de question mais ce n’est pas interessant. Et puis surtout, il y a plus simple. Parmi tous les plugins WordPress, le meilleur des outils indispensables est Yoast SEO.

Yoast SEO

Yoast SEO est un plugin pour WordPress. C’est le meilleur plugin de contenu SEO. Il analyse le contenu et vérifie l’application des bonnes pratiques:

  • distribution de la requête cible dans le contenu, dans les titre
  • liens internes et externes en relation avec le thème
  • image contenant la requête cible
  • nombre de mots
  • lisibilité du contenu
  • proportion de phrases passives
  • etc.

Yoast analyse tout et donne une indication de la qualité SEO du contenu. Vous pouvez alors facilement modifier le contenu pour qu’il devienne plus optimisé. C’est le plugin essentiel à utiliser pour le contenu SEO.

Outils SEO technique indispensables

Avant de parler outil, c’est quoi le SEO technique? Pour les moteurs de recherche, Google en premier, un contenu optimisé ne suffit pas. Il faut également que le site soit performant. Il doit être rapide, avec un accès immédiat au contenu. Si le contenu est recouvert de publicités, Google le sait et dégrade la note de votre site.

Un point souvent négligé, c’est l’optimisation des images. C’est essentiel sur internet. Le temps de chargement peut facilement être divisé par 2. Utilisez toujours un programme pour optimiser les images avant de les charger sur Internet.

Web.dev

Web.dev est un outil SEO utilise l’auditeur SEO Lighthouse de Google. Ses recommandations sont bonnes à prendre mais il ne faut pas chercher à obtenir 100% partout.

Vous pouvez aussi l’utiliser pour analyser vos concurrents. Si votre est score est inférieur, alors il est bon de travailler sur l’optimisation technique de votre site. C’est un outil indispensable pour réussier le SEO technique.

Outils SEO Technique indispensables Web.Dev
Très bons score de SEO Technique pour iGen.fr

Pingdom Website Speed Test

Pingdom est un outil SEO analyse la vitesse d’un site. Il fonctionne un peu comme Web.dev mais donne des résultats un peu différent.

C'est quoi l'outil SEO Pingdom
1,32s de temps de chargement, c’est très bien

Se comparer aux autres

C’est toujours utile de se comparer aux autres. Internet est grand, vous avez certainement des concurrents. Il est bon d’identifier quelles sont leurs requêtes cible. Où trouvent ils leur audience? Comment se positionnent-ils? Quelles sont leur résultats?

SimilarWeb: outil indispensable pour mesurer l’audience

SimilarWeb fait vraiment partie des outils SEO indispensables pour mesurer l’audience d’un site. Je ne sais pas comment il fonctionne, mais il est très fiable! Vous n’obtiendrez pas toujours une estimation précise de la fréquentation, mais vous saurez si vos concurrents ont plus ou moins d’audience.

c'est quoi l'outil seo SimilarWeb
On caresse le millions de sessions par mois chez iGen.fr, bravo!

Moz Link Explorer

Moz analyse le web. Il indexe au maximum les sites web et enregistre notamment les liens entre eux. Le Moz Link Explorer permet de connaître la notoriété d’une page, si d’autres sites la référence et quelle est le poids de ces sites.

C’est un outil indispensable pour construire votre stratégie backlink.

outil seo Moz Link Exporer
Plus de 7900 sites ont un lien vers iGen.fr, c’est beaucoup!

Google Search Console

Enfin, la Google Search Console. Cet outil SEO permet de connaitre vos résultat de référencement sur Google. Quelles sont les requêtes cibles générant le plus de clic? Quelle est votre position moyenne sur telle requête cible? Combien de fois votre site a été proposé pour cette requête?

La Search Console de Google permet de connaitre les résultats de son SEO.

Outils SEO indispensables: au final

Avec ces 6 outils, vous saurez mieux comment appréhender le SEO de votre site. Ça prend du temps le SEO, ne paniquez pas. J’ai des articles qui étaient totalement ignorés par Google et qui, après 3 mois, se sont retrouvés sur la 1ère page. Si vos résultats dans Yoast, Web.Dev et Pingdom sont bons, soyez patient.

Mon avis sur Antidote 10: le meilleur correcteur? [Oui mais non]

J’écris beaucoup (des articles, des emails, des livres électroniques) et je suis mauvais en orthographe. C’est un problème car je trouve que de grosses fautes rendent la lecture difficile. J’ai donc cherché le meilleur correcteur orthographique en français. Tous les sites internet vantent les mérites du logiciel Antidote. J’ai donc acheté Antidote 10 (119€ quand même). Après 3 mois d’utilisation sur macOs, voici mon avis sur Antidote. Attention, j’ai un avis assez négatif sur le produit.

J’utilise Grammarly pour l’anglais et j’en suis ravi.

La qualité de la correction orthographique: très bien

Sur ce point, je n’ai rien à redire. Le logiciel est bon. Il corrige beaucoup de fautes. Je n’ai jamais trouvé de fautes après sa correction.

Toutefois, il est peut être trop parfait. Il n’aime les familiarités ou le langage parlé. Parfois donc, je laisse passer ce qu’il surligne.

Quelques points faibles tout de même:

  • Antidote ne sait pas analyser les phrases trop longues ou complexe
  • Antidote ne sait pas analyser les longs textes: si vous lui donner un texte un peu trop grand, il plante. Oui, en 2019, il est possible de vendre 119€ un logiciel qui plante.
  • Le correcteur est très lent. Si je modifie du texte dans le correcteur, il faut compter au moins une seconde par lettre. C’est atroce.

L’intégration avec les autres logiciels: inexistante ou presque

Sur macOs, j’utilise principalement ces logiciels pour le texte: Pages, Mail, Safari et VS Code.

Avec Mail: oui mais frustrant

Antidote ne fonctionne qu’avec Mail. L’UX est assez frustrante: lorsqu’on appuie sur le bouton « Envoyer », Antidote s’ouvre avec le contenu du message. Après correction, il faut refermer Antidote et appuyer à nouveau sur « Envoyer ». Je ne m’y suis jamais fait. A chaque fois que le popup Antidote s’ouvre, je suis frustré que le message ne soit pas déjà parti, que la correction n’ait pas eu lieu plus tôt.

Pages, Safari, VS Code: non

Antidote affirme que le logiciel fonctionne avec Pages. J’ai suivi toute la procédure et ça n’a jamais marché. Pour lancer la correction, on est censé cliquer dans un coin du document où il n’y a pas de texte.

La seule méthode qui fonctionne: copier le texte et lancer Antidote depuis l’icône « Corriger le texte copier ». Antidote ouvre alors son propre éditeur de texte, colle le contenu et lance le correcteur. Pour remettre le texte dans le logiciel d’origine, un nouveau copier-coller s’impose. Bien entendu, tout ce qui est mise en forme est perdu lors de cette action…

Mon avis sur Antidote

Si j’en crois les autres sites internet, Antidote est le meilleur correcteur de français. Je ne remet pas leur jugement en cause puisque je ne connais qu’Antidote en français.

Mon expérience d’Antidote 10 sur macOs est globalement très négative. L’expérience utilisateur est mauvaise et le logiciel plante régulièrement. Antidote est peut-être meilleur sur Windows.

Si on compare à Antidote 10 à Grammarly, il n’y a pas photo. L’expérience utilisateur de Grammarly est autrement plus agréable et fiable.

En conclusion, si Antidote 10 est le meilleur correcteur de français, je préfère alors ne pas avoir de correcteur du tout.

GeForce Now: retour d’expérience après 1 an d’utilisation

Déjà 1 an que j’ai reçu l’email de Nvidia « Congratulations! You’re In The Free GeForce NOW Beta ». 1 an que j’utilise ce service de jeu vidéo en streaming. La conclusion est sans appel: j’ai revendu ma console et je n’imagine jamais en racheté: le jeu en streaming, c’est le tur-fu.

Pour vous inscrire sur la liste d’attente de la bêta, c’est ici: https://www.nvidia.com/en-us/geforce/products/geforce-now/waitlist/

C’est quoi le jeu vidéo en streaming?

Jouer en streaming, ça veut dire que les ressources matériels ne sont pas chez vous: vous les louez à la demande. Seul votre écran, clavier, souris sont mis à contribution, le reste est réalisé sur des serveurs qui vous renvoient une vidéo.

Qui propose du jeu vidéo en streaming?

Plusieurs acteurs se sont lancés, une petite liste non-exhaustive:

  • GeForce Now (Nvidia)
  • LiquidSky: fermé depuis
  • PlayStation Now (Sony)
  • Stradia (Google)
  • Shadow
  • Vortex

Tous ne fonctionnent pas pareil. Avec Shadow, vous louez un PC avec Windows 10: à vous de faire la suite. Avec GeForce Now, vous lancez directement les jeux Steam: pas d’installation nécessaire.

Pourquoi GeForce Now, c’est génial?

J’aime bien jouer aux jeux vidéos mais je ne suis pas un hardcore gamer. D’ailleurs, je n’ai jamais vraiment eu de PC de compétition. J’ai fini GTA 3 à base de AMD Duron et GeForce 3 Ti (bonjour l’ancêtre!). Mon PC, c’est un portable, petit, léger, passe partout. Grâce à GeForce Now, ce petit PC est capable de faire tourner n’importe quel jeu en FullHD.

J’ai essayé plusieurs dizaines de jeux. Qu’est ce que c’est agréable de pousser tous les détails à fonds, d’être en FullHD et ne pas ressentir un poil de ralentissement. Tout est fluide, simple, rapide.

Mon PC, c’est un Macbook. Pratiquement aucun jeu n’est imaginable avec car c’est macOs et c’est peu puissant. Grâce à GeForce Now, plus de limite!

Vous connaissez ces mises à jour de 20Go sur PS4 ou Xbox One? Perso, j’ai oublié. Sur GeForce Now, tous les jeux sont systématiquement à jour. Entre le moment où je veux jouer et le moment où le jeu début, il ne s’écoule jamais plus de 10s!

Je suis convaincu par ce service et je resterai abonné lorsque l’offre commerciale débutera. C’est un service qui fonctionne très bien, très simplement.

Les inconvénients de GeForce Now

GeForce Now, c’est pas non plus la solution ultime. Voici les principaux défauts que j’ai pû rencontrer:

  • oubliez le WiFI, seul le cable est fiable
  • la latence
  • le catalogue
  • les mods

Jouer à GeForce Now en WiFi? Non?

Le service indique qu’une connexion câblée est préférable mais qu’il est possible de jouer avec un bon WiFi 5Ghz, voir en 4G.

Effectivement, je peux lancer un jeu avec un WiFi 5Ghz mais c’est injouable. La latence est bien trop élevée, même pour des jeux comme City Skyline.

Si vous voulez correctement jouer, la connexion câblée est la seule fiable.

La latence sur GeForce Now?

Même pour un casual gamer, la latence peut être gênante (même avec une connexion câblée). C’est jouable mais parfois la connexion perd en qualité et la latence apparait. Je l’ai particulièrement constaté sur des jeux comme Fallout.

Vous me direz, c’est ton ADSL qui est en cause. Oui, peut-être que c’est mieux en fibre. Malheureusement, mon immeuble est bien en zone de couverte Fibre mais la seule réponse que j’ai eu d’Orange est « ça nous fait chier de venir l’installer » (après 5 no-show 👏).

Tout le catalogue Steam?

Oui, il est possible de jouer à tout le catalogue Steam, mais il y a quand même 2 écoles:

  • les jeux populaires
  • les autres

Les jeux populaires sont jouables directement, les sauvegardes sont conservées, tout marche très bien.

Pour les autres jeux, il faut les « installer » en sachant que toutes les données seront supprimés à la fin de la session. La sauvegarde sur Steam Cloud fonctionne. L’installation est extrêmement rapide mais il est parfois nécessaire de bidouiller (par exemple, avec Fallout New Végas, il faut changer plusieurs fois la langue que le jeu se lance en français).

Des mods sur GeForce Now? pour l’instant, non

C’est pas forcement gênant pour tout le monde. Sur City Skyline, j’aurai adoré pouvoir utiliser des mods du Steam Workshop. Cette fonction n’est pas (encore?) supporté. Adieu les mods, bonjour les jeux Vanilla.

C’est tout pour mon retour d’expérience sur GeForce Now. Un grand avantage de la bêta, c’est bien sur que c’est gratuit! Si vous avez des questions sur GeForce Now, je peux y répondre.

Connecter deux casques bluetooth mac: comment faire?

Lundi 13 mai, j’étais dans le train pour un long trajet Paris>Toulouse. Un bon moment pour regarder le dernier épisode de Game of Thrones non? Mais partager ses AirPods, c’est pas pratique. Idéalement, je voulais connecter deux casques bluetooth sur le Macbook. Et ça marche!

Étape 1. Il tout d’abord appairer les 2 AirPods sur le mac, via le bluetooth. Vous devriez pouvoir jongler facilement entre les 2.

Étape 2. Il faut créer une « sortie agrégée » sur le Macbook. Il y a une page de l’assistance Apple qui explique cela.

Étape 3. On se rend compte maintenant qu’il n’est pas possible de modifier le volume sur la sortie agrégée. Alors on déconnecte chaque AirPods, on le reconnecter un par un, on fixe chacun son volume de sortie et que reconnecter la sortie agrégée.

Trop bien! Et sur iPhone? La réponse est simple aussi: non. Il n’est pas possible de connecter 2 écouteurs bluetooth sur iPhone.

Connecter 2 AirPods sur iPhone et iPad

C’est désormais possible! Avec iOS 13.1, le 24 septembre, il est possible de connecter 2 paires d’AirPods et de transmettre le son aux 2 paires. Ça fonctionne avec tous les écouteurs bluetooth avec une puce Apple W1 ou H1, c’est à dire les AirPods et les écouteurs Beats.

Compresser un ePub: ma méthode pour réduire la taille d’un ePub

Lorsque j’ai terminé mon ebook, je l’ai tout naturellement exporté et j’ai obtenu un fichier ePub de… 160Mo. C’est beaucoup trop. Il est nécessaire de compresser un ePub avant de le publier car les distributeurs (Amazon en premier), facturent le coût de la distribution en fonction de la taille du fichier. Avec ma méthode, j’ai obtenu un ePub de 29Mo: 80% de compression. Pas mal non?

Réduire la taille d’un ePub: quels éléments?

Fichier ePub trop lourd? Pour alléger un ePub, on va parler compression. La 1ère source d’éléments à compresser dans un ePub, ce sont les images! Dans mon cas, elles représentent 90% de la taille de mon eBook.

On peut trouver aussi d’autres sources d’optimisations comme le nombre de police intégrés.

Structure d’un fichier ePub

Comprenons déjà la structure d’un fichier ePub. Un fichier ePub est une archive Zip d’une structure bien définie:

  • le 1er fichier de l’archive est mimetype. Il ne doit pas être compressé.
  • un dossier « META-INF » contenant quelques informations de base sur la structure.
  • un autre dossier, « OPS » ou « oebps » contenant les données du ePub.

Le fichier mimetype permet aux applications qui vont lire ce fichier de le considérer comme un fichier spécial de type application/epub+zip, et pas comme une simple archive zip.

Le contenu du fichier mimetype fait exactement 20 caractères, sans saut de ligne à la fin:

application/epub+zip

Ce que ça veut dire, c’est que nous allons pouvoir dézipper le ePub pour comprendre ce qui prend de la place afin de pouvoir compresser un ePub en conséquence.

Commencez donc par dézipper le fichier ePub. Vous pouvez ajouter l’extension .zip pour vous aider. Sur macOs, via le terminal, la commande est:

flogg@MacBook:~/ePub$ unzip MonEBook.epub

On obtient la structure:

flogg@MacBook:~/ePub$ ls
META-INF/   OPS/        MonEBook.epub  mimetype

Réduire la taille d’un ePub: les images

Aller donc voir la taille du dossier OPS/images/. Il est énorme? Parfait, on va pouvoir compresser.

L’analyse dépend de chaque cas. Je vous raconte le mien mais le votre pourrait être différent.

Premier constat, je n’ai que des fichiers PNG. Clairement, ce n’est pas le format le plus efficace pour mon type de contenu. On préférera le format JPEG. Ce changement n’est valable que pour les images que n’ont pas besoin de fond transparent. Pour ces dernières, il n’y a pas d’autres choix que de conserver le format PNG.

Deuxième constat, ces fichiers ne sont pas optimisés du tout. Une simple optimisation des fichiers en suivant les recommandations de Google m’a permis de gagner 50Mo.

Convertir les images d’un ePub en JPEG

Les fichiers ePub supportent 4 types de fichiers images:

  • PNG
  • JPEG
  • GIF
  • SVG

Pour convertir de JPEG en PNG, j’utilise ImageMagick en ligne de commande sur macOs. Rappel: la transformation va remplacer les images au fond transparent par un fond blanc (-background white).

flogg@MacBook:~/ePub$ convert ./OPS/images/image.png -background white -alpha remove ./OPS/images/image.jpg
flogg@MacBook:~/ePub$ rm ./OPS/images/image.png

Il faut maintenant changer toutes les références de ce fichier dans tout votre ePub:

  • OPS/epb.opf: Ce fichier contient un inventaire des fichiers de l’ePub. Il faut remplacer une ligne comme:
<item id="dataItem5" href="images/image-1.png" media-type="image/png"/>

par

<item id="dataItem5" href="images/image-1.jpg" media-type="image/jpg"/>
  • OPS/page-xxx.xhtml: Ce fichier contient une page de votre ePub. Il suffit de remplacer toutes les occurrences de images/image-1.png par images/image-1.jpg

Répétez l’opération pour toutes les images. Vous pouvez automatiser l’opération de renommage des occurrences avec sed, par exemple:

flogg@MacBook:~/ePub$ sed -i'' -e "s/images\/image-1.png/images\/image-1.jpg/g" ./OPS/page-*.xhtml
flogg@MacBook:~/ePub$ sed -i'' -e "s/href=\"images\/image-1.png\"\ media-type=\"image\/png\"/href=\"images\/image-1.jpg\"\ media-type=\"image\/jpeg\"/g" ./OPS/epb.opf
flogg@MacBook:~/ePub$ rm ./OPS/*-e

La simple conversion de mes fichiers PNG en JPG m’a permis de compresser un ePub de 60% (157Mo > 63,1Mo).

Compresser les images d’un ePub

Que les images soient au format JPG ou PNG, c’est pareil et c’est très simple. Compresser toutes les images avec un programme comme ImageOptim, en suivant les recommandations de Google pour l’optimisation des images. Oui, on va dégrader la qualité de certaines images mais ce sera difficilement visible à l’oeil.

J’ai obtenu une compression d’environ:

  • 30% pour les fichiers PNG
  • 50% pour les fichiers JPG

Supprimer les images en doublon

Dans mon cas, j’utilise à plusieurs reprises une même image (un rond rouge). L’image de ce rond rouge est présente plus de 50 fois, avec un nom différent.

On peut compresser un peu plus l’ePub en ne conservant qu’une occurence de cette image et en remplaçant toutes les occurrences dans les fichiers page-xxx.html et epb.opf.

Je n’ai pas fait cette optimisation car le gain était assez minimes dans mon cas (moins de 1Mo).

Réduire la taille d’un ePub: les polices

Si vous incorporez les polices dans votre ePub, elles sont enregistrés dans le dossier OBS/fonts/.

Vérifiez les polices incorporées, et si elles sont toutes justifiées.

Dans mon cas, j’ai découvert 2 polices inutiles incorporées:

  • « Wingdings »: pour 2 malheureuses puces rondes.
  • « FontAwesome5Pro-Solid-900.otf »: pour 2 petites icônes grasses alors que les autres ne le sont pas

Remplacer ces polices dans votre éditeur d’eBook afin qu’elles ne soient pas présentes à l’exportation.

Réduire la taille d’un ePub: reconstruire le fichier

Pour reconstruire le fichier, il faut suivre correctement et à la lettre le format ePub. Suivez le guide ici: Reconstruire un fichier ePub

Compresser un ePub: comparatif des améliorations

Voici un récapitulatif des gains possibles avec mon fichier de base:

ÉtapePoids du fichiers
Origine160Mo
Optimisation PNG-57Mo
Conversion JPG-100Mo
Conversion JPG
+ Optimisation
-130Mo
Suppression des polices inutiles-3Mo
Suppression des images en doublons-1Mo

Pour mon eBook, j’ai choisi de convertir en JPG, optimiser les images et supprimer les polices inutiles et j’ai finalement obtenu un ePub de 29Mo! YEAH!

Sauvegarde automatique de base de données MySQL: mon script

Une sauvegarde automatique de la base de données MySQL peut sauver! Un piratage de site peut toujours arriver et sans sauvegarde, vous êtes bon pour tout recommencer depuis zéro.

Faire une sauvegarde (un backup) sur le même serveur, c’est un début mais ça ne suffit pas. Si un pirate a accès à votre serveur, il peut facilement tout supprimer, y compris vos sauvegarder. C’est pourquoi il faut conserver vos backups sur un autre support. Tout d’abord sur un autre serveur, puis également sur un support déconnecté d’Internet.

Quelles solutions possibles?

Sauvegarde automatique avec WordPress

Il existe plusieurs plugins WordPress qui fonctionnent très bien. Le plus connu est certainement UpDraftPlus.

Mais les plugins WordPress… faut pas non plus en abuser. Il y a déjà assez de plugins dans tous les sens, lorsque je peux éviter d’en ajouter, j’évite!

Sauvegarde WordPress sans plugin

Pour sauvegarder les articles de WordPress sans plugin et de manière automatique, il faut passer par un script de sauvegarde. Ce script fera appel à MysqlDump pour créer des sauvegardes et Crontab pour le planifier chaque jour.

Sauvegarde automatique avec MysqlDump et Crontab

J’ai mis en place un script qui effectue une sauvegarde automatique de la base de données tous les jours sur un NAS situé chez moi. Tous les 3 mois, je fais une sauvegarde froide, je fais une copie des dernières sauvegarde sur un disque externe. Avec ce process, j’ai une réponse à plusieurs risques:

  • Piratage du site: récupération depuis la sauvegarde de la veille
  • Piratage du site + du serveur de sauvegarde: récupération depuis la sauvegarde d’il y a max 3 mois.

Dans mon cas, le « serveur de sauvegarde » est un Raspberry Pi. C’est lui qui va créer les backups et les enregistrer sur le NAS.

Sécurité de la sauvegarde automatique de base de données

L’idée générale, c’est une tâche ordonnancé par cron qui se connecte automatiquement au serveur, sauvegarde les bases de données et les transfert sur le NAS. Pour limiter les accès du programme de sauvegarde, on va créer un utilisateur spécial pour se connecter en SSH, et un autre pour accéder à la base de donnée.

Créer un utilisateur sans permissions dans Linux

La configuration par défaut suffit. La commande est simple:

ubuntu@serveur: sudo adduser backupuser

Saisissez un mot de passe compliqué, issu d’un générateur de mot de passe. De toutes façons, on ne va jamais l’utiliser puisque la connexion SSH par mot de passe est désactivé sur le serveur web.

Pour permettre la connexion par clef SSH, il faut ajouter notre clef . Copier la clef SSH du serveur de sauvegarde:

ubuntu@pi:~$ cat ~/.ssh/id_rsa.pub

Sur le serveur web, ajouter votre clef pour le nouvel utilisateur:

ubuntu@serveur:~$ sudo -u backupuser bash
backupuser@serveur:~$ mkdir -p ~/.ssh
backupuser@serveur:~$ echo "MACLEFSSH" >> ~/.ssh/authorized_keys

Désormais, le serveur de sauvegarde sait se connecter au serveur web, avec un utilisateur sans permissions. Sans risque donc.

Créer un utilisateur MySQL dédié pour la sauvegarde

De même pour l’utilisateur MySQL (ou MariaDB). On créé un utilisateur n’ayant pour permissions que la lecture (=SELECT).

On se connecte à MariaDB avec les droits root pour créer cet utilisateur:

ubuntu@serveur:~$ sudo mysql
MariaDB [(none)]> GRANT SELECT ON *.* TO 'backupuser'@'localhost' IDENTIFIED BY 'secret-password';

On peut maintenant se connecter avec cet utilisateur pour sauvegarder la base de données: il peut lire toutes les bases de données et ne peut en modifier aucune: parfait!

Script de sauvegarde automatique

Le programme de sauvegarde est piloté par le serveur de sauvegarde (mon Raspberry Pi). Il va se connecter en SSH, exécuter le programme de sauvegarde, rapatrier les fichiers de sauvegarde créés et supprimer ces fichiers du serveur web.

#!/bin/sh

SQL_USER="backupuser"
SQL_PASS="secret-password"
SQL_HOST="localhost"

SSH_USER="backupuser"
SSH_HOST="monServeur"

FILE_PREFIX="backup_db"
FILE_PATH="/media/smb/Backups/"

FILE_DATE=`date +%Y-%m-%d-%H-%M-%S`
TARGET_FILE_PATH="/tmp/backupuser/"

DB_SCRIPT="MYSQL_PWD=$SQL_PASS mysql -h $SQL_HOST -u $SQL_USER -e \"SHOW DATABASES;\" | tr -d \" | \" | grep -v -e Database -e _schema -e mysql"
DB_SAVE="MYSQL_PWD=$SQL_PASS mysqldump -h $SQL_HOST -u $SQL_USER --single-transaction --skip-lock-tables \$DB_NAME > $TARGET_FILE_PATH$FILE_PREFIX.\$DB_NAME.$FILE_DATE.sql"
DB_COMPRESS="gzip $TARGET_FILE_PATH$FILE_PREFIX.\$DB_NAME.$FILE_DATE.sql"

ssh -T $SSH_USER@$SSH_HOST << EOSSH
mkdir -p $TARGET_FILE_PATH
DATABASES=\$($DB_SCRIPT)
for DB_NAME in \$DATABASES; do
	\$($DB_SAVE)
	\$($DB_COMPRESS)
done
EOSSH

# On transfert les données du script client
scp $SSH_USER@$SSH_HOST:$TARGET_FILE_PATH$FILE_PREFIX.*.sql.gz $FILE_PATH

# On supprime le script client et les fichiers temporaires
ssh $SSH_USER@$SSH_HOST "rm $TARGET_FILE_PATH$FILE_PREFIX.*.sql.gz"

Déchiffrons le fonctionnement du script, point par point

1/ La configuration du script

Ici, ce sont les variables qu’il faut modifier pour que le script fonctionne.

  • Nom du serveur Web
  • Utilisateur SSH du serveur Web
  • Nom du serveur SQL
  • Utilisateur SQL
  • Mot de passe SQL
  • Chemin où seront enregistrés les fichiers de sauvegarde
  • Préfixe pour le nom des fichiers de sauvegarde
SQL_USER="backupuser"
SQL_PASS="secret-password"
SQL_HOST="localhost"

SSH_USER="backupuser"
SSH_HOST="monServeur"

FILE_PREFIX="backup_db"
FILE_PATH="/media/smb/Backups/"

2/ Les variables de travail

On stocke la date actuelle qui servira à nommer les fichiers, afin d’avoir des noms fichiers uniques.

Le chemin temporaire de travail peut être modifié. /tmp est généralement stocké en RAM. Si vous avez des grosses bases de données, ça pourrait ralentir le serveur web.

FILE_DATE=`date +%Y-%m-%d-%H-%M-%S`
TARGET_FILE_PATH="/tmp/backupuser/"

Les 3 fonctions à exécuter

On définit les 3 opérations à exécuter:

  • Lire la liste de la base de données
  • Sauvegarder une base de données
  • Compresser un fichier de sauvegarde

Ces fonctions seront exécutés dans un tunnel SSH.

Les options de mysqldump:

  • Single Transaction: la sauvegarde se fera dans une transaction SQL: ça permet de conserver l’intégrité des données sans bloquer la base de données.
  • Skip Lock Tables: pas besoin de vérouiller la base de données pendant le backup puisqu’on l’effectue dans une seule transaction SQL

Je me suis inspiré de cet article intéressant sur les options de mysqldump.

DB_SCRIPT="MYSQL_PWD=$SQL_PASS mysql -h $SQL_HOST -u $SQL_USER -e \"SHOW DATABASES;\" | tr -d \" | \" | grep -v -e Database -e _schema -e mysql"

DB_SAVE="MYSQL_PWD=$SQL_PASS mysqldump -h $SQL_HOST -u $SQL_USER --single-transaction --skip-lock-tables \$DB_NAME > $TARGET_FILE_PATH$FILE_PREFIX.\$DB_NAME.$FILE_DATE.sql"

DB_COMPRESS="gzip $TARGET_FILE_PATH$FILE_PREFIX.\$DB_NAME.$FILE_DATE.sql"

Le tunnel SSH

On ouvre le tunnel SSH et on créer le dossier qui va recevoir nos fichiers temporaires. On sort le liste des bases de données puis on boucle dessus pour créer et compresser une sauvegarde pour chaque base de données

ssh -T $SSH_USER@$SSH_HOST << EOSSH
mkdir -p $TARGET_FILE_PATH
DATABASES=\$($DB_SCRIPT)
for DB_NAME in \$DATABASES; do
	\$($DB_SAVE)
	\$($DB_COMPRESS)
done
EOSSH

Rapatriement des fichiers de sauvegarde

Une simple copie avec SSH de tous les fichiers backups compressés (*.sql.gz) vers notre répertoire de sauvegarde.

scp $SSH_USER@$SSH_HOST:$TARGET_FILE_PATH$FILE_PREFIX.*.sql.gz $FILE_PATH

Nettoyage des fichiers temporaires

Pour ne pas laisser trainer des fichiers inutiles sur le serveur, on supprime tous les fichiers backups compressés de notre répertoire de travail

ssh $SSH_USER@$SSH_HOST "rm $TARGET_FILE_PATH$FILE_PREFIX.*.sql.gz"

Planification de la sauvegarde automatique dans Cron

Il ne reste plus qu’à planifier une sauvegarde automatique de base de données toutes les nuits, et le tour est joué. On ouvre crontab pour un utilisateur standard du serveur de sauvegarde.

ubuntu@pi:~$ crontab -e

Et on ajoute cette ligne:

3 33 * * * /home/ubuntu/Scripts/backup-bdd.sh

Tous les jours, à 3h33, une sauvegarde automatique de la base de données du serveur Web sera effectuée.

Faire taire le message d’accueil SSH

Quand vous utiliserez ce script, il est possible que le message d’accueil SSH vous agace. C’est mon cas.

La solution est très simple, il suffit d’ajouter un fichier .hushlogin dans son répertoire personnel.

backupuser@serveur:~$ touch .hushlogin

Optimiser les images sur macOs facilement avec ImageOptim

Il est très important d’optimiser les images pour le web. Le site sera plus rapide et mieux référencé. L’optimisation des images est une part importante du SEO technique. J’ai longtemps chercher une solution idéale pour optimiser les images sur macOs facilement, et j’ai enfin trouvé!

Pour WordPress, je préfère optimiser les images avant de les télécharger sur le site. La raison est toute simple: WordPress est souvent bien assez chargé de plugin, autant éviter d’un ajouter. D’une manière générale, si je peux faire quelque chose sans plugin WordPress, je n’hésite pas.

ImageOptim pour optimiser les images sur macOs

ImageOptim, c’est gratuit, c’est Open-Source et l’interface graphique est agréable. On part déjà sur de bonnes bases. Pour l’installer, télécharger l’archive sur le site officiel: https://imageoptim.com, décompresser l’archive et copier le programme dans « Applications ». ImageOptim n’est pas disponible sur HomeBrew :(.

ImageOptim intègre et cumule tous les optimiseurs d’image les plus utilisés:

  • JPEG (.jpg / .jpeg)
    • jpegoptim
    • guetzli
  • PNG
    • PNGOUT
    • OxiPNG
    • AdvPNG
    • PNGCrush
  • GIF (ou Jif?)
    • Gifsicle
  • SVG
    • SVGO
    • SVGCleaner

On peut facilement choisir entre une compression sans perte (Lossless) ou avec, on peut conserver le timestamp initial, on peut supprimer les informations EXIF.

J’ai opté pour une compression avec perte, en suivant les recommandations de Google pour le JPEG: « au delà de 85%, la taille de l’image grandit vite mais n’apporte que peu d’amélioration visuelle » (source: Google PageSpeed du 9 février 2019). Pour le format PNG et SVG, j’ai également opté pour une compression avec perte, pour une qualité de 90%. Bien entendu, je supprime toutes les informations EXIF et la correction Gamma des PNG (là encore, sur recommandation de Google). Enfin, j’ai mis la vitesse d’optimisation la plus lente pour avoir la meilleure compression.

Utilisation d’ImageOptim

Pour optimiser les images sur macOs avec ImageOptim, c’est très simple. Un clic droit sur l’image puis « Image Optimize » et le tour est joué. La compression peut prendre plusieurs secondes suivant la taille de l’image et la puissance de votre ordinateur.

Après compression, l’image est remplacée: il n’y a pas de copie de sauvegarde de l’image d’origine. Pour mon utilisation, ça m’arrange mais sachez le avant de traiter en lot des images précieuses.

Optimiser les images sur macOs clic droit

On peut traiter une image ou un lot d’image tout aussi simplement, en les sélectionnant et en faisant un clic droit.

ImageOptim est très efficace. Depuis que je l’utilise, Google PageSpeed n’a plus rien à redire sur mes images.

Exemple d’optimisation d’image

Démonstration sur une image au hasard. Au départ, cette image JPEG fait 9,8Mo. Après optimisation, on arrive à 5,9Mo. A l’arrivée, l’image est presque 40% plus légère. Ça veut également dire un coût de bande passante 40% moins élevé pour la même image.

OptimImage est simple, gratuit et efficace. Il fait une tâche et la fait bien. On serait beaucoup plus heureux si tout était aussi simple :).

Le même SSID pour le WiFi 2,4Ghz et 5Ghz?

Avec la généralisations des routeurs 5Ghz, je me suis posé la question s’il était préférable de conserver le même SSID pour le WiFi 2,4Ghz et 5Ghz, ou s’il valait mieux les différencier.

En théorie oui c’est mieux mais en fait, non.

Lorsqu’un réseau WiFi ayant le même SSID (le même nom) et la même sécurité mais émettant sur des fréquences différentes, le périphérique est libre d’utiliser celui qui lui plait.

En théorie, c’est génial: mon PC / Smartphone / Smart TV se connecte tout seul au meilleur réseau. Mais comment fait-il pour savoir quel réseau est le meilleur? Cette partie est inconnue et c’est bien le problème.

Ce que je constate sur mon iPhone XS et mon Macbook, c’est qu’il se connecte à celui qui a le meilleur signal. Comme le WiFi 2,4Ghz traverse mieux les murs, c’est souvent celui-ci que je capte mieux – bien qu’il soit plus lent!

La seule solution est de différencier les SSID des réseaux 2,4Ghz et 5Ghz, puis d’indiquer la priorité de connexion sur macOs/windows. Lorsque ce n’est pas possible, vous pouvez toujours n’enregistrer qu’un seul des 2 réseaux.

Ma recommandation, c’est donc de ne pas avoir le même SSID pour WiFi 2,4Ghz et 5Ghz: différenciez-les!

Logiciel pour écrire un eBook: lequel choisir pour Mac et Windows?

Quand j’ai débuté l’écriture de mon eBook, je me suis demandé comme vous: quel logiciel pour écrire un eBook dois-je choisir? C’est une question très importante car il serait très dommage de devoir refaire la mise en page à la fin.

Créer un eBook sur Mac

Créer un eBook sur Mac, c’est le plus simple. Apple propose 2 logiciels gratuits qui permettent de créer des livres numériques:

Apple iBooks Author est plus restrictif. Si vous voulez écrire un livre ayant peu d’éléments graphiques (un roman par exemple), iBooks Author sera idéal.

Apple Pages est plus complet, permet de faire plus de chose, de placer des éléments graphiques à des endroits précis, etc. C’est le bon choix si vous voulez écrire un livre numérique ayant beaucoup d’images.

Les deux solutions sont parmi les meilleurs. Vous pourrez écrire un bel ebook avec un logiciel agréable.

Les deux permettent d’exporter le fichier en format ePub v3, en PDF, ainsi que la publication directement dans Apple Books.

Créer un ePub avec Word

Non.

Microsoft Word ne permet pas l’exportation au format ePub. Il existe plusieurs logiciels, dont Calibre, permettant de convertir un fichier .docx en format ePub. Mais n’espérez pas grand chose. Ces convertisseurs fonctionnent très bien avec un document simple mais deviennent inutile si vous utilisez des polices particulières à intégrer ou une mise en page figée (fixed layout).

Créer un ePub avec LibreOffice

LibreOffice est le célèbre « clone » de Microsoft Office, en version libre et gratuite. Il fait parti des pépites du monde du libre, avec Mozilla Firefox, Linux, etc…

Depuis LibreOffice 6.1, il est possible de créer un document avec Writer et de l’exporter au format ePub, y compris les documents avec une mise en page figée.

Pour télécharger LibreOffice, ça se passe ici: https://fr.libreoffice.org/download/libreoffice-stable/

Pour installer LibreOffice sur Windows:

C:/> choco install libreoffice-fresh

Pour installer LibreOffice sur Mac:

flogg@MacBook:~$ brew cask install libreoffice

Créer un ePub avec Calibre

Calibre, c’est un peu le couteau suisse du ePub. Il permet de convertir, visualiser, cataloguer des livres numériques.

Calibre ne va pas permettre d’écrire un ePub, mais permettra de convertir un fichier docx en ePub par exemple.

Pour installer Calibre sur Windows:

C:\> choco install calibre

Pour installer Calibre sur Mac:

flogg@MacBook:~$ brew cask install calibre

J’ai essayé de l’utiliser. Il propose de tout faire, je confirme. En revanche, le résultat que j’obtenais était systématiquement décevant. J’imagine qu’en sachant très bien l’utiliser, il est capable de grandes choses. Toutefois, pour un novice, c’est un logiciel trop complexe. La conversion en format MOBI (Kindle) est trop ancienne et non recommandé par Amazon. Les autres conversions n’ont jamais donné un rendu correct.

Créer un ePub avec InDesign

Adobe InDesign, c’est le logiciel le plus cher pour créer un ePub. Créer un ePub avec InDesign nécessite de s’abonner à Adobe Creative Cloud pour 23,99€ minimum.

C’est certainement un très bon logiciel, largement utilisé pour la mise en page dans le journalisme.

Pour créer un ePub, il y a d’autres logiciels, moins cher ou gratuit qui permettent d’obtenir un niveau de qualité largement suffisant. C’est votre contenu qui est important et pas les artifices :).

Créer un ePub à partir d’un PDF

Je n’ai pas trouver de logiciel suffisamment bon pour convertir un PDF en ePub en conservant toutes les informations (mise en page, image, police, etc.).

En revanche, Amazon fournit un logiciel permettant de convertir un PDF en un format compatible avec la distribution via Amazon Kindle: Amazon Kindle Create.

Après avoir importé votre fichier d’origine en PDF, vous pourrez le convertir en format KPF qu’il sera ensuite possible de distribuer via Amazon. L’opération est simple et rapide, il suffit d’installer Amazon Kindle Create sur son ordinateur.

Comparatif: Logiciel pour écrire un eBook/ePub?

Si vous avez un Mac, la solution est claire: Pages ou iBooks Author. Personnellement, je préfère Pages car je l’utilise pour tout type de document.

Sur Windows, la solution est également claire: LibreOffice. C’est le seul logiciel réputé permettant d’exporter au format ePub.

Ces 2 solutions sont gratuites! Pas besoin d’investir dans un logiciel pour créer un eBook. Maintenant, concentrez-vous sur votre contenu, et débutez l’écriture! Quand vous aurez fini votre livre numérique, pensez à compresser votre ePub avant de le diffuser.