Presse Agrume

Utiliser l’API SimplePie

novembre 24, 2008 par Julien  
Catégorie tutoriels

Il y a quatre ans de cela, Olivier Duffez de WebRankInfo avait écrit un excellent article sur l’intégration de flux RSS avec l’outil MagpieRSS.

Cet outil, fort pratique, permet à un webmaster d’intégrer sur son site des fils de news RSS en provenance de diverses sources, à la manière du célèbre Netvibes. Malheureusement, le projet Magpie ayant été abandonné, le format RSS 2.0 n’est pas totalement supporté, notamment par exemple les enclosures. Heureusement, depuis quelques années, un remplaçant pointe le bout de son bec, il s’agit de SimplePie, tout aussi pratique, et simple d’utilisation, mais en plus compatible avec tout les formats RSS. C’est de lui que nous allons parler.

Tout ce que fait Magpie, SimplePie le fait également, aussi vous pouvez lire l’article d’Olivier pour plus d’informations.

Pour utiliser SimplePie, il vous faut la télécharger. Vous la trouverez sur le site http://simplepie.org. C’est le fichier simplepie.inc sous licence LGPL.

Les fonctionnalités offertes par cette API sont multiples, on a bien sûr entre autres, la gestion d’un cache, mais aussi la possibilité de filtrer le flux en y supprimant certaines publicités, ou des balises et attributs potentiellements dangeureux. Certaines configurations doivent se faire dans le fichier lui même (si vous souhaitez par exemple filtrer une balise supplémentaire), mais la pluparts peuvent se faire directement dans votre code php. En parlant de code, voici un exemple d’intégration :

// adresse du flux qu'on souhaite intégrer.
$fichier_xml='http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml';

// appel de la libraire SimplePie.
require 'simplepie.inc';

// création d'une nouvelle instance de la classe SimplePie.
$feed = new SimplePie();

// on lui indique quel fichier il doit traiter.
$feed->set_feed_url($fichier_xml);

// on peut lui interdire de trier par date. true par défaut.
$feed->enable_order_by_date(false);

// on lui indique le nom du fichier de cache.
$feed->set_cache_location('cachenews/');

// on lache la pie.
$feed->init();

// Si le flux contient à manger.
    if($feed->data){

        // On défini le nombre d'articles qui nous intéressent.
        $max=$feed->get_item_quantity(5);

        // Nous voici au coeur du code d'intégration.
        for($x=0; $x<$max; $x++) {

            // On prend le x-iéme item.
            $item=$feed->get_item($x);

        // Un peu d'habillage html.
        echo "<div style=\"width: 290px; text-align: left;
                padding: 4px; background-color: #FFFFEE;
                border: 1px solid #CCCCCC; margin: 6px;\">
                <a href=\"";

        // le lien ou pointe le flux.
        echo $item->get_permalink();
        echo "\">";

        // le titre du flux.
        echo utf8_decode($item->get_title());
        echo "</a><br />";

            // si enclosure, on affiche. C'est le cas du monde.
            if($enclosure=$item->get_enclosure(0)){

                   echo "<img src=\"";
                   echo $enclosure->get_link();
                   echo "\" border=\"1\" style=\"float: left;
                             margin: 4px; margin-top: 8px;\">";
            }
        // Et la description pour finir.
        echo utf8_decode($item->get_description());
        echo "</div>";
        }

 }

Voila, c’est on ne peut plus simple. Pas vraiment de commentaire à rajouter sur le code en lui même, si ce n’est ici l’utilisation de utf8_decode pour afficher le texte correctement (fonction de l’encodage de votre page). Comme Olivier, je vous conseille de mettre ce code dans une fonction dédié, la seule variable étant le fichier à parser. A noter que le code suppose ici que votre enclosure soit une image, ce qui ne sera pas souvent le cas en général.

3 petites astuces référencement

novembre 23, 2008 par Julien  
Catégorie Référencement

Présentation

Ce billet présente une série de quelques conseils, tips, et bonnes pratiques qu’il est bon de connaitre en référencement.





1. définissez en amont le format de vos urls.

Choisir un format d’url n’est pas anodin. Si Google se souci effectivement peu de la présence de mots clés dans vos urls (même si cela reste un facteur d’optimisation), un format bien choisi pourra vous faciliter le travail par la suite, comme l’utilisation de Google Analytics, ou par exemple l’usage de la commande site. Si vous nommez par exemple toutes vos pages sous la forme :

