La Casa de Papel photo

La Casa de Papel

La Casa de Papel est une mini-série télévisée espagnole en quinze épisodes réalisée par Álex Pina et diffusée sur Netflix.

Un homme mystérieux, surnommé le Professeur (El Profesor), planifie le meilleur braquage jamais organisé. Pour exécuter son plan, il recrute les meilleurs malfaiteurs du pays qui n’ont rien à perdre.

Pour des raisons de sécurité, tous les membres de l’opération prennent un nom d’emprunt basé sur un nom de ville: Tokyo, Nairobi, Río, Moscou, Berlin, Denver, Helsinki et Oslo.

Le but est d’infiltrer la Fabrique nationale de la monnaie et du timbre afin d’imprimer 2,4 milliards d’euros, en moins de onze jours et sans verser une goutte de sang. Pourtant, le groupe sera en charge de 67 otages dont Alison Parker, la fille de l’ambassadeur du Royaume-Uni.

C’est évidemment sans compter sur l’intelligence et la perspicacité de l’inspecteur en charge des négociations et de son équipe, qui vont tenter de donner du fil à retordre à notre fine équipe.

La série est très bien conçue : les personnages sont bien développés, au fur et à mesure des épisodes, et l’histoire est très bien ficelée. L’esthétique est bien présente et n’est pas sans rappeler celle d’Utopia – il me semble même que le générique de fin de la Casa de Papel utilise le même motif musical.

En bref, la Casa de Papel est LA série de ce début d’année. Vous pouvez y aller les yeux fermés, c’est une bonne série, qui sait gérer le suspense et l’envie de voir la suite. C’est un plaisir que de regarder, anticiper les mouvements des braqueurs ou encore remettre en question certaines réactions des otages ou de la police.

Cette première saison compte treize épisodes.

Scissor Sisters - Laura  photo

Scissor Sisters – Laura

Scissor Sisters est un groupe de musique pop new-yorkais qui tire ses influences du disco et du glam rock.

Le nom du groupe fait référence à une position sexuelle lesbienne. Initialement, son nom complet était Dead Lesbian and the Fibrillating Scissor Sisters.

Le groupe est apparu en 2001, il a eu beaucoup de succès en Islande et au Royaume-Uni. Les paroles de leurs chansons, majoritairement écrites par Shears et Babydaddy, sont connues pour leur mélange d’humour et de tragédie.

J’affectionne particulièrement Laura :

Lire la suite

The American Civil War : 1860-1865 photo

The American Civil War: 1861-1865

  1. Introduction to Puritanism and Expansionism
  2. Antebellum South
  3. Life in the Plantations
  4. USA: North and South
  5. O’Sullivan’s Manifest Destiny
  6. The social context of America in the early 19th century
  7. The American Civil War: 1861-1865
  8. America: The New Nation
  9. After the American Civil War: The Reconstruction
  10. America: West to the Pacific
  11. Years of Growth

The American Civil War started with the secession crisis on April 12 1861 and ended with the assassination of Lincoln and the abolition of slavery on May 9, 1865. It transformed the political, economic and social life of the nation.

It first began with a constitutional struggle and then became a test of federal authority but soon took a broader dimension. The initial belief it would be short proved tragically to be mistaken.

The seceding states fought to achieve independence and yet, they closely modeled the government of their Confederacy on the American one. Lincoln’s administration responded with a crusade to preserve the union and expanded its war aims to include the destruction of slavery and the liberation of all black slaves.

In the end, the Union had been preserved and questions left unresolved were answered at a very high cost in human terms: 600 000 lives, which is still the largest fatality in any American war (it was worse than Vietnam).

The Civil War: the story of a secession

The secession started in South Carolina, which withdrew from the Union. It was a direct response to Lincoln’s election. That decision was taken in December 1860. In less than 6 weeks, the other 6 states of the “Lower South” had also seceded: Mississippi, Florida, Alabama, Georgia, Louisiana and Texas.

Lire la suite

Backup Manager : résoudre l'erreur

Backup Manager : résoudre l’erreur “tar: file changed as we read it” lors de la création de la sauvegarde

Cela fait quelques jours que Backup Manager, qui me sert à sauvegarder automatiquement les fichiers et bases de données du site sur le serveur de sauvegarde, renvoie une erreur lors de la création d’un de mes fichiers de sauvegarde, alors que tout se passait sans encombres jusqu’alors.

