The Great Gatsby: an American novel photo

The Great Gatsby: an American novel

  1. Introduction to The Great Gatsby by Francis Scott Fitzgerald: from the Lost Prairies to the Realist Jungle
  2. The Great Gatsby: characters and characterization
  3. The Great Gatsby: the Romantic Quest
  4. Structure and Narration in The Great Gatsby
  5. The ordering of events in The Great Gatsby
  6. The Great Gatsby: an American novel

A refracted vision of America

The Great Gatsby is like a mirror of the America of the 1920s. America in the Great Gatsby is a fundamental notion and the novel cannot be studied without the historical context of the time.

The novel reflects the Jazz Age or the Roaring Twenties and the opposition between East and West.

The Great Gatsby emphasizes the strange association between materialism and spiritualism, which is crucial to the Puritan ethic. Gatsby is seeking wealth because he is pursuing an idealistic vision.

A corrupted vision

The Crack-Up (1937) is a collection of short stories by F.S. Fitzgerald where he tried to catch the mood prevailing in the 1920s.

The mood was characterised by hedonism, the search for pleasure: “America was going on the greatest gaudiest spree in history”. Spending money to be part of the show means society is more based on appearance than substance.

The time of the action is the summer of 1922. America, after World War 1, has become the most prosperous and thriving nation in the world. It is the period of the Golden Boom (America has sold weapons and has become rich) and widespread corruption is at its apogee.

Bribery was a frequent practice. It has been shown by historians that after the Civil War, corruption was nothing compared to the Roaring Twenties. Even if the 1850s carpetbaggers took advantage of the situation of that time, it was far less important than in the 1920’s.

Corruption also marks the weakening of spiritual and moral values. After the butchery of World War I, disillusion had set in and therefore isolationism was striking rich.

In the 1920s, political circles were also corrupted. Warren Harding, president from 1921 to 1923, was marked by a series of scandals. In the summer of 1923, the president died in mysterious circumstances.

The 18th Amendment of the Constitution voted in January 1920, laid down that producing and selling alcohol would be forbidden. The Prohibition, also known as “the noble experiment”, triggered an increase in delinquency.

Al Capone belonged to that context. In people’s collective mind, the image of the bootlegger was worshipped and admired because the bootlegger was the man who dared to resist, to rise against the law.

The historical background

The Great Gatsby is based on a series of events published in the newspapers. F.S. Fitzgerald did not invent all the facts: he shaped and created a character who was emblematic of his time.

In The Great Gatsby, apart from Gatsby, we find characters based on real figures such as Meyer Wolfshiem, who is actually Arnold Rothstein, a master of the New York underworld.

In Chapter 4, at the metropole, the guy shot down was based on reality, it happened before the novel was written: he was gunned down because he had ratted on Becker, the corrupt NYPD chief.

The results of the 1919 baseball championships were fixed. In the text, Meyer Wolfshiem is responsible for tampering with the results while in reality, it is all Arnold Rothstein.

In Chapter 4, we learn that Wolfshiem lives above the laws: “They can’t get him old sport. He’s a smart man”. Arnold Rothstein was nicknamed “the brain”, “the bankroll”, and “the Morgan of the Underworld”. A Morgan is a magnate, a nabob, a tycoon in the capitalist 19th century.

Gatsby’s models in real life

One of Fitzgerald’s models for Gatsby came from a trial that took place in New York: the Fuller-McGee case. Edward M. Fuller, one of the two men, had been a neighbour of Fitzgerald’s in Long Island.

The Fuller-McGee case concerned illegal speculation. They both had been partners in a brokerage firm. Yet, it was soon discovered that they had cheated people. Later on, it was proved that Fuller and McGee were acting for Rothstein, the head of the New York underworld.

We can suspect Fitzgerald is to Fuller what Nick Carraway is to Gatsby.

Gatsby has earned a lot of money very quickly, more or less illicitly. He also polished his manners: “It took me three years”.

Gatsby is said to have had a hand in “the drug business” and in “the oil business”: there is no precision and his business remains quite vague.