http://www.monsite.com/categorie/identifiant_de_page.html

il vous sera plus facile de savoir approximativement combien de pages sont indexées dans une catégorie particulière :

site:www.monsite.com/categorie/

que si vous aviez nommé vos pages :

http://www.monsite.com/identifiant_de_page/categorie.html

Difficile de revenir en arrière par la suite.
Notez également que les urls trop longues restent clairement déconseillées, et que la plupart risquent au mieux de se retrouver dans l’index supplémentaire de Google.

 

2. découvrir les pages récemment indexées.

Paramètre relativement peu connu, mais assez pratique, “as_qdr” vous permettra de connaitre les dernières pages indexés pour un mot clé donné, ou combiné à la commande site, les dernières pages indexés d’un site. Ce paramètre peu prendre les valeurs suivantes :

as_qdr=d - pour un jour.
as_qdr=w - pour une semaine.
as_qdr=m - pour un mois.
as_qdr=y - pour une année.

On peut spécifier le nombre de jours, semaines, mois, ou années voulus en le rajoutant après la lettre indicative. Exemple :

http://www.google.fr/search?q=presse+agrume&hl=fr&as_qdr=d5

 

3. Connaitre le nombre de pages dans l’index principal.

Google possède deux index, l’un principal, dans lequel il va généralement chercher ses résultats, l’autre anciennement appelé “index supplémentaire” qu’il interroge quand la requête sur l’index principal de renvoie pas suffisament de résultats. Le premier contient grossièrement les pages en lesquelles Google à confiance, et qu’il juge suffisament pertinentes, le second contient tout le reste.

Une commande “site” renverra approximativement le nombre de pages indexées par Google contenues dans ces deux index. Connaitre le ratio entre les deux index est une information importante. Il est souhaitable qu’il y ait bien sûr le moins de pages possibles dans l’index secondaire.

Il existe plusieurs astuces pour connaitre ces chiffres, comme par exemple faire une requête “site” classique en la terminant par “/&”.

L’argument diagonal de Cantor

novembre 23, 2008 par Julien  
Catégorie Mathématiques

Dans l’article sur l’hypothèse du continu nous avons brièvement présenté l’argument diagonal dans une version assez peu intuitive.

Pour rappel :

considérons une liste infini de nombres entre 0 et 1. La question étant, cette liste peut-elle contenir tout les réels ? La réponse étant évidement non.
En effet, raisonnons par l’absurde, et supposons que oui. Notons A(n) le n-iéme nombre, et Φn(m) la m-iéme décimale de A(n). Soit β le nombre dont la n-iéme décimale soit égale à 1 – Φn(n). Si ce nombre était dans la liste il existerait un entier K tel que quel que soit n, 1 – Φn(n) = Φk(n). En prenant n = K, on obtient 1 = 2Φk(K), donc 1 est un nombre pair. Ce qui est absurde. Donc ce nombre ne peut être dans la liste.

Nous allons ici en présenter une version identique sur le fond, mais certainement plus claire :

- Nous voulons prouver que l’ensemble des réels n’est pas dénombrable. C’est à dire qu’on ne peut dresser une liste infini de nombre qui les contiennent tous. Nous allons réaliser cette démonstration sur un sous ensemble de R, celui de tous les réels compris entre 0 et 1. En effet, si ce sous ensemble n’est pas dénombrable, il est évident que l’ensemble complet ne l’est pas non plus.

Supposons dressé une telle liste :
L’ordre des nombres de cette liste n’a aucune importance, le raisonnement qui va suivre étant valable pour toute liste infini de réels indexée par des entiers.

1. 0,73627477283883…
2. 0,87824246287462…
3. 0,79872772362783…
4. 0,12238382897894…
5. 0,23889746726784…
6. 0,43984928478479…
7. 0,03982874874746…

En prenant le premier chiffre du premier réel de notre liste, puis le second chiffre du second réel, et ainsi de suite, nous formons le nombre réel suivant 0,7783997…

Maintenant considérons un nombre ou chaque n-ième terme après le zero diffère du n-ième terme de notre nombre de référence. Ex : 0,8894008… Ce nombre est bien un réel. Il doit donc avoir une position dans notre liste. Soit N l’entier qui désigne cette position.

Nous voyons bien que l’existence de ce nombre à la position N est impossible. Son N-ième chiffre doit être par construction différent de lui même, ce qui est absurde.

