PROJET AUTOBLOG


le hollandais volant links

Site original : le hollandais volant links

⇐ retour index

Ils disent NON au pass sanitaire ! - Broute - CANAL+ - YouTube

dimanche 26 septembre 2021 à 14:45
Nous on n’est pas là pour convaincre les gens de ne pas se faire vacciner, hein. Bien au contraire. Pour continuer de manifester, défendre notre liberté et bénéficier de l’immunité collective tout en faisant aucun effort, il faut absolument que les autres aillent se faire vacciner !

Hahaha !

Tellement ça


— (permalink)

What is Your Page Title on a Google Search Engine Results Page? | CSS-Tricks

dimanche 26 septembre 2021 à 14:38

Pour certains résultats Google, le titre des pages n’est pas le contenu de <title>, ni même le premier H1 de la page.

En fait, dans son exemple, le titre affiché par Google n’est pas présent dans le code source de la page.


— (permalink)

franceinfo plus sur Twitter : "🚰 Chez McDonald’s, l'eau présentée comme "microfiltrée" est précisément vendue 2,50 euros les 40cl, soit plus de six euros le litre Comment expliquer un tel prix ? 📺 #franceinfo canal 27… https://t.co/s1IT6EPIm9"

dimanche 26 septembre 2021 à 10:29

2,40 € pour un verre (carton) d'eau soi-disant filtrée.

Déjà : tous les restaurants et cafés facturent l'eau prise en dehors d'un repas, ou au moins peuvent la facturer.

Quant à la loi qui dit que l'eau "ordinaire" prise au cours d'un repas serait incluse dans le prix du repas au même titre que le sel et le pain (arrêté du 8 juin 1967 relatif à l’affichage des prix dans les établissements servant des repas, ‎denrées ou boissons à consommer sur place), elle a été abrogée en 2015.
Donc même au cours d'un repas, on peut tout vous facturer (même si cette pratique n'est pas répandue).

Par contre, le restaurant doit afficher tous ses prix.
Si vous demandez de l'eau ordinaire (du robinet), en précisant bien "ordinaire", et qu'on vous sert effectivement de l'eau ordinaire (donc pas filtrée, ni de l'eau Évian ou autre), s'ils vous la facturent, son prix doit être affiché sur le tableau des prix. Si c'est pas le cas, ce produit ne peut pas être facturé et on peut vous le refuser.

Ensuite un truc que j'aimerais bien voir c'est leur allégation sur le "eau micro-filtrée". Ça veut dire quoi ? On te sert de l'eau distillée ? déminéralisée ?

On est au courant que l'eau "pure" n'est pas bonne pour la santé et est (autrement mais à peu près autant) aussi dangereuse que boire de l'eau de mer ?

Mais je vois bien le truc : leur pub est relativement vague de façon à ne pas avoir à respecter quelque norme que ce soit. En pratique, je suis à peu près certain qu'une analyse de leur eau "filtrée" n'aurait aucune différence avec l'eau de leur robinet (par exemple celui dans leur WC, vu qu'ils refuseront de servir de l'eau réellement du robinet. Sans compter qu'avec les gobelets et les pailles en carton comme c'est désormais le cas partout, le filtrage me semble particulièrement inutile.

Enfin : si vous voulez manger et boire correctement, je ne peux que vous conseiller d'aller ailleurs qu'au McDo, BK ou autre (mais ce n'est qu'un conseil évidemment)


— (permalink)

(PS5) RIDE 4 in FIRST PERSON is INSANE | Ultra High Realistic Graphics [4K HDR 60fps] - YouTube

samedi 25 septembre 2021 à 16:32

Un jeu vidéo de moto. Oui c’est bien un JEU VIDÉO, pas une vidéo.

Il manque certains détails tout de même :
— les éclaboussures de l’eau : sur route trempée, ça fait pas ça.
— les mouvements de la tête / caméra ne sont pas réalistes


— (permalink)

Pollution de l'air: les particules automobiles hors échappement prennent le dessus