The clue to the truth is that Gatsby must have earned a lot of money through shady dealings and illegal transactions. This is spelt out at the end of the book, after Gatsby’s death, when Nick answers the phone call: “Young… in trouble. They picked him up when he handed the bonds over the counter”.

We can therefore conclude that Gatsby has been involved in the trafficking of bonds.

Lire la suite

NAS Synology : regarder les vidéos du NAS directement sur la Freebox en DLN photo

NAS Synology : regarder les vidéos du NAS directement sur la Freebox en DLNA

J’utilise mon NAS Synology tous les jours et l’une des fonctions que j’affectionne particulièrement est de pouvoir regarder des vidéos directement sur la télévision, en passant par la Freebox.

NAS Synology : regarder les vidéos du NAS directement sur la Freebox en DLN photo

Il existe plusieurs manières de regarder les vidéos stockées sur le NAS sur la télévision : depuis la Freebox, depuis un navigateur avec VideoStation ou depuis votre mobile avec l’application DS Video.

Lire des vidéos avec fichiers de sous-titres depuis la Freebox

Il suffit de se rendre dans le menu Freebox > Disques et de sélectionner votre NAS, qui s’appelle par défaut “DiskStation” chez Synology.

La Freebox affiche la liste des fichiers vidéos, films, séries tels qu’ils sont sur le NAS, ainsi que les fichiers de sous-titres au format .SRT s’ils sont présents sur le NAS, si vous avez suivi le tutoriel NAS Synology : lire des vidéos avec des fichiers de sous-titres en DLNA sur la Freebox.

Si le fichier de sous-titre porte le même nom que le fichier vidéo auquel il se rattache, alors la Freebox le chargera automatiquement. Vous pouvez alors le désactiver en appuyant sur la touche Menu verte de la télécommande Free.

C’est la méthode que j’utilise au quotidien mais il faut avoir prévu de télécharger les bons sous-titres, s’être assuré que le nom ne diffère pas et les avoir mis dans le même répertoire que le fichier vidéo… cela demande un peu de manutention avant de pouvoir se caler dans le canapé.

Lire des vidéos avec sous-titres chargés à la volée depuis le NAS

Une seconde solution consiste à lancer le fichier depuis le webdamin du Synology : démarrez l’application VideoStation et sélectionnez le fichier à lire.

Allumez ensuite votre télévision et le Freebox Player pour qu’il soit détecté par l’application VideoStation.

Si vous cliquez sur la petite icône Réglages du lecteur vidéo, il est possible de charger des sous-titres à la volée dans la section Sous-Titres :

Synology : regarder les vidéos du NAS sur la Freebox photo

Il ne vous reste plus qu’à sélectionner la destination vidéo vers laquelle envoyer la vidéo en flux DLNA dans la section Source. Ici, nous choisissons Freebox Player en DLNA:

Synology : regarder les vidéos du NAS sur la Freebox photo 1

Il suffit de cliquer sur le bouton lecture et la vidéo sera directement projetée sur la télévision par le biais du Freebox Player.

Lire vidéos et sous-titres depuis l’application mobile DS Video

Je vous ai gardé le meilleur pour la fin : vous pouvez lancer les vidéos du Synology et activer les sous-titres à la volée depuis l’application mobile DS Video, à installer sur votre téléphone portable.

DS Video est une application gratuite, à télécharger : DS Video pour Android (Play Store) ou alors DS Video pour iPhone (AppStore).

Synology : regarder les vidéos du NAS sur la Freebox photo 2

C’est le meilleur des deux mondes : plus besoin de courir sur l’ordinateur pour lancer la vidéo. Il suffit de :

  1. lancer DS Video,
  2. se connecter au Synology avec votre compte habituel,
  3. ne pas activer HTTPS (très important),
  4. choisir la vidéo à lire,
  5. régler les options : sous-titres, sortie vidéo vers le Freebox Player.

Et profiter ! Plus besoin de quitter le canapé cette fois ;-)

