Utiliser un NAS Synology comme disque Time Machine sous MacOS photo 11

Utiliser un NAS Synology comme disque Time Machine sous MacOS

MacOS dispose de Time Machine, l’utilitaire qui permet de sauvegarder et restaurer le système d’exploitation de votre Mac, ainsi que tous vos fichiers et documents.

Time Machine nécessite normalement un disque dur dédié à toutes vos sauvegardes. Un énième disque dur de sauvegarde… sauf si vous avez un NAS Synology!

Il est en effet possible d’utiliser une partie de votre Synology pour accueillir les sauvegardes de Time Machine alors autant l’utiliser !

Ajout du support de Time Machine dans le DSM du Synology

Nous avons besoin de configurer DSM pour qu’il puisse converser correctement avec Time Machine : il nous faut créer un utilisateur dédié avec des droits propres, un répertoire de destination et un quota pour ne pas que l’espace du NAS ne soit complètement phagocyté.

Ajout d’un répertoire partagé

Dans l’interface d’administration DSM, rendez-vous dans Panneau de Configuration > Dossier partagé et cliquez sur le bouton Créer un dossier partagé :

Utiliser un NAS Synology comme disque Time Machine sous MacOS photo

Vous pouvez maintenant éditer les paramètres du dossier partagé :

Utiliser un NAS Synology comme disque Time Machine sous MacOS photo 1

Sur l’écran suivant, vous pouvez choisir de chiffrer les sauvegardes de Time Machine. Pour un usage purement personnel, j’opte pour la rapidité, sans chiffrement.

Cliquez sur Appliquer pour sauvegarder les changements.

Création d’un utilisateur Time Machine

Nous créons un utilisateur qui sera dédié à la sauvegarde Time Machine, avec des droits spéciaux.

Utiliser un NAS Synology comme disque Time Machine sous MacOS photo 2

On entre le nouveau mot de passe pour notre utilisateur que nous appellons TimeMachineUser:

Utiliser un NAS Synology comme disque Time Machine sous MacOS photo 3

Au niveau des groupes utilisateurs, il fera parti du groupe des utilisateurs par défaut (users) :

Utiliser un NAS Synology comme disque Time Machine sous MacOS photo 4

On donne à notre utilisateur les droits de lecture et écriture sur le dossier partagé TimeMachine:

Utiliser un NAS Synology comme disque Time Machine sous MacOS photo 5

Je vous recommande de définir un quota votre utilisateur Time Machine, afin d’éviter que les sauvegardes ne saturent complètement le NAS :

Utiliser un NAS Synology comme disque Time Machine sous MacOS photo 6

Cliquez sur Appliquer pour sauvegarder les changements.

Lire la suite

Débloquer le démarrage de Meld sous MacOSX Mojave photo

Débloquer le démarrage de Meld sous MacOSX Mojave

Depuis la mise à jour de MacOSX Mojave, il est devenu impossible de lancer Meld, l’application multi-plateforme dont je me sers pour comparer plusieurs versions de fichiers afin de visualiser les différences dans du texte ou code.

Débloquer le démarrage de Meld sous MacOSX Mojave photo

L’application se lance mais ne présente pas la fenêtre habituelle qui permet de sélectionner les options de comparaison. Le menu apparait bien en haut de l’écran mais reste inutilisable.

On peut débloquer la situation très facilement – ouvrez une fenêtre de terminal et lancez les commandes suivantes:

cd ${HOME}
rm ./.local/share/meld -rf 
rm ./Library/Preferences/org.gnome.meld.plist -f
rm "./Library/Saved Application State/org.gnome.meld.savedState/" -rf Code language: JavaScript (javascript)

Ces commandes permettent de supprimer le fichier de préférence GNOME de l’application et de réinitialiser l’état de l’application.

Une fois que vous avez exécuté ces commandes, relancez Meld – il me semble plus lent qu’avant à démarrer mais il est tout à fait fonctionnel ensuite, ce qui est l’essentiel.

Linux : désactiver les emails de notification d'une tâche cron photo

Linux : désactiver les emails de notification d’une tâche cron