samedi 25 septembre 2021 à 13:44
« En l'absence de politiques ciblées pour réduire les émissions autres que les gaz d'échappement, les préférences des consommateurs pour une plus grande autonomie et une plus grande taille de véhicule pourraient donc entraîner une augmentation des émissions de particules dans les années à venir avec l'adoption de véhicules électriques plus lourds », avertit l'étude.

… et en l’absence de sensibilisation à la conduite électrique, notamment en matière de freinage régénératif.

Les sources de particules (hors échappement) dont parle d’article sont :
— les plaquettes et disques de frein
— l’embrayage
— les pneus

Pour les plaquettes et les disques : si on utilise le freinage regén, ils ne sont pas utilisés.

Pour l’embrayage, la vaste majorité des EV n’ont pas d’embrayage ni de boîte de vitesse (en tout cas pas à friction). Ce n’est pas nécessaire sur ces voitures car le moteur électrique peut tourner à 1 rpm comme à 15 000 rpm. Donc pas besoin de changer de rapport. Le couple est directement contrôlé par le courant électrique injecté dans les circuits.
Mieux, les moteurs à induction (la Zoé ou les premières Tesla) ont tendance à se placer automatique au couple nécessaire : si le rotor se décale par rapport au stator, le couple augmente pour rattraper le retard. C’est un phénomène purement magnétique, mais ça marche. Pour les autres types de moteur (à aimants) des technologies différentes (Toyota, Tesla, avec leur moteur IPM-SynRM) permettent d’obtenir le même phénomène.

Il reste l’usure des pneus.

Mais quand je lis ça :

Parallèlement, les effets des véhicules électriques sont contrastés : ils émettent globalement 5 à 19 % moins de particules hors échappement que les véhicules classiques, mais les véhicules électriques « lourds » émettent 3 à 8 % de particules hors échappement de plus que leur équivalent thermique.

je vois
– 1) que les émissions sont potentiellement plus basses tout de même si l’on regarde la moyenne de la fourchette (reste à voir la médiane).
— 2) que le surplus dans un des indicateurs concerne donc les pneus.
– 3) a priori ce sont donc des particules non-métalliques. Or ce sont ces particules là qu’ils disent eux-même être les plus dangereuses..

J’aimerais tout de même voir la source initiale et la méthode :
— est-ce que les EV sont testé comme une thermique (donc sans freinage régen.)
— est-ce que l’on compare des conduites spor… agressive ou éco ? Sur la conduite agressive, le poids du véhicule est effectivement le plus contributeur à une surémission de particules (usure des pneus++)
— quels types de pneus ? Sur la mienne, où je conduis le plus éco possible, et je pense pouvoir les garder au moins jusqu’à 50 000 km avec ce jeu de pneus là.

Enfin, comme ils le disent : pour les émissions d’échappement, ils prennent les données constructeurs (donc largement sous évalués).

Dans l’ensemble, si les émissions globales sont divisées par 2, mais qu’ensuite on rajoute — soyons gentils — les 8 % max observés, on est toujours à 40 % de particules en moins. Et pas de CO2 ou très peu. Ni de CO. Ni de NOx. Ne de fluides en tout genre.

Bref, j’aimerais juste voir sur les pneus (à combien de kilomètres sont changés les pneus d’une EV par rapport à ceux d’une voiture thermique, moins lourde), mais l’impact des EV me semble tout de même très largement positif sur les particules fines (en plus des émissions sur le CO2 bien-entendu).


— (permalink)

L’armée de l’air cherche une bombe perdue par un avion de chasse entre la Gironde et les Landes - Le Parisien

samedi 25 septembre 2021 à 12:08

Meanwhile, des nouvelles de l'armée de l'air.


— (permalink)

Note : PEBSAW

vendredi 24 septembre 2021 à 15:51

PEBCAK : Problem Exists Between Chair And Keyboard
Littéralement : « Le problème se situe entre la chaise et le clavier », ou, plus subtile : « Il s’agit d’un problème de l’interface chaise-clavier. »

