Le Hollandais Volant

FAQ sur la conduite et la possession d’une voiture électrique

Voiture électrique qui charge.
J’ai roulé 3 ans en hybride rechargeable (PHEV) et depuis 1 an maintenant je roule en 100 % électrique (EV), pour un total roulé avoisinant les 100 000 km.

Je fais beaucoup de retours sur ça, essentiellement parce que le sujet est intéressant, mais aussi parce que ça reste une nouveauté (relative) et que beaucoup de gens se posent des questions. Beaucoup de questions, et parfois certaines inattendues.

Y répondre est intéressant, surtout quand les seules réponses qu’on trouve sont du troll de gens qui n’ont jamais roulé en EV de leur vie, ou des idées reçues d’il y a 10 ans.

Un premier constant, pour commencer : ces questions sont légitimes. Les réponses peuvent sembler évidentes quand on y est habitué, mais quand on n’a jamais eu une voiture électrique au quotidien, ces questions sont totalement normales.

Ensuite, le brouillard d’incertitude qu’on avait au début des voitures électriques il y a 10 ans commence à se dissiper. De la durabilité des batteries, leur qualité, leur réparabilité, et même leur recyclage ou réemploi, les performances en hiver, à comment recharger au mieux, au le coût d’utilisation, à leur entretien… globalement, on y voit aujourd’hui bien plus clair. À la fois pour l’utilisateur que pour le constructeur des véhicules.

À ceux qui se posent des questions, j’ai voulu faire un petit article qui les regroupe.
Il n’y a pas vraiment d’ordre dans la liste ci-dessous, mais j’ai essayé de les regrouper en sections :

  • Recharge d’une voiture électrique
  • Écologie
  • Concernant le coût
  • Les EV et le réseau EDF
  • La surconsommation électrique (et la facture d’électricité)
  • La voiture elle-même, l’usure, les spécificités…

Cet article n’est pas pour convaincre qui que ce soit. Vous faites ce que vous voulez, vraiment je m’en fiche. Je veux juste répondre à quelques questions et débunker des idées reçues et les mensonges.
En ce qui concerne l’usage d’une voiture électrique, ci-dessous, cela reflète mon usage et ma voiture (une Ioniq 6), pour lesquelles les informations ci-dessous sont données en toute honnêteté.

Recharge

Faut-il obligatoirement pouvoir charger chez soi ?

Pas forcément, mais c’est quand-même un confort.

Charger chez soi est de loin le plus pratique, et aussi de loin le moins cher.
Si vous ne pouvez pas charger chez vous, il y a toujours les bornes publiques, mais c’est moins pratique (et moins fiable, et plus cher). L’autre solution, est de charger au travail, si ce n’est pas trop cher.

Faut-il une borne chez soi ?

Non.

Pas besoin de borne chez soi : une prise 220 V suffit et permet de recharger ~100 km en une nuit.

La prise et la ligne jusqu’au compteur doivent être adaptées aux fortes charges électriques (prise « 16 ampères »).
Une borne dédiée peut être utile si vous devez charger plus que 100 km chaque nuit (si vous êtes chauffeur de taxi par exemple).

Peut-on utiliser une rallonge ?

Oui.
Tant que tout est aux normes et adapté à l’usage.

La rallonge doit être capable d’encaisser de fortes charges, tout comme la prise. Typiquement on peut prendre une rallonge prévue pour 3 700 W (ce qui fait 16 A sous 220 V). Pensez à toujours dérouler votre rallonge complètement pour éviter l’accumulation de chaleur.

Peut-on utiliser une multiprise ?

À éviter.

Brancher trop de choses sur une multiprise peut la faire chauffer. Et une voiture tire beaucoup de courant à elle seule. Ajouter des appareils en plus serait dangereux.

Est-ce que ça charge vite à la maison ?

On gagne 10 à 15 km par heure, en chargeant sur le 220 V en 10 A. Si vous roulez moins de 100 km par jour au quotidien, alors c’est largement suffisant.
On n’a pas besoin que ça charge vite, si ça charge pendant qu’on dort.

C’est la galère de charger !

Non.

On arrive chez soi, on branche, et la voiture chargera durant les heures que vous programmez. Le lendemain, on débranche et on a une batterie pleine. On n’a pas à se poser de questions.
Quant aux bornes, on branche, on passe sa carte, et ça charge après 15 à 30 secondes de communication entre la voiture et la borne.

Les bornes sont surchargées !

Elles le sont moins que les stations essence. Vous pouvez aller voir avant d’acheter une EV, y compris un week-end ou un jour de départ. Passez-y une heure et décomptez le temps où toutes les bornes sont prises et où un arrivant devra attendre. Y a de grandes chances que ça soit de zéro minutes.

Subjectivement, après 30 000 km avec la voiture, j’ai attendu une seule fois, et ça a duré 3 minutes, un jour de départ en vacances d’hiver sur un grand axe proche de Lyon, France. Lors d’un quart des sessions de charge, j’étais seul à charger.

On peut dire — sur autoroute en tout cas — que vous attendrez moins votre tour en électrique qu’avec une thermique. En revanche, oui, la charge elle-même sera plus longue (30-40 minutes). Seuls quelques modèles de voitures chargent tellement vite (<15-20 minutes) qu’on a à peine le temps d’aller boire un café et de revenir qu’on a fini la charge et qu’on doit débrancher.

En dehors des autoroutes, les bornes rapides aux supermarchés sont généralement bien remplies (même si rarement à 100 %), et le problème est souvent qu’une voiture thermique bloque la place. Ailleurs, en ville, les bornes « lentes » sont souvent libres (mais aussi souvent en panne ou bloquées).

Faut-il des abonnements à des bornes publiques ? Des cartes ? des badges ? des applications ?

C’est conseillé.

Je vous conseille de prendre la carte et l’application Chargemap. C’est l’une des plus connues en France et avec ça vous pourrez charger partout et même comparer les tarifs avec d’autre réseaux, qui varient d’une carte à l’autre.
Les bornes qui prennent la carte bancaire directement existent, mais ne sont pas les plus courantes. Pour charger à la maison, pas besoin de carte.

Un câble de recharge d’une marque A fonctionne-t-il sur un véhicule de marque B ?

Oui.

C’est le type de connecteur qui importe, pas la marque. Aujourd’hui, la norme est le port « Type 2 ».

Et NACS ?

La norme NACS ne concerne que l’Amérique du Nord (NACS : North American Charging Standard). C’est le connecteur Tesla et qui a remporté de facto la guerre des standards aux USA et au Canada.
En France et en Europe, cela ne nous concerne pas : on reste sur du Type-2 et CCS2.

Dois-je acheter des câbles en plus ?

Pas forcément.
Seulement si vous voulez recharger sur les bornes AC en ville, ou si vous installez une bornez chez vous : il vous faudra alors un câble Type-2 mâle vers Type-2-femelle.
Le câble pour charger chez vous sur une prise 220 V est normalement fourni avec la voiture, et le câble pour la charge rapide CCS est toujours attaché à la borne.

Je conseille de prendre les câbles sur cette boutique. Le gérant répondra aussi à toutes vos questions.
D’une façon générale, je conseille de prendre un câble Type-2 et de le laisser dans la voiture, au cas où, et d’en prendre un de 5 mètres (3 mètres c’est trop court).

Tous les câbles Type-2 se valent-ils ?

Non.

Certains câbles sont limités à du 32 A en monophasé (donc 7 kW). D’autres permettent du 16 A en triphasé (11 kW) et d’autres en 32 A triphasé (22 kW).
Un câble 22 kW permettra de tout faire en termes de puissance (« qui peut le plus, peut le moins ») mais sera aussi plus cher. Quoi qu’il arrive, le chargement se limitera toujours automatiquement à la vitesse du composant le plus lent : câble, voiture ou borne.

Doit-on charger à 100 % ?

Il faut se renseigner sur le type de batterie :

  • Les batteries de type LFP (lithium-fer-phosphate) peuvent être chargées à 100 % toutes les nuits.
  • Les batteries de type Li-Ion ou Li-polymer devraient être chargées à maximum ~80 % pour un usage quotidien (référez-vous au manuel utilisateur).

Peut-on charger à 100 % ?

Bien-sûr !

La plage d’utilisation de toutes les batteries est de 0 à 100 %. Les Li-Ion et Li-Po ne doivent simplement pas rester en dessous de 20 % ni au-dessus de 80 % trop longtemps. Si votre limite habituelle est 80 % mais que vous souhaitez partir le lendemain, levez la limite la veille et chargez jusqu’au départ : la batterie sera pleine pour partir.

Mais ne stockez pas une batterie Li-Ion à 100 % pour plusieurs semaines (ce conseil sert également aux concessionnaires).

Ça charge plus lentement quand il fait froid ?

Oui et non.

Ça charge plus lentement (voir très lentement) si la batterie est froide. Mais si la batterie est chaude (même en hiver), alors la charge sera tout à fait rapide.
C’est pour cela qu’il faut vérifier que votre voiture a le préchauffage de la batterie (et de l’activer 10-15 minutes avant l’arriver à la borne en hiver, si ce n’est pas automatique).

Concernant l’écologie

Est-ce écologique ?

Voir là.

Concernant le climat : sur tout le cycle de vie, une EV émettra beaucoup moins de CO₂. Le bilan est donc très positif sur ce plan.
Concernant les autres formes de pollution : cela utilise des ressources dont les processus de fabrication ne sont pas encore bien durables (voir ici), même si ça s’améliore petit à petit, et que le recyclage des matériaux augmente lui-aussi à grand pas.

Et le lithium ?

Le lithium n’est pas un composé rare : il est plus commun que le cuivre. Un EV contient environ une dizaine de kilos de lithium.
Le principal souci de ce minerai est géopolitique : l’essentiel du lithium est produit par ou pour la Chine, qui est une dictature protectionniste envers son marché intérieur.

Il est probable que le marché passera sur des batteries au sodium dans la majorité des applications. Ces batteries sont beaucoup moins chères, car le sodium est 1 000 fois plus abondant que le lithium, sur Terre. Et le sodium est disponible partout sur Terre et dans les océans.

Et le cobalt ? Et les enfants dans les mines au Congo ?

Depuis 2021, plus de la moitié voitures électriques dans le monde n’utilisent pas de cobalt. La technologie des batteries LFP, permet de s’en passer totalement. Cette proportion ne fait que croître.
Pour les batteries au cobalt, près de la moitié du cobalt ne vient pas du Congo.

Enfin, la plupart des constructeurs refusent désormais d’acheter du cobalt provenant de mines illégales utilisant des enfants. Aussi, ces mines représentent moins de 10 % des mines congolaises (source).

Dans l’ensemble, donc, au moins 98 % des batteries pour voitures électriques n’ont jamais vu le travail d’un enfant.

Le problème existe, et aura existé, mais le marché aujourd’hui est tel que ces mines ne sont pas viables et ne concernent qu’une très faible part des batteries. Si le sujet vous tient à cœur, tournez-vous vers un véhicule ayant des batteries de type « LFP », sans cobalt.

Et les terres-rares dans les batteries ?

Voir là

Les terres rares sont dans les aimants des moteurs, pas dans les batteries. Les batteries ne contiennent pas de terres-rares. Et environ la moitié des véhicules utilisent des moteurs inductifs sans aimants, et donc sans terres rares.

Enfin, les terres rares n’ont de rares que le nom : là aussi, le principal problème est géopolitique.

Et les particules fines du freinage et des pneus ?

Les EV sont plus lourdes, donc aussi plus lourdes à freiner et à accélérer. Cependant : la grande majorité du freinage est effectué par le frein moteur régénératif, cela n’utilise pas les plaquettes, qui s’usent vraiment très peu sur une EV.
Concernant les pneus, ils peuvent s’user plus rapidement, à cause de la puissance des moteurs et des accélérations. Une conduite souple et des pneus spéciaux (plus résistants) mitigent fortement cela.

Concernant le coût

Les voitures électriques coûtent plus cher ?

À configuration et équipement équivalent, actuellement, oui.
Ceci dit, la différence n’est pas énorme (10 à 20 % sur le moyen de gamme, à équipement équivalent). Aussi, les EV débutent à un prix plus élevé. Il n’y a pas (ou très peu) d’EV basiques et bon marché, et qui ne soient pas des voiturettes.

Recharger sa voiture coûte plus cher que l’essence ?

Non.

Le coût se mesure pour 100 km roulés.

Pour une voiture essence ou Diesel on se retrouve à payer 10-15 €/100 km. Le GPL peut descendre à 5-6 €/100 km.

Pour une voiture électrique, le prix varie selon où l’on charge (prix début 2024) :

  • 7-12 €/100 km si on recharge sur les bornes super-rapides sur autoroute (0,40 à 0,70 € / kWh) ;
  • 4 à 7 €/100 km si on recharge sur les bornes publiques en ville (0,25 à 0,40 € / kWh) ;
  • <4 €/100 km si on recharge chez soi en tarif normal ;
  • <2 €/100 km si on recharge chez soi au tarif TEMPO bleu la nuit.

J’ai ici pris comme référence une consommation de 17 kWh / 100 km pour l’électrique (source) et 5 à 7 L/100 km (source) pour le thermique.

Il est difficile de s’y retrouver dans les tarifications ?

Oui.

L’essence, est plus chères sur autoroute. L’électricité c’est pareil, mais ce n’est que le début.

Certaines cartes / bornes / réseaux facturent à la minute, d’autres à l’acte, d’autres au kWh, d’autres encore avec une combinaison de tout ça, le tout variant selon qu’on soit abonné ou non.
Ajoutez à ça le fait qu’une tarification peut être avantageuse pour une voiture et pas une autre en fonction des performances de recharge, et on ne s’y retrouve plus.

Dans l’ensemble, Charger n’est pas difficile, mais charger au meilleur tarif, c’est encore compliqué.

Et si l’électricité augmente ?

Comme montré un peu plus haut, il faudrait >500 % d’augmentation de l’électricité pour qu’elle coûte aussi cher que l’essence. On a un peu de marge. Sans compter que l’essence aussi fluctue et globalement augmente dans le même temps.

Ma facture EDF va exploser ?

Oui.

On va payer 25 € d’électricité à la place de 80 € d’essence. En quoi est-ce un problème ? :-)

Est-ce qu’ils vont taxer l’électricité pour les voitures ?

Ça va arriver, oui. L’essence est fortement taxée, l’électricité pour les EV le sera aussi. C’est une certitude. La question est de savoir quand et comment.

Il n’y a pas de projet officiel sur ça pour le moment en France, mais certains pays ont eu des projets de taxer les EV au kilomètres roulés (comme l’Australie, mais qui a fini par faire machine arrière depuis, mais aussi la Suisse, le Japon, le Royaume-Uni ont des idées dans les placards pour ce point…).

Y a-t-il des aides et subventions ?

Oui.

En plus du bonus écologique (si éligible), il y a des avantages un peu partout :

  • la carte grise coûte 3 € quelle que soit la voiture ;
  • la vignette crit'air 0 permet de rouler n’importe où ;
  • on peut rouler sur les voies faibles émission ou covoiturage ;
  • certains badges télépéages sont moins chères pour les EV ;
  • le calcul des frais réels pour les impôts est majoré de 20 % (on paye donc moins d’impôts) ;
  • certaines régions, départements, communes subventionnent l’installation de bornes de recharge ;
  • au travail, l’installation d’une borne de recharge peut constituer un avantage (fiscal) pour l’employeur et la recharge peut être un élément négociable sur son contrat (pour l’employé) ;
  • certaines banques proposent (mais de moins en moins) un taux préférentiel sur les crédits pour l’achat d’une EV.

À l’inverse, les voitures électriques sont moins réparables (la moindre atteinte à la batterie risque d’envoyer la voiture à la casse). Les assurances sont généralement plus chères également.

Les EV et le réseau électrique EDF

Et les coupures de courant ?