Conclusion : tous les nombres réels ne peuvent être listé par une liste d’entier, fusse-t-elle infini.

J’admets volontiers qu’à première lecture cette démonstration puisse laisser circonspect. Pourtant elle est tout ce qu’il y a de plus rigoureux et logique. Elle laisse pourtant une impression étrange. Peut-être ne nous attendions pas à ce qu’une liste infini ne puisse tout contenir.

Les implications de cet argument sont énormes. Mais nous aurons peut-être l’occasion d’en discuter une prochaine fois. En attendant je vous invite à consulter l’article de Wikipedia pour approfondir le sujet.

Audition

novembre 22, 2008 par Julien  
Catégorie Cinéma

Mes dix films préférés (3).

Mes 10 films préférés, parmi des centaines de chefs d’œuvres. Comme tout classement celui-ci n’est pas parfait, et j’ai été contraint de laisser en chemin d’excellents films comme : Matrix, Leon, American history X, Darkcity, Blade runner, Rounders, La ligne verte, Heat, Million dollar baby… Mais il reflète au moins un peu mes gouts en la matière.

En 8ème place donc : audition.

Synopsis
Aoyama, 42 ans, est producteur de films. Sa femme est décédée il y a sept ans, mais il vit toujours sa disparition avec difficulté.
Un jour, suivant les conseils d’un vieil ami, Yasuhisa Yoshikawa, il décide de se remarier et organise une audition pour une série télévisée fictive afin de trouver sa nouvelle compagne parmi les candidates. La dernière à se présenter, Yamazaki Asami, est une jeune femme d’une troublante beauté. Aoyama en tombe instantanément amoureux. Il la rappelle et dîne en tête à tête avec elle.
Quelques jours plus tard, Aoyama lui téléphone à nouveau. Yamazaki est chez elle, prostrée dans l’obscurité. Elle est seule ou presque. Commence alors pour Aoyama une plongée vertigineuse dans un enfer sanglant, dont les retombées seront excessivement douloureuses.

Une réalisation réussie, certes, mais ce n’est pas le caractère le plus intéressant du film. Il est difficile de ressortir totalement indemne de ce film. Takashi Miike éveille de nombreuses questions auxquelles il ne répond pas. Ce qui est habituellement gênant, s’ajoute ici au sentiment de malaise certainement voulu. Un film qui se démarque dans son objectif du cinéma traditionnel : le but n’est plus ici de raconter une histoire, mais de créer une tension à la limite de la sensation physique. But que le réalisateur atteint admirablement.

film audition

film audition

Les 10 meilleurs plugins Wordpress

novembre 17, 2008 par Julien  
Catégorie CMS, Référencement

Logo wordpress La liste qui suit est celle des principaux plugins Wordpress que j’ai mis en place à la création de ce blog. Si tous sont excellents, la plupart me semblent même indispensables.

Akismet : présent par défaut avec wordpress, akismet est de loin la meilleure des solutions antispam.

Internal link building : ce plugin est une excellente solution pour la création de lien internes. Choisissez un mot, et la page vers laquelle vous voulez que ce mot pointe et vos liens internes seront automatiquement générés.

All in one SEO pack : ce plugin très complet vous permettra une gestion efficace de vos titres et metas.

Google Sitemap Generator : sans doute le moyen le plus simple pour générer automatiquement votre fichier sitemap pour Google et les autres robots compatibles. Ce qui optimisera l’indexation de votre site.

Related post : celui-ci ajoutera à vos articles des liens vers d’autres de vos articles qui leur sont liés par l’intermédiaire des tags qu’ils auront en commun. Un bon moyen pour proposer des infos pertinentes à vos lecteurs en complément de celle qu’ils sont en train de lire.

Simple tag : Ce plugin est la boite à outil de la gestion de tags. Son principal intérêt est de vous faciliter grandement le taggage de vos posts. Mais il fait tellement d’autres choses encore (articles liés, liens automatiques…).

Breadcrumb Navigation XT : un plugin assez simple qui vous permettra de proposer un fil d’ariane à vos visiteurs. Ce qui sera positif d’un point de vu expérience utilisateur, mais aussi concernant votre référencement.

Sociable FR : grâce à ce plugin, vos visiteurs pourront voter pour vos articles dans les digg-like. Accroissant ainsi votre trafic.

