www.amglr.net Index du Forum
planet.amglr.net
Association du Master Génie Logiciel et Répartition
Formation ubuntu Server à Toulouse... que vous pouvez peut être suivre gratuitement...

Christophe Sauthier (huats)

Objectif Libre, la société que j'ai fondé, va proposer une formation Ubuntu Server du 19 au 23 Avril 2010 à Toulouse.

Cette formation de 5 jours s'adresse aux personnes avec une connaissance initiale du système Linux et qui souhaitent acquérir une base solide dans l'administration de server Ubuntu au travers de cours théoriques et de travaux pratiques. Même si elle sera effectuée dans un environement Ubuntu Server, une grande partie des thèmes et des techniques abordées est également communes à d'autres distributions comme Debian ou Red Hat. La formation sera encadrée par un expert Linux qui est également un développeur Ubuntu officiel, donc n'hésitez pas à consulter la fiche de la formation pour plus de détails. Il reste des places disponibles donc n'hésitez pas à nous contacter pour vous inscrire...

Il existe également un autre moyen pour suivre cette formation. Comme cela est toujours le cas chez nos amis de Free Electrons, spécialistes de Linux Embarqué, pour remercier les contributeurs au logiciels libres, nous sommes heureux de proposer une place gratuite à cette formation. Ainsi si vous avez effectué une contribution significative au Libre, n'hésitez pas à nous contacter pour candidater. La date limite des dépots de candidature étant fixée au 23 Mars 2010. Le lauréat sera tiré au sort parmi les 10 contributeurs les plus méritants à nos yeux. Bien sur nous acceptons aussi bien les personnes sans emplois, que les étudiants ou les professionnels du moment qu'il contribuent au Libre. Les frais de déplacement et de logement éventuels pour venir à Toulouse, restent à la charge du lauréat (ou de sa société s'il s'agit d'un professionnel et que cette dernière est d'accord pour participer).

04/03/2010 à 10:55
Ubuntu-fr et Canal+ retrouvent des relations cordiales

Christophe Sauthier (huats)

Je suis sur que beaucoup se souviennent de mon billet où je dénonçais une situation entre l'association ubuntu-fr et Canal+.

Plusieurs personnes ont relayés l'information (merci !) et j'ai été en relations avec un médiateur de chez canal+, qui je dois bien le dire a était parfait. Nous avons échangé plusieurs fois, il s'est occupé du dossier et aujourd'hui le facteur m'a amené les chèques de remboursement tant espérés.

Bref tout rentre dans l'ordre... Un grand merci donc à Alain Vogel pour son professionnalisme et à toutes les personnes qui nous ont montré leur soutien à travers leurs commentaires et leurs mails.

19/02/2010 à 15:29
Intégrer facilement une machine Linux dans un environnement Windows

Christophe Sauthier (huats)

C'est le but du logiciel SADMS. Oui mais voilà, ce logiciel n'était pas vraiment intégré à Ubuntu, et encore moins dans les dépots officiels.

Ma société, Objectif Libre spécialistes Français de Ubuntu, a donc décidé de changer cela, avec pour but à court terme d'aider le groupe LinuxEdu, qui se bat pour faire utiliser Linux dans l'éducation Nationale au niveau de la région Midi Pyrénées.

Comme expliqué et détaillé sur le blog de la société, nous avons envoyé des patchs à l'auteur, crée les paquets, déployé sur notre PPA (pour permettre une diffusion dès maintenant) et nous sommes en train de tenter de faire entrer le logiciels dans Ubuntu et Debian. Et déjà qu'est ce que c'est SADMS ? c'est une interface graphique qui va vous guider pour le paramétrage de l'intégration dans un environnement Windows. C'est vraiment très simple d'utilisation. En voici quelques captures d'écran.

Comme toujours, si vous utilisez notre PPA pour tester l'intégration avec votre PC sous Ubuntu, veuillez faire attention vous utiliserez un logiciel qui ne provient pas des dépôts officiels (pour le moment).

15/02/2010 à 10:54
en attendant le BDD... Tester une application Asp.net MVC en 10 minutes

Guillaume Saint Etienne (yohm31)

http://bit.ly/aX5vsU

pour ceux qui veulent mettre en place des tests rapidement et efficacement sur une application Asp.Net MVC... voici une version courte de mon précédent article.

A l'essentiel cette fois ci, ou comment mettre en oeuvre une politique de tests unitaires qui marche, et qui fait des vrais tests!

 

1) choix des fra mework

2) tests des vues

3) tests des contrôleurs

4) isoler (mock) les contrôleurs de leur partie métier (domaine)

5) inversion de contrôle pour fonctionner en test et hors test sans rien toucher

le détail est à lire ici:

http://bit.ly/aX5vsU

 

 

09/02/2010 à 11:33
Est ce que Ubuntu-fr va devoir attaquer Canal+ en justice ?

Christophe Sauthier (huats)

C'est avec une véritable lassitude que j'écris ce billet... Lassitude mais également un véritable énervement, en ma qualité de président de Ubuntu-fr. La raison est simple : j'en ai marre de me battre de manière "gentille" et je pense que nous allons devoir passer une vitesse supérieure.

Petit historique : il y a maintenant 1 an, nous avons remarqué plusieurs prélèvements suspects sur les comptes de Ubuntu-fr. Prélèvements qui étaient réalisés par Canal+ et CanalSat, alors que bien sur l'association n'a JAMAIS souscrit à ce genre de contrat, puisque nous n'avons même pas de local... Après de multiples appels vers les services concernés il a été établi qu'il s'agissait d'une fraude, comme cela peut arriver.