Du coup je propose dans ce cas des chauffards, ceci :
PEBSAW : Problem Exists Between Seat And Wheel
Littéralement : « Le problème se situe entre le siège et le volant », ou « défaillance de l’interface siège-volant »

Quelques exemples d’anomalies courantes :
– défaillance de l’OCR sur la signalétique (numérique ou RGB), entraînant un delta-V dangereux
– allumage intempestif de la sous interface GSM
– mise en veille inopinée par catalyse éthanolique (code C2H5OH)
– monopolisation des ressources asphaltée
– non-respect de la priorisation des autres thread


— (permalink)

Université de Paris sur Twitter : "Bonne nouvelle ! La suite Microsoft Office est gratuite pour tous les étudiants ! Quels sont les applications mises à disposition ? Comment installer la suite Microsoft Office ?On vous explique tout 👉🏻 https://t.co/0eGGcj0iKM… https://t.co/UwiT99uGor"

vendredi 24 septembre 2021 à 15:24

Ça fait toujours plaisir de voir une université publique, financée par nos impôts, partager des logiciels libres :-)
Ou pas, en fait, car faut bien payer les cocktails et autre soirées privées de la direction, donc ça sera publicité gratuite pour Microsoft.

Pas ici. Donc voici une suite bureautique gratuite pour tous, pour jours, qui qui en prime vous emmerdera nettement moins : https://fr.libreoffice.org/

Ainsi qu’un client e-mail (idem) : https://www.thunderbird.net/fr/


— (permalink)

Eye of the Tiger - Survivor (Lullaby Version) The Piano Guys - YouTube

vendredi 24 septembre 2021 à 15:13

— (permalink)

Note : pour l’UI et l’UX : arrêtez de demander, faites !

jeudi 23 septembre 2021 à 18:36

Ça y est, Hyundai vient de mettre à jour son appli Android.

C’est toujours aussi inutile (à part envoyer une adresse au GPS ou gérer la charge à distance), mais au moins c’est joli. Il faut maintenant la même chose sur le système d’infodivertissement de la bagnole (qui tourne toujours avec une interface basée sur Android 4 et qui est horrible à utiliser et moche).

~

Par contre : constamment des popup « voulez-vous mettre à jour ? », « êtes vous-sûr ? », « c’est fait ! Ok/annuler »… Stop. Arrêtez.

Mettez-vous à la place de l’utilisateur moyen : quel utilisateur sain d’esprit va dire « ah non, ne met pas à jour, j’aime avoir des informations obsolètes ! » ?

Personne ne fait ça ! Bien-sûr qu’on veut que l’application affiche les informations à jour de la voiture !
On n’en a rien à faire de voir le pourcentage de batterie que la voiture avait hier soir, ou son kilométrage de ce matin.

Quand j’ouvre mon application, je veux que ça affiche immédiatement l’état actuel de la voiture : kilométrage, carburant restant, position, état du verrouillage… Je t’ai donné mon mot de passe / code pin, voilà, affiche les infos.
Tu te démerdes : mon téléphone, ainsi que la voiture sont connectés 24/7 au réseau. Il faut que ça soit synchronisé 24/7 aussi. C’est le principe d’une application comme celle là.
Toutes les données devraient déjà être dans l’application quand je l’ouvre. C’est ce que fait mon client e-mail. C’est ce que fait Messenger. C’est ce que fait l’appli de la météo. C’est ce que fait l’appli des SMS.

Aucune application ne s’ouvre en posant comme question « voulez-vous mettre à jour vos messages ? vos SMS ? vos e-mails ? la météo ? ».

Au pire, tu mets une option dans les paramètres « mettre à jour en arrière plan : oui / non », pour ceux qui ont du data limité. Mais sinon, tout ça doit être à jour immédiatement (et afficher un message « synchro impossible, dernière synchro le 23/09 à 23h59 » le cas échéant).

~

Ensuite, les gros applat de blanc ou de noir, c’est joli, mais entourez les boutons où vous voulez qu’on clique. Quand je vois un aplat avec un texte et une icône, je clique où ? sur le texte ? sur l’icône ?

