Modern PHP Cheat Sheet - Front Line PHP
Bon, fô qu'jeul lis... un jour
Bon, fô qu'jeul lis... un jour
Pas bête du tout ça: quand on met en place un cache en PHP, on crée le contenu s'il n'existe pas ou on le lit puis le renvoie s'il existe.
Grâce à un .htaccess bien placé, on peut servir directement le fichier s'il existe et on renvoie vers la page php censée le générer s'il n'existe pas (erreur 404)
Du coup, on n'exécute du PHP que si le contenu n'existe pas.
Pas con du tout !
Merci SebSauvage (et le Duke ) pour cette page dans laquelle je découvre que PHP propose
levenshtein()
en natif pour calculer la proximité entre deux chaînes...
En ce qui concerne la réducton phonétique, c'est pas forcément simple, en effet (surtout pour le français ) !
Pour un jeu de rôles que j'avais fait quand j'étais jeune (au tout début du jurassique), j'avais fait un petit algo de «traduction» dans la langue du jeu et ça passait par une réduction phonétique puis par une substitution de voyelles apparentées ou de consonnes apparentées, ce qui donnait toujours quelque-chose de prononçable...
Haaa, c'est intéressant ça ! Merci !
<?php echo date(DateTime::RFC2822); ?>
Le confinement nouveau est arrivé et avec lui plein de nouvelles raisons de se poser des questions exitentielles (non, j'ai pas fait de faute) (GAG)
Pour y répondre et vous guider dans vos choix, plutôt que de vous fier aux oracles, haruspices et autres politiciens qui vous noieront sous des mensonges, des billevesées voire même des promesses électorales, pourquoi ne pas utiliser la bonne vieille 8 ball magique ?
Du coup, je vous en propose une. Sous forme d'API. Oui.
Tu poses ta question dans ta tête, tu vas sur https://api.warriordudimanche.net/8ball et tu as ta réponse. Par contre, elle est parfois un peu franche...
Aujourd'hui, je vous passe un petit bout de code que j'ai fait autant par défi personnel qu'avec l'objectif de l'autonomie pédagogique
Une petit appli qui génère une grille de mots-mélés à partir du titre et de la liste de mots: on peut l'utiliser via la GUI minimale...
... ou en «API» avec les arguments GET suivants:
ça donne ça :
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...
On pourrait croire que c'est simple, hein... ben j'ai pas trouvé, personnellement.
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...)
«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.
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 teste et... ça marche.
SUPER INTUITIF MERCI
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é:
function moncul(string $str)
pour éviter de vérifier les paramètres puisqu'un type erroné provoquera une erreurfunction moncul(string $str): int
car en cas de retour d'un autre type, il y aura erreur. (pour les fonctions ne retournant rien, :void
)private int $mon_cul;
pour qu'une erreur se déclenche en cas d'initialisation d'un type erroné.final class monCul(){
pour éviter tout héritage, même fortuit. ... pour éviter les confusions false/0 etc
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.
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 )
[$var1, $var2, $var3, $var4] = [$var4, $var3, $var2, $var1];
$intersection = array_intersect(...$bigArray);
au lieu de $intersection = array_intersect($bigArray[0], $bigArray[1], $bigArray[2]); // Etc.
Ç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;
}
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.
Pour manipuler un tableau, penser à utiliser array_map plutôt que foreach si c'est possible:
array_map('trim',$tableau)
array_map(array($instance, 'methode'), $tableau)
Au menu du jour une API qui permet de memiser une image du ouebe en une ligne...
Ben, je viens de vous le dire ! vous m'écoutez ou pas quand je parle ?!
Il s'agit de pouvoir fabriquer un meme en un minimum de temps: une image glanée sur le net et pouf, c'est parti.
Les arguments GET sont les suivants:
Comme pour fancytation et les autres API:
Vous pouvez générer un bookmarklet destiné à utiliser l'API en utilisant l'argument $_GET bookmarklet
ce qui donnera :
Ainsi, il suffit d'utiliser la fonction «afficher l'image» de votre navigateur puis de cliquer sur le bookmarklet pour entrer le texte du meme et récupérer l'image générée.
Allez dans le pet du saigneur
MMMouaip... Oui, c'est minimaliste, mais ce n'est pas un CMS: il ne permet pas du tout de gérer le contenu, il se contente de mettre en HTML des fichiers txt écrits en MD et collés sur le serveur via FTP...
En gros, c'est un simple script php qui liste le contenu d'un dossier à l'aide d'un glob
, parse le contenu à la recherche de balises normailsées (author etc) et génère le HTML à l'aide de la lib parsedown.
Alors, ce n'est pas pour autant que c'est nul, hein: c'est simple et uber minimaliste, en effet... C'est bien que ça existe.
Mais ce n'est pas un CMS, on ne peut RIEN gérer sans accès FTP, on ne peut pas utiliser de plugins, de configuration etc...
Comme je le disais dans le billet précédent à propos de SVGBox, l'idée était bonne mais le poids était rédhibitoire.
Donc, j'ai récupéré le pack d'icônes de fontAwesome et j'ai bidouillé une API qui permette de faire la même chose que SVGBox.net, à savoir obtenir une icône svg dans la couleur que l'on souhaite.
api.warriordudimanche.net/iconeleon/?i=headphones donne:
et si on ajoute le paramètre c on peut changer la couleur: api.warriordudimanche.net/iconeleon/?i=headphones&c=red
La couleur peut-être au format HTML, un nom de couleur css ou un rgba quelconque...
api.warriordudimanche.net/iconeleon/?i=headphones&c=rgba(255,0,255,0.5)
Toute icône modifiée est sauvegardée en cache pour éviter une surcharge du serveur
Je vous ai ajouté un frontend minimaliste pour rechercher les icones dans les 1615 du pack.
Du coup, si ça peut être utile, n'hésitez pas à vous servir voire à proposer un frontend plus... comment dire ? abouti ?
Aujourd'hui, c'est cadeau, c'est pour moi: une api permettant de créer une image à partir d'un texte, genre pour pimper un peu une citation (d'où le nom fancytation... gag)
En passant, j'ai mis à jour ma page sur les caractères unicode...
Il y a plus de rubriques et j'ai ajouté un moteur de recherche qui accepte plusieurs mots séparés par des espaces.
par exemple: http://unicode.warriordudimanche.net/?search=aubergine