La plupart des tâches cron sont exécutées à un moment où elles n’empiètent pas sur les ressources du serveur (i.e. la nuit).

Or crontab envoie un email récapitulatif à chaque fois qu’une tâche est complétée, ce qui peut vite devenir pénible à gérer.

Heureusement, il existe plusieurs manières d’empêcher de recevoir ces emails de notification de tâches cron.

1. Méthode nucléaire : rendre la variable MAILTO nulle

Vous pouvez éditer le fichier /etc/crontab et rendre la variable MAILTO nulle, comme ceci:

MAILTO=""Code language: JavaScript (javascript)

Cela désactive effectivement tous les emails envoyés depuis crond. C’est par contre une méthode nucléaire : si vous voulez une notification, il faudra l’envoyer depuis le script et non cron.

Cela empêche également de recevoir toute notification en cas d’erreur de la tâche cron, ce qui est très gênant – ce n’est pas vraiment la méthode que je conseille.

2. Rediriger STDOUT et STDERR vers null pour supprimer toute sortie

Si vous supprimez la sortie du script, crond n’aura rien à envoyer.

Ajoutez ceci à l’entrée de votre crontab pour envoyer toute sortie (STDERR et STDOUT) vers /dev/null:

>/dev/null 2>&1Code language: JavaScript (javascript)

Voici un exemple qui lance un script toutes les 5 minutes, sans sortie:

*/5 * * * * /example/script >/dev/null 2>&1Code language: JavaScript (javascript)

Le principal inconvénient est que cela supprime également toutes les erreurs qui pourraient être utiles au débuggage du script.

3. Configurer crond pour envoyer la sortie du script vers les logs système et désactiver la notification de la sortie

Vous pouvez configurer crond en éditant le fichier /etc/sysconfig/crond pour y changer la ligne CRONDARGS.

L’argument -s envoie la sortie vers le log système et l’argument -m off désactive la notification email du résultat de la tâche.

Voici un exemple :

cat /etc/sysconfig/crond

Résultat:

# Settings for the CRON daemon.
# CRONDARGS= :  any extra command-line startup arguments for crond
CRONDARGS=-s -m offCode language: PHP (php)

Il faut ensuite relancer le service cron pour appliquer la nouvelle configuration avec les nouveaux arguments:

service cron restart

Conclusion

Toutes ces méthodes permettent de supprimer totalement les notifications emails du service cron lorsqu’une tâche est lancée.

Si vous souhaitez ne pas produire de sortie mais garder la possibilité de recevoir un email en cas d’erreur, pensez à rediriger STDOUT vers /dev/null:

*/5 * * * * /example/script > /dev/nullCode language: JavaScript (javascript)
The Waliking Dead saison 9 photo

The Walking Dead saison 9

La neuvième saison de The Walking Dead a été diffusée sur AMC.

The Waliking Dead saison 9 photo

Dix-huit mois après la défaite de Negan, les différentes communautés travaillent à la reconstruction de la société. Cependant, le sanctuaire souffre d’un terrain stérile et du soutien sous-jacent à Negan. Rick se rend dans un musée de Washington, DC, pour récupérer du matériel des premiers pionniers américains, comme des socs de charrue.

Sur le chemin du retour, ils découvrent que le pont principal qui mène à Hilltop a été anéanti par une tempête, les obligeant à faire un détour. Un jeune homme, Ken, est tué alors qu’il protégeait les chevaux du groupe des marcheurs.

Gregory, évincé du poste de chef de Hilltop, convainc le père de Ken, Earl, d’essayer d’assassiner Maggie, mais il échoue. Rick et Michonne demandent à Maggie l’aide de Hilltop pour donner de la nourriture au Sanctuaire, mais celle-ci refuse. Ce soir-là, Maggie fait exécuter publiquement Gregory pour l’ensemble de son œuvre.

La neuvième saison commence un an et demi après les évènements de la huitième saison. Ce sera également la dernière saison avec Andrew Lincoln et Lauren Cohan dans la série.

Lire la suite

Serveur dédié : mettre à jour OpenSSL sous Debian pour bénéficier de TLS 1.3 photo