Par ailleurs : n’ayez pas peur de mettre la même action à plusieurs endroits, si cette action est pertinente dans plusieurs sections.

L’option « charge programmée » (pour une EV / PHEV) est pertinence dans la section « état du véhicule » et dans la section « gestion à distance ». Mettez là au deux endroits, c’est pas interdit.

Dans l’application « Youtube », par exemple, le bouton pour s’abonner à une chaîne est présente partout : sur la vidéo, sur la page de la chaîne, dans les suggestions… C’est ce qu’il faut.
Sur un navigateur, l’option pour partager une URL se trouve dans le menu de l’onglet, mais aussi quand on clic sur la page. C’est ce qu’il faut.

~

Inversement, quand des options sont indisponibles et le seront toujours, ne les affichez pas !

Dans vos véhicules électriques, on peut gérer la climatisation et le chauffage de la voiture à distance (pratique le matin pour dégivrer par avance). Dans la PHEV, ce n’est pas possible (le chauffage n’est pas électrique mais utilise le moteur thermique — gros manque sur cette voiture).

Dans ce cas, l’option ne devrait même pas être affichée dans l’appli. On ne veut pas la voir !
Sinon l’utilisateur va aller chercher partout où activer ça, en vain.


— (permalink)

Chronologie des médias et exclusivité : Disney menace de sauter la case « salle »

jeudi 23 septembre 2021 à 11:59

Le lobbie de la culture : Pour les films qui sortent au ciné, on va mettre une chronologie pour que tout le monde soit content !
Les cinéma : trop bien !
Les producteurs : j’aime pas.
Les producteurs : on va faire une plateforme et se passer des cinémas !
Les lobbies et les cinémas : https://i.kym-cdn.com/photos/images/original/001/431/201/40f.png

C’est ce qui arrive quand on a un système des années 1960 en place en 2021.

La chronologie des médias c’est cinéma → DVD → télévision.

Sauf qu’aujourd’hui, les cinémas sont vides parce que c’est cher, ça pue et y a le Covid ; plus personne ne veut de DVD car c’est chiant et fragile et y a des spots qui disent t’es considéré comme un criminel ; et plus personne ne regarde de films à la télé car y a trop de pubs et pourquoi se faire chier avec des horaires quand les plateformes de streaming proposent toute à la demande et sans pub ?

Bref :
Quand on est inventif, on adapte le marché à la demande.
Quand on est un vautour à moitié mort, on fait passer des lois pour interdire l’inventivité.


— (permalink)

Ivre, il écrit une fonction qui pèse 100 Mo pour savoir si un nombre est pair | Les Joies du Code - Humour de développeurs : gifs, memes, blagues

mercredi 22 septembre 2021 à 20:18

O_o


— (permalink)

QR Code - Groland - CANAL+ - YouTube

mercredi 22 septembre 2021 à 20:10

Comment sont fait les QR-Code ?


— (permalink)

Yoann Gini sur Twitter : "60% des modèles d’iPhones créées depuis le tout premier iPhone sont supportés par iOS 15 fraîchement sorti.Et il y en a encore pour parler d’obsolescences programmée ?!… https://t.co/HTmqmDp2uf"

mercredi 22 septembre 2021 à 19:02

iOS 15 est supporté jusqu’à iPhones 6S sorti en 2015.
Bon, certaines fonctions ne sont pas dispo sur le matos anciens, mais c’est quand-même pas mal.

Je vous le dis franchement : je songe plus ou moins sérieusement à passer sur iPhone (à terme, pas maintenant).

Pourquoi ?

Parce que les surcouches constructeur chez Android, je ne veux pas car c’est globalement de la merde (ça élimine 80 % des modèles)
Parce que les smartphones de plus de 5,5", je n’en veux plus, c’est beaucoup trop grand (ça élimine 95 % de ce qui reste)
Parce que Google et ses bloatwares c’est quand-même relativement chiant.
Parce que Android ressemble de plus en plus à iOS de toute façon.

