PROJET AUTOBLOG


bfontaine.net

Site original : bfontaine.net

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Créez vos propres fichiers pour Cowsay

dimanche 11 décembre 2011 à 20:54

Ce billet est la suite du billet sur Fortune et Cowsay.

Dans le précédent billet, on a vu comment combiner les commandes fortune et cowsay pour afficher une citation dans une bulle, avec un personnage en ASCII Art (une vache, par défaut). L'utilitaire Cowsay propose pas moins d'une cinquantaine de personnages différents, du squelette au cheval en passant par Dark Vador, Calvin (de Calvin & Hobbes) ou encore un stégosaure. Ce billet vous propose de créer votre propre personnage.

Tout ce dont vous aurez besoin sera votre éditeur de texte préféré, et un peu d'imagination. Pour ce billet, on ne fera pas preuve d'une grande originalité en créant un fichier pour le petit lapin suivant :
(\_/)
('.')
(> <)

On crée donc un fichier lapin.cow, dont on commente les premières lignes (à l'aide de #) pour expliquer ce que représente notre dessin :

#
# A little rabbit
#

On précise ensuite que notre dessin personnage va suivre, et qu'on terminera ledit dessin par "EOC" (End Of Cow) :

$the_cow = <<"EOC";

On dessine ensuite notre personnage avec quelques backslashs en haut à gauche, pour montrer que la bulle de texte vient de lui. On n'oublie pas de se décaler un peu sur la droite pour que nos backslashs tombent à peu près au milieu de la bulle.

$the_cow = <<"EOC";
\
\
(\_/)
('.')
(> <)

Vous pouvez bien entendu ajouter des backslashs, surtout si votre personnage est grand. Une fois votre personnage terminé, il faut « échapper » les caractères spéciaux, ici les backslashs du dessin (pas ceux en haut à gauche). Faites précéder chaque backslash du dessin par un second backslash.

$the_cow = <<"EOC";
\
\
(\\_/)
('.')
(> <)

Ensuite, remplacez les backslashs en haut à gauche par $thoughts. Ainsi, le programme cowsay remplacera chaque occurence de $thoughts par un backslash, tandis que cowthink le remplacera par une petite bulle (un « o » minuscule). Il ne reste plus qu'à tenir notre promesse et terminer notre dessin par "EOC", sur une dernière ligne.

$the_cow = <<"EOC";
$thoughts
$thoughts
(\\_/)
('.')
(> <)
EOC

Voilà, votre personnage est terminé. Vous pouvez tester le résultat avec l'option -f de cowsay, suivie du chemin vers votre fichier :

$ cowsay -f ./lapin.cow "Hello World ! "
 ________________
< Hello World !  >
 ----------------
    \
     \
      (\_/)
      ('.')
      (> <)

Si vous souhaitez mettre votre personnage avec tous les autres, il suffit de déplacer le fichier au bon endroit (vérifiez avant qu'aucun autre fichier n'a le même nom) :

$ sudo mv lapin.cow /usr/share/cowsay/cows/

Et voilà !

Comment Chromium accélère les téléchargements

mardi 6 décembre 2011 à 20:56

J'ai découvert hier soir un comportement assez sympathique de Chromium (qui doit fonctionner aussi sous Chrome), concernant les téléchargements. Lorsque vous faites un clic-droit puis « Enregistrer sous... » pour enregistrer un fichier, une fenêtre s'ouvre pour vous laisser choisir l'emplacement de sauvegarde dudit fichier, jusque là rien d'extraordinaire. Sauf qu'une fois cette fenêtre ouverte, Chromium n'attend pas que vous ayez choisi le nom du fichier pour commencer à le télécharger. Ainsi, il commence déjà à télécharger le fichier sous le doux nom de .org.chromium.Chromium.[id] (id étant un identifiant unique), dans le répertoire de téléchargements. Une fois que vous avez choisi un nom, il n'y a plus qu'à terminer le téléchargement (peut-être est-ce déjà fait) et renommer le fichier.

Exportez votre code Python en HTML avec pyhtmlizer

jeudi 27 octobre 2011 à 23:06

Il est parfois utile, par exemple dans le cadre d'un blog, de partager des bouts de code, notamment en Python. La commande pyhtmlizer (disponible avec le paquet python-twisted-core sous Ubuntu) permet d'exporter facilement du code Python, avec une coloration syntaxique de notre choix. Elle s'utilise de la façon suivante :

pyhtmlizer [-s feuille-de-style.css] fichier.py

Un fichier fichier.py.html sera ainsi créé. La commande place tous les mots-clefs de Python dans des balises <span>, avec une classe correspondante au type du mot-clef. Par exemple, toutes les variables auront la classe py-src-variable. Pour les commentaires, ça sera py-src-comment, tandis que pour les instructions, ça sera py-src-keyword. Il ne reste plus qu'à écrire une feuille de style et le tour est joué.

Par exemple, pour le code suivant :

#! /usr/bin/python3.2

def hello(name="Dennis"):
"dit bonjour à <name>"
print("Hello %s !" % name)
if (__name__ == "__main__"):

hello()

qui ne fait que dire bonjour, et la feuille de style suivante :

body {background-color:#333;color:#EEE}
.py-src-comment {color:#CCC}
.py-src-keyword {color:orange;font-weight:bold}
.py-src-variable {color:#5AF;font-weight:bold}
.py-src-identifier {color:cyan;font-weight:bold}
.py-src-string {color:#AFA}
.py-src-parameter {color:pink}

Le résultat est le suivant :

<style> .py-src-comment {color:#CCC} .py-src-keyword {color:orange;font-weight:bold} .py-src-variable {color:#5AF;font-weight:bold} .py-src-identifier {color:cyan;font-weight:bold} .py-src-string {color:#AFA} .py-src-parameter {color:pink}
#! /usr/bin/python3.2

def hello(name="Dennis"):
    "dit bonjour à <name>"
    print("Hello %s !" % name)


if (__name__ == "__main__"):
    hello()

Bien entendu, vous pouvez modifier votre feuille de style comme vous voulez, et faire des choses très jolies. Il existe des scripts JS qui permettent de colorer automatiquement le code, mais si vous préférez éviter d'avoir 50 scripts par page pour faire de simples effets réalisables en CSS ou HTML, utilisez cette méthode.

R2D2, un an après

vendredi 7 octobre 2011 à 18:14

Attention, cet article ne parle pas d'R2-D2, le robot de Star Wars, mais du réseau social interne à l'Université Paris Diderot (R2D2 signifie « Réseau, Ressources de Denis Diderot »).

Cela fait bientôt un an que j'ai rejoins R2D2, un réseau social réservé aux étudiants et au personnel de Paris Diderot (Paris VII), qui avait ouvert peu avant. La première chose qui choque, quand on arrive dessus, c'est le tutoiement systématique (comme sur Myspace). La seconde, c'est le trop-plein de fonctionnalités : blogs, télex (équivalents des tweets de Twitter), pages (équivalents des articles de Facebook), favoris, groupes, fichiers, listes d'amis. Il est également possible de suivre des utilisateurs (et inversement). Ceux-ci sont vos « amis », tandis que ceux qui vous suivent sont vos « contacts » (ne cherchez pas la logique, il n'y en a pas). La page d'accueil du réseau permet par ailleurs de voir la « rivière d'activités », une sorte de « public timeline », c'est-à-dire les activités récentes de tous les membres du réseau, ainsi que les télex récents. Le problème, c'est justement que le réseau est interne à l'Université, donc créer des groupes d'entraide entre étudiants peut être pratique, mais l'utilité de créer un blog avec un nombre de lecteurs aussi limités est discutable. Peut-être aussi parce que le réseau n'a jamais connu de lancement en grandes pompes, il n'y a pas beaucoup d'activité dessus.

R2D2 est basé sur Elgg, un moteur de réseau social open source, utilisé par plusieurs autres universités. Ce moteur permet de mettre en place une API, mais les administrateurs d'R2D2 n'en ont pas fait. J'ai donc écrit une API en Python, totalement dépendante de la structure des pages (qui n'a pas changée en un an). Elle gère l'authentification CAS utilisée sur le site, et permet de faire une recherche selon plusieurs critères, ainsi que de recueillir un certain nombre d'informations publics sur un utilisateur. Elle se veut facile d'utilisation, voici un exemple (l'utilisateur est un faux) :

>>> import r2d2 as rd
>>> rd.auth("toto", "motdepasse").connection()
>>> u = rd.user("toto", autocomplete=True)
>>> u.prenom
'Toto'
>>> u.nom
'Matte'
>>> {f.pseudo for f in u.friends}
{'Titi', 'Lulu', 'Tata'}

J'ai utilisé cette API pour générer quelques statistiques. On dénombre ainsi 2173 inscrits, dont 1991 étudiants (soit 5.7% de étudiants inscrits à l'Université, d'après un chiffre de septembre 2010) et 182 profs/membres du personnel. Parmi ces 2173 inscrits, seulement 278 (13%) ont remplacé l'avatar par défaut, et 795 (37%) ont rempli la section "À mon propos". On trouve 1913 utilisateurs (88%) sans amis ni contacts. Parmis le personnel (et les professeurs) celle qui a le plus d'amis (59) est une technicienne du SCRIPT (le service informatique de l'université), tandis que celui qui a le plus de contacts est le professeur J.-B. Yunès (18). Côté étudiants, celle qui a le plus d'amis en a 27. Seulement 9 étudiants et 9 membres du personnel ont 10 amis ou plus. Les membres du personnel ont en moyenne 1.54 amis et 0.86 contacts (si on ne compte que ceux qui ont un ami ou plus, cela donne respectivement 6.22 et 4.00). Les étudiants, eux, ont en moyenne 0.32 amis et 0.17 contacts (si on ne compte que ceux qui ont un ami ou plus, cela donne respectivement 2.99 et 2.16). Autant dire que ce n'est pas (encore) un grand succès.

Contrez la censure avec Autoblog

mercredi 21 septembre 2011 à 13:14

Le projet Autoblog est un système permettant de dupliquer très facilement les articles d'un blog à de multiples endroits. Son principe rappelle l'effet Streisand : En 2003, Barbara Streisand a déposé une plainte contre un photographe pour éviter la diffusion d'une photographie de sa maison qu'il avait posté sur Internet. Cette plainte a attiré l'attention du public et des médias, et la photo a très vite été dupliquée partout. L'effet Streisand a lieu lorsqu'une tentative de censure a lieu sur le réseau contre une information au départ sans importance. Le réseau se défend de lui-même, pour reprendre les termes de Benjamin Bayart, et l'information est massivement dupliquée pour contrer ladite censure.

Ici, le principe est très simple : Il suffit de copier deux fichiers sur son site pour dupliquer les articles d'un blog. Un fichier index.php, commun à tous les blogs, et un fichier de configuration, vvb.ini (VVB pour VroumVroumBlog, le programme permettant de faire fonctionner l'autoblog). Le fichier de configuration contient le titre du blog, sa description, son adresse, son flux RSS, et les adresses d'où télécharger les médias. Lorsque la page index.php est visitée, le programme va récupérer le flux RSS du blog (sauf s'il a déjà été mis à jour dans les 60 dernières minutes), et dupliquer les articles sur la page. Ils sont stockés, de même que les médias, dans un répertoire local. Ainsi, si le blog est supprimé, les articles restent sur les autoblogs, et il est toujours possible de les consulter. Le système ne nécessite rien d'autre que PHP5 et ces deux fichiers. Il est possible d'utiliser une version améliorée qui utilise SQLite (plus rapide).

Des fichiers de configurations sont disponibles ici, celui de ce blog est disponible , et il très facile d'en créer un à la main. Ils ont la forme suivante:

[BfontaineBlogConfig]
SITE_TITLE="Autoblog de bfontaine.net"
SITE_DESCRIPTION="Ce site n'est pas le blog officiel de bfontaine.net<br>C'est un blog automatis&eacute; qui r&eacute;plique les articles de <a href="http://bfontaine.net/blog">bfontaine.net/blog</a>"
SITE_URL=http://bfontaine.net/blog
FEED_URL=http://bfontaine.net/blog/feed/atom
DOWNLOAD_MEDIA_FROM=bfontaine.net

Et cela donne cet autoblog (qui n'a aucune autre utilité que de servir d'exemple à ce billet, puisqu'il est situé sur le même hébergement que l'original). J'héberge personnellement 7 autoblogs, dont celui d'OWNI, de Sebsauvage, ou encore de la Quadrature du Net. Je vous encourage à faire de même, cela prend très peu de place, est très facile à installer, et peut être d'une grande utilité.

À noter que si vous êtes sous Dotclear et que vous voulez que d'autres dupliquent votre blog, pensez à décocher la case "Tronquer les flux de syndicalisation" dans les paramètres du blog. Sans cela, les articles ne seront dupliqués qu'en partie, avec un lien invitant à visiter le blog pour lire la suite...