WP super cache : vous commencez à avoir du trafic. Vos serveurs souffrent. Soulagez les avec WP super cache. Ce plugin est certainement la meilleure solution de cache actuellement disponible pour Wordpress.

Sniplets : et peut-être le meilleur pour la fin. Il serait trop long de décrire ici tout ce que Sniplets peut faire. Ce sera peut-être l’occasion d’un billet. Le principal intérêt de Sniplets est la possibilité d’inclure du code php dans vos posts, et donc entre autre générer dynamiquement des pages dans votre CMS favori.

Parser un fichier XML avec l’API DOM

novembre 14, 2008 par Julien  
Catégorie tutoriels

Ce petit article n’a pas pour objectif de vous enseigner XML, ni ne prétend être un cours exhaustif au sujet de l’API DOM. Il vous expliquera seulement, comment, à partir d’un fichier XML, extraire les données qu’il contient, et les afficher dans une page web. Nous utiliserons pour cela le langage PHP5.

Pour parser un fichier XML, il existe de nombreuses méthodes. Vous pouvez utiliser les fonctions standards de traitements de fichiers, et chaines de caractères, alliées aux très puissantes expressions régulières, ou si vous souhaitez perdre moins de temps utiliser SimpleXML beaucoup plus adapté. Il existe un troisième chemin, pas toujours plus efficace, ni même plus simple, mais qui offre l’avantage d’être un standard du W3C accessible depuis la plupart des langages. Vous l’avez bien compris, nous allons utiliser le Document Object Model, déjà survolé quelquefois en Javascript sans toujours oser le nommer.

Nous allons donc supposer que vous ayez un fichier XML à parser. Nous ne nous poserons pas de questions sur la validé de ce fichier avec la DTD qui lui est associé. Vous ne savez pas ce qu’est une DTD ? Tant mieux, cela ne vous servirait à rien ici. Tout ce que nous voulons c’est extraire des données du fichier. Imaginons que notre fichier contienne les données qui suivent :

<catalogue>
    <ordinateurs>
        <marque prix="1200">Sony</marque>
        <marque prix="1800">Fujitsu</marque>
        <marque prix="1300">IBM</marque>
    </ordinateurs>

    <imprimantes>
        <marque prix="300">Epson</marque>
    </imprimantes>
</catalogue>

 

Récupérer le contenu d’une balise

Par récupérer le contenu d’une balise, nous entendons le texte se trouvant entre la balise ouvrante, et celle fermante, ainsi, Sony, Fujitsu, IBM, et Epson sont des contenus de balise. Supposons que nous voulions afficher la liste des marques d’ordinateurs, voici le code que nous devrions utiliser :

<?php
    $dom =new DomDocument();
    $dom->load('monfichier.xml');
  $ordinateurs=$dom->getElementsByTagName('ordinateurs')->Item(0);
      $marques = $ordinateurs-> getElementsByTagName('marque');
        foreach($marques as $marque)
            $listemarques[] = $marque->firstChild->nodeValue
 ?>

Le fonctionnement de ce code est assez simple. On crée un nouvel objet DOM, on charge le fichier XML contenant les données à parser. getElementsByTagName nous permet d’identifier les éléments possédant le TagName “ordinateur”, Item(0) pointe vers le premier d’entre eux. A partir de la, il ne nous reste plus qu’à identifier les éléments possédant le TagName “marque” parmi ceux ayant le TagName “ordinateur”. Un foreach dans la structure résultante nous permet alors de tous les afficher.

 

Récupérer le contenu d’un attribut

Nous entendons par attribut le texte se trouvant entre les guillemets de notre exemple XML. Nous allons donc ici récupérer les prix. Pour cela, le code utilisé sera tout aussi simple, à celui précédement vu, on rajoute tout simplement ceci :

if ($marque->hasAttribute('prix'))
    {
            $listeprix[] = $marque->getAttribute('prix');
    }

hasAttribute, nous permet de vérifier l’existence de l’attribut prix pour la marque correspondante, et getAttribute en récupére la valeur. Bien sûr, $listemarques et $listeprix sont des tableaux. Il existe un grand nombre d’autres fonctions dans l’api DOM, aussi je vous renvois vers le manuel php, mais vous en savez déjà suffisament pour extraire les données que vous souhaiteriez d’un fichier XML.

Un faux New York Times

novembre 13, 2008 par Julien  
Catégorie Tribune libre