Parce que Google a transformé Android en une bouse tout sauf intelligente. Un exemple ? on est en 2021 et Google Play est toujours incapable de télécharger les applications en arrière plan pendant qu’une autre s’installe. Même sous Windows on peut faire ça !

Les seuls problèmes que je vois :
— pas d’autre navigateur que Safari (et un Firefox qui utilise un Webkit bridé, c’est un Safari)
— pas de carte SD
— besoin d’iTunes pour envoyer sa musique dessus
— cher (peut-être pas cher pour ce que c’est, mais ça reste une montagne de fric qui me ferait mal à mettre dans un putain de téléphone).

Après mon Android actuel, c’est soit ça, ça je me passe de téléphone, tout simplement. J’y songe de plus en plus également.


— (permalink)

Tipeee : le plaidoyer de Michael Goldman pour la liberté d’expression

mercredi 22 septembre 2021 à 12:19
Que regrettez-vous… l’émoi ou la petite phrase ?
¿…]
Ce que je voulais dire c’est que du projet le plus polémique au moins polémique, tout ce qui est sur Tipeee est légal. Et qu’à ce titre-là, on les assume tous.

Le cadre fixé sur Tipeee pour accepter les projets, c’est bien celui de la liberté d’expression.
[…]

Vous parliez de la loi française, mais elle interdit justement l’antisémitisme...

[…]

Cette phrase était dans la continuité d’une longue démonstration dans laquelle on expliquait que tout ce qui était illégal était retiré du site. Donc de fait, tout ce qui est xénophobe ou antisémite est retiré du site !

Tout l’antisémitisme qu’on peut opposer aux projets présents sur le site relève de ce que le lecteur ou celui qui regarde juge subjectivement comme tel. Cela n’a toutefois pas de valeur légale ou juridique. […]

(le souligné est de moi).
Et je plussoie ce qui est dit là.

Au final, beaucoup de buzz pour grand chose : sa maladresse aura été de parler à la une chaîne de télé-poubelle.

~

Du coup, sur un site qui refuse de prendre parti, c’est la loi qui tranche, et uniquement elle. Dans ce cas, je vois juste un site qui valorise la liberté d’expression de tous plus que la sensibilité de quelques-uns (à commencer par la leur).

Faut-il rappeler que la loi protège la dignité des personnes, mais elle n’interdit pas les atteintes à la sensibilité ?

Si quelqu’un n’aime pas les brocolis, et que je mange des brocolis devant elle, ben c’est à cette personne d’aller ailleurs, pas à moi d’arrêter de manger.

Or aujourd’hui, c’est bien le contraire qui tend à se faire :
– on interdit aux femmes d’allaiter en public (car ceux qui ont une bible dans le cul trouvent ça choquant, alors qu’eux-même ont probablement été allaités dans des endroits qu’ils n’oseraient même pas imaginer)
– on interdit les voiles parce que ça fait peur (depuis quand la peur est objective et interdite ?)
– on veut interdire le porno en ligne (on remarquera que ce sont toujours les vieux cons qui demandent ça)
– on interdit les signes musul… religieux !
– on veut interdire des albums de Tintin, Astérix ou autre car ça serait offensant (alors que ces albums datent d’une époque dont ces abrutis ont tout oublié de leur passage à l’école)
– idem pour ceux parlent de Voltaire ou Victor Hugo comme des racistes…

Et on fait passer cette censure pour de la protection, et forcément, tout ce qui en sort et qui ne relève que du goût arbitraire de chacun passe pour illégal alors que ça ne l’est pas.

Et tout ça est largement favorisé par ce que font les réseaux sociaux puritains et américains (les patrons à la con dont il parle) : Facebook qui censure des œuvres d’art pourtant classiques et connues de tous car y a un sein ou un bout de fesse, ou même si leur algo foireux détecte ça même où il n’y en a pas.

Twitter, qui bloque des comptes parce qu’il prend au premier degré les paroles d’une chanson un peu trop grossières à son goût…