En cas de coupure de courant, je peux utiliser ma voiture pour alimenter ma maison durant plusieurs jours. Les EV ne sont donc pas un problème, mais une solution.
Toutes les voitures ne le proposent pas, c’est une options à vérifier lors de l’achat (sous le nom de V2L (vehicule-2-load) ou V2H (vehicule-2-home), ou même V2G (vehicule-2-grid)).

Si c’est ce qui vous fait peur : demandez-vous quand a eu lieu la dernière coupure d’électricité, et combien de temps elle a duré. On parle probablement de quelques heures seulement et il y a bien longtemps. La dernière pénurie d’essence, elle, a duré un mois, et y en a pratiquement chaque année.

Qui plus est, en cas de coupure, les stations essences ne fonctionnent pas non plus.

Quid de la charge électrique sur le réseau ?

Il suffit de charger la nuit, quand la demande d’énergie est très faible et disponible.

Le problème n’est pas question d’énergie à produire, mais de puissance à fournir. La nuit, la puissance consommée à l’échelle d’un pays est faible par rapport à ce qui est consommé le jour. Même en chargeant toutes les voitures la nuit on sera toujours en dessous de la puissance demandée en journée.

EDF et RTE ne s’inquiètent d’ailleurs pas de ça (source). La seule condition est de charger la nuit. C’est le plus important.

Concernant la consommation électrique lors de la conduite

En hiver ça consomme plus ?

Oui.
En ville sur les petits trajets, comptez une surconsommation de 20-25 % (à cause du chauffage et de la baisse de performance de la batterie).
Sur autoroute, et sur les longs trajets, comptez une surconsommation de 5-8 % entre l’été et l’hiver (toujours à cause du chauffage).

L’effet est plus contenu lors des longs trajets, car le chauffage représente moins d’énergie par rapport au trajet parcouru.

En été, la clim consomme un peu plus, mais on parle de 1 à 3 % environ pour climatiser 4 personnes. Ceci n’est pas spécifique aux EV : un véhicule essence consomme également davantage, et dans des proportions similaires, en dehors des conditions idéales (20-25 °C).

Et si je suis coincé dans les bouchons ?

Si la voiture est arrêtée, le moteur ne consomme plus rien. Seul le chauffage ou la clim et l’électronique consomme un peu.
On parle alors de 1 à 2 kW environ, soit 1 à 3 % de la batterie par heure selon les voitures.

À l’usage : usure et entretien

Les EV ont moins d’entretien

Oui.

Pas de vidange, de filtre à huile, à gazole, de bougies ou je ne sais quoi.
En prime, vu que le freinage passe essentiellement par le frein moteur régénératif, les plaquettes s’usent nettement moins et font parfois la durée de vie de la voiture.

En revanche, le poids élevé des EV et leur puissance importante induit souvent une usure plus rapide des pneus (chose qui peut être limitée très facilement avec une conduite souple, ie : éco-conduite).

De plus, les forfaits de révisions sont facturés plus chers par les garages (chose objectivement injustifiée, mais c’est comme ça ; pensez à négocier la première révision lors de l’achat).

La batterie se dégrade-t-elle ?

Oui, mais il s’avère que c’est largement moins important que ce que l’on a tendance à penser.

On perd généralement 1 à 3 % la première année, mais ensuite cela se stabilise et la dégradation est très lente.
Certaines voitures ont fait 300 000 km avec la même batterie, et les nouvelles batteries LFP sont prévues pour faire encore plus. La batterie est un des composants qui résiste le mieux au temps et à l’usure.

Hormis les usages intensifs (taxi, par exemple, qui font plus de 100 000 km par an) où l’usure pourra monter à 7-15 % après 2 ans, une usure supérieure traduit une batterie défectueuse, qu’il peut être possible de faire passer sous garantie.

On peut limiter la dégradation avec des bonnes pratiques ?

Oui !

  • chargez à 70-80 % au quotidien (les voitures permettent de configurer une limite automatique ; pour les batteries autres que LFP) ;
  • chargez quotidiennement, n’attendez pas d’avoir une batterie vide pour charger ;
  • optez pour une voiture avec une bonne gestion thermique de la batterie.

Et c’est tout.
Les charges rapides ne posent plus de problème que les charges AC. Certains constructeurs (Porsche) retirent, via une mise à jour, les limites de recharge qu’ils avaient mises pour économiser l’usure, car ça s’avère inutile.

Et les voitures électriques qui brûlent ?

Les voitures électriques brûlent moins que les voitures thermique. Point.

La sécurité routière en Suède déclare que les EV ont 29 fois moins de risque de brûler qu’un véhicule thermique. La NTSB (sécurité routière aux USA) parle de 61 fois moins de risque, en se basant sur les statistiques des véhicules brûlés.

Les EV qui s’embrasent est un problème, mais c’est beaucoup plus rare que sur un véhicule thermique. Si l’on en parle, c’est juste qu’on est encore dans la phase où les EV qui brûlent font la une des journaux. C’est tout.

Avant l’achat

Des choses à faire vérifier avant d’acheter ou de choisir une EV ?

Aujourd’hui, si vous prenez une voiture électrique, d’autant plus si vous comptez faire des longs trajets avec, il y a des choses à prendre en compte. La charge rapide, notamment : sans ça, oubliez vos roadtrips car recharger prendra des heures (avec la charge rapide, vous chargez en 15 à 30 minutes pour rouler 250 à 400 km, selon les voitures).

D’autres technos sont également utiles parfois :

  • Préchauffage de la batterie : permet de chauffer la batterie en hiver pour charger vite par temps froid. Cela permet aussi de la refroidir en été. C’est également [très] important pour la durabilité de la batterie.
  • Présence d’une pompe à chaleur : la pompe à chaleur consomme bien moins d’électricité en hiver pour une même quantité de chaleur produite. Y compris quand il fait très froid.
  • Sièges et volants chauffants : consomment bien moins d’électricité encore tout en réchauffant décemment les passagers.
  • V2L / V2H / V2G : permet d’utiliser la voiture comme batterie de secours pour votre maison ou un appareil, en camping par exemple.

On peut être tenté de se dire qu’il faut que la voiture embarque un planificateur de trajet. D’expérience, je dirais que non. D’une part parce que les planificateurs des voitures sont absolument merdiques, et d’autre part parce que vous aurez bien plus vite fait d’utiliser une application sur votre téléphone.
Si vous comptez faire de l’autoroute en France, sachez que toutes les aires de service en France — en tout cas une fois qu’on est derrière le péage — ont désormais des bornes de recharge rapide. Les planificateurs ne sont plus réellement utiles.

Quant à rouler sur les petites routes, y a pas mal de bornes (lentes) et de plus en plus de bornes rapides.

Pour donner un cadre : les magasins Lidl ont un bon réseau de bornes, les Hypermarchés Carrefour sont pratiquement tous équipés de chargeurs très rapide depuis 2023. Mc Donalds est également en train d’installer des bornes partout, tout comme IKEA. Les magasins E.Leclerc et Cora ont également des projets d’installation de bornes lentes et rapides, pour certains déjà en place.

Et sinon, un bon nombre de concessions automobiles ont des bornes accessibles durant leurs heures d’ouverture, tout comme les parking sous-terrains.

Oui, les choses ont changées très vite ces 1 à 2 dernières années, pour le mieux.

Image d’en-tête produite par Bing AI

Comète du Diable : peut-on la prendre en photo avec un simple téléphone ?

Pour ceux qui seraient passés à côté de l’info : dès ce WE et pendant environ 3-4 semaines, une comète sera visible dans le ciel nocturne : c’est la Comète du Diable (comète 12P/Pons-Brooks).

Une comète ?

Une comète, c’est un corps fait de glaces et de poussières issues des confins du système solaire et ayant une orbite elliptique très allongée. Autrement dit, elle passe la majeure partie de son existence loin du Soleil, et une petite fraction proche d’elle.
Lorsqu’elle est proche, les glaces se subliment (passent directement de solide à gazeux) et cette vapeur en produit la queue (ou les queues, car elles en ont plusieurs, plus ou moins visibles).

Si le rocher mesure quelques kilomètres seulement, la queue mesure plusieurs millions de kilomètres, et c’est ce que l’on voit dans le ciel. Certaines comètes comme celle-ci sont périodiques et reviennent régulièrement : tous les 71 ans, pour celle-ci.

Ça reste un phénomène très rare.

Durant l’été 2020, on avait eu la chance de pouvoir observer la comète Neowise. Celle-ci était totalement inconnue jusqu’alors, et n’avait été découverte que quelques mois avant. La Comète du Diable a, elle, été observée pour la première fois en 1812. Et la plus célèbre des comètes, la Comète de Halley, est connue depuis l’antiquité, en revenant toutes les 76 ans.

Bref, on pourra donc en voir une dès ce week-end et pendant environ un mois.

Et pour la photographier ?

Il est évident que si vous avez un télescope, une lunette, ou un vrai appareil photo et tout l’équipement permettant de prendre en photo le ciel nocturne, c’est le moment de tout ressortir.

Pour tous les autres, un simplement smartphone suffit pour la prendre en photo (et une jumelle sera appréciée pour l’observation simple).

Pour cela, il faut deux choses :

  • utiliser le mode « exposition longue », qui permet de capter la lumière durant plusieurs secondes
  • et surtout — surtout — un moyen de maintenir le téléphone immobile.

Le moindre tremblement ou mouvement rendra toute l’image floue durant une prise de vue en exposition longue.

Si c’est un iPhone, il détectera qu’il est immobilisé, et vous proposera des prises longues de 5, 10… voire jusqu’à 30 secondes !
Ensuite, utilisez votre montre connectée, vos écouteurs ou une télécommande bluetooth pour prendre la photo : l’idée étant de ne pas utiliser les doigts pour ne pas bouger le téléphone, c’est essentiel lors des prises longues. On peut aussi le mode retardateur pour déclencher la prise de vue après avoir cliqué, si l’on n’a pas de déclencheur à distance.

Pour ma part, j’utilise un simple selfie-stick à 12 € qui fait aussi trépied et télécommande bluetooth (lien en bas).

Pour donner une idée, voici ce que ça avait donné avec Neowise en 2020 (cliquez dessus pour ouvrir la photo en grand) :

Avec trépied :Sans trépied :
Prise de vue avec téléphone immobilisé. Prise de vue avec téléphone tenu en mains.

Et voici d’autres exemples de photos tout à fait sympa que l’on peut obtenir grâce à cette façon de faire et un simple téléphone (iPhone 13 mini) :

La grande et la petite Ourse :La Voie Lactée :
Photo de la grande ourse prise avec un iPhone. Photo de la voie lactée prise avec un iPhone.

Ça reste un simple téléphone, ça ne vaudra pas un téléscope ou un appareil photo de pros, mais tout le monde en a un et ils ont tous de quoi prendre des photos en expo longue. Ce serait bête de passer à côté de l’astuce.

Lien

Produire un fichier Excel en JS

Code excel.
… et en moins de 10 lignes de code.

Mon problème était de rendre simple l’export de données stockés dans un outil web (SQL + PHP + JS) en fichier Excel.
Au départ, j’avais proposé une production de code CSV, que l’utilisateur devait copier-coller dans Excel, puis fait quelques manips pour qu’Excel ne voie pas une plâtrée de texte, mais du CSV (chose que LibreOffice fait tout seul).

Mais c’était trop compliqué.

Le mieux que j’ai trouvé ensuite, c’est de produire un tableau dans la page web, en HTML, puis sélectionner le contenu, le copier, et prier pour qu’Excel détecte ça comme un tableau et redistribue ça dans les bonnes cellules.

Mais c’était ni assez simple, ni suffisamment fiable.

Du coup j’ai pondu un système avec un bouton : on clique dessus et ça ouvre Excel (.xls) directement avec le contenu du tableau.

Bien plus simple.

Prérequis

Le tableau de données doit être produit en tant que tableau HTML. Le tableau n’a pas besoin d’être dans la page. Cela peut être un objet DOM quelque part.
L’astuce ici fonctionne donc que le tableau soit dans la page, en mémoire, ou bien produit à la volée à partir des données brutes au moment du clic.

Le fait de l’afficher dans la page permet cependant de montrer le tableau avant de le proposer au téléchargement.

Fonctionnement

Un fichier Excel reste du simple XML. Il suffit de prendre les entêtes d’un fichier .xls et de mettre le tableau HTML en dessous. Ensuite, on récupère tout ça sous forme de base64, on force le navigateur à télécharger ça.

Code

Le HTML


<button type="button" onclick="tableToExcel(ID_TABLEAU)">Export to Excel</button>

<table id="ID_TABLEAU">
    …
    …
</table>

Le JS :


function tableToExcel(table_ID) {
	var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>Worksheet</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>';
	var table = document.getElementById(table_ID).innerHTML;
	var xml_table = template.replace(/{table}/g, table);
	var base64_xml_table = window.btoa(unescape(encodeURIComponent(xml_table)));
	window.location.href = 'data:application/vnd.ms-excel;base64,' + base64_xml_table;
}

Je n’ai pas dit que c’était propre, mais ça marche.

Petite amélioration

Ici, le nom du fichier est plus ou moins une chaîne aléatoire. On peut changer ça, en utilisant un lien plutôt qu’un bouton : le bouton modifie l’URL de la page, mais avec un lien on peut actionner le téléchargement directement, avec l’attribut download.

Et si on veut juste garder l’apparence du bouton, on peut simplement mettre le lien autour du bouton :

<a href="#" download="tableau.xls"  onclick="tableToExcel(this, 'ID_TABLEAU')"><button>Export to Excel</button></a>

<table id="ID_TABLEAU">
    …
    …
</table>
function tableToExcel(link, table_ID) {
	var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>Worksheet</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>';
	var table = document.getElementById(table_ID).innerHTML;
	var xml_table = template.replace(/{table}/g, table);
	var base64_xml_table = window.btoa(unescape(encodeURIComponent(xml_table)));
	link.href = 'data:application/vnd.ms-excel;base64,' + base64_xml_table;
}

Exemples

Exemple sur Codepen.io.

Notes et limites

Une des limites est que les styles ne sont pas forcément pris en compte. Les dispositions des cellules (rowspan et colspan) semblent bien fonctionner systématiquement, du moment que le tableau est en HTML et pas reconstitué avec du CSS (display: table-cell, ou encore avec des grid), mais les couleurs et autres formatages ne sont pas garanties.

Un autre problème peut survenir quand les tableaux sont vraiment très grands. Je ne sais pas si les navigateurs mettent une limite sur le contenu d’un href, mais ce n’est pas exclu non plus.

Image d’en-tête produite par Bing AI

Astuces CSS pour faire un thème sombre

Le plus souvent quand on fait un thème sombre et un thème clair pour son site, on a déjà l’un des deux et on fait en sorte d’ajouter un « patch » qui va ajouter le support de l’autre.

Dans ce qui suit, je ferais comme si on avait un thème clair, et qu’on veut l’adapter (le patcher) pour avoir un thème sombre.

Introduction et méthode

Idéalement, le on ne touchera pas du tout au thème de base. C’est le patch qui va alors écraser certains styles du thème de base.

En pratique, le CSS qui concerne l’agencement des éléments n’est pas modifié : position, margin, padding, display, etc. ne changeront pas.
Seules quelques déclarations esthétiques vont être réécrites : color, background, *-shadow, border

Ceci rend extrêmement simple la création d’un thème sombre à partir d’un thème clair.

Typiquement, pour un site initialement en noir sur blanc, on va faire en sorte qu’il soit en blanc sur noir avec le thème sombre.

Par exemple, si le thème initial est ça :

body {
    color: black;
    background-color: white;
    margin: 20px;
    font-size: 3em;
}

p {
   text-align: center;
}

Le patch pourrait être tout simplement :

body {
    color: white;
    background-color: black;
}

On mettra alors ceci comme patch dans le CSS destiné uniquement au thème sombre :