C’est gênant dans le sens où on ne sait pas vraiment ce qui a empêché la bonne création du fichier et on ne peut vraiment être certain de l’intégrité du fichier de sauvegarde, ce qui est critique.

Voici le message d’erreur reçu par email à la fin de la sauvegarde :

Unable to create "/home/archives/mail.skyminds.net-home.20180208.master.tar.gz", check /tmp/bm-tarball.log.TZ2VAU
1 error occurred during the tarball generation.Code language: JavaScript (javascript)

Et voici le contenu du fichier log en question :

tar: /wp-content/ file changed as we read itCode language: JavaScript (javascript)

Étapes du débogage

Le moins que l’on puisse dire, c’est que tar ne nous donne pas vraiment d’indications sur la cause du problème. Un fichier qui change lors de la lecture, d’accord mais lequel ? De plus, il indique un répertoire et non un fichier précis.

Dans le fichier de configuration de Backup Manager, il est possible de choisir plusieurs formats de fichier pour compresser les fichiers de sauvegarde. J’utilise .tar.gz puisque tous mes machines tournent sous Unix mais là, j’ai changé la configuration pour utiliser le format zip.

On relance le script de sauvegarde : zip est beaucoup plus loquace dans ses messages d’erreur !

Voici ce qu’il nous indique :

zip warning: Not all files were readable
  files/entries read:  55621 (1.3G bytes)  skipped:  96 (414K bytes)

Très bien. Il ne nous reste plus qu’à trouver quels sont ces fichiers qui n’ont pas les droits de lecture.

A la racine du site, on lance donc une recherche pour trouver tous les fichiers et dossiers qui n’auraient pas les droits basiques de lecture (read) :

find . ! -perm -o=r

Résultat :

./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---internal-metadatas---B0089KSLUY
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---internal-metadatas---CustomerReviews_B004LS7G3G
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---CustomerReviews_B00B2OI0FU
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---B00JGYYQ24
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---CustomerReviews_B006H4R9LG
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---internal-metadatas---B005BHE48Q
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---internal-metadatas---B00H2O1YOI
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---CustomerReviews_B00MVQLMPI
./wp-content/plugins/amazonsimpleadmin/cache/zend_cache---B017EOYW9Y

Il s’agit donc de fichiers de cache de produits Amazon, qui sont absolument inutiles pour les sauvegardes: nous allons donc exclure ce répertoire de cache de nos fichiers de backup.

Suppression des répertoires de cache avant compression des archives

Dans la configuration de Backup Manager, ajoutez le chemin des répertoires de cache de quasiment tous les plugins WordPress :

export BM_TARBALL_BLACKLIST="/home/public_html/wp-content/plugins/*/cache/* /home/public_html/wp-content/*cache*"Code language: JavaScript (javascript)

Sauvegardez le fichier et relancez votre script de backup.

Méthode plus radicale : éditer le script

Si la méthode précédente ne porte pas ses fruits, en voici une autre. Il suffit de modifier la valeur du chmod dans ces deux fichiers :

/wp-content/plugins/amazonsimpleadmin/lib/AsaZend/Cache/Backend/File.php
/wp-content/plugins/amazonsimpleadmin/lib/AsaZend/Cache/Backend/Static.phpCode language: PHP (php)

Cherchez le chmod 600 :

'cache_file_umask' => 0600,Code language: PHP (php)

et remplacez-le par un chmod 644:

'cache_file_umask' => 0644,Code language: PHP (php)

Tada, plus d’erreur et des fichiers de sauvegarde propres, sans fichiers de cache inutiles !

Je suis assez content d’avoir trouvé une solution à ce problème assez récurrent.

Le fait d’avoir momentanément modifié le type d’archive à créer a bien aidé à isoler la cause du problème.

WordPress : afficher des média oEmbed avec HTTPS photo

WordPress : forcer le chargement des média oEmbed en HTTPS

Lorsque le site est servi via HTTPS, toutes les ressources – même les ressources oEmbed automatiquement générée par WordPress – qui composent une page doivent également être servies via une connexion chiffrée aussi.

