Ajouter un lien avec le nombre d'articles et le total du panier WooCommerce photo

Rendre la page panier WooCommerce réactive

Lors de mon dernier projet WooCommerce, j’ai remarqué que la page panier de WooCommerce n’était pas vraiment réactive sous Safari (iPhone, iOS) : le tableau ne s’empile pas comme il le devrait et toutes les colonnes sont comprimées. Les dernières colonnes sont hors du viewport.

Safari sous iOS (iPhone) semble être le seul concerné – je n’ai pas réussi à reproduire ce comportement sur FireFox, Chrome ou Opera.

Le site en question utilise Astra, qui est vraiment bien éprouvé, ainsi qu’Elementor comme constructeur de page.

Voici comment rendre le tableau du panier WooCommerce réactif, en utilisant quelques lignes de CSS.

Forcer la réactivité du panier WooCommerce

J’ai opté pour une solution propre, en CSS, en ne ciblant que les iPhones puisqu’ils sont les seuls concernés (Safari + résolution d’écran).

Voici donc le code utilisé pour rendre le panier WooCommerce réactif:

/*
Plugin Name: Sky WooCommerce Responsive Cart
Plugin URI: https://mattbiscay.com
Description: Make WooCommerce cart responsive
Version: 1.1
Author: Matt Biscay
Author URI: https://mattbiscay.com
*/

/* responsive cart */
@media only screen and ( max-width: 479px ) {
  
  .short-description, .product_meta, body.woocommerce div.product .woocommerce-tabs, body.woocommerce #content div.product .woocommerce-tabs { display: none; }
  body.woocommerce .images { float: none !important; width: auto !important; margin-bottom: 40px !important; clear: both !important; }
  
  table .product-thumbnail { display: none; }
  
  .woocommerce-page #content div.product form.cart .variations { margin-left: 0; }
  
  table.cart th, #content table.cart th, table.cart td, #content table.cart td, table.cart tr, #content table.cart tr, #content-area table tr, #content-area table td, #content-area table th { padding: .857em 0.287em; }
  
  .woocommerce .woocommerce .col2-set .col-1, .woocommerce-page .col2-set .col-1, .woocommerce .col2-set .col-2, .woocommerce-page .col2-set .col-2 { width: 100% !important; }
  .woocommerce .woocommerce form .form-row, .woocommerce-page form .form-row { width: auto !important; float: none !important; }
  
  #order_review .shop_table { margin-left: 0; }
  
  /* cart: tax on its own line */
  .includes_tax { display: block; }
  
}

/* cart weird bug on Safari: cart table is not collapsing */
/* this corrects the bug on iphones */

@media (max-width: 768px){
  .iphone .woocommerce table.shop_table_responsive tr,
  .iphone .woocommerce-page table.shop_table_responsive tr {
    display: flex;
    flex-direction: column;
    flex-basis: 100%;
    flex: 1;
  }
  
  .woocommerce table.shop_table_responsive tr td::before, .woocommerce-page table.shop_table_responsive tr td::before {
    content: attr(data-title) ' ';
    font-weight: 700;
    float: left;
  }
  
  p.no-shipping-options {
    clear: both;
    margin-top: 3rem;
  }
}
Code language: CSS (css)

Lire la suite

Créer un enregistrement BIMI pour afficher votre logo dans les entêtes email de vos destinataires photo 1

Créer un enregistrement BIMI pour afficher votre logo dans vos emails clients et prospects

Les Brand Indicators for Message Identification (BIMI) – indicateurs de marque pour l’identification des messages en français – sont un moyen standardisé pour les entreprises d’utiliser leur logo comme indicateur visible pour aider les destinataires d’e-mails à reconnaître et à éviter les messages frauduleux.

BIMI s’appuie sur le protocole d’authentification de messagerie DMARC pour développer la confiance avec les clients actuels et potentiels.

Avantages de l’enregistrement BIMI

En publiant votre fiche BIMI et le logo associé dans le DNS, votre marque sera facilement reconnue et approuvée par les clients actuels et futurs.

Non seulement les clients actuels et potentiels sont convaincus que vos e-mails sont légitimes, mais ils gagnent également un niveau de confiance en voyant votre logo approuvé dans leur boîte de réception.

Chaque fois qu’un client reçoit un message de votre domaine en utilisant la norme BIMI, au moins trois impressions de marque uniques potentielles sont effectuées: liste de messages, adresse e-mail dans le message et dans le message lui-même.

Plus vite votre entreprise décide d’adopter le BIMI (lorsqu’il est disponible via votre fournisseur de messagerie sortante), plus votre marque sera reconnue.

Étape 1 : mettre en place SPF, Sender-ID, DKIM et DMARC (et HTTPS)