Serveur dédié : mettre à jour OpenSSL sous Debian pour bénéficier de TLS 1.3

Cet article fait suite à un précédent tutoriel – installer la dernière version d’OpenSSL sous Debian.

Cela fait un petit moment que je voulais mettre à jour ma configuration TLS et je me suis dit que la Toussaint serait parfaite pour cela.

Aujourd’hui, le serveur passe donc à TLS 1.3, ce qui nécessite une mise à jour d’OpenSSL et la mise à jour des ciphers sous NginX.

Mise à jour d’OpenSSL

Je n’avais pas mis OpenSSL à jour depuis le dernier tuto donc il est aisé de connaitre sa version:

openssl version

Résultat :

OpenSSL v1.1.0fCode language: CSS (css)

Un autre moyen de connaître les versions disponibles dans les repos:

dpkg -l '*openssl*' | awk '/^i/{print $2}' | xargs apt-show-versions -aCode language: JavaScript (javascript)

Résultat:

openssl:amd64 1.1.0f-5 install ok installed
openssl:amd64 1.1.0f-3+deb9u2 stable debian.mirrors.ovh.net
openssl:amd64 1.1.0f-3+deb9u2 stable security.debian.org
openssl:amd64 1.1.0f-5 newer than version in archive
perl-openssl-defaults:amd64 3 install ok installed
perl-openssl-defaults:amd64 3 stable debian.mirrors.ovh.net
perl-openssl-defaults:amd64/stable 3 uptodate
python3-openssl:all 16.2.0-1 install ok installed
python3-openssl:all 16.2.0-1 stable debian.mirrors.ovh.net
python3-openssl:all/stable 16.2.0-1 uptodate

Pour obtenir la version 1.1.1 d’OpenSSL, qui est le sésame pour TLS 1.3, nous allons temporairement ajouter le repo sid, mettre à jour OpenSSL et ses dérivés puis remettre apt dans sa position stable.

On met à jour nos sources apt:

nano /etc/apt/sources.listCode language: PHP (php)

et on y ajoute sid:

deb http://ftp.debian.org/debian sid main
deb-src http://ftp.debian.org/debian sid mainCode language: JavaScript (javascript)

On met à jour apt:

apt update

Et on met à jour openssl:

apt install openssl libssl1.1Code language: CSS (css)

Résultat:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libc-bin libc-dev-bin libc-l10n libc6 libc6-dev libc6-i386 libnih-dbus1 libnih1 libssl-dev locales
  python-httplib2
apt-listchanges: News
---------------------

glibc (2.26-5) unstable; urgency=medium

  Starting with version 2.26-1, the glibc requires a 3.2 or later Linux
  kernel.  If you use an older kernel, please upgrade it *before*
  installing this glibc version. Failing to do so will end-up with the
  following failure:

    Preparing to unpack .../libc6_2.26-5_amd64.deb ...
    ERROR: This version of the GNU libc requires kernel version
    3.2 or later.  Please upgrade your kernel before installing
    glibc.

  The decision to not support older kernels is a GNU libc upstream
  decision.

  Note: This obviously does not apply to non-Linux kernels.

 -- Aurelien Jarno <aurel32@debian.org>  Tue, 23 Jan 2018 22:03:12 +0100

openssl (1.1.1-2) unstable; urgency=medium

  Following various security recommendations, the default minimum TLS version
  has been changed from TLSv1 to TLSv1.2. Mozilla, Microsoft, Google and Apple
  plan to do same around March 2020.

  The default security level for TLS connections has also be increased from
Suggested packages:
  glibc-doc
The following packages will be upgraded:
Setting up libc6-i386 (2.27-8) ...
Setting up python-httplib2 (0.11.3-1) ...
Processing triggers for libc-bin (2.27-8) ...
Setting up libssl1.1:amd64 (1.1.1-2) ...
locale: Cannot set LC_ALL to default locale: No such file or directory
Setting up libc-l10n (2.27-8) ...
Setting up openssl (1.1.1-2) ...
Installing new version of config file /etc/ssl/openssl.cnf ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up libc-dev-bin (2.27-8) ...
Setting up libc6-dev:amd64 (2.27-8) ...
Setting up locales (2.27-8) ...
Installing new version of config file /etc/locale.alias ...
Generating locales (this might take a while)...
  en_GB.ISO-8859-1... done
  en_GB.UTF-8... done
  en_GB.ISO-8859-15... done
