Getlib: ramener des bibliotheques & frameworks en local en une ligne [Edité]

Certains se souviennent peut-être de goofi, pour récupérer des google fonts en local; sur la base de ce script, j'ai bricolé une version qui permettra de faire la même chose avec les bibliothèques et frameworks (notamment js) que tout un chacun utilise et dont l'appel participe aux stats de google et consorts à chaque requête sur leur serveur.

Donc, en gros, il suffit de remplacer l'appel du script dans le en ajoutant getlib.php?url= devant.

Ainsi

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

deviendra

<script src="http://monserveur/getlib.php?url=https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Le fichier est récupéré une seule fois et seule la vertsion locale sera renvoyée par la suite.

Au cas où vous voulez que le script récupère une éventuelle mise à jour, il suffit d'ajouter update dans l'url:

<script src="http://monserveur/getlib.php?update&url=https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Getlib vérifiera alors si le fichier distant a changé et le retéléchargera si c'est nécessaire.

Comme avec Goofi, seule l'IP du serveur qui héberge le script est connue du serveur distant, jamais celle du visiteur.

C'est tout! Je n'ai pas testé à fond encore et les erreurs ne sont pas gérées pour le moment, mais ça fonctionne quand même pas mal !

<?php 
# get libs from distant servers to local (& avoid unnecessary requests to servers who can log user's connections)
# ex:  
# https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
# becomes
# getlib.php?url=https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
# if you want to update local file if the distant one changes, just add "update" 
# getlib.php?update&url=https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
# author: warriordudimanche.net
# 
$lib_folder='libs/';
$check_updates=isset($_GET['update']);

if (!empty($_GET['url'])){
    if (!is_dir($lib_folder)){mkdir($lib_folder);}

    $url=strip_tags($_GET['url']);
    define('LOCAL_FILENAME',$lib_folder.basename($url));
    $ext=pathinfo(LOCAL_FILENAME)['extension'];
    //$flag='non';
    if (
        !is_file(LOCAL_FILENAME)
        ||
        ($check_updates && !isSameFile($url))

    ){
        $lib=file_get_contents($url,false,null,0,1000000);
        file_put_contents(LOCAL_FILENAME,$lib);
        $head = array_change_key_case(get_headers($url, TRUE));
        file_put_contents(LOCAL_FILENAME.'.info', $head['last-modified']);
        //$flag='oui';
    }
    if ($ext=='css'){
        $mime='text/css';
    }elseif ($ext=='js'){
        $mime='text/javascript';
    }else{
        $mime=mime_content_type(LOCAL_FILENAME);
    }

    header('Content-Type: '.$mime);
    exit(file_get_contents(LOCAL_FILENAME));
}


function isSameFile($url){
    $head = array_change_key_case(get_headers($url, TRUE));
    $local=file_get_contents(LOCAL_FILENAME.'.info');
    $distant=$head['last-modified'];
    return $distant==$local;
}

getlib.zip le dépôt

Comme toujours,
c'est aux autres de débugger
les scripts que tu commets, heu... commit...
super.
🗦

Et je vais t avouer un truc  j ai même pas honte   C est même ma marque de fabrique  une genre de  Bronco s touch .jpg

BigAscii [js]

Dans la catégorie «script à la con» voici une page qui permet de transformer un texte en gros titre ascii. J'en ai eu besoin pour que la répartition de mon code pour Bozon se voie même dans la minimap de SublimeText.

(faut dire que la classe post/get à elle seule contient 1700 lignes environ... )

En vous rendant sur la page en question, vous pouvez taper un texte et sélectionner différents paramètres. Pour l'instant, elle ne gère que les caractères alphanumériques (je n'avais besoin que de ça)...

Le script est simplissime et facilement modifiable... faites-vous plaisir et partagez vos versions

La démo | Le zip

Auto_htaccess (poil au ...) (Maj)

Autant mettre tout les futurs détracteurs (en un seul mot) à l'aise de suite, je suis pas *du tout* un ninja du htaccess... plutôt (pas le chien, hein) le genre à copier-coller directement des snippets et pis c'est marre.

 