Habituellement, les logos sont automatiquement extraits de diverses sources et organisés par les fournisseurs de clients de messagerie. En conséquence, différents logos s’affichent en fonction du client de messagerie et de l’appareil. Avec BIMI, les marques contrôlent leurs logos officiels affichés, quelle que soit la taille de la marque.

Les symboles sont un moyen succinct et efficace de communiquer des informations sur votre entreprise. Un logo est un élément important de la marque de votre entreprise et a un impact significatif sur la perception du public d’une entreprise.

En fait, un logo est l’un des investissements de marque les plus importants qu’une entreprise puisse faire. Il attire l’attention, fait une première impression forte, est le fondement de votre identité de marque, de la sécurité, est mémorable, vous sépare de la concurrence, favorise la fidélité à la marque et est attendu par votre public.

La spécification BIMI s’appuie sur les normes d’authentification de messagerie existantes telles que Sender Policy Framework (SPF), DomainKeys Identified Mail (DKIM) et Domain-based Message Authentication, Reporting & Conformance (DMARC).

Les marques qui déploient correctement l’authentification des e-mails à l’aide de DMARC pourront tirer parti de BIMI. DMARC est une norme qui permet aux propriétaires de domaines (marques) de protéger leurs domaines en définissant des politiques d’authentification des e-mails.

DMARC fournit également des rapports qui aident à configurer l’authentification des e-mails à l’aide de SPF et DKIM sur toutes les sources.

Je vous conseille le tutoriel sur la mise en place de DMARC pour votre domaine, ainsi que celui sur l’authentification SPF, Sender-ID et DKIM pour tout paramétrer dans les règles de l’art.

Le domaine doit impérativement être servi en HTTPS.

Une fois toutes les sources valides identifiées et authentifiées, une politique DMARC restrictive (c’est-à-dire p=quarantine ou p=reject) peut être définie:

_dmarc IN TXT v=DMARC1; p=reject; rua=mailto:dmarc@example.com;

En utilisant cette stratégie, les propriétaires de domaine peuvent contrôler ce qu’il advient des messages non authentifiés (non approuvés), qu’ils finissent dans le spam ou qu’ils soient complètement rejetés par le fournisseur de messagerie destinataire.

DMARC aide les marques à se protéger contre divers types d’abus de domaine et d’attaques de phishing, mais courants.

En termes simples, vous souhaitez éventuellement avoir vos enregistrements DMARC avec une politique de quarantaine ou de rejet pour le domaine de votre marque, que vous implémentiez ou non BIMI.

Lire la suite

Créer un site staging pour WordPress sur un sous-domaine photo

Créer un site staging pour WordPress sur un sous-domaine

Le Centre de Kriya Yoga France n’avait pas de site staging, ce site de développement et de test qui permet de tester, développer ou mettre à jour de nouvelles extensions, sans affecter le site principal.

Une des extensions a eu besoin d’être débugguée par ses concepteurs mais pour des raisons de confidentialité, il nous est apparu intéressant et plus sécurisé de donner accès à un site de développement, fraîche copie du site original, pour le débuggage.

Si vous avez besoin de créer un site staging pour votre site WordPress et que votre hébergeur ne le propose pas, voici comment faire.

Étape 1 : créer un sous-domaine au niveau DNS

Nous choisissons la solution la plus simple: servir le site STAGING depuis un sous-domaine. Il suffit de créer un nouvel enregistrement DNS sous la forme:

staging IN A xxx.xxx.xxx.xxxCode language: CSS (css)

staging represente le sous-domaine et xxx.xxx.xxx.xxx représente l’adresse IPv4 du serveur.

Étape 2 : créer le server block sous NginX

Le domaine étant déjà actif, j’ai uniquement rajouté ce server block:

