Le weblog entièrement nu

Roland, entièrement nu... de temps en temps.

Dernières nouvelles

RSS
FusionForge 6.0 final release available

Hi all,

After 4 release candidates, the FusionForge community is proud to announce the new major Fusionforge 6.0 final release.

The major changes in this version are:

  • Immediate system actions (0-delay for new project, new repository, new SSH key...)
  • Unified, concurrent SSH & HTTPS access to Git and SVN
  • Technology preview: new TaskBoard plugin supporting Scrum and Kanban agile methodologies

Here is a more detailed list of visible changes:

Standard features:

  • New install system (Inria)
  • Reactivity: system replication is now performed immediately (rather than waiting for cron jobs) (Inria)
  • SCM:
    • Concurrent SSH and HTTPS access, relying on Apache mod_itk (Roland Mas and Inria)
    • Allow projects to use several SCM engines in parallel (Roland Mas, for CEA)
    • Support read-only access to private projects via SSH (Inria)
    • Browsing support for (Git) private repositories (Roland Mas, for AdaCore)
    • Anonymous read-only access through xinetd and rsync (Inria)
  • System: users now use a common default group ("users") rather than per-user group; avoids conflicts with project groups (Inria)
  • Docman:
    • Basic Webdav write mkcol, delete, put, move support (TrivialDev)
    • Add move mass actions (TrivialDev)
    • Direct link to file details (TrivialDev)
    • Rewrite parser using unoconv, support more file formats (Roland Mas, for CEA)
  • FRS:
    • Enable widget "My monitored packages" (TrivialDev)
    • Provide new role settings (TrivialDev)
    • Add delete packages, releases or files mass action (TrivialDev)
    • Provide link to download any release as ZIP file (TrivialDev)
  • Web UI:
    • Drop tipsy plugin, use standard jQuery UI tooltip already provided (TrivialDev)
    • FusionForge Theme & jQuery UI theme sync (TrivialDev)
  • Gadgets:
    • Public Area: display FRS link (TrivialDev)
    • My Latest Commits: New widget to display user commits on "My Page" (TrivialDev)
    • Project Latest Commits: New widget to display the 5 latest commits on the project page (TrivialDev)
    • Project Latest Documents: enhancement, add actions buttons (monitor, delete) (TrivialDev)
  • Tracker: enable support for multi-select extrafield in roadmap (TrivialDev)
  • Forum: store the attached files on FS (TrivialDev)
  • vhosts: allow customization from /custom/httpd.vhosts.tmpl (Inria) Plugins:
  • SCM SVN: Improved ViewVC integration, using external installation (Inria, TrivialDev)
  • SCM Git: Activity log entry link to commit log in SCM browsing tab (TrivialDev)
  • SCM Hg (Mercurial)
    • Display the Repository History stats block (TrivialDev)
    • Add support for project activity tab (TrivialDev)
    • Activity log entry link to commit log in SCM browsing tab (TrivialDev)
  • scmhook
    • Update git post-receive email hook (tarent solutions GmbH, Teckids e.V.)
    • Install hooks as the requesting system user (Inria)
  • AuthLDAP: Support LPAP_OPT_REFERRALS option, needed by ActiveDirectory Server (TrivialDev)
  • Task Board: New Agile TaskBoard supporting Scrum and Kanban methodologies (Vitaliy Pylypiv and TrivialDev)

Tracker roadmap of the 6.0 release: roadmap.

Some metrics about 6.0:

  • 14 months of development since 5.3
  • ~ 2900 commits between 5.3 and 6.0
  • 36 contributors
  • 43 feature requests implemented
  • 10 bugs fixed (in addition to those that were not in the tracker)

FusionForge 6.0 can be downloaded in source form from our file release system. Packages will be available in some distributions soon.

Enjoy! Your feedback to fusionforge-general@lists.fusionforge.org is welcome!

For more information on FusionForge, refer to FusionForge.org.

-- The FusionForge community

Tags:
Posted ven. 29 mai 2015 16:01:08 CEST
Le marronnier du printemps

Eh ben eh ben eh ben. C'est bien calme ici, alors que j'aurais des tas de choses à dire… Je pourrais vous parler de Chacun sa part, qui continue de vivre sa vie et de croître doucement. Je pourrais vous parler de rock et de batterie. Je pourrais vous parler d'un truc rigolo que j'ai fait et qui mélange Gnucash, Boobank, Python, crm114 et Libre Office Calc. Ou de FusionForge. Ou de moto, de Montpellier, de soleil. Je pourrais vous parler de plein de choses, mais il se trouve que je passe mon temps à faire ces choses plutôt qu'à en parler sur mon blog, tout magnifique soit-il. Donc je me contenterai du marronnier habituel, qui porte cette année le numéro 38.

