Toute personne qui possède un blog sous WordPress a normalement installé une extension permettant de filtrer les nombreux commentaires indésirables, notons par exemple l’excellent Akismet qui se démarque des autres par sa transparence et sa facilité d’emploi.

Le problème étant que les spams sont notés comme tels et apparaissent quand même dans le tableau de bord, obligeant l’administrateur du site à faire le ménage de temps en temps.

Sans intervention manuelle, l’extension Akismet supprime normalement les spams après un mois, ce délai est malheureusement trop long et impossible à modifier.

C’est pour cette raison que j’ai créé une extension pour WordPress qui supprime automatiquement chaque jour à minuit tous les commentaires marqués comme indésirables. Il faut bien entendu avoir une confiance aveugle en Akismet, ou son équivalent.

Pour l’utiliser c’est très simple, tu télécharges le fichier ZIP « auto-delete-spam.zip » en faisant un clic droit, puis « Enregistrer sous… »

A l’intérieur de ce ZIP se trouve un fichier nommé « auto-delete-spam.php », tu l’envoies via FTP dans le répertoire « wp-content\plugins » de ton site, puis tu actives l’extension depuis ton interface d’administration.

Le spam sera enfin à la place qu’il mérite, celle où personne ne s’occupe de lui.

Voici basiquement comment la Bête fonctionne sous le capot, tu peux t’arrêter de lire ici si tu désires rester simple utilisateur.

Donc, un « hook » est effectué lors de l’activation de l’extension, il appelle la fonction « ads_activate ».

1
register_activation_hook(__FILE__, 'ads_activate');

Cette fonction « ads_activate » planifie chaque jour à minuit l’appel à un évènement appelé « ads_event ».

1
2
3
function ads_activate() {
    wp_schedule_event(strtotime('midnight'), 'daily', 'ads_event');
}

Si tu veux que la purge s’effectue agressivement chaque heure au lieu de chaque jour, tu remplaces la ligne de code par la suivante.

1
wp_schedule_event(time(), 'hourly', 'ads_event');

N’oublie pas de désactiver l’extension avant de faire cette manipulation, puis de la réactiver ensuite.

L’évènement « ads_event » appelle juste la fonction « auto_delete_spam ».

1
add_action('ads_event', 'auto_delete_spam');

Cette fonction « auto_delete_spam » exécute finalement une simple requête SQL de purge, en utilisant l’objet global de connexion à la base de données « $wpdb ».

1
2
3
4
function auto_delete_spam() {
    global $wpdb;
    $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_approved = 'spam'");
}

Basique, efficace.

,    

La guerre des navigateurs fait rage depuis des années sur Internet, la course à celui qui dominera le World Wide Web est loin d’être terminée. Celles et ceux qui ont le choix opteront peut-être pour le célèbre Chrome de Google.

Si tel est ton cas c’est ton jour de chance, car voici en exclusivité l’extension « Même Pas Mal! » pour Chrome.

Cette extension t’ajoute bêtement un gros icône sur l’onglet d’accueil, et te permet d’accéder à ton blog favori rapidement et en un seul clic.

L’installation est facile et rapide. Premièrement, tu cliques sur l’image ci-dessus. Un avertissement apparaîtra alors en bas de la fenêtre, tu acceptes avec « Continuer » parce que tu me fais confiance. Une dernière fenêtre de confirmation devrait alors s’ouvrir.

Tu choisis « Installer » et le tour est joué.

Si tu n’en veux plus, tu fais un clic droit sur l’icône et tu choisis « Supprimer de Chrome ».

Simple, efficace.

,    

Il y a deux manières de vendre un journal. La première consiste à engager des professionnels payés pour écrire des articles soignés, la seconde est plus basique puisqu’elle ne nécessite qu’une manchette alarmiste et trompeuse.

C’est cette deuxième solution qui a été choisie hier par un quotidien suisse romand bien connu.

Sois rassuré, la gratuité sur le Net n’est pas finie.

Internet, alias « le Net », est souvent confondu avec le Web, les deux termes sont volontairement mélangés sur la manchette incriminée.