Generation complete.
Setting up libnih1 (1.0.3-10+b1) ...
Setting up libnih-dbus1 (1.0.3-10+b1) ...
Setting up libssl-dev:amd64 (1.1.1-2) ...
Processing triggers for libc-bin (2.27-8) ...
Scanning processes...
Scanning candidates...
Scanning linux images...
Failed to retrieve available kernel versions.
Restarting services...
 invoke-rc.d bind9 restart
 invoke-rc.d cgmanager restart
 invoke-rc.d cgproxy restart
 invoke-rc.d fail2ban restart
ERROR  No section: 'Definition'
ERROR  No section: 'Definition'
ERROR  No section: 'Definition'
ERROR  No section: 'Definition'
ERROR  No section: 'Definition'
ERROR  No section: 'Definition'
ERROR  No section: 'Definition'
ERROR  No section: 'Definition'
 invoke-rc.d haveged restart
 invoke-rc.d irqbalance restart
 invoke-rc.d lvm2-lvmetad restart
 invoke-rc.d lvm2-lvmpolld restart
 invoke-rc.d lwresd restart
 invoke-rc.d mdadm restart
 invoke-rc.d mdadm-waitidle restart
 invoke-rc.d minissdpd restart
 invoke-rc.d nginx restart
 invoke-rc.d opendkim restart
 invoke-rc.d opendmarc restart
 invoke-rc.d php7.2-fpm restart
 invoke-rc.d postfix restart
 invoke-rc.d redis-server restart
 invoke-rc.d rsyslog restart
 invoke-rc.d saslauthd restart
 invoke-rc.d ssh restart
Services being skipped:
 invoke-rc.d dbus restart
No containers need to be restarted.</aurel32@debian.org>Code language: PHP (php)

On teste notre nouvelle verison d’openssl:

openssl version

Résultat:

OpenSSL 1.1.1  11 Sep 2018Code language: CSS (css)

Et en un peu plus précis:

dpkg -l '*openssl*' | awk '/^i/{print $2}' | xargs apt-show-versions -aCode language: JavaScript (javascript)

Résultat:

openssl:amd64 1.1.1-2 install ok installed
openssl:amd64 1.1.0f-3+deb9u2 stable debian.mirrors.ovh.net
openssl:amd64 1.1.0f-3+deb9u2 stable security.debian.org
openssl:amd64 1.1.1-2         sid    ftp.debian.org
openssl:amd64/sid 1.1.1-2 uptodate
perl-openssl-defaults:amd64 3 install ok installed
perl-openssl-defaults:amd64 3 stable debian.mirrors.ovh.net
perl-openssl-defaults:amd64 3 sid    ftp.debian.org
perl-openssl-defaults:amd64/stable 3 uptodate
python3-openssl:all 16.2.0-1 install ok installed
python3-openssl:all 16.2.0-1 stable debian.mirrors.ovh.net
python3-openssl:all 18.0.0-1 sid    ftp.debian.org
python3-openssl:all/stable 16.2.0-1 upgradeable to 18.0.0-1

Mettre à jour les ciphers pour NginX

Il ne nous reste plus qu’à ajouter les nouveaux ciphers pour TLS 1.3 pour les services sécurisés.

Nous mettons donc la configuration des server blocks NginX à jour:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "TLS13+AESGCM+AES128:EECDH+AESGCM:EECDH+CHACHA20";Code language: CSS (css)

On vérifie la configuration:

nginx -t

et on redémarre le serveur:

service nginx restart

Il ne vous reste plus qu’à vérifier votre configuration TLS sur SSL Labs.

Motivation : Be Great, Powerful Beyond Measure photo

Motivation : Be Great, Be Powerful Beyond Measure

Our deepest fear is not that we are inadequate, our deepest fear is that we are powerful beyond measure, beyond measure.

Ima show you, how great I am.

Last night I cut the light off in my bedroom, hit the switch, and was in the bed before the room was dark.