Il se trouve que je mets des vidéos Youtube et consorts de temps en temps : elles ne s’affichaient plus en https, étant servies par défaut en http.

Le changement vers HTTPS est en marche mais tous les services oEmbed n’ont pas encore adopté le chiffrement des connexions.

Servir les vidéos Youtube en HTTPS

Au lieu d’utiliser Youtube.com, nous allons utiliser la version cookie-less de Youtube, à savoir youtube-nocookie.com : cela permet d’éviter les cookies pisteurs de Google et donc offre plus de sécurité et de respect de la vie privée.

J’utilise ce système depuis des années sur SkyMinds donc je me suis dit qu’il était bien temps de le partager dans ces colonnes.

Le code permet donc de remplacer youtube.com par youtube-nocookie.com dans le code généré par l’oEmbed WordPress.

Ce code est à ajouter dans votre utility plugin (ou à défaut le fichier functions.php de votre thème WordPress).

Le premier code remplace toutes les occurences des médias HTTP pour HTTPS :

<?php
/* Force HTTPS rewrite for oEmbeds
* Source : https://wordpress.stackexchange.com/questions/40747/how-do-i-embed-youtube-videos-with-https-instead-of-http-in-the-url
*/
add_filter( 'embed_oembed_html', 'sky_embed_oembed_html' );
function sky_embed_oembed_html( $html ) { 
  return preg_replace( '@src="https?:@', 'src="', $html );
}Code language: HTML, XML (xml)

Le second code modifie tous les appels à youtube.com et les remplace par youtube-nocookie.com, ce qui empêche la création de cookies pisteurs :

<?php
//BEGIN Embed Video Fix - HTTPS and privacy mode
//https://wordpress.org/support/topic/forcing-ssl-return-for-youtube-oembed

add_filter('the_content', 'sky_add_secure_video_options', 10);
function sky_add_secure_video_options($html) {
   if (strpos($html, "<iframe" ) !== false) {
    	$search = array('src="http://www.youtube.com','src="http://youtube.com');
	$replace = array('src="https://www.youtube-nocookie.com','src="https://www.youtube-nocookie.com');
	$html = str_replace($search, $replace, $html);
   	return $html;
   } else {
        return $html;
   }
}Code language: HTML, XML (xml)

Cela a l’air tout bête mais cela permet de faire respecter un peu plus notre droit au refus de se faire pister à tout bout de champs sur le net.

Le petit plus : on charge également moins de cookies, qui ne sont pas des ressources cachables par essence donc on améliore un peu aussi le temps de chargement de la page.

Saigon Ft Swizz Beatz - Come On Baby photo

Saigon Ft Swizz Beatz and Jay-Z – Come On Baby

“Come on Baby” est le premier single officiel du premier album de Saigon, intitulé The Greatest Story Never Told :

Dans cette chanson, on retrouve Swizz Beatz et un couplet de Jay-Z dans la version remix.

Un sample de la chanson “Southside Shuffle” du groupe The J. Geils Band’s est abondamment utilisée.

Paroles

Just Blaze, hey, hands up

Swizzy, hey, hands up
1, 2, 3, here we go!

Microphone check one two what is this?
The Yardfather coming to give niggas the business
It’s so beyond rap, cock sucker we live this
So uhm, come on baby, come on, come on and witness
The next ten years of this shit, the slickness is deliberate
Lyrically it’s as sick as it get
I been in the pen, been in the jects, been in the??
I been in the Benz, been in the Lex, been in the MSX
Yes, I run ringers around the fraudulant type
Come here and I’ll show you that I spit on just more then a mic
I make it hard for niggas to breathe, please
These wicked emcees squeeze
Hammers like the Pampers used to squeeze, hit the DT
I Mike Tyson ya eye, put a permenant ring around it
Then go run in the booth and sing about it
Look, if I don’t hurt the nigga that play with my wealth
I’m like me on Entourage god, I’m playing myself, let’s go

Hold up, the pump will make you jump up
Put ya body in the tr-unk
(Don’t you baby, don’t you baby, don’t ya baby)
Keep goin now…
New York, and all the way to Cali
And the South’ll make ya j-ump
(Come on baby, come on baby, come on baby)
Don’t touch the boy, yup
Hold up, the pump will make ya jump up
Put ya body in the tr-unk
(Come on baby, come on baby, come on baby)
I’ll whip ya ass from…
New York, and all the way to Cali
And the South’ll make ya jump

