Categories
En vrac Photography Python

En vrac (23/03/2011)

Très exceptionnellement, un billet en vrac.

pyAggr3g470r

  • la version de pyAggr3g470r pour Python 3 (pyAggr3g470r 3k) testé avec Python 3.2 et maintenant stable et fonctionnelle. Elle utilise principalement la dernière version du module feedparser porté avec 2to3 ainsi que CherryPy 3.2.0.
    pyAggr3g470r 3k et pyAggr3g470r

    On peut voir que les deux instances de pyAggr3g470r peuvent être lancée sur le même système et écrire/lire dans la même base de données.

  • je pense que je vais de plus en plus programmer avec Python 3. Voici quelques projets déjà compatibles Python 3.2.

Rapports analytics

Oui je flic tout le monde 😉 Ces rapports Analytics m’impressionnent (surtout pour IP-Link).

SPADE

  • j’ai constaté en début de semaine les évolutions de l’interface Web de SPADE et c’est vraiment sympa.
    SPADE Web GUI
  • vous pouvez faire tourner un agent SPADE sur Android.
    • Diaspora

      Diaspora progresse plutôt bien et permet maintenant d’envoyer des messages (type mail) d’une plate-forme (POD) à l’autre.

      Diaspora Mail

      Sport

      • j’avais dis que je serai prêt pour le printemps. Et bien c’est ce qu’on va voir très bientôt avec ce magnifique temps fait pour faire du vélo;
      • je cherche aussi un club de sport de quelque chose dans mon coin pommé;
      • je me suis renseigné pour des cours de pilotages. Va falloir encore économiser (environ 5900 euros pour une licence permetant de voler à 30 kilomètres autour de l’aérodrome, sans passager (sans options)).

      Photos

      Avec le printemps et ce magnifique temps on va pouvoir se ballader et prendre de belles photos.

Categories
Python

Quelques notes sur Python

Cool things to know.

Avec des choses pas jolies du genre:

>>> True / False
Traceback (most recent call last):
  File "", line 1, in 
ZeroDivisionError: int division or modulo by zero

Ou plus jolies:

>>> a_list.insert(0, 'Ω')      
>>> a_list
['Ω', 'a', 1, True, 'Python', 3.1415, 'Toto', 42, False]
Categories
Python

Nouvelles en vidéo de pyAggr3g470r

Pour faire original je me suis dit que serait bien de faire une démonstration en vidéo de pyAggr3g470r. Alors voici la vidéo (.ogv, 63MB). Elle montre simplement comment récupérer, configurer et utiliser pyAggr3g470r en deux ou trois minutes. Je n’ai pas montré l’installation des modules Python requis (CherryPy, SQLite, etc), c’est trop simple 🙂

L’avancée “majeure” que vous noterez est que maintenant l’adresse du flux est récupérée automatiquement par le module Beautiful Soup à partir de l’adresse du site Web lors de l’ajout d’un nouveau flux. Il n’est donc plus nécessaire d’éditer à la main le fichier ./var/feed.lst. De ce côté il reste encore des améliorations à faire, il s’agit d’une première version de test.

Bonne vidéo!

Categories
Linux Python Technologie

pyAggr3g470r 1.2 sur Ubuntu 10.04

pyAggr3g470r avec Ubuntu10.04

Heureusement ça fonctionne, rien d’étonnant. Mais il faut quand même faire attention à ne pas utiliser la version de CherryPy des dépôts Ubuntu qui n’est pas vraiment à jour. Voilà la procédure détaillée:

allumer l’ordinateur, lancer Ubuntu, …, ouvrir une console
hg clone http://bitbucket.org/cedricbonhomme/pyaggr3g470r
cd pyaggr3g470r/
sudo aptitude install python-gamin python-matplotlib python-feedparser
cp cfg/pyAggr3g470r.cfg-sample cfg/pyAggr3g470r.cfg
vim cfg/pyAggr3g470r.cfg [indiquer chemin global où se situe pyaggr3g470r (~/pyaggr3g470r/)]
wget http://download.cherrypy.org/cherrypy/3.1.2/CherryPy-3.1.2.tar.gz
tar -xzvf CherryPy-3.1.2.tar.gz
rm CherryPy-3.1.2.tar.gz
cd CherryPy-3.1.2/
sudo python setup.py install
cd ..
rm -Rf CherryPy-3.1.2/
nohup python pyAggr3g470r.py &
firefox 127.0.0.1:12556