Ima show you, how great I am.

Only last week, I murdered a rock, injured a stone, hospitalized a brick, Im so mean I make medicine sick.

Ima show you, how great I am.

This kids gonna be the best kid in the world.
This kids gonna be somebody better than anybody I ever knew.

Ima show you, how great I am.

I have wrastled with an alligator, I done tussled with a whale, I done handcuffed lightnin, thrown thunder in jail.

Ima show you, how great I am.

All you chumps are gonna bow when I whoop him, all of you, I know you got him, I know you’ve got him picked, but the man’s in trouble, Ima show you how great I am.

But somewhere along the line you changed, you stopped being you.
You let people stick a finger in your face and tell you youre no good, and when things got hard, you started looking for something to blame, like a big shadow.
Let me tell you something you already know, the world ain’t all sunshine and rainbows, it’s a very mean and nasty place and I don’t care how tough you are, it will beat you to your knees and keep you there permanently if you let it.

You, me, or nobody, is gonna hit as hard as life; but it ain’t about how hard you hit, it’s about how hard you can get hit and keep moving forward, how much you can take and keep moving forward. That’s how winning is done !

Cause if you’re willin to go through all the battling you gotta go through to get to where you wanna get, whos got the right to stop you.
I mean maybe some of you guys got something you never finished, something you really want to do, something you never said to somebody, something.
And you’re told no even after you pay your dues, whos got the right to tell you that, who? Nobody!
It’s your right to listen to your gut, it ain’t nobody’s right to say no, after you earn the right to be where you want to be and do what you want to do.

Now if you know what you’re worth, then go out and get what you’re worth.
But you’ve gotta be willing to take the hits.
And not pointing fingers saying you aint where you wanna be because of him, or her, or anybody.
Cowards do that and that ain’t you!
You’re better than that!

Our deepest fear is not that we are inadequate. Our deepest fear is that we are powerful beyond measure. It is our light, not our darkness that most frightens us.

There is nothing enlightened about shrinking so that other people will not feel insecure around you. We are all meant to shine, as children do. It is not just in some of us; it is in everyone and as we let our own light shine, we unconsciously give others permission to do the same. As we are liberated from our own fear, our presence automatically liberates others.

Our deepest fear is not that we are inadequate, our deepest fear is that we are powerful beyond measure.

All you chumps are gonna bow when I whoop him, all of you, I know you got him, I know you’ve got him picked, but the man’s in trouble, Ima show you how great I am.

Edited by Eric Horner. Video footage from Snatch. Audio clips from Muhammad Ali’s speech, Rocky, and Coach Carter, and text by Marianne Williamson. Still photography by Gabriel Stiritz and Lauren Lauren Herreid. Music from Transformers and Gladiator (Hanz Zimmer).

Serveur dédié : remplacer gzip par pigz pour profiter de la compression multi-core photo

Serveur dédié : remplacer gzip par pigz pour profiter de la compression multi-core

Tous les matins, une sauvegarde des sites hébergés sur le serveur est effectuée.

A ce moment là, gzip tourne à plein régime et utilise pendant un certain temps le CPU – la montée en charge atteint 50%, ce qui devient limite pour la réactivité des sites Et pour cause : gzip ne fonctionne qu’en mono-core.

Il nous faut donc optimiser tout cela ! Mark Adler, l’auteur de gzip, a écrit pigz (qui se prononce pig-zee, à l’américaine) pour compresser fichiers et répertoires en utilisant tous les coeurs du processeur simultanément.

Pigz représente donc un gain de temps mais allège également la charge du processeur, sollicité moins longtemps.

Installation de pigz

Pigz est disponible sur la plupart des distributions linux, on peut donc l’installer avec un simple :

apt install pigz

L’autre avantage, c’est que si on lit le manuel, on se rend compte que les options et paramètres sont les mêmes que ceux de gzip, ce qui en fait un drop-in replacement de choix.

Remplacer gzip par pigz sur le serveur

L’occasion d’optimiser la compression des sauvegardes est trop belle : et si nous remplacions tout simplement gzip par pigz, sur l’intégralité du serveur et sans toucher à aucun de nos scripts ?

