Affichage des articles dont le libellé est informatique. Afficher tous les articles
Affichage des articles dont le libellé est informatique. Afficher tous les articles

5/15/2010

Gource et Dokuwiki

J'ai découvert comme tout un chacun les superbes vidéos de Gource permettant de faire une représentation des modifications faites sur un système de gestion de version comme GIT ou SVN. Je me suis alors rappelé que mon wiki préféré (DOKUWIKI) est lui aussi un système de gestion de version comme un autre... Il suffit en effet de soulever le capot et d'aller regarder dans l'arborescence des dossiers pour y trouver le dossier "data/meta" dans lequel les fichiers "*.changes" renferment justement les informations recherchées. Par exemple, le fichier "systemes_visualisation.changes" ressemble à :
1263135717 ::1 C informatique:systemes_visualisation Wolverine créée
1263135988 ::1 E informatique:systemes_visualisation Wolverine
1263136423 ::1 E informatique:systemes_visualisation Wolverine

Explication :
  1. Le première colonne est un Unix Timestamp,
  2. la deuxième est l'adresse IP (je suis en localhost ;-) ),
  3. la troisième l'action réalisée (C pour créée, E pour éditée,...),
  4. la quatrième est claire, la cinquième est l'identifiant de la personne ayant modifié la page
  5. et enfin la dernière colonne est le petit texte que vous pouvez remplir quand vous modifiez une page...
Que faire de tout ça pour le faire lire à Gource, rien de plus simple, il suffit de transformer cette arborescence en un fichier de log compréhensible par Gource. Pour ce faire, j'ai développé un petit script python, nommé gourcedoku.py :
#!/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 os.path
import getopt
import sys
import re



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)
myfile = open(fichier, 'r')
for line in myfile.readlines():
mots = line.split()
if len(mots)>=5:
resultat = mots[0] + "|"
resultat += mots[4] + "|"
resultat += translate(mots[2]) + "|"
resultat += fichier
print resultat
elif len(mots)==4:
resultat = mots[0] + "|Anonymous|"
resultat += translate(mots[2]) + "|"
resultat += fichier
print resultat
myfile.close()
def translate(mot):
"""translate the dokuwiki vocabulary to the gource one
C -> A
E -> M
other -> M
"""
if mot == "C":
return "A"
elif mot == "E":
return "M"
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 listdirectory2(arg)


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"


#print listdirectory2(sys.argv[1])

if __name__ == "__main__":
main(sys.argv[1:])
Pour le lancer, rien de plus simple : il suffit de se placer dans l'arborescence de son magnifique dokuwiki et la commande magique :
python gourcedoku.py -d ~/Sites/MyDokuwiki/ | sort > dokusort.log
puis visualiser le résultat avec Gource avec la commande suivante :
gource --log-format custom dokusort.log --stop-position 1.0 --stop-on-idle --file-idle-time 10000000
Je vais essayer de mettre ce code sur le site de Gource pour la communauté ;-) N'hésitez pas à me poser des questions ou à améliorer mon script.

1/24/2010

Chromoxy

Je viens de parcourir l'article de LifeHacker sur comment bloquer les publicités dans le navigateur Chrome de Goolge... ce serait un peu comme l'extension AdBlock Plus pour Chrome ;-) voir même encore un peu plus que seulement filtrer les publicités sur Chrome... Je me suis dit que c'est pas mal mais pas très automatique ;-) j'ai donc écrit un petit script pour cela :

#!/bin/sh

# Demarrage de Privoxy
cd /Applications/privoxy/
./privoxy &

# demarrage de Chrome
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxy-server="http://127.0.0.1:8118"

# retour maison
cd
et en utilisant Platypus, il devient super facile de créer ensuite une véritable application :

Facile non ;-) si vous êtes intéressés, je peux continuer à développer cette "application". J'attends vos retours

12/13/2009

Utiliser les icônes Mac OS X dans Visio


Vous connaissez certainement le programme Visio de suite Microsoft Office qui permet de faire de très beaux schémas... le seul petit hic, ce sont les icônes qui elles sont particulièrement moches... Je vous propose donc deux petites techniques pour importer les très belles icônes de Snow Leopard dans votre Visio.