Voilà c’est une installation basique, bien que le module matplotlib est facultatif. De la même manière que pour CherryPy vous pouvez installer le module oice.langdet pour la détection de langues. Facultatif également. Par contre il est vivement recommandé d’installer le module Gamin qui monitore très bien la base de données. Sinon à propos d’Ubuntu, comme d’habitude je suis mitigé. L’interface est jolie, mais je préfère KDE et certaines configurations par défaut d’Ubuntu me dérangent. Bien que ça se change vite. De plus je n’aime pas trop le fait que les réseaux sociaux soient autant intégrés sur le bureau. Par contre l’installation est terrible. Sept étapes toutes simples, trente minutes d’attente et vous avez un système pleinement fonctionnel pour de nombreux utilisateurs lambda. Le CD d’installation fait moins de 700 Mo. Du point de vue facilité d’installation, configuration et utilisation du système là je crois qu’Ubuntu n’a à rougir devant aucun autre système propriétaire.

Categories
Python

Nuage de tags avec Python

Rien de plus simple:

def tag_cloud(tags):
    """
    Generates a tags cloud.
    """
    tags.sort(lambda x,y: cmp(x[0], y[0]))
    return ' '.join([('<font size="%d"><a href="/q/?querystring=%s">%s</a></font>' % \
                    (min(1+p*7/max([tag[1] for tag in tags]), 7), x, x)) for (x, p) in tags])

Le paramètre tags de la fonction est une liste ayant ce format [(“linux”, 42), (“python”, 37), …] qu’on peut facilement obtenir par exemple avec cette petite fonction ou une autre.

Et le résultat que vous pouvez utiliser comme ça, donnera quelque chose de ce style avec pyAggr3g470r 😉

Categories
Python Technologie

pyAggr3g470r et IP-Link – Nouveautés

Bonjour gentils lecteurs!

Voilà, je me disais que ça fait presque longtemps que je n’ai pas parlé de pyAggr3g470r. Mais sachez que je n’abandonne pas mes petits projets aussi vite. Voilà donc quelles sont les principales nouveautés concernant pyAggr3g470r (introduites en partie avant ma sieste de ce matin dans le train):

  • possibilité de marquer un article en tant que favoris (cf petite icône en haut à gauche de la capture et [1, 2, 3]). En passant admirez comment en une seule ligne de code on a le nombre d’articles favoris avec une sortie HTML;
  • ajout d’un bouton Google Buzz. On peut donc maintenant partager un article via Google Buzz, del.icio.us, Digg, reddit, Scoopeo et Blogmarks;
  • notifications de nouveaux articles par e-mails pour les flux désirés (cf petite icône en haut à gauche de la capture);
  • diverses améliorations (la base est monitorée par défaut avec le module gamin, amélioration de la vitesse de chargement de la base dans l’objet transient, etc.);
  • évidemment il y a toujours la recherche, détection de langue et les statistiques sur les mots.

Avec l’apparition de ces nouvelles petites icônes l’interface paraît surtout moins laide.

Sinon du côté d’IP-Link vous pouvez dorénavant visualiser les relations entre différentes IP avec les connections (ports). Les images sont générées à l’aide de courbes de Béziers. Vous n’avez donc pas besoin d’installer Circos.

Categories
Python

Cadeau Pythonesque

Voilà un mini script que j’ai écrit hier soir en cinq minutes grand maximum.

#! /usr/local/bin/python
#-*- coding: utf-8 -*-

import os
import urllib2
import feedparser

from datetime import datetime

madames = feedparser.parse("http://feeds2.feedburner.com/BonjourMadame")

for madame_du_jour in madames['entries']:
    adresse_madame_du_jour = madame_du_jour['summary_detail']['value'].split('"')[1]
    jour = str(datetime(*madame_du_jour.updated_parsed[:3])).split(' ')[0]
    if not os.path.isfile(jour+".jpg"):
        filein = urllib2.urlopen(adresse_madame_du_jour)
        image = filein.read()
        filein.close()
        fileout = open(jour+".jpg",'w+b')
        fileout.write(image)
        fileout.close()