Ceci dit, c'est pas parce qu'on ne maîtrise pas un sujet qu'il faut s'en tenir éloigné (c'est même précisément le contraire)

 

 

 

Oui, je sais, je digresse, mais bon: ceux qui me connaissent savent que je suis verbeux, pas sérieux et le simple titre de cet article leur aura permis de comprendre qu'il s'agit d'un script qui génèrera tout seul un htaccess pour verrouiller un dossier...

 

Du coup pourquoi perdre du temps qu'on peut passer à admirer trois kilos de tomates fraîches par exemple (c'est cadeau)

 

(...)

Le samedi aussi, c'est cadeau: makeRSSdate

 Même si c'est samedi vous avez bien droit à un petit cadeau (tu parles ) ...

En bricolant respawn j'ai eu besoin, encore une fois, de transformer une date normale en date qui ne génère pas une erreur de validation dans un flux RSS... 

Lassé de toujours devoir revenir la dessus, j'allais me mettre à faire une fonction pour ça quand j'ai eu l'idée d'aller d'abord demander à mon copain googol... 

J'ai donc trouvé un bout de code sur stackoverflow que j'ai ensuite functionnisé .

Comme ça peut toujours servir, je le pose là. 

A pluche.

(...)

search2feed : transformer une recherche en flux

 Des fois, on a une idée qui germe spontanément, les yeux plongés dans le vague en touillant son café, en cherchant désespérément à se sortir la tête du fondement sous le jet brûlant de la douche ou en attendant patiemment la motivation nécessaire pour se mettre à bosser...

Search2feed est de celles-là... comme je regardais mes flux pour chercher les nouveautés torrent (en matière de distro linux et de films de vacances s'entend ), je me suis rendu compte que j'en venais toujours à recourir à googol pour une recherche plus complète ou sélective...

"Si on pouvait faire un flux à partir d'une recherche, ce serait bien" que je me suis dit... "pas con" que je me suis rétorqué du tac au tac (chuis comme ça, moi ) pis ça a fait "plop" dans ma tête et j'ai ajouté : "banco".

Et voilà...

(...)

Break your xss breach bitch ! [EDIT du 30 septembre]

Tous ceux qui ont le triste privilège de relire mes snipètes vous le diront, à force de ne coder que pour mon usage personnel, je n'ai pas appris à me méfier des utilisations malhonnêtes des sites et la faille XSS est en quelque sorte devenue ma marque de fabrique (spécial wink to JérômeJ entre autres ).

Ce désolant constat posé, j'ai commencé un travail sur moi-même et m'efforce de sécuriser les choses les plus évidentes à coup de htmlentities ou hmltspecialchars ...

Toutefois, et afin de tempérer le légitime engouement pour ces fonctions, il faut bien reconnaître que parfois, on veut bien sécuriser mais on aimerait tout de même conserver le balisage html, ou alors, on aimerait bien qu'en cas de balisage (volontaire ou pas) on ne se retrouve pas avec un texte tout moche qui apparaisse AVEC les balises html pour cause d'entités...

(...)

Array2feed: produire un flux valide à partir d'un tableau

 Hier, je postais une fonction pour récupérer le contenu d'un flux dans un tableau, aujourd'hui, je propose le contraire

Array2feed permet de produire un flux valide à partir des données d'un tableau. J'ai eu l'idée de cette fonction parce qu'il y a quelques temps, JérômeJ m'avait demandé le code de mon touïteur pour voir comment faire un flux qui passe la validation (et que j'en avais bavé ma race toute une soirée avec le feed validation service )

Dans la foulée, j'ai bien entendu mis à jour la  page github correspondante...

(...)

Feed2array: obtenir un flux rss/atom sous forme de tableau

 De retour de vacances et travaillant sur Sonar'RSS pour l'optimiser et bosser les cronjobs, je me suis heurté à l'utilisation de syndexport.php, une lib au demeurant excellente mais qui me faisait une erreur sur un flux à l'encodage fait à la truelle...

Du coup, j'me suis dit comme ça: quitte à bidouiller une lib pas à moi, autant me faire ma propre fonction...

Je vous la donne elle est sur mon github 

(...)

Google vous ment, Googol vous prend pas pour un hon...MAJ

 Il y a peu, Sebsauvage parlait des liens google sur son shaarli et montrait, preuve à l'appui, ce que certains avaient déjà remarqué sans s'en soucier: google affiche une adresse mais pointe le lien vers une autre... récupérant ainsi des infos supplémentaires sur vos recherches.