@media (prefers-color-scheme: dark) {
    body {
        color: white;
        background-color: black;
    }
}

Seul le CSS qui change est redéfini. Inutile de faire une duplication complète du thème.

Bien-sûr, ça fait un peu plus de CSS, mais l’avantage est qu’il contiendra les deux variantes en même temps. Ceci est pratique si c’est le navigateur qui choisi lequel appliquer, selon la politique thème clair/sombre du système et donc de l’utilisateur (politique que je vous conseille d’appliquer). Rappelons que le thème sombre/clair peut changer au cours de la journée sur certains systèmes (iOS le fait très bien par exemple).

On peut mettre le thème sombre (ou son patch) dans un fichier à part, et le navigateur ne le chargera qu’à sa discrétion, avec l’utilisation d’un élément LINK dédiée :

<link type="text/css" rel="stylesheet" media="(prefers-color-scheme: dark)" href="styles/style-dark.css" />

Plus votre thème est bien pensé, plus il sera rapide de l’adapter. Si vous aviez mis des color à chaque élément, il faudra tous les réécrire. Mais si vous n’avez mis qu’une couleur initiale, qui est héritée sur tous les éléments de la page, changer le thème sera rapide.

Approche avec les variables

Une autre approche qui existe, et que je conseille pour les thèmes nouveaux que vous créez est de faire un « template de thème » avec des variables, qui va convenir au clair, comme au sombre, et dont les couleurs sont contenues dans des variables qui eux dépendront du thème choisi.

C’est une méthode moderne, mais qui ne marchera pas sur les vieux navigateurs (sans support du prefered-color-scheme, ou des variables).

L’idée est de faire ça :