Introduction to The Great Gatsby by Francis Scott Fitzgerald : from the Lost Prairies to the Realist Jungle photo

Introduction to The Great Gatsby by Francis Scott Fitzgerald: from the Lost Prairies to the Realist Jungle

  1. Introduction to The Great Gatsby by Francis Scott Fitzgerald: from the Lost Prairies to the Realist Jungle
  2. The Great Gatsby: characters and characterization
  3. The Great Gatsby: the Romantic Quest
  4. Structure and Narration in The Great Gatsby
  5. The ordering of events in The Great Gatsby
  6. The Great Gatsby: an American novel

Both the novel and the American society correspond to the beginning of a modern era. America is a direct consequence of the Age of Reason (18th century).

Indeed, the first settlers intended to escape the tyrannical power of absolute monarchs.

The novel is also the result of a revolution :

  • social revolution: when the middle class asserted its cultural autonomy
  • ideological change that puts the single individual at the centre of the world

Yet, there are profound contradictions:

  • America did not offer favourable conditions for the birth of the novel. The notions of class, love, and marriage are central to the novel.
  • the 18th-century and 19th-century novels are about chasing a husband.
  • the European novel favours a plot with a domestic story and marriage E.g.: Pride and Prejudice, Madame Bovary.
  • the American novel avoids treating passionate relationships, focuses on male characters, and turns away from Society to Nature. E.g. Moby Dick, The Last of the Mohicans.

American novels dream of the innocence of the first settlers but Puritanism and the notion of guilt proved to be fundamental in American literature. This feeling of guilt included the rape of nature and the exploitation of the Natives.

The Lost Prairie

The early 19th century can be described as an American Epic. James Fenimore Cooper’s The Leatherstocking Tales gave America legend and myth.

The two main themes are:

  • the settlement: how pioneers got used to a new life in the American wilderness;
  • the frontier, which can be described as an ideal boundary between two cultures: the “civilized and cultivated” society, and “wild and lawless” tribes. The frontier is also a limit pushed further westward.

Lire la suite

Redémarrer la machine virtuelle de Local by Flywheel photo

Redémarrer la machine virtuelle de Local by Flywheel

Si vous utilisez Local by Flywheel pour développer un site WordPress en local, il peut arriver que la machine virtuelle ne réponde plus et ne veuille plus redémarrer, ce qui rend toute utilisation de Local impossible.

Voici donc comment redémarrer la machine virtuelle de Local by Flywheel.

Redémarrer la machine virtuelle de Local by Flywheel

Si la machine virtuelle ne répons plus, il faut redémarrer la VM local-by-flywheel dans VirtualBox.

1. Ouvrez VirtualBox:

  • macOS: appuyez sur Command + Espace et tapez “VirtualBox” et validez avec Entrée pour ouvrir VirtualBox.
  • Windows: ouvrez le menu Démarrer de Windows ettapez “VirtualBox” et validez avec Entrée pour ouvrir VirtualBox.

2. Faites un clic droit sur local-by-flywheel et cliquez sur Fermer » Redémarrage ACPI.

3. Attendez que la machine virtuelle affiche “Powered Off…”

Si la machine virtuelle n’affiche pas “Powered Off…” après 5 minutes, répétez l’étape 2 et sélectionnez Fermer > Éteindre.

4. Fermez VirtualBox.

5. Ouvrez de nouveau Local.

J’espère que cela peut vous aider.

La machine virtuelle a souvent tendance à planter et fermer/réouvrir Local ne suffit pas toujours. Il faut vraiment relancer le conteneur sous VirtualBox puis relancer Local.

George Orwell - A Final Warning photo

George Orwell – A Final Warning

From the 2003 television docudrama: George Orwell – A Life in Pictures.

Allowing for the book, after all, being a parody, something like 1984 could actually happen. This is the direction the world is going in at the present time.

In our world, there will be no emotions except fear, rage, triumph, and self-abasement. The sex instinct will be eradicated. We shall abolish the orgasm. There will be no loyalty except loyalty to the Party.

