<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.sietch-tabr.com/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>ka.da - Tag - programmation</title>
  <link>http://blog.sietch-tabr.com/index.php/</link>
  <atom:link href="http://blog.sietch-tabr.com/index.php/feed/tag/programmation/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Wed, 03 Dec 2008 13:03:46 +0100</pubDate>
  <copyright>CC-BY-NC-SA</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Mercurial : partage de dépôts différents en http et https + push par https</title>
    <link>http://blog.sietch-tabr.com/index.php/post/2008/01/21/Mercurial-%3A-partage-de-depots-differents-en-http-et-https-push-par-https</link>
    <guid isPermaLink="false">urn:md5:5b7e4e1093ee0c30813ff32240d1e333</guid>
    <pubDate>Wed, 30 Jan 2008 19:28:00 +0100</pubDate>
    <dc:creator>er:k</dc:creator>
        <category>InformatiqueEtGeekeries</category>
        <category>Gandi</category><category>hébergement</category><category>ligne de commande</category><category>Mercurial</category><category>planete-april</category><category>planete-debian-fr-users</category><category>planete-libre</category><category>programmation</category>    
    <description>    &lt;p&gt;J'ai commencé à regarder du côté des SCM&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2008/01/21/#pnote-244-1&quot; id=&quot;rev-pnote-244-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt; (marre de la gestion &lt;a href=&quot;http://roland.entierement.nu/blog/2008/01/22/cpold-la-poudre-verte-du-suivi-de-versions.html&quot; hreflang=&quot;fr&quot;&gt;CPOLD&lt;/a&gt; ;-) il y a quelque temps déjà, et m'était tout d'abord arrêté sur &lt;a href=&quot;http://fr.wikipedia.org/wiki/Subversion_(logiciel)&quot; hreflang=&quot;fr&quot;&gt;Subversion&lt;/a&gt; &lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2008/01/21/#pnote-244-2&quot; id=&quot;rev-pnote-244-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt;  étant novice en la matière. Il s'est vite révélé peu adapté à ma pratique&amp;nbsp;: &quot;développement&quot; sur plusieurs machines pas toujours online, et pas de serveur dédié toujours en ligne pour stocker mes dépôts. Depuis peu, ce dernier problème s'est réglé (merci &lt;a href=&quot;http://www.gandi.net/hebergement/&quot; hreflang=&quot;fr&quot;&gt;Gandi Hébergement&lt;/a&gt;&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2008/01/21/#pnote-244-3&quot; id=&quot;rev-pnote-244-3&quot;&gt;3&lt;/a&gt;]&lt;/sup&gt;) mais pour autant, j'ai abandonné Subversion pour &lt;a href=&quot;http://www.selenic.com/mercurial/&quot; hreflang=&quot;en&quot;&gt;Mercurial&lt;/a&gt;, un &lt;a href=&quot;http://fr.wikipedia.org/wiki/Gestion_de_version_d%C3%A9centralis%C3%A9e&quot; hreflang=&quot;fr&quot;&gt;gestionnaire de code source distribué&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Je ne vais pas entrer ici dans les détails sur les caractéristiques d'un gestionnaire de code source distribué, ses avantages, ou même sur une présentation détaillée sur Mercurial et son mode de fonctionnement (je vous laisse visiter &lt;a href=&quot;http://www.selenic.com/mercurial/&quot; hreflang=&quot;en&quot;&gt;le site officiel&lt;/a&gt; pour cela). Je vais uniquement présenter des détails sur la configuration que j'ai mise en place afin de parvenir à partager aisément des dépôts différents via http et https, ainsi que comment faire pour autoriser la mise à jour de ceux-ci via https.&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;présentation des dépôts Mercurial sur le web&lt;/h2&gt;

&lt;p&gt;&lt;br /&gt;
Imaginons que vos dépôts soient stockés dans &lt;code&gt;/mercurial&lt;/code&gt; et que vous vouliez pouvoir donner un accès en lecture sur le web, à l'adresse &lt;code&gt;http://hg.domain.tld&lt;/code&gt;. Nous allons configurer Apache et Mercurial pour ce faire.&lt;/p&gt;


&lt;p&gt;Tout d'abord, nous allons créer un emplacement pour les fichiers web et le script &lt;a href=&quot;http://fr.wikipedia.org/wiki/Common_Gateway_Interface&quot; hreflang=&quot;fr&quot;&gt;CGI&lt;/a&gt; en &lt;a href=&quot;http://python.org&quot;&gt;Python&lt;/a&gt; pour Mercurial. Prenons &lt;code&gt;/var/www/domain.tld/hg&lt;/code&gt;. Créons à cet endroit un répertoire &lt;code&gt;hgweb&lt;/code&gt; dans lequel nous allons placer le script &lt;code&gt;hgwebdir.cgi&lt;/code&gt; que vous pouvez trouver sur votre système (sous Debian &lt;code&gt;/usr/share/doc/mercurial/examples/hgwebdir.cgi&lt;/code&gt;) ou &lt;a href=&quot;http://www.selenic.com/repo/hg-stable/raw-file/tip/hgwebdir.cgi&quot;&gt;sur le site de Mercurial&lt;/a&gt;.
Éditez ce fichier pour avoir à la fin&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
def make_web_app():
    return hgwebdir(&amp;quot;/etc/mercurial/hgweb.config&amp;quot;)