Et qui le porte bien, merci.

Tags:
Posted sam. 11 avril 2015 19:30:01 CEST
37

C'est l'heure d'un marronnier de ce blog : la petite chronique numérologique du 11 avril. Celle-ci sera consacrée au nombre 37.

Nombre premier, premier irrégulier, premier cubain, cousin avec 41, hexagonal centré et étoilé, c'est aussi le numéro atomique du rubidium et ça nous fait une belle jambe.

Et c'est un nombre qui colle particulièrement bien à la journée d'aujourd'hui (qui, si jamais les générations futures s'y intéressent, s'annonce pour être belle et douce, avec peut-être un petit voile nuageux).

Tags:
Posted ven. 11 avril 2014 10:06:19 CEST
Une page de publicité

Allez, c'est vendredi, c'est permis, je vais m'autoriser deux petites annonces.

Premièrement : rappelez-vous Minami Taiko, ce groupe de tambours japonais du sud de la France. Bon, nous on est des amateurs, mais il se trouve qu'on fait venir, pour le festival Escale à Sète, un vrai groupe de taikos du Japon et tout. Ils s'appellent SEN, et ils vont faire quelques animations musicales dans Sète du 18 au 21 avril. Et avant de repartir dans leur lointain Cipango, ils feront un vrai concert à Montpellier, le mardi 22 avril au soir, sur le campus de l'INRA/Supagro. Et devinez qui fait la première partie ? Minami Taiko, voilà qui ! Donc si vous voulez découvrir le taiko ou voir quelques amateurs suivis d'un vrai groupe, faites donc un tour sur le site de Minami Taiko. À noter qu'il y a aussi un atelier d'initiation le même jour si ça vous intéresse.

Deuxièmement : je suis fier de vous présenter un petit site web que c'est moi qui l'ai fait avec mes petits doigts délicats. Ça s'appelle Chacun sa part, et ça sert à faire des comptes entre amis, genre quand on part en vacances ensemble, ou qu'on fait régulièrement des dépenses partagées dans un groupe de gens. Pour éviter des comptes d'apothicaire à chaque restau, chaque tournée au bar, chaque passage en caisse, on saisit la dépense sur le site, on dit qui a payé et qui a participé, et le site calcule automatiquement les soldes de chacun et propose des suggestions de remboursements pour rééquilibrer les comptes. Y'a un système d'invitations pour que chacun puisse consulter l'état du groupe et saisir des dépenses, des QR-codes pour faciliter la vie aux utilisateurs de smartphone, et même si ça n'a pas encore été testé à grande échelle ça a été validé par une poignée de testeurs dans différentes configurations. Allez-y, c'est cadeau. Chacun sa part. Point com.

Tags:
Posted ven. 11 avril 2014 10:06:19 CEST
Rsyncing a BackupPC storage pool, efficiently

BackupPC is a pretty good backup system. Its configuration is rather flexible, it has nice expiry policies, and it can store duplicated file contents only once (for files that are shared across hosts or don't change in time) within a compressed pool of data. However, it doesn't do much to help pushing the data to off-site storage, or at least not very efficiently. So if you have a BackupPC instance running on a Raspberry Pi or a plug computer at home, it's a bit tricky to protect your data against loss due to burglary or home fire.

The obvious solution would be to rsync the storage pool to a remote site. However, the current pooling system relies heavily on hardlinks, and rsync is notoriously inefficient with those. In the home backup server scenario, this means that even if the computer is more powerful than a Pi and can handle the memory requirements of rsync, you'll often end up transferring way too much data.

So, since the obvious solution doesn't work straight away, what do we do? Why, we fix it, of course. With a little look into the storage pool, we notice that the bulk of the data is stored in files with an “abstract“ name (related to the contents) within a $prefix/pool directory; the files with concrete names looking much like their original are stored within $prefix/pc, and they're actually the same files because they're hardlinks. Knowing this (that rsync doesn't), we can make a smarter replication tool, by

  1. pushing only the pool with standard rsync;
  2. storing locally, and recreating remotely, the structure of hardlinks;
  3. pushing everything again with standard rsync.