But always there will be the intoxication of power. Always, at every moment, there will be the thrill of victory, the sensation of trampling on an enemy who’s helpless.

If you want a picture of the future, imagine a boot stamping on a human face, forever.

The moral to be drawn from this dangerous nightmare situation is a simple one: don’t let it happen. It depends on you.

George Orwell
Serveur dédié : installation de MariaDB 10.3 photo

MariaDB : résoudre l’erreur “Column count of mysql.proc is wrong”

Sur l’un des serveurs de mes clients Codeable, j’ai mis à jour MariaDB de la version 10.1 à la version 10.3 et voici ce que retournait MariaDB lors du lancement de procédures:

ERROR 1558 (HY000): Column count of mysql.proc is wrong. Expected 21, found 20. 
Created with MariaDB 100212, now running 100303. 
Please use mysql_upgrade to fix this errorCode language: JavaScript (javascript)

Si cela arrive, pas de panique: MariaDB fonctionne et le site s’affiche mais la base de données mysql n’a pas été mise à jour par apt, il faut lancer la procédure d’installation manuellement, depuis le terminal.

On met donc la base mysql à jour avec mysql-upgrade:

mysql_upgrade -u root -p

et on relance MariaDB:

service mysql restart

La routine de mise à jour mysql_upgrade permet de mettre à jour la base interne de MariaDB, qui évolue au fil des mises à jour.

Au redémarrage du service, plus de problème avec les procédures SQL.

ON AN ON - Ghosts photo

ON AN ON – Ghosts

On An On est formé par d’ex-membres du groupe Scattered : Nate Eiesland, Alissa Ricci et Ryne Estwing ont décidé d’essayer des choses qu’ils n’avaient pas l’habitude de faire avec leur ancien groupe et leur son déjà établi.

C’est avec le producteur de Broken Social Scene, Dave Newfeld, qu’ils enregistrent leur premier album, autour du morceau Ghosts :

There are spirits coming to find me
They’re not stopping until it’s done
I can feel them taking me over

I can see them from fifty-six miles away
But I can’t hear what they’re saying
They gotta believe me that I’ll never forget you

Every day the ghosts are going to fly
Every way I know I’m going to try
To keep you alive, to keep you alive

Take me out into the night
It was all you didn’t say, you had no fight
I was on the verge to scream
When you wouldn’t scream about anything
I don’t want to be your stupid fling or your magazine
That you look and turn the pages
Of someone else that you’ll never love

And I was on the verge to scream
When you wouldn’t scream about anything

Cela s’écoute très bien et cela va de l’avant. L’album Give In est sorti le 29 janvier 2013 chez Roll Call Records.

WordPress : résoudre le problème de la table wp_options à qui manquent une colonne Unique et une Primary Key photo

WordPress : résoudre le problème de la table wp_options à qui manquent une colonne Unique et une Primary Key

Chez Codeable, j’ai travaillé sur l’optimisation d’un site e-commerce propulsé par WooCommerce récemment, qui connaissait quelques problèmes de lenteur.

Sous phpMyAdmin, on trouvait également cette erreur:

Current selection does not contain a unique column

Si vous obtenez cette erreur, c’est que la structure de la table wp_options n’est pas à jour donc nous la vérifions avec wp-cli:

wp db query "DESCRIBE $(wp db prefix --allow-root)options" --allow-rootCode language: JavaScript (javascript)

Le résultat obtenu nous montre qu’il n’y a pas de clé primaire (primary key) qui est normalement option_id et qu’il n’y a pas de restriction unique imposée sur la colonne option_name:

+--------------+---------------------+------+-----+---------+-------+
| Field        | Type                | Null | Key | Default | Extra |
+--------------+---------------------+------+-----+---------+-------+
| option_id    | bigint(20) unsigned | NO   |     | NULL    |       |
| option_name  | varchar(191)        | YES  |     | NULL    |       |
| option_value | longtext            | NO   |     | NULL    |       |
| autoload     | varchar(20)         | NO   |     | yes     |       |
+--------------+---------------------+------+-----+---------+-------+Code language: PHP (php)