1, 2, 3, we gone!

Four finger, three finger, two finger, one finger
Hum dinger, gun slinger, that’s what I am
Trying to get some cash in my hand as fast as I can
So you should, come on baby, come on, come on and fuck wit ya man
I got this rap shit down to a science
Alotta niggas shit is aight but they ain’t fucking with Ryan
First there was some defiance, until I formed an alliance
With Justin, he plugged me in, now I’m as hot as a fucking iron
You lying, all the gunplay talk
Knowing behind closed doors you be practicing on ya runway walk
I been in the kill, been in the cap, been in the box and back
I been in the ville, tripping the gat, trimming a boxing match
And I still walk around this fucker with not a scratch
And thats way more then I can say for alot of cats
My name’s Saigon nigga
Break bread mufucka ‘fore I break ya fucking head lil sucka

Finally I’ve arrived, so we can say our goodbyes
To the ring tone rapper, that crap’ll never survive
Its the lyrics in hip-hop, they even the odds
We gotta, come on baby, come on, come on and keep it alive
I got a microphone jones, I’m in love with it
If I wasn’t, I wouldn’t even fuck with it
I been in the rocks, been in the grams
Been in the pots and pans, I been in demand
Been in the sense I dropped contraband, damn
Simon says, “Saigon slap the shit outta suckas”
“Slam his head on the cement and stomp it until he’s??”
My son says your son scared of societies shit list
Sick as the second stage of siphylis and swift as the Savior’s scripture
I say after it’s all said and done
I’mma be way ahead of them, never see a better one
So look niglet, fall back a tid bit
Or get ya fucking wig split, this some big shit

Le riff pentatonique est repris ad nauseam mais ce morceau est vraiment entraînant. Un bon mix entre rock et rap old-school.

Parfait pour les tâches répétitives – ou pour ranger le garage.

Happy Birthday Matt : 37 photo

Happy Birthday Matt : 37

Happy Birthday Matt : 37 photo

Aujourd’hui, je fête mes 37 ans.

J’ai relu l’article de l’année dernière et me suis rendu compte qu’il fallait faire un petit bilan de l’année qui vient de s’écouler et de mes résolutions.

Je n’ai pas vraiment lu de livres papier – aucun à vrai dire. J’ai par contre beaucoup lu sur des écrans : laptop chez moi, téléphone dans le bus. Je regrette de ne pas assez lire, à la fois dans la fréquence et dans la durée.

En ce qui concerne l’écriture, je suis obligé de m’adapter un peu : j’écris ici mais passe pas mal de temps sur Kriya Yoga à rédiger, mettre en page et m’occuper des cours en ligne. Le développement web occupe aussi pas mal de mon temps donc il faut jongler entre les sites, les échéances et l’envie de parler d’un sujet donné.

Pour la mer, on y est allé avec Cécile : Malte, Grèce, Sardaigne… mais l’objectif n’est pas encore atteint.

3 mots pour 2018

Cette année, je modifie le mode de fonctionnement de mes résolutions et au lieu d’énoncer des idées très précises, je vais me concentrer sur trois mots différents qui me permettront de me focaliser sur une ligne directrice pour l’année.

Mes trois mots pour cette année sont :

Read : j’ai besoin de lire plus, même sur une Kindle, ce serait un plus.

Execute : concrétiser davantage et ne pas juste parler de choses qui sont ensuite remises à plus tard. Arrêter de procrastiner et passer à l’exécution, dans tous les domaines.

Flow: de temps en temps, il faut se laisser porter et arrêter d’essayer de nager à contre-courant. Lâcher du lest, ne pas se braquer et rester positif.

Le nombre 37 en mathématiques

Trente-sept est :

  • un nombre premier,
  • le premier nombre premier irrégulier,
  • un nombre premier cousin avec 41,
  • un facteur de tous les nombres uniformes à trois chiffres en base 10, tels que 111.
  • un nombre hexagonal centré et un nombre étoilé.

Propriété mathématique intéressante de 37 :

111 : 1+1+1= 3 et 3 × 37 = 111
222 : 2+2+2= 6 et 6 × 37 = 222
333 : 3+3+3= 9 et 9 × 37 = 333