Bref, tout ça va dans le mauvais sens selon moi.


— (permalink)

Who Invented Zero? | Live Science

mardi 21 septembre 2021 à 20:52

C’est d’ailleurs pour ça que les siècles sont comptés en débutant à 1 et pas à 0.
Ah et J.-C. n’est pas né en l’an 0. Mais en l’an 1.

Y a plusieurs raisons à ça, la plus simple c’est que le « 0 » était inexistant : il n’y a pas de 0 en chiffres romains !

Ensuite, aussi, parce qu’ils n’ont pas décidé de compter les années avec la naissance du Christ. Ils a bien fallu 5 siècles avant que quelqu’un se dise que ça serait pas mal de compter les années.
C’est alors qu’ils ont sorti les bouquins (ie : la Bible) et ont calculé la date de naissance ce J.-C., et sont tombés sur 525.

Ils ont donc antidaté l’année « 1 » et ont décrété que l’année courante était l’an 525. La naissance exact de J.-C. a été placée en fin d’année pour éclipser des fêtes païennes déjà existantes, et ainsi profiter d’une période déjà festive.

Donc si l’on voit quelque part, sur une pièce de monnaie ou sur un tableau qu’il est daté de l’an 200 après J.-C., alors c’est un fake : à l’époque on ne comptait pas encore les années. Et si vous trouvez une pièce d’or datée de « 20 avant J.-C. », c’est encore pire :-D.

Bref, tout ceci a aussi posé de gros problèmes pour la date des fêtes ecclésiastiques, qu’il a fallu recalculer. Sans compter les décalages Solaires/Lunaires entre l’an 1 placé rétrospectivement, et l’année 525, puis entre 525 et 1582 (date du changement de calendrier), puis entre 1582 et la date actuelle.

C’est pour ça que le calcul de la date de Pâques (qui tient compte de la Lune, le Soleil, la Terre, et du calendrier arbitraire à 7 jours, et du décalage de 1582) est bardé d’un si grand nombre de constantes.

Mais j’ai tout déchiffré (non sans mal : j’ai dû mettre un mois à tout comprendre clairement et à écrire l’article).

Via : https://sebsauvage.net/links/?oRKoBQ

~

Sur le sujet du « 0 », je vous conseille un livre : Zero, the Biography of a Dangerous Idea, de Charles Seife.

~

(Ah et contre le fait de forcer à compter en chiffre romains, surtout pas : https://www.lefigaro.fr/culture/italie-la-presse-s-insurge-contre-l-abandon-des-chiffres-romains-par-carnavalet-20210317
Les gens sont devenus trop cons, donc ils veulent au contraire simplifier tout ça au maximum, donc en tirant le niveau par le bas plutôt que tirer le monde vers le haut en enseignant ça…)


— (permalink)

PDO Fetch Modes - Treating PHP Delusions

mardi 21 septembre 2021 à 19:55

C’est vraiment génial ça :-D

(oui je découvre des choses :p)

Normalement, en PDO, un fetchAll() retourne un objet, ou, dans mon cas, un tableau. Chaque élément du tableau est lui-même un tableau contenant les colonnes de la BDD. :

$bdd->query("SELECT id, nom, prenom FROM table")->fetchAll(PDO::FETCH_ASSOC);
array(
  [0] => Array
        (
            [id] => 184e34da69fe1a6b2337be58388dd3b9
            [nom] => dupond
            [prenom] => jean
        )

  [1] => Array
        (
            [id] => 53957652a3c1f9b6790717888fea0a31
            [nom] => ofgates
            [prenom] => john
        )
)

Notez que j’ai utilisé PDO::FETCH_ASSOC qui permet d’avoir un tableau associatif "colonne => valeur". Si on ne le met pas, on aura un index de la colonne, en plus d’un assoc :

  [1] => Array
        (
            [0] => 53957652a3c1f9b6790717888fea0a31
            [id] => 53957652a3c1f9b6790717888fea0a31
            [1] => ofgates
            [nom] => ofgates
            [2] => john
            [prenom] => john
        )