Et c’est là que le bât blesse – voici à quoi ressemble la structure standard de la table wp-options:

+--------------+---------------------+------+-----+---------+----------------+
| Field        | Type                | Null | Key | Default | Extra          |
+--------------+---------------------+------+-----+---------+----------------+
| option_id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| option_name  | varchar(191)        | NO   | UNI | NULL    |                |
| option_value | longtext            | NO   |     | NULL    |                |
| autoload     | varchar(20)         | NO   | MUL | yes     |                |
+--------------+---------------------+------+-----+---------+----------------+Code language: PHP (php)

Ajouter la Primary Key manquante à wp_options

On ajoute à la colonne option_id la clé primaire qui lui manque:

wp db query "ALTER TABLE $(wp db prefix --allow-root)options MODIFY option_id INT AUTO_INCREMENT PRIMARY KEY;" --allow-rootCode language: JavaScript (javascript)

Et on vérifie le résultat:

wp db query "DESCRIBE $(wp db prefix --allow-root)options" --allow-rootCode language: JavaScript (javascript)

Ajouter la contrainte Unique qui manque à wp_options

Pour ajouter la contrainte UNIQUE à la colonne option_name, on lance:

wp db query "ALTER TABLE $(wp db prefix --allow-root)options ADD UNIQUE (option_name);" --allow-rootCode language: JavaScript (javascript)

Là, il est possible que cela bloque, suivant ce qui se trouve dans votre table wp_options.

Résoudre le problème des doublons

Si vous obtenez une erreur comme :

ERROR 1062 (23000) at line 1: Duplicate entry 'jetpack_available_modules' for key 'option_name'Code language: JavaScript (javascript)

alors cela signifie qu’il existe des enregistrements option_name dupliqués, des doublons qui portent le même nom alors que chaque nom option_name devrait être unique.

On peut obtenir la liste des enregistrements option_name doublons avec cette requête:

wp db query "SELECT option_name, COUNT(*) optioncount FROM $(wp db prefix --allow-root)options GROUP BY option_name HAVING optioncount > 1 ORDER BY optioncount DESC;" --allow-rootCode language: JavaScript (javascript)

Par ordre ascendant, voici la liste des doublons:

+---------------------------------------------+-------------+
| option_name                                 | optioncount |
+---------------------------------------------+-------------+
| jetpack_callables_sync_checksum             |       47123 |
| jetpack_sync_full_config                    |          50 |
| jetpack_sync_full_enqueue_status            |          43 |
| jpsq_sync_checkout                          |          10 |
| jetpack_sync_full__params                   |           5 |
| jetpack_sync_settings_sync_via_cron         |           4 |
| jetpack_sync_full__started                  |           4 |
+---------------------------------------------+-------------+

On peut supprimer automatiquement tous les doublons option_name de deux manières différentes, soit en utilisant la plus vieille valeuroption_id(donc la plus petite valeur d’ID), soit en utilisant la valeuroption_id la plus récente (plus grande valeur d’ID).

Garder le doublon option_name le plus ancien

Voici la requête SQL qui montre uniquement le plus ancien enregistrement (MIN) option_id pour chaque doublon de valeur option_name:

SELECT *
FROM wp options
WHERE option_id NOT IN
    (SELECT *
     FROM
       (SELECT MIN(n.option_id)
        FROM wp_options
        GROUP BY n.option_name) x)Code language: CSS (css)

Une fois que vous avez vérifié le résultat, on peut passer à la suppression.

Cette requête SQL garde l’enregistrement (MIN) option_id le plus ancien de tous les doublonsoption_name et supprime tous les enregistrements plus récents que la valeur trouvée:

DELETE
FROM wp options
WHERE option_id NOT IN
    (SELECT *
     FROM
       (SELECT MIN(n.option_id)
        FROM wp_options n
        GROUP BY n.option_name) x)Code language: CSS (css)

Voici l’équivalent wp-cli:

wp db query "DELETE FROM $(wp db prefix --allow-root)options WHERE option_id NOT IN (SELECT * FROM (SELECT MIN(n.option_id) FROM $(wp db prefix --allow-root)options n GROUP BY n.option_name) x)" --allow-rootCode language: JavaScript (javascript)

Garder le doublon option_name le plus récent

Cette requête SQL ne montre que les enregistrements option_id les plus récents (MAX) pour tous les doublons option_name :

SELECT *
FROM wp_options
WHERE option_id NOT IN
    (SELECT *
     FROM
       (SELECT MAX(n.option_id)
        FROM wp_options n
        GROUP BY n.option_name) x)Code language: CSS (css)

Et voici la requête qui permet de garder les enregistrements option_id les plus récents (MAX) pour tous les doublons option_name en supprimant tous les doublons les plus anciens:

DELETE
FROM wp_options
WHERE option_id NOT IN
    (SELECT *
     FROM
       (SELECT MAX(n.option_id)
        FROM wp_options n
        GROUP BY n.option_name) x)Code language: CSS (css)

Voici l’équivalent wp-cli pour garder l’enregistrement option_name le plus récent:

wp db query "DELETE FROM $(wp db prefix --allow-root)options WHERE option_id NOT IN (SELECT * FROM (SELECT MAX(n.option_id) FROM $(wp db prefix --allow-root)options n GROUP BY n.option_name) x)" --allow-rootCode language: JavaScript (javascript)

Vérifier les clés et contraintes de la table wp_options

Ajoutons de nouveau la contrainte UNIQUE sur la colonne option_name :

wp db query "ALTER TABLE $(wp db prefix --allow-root)options ADD UNIQUE (option_name);" --allow-rootCode language: JavaScript (javascript)

Si vous n’obtenez pas d’erreur, vérifiez la table une nouvelle fois pour constater les changements:

wp db query "DESCRIBE $(wp db prefix --allow-root)options;" --allow-rootCode language: JavaScript (javascript)

Kaboom! Votre table wp_options possède maintenant une PRIMARY KEY sur la colonne option_id et la contrainte UNIQUE sur la colonne option_name:

+--------------+---------------------+------+-----+---------+----------------+
| Field        | Type                | Null | Key | Default | Extra          |
+--------------+---------------------+------+-----+---------+----------------+
| option_id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| option_name  | varchar(191)        | NO   | UNI |         |                |
| option_value | longtext            | NO   |     | NULL    |                |
| autoload     | varchar(20)         | NO   |     | yes     |                |
+--------------+---------------------+------+-----+---------+----------------+Code language: PHP (php)

Je vous conseille de vérifier la structure de la table de temps à autre, notamment si vous constatez une prise de poids anormale en très peu de temps

Serveur dédié : installation de MariaDB 10.3 photo

MariaDB ne veut plus redémarrer : quelques solutions

MariaDB ne veut plus se lancer

Sur le serveur chinois que j’ai monté pour un de mes clients sur Codeable, le site a commencé à afficher des erreurs étranges : erreur 502 pour nginx sur certaines pages et des nombres étranges en lieu et place des données de la base de données.

Après un redémarrage des services PHP, nginx et mysql, je constate que MariaDB veut bien s’arrêter mais ne veut plus de lancer.

Voici ce que donne:

systemctl status mariadb.serviceCode language: CSS (css)

Résultat:

● mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2019-04-22 18:14:22 CST; 59s ago
  Process: 721 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 718 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
  Process: 12274 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE)
  Process: 12179 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited,
  Process: 12176 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 12173 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
 Main PID: 12274 (code=exited, status=1/FAILURE)
   Status: "MariaDB server is down"
systemd[1]: Starting MariaDB database server…
mysqld[12274]: 2019-04-22 18:14:19 140194687476288 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process 12274 …
systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start MariaDB database server.
systemd[1]: mariadb.service: Unit entered failed state.
systemd[1]: mariadb.service: Failed with result 'exit-code'.Code language: PHP (php)

