macos monterey wallpaper

Installer composer et PHP sous MacOS Monterey

Depuis la mise à jour MacOS Monterey (v12+) et pour toutes les versions à venir, Apple ne fournit plus de binaire PHP installé par défaut.

Si vous utilisez composer par exemple pour l’un de vos scripts ou plugin, voici le message d’erreur que vous pouvez obtenir:

composer update --no-plugins --no-scripts
env: php: No such file or directory

J’ai tenté pas mal de solutions, comme installer PHP avec brew mais cela n’a pas résolu le problème.

Error: Permission denied @ apply2files

C’est l’une des erreurs obtenues lors de l’installation de paquets avec brew, directement après la mise à jour vers Monterey:

Error: Permission denied @ apply2files - /usr/local/lib/node_modules/npm/node_modules/.bin/node-gypCode language: JavaScript (javascript)

Si cela vous arrive, c’est un problème de permissions sur le répertoire /user/local, la solution est simple, il faut redonner les bonnes permissions à votre utilisateur avec cette commande:

sudo chown -R $(whoami):admin /usr/local/* \
&& sudo chmod -R g+rwx /usr/local/*Code language: JavaScript (javascript)

Voilà déjà un problème réglé.

Installer composer sous MacOS Monterey

La véritable solution, toute simple finalement, est de réinstaller composer, qui se charge alors d’installer la version idoine de PHP.

On installe composer avec brew:

brew install composer

Résultat:


==> Downloading https://ghcr.io/v2/homebrew/core/php/manifests/8.1.0
Already downloaded: /Users/matt/Library/Caches/Homebrew/downloads/6dba7b955c116a258cc340994e9e9ed7dfdfe3ab7668f0f9adb5dfcdaaf303a2--php-8.1.0.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/php/blobs/sha256:dbbf3f0e595af9a72f6dcf7fef1890c6152bf9fb1be83f166b467393176c4aa5
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:dbbf3f0e595af9a72f6dcf7fef1890c6152bf9fb1be83f166b4
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/composer/manifests/2.1.14
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/composer/blobs/sha256:02f5fed3d67b82fb827078ffcd486a4a455d1f94e94d0701d779238d4e10903e
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:02f5fed3d67b82fb827078ffcd486a4a455d1f94e94d0701d77
######################################################################## 100.0%
==> Installing dependencies for composer: php
==> Installing composer dependency: php
==> Pouring php--8.1.0.monterey.bottle.tar.gz
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set php_ini /usr/local/etc/php/8.1/php.ini system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set php_dir /usr/local/share/pear system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set doc_dir /usr/local/share/pear/doc system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set ext_dir /usr/local/lib/php/pecl/20210902 system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set bin_dir /usr/local/opt/php/bin system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set data_dir /usr/local/share/pear/data system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set cfg_dir /usr/local/share/pear/cfg system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set www_dir /usr/local/share/pear/htdocs system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set man_dir /usr/local/share/man system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set test_dir /usr/local/share/pear/test system
==> /usr/local/Cellar/php/8.1.0/bin/pear config-set php_bin /usr/local/opt/php/bin/php system
==> /usr/local/Cellar/php/8.1.0/bin/pear update-channels
🍺  /usr/local/Cellar/php/8.1.0: 512 files, 79.9MB
==> Installing composer
==> Pouring composer--2.1.14.monterey.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/composer
Target /usr/local/bin/composer
already exists. You may want to remove it:
  rm '/usr/local/bin/composer'

To force the link and overwrite all conflicting files:
  brew link --overwrite composer

To list all files that would be deleted:
  brew link --overwrite --dry-run composer

Possible conflicting files are:
/usr/local/bin/composer
==> Summary
🍺  /usr/local/Cellar/composer/2.1.14: 3 files, 2.2MB
==> Running `brew cleanup composer`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).Code language: PHP (php)

Comme vous pouvez le constater dans les résultats précédents, le lien symbolique n’a pas été créé correctement donc nous allons le corriger à la main.

On teste notre commande avec --dr-run d’abord:

brew link --overwrite --dry-run composer
Would remove:
/usr/local/bin/composerCode language: JavaScript (javascript)

Tout semble bon, on crée le lien symbolique:

brew link --overwrite composer
Linking /usr/local/Cellar/composer/2.1.14... 1 symlinks created.

On reteste maintenant notre mise à jour de plugin via composer:

composer update --no-plugins --no-scripts

Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Writing lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Generating autoload filesCode language: JavaScript (javascript)

Impeccable, composer et php sont de nouveau opérationnels sous Monterey.

Black Friday et Cyber Monday 2019 : les meilleurs plans du web photo 1

Black Friday et Cyber Monday : les meilleurs plans du web

Allez, c’est la semaine la plus folle de l’année : Black Friday et Cyber Week ! Ces quatre jours de folie (certains les rallongent même de quelques jours, avant et après) vous assurent d’obtenir tous vos cadeaux avant Noël.

J’ai dégoté pour vous quelques offres intéressantes et variées tout en me fixant une ligne de conduite : face aux excès de la (sur)consommation, je vous propose uniquement des offres intéressantes pour des produits ou services virtuels.

Pas d’envois par la poste, et pas de camionnettes sur les routes – car nous n’avons qu’une planète !

Hébergement WordPress

WP Engine : 6 mois gratuits sur tous les plans annuels

WPEngine est un hébergeur très performant qui offre 5 mois gratuits sur tous ses plans annuels, ce qui est une véritable aubaine pour passer votre site à la vitesse supérieure !

WP Engine Cyber Weekend Promotion – 5 mois gratuits sur les plans annuels

Cloudways : -40% pendant 4 mois

Cloudways offre 40% de réduction pendant 4 mois sur toutes ses offres.

Lire la suite

Reconnaissance vocale vers l'éditeur de texte

Productivité : dictez vos textes au lieu de les taper au clavier

Un logiciel de reconnaissance vocale est une application qui utilise des algorithmes de reconnaissance vocale pour identifier le langage et le retranscrire en texte.

Voici un tour d’horizon des meilleurs moyens d’utiliser la reconnaissance vocale pour dicter vos messages et documents sous Windows, MacOS et Linux, le tout gratuitement.

La saisie vocale sous Windows

voice typing in windows 11

La saisie vocale de Windows 11 et 10 vous permet d’entrer du texte sur votre PC en parlant. La saisie vocale utilise la reconnaissance vocale en ligne, optimisée par Azure Speech Services.

Pour utiliser la saisie vocale, vous devez être connecté à Internet, utiliser un microphone et le curseur dans une zone de texte.

Une fois que vous activez la saisie vocale, elle commence à écouter automatiquement. Patientez pendant la « À l’écoute… » avant de commencer à parler.

Activer la saisie vocale

Appuyez Windows touche de logo+H sur un clavier matériel.

Appuyez sur la touche de microphone à côté de la barre d’espace sur le clavier tactile.

Arrêter la saisie vocale

Dites une commande de saisie vocale telle que « Arrêter l’écoute ».

Appuyez sur le bouton microphone dans le menu de saisie vocale.

Installer une langue de saisie vocale

Vous pouvez utiliser une langue de saisie vocale différente de celle que vous avez choisie pour Windows. Voici la marche à suivre :

1. Sélectionnez Démarrer > Paramètres > langue & et> langue & région.

2. Recherchez les langues préférées dans la liste, puis sélectionnez Ajouter une langue.

3. Recherchez la langue que vous voulez installer, puis sélectionnez Suivant.

4. Sélectionnez Suivant ou installez les fonctionnalités de langue facultatives que vous souhaitez utiliser. Ces fonctionnalités, notamment la reconnaissance vocale, ne sont pas nécessaires au travail de la saisie vocale.

Changer la langue de saisie vocale

Pour changer la langue de saisie vocale, vous devez modifier la langue d’entrée que vous utilisez. Procédez comme suit :

Sélectionnez le sélecteur de langue dans l’angle de la barre des tâches.

Appuyez Windows touche de logo + Espace sur un clavier matériel.

Appuyez sur le s basculer de langue dans le coin inférieur droit du clavier tactile.

Lire la suite

Les NFT et la blockchain photo

Les NFT et la blockchain

La blockchain

Une blockchain est fondamentalement une base de données partagée, c’est pourquoi elle est également connue sous le nom de grand livre (au sens de grand registre) distribué (bien que des grands livres distribués puissent reposer sur d’autres technologies).

La blockchain se différencie de la technologie traditionnelle des bases de données : au lieu d’une unique base gérée par un unique propriétaire qui partage les données, dans le réseau blockchain les participants au réseau ont leur propre copie de la base.

Le mécanisme de blockchain peut assurer un accord unanime sur le contenu correct des données, assurer la conformité des copies des données convenues et assurer l’absence ultérieure de tricherie par altération des données.

Cela permet à nombre de personnes ou d’entités — collaborateurs ou concurrents — de convenir d’un consensus sur des informations et d’enregistrer de manière immuable ce consensus de la vérité. Pour cette raison, la blockchain a été décrite comme une « infrastructure de confiance »

Que sont les NFT ?

NFT signifie Non-Fungible Token en anglais et token (ou jeton) non-fongible en français.

En économie, un actif fongible est quelque chose avec des unités qui peuvent être facilement échangées – comme l’argent.

Avec de l’argent, vous pouvez échanger un billet de 10 euros contre deux billets de 5 euros et il aura la même valeur.

Cependant, si quelque chose n’est pas fongible, c’est impossible – cela signifie qu’il a des propriétés uniques et qu’il ne peut donc pas être échangé avec autre chose.

Il peut s’agir d’une maison ou d’un tableau comme la Joconde, unique en son genre. Ou alors comme une carte à collectionner que vous échanger pour une autre.

Vous pouvez prendre une photo de la peinture ou acheter une impression, mais il n’y aura jamais qu’une seule peinture originale.

Les NFT sont des actifs « uniques en leur genre » dans le monde numérique qui peuvent être achetés et vendus comme n’importe quel autre bien, mais qui n’ont aucune forme tangible propre.

Les jetons numériques peuvent être considérés comme des certificats de propriété pour des actifs virtuels ou physiques.

Comment fonctionnent les NFT?

Les œuvres d’art traditionnelles telles que les peintures sont précieuses précisément parce qu’elles sont uniques en leur genre. Mais les fichiers numériques peuvent être dupliqués facilement et à l’infini.

Avec les NFT, les œuvres d’art peuvent être « tokenisées » pour créer un certificat de propriété numérique qui peut être acheté et vendu.

Comme pour la crypto-monnaie, un enregistrement de qui possède ce qui est stocké sur un grand livre partagé connu sous le nom de blockchain.

Les enregistrements ne peuvent pas être falsifiés car le grand livre est tenu par des milliers d’ordinateurs à travers le monde.

Les NFT peuvent également contenir des contrats intelligents qui peuvent donner à l’artiste, par exemple, une part de toute vente future du jeton.

À un niveau très élevé, la plupart des NFT font partie de la blockchain Ethereum.

Ethereum est une crypto-monnaie, comme le bitcoin ou le dogecoin, mais sa blockchain prend également en charge ces NFT, qui stockent des informations supplémentaires qui les font fonctionner différemment, par exemple, d’une pièce ETH.

Il convient de noter que d’autres blockchains peuvent implémenter leurs propres versions de NFT.

Où consulter et acheter des NFT?

Il existe une foule de sites dédiés aux NFT. Les plus connus sont OpenSea, Rarible, Nifty Gateway ou Coinbase NFT

Qu’est-ce qui empêche les gens de copier l’art numérique ?

Rien. Des millions de personnes ont vu l’art de Beeple qui s’est vendu pour 69 millions de dollars et l’image a été copiée et partagée d’innombrables fois.

Dans de nombreux cas, l’artiste conserve même la propriété du droit d’auteur de son travail, afin qu’il puisse continuer à produire et à vendre des copies.

Mais l’acheteur du NFT possède un « jeton » qui prouve qu’il possède l’œuvre « originale ».

Certaines personnes comparent cela à l’achat d’un tirage dédicacé.

Retirer les DRM d'un ebook acheté sur Amazon, Kindle, Calibre, DRM

Retirer les DRM d’un ebook acheté sur Amazon

J’ai récemment acheté sur Amazon un ebook qui, fait tout à fait incroyable, était totalement indisponible sur internet.

Commande en deux clics et Amazon offre la possibilité de télécharger le fichier sur l’ordinateur ou de l’envoyer directement sur ma Kindle. Comme je souhaite en utiliser un extrait pour mes élèves de secondes, je choisis le téléchargement direct.

Le fichier est au format propriétaire AZW3 et, comme pressenti, il est impossible de le lire sur l’ordinateur car il est associé à l’aide de DRM au numéro de série de la Kindle.

Voici un tutoriel qui vous montre comment retirer les DRM de vos ebooks achetés sur Amazon à l’aide de Calibre et de l’extension DeDRM.

Installation de calibre

Pour la gestion, la conversion et le transferts des ebooks sur mes liseuses, j’utilise exclusivement calibre, qui est gratuit et multi-plateformes.

Installez calibre ou mettez-le à jour.

Téléchargement de DeDRM

Nous allons avoir besoin d’un plugin pour calibre qui s’appelle DeDRM.

Téléchargez la dernière version puis dézippez le fichier. Vous obtenez un répertoire avec plusieurs fichiers zip.

Installation du plugin DeDRM dans calibre

Nous allons maintenant procéder à l’installation du plugin DeDRM dans calibre.

Ajout de DeDRM dans calibre

Ouvrez calibre puis naviguez dans le menu calibre → Preferences → Avancé → Extensions (ou calibre → Preferences → Advanced → Plugins si vous avez la version en anglais):

calibre preferences
Allez dans le menu Extensions

Lire la suite

La synthèse de documents en LLCER : méthode photo 1

La synthèse de documents en LLCER : méthode pour réussir

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

Voici la fiche méthode pour bien réussir l’épreuve de synthèse de documents en spécialité LLCER.

Nature de l’épreuve de synthèse

Le but est de réaliser à l’écrit un exposé objectif des idées présentées dans chaque document.

Le plan que vous adopterez doit dégager tout en l’analysant la problématique qui les relie, de façon à ce que le lecteur de la synthèse puisse se faire sa propre opinion du sujet, sans avoir à consulter les documents originaux.

C’est pourquoi il ne faut pas introduire de commentaire personnel.

Lecture des documents

Il est très fortement conseillé de réaliser un tableau avec 1 colonne par document.

Pensez également aux surligneurs en adoptant un code couleur pour matérialiser les idées et les documents.

Identifiez la nature des documents et leur source

  • extrait de théâtre, fiction, essai, écrit journalistique, document iconographique…
  • la date et le lieu de publication : est-ce un texte récent ? Est-ce un document historique ? quel journal ?
  • le titre : si le document a un titre (article de presse, par exemple), demandez-vous quel est le rapport entre le titre et le contenu du texte ? Est-ce un titre humoristique, informatif, descriptif… ?
  • l’auteur : pour les textes historiques et journalistiques notamment, est-ce que l’auteur est connu ?

Situez le contexte historique et géographique

Il vous faut contextualiser en quelques mots le document:

  • s’il est publié à une période cruciale de l’humanité (crises politiques, conflits armés civils ou internationaux, guerres mondiales, incidents diplomatiques…).
  • s’il concerne plutôt la Grande-Bretagne , les Etats-Unis, l’Australie… En quoi est-ce que ce dossier est spécifique à ce pays ou cette région du monde (lien avec l’histoire du pays, sa culture, la langue).

Interrogez-vous sur le point de vue adopté (qui parle et voit, parti pris de l’auteur ou au contraire son objectivité) et le but recherché (décrire, informer, expliquer, choquer, persuader, inciter à l’action) par quels procédés (ironie, satire, caricature, appel aux émotions et sentiments ou au raisonnement logique seul).

Analyse des documents

Si cela n’est pas déjà spécifié dans le sujet, déterminez la thématique, l’axe et quelle problématique qui relient les documents entre eux. Chacun peut donner un éclairage qui se complète ou au contraire qui s’oppose à celui des autres.

Cherchez à repérer toutes les idées qui sont en lien avec la problématique. Vous devez reformuler les idées directement en anglais sur votre tableau ou votre brouillon afin d’éviter absolument la paraphrase et les citations trop longues.

La confrontation des documents permet de voir quelles sont les relations qui s’établissent entre les idées contenues dans les différents documents.

Il ne faut pas se contenter de résumer successivement chaque document sans établir de lien entre eux.

Il est attendu du travail demandé qu’il restitue les éléments clefs contenus dans les documents proposés. Chacun peut donner un éclairage qui complète, renforce ou au contraire s’oppose à celui des autres.

Les idées peuvent se compléter : une idée développée dans le document 3 peut se poursuivre dans le document 4 ; une idée énoncée dans le document 2 peut être nuancée dans le document 1.

Les idées peuvent se renforcer : on peut retrouver la même idée dans deux documents différents (ce qui lui donne de la force) ; on peut ainsi trouver dans le document 3 un exemple qui corrobore l’idée contenue dans le document 2.

Les idées peuvent s’opposer : l’opposition peut être totale (ce qui permet de montrer dans la synthèse que deux courants existent) ; l’opposition peut être partielle (on pourra chercher à voir quels sont les points d’accord et les points de désaccord).

Cette démarche va permettre de faciliter la construction du plan de la synthèse.

Plan de la synthèse

Le plan de la synthèse doit correspondre à la problématique en rendant compte de tous les aspects du problème. Les idées doivent s’enchaîner logiquement, mettant ainsi en évidence sa structure.

Il permet de traiter les documents ensemble, et surtout pas successivement. Les documents sont en réalité présentés dans un ordre aléatoire sur le sujet, il n’y a pas de hiérarchie dans les documents.

Il faut essayer de hiérarchiser l’argumentation plusieurs stratégies s’offrent alors à vous :

  • mettre les idées les plus courantes ou évidentes au début et en terminant par les idées qu’on juge les plus fortes ou importantes.
  • avoir en tête de partir de ce qui est le plus objectif, évident ou factuel pour aller vers le plus subjectif et polémique.

Les types de plans : le choix du plan dépend de la problématique spécifique au dossier. Il n’y a pas de plan ‘universel’. On peut trouver par exemple le plan par opposition ou le plan par enchaînement.

Plan par opposition

  • aspects positifs / aspects négatifs / futur possible

ou encore:

  • avantages / inconvénients / évolution envisagée

Le plan par enchaînement

  • problème / causes / conséquences

ou encore:

  • constatation (d’une situation) / explication(s) / solution(s)

Ce deuxième type de plan est plus adapté. N’utilisez le premier type que si vous n’arrivez pas du tout à faire le deuxième.

Essayez toujours de faire une troisième partie, même dans le premier type de plan au moins pour nuancer le propos.

Lire la suite

Nouveau téléphone: Xiaomi Poco F3 (5G) photo

Nouveau téléphone: Xiaomi Poco F3 (5G)

Après 7 années de bons et loyaux services pour mon OnePlus One, ainsi que deux mises à jour du système d’exploitation vers LineageOS, je suis passé sur un tout nouveau téléphone: le Xiaomi Poco F3 5G.

Caractéristiques

Je vous la fais courte: après 7 ans sur mon ancien téléphone, je revis avec le Poco F3. Tout est plus grand, tout est plus rapide et j’ai même la 5G dans ma campagne profonde, c’est dire!

Dans les détails, nous avons donc 8 Go de RAM et 256 GO de mémoire, un écran de 6,67 pouces AMOLED 120 120Hz , un processeur Snapdragon 870 et une triple caméra de 48MP, le tout avec une batterie de 4520mAh et 2 ans de garantie.

Xiaomi Poco F3 5G

Photos et son

Je trouve l’écran très bon mais Cécile pense que les Realme font de meilleures photos, plus lumineuses. Personnellement, je trouve la qualité assez bonne (mais je ne suis absolument pas photographe).

Le son est bon, grâce aux amplis stéréo. Par contre, pas de prise jack, il faut passer par le petit adaptateur fourni pour brancher son casque (qui branche encore un casque?!)

OS : MIUI

C’est aussi la première fois que j’ai un téléphone avec la surcouche MIUI sous Android 11: c’est clair, net et beau ! Pas besoin de skinner l’apparence pour avoir quelque chose de potable, c’est un beau gain de temps.

Bon point également pour les widgets. Dans le passé, j’ai acheté des widgets météo pour avoir quelque chose de joli. Là, tout est vraiment bien léché et mis à jour en temps réel.

Un très bon téléphone

pixJ’adore ce nouveau téléphone pour sa batterie qui tient plusieurs jours, la dernière version d’Android sans mettre de ROM alternative (bon, cela viendra un jour mais pas tout de suite), et également le fait qu’il a été capable de tout importer (photos, applications) de mon ancien téléphone en un temps record.

J’apprécie également le temps de recharge express: il suffit de 30 minutes pour avoir une charge complète du téléphone, c’est idéal pour les têtes en l’air qui rechargent le téléphone presque au moment de partir.

Que de changements avec ce nouveau téléphone, c’est vraiment extrêmement agréable de repartir sur une base solide (comme mon OnePlus à l’époque!).

Notez que le Poco F3 est en promo (-70 euros) actuellement sur Amazon.

Diffuser des vidéos sur une télévision avec la chromecast

Caster des contenus vidéos sur une télévision

Avec la multitude de services de diffusion de contenus comme Netflix, Amazon Prime ou Canal+, il n’est pas rare d’avoir un accès au service depuis une tablette ou un ordinateur mais il n’est pas toujours aisé d’envoyer le contenu vidéo directement sur la télévision.

Voici quelques astuces pour caster vos contenus vidéos sur votre télévision, en quelques secondes et sans prise de tête.

Utiliser Chrome pour caster les vidéos

Hé oui, si vous avez une ChromeCast par exemple, il est vraiment bien plus simple d’utiliser le navigateur Chrome qui possède une option qui s’appelle tout simplement Caster.

Je suis fervent utilisateur de FireFox et il faut bien avouer que là, on ne peut pas rivaliser avec Chrome en ce qui concerne le casting.

Lire une vidéo depuis les services de streaming

Si vous utilisez un service de streaming, lancez le site, choisissez votre film ou série et lancez-la.

Ensuite, cliquer sur l’icône kebab (l’icône avec les trois points verticaux) à côté de votre avatar Google et de la barre de recherche puis sélectionnez l’option Caster:

Caster des contenus vidéos sur une télévision photo
Diffuser sur la TV avec Chrome

Une fenêtre de notification apparaît et vous offre la possibilité de choisir l’appareil vers lequel envoyer la diffusion de la vidéo.

Et c’est tout ! On ne peut pas faire plus simple!

Lire la suite

Calculer la durée totale des vidéos d'un dossier, bash, linux

Calculer la durée totale des vidéos d’un dossier

Dans le cadre d’une formation en ligne, j’ai cherché à connaître la durée totale des fichiers vidéos qui étaient contenus dans un dossier.

Il est toujours intéressant de donner le nombre d’heures de vidéos sur une fiche produit par exemple, pour que le client puisse avoir une idée avant d’acheter.

Pour ce faire, nous avons plusieurs options: ffmpeg d’une part ou alors mediainfo.

J’ai lancé un petit apt install factice sur le serveur : installer ffmpeg revient à installer 110 nouveaux paquets, soit 600 Mo. En comparaison, mediainfo ne requiert que 3 paquets, soit 2.3 Mo.

Nous utiliserons donc mediainfo pour nos tests.

Calculer la durée de chaque fichier

Voici comment calculer la durée de chaque fichier, en format lisible par tous:

 mediainfo --Output="General;%Duration/String%" *.mp4
38 min 6 sCode language: JavaScript (javascript)

Voici comment calculer la durée de chaque fichier, mais cette fois au format timecode (xx:xx:xx.xx) :

 mediainfo --Output="General;%Duration/String3%" *.mp4
00:38:06.12Code language: JavaScript (javascript)

Ces deux commandes nous donnent la durée de chaque fichier MP4 présent dans le répertoire.

Nous allons maintenant voir comment les additionner pour obtenir la durée totale des enregistrements du dossier.

Calculer la durée totale des fichiers d’un dossier

Nous allons utiliser la dernière commande, celle qui nous donne les durées au format timecode, et allons ajouter toutes ces durées pour obtenir la durée totale des enregistrements présents dans notre dossier.

Voici la commande:

mediainfo '--Output=Video;%Duration%\n' *.mp4 | awk '{ sum += $1 } END { secs=sum/1000; h=int(secs/3600);m=int((secs-h*3600)/60);s=int(secs-h*3600-m*60); printf("%02d:%02d:%02d\n",h,m,s) }'Code language: JavaScript (javascript)

Résultat:

21:03:48Code language: CSS (css)

Nous avons donc un peu plus de 21 heures d’enregistrements pour notre cours en ligne :)

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