999 : 9+9+9=27 et 27 × 37 = 999

Trivia sur le nombre 37

Le nombre 37 est :

  • le numéro atomique du rubidium, un métal alcalin. Masse atomique du rubidium : 85.468 ; 5e période, 1er groupe ; 8+5+4+6+8+5+1=37
  • la température moyenne du corps humain en °C.
  • en France, le nombre d’années de mariage des noces de papier.
  • le nombre d’emplacements de la roulette européenne.
  • le nombre utilisé dans un certain tour de magie. Dans ce tour, le magicien demande à une personne de penser à un nombre qui rassemble les critères suivants :
    a. doit être compris entre 1 et 50,
    b. doit avoir deux chiffres tous les deux impairs différents.

     

    Seulement huit nombres remplissent ces conditions : 13, 15, 17, 19, 31, 35, 37, et 39. Statistiquement, les gens prendront 37 parmi tous les autres nombres. Par conséquent, le magicien peut utiliser cette probabilité pour créer un effet de télépathie.

  • Hannibal a amené 37 éléphants avec lui lors de sa conquête de Rome.
  • le nombre de pièces de théâtre que l’on considère écrites par William Shakespeare (en comptant Henry IV en trois parties : 10 pièces historiques, 10 tragédies, 17 comédies).
  • The Hindenburg a mis 37 secondes à brûler (en 1937).
  • 16 mars 37 : mort de Tibère, empereur romain, à Misène, dans la villa de Lucullus en Campanie. Selon Tacite, Dion Cassius et Sénèque, il aurait été assassiné, étouffé sous ses couvertures par le préfet du prétoire Macron. Suétone pour sa part n’incrimine pas Macron et rapporte diverses versions de la mort de Tibère : mort naturelle ou par absence de soins, mais aussi, par empoisonnement ou étouffement sous un coussin par Caligula. Cette version est toutefois contestée par les historiens modernes, qui jugent plus vraisemblable une mort naturelle.
  • 30 mars 37 : début du règne de Caligula, empereur romain (fin en 41). Caius, fils du populaire Germanicus, après avoir fait cassé le testament de Tibère et écarté Gemellus, est reconnu sans difficulté comme empereur par le Sénat et par l’armée (Caligula, petite chaussure, est un surnom militaire). Après la mort de Tibère, Caligula accorde l’ancienne tétrarchie de Philippe à son ami Agrippa Ier.
  • 15 décembre 37 : naissance de Néron, futur empereur romain, à Antium.

Et vous, avez-vous pris des résolutions (des vraies hein, pas celles du 1er janvier ;-)) ?

Serveur dédié : transférer et héberger un nouveau domaine sur votre serveur photo

Serveur dédié : transférer et héberger un nouveau domaine sur votre serveur

Aujourd’hui, nous allons voir comment héberger un nouveau domaine sur le serveur, en simplifiant au maximum les procédures.

Serveur dédié : transférer et héberger un nouveau domaine sur votre serveur photo

Le nom de domaine sera réservé chez OVH et le site hébergé sur notre serveur Debian. Nous allons servir le site avec NginX en HTTPS grâce à un certificat SSL fourni gratuitement par Let’s Encrypt.

Enfin, on utilisera le serveur email existant et on ajoutera la configuration OpenDKIM pour signer et authentifier tous les emails sortants du domaine.

Nom de domaine

J’achète mes noms de domaine chez OVH parce que le prix est relativement raisonnable (comparé à mon ancien registrar).

Au moment de la commande, faites pointer le nouveau domaine vers les DNS du serveur.

Si votre serveur n’est pas chez OVH, il suffit d’aller dans Domaines > Serveurs DNS et de renseigner le DNS primaire et secondaire de votre serveur.

Configuration DNS dans BIND

Une fois le domaine commandé, si vous vous rendez dans le Manager OVH, vous vous rendrez compte que le bouton DNS est en rouge : c’est normal puisqu’il nous faut paramétrer notre nouveau domaine dans BIND, notre serveur de noms.

On édite la configuration de BIND :

nano /etc/bind/named.conf.local

et on lui indique que nous créons une nouvelle zone :

zone "example.com" {
        type master;
        file "/etc/bind/example.com.hosts";
        allow-query { any; };
};Code language: JavaScript (javascript)