Ça peut servir si l’on fait des ittérations numériques sur les index, mais dans mon cas, j’utilise toujours les noms des colonnes.

Maintenant, problème : dans le tableau de tous les résultats obtenu avec fetchAll(), on a un index : 0, 1, mis en évidence là :

  [0] => Array
        (
            …
        )

  [1] => Array
        (
           … 
        )

Moi j’ai besoin que ces 0 et 1 soient remplacés par l’ID de l’élément du tableau.
Je sais que dans ma BDD, l’ID, qui n’est autre qu’un MD5() ou un GUID, est unique.

Je peux utiliser l’option PDO::FETCH_UNIQUE :

$bdd->query("SELECT id, nom, prenom FROM table")->fetchAll(PDO::FETCH_UNIQUE);

Cela va utiliser le contenu de la première colonne ("id") comme index du tableau retourné par fetchAll() :

array(
  [184e34da69fe1a6b2337be58388dd3b9] => Array
        (
            [0] => 184e34da69fe1a6b2337be58388dd3b9
            [id] => 184e34da69fe1a6b2337be58388dd3b9
            [1] => dupond
            [nom] => dupond
            [2] => jean
            [prenom] => jean
        )

  [53957652a3c1f9b6790717888fea0a31] => Array
        (
            [0] => 53957652a3c1f9b6790717888fea0a31
            [id] => 53957652a3c1f9b6790717888fea0a31
            [1] => ofgates
            [nom] => ofgates
            [2] => john
            [prenom] => john
        )
)

Ça marche, mais ça remis les données redondantes.
Heureusement, on peut mettre les deux options :

$bdd->query("SELECT id, nom, prenom FROM table")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC);

Et là, j’ai ce que je veux :

array(
  [184e34da69fe1a6b2337be58388dd3b9] => Array
        (
            [id] => 184e34da69fe1a6b2337be58388dd3b9
            [nom] => dupond
            [prenom] => jean
        )

  [53957652a3c1f9b6790717888fea0a31] => Array
        (
            [id] => 53957652a3c1f9b6790717888fea0a31
            [nom] => ofgates
            [prenom] => john
        )
)

Attention :
— il existe un grand nombre d’options PDO. Ici, j’en ai deux qui sont compatibles entre-elles. Toutes ne le sont pas.
— FETCH_UNIQUE va faire en sorte que les éléments de l’index du tableau seront unique (c’est obligé, pour un tableau). Ici ça ne poste pas de problème car l’ID est un hash unique (je déclare cette colonne comme UNIQUE quand je construit la BDD, par exemple). Si votre "id" n’est pas unique, les derniers écraseront les premiers.
— FETCH_UNIQUE utilise la première colonne demandé dans la requête. Ici, c’est mon "id". Si j’avais voulu utiliser "nom", j’aurais dû utiliser cette requête :

$bdd->query("SELECT nom, id, prenom FROM table")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC);

Ici, la première colonne est "nom", et "id" vient en second, suivi de "prenom".

Bien-sûr, si l’utilise le « * », on peut faire ça :

$bdd->query("SELECT nom, * FROM table")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC);

Pour forcer d’avoir "nom" en premier, même si ce n’est pas la colonne en première dans la liste des colonnes de la BDD.

J’arrête là pour les exemples, ça me suffit.
Je vous laisse voir les différents modes. Le "FETCH_KEY_PAIR" peut-être utile parfois aussi.


— (permalink)

En fait, l’odeur du propriétaire d’un chat ne rassure pas ce dernier en cas d’absence, au contraire - GuruMeditation

lundi 20 septembre 2021 à 20:15
Les chats anxieux ne sont pas réconfortés par l’odeur de leur humain absent. Cela leur rappelle simplement leur absence.

Ah…

~

Mon chat est très attaché à moi (du moins je crois, n’étant que son esclave :p) :
— elle me suit comme mon ombre
— est toujours sur mes genoux
— quand je rentre, elle m’attend à la porte (elle reconnaît le bruit de la voiture) et monte immédiatement sur mes épaules (façon Pikachu :D)