Le temps de faire TOUTES les démarches demandées : dépôt de plainte, opposition auprès de notre banque (qui d'ailleurs a autorisée ces prélèvements sans vérifier la signature....), lettres en recommandé avec accusé de réception,... le montant total des prélèvement était aux alentours de 270€, ce qui n'est clairement pas négligeable. A la fin de ces échanges tous les interlocuteurs Canal+ m'ont assurés que nous allions être remboursés rapidement par chèque...

Et depuis le mois de Mars 2009 ??? et bien RIEN... Je vous rassure j'ai recontacté plusieurs fois les services concernés, en devant réexpliquer à chaques fois notre histoire... j'ai plusieurs fois été coupé car mes appels dépassaient les 30 minutes légales et donc obligation de recommencer à tout raconter... A CHAQUES FOIS (au moins à 4 reprises) la même histoire : "Oui monsieur Sauthier, nous allons vous faire parvenir les chèques d'ici 2 semaines" ou "Il y a eu un problème avec les chèques, veuillez nous envoyer ces éléments supplémentaires, et d'ici 1 mois nous allons les rééditer"... Et là j'en ai marre, mais alors vraiment marre. Et je n'ai plus envie de téléphoner. J'ai dépensé plus de 60 € entre les lettres, et les appels téléphoniques (payant) aux services de Canal + pour au final RIEN si ce n'est donner des sous à Canal+ qui touche (j'en suis persuadé) un pourcentage sur mes appels à leurs services...

Bref si vous pouvez faire bouger les choses faites le : relayer notre appel sur vos blogs, messagerie, twitter/identica, ou si vous connaissez quelqu'un chez Canal+ qui veut bien me recontacter... Car si les choses continuent comme ça d'ici peu je vais aller porter plainte contre Canal+ au tribunal. On aura des frais (potentiellement remboursable) mais moins que 270 € et au moins ça sera réglé...

02/02/2010 à 14:05
Bien Tester une application Asp.net MVC

Guillaume Saint Etienne (yohm31)

http://docs.google.com/View?id=dhp3ggmx_168c5md3p52

 

Bien Tester ASP.Net MVC 1.0

Genèse

ASP.Net MVC est né avec plein de bonnes résolutions, et notament celle d' enfin permettre du test unitaire sur les applications Web programmées avec le framework.Net .

Je dis "enfin" car le Test ne passionne pas les foules, et pas vraiment les développeurs, encore moins les responsables ou les clients qui voient en lui une perte de temps ou source de coûts supplémentaires!

Evidemment - et paradoxalement- nos clients (ou parfois chefs de projets) aimeraient bien voir leurs applications garanties exempte de tout défaut, et donc testées, mais bien souvent n'imaginent pas que cela est possible à faire à moindre coût et par un automate.

Comme ils croient surtout que cela coûte trop cher (ou trop de temps) ils font donc passer à la trappe cette étape, qu'ils rejettent d'ailleurs -à tort- en fin de planning alors qu'elle devrait prendre place dès le tout début du projet en se fondant dans les spécifications (pour en diluer le coût).

Pour ce qui est des technologies .Net, on ne peut pas dire que le test ait été placé au coeur de la plateforme. Il a fallu tout de même attendre la version 4 du framework pour réaliser la notion de "code contract", notion omni-présente dans des langages comme Eiffel dont s'inspire pourtant largement C#.

Pour ce qui est de la programmation Web sur la plateforme Microsoft, les WebForms (ASP.Net classique) étant intestables dans leur coeur, il fallait introduire soi-même le pattern MVC, celui par qui le test est possible, ou utiliser un framework additionnel (Monorail par exemple, donc j'avais parlé ici il y a quelques années http://www.castleproject.org/monorail/index.html )

Heureusement, et presque 10 ans après l'apparition d'ASP.Net, Microsoft rend officiel l'utilisation du pattern MVC. Il était temps! Mais que de retard accumulé par rapport aux autres plateformes!

Aidé par un puissant site de présentation et d'aide aux développeurs ( http://www.asp.net/mvc/ ), les développeurs vont enfin pouvoir sortir du modèle "dictatorial" des Webforms et retrouver des façons de programmer le web plus "dans les normes", ou du moins, plus proches des autres frameworks (JSF, RubyOnRails, PHP, etc...)... et pouvoir enfin envisager de tester facilement et sereinement!

Pourtant, trouver des bons exemples de code de tests (TDD) pour ASP.Net MVC, relève du parcours du combattant: code obsolète, différentes releases de ASP.Net MVC, examples incomplets, y compris dans la doc officielle (et quand ca compile, on peut s'estimer heureux), informations contradictoires, besoin d'utiliser à la fois des Mock-ups et de de l'injection de dépendance.... de quoi décourager le plus motivés des adeptes du TDD comme moi.

Quasiment tous les articles qui datent de 2008 sont obsolètes (par exemple http://dotnetslackers.com/articles/aspnet/ASPNETMVCFrameworkPart2.aspx ) mais ils contiennent des idées qu'il faut assimiler.

Indispensable, la classe utilitaire donnée par Scott H. mais qui compile pas :((( http://www.hanselman.com/blog/ASPNETMVCSessionAtMix08TDDAndMvcMockHelpers.aspx

... que d'embuches!

Quand on sait que l'approche TDD (et BDD) [Test Driven Development et Behavior Driven Development ] est la seule qui permette de GARANTIR qu'un logiciel est conforme à ce qu'on attend de lui (via l'écriture de spécification formelles), on a besoin d'y voir clair dans les tests.

Alors voici un article en français qui explique tout, simplement (j'espère), et dont les exemples compilent!

1 - Que faut-il pour tester?

un framework de test est indispensable. Mais lequel choisir? il y en a tellement....

pour comparer d'un point de vue pratique, vous pouvez consulter cette page:

http://xunit.codeplex.com/wikipage?title=Comparisons

mais chacun a ses préférences... difficille de faire un classement objectif et trouver des critères de notations entièrement acceptés par la communauté.

Pour ma part, j'ai choisi xUnit, uniquement pour sa simplicité

http://jamesnewkirk.typepad.com/posts/2007/09/announcing-xuni.html

voici quelques unes de ses caractéristiques:

· Single Object Instance per Test Method.

· No [SetUp] or [TearDown].

· Aspect-Like Functionality.

· Reducing the Number of Custom Attributes.

· [TestFixture] was removed entirely, so tests can be anywhere.

· [Ignore] is expressed using the Skip= parameter on [Test]

· [ExpectedException] was replaced with Assert.Throws.

· [TestFixtureSetup] and [TestFixtureTearDown] are instead expressed as implementations of an interface (ITestFixture).

· Support for IDisposable was added for tests.

2 - Tester, tester.... oui mais tester quoi?


Une application, qu'elle soit Web ou pas, est un ensemble composite.

Il y a multitude de choses qui s'y passe.

Quand on n'utilise pas de pattern et qu'on ne se pré-occupe pas d'architecture logicielle, tout est mêlé dans un code "spaghetti", souvent dans peu de fichiers qui font chacun des milliers de lignes. Dans ce cas, on va avoir beaucoup de mal d'effectuer des tests clairs.

Une Séparation des Responsabilités dans le code (SoC: Separation of Concerns), une architecture N-tiers, une approche Domain Driven, un couplage lâche, une architecture bien pensée, sont évidemment les pré-requis d'un bon projet guidé par les tests (Tests Driven Development).

Le pattern MVC va beaucoup nous aider, puisqu'il sépare le code de la vue, de celui du contrôleur, et du modèle.

Tester la vue en elle même

Pour ce qui est de tester le contenu d'une page HTML, qu'une zone de texte soit bien remplie par la bonne valeur, que la bonne CSS s'applique ou que le nombre d'éléments dans une boite déroulante soit conforme à ce que l'on attend, le Unit Testing n'est pas vraiment l'outil idéal.

Quoiqu'il existe des frameworks qui ont tenté de le faire : http://nunitasp.sourceforge.net/ projet abandonné, ou http://htmlunit.sourceforge.net/ mais pas de portage .Net à ma connaissance.

Il existe malgré tout des outils de tests qui agissent directement sur l'IHM et donc dans notre cas sur le navigateur Web , avec des capacités de comprendre ce qui se passe sur la page HTML (à l’aide de notre ami JQuery) comme le très puissant Selenium IDE ( http://seleniumhq.org/ ) qui va vous générer le code NUnit de test des pages Html à intégrer dans votre solution .Net.  Malheureusement vous serez dépendant d’un serveur Web pour effectuer vos tests, et le principe d’isolation des tests unitaires n’est pas respecté.

En attendant la solution qui comble la brèche…

Tester qu'une vue s'affiche bien

C’est assez trivial mais c'est un début :

[Fact]

public void ReturnsViewResultWithDefaultViewName()

{

// Arrange

var controller = new HomeController();

// Act

var result = controller.Index();

// Assert

var viewResult = Assert.IsType<ViewResult>(result);

Assert.Empty(viewResult.ViewName);

}

Cela permet de vérifier que vous n'avez pas fait de grosses erreurs dans le montage de votre solution Asp.Net MVC. Malheureusement ca ne teste pas des erreurs éventuelles dans le fichier de vue (.aspx)

Notez au passage le tryptique classique d'une méthode de test 1)Arrange 2)Act 3)Assert.

Si votre contrôleur fait passer des bouts de données à la vue par l'intermédiaire du dictionnaire ViewData , il vous suffira de rajouter une ligne:

Assert.Equal("Welcome to ASP.NET MVC!", viewResult.ViewData["Message"]);

Toujours trivial. Et relativement peu utile.

La bonne pratique est d'utiliser une vue fortement typée, ce qui donne quelque chose comme ca dans l'entête de la déclaration de votre vue:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"

Inherits="System.Web.Mvc.ViewPage<ManagePassword.Domain.OperationResult>" %>

ManagePassword.Domain est la librairie de domaine de notre application, et OperationResult est l'objet Modèle (au sens MVC) qui va transiter entre la vue et le contrôleur.

Notre test pourra déjà s'assurer que le contrôleur renvoie bien un objet de ce type là.

// ASSERT

Assert.NotNull(results);

Assert.NotNull(results.ViewData.Model);

var res = Assert.IsAssignableFrom<OperationResult>(results.ViewData.Model);

L'idée d'avoir un modèle déterminé (et donc fortement typé) afin de pouvoir passer de multiples valeurs et tester ce que le contrôleur va retourner à la vue.

Par exemple, on a souvent besoin d'une page qui fait le résumé de l'opération qui vient d'être demandé, et un modèle simple (mais récurrent) pourrait être:

public class OperationResult

{

public bool isOk;

public string errorMessage;

}

Notre test va pouvoir porter maintenant sur les membres du Model, et donc faire plus de vérifications.

// ASSERT

Assert.NotNull(results);

Assert.NotNull( results.ViewData.Model);

var res = Assert.IsAssignableFrom<OperationResult>(results.ViewData.Model);

Assert.Equal(false, res.IsOk);

Tester les redirections

Une redirection peut avoir lieu dans votre contrôleur, la tester permet de savoir par quel point ^de code le contrôleur a terminé son exécution. Pour cela le code de test ressemblera à ceci :

///ACT

var results = controler.ChangePassword(userInfo) as RedirectToRouteResult;

// ASSERT

Assert.True(controler.ViewData.ModelState.IsValid);

// permet de tester que c'est bien un RedirectToRouteResult qui a été retourné (à cause du AS plus haut)

Assert.NotNull(results);

La ligne 1) ne plantera pas au cas où le code du contrôleur ne renvoi pas un objet de redirection ( ). Par contre Assert.NotNull(results); génèrera un échec du test car en cas d’echec du cast par AS, la variable contient le pointeur vers Null.

Pour rappel, une méthode de test ne doit attendre qu’un seul comportement possible.

Si vous voulez tester le cas où le contrôleur ne fait pas d’indirection (et renvoi des valeurs via le modèle), écrivez alors une autre méthode de test pour ce cas là. Attention à ne pas mettre de logique  IF… ELSE…  dans une méthode de test. Car cela est banni.

Dans la vraie vie, le but du programme est de faire en sorte que le Contrôleur appelle un (ou plusieurs) objets du domaine avec un minimum de logique (car la logique doit être dans le domaine). Le contrôleur s’occupe de la logique nécessaire pour préparer l'affichage (et donc le Modèle pour alimenter la vue), et c'est de cela dont il va falloir maintenant s’occuper.

Tester le contrôleur tout seul

Comme je le disais plus haut, la meilleure pratique nous conseille de déporter la logique du domaine (que l'on appelle souvent Métier en France) de l'application.

Hors, dans une démarche de test, la meilleure pratique est de ne tester d’une seule chose à la fois (isolation du test).

Si nous testons le contrôleur, nous devons ne tester que les appels de code dans son corps et non pas tous les objets dont il dépend et/ou auxquels il fait appel.

Il va donc falloir « débrancher » le Contrôleur de tout ce qui pourrait parasiter le test.

Comment faire sans écrire du code compliqué, et surtout sans toucher au code du contrôleur qui doit être transparent au test ? On ne doit pas changer le code de ce qui doit être testé pour le rendre testable ! Sinon le test est biaisé.

Les 2 choses typiques à débrancher sont : le ou les objets de domaine (ou système d’accès aux données), et le contexte sous-jacent au contrôleur (routage, requête http, contexte session, etc.).

Pour ce dernier, ASP.Net MVC est assez bien fait et les dépendances en place n’empêchent pas les tests de fonctionner en isolation, c'est-à-dire sans la présence d’un serveur HTTP.

Ceci dit, si on a besoin de tester le comportement d’un contrôleur en fonction de ce qui peut se passer au niveau Requête HTTP par exemple, on a la possibilité de fournir un faux contexte HTTP.

Vous trouverez de quoi réaliser ceci avec une classe d’aide aux tests, que vous devrez intégrer dans le projet de test : MvcMockHelpers

Vous en trouvez le code ici : http://www.hanselman.com/blog/ASPNETMVCSessionAtMix08TDDAndMvcMockHelpers.aspx

Elle vous propose (entre autres) un FakeHttpContext que vous brancherez à votre contrôleur avec une méthode d’extension, comme celle ci :

controler.SetFakeControllerContext();

Cette classe repose sur un  framework de Mock-up. Le code donné fonctionne avec différentes librairies : RhinoMocks, TypeMock ou Moq.

Personnellement j’ai choisi Moq, car c’est le plus « fluent » au niveau API, sans être abscon, et celui qui a la syntaxe la plus claire pour spécifier le comportement des bouchons, mais nous allons le voir plus loin.

Le seul (petit) problème c’est que cela peut ne pas compiler. Il vous faudra chercher un certain moment sur le net avant de trouver ce « hack » :

http://stackoverflow.com/questions/205644/error-when-using-extension-methods-in-c

et qui vous conseille d’ajouter ces quelques lignes de code au fichier dans lequel vous aurez mis le MvcMockHelpers:

namespace System.Runtime.CompilerServices

{

/// <summary>/// to avoid the following error: Missing compiler required member 'System.Runtime.CompilerServices.ExtensionAttribute..ctor'

/// </summary>

public class ExtensionAttribute : Attribute { }

}

Les méthodes d’extension SetHttpMethodResult et SetupRequestUrl vous seront bien utiles pour tester le comportement de votre contrôleur quand l’invocation se fait par une méthode HTTP GET ou HTTP POST, ou si son code vérifie l’URL demandée.

Bouchons à la rescousse

Mais une bonne partie du comportement d'un contrôleur repose sur l'appel à (et sur les réponses fournies par) un ou plusieurs objets de domaine.

Personnellement je mets toute la logique de mon application dans ces objets et je ne fais pas d'appel aux données directement. Pour ceux qui font le contraire,  la logique de tests est de toute façon la même. Pour que le test puisse tourner indépendamment (sur un serveur de Build ou dans Gallio Icarus par exemple), il ne faut pas de liaison à une base de données ou à tout autre système externe.

C'est aussi pour cela que passer par des objets de domaine, même s'ils ne font que du CRUD, va simplifier le code dans le contrôleur et donc faciliter les tests.

L'avantage majeure résidant dans ces objets de domaine, puisque c'est nous qui les écrivons "à la main", c'est d'avoir une interface que les bouchons vont exploiter.

Je ne vous fais pas l'affront d'expliquer pourquoi une interface est bonne pour votre architecture.

Tout ce qui est à l'extérieur de notre  contrôleur à tester devrait avoir une interface. C'est le cas par exemple d'un Web Service. Quand vous allez vous brancher à une Web Reference, Visual Studio va avant tout construire une Interface (au sens C#) et vous allez pouvoir travailler avec celle-ci.

De toutes façons, il est aisé d’admettre (ou de constater) que tous les frameworks de bouchonnage (mockup) vont exiger une interface afin de pouvoir travailler, donc vous n'avez pas le choix.

Partons du cas où nous avons été de bons élèves et où nous disposons d'une IquelqueChose pour nos objets de domaine (Si ce n'est pas le cas, un petit coup de refactoring et en 3 secondes nous auront ce précieux fichier).

Armé de cette précieuse Interface, donc, vous la passerez en carburant au constructeur du Mock. Avec Moq, cela ressemble à ceci :

//Arrange

// create the mock

var mockRepository = new Mock<IDomainManagingPasswords>();

L’idée est ensuite de faire passer au contrôleur, un objet factice fabriqué par le mockRepository, qui va répondre à l’interface voulue.

Donc vous aurez à modifier le code du contrôleur pour qu'il travaille non plus avec une instance interne du (ou des) objet de domaine, mais avec une référence sur l'Interface, et fourni à l'extérieur du contrôler.  C’est la seule chose que vous devez modifier dans votre contrôleur pour le rendre testable, mais à bien y réfléchir, c’est plus une façon de programmer qu’une contrainte donnée par la démarche de test. Je m’en expliquerai dans un prochain article sur la qualité du code et les enjeux du test dans l’optique de la programmabilité et de la maintenabilité du code.

Cette différente façon de faire consiste à très fortement découpler les objets entre eux. A bien y réfléchir, un objet (ici le contrôleur) a toujours besoin d’un (ou plusieurs) autre objet pour réaliser le comportement attendu. Ne serait-ce que parce que nous avons à notre disposition foultitude d’objets prêt à être réutilisés.

Pour ce faire, nous avions souvent l’habitude d’instancier ces objets tiers, au moment où nous en avions besoin. Parfois, au mieux, nous procédions à leur instanciation/initialisation dans le constructeur de l’objet qui en fait usage.

Ce n’est pas une bonne pratique, car cela ne laisse aucun contrôle sur ces objets (comment ils doivent être initialisés, etc). Il est donc plus profitable (et pas que pour des besoins de tests) de passer des pointeurs sur ces objets au moins au constructeur de celui qui en fait usage, et voir même à chaque méthode dans certains cas.

Pour notre contrôleur cela donne ceci :

private readonly IDomainManagingPasswords _domainObject;

/// <summary>

/// constructeur avec parametre pour accepter le Mocking...

/// </summary>

/// <param name="domainObj">The domain object.</param>

public ManageController(IDomainManagingPasswords domainObj)

{

_domainObject = domainObj;

}

Ensuite à l’intérieur des méthodes du contrôleur, on utilise librement la variable _domainObject comme si de rien n’était.

Cette variable sera occupée par l’objet bouchon lors du test, et cela nous permettra d’ordonner au bouchon d’avoir un comportement A ou B, selon les besoins du test.

Les possibilités donc de « jouer » avec le test sont maintenant très nombreuses.

Par contre, il faut que le contrôleur continue de fonctionner dans son environnement initial, à savoir lorsque le site Web fonctionne dans IIS ou Cassini (ou Apache). Et dans ce cas, le framework Asp.Net MVC s’occupe d’initialiser les contrôleurs, et pour cela il appelle le constructeur sans paramètre de chacun ; ce qui est bien normal, car il n’est pas capable de décider quelle instance d’objet tiers lui passer.

Et évidement, dans ce contexte, on ne travaille plus avec les bouchons mais avec les implémentations « qui marchent » !

Alors comment faire ?

Inversons le contrôle

Il faudrait avoir un mécanisme qui de manière transparente à tout mécanisme (je pense en particulier au mécanisme d’initialisation de Asp.Net MVC, puisse instancier lui-même les objets « qui marchent » et les donner à ceux qui s’en serve.

Dans notre cas, il s’agit de faire passer des objets de domaine correctement instanciés et initialisés, aux constructeurs des contrôleurs lorsque ceux-ci sont mis en route par l’infrastructure de Asp.Net MVC, sur laquelle bien sur nous ne pouvons pas opérer de modification de comportement, puisque le code ne nous appartient pas et qu’il est déjà compilé.

C’est là où l’Inversion Of Control (IoC, tellement plus chic) entre en scène et trouve une de ses nombreuses utilités.

L’idée initiale de l’AOP (qui a inspiré l’Injection de Dépendance) était de permettre au développeur de supprimer la plomberie dans son code, c'est-à-dire sortir toutes les lignes de code qui n’avaient pas vraiment attrait à son algorithme mais qui étaient nécessaires ; sans quoi, justement, les objets dont il dépendait (accès aux données ou à une information tierce) ne pouvaient pas opérer comme il le souhaitait.

Dans le cas du test d’un projet Asp.Net MVC avec de l’injection de dépendance, vous trouverez foison d’exemples et de frameworks.

Quelques points d’entrées :

http://www.mikesdotnetting.com/Article/117/Dependency-Injection-and-Inversion-of-Control-with-ASP.NET-MVC

http://www.rickardnilsson.net/post/2009/12/25/Dependency-injection-in-ASPNET-MVC-with-Unity-IoC-Container.aspx

http://scottfindlater.blogspot.com/2009/11/tdd-mvc-12-inversion-of-control-ioc.html

http://codeclimber.net.nz/archive/2009/02/05/how-to-use-ninject-with-asp.net-mvc.aspx

Mais nous voulons rester pragmatiques, et le problème qui nous intéresse ici est « comment faire en sorte que le contrôleur obtienne un objet de domaine correctement instancié et initialisé quand le projet tourne en mode non-test, c'est-à-dire avec un constructeur sans paramètre ? ».

Mon critère est assez simple : j’ai retenu la solution qui m’oblige à écrire le moins de code possible, qui soit la moins intrusive dans le code existant, et qui m’épargne des lignes de configuration XML qu’on ne sait jamais comment écrire correctement (et auxquelles ont préfère une API fluente, qui permette à l’Intellisense de nous guider intuitivement dans l’usage des objets exposés).

StructureMap est l’un d’entre eux.

Nous avons écrit plus haut un contrôleur MVC doté d’un constructeur avec paramètre qui permet de faire passer une instance d’un objet de domaine.

Hors la fabrique de contrôleurs que Asp.Net MVC utilise en interne ne sait instancier les contrôleurs qu’en utilisant un constructeur sans paramètre. Il faut donc fournir une autre fabrique plus souple.

Heureusement que Scott et son équipe ont tout prévu, et que nous pouvons surcharger la fabrique de contrôleurs par défaut (DefaultControllerFactory) en préparent une autre comme ceci :

using System;

using System.Web.Mvc;

using StructureMap;

namespace yourProject

{

public class DependencyControllerFactory : DefaultControllerFactory

{

protected override IController GetControllerInstance(Type controllerType)

{

return ObjectFactory.GetInstance(controllerType) as Controller;

}

}

}

L’ObjectFactory permettra à StructureMap de résoudre les dépendances et trouver la bonne implémentation concrète de tous ce qui présente une interface remplaçable à la volée par un objet concret.

Ce nouveau Controllerfactory sera enregistré dans la logique Asp.Net MVC en ajoutant une petite ligne dans Global.asax.cs, dans Application_Start() plus précisément :

ControllerBuilder.Current.SetControllerFactory(new DependencyControllerFactory());


Et   juste ensuite (toujours dans Application_Start) nous préciserons à  StructureMap quel mapping opérer entre les interfaces et les implémentations concrètes, comme ici :

ObjectFactory.Initialize(registry => registry

.ForRequestedType<IDomainManagingPasswords>() .TheDefaultIsConcreteType<DomainManagingPasswords>());

Et voila!

C’est assez simple, notez juste que dans cet exemple, mon classe d’implémentation concrète DomainManagingPasswords disposerait d’un constructeur sans paramètre. Pour les cas plus complexes, lire la documentation ici : http://codebetter.com/blogs/jeremy.miller/archive/2008/08/20/smartinstance-in-structuremap-2-5.aspx

Il y a des frameworks IoC qui sont plus explicites encore, et qui vous laissent choisir quelle implémentation viendra s’injecter selon telle ou telle condition.

Cela peut être aussi en intéressant à utiliser si vous voulez par exemple, changer un fournisseur de données par un autre, à la volée dans votre programme.

http://www.iridescence.no/post/Inversion-of-Control-ASPNET-MVC-and-Unit-Testing.aspx

Mais y-a-t-il plus simple ?

Sortir les patterns qui vous font passer pour le roi de la programmation est parfois superflu.

Le crédo est d’être économe, de n’utiliser que ce dont on a besoin. Pourquoi lancer toute la machine d’un IoC, sinon à passer pour un érudit ?

Dans notre cas, nous avions simplement besoin de fournir à la factory par défaut de construction des Contrôleur Asp.Net MVC, un constructeur sans paramètre (tout en gardant celui avec paramètre qui sert aux tests).

Il suffisait d’écrire ce constructeur, et c’est lui qui se chargeait d’instancier l’objet de domaine concret répondant à l’interface IDomainManagingPasswords :

public ManageController()

{

_domainObject = new DomainManagingPasswords();

}

Un bien pour un mal. En faisant cela nous économisons toute la coûteuse introspection qu’opère un Injecteur de Dépendances, mais nous introduisons avant compilation du couplage très fort entre nos classes…

Retour au test, comment pousser le bouchon plus loin ?

Maintenant que nous savons comment faire pour préparer notre objet testé (le contrôleur) pour pouvoir fonctionner de manière identique dans un cas de test ou dans un cas de non-test, voyons comment spécifier le comportement des bouchons pendant le test.

C’est la que notre ami Moq refait surface, et nous permet de piloter le comportement de l’objet « bouchon ».

// create the mock

var mockRepository = new Mock<IDomainManagingPasswords>();

Je veux que lorsque la méthode X mon contrôleur fera appel à la méthode FindUserInAdam de l’objet de domaine qu’elle emploie, et quelque soit la valeur des paramètres, il me retourne une valeur de mon cru, rien de plus simple :

mockRepository.Setup(cr => cr.FindUserInAdam (It.IsAny<string>()))

.Returns(new resultOfSearchingUser

{

errorMessage = "test error",

codeResult = codeResult.NotFound

});

Ce qui se lit (donc se programme) aisément :

Permet de poster les choses.  La lambda expression permet d’exprimer ce qui se passera en cas d’appel à la méthode voulue. Les arguments sont gérés aussi par Moq. It est un objet pratique qui permet de dire « Ceci » est une valeur « peu importe » de type string : It.IsAny<string>().
Ou d’autres formules (une regex par exemple).
Lexpression qui s’en suit dit quoi faire quand la méthode sera réellement invoquée. Ici c’est un retour (Returns) d’une valeur assemblée de toute pièce pour les besoins du test (new resultOfSearchingUser).

N’oubliez pas que les Mocks sont des objets creux, ils répondent à une interface mais ne font rien. Donc à vous de programmer leur comportement.

On pourrait vouloir tester comment le contrôleur réagit si l’objet Bouchon de domaine renvoit une exception. Là aussi, c’est assez simple à exprimer :

mockRepository.Setup(cr => cr.FindUserInAdam (It.IsAny<string>()))

.Throws(new System.OverflowException("test error"));

Pour terminer, on n’oubliera pas de donner en carburant cet objet bouchon au contrôleur avant de lancer (ACT) l’opération à tester:

//bind the mocked object to the controller

var controler = new ManageController(mockRepository.Object);

///ACT

var results = controler.DoFindUser() as ViewResult;


A partir de là, vous avez toutes les billes en main pour tester tout ce que vous pouvez imaginer.
C’est d’ailleurs cette trop grand liberté qui peut être désarmante, et on cherche une méthode pour savoir quoi écrire comme cas de test. La réponse est 2 paragraphes plus loin.

Tester le Modèle

le "Modèle" en tant que structure de données que l'on passe du contrôleur à la vue ne se teste pas en lui-même. Par contre c'est le "fournisseur du modèle" c'est à dire l'objet que vous devez invoquer (et que nous avons substitué par un Mock) qui doit être testé pour lui-même.

A ce moment là c'est un projet de test autour des classes de domaine (classes métier pour ceux qui préfèrent ce terme) aux quelles il faut ajouter une batterie de Tests Unitaires "classiques" pour vérifier leur comportement.

Tout ce que je viens de dire sur les contrôleurs s’applique évidement aux classes de domaines. Elles doivent elles-aussi être fournie avec un jeu de test « en isolation complète ».

3 - Plaidoyer pour une approche Comportementaliste (BDD)

Si vous êtes en mal d’inspiration pour écrire vos tests, voici une idée qui pourra faire son chemin…

Le Behavior Driven Development (ou développement conduit par le comportement et donc les spécifications) devrait être LA façon de programmer universelle.

Affirmer aujourd'hui que la programmation d'un logiciel ne peut se faire qu'en fonction des spécifications passe pour une vérité des plus banales.

Or, jusque là, personne ne s'était occupé de rendre vérifiable, "prouvable" une telle démarche. Le développeur écrivait donc son programme, bon an, mal an. Et vérifiait une fois déployé (en général lors de la préparation de la recette ou de lors de la recette elle même) si le logiciel produit était bien conforme aux spécifications.

Entre écriture des spécifications (en majorité sous forme littéraire) et code (forme "machine", c'est à dire langage de développement) il y a un certain écart, pour ne pas dire un gouffre.

Ce que propose l'approche BDD c'est d'éliminer purement et simplement tout écart.

Et d'écrire les spécifications de manière formelle (donc dans une langue compréhensible par l'ordinateur) et reliée au langage du développement.

Ainsi un automate (un framework de tests unitaires est préposé à cela) peut relier la vérification des spécifications ainsi décrites au code réellement produit.

Le tout, de manière systématique, automatique, constante et répétée (dans le cadre d'une usine logicielle bien construite).

Ce ne sont pas les ressources qui manquent sur le net pour vous expliquer que faire du BDD c'est bon pour vous, essayez par exemple http://behaviour-driven.org/

Ou lisez Dan North, qui est celui qui a posé l'article fondateur : http://dannorth.net/introducing-bdd

Pour ma part, je vous proposerai bientôt un article entièrement consacré au sujet, autour d'une exemple concret bien entendu.

Le BDD est présenté par beaucoup d'éminent spécialiste comme l'aboutissement des méthodes SCRUM et XP

http://www.code-magazine.com/Article.aspx?quickid=0805061

Cette approche est également la plus fidèle à la notion d'Agilité, puisqu'elle permet d'exploiter à 100% les efforts faits en matière de spécification par UserStories et Scenarios.

Mais si elle est légion en Ruby et Python, si on la trouve beaucoup en Java, il faut dire que .Net est à la traine. Et c'est quelque peu frustrant voir même insultant (n'avons nous pas le droit de faire de meilleurs logiciels?)

Cela me rend plutôt inquiet, .Net est-il une plateforme laissée aux seuls Geeks et bricoleur de l'informatique? ou aux sociétés de service pressées de faire du chiffre et ne mettant pas vraiment l'accent sur la qualité logicielle?

Toujours est-il qu'il faut se lever tôt pour trouver un framework prêt à l'emploi, qui fonctionne (sic), et simple à prendre en main (re-sic) pour la plateforme .Net

Beaucoup de projets sont abandonnés en phase initiale (BDD Extensions project on Google Code.)

J'ai essayé de tester tout ce qui était compilable et seul NBehave semble tenir ses promesses; mais comme vous pouvez le voir dans cet article, l'écriture reste peu lisible hélas http://pebblesteps.com/post/Behavior-Driven-Development-with-NBehave.aspx

les BDD extensions de xUnit semblait offrir une forme plus sympathique à lire, mais bon.

Il y avait des initiatives très prometteuses comme  MisBehave, basé sur M et Oslo... mais là encore aucun engouement, ni de la part de la communauté ou des têtes pensantes chez Microsoft (d'ailleurs, que devient M à part un textual DSL pour de la modélisation de données).

Il faudra attendre que la communauté .Net se (re)mobilise et trouve enfin de l'intérêt à faire du BDD pour voir naître un framework nous donnant vraiment envie de faire du comportementalisme et que cette pratique n'apparaisse plus comme une perte de temps, alors que justement c'est le contraire qui devrait en résulter.

4 - D’autres exemples ?

Un projet complet TDD avec MVC plus NHibernate est à découvrir (avec des pages Wiki complètes) sur http://sharparchitecture.net/

Allez voir aussi sur http://scottfindlater.blogspot.com/2009/10/tdd-mvc-adventures.html

Enjoy!


 

21/01/2010 à 16:26
pour les brèves, préférez Twitter

Guillaume Saint Etienne (yohm31)

https://twitter.com/guillaume_agile

finalement, Tweeter s'avère parfait pour les reflexions instantannées, je vous invite donc à me suivre aussi là bas

https://twitter.com/guillaume_agile

 

et ici, toujours des articles de fond et/ou pratiques ; comme le prochain sur le Test avec Asp.Net MVC

21/01/2010 à 16:02
Lettre à ma communauté

Christophe Sauthier (huats)

En cette période de voeux et de bonnes résolutions, je voudrais adresser une lettre à ma communauté. Ceux qui me connaissent auront de suite compris que je parle de la communauté Ubuntu, en particulier de la communauté Ubuntu-fr.

Oui je parle de MA communauté, cela n'est pas une marque de possession de la part d'un président un peu possessif :), mais plutôt d'une appartenance... On parle de SA famille, j'ai donc volontairement décidé de parler de MA communauté.

Cette lettre (ou plutôt ce billet sur mon blog) a pour unique vocation de remercier ceux qui ont fait qu'en 2009 nous avons eu une année si pleine, avec autant de bons moments. La fin d'année a été exceptionnelle : environ 30 Ubuntu Party ont eu lieu partout en France pour fêter la sortie de la nouvelle édition (Karmic Koala) et tout cela n'a été possible que grâce à un travail et un investissement de tous. Le plus remarquable étant les succès rencontrés. Pour ne citer que 2 chiffres : 5000 personnes (dont Mark Shuttleworth) lors de notre WE parisien et 700 lors de l'après midi dédiée à Toulouse... Si je vous ai parlé de MA communauté au début c'est que tout cela est le résultat du travail d'une communauté fabuleuse dont je ne suis qu'une des figures visibles. Tous ses membres méritent leur part de mérite dans ces évènements, et je me sers de cette lettre pour les remercier...

La nouvelle année qui commence est déjà pleine de nouvelles actions et de nouveaux défis et je suis sur que nous allons tous ensemble les relever. Je vous adresse donc mes meilleurs voeux, et plus généralement à tous ceux qui nous soutiennent au jour le jour en s'intéressant aux logiciels libres.

14/01/2010 à 20:42
Le passage à drupal de ubuntu-fr a été une bonne chose, mais maintenant il faut s'en servir...

Christophe Sauthier (huats)

Comme beaucoup d'entre vous le savent déjà, le site www.ubuntu-fr.org a été migré il y a maintenant plusieurs mois sous Drupal...

Enfin migré il faut vite le dire : il vaut mieux dire que nous avons, avec nos connaissances très limitées, mis tant bien que mal les différents éléments indispensables au site. Et encore certains ne sont pas sous sous la forme souhaitée...

Alors voilà : nous avons lancé sur le site un appel plus ou moins timide depuis septembre, mais peu de réaction de notre très chère communauté. Et je ne peux pas croire que parmi toutes les personnes intéressées par Ubuntu et Ubuntu-fr, il est impossible à trouver des développeurs (ou du moins des gens à l'aise) sur Drupal pour nous aider dans nos tâches. Car il faut le dire actuellement le drupal n'est pas du tout utilisé tel qu'il devrait l'être.

Pire même des choses qui sont terminées sur le site de développement ne sont pas migrées sur le site principal par manque de temps des principaux acteurs de la migration...

Alors je lance un appel : si des personnes connaissant drupal sont intéressées pour rentrer un peu plus à l'intérieur de la communauté ubuntu-fr, qu'il se manifestent sur ce billet ou qu'ils me contactent... Et ce sera avec un vrai plaisir que nous les accueillerons...

06/01/2010 à 15:42
Un sondage avant de profiter des fêtes...

Christophe Sauthier (huats)

... sondage certes, mais pas n'importe quel sondage puisqu'il s'agit de la version 2009 du sondage Ubuntu sur la thématique serveurs !

Ce sondage est accessible en ligne : http://survey.ubuntu.com/index.php?lang=fr

N'hésitez donc pas à participer pour mieux permettre à l'équipe Server de Ubuntu de mieux comprendre quelles sont vos attentes en terme de support, fonctionnalités... Dernier détail, il faut compter entre 15 et 30 minutes pour le remplir, ce qui est assez peu pour obtenir une distribution encore plus proche de ses attentes...

18/12/2009 à 11:33
de la réalisation à la production

Guillaume Saint Etienne (yohm31)

je m'amuse souvent (et pas forcement innocement)  à faire le parralèle entre mon métier actuel de "faiseur de logiciel" et mon passé d'étudiant en cinéma et audio-visuel  (passé trop court, mais les contraintes matérielles de ce bas monde et quelques autres paramètres en ont décidé autrement).

Déjà, j'ai beaucoup de mal à répondre à la question "quel est ton métier?"... j'avoue que je déteste répondre "ingénieur informaticien" ou autres "ingénieur en développement informatique" car cela met une trop grande distance entre mon interlocuteur et moi.
Et puis le pauvre bougre n'en est pas moins renseigné sur la nature même de mon travail. J'obtiens au mieux l'étiquette de "Geek" au pire celle de l'ingénieur intello qui a fait de longues études, ou carrément la moquerie traditionnelle relayée par la fameuse video Youtube que je pense tout le monde connait ici (au cas où: http://www.youtube.com/watch?v=ZdEcyk5G80s ).
Et si la question qui s'en suit est: "tu travailles pour Microsoft?" alors j'ai vraiment tout faux.
C'est pour cela que je contourne un peu la question, et je change ma version....  "je fabrique du logiciel", et déjà cela attire un peu plus la curiosité de mon interlocuteur. "tu fais des sites Web " me demande-t-on parfois, et évidement cela me fait plaisir, car je peux me lancer dans l'explication qu'il n'y a plus de frontière entre logiciel et sites Web.
"fabriquer" est pourtant un terme vague et je lui préfère celui de "réaliser" qui me met en position de réalisateur. On comprend assez bien toute la portée du mot "réalisateur", qui parfois renvoie à "créateur".
Mais créateur a cette notion un peu supérieure de "création", qui pourrait faire paraitre quelque peu présomptueux, bien que j'aime assez souligner que nous faisons un métier qui n'est pas dépourvu de dimension "créative".
Réalisateur, c'est pourtant un terme qui fait de suite penser au monde du cinéma et de l'audiovisuel. Et je m'y retrouve assez bien finalement. Un réalisateur est amené à réaliser différents projets, du film de commande à l'oeuvre plus personnelle, du film publicitaire au long métrage blockbuster, en passant par le film d'entreprise... ou de mariage ;)
Un bon réalisateur de films est celui qui a appris tous les métiers intermédiaires: cadreur, monteur, preneur de son, mixeur, directeur d'acteur, constructeur de décors, inventeur d'effets spéciaux, scénariste. Il peut d'ailleurs sur certains projets cumuler certains (voir la totalité) de ces rôles.
Il est en de même pour le logiciel: codeur, testeur, analyste, architecte, documenteur (documentaliste?)...
Le réalisateur peut travailler seul sur des petits projets ou , et surtout, en équipe dès que le projet le demande.
Il devient donc un pilote d'hommes. Le terme chef de projet n'est pourtant pas très communément admis dans le monde audiovisuel (en France du moins).
D'ailleurs ce rôle ressemblerait plus à celui du producteur: l'homme qui orchestre le projet de film, qui met les hommes aux services des hommes et du projet.
Et qui assume tout ou partie de la responsabilité financière aussi.
Mais vous aurez tous remarqué que dans toute production audiovisuelle (cinema et tv), il n'y a jamais un seul producteur. Il se fait entourer d'une palanquée de producteurs exécutifs, associés, délégues, généraux, sous producteurs, etc... Ce sont des équipes entières de production qui s'occupent d'un projet.
Là dessus, nous, pauvres faiseurs de logiciels, avons peut être quelques leçons à prendre...
Intéressant de voir divers points de vue sur le métier de producteur: http://www.youtube.com/watch?v=r2v2dht1teI
très étonnant comment le dernier lien va parler à tous ceux qui se sont frottés au rôle de chef de projet informatique, mais cela va vraiment au delà (et c'est surement plus intéressant en cela)
Et il apparait qu'une bonne traduction du stakeholder des méthodes agiles, serait le producteur.
Le Producteur représente le Produit (même racine), et derrière le produit viennent ceux qui vont l'utiliser. Le producteur comme ambassadeur à la fois d'un besoin exprimé mais aussi d'une émergence, d'envies implicites, de besoins sous-jacents. Il va jauger du marché, des attentes, des potentialités.
Idéalement son rôle ne s'arrêterait pas à la sortie du produit mais va aussi essayer ensuite de vendre le produit et de le faire se diffuser, d'aider ceux qui vont l'utiliser à vraiment le posséder, à s'investir dans le logiciel livré (accompagnement au changement).
Bref un rôle d'accompagnement indispensable et qui ne peut retomber sur les épaules d'une seule personne mais sur une équipe.
Et un tandem: le réalisateur et le producteur devraient être les 2 piliers d'un projet logiciel comme ils le sont depuis de nombreuses décennies dans le monde audio-visuel, qui possède lui aussi cette dualité "industrie-artisanat";
2 monde professionnels qui se rejoignent sur bien des points...

 

07/12/2009 à 17:50
Car il n'y a pas que Paris dans la vie, pensons à Toulouse :)

Christophe Sauthier (huats)

Juste un petit rappel au sujet de l'évènement de cette semaine autour de Ubuntu... Oui oui rien de moins :)

Il s'agit bien sur de la prochaine Ubuntu Party organisée conjointement par Toulibre et Ubuntu-fr qui aura lieu le 5 décembre 2009 à partir de 13h à l'ENSEEIHT à Toulouse. Cet événement, à l’entrée libre et gratuite, aura lieu à l’ENSEEIHT, 2 rue Charles Camichel de 13h à 20h.

De nombreux conférenciers de qualité vont participer à cet évènement :

Mais ce n'est pas le seul à être une tête d'affiche du mode du libre francophone qui sera présent, jugez plutôt de quelques intervenants :

  • Alix Cazenave, chargée des affaires publiques à l'association April
  • Nicolas Barcet, responsable produit server chez Canonial
  • Jérémie Zimmermann, co-fondateur de la Quadrature du Net
  • Benjamin Bayart, président de FDN et célèbre orateur de la conférence « Internet ou Minitel 2.0 »
  • Thierry Stoehr, président de l'AFUL et auteur du site Formats-Ouverts.org
  • Pierre Yves Gosset de Framasoft
  • moi :) (président de ubuntu-fr)

Et ce n'est pas les seuls, car nous avons d'autres intervenants aussi passionnants dans la partie plus technique... Sans oublier les démonstrations qui pourrons également vous intéresser comme de la MAO, ou du logiciel libre dans l'éducation. C'est évidement est également l'occasion pour vous de vous faire aider en amenant votre PC pour participer à l'install party !

Bref aucune excuse pour ne pas venir si vous êtes vers Toulouse...

04/12/2009 à 12:39
RezoNux

Antoine Jacquet (Royale)
Ceux qui suivent mon blog régulièrement le savaient déjà, je m'étais lancé en début d'année en auto-entrepreneur, en complément de mon activité salariée.
Entre temps, la mission que j'effectuais sur Paris s'est terminée, et j'ai donc choisi de continuer l'aventure en indépendant à 100%.

Le statut d'auto-entrepreneur m'a séduit par sa simplicité, notamment au niveau des formalités administratives.
Je ne regrette pas ce choix qui m'a permis de tester mon activité sans prendre trop de risques, car les frais fixes sont très faibles.
Cela m'a également conforté dans mon choix de continuer à travailler en indépendant.

Après quelques mois encourageants, j'ai décidé de créer une société le mois dernier, plus précisément une EURL.
Cette nouvelle structure est certes plus lourde avec des frais fixes plus importants, mais elle offre également des avantages qui me faisaient défaut :
  • RL = Responsabilité Limitée, donc moins de risques financiers pour l'indépendant.
  • Pas de plafonnement du chiffre d'affaire.
  • Possibilité de déduire les frais et de récupérer la TVA.
  • Une structure plus sérieuse pour les clients, avec un nom commercial.
Du coup, j'ai rejoint Arnaud et Christophe dans les locaux de Graine Libre à Toulouse.
J'en profite d'ailleurs pour les remercier tous les deux pour leur aide précieuse !

A propos, ma société s'appelle RezoNux.
Le site internet n'est pas encore très fourni, mais vous pouvez déjà devenir fan de la page Facebook !


30/11/2009 à 21:12
Le code Konami sur Facebook !

Antoine Jacquet (Royale)
Pour ceux qui ne connaissent pas, le code Konami est une séquence de touche qui débloque des options cachées dans certains jeux vidéos.



Lorsque j'ai vu passer le message dans le statut Facebook de mes amis, j'ai d'abord cru à un "fake" ou à une énième chaîne :

Manip' mystérieuse sur facebook : Haut, Haut, Bas, Bas, Gauche, Droite, Gauche, Droite, B, A, Entrée, Clic Droit : Des cercles apparaissent. Si ça marche, copiez et collez ceci dans votre Statut !

Et puis je me suis dit que venant de Facebook, tout était possible. Ils n'ont pas forcément le temps de corriger tous leurs bugs mais ils ont sûrement trouvé un moment pour ajouter un easter egg.

Donc effectivement ça fonctionne, il faut juste penser à appuyer sur entrée à la fin de la séquence, puis de cliquer avec la souris pour activer les halos.
Pour ceux qui n'ont pas de compte Facebook, ça fonctionne également sur l'écran de login.
A priori ce n'est pas nouveau, mais j'étais passé à côté !
29/11/2009 à 13:30
parlons du futur un peu....

Guillaume Saint Etienne (yohm31)

Comme ils nous cassent tous les oreilles avec ChromeOS (ok, j'aime Android et j'assume), n’oublions pas que MS va aller beaucoup plus loin qu’un simple Linux revampé et des WebApps (même si c’est l’avenir) tournant sur un omni-navigateur (Chrome+Gears)

 

Un article de référence pour soutenir mes propos:

http://www.sdtimes.com/MICROSOFT_S_PLANS_FOR_POST_WINDOWS_OS_REVEALED/About_CLOUDCOMPUTING_and_MOBILEDEVELOPMENT_and_NET_and_SOASAAS_and_SOFTWAREDEVELOPMENT_and_WINDOWS_and_MICROSOFT/32627

Peut être vous saviez déjà que ca s’appelle Midori, mais le modèle de programmation va changer :

 

The Midori programming model will tackle state management, which Microsoft admits in its documentation is a challenge in Windows, by migrating APIs, applications and developers to a constrained model.

Là où ca devient palpitant (pour les développeurs):

Other objectives are eliminating dynamic loading and in-process extensions; developing a failure model based on reliable transactions, so the system understands exactly which processes are impacted by a cascading failure and how to restart the computation; and having a standard way of dealing with latency, asynchronous behavior and cancellation, throughout the stack.

Un OS intelligent qui se protégé tout seul des plantages et qui arrête de faire confiance aux programmes qu’il execute ? comme par hasard, c’est aussi l’idée de Google dans ChromeOS

 

Mais, plus de protection, et donc plus de contrôle = moins de souplesse

restricting dynamism at the OS level will not impact dynamism at the programming level.”
ouf, on est sauvés!

 

Et OSLO pourrait revennir sur le devant de la scène :)

 

In a possible link to Microsoft’s Oslo composite application initiative, the programming model will have a dependence on metadata, with the aim of allowing the system to more reliably manage applications.


the proposed OS would have a non-blocking object-oriented framework API. This would have strong notions of immutability—in the sense of objects that cannot be modified once created—and strive to foster application correctness through deep verifiability by using .NET programming languages.

Un OS orienté objet et transactions? On en rêvait….

Mais la concurrence est là:

“A lot of these problems are being solved, at least partially, by the ideas of store-and-forward and message synchronization,” Hammond noted. “Google Gears, Adobe AIR, even the mobile OSes with things like SMS can handle occasional connectivity. Why shouldn’t this be built into core OS communication protocols, especially if they are asynchronous by default?” he asked.

Qui sera le vainqueur des OS de demain ? non pas de savoir quel éditeur car il s’agit d’une guerre commerciale… mais quelle technique ?

Y-a-t-il un futur pour la recherche sur les OS tels que nous les connaissons aujourd’hui, et donc pour les suites de Windows… (ou MacOs)

Ou bien l’OS va-t-il devenir le grand perdant de cette bataille, et toutes les nouveautés ne seront-elles pas reportées sur les omni-navigateurs (ou plateforme applicatives virtualisées comme pourra le devenir Air ou même Eclipse), sur les interpréteurs et sur les petits moteurs de synchronisations comme Gears. Mais qui laisseront l’OS à une place dérisoire, et qui n’intéressera plus aucun développeur…

A lire : Une très intéressante présentation des principes de Singularity (mais vieille de 2006 !) :

http://research.microsoft.com/en-us/um/redmond/events/fs2006/presentations/23_Hunt_071706.ppt

http://research.microsoft.com/en-us/projects/singularity/

 

la guerre continue: http://blogs.zdnet.com/microsoft/?p=4650&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+zdnet/microsoft+(ZDNet+All+About+Microsoft)&utm_content=Google+Reader

mais Microsoft fait toujours office de suiveur... dommage

 

20/11/2009 à 10:37
Venez à l'évènement Ubuntu et des autres Logiciels Libre à Toulouse le 5 décembre

Christophe Sauthier (huats)

C'est avec un vrai plaisir que je parle aujourdhui de la prochaine Ubuntu Party organisée conjointement par Toulibre et Ubuntu-fr qui aura lieu le 5 décembre 2009 à partir de 13h à l'ENSEEIHT à Toulouse. Cet événement, à l’entrée libre et gratuite, aura lieu à l’ENSEEIHT, 2 rue Charles Camichel de 13h à 20h.

Plaisir à plusieurs titres. En effet tout d'abord je fais bien sûr parti de l'organisation... Alors même si je ne suis clairement pas le plus actif sur le sujet, c'est toujours agréable de parler d'un évènement auquel on va participer. J'ai en plus pu apporter une pierre supplémentaire cette année, puisque au travers de la société Objectif Libre que j'ai fondé il y a plusieurs mois désormais, j'ai pu participer au financement de l'évènement ! Après tout Objectif Libre a été créée pour fournir du service et de la formation autour de Linux et d'Ubuntu en particulier, c'est donc normal d'aider des évènements de ce type...

J'ai d'autant plus de plaisir à parler de cet évènement que je vais faire parti des orateurs de la session grand public, puisque avec Nicolas Barcet nous allons présenter ensemble ce qu'est Ubuntu.

Et là vous commencez surement à vous dire : "Ah oui, Nicolas Barcet vient à Toulouse?". Et bien oui, nous avons la chance et plaisir d'avoir le chef de produit serveur de chez Canonical... Il sait donc bien de quoi il parle en matière de Ubuntu...

Mais ce n'est pas le seul à être une tête d'affiche du mode du libre francophone qui sera présent, jugez plutôt de quelques intervenants :

  • Alix Cazenave, chargée des affaires publiques à l'association April
  • Jérémie Zimmermann, co-fondateur de la Quadrature du Net
  • Benjamin Bayart, président de FDN et célèbre orateur de la conférence « Internet ou Minitel 2.0 »
  • Thierry Stoehr, président de l'AFUL et auteur du site Formats-Ouverts.org
  • Pierre Yves Gosset de Framasoft

Et ce n'est pas les seuls, car nous avons d'autres intervenants aussi passionnants dans la partie plus technique... Sans oublier les démonstrations qui pourrons également vous intéresser comme de la MAO, ou du logiciel libre dans l'éducation. C'est évènement est également l'occasion pour vous de vous faire aider en amenant votre PC pour participer à l'install party !

Bref vraiment du beau monde qui pourra intéresser aussi bien le novice que l'expert, aussi bien le grand public que le professionnel à la recherche d'informations ! L'après midi s'annonce déjà vraiment très intéressante ! Il ne faut donc pas hésiter et venir...

16/11/2009 à 23:43
Mashup et qualité de service

Eric Le Merdy
mash-up.png

Que faire lorsque votre logique métier est implémentée chez un premier fournisseur et qu'il a du mal à travailler avec votre second fournisseur ?

C'est ce qui est en train d'arriver en ce moment aux flux calculés par le service yahoo pipes et qui sont ensuite surveillés par feedburner (service google)... Feedburner refuse de surveiller les flux calculés par yahoo et semble les considérer comme inconnus.

Les utilisateurs en sont réduits à faire du bruit pour se faire entendre, mais ça n'est pas une stratégie vraiment gagnante.

Google et Yahoo sont des sociétés rivales sur internet. Cette petite perte de qualité de service est peut-être un problème technique, mais on ne peut s'empêcher de penser qu'il pourrait y avoir une volonté délibérée de la part de ces acteurs de ne pas jouer le jeu de la neutralité des URLs. Et que dire lorsque ces acteurs doivent résoudre un problème d'intégration de ce genre aux limites de leurs responsabilités, cela peut vite finir en dialogue de sourd... De plus, les services web ne sont pas forcément soumis à une concurrence acharnée et les fournisseurs savent que leurs utilisateurs sont quelque peu captifs de leurs systèmes. Même s'il existe des services concurrents, le manque de standards et donc les coûts de migration doivent faire réfléchir...

Le conseil trivial est donc de bien lire les conditions qui vous lient à vos fournisseurs, comme dans l'économie réelle. Dans ce cas, ce sont des services gratuits mais lorsque de la publicité est ajoutée aux flux gérés par feedburner, cela peut entraîner une perte de revenus.

Il faut donc prendre conscience que les applications "mash-up" ont la robustesse, la fiabilité et la sécurité du plus faible des services le composant.

Pour ce qui concerne yahoo et feedburner, ça c'est déjà produit et arrangé par le passé, il n'y a aucune raison pour ne pas que ce problème soit résolut très bientôt ;-)

09/11/2009 à 23:38
Objectif Libre intègre Graine Libre

Christophe Sauthier (huats)

Séduit par l'initiative de création d'une pépinière d'entreprises spécialisée dans les Logiciels Libres, j'ai décidé de mettre Objectif Libre dans ce mouvement en établissant mes bureaux chez Graine Libre.



L'envie d'aider à fédérer le tissu économique du Logiciel Libre local tout en créant un environnement de professionnels partageant les mêmes valeurs, m'a immédiatement intéressé. Objectif Libre va bien sur amener son expertise autour de Ubuntu pour ainsi pouvoir proposer des solutions encore plus globales. Mais celà va aussi nous permettre d'avoir des locaux plus adéquats pour recevoir nos clients, faire des prestations de formation sur place...

Chez Graine Libre, Objectif Libre rejoint d'autres acteurs dont l'agence Toulousaine de Makina Corpus (SSLL spécialisée dans le développement d'application web complexes en particulier dans le domaine de l'environnement) et Gedial (intégrateur de systèmes d'informations). Et ça tombe bien ces sociétés utilisent en grande majorité comme environnement Ubuntu (ou ses dérivés).



La pépinière est à peine créée, que déjà d'autres sociétés s'annoncent pour nous rejoindre...

06/11/2009 à 15:03
Mon portable sous Ubuntu ... bien sur... et lecteur d'empreintes digitales...

Christophe Sauthier (huats)

Comme vous le savez désormais tous, j'ai crée Objectif Libre, sociétée spécialisée dans la formations et le service sur Linux / Logiciels Libres et Ubuntu en particulier.

Pour m'accompagner et tout simplement travailler, j'ai donc choisi d'investir dès le début dans un PC portable, de faible taille pour l'avoir tout le temps avec moi... J'ai tout naturellement cherché un vendeur qui avait une bonne réputation sous Linux. Après avoir consulté la page des revendeurs de ubuntu-fr (d'ailleurs page qui n'est pas du tout à jour et qui va subir un lifting puisque je viens de publier sur notre serveur de dev, sa future remplaçante... stay tune pour plus d'informations très bientot...), et regardé un peu sur le net, je suis tombé sur un revendeur très sympa : clevo

Dans la gamme qui me plaisait je suis parti sur cette base et j'ai ensuite configuré toutes les parties que je voulais à l'intérieur... Bref j'ai LA machine que je voulais... et à un tarif qui ne m'a pas laissé indifférent :)

Et puis leur site et les divers personnes que j'ai eu m'ont de suite rassuré sur les compatibilité de leur matériel avec Linux et Ubuntu en particulier. Bref j'ai pu choisir l'esprit tranquille...

Tout marche nickel aussi bien sous jaunty que sous karmic (Webcam, Bluetooth,Wifi,3D... et même le lecteur d'empreintes digitales). Enfin, pour le lecteur d'empreintes digitales j'ai du mettre à jour le paquet fprint disponible dans jaunty/karmic. Vous pourrez le trouver sur le ppa de ma société que j'ai crée pour l'occasion. Au final celà a très bien fonctionné pour moi, mais attention avant d'utiliser ce paquet, il s'agit d'un paquet ne provenant pas des dépots officiels avec une version non stable du logiciel fprint et des librairies associées. Il y a donc un risque à l'installer.

Bref je ne peux que conseiller ces vendeurs... D'autant plus qu'ils avaient (est ce toujours valable ?) une promotion : en entrant le code promotionel "LINUX" vous aviez 5% de réduction...

24/10/2009 à 22:32
Agile Development From A Developers Perspective

Guillaume Saint Etienne (yohm31)

je ne saurais trop vous recommander de jouer cette brillante (et agile) présentation, pour vous développeurs, pour un chef de projet, pour un architecte...

Tout est excellement condensé. Le MUST de l'application des bonnes pratiques de conduite d'un projet de développement logiciel, et de méthode de réalisation (TDD, intégration continue, code quality metrics,  acceptance tests, etc...)

http://www.slideshare.net/rbanks54/agile-development-from-a-developers-perspective

 

faites le savoir!

14/10/2009 à 10:42
Agile Tour 2009: c'est parti! ... et aussi à Toulouse

Guillaume Saint Etienne (yohm31)

pour tous ceux impliqués de près ou de loin dans l'adoption de démarches Agiles, et surtout pour ceux qui se demandent quel est cet oiseau bizarre, et qui voudraient bien en savoir plus, il n'y a qu'un rendez vous:

c'est l'Agile Tour 2009 partout en France!

et en particulier à Toulouse où pas moins de 20 sessions vous attendent:  retours d'expériences, conférences, ateliers, présentation d'outils, débats!

les échanges seront riches et nombreux.

Une journée que vous ne serez pas près d'oublier ...

le programme et les inscriptions Toulousaines se font ici: http://www.agiletour.org/fr/at2009_toulouse_programmation.html

http://www.agiletour.org/fr/at2009_toulouse_inscription.html

affichage agile tour toulouse

08/10/2009 à 06:59
Guerre entre Facebook et les développeurs d'applications

Antoine Jacquet (Royale)
Comme vous le savez peut-être déjà, je développe des applications Facebook en Freelance.

Pour faire simple, je vais distinguer deux grandes catégories d'applications :
  • Des applications destinées à faire de la publicité virale. C'est typiquement les applications que je peux être amené à développer en indépendant pour des clients. La société investi un budget pour lancer l'application et faire connaître par ce biais son produit, son site ou sa marque. L'application ne rapporte pas directement d'argent, mais va permettre de faire de la publicité comme sur un autre média.
  • Des applications destinées à générer des revenus. Par exemple des jeux/quiz dont le but est de rapporter de l'argent à son propriétaire. J'ai moi même lancé quelques applications personnelles que j'essaye de monétiser dans ce sens. Il y a plusieurs moyens d'y parvenir : micro-paiement, monnaie virtuelle, etc... Mais une solution simple qui revient souvent est l'affichage de bannières publicitaires.
Et c'est justement les bannières publicitaires qui posent problème en ce moment sur les applications Facebook.
Lorsque vous naviguez sur une application, Facebook est "propriétaire" de la partie droite du site et y affiche ses propres bannières, qui rapportent de l'argent à Facebook. Le développeur de l'application ne touche rien, il n'y a pas de partage des recettes comme sur d'autres sites ou des tiers contribuent au contenu.

Le développeur d'une application doit donc afficher ses propres bannières (en plus de celles déjà affichées par Facebook) pour rémunérer son travail. Facebook ne propose pas de solution officielle pour la publicité, et des régies spécialisées indépendantes se sont mise en place pour ce juteux marché.
En effet, les régies classiques (Google AdSense par exemple) ne sont pas adaptées au modèle social de Facebook, et offrent donc des taux de transformation assez bas.

Facebook a mis à jour son règlement interne concernant la publicité sur les applications, et depuis quelques semaines, est très exigeant sur l'application de ce règlement.
Plusieurs régies qui ne respectaient pas les règles ont tout simplement été bannies de Facebook.

Malheureusement, cela n'a pas suffit à assainir la situation selon Facebook, et les développeurs sont donc maintenant sanctionnés.
Les équipes chargées de faire appliquer les règlements ont ainsi suspendu plusieurs applications ce week-end en raison de publicités non conformes.
Au delà de la validité d'une telle action, c'est surtout la méthode qui a choqué : les applications ont été suspendues sans préavis.
Certes la sanction était temporaire (4 jours) mais l'impact peut-être assez important sur une application virale (en quelques jours sans activité une application peut s'écrouler en nombre d'utilisateurs actifs).

De plus les applications suspendues utilisaient des régies publicitaires reconnues pour leurs sérieux, et c'est donc l'incompréhension et l'inquiétude qui dominent en ce moment car les développeurs ne savent plus à quels acteurs faire confiance.

Un développeur a ainsi poussé un coup de gueule sur le forum Facebook, en demandant des explications.
L'actualité a été reprise par des sites d'actualité autour de Facebook, et d'après les commentaires, les utilisateurs semblent être solidaires des développeurs grin

Les régies publicitaires "responsables" des sanctions ne savent même pas expliquer la situation car elles ne comprennent pas la position très stricte de Facebook !
Une application s'amuse même à démontrer que Facebook ne respecte pas son règlement sur ses propres publicités.

Evidemment je surveille tout ça avec intérêt, car mes propres applications auraient pu subir la même punition, étant donné que j'utilisais aussi les régies incriminées au moment où elles affichaient potentiellement des publicités non conformes.

Plusieurs solutions sont avancées pour résoudre ce problème à l'avenir :
  • Que Facebook précise encore plus son règlement publicitaire, afin qu'il n'y ait plus d'ambiguïté à l'avenir.
  • Que Facebook valide des réseaux publicitaires de "confiance", de la même façon qu'il valident déjà des applications "fiables".
  • Que Facebook propose sa propre régie publicitaire pour les développeurs. C'est peut-être déjà prévu et ça expliquerait pourquoi Facebook est si restrictif à l'égard de ses potentiels concurrents.
  • Que Facebook offre un délai de réaction aux développeurs pour résoudre un problème. C'est généralement le cas lorsqu'un autre point du règlement interne est violé.
Pour l'instant, on attend tous une explication et une position claire de Facebook suite à ces incidents, et j'espère que le "buzz" que ça a généré va les inviter à s'exprimer.
06/10/2009 à 01:18
Des logos pour Agile France ?

Eric Le Merdy

J'ai fait quelques logos pour contribuer au concours Agile France.

agile-france-logo-post-it.pngagile-france-bulles.pngagile-france-point.pngagile-france-jongle.pngagile-france-construction.png

Edit :

agile-france-bubble.pngagile-france-iteration.pngagile-france-rond.pngagile-france-stars.png

Je recherche maintenant du feed-back pour les améliorer...

02/10/2009 à 05:50
Buildix, présentation de l'usine logicielle selon ThoughtWorks

Eric Le Merdy

Ce ne sont juste que 3 slides pour présenter rapidement Buildix.

Voire plus de présentations d'Eric Le Merdy.

Ces outils étaient super en 2008. Que pensez vous de :

  • Source Control : Subversion
  • Continuous Integration : Hudson
  • Wiki + Bug Tracker : Trac
  • Agile Project Management : Excel or IceScrum2

01/10/2009 à 00:33
Envie de participer à Ubuntu ? La prochaine occasion est le 3 octobre

Christophe Sauthier (huats)

Et ce sera à Toulouse ! Enfin si vous êtes à Paris il y aura également un évènement de ce type, je vous invite à consulter le site www.ubuntu-fr.org pour plus d'informations...

Mais revenons en à la ville rose : grâce à une nouvelle collaboration entre ubuntu-fr et Toulibre nous avons le plaisir d'organiser le samedi 3 octobre un étape de la Ubuntu Global Jam à Toulouse au centre Bellegarde (Rue Bellegarde, métro Jeanne d'Arc)

Si vous avez toujours eu envie d'aller plus loin dans votre participation à Ubuntu et au logiciel libre de manière général, c'est l'occasion rêvée : encadré par des développeurs Ubuntu expérimentés, Lionel Porcheron et moi même (Christophe Sauthier), vous allez pouvoir découvrir comment contribuer au développement d'une distribution Linux, même sans avoir des connaissances techniques... A la fin de la journée, la gestion des bugs dans Launchpad (l'outil central du développement Ubuntu), la manière de réaliser des traductions (qui seront donc peut être incorporées dans la future version de Ubuntu), et bien d'autres aspects n'auront plus de secrets pour vous... Et le coté "Global" (c'est un évènement qui se déroule en même temps partout tout autour du monde), est quand même bien sympa je trouve....

Le programme de la journée est le suivant : le rendez vous est fixé à 11h30 au centre Bellegarde pour permettre une installation des éléments indispensable (création de compte Launchpad pour ceux qui ne l'ont pas déjà ....) et expliquer les principes généraux. Nous irons ensuite tous manger ensemble avant d'enchainer sur une après midi de studieuse !

Pour ceux qui peuvent, pensez à prendre vos ordinateurs portables pour cette journée, mais également pensez à créer vos identifiants GPG, signature du Code de Conduite...

24/09/2009 à 13:13
appels aux orateurs

Guillaume Saint Etienne (yohm31)

l'Agile Tour 2009 se dessine et nous recherchons des orateurs sur le sujet

Je fait partie de l'équipe d'organisation de Toulouse et c'est aux sudistes que je m'adresse en particulier.

L'édition de cette année est orientée sur les retours d'expériences, n'hésitez donc pas à venir partager les votres!

Tous les détails pour s'inscrire (en orateur ou auditeur) sur le site http://www.agiletour.org/

Ou si vous cherchez à mettre au point un sujet à plusieurs, n'hésitez pas à me contacter.

 

Bonne rentrée agile à tous.

04/09/2009 à 14:11
On parle de Ubuntu dans la presse...

Christophe Sauthier (huats)

... dans le dernier numéro du Point, qui est sorti le 27 Aout (bien faire attention à la date...).

Après une interview de Mark Shuttleworth il y a quelques mois, un journaliste m'a contacté pour finaliser quelques points au sujet de la communauté Ubuntu-fr...

Donc pour ceux qui veulent, vous trouverez 2 pages sur votre distribution Linux préférée. Perso je trouve que ce genre de changement d'attitude par rapport à Linux par une revue généraliste est une vraie bonne évolution !!! Continuons donc à faire avancer les choses !

02/09/2009 à 20:01
Nouveau boulot : encore plus de Ubuntu et de logiciels libres

Christophe Sauthier (huats)

Bon même si cette information est déjà connue par certains de mes proches je voulais l'annoncer publiquement :) J'ai donc crée ma société : Objectif Libre.

Je suis sûr que vous vous posez tous des questions sur le genre de prestations que je vais proposer ? Principalement des formations et de l'expertise/accompagnement/administration, mais toujours autour de Linux (bien sûr principalement Ubuntu/Debian) ou des logiciels libres (Apache / SVN / ...).

C'est ainsi que j'ai déjà dispensé quelques formations Linux et un peu d'expertise Linux / Virtualisation.

Certains lecteurs avertis se demandent sûrement "oui mais pourquoi est ce que le titre contient encore plus de Ubuntu et de logiciels libres alors qu'il travaillait déjà dans une SSLL ?" tout simplement car dans mon projet de société je compte réserver une grande partie de mon temps "travaillé" à la participation aux communautés/développement. Certains vont me dire que je le faisais déjà dans mes activités quotidiennes au niveau ubuntu-fr ou en tant que développeur Ubuntu, c'est vrai... mais l'énorme différence est que je le faisais sur mon temps libre et que désormais je pourrai également le faire dans mon temps de travail... Et ça c'est une bonne nouvelle :)

Maintenant la route est longue pour que la société perdure, mais il faut avoir espoir ! Alors n'hésitez pas à me contacter pour toutes prestations qui rentre dans le cadre de mes activités ...

01/09/2009 à 08:52
les conseils beauté de vos présentations (slides, keynotes, prez)

Guillaume Saint Etienne (yohm31)

Pour finir vos devoirs de vacances, je vous propose des petits idées pour améliorer les présentations PPT que vous êtes parfois amenés à faire.

Les règles d’une présentation PPT réussie :

Le texte à l’écran ne doit JAMAIS être le texte récité par le présentateur.
Le slide est un support à la narration, il doit présenter des éléments visuels qui NE SONT LA QUE POUR soutenir ce que dit le présentateur.
Il ne faut pas endormir l’auditoire.
DONC
• Des textes très courts et écrits gros
• Des belles images qui marquent ! (ne pas hésiter à aller sur Flickr pour prendre des jolis clichés, ils sont souvent en Creative Common Licence, par ex http://www.flickr.com/photos/lucas3d/3794517546/ )
• Il vaut mieux 100 slides avec 3 mots dans chaque, que 3 slides avec 100 mots.
• Utiliser une charte graphique
• Utiliser un police agréable à lire en gros
• Utiliser HABILEMENT les couleurs pour mettre en évidence un mot en particulier dans une slide, tout en gardant une charte de couleurs cohérente et sobre
• Une SEULE phrase et un SEUL concept par slide
• Un concept compliqué s’explique sur PLUSIEURS slides
• Pas d’animation dans les slides
• Si vous voulez faire apparaitre ou disparaitre des éléments, dupliquez le slide autant de fois que nécessaire pour faire l’effet
• Votre présentation doit faire entre 60 et 100 slides, en passant au max 10 à 20 secondes par slide

Une excellente prez sur le TDD
http://www.slideshare.net/bencarey/beyond-tdd

ma préférée (graphiquement) sur les CSS
http://www.slideshare.net/stubbornella/object-oriented-css

une très bonne sur l’agilité
http://www.slideshare.net/eig/agile-software-development

plus de texte, mais quand meme des bonnes idées gfx
http://www.slideshare.net/jurgenappelo/what-else-can-agile-learn-from-complexity
un rapide tour de méthodes agiles avec des images qui parlent
http://www.slideshare.net/Siddhi/introduction-to-agile-methods

21/08/2009 à 10:11
Caricatures sur Facebook

Antoine Jacquet (Royale)
Voici ma dernière application Facebook, lancée il y environ 2 mois : Caricature.

Le principe est assez simple : on choisit la photo d'un ami, ou une de ses propres photos, on clique quelque part sur son visage, et l'application propose 3 caricatures générées automatiquement en appliquant des filtres sur l'image.



Bon évidemment ce n'est pas une oeuvre d'art, mais ça reste amusant (ou lolesque si vous préférez)...
Et pour l'instant ça fonctionne plutôt bien, l'application a du succès smiley



Pour générer les caricatures, j'utilise l'utilitaire "convert" en ligne de commande, qui fait partie de la suite ImageMagick.
J'avais fait quelques essais avec la bibliothèque associée sous PHP, mais ce n'était pas convaincant.

En période de pointe dans la journée, l'application génère jusqu'à 20000 caricatures par heure (elles ne sont pas forcément utilisées, il s'agit souvent des aperçus).
Du coup mon serveur ne tenait plus vraiment la charge, et j'ai "investi" dans un RPS II chez OVH qui ne fait que ça grin



Ca chauffe ! cool
09/07/2009 à 17:55
Mini hélicoptère Gifi

Antoine Jacquet (Royale)
Récemment, j'ai reçu une pub Gifi avec des petits hélicoptères radiocommandés à 9 euros.
Evidemment, je n'ai pas pu m'empêcher de compléter - ma - collection, surtout à ce prix là.
Je suis donc allé au magasin le plus proche : celui de Purpan, pas celui qui a brulé (photo).

Arrivé sur place, il y avait plusieurs modèles disponibles, dont un en polystyrène qui faisait beaucoup (trop) penser à un PicooZ traditionnel.
J'ai donc opté pour les deux modèles en plastique, que je trouve assez réalistes :



Et ma foi ils volent plutôt bien !



Bon malheureusement je poste ce billet un peu tard, donc je ne suis pas sûr que la promotion soit encore d'actualité undecided
04/07/2009 à 23:58
Bots for Teeworlds

Antoine Jacquet (Royale)
You will find in this post some details about the bots I have created for the game Teeworlds.
I am not talking about aimbots, but 100% computer controlled bots for training purposes.
They are meant to be run server side and will connect to localhost by default.
The code is based on the current 0.5.1 client source, modified to remove graphics and run in console mode (this saves a lot of CPU, they eat about 5% of CPU each on my P4 3Ghz).

Basically, they do the following:
  • When they find a known checkpoint, they will follow a hard coded path, using directions/jumps/hooks. This allows the bots to be quite fast when they are on a known route (they can sometime capture the flag in 8 seconds). Currently there are 5 paths for the map "ctf5", but it is possible to add more).
  • When they lose the path (collision, hooked, stuck, etc) they will switch to pseudo random move and try to come back to the closer base, in order to catch again the path.
  • Strangely, they don't know about the flag :) They will just go from bases to bases forever hopping to capture the flag.
  • They try to shoot at the closer enemy using the current weapon (switch weapon on pickup activated), and will fall back to gun when they have no ammo left. I added some random deviation to avoid "perfect" shoots, like pure aimbots would do.
  • They will also try to catch the closer enemy using the hook. If the enemy is close enough, they will use the hammer.
  • They know about the "holes" in the map and will try to avoid suicides (but they still do it too much wink).
Currently they only play on CTF5 (my favorite map) because I made checkpoints only for this map.
If you are curious, they can be seen/tested on my server, search "zeRezo" in the server list. The bots are all named "bot|royale".

Here are some videos of the bots in action:







I modified the bot to restore graphics for these demos, normally they only run in console mode.

I posted this message on the official forum to have some feedbacks, specially from admins.
As I expected, they don't want the code to be released, since it could help cheaters to make aimbots.
So this will stay an exclusivity for my server tongue
19/06/2009 à 00:42
Comment faire des podcasts facilement ?

Eric Le Merdy
Voilà ma méthode pour réaliser des podcasts. Elle est issue de mes recherches sur le sujet et quelques tentatives. En trois étapes, je ne pense pas être original sur la démarche globale, mais plutôt sur les choix faits dans ces étapes.

Acquisition du son

podcastMaterial.jpg
  • Un dictaphone numérique Philips VOICETRACKER 600 qui enregistre en mp3 (Mono, 22050 Hz à 64kb/s) ; estimation du rapport temps poids : 2 minutes = 1 Mo.
    Les 512 Mo embarqués conviennent à mes besoins. Un port mini-usb permet de transférer les fichier mp3 sur l'ordinateur.
  • Un microphone cheap de chez itworks (8 € !)
  • Un microphone Sony stéréo d'occasion sur eBay (inutile pour le dictaphone qui est mono).
  • Il est aussi possible de réaliser l'acquisition à partir d'un pc portable équipé d'un logiciel de capture mais de nombreuses perturbations électriques internes viennent brouiller l'enregistrement (bruit du disque dur, écran, et même processeur).
  • Je n'ai pas retenu non plus la solution carte son externe (sur port USB). Même si on élimine le problème des perturbations électroniques, il est toujours nécessaire d'avoir son ordinateur allumé, ce qui est moins compatible avec un usage nomade.
J'obtiens finalement un bon son avec le micro intégré dans le dictaphone. Le micro sur pied permet juste de s'approcher de la discussion si possible. Quant au micro Sony stéréo, il fonctionne mais pas de différence majeure avec le micro intégré.

Montage

  • mp3dcscr1.jpgPour un montage simple (sans mixage), je conseille :
    mp3DirectCut : un freeware qui supporte le découpage de la piste sonore (élimination des temps morts) et surtout l'application d'un gain sur la piste ce qui permet d'augmenter le volume - très utile en cas de prise de son un peu faible. Ce logiciel est dit "lossless", c'est-à-dire sans perte de qualité, il ne ré-encode pas la piste mp3. On obtient donc un fichier mp3 d'une taille égale après modification.
  • audacity-linux-small.jpgPour un montage plus sophistiqué, je me suis orienté vers le fameux :
    audacity : un logiciel libre qui permet de travailler une bande son. On peut faire la même chose que le précédent mais avec une perte de qualité à l'arrivée puisqu'il y a une phase de ré-encodage à l'enregistrement. En contrepartie, on peut par exemple mixer une musique avec les paroles.

Mise en ligne

Le couple gagnant : internet archive et feedburner.

  • Internet archive est une organisation à but non lucratif qui souhaite lutter contre l'aspect éphémère d'internet en proposant d'héberger du contenu. Vous lui apportez de la richesse et lui vous héberge gratuitement, un bon deal, non ?
    archive.org.jpg Après avoir créé un compte (avec un openid par exemple), vous avez accès à une belle interface d'upload pour envoyer votre fichier (utiliser l'interface Ajax en beta, elle est plus efficace pour les fichiers volumineux). Ensuite, une page dédiée permet de centraliser les méta-données générées par l'envoi du fichier.
  • Un flux RSS doit être mis en ligne. Moi, je le fais "à la main" pour y ajouter la pièce jointe (en fait, le lien vers le fichier MP3 hébergé par internet archive).
    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    	<channel>
    		<title>{titre}</title>
    		<link>{home page}</link>
    		<description>{description}</description>
    		<atom:link href="http://eric.lemerdy.free.fr/dotclear/index.php?post/2009/06/18/{lien vers le flux}" rel="self" type="application/rss+xml" />
    		<item>
    			<title>{titre de l'épisode}</title>
    			<link>{lien de l'épisode}</link>
    			<description>
    				{du html avec caractères échapés}
    			</description>
    			<enclosure url="{l'URL du fichier sonore}" length="{la taille en octets}" type="audio/mpeg"/>
    			<guid>{un identifiant unique, pourquoi pas l'url de l'épisode}</guid>
    		</item>
    		{d'autres item...}
    	</channel>
    
    </rss>
    Il est possible de gérer l'upload et l'intégration RSS directement dans un blog, mais c'est pour ceux qui ont de la place sur leur blog.
  • Je n'ai plus ensuite qu'à enregistrer ce flux chez feedburner sans oublier de préciser qu'il s'agit d'un podcast pour obtenir les statistiques de téléchargement.

Conclusion

A moindre frais, avec un dictaphone numérique et son micro intégré, un mixage simple pour améliorer la prise de son en post-production sans perte de qualité et moyennant une mise en ligne légèrement fastidieuse, on peut créer des podcasts sans trop y passer de temps. C'est pour l'instant la méthode qui me garantit à la fois : de la mobilité lors de l'acquisition, des fichiers sonores pas trop longs à télécharger et une qualité satisfaisante à l'écoute.

17/06/2009 à 23:23
le bout du tunnel?

Guillaume Saint Etienne (yohm31)

enfin, on sort des ténèbres... après presque 10 ans de règne sans partager sur l'accès aux données depuis la création du Framework .Net, les DataSets rendent les armes.

C'est une vision personnelle, mais je ne peux me rappeler que mes soirées de debuggage intenses avec les DataSet... absence de typage, requêtes SQL construites sur des concaténations de chaînes de caractère... en tout cas au début, on était obligé de commencer comme ca.

Même s'ils ont mûri, les DataSets sont synonymes de lignes et lignes de codes de plomberie techniques, lourdes, fastidieuses, inutiles... et à mon sens une vision tordue de l'accès aux données.
Tout cela m'avait vite poussé à regarder NHibernate et ses confrères. Vive le Mapping Objet Relationnel!

Pour moi Linq et surtout Ado.Net Entity Framework allait enterrer définitivement les odieux DataSets... il n'en a rien été.

Et cette nouvelle m'apparaît comme une sortie du tunnel: "here are no plans to add DataSet into future releases of Silverlight"
Un signe? Un espoir?
Une promesse d'une aube nouvelle???? ;)

Si une technologie qui a le vent en poupe ne soutient plus cet ancêtre, peut être est-ce l'annonce du début de la fin?
Allez, il faut croire au progrès.

http://blogs.msdn.com/adonet/archive/2009/05/26/dataset-and-silverlight.aspx
http://www.sheysrebellion.net/blog/2008/07/31/datasets-are-evil/
http://jelle.druyts.net/PermaLink.aspx?guid=61676665-06a7-443a-9462-71dae713539e (DataSets Are Not Evil)

11/06/2009 à 09:31
une excellent présentation des méthodes agiles

Guillaume Saint Etienne (yohm31)

http://www.slideshare.net/mcottmeyer/adopting-agile-1521562

exactement le genre de présentation que je fais
rapide, concis, une idée par slide, des idées claires & simples
des diapositives compréhensibles par tous et d'elles-même!

a MUST HAVE and a MUST FOLLOW

04/06/2009 à 09:52
UDS Karmic jour 5

Christophe Sauthier (huats)

Voici donc le dernier billet billet sur l'UDS Karmic, puisque le dernier jour est arrivé :)

Bon alors bien sur les grincheux remarqueront que plusieurs jours se sont écoulés depuis le billet traitant du jour 4, la raison est tout simple : il faut bien rentrer à sa maison et se remettre un peu de tout ça. Bref aujourd'hui je profite du retour au bureau pour continuer/finir la série :)

Pour moi cette fin de UDS a été surtout l'occasion de continuer des discussions commencée les jours précédents quitte à ne pas aller dans certaines sessions qui m'intéressaient moins. J'ai néanmoins assisté à la table ronde de la Desktop Experience Team, c'est à dire ceux qui ont réalisé entres autres les notifications dans jaunty. Le bilan est assez intéressant, on y apprend en particulier qu'il vont chercher à avoir plus de retour de la part des utilisateurs finaux en essayant en particulier de les mettre en relation avec les designers dans des réunions dédiées. A voir donc comment ça va se passer dans les fait.

La grosse décision de la session suivante est que normalement empathy devrait remplacer pidgin, comme client de IM par défaut, enfin des tests doivent se passer un peu comme c'est le cas pour Rhythmbox/Banshee.

J'ai enfin suivi une session sur l'utilisation de Gnome Control Center, qui ne devrait pas avoir de gros changement d'ici à karmic vu que déjà pas mal de choses sont prévues du coté Gnome.

Voilà donc grosso modo pour ma journée, qui s'est achevée par la traditionnelle session de retour sur l'UDS, ces derniers étant majoritairement assez bon !

Enfin dernier soir oblige, une soirée était organisée en ville, avec au programme Karaoke... Je crois que certains d'entre nous ont raison de rester aux logiciels libres... Il suffit de regarder/écouter ces quelques exemples : Jono et jorge, mais également un groupe (dont je reconnais faire parti). Bref une bonne soirée qui cloture une bonne semaine de "travail" entre amis :)

02/06/2009 à 14:32
Mon premier homebrew sur Wii

Antoine Jacquet (Royale)
Après les homebrews sur PSP, je me suis naturellement attaqué aux homebrews sur Wii. grin

Ca fait un moment que ça me tente, mais j'ai bien fait d'attendre un peu, car ça a permis à la communauté d'avancer un peu, notamment sur le portage des bibliothèques.

Comme pour la PSP, on a donc besoin d'un toolchain afin de cross-compiler.
Pour la Wii, les instructions sont assez simples, et des binaires pré-compilés sont fournis, ce qui permet de mettre en place l'environnement assez rapidement.
Les principales bibliothèques ont été portées, notamment SDL depuis peu.

J'ai donc commencé par un jeu que je connais bien, à savoir zeRace. laugh
Le jeu n'a pas évolué depuis quelques années, donc il est assez basique, mais au moins ce n'était pas trop difficile à porter. tongue
Et ça marche ! Mon jeu a même été ajouté au Homebrew Browser qui permet de facilement ajouter des programmes dans le Homebrew Channel.

Un utilisateur a déjà fait une vidéo du jeu, voilà donc ce que ça donne :



Contrairement à la PSP, même SDL_net a été porté.
Par contre le portage est très récent, ce qui m'a posé quelques problèmes avec UDP (donc le mode réseau de zeRace n'est pas encore fonctionnel sur la Wii) undecided

Il se trouve que la sortie de mon jeu coïncide avec un concours organisé par la communauté, donc je me suis inscrit à la Nintendomax Wii Dev Compétition 2009, on verra bien ce que ça donne !

J'aimerai évidemment adapter d'autres jeux, notamment Chromium B.S.U. et X-Moto comme pour la PSP.
Malheureusement ça risque d'être assez difficile d'après mes premiers tests, car certaines bibliothèques requises ne sont pas portées.
J'ai réussi à me débrouiller pour SQLite et cURL (en créant des bouchons juste pour que ça compile), mais à priori ça va être plus difficile pour OpenGL.
Il existe une bibliothèque pour traduire les appels en équivalent "GX" utilisé par la Wii, mais le développement n'est plus assuré.
02/06/2009 à 00:35
Tout savoir sur Gradle

Eric Le Merdy
Grégory et moi avons décidé de faire un podcast sur Gradle.

On a créé une google page pour l'occasion:
http://gradleconversation.googlepages.com

Vous pourrez écoutez les deux épisodes de 45 minutes chacun en français pour tout savoir sur ce nouveau système de build.
29/05/2009 à 11:13
UDS Karmic jour 4

Christophe Sauthier (huats)

Continuons donc notre 'visite' de mes sessions de l'UDS.

Mon début de journée a été marqué par 2 sessions consécutives (1 présentation de Jono et 1 table ronde) sur le "burn out", c'est à dire en gros le craquage sous une trop forte implication/pression. Aussi éloigné que celà peut paraître de Ubuntu et des Logiciels Libres, en fait c'est quelque chose de vraiment très fréquent puisque chacun de nous en avait souffert à différents niveaux. C'est assez amusant de voir à quel point les gens ont des réactions différentes là dessus, même Mark Shuttleworth, de passage dans la salle, a échangé avec nous là dessus. La conclusion est simple : socialiser et faire du sport (oui oui j'en vois d'ici qui se frottent les mains en disant "Tu vois je te l'avais dis...."). Je trouve aussi très intéressant d'échanger là dessus pour le détecter plus facilement autour de moi, et essayer d'aider dans ce cas.

Ma fin de matinée a été placée sous le signe du Desktop : intégration de Firefox 3.5 comme navigateur par défaut pour Karmic et l'arrivée programmée de Gnome 3.0. La bonne nouvelle étant que tout ça va se faire :) La moins bonne est qu'il y a un peu de travail, mais bon ce sera l'occasion de bien participer :) D'ailleurs il risque d'y avoir un vrai effort de la part de la communauté pour aider un peu le projet Gnome pour se débarasser de certaines vieilles librairies... A suivre...

Après un bon repas (comme tous les jours), la traditionnelle photo a été prise. Puis une session super intéressante sur le boot et le but des 10s.Il faut dire que Scott James s'y connait dans ce domaine. Et pour avoir vu certaines boot optimisés, c'est vraiment impressionnant :)

Dans mon après midi, j'ai passé pas mal de temps à parler avec des personnes autour des sessions, n'ayant assisté vraiment qu'à la session sur comment améliorer la participation à distance à l'UDS. Ils semblent que les moyens sont bons (IRC/Micro Blogging/Flux Audio), mais que les gens présents n'ont pas encore tous les moyens pour bien prendre en compte les remarques extérieures (le fait d'avoir un video projecteur, affichant en permanence dans chaque salle un canal dédié IRC étant vraiment bien lors du dernier UDS). Plusieurs pistes sont donc à essayer pour les prochaines fois, mais on vois vraiment la place que le microblogging a pris en 6 mois.

La soirée a été marquée par un repas entre LoCo.Vraiement un bon moment. Et comme toujours la soirée a été terminée dans le hall de l'hotel à parler, boire un verre ensemble, profiter de ces moments...Car nous sommes tous d'accord là dessus, 75% des décisons se passent en dehors des sessions :)

29/05/2009 à 07:32
Une journée au XP Day France 2009

Eric Le Merdy
Je n'ai assisté qu'au deuxième jour du XP Day France 2009.
Le cadre était bucolique. Si je peux me permettre un reproche, les salles du chalet n'étaient pas si pratiques. Je connaissais déjà les lieux pour y avoir fait un "Team building" l'année dernière et nous avions rencontré déjà le soucis de la traversée des salles pour accéder aux autres.

Sessions:
Voici ce que j'en retiens:
  • Lightning talks Outils logiciels
    • Sonar
      • Qu'est-ce que c'est ?
        un outil de collecte et de visualisation de mesures faites sur le code source (java en premier lieu).
      • Eprouvé
        Il repose sur des briques d'analyse de code reconnues depuis longtemps déjà dans le monde java.
      • Riche
        Son interface web de reporting des mesures est agréable à consulter. L'analyse bi dimentionnelle sous forme de treemap (une métrique sur la surface, une autre sur la couleur) permet de comparer de façon les deux métriques choisies.
      • Manques
        L'outil manque peut-être selon certain d'une gestion des droits un peu plus fine pour raffiner l'accès aux mesures par projet. Je crois moins à l'argument avancé en session par un participant sur le masquage de certaines mesures "faille" à son client. L'agilité ne prônerait-elle pas une transparence sur les données projet ?
    • Outils .Net
      J'avoue ne pas être familier du framework .Net. Sans avoir pris de note, voici ce que j'en ai retenu. L'écosystème des outils semble à première vue couvrir tout le "cycle de développement". Entre parenthèses, le cycle présenté était certes itératif mais peu adapté à une stratégie de test-first. La force de Microsoft Team System serait l'intégration poussée de l'outillage. Par contre, la qualité de certaines briques serait inférieure à leur équivalent Open-source (notamment pour les Tests unitaires). Les présentateurs ont sentit la montée en puissance de l'écosystème. Ils tiennent à souligner l'effort de la communauté Alt.net qui pousse Microsoft à s'ouvrir de plus en plus. A en croire par le nombre croissant d'outils open-source qui sortent, ils obtiendraient une bonne attention de la part de l'éditeur. D'après ce que j'ai compris, Microsoft supporterai même certains outils open-source. C'est vrai qu'ils ont tout à y gagner si la contribution est de bonne qualité. Team System est déjà un outil ALM intégré alors qu'en java, ou avec les briques open-source ou gratuites de .Net, il faut se construire son propre ALM...
    • GreenPepper
      Une introduction pas si claire que ça sur la motivation du besoin des tests d'exigences automatisées a fait place à quelques écrans GreenPepper. Tout y est dans cet outil: le Wiki pour éditer les spécifications, la machinerie interne pour passer les tests sur le code de l'application, les fixtures à apporter pour fournir ce code liant. Cependant, on sent assez vite que GreenPepper souffre de quelques lacunes. Impossible par exemple de gérer en ligne de produit ces exigences fonctionnelles car la base des exigences est exportable mais pas rejouable dans le wiki. Il doit également faire face à une concurrence renforcée depuis 6 mois car Fitnesse bénéficie actuellement une forte activation de sa communauté grâce à la refonte du moteur de FIT vers Slim.
  • Lean Software Developement et Pratiques Agiles
    Ce fut moi le speaker de cette session. Ma première contribution au XP Day fut donc d'expliquer le Lean Software Development aux participants. J'ai bien aimé l'exercice, Je me suis sentis assez à l'aise. C'est ma collègue Elisabeth Ducarre qui devait assurer la présentation mais elle n'était pas disponible. Le sujet me passionne beaucoup et semble être la méthode agile à découvir en 2009. La salle était comble et je m'en félicite. J'en profite pour vous parler du prochain Valtech AfterWork qui se tiendra la La Défense le 10 juin prochain. Cette session gratuite et ouverte à tous après le boulot vous permettra de rencontrer Elisabeth et moi pour une présentation approcfondie du Lean Software Development et sans doute quelques animations participatives. Elisabeth donne aussi un cours chez Valtech Training sur 3 jours pour apprendre à pratiquer le Lean dans votre organisation.
    J'ai finalement répondu au mieux aux diverses questions que la pratique du Lean n'a pas manqué d'éveiller chez l'auditoire. Je serai heureux de récolter vos commentaires sur ma présentation.
  • Repas en compagnie d'un des alchimiste-agile. Une discussion passionnante sur le métier de coach.
  • Pratiques d'ingénierie incrémentale
    Cette session a rencontré un succès certain puisque la salle était comble. Il est vrai que c'est toujours un plaisir d'écouter Eric Mignot. Cette fois-ci, il a fait le point sur les pratiques d'ingénierie incrémentale. Cette présentation sous forme d'échange avec l'auditoire avec peu de support powerpoint fut d'abord axée sur les différentes pratiques agiles qui permettent d'assurer une ingénierie incrémentale. Eric semble être un adepte de l'application de la méthode SCRUM aux individus. En particulier, il nous a parlé de sa méthode d'immersion dans les équipes qui consiste à ne pas imposer de pratiques mais à provoquer chez les équipiers l'envie de les pratiquer. Il maintient un backlog de tâches qu'il souhaite livrer à l'équipe. Par exemple, l'adoption des réunions quotidiennes n'est pas une cérémonie imposée, il préfère montrer à la machine à café par exemple que les gens ont besoin de ce point journalier pour avancer dans de meilleures conditions. Si on impose la cérémonie, le premier point douloureux est de trouver un horaire qui convienne à chacun des participants. Si je devais un jour avoir à être accompagné sur un projet ou passer le cap et faire de l'accompagnement moi-même, j'aimerai avoir la même aisance qu'Eric dans le domaine.
  • Introduction à certains principes Lean
    Une courte session qui s'est faite légèrement manger par le discours d'Eric. Lean étant un sujet vaste, ce que je retiens de cette présentation est de ne pas forcément chercher à tout automatiser. Il a plutôt préconisé de tenter d'éxécuter l'activité manuellement pour bien mesurer si il existe un bénéfice à l'automatiser. L'orateur n'avait pas beaucoup d'aisance et cela s'est ressentit sur le succès de sa présentation.
  • De l'atelier à l'usine logicielle : Enjeux et retours d'expérience d'Orange Labs
    L'ALM est aux portes de nos organisations, mais la route reste encore longue quand on souhaite bâtir cette solution avec les produits existants. Orange Labs nous a fournit un retour d'expérience pertinent sur l'état de leurs travaux dans le domaine. Lorsqu'ils réalisent un développement sur une des briques open-source, ils n'ont pas peur de le verser dans la communauté. C'est un signe de maturité face à l'adoption de l'open source.
    Quelques accroches: "de l'atelier à l'usine logicielle", "de l'intégration continue à la synchronisation continue", "le statut du projet sur le serveur d'intégration continue est la seule référence valable".
    L'objectif de leur unité: assurer la répétabilité temporelle et spatiale de la production des livrables logiciels. Temporelle car on souhaite pouvoir régénérer à l'identique un livrable produit précédemment, spatiale car on souhaite que ce comportement soit valable non seulement sur tous les postes de développement de l'équipe, mais aussi sur tous les projets que l'organisation héberge.
    Pour arriver à ce résultat, toutes les solutions ne sont pas encore mûres. Voyons ce qu'il existe et ce qu'il reste à faire:
    Solutions mûres:
    • gestion des dépendances: avec Maven, les projets modulaires déclarent de façon versionnée leur dépendances aux librairies externes.
    • gestion de configuration: avec Subversion, on assure une historisation du code source indispensable au développement collaboratif.
    • intégration continue: L'outil Hudson assure que la compilation du logiciel est automatisé, des tests automatisés peuvent être passés sur cette plate-forme pour en valider la qualité. On peut aussi générer de la documentation, des mesures qualitatives sur le code à ce moment et packager les livrables automatiquement.
    • portail de mesures: Sonar permet d'exécuter et d'historiser les mesures qualitatives sur le code source.
    • référentiel de livrables: un repository maven permet à un service de peupler une base de libraires provenant des contributions open-source mais aussi issu de ses propres développements
    • "tracker": l'outil Jira permet de gérer l'ensemble des anomalies et évolutions sur un composant. Aujourd'hui, leur solution est basée sur un plugin maven qui automatise le commentaire de commit en associant automatiquement une modification de code à un ticket de la base. Cela leur permet aussi de générer automatiquement la release note d'une version non pas simplement en tant que liste de fichiers qui ont évolué dans la gestion de configuration mais surtout en termes de bugs résolus et d'évolutions apportées par requêtage de la base Jira.
    Solutions à mûrir:
    • Automatisation du déploiement de l'usine logicielle: Même si ils arrivent aujourd'hui à un bon niveau d'intégration des briques, ils souffrent encore du temps nécessaire pour déployer ces outils sur chacun des projets qu'ils ont à gérer. La voie de la virtualisation est une bonne piste pour constituer des serveurs "scalables" à mettre en place par projet. De même, la configuration du poste client prend encore pas mal de temps (retour d'expérience de Bull).
    • Trop de portails: un portail pour les builds, un pour le suivi des mesures qualitatives, un pour les sites générés au build: ils travaillent donc tout d'abord sur les liens inter-sites pour qu'ils soient au moins liés entre eux
  • Une informatique hédoniste et responsable.
    Session rafraichissante sur les parallèles entre la philosophie hédoniste (opposée à la philosophie idéaliste platonicienne bien répandue dans notre société occidentale). Un appel a participation à un manifeste hédoniste a été lancé en ouvrant la participation à des philosophes ou des profils sciences humaines.
La communauté agile semble toujours très active. L'association XP France a évolué cette année en changeant de statuts et en prenant le nom d'"Agile Paris". Du coup, le titre de l'association est beaucoup plus en phase avec les compétences réelles de ses membre qui n'ont jamais été réduites seulement à la méthode XP.
A l'année prochaine pour une nouvelle session. 2009 sera riche en événements et on ne peut également que se féliciter de la création d'associations à travers la France entière.
28/05/2009 à 21:29
UDS Karmic jour 3

Christophe Sauthier (huats)

Continous donc mon récit avec la journée 3 de l'UDS Karmic qui se passe en ce moment à Barcelone. Je vais surtout détailler les sessions où j'ai vraiment participé, et mais pas celles où j'ai assisté en étant assez passif, car justement si je n'ai pas participé activement je n'ai pas grand chose à dire dessus :)

Ma journée a commencée par une session sur comment améliorer le marketing réalisé par les LoCo. Assez intéressant, puisque mené par Paolo en s'appuyant sur son expérience avec ubuntu italie. Il va surement y avoir des sessions/actions pour continuer les réflexions là dessus, donc n'ayez pas peur vous aurez l'occasion de vous impliquez en temps voulu. La conclusion de cette session est venue avec la projection de "Stand By Me", dans une version chantée par plusieurs personnes réparties autour du monde.Vraiment très sympa, ça symbolise bien l'esprit Ubuntu... Bref une sorte d'hymne est en train d'apparaitre :)

Ensuite j'ai assisté à une "analyse" de l'action du Loco Council,1 peu plus de 1 an après sa création. Vraiment très intéressant, Pour résumer, ça c'est bien passé, il faut continuer comme ça, mais vu la charge de travail il se pose la question de peut etre rajouter 1-2 membres (il y en a 5 en ce moment).

Les sessions éclairs étaient vraiment super intéressantes : Daniel T Chen a commencé par nous expliquer les problèmes de la gestion du son... Vraiment un gros bazar pour le moment, mais apparement ça devrait aller de mieux en mieux :) Il y a eu ensuite les résultats d'une étude menée par des étudiants sur "Ubuntu et sa Communauté". Et enfin des présentations/démos sur Moblin et Android... Sympa tout ça. Et Android sur Ubuntu ça semble bien sympa :) Mais bon je ne vais pas le détailler puisque d'autres personnes en ont déjà parlés plusieurs fois sur planet.ubuntu-fr.org

La dernière session du jour fut consacrée au Conférence Pack qui est envoyé par Canonical pour les LoCo. Ce n'est pas quelque chose que nous utilisons à ubuntu-fr car celà ne nous convient pas vu la taille de nos évènements (3 Tshirts ça ne nous sert à rien....). Mais c'est toujours important d'écouter un peu les soucis/besoins des autres.

Voilà, journée avec assez peu de sessions en fait, mais beaucoup de discussions/interactions. Et puis la soirée a été chargée aussi avec le match Barça/Manchester United... Et vu que Barcelone a gagné, autant dire que c'était de la folie en ville et en particulier à "La Rambla". Bref un bon moment :)

Voilà, la suite demain !

28/05/2009 à 08:26
UDS Karmic jour 2

Christophe Sauthier (huats)

Continuons donc notre série de point sur les journées qui passent à l'UDS.

Au programme de mon jour 2 à l'Ubuntu Developer Summit, il y a d'abord eu le tour de table de la Desktop Team. Ca tombe bien c'est là où je suis le plus actif au niveau développement dans Ubuntu. Et le moins que l'on puisse dire c'est que Karmic va apporter de très très nombreuses nouveautés : un nouveau gdm (enfin diront certains), un temps de boot encore plus rapide, l'intégration de KMS, et bien d'autres que je dois oublier. Ca va etre aussi l'occasion pour nous (Desktop Team) de changer notre manière de travailler en utilisant un outil central pour savoir qui travaille sur quoi et donc que faire :)

J'ai ensuite continué avec une session communauté sur comment améliorer l'Open Week, cette semaine de sessions IRC qui est là pour initier les gens au monde qui s'agite pour faire de Ubuntu ce que c'est. Plusieurs idées ont étés présentées comme en particulier faire moins de sessions (il y en a 40 envrion par OpenWeek) mais plus étalées au niveau des zones horraires (pour toucher plus de monde). De plus l'utilisation de démos à distance en utilisant le couplage de screen et de EC2 comme a pu le montrer Dustin Kirkland lors de la dernière OpenWeek a été pas mal apprécié.

Puis est venu le moment de la session de travail sur le Loco Directory, ce projet de base centrale de l'ensemble des locos. C'est un projet auquel je participe activement puisque j'ai initié la mise en place d'une carte pour cet outil en utilisant des technos sympa (mapnik, openlayers, postgis). Bref il y a encore du travail mais on va essayer d'avoir la version de la carte prète pour la sortie de Karmic, alors que la version initiale du projet devrait partir en validation par les admins-sys canonical d'ici quelques semaines. J'ai d'ailleurs zapé la session d'après pour continuer les discussions sur la carte du Loco directory.

Après le déjeuner a eu lieu la "traditionnelle" série de présentations éclairs : Kvm, R, Kerberos... et la 'surprise' du jour était l'envoie de tshirts par Qt/Ubuntu offerts nokia...D'ailleurs on peut me voir avec le mien :)

Ma première session de l'après midi était en rapport avec l'intégration de gwibber par défaut dans le bureau Ubuntu pour permettre une meilleure intégration avec le micro-blogging (Twitter/Identi.ca/Facebook). En fait j'étais assez intéressé par ces discussions car c'est un des axes annoncé par Mark dans son speech d'ouverture, mais également car je suis le mainteneur d'une dépendance de gwibber (python-webkit) et que cette inclusion aurait des répercutions là dessus. Et le résultat étant que l'on va surement l'intégrer... Il y a eu pas mal de discussions sur comment l'intégrer, celà se fera surement au niveau de l'applet FUSA. J'ai ensuite assité à une session très intéressantepour savoir si il faut changer le player multimédia par défaut de rythmbox vers banshee. Il s'avère que ce dernier semble meilleur mais avec encore quelques points bloquants. Un autre point sera donc à faire dans le cycle (vers Feature Freeze), mais il est possible que banshee devienne très prochainement un choix par défaut.

Voilà pour mon programme de la journée ! La suite demain :)

27/05/2009 à 07:38
UDS Karmic jour 1

Christophe Sauthier (huats)

Comme certains d'entre vous le savent déjà, je suis actuellement à l'Ubuntu Developer Summit (UDS) à Barcelone pour travailler sur la future version la 9.10 (Karmic Koala) qui sortira au mois d'octobre prochain. J'ai en effet eu le plaisir/la chance d'être encore une fois sponsorisé par Canonical pour venir ici, dans cet hotel de luxe (oui oui le mot n'est pas trop fort), en compagnie de Didier Roche (didrocks de son pseudo) qui vit là son premier UDS :)

C'est comme toujours un très bon moment passé avec des personnes partageant le même centre d'intéret, la même passion : les logiciels libres et Ubuntu en particulier. Tous les aspects de Ubuntu sont abordés : du développement Kernel à la gestion des traductions dans launchpad en passant par le Poste de travail (sous Gnome, sous Kde) et même LTSP ;) Pour ma part je vais tout naturellement m'intéresser principalement aux sessions sur la communauté, le poste de travail (sous Gnome) et un peu de serveur (en fonction des créneaux), car il faut bien faire un choix : 14 sessions se déroulant en parallèle....