&lt;/pre&gt;


&lt;p&gt;Nous allons ensuite créer le fichier &lt;code&gt;/etc/mercurial/hgweb.config&lt;/code&gt; avec un contenu comme suit&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
[paths]
depot1  =  /mercurial/depot1
depot2  =  /mercurial/depot2
&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;On peut également utiliser la directive &lt;code&gt;[collections]&lt;/code&gt; pour partager une hiérarchie de dépôts mais nous partons du principe que l'on veut contrôler précisément ce que l'on partage.&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;À partir de là, il nous reste à configurer Apache. Créez un fichier &lt;code&gt;/etc/apache2/sites-available/hg.domain.tld&lt;/code&gt; afin de déclarez votre &lt;a href=&quot;http://httpd.apache.org/docs/2.0/vhosts/&quot; hreflang=&quot;en&quot;&gt;VirtualHost&lt;/a&gt;. Voici en exemple mon fichier&lt;/p&gt;
&lt;pre&gt;
NameVirtualHost *:80

&amp;lt;VirtualHost *:80&amp;gt;
    ServerAdmin webmaster@hg.domain.tld

    ServerName hg.domain.tld  

    DocumentRoot /var/www/domain.tld/hg

    &amp;lt;Directory /var/www/domain.tld/hg/&amp;gt;
        Options FollowSymLinks +ExecCGI
        AddHandler cgi-script .cgi
        DirectoryIndex hgweb/hgwebdir.cgi
        AllowOverride None

        RewriteEngine on
        RewriteBase /hgweb
        RewriteRule ^$ hgwebdir.cgi  [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule (.*) hgwebdir.cgi/$1  [QSA,L]
    &amp;lt;/Directory&amp;gt;

    LogLevel warn
    ErrorLog /var/log/apache2/hg.domain.tld-error.log
.   CustomLog /var/log/apache2/hg.domain.tld-access.log combined
    
    ServerSignature Off
&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Notez ici les &lt;a href=&quot;http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html&quot; hreflang=&quot;en&quot;&gt;règles de réécriture&lt;/a&gt; qui permettent de faire disparaître &lt;code&gt;hgwebdir.cgi&lt;/code&gt; de vos &lt;a href=&quot;http://fr.wikipedia.org/wiki/Url&quot; hreflang=&quot;fr&quot;&gt;URL&lt;/a&gt;. C'est ce qui m'a pris le plus de temps à trouver avant de tomber sur &lt;a href=&quot;http://wiki.unelectronlibre.info/developpement/migrer_de_subversion_a_mercurial#utilisation_de_hgwebdir.cgi&quot; hreflang=&quot;fr&quot;&gt;cette doc&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Activez votre nouveau &quot;site&quot; ainsi que les modules Apache dont vous aurez besoin&lt;/p&gt;
&lt;pre&gt;
# a2ensite hg.domain.tld
# a2enmod mod_python
# a2enmod rewrite
# /etc/init.d/apache2 restart
&lt;/pre&gt;


&lt;p&gt;Vous pouvez maintenant aller voir http://hg.domain.tld et parcourir vos dépôts Mercurial &lt;code&gt;depot1&lt;/code&gt; et &lt;code&gt;depot2&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;partager des dépôts différents par https&lt;/h2&gt;

&lt;p&gt;&lt;br /&gt;
Tout ça, c'est très bien, mais on aimerait également pouvoir avoir accès à certains dépôts que l'on ne veut pas donner en lecture à tout internet&amp;nbsp;: des dépôts privés en somme. Nous allons donc partager ceux-ci sur un site sécurisé avec authentification.&lt;/p&gt;


&lt;p&gt;Nous allons donc retourner dans notre répertoire &lt;code&gt;/var/www/domain.tld/hg/hgweb&lt;/code&gt;, copier &lt;code&gt;hgwebdir.cgi&lt;/code&gt; en &lt;code&gt;hgwebdirssl.cgi&lt;/code&gt; et éditez ce fichier pour avoir&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
def make_web_app():
    return hgwebdir(&amp;quot;/etc/mercurial/hgwebssl.config&amp;quot;)
&lt;/pre&gt;


&lt;p&gt;Créons le fichier &lt;code&gt;/etc/mercurial/hgwebssl.config&lt;/code&gt; avec&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
[paths]
depot1  =  /mercurial/depot1
depot2  =  /mercurial/depot2
depot_prive3 = /mercurial/depot3
depot_prive4 = /mercurial/depot4
&lt;/pre&gt;


&lt;p&gt;Et retournons éditer &lt;code&gt;/etc/apache2/sites-available/hg.domain.tld&lt;/code&gt; pour y ajouter&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
# en haut du fichier
NameVirtualHost *:443

# à la fin du fichier
&amp;lt;VirtualHost *:443&amp;gt;
    ServerAdmin webmaster@hg.domain.tld

    ServerName hg.domain.tld

    DocumentRoot /var/www/domain.tld/hg

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/hg.domain.tld.pem
    SSLCertificateKeyFile /etc/apache2/ssl/hg.domain.tld.key

    &amp;lt;Directory /var/www/domain.tld/hg/&amp;gt;
        Options FollowSymLinks +ExecCGI
        AddHandler cgi-script .cgi
        DirectoryIndex hgweb/hgwebdirssl.cgi
        AllowOverride None

        RewriteEngine on
        RewriteBase /hgweb
        RewriteRule ^$ hgwebdirssl.cgi  [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule (.*) hgwebdirssl.cgi/$1  [QSA,L]

        AuthUserFile /etc/mercurial/hgweb.htpasswd
        AuthGroupFile /dev/null
        AuthName &amp;quot;hg.domain.tld Mercurial repository&amp;quot;
        AuthType Basic
#       &amp;lt;LimitExcept GET OPTIONS&amp;gt;
                Require valid-user
#       &amp;lt;/LimitExcept&amp;gt;
    &amp;lt;/Directory&amp;gt;

    ErrorLog /var/log/apache2/hg.domain.tld-error.log

    LogLevel warn

    CustomLog /var/log/apache2/hg.domain.tld-access.log combined
    ServerSignature Off

&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;

&lt;p&gt;On retrouve ici les directives rewrite que nous avons utilisé dans la première partie, à la différence qu'elles pointent vers le CGI spécifique à notre configuration SSL, et quelques directives spécifiques justement à https/SSL. Bien évidemment, il vous faudra créer un fichier de mots de passe (nommé ici hgweb.htpasswd) avec&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
# htpasswd -c /etc/mercurial/hgweb.htpasswd hguser
&lt;/pre&gt;

&lt;p&gt;pour autoriser l'utilisateur hguser.&lt;/p&gt;


&lt;p&gt;Notez les directives &amp;lt;LimitExcept GET OPTIONS&amp;gt; qui, si elles sont décommentées, permettent à tout le monde de visualiser les dépôts tout en demandant une authentification pour interagir via les commandes de Mercurial (clone, pull, push...).&lt;/p&gt;


&lt;p&gt;Rechargez la configuration d'Apache et regardez la différence entre http://hg.domain.tld et https://hg.domain.tld&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;autoriser la mise à jour des dépôts via https&lt;/h2&gt;

&lt;p&gt;&lt;br /&gt;
Pour autoriser le push via https, une fois le travail ci-dessus effectué, il suffit d'éditer la configuration des dépôts en modifiant le fichier &lt;code&gt;.hg/hgrc&lt;/code&gt; de chaque projet. Éditez-le ou créez-le et insérez les lignes suivantes&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
[web]
allow_push = hguser
&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;utilisation&lt;/h2&gt;

&lt;p&gt;&lt;br /&gt;
Voilà c'est fait, vous pouvez maintenant interagir très simplement avec vos dépôts Mercurial.
Pour cloner un dépôt public&lt;/p&gt;
&lt;pre&gt;
$ hg clone http://hg.domain.tld/depot1
&lt;/pre&gt;

&lt;p&gt;Pour cloner un dépôt privé&lt;/p&gt;
&lt;pre&gt;
$ hg clone https://hguser@hg.domain.tld/depot_prive3
&lt;/pre&gt;

&lt;p&gt;Pour mettre à jour (push) ce même dépôt&lt;/p&gt;
&lt;pre&gt;
$ hg push https://hguser@hg.domain.tld/depot_prive3
&lt;/pre&gt;


&lt;p&gt;J'ajouterais que le plus dur est de gérer finement les droits d'accès aux divers fichiers nécessaires au bon fonctionnement de cette configuration. Pour faire simple, comme d'habitude, laissez le minimum de droits sur les fichiers de configuration (appartenance à l'utilisateur &lt;code&gt;www-data&lt;/code&gt; et lecture pour lui), et pour les dépôts j'ai choisi la solution un groupe &lt;code&gt;devel&lt;/code&gt; pour mon utilisateur principal ainsi que &lt;code&gt;www-data&lt;/code&gt; et les droits pour ce groupe.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2008/01/21/#rev-pnote-244-1&quot; id=&quot;pnote-244-1&quot;&gt;1&lt;/a&gt;] définition &lt;a href=&quot;http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_gestion_de_versions&quot; hreflang=&quot;fr&quot;&gt;en français&lt;/a&gt; et &lt;a href=&quot;http://en.wikipedia.org/wiki/Source_Code_Management&quot; hreflang=&quot;en&quot;&gt;en anglais&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2008/01/21/#rev-pnote-244-2&quot; id=&quot;pnote-244-2&quot;&gt;2&lt;/a&gt;] cf &lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/172-developpement-python&quot; hreflang=&quot;fr&quot;&gt;cet article&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2008/01/21/#rev-pnote-244-3&quot; id=&quot;pnote-244-3&quot;&gt;3&lt;/a&gt;] je sais que je n'ai pas parlé de cette nouvelle offre très intéressante de &lt;a href=&quot;http://gandi.net&quot;&gt;Gandi&lt;/a&gt; le registrar bien connu (pour sa qualité de service, son support et son &lt;a href=&quot;http://www.gandi.net/soutient/&quot; hreflang=&quot;fr&quot;&gt;engagement&lt;/a&gt;) alors allez voir &lt;a href=&quot;http://www.lebardegandi.net/post/2008/01/02/Beta-publique-de-Gandi-Hebergement-ouverte&quot; hreflang=&quot;fr&quot;&gt;le bar de gandi&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
  <item>
    <title>petit script Python pour récupérer des listes de voisins last.fm</title>
    <link>http://blog.sietch-tabr.com/index.php/post/2006/11/23/179-petit-script-python-pour-recuperer-des-listes-de-voisins-lastfm</link>
    <guid isPermaLink="false">urn:md5:5c3ff7f10afc38adafd259066776da7c</guid>
    <pubDate>Thu, 23 Nov 2006 17:02:09 +0000</pubDate>
    <dc:creator>er:k</dc:creator>
        <category>InformatiqueEtGeekeries</category>
        <category>last.fm</category><category>programmation</category><category>Python</category>    
    <description>    &lt;p&gt;Pour ceux qui ne connaissent pas encore &lt;a href=&quot;http://last.fm&quot; hreflang=&quot;en&quot;&gt;Last fm&lt;/a&gt;&amp;nbsp;: (présentation rapide) c'est une communauté pour tous ceux qui aiment et écoutent de la musique. Vous vous créez un compte, vous configurez votre lecteur de musique favori avec ce compte, et ensuite ce que vous écoutez apparait sur votre profil last.fm... voilà pour le début, ensuite vous pouvez tagger les morceaux, artistes écoutés, rejoindre ou créer des groupes, écrire des journaux, découvrir de la musique grâce à vos voisins, et grâce aux radios disponibles sur le site....... bref, plein de possibilités mais je vous conseille d'aller lire la &lt;a href=&quot;http://www.last.fm/help/faq/&quot; hreflang=&quot;en&quot;&gt;FAQ&lt;/a&gt; si vous voulez plus d'informations.&lt;/p&gt;


&lt;p&gt;Tout ça pour dire que ça fait déjà un an et demi que je m'y suis inscrit, que j'ai déjà &quot;scrobblé&quot; près de 5000 morceaux, que j'ai quelques &quot;amis&quot; et une multitude de voisins, que je suis abonné à 63 groupes exactement mais que c'est en constante évolution&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/11/23/#pnote-179-1&quot; id=&quot;rev-pnote-179-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt; et que j'ai voulu essayer de voir si sur un groupe donné, on retrouvait les mêmes voisins parmi les membres. J'ai donc écrit un petit script Python qui, même si il n'est pas parfait (cf TODO) a le mérite de faire ce qu'on lui demande.&lt;/p&gt;


&lt;pre&gt;#! /usr/bin/python -tt

## TODO ##
# recuperation de la liste des membres d'un groupe
# rendre le script portable en enlevant l'appel a wget

import os
import re

# liste à compléter
membres = ['gal33Za']

for membre in membres:
    os.system('wget http://ws.audioscrobbler.com/1.0/user/%s/neighbours.txt -O voisins-%s'%(membre,membre))

fichiers = ['voisins-'+x for x in membres ]

voisins = {}

for fichier in fichiers:
    f = open(fichier, &quot;r&quot;)

    for line in f.readlines():
        v, voisin = line.split(&quot;,&quot;)
        voisin = voisin[:-1]
       
        if voisin in voisins:
            voisins[voisin] = voisins[voisin] + 1
        else:
            voisins[voisin] = 1
    #endfor
   
    f.close
#endfor


# pour afficher avant tri
#for key, value in voisins.iteritems():
#   print str(value) + &quot; : &quot; + str(key)

### tri de dictionnaire
### cf    http://aspn.activestate.com/ASPN/Python/Cookbook/Recipe/52306

voisinsRanges = sorted(voisins.items(), key=lambda (k,v): (v,k), reverse=True)

for voisin in voisinsRanges:
    nom, nombre = voisin;

    # pour générer une liste simple
    #print str(nom) + &quot; : &quot; + str(nombre)

    # pour générer du BBcode
    print &quot;[url=http://www.last.fm/user/&quot; + str(nom) + &quot;]&quot; + str(nom) + &quot;[/url] : &quot; + str(nombre)
   
    # pour générer du HTML
    #print &quot;&amp;lt;a href=\&quot;http://www.last.fm/user/&quot; + str(nom) + &quot;\&quot;&amp;gt;&quot; + str(nom) + &quot;&amp;lt;/a&amp;gt; : &quot; + str(nombre)
#endfor

# endscript&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;ps&amp;nbsp;: je ne sais pas si ça vous a intéressé, mais en tout cas, ça prouve que je ne suis pas mort...&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/11/23/#rev-pnote-179-1&quot; id=&quot;pnote-179-1&quot;&gt;1&lt;/a&gt;] le nombre de groupes existants est énorme et il y en a pour tous les goûts : des musicaux (&lt;a href=&quot;http://www.last.fm/group/Post-Rock+Instrumental&quot;&gt;Post-Rock Instrumental&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/Godspeed+You%21+Black+Emperor&quot;&gt;Godspeed You! Black Emperor&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/radiohead&quot;&gt;radiohead&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/Mogwai&quot;&gt;Mogwai&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/Noir+Desir&quot;&gt;Noir Desir&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/Constellation+Records&quot;&gt;Constellation Records&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/Indie+and+Alternative&quot;&gt;Indie and Alternative&lt;/a&gt;...), des géographiques (&lt;a href=&quot;http://www.last.fm/group/France&quot;&gt;France&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/EU&quot;&gt;EU&lt;/a&gt;), des &quot;geeks&quot; (&lt;a href=&quot;http://www.last.fm/group/Amarok+Users&quot;&gt;Amarok Users&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/Debian+Linux&quot;&gt;Debian Linux&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/jabber&quot;&gt;jabber&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/Vi&quot;&gt;Vi&lt;/a&gt; (oui, le bon vieux &lt;a href=&quot;http://fr.wikipedia.org/wiki/Guerre_d%27%C3%A9diteurs&quot; hreflang=&quot;fr&quot;&gt;troll vi vs emacs&lt;/a&gt; se retrouve également sur last.fm), des &quot;politiques&quot; (&lt;a href=&quot;http://www.last.fm/group/I+Still+Buy+CDs&quot;&gt;I Still Buy CDs&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/Music+fans+and+Musicians+against+the+RIAA&quot;&gt;Music fans and Musicians against the RIAA&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/I+don%27t+have+an+Ipod&quot;&gt;I don't have an iPod&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/shove+your+DRM+up+your+ass&quot;&gt;Shove your DRM up your ass&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/NO+2+ID&quot;&gt;NO 2 ID&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/I+Hate+Football&quot;&gt;I Hate Football&lt;/a&gt;) ou conceptuels dont certains dont le nom seul oblige à s'inscrire (&lt;a href=&quot;http://www.last.fm/group/I+Don%27t+Mean+To+Come+Off+As+A+Music+Snob&quot;&gt;I Don't Mean To Come Off As A Music Snob&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/I+Grew+Up+In+A+Small+Town+and+Suprisingly+I+Listen+to+Good+Music%21&quot;&gt;I Grew Up In A Small Town and Suprisingly I Listen to Good Music!&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/Non+aux+Red+Hot+en+t%C3%AAte+de+Charts&quot;&gt;Non aux Red Hot en tête de Charts&lt;/a&gt;, , &lt;a href=&quot;http://www.last.fm/group/The+Black+Background+Users&quot;&gt;The Black Background Users&lt;/a&gt;, &lt;a href=&quot;http://www.last.fm/group/People+who+join+too+many+groups&quot;&gt;People who join too many groups&lt;/a&gt;)  etc, etc, etc&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
  <item>
    <title>développement Python</title>
    <link>http://blog.sietch-tabr.com/index.php/post/2006/09/24/172-developpement-python</link>
    <guid isPermaLink="false">urn:md5:49f467862266557e6a78408ff88ab13d</guid>
    <pubDate>Sun, 24 Sep 2006 23:53:00 +0000</pubDate>
    <dc:creator>er:k</dc:creator>
        <category>InformatiqueEtGeekeries</category>
        <category>Debian</category><category>programmation</category><category>Python</category><category>Wiki</category>    
    <description>    &lt;p&gt;J'ai récemment eu envie de me remettre au développement, ayant 2-3 projets dans le coin de ma tête. Et je me suis dit que j'allais me mettre à &lt;a href=&quot;http://www.python.org&quot; hreflang=&quot;en&quot;&gt;Python&lt;/a&gt;, langage interprété, multiplateforme et libre bien évidemment. C'est un peu le langage à la mode en ce moment&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#pnote-172-1&quot; id=&quot;rev-pnote-172-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt; et après être tombé sur moults articles en traitant&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#pnote-172-2&quot; id=&quot;rev-pnote-172-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt;  et projets l'utilisant&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#pnote-172-3&quot; id=&quot;rev-pnote-172-3&quot;&gt;3&lt;/a&gt;]&lt;/sup&gt;, je me suis décidé.&lt;br /&gt;
Je me suis également intéressé à la problématique de &lt;a href=&quot;http://fr.wikipedia.org/wiki/Gestion_de_version&quot; hreflang=&quot;fr&quot;&gt;gestion de version&lt;/a&gt; pour gérer un projet informatique, surtout à plusieurs. &lt;a href=&quot;http://fr.wikipedia.org/wiki/Concurrent_versions_system&quot; hreflang=&quot;fr&quot;&gt;CVS&lt;/a&gt; en est le représentant historique dans le monde du logiciel libre, mais depuis peu une foule de nouveaux outils sont apparus&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#pnote-172-4&quot; id=&quot;rev-pnote-172-4&quot;&gt;4&lt;/a&gt;]&lt;/sup&gt;, et après un bref passage du côté de &lt;a href=&quot;http://fr.wikipedia.org/wiki/Mercurial&quot; hreflang=&quot;fr&quot;&gt;Mercurial&lt;/a&gt;, je me suis finalement décidé sur &lt;a href=&quot;http://fr.wikipedia.org/wiki/Subversion_%28logiciel%29&quot; hreflang=&quot;fr&quot;&gt;Subversion&lt;/a&gt; dont l'approche et le mode centralisé sont plus simples à appréhender.&lt;/p&gt;


&lt;p&gt;Voici donc une série de ressources que j'ai retenu pour le développement en Python et l'utilisation de Subversion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tout d'abord de la documentation&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;sur &lt;a href=&quot;http://www.python.org/doc/&quot; hreflang=&quot;en&quot;&gt;le site officiel&lt;/a&gt; vous pourrez trouver les références complètes des &lt;a href=&quot;http://docs.python.org/lib/lib.html&quot; hreflang=&quot;en&quot;&gt;bibliothèques&lt;/a&gt; ainsi que divers autres documents tout aussi intéressants (howto, docs sur un sujet précis, ...);&lt;/li&gt;
&lt;li&gt;le tutoriel &lt;a href=&quot;http://www.diveintopython.org/&quot; hreflang=&quot;en&quot;&gt;Dive into Python&lt;/a&gt; est vraiment bien fait et est même disponible sur votre distribution préférée&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#pnote-172-5&quot; id=&quot;rev-pnote-172-5&quot;&gt;5&lt;/a&gt;]&lt;/sup&gt;, et, bonheur !, il est même traduit en &lt;a href=&quot;http://diveintopython.adrahon.org/&quot; hreflang=&quot;fr&quot;&gt;français&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;le &lt;a href=&quot;http://www.python.org/doc/essays/styleguide.html&quot; hreflang=&quot;en&quot;&gt;Python Style Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;la &lt;a href=&quot;http://rgruet.free.fr/&quot; hreflang=&quot;en&quot;&gt;Quick Reference pour Python&lt;/a&gt;, toutes les version de Python incluses&lt;/li&gt;
&lt;li&gt;et la &lt;a href=&quot;http://www.limsi.fr/Individu/pointal/python/pqrc/&quot; hreflang=&quot;en&quot;&gt;carte Python Quick Reference&lt;/a&gt; pour l'imprimer et l'avoir toujours sous la main&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vous en voulez plus&amp;nbsp;? allez voir l'article &lt;a href=&quot;http://www.biologeek.com/journal/index.php/cours-pour-apprendre-python&quot; hreflang=&quot;fr&quot;&gt;Cours pour apprendre Python&lt;/a&gt; sur biologeek.org pour plus de liens.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;les outils ensuite&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.eclipse.org&quot; hreflang=&quot;en&quot;&gt;Eclipse&lt;/a&gt; est un &lt;a href=&quot;http://fr.wikipedia.org/wiki/Environnement_de_D%C3%A9veloppement_Int%C3%A9gr%C3%A9&quot; hreflang=&quot;fr&quot;&gt;IDE&lt;/a&gt; écrit en Java et initialement prévu pour ce langage, mais qui à l'aide de nombreux plugins s'adaptent à d'autres langages. Essayez-le et appréciez;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pydev.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;Pydev&lt;/a&gt; est le plugin pour développer en Python avec Eclipse, et une &lt;a href=&quot;http://www.fabioz.com/pydev/manual_101_root.html&quot; hreflang=&quot;en&quot;&gt;doc&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://subclipse.tigris.org/&quot; hreflang=&quot;en&quot;&gt;Subclipse&lt;/a&gt; quant à lui est le plugin pour travailler avec Subversion;&lt;/li&gt;
&lt;li&gt;la société &lt;a href=&quot;http://www.edgewall.com/&quot; hreflang=&quot;en&quot;&gt;Edgewall&lt;/a&gt; met à disposition un très bon outil pour gérer un projet basé sur Subversion, c'est &lt;a href=&quot;http://trac.edgewall.org/&quot; hreflang=&quot;en&quot;&gt;Trac&lt;/a&gt;&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#pnote-172-6&quot; id=&quot;rev-pnote-172-6&quot;&gt;6&lt;/a&gt;]&lt;/sup&gt;, mais elle propose également une &lt;a href=&quot;http://www.edgewall.org/python-sidebar/&quot; hreflang=&quot;en&quot;&gt;Python Sidebar&lt;/a&gt; pour avoir dans votre navigateur favori la référence Python directement accessible.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;J'ai parcouru ensuite le web de tutoriel en tutoriel pour réussir à installer de façon satisfaisante Subversion + Trac sur ma Debian mais ceux que j'ai trouvé marchaient plus ou moins bien&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#pnote-172-7&quot; id=&quot;rev-pnote-172-7&quot;&gt;7&lt;/a&gt;]&lt;/sup&gt; , jusqu'à celui-ci &lt;a href=&quot;http://www.prendreuncafe.com/blog/post/2006/09/05/489-installer-et-configurer-apache2-trac-et-subversion-sur-ubuntu&quot; hreflang=&quot;fr&quot;&gt;Installer et configurer Apache2, Trac et Subversion sur Ubuntu&lt;/a&gt; sur Prendre Un Café. Il concerne Ubuntu mais marche tout aussi bien pour Debian testing/etch.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;update :&lt;/strong&gt; je viens à peine de finir ce billet que je tombe sur un tuto &lt;a href=&quot;http://placelibre.ath.cx/keyes/index.php/2006/09/05/107-eclipse-pour-le-developpement-web-php-et-python-sous-dapper&quot; hreflang=&quot;fr&quot;&gt;Eclipse pour le développement web, PHP et Python sous Dapper&lt;/a&gt;. Pour Debian, j'ai eu des problèmes pour installer un plugin (Pydev il me semble) parce que la dernière version proposée était la 3.1 et qu'il me fallait la 3.2.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#rev-pnote-172-1&quot; id=&quot;pnote-172-1&quot;&gt;1&lt;/a&gt;] mais j'aurais également pu choisir &lt;a href=&quot;http://www.ruby-lang.org/&quot; hreflang=&quot;en&quot;&gt;Ruby&lt;/a&gt; pour cette même raison :)&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#rev-pnote-172-2&quot; id=&quot;pnote-172-2&quot;&gt;2&lt;/a&gt;] dont &lt;a href=&quot;http://www.biologeek.com/journal/index.php/pourquoi-programmer-en-python&quot; hreflang=&quot;fr&quot;&gt;Pourquoi programmer en Python ?&lt;/a&gt;  sur biologeek.org&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#rev-pnote-172-3&quot; id=&quot;pnote-172-3&quot;&gt;3&lt;/a&gt;] dont Xen ou tout au moins sont interface d'administration, n'est pas le moindre&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#rev-pnote-172-4&quot; id=&quot;pnote-172-4&quot;&gt;4&lt;/a&gt;] voir une &lt;a href=&quot;http://fr.wikipedia.org/wiki/Logiciel_de_gestion_de_versions&quot; hreflang=&quot;fr&quot;&gt;liste&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#rev-pnote-172-5&quot; id=&quot;pnote-172-5&quot;&gt;5&lt;/a&gt;]  apt-get install diveintopython&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#rev-pnote-172-6&quot; id=&quot;pnote-172-6&quot;&gt;6&lt;/a&gt;] outil proposant un Wiki, un browser du code, un gestionnaire de tickets,... Il est utilisé par Dotclear notamment&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/09/24/#rev-pnote-172-7&quot; id=&quot;pnote-172-7&quot;&gt;7&lt;/a&gt;] je parle de ceux de &lt;a href=&quot;http://www.destination-linux.org/article52.html&quot; hreflang=&quot;fr&quot;&gt;destination-linux.org&lt;/a&gt;, &lt;a href=&quot;http://nico.tuxfamily.org/Configurations/installation-subversion-trac-debian-ubuntu&quot; hreflang=&quot;fr&quot;&gt;PrO²jects&lt;/a&gt;, &lt;a href=&quot;http://www.xhtml.net/articles/subversion-apache2-debian&quot; hreflang=&quot;fr&quot;&gt;xhtml.net&lt;/a&gt;, ou &lt;a href=&quot;http://trac.edgewall.org/wiki/TracOnDebian&quot; hreflang=&quot;en&quot;&gt;le site de Trac&lt;/a&gt;. Ils sont peut-être corrects mais je les ai trouvés moins directs que celui de Prendre Un Café...&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
  <item>
    <title>Java devient open source</title>
    <link>http://blog.sietch-tabr.com/index.php/post/2006/05/17/123-java-devient-open-source</link>
    <guid isPermaLink="false">urn:md5:4bf4d313762e75ba1ec187b5e705d261</guid>
    <pubDate>Wed, 17 May 2006 22:38:25 +0000</pubDate>
    <dc:creator>er:k</dc:creator>
        <category>InformatiqueEtGeekeries</category>
        <category>Java</category><category>Microsoft</category><category>programmation</category><category>Sun</category><category>Ubuntu</category>    
    <description>    &lt;p&gt;Il semblerait que cette fois ça y est, Sun &lt;a href=&quot;http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9000534&quot; hreflang=&quot;en&quot;&gt;a décidé de rendre Java Open Source&lt;/a&gt;. C'est le nouveau PDG Jonathan Schwartz qui vient de l'annoncer mais pour l'instant les &lt;a href=&quot;http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9000568&quot; hreflang=&quot;en&quot;&gt;détails restent inconnus&lt;/a&gt;. &lt;br /&gt;
Cela faisait bien longtemps que la communauté open source et les développeurs Java le demandaient afin de contrer l'offre alternative&amp;nbsp;: .Net de Microsoft. Dernièrement, IBM en avait ajouté une couche en demandant également cette libération du code de Java.&lt;br /&gt;
Peut-être qu'enfin, on a vu chez Java que cette demande était fondée, et que ça ne pouvait que bénéficier à Java&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/05/17/#pnote-123-1&quot; id=&quot;rev-pnote-123-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt; face à des alternatives comme .Net bien sûr, mais également face à la montée en puissance de PHP, Python, et Ruby (avec Ruby on Rails) qui sont les stars open source du moment dans le développement (tout au moins web) (cf par ex. &lt;a href=&quot;.http://www.01net.com/editorial/312277/programmation/ruby-on-rails-nouveau-trublion-du-developpement-web/&quot; hreflang=&quot;fr&quot;&gt;cette article de 01 sur Ruby on Rails&lt;/a&gt;)&lt;/p&gt;


&lt;p&gt;En tout cas, c'est un 'must' des trolls sur &lt;a href=&quot;http://linuxfr.org&quot; hreflang=&quot;fr&quot;&gt;linuxfr.org&lt;/a&gt; qui tombe... le fameux &quot;Java, çapuecpaslibre !&quot; :-)&lt;/p&gt;


&lt;p&gt;Et en plus, &lt;a href=&quot;http://www.itweek.co.uk/vnunet/news/2156209/sun-support-ubuntu-linux&quot; hreflang=&quot;en&quot;&gt;Sun prévoit de supporter Ubuntu sur sa ligne de serveur T1&lt;/a&gt;... que de changements..&lt;/p&gt;


&lt;p&gt;[via Linox.be &lt;a href=&quot;http://linox.be/index.php/2006/05/17/sun_to_open-source_java_finally/&quot; hreflang=&quot;en&quot;&gt;ici&lt;/a&gt; &amp;amp; &lt;a href=&quot;http://linox.be/index.php/2006/05/17/sun_puts_its_weight_behind_ubuntu_linux/&quot; hreflang=&quot;en&quot;&gt;là&lt;/a&gt;]&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/05/17/#rev-pnote-123-1&quot; id=&quot;pnote-123-1&quot;&gt;1&lt;/a&gt;] je l'espère en tout cas&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
  <item>
    <title>marre de l'internet social ? (et autres...)</title>
    <link>http://blog.sietch-tabr.com/index.php/post/2006/04/21/114-marre-de-l-internet-social-et-autres</link>
    <guid isPermaLink="false">urn:md5:ff4b7e4cfc4943f9c938a0236dc31f99</guid>
    <pubDate>Fri, 21 Apr 2006 09:06:44 +0000</pubDate>
    <dc:creator>er:k</dc:creator>
        <category>InformatiqueEtGeekeries</category>
        <category>fun</category><category>geek</category><category>programmation</category>    
    <description>    &lt;p&gt;Si vous aussi vous en avez marre de ce nouvel internet social, de ces communautés qui se forment sur tout et n'importe quoi (les goûts musicaux, l'origine géographique, le navigateur web utilisé, votre pointure, etc.), de ce &quot;web 2.0&quot;, de cette idée selon laquelle &quot;l'internet sera social ou ne sera pas&quot;&lt;sup&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/04/21/#pnote-114-1&quot; id=&quot;rev-pnote-114-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;, alors dans ce cas, &lt;a href=&quot;http://isolatr.com/&quot; hreflang=&quot;en&quot;&gt;isolatr.com&lt;/a&gt; est fait pour vous...&lt;/p&gt;


&lt;p&gt;Si vous vous demandez depuis toujours ce que sont ces 'foo', 'bar, 'foobar' et autres 'baz', 'qux', 'quux'..., que l'on croise de temps en temps dans les docs informatiques en langue anglaise, alors allez consulter cette &lt;a href=&quot;http://www.ietf.org/rfc/rfc3092.txt&quot; hreflang=&quot;en&quot;&gt;RFC&lt;/a&gt; (&lt;a href=&quot;http://fr.wikipedia.org/wiki/RFC&quot; hreflang=&quot;fr&quot;&gt;qu'est-ce qu'une RFC ?&lt;/a&gt;)&lt;/p&gt;


&lt;p&gt;Si les méthodes Merise, RAD ou &lt;a href=&quot;http://fr.wikipedia.org/wiki/Extreme_programming&quot; hreflang=&quot;fr&quot;&gt;Extreme Programming&lt;/a&gt; vous sont déjà connues, mais ne vous ont pas satisfaites, vous pouvez toujours essayer la &lt;a href=&quot;http://www.la-rache.com/&quot; hreflang=&quot;fr&quot;&gt;méthodologie de La Rache&lt;/a&gt;, bien connue des meilleures universités informatiques.&lt;/p&gt;


&lt;p&gt;[via &lt;a href=&quot;http://www.michael-noll.com/2006/04/07/anti-social/&quot; hreflang=&quot;en&quot;&gt;Michael Noll&lt;/a&gt; et &lt;a href=&quot;http://www.foo.be/&quot; hreflang=&quot;en&quot;&gt;Alexandre Dulaunoy&lt;/a&gt; à l'origine de GooDiff (cf &lt;a href=&quot;http://blog.sietch-tabr.com/index.php/2006/04/20/113-un-service-pour-surveiller-les-documents-legaux-des-principaux-fournisseurs-de-service-sur-internet&quot; hreflang=&quot;fr&quot;&gt;billet précédent&lt;/a&gt;)]&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://blog.sietch-tabr.com/index.php/post/2006/04/21/#rev-pnote-114-1&quot; id=&quot;pnote-114-1&quot;&gt;1&lt;/a&gt;] euh, cherchez pas, c'est de moi ! :)&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
</channel>
</rss>