… et elle ignore totalement toutes les autres personnes. Perso je peux la ramasser et la porter et lui faire ce que je veux. N’importe qui d’autre fait ça, y compris la famille et des personnes qu’elle connaît, elle ne veut SURTOUT pas.

De fois je ne sais pas trop si elle me considère comme sa maman ou bien comme son propre chaton.

Je ne sais pas du tout ce qu’elle fait quand je ne suis pas là. Elle a juste une peluche qu’elle traîne parfois dans la maison : je la retrouve à des endroits loufoques de temps en temps, alors que quand je suis là, elle n’y touche pas du tout.

Je devrais peut-être installer une caméra pour voir :-D

(après ça reste un chat normal : elle joue avec les laser, les ficelles, boit de l’eau avec sa patte dans un verre (surtout pas sa gamelle), chasse les mouches, adore les cartons ainsi que le poisson…
… et c’est parfois une teigne qui sait avoir le dernier mot : https://lehollandaisvolant.net/img/1e/cats.jpg )


— (permalink)

Vers un chargeur unique pour tous les utilisateurs de smartphones d'ici 2024

lundi 20 septembre 2021 à 17:30

C’est drôle parce que ça devait déjà être le cas depuis 10 ans.

Et c’était le cas avec les constructeurs sauf un seul : Apple.
Et aujourd’hui, bien qu’on assiste à l’évolution du micro-USB vers l’USB-C, c’est là aussi une prise unique adoptée par tous les constructeurs de téléphones… sauf un seul : Apple.

Notons qu’ici ça devrait concerner les téléphones, mais aussi les appareils annexes : casques sans fil, souris, manettes de JV… Globalement ça devrait bien se passer : l’USB-C est en bonne voie et à part Apple, y a trop de trouble-fête.


— (permalink)

Note perso pour le SQL, inner joint, left join

dimanche 19 septembre 2021 à 18:57

Bon, un truc probablement trivial en SQL, mais je dois la noter.

Pour mon lecteur RSS.
J’ai une table avec les flux, et une table avec les posts.
Dans celle avec les posts, j’ai l’id du flux. Logique.

Quand je liste les flux, je veux un compte des nombres de posts non lus qui lui sont associés :

flux1 : 10
flux2 : 5
flux3 : 0
flux4 : 0

Donc ça :

SELECT flux.id, COUNT(posts.id) AS unread FROM flux LEFT JOIN posts ON (posts.flux_id = flux.id) WHERE posts.unread=TRUE GROUP BY flux.id 

Sauf que ça, ça me retourne :

flux1 : 10
flux2 : 5

Comment faire pour avoir ceux où le nombre de posts est 0 ?
Il suffit de mettre le WHERE dans le la parenthèse :

SELECT flux.id, COUNT(posts.id) AS unread FROM flux LEFT JOIN posts ON (posts.flux_id = flux.id AND posts.unread=TRUE) GROUP BY flux.id 

Et là :

flux1 : 10
flux2 : 5
flux3 : 0
flux4 : 0

*faceplam*
J’ai mis beaucoup trop de temps à chercher ça

Du coup la requête complète, avec un ordre selon le titre du site dont j’ai le flux, et en incluant aussi (au passage), la date du dernier poste pour un flux donné :

SELECT flux.id, COUNT(posts.id) AS unread, MAX(posts.date) AS latestpost FROM flux LEFT JOIN posts ON (posts.flux_id = flux.id AND post.unread=TRUE) GROUP BY flux.id ORDER BY flux.titre

C’est là que je suis heureux de ne plus avoir de fichiers plain text serializé ;)

(Ces fichiers sérialisés sont très bon quand on a une liste de posts simple, mais ça devient vite la merde quand on a plusieurs tables dont les données sont mises en relation (les posts appartiennent à un flux, par exemple ; ou les commentaires à un article, les fichiers mp3 à un album, à un artiste…)


— (permalink)