### STAGING ###
 server {
 listen              443 ssl http2;
 listen              [::]:443 ssl http2;
 server_name staging.kriyayoga.fr;
 root /home/www/kriyayoga/staging/public_html;
 set $root /home/www/kriyayoga/staging/public_html;
 index index.php index.htm index.html;
 error_log /var/log/nginx/kriyayoga_staging_error.log;
 #SSL
 ssl_certificate        /etc/nginx/ssl/kriyayoga.fr/fullchain.pem;
 ssl_certificate_key    /etc/nginx/ssl/kriyayoga.fr/privkey.pem;
 include snippets/mime-types.conf;
 #Exclusions
 include snippets/exclusions.conf;
 #Security
 include snippets/security.conf;
 #Static Content
 include snippets/static-files.conf;
 #Fastcgi cache rules
 include snippets/fastcgi-cache.conf;
 include snippets/limits.conf;
 include snippets/nginx-cloudflare.conf;
 #Gzip
 include snippets/gzip.conf;
 location / {
 try_files $uri $uri/ /index.php?$args;
 }
 location ~ .php$ {
 try_files $uri =404;
 include snippets/fastcgi-params.conf;
 fastcgi_pass unix:/run/php/php7.4-fpm.sock;
 #Skip cache based on rules in snippets/fastcgi-cache.conf.
 fastcgi_cache_bypass $skip_cache;
 fastcgi_no_cache $skip_cache;
 #Define memory zone for caching. Should match key_zone in fastcgi_cache_path above.
 fastcgi_cache kriyayoga;
 #Define caching time.
 fastcgi_cache_valid 60m;
 #increase timeouts
 fastcgi_read_timeout 6000;
 fastcgi_connect_timeout 6000;
 fastcgi_send_timeout 6000;
 proxy_read_timeout 6000;
 proxy_connect_timeout 6000;
 proxy_send_timeout 6000;
 send_timeout 6000;
 #these lines should be the ones to allow Cloudflare Flexible SSL 
 #to be used so the server does not need to decrypt SSL if you wish
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto https;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-NginX-Proxy true;
 }
 #Protect WooCommerce upload folder from being accessed directly.
 #You may want to delete this config if you are using "Redirect Only" method for downloadable products.
 #Place this config towards the end of "server" block in NginX configuration.
 location ~* /wp-content/uploads/woocommerce_uploads/ {
   if ( $upstream_http_x_accel_redirect = "" ) {
     return 403;
     }
     internal;
 }
 }Code language: PHP (php)

Testez la nouvelle configuration:

nginx -t

Puis redémarrez NginX:

service nginx reload

Note: il est important de noter que je n’ai pas besoin de créer de certificat SSL puisque mes certificats sont wildcard par défaut. Si ce n’est pas le cas chez vous, pensez à en générer pour votre sous-domaine.

Lire la suite

Grand Oral, bac, examen

Réflexions sur le Grand Oral du Bac

L’année 2021 a marqué l’avènement de la réforme Blanquer du lycée, avec pour la première fois la passation de l’épreuve du Grand Oral: les candidats ont deux questions à préparer qui concerne leurs deux spécialités (questions croisées ou non, au choix du candidat).

La préparation au Grand Oral

Pour les enseignants, cela a pris quasiment trois mois de préparation, de mars jusqu’à juin, pour que les élèves trouvent leur question problématisée, ainsi qu’un plan qui tienne la route.

J’ai noté qu’avec le contexte sanitaire très particulier de l’année scolaire ainsi que la très large part de contrôle continu continu (82%), les élèves avaient quasiment tous le bac d’office et le Grand Oral ne représentait alors qu’une variable d’ajustement de leur mention: soit la mention supérieure, soit la stagnation. Difficile dès lors de les motiver pour l’épreuve ou d’espérer qu’ils viennent s’inscrire aux oraux blancs.

L’épreuve du Grand Oral

J’ai cette année été invité comme enseignant spécialiste au jury du Grand Oral. Cela signifie que nous sommes deux enseignants: un enseignant spécialiste d’une discipline enseignée en spécialité de terminale et un autre enseignant lambda qui n’est pas spécialiste.

Le but est que le candidat puisse montrer ses connaissances au spécialiste, tout en vulgarisant suffisamment pour que le non-spécialiste puisse comprendre l’essence de l’exposé. Les deux notent l’éloquence et l’interaction de la présentation du candidat.

En pratique, mis à part les premiers candidats, tous les candidats d’un même jury peuvent connaître la question sur laquelle ils vont plancher puisque c’est forcément la question qui concerne l’enseignant spécialiste. Il est obligé de prendre la question qui correspond à sa spécialité. Dès lors, il y a peu de surprises pour les candidats.

Le cru 2021 a été très particulier car peu d’enseignants pouvaient vraiment dire à quoi allaient ressembler les prestations des candidats. L’épreuve est nouvelle, le nom grandiloquent et la grille d’évaluation assez opaque.

Personnellement, je m’attendais à quelque chose de grandiose, en rapport avec le nom. Il n’en est rien: ce sont juste des oraux, tels qu’on avait l’habitude d’en écouter autrefois, en section littéraire (L).

J’ai eu de très belles présentations, fouillées et structurées, bien argumentées et défendues, mais également des présentations faites à la va-vite, en 3 minutes, sans la moindre cohérence dans le discours, inspirées des anciennes notions du programme précédent (Mythes et Héros particulièrement).

Lire la suite

Nettoyer un site WordPress infecté par un script shell photo 1

Nettoyer un site WordPress infecté par un script shell

Il n’est pas rare de voir des sites WordPress infectés par des scripts shell, qui peuvent exploiter certaines failles du core WordPress, de plugins ou de thèmes.

Ces attaques de WordPress sont courantes et concernent les sites qui n’ont pas été protégés par un antivirus ou un plugin de sécurité comme iThemes Security.

Il peut donc arriver que certains malwares infestent votre site WordPress, de manière automatisée si certaines composantes (core, plugins, themes) ne sont pas mis à jour régulièrement.