Steps 1 and 3 are simple invocations of rsync -aH; step 2 can be implemented using the following two scripts. Run store-hardlinks.pl locally, push the links file, then run restore-hardlinks.pl on the remote server. This will ensure that files already present in the pool are also hardlinked in their natural location.

store-hardlinks.pl:

#! /usr/bin/perl -w

use strict;
use Storable qw(nstore);
use File::Find;

use vars qw/$prefix $poolpath $pcpath %i2cpool %todo $store/;

$prefix = '/var/lib/backuppc';

$poolpath = '$prefix/cpool';
$pcpath = '$prefix/pc';
$store = '$prefix/links';

# for the convenience of &wanted calls, including -eval statements:
use vars qw/*name *dir *prune/;
*name   = *File::Find::name;
*dir    = *File::Find::dir;
*prune  = *File::Find::prune;

# Scan pool
File::Find::find({wanted => \&wanted_pool}, $poolpath);

# Scan PC dirs
File::Find::find({wanted => \&wanted_pc}, $pcpath);

nstore \%todo, $store;
exit;

sub wanted_pc {
    my ($dev,$ino,$mode,$nlink,$uid,$gid);

    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
      -f _ &&
      ($nlink > 1) &&
      do {
      $name =~ s,$pcpath/,,;
      if (defined $i2cpool{$ino}) {
      $todo{$name} = $i2cpool{$ino};
      }
    }
}

sub wanted_pool {
    my ($dev,$ino,$mode,$nlink,$uid,$gid);

    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
      -f _ &&
      ($nlink > 1) &&
      do {
      $name =~ s,$poolpath/,,;
      $i2cpool{$ino} = $name;
    }
}

restore-hardlinks.pl:

#! /usr/bin/perl -w

use strict;
use Storable;
use File::Path qw/make_path/;

use vars qw/$prefix $poolpath $pcpath %todo $store/;

$prefix = '/srv/backuppc-mirror';

$poolpath = "$prefix/cpool";
$pcpath = "$prefix/pc";
$store = "$prefix/links";

%todo = %{retrieve ($store)};

my ($dev,$ino,$mode,$nlink,$uid,$gid);

foreach my $src (keys %todo) {
    my $inode;
    my $dest = $todo{$src};
    my $dpath = "$poolpath/$dest";
    my $spath = "$pcpath/$src";
    my $sdir = $spath;
    $sdir =~ s,/[^/]*?$,,;
    make_path ($sdir);
    next unless -e $dpath;
    if (! -e $spath) {
      link $dpath, $spath;
      next;
    }
    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($spath));
    $inode = $ino;
    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($dpath));
    if ($ino != $inode) {
      unlink $spath;
      link $dpath, $spath;
    }
}

The initial transfer can still take forever if the pool is large (and if you're pushing it through the small end of an ADSL link…), but at least the files are only transferred once.

Note: This is only useful for current versions of BackupPC. Apparently BackupPC 4 will have a different pooling system without hardlinks, and the following hack will no longer be required. For now, though, here it is.

Tags:
Posted lun. 02 déc. 2013 11:25:31 CET
10 ans !

Eh ben dites-donc mes aïeux, le temps passe. Le 15 novembre 2003, j'émettais ma première facture en tant que consultant indépendant.

Eh ben dix ans plus tard, y'a eu des hauts et des bas, mais globalement tout va bien, et je continue à faire des factures de temps en temps, et ça me plaît toujours autant.

Touchons du bois pour que ça continue, et on en reparle dans dix ans !

Tags:
Posted ven. 15 nov. 2013 15:45:02 CET
Les rumeurs de la mort de ce blog…

…sont un peu exagérées. Mais c'est sûr, c'est calme, et apparemment une partie de mon lectorat s'en inquiète. Donc voici un lot de nouvelles pour ceux que ma vie passionne et qui n'ont plus accès au 3615 Roland.

Alors bon, suite à ce que je vous disais sur Eleven en mai, je me suis mis en quête d'un autre groupe de rock. J'avais cru en trouver un, mais j'ai l'impression que la motivation n'était pas universellement partagée, à tel point qu'on a dû faire moins d'une répétition par mois en moyenne. C'est pas des bonnes conditions, donc je suis de nouveau en recherche. Si vous cherchez un batteur pour jouer du rock aux environs de Montpellier, faites-moi signe.

Cela dit, je ne suis pas resté oisif pour autant : le taiko continue, l'association a été reprise en main, on répète, et hop hop hop on est même invités à jouer en public pas plus tard que ce week-end ! Ça va se passer au parc Borély à Marseille, à l'occasion du festival d'automne organisé par le consulat général du Japon. Plus de détails sur le site de Minami Taiko, vu que c'est comme ça qu'on s'appelle. Le site est neuf aussi, mais on y mettra des photos et peut-être des vidéos.

Sur les autres fronts : côté FusionForge c'est calme, mais la prochaine édition du Debian Administrator's Handbook / Cahier de l'Admin Debian avance petit à petit. On commence non pas à en voir le bout, mais à voir ce qu'il reste à faire avant d'en voir le bout. Mes autres récents petits bricolages de geek feront peut-être l'objet d'un billet dédié si je suis motivé.

Voilà voilà.

Tags:
Posted jeu. 10 oct. 2013 17:15:01 CEST
FusionForge news, June 2013

Once again, it's been some time since the last FusionForge update in here. The main explanation is that news is slow on that front. Debian Wheezy was released without FusionForge packages, as previously announced, and even Sid hadn't seen any update on the package for way too long. The latter has just been fixed though: the freshly-released 5.2.2 upstream version is on its way to Sid (via NEW, since it adds a new plugin to allow authenticating against a CAS server). If and when it reaches Debian Jessie (the current “testing”), I'll work on backporting it for Wheezy.

At some point I'll also start uploading snapshots of the upstream master branch to “experimental”, to give adventurous users a glimpse of what is to come in the future releases, although I'll stick to only uploading when the automated tests all pass.

Tags:
Posted ven. 28 juin 2013 00:00:00 CEST
Le joli mois de mai

Comme d'habitude quand je n'ai rien de vraiment fracassant à annoncer au monde ébahi, ce billet mensuel sera sous forme de trucs-en-vrac.

Premièrement : Raphaël et moi avons obtenu l'accord des éditions Eyrolles pour une libération (conditionnelle) du Cahier de l'Admin Debian dans sa version française. La version anglaise a déjà été libérée l'an dernier, mais le texte original reste pour l'instant sous copyright d'Eyrolles. Mais suite à d'âpres négociations, nous avons obtenu une rétrocession des droits, sous condition de l'assurance d'un certain nombre de ventes du livre. Donc nous avons lancé une campagne de financement, qui nous permettra de fournir cette assurance à Eyrolles, qui pourra en toute confiance lancer une nouvelle édition. Le livre sera bien entendu en librairies, mais les « préventes » par Ulule proposent des contreparties supplémentaires, et surtout elles contribuent à la libération du livre, ce qui permettra son évolution et sa maintenance collaborative. Nous vous encourageons donc chaleureusement à participer à cette campagne.

Deuxièmement : je note une fois de plus que la fin du monde-tel-qu'on-le-connaît, qui était annoncée pour hier, n'a pas eu lieu : au moins dans mon village, ce matin, les rues n'étaient pas à feu et à sang, ni envahies d'ogres mangeurs d'enfants. Ça fait deux fins du monde annoncées puis ratées en moins de six mois. Nous sommes tous des survivors.

Troisièmement : ça n'a rien à voir, mais il y a quand même quelque chose qui s'est fini. C'était il y a quelques semaines et je n'ai pas eu l'occasion d'en parler, mais des divergences sur l'orientation du groupe ont fait que les chemins d'Eleven et de votre serviteur se séparent. Donc je me retrouve en recherche d'un groupe de rock, et Eleven se trouve en recherche d'un batteur. Comme on n'est pas des stars capricieuses, les « divergences » ne sont pas un euphémisme pour des portes qui claquent et des rancunes inextinguibles, désolé de vous décevoir, on s'est juste arrêtés de jouer ensemble. Je vous tiens au courant si (et quand) je trouve un nouveau groupe.

Je crois que c'est tout pour ce mois-ci. La suite… un autre jour.

Tags:
Posted jeu. 30 mai 2013 00:00:00 CEST
36

Trente-six chandelles. Trente-six vues du mont Fuji (ou de la Tour Eiffel). Y'a pas trente-six manières de faire. Mais y'a trente-six pouces dans un yard. Numéro atomique du krypton (rien à voir avec Superman).

Trente-six ans !

Tags:
Posted jeu. 11 avril 2013 00:00:00 CEST
Creative Commons License Sauf indication contraire, le contenu de ce site est mis à disposition sous un contrat Creative Commons.