Bref après ces quelques explications sur le principe de l'UDS, passons au résumé de mon premier jour. Il faut savoir que les journées sont très chargées et vu que les soirées aussi (mais beaucoup plus sur un thème festif/papotage :)), tenir la durée de l'UDS est souvent le résultat d'un gros travail :) D'ailleurs celà faisait partie des mises en gardes/recommendations de Jono dans sa session d'ouverture :) Après ce speech d'ouverture (mais également celui de Scott James Remanant et celui de Mark Shuttleworth). Le thème de ma première session fut autour de la communauté et comment améliorer les différents évènements organisés par les communautés locales, oùnous nous sommes focalisé sur les différentes "Jam" (Bug, Traduction...). Les principales idées étant l'importance des taches non techniques mais également de pouvoir intégrer des évènements dans launchpad mais égalemet tirer le meilleur du futur Loco Directory. J'ai enchainé sur la session qui visait à trouver des moyens pour "redonner l'esprit Ubuntu" en faisant plus "de publicité" autour de ce qui nous anime, de ce qui nous plait...

Après le repas de midi plusieurs petites sessions éclairs dont une au sujet de LTSP (pour faire plaisir à manu_ubu surement). On m'a ensuite demandé de participer à la réfexion sur mettre en place d'un programme de mentoring pour le bug control, en prenant comme exemple le progamme de mentoring pour devenir developpeur Ubuntu que je gère. C'est un peu la même idée qui était présente dans la dernière session de la journée que j'ai suivi sur les moyens d'identifier des taches simples pour attirer de nouveaux contributeurs à Ubuntu.