Première méthode : à la main

Sélectionnez l'application dont vous voulez récupérer l'icône (avec le fameux Pomme+C), puis ouvrez l'application Aperçu
et choisissez "Créer à partir du presse-papiers"
il ne vous reste plus qu'à enregistrer sous et choisir le format PNG. Vous pouvez maintenant importer votre image dans Visio.

Deuxième méthode : avec un script

La précédente méthode permet d'extraire une image à la fois, si vous voulez récupérer toutes les icônes d'un Mac OS X, vous pouvez utiliser le script python suivant :

#!/bin/python

import os
import re

text = "0000"
out = "~/Pictures/"

stdout_handle = os.popen("find / -name *.icns", "r")
while (text!=""):
text = stdout_handle.readline()
regnamefile = re.compile('\/([^//]*)\.icns')
namefile = regnamefile.findall(text)[0]
regline = re.compile('(\/.*\.icns)')
line = regline.findall(text)[0]
os.system("sips -s format png "+line+" --out "+out+namefile+".png")
Attention à l'indentation, c'est du python ;-) ... Vous cherchez dans un premier temps l'ensemble des fichiers au format icns (c'est le format des icônes de Mac OS X ;-) ;-) ), puis vous appliquez une transformation de format grâce à l'utilitaite sips disponible sous Mac OS X. L'ensemble des fichiers au format PNG sera disponible dans votre répertoire photos...

Voilà ;-) j'espère que vous ferez de beaux schèmas après ça.


6/26/2009

Comment changer une icone sur Mac OS X

Je me suis longtemps posé la question ;-) surtout quand je branche plusieurs clé USB en même temps... C'est en fait très simple :
  1. cliquer 1 fois sur l'icone de la clé
  2. puis Pomme + I (permet d'ouvrir le volet information d'un fichier ou d'un dossier)
  3. faites glisser votre nouvelle icone en haut à gauche (il y a une petite icone, c'est celle que vous allez remplacer)
Voilà c'est tout ;-) Voilà ce que ça donne chez moi :
NB : ma clé USB est noire

6/03/2009

Lire en même temps des fichiers ac3 et avi

Il vous est certainement déjà arrivé d'avoir une vidéo dans une langue donnée (par exemple du russe ou du chinois) et de vouloir avoir la bande son québécoise (c'est beaucoup plus marrant que la française "Hein René !"). C'est pourquoi vous avez parfois deux fichiers :
  • un fichier avi qui contient le film et une bande son (mais pas la bonne)
  • un fichier ac3 qui contient la bonne bande son
Pour pouvoir lire les deux en synchrone, je vous conseille d'utiliser le couteau suisse de la vidéo : VLC développé par nos chers amis centraliens... Sous Mac OS X (désolé c'est le seul bon système d'exploitation que j'ai actuellement sous la main), il vous suffit de lancer la ligne de commande suivante :

/Applications/VLC.app/Contents/MacOS/VLC monfilm.avi --input-slave='monfilm.ac3'

Il ne vous reste plus qu'à choisir votre bande son dans l'onglet "audio" de VLC. Bonne vidéo ;-)


Ce ne doit pas être bien plus compliqué sous Linux, par contre sous Windows, je ne sais pas si VLC peut être lancé en ligne de commande

11/16/2008

Gmail et la vidéo

ça y est Gmail se tourne aussi vers la vidéo :



finalement pas grand chose de neuf par rapport à MSN messenger... Google continue seulement à rattrapper son retard sur le géant de Redmond...

6/15/2008

Firefox 3 et la gestion des Bookmarks

Juste une petite vidéo expliquant comment Firefox 3 révolutionne la gestion des bookmarks... ça c'est le genre de trucs que j'adore et que je sens que je vais utiliser...

6/07/2008

Howto : utiliser Wikicalc dans Mediawiki

L'extension médiawiki wikicalc permet d'inclure une feuille de calcul wikicalc dans une page du mediawiki, au moyen d'une nouvelle balise.

