7e vague, droit à l'IVG et kermesse - La semaine de Naïm - YouTube
« Avant, les manifs, c'était pour que la société progresse... Maintenant, c'est pour éviter qu'elle régresse.» Naïm
« Avant, les manifs, c'était pour que la société progresse... Maintenant, c'est pour éviter qu'elle régresse.» Naïm
Il y a quelques jours, lassé de reprendre à zéro à chaque fois que je dois faire un truc avec GD sur PHP, je me suis dit que je pouvais faire une classe pour ça. Comme, exceptionnellement, j'avais un peu moins de deux heures de tranquillité, je m'y suis collé.
Au bout du compte, une fois la classe codée, il faut bien la tester...😬

C'est le problème des codeurs : ils ont du mal à arrêter de coder 🤩. Du coup, me voilà en route pour un script exploitant pictools.php... et ce qui aurait du prendre deux heures a pris plusieurs jours de papa codeur (petit rappel: 1 h de papa codeur = 7,2 heures de codeur normal en zone de guerre, au cours actuel 💣)
Bref, j'ai donc pondu une «api» avec un frontend permettant d'appliquer des transformations à une image à partir de son URL.

Donc, on fournit l'URL de l'image puis on ajoute des actions les unes à la suite des autres. Certaines n'ont pas besoin de paramètres (emboss, sepia etc) et d'autres si (contrast, resize etc)
Quand on clique sur un bouton action, on ajoute cette action à la liste avec, le cas échéant, l'input qui va bien pour les paramètres avec un placeholder de rappel.
Ainsi, on peut resize l'image à une taille précise ou à un pourcentage de la taille normale: tous les paramètres de coordonnées et de taille peuvent être précisés en pixels ou en pourcentages.
De plus, si on veut redimensionner l'image à une largeur en conservant le ratio automatiquement, il suffit de mettre -1 à la place de la hauteur: le script se démerdera tout seul.
La config ci-dessus donne le résultat ci-dessous:


Donc, scriptopic permet de retoucher une image automatiquement. OK.👍
Mais cette image est utilisable directement depuis son URL de génération: si on colle l'URL précisée dans le cadre résultat, ça fonctionne. Avec un peu d'habitude, on peut le faire en direct (genre pour une image d'en-tête...). Comme les images retouchées sont
sauvegardées avec un hash de l'url de requête, si on l'appelle à nouveau, elle ne sera plus générée mais simplement renvoyée (visible soulagement du serveur
)
Comme des fois on a la flemme de faire une balise image, Scriptopic vous la donne directement: un double-clic et c'est copié prêt à coller...
Un truc rigolo, c'est que, comme pour Stamp, le front de scriptopic génère un bookmarklet en temps réel (c'est la deuxième ligne du cadre résultat): une fois satisfait de votre script, le bookmarklet généré permet de l'appliquer à l'image en cours: vous ouvrez l'image dans un onglet et clic-clac merci kodak.
Si vous voulez simplement envoyer l'image en cours pour travailler dessus, le bookmarklet de base est dispo en footer.
Histoire d'ajouter encore une feature, vous pouvez stocker des scripts, à la main, dans le dossier ... scripts/ . Vous utiliserez le nom du fichier dans l'url avec ?script=[nomdefichier]
Ainsi, en sauvant le json de l'exemple (cadre «Script au format JSON») dans un fichier scripts/sepia.json vous pouvez ensuite l'appeler avec&script=sepia
Vous pouvez vous faire une bibliothèque de scripts pour tout et les appeler directement au lieu de vous taper du json dans l'URL 
Tout est expliqué dans l'aide : https://api.warriordudimanche.net/scriptopic/?help

Ben parce que pour sauver sur le serveur, il faudrait un compte admin, donc un espace sécurisé et tout le toutim... et là, on parle pas du même projet 
Le bouzin est testable là: https://api.warriordudimanche.net/scriptopic/
Et téléchargeable ici: https://api.warriordudimanche.net/scriptopic/?download
Je n'ai pas nettoyé le code, vu que je subis un harcèlement constant à la maison (lol), mais je le ferais, promis ! Le tout est en beta à l'arrache en licence amusez-vous avec.