Bref une journée bien pleine, qui a été complétée le soir par pas mal de discussion sur le Loco Directory et en particulier sur l'intégration de la carte que je suis en train de préparer et que nous allons aborder lors d'une prochaine session... Mais bon ce sera abordé dans une autre journée...

26/05/2009 à 08:17
Dur dur le travail à domicile !

Antoine Jacquet (Royale)


Ma nouvelle collègue de travail wink
14/05/2009 à 14:04
Présentation du Lean Software Developement

Eric Le Merdy

Je vais parler aux XP Day !

XP Day bag 1 (c'est le sac de l'année dernière)
1 2 3
  1. Ne pas négliger la théorie
  2. S'entraîner en s'écoutant pour se corriger
  3. Prendre des forces (5 fruits et légumes par jour, c'est un objectif dur à atteindre !)
La théorie permet d'être à l'aise avec les fondements de ce que l'on vit sur nos projets.
En s'écoutant, on apprend à se placer du côté de l'auditoire. Je cherche à me poser les questions en tant que public de la présentation : quels sont mes attentes et serais-je déçu si j'y assistais ? Mais la voix n'est pas le vecteur primordial pour faire passer l'information. L'attitude, le ton, la présence comptent aussi beaucoup.
Il est aussi important d'avoir une idée claire des messages que l'on souhaite faire passer. Ensuite, le mieux est de trouver une histoire à raconter pour faire passer le tout de façon agréable. Ce qui me plaît dans une présentation, ce sont les accroches, et lorsque les exemples résonnent dans mon expérience actuelle et passée. J'utilise donc des cartes pour répéter sur lesquelles j'inscris le message important du slide et les accroches et les transitions dans une autre couleur.
Tentons de faire tout ça pour le 26 mai !
13/05/2009 à 05:58
Migration de mon Ubuntu Serveur vers un linutop

Christophe Sauthier (huats)

J'ai eu la chance de rencontrer lors de Solution Linux pas mal de monde très sympatique. C'est ainsi que j'ai pu rencontrer plusieurs personnes parmi l'équipe qui fabrique Linutop qui sont tous des fervents supporter du libre...

Et pour ceux qui se demandent ce que c'est, il s'agit un mini PC très faible consomation (8W contre au moins 60W pour un PC classique), qui a pour principaux avantages de ne pas faire de bruit (complètement silencieux) et tout petit (la taille d'un boitier CD environ). Il est livré par défaut avec le système Linutop (un dérivé de Xubuntu assez épuré) sur une carte flash 1Go tout à fait adapté pour un usage bureautique, mais on peut tout à fait changer ça par un disque dur interne 2,5 pouces IDE.

Et lorsque vous saurez que depuis quelques temps j'ai la farouche envie de changer mon serveur actuel (celui qui héberge ce site mais aussi pas mal d'autres sites/services), dans l'optique d'avoir une solution plus économique d'un point de vue consommation EDF, mais aussi au niveau du bruit, vu qu'il est quand même physiquement dans notre bureau/salon :) Vous comprendrez facilement l'intérêt que je peux porter à ce PC. Et tout celà sans savoir à quel point les fabriquants étaient sympatiques !