/* Définition des variables couleurs thème clair */
@media (prefers-color-scheme: light) {
body {
    --couleur-text: black;
    --couleur-fond: white;
}

/* Définition des variables couleurs thème sombre */
@media (prefers-color-scheme: dark) {
body {
    --couleur-text: white;
    --couleur-fond: black;
}

/* CSS normal */
body {
    color: var(--couleur-text);
    background-color: var(--couleur-fond);
}

Bien-sûr, ces variables sont globales et peuvent être utilisées partout où l’on souhaite mettre cette couleur. Donc pour le texte, mais aussi des bordures ou des couleurs d’ombres par exemple :

table, td {
    border: 1px solid var(--couleur-text);
}

(Même si pour cet exemple spécifique, il serait bien plus judicieux de mettre border: 1px solid currentColor; qui est une valeur CSS existante depuis très longtemps).

Le thème clair/sombre contiendra alors seulement une série de variables. On pourra, de même, ajouter des thèmes rouges, bleu, inversé… bref c’est plus libre.

Dans ce qui suit, quelques astuces en vrac, car les différences entre un thème sombre et un thème clair ne se limitent pas qu’à changer du noir-sur-blanc en blanc-sur-noir.

Astuces diverses

Certains éléments peuvent changer de couleur (au hover, au focus…) même dans le seul thème clair. D’autres éléments ont des couleurs par défaut du système, qu’il faudra réécrire si l’utilisateur choisit un thème web sombre sans un thème système sombre.
Il faudra tester intensivement son CSS pour vérifier que les couleurs soient assez lisibles.

Il faut aussi s’assurer que toutes les couleurs soient cohérentes (sinon ça sera moche) : donc le texte et les fonds, mais aussi la couleur :

  • des bordures ;
  • des ombres (boîtes, texte) ;
  • des images de fond (préférez ceux avec un canal alpha) ;
  • des images de contenu (rien de pire qu’un schéma tout blanc sur un écran noir) ;
  • des couleurs des liens : visités ou non-visités ;
  • des éléments de l’interface (contrôles, icônes, menus, bulles de listes…) ;
  • d’éventuellement du pointeur de souris, si vous le modifiez ;
  • du ::placeholder d’un champ texte (s’il est gris il devra être lisible à la fois sur fond clair et sombre).

Pour les images, il faut faire attention :

  • une image de fond claire avec du texte noir positionné par dessus, oui ! Mais garder le même fond en ayant changé le texte en blanc, non !
  • inversement : si vous avez une image transparente avec du texte noir posé sur une page blanche : bien ! Mais si le fond de page change et que l’image reste identique, donc en texte noir, on aura du texte noir (sur l’image) sur un fond noir (la page) : pas bien !

Assombrir les images en CSS sans changer la couleur

L’idée ici est de prendre une PNG transparente avec, par exemple, du texte écrit en noir. Si le fond de la page est clair, pas de soucis. Si le fond de la page est noir, l’image sera illisible.

On peut utiliser ce CSS :

@media (prefers-color-scheme: dark) {
	img[src$=".png"] {
		filter: invert(1);
	}
}

Cela inversera la luminosité des couleurs (le blanc devient noir, le noir devient blanc, et le gris 50 % reste tel qu’il est.
Problème : cela inverse également le sens du cercle chromatique : le rouge deviendra vert, le bleu deviendra jaune, etc. Ce n’est pas idéal.

Pour conserver les teintes des couleurs, il faut retourner le cercler de 180° : hue-rotate(180deg). Ainsi, le rouge redevient rouge, le vert redevient vert. C’est juste que le rouge foncé deviendra rouge clair, etc.

Personnellement, j’ajoute également un saturate(3) afin d’ajuster l’ensemble. Le CSS final :

@media (prefers-color-scheme: dark) {
	img[src$=".png"] {
		filter: invert(1) hue-rotate(180deg) saturate(3);
	}
}

Le résultat :

Exemple d’application des filtres CSS.
Avec le filtre, les couleurs sombres dans l’image transparente restent lisibles.

Cette méthode n’est pas parfaite (le bleu semble un peu terne par exemple), mais il a l’avantage d’inverser la luminosité pour que ça reste lisible quel que soit le fond, et de conserver les teintes (le rouge reste rouge, le vert reste vert).

Évitez les ombres

La seconde astuce dans la confection d’un thème sombre concerne les ombres (text-shadow, box-shadow).

Les ombres, c’est joli sur un thème clair car ça ajoute de la profondeur et permet de définir la hauteur d’un élément sur l’axe Z. Ça permet de voir quel élément est littéralement à l’avant-plan. L’ombre fonctionne donc exactement comme dans la vie réelle : si elle est large est diffuse, l’objet est plus haut que si l’ombre est petite et sombre.

En thème sombre, si vous mettez une ombre claire, on perd la relation avec la vie réelle, car les ombres claires ça n’existe pas ! Conserver la relation avec la vie réelle est un des fondements du design en Material Design, par exemple.

Il faut donc éviter les ombres dans un thème sombre : ça n’a pas de sens. Préférez jouer sur la couleur de fond. En particulier pour ce qui est du :focus ou du :hover. Il faut toujours que l’interaction soit visible par l’utilisateur. En faisant ça on retrouve un parallèle avec la vie réelle : si on éclaire un élément sous une faible luminosité, les éléments en avant seront plus clairs que ceux en arrière plans.

Voici un exemple, avec un champ texte qui est ombré dans le thème clair et coloré dans le thème sombre :

Champ texte en clair VS sombre
Ici, lors du focus, le thème sombre joue sur la couleur de fond, alors que le thème clair joue sur l’ombre.

En material design, c’est ce qu’il faut faire. D’autres design utilisent autre méthodes.

Évitez les bordures

De même que les ombres, en thème sombre, les bordures n’ont pas la même signification.

Sur un thème clair, les bordures délimitent les éléments un peu comme dans la réalité, car la lumière se diffuse à cet endroit. En thème sombre, si on veut que ça se voit, on met un bord clair, mais on perd là aussi le rapprochement avec la réalité. Préférez donc là aussi de jouer plutôt sur les couleurs de fond.

Si vous voulez tout de même une bordure, il y a une petite astuce qui consiste à utiliser des bordures grises transparentes (avec RGBA). Ainsi, la bordure sera toujours visible quel que soit le thème de fond (même gris) car sa couleur sera sa propre couleur transparente additionnée à la couleur de fond.

Essayez par exemple :

border: 1px solid rgba(0, 0, 0, .15)

Du gris plutôt que du blanc

Quand je parle plus haut d’utiliser du blanc sur du noir, c’est une caricature. Le blanc sur du noir, principalement sur des écrans à fort contraste, comme les écrans OLED, cela pique les yeux : le contraste est trop fort.

Préférez donc du gris clair sur du gris foncé. Au besoin, en plus d’un thème sombre, vous pouvez proposer un thème « noir ». Ici, un fond noir et du texte gris clair donnera un rendu particulièrement appréciable sur des écrans OLED, où les noirs sont absolus.

Faites attention à tout

Je le répète, mais testez bien votre code. Certains éléments de page tirent toujours leurs couleurs des styles système (les menus ou les éléments de formulaire notamment, telles que les optgroup ou select).
Si le thème système est clair, mais que vous voulez forcer un thème sombre, alors le système mettra un texte sombre et vous un fond sombre : ça sera illisible. Le mieux, je le recommande, c’est de se conformer au thème du système de vos visiteurs.

Au pire, mettez un bouton pour permettre à l’utilisateur de choisir.

Concernant l’accessibilité

Faites attention à tout… y compris à l’accessibilité ! Généralement les contrastes sont moins bons sur les thèmes sombres. À titre d’exemple, on peut facilement constater que les textes en gras sont plus difficiles à repérer sur un thème sombre. Une astuce couramment utilisée pour ça, si votre texte est en gris clair sur noir, c’est de mettre le gras en blanc (en plus de le mettre en gras) pour le faire ressortir d’autant plus.

Notez également que même si le thème sombre est là pour reposer vos yeux dans un environnement faiblement éclairé, il semblerait qu’il fatigue beaucoup plus au contraire (source et source) !

Option Tempo d’EDF et quelques calculs

Photo de lignes électriques.
Dans le tarif Bleu d’EDF, et outre l’option Base et l’option heures creuses / heures pleines (HC/HP), EDF propose également une option appelée « Tempo ». Il pousse encore plus loin de concept des HC/HP, en proposant non plus deux tarifs différents, mais six, dont cinq sont moins chers et un plus cher.

L’idée des HC/HP est d’inciter les gens à faire tourner leurs appareils la nuit plutôt que le jour. Pourquoi ? Car la nuit, la demande en électricité est très faible, et le jour, très forte. En décalant sa conso la nuit, on décale les pics de consommation et donc la charge sur le réseau. Ça arrange EDF (en production) et RTE (en transport).

En échange de cette souscription à la place du tarif de base et de la volonté de décaler sa consommation, on paye un peu plus cher le jour (10 % en plus) mais on paye bien moins cher la nuit (25 %).
Autrement dit, avec un peu de méthode, ça touche directement au portefeuille et dans le bon sens.

Le tarif Tempo pousse l’idée encore plus loin. On conserve l’idée d’une différentiation jour / nuit, mais on ajoute aussi une différentiation sur les jours de l’année. Ainsi, on trouvera des jours rouges, des jours blancs, et des jours bleus :

  • Les jours bleus, la demande est très faible, le réseau n’est pas chargé et le tarif est très attractif, le jour comme la nuit : jusqu’à −50 % par rapport au tarif Base.
  • Les jours blancs, la demande est faible, le réseau est peu chargé et le tarif est attractif, le jour, et encore plus la nuit. : entre 25 et 40 % moins cher.
  • Les jours rouges, la demande est forte en journée, le réseau est chargé et le tarif est plus élevé le jour (+300 %), mais reste encore attractif la nuit (−40 %).

C’est RTE qui fixe la « couleur » du jour. Dans une année de 365 jours (qu’ils comptent de septembre à août) ils ont droit de poser :

  • 22 jours rouges
  • 300 jours bleus
  • et le reste en jours blancs, donc 43 jours (ou 44 les années bissextiles).

Il est à noter que par rapport au tarif de base, le tarif en tempo est toujours avantageux, sauf 22 jours par an, et dans ce cas, seulement en journée.

Bien-sûr, pour que ça soit rentable, il faut pouvoir décaler sa consommation. C’est-à-dire la nuit, toutes les nuits, mais aussi hors des jours rouges. Or, les journées rouges sont les jours où tout le monde consomme plus, et probablement vous y compris. Néanmoins, ce n’est pas forcément un problème si on se chauffe autrement qu’à l’électricité par exemple.

Voici les tarifs EDF, extraits de leur brochure tarifaire :

Tableau des tarifs EDF 2023.
Tarif Bleu EDF en 2023, prix en centimes d’euros (source)

Dans mon cas

Dans mon cas, je n’ai pas le gaz. Tout est électrique : cuisine, chauffage, eau chaude, voiture, et tous les autres appareils.

Mes trois gros postes de consommation sont l’eau chaude, la voiture et le chauffage (en hiver). Le chauffe-eau et la voiture sont déjà programmées pour fonctionner exclusivement la nuit.

Deux des trois sont donc décalés la nuit, le choix d’être en HC/HP était totalement logique. Sur une année, je consomme 3 fois plus en heures creuses qu’en heures pleines : cette option était déjà attractive pour moi et je l’avais aussi déjà.

Et cela se voit sur la facture !

Avec le Linky et depuis le site d’EDF, on peut récupérer ses données de consommation. J’ai donc fait le calcul sur tout 2022.

Si j’étais resté en tarif Base, j’aurais payé 1 042 €.
Grâce à l’option HC/HP, je suis passé à 924 €.

J’ai donc gagné environ 10 % sur la facture.

Pas mal, surtout que je n’ai rien eu à faire sinon à programmer la voiture et le chauffe-eau une bonne fois pour toutes. Le chauffe-eau était lui déjà branché sur un rupteur activé par le signal « heures creuses » du réseau EDF.

Et en Tempo, ça donne quoi ?

Je viens de passer en Tempo depuis un mois, après en avoir découvert l’existence il n’y a pas longtemps.

Je n’ai pas beaucoup de recul avec l’utilisation en Tempo et en adaptant la consommation pour le moment. Néanmoins, vu que c’est plus attractif la grande majorité du temps et que je continue de consommer surtout la nuit, ça ne peut qu’être intéressant.

Pour en être absolument sûr, j’ai fait une simulation sur l’année 2022 : avec les consommations passées, est-ce que l’option Tempo aurait été attractive ?

J’ai simplement appliqué la facturation Tempo à ma conso sur 2022, en appliquant les différents tarifs sur les différents jours de l’année. Et là, j’obtiens un total de 765 € en Tempo, contre 924 € en HC/HP (et 1 042 en base).

J’aurais donc économisé 277 €, soit pas loin de 25 % de la facture par rapport au tarif Base, et environ 20 % par rapport au tarif HC/HP.

Autrement dit, c’est une option très intéressante pour moi !

Mieux : ceci est une estimation sur ma conso réelle, mais surtout, non-optimisée. Nul doute qu’avec quelques ajustements, essentiellement les jours rouges, je peux économiser beaucoup plus. Et à raison de 0,67 € par kWh en HP les jours rouges, les économies, si elles sont possibles, vont être très faciles.

Une chose notable : sur ces 765 €, il y a 289 € pour les seuls 22 jours rouges. C’est presque autant que les 300 jours bleus, où j’aurais payé 353 € au total !
Le kilowattheure est environ 7 fois plus cher en HP-Rouge qu’en HC-bleu. Cela va donc très vite dès qu’on a trouvé comme décaler sa consommation.

Est-ce que cette tarification est faite pour vous ?

Déjà, si vous n’avez pas envie de vous embêter avec les HC/HP et la couleur des jours, c’est simple : l’option n’est pas faite pour vous. Il faut le pouvoir, mais aussi le vouloir.

Ensuite, si vous utilisez peu le chauffage électrique et que votre ballon d’eau chaude et même éventuellement votre voiture électrique sont programmés pour tourner la nuit, faites une simulation ! L’option HC/HP est probablement très clairement faite pour vous, et peut-être l’option Tempo aussi.

Il faut bien voir que seuls les HP rouges sont beaucoup plus chères, et ça ne concerne que la période diurne et au cours de seulement 22 jours par an.

Maintenant, il y a fort à parier que les économies tout le reste de l’année peut très facilement être suffisant pour dépasser la perte sur quelques journées rouges. C’est exactement mon cas : en appliquant une tarification Tempo sur ma conso de l’an dernier, ma facture diminue immédiatement de 20 % !
Bien-sûr, l’idée est d’inciter à décaler sa consommation, histoire de consommer quand l’électricité est disponible et quand elle est la moins chère possible.

Si vous avez un chauffe-eau programmable et véhicule électrique, et bien-sûr si cette gymnastique vous amuse, alors Tempo est fait pour vous (à condition de ne pas avoir un très gros poste de consommation à côté et en journée, comme un grand besoin de chauffage électrique par exemple.

Quelques points supplémentaires

En vrac :

Sur les HC/HP :

  • Les HC en Tempo vont de 22 h à 06 h quoi qu’il arrive. En tarif HC/HP, c’était de 22h30 à 06h30 dans mon cas, mais certaines personnes avaient d’autres horaires attribuées par EDF.
  • Un « jour » commence à 06 h le matin et termine à 05 h 59 le lendemain.

Sur les couleurs :

  • En regardant l’historique des couleurs des jours, on constate que, sur 2022 en tout cas, la quasi-totalité des jours de mars à octobre inclus sont bleus. Durant toute cette période, l’électricité est pratiquement à moitié prix par rapport au tarif Base. Les jours rouges ne concernant que l’hiver.
  • Les dimanches ne sont jamais rouges, même en hiver. Ils sont pratiquement toujours bleus. Les samedis sont généralement blancs en hiver. Ces jours ont donc déjà un tarif attractif quoi qu’il arrive par rapport à l’option Base.
  • On note que la différence entre la nuit et le jour est très importante. Même les nuits rouges sont plus intéressantes que les journées bleues. La demande en énergie est, à l’échelle d’un pays, très variable au cours de la journée. L’idée derrière ces tarifications est avant tout de lisser la courbe et avoir une production plus stable.
  • L’abonnement (à distinguer de la conso) est facturé légèrement plus chère que le tarif Base mais un poil moins que le tarif HC/HP (ça ce compte en centimes).

Sur votre Linky, vous pouvez voir quel tarif est appliqué en ce moment. Il s’agit de l’index qui a le petit astérisque devant : « * ». Il n’est pas possible par contre de voir quel sera le jour de demain directement sur le compteur. Il existe par contre les sites qui permettent de voir ça :

Ces outils sont branchés sur les API de RTE/EDF.

On peut aussi demander à être notifié par mail ou SMS dès que la couleur du lendemain est connu d’EDF. Dans mon cas, juste pour voir, je constate que le SMS n’est envoyé que si le lendemain est rouge. Si c’est bleu ou blanc, je ne reçois rien.

Conclusion

Je ne cherche pas ici à vous pousser vers l’option Tempo.

Mon but ici est de :

  • vous montrer l’existence de cette option
  • vous partager mon expérience et mes calculs
  • vous donner une astuce qui peut vous faire économiser facilement 20 à 30 % sur votre facture d’électricité annuelle.

Ce dernier point est évidemment subordonné à quelques ajustements de votre consommation, mais c’est possible et dans certains cas, facile.
Il est même possible que ce soit déjà attractif sans rien changer si vous consommez déjà majoritairement la nuit.

En bref, renseignez-vous !

Pour ceux qui veulent, voici mon tableau avec les jours, dans lequel il suffit de coller les données en page 1 que vous donne EDF (si vous avez un Linky et êtes déjà en HP/HC) et pour l’année 2022, et de voir en page 2 le résultat :

Ça n’est pas à prendre pour argent comptant, car c’est une simulation, mais ça donne une idée : si vous avez, comme moi, déjà une différence de −20 % sur votre facture, alors le gain n’est pas trop à démontrer.

image d’en-tête de Chris Hunkeler

Free Mobile : bloquer tous les démarcheurs

Un écureuil au téléphone.
Free Mobile propose un système de filtrage des appels, entrants ou sortants, assez poussé.

Ça tombe bien, je suis client chez eux, et depuis le 1ᵉʳ janvier, les démarcheurs ne peuvent utiliser qu’une liste précise de numéros, à savoir :

01 62 ** ** **
01 63 ** ** **
02 70 ** ** **
02 71 ** ** **
03 77 ** ** **
03 78 ** ** **
04 24 ** ** **
04 25 ** ** **
05 68 ** ** **
05 69 ** ** **
09 48 ** ** **
09 49 ** ** **

Autrement dit, pour bloquer — en théorie — tous les démarcheurs, vous pouvez créer 10 règles de blocages et le démarchage sera du passé.
Bien-sûr, ça serait le cas si tous ces harceleurs publicitaires respectaient les règles. J’en doute. Néanmoins, un tel filtrage devraient en bloquer un certain nombre.

Si vous êtes client Free Mobile, allez dans votre espace client > mes services.

Activez l’option (gratuite) du filtrage des appels :

Capture d’écran Free.
Ensuite, cliquez sur le petit crayon pour ajouter des règles :

Capture d’écran Free.
Vous avez alors un formulaire comme ça :

Capture d’écran Free.
Ce formulaire est assez rapide à comprendre, mais il est un peu bugué.

En particulier pour ce qui est de « entrante » et « sortante » : si vous cochez les deux, seul le « sortante » ne sera pris en compte. Le mieux est donc de ne cocher que le « entrante », et de remplir le reste exactement comme suit, puis de valider :

Capture d’écran Free.
Ensuite, vous faites pareil pour les autres numéros, avec à chaque fois les 4 premiers chiffres de la plage de numéros de démarchage, puis un astérisque « * ».

À la fin, vous aurez toute la liste de bloquée :

Capture d’écran Free.
Et voilà, normalement plus aucun numéro de démarchage — en tout cas ceux qui respectent la loi — ne devrait vous parvenir, quel que soit votre téléphone (Android, iOS…) car le filtre se fait directement au niveau de l’opérateur téléphonique.

Il est même possible (à vérifier, chez les clients Free pour le téléphone fixe) que ça bloque aussi sur votre fixe.

On verra si ça marche.
Autrement, quel que soit votre opérateur, il y a l’application Orange Téléphone qui est pas mal du tout. Elle a une grande base de données de numéros fumeux, renseigné par les utilisateurs. Une fois installée, l’application regarde le numéro appelant et bloque (ou rend silencieux) un appel détecté comme étant du spam.

L’appli Orange :

image d’en-tête de Brecht Bug

« J’ai pas besoin de pneus neige, j’ai un 4x4 »

gneugneugneu j’ai pas besoin de pneus neige, j’ai un 4x4.

Combien de fois faut pas l’entendre ça ?

Regardez les comparatifs : 4WD VS Winter Tyres - Do you need winter tyres if you have 4WD? - YouTube.

Là il fait le test, sur la neige :

  • un 4x4 (AWD) en pneus été
  • un 2x4 (2WD) en pneus neige

Le résultat est sans appel : ce sont les pneus qui font tout. Et pas qu’un peu : la différence est grande.

Maintenant deux choses très importantes que n’ont absolument pas compris ceux qui râlent contre la loi Montagne (la loi obligeant les équipements hivernaux dans certains départements) :

  1. Les pneus neige ne sont pas juste des pneus avec plus de crampons.
  2. Les départements concernés ne le sont pas seulement parce qu’il y a plus de neige.

Concernant le #1 : La gomme est différente également.
Par temps froid, le caoutchouc se vitrifie (au niveau moléculaire) et devient dure et lisse comme du verre. Dans les pneus été, la température de transition vitreuse (T°g) est à environ 7 °C.

Dans les pneus hiver, il est beaucoup plus bas (ce brevet de Michelin parle d’un T°g entre 0 °C et −80 °C) : la gomme reste tendre et le pneu conserve son adhérence et sa souplesse.

Donc on peut bien avoir un Hummer si on veut, mais si on a des pneus glissants comme du verre, ça reviendra à rouler sur des peaux de bananes.

Concernant le #2 : Les départements concernés sont montagneux, ce qui signifie qu’il y a des montés et des descentes partout. Je parle de pentes >5 % avec 100 à 400 m de dénivelés à chaque fois, quand c’est pas nettement plus localement, y compris sur autoroute, et globalement absolument partout. Ce n’est pas le Nord ou la Belgique (ni les Pays-Bas) où la seule montée est celle du trottoir que vous obstruez.
Et une montée, c'est franchement pas comme du plat. Même avec 2 cm de neige, si vous n'avez pas l'équipement qu'il faut, c'est simple vous restez en bas.

Et donc au milieu de route, incapable de vous ranger. Quant à ceux qui descendent, le freinage est difficile est ça sera l'accident. Et comme vous n'avez pas l'équipement adéquat, vous n'êtes pas en situation de rouler et vous serez déclaré responsables.

Voilà un autre exemple, où ils comparent une citadine en traction et 2 pneus hiver, et un 4x4 avec quatre pneus été. Certes, le 4x4 est bien plus lourd dans leur test. Mais il l’est aussi dans la réalité : votre 4x4 est plus lourd qu’une petite voiture, et finira dans le fossé dès qu’il y a un peu de neige.

Et concernant les pneus 4 saisons ?

Voir ici et .

Là le résultat est plus mitigé :

  • sur des transmissions identiques (2x4 à chaque fois), le pneu hiver/neige a très largement l’avantage.
  • sur des transmissions différentes : 2x4 en pneu hiver VS 4x4 en pneu quatre saisons, le facteur « quatre roues motrices » tire son épingle du jeu : l’accélération est meilleure, tout comme le fait de grimper une montée (par contre il compare avec un pickup ; j’aurais aimé voir sur une citadine normale).

Si on devait classer tout ça, du meilleur au pire et en extrapolant sur les configurations qui n’ont pas été essayées :

  1. 4x4 en pneu hiver
  2. 4x4 en pneu quatre saisons
  3. 2x4 en pneu hiver
  4. 2x4 en pneu quatre saisons
  5. 4x4 en pneu été
  6. 2x4 en pneu été

On constate qu’avoir des pneus adapté est plus important qu’une transmission intégrale (4x4). Le pneu 4 saisons est un bon compromis, mais sur la neige, il ne vaut pas un pneu hiver (et en été, en termes de consommation de carburant et usure, il ne vaudra pas un pneu été).

En ce qui me concerne : je continuerais à faire changer mes pneus deux fois par an : pneus été en été, et pneus hiver en hiver.
En hiver, je le fais par souci de sécurité : j’ai déjà roulé dans la neige, et les pneus hiver s’en sortent parfaitement, y a pas à dire. Ça reste une conduite sur la neige, mais ça n’agit pas comme des skis.

Et en été, par souci d’économie.
Aucune loi n’interdit d’utiliser un pneu hiver en été, c’est juste que si c’est pour bouffer les pneus en 1 000 km, c’est pas la peine.

Si le pneu hiver est adapté en hiver car reste tendre et conserve son adhérence, en été il est beaucoup trop tendre et s’use très vite, en plus de provoquer une surconsommation importante (beaucoup de pertes de couple dans le caoutchouc).

J’estime, mais il faudrait tester (je ne les ferais pas), que jongler avec deux sets de pneus revient moins cher que conserver juste un set de pneus 4 saisons. Ok, y a pas le changement à faire, mais le pneu 4 saison sera bouffé plus rapidement que les autres dans leur saison respective. Qui plus est, en été, le pneu été offrira un net avantage en termes de consommation de carburant : moins de pertes élastiques dans la gomme.

Et faut pas oublier que ce n’est pas une dépense supplémentaire : pendant que vous roulez en pneus hiver, les pneus été ne s’useront pas, et vice-versa. Vos deux sets combinés dureront par exemple 5 ans, là où un set seul durera 2,5 ans (voire moins, vu que l’usure sera plus rapide à cause de l’usage par des temps inappropriés).

Cartouches de GameBoy : comment différentier les authentiques des contrefaçons ?

Nostalgie oblige, il m’arrive parfois de chercher de vieux jeux de GameBoy (GB, GBC, GBA…) en ligne ou sur les brocantes, mais il faut faire attention car il circule de fausses cartouches.

Les fausses cartouches sont des système de jeu fonctionnels, mais la cartouche et le circuit à l’intérieur ne sont pas authentiques. Généralement ce sont des circuits récents et dans lequel on a enregistré le jeu que l’on veut puis qu’on a mis dans une cartouche elle aussi « fausse ».

Personnellement j’ai surtout constaté ça avec les jeux Pokémon (rouge, bleu, jaune, or, argent, cristal…) car ce sont ceux que je recherche.
Si vous voulez simplement jouer, ces cartouches vous le permettront sans problème et pour sûrement moins cher.

Mais si vous souhaitez une cartouche de jeu authentique, il faudra faire attention. Cet article vise à montrer comment différencier les fausses cartouches de cartouches authentiques.

L’examen est purement visuel, mais ça se fait très bien. Il y a plusieurs indices qu’on va voir ici.

L’effet « cheap »

Les contrefaçons sont essentiellement « cheap » : la facture est mauvaise, le plastique mal ébavuré, et les deux faces de la cartouche (qui sont maintenues par une vis) ne sont pas forcément l’une en face de l’autre. On voit que c’est du travail bâché, qu’on qualifierait couramment de « chinoiserie » bas de gamme.

i
La qualité globale de la cartouche n’est pas la même : cartouche authentique (à gauche) et une cartouche contrefaite (à droite).

La vis de maintien

Sur la cartouche, repérez la vis au dos.
Sur les cartouches GameBoy, ou GameBoy Color (ou Compatible GameBoy Color), bref, les grandes cartouches, la vis est une étoile à 6 branches vers l’extérieur (forme mâle) :

i
La vis sur la cartouche est différente : cartouche authentique (à gauche) et une cartouche contrefaite (à droite).

La plupart des contrefaçons ont une vis à trois branches vers l’intérieur (les branches sont « femelles »). Sur la GameBoy elle-même, Nintendo utilise des vis à trois branches, mais sur les cartouches ils ont toujours utilisé des vis à 6 branches.
Les cartouches pour GameBoy Advance comportent-elles bien des vis à trois branches.

Les inscriptions sur la cartouche

Un signe qui ne trompe pas : la cartouche authentique indique « Nintendo Game Boy™ » et de l’autre côté une fine bande avec « Nintendo ».
La plupart des fausses cartouches montrent « Game » et rien de l’autre côté.

i
Les inscriptions sur la cartouche diffèrent : cartouche authentique (à gauche) et une cartouche contrefaite (à droite).

La fiche de connexion de la cartouche

Sur la plupart des jeux (tous ?), en tout cas sur les jeux Pokémon, la cartouche ferme entièrement au niveau de l’entrée.
Sur certaines contrefaçons, on note une ouverture :

i
La cartouche doit être fermée au niveau de la fiche : cartouche authentique (à gauche) et une cartouche contrefaite (à droite).

La dimension du circuit

La plupart des jeux GB et GBC ont un circuit qui fait la dimension de la cartouche. Certains jeux parmi les plus récents ont une cartouche au format GB, mais un circuit au format GBA (moins haute).
Dans les contrefaçons, notamment des jeux Pokémon, le circuit est petit dans une grande cartouche. Nintendo n’a jamais fait ça.

Cela peut se voir par transparence :

i
Certaines cartouches contrefaites ont un circuit plus petit, visible par transparence. Sur la cartouche authentique, la transparence ne fonctionne pas.

Conclusion

Voilà comment déceler les faux jeux qui circulent.

Notez que si vous achetez un jeu qui semble authentique mais dont la sauvegarde ne fonctionne pas, c’est sûrement parce que la pile interne (de la cartouche) est morte. Ces cartouches, anciennes, portaient une pile bouton (CR1616 ou CR2032 typiquement) qui permettait d’alimenter la mémoire et de maintenir la sauvegarde intacte. C’était avant l’utilisation de mémoires flash, qui elles n’avaient pas besoin d’être sous tension en permanence.

Ces piles pouvaient fonctionner 10 ans sans problème, mais pour un jeu Pokémon Rouge ou Jaune, dîtes vous que ces jeux sont sortis il y a plus de 20 ans en France. La pile est donc vide depuis des lustres.

Pour continuer à jouer, il faut changer la pile en dessoudant l’ancienne et en en soudant une neuve (qu’on trouve facilement en ligne, avec les languettes de fixation).

Astuces pour le ménage

Un kit de nettoyage.
Juste quelques solutions pour le ménage chez vous (oui j’ai envie de partager ça).

Eau + IPA

Pour la maison (ou les vitres intérieures de la voiture).
Faites un mélange 50/50 d’alcool isopropylique (IPA, ou isopropanol — trouvable ici) et d’eau déminéralisé, et nettoyez une vitre avec ça.

En voiture, j’ai horreur des traces sur les vitres, tout comme sur l’écran d’un ordi. Sur l’extérieur, c’est saleté et calcaire, mais à l’intérieur c’est des corps gras qui émanent des cuirs et des éléments en plastique. Dans la maison, le gras de la cuisine se colle également sur les vitres.
Pour ça, ce mélange 50/50 est radical.

Sur la vitre rapidement débarassée de la poussière avec de l’eau puis essuyée, vaporisez le mélange sur une microfibre (elle doit être juste humide, mais pas gouttant) puis essuyez la vitre. Utilisez ensuite une microfibre propre et neuf pour essuyer le surplus complètement.

Ça fonctionne aussi pour dégraisser la gazinière ou autre. Au besoin, rajoutez du bicarbonate de soude (ce dernier agit mécaniquement : il ne faut justement pas le dissoudre complètement).

Pour le calcaire

Sur la vitre arrière de ma voiture, qui est relativement peu inclinée dans mon cas, l’eau ne ruisselle pas et des traces de calcaire s’accumulaient. L’ensemble ressemblait plus à une vitre de salle de bain qu’autre chose. Ça en devenait suffisamment critique pour que je juge ça dangereux : à contre jour on ne voyait plus rien).

J’ai essayé absolument tous les remèdes de grand-mère : vinaigre froid, vinaigre chaud, citron, Antical®, éponge magique, alcool, argile… mais rien n’y fit.
Juste avant de passer par un polissage professionnel, j’ai réussi à tout retirer avec ce produit.

Ça contient de l’acide sulfurique, c’est peut-être pour ça que ça marche. Sur une vitre lavée à l’eau puis séchée, étalez une fine couche de produit en frottant avec une microfibre, laissez agir 5-10 minutes, remuez un peu, puis lavez à l’eau. Séchez immédiatement la vitre avec de l’IPA et enfin sur une microfibre propre et sèche. C’est absolument radical.
Cela met la vitre à nu, et si vous y mettez une protection (Rain-X ou autre, faites le immédiatement).

En revanche, ça n’a rien fait pour ma salle de bain : j’ai beau avoir laissé agir une nuit, je crois que le calcaire fait partie de la vitre désormais. Peut-être de l’acide sulfurique pure fonctionnerait, mais je n’essayerais pas, c’est bien trop dangereux.

Du vinaigre chaud pour le tartre dans une bouilloire

Celle-là je la note aussi, mais j’en avais déjà parlé : mettez 100 mL (1/2 verre) de vinaigre blanc dans la bouilloire et complétez d’eau du robinet (assez pour que toute la partie entartrée soit immergée).
Faites ensuite bouillir l’ensemble. Ça devrait détartrer tout l’appareil du premier coup. Jetez le produit chaud dans l’évier (ça détartrera l’éviter en même temps) puis rincez 2 ou 3 fois la bouilloire.

Si les vapeurs du vinaigre vous importunent, vous pouvez faire ça dehors.

La javel pour les boules à thé

Si vous avez des boules à thé en ferraille, le gris laisse peu à peu place au marron. Ce n’est pas dangereux, mais c’est pas joli.
Pour ça, mettez vos boules à thé dans un verre ou un saladier. Ajoutez 100 mL de javel pure puis ajoutez de l’eau froide jusqu’à inonder complètement les boules à thé. Mélangez pour que la javel ne soit pas juste au fond. N’utilisez pas d’eau chaude : ça décompose l’hypochlorite de sodium de la javel et en retire toutes les propriétés nettoyantes et bactéricides (en plus de dégager du chlore).

Laissez agit 15 à 30 minutes en remuant une fois entre-temps.
Elles seront comme neuves à la fin. Rincez bien : le mieux est de les laisser dans l’eau claire pendant une heure puis rincer de nouveau une dernière fois.

Par contre ne faites pas ça dans votre théière en porcelaine ou en céramique. Premièrement, il est normal qu’une théière s’imprègne du thé au fil des années. Et deuxièmement, la Javel risquerait de l’attaquer et de rester dans les pores, ce qui n’est pas l’idéal.

image d’en-tête de alabama extension

Fix CSS et JS pour iOS et Safari

Safari sur iOS (et sur Mac) n’utilisent pas Blink, mais Webkit. Apple est parti de son côté avec Webkit et du coup fait un peu n’importe quoi. Ayant désormais un iPhone, je me retrouve à corriger mes sites et outils pour iOS.

Voici quelques trucs et astuces. Cet article sera emmené à être étendu avec le temps.

Zoom lors du tap sur un champ texte

Safari nous zoom la page quand on tape sur un champ texte. Ça part d’une bonne intention, mais premièrement ça déforme la page, et ensuite, quand on sort du champ texte, ça ne dézoome pas. C’est stupide.

La solution qui marche, sans toutefois interdire le zoom à l’utilisateur (ça c’est très important), c’est mettre ce HTML dans votre <head> :

<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=yes"/>

La magie vient du « maximum-scale ». Notez bien qu’il s’agit de l’échelle automatique. Le user-scalable="yes" assure que le zoom à deux doigts reste possible. Si vous mettez « user-scalable="no" », je n’aurais que deux mots : au bûcher !!

Le :hover sur iOS

Sur Vivaldi comme Firefox mobile (android), le :hover est activé lors du tap. Sur iOS il n’en est rien (enfin pas toujours). Ça se résout en ajoutant l’attribut « onclick » sur l’élément. Juste l’attribut, pas de valeur. iOS considère en effet que si l’on click, le hover s’active. Ici on clique, ça n’a pas d’effet directement, mais ça déclenche tout de même le hover.

Alternativement, et en mieux, on peut mettre dans son JS :

document.addEventListener("click", function() { });

Ce qui rend la correction plus rapide que d’ajouter onclick="" partout dans la page.

Certains parlent de mettre un « cursor: pointer » en CSS. Ça aurait été tout à fait pertinent que iOS active le :hover sur un élément dont le curseur est un pointeur (la petite main qui clique), mais malheureusement cette solution ne semble pas fonctionner.

Pour le parsage des dates en JS

La plupart des navigateurs, en JS, quand on leur donne un texte représentatif d’une date, essayent de parser ça comme ils peuvent. C’est censé marcher même quand on leur donne une date en langage naturel, comme « vendredi 4 mars 2022 », qu’ils traduiront en le bon objet de date.

Perso j’utilisais une chaîne de date-heure égale à « 2022-03-04 18:30:59 ». Firefox et Chrome n’ont pas de problèmes pour parser ça. Safari exige qu’on mette un « T » entre la date et l’heure : « 2022-03-04T18:30:59 », sinon il renvoie une erreur.

Safari a raison : le T pour « time » provient de l’ISO 8601 étendue et il faudrait l’inclure tout le temps.
Ceci est donc un rappel que ce n’est pas parce que ça marche sans le T que c’est une bonne pratique.

Placeholder sur [type=date]

Si vous avez un input de type date sans placeholder, alors Firefox et Chrome (blink) mettront une date vide : « jj / mm / aaaa ».

Safari (sur Mac) mettra la date du jour… mais en placeholder, donnant l’illusion que la date est remplie, alors que ce n’est pas le cas. Vérifiez bien que ça soit effectivement le cas dans vos app.

Étrangement, sur iOS, je n’ai pas ce souci, mais il est bien réel sur certaines versions de Safari sur Mac que j’ai pu voir (pas pu regarder plus en détail, désolé).

Les événements load, beforeunload, unload

Ces événements sont dépréciés sur iOS, et ne sont pas forcément fiables ailleurs. En effet, le comportement des utilisateurs sur mobile est de changer d’appli ou d’onglet sans fermer la page, donc sans « unload ». Le problème se pose aussi sur Android, même sur iOS, ces fonctions ne semblent plus fonctionner du tout, ce qui pose effectivement problème dans le cas où l’on ferme l’onglet en cours.

À la place, il est préférable d’utiliser l’événement « visibilitychange » (qui se lance quand on change d’application ou d’onglet) et « pagehide », qui est lancée à la fois quand on change la visibilité de l’onglet et juste avant qu’on le ferme. Dans les faits, pensez à utiliser les deux car le premier agit sur mobile et le second sur desktop. De plus, un bug sur Webkit fait que le « pageHide » n’est pas déclenché quand on change de page lors qu’on clique sur un lien dans celui-ci.

Plus d’information ici (avec un tableau de compatibilité). Et voyez sur les événements supportés par iOS.

Enfin, il en va de même pour l’événement « load », qu’il faudrait remplacer par « pageshow ».

Résoudre Sutom avec les Regex

TL;DR : Une fois que vous avez essayé 1 ou 2 mots sur Sutom, allez sur cet outil, puis mettez le format du mot et renseignez les lettres à inclure ou à exclure.

Le format du mot à mettre est de la forme « A . . . ER. $ » où A est la première lettre, E une lettre bien placée, $ indique la fin du mot et les points sont des lettres à trouver.

Attention, les téléphones ont tendance à remplacer trois points par le caractère unique des points de suspension.


S’il y a bien un truc puissant en programmation, ce sont les expressions régulières, ou « regular expressions », Regex pour les intimes.

J’en avais déjà fait une petite introduction que je vous conseille de lire.

Aujourd’hui, voyons un usage à ces choses-là.
Depuis le début de l’année, le jeu Wordle (en anglais) et Sutom (en français) sont devenus viraux. Leur principe est celui du jeu télévisé « Motus ».

Sutom ?

Le principe du jeu est le suivant.

Le but est de deviner un mot.
La première lettre nous est toujours fournie. On connaît également la longueur du mot.
On a droit à 6 essais pour deviner le mot :

Début du jeu Sutom.

À chaque fois qu’on essaye un mot, on a des indices :

  • les lettres bien placées sont en rouge
  • les lettres présentes mais à leur mauvaise place sont en jaune
  • les autres lettres ne figurent pas dans le mot

Dans cet exemple, celui du 21 janvier 2022, si j’essaye le mot « Diamètre », j’obtiens :

Premier essai dans le jeu Sutom
Je sais désormais que :
– Le mot fait 8 lettres (incluant le D au début)
– D et I sont bien placés
– E et R sont mal placés (mais présents).
– A, T et M sont exclus (grisés sur le clavier)

D’essai en essai, on accumule les indices et la solution nous apparaît plus ou moins facilement.
Motus était un jeu télévisé, mais sur ces petits jeux en ligne, il n’y a rien à gagner. Il y a un seul mot par jour.

Si vous trouvez, vous recevez un code rigolo à partager sur les réseaux sociaux qui représentent les couleurs des cases du tableau. Comme personne n’essaie les mêmes mots, il est généralement unique à vous pour ce jour-là. C’est amusant :).

Utiliser les Regex pour jouer à Sutom

Sutom demande deux choses qu’un ordinateur a :

  • de la mémoire (du vocabulaire)
  • de la logique

Il suffit d’une liste de mots connus suffisamment complète ainsi que quelques règles de base pour permettre à un ordinateur de jouer à Sutom.

On pourrait créer un solveur où l’on prend la grille en photo et il nous donne la réponse. Ce serait un exercice intéressant à plusieurs niveaux, mais ce n’est pas ce que je vais faire ici.

Je me contenterai ici d’utiliser une liste de mots et les Regex mentionnées plus haut pour trouver la solution grâce aux indices du jeu.

J’ai fait cette page : Rechercher un mot. Elle contient 340 000 mots et un champ de recherche.
L’intérêt est que la recherche fonctionne par Regex !

Le but de cet article est de créer une Regex puissante qui va très vite filtrer les mots et nous sortir le bon, généralement après 1 ou 2 essais seulement.

Pour l’exemple du 21 janvier 2022, le mot commence par D et fait 8 lettres.

On a donc cette Regex :

D.{7}$

Vous pouvez copier ça dans le champ de recherche de la page de recherche de mots.

La Regex signifie « un “D”, suivi de 7 lettres » (donc bien 8 au total). Le « $ » à la fin signifie que c’est la fin du mot après ça. Si on ne le met pas, il va nous sortir les mots de 8 lettres ou plus. Or nous ne voulons que les mots de 8 lettres.

À ce stade, ma page me sort 37 042 mots. On peut en utiliser un de la liste ou en poser un qu’on connaitrait déjà.

Dans mon cas, j’essaye « DIAMETRE ». J’obtiens les informations suivantes :
– D et I sont bien placés
– E et R sont mal placés (mais présents).
– A, T et M sont exclus (grisés sur le clavier)

Il faut donc un mot qui débute par DI, qui ne contienne pas A, T, M, mais qui contienne E, R. et dont la longueur totale fasse toujours 7 lettres.

Le début de la Regex est simple : le mot commence par DI.

La Regex débute donc tout naturellement par :

di

Ensuite, il faut dire que parmi tous les mots commençant par « DI », on veut ceux comportant E et R.

Il s’agit d’utiliser une assertion positive avant (positive lookahead), pour dire « je veux un E et un R après le DI ». Il existe aussi des assertions arrière, pour vérifier ce qui se trouve avant, mais ça ne nous intéresse pas ici.
L’assertion positive est inclue dans notre Regex sous la forme (?=REGEX). Elle contient elle-même une sous-Regex.

Notre sous-Regex est la forme « une lettre suivie de E ou de R ». La regex est triviale, mais comme on veut un E et un R, qu’importe l’ordre mais il nous faut les deux, il nous faut deux assertions :

(?=.*e)(?=.*r)

Maintenant un peu de technique interne aux Regex.

Normalement quand on cherche « ABC », il cherche un « A » suivi d’un « B » suivi d’un « C ». La chaîne « A1B1C1 » ne marche pas, car les trois lettres ne se suivent pas.

Effectivement, après avoir matché le « A », le parseur se positionne après le A. Il regarde donc s’il y a un « B » juste après, et ainsi de suite, à chaque fois en venant avancer dans la chaîne. Ainsi, quand on matche notre « AB », on avance de deux lettres dans le mot.

Les assertions servent à matcher des trucs, mais ne font pas avancer dans notre Regex globale. Quand on utilise l’assertion, on va parcourir le reste du mot et renvoyer un TRUE si un E et un R sont trouvés, mais on vient se remettre juste après le DI.

À ce stade, la Regex entière a filtrée les mots débutant par DI et contenant un E et un R.

Il reste à filtrer les mots pour éliminer ceux avec A, T, M.

Pour ça, on veut exclure des lettres. On va utiliser une assertion négative avant (negative lookahead) pour dire « je ne veux pas de A, T, M après le “DI” ».

L’assertion négative se construit avec (?!REGEX). Elle est négative, car on retourne FALSE si la REGEX à l’intérieur de l’assertion retourne TRUE.

Dans notre cas, on veut refuser A, T et M. Une seule assertion suffit car on veut éliminer les mots contenant une ou plusieurs des lettres parmi A, T, M :
Ce qui donne :

(?!.*[atm])

Maintenant, il nous reste à dire qu’il nous faut 6 lettres.
Inutile de lister les lettres : on peut utiliser le simple « . ». Les assertions ont déjà filtré les lettres qui nous intéressent ou non. On a donc :

.{6}

Mis bout à bout, on a :

di(?=.*e)(?=.*r)(?!.*[atm]).{6}$

Le filtre me trouve 34 mots (sur 340 000). Pas mal, mais pas suffisant pour gagner au jeu. Il faut en essayer un au hasard. J’essaye donc le mot « DISPOSER ».

Qui donne :

Essai du mot « disposer » dans Sutom.
J’apprends donc que le mot est de forme « DI...SER ». J’apprends également qu’on peut éliminer les lettres O et P, en plus de A, T, M.

On peut donc modifier notre assertion négative avant pour filtrer ces deux lettres supplémentaires. De plus, le E et le R sont bien placés : on sait où ils sont. Notre assertion positive avant devient inutile.

La Regex globale devient :

di(?!.*[atopm]).{3}ser$

Qui signifie :

  • « di »
  • puis « on ne veut pas de A, T, O, P, M »
  • puis on revient après le « di », on met trois lettres n’importe lesquelles
  • puis on met « ser »
  • et c’est la fin du mot.

Et là, bim, mon outil de recherche ne me sort plus qu’un seul mot.

Il se trouve que c’est le bon :

SUTOM #14 3/6

🟥🟥🟦🟦🟡🟦🟡🟦
🟥🟥🟦🟦🟦🟥🟥🟥
🟥🟥🟥🟥🟥🟥🟥🟥

Bingo !
Ou plutôt « Motus » !
(ou Sutom)

Bien-sûr cela fonctionne, car tous les mots dans le dictionnaire utilisé par le jeu sont contenus dans le dictionnaire de ma page.

Ma page n’utilise pas le même dictionnaire. C’est volontaire, car je veux un dictionnaire plus large. Mais il arrive bien à filtrer des choses.

Notez que ma page permet de filtrer les accents et les tirets aussi. Sutom ne les affiche pas (ou plutôt il compte le É ou le È comme un E).


Enfin, j’ai aussi un outil de visualisation de Regex. Il est repris d’un code déjà existant (pas de moi) mais ça permet de visualiser ce que signifient les expressions assez compliquées de Regex.

#CSS : variables CSS et !important

Voici une magnifique subtilité du CSS, mais parfaitement logique quand-même :

Que se passe-t-il si on met !important dans une variable ?

Voyons ça :

div {
  --color: red !important;
  color: var(--color);
  color: yellow;
}

À votre avis ça donne quoi ça en CSS ? Le point litigieux, c’est bien-sûr la présence du !important
Sauf qu’il est à savoir que le !important n’est pas sur une déclaration de propriété, mais sur une déclaration de variable CSS.

Or, une variable ne peut contenir qu’une valeur. La valeur contenue dans --color est donc red. Il faut savoir que le !important ne fait pas partie de la valeur : il s’agit d’un élément de langage qui permet de jouer sur la spécificité, comme un drapeau (un flag).

Résultat : la couleur finale du texte sera décidée par le vainqueur des deux déclarations de color juste en dessous. Comme celle-ci ont la même spécificité, c’est la dernière qui gagne.

Conclusion : le texte est en jaune.

!important n’est pas sans effet !

Maintenant, utiliser un !important dans les variables CSS n’est pas sans effet pour autant.
Regardons :

div {
  --color: red !important;
  --color: blue;
  color: var(--color);
}

Ici, aucune ambiguïté sur la déclaration de la couleur, puisqu’il n’y en a qu’une seule : color prendra la valeur contenue dans la variable --color. Oui mais laquelle ?

Réponse : celle dont la déclaration a la spécificité la plus grande ! Autrement dit, la première.
Conclusion : ça donnera du rouge.

Il convient donc de distinguer deux cas de figure :

div {
  --color: red !important;
  color: var(--color);
  color: blue;
}
div {
  --color: red;
  color: var(--color) !important;
  color: blue;
}

Dans le premier cas, les deux déclarations de couleur ont la même spécificité. C’est donc la dernière qui gagne : le texte sera bleu.
Dans le second cas, c’est la première déclaration qui a la plus grande spécificité (à cause du !important).

Peu importe qu’elle ait une variable ou non, c’est elle qui gagne : cela donnera du rouge.

Le conflit ? Quel conflit ?

Dans sa conclusion, l’article dit qu’il y a deux niveaux de « scope » (traduction ?) sur lesquelles sont appliqués le !important. Une sur les variables, et une sur les propriétés. Je ne suis pas d’accord avec ça : pour moi il n’y a en a qu’une seule. En revanche, il a deux déclarations différentes à considérer : une sur une variable, et une sur une propriété.
Maintenant, dans les deux cas, on peut ajouter un !important si l’on veut. Et comme ce sont deux choses différentes, elles n’entreront pas en conflit.

Appliquer deux !important à deux propriétés différentes n’est pas un problème :

div {
  font-weight: bold !important;
  color: red !important;
}

Ces deux choses n’entrent pas en conflit.
Par conséquent, les deux choses suivantes non plus :

div {
  --color: bleu !important;
  color: red !important;
}

Notez que ci-dessus, la variable --color est déclarée, mais jamais utilisée, donc aucun conflit à l’horizon.

Dans ce qui suit, toujours aucun conflit :

div {
  --color: bleu !important;
  color: var(--color) !important;
}

Tout est clair : la variable reçoit du bleu. La couleur reçoit la variable. Donc la couleur finale est bleue.

Et même s’il y avait plusieurs déclarations de la variable, celle qui gagne est celle de la plus grande spécificité. Ensuite, c’est la déclaration de la couleur avec la plus grande spécificité qui gagne. Ainsi l’exemple suivant donnera du rouge :

div {
  --color: red !important;
  --color: blue;
  color: var(--color) !important;
  color: green;
}

Parmi les variables, c’est le rouge qui gagne sur le bleu.
Parmi les propriétés, c’est celui avec le var() qui gagne sur celui avec le vert. Or la variable contient du rouge. Donc le texte sera rouge.

Applications à un contexte plus large

Tout ceci est évidemment à mettre dans un contexte plus global avec des déclarations sur des sélecteurs de spécificité différente.

div {
  --color: blue !important;
  color: var(--color);
}

div#foo {
  --color: orange;
  color: var(--color);
}

Ici ça sera… Bleu !

Regardons la couleur pour commencer. La couleur reçoit ce que contient la variable. Aucune ambiguïté. Et la règle qui s’applique est celle dans le second bloc. Pourquoi ? Parce que le sélecteur y est plus spécifique.

Maintenant que contient cette variable ? Cette variable est celle qui est la plus spécifique. Donc celle avec le !important. Donc le bleu.

En effet, même s’il y a un #id sur le sélecteur du second bloc, la variable --color ne contient pas de l’orange, mais du rouge : le !important sur une propriété est plus spécifique que la même propriété placée sur un ID (Spécificité de 1-0-0-0-1 au lieu de 0-1-0-0-1).

Par contre, il en est différent si le !important sous le deuxième bloc avait été sur la variable au lieu de la propriété :

div {
  --color: blue;
  color: var(--color)!important;
}

div#foo {
  --color: orange;
  color: var(--color);
}