La feuille de calcul apparaît dans un cadre avec 2 liens :

  • Modifier la feuille de calcul : renvoie directement vers le serveur wikicalc (requiert un login/mdp selon la configuration de wikicalc). Ne pas oublier de publier la page (onglet publish) pour enregistrer la nouvelle feuille de calcul.
  • Actualiser : permet de regénérer le cache de la page (nécessaire après avoir modifié la feuille de calcul sur wikicalc).

Pour intégrer une feuille de calcul dans une page, il faut utiliser la balise . Par exemple :



Pour créer une nouvelle feuille de calcul, rendez-vous à l'adresse suivante : http://wikicalc.wolverinex02.googlepages.com/wikicalccgi.pl


Filtrage selon la couleur

L'attribut important permet de n'afficher que les lignes contenant au moins une cellule de couleur rouge.



Pour plus de flexibilité, l'attribut color= est aussi présent. Cela marche comme l'attribut important sauf qu'on peut choisir la couleur.



Installation de l'extension

Ajouter dans LocalSettings.php :

###Extension wikicalc##

require_once("$IP/extensions/wikicalc.php");


Créer le nouveau fichier ''extensions/wikicalc.php'' :

/**
*
*
*
* SYNOPSIS
*
* <include src="[URL]" [important] [color="[r,v,b]"] />
*
* INSTALL
*
* Placer ce script dans le dossier 'extensions' de mediawiki :
* "$IP/extensions/wikicalc.php"
* o˘ $IP est le chemin d'installation de MediaWiki.
* Ensuite, ajouter cette ligne dans LocalSettings.php:
* require_once("$IP/extensions/wikicalc.php");
*
* DESCRIPTION
*
* Cette extension vous permet d'inclure une feuille de calcul wikicalc dans
* une page mediawiki.
*
* ATTRIBUTES
*
* La balise doit toujours avoir au moins un attribut 'src'.
*
* src="[URL]"
* Vous devez inclure 'src' pour indiquer l'URL de la feuille de calcul html.
*
* important
* Seulement les lignes contenant des cellules rouges seront affichées.
*
* color="[r,v,b]"
* Seulement les lignes contenant des cellules de la couleur indiquée seront
* affichÈes.
* Remarque : color="255,0,0" est équivalent au tag 'important'
*/



$wgExtensionFunctions[] = "wf_wikicalc"; $wgExtensionCredits['other'][] = array (

'name' => 'wikicalc',
'author' => 'Matthieu',
'url' => 'yenapa',
'description' => 'Permet d\'inclure une page html distante crÈÈe par wikicalc.',


)

function wf_wikicalc() {

global $wgParser;
$wgParser->setHook( "wikicalc", "render_wikicalc" );


}


/**

* parse_color
*
* retire les lignes (...) contenant des cellules de la couleur $color
*
* $color est une chaine de caractères de la forme "r,v,b" où r,v,b sont des
* entiers entre 0 et 255.
* Par ex : "255,0,0" pour le rouge
*
*/


function parse_color( $table, $style, $color ) { // on recherche le nom des classes css qui correspondent à la bonne couleur de fond. preg_match_all("/\.(s[\d]+) \{[^\}]*background-color:rgb\(".$color."\)[^\}]*}/s", $style, $css_matches, PREG_SET_ORDER);

$tr = "";

// on utilise "/pattern/s" pour éviter le pb des retours à la ligne. // le "?" permet d'inverser la 'greediness' de la regex. preg_match_all("/.*?<\/tr>/s", $table, $tr_matches, PREG_SET_ORDER); foreach ($tr_matches as $tr_tmp) {

foreach ($css_matches as $css_tmp) {

if ( ereg ('(.*)', $tr_tmp[0])) { $tr .= $tr_tmp[0]; } } }

return preg_replace("/.*&<\/tr>/s", $tr, $table); }