Bref je suis reparti avec un joli exemplaire du salon :) Et je suis donc attaqué à la migration de mon "vieux" serveur. J'ai un serveur qui tourne sur Ubuntu Serveur Hardy (8.04.2).

Autant le dire tout de suite tout c'est très très bien passé... La procédure que j'ai suivie a été la suivante :

  • Branchement du disque dur du futur serveur sur l'ancien.
  • Création des partitions sur le nouveau disque dur.
  • Copie du contenu de l'ancien serveur vers le nouveau (avec rsync et en prenant soin de bien mettre les données dans les bonnes partitions car je n'avais pas la même topologie entre l'ancien et le nouveau)
  • Démarrage du nouveau serveur depuis une clé USB Ubuntu pour mettre proprement grub
  • Redémarrage du nouveau serveur sur l'ancien système
  • Et c'est tout !

Tout le matériel est immédiatement reconnu. Et tous les services ont de suite fonctionné... Bref que du bonheur... Et puis quel plaisir d'avoir ce petit objet qui ne fait pas de bruit, ne prend pas de place plutôt que mon ancienne tour. Bon alors c'est sur que ce n'est pas les mêmes performances d'un point de vue puissance brute, mais pour une utilisation classique de serveur personnel (qui a pourtant pas mal de visites au total), malgrè une puissance demandée non négligeable (j'héberge pas mal de technos différentes dont certaines assez gourmandes comme Zope/Plone), le résultat est vraiment très très bon.

Bref mon serveur ubuntu tourne sur Linutop et c'est cool ! Et qui sait peut etre que vous aussi bientot, puisque il y aura un linutop à gagner à la tombola de la prochaine Ubuntu Party parisienne du 16 et 17 Mai...

27/04/2009 à 16:27
Encore un peu plus...

Antoine Jacquet (Royale)

14/04/2009 à 00:28
Nabaztag plugin improved

Eric Le Merdy

This is a list of improvements of the lastest version:

  • Use a checkbox for the "Report On Success" parameter.
  • Hide non mandatory parameters in an "Advanced..." section.
    hudson-1.5-advanced.png
  • Text-To-Speech messages supports "${projectName}" and "${buildNumber}" special syntax to be more expressive (instead previously of adding project name and build number automatically at the end of the TTS).
    hudson-1.5-variables.png
  • Add help for each parameter.
    hudson-1.5-help.png

The version is available here: nabaztag-1.5.hpi.
The wiki page also contains a new section to request changes. A Jira for such a little plug-in seems oversized, no ?

22/02/2009 à 23:02
Compte rendu de la Ubuntu Global Bug Jam à Toulouse du 20 Février

Christophe Sauthier (huats)

Et bien pour faire simple c'était très très sympa. il faut dire qu'entre les gens venus suite aux annonces sur Toulibre et ceux venus suite aux annonces sur ubuntu-fr il y avait pas loin de vingt personnes qui ont participées.

La session principalement encadrée par lionel et moi même a permis d'initier de nouveaux venus au monde du developpement Ubuntu, mais aussi certains déjà habitués. Bref nous avons pu faire plusieurs types de bugs des bugs qui n'ont pas de paquet associé, jusqu'à certains bitesize. Celà a donc été un moment très sympa, le clic cool café étant vraiment bien adapté pour celà, et en plus ils aiment le libre :)

Bref je pense que l'on peut dire que le but est atteint, certains vont continuer plus avant l'aventure du logiciel libre avec Toulibre, d'autres vont venir participer plus activement à ubuntu-fr et enfin un va vamême peut etre tenter de l'aventure du programme de mentoring pour devenir MOTU !!! Alors à quand la prochaine ???

22/02/2009 à 22:47
Ubuntu Global Bug Jam à Toulouse le 21 Férvier 2009

Christophe Sauthier (huats)

Dans le cadre de la Global Ubuntu Bug Jam qui se déroule partout dans le monde du 20 au 22 Février, ubuntu-fr et Toulibre ont le plaisir d'organiser ensemble une Bug Jam à Toulouse. Elle aura donc lieu au Clic Cool Café 5 rue de la digue, 31300 TOULOUSE, Samedi 21 Février de 14h à 18h30.

Ce sera l'occasion de se réunir dans un lieu convivial, pour s'initier au traitement de bugs Ubuntu dans la plateforme launchpad. Et pour ceux qui sont déjà venu à la précédente édition, celà nous permettra de poursuivre cet apprentissage :) Encore une fois aucune connaissance technique n'est requise, juste de la bonne volonté et de la bonne humeur !

