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.

Publié le
Catégorisé comme macOs Étiqueté

Activer TimeMachine sur SMB avec un NAS Lenovo IX2

Mon NAS n’est pas tout jeune. C’est un Lenovo IX2 qui est sorti en 2011. C’est pas le plus rapide, mais ça fait le boulot. Je ne m’en sers que pour des sauvegardes, rien de très intensif, et ça me suffit. Le problème, c’est que je rencontre beaucoup de problèmes de fiabilité avec les sauvegardes TimeMachine.

TimeMachine permet de faire des sauvegardes des Mac très facilement. Je l’utilise en WiFi sur 2 Macbook. Souvent, au moins une fois par mois, c’est un message m’indiquant qu’il faut créer à nouveau une sauvegarde TimeMachine. Ce message, c’est l’indicateur que la précédente sauvegarde est corrompue et qu’il faut tout recommencer. Il semblerait que l’origine de la corruption soit à mettre sur le dos du protocole AFP, le protocole réseau d’Apple. C’est vieux, c’est moisi et ce n’est plus maintenu par Apple. Ils indiquent eux-mêmes qu’il est préférable de passer sur des sauvegardes TimeMachine par SMB.

SMB, c’est comme CIFS, c’est le nom d’un protocole de communication réseau. C’est celui que Microsoft a implémenté dans Windows. Sous Linux, ça se fait avec Samba. MacOs sait utiliser ces partages réseau, mais ils ne permettaient pas les sauvegardes TimeMachine. Enfin, jusqu’à la version Samba 4.8.x qui le permet!

Mon NAS, le Lenovo IX2 vient de passer en EOL (End Of Life). Il n’est plus maintenu par Lenovo. La dernière mise à jour disponible indique une mise à jour vers Samba 4.9. Alors Bingo?

Non. Même si Samba est mis à jour, les options de configurations nécessaires au fonctionnement de TimeMachine ne sont pas là. Alors on va l’ajouter à la main.

Activer TimeMachine sur SMB avec un NAS Lenovo IX2

Désactiver AFP

On va commencer par désactiver AFP sur le NAS. Ça évitera une inutile confusion. Pour accéder au réseau, macOs utilise déjà SMB. AFP n’était utile que pour TimeMachine.

Désactiver le protocole AFP/TimeMachine

Préparer l’emplacement des sauvegardes

J’ai crée un partage spécial nommé « TimeMachine ». Vous pouvez aussi créer un dossier par utilisateur. Notez toutefois que toute modification dans l’interface concernant les partages annulera notre modification pour TimeMachine sur SMB.

Activer l’accès SSH

Pour activer l’accès SSH, il faut se rendre sur une page « secrète »: http://nas.local/manage/diagnostics.html

Indiquer un mot de passe, sachant que le mot de passe réel pour se connecter sera soho + MotDePasse. Par exemple, avec le mot de passe « babar », il faudra se connecter en SSH avec le mot de passe « sohobabar ».

Pour se connecter, ça se passe dans le terminal: ssh root@nas.local

Modifier le fichier smb.conf

Le fichier de configuration se situe dans /mnt/system/config/smb.conf.

root@Nas:/# nano /mnt/system/config/smb.conf

Voici la configuration de mon partage à l’origine:

[TimeMachine]
path= /mnt/pools/A/A0/TimeMachine/
max connections= 50
directory mode= 0777
create mode= 0777
follow symlinks= yes
wide links= no
strict allocate= no
nt acl support= no
dos filemode= no
writeable= no
valid users= "admin" "flogg"
store dos attributes= yes
write list= "admin" "flogg"

Voici la configuration cible:

[TimeMachine]
path= /mnt/pools/A/A0/TimeMachine/
max connections= 50
directory mode= 0777
create mode= 0777
follow symlinks= yes
wide links= no
nt acl support= no
dos filemode= no
valid users= "admin" "flogg"
store dos attributes= yes
write list= "admin" "flogg"
browseable = yes
writeable = yes
create mask = 0600
directory mask = 0700
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:time machine = yes

Concrètement, j’ai ajouté les 7 dernières lignes:

browseable = yes
writeable = yes
create mask = 0600
directory mask = 0700
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:time machine = yes

Et j’ai supprimé une ligne d’origine:

browseable= no

