How to save a base64 image from javascript with php | Our Code World

Bon, on ne m'enlèvera pas de la tête que c'est pas super intuitif, ni super simple, mais bon, je n'ai trouvé que ça qui fonctionne...

Mon souci

  1. Je crée une image côté navigateur avec canvas
  2. je veux l'envoyer à mon serveur pour stockage

On pourrait croire que c'est simple, hein... ben j'ai pas trouvé, personnellement.

J'ai essayé

  1. de transformer le canvas en blob et de l'envoyer via un formdata
  2. de transformer le canvas en blob et de l'envoyer comme un objet simple
  3. de transformer le canvas en DataURL et de l'envoyer via un formdata
  4. de transformer le canvas en DataURL et de l'envoyer comme un objet simple

Mais à chaque fois, j'ai pas été foutu de récupérer les données côté PHP (bon, je me doute qu'il doit y avoir un pacson de trucs que j'ignore encore, hein...)

Ensuite, j'ai pensé

«et si je passais les données au format base64, je devrais pouvoir les récupérer facilement...» car je pratique couramment un optimisme ridicule au sujet duquel il m'arrive encore de sombrer dans la stupéfaction à grand fracas...

Dont acte: je recommence à farfouiller avec des fetch, des posts pis tout mais sans succès: les données décodées font une image invalide.

en désespoir de cause

Je décide de procéder moins élégamment: je copie les données vers un formulaire caché que je poste en target blank pour pas perdre ma page de travail... Oui, je sais, c'est sale, c'est moche, c'est pas secure, j'en ai conscience, c'est pas la peine de m'enfoncer, j'ai déjà assez honte comme ça...

Je reçois bien de la base 64, je décode... Et l'image n'est toujours pas valide. Puis une recherche m'apprend qu'il faut virer l'en-tête base64 côté serveur avant de décoder pour que ça fonctionne...

Je teste et... ça marche.

SUPER INTUITIF MERCI

ComposeKey - Community Help Wiki

Oui, j'avais posté il y a super longtemps un billet sur des astuces pour les accents espagnols sous ubuntu/int ( https://www.warriordudimanche.net/article691/59b41f3ca6ec8 ) puis je me suis rendu compte que la méthode la plus simple (mais VRAIMENT plus simple) est de trouver une disposition de clavier adéquate...

Pour les accents espagnols, le meilleur clavier azerty est le clavier Occitan:

  • il est AZERTY
  • il est compatible avec les claviers AZERTY les plus répandus
  • les caractères espagnols sont accessibles en pressant simplement la touche ATL en même temps: ALT+a = á etc.

Je n'utilise plus jamais le clavier français.

Advent of Code 2020 - 10 enseignements et bonnes pratiques en PHP

Un excellent article, très simple d'accès. Résumé pour mémoire mais je vous conseille d'aller lire le tout tant c'est clair et bien documenté:

1.Tout typer

... pour pouvoir compter sur le type des données

  • Les paramètres des fonctions function moncul(string $str) pour éviter de vérifier les paramètres puisqu'un type erroné provoquera une erreur
  • Les valeurs de retour des fonctions function moncul(string $str): int car en cas de retour d'un autre type, il y aura erreur. (pour les fonctions ne retournant rien, :void )
  • Les propriétés de classe : private int $mon_cul; pour qu'une erreur se déclenche en cas d'initialisation d'un type erroné.