Pour rappel, il n'est demandé aucune préparation particulière mais la rcréation d'un compte sur launchpad est vivement recommandée pour gagner du temps... De plus ceux qui possèdent un ordinateur portable capable de se connecter à un réseau (cable ou wifi), sont vivement encouragés à amener pour permettre de travailler plus efficacement.

Voilà, à samedi !

19/02/2009 à 12:35
TNT HD sous Linux

Antoine Jacquet (Royale)
Un billet rapide qui aidera peut-être ceux qui comme moi ont eu du mal à visionner les nouvelles chaines TNT HD sous Linux.

Je possède un tuner USB DVB-T basique (DTV-5100), supporté par le noyau Linux.
Tout fonctionne donc parfaitement pour les chaînes normales, par exemple avec le logiciel Me TV.

Le tuner ne fait que transférer le flux brut à l'ordinateur qui se charge de la décompression, ce qui lui permet d'être officieusement compatible "TNT HD".

Depuis Versailles, je ne capte pas tous les canaux TNT, il me manque notamment le canal R1 qui contient la chaine France 2.
Par contre, je capte le canal R5 qui diffuse les chaînes HD, notamment France 2.

Me TV détecte ces chaînes, mais est incapable de les décompresser en temps réel.
La version de VLC packagée par Debian ne reconnait pas le codec vidéo.
Xine fonctionne mais galère comme Me TV...
Par contre MPlayer fonctionne correctement !