Plus d’infos sur la configuration Samba sur le blog de Adam Demasi.

Tester la configuration Samba

On relance Samba pour vérifier si tout fonctionne bien. Sur ce NAS, rien n’est normal donc on ne va pas relancer les processus, mais simplement recharger la configuration:

root@Nas:/# /usr/local/samba/bin/smbcontrol all reload-config

Retour sur un Mac. Normalement, le partage est censé s’afficher tout de suite dans TimeMachine. Mais pas chez moi. Il faut d’abord que je monte le partage une première fois, ensuite je peux configurer TimeMachine. Par la suite TimeMachine sait réutiliser le partage donc il s’agit simplement d’une manipulation pour la mise en place.

Depuis le Finder, aller dans « Aller -> Se connecter au serveur » et indiquer « smb:// » puis l’emplacement du partage. Chez moi c’est smb://nas.local/TimeMachine.

Une fois le partage monté, TimeMachine peut le voir. Je configure l’accès et c’est prêt!

Rendre la configuration Samba persistante

Quand vous redémarrerez le NAS, il perdra la modification de configuration. Pour la rendre persistante, il suffit de faire:

chattr +i /mnt/system/config/smb.conf

(Source)

Désactiver l’accès SSH

Maintenant que tout est fini, on peut se déconnecter et désactiver la connexion SSH depuis la même page http://nas.local/manage/diagnostics.html


Je viens de faire cette modification, j’espère que la fiabilité des sauvegardes va s’améliorer! Jusqu’ici, tout va mieux :).

Éviter le spam de commentaire WordPress, gratuit et sans plugin

Le spam de commentaire WordPress, c’est la plaie. C’est sans fin. Pour éviter le spam de commentaire WordPress, il y a heureusement des solutions. On peut le classer en 2 catégories:

  • le spam automatisé: en anglais, faisant souvent la promotion de médicament
  • le spam de promotion: des commentaires en français du genre « super article » qui en profite pour mettre son lien et essayer de gratter un backlink inutile.

Dans les 2 cas, on en veut pas. Voici le plan que je propose:

  • Activer la modération pour tous les commentaires: au lieu d’afficher tout de suite les commentaires, on les met en attente pour une approbation manuelle.
  • Mettre en place un liste noire de mots clés pour les commentaires: pour les envoyer tout de suite à la corbeille.
  • Supprimer le lien du « site internet » du commentaire.
Éviter ce genre de commentaire spam WordPress
Miam miam, du bon spam

Pourquoi ne pas utiliser Akismet? C’est pourtant gratuit pour les sites « non-commerciaux ». Oui, mais la notion de site commercial n’est pas super-définie. Si vous avez des liens affiliés, vous gagnez de l’argent, c’est donc commercial. L’autre raison, c’est que Akismet a beaucoup de faux-positif (des commentaires tagués comme spam par erreur): des commentaires légitimes qui ne s’affichent pas, des visiteurs mécontent d’être censurés.

Activer la modération de tous les commentaires

En premier lieu, on va donc éviter d’afficher ces commentaires. On va soumettre tous les commentaires à une approbation manuelle. WordPress a une option pour ça, dans « Réglage > Discussion ». Cochez « Le commentaire doit être approuvé manuellement ».

Notons que cette action ne va pas éviter le spam de commentaire WordPress. En revanche, les commentaires ne seront plus directement affiché sur le site ce qui préservera l’image de votre site.

Activer la modération des commentaires WordPress
Activer la modération des commentaires WordPress

Mettre en place une liste noire pour les commentaires spam WordPress

Ok, maintenant on reçoit un mail pour chaque commentaire en attente. Et il peut y en avoir beaucoup. Heuresement, la grande majorité du spam (99% chez moi), c’est le spam automatique en anglais pour des médicaments. C’est celui qui tombera dans le panneau de notre liste noire.

On va utiliser une autre fonctionnalité de WordPress: la mise à la corbeille des commentaires contenant les mots clés du spam. C’est encore dans « Réglages > Discussion ».

Liste noire de commentaire spam WordPress
Liste noire de commentaire spam WordPress