Allez, c’est parti ! On édite donc le fichier .bashrc :

nano .bashrcCode language: CSS (css)

et on y ajoute les deux fonctions suivantes :

###
# Matt Biscay
# https://www.skyminds.net/?p=29838
# Use pigz instead of gzip
###
function gzip(){
 pigz $@
}
export -f gzip

function gunzip(){
 unpigz $@
}
export -f gunzipCode language: PHP (php)

Cela nous permet de remplacer les fonctions gzip et gunzip par pigz et unpigz, respectivement.

Sauvegardez le fichier et rechargez-le pour activer les changements :

source .bashrcCode language: CSS (css)

Et voilà : pigz remplace désormais gzip pour toutes les opérations de compression du serveur. A nous la compression multi-core :)

Glen Hansard and Marketa Irglova - Falling Slowly photo

Glen Hansard and Markéta Irglová – Falling Slowly

Je vous ai déjà parlé du film Once – que je recommande toujours chaudement – donc voici un autre extrait musical avec la chanson “Falling Slowly”, interprétée par Markéta Irglová et Glen Hansard :

C’est un plaisir d’écouter le duo des voix et l’alliance guitare acoustique / piano.

Pour la petite histoire, Markéta Irglová retrouve souvent Glen Hansard lors de ses concerts pour interpréter la chanson en duo.

“Falling Slowly” a reçu plusieurs prix après la sortie du film : Academy Award for Best Original Song et Critics’ Choice Movie Award for Best Song.

Paroles

I don’t know you
But I want you
All the more for that
Words fall through me
And always fool me
And I can’t react
And games that never amount
To more than they’re meant
Will play themselves out

Take this sinking boat and point it home
We’ve still got time
Raise your hopeful voice you have a choice
You’ll make it now
Falling slowly, eyes that know me
And I can’t go back

Moods that take me and erase me
And I’m painted black
You have suffered enough
And warred with yourself
It’s time that you won

Take this sinking boat and point it home
We’ve still got time
Raise your hopeful voice you have a choice
You’ll make it now
Falling slowly sing your melody
I’ll sing along

Démarrer votre NAS Synology à distance avec Wake On Lan photo 1

Démarrer votre NAS Synology à distance grâce à Wake On Lan (WOL)

J’ai récemment réorganisé le matériel informatique de la maison pour ne plus voir la box et le NAS traîner dans la pièce à vivre.

J’avais tout mis là par défaut parce qu’il y avait une prise de téléphone à proximité mais finalement, a-t-on vraiment besoin d’avoir cela sous les yeux en permanence ?

Du coup, hop, tout est monté à l’étage. Le NAS Synology est configuré pour démarrer chaque soir, rapatrier les derniers épisodes et récupérer les derniers sous-titres puis s’éteindre à l’heure du coucher.

Mais il arrive parfois que l’on ait besoin d’avoir accès à nos fichiers en dehors de cette plage horaire… mais maintenant, il faut changer de pièce, monter l’escalier, redescendre et au final, on perd le fil de ce que l’on était en train de faire !

Voici donc comment démarrer votre NAS Synology à distance, sans bouger de votre chaise (pas bien!) en utilisant la fonction Wake On Lan.

La fonction Wake On Lan (WOL)

La fonction Wake On LAN (WOL) est une technologie qui permet de réveiller ou démarrer à distance un ordinateur ou périphérique qui est en veille ou éteint.

Le Disk Station Manager (DSM) du Synology posséde la fonction WOL, qui est présente sur la plupart des modèles de NAS de la marque, ce qui vous permet de démarrer votre NAS sans avoir à vous lever pour aller appuyer sur le bouton de mise sous tension.

Notez que les requêtes WOL sont plutôt destinées au réseau local.

Étape 1 : configuration du Wake On Lan (WOL) sur le Synology

Identifiez-vous sur le DSM et rendez-vous sur Panneau de Configuration > Matériel et Alimentation et cochez la case Activer WOL sur le réseau local:

Démarrer votre NAS Synology à distance avec Wake On Lan photo

Sauvegardez les changements.