Annonçant la “fin de la guerre en Irak”, “l’inculpation de George W. Bush pour haute trahison”, ou encore “la mise en place d’une couverture médicale pour tous”, c’est un faux New York Times qui a été distribué gratuitement hier dans les rues de Big Apple.

Presse Citron s’interroge sur qui peut être derrière tout ça. L’AFP parle “d’une myriade d’associations contre la guerre, pour les droits de l’Homme, pour la protection de l’environnement, ou la justice économique”, le bruit cour également que les désormais célèbres Yes Men ne serait pas étrangés à cette initiative.

Cette édition spéciale, en date du 4 Juillet 2009, fera certainement date. Selon une vidéo, c’est plus d’un million d’exemplaire de ce faux journal qui ont été publiés et distribués gratuitement. Et le buzz sur internet devrait être important. Un site, copie de celui du célèbre journal, mais sur Wordpress, a été mis en ligne pour l’occasion. Avec la version pdf du journal disponible.

Sources : presse-citron, afp.

Wordpress - fiche descriptive

novembre 10, 2008 par Julien  
Catégorie CMS

Logo wordpress

Présentation

Wordpress est un CMS (pour Content Management System ou système de gestion de contenu) orienté blog. Codé en Php avec MySQL comme système de base de données, Wordpress est également libre sous licence GPL et bénéficie de l’apport d’une importante communauté. Wordpress est tout simplement la meilleure plateforme existante pour blog.

Qualités

Ce qui fait toute la richesse de Wordpress c’est sa communauté. Il existe pour Wordpress une quantité incroyable de thèmes et de plugins qui vous permettront de donner à votre blog l’aspect que vous souhaitez. Wordpress est multi-utilisateurs, offre une interface XML-RPC permettant la publication depuis une application tierce, une bibliothèque de média, la possibilité de créer des pages en plus des billets du blog. Bien évidement Wordpress gère aussi les commentaires et dispose d’une des meilleures solutions anti spam.

Bref, vous aurez compris pourquoi Wordpress est ma solution de blog préféré. Wordpress dépasse et de beaucoup les solutions concurrentes que sont dotclear ou b2evolution, et rivalise plutôt bien avec des solutions CMS purement orientées sites comme Joomla ou Drupal.

Liste de plugins Wordpress

A venir.

Ressources

Site officiel
Wordpress Francophone

Google n’a pas dit Yahoo

novembre 8, 2008 par Julien  
Catégorie Entreprises

L’accord entre les deux géants du web n’aura finalement jamais lieu. Lassé des problèmes avec le département de la justice, Google a finalement décidé de ce retirer au grand dam de Yahoo.

Avec une action qui ne pèse plus maintenant que 15$, Yahoo se dit déçu de cette décision, et Jerry Yang à ouvertement déclaré qu’il était prêt à reprendre les discussions avec Microsoft.

Old Boy

novembre 8, 2008 par Julien  
Catégorie Cinéma

Mes dix films préférés (2).

Mes 10 films préférés, parmi des centaines de chefs d’œuvres. Comme tout classement celui-ci n’est pas parfait, et j’ai été contraint de laisser en chemin d’excellents films comme : Matrix, Leon, American history X, Darkcity, Blade runner, Rounders, La ligne verte, Heat, Million dollar baby… Mais il reflète au moins un peu mes gouts en la matière.

En 9ème place donc : old boy.

Synopsis
A la fin des années 80, Oh Dae-Soo, père de famille sans histoire, est enlevé un jour devant chez lui. Séquéstré pendant plusieurs années dans une cellule privée, son seul lien avec l’extérieur est une télévision. Par le biais de cette télévision, il apprend le meutre de sa femme, meurtre dont il est le principal suspect. Au désespoir d’être séquestré sans raison apparente succède alors chez le héros une rage intérieure vengeresse qui lui permet de survivre. Il est relâché 15 ans plus tard, toujours sans explication. Oh Dae-Soo est alors contacté par celui qui semble être le responsable de ses malheurs, qui lui propose de découvrir qui l’a enlevé et pourquoi. Le cauchemar continue pour le héros.

Une histoire prenante, magistralement interprétée, et réalisé par un Park Chan-wook au meilleur de sa forme. Chaque minute du film est un bijou de réalisation, et l’histoire ne laissera personne indifférent. Grand prix du jury 2004 du festival de canne, ce film est un véritable chef d’œuvre.

Page suivante »