2.Protéger ses classes par défaut

  • ajouter «final» à la déclaration de classe final class monCul(){ pour éviter tout héritage, même fortuit.
  • laisser ses propriétés en private par défaut
  • laisser ses méthodes en private par défaut jusqu'à ce qu'on ait besoin de les appeler de l'extérieur

3.Utiliser les comparaisons strictes

... pour éviter les confusions false/0 etc

4.Se passer des «if»

En utilisant l'opérateur ternaire condition ? valeur retournée si true : valeur retournée si false;

Pourquoi ? Parce que c'est plus court mais aussi parce qu'on peut placer la condition directement dans une assignation ou à la place d'un paramètre: $count += ($value === CONTROL_VALUE) ? 1 : 0;

Par contre, je trouve qu'on y perd BEAUCOUP en lisibilité et en organisation.

5.La fonction « sscanf »

Pour analyser une chaîne selon un format (et à la place d'un explode plus lourd). C'est l'inverse de printf(). ( https://www.php.net/manual/fr/function.sscanf.php )

6.L'inversion de valeurs en une ligne

et avec autant de valeurs qu'on veut

[$var1, $var2, $var3, $var4] = [$var4, $var3, $var2, $var1];

7. L’opérateur de décomposition « … »

$intersection = array_intersect(...$bigArray); au lieu de $intersection = array_intersect($bigArray[0], $bigArray[1], $bigArray[2]); // Etc.

8. Toujours ajouter un compteur de boucle pour sortir des while

Ça m'a rappelé un épisode de BigBang Theory dans lequel Sheldon est prisonnier d'une boucle dans son algorithme HowToMakeANewFriend... (c'est Howard qui l'en sort en implémentant un compteur comme condition de sortie).

$block++;
    if ($block > 1000) {
        break;
    }

9.Utiliser les fonctions liées aux tableaux

Je plussoie vigoureusement ce point particulier

Avant de se lancer dans un traitement de tableau en créant une fonction ou une méthode exprès, relisez la doc de toutes les fonctions commençant par Array_ ... histoire de ne pas réinventer la roue.

joebarteam6p43.jpg

10.Manipuler les tableaux avec les callbacks et les Collections

Pour manipuler un tableau, penser à utiliser array_map plutôt que foreach si c'est possible:

  • utilisation simple array_map('trim',$tableau)
  • fonction anonyme ```array_map(function($k){ code de traitement },$tableau);
  • avec une méthode array_map(array($instance, 'methode'), $tableau)

GitHub - hoffstadt/DearPyGui: Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies

ooh ! Une lib Python pour faire **facilement** des GUI **jolies** !

Genre

from dearpygui import core, simple

def save_callback(sender, data):
    print("Save Clicked")

with simple.window("Example Window"):
    core.add_text("Hello world")
    core.add_button("Save", callback=save_callback)
    core.add_input_text("string")
    core.add_slider_float("float")

core.start_dearpygui()

donne

alt

J'ai pas creusé mais ça me semble intéressant tant je trouve rebutant cet aspect sous python...


Cas d'école II (le retour)

Dans un billet précédent j'évoquais les remontées de chiffres parfois fantaisistes dans l'éducation nationale en narrant la façon dont les choses se passaient dans mon collège...

Ben vendredi on a eu du nouveau: des cas avérés de COVID chez les enseignants...

Tout a commencé mardi...

...avec une de mes collègues qui, commençant à souffrir de symptômes, a fait le test et a été déclarée positive au covid19. Elle a immédiatement alerté le collège et les personnes pouvant être cas contact. Chaque personne alertée a elle aussi fait le test, bien entendu. Après un jour, c'étaient trois collègues qui étaient positifs...

C'est le moment qu'a choisi notre chef pour nous envoyer un email dans lequel il nous rappelait - avec force mots soulignés pour bien nous montrer les notions importantes à retenir pour nous pauvres cons - qu'il fallait absolument produire un arrêt de travail ou une attestation de la CPAM sous peine de se voir notifé une constatation d'absence de service fait... Puis, tranquilou détendu du gland, il nous rappelle à la «stricte application des règles sanitaires en particulier dans la salle des professeurs (souligné)», sous-entendant par là que si on est positif, c'est de notre faute et pas de la sienne.

Pour résumer

Non seulement il ne prend aucune nouvelle des collègues ni ne se fend d'un mot gentil, d'une parole de soutien, d'un zeste d'humanité mais en plus il nous culpabilise pour se dédouaner de sa gestion pour le moins chaotique du protocole...

Rappelons que depuis l'année dernière, nous ne disposons plus de nos classes pour nous isoler et que nous en sommes réduits à nous «reposer» en salle des profs, tous ensemble... et boire un café s'avère difficile quand on conserve son masque.

Or, ceux qui nous font ce reproche - le chef, la gestionnaire et son mari, correspondant TICE de l'établissement et prof de techno - disposent de leur bureau individuel ou salle de cours et d'un logement de fonction à 100 mètres de leur bureau... Facile dans ces conditions d'aller s'isoler pour retirer son masque, se gratter les noix, se curer le pif ou, plus probablement, se pochtronner en pleine journée au point de ne plus rien pouvoir gérer après...

atta atta, c'est pas fini !

Sur ce, vendredi arrive et avec lui l'annonce qu'une autre personne est positive: nous sommes à 4 positifs sur 4 testés. C'est ce qu'on appelle un cluster.

Le chef choisit d'arriver en fin de récréation de 10h30 pour faire un point et il est colère le gars (comme tous les alcoolos)... Là, il minimise la situation, dit qu'il attend les ordres de sa hiérarchie pour savoir comment communiquer l'information aux élèves.

Oui, tu as bien lu...

...vendredi, trois jours après la première alerte de la collègue, aucune info n'avait été donnée aux familles. Pire, d'après le chef, on lui a FORMELLEMENT INTERDIT DE COMMUNIQUER AVANT AVIS DU RECTORAT (je mets en majuscules parce que je ne peux pas dodeliner comme l'orateur). (oui, c'est un gars qui dodeline beaucoup)

dodeline.gif

Il a ajouté qu'il nous interdisait d'en parler aux élèves. N'y tenant plus, je suis intervenu en disant qu'on ne pouvait pas m'ordonner de mentir aux élèves et que ces derniers commençaient à poser des questions. Là il a tenté de me décocher un regard noir - ne parvenant qu'à me montrer des globes d'un jaune pisseux injectés de sang - en me disant qu'il fallait répondre qu'une information serait faite dans la journée. Soutenant son regard, j'ai répété cette phrase en la mettant entre guillemets puis, sans cesser de le regarder, j'ai ajouté «c'est noté» attendant qu'il baisse les yeux. Comme il manque de courage, c'est ce qu'il a fait.

La seule mesure annoncée consiste en une «désinfection complète de l'établissement par un robot UV» à propos duquel il croit bon d'ajouter - sans doute pour renforcer sa crédibilité - qu'il «ressemble à R2D2». (sic)

RIEN D'AUTRE. Ni demande de tests du personnel, ni fermeture rien. Et surtout: silence !

Ce qu'on peut raisonnablement en penser

C'est que l'état, et ses bons petits soldats - tiennent absolument à maîtriser toute l'information autour des infections, quitte :

  • à laisser les mômes aller dans des classes avec des enseignants potentiellement infectés,
  • à minimiser les chiffes de contamination des enseignants (deux des positifs vivent ensemble donc «ils ne comptent que pour un» dixit le chef)
  • à cacher le nombre de positifs chez les élèves (ils ont martelé qu'il n'y avait AUCUN CAS CHEZ LES ELEVES alors que dans les collèges alentours, les chefs communiquent en toute transparence à ce propos: à croire que mon collège est le seul à n'avoir aucun cas),
  • à faire pression sur les enseignants - avec un ton menaçant et en insistant sur le droit ou pas de communiquer,
  • à faire pression sur au moins une élève pour qu'elle ne dise à personne qu'elle se faisait tester sous peine «d'être punie» (témoignages indirects mais assez crédibles compte tenu des élèves en question sur des propos qui auraient été tenus par le chef)

Encore une fois

cette situation ne concerne que mon collège et ne saurait -j'espère- être représentatif de l'ensemble des établissements de France... Mais j'en ai tellement plein le joufflu, je suis tellement sous pression dans ce bahut de merde que j'avais besoin d'en parler.

C'est chose faite.

EDIT :

Je viens de vérifier mes emails, deux autres personnes sont déclarées positives depuis hier et deux autres sont en attente de test.

Voilà.

TheForeignAgent (@TheForeignAgent@social.taker.fr) - Mastodon

Si vous aimez les couteaux et que vous voulez faire un geste sympa il y a moyen d'aider un pote mastodon dans une mauvaise passe: il est obligé de revendre sa collection de couteaux parce que l'activité de travail du cuir dans laquelle il avait décidé de se reconvertir n'a pas fonctionné suffisamment pour qu'il en vive...

Vous pouvez aussi jeter un coup d'oeil à son travail sur https://pjs-leathercraft.ogre.st/ ou https://www.instagram.com/ducuiretdeslames/?hl=fr

Comment le ministre Blanquer peut-il encore mentir sur la situation sanitaire dans les écoles ? | L’instit’humeurs | Francetv info

Ce que je vais dire ne concerne que l'établissement où je bosse car je ne dispose pas d'informations et de témoignages suffisants pour les autres établissements.

cas d'école (gag)

Dans mon bahut, aucune information ne circule à propos des cas de COVID: AUCUNE. Comme toujours, ce sont les élèves qui apprennent aux enseignants qu'untel est cas contact et qu'unetelle a chopé le COVID. Les très rares informations venant de la voie hiérarchique n'arrivent que lorsque elles ont fuité de toutes façons...

On a eu le cas de surveillants venant chercher cinq gamins de la classe sans rien expliquer: renseignement pris auprès d'eux plus tard, ils venaient exfiltrer des cas contacts dans le feutré à la demande du chef... ils semblaient indignés et je les comprends: ils avaient appris par les élèves que les parents du gamin contaminé avaient averti la direction depuis plusieurs jours. Les mômes contact sont allés au collège normalement, ont mangé à la cantine normalement toussa. Dans une classe de 28 élèves qui restent toute la journée dans une des salle les plus petites de l'établissement.

Donc, sans vouloir généraliser,

je ne tombe pas de ma chaise en lisant cet article: le gouvernement demande à ce qu'on fasse garderie pour que tout le monde aille bosser et fait pression sur les académies et rectorats qui font eux-mêmes pression sur les chefs qui obéissent sans discuter en bons fonctionnaires... si on accumule les possibilités de bidonnage de chaque niveau on aboutit aux chiffres en question.

De toutes façons

Vous êtes VRAIMENT étonnés de constater que le gouvernement ment, traffique et ne retient que les informations qui le servent en oubliant volontairement celles qui pourraient coûter la vie aux gens ?

Pour ma part, j'attends encore qu'on m'explique

  • pourquoi aller dans un restau en famille et selon un protocole sanitaire strict est plus dangereux que d'aller à la cantine ?
  • pourquoi aller à l'église est moins dangereux qu'aller au cinéma ?
  • pourquoi s'entasser dans les salles de classe ou les transports en commun est moins dangereux que de s'entasser dans les supermarchés ?
  • par quelle magie s'entasser dans les stations de ski sans avoir le droit de skier est moins dangereux que d'aller répartir le même nombre de gens toute la journée sur un domaine de 300km de pistes ?
  • par quelle logique des gens en station, couverts de la tête aux pieds, masqués, à l'extérieur et à distance se contamineraient davantage que des mômes enfermés dans la même salle pendant 6 heures ?
  • comment l'école peut-elle à la fois être l'endroit le moins dangereux et nécessiter qu'on autorise les élèves à ne pas s'y rendre les deux derniers jours avant les vacances pour éviter la contamination ?
  • comment un président qui est allé lui-même au théâtre en disant qu'il faut continuer à vivre normalement au début d'une pandémie qu'il savait grave peut après coup refuser que les gens fassent autre chose de leur vie que d'aller bosser et de consommer ?
  • quel niveau de mauvaise foi faut-il, alors que les chiffres de contamination ne baissent pas et qu'il ne reste plus que l'école, les supermarchés et les transports en commun d'ouverts, pour conclure que ces derniers ne sont en rien des foyers privilégiés de contamination ?

Parce que dans les classes, il n'y a pas de distanciation possible, les masques sont parfois peu voire pas changés, il faut surveiller pour que TOUS les gamins se désinfectent les mains, ils se passent des affaires malgré l'interdiction, passent leurs récréations à se papouiller, jouent avec leur masque etc.

Et je les comprends, ces mômes: c'est lourd, très contraignant, ils ne peuvent pas bouger de leur salle, n'ont le droit de rien faire à part bosser et se geler dans les salles qu'on est obligé d'aérer toutes les deux heures par 0 degré tout en constatant l'ineptie quotidienne des décisions qu'on leur impose et la mauvaise foi des dirigeants qui nous gouvernent...

Et il faudrait accepter tout ça sans en ricaner, sans cynisme, sans se rebeller, sans en avoir marre, sans déprimer ?

via https://sebsauvage.net/links/?GavLMg

Confinement : l'attestation officielle de déplacement n'était pas obligatoire, selon le Conseil d'Etat

Le 10 décembre, le ministre de l'Intérieur, Gérald Darmanin, indiquait que les forces de l'ordre avaient réalisé 2.924.775 contrôles depuis le début du confinement. Dont combien ayant entraîné une verbalisation faute d'attestation "officielle", et finalement injustifiée ?

Baltringues...

Via Seb sur Mastodon

Quartier Libre – Arnaud Montebourg : « La trahison des élites françaises » - YouTube

Pas encore vu la vidéo mais la phrase de Montebourg ("Je pense qu'Emmanuel Macron ne passera pas le premier tour des présidentielles, et ça vaut mieux parce que sinon il serait battu au second tour par Mme Le Pen" ) est assez proche de ce que je pense également... en particulier parce que, la prochaine fois, ceux qui ont voté contre lepen ne se déplaceront plus au second tour...

via https://shaarli.mydjey.eu/?86nCmg

Descript | Create podcasts, videos, and transcripts

Très étonnant et apparemment très puissant: un outil d'édition vidéo qui permet de transcrire en texte l'audio des vidéos... ensuite on peut éditer la vidéo en éditant LE TEXTE: genre supprimer les hésitations (voire tout un passage) ou même MODIFIER LE TEXTE EN CHANGEANT DES MOTS... les changements sont reportés dans la vidéo et sa bande son...

Donc, on peut faire dire ce qu'on veut à une vidéo... non ?! Genre prendre la vidéo de quelqu'un sur youtube, la «descripter» puis changer facilement ce que dit le narrateur...

Let the fun begin !

popcorn.jpeg

Via https://valentin.tomasso.fr/liens/

A Calendar in Three Lines of CSS

Intéressant et astucieux

.calendar {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
}
.first-day {
  grid-column-start: 3;
}

<div class="calendar-wrapper">
  <h1>Decemeber</h1>
  <ul class="calendar">
    <li class="weekday">Sun</li>
    <li class="weekday">Mon</li>
    <li class="weekday">Tue</li>
    <li class="weekday">Wed</li>
    <li class="weekday">Thu</li>
    <li class="weekday">Fri</li>
    <li class="weekday">Sat</li>

    <li class="first-day">1</li>
    <li>2</li>
    <li>3</li>
    <!-- ... -->
    <li>29</li>
    <li>30</li>
    <li>31</li>
  </ul>
</div>

Gadget: Test de la mini imprimante thermique agfa Realpix Pocket P

Mais qu'est-ce que c'est encore que ce truc ?

Il s'agit d'une petite imprimante du type de celles qui impriment vos tickets de caisse... mais mieux.

Mettons-nous d'accord de suite: ce n'est pas une imprimante de qualité, ce n'est pas une imprimante photo, ce n'est même pas une imprimante couleur.

Il s'agit d'un gadget destiné à s'amuser en imprimant des notes, des bannières, des listes, des petites images à glisser partout ou coller dans son journal.

Avantages:

  1. elle est toute petite et toute mimi: elle tient dans la paume de la main.
  2. elle est dotée d'une batterie qui permet de la trimballer absolument partout.
  3. elle est thermique: l'impression se fait sur un papier spécial mais il n'y a pas de cartouche d'encre.
  4. l'impression est très rapide
  5. elle est sans fil et la connexion se fait par bluetooth
  6. le papier n'est pas très cher et il existe en autocollant (let the fun begin !)
  7. elle est pas très chère: 39€ chez Intermarché, c'est pas un investissement.

Inconvénients

  1. l'impression photo est assez pourrave: c'est du dégradé de gris avec une résolution médiocre
  2. l'impression n'est contrôlée que par l'appli et via smartphone: je n'ai pas cherché, mais je n'ai pas réussi à la faire reconnaître par linux ou windaube (c'est peut-être possible mais ça relèvea du hack à mon avis)

L'appli : PP Go

L'application compatible est pour le moins ... minimaliste. On peut y imprimer un texte, une image, une photo prise à la volée ou même un gribouillage dessiné dans la page dédiée.

Screenshot 20201225-160849.jpg Screenshot 20201225-160925.jpg Screenshot 20201225-160946.jpg

Ça donne quoi ?

Une fois connectée, l'impression est rapide et, honnêtement, pas si mauvaise que ça pour un gadget à 39€...

IMG 20201225 161038.jpg

IMG 20201225 161149.jpg

IMG 20201225 161753.jpg

On peut même s'amuser à imprimer des bannières de la longueur que l'on veut car l'impression se fait sur des rouleaux

IMG 20201225 161810.jpg

J'en colle en particulier dans mon bullet journal pour illustrer certains moments ou certaines notes.

J'ai même prévu de me faire quelques versions papier de cette image

IMG 1608738131438.png

Donc

IMG 20201225 171000.jpg

39€ avec 4 rouleaux de papier

How to Favicon in 2021: Six files that fit most needs — Martian Chronicles, Evil Martians’ team blog

Entre les navigateurs «legacy» qui veulent au max du 32x32, les apple qui demandent du 180x180 (c'est quoi ce format perso de merde à la apple), les webapps android qui réclament du 192x192 et du 512x512, les windows Tile, les Safari pinned (sans compter les trucs expérimentaux) et le fait que l'ensemble doit être déclinable en dark-mode ou bright-mode, ça en fait des icônes...

Mais qu est-ce que c est que ce bordel  les gars   .jpg

Genre, on se retrouve à charger plus lourd en favicon qu'en contenu pertinent et utile... tout ça pour afficher une icône dans l'onglet du navigateur ! Une trentaine d'icône pour être sûr que l'image elle sera zoulie partout... (on se croirait revenu au temps de la rétrocompatibilité IE6-8). Heureusement que l'auteur nous annonce que les favicons sont chargées en background par le navigateur et n'affectent pas l'expérience utilisateur...

Ha  ben ça va alors   .jpg

On est en 2020 les mecs

Genre, vous pourriez utiliser globalement le svg pour avoir un rendu joli quelle que soit la taille et c'est marre. Alors je sais, on a - globalement - des connexions de fifous qui s'accommodent de cette surcharge, mais:

  1. justement, pas tous: beaucoup n'ont pas des connexions de privilégiés; la campagne, les zones blanches, les pays en voie de développement etc... C'est pas cool de leur imposer des surcharges.
  2. ça me rappelle les développeurs qui tablent sur le perfectionnement technologique des machines pour pas s'emmerder à optimiser leurs bouzins en se disant que ça tourne sur leur bécane à 4000 boules.
  3. c'est du loose-loose: les devs s'emmerdent avec des brouettées d'icônes aux formats les plus strange qui soient et les utilisateurs se font bouffer le forfait 2€ free juste pour charger l'icône du site... Le jeu n'en vaut pas la chandelle: il y a sans doute de meilleurs emplois du temps de dev et de la bande passante.

Heureusement

...l'auteur propose de limiter à 5 le nombre d'icônes (avec un fichier manifest)... c'est déjà ça.

C est bon  j ai fini mon coup de gueule  vous pouvez y aller  (1).jpg

Via https://sebsauvage.net/links/?7JTrSQ

Mise à jour API Iconeleon

Je viens de mettre à jour Iconeleon:

  1. le téléchargement est désormais un zip contenant les icônes et plus simplement le fichier du script

  2. j'ai changé la maquette (un peu) : dark mode

  3. j'ai ajouté les packs de svg de Typicons, Iconic, Zocial et Elusive

  4. petit bug: certaines parties de quelques icônes semblent rester noires si on change leur couleur, je me pencherai dessus

Fil RSS des articles de cette catégorie