Dans ce cas, la variable qui s’applique est l’orange dans le second bloc (car cette variable est plus spécifique à cause de l’ID dans le sélecteur). Le texte est donc orange.

Notons de façon anecdotique que la propriété qui s’applique est bien celle du premier bloc (car cette propriété a un !important).

Le vocabulaire est important : la propriété et la variable sont deux déclarations différentes. Elles ont chacune leur spécificité (au sens de « priorité CSS »).

Si je ne conserve que les éléments qui s’appliquent réellement, ça donne ceci :

div {

  color: var(--color) !important;
}

div#foo {
  --color: orange !important;

}

La couleur reçoit une variable, comme indiqué dans le premier bloc. Mais cette variable a une valeur assignée dans le second bloc seulement.

Ça vous semble casse gueule ? Attendez la suite.

Cas des sélecteurs enfants

Jusqu’à maintenant, même si on utilise deux sélecteurs différents, ils ciblent le même élément HTML.
Poursuivons les complications par quelques exemples pour montrer ce qui se passe avec avec des sélecteurs enfants.

Voyons :

div {
  --color: red !important;
  color: var(--color) !important;
}

div a {
  --color: orange;
  color: black;
}

La question : quelle est la couleur du lien ?
Réponse : noire.

Noire ? Oui, noire. La déclaration tout à la fin.