Pour lutter contre ça, on peut déjà se passer de google ! Sinon, vous pouvez récupérer le fichier php que je vous propose...

Cette mise à jour apporte la recherche d'images...

(...)

Récupérer un fichier distant s'il existe

 Un petit snippet en passant, entre deux mises à jour hagardes de SnippetVamp: une fonction qui permet de récupérer un fichier distant et en même temps de tester son existence...

Quand on veut vérifier l'existence d'un fichier distant, is_file gloubiboulgate gentiment et si on s'en file_get_contente, il renvoie une erreur en cas de fichiers absent... (si si, relisez cette phrase plusieurs fois, vous devriez parvenir à la saisir au bout d'une dizaine de tentatives)

La fonctions ci-dessous permet de récupérer un fichier distant mais ne génère pas d'erreur en cas d'échec: elle retourne simplement false...

(...)

Snippetvamp beta 1.0

Grâce aux nombreux retours des copains - yosko, Cornoualis, Nico27, Bajazet,  Knah-Tsaeb et l'indispensable Jerrywham (qui me fait un retour très pro avec conseils sur chaque version que je commit, big thanx !)  - Snippetvamp est devenu assez stable pour pouvoir être utilisé de façon plus sérieuse.


Depuis le dernier post, beaucoup de choses ont été ajoutées ou améliorées (ceux celui qui suivent suit mon fil touït sont est déjà au courant, mais bon):

  • un bookmarklet permet de typiak les snippets de la page où l'on se trouve: un clic et snippetvamp parse la page à la recherche des <pre>, <code> ou snippets embeded en iframe, les récupère et préremplit le formulaire. Si vous n'êtes pas loggué, une case mot de passe est ajoutée automatiquement afin d'éviter de multiplier les chargements et les clics.
  • une option d'alerte de mise à jour (débrayable via la config).
  • des options de backup, import et restauration de fichier dat...
  • corrections de bugs et optimisations diverses
  • meilleure gestion du cache

J'ai encore du vin sur la manche pain sur la planche pour améliorer certaines choses, notamment:

  • une liste déroulante pour sélectionner les thèmes highlight.js
  • un filtrage des tags en mode public (éviter d'afficher des tags de snippets privés)
  • sans doute de futurs bugs qui attendent leur heure, bien planqués, les lâches...

Le zip est sur le dépôt github 

 

A + les copains 

 

Ajouter http à une URL si nécessaire

 Tiens, au passage je vous poste un chtit snippet pour ajouter http à une adresse si aucun protocole n'est spécifié.

 

J'ai eu besoin de faire ça pour SnippetVamp, donc j'en ai fait une fonction pour ceux qui pourraient en avoir l'utilité...

(Bon c'est juste une regex avec un négative look behind (old version) )

Voir plus bas pour l'embed

(...)

All#OLDciné: ton API on s'en fout !

 Quand on veut faire une appli php qui récupère les infos et affiches d'un film, jusqu'à très récemment, on avait deux choix: IMDb et allocine...

Si on voulait les synopsis en français, il ne restait qu'allocine... ça tombait bien, remarque, parce qu'ils avaient une API non officielle qui faisait bien son taf, même s'il fallait ruser pour pécho le code ID de l'appli Android pour l'utiliser... 

 

Mais voilà, Allociné a décidé de se réserver l'accès à cette API et du coup, on se retrouve dans la mouise... (mes récriminations sur le fil touït ici et )

Et si on ne dépendait plus de leur API ?

(...)

SnippetVamp: parce qu'yen a marre de chercher ses snippets...

Voilà une difficulté que tout codeur doit sans doute rencontrer: regrouper tous ses bouts de codes, fonctions etc au sein d'un seul espace, facile d'accès. 

Comme tout le monde, c'est un problème que j'ai maintes fois tenté de surmonter via des solutions plus ou moins efficaces, du dossier plein de fichiers textes aux applis tierces...

J'en suis venu à me bricoler, comme d'habitude, des applis exprès: j'ai commencé par des versions en VB il y a fortfort longtemps... puis en Delphi... 

Puis j'en ai fait une destinée à être utilisable en ligne et synchronisée localement (via ftpbox par exemple)... Ainsi, on a toujours ses codes sous la main...

Comme les copains m'ont fait l'honneur de s'y intéresser, voici une revue de la version (über) alpha...

(...)

Fil RSS des articles