La technique détaillée ci-dessous vous permet d’identifier et de supprimer ces fichiers dans vos dossiers WordPress.

Important: avant de commencer, faites une sauvegarde du site: fichiers et base de données.

Étape 1 : suppression des fichiers potentiellement infectés

Sur l’installation en question, ces fichiers n’appartiennent pas à WordPress ou sont infectés. Nous les supprimons à vue:

rm 1index.php index.php db.php del.php wikindex.phpCode language: CSS (css)

Nous supprimons également les répertoires wp-admin et wp-includes de WordPress car souvent des fichiers malfaisants sont copiés dedans:

rm wp-admin -rf
rm wp-includes -rf

Étape 2 : réinstallation de WordPress

On réinstalle WordPress:

wp core download --force --skip-content --locale=fr_FR --allow-root

Lire la suite

The Handmaid's Tale: Chapter 41 analysis photo, Offred, June, Nick

The Handmaid’s Tale: Chapter 41 analysis

I WISH THIS story were different. I wish it were more civilized. I wish it showed me in a better light, if not happier, then at least more active, less hesitant, less distracted by trivia. I wish it had more shape. I wish it were about love, or about sudden realizations important to one’s life, or even about sunsets, birds, rainstorms, or snow.
Maybe it is about those things, in a sense; but in the meantime there is so much else getting in the way, so much whispering, so much speculation about others, so much gossip that cannot be verified, so many unsaid words, so much creeping about and secrecy. And there is so much time to be endured, time heavy as fried food or thick fog; and then all at once these red events, like explosions, on streets otherwise decorous and matronly and somnambulant.
I’m sorry there is so much pain in this story. I’m sorry it’s in fragments, like a body caught in crossfire or pulled apart by force. But there is nothing I can do to change it.
I’ve tried to put some of the good things in as well. Flowers, for instance, because where would we be without them?
Nevertheless it hurts me to tell it over, over again. Once was enough: wasn’t once enough for me at the time? But I keep on going with this sad and hungry and sordid, this limping and mutilated story, because after all I want you to hear it, as I will hear yours too if I ever get the chance, if I meet you or if you escape, in the future or in Heaven or in prison or underground, some other place. What they have in common is that they’re not here. By telling you anything at all I’m at least believing in you, I believe you’re there, I believe you into being. Because I’m telling you this story I will your existence. I tell, therefore you are.
So I will go on. So I will myself to go on. I am coming to a part you will not like at all, because in it I did not behave well, but I will try nonetheless
to leave nothing out. After all you’ve been through, you deserve whatever I have left, which is not much but includes the truth.

The Handmaid’s Tale, chapter 41.

This chapter is a turning point for Offred is no longer a victim but an active agent ready to give an extraordinary account of her affair with Nick and the salvaging afterward.

She will try to fulfill her quest or relationships and reciprocity through the experience with Nick and then honesty to her imaginary reader, promising him/her to tell the truth.

Dismemberment and fragmentation

Fragmentation annoys her and weighs heavily on her: she is a trapped mind wandering endlessly in a maze. The plotline constantly jumps about, each paragraph is unrelated to the previous and next one.

Fragmentation positions Offred as a victim of Gilead: the fragmented quality of her writing becomes a graphic representation of Gilead’s influence on the narrator’s psychological balance.

She is also a victim in the process of story-telling for she appears unable to control what she tells. This idea is reinforced by another quote: “it isn’t a story I’m telling”, underlining that her mission is not to make things up and to beautify reality but to render things as they truly are.

Her mission is to get a message across, it has a didactic purpose: “after all I want you to hear it”.

“I’m sorry that it’s in fragments, like a body caught in crossfire and pulled apart by force”

  • there is a parallel between the body and the text
  • the fragmented text represents her own fragmented body

The text becomes less fragmented as she manages to write about her affair with Nick (“write her body”).

Besides, both tale and body are dismembered for both were violated and maimed. The body is often raped by the commander in the same way as Offred’s tale is said to have been raped or maimed by the two professors who have supposedly reorganized it.

Gradually, the narrator evolves from a denunciation of fragmentation to a search for unity and the confirmation that she exists.

Lire la suite

The Handmaid's Tale: Chapter 25 analysis, red and white tulips in a garden

The Handmaid’s Tale: Chapter 25 analysis

That was in May. Spring has now been undergone. The tulips have had their moment and are done, shedding their petals one by one, like teeth. One day I came upon Serena Joy, kneeling on a cushion in the garden, her cane beside her on the grass. She was snipping off the seed pods with a pair of shears. I watched her sideways as I went past, with my basket of oranges and lamb chops. She was aiming, positioning the blades of the shears, then cutting with a convulsive jerk of the hands. Was it the arthritis, creeping up? Or some blitzkrieg, some kamikaze, committed on the swelling genitalia of the flowers? The fruiting body. To cut off the seed pods is supposed to make the bulb store energy.
Saint Serena, on her knees, doing penance.
I often amused myself this way, with small mean-minded bitter jokes about her; but not for long. It doesn’t do to linger, watching Serena Joy, from behind.
What I coveted was the shears.