Étape 2 : utiliser l’utilitaire WakeOnLan

Il existe un petit utilitaire, WakeOnLan, qui permet d’envoyer le paquet magique qui démarrera le Synology à distance:

Démarrer votre NAS Synology à distance avec Wake On Lan photo 1

WOL est activé lorsqu’un paquet magique (magic packet en anglais) est envoyé au NAS. Ce paquet magique contient les octets suivants FF FF FF FF FF FF suivi de l’adresse MAC de la carte réseau de destination répétée 16 fois.

Le paquet magique est une trame réseau transmise sur le port 0, 7 ou 9. Quand la carte réseau de destination reçoit cette trame, elle envoie un signal à la carte mère du périphérique et lance alors la séquence de démarrage.

Voilà – bon, bougez de temps en temps aussi hein !

The Handmaid's Tale saison 2 photo

The Handmaid’s Tale saison 2

La seconde saison de The Handmaid’s Tale a été diffusée sur HBO.

The Handmaid's Tale saison 2 photo

Offred et d’autres servantes sont emmenées au Fenway Park où on leur fait croire qu’elles seront pendues, mais cela s’avère être une ruse pour les effrayer. Pendant une autre punition, Offred est libéré après que Tante Lydia a été informée de sa grossesse.

Quand elle rejette un repas que Tante Lydia lui donne, on lui montre une servante enceinte, Ofwyatt, enchaînée dans une salle de prison en raison de sa tentative de suicide. Offred accepte de manger, et pendant son repas tante Lydia, qui lui avait dit que ses amis seraient punis pour leur désobéissance mais sa grossesse signifierait qu’elle serait exemptée, amène les autres servantes dans la pièce, et une par une, elles ont la main brûlée à la flamme d’une gazinière.

Plus tard, Offred subit un examen de grossesse et reçoit la visite de Fred et Serena, mais après avoir trouvé une clé dans une de ses bottes, elle s’échappe jusqu’à une camionnette garée sous l’hôpital. La fourgonnette la dépose dans une maison sûre à Back Bay, où elle rencontre Nick, tandis que Fred ordonne une traque massive. Nick lui dit de changer de tenue et de se couper les cheveux. Après avoir enlevé sa robe de servante, elle la brûle avant de couper la marque rouge de son oreille.

Dans un flashback, Hannah est admise à l’hôpital pour avoir eu de la fièvre pendant ses cours; June est interrogée par l’un des employés de l’hôpital sur le fait de donner des médicaments à Hannah pour contourner la politique sur la fièvre de l’école, remettant en question l’aptitude de June et Luke en tant que parents. Plus tard, ils arrivent à la maison et découvrent que le Capitole et la Maison Blanche sont attaqués…

Lire la suite

WordPress : corriger l'erreur "Warning: Parameter 1 to wp_default_styles() expected to be a reference, value given" photo

WordPress : corriger l’erreur “Warning: Parameter 1 to wp_default_styles() expected to be a reference, value given”

Je travaille actuellement sur un projet Codeable qui nécessite de passer de PHP5.6 à PHP7.2. Le site en question est une boutique WooCommerce avec un thème custom qui est hébergé chez WPEngine. Jusque là, tout va bien.

Lors de la migration sur un serveur PHP 7.4, le site de developpement (Staging) affiche alors un message d’avertissement sur toutes les pages :

Parameter 1 to wp_default_styles() expected to be a reference, value given
Parameter 1 to wp_default_scripts() expected to be a reference, value given

Après avoir passé un bon moment à éliminer les causes (plugins et thème), il se trouve que c’est un bug de WordPress 4.9.8 (la dernière version en date) dont il est question dans le ticket #44979.

Voici la solution temporaire à ce problème :

  1. éditez /wp-includes/script-loader.php
  2. retirez le caractère & de l’argument des fonctions wp_default_scripts() et wp_default_styles()
  3. sauvegardez le fichier
  4. rechargez le site, les deux messages d’avertissement ont disparu.

Voilà, ce n’est qu’un hotfix mais ce bug devrait être corrigé dans la prochaine version de WordPress – version 4.9.9 – qui sortira prochainement.