Internet est un vaste réseau qui véhicule des informations numériques d’un point à un autre. Plusieurs applications utilisent ce moyen de transport, on peut noter pêle-mêle certains exemples notables tels que le World Wide Web, les courriels, les jeux en ligne, les téléchargements peer-to-peer, les discussions vocales, les webcams publiques, la discussion instantanée, le Cloud Computing et des centaines d’autres plus discrets, chacun ayant son propre protocole de communication.

Alors oui, effectivement, sous la pression de très riches industriels certains sites Web de partages de fichiers tels que Megaupload ont malheureusement été censurés par le gouvernement américain.

Mais la gratuité sur le Net n’est pas finie.

Le Net a toujours été payant, du simple fait de l’abonnement obligatoire pour s’y connecter. Hormis cela, lire et envoyer des courriels sera toujours gratuit, consulter les sites web sera toujours gratuit (sauf les sites de cul), télécharger tes séries américaines sur des réseaux peer-to-peer sera toujours gratuit, discuter avec ta tantine américaine sur Skype sera toujours gratuit, jouer à certains jeux en ligne sera toujours gratuit, passer ta journée devant la webcam du Taj Mahal sera toujours gratuit, flirter sur MSN sera toujours gratuit, télécharger de la musique sur Jamendo sera toujours gratuit, et venir fébrilement chaque jour sur memepasmal.ch sera toujours gratuit.

Non vraiment, la gratuité sur le Net n’est pas finie.

,    

Des plaies s’abattent régulièrement sur notre monde, le plongeant dans un chaos qui éclipse malheureusement un grand nombre de lumières.

Suivant ce postulat, nous pouvons aisément affirmer qu’Internet Explorer est au World Wide Web ce que la Peste Noire est à l’humanité.

En tant que développeur PHP je suis sans cesse confronté au non-respect des standards qui incombent à cette ersatz de navigateur, il est en effet rare d’avoir une feuille de style qui ne contient pas de ligne dédiée à contourner un problème dû implicitement à Internet Explorer.

1
<!--[if IE 7]>

En plus de cela s’ajoutent plusieurs effets étranges relevés sur des opérations basiques, on peut citer l’exemple de la très courante instruction JavaScript « getElementById » qui provoque des plantées monumentales lorsque l’on a le malheur de l’imbriquer un peu trop, renvoyant un message d’erreur à la con.

Les raisons qui poussent les utilisateurs à utiliser Internet Explorer sont nombreuses, elles vont de l’ignorance simple à l’obligation due une politique d’entreprise rigoureuse ou obscure.

Je vais aujourd’hui te montrer comment s’attaquer à la première catégorie, à savoir les ignorants.

Tel les messies des temps moderne nous allons leur montrer la voie de la lumière en affichant un message d’avertissement en haut de nos blogs WordPress, leur indiquant la marche à suivre pour installer un navigateur digne de ce nom.

Ce message ne s’affichera bien entendu qu’aux visiteurs dont le navigateur est Internet Explorer, tu peux tester cette fonctionnalité ici-même, en visitant ce blog avec l’erreur informatique susmentionnée.

, ,    

Si tu suis un peu l’actualité de ces derniers temps tu auras certainement remarqué que la presse adore parler des notes aléatoires données par les trois principales agences de notations financières que compte la planète. Du coup il ne se passe pas une seule journée sans qu’un pays ou une banque ne perde un précieux « A », comme si le commun des mortels en avait quelque chose à carrer.

Pour combattre cette morosité je te propose donc aujourd’hui de certifier ton blog « AAA+ », en ajoutant simplement une superbe bannière en haut à gauche.

L’image originale a été créée sous GIMP, si tu veux la modifier tu peux télécharger le fichier XCF en enregistrant la cible de ce lien.

La procédure à suivre sera expliquée pour un blog tournant sous WordPress, mais un débutant en création web devrait s’en sortir sans problème pour transposer ce tutoriel à n’importe quel site.

Note bien que l’ajout de la bannière est une opération qui nécessite une certaine maitrise dans le transfert par FTP ainsi qu’une vague connaissance des fichiers qui régissent ton thème WordPress, pour le reste ça devrait jouer avec les indications fournies.