Well. Then we had the irises, rising beautiful and cool on their tall stalks, like blown glass, like pastel water momentarily frozen in a splash, light blue, light mauve, and the darker ones, velvet and purple, black cat’s-ears in the sun, indigo shadow, and the bleeding hearts, so female in shape it was a surprise they’d not long since been rooted out. There is something subversive about this garden of Serena’s, a sense of buried things bursting upwards, wordlessly, into the light, as if to point, to say: Whatever is silenced will clamour to be heard, though silently. A Tennyson garden, heavy with scent, languid; the return of the word swoon. Light pours down upon it from the sun, true, but also heat rises, from the flowers themselves, you can feel it: like holding your hand an inch above an arm, a shoulder. It breathes, in the warmth, breathing itself in. To walk through it in these days, of peonies, of pinks and carnations, makes my head swim.

The willow is in full plumage and is no help, with its insinuating whispers. Rendezvous, it says, terraces; the sibilants run up my spine, a shiver as if in fever. The summer dress rustles against the flesh of my thighs, the grass grows underfoot, at the edges of my eyes there are movements, in the branches; feathers, flittings, grace notes, tree into bird, metamorphosis run wild. Goddesses are possible now and the air suffuses with desire. Even the bricks of the house are softening, becoming tactile; if I leaned against them they’d be warm and yielding. It’s amazing what denial can do. Did the sight of my ankle make him lightheaded, faint, at the checkpoint yesterday, when I dropped my pass and let him pick it up for me? No handkerchief, no fan, I use what’s handy.

Winter is not so dangerous. I need hardness, cold, rigidity; not this heaviness, as if I’m a melon on a stem, this liquid ripeness.

The Handmaid’s Tale, chapter 25.

The Garden of (Serena) Joy

Abundance and life

Spring is the time of birth of nature. Abundance is conveyed by the number of adjectives. The narrator drowns in this garden – “makes my head swim” – and light seems to come from everywhere.

The passing of time is never recorded precisely: ellipses of several days/weeks. Chronology is not always respected, through the use of analepses and prolepses.

The passing of time is marked by seasons, the natural time and flora.

The garden as a fruiting body

The environment becomes consistent: the garden is like a body. The importance of softness is emphasized by the alliteration in [s].

The thread of the present is marked by the changing flora and the narrator’s gradual metamorphosis is modeled on that of Nature’s.

Serena as the disturbing element

Serena is seen as the disturbing element in this Garden of Eden.

Birth of the narrator as a human being, conscious of herself

Presence of feminity, necessary to the birth process

Feminity is needed for the birth and the whole garden is seen as a fruiting body.

Lyricism opposes the sense of osmosis felt by the “pathetic fallacy”: when natural elements are attributed with human attitudes. The garden shows the image of a natural world, which is everything Gilead has lost.

Pathetic fallacy is a literary technique that corresponds to a personification with natural elements.

Thanks to Offred’s heightened literary imagination, she can respond to the beauty of the garden and see the poetics behind the natural: the trees are seen as “birds in full plumage”.

Lire la suite

Serveur dédié: gérez comptes et alias email avec PostfixAdmin photo

Serveur dédié: gérez comptes et alias email avec PostfixAdmin

Si vous possédez et gérez votre propre serveur email, il peut être très intéressant de proposer des comptes emails et des alias pour vos utilisateurs.

J’ai écrit il y a quelques années un tutoriel qui faisait cela à la main avec une base SQL et des domaines virtuels mais il y a aujourd’hui beaucoup plus simple avec PostfixAdmin.

PostfixAdmin

PostfixAdmin est une interface web open-source qui permet de gérer des comptes mails, des domaines et des alias sur un serveur mail Postfix.

il s’intègre avec

  • Postfix
  • un server IMAP/POP3 comme Dovecot ou Courier
  • une base de données (sqlite, mysql, postgresql)
  • Fetchmail (optionnel)

Il est très utile pour créer des alias à la volée ou des comptes mail rapidement.

Création du sous-domaine

Je trouve cela plus simple de créer un sous-domaine pour ce type d’application. Dans votre gestionnaire DNS, il suffit d’ajouter un enregistrement de type A:

XXXXX.EXAMPLE.COM IN A xxx.xxxx.xxx.xxxCode language: CSS (css)

XXXXX est votre sous-domaine sur EXAMPLE.COM et xxx.xxx.xxx.xxx l’adresse IPv4 de votre serveur.

Création de la base de données

Nous utilisons MySQL/MariaDB pour postfix donc on s’identifie sur la console mysql :

mysql -u root -p 

[MOT DE PASSE ROOT]Code language: CSS (css)