$picture=new pictool();// on peut mettre un array contenant les valeurs initiales des attributs : ['format'=>'png'] par exemple)
$picture->load('www.moncul.sur/la_commode.jpeg');
$picture->contrast(20);
$picture->sepia();
$picture->save("fichier.jpeg");
$picture->display();
Le script matrix qui alterne sketch et gaussian à plusieurs reprises puis colorise en vert
Pas flippant du tout.
Gros gros +1
La liberté d'expression ce n'est pas avoir le droit de gueuler partout - et en particulier chez les autres - impunément et sans conséquences.
De plus, la liberté d'expression de gens qui n'attendent qu'une occasion de limiter drastiquement celle des autres, on s'en torche.
Liberté d'expression = responsabilité d'expression et != d'obligation de publication et d'écoute.
Allez bien bouffer vos morts les fachos.
Dans la catégorie débranchement de cerveau, je vous propose une appli vigoureusement inutile mais totalement défoulatoire: Stamp.
Cette appli/api vous donne la possibilité d'ajouter un tampon sur une image en un minimum d'opérations. Ainsi, vous pourrez passer :
de ça
à ça
En partant de là : https://api.warriordudimanche.net/stamp/ vous remplissez l'URL et le texte, vous validez et hop.

Comme toujours, le bookmarklet vous permet d'envoyer l'URL courante à Stamp: ouvrez l'image dans un nouvel onglet et cliquez sur le bookmarklet.
Bande de coquins, vous avez sans doute remarqué un autre bookmarklet à côté du premier... c'est un bookmarklet dynamique: grâce à lui vous pouvez créer des bookmarklets avec un texte spécifique.
Par exemple, si vous envisagez d'utiliser souvent le tampon «dans ton cul», pourquoi le retaper à chaque fois ? Glissez ce lien dans la barre de favoris et let's the fun begins !
Fait à l'arrache, interrompu toutes les minutes mais avec amour, dévotion à l'absurdité du monde et mon ordi.
Tiens, je ne savais pas que la bibliothèque GD avait une fonction imagecreatefromstring() qui permet de créer une ressource image à partir d'une chaîne.
C'est très utile dans le cas où on récupère une image via une URL sur un site et qu'on veut lui appliquer un traitement.
En effet, quand on veut faire ça «normalement», on a recours à imagecreatefrom[FORMAT] (imagecreratefromPng() par exemple), ce qui oblige à connaître l'extension ou au moins le type mime de l'image... et des fois, ça couille : l'URL ne contient pas l'extension ou alors il y a des paramètres GET dedans, bref, ça fait chmir.
Avant, je partais vers la récupération de l'extension du fichier pour appeler la fonction adaptée... c'est chiant, sale et pas parfait comme solution (bugs de nom et besoin de télécharger localement l'image sous forme de fichier)
$downloaded_pic=file_get_contents($url);
file_put_contents($local_path_pic,$downloaded_pic);
$ext=pathinfo($url)['extension'];
$fun=$ext=='jpg'?'jpeg':$ext;
$function_name='imagecreatefrom'.$fun;
$img = $function_name($local_path_pic);
Avec imagecreatefromstring(), ça passe tout seul, c'est plus propre, plus lisible et surtout, pas besoin du type de l'image ou d'un fichier local...
if ($downloaded_pic=file_get_contents($url)){
$image=imagecreatefromstring($downloaded_pic);
}else{
exit("Erreur de téléchargement de l'image");
}
On peut même récupérer les dimensions de l'image avec un équivalent de getimagesize() : getimagesizefromstring() !
Hop: le jeu de la semaine est supra land... Je crois que je vais tester !
Dalle a été involontairement drôle :

LOL
(je mets ça ici parce que pas moyen de poster sur masto aujourdhui... #pasglop)
Parfois un pouet sur Mastodon pour partager une URL et une idée concorde avec un truc que t'avais déjà fait : https://framapiaf.org/@bronco/108423992250980547
Ainsi, Gilles me fait passer une adresse de métamoteur de recherche d'ebooks ( https://recherche-ebook.fr/ ) tout en notant que ce serait bien de faire une version qui soit plus propre... (pas de JS, de redirections, de pubs etc..)

Il se trouve que je m'étais fait un script dont le but était justement de charger des urls, de les parser, de récupérer et d'organiser du contenu.

Le pack est un array du type:
$packs['<profil>']=[
[
'url'=>'http://urltoparse.com/',
'pattern'=>'REGEX PATTERN with (?<name>..) capture',
'template'=>'<li> HTML Template where data is inserted to : use %name% '
],
[
'url'=>'http://urltoparse.com/',
'pattern'=>'REGEX PATTERN with (?<name>..) capture',
'template'=>'<li> HTML Template where data is inserted to : use %name% '
],
];
Dans le template de chaque url,
%variable% pour placer les captures regex : (?<title>[^"]*?) ➜ %title%%ROOT% pour accéder à l'url du pack%DOMAIN% pour accéder au domaine de cette url (pour compléter une URL relative par exemple)
J'ai ajouté la possibilité de créer un dossier au nom du pack contenant un header et un footer pour qu'on puisse faire un site à partir d'un profil.
packstemplates/<profil>/
J'ai ensuite créé un pack contenant les principaux sites d'epubs, cherché les patterns regex...
Et voilà: metapub cherche sur six sites en même temps: http://slurp.warriordudimanche.net/?p=ebook

)
Enjoy !
Un fil sur parcoursup, son algo et ses dégâts trouvé sur Masto ( https://mamot.fr/@talou/108412157847358211 )
Ma grande est en plein dedans. Déjà, je suis incapable de piger le merdier du bouzin: des options choisies par stratégie plus que par goût à l'inscription sur parcoursup, c'est mon épouse qui s'est pris la tête là-dessus et heureusement... J'en étais incapable.
Ma môme est une bonne, voire très bonne élève, félicitée à tous les conseils de classe, soucieuse de réussir, avec un avis extrêmement favorable. Ben elle n'a rien pour le moment: liste d'attente partout. Et elle stresse énormément depuis le début du lycée: elle est même passée par une phase de dépression pour laquelle elle prend encore des AD.
Dans son lycée, ils sont extrêmement nombreux dans son cas, dépressifs chroniques, anxieux, angoissés...
Je me souviens de mes années de lycée puis de la fac... C'étaient de belles années malgré tout. Quels souvenirs leur restera-t-il ?
OMAGAD ! Le code du playground est minuscule !
Merci pour cette découverte 
J'ai ajouté les icônes Lucide ( https://lucide.dev ) à iconeleon. comme pour les autres packs d'icône, on peut en changer la couleur via le select qui va bien. Bisou !
Un wiki en une page html qui contient aussi l'éditeur permettant de le modifier (ajout/edition de pages, markdown etc) pour moins de 60ko.
Bim !
Oh mon dieu, tu veux dire une épidémie de maladie pandémique mondiale planétaire à l'échelle du globe entier de notre planète complète ?!
Pitin, ça fout les jetons.
Une lecture à faire avant de se lancer dans une formation React. ( https://www.youtube.com/watch?v=SMgQlTSoXf0&list=PLjwdMgw5TTLWom67YfZuha-1iYzIirwJR )
Quelques notes:
Créer une impression de hasard (dans les formes, couleurs ou tout ce qui peut être stylé en css) en utilisant :nth-of-*() pour changer des variables css.
En utilisant assez de variables et en utilisant des nombres premiers pour nth-of, on donne l'illusion de la randomisation. Intéressant.
Plusieurs applications dans l'article.
Un bookmarklet permettant de ne rafraîchir que le css ? Lea Verou nous en fournit un...
Merci @Timo pour ce résumé qui explique bien des déboires personnels avec le Drag&drop.
Je me résume ça ici:
Yo la #teamvieux fan des BD marvel de notre enfance ? (nova, strange,spécial strange) ?

https://www.extreme-down.io/ebooks/comics/93857-spgcial-strange-115-tomes.html
https://www.extreme-down.io/ebooks/comics/93856-nova-235-tomes.html
https://www.extreme-down.io/ebooks/comics/93848-strange-353-tomes.html
https://www.extreme-down.io/ebooks/comics/93862-marvel-les-grandes-sagas-8-tomes.html
c'est #cadeau
En dehors du réflexe lui-même, je trouve très didactique la méthode d'observation employée.
Pour ma part, je fais partie des «cintrés»...

...et je dirai qu'ils s'agit moins d'un réflexe que d'une envie inexpliquée de tourner la tête: on ressent un vif besoin, un peu comme une démangaison te donne envie de gratter, mais ce n'est pas incoercible. Ce qui est troublant, c'est que l'envie démarre dès la pose du cintre au bon endroit et s'arrête dès qu'on le retire.
Bon, je ne vous cache pas que c’est long niveau processing et je ne pense pas que ce sera vraiment utilisable pour de l’application web grand public. Mais c’est rigolo.