, , , , ,    

WinDev est un outil franchement efficace qui permet à toute personne calée en programmation de créer rapidement de superbes applications telles que le très célèbre Logbook Factory, élu meilleur logiciel du millénaire par la fédération galactique des développeurs.

L’entreprise qui commercialise cet outil organise chaque année des séminaires destinés à présenter les nouvelles fonctionnalités des versions qui s’écoulent au rythme des saisons. Si tu as eu l’honneur de participer à l’une de ces présentations privées tu auras alors instinctivement noté la violente odeur de testostérone qui flotte dans la salle, gracieusement répandue par la gente masculine qui représente alors la totalité des auditeurs.

Tout chasseur te le dira, pour attraper une bête il te faut un appât, et pour attraper une grosse bête il te faut un gros appât.

Pour attraper un développeur c’est plus facile, il te suffit d’une femme à poil. On se souvient effectivement de la cow girl de 2008, qui ouvrait la porte de son garage en petite tenue depuis ses pâturages texans.

Ainsi, la brochure PDF 2011 de douze méga-octets met en avant les qualités indiscutables de la nouvelle version 17 de WinDev, dont la gestion de l’Unicode qui apporte « ouverture et simplification » est illustrée sobrement par une femme ouverte et simple.


« Oh là là, grâce à l’Unicode je peux enfin écrire mon code source en Russe, hi hi! »

Le nouveau champ organigramme te donne visiblement envie de prendre la boite du logiciel dans tes mains et de la garder bien au chaud contre ta poitrine, comme s’il s’agissait d’un mignon petit chaton ou d’un sextoy cubique.

Les nouveautés concernant les masques d’affichage et de saisie sont vraiment incroyables, il semblerait que les dernières constantes et fonctions font subitement apparaitre une asiatique en talons aiguilles au dessus du carton d’emballage.

On explore une piste sur un lien éventuel avec la nouvelle capacité de surcharge des masques monétaires, mais cette théorie n’a pas encore été démontrée.

Nous laisserons le mot de la fin à cette demoiselle de 17 kilos qui a gentiment pris le temps de se faire vomir avant de revêtir sa plus belle robe de gala.

,    
Après avoir passé du temps sur quelques petits accrochages, je partage aujourd’hui avec grand plaisir non pas une, mais deux astuces en SQL ! C’est gratuit, c’est cadeau, ça me fait plaisir.

La première te servira peut-être si tu utilises SOAP. SOAP c’est un peu comme le savon, sauf qu’au lieu de laver ça t’envoie des données XML via le protocole HTTP, cool non?

Bref, il arrive parfois qu’on ait besoin de convertir un champ SQL binaire en Base64, non ne pars pas, je te jure que ça arrive.

Tiens, mange ça.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- Variable contenant les données binaires
DECLARE @bin VARBINARY(MAX)

-- Variable contenant ces données en base64
DECLARE @base64 VARCHAR(MAX)

-- Récupération des données
SET @bin = (SELECT TON_CHAMP_BINARY FROM TA_TABLE WHERE TA_CLE = UNE_VALEUR)