En effet, le premier bloc a beau avoir des !important sur toutes les propriétés, ils s’appliquent au div, tout comme leur spécificité.
Or, la spécificité n’est héritée que si la valeur sur laquelle elle s’applique est également héritée. En réalité, seule la propriété la plus spécifique est alors héritée (et la spécificité devient inutile).

Ainsi, pour savoir ce qui s’applique à notre a, on regarde le code destiné au a. C’est alors lui qui s’appliquera, s’il y en a. Et le a possède une déclaration de couleur : color: black;.
L’hérédité ne s’applique donc plus : on applique le color: black;, point barre.

L’hérédité ne s’applique qu’en l’absence de déclaration.

Ainsi, si on avait mis :

div {
  --color: red !important;
  color: var(--color) !important;
}
div a {
  --color: orange;
}

Alors, le texte serait rouge. La couleur du a serait héritée du div, et contiendra var(--color), qui, dans le contexte du div (le contexte hérité, donc), est rouge.

Pas orange ?

Non : l’orange est du contexte de a. Or la propriété de couleur est héritée du contexte de div, et là, dans son contexte, c’est bien du rouge que contient la variable. Ce qui est héritée, c’est la propriété et sa valeur.

On aurait même pu mettre un !important dans le second bloc, cela ne changera rien :

div {
  --color: red !important;
  color: var(--color) !important;
}
div a {
  --color: orange!important;
}

Cela rester rouge, pour la même raison : la couleur est héritée, même si elle provient d’une variable.

Si l’on voulait du orange, on doit ajouter un color: var(--color) dans le second bloc. Comme ça, la couleur du a est déclarée et non-héritée. Mais il faut bien conserver la déclaration de la variable dans le a, sinon la variable n’est plus déclarée et elle hérite.

Il faut retenir que la variable s’applique sur les propriétés du même contexte. Le parent transmet une propriété ? D’accord, mais sa valeur est également transmise, même si c’est une variable.

Par contre, dans le code suivant, la variable est bien héritée :

div {
  --color: red !important;
}
div a {
  color: var(--color);
}

Le a sera rouge. Ici, l’on ne déclare pas la variable --color dans le a. Elle est donc héritée. Or son parent lui dit que la variable contient du rouge. Donc le texte est en rouge.

Et avec des variables partagées sur plusieurs propriétés ?

La blague n’est pas terminée !
On arrive ici à quelque chose de très drôle : quid des variables appliquées à plusieurs propriétés, l’une déclarée et l’autre héritée ?

div {
  --color: white;
  color: var(--color);
}
div a {
  --color: black;
  background-color: var(--color);
}

Ça va donner quoi ?
Ici le texte dans le a sera bien en blanc sur fond noir !

Décomposons :

  • La couleur du texte : la couleur n’est pas déclarée sur le a. Elle est donc héritée. Et l’héritage contient du blanc : c’est donc du blanc.
  • Le couleur du fond : le fond est déclaré sur le a. Le fond contient var(--color). Et --color, dans ce contexte, contient du noir. Le fond est donc noir.

Si l’on n’avait pas déclaré le --color: black;, alors la variable aurait été héritée, et on aurait eu du blanc sur fond blanc. Mais comme on l’a redéfini dans le contexte du a, elle prend une nouvelle valeur… dans son contexte seulement.

Notez que dans ce dernier exemple on n’a mis aucun !important : normal, car la spécificité n’est pas héritée si la propriété sur laquelle elle est appliquée n’est pas elle-même héritée.

On aurait pu en mettre partout dans le premier bloc, on aurait tout de même eu du blanc sur du noir.

Conclusion

Pour moi tout est logique, même si c’est parfois compliqué.
Il faut retenir :

  • !important s’applique à la déclaration de la variable. Mais elle n’est pas dans la valeur assignée à la variable.
  • une variable CSS peut être déclarée plusieurs fois. Tout comme on peut déclarer plusieurs fois une couleur. Dans ces conditions, c’est la déclaration la plus spécifique qui est retenue. Si toutes ont la même spécificité, la dernière est retenue. C’est du CSS de base.
  • concernant l’hérédité, rien n’est nouveau là non plus : les valeurs, même avec un !important ne sont transmis aux éléments enfants que si ces derniers ne les redéclarent pas. Ça vaut pour les variables comme pour les propriétés CSS.

Bref, c’est compliqué, un peu curieux, parfois casse-gueule, mais rien de nouveau.

Et rien de différent d’autre langages de prog non plus : les variables ont leur contexte et peuvent être redéfinies dans des boucles imbriquées d’où elles ne sortent pas (pensez au let en JS par exemple : deux variables redéclarées avec le même nom auront leur propre contexte :

let a = "bar";

function newScope() {
    let a = "foo";
    console.log(a); // "foo"
}

console.log(a); // "bar"

Ah et : ici on ne parle que de la propriété color. Je vous laisse imaginer ce que ça donne si l’on utilise des variables dans display, flex ou position, le tout assaisonnée de sélecteurs comme a ~ a et de pseudo-classes :not() ou :placeholder-shown. Ça promet, non ?

Ma gestion améliorée de cache statique PHP/Apache

Programmation.
Ceci est une implémentation de l’idée que j’avais postée ici et qui concernait une gestion de cache basée sur le .htaccess et les erreur 404.

Le modèle habituel d’un cache statique PHP

Habituellement, pour gérer les caches de fichiers statique, on envoie une requête sur un fichier PHP qui va s’occuper de récupérer une ressource statique et l’envoyer vers le navigateur :

cache.php

<?php
    readfile($fichier_statique);
?>

Le $fichier_statique contient des données HTML déjà prêtes. Normalement, une fois que la page HTML est envoyée au visiteur, elle est oubliée de la mémoire de l’ordi. Si un autre visiteur fait la même requête, le serveur doit tout refaire.

L’idée d’un cache est de stocker le code HTML que l’on a envoyé au visiteur. Comme ça, si un second visiteur fait la même requête, on lui envoie ce qui se trouve en cache, sans avoir à tout recalculer : c’est beaucoup plus rapide.

Dans mon cas, je le fais avec des images d’avatar de chez Gravatar et avec des favicon que je met en face des sites dans mon lecteur RSS. Je ne fais pas une requête vers ces sites, mais vers mon lecteur RSS. C’est lui qui va faire une requête externe, sauver l’avatar ou la favicon localement, puis l’envoyer au client. La fois d’après, il envoie directement l’icône locale au client, sans faire de requête réseau. On gagne beaucoup en performances globales.

Le problème que je vois ici, c’est que le fichier cache.php est appelé pour chaque requête sur un fichier. C’est plus rapide que recalculer une miniature, mais une instance PHP est tout de même créée, ne serait-ce que pour lancer le readfile(), et éventuellement après quelques calculs rapides pour déterminer quel fichier cache on envoie au navigateur.

On peut s’affranchir de cette requête et de PHP.

Utiiliser .htaccess

On va prendre l’exemple du cache pour les images favicon et gravatar, car c’est ce que j’utilise et c’est ce pourquoi j’ai fait cette méthode.

Avant je faisais une requête vers cache.php?w=favicon&site=example.com
Et j’avais cette arborescence :

cache.php
var/
| - - cache/
      | - - favicon/
            | - - icone1.png
            | - - icone2.png
            | - - ...
      | - - gravatar/
            | - - avatar1.png
            | - - avatar2.png
            | - - ...
      | - - .htaccess

Quand je voulais une icône, je faisais un hit sur cache.php?get=icone1.png, et il m’envoyait l’icone1.png après l’avoir soit téléchargée, soit lue sur le disque.
Pour moi, l’image était située à l’URL cache.php?get=icone1.png, pas ailleurs.

Maintenant je fais autrement.

Je fais mon hit sur /var/cache/favicon/icone1.png. Plus besoin de PHP : si l’image existe, l’icône est envoyée directement.

Mais si le fichier n’existe pas, ça renvoie un 404, non ?

Exactement ! Mais ça, c’est uniquement si le fichier n’est pas là.
La distinction « fichier là / fichier pas là » n’est plus à faire par PHP comme avant : elle est déjà faite par le serveur (Apache, …), et on va s’en servir !

Il est possible d’utiliser une redirection en cas de 404. Dans le fichier .htaccess de notre arborescence, je vais mettre :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) ../../cache.php?w=gravatar&q=$1 [L]