Bon, chou blanc. Cela ne nous donne aucune information exploitable quand à l’erreur qui empêche le démarrage du service de base de données.

Solution: vérifier l’espace disponible sur le disque du serveur

On regarde ensuite ce que nous donnent les logs de MariaDB:

tail -f /var/log/mysql/error.logCode language: JavaScript (javascript)

Résultat:

2019-04-22 18:14:19 140194687476288 [Note] InnoDB: Completed initialization of buffer pool
2019-04-22 18:14:19 140194687476288 [Note] InnoDB: Highest supported file format is Barracuda.
2019-04-22 18:14:19 140194687476288 [Note] InnoDB: 128 rollback segment(s) are active.
2019-04-22 18:14:19 140194687476288 [Note] InnoDB: Waiting for purge to start
2019-04-22 18:14:19 140194687476288 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.36-82.1 started; log sequence number 11397472969
2019-04-22 18:14:19 140194687476288 [Note] Plugin 'FEEDBACK' is disabled.
2019-04-22 18:14:19 140194687476288 [ERROR] mysqld: Can't change size of file (Errcode: 28 "No space left on device")
2019-04-22 18:14:19 140194687476288 [ERROR] Can't init tc log
2019-04-22 18:14:19 140194687476288 [ERROR] AbortingCode language: PHP (php)

Là, c’est beaucoup plus intéressant. Visiblement, deux erreurs majeures sont à l’origine du non-démarrage du service:

  • il n’y a plus d’espace disponible sur le disque dur du serveur,
  • le fichier /var/lib/mysql/tc.log ne peut pas être initialisé.

Après un petit df, il s’avère que le client a installé un plugin de sauvegarde qui a littéralement saturé tout l’espace disponible.

Après un petit ménage, il ne reste plus qu’à gérer la seconde erreur, Can’t init tc log.

Le fichier /var/lib/mysql/tc.log peut parfois souffrir d’un problème de permission.

Dans le cas du client, on l’archive par précaution:

mv /var/lib/mysql/tc.log /var/lib/mysql/tc_bakup.logCode language: JavaScript (javascript)

Puis on relance le serveur MariaDB:

service mysql start

On vérifie le statut du service:

service mysql status

qui nous retourne:

service mysql status
● mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-04-22 18:17:22 CST; 1h 37min ago
  Process: 12467 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 12464 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
  Process: 12340 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited,
  Process: 12337 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 12334 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
 Main PID: 12437 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 29 (limit: 4915)
   CGroup: /system.slice/mariadb.service
           └─12437 /usr/sbin/mysqld

Apr 22 18:17:20 iZuf6aj6jz83uxa0jgbgcrZ systemd[1]: Starting MariaDB database server...
Apr 22 18:17:21 iZuf6aj6jz83uxa0jgbgcrZ mysqld[12437]: 2019-04-22 18:17:21 139940495544896 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process 12437 ...
Apr 22 18:17:22 iZuf6aj6jz83uxa0jgbgcrZ systemd[1]: Started MariaDB database server.Code language: PHP (php)

A noter que l’erreur 502 de nginx n’était pas due à une mauvaise configuration du server block mais bien d’un manque d’espace disque.

C’est important à vérifier, avant de se lancer dans la dissection du fichier de configuration d’nginx (qui n’aurait pas réglé le problème dans ce cas précis).

Michael Molloy and Alex Evans - Rise and Fall photo

Michael Molloy and Alex Evans – Rise and Fall

“Rise & Fall” est une chanson écrite par Michael Molloy et Alex Evans.

La chanson a été enregistrée par Michael Molloy avant son décès, en septembre 2012, à la suite d’un accident de car survenu alors qu’il rentrait de Bestival.

Le single a reçu le soutien de Brian May, James Morrison, Wayne Rooney et Joey Barton. La chanson a été publiée par les organisateurs de Bestival, Sunday Best, sur leur label Sunday Best Recordings.

Joe Molloy, le frère de Michael, a déclaré:

«L’ambition de Michael était de faire reconnaître sa musique par le monde entier. Il n’a jamais rempli cette ambition et nous, sa famille, l’accomplissons pour lui. Michael ne pourra jamais revenir et nous ne cesserons jamais de le pleurer. Nous pensons à lui chaque heure de chaque jour. Mais la passion de Michael pour la musique et son talent étaient l’une des qualités qui le caractérisaient et nous souhaitons que le reste du monde, par le biais de sa musique, comprenne et apprécie, de façon modeste, ce qu’il était en tant qu’être humain spécial. La sortie du single est à la fois mémorable et festive et nous souhaitons remercier Sunday Best et toutes les personnes qui ont soutenu Michael pendant de nombreuses années. Ils savent qui ils sont. “

WordPress : nettoyer les tables wp_options et wp_postmeta photo

WordPress : nettoyer les tables wp_options et wp_postmeta

Nous allons aujourd’hui examiner deux tables importantes de votre base de données WordPress, wp_options et wp_postmeta.

C’est un domaine qui est souvent négligé en ce qui concerne les performances globales de WordPress et de la base de données.

Cela est très visible sur les sites les plus anciens et les plus gros et peut être la cause des temps de requête lents sur votre site en raison des données à chargement automatique laissées par les plugins et les thèmes tiers.

Voici quelques conseils pour vérifier, dépanner et nettoyer vos tables wp_options et wp_postmeta.

Que contient la table wp_options ?

La table wp_options contient toutes les données relatives aux options et paramètres de votre site WordPress telles que:

  • URL du site, URL de la page d’accueil, adresse électronique de l’administrateur, catégorie par défaut, publications par page, format d’heure, etc.
  • Paramètres pour les plugins, les thèmes, les widgets,
  • Données temporairement mises en cache.

La table wp_options contient plusieurs champs :

  • option_id
  • option_name
  • option_value
  • autoload

Le champ qui nous intéresse particulièrement est le champ autoload, qui contient un drapeau qui peut être soit “yes”, soit “no”. Cela contrôle essentiellement si la valeur est chargée ou non par la fonction wp_load_alloptions().

Les données à chargement automatique sont des données qui sont chargées sur chaque page de votre site WordPress. L’attribut autoload est défini sur «yes» par défaut pour les développeurs, mais tous les plugins ne doivent théoriquement pas charger leurs données sur chaque page.

Le problème que les sites WordPress peuvent rencontrer est celui où la table wp_options contient une grande quantité de données auto-chargées. Cependant, la table wp_options n’a pas non plus été conçue pour contenir des milliers de lignes.

Combien coûte trop de données autoloadées? Cela peut varier, bien sûr, mais idéalement, vous voulez que la taille de votre ordinateur soit comprise entre 300 Ko et 1 Mo.

Une fois que vous commencez à approcher la plage de 3 à 5 Mo ou plus, il existe très probablement des éléments pouvant être optimisés ou supprimés du chargement automatique.

Et tout ce qui dépasse 10 Mo doit être traité immédiatement. Cela ne signifie pas toujours que cela posera un problème, mais c’est un bon point de départ.

Vérifier la taille totale des données auto-chargées

On peut calculer la taille totale des données auto-chargées d’un site WordPress en effectuant la requête suivante sous MySQL:

SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';Code language: JavaScript (javascript)

La valeur d’autoload_size est exprimée en octets. Il y a 1024 octets dans un KB et 1024 KB dans un MB. Dans notre cas, 622 138 octets sont donc égaux à 0,62 MB. Donc pour ce site, c’est une bonne taille! Si vous restituez moins de 1 Mo, ne vous inquiétez pas. Cependant, si le résultat était beaucoup plus grand, passez à l’étape suivante.

Lire la suite

BRADAFRAMANADAMADA - Laisse pisser photo

BRADAFRAMANADAMADA – Laisse pisser

Voici une chanson de BRADAFRAMANADAMADA qui permet de remettre en perspectives toutes les petites choses et les petits tracas de la vie quotidienne :

Laisse pisser ! :)