On crée maintenant notre fichier de zone:

nano /etc/bind/example.com.hosts
$ttl 84600
$ORIGIN example.com.

@       IN      SOA     XXXXXX.kimsufi.com. root.example.net. (
                        2018012801
                        14400
                        3600
                        604800
                        84600 )

; NAMESERVERS
 IN     NS      XXXXXX.kimsufi.com.
 IN     NS      ns.kimsufi.com.

example.com.   IN      A       XXX.XXX.XXX.XXX
example.com.   IN      AAAA    4001:41d0:1:4462::1
example.com.   IN      MX      10 mail.example.net.

www.example.com.       IN      A        XXX.XXX.XXX.XXX
www.example.com.       IN    AAAA    4001:41d0:1:4462::1
www       IN A          XXX.XXX.XXX.XXXCode language: PHP (php)

Ps: example.net est le domaine principal du serveur.

Pous vérifions la configuration BIND:

named-checkconf -z

et nous redémarrons BIND pour prendre en compte nos changements et activer notre nouveau fichier de zone:

service bind9 restart

Vous pouvez vérifier votre configuration DNS à l’aide de l’outil ZoneMaster.

Configuration du bloc serveur sous NginX

On commence par créer le répertoire qui va accueillir les fichiers du site et on lui attribue les bons droits:

mkdir -p /home/example/public_html
chown -R www-data:www-data /home/example/public_html
chmod 755 /home/example/public_html

On crée également un fichier index.php à la racine du site pour éviter une erreur 403 plus tard lors de la génération du certificat SSL :

echo "<!--?php echo 'hello world. Domain activated.'; ?-->" >> /home/example/public_html/index.phpCode language: HTML, XML (xml)

On crée maintenant le répertoire de cache du site, toujours avec les bons droits:

mkdir -p /home/nginx-cache/example
chown -R www-data:www-data /home/nginx-cache/example
chmod 755 /home/nginx-cache/example

Voici le server block de départ, en HTTP simple :

server {
       listen         80;
       listen    [::]:80;
       server_name    example.com www.example.com;
       #return         301 https://$server_name$request_uri;
        root /home/example/public_html;
        index index.php index.html;
}Code language: PHP (php)

On active le site :

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

On teste la configuration de NginX et on redémarre le service:

nginx -t
service nginx restart

On crée maintenant le certificat SSL avec Let’s Encrypt :

certbot certonly --webroot -w /home/example/public_html -d example.com -d www.example.com

Lire la suite

Eths - Animadversion photo

Eths – Animadversion

Eths est un groupe de nu metal français, originaire de Marseille, dans les Bouches-du-Rhône (Provence). À ses débuts, le groupe est souvent sur la route, enchaîne les tournées et se produit dans la France entière ainsi qu’en Europe.

La voix des chanteuses Candice et Rachel sont partagées entre des parties mélodiques et des parties gutturales.

Les musiciens quant à eux s’appliquent à créer une ambiance tantôt malsaine avec un son très lourd, tantôt plus douce et mélodique comme dans Ailleurs c’est ici ou L’instant sourd qui reste tout de même dans l’ambiance oppressante qui caractérise la musique du quintet.

Lire la suite

Serveur dédié : script bash pour réparer les tables MySQL en cas de crash photo

Serveur dédié : mise à jour vers PHP 7.2

Aujourd’hui, le serveur passe à PHP 7.2 !

PHP 7.2 accroît fortement les performances des versions précédentes, notamment au travers de plusieurs améliorations en matière de sécurité. Ainsi, l’algorithme Argon2 qui sert au hachage sécurisé des mots de passe corrige les défauts des algorithmes actuels. Celui-ci permet notamment un taux de remplissage plus élevé de la mémoire.

PHP 7.2 intègre désormais dans son noyau la bibliothèque de cryptographie Sodium, utilisée pour le chiffrement authentifié, est désormais une extension de base et les performances de la bibliothèque pour la cryptographie sur les courbes elliptiques ont été améliorées.

Niveau programmation