Et on lance:

CREATE DATABASE postfix; 
CREATE USER 'mymailadmin'@'localhost' IDENTIFIED WITH mysql_native_password BY '1nyXI7Y)$spmslgz4HhdE4Lc_vm&)Gh!MsZFf64645fek'; 
GRANT ALL PRIVILEGES ON postfix.* TO 'mymailadmin'@'localhost'; 
FLUSH PRIVILEGES; EXIT;Code language: PHP (php)

Nous avons donc un nouvel utilisateur et une nouvelle base de données, spécifiques pour PostfixAdmin.

Configuration NginX pour PostfixAdmin

On crée un nouveau server block spécifique à PostfixAdmin:

nano /etc/nginx/sites-available/postfixadmin.conf

Lire la suite

Installation de Nextcloud: votre propre service de cloud chez vous photo 1

Nextcloud: mise en place du cron et des alertes emails

Mise en place du cron

Sur votre instance Nextcloud, il est important de mettre en place un cron qui va permettre de lancer les tâches de maintenance à intervalles réguliers.

Dans Paramètres > Administration > Paramètres de base, sélectionnez l’option Cron pour les tâches de fond:

Nextcloud cron

Ensuite, créez un fichier pour l’utilisateur www-data depuis le terminal:

crontab -u www-data -e

et à la fin du fichier on ajoute une tâche qui va se lancer toutes les 5 minutes:

*/5  *  *  *  * php -f /home/www/nextcloud/cron.phpCode language: JavaScript (javascript)

Pensez à changer le chemin pour celui de votre installation Nextcloud.

Et redémarrez le service cron pour appliquer les changements:

service cron restart

Notification automatique des nouvelles versions

Maintenant que le cron est en place, nous allons pouvoir planifier une tâche qui vérifiera chaque semaine s’il existe une nouvelle version de Nextcloud.

Cela peut sembler fou mais Nextcloud ne vous prévient pas lorsque de nouvelles mises à jour sont disponibles et il faut donc le mettre en place soi-même.

Nous ouvrons donc le fichier crontab pour notre utilsateur www-data :

crontab -u www-data -e

et nous ajoutons cette ligne, qui permet la vérification et notification des nouvelles versions par email, tous les vendredis à 19h:

0 19 * * 5 php /home/www/nextcloud/occ update:check # nextcloud update check, at 19:00 every FridayCode language: PHP (php)

Pensez à changer le chemin pour celui de votre installation Nextcloud.

Mise à jour automatique de votre installation Nextcloud

Être notifié des mises à jour, c’est bien – mais nous pouvons faire bien mieux : pourquoi ne pas installer automatiquement les mises à jour de NextCloud de manière à toujours avoir la dernière version ainsi que tous les correctifs de sécurité?

Ajoutez un nouveau cron:

0 20 * * 5 php /home/www/nextcloud/updater/updater.phar --no-interaction # automatic nextcloud upgrade, at 20:00 every FridayCode language: PHP (php)

Et redémarrez le service cron pour appliquer les changements:

service cron restart

Mise en place des alertes par email

Nextcloud est capable de vous alerter pour les mises à jour de sécurité ainsi que la gestion des mots de passe perdu pour les comptes utilisateurs mais encore faut-il qu’il soit configuré pour utiliser votre serveur mail correctement. Par défaut, rien n’est configuré.

Lire la suite

Grand Oral, bac, méthode, conseils

Conseils pour bien réussir le Grand Oral du Bac

  1. Réussir la traduction de la spécialité Anglais LLCE
  2. Réussir la transposition en spécialité anglais LLCER du bac
  3. 10 conseils pour bien réussir l’épreuve de Compréhension Orale du bac
  4. La compréhension écrite au bac : la méthode pour réussir
  5. Conseils pour bien réussir l’épreuve d’Expression Orale du bac
  6. Bac : le dossier en spécialité LLCER Anglais
  7. Bac : épreuve orale de spécialité LLCER Anglais
  8. Conseils pour bien réussir le Grand Oral du Bac
  9. La synthèse de documents en LLCER : méthode pour réussir

Quels sont les objectifs du Grand Oral ?

Le Grand oral exige tout au long de l’année que vous définissiez deux questions liées à vos deux enseignements de spécialité et que vous prépariez des réponses argumentées à ces questions.

Dans la filière générale, les questions portent sur les enseignements de spécialité que vous avez suivis en terminale. En revanche, dans la filière technologique, elles se rapportent à l’enseignement de spécialité dans lequel vous avez mené une étude approfondie ou un projet.

Le jour de l’épreuve, vous devez remettre au jury une feuille signée par vos professeurs de spécialité, contenant les énoncés des deux questions. Le jury en sélectionne une, et vous disposez alors de 20 minutes pour préparer votre présentation. Le Grand oral est l’une des cinq épreuves finales du baccalauréat.