/**

* render_wikicalc
*
* This is called automatically by the MediaWiki parser extension system.
* This does the work of loading a file and returning the text content.
* $argv is an associative array of arguments passed in the tag as
* attributes.
*
* @param mixed $input unused
* @param mixed $argv associative array
* @param mixed $parser unused
* @access public
* @return string
*/
function render_wikicalc ( $input , $argv, &$parser )
{
if ( ! isset($argv['src']))
return "ERROR: tag is missing 'src' attribute.";

$output=file_get_contents($argv['src']);
if ($output === False)
return "ERROR: include could not read the given src URL.";

if (ereg ("()", $output, $table_reg)) {
$table = $table_reg[1];
} else {
echo "erreur ";
}

if (ereg ("()", $output, $style_reg)) {
$style = $style_reg[1];
$style = ereg_replace("body[^\}]*}", "", $style);

} else {
echo "erreur ';
$purge = '[[{{fullurl:{{FULLPAGENAME}}|action=purge}} {{{1|Actualiser}}}]]';

$parsedText = $parser->parse($purge, $parser->mTitle, $parser->mOptions, false, false);
$purge = $parsedText->getText();

return $style2.$style.'
'.$purge.$edit.'
'.$table.'
';
}
?>





Gestion de la concurrence

Les conflits d'édition ne sont pas aussi bien gérés que dans mediawiki.

Si 2 personnes modifient en même temps une feuille de calcul wikicalc, elles peuvent voir les modifications des autres en actualisant la page (en passant de l'onglet edit à publish par exemple).

Par contre, si les 2 personnes modifient en même temps la même cellule, c'est la dernière modification qui est prise en compte (la précédente est écrasée).

6/03/2008

Installation de Wikicalc : le plus beau des tableurs 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 :
apt-get install apache2 libapache2-mod-perl2
Puis 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

5/25/2008

Connaissez-vous cet homme ?

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

12/16/2007

Orange & France Telecom... Qui fait quoi ?

Je suis chez Orange, oui, je sais, je devrais plutôt passer chez Free ou Neuf ou encore Alice... ;-) mais à ma décharge je suis tout de même en dégroupage total. Si si c'est possible même chez Orange/France Telecom. Donc normalement , si je suis logique je ne dois recevoir que des factures Orange, même lorsque j'utilise la VOD... Eh ben non, ce n'est pas le cas : mes factures VOD viennent de France Telecom et si vous les appelez pour leur demander la raison on vous répond que eux aussi aimeraient bien la connaître ;-) c'est beau les mamouths qui s'emmelent les pinceaux...

Donc pour M.Orange et Mme France Telecom :

12/09/2007

Perl et le CPAN

Perl est un langage exceptionnel pour sa richesse et ses fonctionnalités. Ce qui fait le gros plus de ce langage ce sont tous les modules que vous pouvez trouver sur le site du CPAN, qui vous permettront de créer des robots pour le web, des scripts pour gérer vos messages et autres... Pour l'instant je ne faisais mes installation qu'à partir de ma distribution préférée par l'intermédiaire d'un apt-get install ... Mais cette solution n'est pas optimale ;-) au détour d'une page web, j'ai trouvé cette astuce que je m'empresse de partager avec vous :

sudo perl -MCPAN -eshell


Maintenant amusez-vous avec Perl et surtout publiez vos modules sur CPAN pour que toute la communauté puisse en profiter ;-)


9/16/2007

Une histoire de logos...

J'ai rencontré un informaticien qui m'a raconté pas mal de petites histoires sur les logos des grands noms de l'informatique :Le logo d'Apple serait ainsi un hommage au grand mathématicien Alan Turing. En effet Alan Turing s'est suicidé en mangeant une pomme imprégnée de cyanure. Poursuivi pour son homosexualité par la société anglaise et obligé de choisir entre la prison et un traitement aux oestrogènes, le grand Alan Turing a préféré se suicider... En hommage au travail de ce mathématicien pour l'informatique, la société Apple a choisi cette pomme croquée, un peu à la Blanche Neige...
Tout le monde connait Java, développé par Sun (soleil en anglais, gardez cela en mémoire pour la suite) et dont le symbole est une tasse à café... Le projet Debian a donc choisi ce tourbillon, apparaissant dans les tasses à café... Intéressant non ?



mais je préfère le cas IBM : qui a choisi de nommer Eclipse, son framework pour Java. En effet le soleil, SUN, devait être eclipsé par le nouveau projet d'IBM... Alors qui a dit que les informaticiens sont des personnes sérieuses ? Personnellement je pense que je vais raconté ça demain à ma classe... ça en inspirera peut être certains...