Il faut d'abord créer le fichier de chaînes :
scan /usr/share/dvb/dvb-t/fr-Paris > ~/.mplayer/channels.conf

Vous devriez alors être en mesure de visualiser une chaîne normale :
mplayer dvb://TF1

Par contre MPlayer ne démarre jamais la vidéo sur une chaîne HD, pensant qu'il s'agit d'un flux MPEG2 standard :
VIDEO MPEG2(pid=220) NO AUDIO!  NO SUBS (yet)!  PROGRAM N. 0

La solution est d'éditer le fichier ~/.mplayer/channels.conf à la main pour corriger les identifiants :
TF1 HD:538166000:INVERSION_AUTO: [...] :HIERARCHY_NONE:110+120:110+130:1281
France 2 HD:538166000:INVERSION_AUTO: [...] :HIERARCHY_NONE:210+220:210+230:1282
M6HD:538166000:INVERSION_AUTO: [...] :HIERARCHY_NONE:310+320:310+330:1283

J'ai trouvé ces identifiants en utilisant dvbtune et dvbsnoop, mais je pense que ce sont les mêmes au niveau national.
Par contre ne changez pas les fréquences qui dépendent de votre émetteur.

Ensuite il est possible de regarder les chaînes avec MPlayer :
mplayer dvb://'France 2 HD'