L’important ici est le !-f de la première ligne.

Un simple -f signifierait « notre requête est un fichier ». Mais avec le point d’exclamation devant, ça signifie « notre requête n’est pas un fichier », dans le sens « un fichier qui n’est pas, qui n’existe pas ».

Si je demande un fichier qui n’est pas là (donc un 404), cette condition est est satisfait : « le fichier n’est pas ! » et on accède à la ligne suivante, c’est à dire le renvoie vers le script PHP.

Ce n’est pas une redirection 301 ou 302 : le serveur demande uniquement à PHP de s’occuper de la demande au lieu de s’en occuper lui-même par l’envoie d’une erreur 404.

Une fois que PHP a fait son boulot, il sauvegarde le fichier et la renvoie au navigateur : le navigateur ne reçoit jamais de 404 : si le fichier est là, le serveur lui donne. Si le fichier n’est pas là, PHP produit le fichier avant de lui donner également. Le fichier est également sauvegardé pour la prochaine fois.

En plus de ça, la requête est faite directement sur le fichier que l’on veut, pas sur une page à PHP qui devra lire le fichier. On gagne donc en logique aussi.

Pour aller plus loin

Comme je l’ai dit, j’utilise ce système à la fois pour des icônes de site et pour des avatars de commentaires. Il y a donc une distinction à un moment. Les images sont mis en cache dans deux répertoires dédiés :

var/
| - - cache/
      | - - favicon/
      | - - gravatar/
      | - - .htaccess

Aussi, une complication est de ne faire qu’un seul fichier .htaccess.

Pourquoi ? Car je ne veux pas mettre un .htaccess dans chaque dossier et ceci pour une raison simple : quand veux purger le cache (en supprimant le dossier et son contenu), je ne veux pas perdre mon fichier .htaccess.

Avec un seul fichier situé à un niveau plus haut, je supprime les dossier favicon/ et gravatar/ et c’est bon, ils seront recréés par PHP lors de la prochaine requête.

Mon .htaccess doit distinguer quel est le dossier où l’on fait la requête. Je fais ça comme ça :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ./gravatar/(.*)$
RewriteRule (.*)gravatar/(.*)$ ../../favatar.php?w=gravatar&q=$2 [L]

Explication ligne par ligne :

RewriteCond %{REQUEST_FILENAME} !-f

↑ Je regarde si le fichier existe. Si oui, le fichier est envoyé au navigateur et ça s’arrête. Autrement on continue.

RewriteCond %{REQUEST_URI} ./favicon/(.*)$

↑ Je regarde sur la requête concerne un fichier dans /favicon

RewriteRule (.*)favicon/(.*)$ ../../favatar.php?w=favicon&q=$2 [L]

↑ Si oui et oui, on renvoie sur favatar.php?w=favicon&q=icone.png, et PHP fera son travail. Le [L] permet de dire qu’il s’agit de la dernière condition et que le traitement du .htaccess s’arrête.

Il reste une ligne à ajouter. En effet, si je fais une requête sur le dossier .favicon/, je ne veux pas que ça renvoie sur PHP. C’est un dossier, pas une image. Et même si je gère cette exception dans PHP pour plus de sécurité, il faut mieux mettre un garde-fou en plus.

Par conséquent, ça nous fait quatre lignes :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ./gravatar/(.*)$
RewriteCond %{REQUEST_URI} !./gravatar/$
RewriteRule (.*)gravatar/(.*)$ ../../favatar.php?w=gravatar&q=$2 [L]