Cette épreuve vous entraîne à parler en public de manière claire et convaincante. Elle vous permet également d’utiliser vos connaissances, notamment celles liées à vos spécialités, pour construire un argumentaire démontrant leur importance pour votre projet d’études supérieures et même votre projet professionnel.

Comment choisir vos deux questions ?

Pour votre épreuve du grand oral, vous devez en effet choisir et préparer deux questions portant sur les programmes de vos spécialités. Vous pouvez par exemple prendre une question pour chaque spécialité, ou bien choisir des questions qui couvrent les deux disciplines.

Quelques conseils pour choisir une question pertinente :

  • Prenez un sujet qui vous intéresse, sur lequel vous avez envie de réfléchir, de faire des recherches pour le grand oral. Par exemple, un thème que vous aurez envie d’approfondir tout au long de l’année.
  • Choisissez un sujet riche mais qui sera simple à problématiser, c’est-à-dire une thématique sur laquelle vous pourrez facilement trouver des documents, des supports pour vos recherches mais qui implique une problématique claire et pas trop large.
  • Enfin, prenez une question en cohérence avec votre projet d’études.

Remarque : n’oubliez pas que vos questions pour le grand oral devront être validées par vos professeurs, alors n’hésitez pas à leur demander conseil en cas de doute sur la pertinence de vos problématiques.

Les critères d’évaluations du Grand Oral

Le jour de l’épreuve, le jury observera plus particulièrement certains aspects de la prestation des candidats. Il faut donc se préparer en centrant son entraînement sur ces attendus du jury, à savoir :

  • La qualité de sa prestation orale, c’est-à-dire sa capacité à capter l’attention, soutenir un discours, etc…
  • La qualité de sa prise de parole en continu, c’est-à-dire sa gestion du temps, la ponctuation du discours, etc… 
  • La qualité de ses connaissances.
  • La qualité de son interaction avec les membres du jury, c’est-à-dire sa capacité à réagir à une interrogation, à la reformuler, à prendre l’initiative dans l’échange, etc…
  • La qualité et la construction de son argumentation et de sa démonstration.

Lire la suite

Cloudflare, logo, banner

Résoudre l’erreur “HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR”

Le serveur héberge plusieurs sites et l’un d’entre eux, Utopique, retournait l’erreur curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1) lorsqu’on le visitait avec Chrome mais fonctionnait sans souci avec Firefox.

Le plus drôle dans l’histoire (enfin drôle, j’ai passé deux jours à éplucher mes server blocks, les logs et la configuration SSL), c’est que ce site utilise le même modèle de server blocks que les autres. Je soupçonnais principalement la configuration NginX alors qu’en fait, elle n’y était pour rien!

Le problème se situe en fait au niveau de Cloudflare, et apparaît notamment avec le réglage suivant: Caching > Configuration > Browser Cache TTL > Respect Existing Headers.

Pour résoudre le problème, il faut choisir un autre réglage que “Respect Existing Headers”.

On creuse un peu à l’aide de curl pour comprendre ce qu’il se passe:

curl -vvv -I https://utopique.net --http2Code language: JavaScript (javascript)

Voici le résultat de la commande:

 Trying 2606:4700:3036::ac43:dc02:443…
 TCP_NODELAY set
 Connected to utopique.net (2606:4700:3036::ac43:dc02) port 443 (#0)
 ALPN, offering h2
 ALPN, offering http/1.1
 successfully set certificate verify locations:
 CAfile: /etc/ssl/certs/ca-certificates.crt
 CApath: /etc/ssl/certs
 TLSv1.3 (OUT), TLS handshake, Client hello (1):
 TLSv1.3 (IN), TLS handshake, Server hello (2):
 TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
 TLSv1.3 (IN), TLS handshake, Certificate (11):
 TLSv1.3 (IN), TLS handshake, CERT verify (15):
 TLSv1.3 (IN), TLS handshake, Finished (20):
 TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
 TLSv1.3 (OUT), TLS handshake, Finished (20):
 SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
 ALPN, server accepted to use h2
 Server certificate:
 subject: C=US; ST=CA; L=San Francisco; O=Cloudflare, Inc.; CN=sni.cloudflaressl.com
 start date: Jul 10 00:00:00 2020 GMT
 expire date: Jul 10 12:00:00 2021 GMT
 subjectAltName: host "utopique.net" matched cert's "utopique.net"
 issuer: C=US; O=Cloudflare, Inc.; CN=Cloudflare Inc ECC CA-3
 SSL certificate verify ok.
 Using HTTP2, server supports multi-use
 Connection state changed (HTTP/2 confirmed)
 Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
 Using Stream ID: 1 (easy handle 0x564540aecc80) 
   HEAD / HTTP/2
   Host: utopique.net
   user-agent: curl/7.68.0
   accept: <em>/</em>
      TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
   TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
   old SSL session ID is stale, removing
   Connection state changed (MAX_CONCURRENT_STREAMS == 256)!
   http2 error: Invalid HTTP header field was received: frame type: 1, stream: 1, name: [access-control-allow-headers "origin, x-requested-with, content-type, accept"], value: []
   HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
   stopped the pause stream!
   Connection #0 to host utopique.net left intact
   curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)    Code language: PHP (php)