Au-delà de Sodium, PHP 7.2 vient avec des améliorations et nouvelles fonctionnalités comme :

  • la possibilité de convertir des clés numériques dans les objets et tableaux lors de cast.
  • les clés numériques sont maintenant mieux appréhendées lors de cast d’un tableau en objet et d’objet en tableau (cast explicite ou par la fonction settype()) ;
  • le comptage d’objets non dénombrables. Un E_WARNING sera émis lors de la tentative d’utilisation de la fonction count() sur un type non dénombrable ;
  • HashContext en tant qu’objet ;
  • ajout d’Argon2 à l’API pour le hachage de mot de passe ;
  • amélioration des constantes TLS ;
  • la suppression de l’extension Mcrypt. L’extension MCrypt a maintenant été déplacée du noyau vers PECL. Étant donné que la bibliothèque mcrypt n’a pas eu de mises à jour depuis 2007, son utilisation est fortement découragée. Au lieu de cette extension, soit OpenSSL ou l’extension sodium doit être utilisé.

Les fonctions Deprecated (déconseillées) et supprimées pour PHP 8.0:

__autoload
$php_errormsg
create_function()
mbstring.func_overload
(unset) cast
parse_str() sans le second argument
gmp_random()
each()
assert() avec un argument string(texte)
$errcontext

La conversion des clés numériques dans les distributions objet/tableau résout un problème rencontré avec le moteur open source Zend Engine qui fait tourner PHP 7. Dans certaines situations, les tables de hachage de tableaux pouvaient contenir des chaînes numériques alors que les tables de hachage d’objets pouvaient contenir des clés entières, ce qui empêchait le code PHP de retrouver les clés. Le correctif apporté par PHP 7.2 convertit les clés des tables de hashage des tableaux et des tables de hachage des objets sont converties dans les bons formats, de sorte que les chaînes de format numériques personnalisées sont traduites en clefs entières, résolvant le problème d’inaccessibilité.

Les typages explicites d’objets ou « type hints » corrigent une situation dans laquelle un développeur ne peut pas déclarer une fonction supposée recevoir un objet en tant que paramètre ou déclarer qu’une fonction doit retourner un objet. Le correctif utilise l’objet comme type de paramètre et type de retour. HashContext en tant qu’objet, migre l’extension de hachage pour utiliser une extension objet pour les contextes de hachage au lieu d’utiliser des ressources. A noter aussi une nouvelle alerte ajoutée pour l’appel de la fonction count avec un paramètre scalaire ou nul, ou un objet qui n’implémente pas l’interface « Countable »

Mise à jour vers PHP7.2

Cela n’a pris que quelques minutes :

apt update && apt upgrade

Résultat :

Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  php7.1-cli php7.1-curl php7.1-fpm php7.1-gd php7.1-json php7.1-mbstring php7.1-opcache
  php7.1-readline php7.1-xml php7.1-xmlrpc
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  libargon2-0 libsodium23 php7.2-cli php7.2-common php7.2-curl php7.2-fpm php7.2-gd php7.2-json
  php7.2-mbstring php7.2-opcache php7.2-readline php7.2-xml php7.2-xmlrpc
The following packages will be upgraded:
  php-common php-curl php-fpm php-gd php-mbstring php-xml php-xmlrpc php7.1-cli php7.1-common
  php7.1-curl php7.1-fpm php7.1-gd php7.1-json php7.1-mbstring php7.1-mcrypt php7.1-mysql
  php7.1-opcache php7.1-readline php7.1-soap php7.1-xml php7.1-xmlrpc php7.1-zip
22 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
Need to get 8,656 kB of archives.
After this operation, 19.7 MB of additional disk space will be used.Code language: JavaScript (javascript)

A ce stade, nous avons php7.1 et php7.2 installés séparément sur le serveur.

On installe les paquets manquants (toujours les deux mêmes):

apt install php7.2-mysqlCode language: CSS (css)

On édite chacun des VirtualHosts sous Nginx, en éditant cette ligne:

fastcgi_pass unix:/run/php/php7.2-fpm.sock;Code language: JavaScript (javascript)

On relance NginX et PHP:

service php7.2-fpm restart && service nginx restartCode language: CSS (css)

Si tout va bien, il suffit de supprimer PHP7.1, ses dépendances et ses fichiers de configuration:

apt purge php7.1-*Code language: CSS (css)

Test de votre code sous PHP 7.2

Vous hésitez encore à sauter le pas ? Copiez-collez votre code sur le site d’3v4l, vous saurez immédiatement si cela produit des erreurs de type Notice.