Je vous le donne parce que je sais très bien qu’il sera est utile pour certaines personnes (je ne citerai pas de nom). De plus il montre la puissance et simplicité d’utilisation du module feedparser (aptitude install python-feedparser) de manière ludique. Je vous conseil vivement de l’exécuter avec un petit cron tous les jours à dix heures pétantes. Voilà comment apprendre Python en se faisant plaisir…

De rien 😉

Categories
Python

pyAggr3g470r – Notification par mail

Et voilà, comme déjà expliqué ici, aujourd’hui le trajet de train était un peu long…

Ainsi, j’ai eu l’occasion d’implémenter une fonctionalité assez sympa pour pyAggr3g470r, directement inspirée d’ici. Donc, comme le montre la  capture ci-dessus il est maintenant possible d’être alerté par courrier électronique de l’arrivée de nouveaux articles. Bien sûr afin ne pas être spammé par pyAggr3g470r, pour qu’il vous envoie un mail à chaque nouvel article il faut que vous vous abonniez à un flux. Ce qui ce fait en cliquant simplement sur Stay tuned (cf capture). Pour ne plus recevoir de notifications pour un flux, cliquez sur Stop staying tuned.

Dans l’image ci-dessus on peut voir le flux auquel je me suis abonné ainsi que le mail qui est arrivé à mon adresse Gmail. La configuration est très simple, il suffit de mettre son adresse de courrier électronique dans ce fichier. Il est même possible d’y configurer l’adresse du serveur SMTP (facultatif).

Categories
Python

pyAggr3g470r – Démonstration

Bien que pyAggr3g470r a été développé pour une utilisation personnelle j’ai décidé de prendre le risque de l’héberger temporairement sur mon vieux serveur. Je pense qu’il commence à être assez fonctionnel, mais peut être pas forcément pour être disponible sur Internet 😉 Voilà ce n’est qu’une démonstration.

Pour un minimum de sécurité j’ai quand même désactivé quelques fonctionnalités comme la récupération des flux (réalisée par moi-même). J’ai aussi un peu bidouillé le CSS pour avoir des polices plus petites. Si besoin, vous pouvez agrandir avec votre navigateur…

Donc si vous souhaitez tester, ça se passe ici. Cependant, n’abusez pas 😉

Sinon, côté programmation je vais bientôt supprimer mon compte Google Code étant donnée que mes projets principaux sont bientôt tous sur bitbucket. Je suis de plus en plus satisfait de bitbucket, désormais un espace de un giga octet est disponible. Avec tout ce que j’ai mis en ligne, je n’atteins même pas les 1% (mais rien ne vaut ça 😉 ). Bon, en ce moment je me suis calmé avec la programmation. Mais attention, bientôt ça reprendra de plus belle !

Categories
Python

Detection de langues avec Python

Ce billet a simplement pour but de présenter le module Python oice.langdet sous licence GPL v3. Ce module permet de détecter la langue d’un texte (Anglais, Espagnol et Français). Comme vous pouvez le voir en suivant le lien précédent il est vraiment simple d’utilisation et les résultats sont assez bons. Je me suis dit que je pouvais tester ce module avec pyAggr3g470r sur la description des articles. Et en effet les résultats sont plutôt satisfaisants. Comme on peut le voir sur ces captures (1, 2, 3) sur 684 articles le module trouve 332 articles en anglais et 166 en français avec peu d’erreurs. Il faut préciser que pour diverses raisons (notamment de performances) je passe à l’algorithme uniquement les 80 premiers caractères. De plus certains articles n’ont pas de descriptions ou alors des descriptions exotiques du type mot clés…

Grâce à cela je vais maintenant pouvoir utiliser cette implémentation des soundex après avoir détecté la langue (afin d’avoir les codes caractères appropriés). De cette manière je pourrais rechercher les mots phonétiquement et ainsi éviter de comptabiliser par exemple les mots libre et libres séparément, comme ici.  Si cet algorithme vous intéresse voici la version originale de Mark Pilgrim utilisée par Florent Carlier. Cet algorithme est simple, court et vraiment pratique.

Donc cet article aura présenté deux choses intéressantes !