Posts Tagged ‘Open Source’

Présentation de Sonar, “la Logan des outils de qualimétrie”

Sunday, July 6th, 2008

Jeudi dernier, Freddy Mallet nous a fait le plaisir de nous présenter Sonar, l’outil de qualimétrie développé principalement par ses collègues de Hortis. Voici les slides, ainsi que quelques commentaires.

A Valtech, nous apprécions beaucoup cet outil, nettement en avance par rapport à ses concurrents Open Source comme XRadar, QALab ou Panopticode. Aujourd’hui, nous l’utilisons souvent à côté d’un outil tel que Maven Dashboard. Maven Dashboard est très bien pour obtenir des métriques sur un projet simple, mais devient plus difficile à gérer pour de multiples projets. (détail amusant: je suis actuellement sur un projet où travaille également David Vincente, le committer principal sur Maven Dashboard).

A mon avis, les avantages de Sonar sont les suivants:

  • c’est le plus complet des outils de qualimétrie open-source
  • le développement est actif; par exemple, XRadar, le plus ambitieux des autres outils OSS, sorti initialement il y a plus de 4 ans, était considéré mort l’année dernière (une nouvelle version est sortie récemment)
  • l’équipe est ambitieuse: de nombreuses fonctionnalités sont prévues et il semble y avoir les ressources qui conviennent pour les développer
  • l’équipe joue à fond le jeu avec la communauté open-source. Reconnaissant que Sonar ne peut se battre avec les spécialistes des logiciels de qualimétrie propriétaires tels que CAST ou Metrixware, ils ont cherché à s’attirer les faveurs des développeurs eux-mêmes. Le site principal est par exemple passé de http://sonar.hortis.ch/ à http://sonar.codehaus.org/ et la prochaine étape du développement verra l’introduction de plugins, ce qui permettra à un plus vaste public de contribuer.

    Bref, Sonar arrive comme une bouffée d’air frais dans le monde des outils de qualimétrie. Même si son avenir n’est pas encore tout tracé (en particulier, Hortis a une partition délicate à jouer pour rentabiliser les frais de développement), la bienveillance et l’intérêt du monde open-source lui sont déjà assurés. Et le “mindshare“, dans le monde open-source, c’est le critère principal de réussite d’un projet.

  • GWT-Ext : Quelles leçons pour GWT ?

    Wednesday, May 14th, 2008

    Depuis deux semaines, la communauté Open-Source en général et GWT en particulier ne parlent plus que de ça : le changement de licence ExtJS et par extension celui de MyGWT.

    L’idée ici n’est pas de raconter une nouvelle cette histoire: d’autres articles l’ont déjà fait et bien fait (cf. l’excellent billet de Sami, dont je partage entièrement l’avis sur l’inélégance et l’embarras suscité par ce changement de licence), et y revenir n’apporterait pas grand-chose.

    Maintenant que le fracas des échanges passionnés commence à s’estomper, cet épisode m’inspire plusieurs sentiments mitigés concernant l’écosystème GWT.

    Le premier élément de réflexion est l’évidente fragilité de la plateforme. Ainsi, il suffit d’un seul changement, décidé par un seul homme, non salarié de Google qui plus est, pour faire trembler l’édifice tout entier et remettre en cause nombre de développements GWT en cours. Ce simple constant me semble édifiant, et à vrai dire, assez inquiétant.

    L’élément central de cette fragilité n’est sans doute pas à chercher bien loin : du fait de l’incomplétude de GWT est née la notion d’écosystème. En effet, le noyau fourni par Google se limite essentiellement à un (excellent) compilateur Java -> Javascript, qui permet de s’affranchir de l’enfer des moteurs Javascript des différents navigateurs, et au hosted mode permettant le debug en Java du code GWT.

    Pourtant, en dehors de ce compilateur, pas grand-chose : peu de composants graphiques, pas de micro-architecture MVC à la Cairngorm, une intégration avec les serveurs et technologies existantes réduites au plus strict minimum…
    Le manque le plus criant concerne bien entendu les composants graphiques « natifs », dont la pauvreté est clairement rédhibitoire dans une comparaison avec Flex ou une autre plateforme Ajax. Il ne fournit pas de vrai data-grid, ni aucun composant réellement avancé…

    Ainsi, pour combler les différents manques de GWT, plusieurs librairies ont vu le jour : MyGWT, GWT-Ext pour la partie graphique, GWT-SL pour l’intégration avec Spring, Gwittir, etc…

    Développer une application GWT devient donc un puzzle, consistant à assembler différentes librairies Open-Source, généralement développées par des individuels, certes talentueux mais qui n’apportent pas les garanties de pérennité nécessaire à un développement commercial.

    A titre de comparaison, imaginez un monde où Sun ne fournirait que le compilateur et quelques classes de base et que Swing, les servlets, RMI n’étant que des librairies fournies par de simples ingénieurs, qui pourraient tout abandonner du jour au lendemain… Effrayant, n’est-ce pas ?

    Sur ce point, Flex se distingue assez nettement de la philosophie GWT : les librairies Open-Source incontournables (BlazeDS, FlexUnit, Cairngorm…) sont validées et hébergées par Adobe, ce qui assure une stabilité du framework dans son entier.

    C’est d’ailleurs, à mon humble avis, de ce comportement dont devrait maintenant s’inspirer Google : fédérer les librairies jugées « indispensables », les intégrer au framework afin de l’enrichir et d’assurer la pérennité de ces briques nécessaires à tout développement.

    Soyons clair : je pense toujours que GWT est un framework intéressant et riche en potentiel, avec de vrais atouts dans la bataille RIA en cours. Mais sans unification, sans stabilisation de l’écosystème, tout développement reste à la merci d’un revirement individuel, ce qui est clairement peu acceptable dans un environnement industriel où les investissements se chiffrent en dizaines voire centaines de millier d’euros.

    A suivre…

    Diffusez vos vidéos HD en H264 sur le web !

    Wednesday, March 19th, 2008

    Depuis la version 9 (update 3) de flash, le plugin propriétaire présent sur 98% des navigateurs internet, il est possible de lire des fichiers vidéos non plus seulement au format maison .flv (un dérivé de h263) mais aussi au standard H264, codec vidéo très performant !
    Je vous propose de vous même encoder vos vidéos au format H264, à l’aide d’outils libres, ffmpeg en l’occurrence, et d’ensuite les diffuser sur internet via un lecteur de vidéo au format flash, qu’il vous suffira d’insérer dans vos pages web !
    (à vous de voir après si vous préférez laisser la diffusion de vos vidéos à une régie publicitaire comme youtube et consorts !)
    Je me sers de cette procédure pour diffuser des vidéos issues de mon camescope Sony HDR-HC7E en haute définition (1440 PAR 1.33 x 1080 entrelacé) dans une résolution correcte : 960×540p
    Dans tout ce tutorial, le ‘%’ correspond à l’invite de commande de mon shell.

    Installation de FFMPEG du dépôt subversion sur Ubuntu Gutsy 7.10 : (aussi testé sur Ubuntu Feisty 7.04)

    Dans un premier temps :
    %sudo apt-get build-dep ffmpeg
    Selon le man de “apt-get”, “Avec la commande build-dep, apt-get installe ou supprime des paquets dans le but de satisfaire les dépendances de construction d’un paquet source.”
    Ensuite, installons les librairies multipmédias nécessaires et aussi Subversion, car nous allons avoir besoin de récupérer la toute dernière version de ffmpeg :
    %sudo apt-get install liblame-dev libfaad2-dev libfaac-dev libxvidcore4-dev liba52-0.7.4 liba52-0.7.4-dev libx264-dev libdts-dev checkinstall build-essential subversion
    On récupèrele code source de ffmpeg par svn :
    svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
    Il est temps de compiler ffmpeg, pour cela, rendons nous dans le répertoire du ffmpeg récemment récupéré :
    %cd ffmpeg
    Au cas où vous avez déjà compilé : (sinon çà fait pas de mal)
    %make distclean
    on configure :
    %./configure --enable-gpl --enable-pp --enable-libvorbis --enable-libtheora --enable-liba52 --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable-libfaad --enable-libfaac --enable-libxvid --enable-pthreads --enable-libx264
    et on compile :
    make
    Ça prend un peu de temps, mais au bout, vous obtiendrez dans votre répertoire un ffmpeg compilé avec le support de h264 (entre autres encodeurs).
    Vous pourriez l’installer avec sudo checkinstall et sudo make install, mais je préfère le garder à part de /usr/bin au cas où un jour je veuille utiliser le ffmpeg de ma distrib)
    Tant que nous sommes à la compilation, compilons qt-faststart (j’explique peu après à quoi sert qt-faststart : déplacer les entêtes, les metadata, au début du fichier video):
    Compiler qt-faststart.c

    gcc -O3 -g -Wdeclaration-after-statement -Wall -Wno-switch -I -I$REP_SVN_FFMPEG/ffmpeg -I$REP_SVN_FFMPEG/ffmpeg/libavutil -I$REP_SVN_FFMPEG/ffmpeg/libavcodec -I$REP_SVN_FFMPEG/ffmpeg/libavformat -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE $REP_SVN_FFMPEG/ffmpeg/tools/qt-faststart.c -o qt-faststart

    en remplaçant $REP_SVN_FFMPEG par le chemin complet du répertoire du ffmpeg récupéré par svn.
    Et voilà, fini pour l’installation ! place à l’utilisation !

    Encodage du fichier video en H264

    En remplaçant $REP_SVN_FFMPEG par le chemin complet du répertoire du ffmpeg récupéré par svn,

    $REP_SVN_FFMPEG/ffmpeg/ffmpeg -i ma_video.m2t -vcodec libx264 -b 800k -ab 128k -s 960×540 -deinterlace ma_video.mov

    cà peut être (très, 5fps) long …

    Déplacement de l’entête MOOV ATOM au début du fichier

    Malheureusement, si vous laissez la vidéo obtenue telle quelle, avant de pouvoir la visionner, vous serez obligé de la télécharger en entier; car les métadata du fichier, MOOV ATOM, sont placées à la fin du fichier, et non au début.
    C’est alors que qt-faststart rentre en scène :

    $REP_SVN_FFMPEG/ffmpeg/tools/qt-faststart ma_video.mov ma_video_fast.mov

    Pour diffuser votre vidéo sur le web, vous pouvez utiliser la dernière version de FlowPlayer, et consulter mon article à son sujet ! (j’essaierai de le mettre plus à jour prochainement !)

    Bonne diffusion !

    Références :
    How to encode in H264 for web broadcasting
    La mailing list du site officiel de FFMPEG
    La communauté de FlowPLayer à propos de H264

    Solution de sauvegarde locale et distante avec rsync

    Saturday, February 16th, 2008

    Qui n’a jamais perdu des fichiers lors d’un crash de disque dur ? ou de la machine tout entière ?
    Dans cet article je vous expliquer quels sont les moyens que j’ai mis en œuvre pour sauvegarder les données qui se situent sur mon serveur de fichiers (qui contient mes documents personnels, ma musique, mes photos, etc..) dans mon appartement.
    Rsync est un logiciel qui construit des sauvegardes incrémentales, c’est à dire qu’il transfert entre chaque sauvegarde que le delta observé entre les 2.
    Les machines concernées sont sous Ubuntu Server 7.10 mais l’article reste valide pour toute Ubuntu ou Debian.

    Sauvegarde locale

    La sauvegarde locale consiste à sauvegarder certains répertoires d’un disque vers un autre disque, dans la même machine (mon serveur de fichiers en l’occurrence) de manière périodique (toutes les semaines).
    En l’occurrence sur la partition /dev/hda1 j’ai les répertoires /home /var /etc à sauvegarder; pour cela j’ai la partition /dev/sda2 (sur un disque différent donc) qui est montée sur le pointe de montage /backup
    Ainsi mon script cron (sauvegarde.sh, executable bien sûr) à lancer toutes les semaines est le suivant :

    #!/bin/sh
    #############################
    # SAUVEGARDES LOCALES #
    #############################
    #sauvegarde du repertoire etc
    rsync -avz –delete /etc /backup/
    #sauvegarde du repertoire var
    rsync -avz –delete /var /backup/
    #sauvegarde du repertoire home
    rsync -avz –delete /home /backup/

    L’option “-avz” signifie que la sauvegarde (le transfert) des fichiers sera récursif; les fichiers seront tranférés en mode “archive” qui garantit que les les liens symboliques, les attributs,les permissions, les droits, etc… seront préservés lors du transfert; de plus une compression sera utilisée lors du tranfert (qui n’affectera pas vos fichiers)
    l’option “–delete” signifie elle que lorsque l’on supprimera un fichier sur /etc par exemple, il devra être supprimé aussi de /backup/etc/ lors de la sauvegarde. (si vous ne mettez pas cette option, votre /backup risque de se remplir très rapidement !!!)

    Mise en place du “job” cron

    Pour appeler le script de sauvegarde sauvegarde.sh, il faut l’indiquer dans une table cron; pour cela je vous renvoie au tutoriel cron d’ubuntu-fr.org
    En particulier, le script de sauvegarde doit être lancé par un utilisateur ayant accès à l’ensemble du système de fichiers.
    Plutôt que d’utiliser root, nous allons créer un nouvel utilisateur , “sauvegarde” qui fera partie du groupe root, et autres groupes utilisateurs nécessaires pour qu’il puisse sauvegarder l’ensemble des répertoires spécifiés.
    Son “home directory” sera /backup
    % sudo useradd -d /backup -g root -G anthony sauvegarde
    donnez lui l’appartenance de ce répertoire:
    % sudo chown -R sauvegarde:root /backup
    Ainsi, le script sauvegarde.sh doit être accessible et lancé par notre nouvel utilisateur sauvegarde; pour cela, créez une nouvelle crontab pour l’utilisateur sauvegarde :

    % sudo crontab -u sauvegarde -e

    Votre éditeur (vi ou emacs) se lance, insérez la ligne suivante :
    @weekly /chemin_ou_situe/sauvegarde.sh #sauvegarde

    çà y est !
    votre sauvegarde locale est créée, vous être à l’abri du crash du disque contenant /home /etc et /var !!
    Mais si votre machine est victime d’une surtension,et que tous les disques sont endommagés, vous perdrez tout !!!

    Sauvegarde distante

    Pour se prémunir d’un dégât, d’un vol, d’un incendie, il faut sauvegarder vos données vers une machine distante.
    Si vous possédez un serveur dédié (ou si un ami ou autre personne de confiance vous donne accès à son serveur) vous pouvez alors mettre en place une solution de sauvegarde distante.
    Pour cela, compléter le fichier sauvegarde.sh en y rajoutant ces lignes :

    #############################
    # SAUVEGARDES DISTANTES #
    #############################
    serveur=”mon.serveur.dedie.fr”
    #sauvegarde du repertoire home
    rsync -avz –delete /backup/home $serveur:/backup/
    #sauvegarde du repertoire etc
    rsync -avz –delete /backup/etc $serveur:/backup/
    #…

    Comme vous pouvez le constater, avec rsync, une sauvegarde locale ou distante est traitée de la même manière, la syntaxe est identique, au $serveur: près.
    Bien entendu pour que tout ceci fonctionne, vous devez, sur la machine distante, créer un utilisateur sauvegarde , avec pour “home directory” /backup (répertoire à créer sur la machine distante).
    % sudo useradd -d /backup sauvegarde
    donnez lui l’appartenance de ce répertoire:
    % sudo chown -R sauvegarde:sauvegarde /backup
    donnez à votre utilisateur sauvegarde un mot de passe (fort de préférence) :
    % sudo passwd sauvegarde
    Aussi, pour permettre à votre machine locale de se connecter à la machine distante, sans intervention de votre part (sans demander de mot de passe donc) vous devez créer un couple de clés DSA.
    Sur la machine locale, logguez vous en utilisateur sauvegarde :
    % sudo su sauvegarde
    et créez votre couple de clés DSA :

    $ ssh-keygen -t dsa
    Generating public/private dsa key pair.
    Enter file in which to save the key (/backup/.ssh/id_dsa):
    Created directory ‘/backup/.ssh’.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /backup/.ssh/id_dsa.
    Your public key has been saved in /backup/.ssh/id_dsa.pub.
    The key fingerprint is:
    XXXXXXXXXXXXX sauvegarde@machine

    Acceptez l’emplacement par défaut pour la création des clefs, et appuyez sur entrée lorsque l’on vous demande une “passphrase” (comme çà, nul besoin de saisir de mot de passe pour utiliser la clef).
    Il n’y a plus qu’à partager la clef publique générée avec la machine distante :
    toujours loggué en utilisateur sauvegarde sur la machine locale :
    ssh-copy-id -i ~/.ssh/id_dsa.pub sauvegarde@machine_distante
    C’est fini, votre utilisateur sauvegarde, sur la machine locale, pouvant se logguer sur la machine distante, votre script cron, sauvegarde.sh, sera lancé toutes les semaines sans problème afin de sauvegarder localement et à distance vos données importantes.
    Vos commentaires sont les bienvenus !

    Références :
    le site officiel de Rsync
    Formation Debian : accès par ssh

    Installation de Java 5 et Tomcat 5.5 sur Ubuntu avec apt

    Monday, September 3rd, 2007

    Avant la licence DLJ, pour installer Java sur Ubuntu il fallait télécharger un installateur binaire, ou utiliser un RPM (qu’il fallait auparavant “alieniser”); autant dire qu’on pouvait dire adieu au système de dépendance et de remise à jour de sa distrib linux préférée…
    Mais les temps ont changé et Sun a choisi de libérer peu à peu son langage phare…
    Aussi il existe désormais dans les dépôts multiverse le paquet “sun-java5-jdk”, que l’on installe le plus simplement du monde avec :
    #apt-get install sun-java5-jdk
    Ah oui, il faut accepter la fameuse licence DLJ à la fin de l’installation…
    Par contre, pour Tomcat (dont les paquets sont dans le dépot universe), il faut faire attention…
    Il se trouve que les dépendances du paquet “tomcat5.5″ référencent non pas la JDK de Sun, mais bien la JDK libre gij, aussi un malheureux :
    #apt-get install tomcat5 tomcat5-admin tomcat5-webapps vous installera certes Tomcat 5.5 mais aussi gij, et sera configuré pour utiliser gij.
    Si vous voulez, comme moi, utiliser Tomcat 5.5 avec la JDK Sun (je n’ai rien contre la gij, mais elle ne me semble pas encore mature, par exemple, il n’est pas possible d’utiliser le “security manager” de Tomcat avec gij), il vous faudra modifier certains fichiers.
    A commencer par /etc/default/tomcat5, décommentez la ligne :
    JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
    Cela permettra à Tomcat de démarrer avec la JDK de Sun.
    Pour le reste, mettez par défaut votre JAVA_HOME à /usr/lib/jvm/java-1.5.0-sun en exécutant :
    export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
    Enfin, il existe un répertoire, /etc/alternatives , qui contient des liens symboliques vers des logiciels par défaut de votre distribution.
    Repérez les liens vers tout ce qui commence par java :
    ls -al /etc/alternatives/java*
    vous verrez notamment que java et javac (le compilateur) pointent vers gij et gcj…
    Il vous faut pour être sûr de toujours travailler avec la JDK de Sun, refaire ces liens en tapant, dans le répertoire /etc/alternatives :

    #rm java
    #ln -s /usr/lib/jvm/java-1.5.0-sun/bin/java
    #rm javac
    #ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javac

    Après cela, vous ne devriez plus entendre parler de gij, et bénéficier des mises à jour de Tomcat5.5 et de la JDK Sun 5

    Pour ce billet, je me suis beaucoup inspiré de la page Tomcat de Ubuntu-fr.org dont je vous recommande la lecture en cas de problème…

    Hibernate4gwt : 4 mois plus tard

    Monday, August 13th, 2007

    (3 petit pas dans l’Open-Source)

    Un petit billet un peu moins technique de d’habitude sur mes premiers pas dans le monde de l’Open-Source.
    C’est donc avec insouciance que je lançais à la fin avril hibernate4gwt, petite librairie de niche prenant en charge la cohabitation de deux formidables librairies à fort caractère : Hibernate (sa persistance, sa transparence… et ses proxies !) et GWT (sa simplicité, sa souplesse… et son JavaScript !).

    Première surprise : on ne dépose pas un projet comme ça sur SourceForge ! Il faut avant tout en faire la demande, exposer le but de son projet, gentiment, poliment et en anglais.

    Ensuite, il faut document, packager, tester. Mine de rien, cela force un peu à organiser son travail, à le formaliser d’avantage que juste un bout de code dans son coin. Au final, j’estime passer près de la moitié du temps total sur une release à ces aspects non directement productifs.

    Deuxième enseignement : cela prend du temps, beaucoup de temps. Outre le travail de développement, il faut faire un peu de pub sur les groupes de discussions, surveiller les topics pour trouver ceux que votre librairie peut solutionner, répondre aux questions posées sur le forum du projet, etc…

    Troisième enseignement : c’est gratifiant D J’avoue que quelques mots d’encouragement, postés à la fin d’un message, un simple « thanks » me remplit de contentement. Le simple fait de savoir que des gens à travers le monde utilisent le fruit de mon labeur, que celui-ci leur évite les soucis que j’ai eu à affronter, me conforte dans l’idée que la démarche est la bonne. Et puis, j’adore lire des messages de gens dont j’ignore la nationalité du prénom

    Enfin, il y a la satisfaction de poster une release dont vous êtes fier. La dernière version d’hibernate4gwt commence à ressembler à ce que j’avais en tête il y a quelques mois : transparente et légère. En mode Java 1.4, les services GWT doivent juste hériter de HibernateRemoteService pour fonctionner. Pas d’autre impact sur le code 
    J’ai également rajouté le support d’objets du Domaine Java5, la demande à ce sujet étant forte (tout comme l’attente du support natif par GWT) en essayant de rester là aussi le moins intrusif possible (pas de fichier de mapping Dozer, qui d’après les retours d’expérience que j’ai, ressemblent plus à une plaie qu’à une solution).

    J’ai encore un peu de pain sur la planche (supprimer les derniers héritages techniques !), mais après les efforts que m’ont demandé la dernière release, je vais faire une petite pause… le temps d’écrire un ou deux articles que j’avais promis à developpez.com (non Ricky, je n’ai pas oublié ;-) ) et de finir « Jonathan Strange et Mr. Norrell », un roman aussi prometteur qu’épais D

    Stay tuned !

    WordPress Last.fm plugin (recent tracks) broken and fixed !

    Wednesday, May 16th, 2007

    UPDATE !!!
    The author of the Last.fm wordpress plugin has updated it to make it work !!!

    Well, it was…until I found out what was actually going wrong !
    “last.fm recent tracks” WordPress plugin by Tijs Teulingsdoesn’t work anymore due to Last.fm new XML syntax.
    In the file lastfm.php which comes with the plugin, and which may be located at the /wp-content/plugins directory (relatively to your wordpress installation directory), you have to change, line 92 :
    $findme = '<track>'; by
    $findme = '<track';
    to make it work !
    Yeah it’s as simple as that, the XML output of Last.fm has changed and the tag <track> has now an attribute, and often becomes <track streamable=”true”> (which doesn’t match <track> but always matches <track).

    If you’re too lazy (or if you don’t want to open a file editor..) you can download the fixed version of lastfm.php

    Working version of the lastfm.php file from “last.fm recent tracks” WordPress plugin compatible with the new Last.fm XML syntax

    hibernate4gwt

    Monday, April 30th, 2007

    Juste quelques mots pour vous annoncer la version 0.1 de hibernate4gwt (previously LazyKiller ;-) ), hébergée sur SourceForge.

    La solution à base de DTO Dozer ne me satisfaisant pas, j’ai décidé de publier mon code sous licence Open-Source, en espérant ainsi faire avancer le débat et simplifier la vie de mes confrères.

    Pour information, je travaille en ce moment sur la V0.2 qui devrait permettre (en mode stateful dans un premier temps) de ne plus avoir besoin de l’héritage technique courant.

    Hope this helps !

    Installation de CGI Proxy, solution de proxy http

    Thursday, March 8th, 2007

    Ce tutorial vous expliquera comment mettre en oeuvre derrière Apache 2 le script CGI Proxy qui peut vous servir aussi bien à surfer anonyme (désactivation de scripts pendant la navigation), à accéder aux serveurs web de machine situées dans un réseau local, à contrer la censure …

    Installer simplement CGI Proxy (sans SSL)

    Tout d’abord, vous devez avoir les logiciels suivants installés sur votre machine:
    -un serveur sous Linux(çà devrait marcher sur tous les OS…)
    -Apache2 (un autre serveur web devrait faire l’affaire mais je n’ai pas testé…)
    -Perl
    Des commandes comme :
    #apt-get install perl apache2
    devrait plus ou moins régler les choses sur Debian et les Debian-like…
    Pour la suite de l’article, je suppose que vous utilisez une distribution Debian Sarge.

    Dirigez vous vers /etc/apache2/sites-available
    #cd /etc/apache2/sites-available

    Créez un nouveau site web, disons que vous avez le nom de domaine test.fr, créez ainsi le sous domaine cgiproxy.test.fr :
    #vim cgiproxy.test.fr

    et insérez les lignes suivantes :

    <VirtualHost *>
    ServerAdmin admin@test.fr
    DocumentRoot /var/www/cgiproxy.test.fr
    ServerName cgiproxy.test.fr
    ErrorLog /var/log/apache2/cgiproxy.test.fr.error.log
    CustomLog /var/log/apache2/cgiproxy.test.fr.access.log common
    AddHandler cgi-script .cgi
    <Directory /var/www/cgiproxy.test.fr>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Order allow,deny
    Allow from all
    Options +ExecCGI
    </Directory>
    </VirtualHost>

    Pour que ce nouveau site soit fonctionne, n’oubliez de faire un lien symbolique de cette configuration dans /etc/apache2/sites-enabled :
    #cd /etc/apache2/sites-enabled
    #ln -s /etc/apache2/sites-available/cgiproxy.test.fr

    et de bien sûr créer le répertoire désigné dans votre configuration:
    #mkdir /var/www/cgiproxy.test.fr

    On redémarre Apache2 pour que la configuration soit prise en compte :
    #/etc/init.d/apache2 restart

    Petite note pour ceux qui n’ont pas de nom de domaine ou ne sachant pas comment créer un site sous Apache 2 :
    Vous avez sans doute dans /etc/apache2/sites-available un site (fichier de configuration) qui s’appelle 000-default, qui pointe vers des fichiers dans /var/www : vous pouvez aussi bien l’utiliser en adaptant cet article (chemins et sites)

    Rendez vous dans /var/www/cgiproxy.test.fr et téléchargez le script CGI CGI Proxy :
    #wget http://www.jmarshall.com/tools/cgiproxy/releases/cgiproxy.2.1beta15.tar.gz

    Pour avoir la dernière version, veuillez consulter le site officiel CGI Proxy

    On décompresse l’archive ainsi récupérée :
    #tar xvzf cgiproxy.2.1beta15.tar.gz

    Et si tout s’est bien passé, en dirigeant son navigateur vers http://cgiproxy.test.fr/nph-proxy.cgi on doit avoir le formulaire de saisie d’URL de CGI Proxy !
    Si toutefois cela ne fonctionne pas, n’hésitez pas à laisser un commentaire à cet article, mais commencez par vérifier :
    -que vos chemins sont bons
    -que vous n’avez pas renommé nph-proxy.cgi en quelquechose.cgi (il faut impérativement que le nom du fichier commence par nph-)
    -que le script est exécutable :
    #chmod +x nph-proxy.cgi

    Installer CGI Proxy en mod ssl :

    Un peu plus difficile cette fois-ci, cette partie de l’article s’adresse aux personnes ayant déjà mis en place des sites Apache2 en mod_ssl.(un jour j’écrirai un article pour l’expliquer !).
    Pour faire simple, et rapide, inspirez vous de mon fichier de configuration :

    <VirtualHost *:443>
    ServerAdmin admin@cgiproxy.test.fr
    DocumentRoot /var/www/cgiproxy.test.fr
    ServerName cgiproxy.test.fr
    ErrorLog /var/log/apache2/cgiproxy.test.fr.error.log
    CustomLog /var/log/apache2/cgiproxy.test.fr.access.log common
    AddHandler cgi-script .cgi
    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/apache.pem
    SSLProxyEngine On
    <Directory /var/www/cgiproxy.test.fr>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    DirectoryIndex nph-protected.cgi
    AuthUserFile /var/www/cgiproxy.test.fr/.htpasswd
    AuthName “Welcome to Protected Site”
    AuthType Basic
    Require valid-user
    Options +ExecCGI
    </Directory>
    </VirtualHost>

    Un peu d’explication !
    <VirtualHost *:443>
    vous permet de déclarer un serveur virtuel écoutant sur le port 443 (https par défaut)
    AddHandler cgi-script .cgi
    permet à Apache 2 de lancer le moteur d’interpréteur de CGI lorsque les fichiers demandés terminent par .cgi
    DirectoryIndex nph-protected.cgi
    indique à apache que le fichier index par défaut est : nph-protected.cgi (situé dans /var/www/cgiproxy.test.fr) lorsque qu’aucun nom de fichier est spécifié.
    AuthUserFile
    permet de mettre en place une sécuristation HTTP Basic (login/mot de passe demandé pour accéder à la ressource)

    Liens

    Le site de documentation d’Apache2
    Le site officiel de CGI Proxy

    Testing Hachoir, an open source metadata parser

    Wednesday, December 27th, 2006

    Reading linuxfr.org, I found a new software, written in Python (it can then run on all -almost- platforms), that can extract very precious data from your files : metadata.
    For example, running hachoir on an avi movie will tell you which container, video codec, audio codec, etc.. were used; the length, the framerate, etc… of the movie.
    So, now that you want to test it, how can you install it on your (linux in this example) computer ?
    Well, it depends on your distribution…
    On Kubuntu (or Ubuntu), or Debian Sarge, I couldn’t install it, because of dependency problems, but if you want to give it a try, just add these 2 lines in your /etc/apt/sources.list :

    deb http://plumbear.free.fr/debian etch main
    deb-src http://plumbear.free.fr/debian etch main

    , and :
    #apt-get update
    #apt-get upgrade
    #apt-get install hachoir-parser hachoir-metadata

    If it doesn’t work, don’t worry, you can install easily it using … easy_install !
    #apt-get install easy_install
    Almost done !
    Juste type in:

    #easy_install hachoir-parser
    #easy_install hachoir-metadata

    Easy isn’t it ?
    To use it, it’s also very simple :

    $ hachoir-metadata a_video_file.avi
    Common:
    - Duration: 42 min 10 sec
    - Producer: VirtualDub
    - Comment: Has audio/video index (2.5 MB)
    - MIME type: video/x-msvideo
    - Endian: Little endian
    Video stream:
    - Image width: 624
    - Image height: 352
    - Bits/pixel: 12
    - Compression: XviD MPEG-4 (fourcc:”xvid”)
    - Frame rate: 23.976023976
    Audio stream:
    - Channel: stereo
    - Sample rate: 48.0 KHz
    - Compression: MPEG Layer 3

    Well, I guess this file is a real video file !

    To know more about this great software, just check this website out :
    Hachoir official website, and feel free to contact the author, I can testify he will answer your questions !