Lire la suite

The Handmaid's Tale saison 1 photo

The Handmaid’s Tale: Chapter 5 analysis

A group of people is coming towards us. They’re tourists, from Japan it looks like, a trade delegation perhaps, on a tour of the historic landmarks or out for local colour. They’re diminutive and neatly turned out; each has his or her camera, his or her smile. They look around, bright-eyed, cocking their heads to one side like robins, their very cheerfulness aggressive, and I can’t help staring. It’s been a long time since I’ve seen skirts that short on women. The skirts reach just below the knee and the legs come out from beneath them, nearly naked in their thin stockings, blatant, the high-heeled shoes with their straps attached to the feet like delicate instruments of torture. The women teeter on their spiked feet as if on stilts, but off balance; their backs arch at the waist, thrusting the buttocks out. Their heads are uncovered and their hair too is exposed, in all its darkness and sexuality. They wear lipstick, red, outlining the damp cavities of their mouths, like scrawls on a washroom wall, of the time before.

I stop walking. Ofglen stops beside me and I know that she too cannot take her eyes off these women. We are fascinated, but also repelled. They seem undressed. It has taken so little time to change our minds, about things like this.

Then I think: I used to dress like that. That was freedom.

Westernized, they used to call it.

The Japanese tourists come towards us, twittering, and we turn our heads away too late: our faces have been seen.

There’s an interpreter, in the standard blue suit and red-patterned tie, with the winged-eye tie pin. He’s the one who steps forward, out of the group, in front of us, blocking our way. The tourists bunch behind him; one of them raises a camera.

“Excuse me,” he says to both of us, politely enough. “They’re asking if they can take your picture.”

I look down at the sidewalk, shake my head for No. What they must see is the white wings only, a scrap of face, my chin and part of my mouth. Not the eyes. I know better than to look the interpreter in the face. Most of the interpreters are Eyes, or so it’s said.

I also know better than to say Yes. Modesty is invisibility, said Aunt Lydia. Never forget it. To be seen – to be seen – is to be – her voice trembled – penetrated. What you must be, girls, is impenetrable. She called us girls.

Beside me, Ofglen is also silent. She’s tucked her red-gloved hands up into her sleeves, to hide them.

The interpreter turns back to the group, chatters at them in staccato. I know what he’ll be saying, I know the line. He’ll be telling them that the women here have different customs, that to stare at them through the lens of a camera is, for them, an experience of violation.

I’m looking down, at the sidewalk, mesmerized by the women’s feet. One of them is wearing open-toed sandals, the toenails painted pink. I remember the smell of nail polish, the way it wrinkled if you put the second coat on too soon, the satiny brushing of sheer pantyhose against the skin, the way the toes felt, pushed towards the opening in the shoe by the whole weight of the body. The woman with painted toes shifts from one foot to the other. I can feel her shoes, on my own feet. The smell of nail polish has made me hungry.

“Excuse me,” says the interpreter again, to catch our attention. I nod, to show I’ve heard him.

“He asks, are you happy,” says the interpreter. I can imagine it, their curiosity: Are they happy? How can they be happy? I can feel their bright black eyes on us, the way they lean a little forward to catch our answers, the women especially, but the men too: we are secret, forbidden, we excite them.

Ofglen says nothing. There is a silence. But sometimes it’s as dangerous not to speak.

“Yes, we are very happy,” I murmur. I have to say something. What else can I say?

The Handmaid’s Tale, chapter 5.

Introduction

“Gilead is within you” – Offred has absorbed Gilead’s values, yet the assimilation is not complete. She is off-balanced and torn between two sets of values. It is freedom she chooses although she is very reasonable.

The narrator invites the reader to follow her gradual evolution from external focalizer to internal focalizer: she describes but knows the system and therefore is able to criticize it.

The dramatic confrontation of two opposite worlds

Distinct versus indistinct

The focalization is external: she has swallowed the whole of Gilead’s values and viewpoints. As a consequence:

  • tourists are regarded as aliens
  • she has become a stranger to the Japanese tourists
  • there is an opposition between Gilead and the western world

The Japanese tourists are distinct:

  • they have a voice of their own, as well as an interpreter
  • they are allowed to live their own existence

Conversely, Handmaids are indistinct, all similar: “she called us girls”. They are not allowed to have a face and are reduced to symbols and images, there are no human beings any longer. They are also denied a voice: “I nod”, “murmur”.

Lire la suite