39 private links
Une liste de 63 (!) bonnes pratiques en PHP pour améliorer les performances de votre script !
Par exemple, utiliser @ devant l'appel d'une fonction (afin de masquer les erreurs) est TRÈS lent !
En PHP, il y a plusieurs moyens pour lire et écrire dans un fichier (fopen). De même pour en compresser son contenu (gzcompress).
Seulement, vous pouvez vous simplifier la vie en utilisant UNE seule instruction pour stocker du contenu sous forme compressée :
file_put_contents("compress.zlib://$filename", $content);
Ensuite, pour lire ce fichier compressé, UNE instruction également :
$content = file_get_contents("compress.zlib://$filename");
"compress.zlib://" est en fait ce qu'on appelle un wrapper ; il en existe plusieurs autres en PHP. Celui-ci permet de dire que le fichier sera compressé grâce à la bibliothèque Zlib.
ATTENTION : avec file_get_contents(), si la lecture échoue, il renvoie le booléen "false" ! Or, il est indispensable de bien tester le retour à l'aide de l'égalité de type (=== ou !==), car si le fichier contient, par exemple, 0 et que vous testez avec l'égalité simple (== ou !=), alors il considérera que c'est faux, donc que la lecture a échoué ! C'est normal : 0 == false (même valeur) mais 0 !== false (pas le même type) !
Donc il faut tester comme suit : if ($content !== false) { //OK, do something... }
21 snippets PHP bien pratiques.
En PHP, si vous devez vérifier si une chaîne contient certains mots, le mieux est d'utiliser la fonction strpos() comme suit :
if (strpos($string, 'mot1') !== false || strpos($string, 'mot2') !== false) { ... }
Plutôt que les expressions rationnelles, avec preg_match() :
if (preg_match("/(mot1|mot2)/i", $string)) { ... }
Il se trouve que strpos est BEAUCOUP plus rapide que preg_match pour ce genre de tâches simples ! Gardez plutôt les expressions régulières pour des traitements plus "difficiles" ;)
Si vous devez parser de l'HTML, je vous recommande vivement cette lib PHP ultra simple d'utilisation !
Trouvez tous les liens sur une page web ? Ça tient en trois lignes !
$html = file_get_html('http://www.site.com/');
foreach($html->find('a') as $element)
echo $element->href . '<br>';
Avec ZeroBin, un ancien "paste" n'est supprimé que si quelqu'un y accède après la date d'expiration. Donc si personne n'y est allé depuis son expiration, il restera en place et prendra de l'espace disque pour rien. C'est normal : ZeroBin ne fait pas de purge automatique.
Il n'y avait aucune procédure automatisée afin de supprimer les anciens éléments... du moins jusqu'à maintenant !
Ce script fait donc une purge des anciens pastes et leurs discussions associées : il suffit de mettre le fichier "purge.php" à la racine de ZeroBin et de le lancer ! Rien n'est à configurer ;)
Au passage, il affiche (sobrement) le nombre et une liste des pastes trouvés (dont ceux expirés et ceux sans expiration).
A titre d'exemple, sur mon ZeroBin (http://paste.vuilleumier.tv) avant que je ne purge, plus de la moitié des pastes étaient expirés !
Voilà ! Le script d'extraction des mails sous forme de flux RSS est en ligne sur Github ;)
Normalement, les problèmes d'encodage devraient être réglés, le flux est valide (bien que pas dénué d'avertissements) et s'affiche correctement sous KrISS Feed ;)
L'occasion de découvrir ce formidable outil par la même occasion !
Un PoC sans prétention permettant de mettre vos 20 derniers mails dans un flux RSS ;)
C'est simple : vous configurez vos informations à l'intérieur (nom d'utilisateur, mot de passe, serveur, port, etc) et le script vous génère un flux RSS correspondant aux 20 derniers messages !
Les instructions sont à l'intérieur. C'est une version alpha, car il reste BEAUCOUP de choses à faire (paramètres pour filtrer les messages, afficher la version HTML du mail si disponible, améliorer l'affichage, etc)...
Demain, je le mets sur Github, promis ;)
Edit : discussion : http://paste.vuilleumier.tv/?1d3fbd650e469885#XWVvrvh3xQ61SC0oCBVwVtcOL2Z1oWAa2Ix08xnXxZE=
Je suis en train de voir pour mettre ma modeste lib de Wake on LAN en PHP sur Github. Cf. http://links.kevinvuilleumier.net/?D1IcHA
Keep in touch !
Hum. Il va falloir que j'essaie à l'occasion !
Un CMS de moins de 500 Ko pour mettre en place un forum. Intéressant :-)
Très simple mais ce n'est pas la seule solution existante pour avoir des avatars dynamiques ! On peut également citer VizHash ;-)
Du reste, WordPress inclut déjà le support des Gravatars, Monstre ID, etc.
Idée : hébergeur gratuit proposant des services KISS ? - Liens en vrac - Liens en vrac de sebsauvage
Oh très très bonne idée : un script "universel" qu'on lance et qui se charge de télécharger, dézipper, chmoder, etc les fichiers du service KISS choisi :)
Evidemment, il reste l'étape de la mise en place de l'hébergement par Mme Michu, mais ce serait une bonne étape ;)
Avec auto-notification des erreurs aux auteurs ? Liens vers différents tutos, etc.
Tiens je verrais bien le nom "UbiKISS" pour le coup (contraction d'ubiquité et KISS) ou OmniInstaller ? OmniLauncher ?
Il y a à matière pour faire ;)
Depuis que Google Reader a annoncé sa fermeture, les scripts KISS de lecture de flux foisonnent... L'auto hébergement vient plus que jamais sur le devant de la scène !
Le problème majeur est que Mme Michu ne sait pas comment s'y prendre et ne veut pas entendre parler de FTP, SQLite, PHP... Elle veut que ça fonctionne !
Dans ce cas, ne serait-il pas possible de mettre en place un hébergeur qui propose lors de l'inscription des scripts KISS préinstallés et configurés pour utiliser le même login partout ? En PHP c'est simple à faire et il ne suffit que de modifier légèrement les scripts pour les rendre adaptés. Tellement que tout pourrait être fait seulement en PHP : pas besoin d'un serveur dédié ou de CGI !
Par exemple, Blogotext est proposé pour créer un blog, Shaarli pour du partage de liens, etc. L'utilisateur pourrait bien entendu exporter SES données et aucune publicité serait présente sur les services hébergés ! Le tout saupoudré de tutos sur l'installation et la prise en main de ces services et d'articles sur l'auto hébergement !
Bonne ou mauvaise idée ?
J'ai créé ce script PHP from scratch (donc code à revoir) dans le but de pouvoir allumer mes PC à distance. C'est simple : placer deux fichiers et c'est tout (pas de bases de données ni de bibliothèques externes). L'interface bien que minimaliste demande bien entendu à l'utilisateur d'être authentifié !
Dans mon cas, j'ai placé le script sur mon NAS et je peux ainsi allumer mes machines depuis n'importe où dans le monde !
Attention : les paquets magiques sont envoyés en couche 2 (adresses MAC uniquement), ainsi il est nécessaire que le script soit placé sur un serveur étant sur le même réseau local que les machines à démarrer !
(Je n'allais pas créer un GitHub pour un malheureux script)
PS : Merci à Michael V. pour le code de la partie WOL !
A tester...
Voilà, les soucis de traduction sont corrigés. Tout devrait être bon maintenant.
Comment créer ses propres Shortcodes sous Wordpress. Très simple et extrêmement puissant !
Un shortcode est une balise comme ceci : [shortcode] (oui, une sorte de BB Code).
Vous pouvez donc en programmer vous-même ;)
(Peut-être un jour dans Blogotext ?)
Comme vous pouvez le constater sur mon blog, j'ai mis en place un widget indiquant les 5 derniers liens en vrac que j'ai posté sur Shaarli. Ceci grâce à un petit snippet sous Wordpress.
Comment faire ? C'est simple.
Dans le fichier "functions.php" du dossier du thème, ajoutez n'importe où le code suivant :
include_once(ABSPATH.WPINC.'/rss.php');
function kvu_displayShaarli($atts) {
extract(shortcode_atts(array(
"link" => 'http://',
"num" => '1',
), $atts));
if ($link[strlen($link)-1] == '/') {
$link = $link.'?do=rss&permalinks';
} else {
$link = $link.'/?do=rss&permalinks';
}
return wp_rss($link, $num);
}
add_shortcode('shaarli', 'kvu_displayShaarli');
Vous n'avez plus qu'à mettre en place un widget "texte" et y placer le shortcode [shaarli link="" num=""] où "link" est l'adresse du Shaarli (pas le flux RSS/ATOM) et "num" le nombre d'entrées à afficher. C'est tout. Par exemple : [shaarli link="http://links.kevinvuilleumier.net/" num="5"].
EDIT : Attention : la fonction wp_rss() utilise un cache qui a pour conséquence un affichage du flux RSS qui n'est pas en temps réel ! De plus, c'est une fonction dépréciée, mais qui fonctionne très bien sous Wordpress 3.5.1 (dernière version actuelle).
EDIT 2 : Correction d'une erreur dans le script.
Voilà l'adresse vers la traduction française de ZeroBin 0.18 faites par mes soins (donc non officielle mais fonctionnelle à l'identique).
Je n'ai modifié que les différentes chaînes de texte (dans index.php, zerobin.js et page.html), ainsi que le lisez-moi. C'est tout.
La page du projet original (en anglais) : http://sebsauvage.net/wiki/doku.php?id=php:zerobin
Exemple de la traduction française (avec légère personnalisation de la phrase de présentation et du titre) : http://paste.vuilleumier.tv/
EDIT : la discussion concernant la traduction française est ici (fautes, suggestions) : http://paste.vuilleumier.tv/?7ea5fafd644a8570#42/+ePLFKT+I2DcCodnakCUwzCZIbMNlp7MZXrrduCg=