Il y a 3 écoles:

  • vous alimentez la liste noire à la main, suivant les cas rencontrés. C’est ce que je fais désormais.
  • vous utilisez une liste noire préconstruite, contenant la majorité des mots clés. C’est ce que je faisait, et j’utilisais cette liste noire. J’ai arrêté car il y avait trop de faux-positif.
  • Utiliser un plugin qui maintient à jour la liste noire. Par exemple Blacklist Updater ou Comment Blocklist Manager qui utilise la même source de liste noire qu’au point précédent.

Supprimer le lien du commentaire WordPress

Ce moyen, c’est spécialement dédié au spam de promotion. Ce cas est assez rare, je n’en rencontre pas beaucoup. Vous n’êtes pas obligé de faire cette étape, vous aller déjà bien éviter le spam de commentaire WordPress avec la modération et la liste noire.

Pour cette partie, on va ajouter du code dans WordPress. On peut le faire directement dans le fichier functions.php, mais je préfère le faire avec un plugin gérant ce genre de modification: Code Snippets.

Voici le code à ajouter pour ne pas afficher de lien pour le site:

add_filter( 'get_comment_author_link', 'rv_remove_comment_author_link', 10, 3 );
function rv_remove_comment_author_link( $return, $author, $comment_ID ) {
  return $author;
} 

add_filter('get_comment_author_url', 'rv_remove_comment_author_url'); 
function rv_remove_comment_author_url() {
  return false;
}
Code pour supprimer le lien des commentaires WordPress
Code pour supprimer le lien des commentaires WordPress

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.

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.

Publié le
Catégorisé comme macOs Étiqueté

Mes outils indispensables pour un audit SEO, 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 pour faire un audit de site web, ceux que j’utilise.

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

Nous allons voir 3 points:

  • le contenu
  • le SEO technique
  • l’analyse des concurrents

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 à la forme 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. C’est souvent mon premier outil SEO dans le cadre d’un audit de site web.

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 quel est le poids de ces sites.

C’est un outil indispensable pour construire votre stratégie backlink, mais aussi pour faire l’audit SEO du site web d’un concurrent.

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. Elle permet aussi de connaitre le temps de crawl accordé par Google.

Outils SEO indispensables: au final

Avec ces 6 services, vous saurez mieux comment appréhender le SEO de votre site, et comment utiliser ces outils pour un audit de site web. Ç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.

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

Publier un eBook sur Amazon Kindle en fixed layout

Après avoir créé mon ebook avec Apple Pages, j’ai obtenu un beau fichier ePub que j’ai pu compressé pour obtenir un fichier compressé.

Mon eBook est en fixed layout. C’est à dire que la mise en page ne peut pas être modifiée, le texte ne peut pas être agrandi ou réduit. L’avantage, c’est que mes éléments graphiques restent au bon endroit: je suis sûr que les lecteurs verront l’ebook comme je l’ai conçu.

J’upload mon fichier sur Amazon Kindle et je vérifie la Prévisualisation: rien ne va! Le format est bien respecté mais est tassé dans le coin supérieur droit.

J’ai passé des heures à lire la documentation officielle pour comprendre ce qui n’allait pas: il manque une balise dans l’ePub pour qu’Amazon l’interprète correctement.

L’information clef est au chapitre 10.1 du Amazon Kindle Publishing Guidelines (PDF): une balise « original-resolution » est nécessaire pour la bonne interprétation du format fixed layout.

<meta name="original-resolution"
content="1024x600"/>

Ok, c’est sympa, et alors? Pour vérifier si la balise est présente dans l’ePub, il faut:

  • Dézipper l’ePub
  • Ouvrir le fichier OPS/epb.opf

Faites une recherche de texte pour « original-resolution ». Dans mon cas, elle n’y était pas. Je l’ai donc ajouté moi-même. Première question: quel est ma résolution d’origine? Dans Apple Pages, j’ai choisi un format papier, en cm. Ça donne quoi en pixel?

Pour trouver la réponse, j’ai ouvert la 1ère page de mon ebook, c’est à dire le fichier OPS/page-1.xhtml. Vous devriez trouver une balise comme celle-ci:

<meta name="viewport" content="width=255.118px,height=453.543px"/>

Traduction: ma résolution d’origine est de 255×453.

Il suffit alors d’ajouter ma nouvelle balise dans le fichier OPS/epb.opf:

<meta name="original-resolution"
content="255x453"/>

ajouté juste après la balise