Bonne mise à jour !

Petro-Loukas Halkias et Vasilis Kostas - Skaros photo

Petro-Loukas Halkias et Vasilis Kostas – Skaros

“Skaros” est un dialogue entre la clarinette de Petro-Loukas Halkias et le laouto de Vasilis Kostas :

Le skaros est une musique pastorale improvisée instrumentale ou vocale. La flûte floghera ou la clarinette y est dominante pour l’accompagnement des danses : menousis, fisouni, podhia, sta dio, sta tria, zagorisios, kentimeni, koftos, yiatros et tsamikos.

Petro-Loukas est l’un des meilleurs clarinettistes de Grèce et l’un des échansons les plus doués de la musique démotique grecque.

Vasilis Kostas est l’un des meilleur joueur de laouto au monde. Il a étudié au Berklee Global Jazz Institute à Boston, MA puis a voyagé avec le World Strings Orchestra dirigé par Eugene Friesen en Espagne en tant que joueur de laouto soliste pour présenter la musique grecque à travers le prisme du luth grec.

Ses performances au laouto ouvrent de nouveaux horizons pour l’instrument, pour les mondes du jazz et la musique grecque traditionnelle.

Cela est particulièrement audible avec cette collaboration entre Vasilis Kostas et Petro-Loukas Halkias et ce morceau instrumental grec.

Je trouve que le mélange des genres, musique traditionnelle et jazz, donne une tonalité totalement incroyable à ce morceau.

On se croirait presque en Orient à certains moments avec la clarinette notamment.

Serveur dédié : configurer Apache et NginX pour servir des polices de caractères photo

Serveur dédié : configurer Apache et NginX pour servir des polices de caractères

La plupart des sites modernes font appel à des polices de caractères qui ne sont pas installées sur les systèmes d’exploitation de leurs visiteurs.

L’utilisation de Google Fonts est très largement répandue mais cela ajoute un délai de traitement dans le chargement des pages car cela nécessite autant de requêtes externes.

Il est également possible de placer les fichiers dans le répertoire du thème graphique et de les servir directement depuis le serveur de fichier, comme Apache ou NginX.

Tout d’abord, il faut configurer les bons entêtes http. Cela permet aux navigateurs de bien interpréter les fichiers demandés comme polices de caractères.

Configuration des polices pour Apache

Pour définir le bon mime-type pour les polices, ajoutez ce bloc à votre configuration Apache:

AddType application/x-font-ttf ttc ttf
AddType application/x-font-otf otf
AddType application/font-woff woff
AddType application/font-woff2 woff2
AddType application/vnd.ms-fontobject eot

Si vous n’avez pas accès à la configuration du VirtualHost, placez ce bloc dans le fichier .htaccess du site.

Pour les entêtes CORS, ajoutez ce bloc:

<filesmatch ".(eot|ttf|otf|woff|woff2)"="">
  Header set Access-Control-Allow-Origin "*"Code language: JavaScript (javascript)

Configuration des polices pour NginX

LA configuration par default de NginX ne prend pas en compte les types mime des formats de fontes optimizés pour le web.

Il est à noter également que le type mime des fichiers .eot est erroné, il nous faut donc le modifier.

1. Editez le fichier /etc/nginx/mime.types et supprimez la ligne concernant l’extension eot.

2. Ensuite, ajoutez ce bloc :

application/x-font-ttf ttc ttf;
application/x-font-otf otf;
application/font-woff woff;
application/font-woff2 woff2;
application/vnd.ms-fontobject eot;

3. Pour les entêtes CORS, ajoutez ce bloc à la configuration du vhost:

location ~* \.(eot|otf|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
}

Et voilà, votre serveur de fichier est maintenant capable de servir vos fichiers de polices de caractères.

Il est recommandé de ne pas abuser des fontes de caractères : pas plus de 3 familles de fontes différentes sur un site web. Les navigateurs ayant chacun leurs petites subtilités et standards, ils ne se sont toujours pas mis d’accord sur un seul et même format de fichier.

En pratique, les formats WOFF2 et WOFF sont à privilégier (ils couvrent plus de 96% des utilisateurs) mais suivant le public ciblé, il faut penser à offrir les autres variantes de fichiers.