#!/bin/python
"""
This program parse logs of a dokuwiki
and tranform them for gource (a log viewer)
http://code.google.com/p/gource/
developped by WolverineX02
site : http://wolverinex02.blogspot.com
"""
import glob
import os.path
import getopt
import sys
import re
WHITE = "11FFAA"
GREEN = "00F000"
vector = (1,10,100)
start_page_name = "start"
def RGBToHTMLColor(rgb_tuple):
""" convert an (R, G, B) tuple to #RRGGBB """
hexcolor = '#%02x%02x%02x' % rgb_tuple
# that's it! '%02x' means zero-padded, 2-digit hex values
return hexcolor
def HTMLColorToRGB(colorstring):
""" convert #RRGGBB to an (R, G, B) tuple """
colorstring = colorstring.strip()
if colorstring[0] == '#': colorstring = colorstring[1:]
if len(colorstring) != 6:
raise ValueError, "input #%s is not in #RRGGBB format" % colorstring
r, g, b = colorstring[:2], colorstring[2:4], colorstring[4:]
r, g, b = [int(n, 16) for n in (r, g, b)]
return (r, g, b)
def colormodify(colorstring):
rgb_tuple = HTMLColorToRGB(colorstring)
r, g, b = (rgb_tuple[0]+vector[0]) % 255,(rgb_tuple[1]+vector[1]) % 255,(rgb_tuple[2]+vector[2]) % 255
return RGBToHTMLColor((r, g, b))
def listdirectory(path,color):
l = glob.glob(path+"/*")
for i in l:
if os.path.isdir(i):
listdirectory(i,colormodify(color))
else:
readfile(i,color)
def listdirectory2(path):
"""list all the files like *.changes,
read them and output them in gource's log syntax
"""
for root, dirs, files in os.walk(path):
for i in files:
if (re.search('\.changes$', i)):
fichier = os.path.join(root, i)
readfile(fichier,GREEN)
def readfile(fichier,color):
"""read the file and output for each line of this
file a log line for Gource
"""
myfile = open(fichier, 'r')
for line in myfile.readlines():
mots = line.split('\t')
if len(mots)>=6:
resultat = mots[0] + "|"
if mots[4] == '':
mots[4] = 'Anonymous'
resultat += mots[4] + "|"
resultat += translate(mots[2]) + "|"
resultat += mots[3].replace(':', '/')
if mots[3].rfind(start_page_name) == len(mots[3])-len(start_page_name):
resultat += "|" + color
else:
resultat += "|" + colormodify(color)
print resultat
myfile.close()
def translate(mot):
"""translate the dokuwiki vocabulary to the gource one
C (also cc and sc from discussion plugin) ->A
E (also ec from discussion plugin) -> M
D (also dc and hc from discssion plugin) -> D
other -> M
"""
if mot.upper == "C" or mot == 'cc' or mot == 'sc':
return "A"
elif mot.upper == "E" or mot == 'ec':
return "M"
elif mot.upper == "D" or mot == 'dc' or mot == 'hc':
return "D"
else:
return "M"
def main(argv):
"""principal function
"""
try:
opts, args = getopt.getopt(argv, "hd:", ["help", "dokuwiki="])
except getopt.GetoptError:
usage()
sys.exit(2)
for opt, arg in opts:
if opt in ("-h","--help"):
usage()
sys.exit()
elif opt in ("-d","--dokuwiki"):
print listdirectory(arg,WHITE)
def usage():
"""this function will display how to use this script
"""
print "This script will output change logs of a dokuwiki"
print "in a friendly way for gource"
print "how to use it :"
print "python gourcedoku.py -d ~/Sites/MyDokuwiki/ | sort > dokusort.log"
print "and then :"
print "gource --log-format custom dokusort.log --stop-position 1.0 \ "
print "--stop-on-idle --file-idle-time 10000000"
print "---"
print "-h : help "
print "-d : meta directory of your dokuwiki"
if __name__ == "__main__":
main(sys.argv[1:])
Wednesday, May 19, 2010
Gource et Dokuwiki : en couleur
ça y est suite aux différentes demandes, je viens d'ajouter la coloration de la représentation Gource. Vous pouvez donc télécharger la nouvelle version.
Tuesday, June 03, 2008
Wikicalc : le premier tableur collaboratif OpenSource
Comme je l'ai indiqué dans mon dernier poste : WikiCalc est un tableur collaboratif fonctionnant sur le principe du wiki. Il est complètement écrit en perl. Pour l'installer, rien de plus simple, il suffit de commencer par installer les outils nécessaires sur sa bonne vieille Debian :
Reste encore à rendre Wikicalc accessible depuis votre serveur Web : par rapport à la configurationi par défaut, il suffit d'y ajouter :
Pour finir l'installation, rendez-vous sur http://wikicalc.monsite.com/wikicalccgi.pl et suivez les instructions....
Maintenant à vous de jouer
apt-get install apache2 libapache2-mod-perl2Puis de télécharger les sources : wikicalc-1-0.tar.gz. Ensuite peut commencer l'installation proprement dite :
cd /var/www
tar xvzf wikicalc-1-0.tar.gz
ln -s wikicalc-1-0 wikicalc
Reste encore à rendre Wikicalc accessible depuis votre serveur Web : par rapport à la configurationi par défaut, il suffit d'y ajouter :
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/wikicalc/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/wikicalc/>
Options Indexes FollowSymLinks MultiViews ExecCGI
AddHandler cgi-script .cgi .pl
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
On charge le module perl :
a2enmod perl
/etc/init.d/apache2 restart
Pour finir l'installation, rendez-vous sur http://wikicalc.monsite.com/wikicalccgi.pl et suivez les instructions....
Maintenant à vous de jouer
Connaissez-vous Dan Bricklin ???
Cet homme s'appelle Dan Bricklin, il a écrit le programme Visicalc. Comment ça vous ne connaissez pas Visicalc ??? Eh bien, c'est l'ancêtre d'Excel ou de Calc (OpenOffice)... Mais contrairement à Bill, Dan a préféré ne pas copyrighter son oeuvre... Merci Dan ;-)
Pourquoi vous parler de Dan Bricklin ? Simplement parce qu'il est en train de développer un super outil, toujours dans la même optique : un tableur collaboratif nommé Wikicalc. Je l'utilise pour les notes de nos élèves et y reporter les notes avec mes collègues... Adieu les tableaux Excels qu'on ne peut ouvrir qu'en lecture seule parce que votre collègue l'a modifié le matin mais a oublié de le fermer... En plus cet outil a le bon goût d'être Open Source et de reposer sur Perl (un langage que j'adore donc je le souligne ;-) J'espère que beaucoup d'autres personnes vont participer au développement de cet outil, qui je l'espère va concurrencer et peut être remplacer Google Docs... Révons d'un monde totalement Open Source ;-) Amusez-vous bien avec ce nouvel outil promis je l'espère à un grand avenir
Pourquoi vous parler de Dan Bricklin ? Simplement parce qu'il est en train de développer un super outil, toujours dans la même optique : un tableur collaboratif nommé Wikicalc. Je l'utilise pour les notes de nos élèves et y reporter les notes avec mes collègues... Adieu les tableaux Excels qu'on ne peut ouvrir qu'en lecture seule parce que votre collègue l'a modifié le matin mais a oublié de le fermer... En plus cet outil a le bon goût d'être Open Source et de reposer sur Perl (un langage que j'adore donc je le souligne ;-) J'espère que beaucoup d'autres personnes vont participer au développement de cet outil, qui je l'espère va concurrencer et peut être remplacer Google Docs... Révons d'un monde totalement Open Source ;-) Amusez-vous bien avec ce nouvel outil promis je l'espère à un grand avenir
Thursday, February 15, 2007
Sony Ericsson w810i et Linux
Malgré tous les problèmes que j'ai pu avoir pour arrêter mon abonnement téléphonique chez Orange , je suis tout de même retourné chez eux pour mon nouvel abonnement
, ce ne sont pas les plus pourris , mon choix c'est peut être porté un peu vite sur le Sony Ericsson w810i , j'aurais du vérifier la compatibilité de ce téléphone avec Linux... En effet j'aimerais pouvoir le synchroniser avec Kontact , notamment le calendrier, le To-Do et la liste des contacts... Si comme moi vous avez de gros doigts: les clavier des téléphone portable doit être pour vous aussi un cauchemar
Le bon point du Sony Ericsson w810i est qu'il est fourni avec un cable USB pour le connecter avec votre PC, quand il se connecte, deux modes sont disponibles:
, ce ne sont pas les plus pourris , mon choix c'est peut être porté un peu vite sur le Sony Ericsson w810i , j'aurais du vérifier la compatibilité de ce téléphone avec Linux... En effet j'aimerais pouvoir le synchroniser avec Kontact , notamment le calendrier, le To-Do et la liste des contacts... Si comme moi vous avez de gros doigts: les clavier des téléphone portable doit être pour vous aussi un cauchemar
Le bon point du Sony Ericsson w810i est qu'il est fourni avec un cable USB pour le connecter avec votre PC, quand il se connecte, deux modes sont disponibles:
- Transfert de fichier
- Mode téléphone
- Kandy: mouais... ça ne fonctionne pas!
- Kmobiletools: fonctionne très bien mais ne répond absolument pas à mon cahier des charges
- Wammu/Gammu: interface X très moche mais semble plutôt bien fonctionner quand il ne plante pas
- Gnokii: s'utilise en ligne de commande et nécessite de créer soi même un fichier de configuration, c'est normalement ce qu'utilise Kontact mais ça ne fonctionne pas très bien
- GCALSYNC: ça s'écarte un peu de ma vision USB et locale, mais ça me permettra au moins de gérer correctement mes rendez-vous.
Saturday, December 16, 2006
Mis à jour des clé Debian
Ce matin, en voulant mettre à jour ma Debian, je suis tombé sur ce message :
Lecture des listes de paquets... FaitDans ces cas là, deux choses sont envisageables: la version de la clé en mémoire à expire: il vous faut la recharger ou bien le serveur est compromis ... Dans tous les cas, il vous suffit de recharger la clé pour vous assurer que tout va bien, pour cela en tant que root:
W: Aucune clé publique n'est disponible pour la/les clé(s) suivante(s) :
A70DAF536070D3A1
W: Aucune clé publique n'est disponible pour la/les clé(s) suivante(s) :
A70DAF536070D3A1
W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
# gpg --recv-key --keyserver wwwkeys.eu.pgp.net A70DAF536070D3A1Si vous ne tombez pas sur ce message... C'est qu'il y a un gros problème et que le serveur a été compromis ... Ne rigolez pas cela peut arriver même aux meilleurs... Si tout se passe bien comme c'est le cas pour moi, il faut ensuite ajouter la clé au programme apt:
gpg: requête de la clé 6070D3A1 du serveur hkp wwwkeys.eu.pgp.net
gpg: /root/.gnupg/trustdb.gpg: base de confiance créée
gpg: clé 6070D3A1: clé publique « Debian Archive Automatic Signing Key (4.0/etch)» importée
gpg: aucune clé de confiance ultime n'a été trouvée
gpg: Quantité totale traitée: 1
gpg: importée: 1
# gpg --export A70DAF536070D3A1 | apt-key add -on réessaye et tout fonctionne cette fois: youpi
OK
Tags: apt, gpg, A70DAF536070D3A1, update, compromission
Saturday, December 09, 2006
Firefox & Java
Vous est-il déjà arriver sur une page avec un applet java et que vous ne soyez pas capable de le voir... Voici la solution: il suffit d'installer dans un premier temps le java de SUN (sun-java5-jre)
apt-get install sun-java5-jrele plugin qui va avec... Maintenant allez dans le répertoire des plugins de Firefox:
cd ~/.mozilla/pluginset il ne suffit plus que de créer un lien symbolique:
ln -sfn /usr/lib/jvm/java-1.5.0-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so ./ça y est le tour est joué: amusez vous bien
Tags: java, plugin, sun, firefox, sun-java5-jre
Freemind & Debian
Freemind est une application java, permettant de créer facilement des cartes cognitives. Freemind est publié sous licence GNU GPL. Il existe donc un paquet sous Debian ;-) Installons le... Mais lorsque vous essayez de lancer Freemind, vous allez vous retrouver avec une erreur du genre:
Tags: java, freemind, sun-java5-jre, carte cognitive, cognitif, debian, export
Exception in thread "main" java.awt.AWTError: Cannot load AWT toolkit: gnu.java.awt.peer.gtk.GtkToolkit at java.awt.Toolkit.getDefaultToolkit(libgcj.so.7) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(libgcj.so.7) at java.awt.Window.en fait il ne peut charger le toolkit gnu.java.awt.peer.gtk.GtkToolkit, qu'à cela ne tienne: installons le java de SUN: java-1.5.0-sun (jre) soit:(libgcj.so.7) at java.awt.Frame.(libgcj.so.7) at javax.swing.JFrame.(libgcj.so.7) at freemind.main.FreeMind.(FreeMind.java:68) at freemind.main.FreeMind.main(FreeMind.java:500) Caused by: java.lang.ClassNotFoundException: gnu.java.awt.peer.gtk.GtkToolkit at java.lang.Class.forName(libgcj.so.7) at java.lang.Class.forName(libgcj.so.7) at java.awt.Toolkit.getDefaultToolkit(libgcj.so.7) ...6 more zsh: exit 1 freemind
apt-get install sun-java5-jreRéessayons... Même problème: cela signifie qu'il faut indiquer à Debian où regarder: ajoutons donc ces deux petites lignes:
export PATH=$PATH:/usr/lib/jvm/java-1.5.0-sun/binLa première indique où regarder pour trouver l'application Java, et l'autre où regarder quand on a démarrer Java pour les librairies et autres... Réessayons: ça marche
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun/
Tags: java, freemind, sun-java5-jre, carte cognitive, cognitif, debian, export
Saturday, December 02, 2006
Flash Player 9.0 pour Linux
Youpi, ça y est, je vais enfin pouvoir jouer aux jeux flash et pouvoir profiter entièrement du Web 2.0 basé sur Flex2.0. En plus pour une fois rien de difficile: c'est l'enfance de l'art ;-) il suffit de récupérer le plugin à cette adresse:
http://www.adobe.com/go/fp9_update_b2_installer_linuxplugin
vous le décompressez et il ne suffit plus que de copier libflashplayer.so dans votre répertoire utilisateur des plugins de votre renard préféré (Firefox), ce doit être quelque chose comme: ~/.mozilla/plugins/ ... ça y est redémarrez le renard et en route pour tous les sites en flash (vous pouvez tester un jeu MacDo) And now enjoy ...
http://www.adobe.com/go/fp9_update_b2_installer_linuxplugin
vous le décompressez et il ne suffit plus que de copier libflashplayer.so dans votre répertoire utilisateur des plugins de votre renard préféré (Firefox), ce doit être quelque chose comme: ~/.mozilla/plugins/ ... ça y est redémarrez le renard et en route pour tous les sites en flash (vous pouvez tester un jeu MacDo) And now enjoy ...
Tags: flash player, flash 9, linux, Firefox, Flex2.0
Tuesday, November 28, 2006
De l'interêt de l'Open Source
Connaissez vous Retina et Nessus? Ce sont tous les deux des scanners de vulnérabilités, c'est-à-dire que vous leur fournissez une cible et quelques informations sur cette dernière du genre un nom d'utilisateur et son mot de passe... Et ces deux logiciels vous fournissent un rapport sur les vulnérabilités de la cible... Ils sont tous les deux équipés d'un système de mise à jour (au moins tous les jours). Mais la grande différence est que l'un est libre et multi plateforme (Nessus) et que l'autre ne fonctionne que sous Windows et est payant. Je travaille un peu à la consolidation des résultats issus de ces scanners... je peux vous dire que maintenant je sais vraiment pourquoi je préfère l'open source et le logiciel libre! Nessus fonctionne naturellement avec MySQL, qui est parfaitement géré au PHP, qui est lui même parfaitement intégré à Apache... Alors que Retina ne fonctionne qu'avec SQL Server qu travers d'un DSN et d'un ODBC... Après avoir compris cela, il vous faut encore exploiter la base de données avec du PHP, j'ai bien essayé mssql_connect mais visiblement il faut changer les dll ... Je me suis donc tourné vers une solution ODBC avec PHP... Tout ça en local car la simplicité de SQL Server Express 2005 n'est qu'apparente et je n'ai toujours pas réussi à le faire fonctionner correctement en réseau... Mais bon il paraitrait que parce qu'on paye on a un meilleur service après vente... Oui Monsieur à part si la société a sa solution bricolée qu'elle veut vous refourguer contre paiement... Elle n'est pas belle la vie... Alors les personnes qui ne voient pas l'interêt de l'Open Source et des logiciels libres... c'est très certainement qu'ils ne considèrent l'ordinateur que comme une grosse console qui sert de temps en temps à écrire une lettre au Père Noël...
Tags: Nessus, Retina, Scanner, vulnerabilité, Open Source, MySQL, ODBC, DSN
Subscribe to:
Posts (Atom)