<meta property="rendition:layout">pre-paginated</meta>

Il ne reste plus qu’à reconstruire le fichier ePub correctement et le resoumettre à Amazon. Lors de la Prévisualisation, l’ebook apparaitra centré et prendra toute la largeur/hauteur disponible.

Cette astuce m’a bien aidé, même si au final, je n’ai pas soumis mon eBook à Amazon Kindle de cette manière là.

La raison est la suivante: mon eBook en format ePub fait 30Mo, après traitement par Amazon, il fait 60Mo. N’oublions pas qu’Amazon facture le coût de livraison en fonction du poids du fichier… merci!

Pourquoi un fichier Kindle est 2x fois plus gros? Il semble que le format converti contienne 2 eBook:

  • un premier, complet, avec les polices, compatibles avec les dernières liseuses/applications
  • un second, incomplet, sans certaines polices, sans lien mais compatibles avec leurs vieilles liseuses…

J’espère que cette astuce vous sera utile!

J’ai fait de l’orthodontie à 30 ans, la meilleure décision de ma vie?

J’ai fait de l’orthodontie à 30 ans. Plus précisément, j’ai commencé à 29,5 ans et je l’ai enlevé à 32,5 ans. 3 ans à porter des bagues collées aux dents, tenues par un gros câble gris. Ça n’a pas du tout été un frein et je le conseille à tous ceux qui, comme moi, complexent sur leur dentition.

Il y a plusieurs niveaux de traitements orthodontie. Moi, c’était du sérieux. Suffisamment sérieux pour que l’orthodontiste ne réussisse pas à attacher toutes les bagues au début. Durant cette période, je n’ai eu aucune remarque négative, je n’ai ressenti aucune gène. Au contraire! Les résultats étaient suffisamment rapide pour que je me mette à montrer mes dents bagués lorsque je souriais – chose que je ne faisais jamais avant, avec ma dentition pourrie.

 » Je vois que vous portez un appareil, j’hésite moi-même à en porter un mais j’ai peur des répercussions sur mon travail, qu’est-ce que ça à changé pour vous? »

Un conseiller Apple Store

J’ai eu beaucoup de questions comme ça. De personnes hésitantes, complexées.

1er RDV: Bagues vs Invisalign

Le premier RDV chez l’orthodontiste, c’est express. On regarde rapidement la dentition et on passe à la conclusion: Invisalign, c’est pas possible, trop de travail. Ce sera bagues.Au début, j’étais un peu déçu. Toutefois, ça a vite changé.

Invisalign

Ma femme a fait un petit traitement Invisalign (je pense que c’était surtout pour m’accompagner). Elle devait enlever les gouttières à chaque repas et c’était très douloureux car il faut tirer fort pour les enlever. Lorsqu’on les remet après 1h en liberté, le retour en « prison » des dents est aussi douloureux. Toutes les 2 semaines, on change de gouttières pour faire avancer le traitement.

Alors oui, Invisalign ça ne se « voit » pas. Sauf qu’en fait ça se voit. Et ça peut aussi s’entendre! Il est plus difficile de parler lorsqu’on porte des gouttières tout le temps.

J’ai l’impression que le traitement était plus lent. Le rythme de changement des gouttières est prévu à l’avance. Peu importe comment votre dentition réagi, ça suivra le rythme prévu par Invisalign.

Les bagues

J’ai eu des bagues céramiques devant (blanc) et métal plus loin (gris), avec un câble en métal (gris). Oui, ça se voit. La bouche est plus grosse car les lèvres doivent recouvrir l’appareil dentaire. D’ailleurs, au début, j’avais même du mal à fermer la bouche. J’ai aussi eu des petites coupures dans la bouche lié aux bagues qui ont des arrêtes tranchantes.

Toutefois, ça a aussi des avantages. Avec un appareil dentaire à bagues, les dents sont en « prison », toute la journée, toute la nuit, sans interruption. Au début, c’est une sensation étrange. Rapidement, ça devient normal et on oublie (Là où Invisalign le rappel à chaque repas).

Le gros inconvénient, c’est si vous devez aller chez le dentiste (pour soigner une carie). Le dentiste n’a pas les outils pour enlever l’appareil dentaire, il faut alors: prendre 2 RDV chez l’orthodontiste et un RDV chez le dentiste au milieu, le tout en moins de 24H. C’est vraiment très mal foutu. L’idéal est d’aller dans un cabinet qui fait dentiste et orthodontiste.