Evidemment ça ne résoud pas les problèmes de lenteur liés au codec, mais grâce aux nombreuses options de MPlayer (et à Google wink) j'ai réussi à obtenir un résultat correct :
mplayer -vfm ffmpeg -lavdopts fast:skiploopfilter=all:threads=8 -vf pp=md dvb://'France 2 HD'

Les options "fast" et "skiploopfilter=all" sont documentées dans le man. Elles désactivent certains algorithmes de H.264 pour améliorer la vitesse de décodage, au détriment de la qualité.
Le fait d'activer 8 threads m'aide aussi, ce qui est surprenant vu que je n'ai qu'un processeur mono-coeur sans hyper-threading...
Enfin, il reste un peu de CPU pour désentrelacer la vidéo avec "pp=md".

Au final, mplayer occupe environ 60% de mon processeur et Xorg 10%... donc je ne peux pas faire grand chose en même temps, au risque de ralentir la vidéo (ce qui à tendance à casser la synchronisation audio/vidéo).
15/02/2009 à 21:18
Productivité: faire son Hansei

Eric Le Merdy
"Je trouve que je passe trop de temps au travail."

Cette phrase exprime un ressenti sur une situation dangereuse.
Que faire pour améliorer cet état ? Et en premier lieu quel est cet état ?!?
Le bon sens cartésien veut que l'on ne puisse mesurer une amélioration que de ce que l'on peut préalablement quantifier.
Partant de ce constat, j'ai décidé de tenter une petite expérience cette semaine: mesurer mon temps de travail.

Ne disposant pas d'un outil aussi interactif que Talia (Pyxis en parle), je me suis monté un google document tableur pour reporter mon activité: Effective working time
(Les valeurs sont en décimales d'heures)
Tous les jours, je remplis le nombre d'heures de travail

  • total de la journée (hors pause déjeuner)
  • de 'dev' on peut traduire par travail productif (slides, docs, etc.)
  • de 'support', les questions des utilisateurs, le support aux autres développeurs
  • de 'other', web surfing, checkage de mail clientèle, pro et perso, lecture de docs et... autre quoi
Le reste est calculé tout seul par différence. C'est ce qui n'est pas comptabilisé (pause toilettes (!), oubli du chrono, etc.).

Le chrono, justement, pièce maîtresse dans mon expérimentation. Je suis infidèle à la philosophie agile ou lean du 'physical communication'. Et non, je n'ai pas trois chronos qui trônent sur mon bureau. A la place, c'est un 'google gadget' sur mon bureau virtuel qui compte le temps qui passe. C'est le bien-nommé : Task List and Timer Timer task_and_timer.png

Bilan après une semaine:

  • L'interface du timer n'est pas très jolie. Encore un développeur qui essaye de faire une interface... Pourquoi diable a-t-il voulu créer sa propre scrollbar ? En regardant comment est fait un google gadget, j'ai compris mais au moins, il aurait pu prendre un style d'ascenseur plus joli.
  • A l'usage, c'est assez lourd de déclencher les chronos au changement d'activité. Un déclenchement à la voix serait sympa, ou alors une IA qui infère l'activité en fonction des logiciels en action sur le poste... C'est possible mais pas dispo. sur google gadget...
  • Ce qui n'apparaît pas justement est le nombre de "changements de contexte" qui est une cause classique de perte de productivité.
  • La tentation de l'isolation est donc importante pour augmenter facilement la productivité
  • L'irrégularité de la journée de travail dénote un emploi du temps assez torturé cette semaine...
  • Prise de conscience sur la répartition réelle des activités quotidiennes
  • Le côté motivant : voir la courbe de l'activité productive qui monte est assez stimulant.
  • Qu'est-ce-qui est fait pendant la journée de travail qui pourrait être éliminé sans conséquences ?

Je pense prolonger encore un peu le monitoring pour tirer d'autres leçons de ces données puis recommencer le mois prochain. Je n'ai pas encore terminé mon "Hansei" (auto-critique, réflexion).
En tous cas, j'encourage quiconque souffrant du temps qui passe trop vite de mener à son tour ce genre d'expérience adapté à son contexte. En effet, le lean nous apprend qu'il n'y a pas de métrique magique qui va illuminer tout seul les gains de productivité à faire. Par la suite, pourquoi ne pas partager les retours en "Hansei Kai" (réunion d'auto-critique) ?
(Ces termes japonnais sont issus de la pensée lean [ppt])

12/02/2009 à 22:45
Freelance Facebook developper

Antoine Jacquet (Royale)
I have been working on several Facebook applications, and this gave me some visibility on this subject, mainly thanks to these french applications:

        
Pronostics Ligue 1

Pronostics Top 14

Pronostics Pro A

Pronostics D1M

Ma liste de cadeaux

Ma musique

Following several contacts I had in Paris, I decided to start as a freelancer.
So I am now able to accept requests for the development of Facebook applications, and I am going to start next week with a first client in France.

For now, I am doing this work in parallel to my main job, so I am focussing on the domain of Facebook applications.
I am familiar with the Facebook technologies thanks to my projects, like the FBML language and the PHP API, as well as the Facebook social/viral concepts.

If you are interested by my skills, feel free to contact me on Facebook.
You will also find contact details in my resume.
06/02/2009 à 21:19
Développeur indépendant Facebook

Antoine Jacquet (Royale)
Les différentes applications Facebook que j'ai pu développer récemment m'ont donné un peu de visibilité dans ce domaine, notamment :

        
Pronostics Ligue 1

Pronostics Top 14

Pronostics Pro A

Pronostics D1M

Ma liste de cadeaux

Ma musique

Suites à plusieurs contacts sur Paris, je me suis enfin décidé à me lancer...
Le statut d'auto-entrepreneur qui est en place depuis le début de l'année m'a également aidé puisque les formalités administratives sont simplifiées.

Je suis donc maintenant en mesure de répondre à des demandes concernant le développement d'applications Facebook, et je dois commencer dès la semaine prochaine avec un premier client !

Pour l'instant, je fais cette activité en parallèle de mon CDI, et je me concentre donc dans un premier temps sur le domaine des applications Facebook.
Je maîtrise les technologies Facebook grâce à mes différents projets, notamment FBML et l'API PHP, ainsi que les techniques d'utilisation virale du réseau social.

Si vous êtes intéressés par mes prestations, vous pouvez me contacter sur Facebook.
Vous trouverez également mes coordonnées détaillées en consultant mon CV.
06/02/2009 à 21:07
Merci...

Christophe Sauthier (huats)

Je viens de me rendre compte suite à certains commentaires/blogs, que je suis la personne actuellement sur le Hall Of Fame Ubuntu du moment, c'est à dire une sorte de tableau d'honneur...

Je ne peux dire que Merci ! Mais je tiens juste à dire que je ne prends cette récompense pour moi, mais que je la partage avec toute l'équipe de Ubuntu-fr car je sais bien que nos activités ont eu un rôle plus que prépondérant dans cette récompense...

03/02/2009 à 19:53
Les courses, vous le savez, c'est ma grande passion !

Antoine Jacquet (Royale)
En tant qu'expert du turf, je me devais d'aller au moins une fois dans ma vie à l'hippodrome de Vincennes !


L'arrivée du Prix de Sauternes, le quinté du jour

Bien sûr, j'ai parié sur la course... et j'ai perdu tongue
01/02/2009 à 22:07
Une journée extra-ordinaire

Guillaume Saint Etienne (yohm31)

Pour changer de .Net, un petit billet d'humeur sur... le travail.

Voila donc cette grande journée de grève avec une paralysie quasi-totale annoncée.
Et qu'est ce que je remarque ce matin au boulot: 2 fois moins de mes collègues sont venus travailler, les autres sont restés travailler chez eux.
C'est un des avantages à bosser dans les domaines de l'IT ou du service. Nous n'avons pas *vraiment* besoin de nous déplacer sur notre lieux de travail tous les jours, dans l'absolu.

Résultat de cette journée: l'ambiance était particulièrement décontractée voire joviale. Travaillant dans un OpenSpace, voila que -tout d'un coup- une quiétude et un calme nécessaire à la concentration régnaient autour de nous. Le travail allait en être plus efficace.

Les gens étant restés, pour bon nombre, chez eux, la circulation fut plus fluide que d'habitude (source Europe 1) et la qualité de l'air était bonne ( http://www.airparif.asso.fr ).
L'analyse de la courbe de cumul de bouchon en IdF fait ressortir une étrangeté ( http://www.sytadin.fr/ ): l'intensité des bouchons était exactement égale à la courbe des moyennes (donc aucun effet de sur-bouchon) mais elle était décalée dans le temps; c'est à dire que les bouchons se sont produits beaucoup plus tôt dans la matinée puis résorbés, pour avoir retrouvé à 9h30 une valeur quasi nulle... du jamais vu pour Paris et sa banlieue!

75% des métros ont fonctionné mais comme il y avait beaucoup moins de monde, les voyageurs étaient détendus.

Et de réfléchir, en ces temps de crise, à la nécessité de repenser nos modes de travail. Avons nous besoin de dépenser autant de CO2 pour transporter autant de monde à des distances parfois incroyables (plus de 3h de transport par journée pour certains). Et tous en même temps (ne pouvons nous pas imaginer des horaires mieux adaptés?).

Selon le WWF, 50% des émissions de CO2 des entreprises sont liées aux déplacements professionnels : voyages d’affaires, trajets domicile-bureau, etc. L’ONG vient donc de lancer le challenge One in five pour pousser les entreprises à réduire leurs déplacements professionnels de 20% d’ici 5 ans. (source: http://www.greenit.fr/article/acteurs/50-des-emissions-de-co2-liees-aux-voyages-daffaires )

En bon provincial (et Occitan de surcroît) je suis convaincu qu'il y a trop de monde en Ile de France, et que concentrer 1/5eme de la population sur 1,7% de la surface du territoire est une aberration environnementale (et idéologique).

Les instances territoriales font toutes les études qui démontrent que les trajets domicile-travail coûtent trop cher en CO2 ( http://www.hauts-de-seine.equipement.gouv.fr/IMG/pdf/p6_pda_covoiturage_vf_cle636a11.pdf ).
Le gouvernement et la CEE s'y mettent aussi ( http://www.bougezautrement.gouv.fr/ ).

Je saluerai donc toutes les initiatives qui vont dans le sens du télétravail et de la dématérialisation, tel que http://www.cyberworkers.com/
et de suivre les actualités de sites "IT durable" tels que http://www.greenit.fr/

Il est temps de vivre au 21e siècle et de laisser loin derrière nous la révolution industrielle. L'ère a changé!

29/01/2009 à 11:09
Paris Java Camp 3

Eric Le Merdy
Je compte participer à ce BarCamp. Il y a 22 inscrits pour l'instant. Je suis le 23ème. Je pense qu'il faut tenter le samedi au moins une fois pour voir ce que ça donne. En semaine, il m'est déjà arrivé d'être un peu fatigué le soir.

Agrandir le plan
Au plaisir de vous voir samedi prochain.
29/01/2009 à 07:40
la Modélisation Métier est elle soluble dans le CRUD (et inversement)?

Guillaume Saint Etienne (yohm31)

http://docs.google.com/Doc?id=dhp3ggmx_115g524prcq

je vais lever une veille taupe, peut être un débat sans fin, mais il me parait important d'essayer de remettre les cartes sur table.

Plus les années avancent, et plus je me questionne sur où vont les technologies et les éditeurs ou les projets Open Source?

Et je me demande si on ne frôle parfois pas la schizophrénie...
Par exemple chez Microsoft, on nous dit : "CRUD, Only When You Can Afford It" ( http://msdn.microsoft.com/en-us/library/ms978509.aspx )
et après on met en avant ASP.NET Dynamic Data, qui permet de faire des applications 100% orientées CRUD.

Au début était l'informatique, les carte perforées, puis les disques durs. Et tout cela stockait des données, des données, des données.
Puis vint Merise en grand éclaireur de la pensée informatique industrielle (pendant que les scientifiques n'en avaient cure, et persistait dans une voie fonctionnelle).

Ce que faisaient alors les logiciels se résumait en 4 verbes: Créer, Lire, Modifier, Effacer des données (Create Read Update Delete, CRUD en anglais).

Et après de nombreux logiciels produits sur ce modèle, on s'est rendu compte que:
1) cela ne faisait que produire des logiciels d'informaticiens, c'est à dire pas du tout "User Friendly";
2) la complexité de la réalité dépasse le stade de ces 4 opérations basiques.

On a commencé à réfléchir du point de vue de l'utilisateur. On s'est aperçu qu'il avait un besoin de logiciel dans le but de l'assister dans l'exécution de son métier (et accessoirement que l'utilisateur était livré avec des yeux).

On a donc sorti une artillerie lourde pour décrire - MODELISER - les processus métier, issus du besoin réel de l'utilisateur, représentés bien souvent par des Scénarios Utilisateurs (merci UML).

Des paradigmes tels que le "Model Driven Design" ou le "Domain Driven Design" sont venus consolider cette nouvelle façon de faire du logiciel.

Pourtant le CRUD n'avait pas pour autant disparu...

On a l'habitude de dire qu'il ne faut pas exposer les données directement au dessus d'une couche métier, tels que ce que l'on peut trouver exposé par un Web Service, et pourtant nombre d'applications le font.
et Microsoft qui va droit dedans avec SdS et ASP.NET Dynamic Data.

"Data-driven application" redevient un mot que l'on peut prononcer sans honte.

Microsoft n'est pas le seul, avec la lame de fond qu'est REST, tout est orienté ressource, donc données, et les opérations permises sont encore au nombre de... 4!
Question légitime: comment exprimer du métier avec ce genre d'outils?

Comment faire dans cet incessant aller-retour entre une paroisse et une autre? Est-ce un éternel recommencement? (et piétinement?)

la suite sur http://docs.google.com/Doc?id=dhp3ggmx_115g524prcq

28/01/2009 à 17:17
Valtech Go Ski

Eric Le Merdy
this week-end !valtechGoSki.gif
23/01/2009 à 10:20
Planet AMGLR
Pour ajouter votre blog, envoyez un email à "bureau AROBASE amglr POINT net" en précisant :
  • votre nom
  • l'adresse du flux RSS de votre blog
  • votre avatar si vous en souhaitez un
Dernière mise à jour : 10/03/2010 à 15:37.

Toutes les heures sont au format UTC.
Membres
Antoine Jacquet (Royale)
Christophe Sauthier (huats)
Eric Le Merdy
Guillaume Saint Etienne (yohm31)
Julien Carnelos
Syndication
Des flux sont disponibles pour ce site aux formats suivants :

[RSS 1.0 Feed]
[RSS 2.0 Feed]
[FOAF Subscriptions]
[OPML Subscriptions]
[Hacker]
[Planet]
Lien
Pour faire un lien vers cet agrégateur, n'hésitez pas à utiliser l'image ci-dessous :

amglr