-- Conversion
SET @base64 = CAST(N'' AS XML).VALUE('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'VARCHAR(MAX)')

-- Affichage
SELECT @base64 AS 'Base64'


Dans la requête « SELECT » tu remplaces bien entendu astucieusement les noms avec ceux de ta table et de ses champs.

La deuxième astuce te permettra d’obtenir le hash MD5 d’une chaine de caractères.

1
2
3
4
5
6
7
8
-- Mot de passe
DECLARE @password VARCHAR(200) = '12345'

-- MD5
DECLARE @md5 VARCHAR(32)

-- Conversion
SET @md5 = (SELECT LOWER(SUBSTRING(CONVERT(VARCHAR(MAX),HashBytes('MD5', @password),1),3,32)))


Tu peux laisser tes commentaires, même si tu comprends rien. , , ,    
La vingtaine apporte toujours son lot de bonnes intentions, pour ne pas te sentir insignifiant après la période ingrate de l’adolescence tu cherches à participer à de grands projets qui sauvent si possible le monde. C’est ainsi qu’en ces temps lointains je me suis retrouvé à participer au projet SETI@Home, qui m’amène aujourd’hui à te parler du calcul distribué.



Certaines recherches scientifiques demandent des calculs informatiques phénoménaux, une seule machine ne suffisant pas ces calculs sont répartis entre plusieurs ordinateurs. Les données sont distribuées aux machines, calculées puis renvoyées à l’unité centrale. L’avènement d’Internet a apporté une touche mondiale à cette technologique, rendant accessible le calcul distribué (ou « calcul partagé », ou « calcul réparti ») au commun des mortels programmeurs.
Lire la suite
,    
Si tu lis ceci c’est que le titre ne t’a pas découragé, bravo!

Aujourd’hui donc, un article qui va te piquer les yeux.

Ayant récemment eu besoin (en PHP) d’afficher le contenu d’une variable tableau sous forme de treeview, je me suis rendu compte que les bouts de code permettant une telle opération étaient plus que rares sur la toile, et que ceux disponibles étaient compliqués voire complètement pourris. Tu noteras que je tiens en très haute estime certains de mes compatriotes développeurs.

N’étant jamais mieux servi que par soi-même je me suis lancé dans le codage d’une fonction récursive, le résultat s’est avéré être beaucoup plus simple que prévu.

Bref, voici le code miraculeux fait maison, basique et efficace, parce que c’est tout ce qu’on lui demande.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Fonction de dessin basique d'un "array" PHP sous forme de treeview
// 10.05.2011 - gael@memepasmal.ch - http://www.memepasmal.ch/2011/05/10/php-array-treeview/
function drawTree($myarray, $level = 0)
{

    // Boucle sur chaque élément du tableau
    foreach($myarray as $key => $value)
    {
   
        // En cas d'objet on convertit en tableau
        if (is_object($value)) $value = (array)$value;
       
        // Si l'élément est un tableau
        if (is_array($value)) {
       
            // On l'affiche en tant que noeud
            echo '<div style="padding-left: ' . ($level * 20) . 'px">[' . $key . ']</div>';
           
            // Puis on affiche son arborescence, à un niveau supérieur
            drawTree($value, $level + 1);
           
        } else {
       
            // C'est une valeur, on l'affiche
            echo '<div style="padding-left: ' . ($level * 20) . 'px">' . $key . ' = <b>' . $value . '</b></div>';
           
        }
       
    }

}


Tu copies ça quelque part dans ton code PHP, tu appelles la fonction « drawTree » en passant ta variable array en paramètre, et puis tu admires le splendide résultat en sirotant ta bière.

Merci de ton attention, tu peux maintenant reprendre une vie normale.    

Il fût un temps où les relations sentimentales tumultueuses noircissaient des pages de papier dans les romans populaires. Aujourd’hui l’aspect romantique s’estompe, on vit en direct chaque moment intime de son entourage grâce à une des plus fantastiques inventions de l’humanité : Facebook.

Les fins de relations mouvementées annihilent toute retenue, les deux protagonistes semblent s’exprimer comme s’ils étaient seuls au monde, le résultat peut être parfois surprenant vu de l’extérieur, il suit toutefois un certain schéma régulier.

Prologue

Tu as toi aussi dans tes amis ce couple idéal, celui qui s’envoie chaque jour des messages d’amour mielleux sans aucune gêne apparente.

À ce stade chacun gère la lecture des statuts selon son niveau de tolérance à la douleur mentale. L’effet produit est similaire à celui qui consisterait à surprendre accidentellement son arrière-grand mère sous la douche, une sorte de gêne d’avoir pénétré l’intimité ultime d’une personne proche, accompagné d’un petit goût de bile qui remonte.

Mais tel le beurre au soleil rien ne dure jamais éternellement, et un jour…

Chapitre 1 – L’annonce


Tu remarqueras qu’il y a toujours une personne sensible pour cliquer sur « J’aime » , lançant ainsi les pires rumeurs.

On fulmine, on rumine, mais le sentiment prépondérant à cet instant précis est surtout une incompréhension générale.

Avec toujours cette même personne fidèle au poste qui, années après années, écrit régulièrement « ma belle » quand elle s’adresse à ses copines.

Chapitre 2 – Les témoignages à chaud

Les premières minutes qui suivent la publication officielle laissent souvent libre cours aux déjections hormonales, toujours de manière subtile cela va de soi. Les acteurs principaux laissent éclater leur joie ou leur désarroi avec le ton adapté à une telle situation.

En général les potes répondent rapidement, pour témoigner de leur virile solidarité. S’inspirant de nos exemplaires politiciens, certains n’hésite d’ailleurs pas à retourner leur veste de manière surprenante.

Le problème pour un couple qui vit en plein pêché biblique (en concubinage par exemple) c’est qu’un des deux doit se barrer rapidement de l’appartement. En effet, l’entente nécessaire à une cohabitation harmonieuse n’est plus vraiment au goût du jour.

Chapitre 3 – Les explications

La violence de la séparation passée de quelques heures (ce qui correspondrait à plusieurs jours dans le monde réel), l’ancien couple commence à expliquer les raisons de son explosion subite en laissant trainer quelques vagues indices.

Et là, tu commences à comprendre ce qui a causé cette terrible déchirure.

Heureusement nous sommes humains, et toute épreuve finit par passer.

Chapitre 4 – La reprise

Tout va bien dans le meilleur des mondes, du moins on essaie de s’en convaincre. L’abandonné (ou l’abandonnée) publie des messages encourageants, même s’ils donnent l’impression d’avoir été écrits suite à une injection directe de Prozac™ dans le cortex cérébral.

Parfois des citations célèbres sont évoquées, sans oublier d’indiquer son auteur, faux de préférence. Car sache-le vil païen, ce n’est pas Céline Dion qui a originalement prononcé « les derniers seront les premiers, et les premiers seront les derniers » .

Bref, tous cette confiture aux monologues continue de s’étaler paisiblement sur ta page d’accueil, jusqu’à ce que…

Et là, personne n’est à l’abri d’un retour de flamme.

Du coup, l’homme (ou la femme) volage commence à culpabiliser, il montre quelques signes de remords et l’annonce à son entourage.

Le plus difficile à cet instant est de résister à l’envie de bannir de ta liste d’amis cet enragé qui vient de t’insulter ouvertement, mais ce serait dommage de rater la fin de l’histoire.

Chapitre 5 – La vengeance

Il faut dorénavant s’y faire, ce couple charmant, amoureux et surtout utopique auquel nous étions habitués n’existe plus. Les douceurs verbales s’envolent pour laisser place à la haine pure, et dès cet instant, tous les moyens sont bons pour rendre l’autre jaloux.

On note en général une nette régression de la qualité éditoriale, cette personne que l’on croyait si mature se met soudainement à écrire comme un adolescent hormonalement déréglé, utilisant même parfois le très vomitif langage SMS.

Les annonces euphoriques fusent plusieurs fois par jour, donnant souvent la curieuse impression d’avoir été pondues sous antidépresseurs. Par le biais de son entourage l’intéressé tente visiblement de se convaincre lui-même de son propre bonheur à grand coup d’adverbes quantitatifs, avec si possible beaucoup de points d’exclamations. Il relate sa dernière « virée à moto trop trop trop bien » , une soirée passée avec « une fille trop trop trop bien » , le fait que « la vie est trop trop trop belle » et qu’il faut « vachement en profiter à fond » .

Des coups-bas sont de temps à autre utilisés, l’adversaire ne recule devant aucun obstacle pour atteindre son objectif, à savoir pourrir le moral (voire le nouveau couple) de son ancien amant.

Et des fois, ça fonctionne.

Ainsi, comme dans un conte de fées condensé, il arrive que tout finisse bien, ou presque.

Merci à tous mes « amis » de Facebook qui étalent chaque jour l’intégralité de leur vie privée sans la moindre pudeur, vous êtes ma muse. Kissous kissous à vous!

Images : Gombinoscope, sauf pour Brassens, ça va de soi.

   
3 sur 16« Premier...234...10...Dernier »