2ème RDV: le scanner de dents

Pour bien comprendre tout le travail à faire, l’orthodontiste va numériser complètement la dentition. Concrètement, c’est une caméra spéciale qui va scruter les moindres recoin de la dentition. C’est assez long, environ 30mn. L’orthodontiste passe sur chaque dent, une à une. J’avais une dentition vraiment pas ouf, ça peut expliquer le temps nécessaire aussi.

Du 3ème RDV au dernier RDV

Après, c’est toujours pareil. Les dents bougent progressivement, on change de câble. C’est légèrement douloureux lorsque le câble est changé mais ça ne dure que quelques heures.

Le changement est très rapide au début. J’avais l’impression que mes dents étaient parfait en moins de 6 mois. Le reste du traitement, c’était pour parfaire la dentition.

Au bout de 18 mois, j’ai commencé à avoir des élastiques. Ils étaient nécessaires pour corriger un autre problème de ma dentition, l’occlusion croisée. À droite, j’avais les dents inférieures à l’extérieure des dents supérieurs.

Les élastiques, c’est un peu plus contraignant. Il faut les enlever quand on mange et parfois ils cassent. Mais il n’y a pas vraiment de douleur associé.

Attention, photos dégueulasse!

Le dernier RDV, la dépose de l’appareil dentaire et la contention

3 ans après l’installation, j’ai l’impression que l’appareil dentaire et les bagues font partie de moi. Mais je suis pas mécontent de l’enlever quand même.

L’enlèvement des bagues, c’est facile et c’est rapide. Ça fait un peu peur car les bagues sont détruites à la pince coupante, directement sur les dents. Elles étaient bien collés!

Ensuite, place au nettoyage de fond en comble. Le but c’est d’enlever tous les bouts de calcaires, toutes les impuretés. Le fil dentaire doit passer entre chaque dent. Le nettoyage dure environ 30mn. C’est un peu désagréable au début. J’ai l’impression que c’était de l’eau sous pression avec de tout petits morceaux de sable. À la fin du nettoyage, les dents sont beaucoup plus blanches. La sensation est très agréable.

Ensuite, c’est la « contention ». Concrètement, l’orthodontiste va collé un câble métallique derrière les dents. Ce câble est prévu pour rester entre 5 ans et toute la vie. Au début, la sensation du câble est gênante pour la langue mais on s’y habitue rapidement également.

Enfin, l’empreinte. Pour s’assurer que les dents gardent la bonne position, il faut porter des gouttières toutes les nuits pendant 6 mois. L’empreinte, c’est sauvage. Il faut mordre dans une pâte spéciale pendant 3mn. Ensuite, l’orthodontiste va récupérer l’empreinte en tirant très fort. C’est pas agréable du tout. La fabrication des gouttières prend environ 1 semaine et c’est fini!

Prix de l’orthodontie à 30 ans

Il n’y aucune prise en charge de ce traitement par l’Assurance Malade. Mon orthodontiste fonctionnait au semestre. Je payais tous les 6 mois environ 1600€. Le dernier RDV, la contention avec le nettoyage et l’empreinte, coûte 500€.

Au total, l’orthodontie à 30 ans m’a couté un peu plus de 5000€, environ 140€ par mois, environ 1 iPhone par an.

Tout le monde dit que c’est cher. Je l’ai fait et je trouve que c’est une dépense totalement justifiée.


Pour terminer, l’orthodontie à 30 ans, je conseille.

Publié le
Catégorisé comme Lifestyle

Écrire un ePub en Markdown

Ça y’est, je crois que j’ai trouvé la meilleure méthode pour écrire un livre électronique: le markdown! Pour écrire un ePub en markdown, c’est simple et ça permet de l’exporter facilement en PDF et EPUB. Le top du top, c’est que le fichier EPUB est très bien fait et facilement compatible avec les liseuses. Ce que je n’arrivais pas à faire avec les autres logiciels pour écrire un ePub.

C’est quoi le Markdown?

Markdown, c’est un format d’écriture simple qui permet une mise en forme basique (voir la page Wiki). Voici à quoi ressemble un texte markdown:

**Ceci est un passage écrit en gras**, la suite ne l'étant pas. On peut aussi écrire en *italique*.

Ceci est un passage écrit en gras, la suite ne l’étant pas. On peut aussi écrire en italique.

Le Markdown est très restrictif. On ne peut pas faire n’importe quoi avec. Ce n’est pas si souple qu’un Pages ou Word. Mais ces restrictions le rendent idéal pour écrire un livre électronique ePub. Pas de surprise: le « peu » de chose que l’on peut faire avec le Markdown sera parfaitement retranscrit dans le livre électronique, dans une syntaxe très pure. Avec les autres logiciels, plus souples, j’ai toujours obtenu un rendu qui paraissant bien mais qui devenait très très mauvais dès qu’on changeait de lecteur ePub (Apple Livres, Google Play Livres, Kobo, etc.).

Quels logiciels pour écrire en Markdown?

Moi, j’utilise tout simplement Visual Studio Code. C’est ce que j’utilise pour programmer également.

Pour ma femme, je lui ai installer MacDown qui a l’avantage de montrer un rendu du code en temps réel. C’est plus agréable de travailler ainsi pour un non-technicien.

Comment organiser ses fichiers pour écrire un livre électronique en Markdown

En écrivant le livre en Markdown, on sépare un peu plus les images, de la mise en page, du texte. C’est tout l’inverse d’un éditeur WYSIWYG (What you see is what you get).

Les sources d’un livre électronique écrit en markdown ressemble donc à ça:

mon-livre/
-- images/
-- -- image1.jpg
-- -- image2.jpg
-- 01-chapitre1.md
-- 02-chapitre2.md
-- style.css
-- metadata.yaml

On stocke les images dans un dossier spécial. On a un fichier md par chapitre. Enfin, on a un fichier configurant la mise en page style.css et un fichier contenant les méta-données du livre électronique metadata.yaml.

Finit le gros fichier de 200Mo contenant textes et images. A la place, on a un dossier image et plusieurs fichiers texte simple.

Comme les images sont dans un dossier distinct, il est très simple de les compresser efficacement. On se souvient que les images sont la principale sources de gains lorsque j’ai voulu compresser mon ePub.

Comment transformer du Markdown en ePub

Pour transformer un document Markdown en ePub, j’utilise le logiciel libre Pandoc. L’utilisation est très simple. D’abord, créer un fichier metadata.yaml avec les métadonnées du livre qui seront inclus dans le fichier ePub. Par exemple:

---
title: Mon super livre électronique
pagetitle: Mon super livre électronique
author:
- Florian Guillaumin
rights: © Florian Guillaumin, 2019
language: fr-FR
ibooks:
  version: 1.4
cover-image:
  images/cover.jpg
css:
  - pandoc.css
  - ebook.css
...

Ensuite, on génère le fichier avec la commande:

➜  ~ pandoc metadata.yaml *.md -o monLivre.epub

Après quelques secondes, le livre est prêt!

Comment transformer du Markdown en PDF

Pandoc sait le faire mais il y a mieux. En fait, le fichier crée par Pandoc est un peu moche. Il y a certain moyen de l’améliorer mais j’ai trouver un autre moyen: transformer le Markdown en une page web et « imprimer » cette page web en PDF. Pour imprimer en PDF, j’utilise le logiciel libre WkHtmlToPdf.

Les deux étapes sont donc:

➜  ~ pandoc metadata.yaml *.md -o monLivre.html --section-divs --self-contained
➜  ~ wkhtmltopdf monLivre.html monLivre.pdf

Le markdown, c’est pour moi la meilleure manière de gérer mes livres électronique. Et c’est encore plus maboule si vous utilisez Git et un CI/CD avec.

Par exemple, je gère les versions de mes livres sur GitLab. À chaque mise à jour, ça déclenche mon workflow automatique qui retaille les images (pour être compatible avec l’AppStore), crée le fichier ePub, vérifie le fichier ePub, crée le fichier PDF et si tout est bon, exporte même les nouvelles versions vers un dépôt S3. C’est depuis ce dépôt que les livres peuvent être téléchargés donc dès que je fais une mise à jour, elle est automatiquement disponible pour les utilisateurs dans les 10mn qui suivent: magique!

Publié le
Catégorisé comme eBook Étiqueté ,