La ligne ajoutée, la troisième, dit « si le fichier est autre que le dossier gravatar/, on applique la règle ». Dans le cas contraire, on laisse faire (et on ne renvoie pas vers PHP.

Ceci est bon pour les avatars.
Reste à faire la même chose pour les favicon. Il suffit de dupliquer tout ça :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ./gravatar/(.*)$
RewriteCond %{REQUEST_URI} !./gravatar/$
RewriteRule (.*)gravatar/(.*)$ ../../favatar.php?w=gravatar&q=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ./favicon/(.*)$
RewriteCond %{REQUEST_URI} !./favicon/$
RewriteRule (.*)favicon/(.*)$ ../../favatar.php?w=favicon&q=$2 [L]

Et voilà !

Exemple de fonctionnement

Juste pour résumer ce qui se passe :

Une requête sur ./gravatar/fichier.png sera traité par le premier bloc ci-dessus. Une requête sur ./favicon/fichier.png sera traité par le seconde bloc ci-dessus.

Dans les deux cas, si fichier.png existe, il est envoyé normalement au navigateur. Sinon, il est créé par PHP puis envoyé. Il n’y a pas de 404 envoyé au navigateur.
Si le fichier demandé est invalide, on renvoie une erreur 400 (Bad Request) avec PHP. C’est par exemple le cas si on demande un fichier à Gravatar qui n’est pas un MD5 d’une adresse e-mail, ou si l’on demande un favicon pour une URL qui n’est pas une URL correcte.

Enfin, si je fais une requête sur un autre dossier (./foo/fichier.png par exemple), alors il est ignoré par ce .htaccess et par PHP. Pas de risque donc de faire tourner PHP sur d’autres fichiers que des icônes ou des avatars.

image d’en-tête de Ferenc Almasi

Encore un peu d’optimisation pour les pages Web

Code de programmation.
J’ai déjà fait un article sur Pourquoi mettre le JavaScript à la fin et le CSS au début ?, et je vous invite à le lire.

Les astuces ici sont en plus.

Utiliser preload pour précharger les ressources utiles

Bien que l’on puisse mettre le CSS dans l’entête, il faut se souvenir que dans le CSS, on peut lier d’autres CSS, avec les @import, ou même des polices, des images (avec background-image). Cela peut ralentir l’affichage.

Si les fichiers sont petits, il est préférable de les précharger : le téléchargement en parallèle est alors avantageux sur le téléchargement en série des fichiers.

Pour ça, dans le head de la page HTML, on peut utiliser ça :

<link rel="stylesheet preload" href="style/style.css" as="style" />
<link rel="preload" href="fonts/font.woff2" as="font" type="font/woff2" crossorigin />

Cela permet de précharger les ressources en même temps que la page.

Quelques remarques :

  • pour le CSS, j’ai mis stylesheet et preload. Certains mettent juste preload, puis utilisent JS pour changer le preload en stylesheet quand la page est chargée, avec onload. Perso je vois pas l’intérêt d’utiliser JS pour ça : ça ne fait que retarder le rendu.
  • pour le fichier woff2 (police), j’ai ajouté un crossorigin. Je ne sais pas pourquoi, les navigateurs en ont besoin (à la fois Firefox et Chrome), sinon il préchargent le fichier, le jettent, et le rechargent quand la requête réelle est demandée…
  • on utilise preload et non prefetch. Prefetch sert à précharger des pages sur lequel vos lecteurs vont cliquer, afin de gagner du temps lors de la navigation entre plusieurs pages. Preload sert à charger des ressources pour la page courante.

Ne charger les scripts que quand ils sont utiles

Ensuite, les scripts doivent être mis à la fin (voir mon article lié plus haut).

Sauf que certains scripts dépendent du contenu d’une page.
Par exemple, sur Couleur-Science, les équations dans certains articles utilisent KaTeX (il existe un standard HTML pour afficher des équations (MathML), mais il n’est supporté que par Firefox, donc pour l’instant, on passe par une lib JS).

Certains de mes articles n’ont pas d’équations. Dans ce cas, pourquoi télécharger 150 ko de JS ?
Chez KaTeX, on identifie une équation en le plaçant entre des signes « $ ». Comme ça : « $ equation $ ».

Je fais donc un test : si le contenu de l’article contient un signe $, je charge Katex. Autrement, je ne le charge pas.

Ah et je fais ça seulement quand le reste de la page a fini de charger : rappelez-vous, si vous initiez le chargement d’un script, le rendu de la page se bloque.

Je fais donc ça :

document.addEventListener("DOMContentLoaded", function() {
	var contenuDom = document.getElementById('contenu').textContent;
	if (contenuDom.indexOf('$') !== -1) {

		// only if Katex needed is it added
		var newLink = document.createElement('link');
		newLink.rel = 'stylesheet';
		newLink.type = 'text/css';
		newLink.href = 'katex/katex.min.css';
		document.head.appendChild(newLink);

		var katexRes = document.createElement('script');
		katexRes.src = 'katex/katex.min.js';
		document.head.appendChild(katexRes);

		setTimeout(function() {
			renderMathInElement(
				document.getElementById('contenu'),
				{
					delimiters: [
						{left: "$$", right: "$$", display: true},
						{left: "$", right: "$", display: false},
					]
				}
			);
		}, 1000);
	}
});

Explications :

  • j’attends le chargement de la page.
  • ensuite, je regarde si le #contenu contient un « $ ». Si oui, j’initie le téléchargement du CSS de Katex, puis du Script de Katex.
  • Enfin, j’attends un instant (1 s) et je dis à Katex d’afficher les équations qu’il trouve dans la page.
    Si je mets le renderMathInElement() dans un katexRes.onload(), ça ne marche pas. En effet, onload() se déclenche quand le fichier a fini de télécharger, pas quand il a fini d’être parsé. Il faut que le code dans le fichier soit parsé, pas juste téléchargé.

Pas de base64 pour le SVG inclus dans le CSS

Si l’image est très légère, une requête sera plus longue que le téléchargement, il est alors préférable de l’inclure directement dans la source. Quand on veut mettre des images très légères directement dans le CSS, on les inclut en Base64 : le fichier image se met sous une forme textuelle et on la copie-colle dans le CSS.

Inconvénient : le Base64 pèse 33 % plus lourd.

Si notre image est en SVG, tout ceci est inutile : le SVG est lui-même du texte. On peut dont le placer directement dans le code. Il suffit de dire que le format est du SVG :

background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 36 36'><path d='M10.5 15l7.5 7.5 7.5-7.5z' /></svg>");

En prime, le SVG reste lisible. Il faut juste faire attention à correctement échapper les caractères (quotes, doublequotes…).

Pour les polices d’icônes

Concernant les petites images/icônes, j’utilise une police qui contient les glyphes. Les icônes que j’utilise sont les icônes de Google Material Design. Il y en a plus de 1 000 différentes.

Si vous n’utilisez que 10 icônes, il ne sert à rien de toutes les intégrer. Dans ce cas, on peut n’intégrer que les polices nécessaires.

Pour cela, j’utilise personnellement Icomoon, un outil en ligne. On peut lui donner ses propres SVG (ceux de Google Material par exemple) et produire une police en .woff ou un autre format.
Seul problème : il ne produit pas de .woff2 (dont la taille de fichier est moitié moindre). Il faudra donc utiliser un autre convertisseur pour transformer le .woff en .woff2.

Là aussi, si nécessaire, utilisez un préload pour ce fichier, ou bien incluez le directement dans le CSS en Base64.

Enfin, n’oubliez pas qu’il faut peut-être autoriser la mise en cache avec .htaccess (les formats .woff et .woff2 ne sont pas forcément pris en charge nativement dans ce fichier) :

<IfModule mod_expires.c>
  AddType application/x-font-woff .woff
  AddType application/x-font-woff2 .woff2
  ExpiresActive On
  ExpiresDefault "access plus 1800 seconds"
  ExpiresByType application/x-font-woff "access plus 1 year"
  ExpiresByType application/x-font-woff2 "access plus 1 year"
</IfModule>

D’autres liens

J’espère que les quelques astuces ci-dessus seront utiles.
Ci-dessous, quelques autres astuces accumulées depuis les années :

Enfin, pour des astuces plus générales :

  • pensez à utiliser break/continue
  • rappelez-vous : ce qui compte, c’est la vitesse perçue ; dans cet exemple du lecteur RSS, il est inutile que tous les flux soient téléchargés immédiatement. L’internaute ne lira qu’après 1 ou 2 secondes, le temps qu’il choisisse quoi lire. Récupérez donc d’abord les titres des articles, puis, pendant qu’il choisit les titres qu’il va lire, on télécharge le contenu des posts. C’est comme quand vous êtes au restaurant : le cuistot ne prépare pas tous les plats en avance, mais commence par proposer le menu et proposer à boire. Comme ça, pendant que les gens boivent, il prépare le plat.
  • utilisez les JPEG progressifs
  • pour le JSON, utilisez type="application/json". Ça sera *beaucoup* plus rapide à parser
  • et voyez tout ça

Passer en HTTP2

Enfin, et c’est probablement le plus gros gain que vous aurez, mais il faut que ça soit mis en place au niveau du serveur (ce qui peut ne pas dépendre de vous) : passez en HTTP2.

Voir ces liens : 1 , 2 , 3 , 4 .

(merci Thibault pour celui-ci)

Résultat

Résultat satisfaisant (pour ce que ça vaut, mais ça donne une idée) :

Score PageSpeed Insight Google.
Donc non, il n’est pas nécessaire d’avoir un design ultra-flat tout blanc et noir si l’on veut qu’elles soient rapides.

image d’en-tête de Lucas Bravo

Installer une dashcam dans sa voiture

Position finale de la dashcam dans la voiture.
Ici un petit tuto sur l’installation d’une dashcam « en dur » dans sa voiture, avec branchement directement dans la boîte à fusibles et quelques astuces diverses en plus.

Mon matériel :

  • ma voiture : (Hyundai Ioniq Plug-in)
  • Dashcam : Thinkware F770 (site officiel ; lien Amazon)
  • Câbles de branchement "hardwire" (lien Amazon)
  • (facultatif) Carte micro-SD UHC1 (lien Amazon)
  • (facultatif) Filtre polarisant pour éliminer les reflets du tableau de bord dans la vitre et sur la vidéo (lien Amazon — filtre polarisant pour drône DJI : le filtre seul, en verre, se colle très bien sur la dashcam).

Il y a une carte micro-SD de 16 Go fournie avec cette caméra, et qui suffit pour enregistrer environ 2 h de vidéo full-HD.

Si vous souhaitez pouvoir enregistrer davantage, prenez une carte plus grande. La carte doit être certifiée UHC-1, sinon votre dashcam ne la reconnaîtra pas. Pour info : une carte micro-SD de 64 Go certifiée UHC-1 coûte environ 10 € en ligne, en 2021.

Si possible, privilégiez en plus une carte avec une bonne capacité d’écriture / réécriture (les cartes « endurance » sont précisément faites pour ce genre d’usage, par exemple chez Samsung ou chez Sandisk).
À ces niveaux d’enregistrement en continu, la carte mémoire constitue un consommable, et une bonne carte vous évitera de devoir en changer tous les 4 matins.

La dashcam F770

Je ne suis pas spécialiste en dashcam, mais j’ai trouvé cette référence dans une vidéo où ils montrent comment l’installer dans une Ioniq, donc ma voiture. J’ai décidé de faire pareil.

En voici quelques caractéristiques rapides :

  • prix : 169 €.
  • image : full-HD
  • format des vidéos : MP4
  • support de stockage : micro-SD
  • on peut y brancher un add-on pour ajouter une caméra arrière et ainsi filmer l’avant et l’arrière de la voiture.

Un truc cool : la dashcam peut envoyer le flux vidéo sur le téléphone via du Wifi (il devient un hotspot wifi sur lequel se connecte le téléphone). On peut alors avoir une vision directe de la caméra sur le téléphone, ce qui est très pratique lors de la mise en place et vérifier le centrage. C’est aussi pratique pour mettre en place le filtre polarisant : il doit être orienté correctement pour filtrer les reflets.
L’application permet aussi de récupérer la vidéo sans PC et sans débrancher la carte-SD.

À noter que les vidéos sont coupés en blocs d’une minute qui pèsent chacun environ 80 Mo (soit environ 4,8 Go par heure)

Si l’on n’utilise pas le Wifi, on peut toujours lire les vidéos depuis un PC en retirant la carte micro-SD : l’adaptateur μSD→SD et μSD→USB sont fournis avec. Les vidéos sont directement accessibles sur la carte sans besoin de lecteur spécifique.

Hardwire ou prise allume-cigare ?

De façon générale, il y a deux façons de brancher une dashcam dans une voiture.

La première consiste à brancher la dashcam sur la prise allume-cigare de la voiture.
C’est de loin ce qu’il y a de plus simple : on branche et ça marche.

Attention : normalement, l’allume cigare d’une voiture n’est pas alimenté quand le contact est coupé. C’est très important, sinon la caméra ou tout autre accessoire viderait votre batterie en une nuit et vous ne pourrez plus démarrer le lendemain. Sur certaines voitures, l’allume-cigare pourrait rester allumé ! Il faut s’en assurer avant de laisser la dashcam branché. Faites bien attention !

Cette façon d’installer la caméra laisse cependant apparaître sa prise et une partie du câblage. Pour ceux qui veulent un montage plus propre et discret, on peut utiliser ce qu’on appelle le « hardwire » (« câblage en dur »). C’est la seconde façon de faire.

Avec le hardwire, on branche la caméra directement dans le circuit de la voiture (en passant par la boîte à fusible). Cela demande un peu de bricolage, mais le résultat est nettement plus propre : tous les câbles sont cachés et la dashcam fait alors partie intégrante de la voiture (sans avoir l’air d’un accessoire ajouté après).
Il s’allume directement avec la voiture et s’éteint quand on coupe le contact.

Principe du hardwire

Chaque élément de la voiture (rétroviseur électrique, fenêtres, clignotants, sièges électriques, prises USB…) a son fusible dédié dans la boîte à fusible.

Bien-sûr, par défaut il n’y a pas de prise pour dashcam, mais on peut en créer une : pour ça, on va utiliser un dédoubleur de fusible pour pouvoir brancher un élément en plus dans le boitier. Ainsi, une prise du boitier aura le fusible qu’il avait déjà (par exemple : les vitres électriques) et un autre fusible pour brancher un accessoire tiers, c’est-à-dire votre dashcam.

Le dédoubleur, c’est le petit kit hardwire listé plus haut.

Avec ce système on n’a rien modifié dans la voiture. Pour tout annuler, il suffira de virer le kit et de remettre le fusible original à sa place.

Côté technique

Premièrement, il faut savoir que toutes les voitures n’ont pas les mêmes formats de fusibles. Il faut donc un kit hardwire spécifique. Pour la Hyundai Ioniq, il faut le kit micro-2.
Si vous achetez un kit, regardez bien celui qu’il vous faut.

Ensuite dans une voiture, il y a deux circuits électriques principaux :

  • le circuit alimenté en permanence (qui comprend typiquement les accessoires comme l’alarme, les feux de détresse, le système de verrouillage à distance…)
  • le circuit qui n’est alimenté que lorsque le contact est mis (qui comprend tout le reste : vitres électriques, radio, direction assistée, éclairage extérieur, système d’infodivertissement).

La dashcam doit être branchée sur le second circuit : celui qui n’est sous tension que quand la voiture est allumée (sinon il va rester brancher tout le temps et vider votre batterie en quelques heures).

Note : La dashcam F770 version Royaume-Uni vient directement avec le kit hardwire et sur deux fils : il a le mode normal quand on roule et un mode « parking » basse consommation (qui prend dix image par minute, par exemple) quand la voiture est éteinte. La caméra intègre une sécurité qui détecte la tension de la batterie et se coupe par sécurité quand elle est trop basse.
Cela permet d’avoir un enregistrement H24, voiture éteinte.

La dashcam F770 vendue sur le marché européen est capable de tout ça aussi (je suppose), mais le kit de connexion fourni avec ne le permet pas : le packaging UE ne contient que le connecteur prise allume-cigare (et ne peut donc as se brancher en mode parking).

Cela n’empêche pas de la brancher sur le boîtier à fusibles, mais pour ça il faudra sectionner le câble allume-cigare (avec une pince, donc, et irréversiblement)
À noter que dans mon cas, c’est le vendeur lui-même qui m’a conseillé de faire ainsi.

Bref, il vous faudra faire un choix :

  • soit la brancher sur l’allume cigare (et dans ce cas il suffit d’acheter la dashcam ; recommandé si vous n’avez pas envie de risquer quoi que ce soit, ou pour tester avant).
  • soit la relier à la boîte à fusibles et dans ce cas il faudra en plus prévoir un kit « hardwire » avec des dédoubleurs de fusibles (5-10 €) en s’assurant d’avoir le bon format de fusibles en plus de tout ça (ce kit peut être installé dans un second temps).

Ce qui suit est l’explication pour le hardwire, car c’est ce que j’ai fait.

Le branchement en dur de la dashcam

Quel fusible retirer pour le installer le kit ?

Sur la Ioniq, le boîtier à fusible se trouve à gauche sous le volant. Il y a une trappe qui s’enlève.

Vous voyez alors tous les fusibles avec des numéros 5, 10, 15, 25… écrit dessus : ce sont les courants maximums que permet ce fusible. Pour la dashcam, un fusible de 5 suffit, mais ce n’est pas tout.

Comme j’ai dit, il y a deux circuits sur une voiture :

  • une alimentée 24/7
  • une alimentée seulement après avoir mis le contact

Il faut mettre la dashcam sur le second. Vous pouvez utiliser le schéma de câblage dans le manuel de la voiture ou alors et détecter les accessoires non fonctionnels quand le contact est coupé : typiquement, vitres électriques, radio, éclairage intérieur.
Pour en être sûr, il faut utiliser un voltmètre et vérifier quel fusible se trouve effectivement hors tension quand le contact est coupé.

Les fusibles ont un petit point métallique sur le dessus, qui permet de les tester. Avec le voltmètre, on va mettre la borne rouge sur le fusible et la borne noire sur la masse de la voiture : c’est-à-dire la carcasse ou n’importe quel écrou non peint pas trop loin. Sur la Ioniq, il y en a une dans le boîtier à fusible.

Intérieur de la boîte à fusibles.
En s’aidant du schéma orange sur la trappe du boîtier à fusible, repérez celui des vitres électriques par exemple :

  • Contact coupé, la lecture doit être de 0 V.
  • Contact mis, la lecture doit donner 12 V.

Pour comparer, essayez avec d’autres fusibles : certains afficheront toujours 12 V, même après avoir coupé le contact.

Il faut choisir un fusible : on peut utiliser celui que l’on veut qui réponde au critère ci-dessus. Perso j’ai utilisé celui d’un accessoire non essentiel (et que je n’ai pas) : le volant chauffant.

Dans tous les cas, évitez ceux des airbags ou de l’alarme. Si la dashcam pompe un peu trop de courant, cela peut influer sur leur déclenchement, ce qui serait dangereux.

Une fois que vous avez choisi un fusible, notez-le et repérez-le. Cela nous servira pour après.

Installation de la dashcam

Traditionnellement, on place la dashcam derrière le miroir central. Dans la Ioniq, il y a déjà la caméra de reconnaissance des panneaux et le détecteur d’humidité pour l’auto-désembuage.

Il reste de la place pour la dashcam du côté du conducteur. Prévoyez alors 2 cm de plus à droite pour pouvoir retirer la dashcam de son socle (la dashcam se clip sur son socle par la droite).

À ce stade, il est pratique de mettre le contact, brancher la dashcam sur l’allume-cigare et allumer la dashcam. Connectez-vous au Wifi de la cam avec votre téléphone et utilisez l’application Thinkware et affichez directement le flux vidéo. Vous pourrez alors juger du bon centrage et de la bonne orientation et inclinaison de l’image.

Quand vous êtes sûrs de votre positionnement, et que vous avez vérifié que vous pourrez toujours la retirer du socle, ôtez le film protecteur 3M pour permettre de coller la dashcam sur la vitre.

Je recommande de faire ça par temps chaud et ensoleillé : la colle 3M prend beaucoup mieux lorsqu’il fait chaud et il ne risquera pas de tomber en pleine conduite. Rassurez-vous, ça tient très bien : ça fait 3 mois que je l’ai mis, et elle n’est jamais tombée (encore heureux).

La dashcam collée, il faut maintenant masquer le câble. Dans la vidéo, le monteur a l’ingénieuse idée d’enrouler du ruban adhésif à l’envers (collant vers l’extérieur) autour du câble, et de pousser le câble sous la mousse du plafonnier. Ça marche très bien et ça ne bougera pas. Perso j’ai fait ça par endroit, pas sur tout le câble.

Débranchez la dashcam de l’allume-cigare mais laissez la cam elle-même fixée. En partant de la dashcam à côté du rétroviseur centrale, on va passer le câble sur la gauche, jusqu’à la portière puis descendre en passant derrière le joint en caoutchouc de la portière, et enfin quand on y sera, on passera dans le compartiment à fusibles.

Enfin, passez le connecteur dans la boîte à fusible :

Cacher le câble de la dashcam.

  1. remontez le câble jusqu’au plafonnier
  2. passez le câble sous le plafonnier, jusqu’à la gauche. Arrivé au bout, passez le câble sous le plastique ; attention à l’airbag qui se trouve à cet endroit (n’y allez pas au couteau)
  3. Descendez le câble, caché par le joint de porte (côté intérieur)
  4. passez le câble par derrière dans la boîte à fusible.

(voir en grand)

Installation du kit hardwire

Maintenant que l’on sait où brancher la dashcam et que la câble (avec sa prise cigare) se trouve dans le compartiment à fusibles, on va devoir commencer la partie électrique.

Il faut retirer le fusible que vous avez repéré. Le kit vient avec une pince spéciale pour ça, sinon vous en avez une dans le second boîtier fusible qui se trouve sous le capot (dans le cas de la Ioniq).

Retirez un fusible, insérez ce fusible dans le kit. Ensuite, ajoutez un fusible pour la dashcam (venu avec le kit) :

Branchement du hardwire kit.

Enfin, branchez le kit dans l’emplacement libéré de la boîte à fusible.

C’est bon pour le kit.

Branchement de la dashcam

Schéma de câblage de la dashcam.
« Le fil vert sur le bouton vert, le fil rouge… »

Il faut alors sectionner le connecteur allume-cigare. Perso, j’ai coupé juste sous le connecteur, ne coupant pas trop de fil (si jamais je change de voiture, ça permettra de récupérer la cam et de ne pas manquer de fil).

Dénudez alors les câbles noirs (sur 5~10 cm) puis dénudez les deux petits fils (blanc et jaune sur la mienne) sur 2~3 cm.

Le fil jaune est à connecte au fil du kit hardwire. Au besoin, et avant de souder/nouer les deux fils, passez les fils dans un bout de gaine thermorétractable. Nouez ensuite les fils, glissez la gaine thermo sur la jonction et passez un peu de chaleur dessus pour serrer et fixer la gaine isolante. Branchez enfin le kit hardwire dans son emplacement fusible.

Et le fil blanc ?
C’est la masse : il faut le mettre sur la carcasse de la voiture. Dans la Ioniq, il y a un écrou pas loin : on peut enrouler le fil autour, tel quel, puis utiliser un boulon pour le fixer (le tout sans défaire quoi que ce soit de la voiture).

Il ne reste plus qu’à ranger un peu le fil de la dashcam dans la boîte à fusible (pour éviter que ça ne traîne partout) et à remettre le cache.

Démarrez la voiture et normalement la dashcam s’allume (on peut voir la petite LED du GPS qui s’allume).
Coupez le contact et la caméra s’éteint.

Fini !

Notes à l’utilisation

Si vous avez une vieille carte SD qui traîne chez vous, et que vous la mettez dans la dashcam, vous pouvez l’entendre dire qu’il y a une erreur avec la carte. Souvent au démarrage, mais parfois en pleine conduite.
Dans ce cas, la caméra reboot toute seule. C’est sûrement une section de la mémoire qui ne fonctionne plus, ou alors que la carte n’est pas (ou pas pleinement) compatible. Pour rappel : il faut une carte UHC-1 minimum, capable d’enregistrer de la vidéo HD à la volée.

Si ça se produit trop souvent, remplacez la carte SD par une neuve. Comme j’ai dit, pour ces applications intensives, les cartes mémoire sont des consommables. Il en existe qui sont adaptés à l’enregistrement continu, et qui devraient fonctionner plus longtemps (voir lien au début de l’article).

Parfois la dashcam émet une petite musique de quelques notes, parfois à l’allumage, parfois quelques minutes après le début de la conduite. Je ne sais pas du tout ce que c’est. En règle général par contre, la caméra se fait parfaitement oublier.

De temps en temps, la dashcam dit qu’il faut formater régulièrement la carte. Si les vidéos qui sont dessus ne vous importent pas, appuyez alors sur le bouton « format » de la caméra. La voix dira quand c’est bon.

Intérêt de la dashcam, assurances et législation

La dashcam est une caméra embarquée. Elle filme toute votre conduite, en particulier un accident qui pourrait survenir. Elle peut aussi enregistrer votre vitesse. Certains modèles envoient également tout ça directement dans « le cloud » (ce n’est pas le cas de la F770).

Cela permet donc d’analyser votre conduite, de filmer vos road-trips, ou un « événement » qui surviendrait sur la route. Mais surtout, l’intérêt est de filmer un accident et de fournir l’enregistrement à votre assureur, aux autorités ou au tribunal. Rien ne dit que ça soit accepté comme une preuve, mais ça peut faire pencher la balance et au moins prouver votre « bonne foi ».

Certains assureurs proposent (ou proposaient) des ristournes pour l’usage de dashcam. Pas forcément parce que cela constitue une preuve en cas de sinistre, mais aussi parce que les conducteurs, se sachant filmés, ont tendance à conduire de façon plus respectueuse du Code de la route, et seraient alors moins susceptibles de provoquer un sinistre responsable. Renseignez-vous auprès de votre assurance, et surtout voyez si ça vaut le coup pour vous (en combien de temps le coût de la caméra est rentabilité par la ristourne éventuelle) !

Pour info, certains pays (Russie) les rendent obligatoires. Certains pays (comme le Portugal, l’Autriche ou le Luxembourg) en interdisent l’utilisation pour des problèmes de confidentialité.

Les autres pays, comme la France, restent dans le flou. Et dans le flou juridique.

La loi ne dit rien sur les caméras embarquées, si ce n’est qu’en cas de diffusion, la vidéo doit être anonymisée : les visages et les plaques doivent être floutées.
Il doit également être indiqué (sur la voiture) que celle-ci enregistre tout. La dashcam F770 vient d’ailleurs avec un autocollant destiné à cet effet.

Pour le reste, même si le Cerfa-13806-3 existe pour déclarer la mise en place d’un système de vidéo surveillance protection, il n’est pas sûr que ça soit nécessaire pour une caméra embarquée et mobile : la déclaration est liée à un lieu, et on ne peut pas faire une déclaration pour chaque ville que l’on traverse…

La loi ne suit donc pas les usages actuellement. Ceci étant dit, je suis pas avocat.

Quelques liens :