7th
JAN

Alt.net Paris #21 : L’orienté objet : erreur historique ou la voie à poursuivre ?

Posted by Julien under Paris, Rencontres Paris

La 21ème soirée Alt.net portera sur le sujet suivant :
L’orienté objet : erreur historique ou la voie à poursuivre ?

Vous êtes attendus le mercredi 20 janvier à partir de 19h30 à l’adresse suivante :

OCTO Technology
50, avenue des Champs-Elysées
75008 PARIS

Vous pouvez vous inscrire à cet soirée sur cette page.

A noter que le débat a déjà commencé sur la liste de discussion !

11th
DéC

alt.net paris #20 – open space session – Valtech

Posted by gauthier under Paris, Rencontres Paris, Uncategorized

La réunion du mardi 15 décembre, sera une open space session.

La réunion est hébergée par Valtech,  au 80 Avenue Marceau, 75008, Paris

Merci d’inscrire votre nom sur ce formulaire d’inscription

Comme chaque open space session, ce sont les participants qui jugent la qualité et l’intérêt des sujets retenus et des échanges, venez avec votre bon esprit pour cette dernière réunion 2009. alt.net paris.

21st
OCT

Alt.net Paris #19 : Command Query Separation avec Udi Dahan

Posted by Julien under Paris, Rencontres Paris

C’est avec plaisir que nous recevrons Udi Dahan pour la 19ème rencontre Alt.net Parisienne, en partenariat avec Skills Matter et Zenika, le lundi 16 Novembre.

Udi, expert en architectures orientées services, en domain driven design et auteur de NServiceBus, nous présentera en quoi l’approche CQS (Command Query Separation) peut être un élément essentiel dans la mise en place d’une architecture distribuée.

Il est a noter que cette présentation sera en anglais. Elle sera donnée en marge de sa formation sur les architectures orientées services, pour laquelle nous vous offrons une réduction de 30%.


Vous êtes attendus à partir de 19h00 à l’adresse suivante :

Zenika
28 rue de Châteaudun
75009 PARIS
Téléphone : +33(0)1 45 26 19 15


View Larger Map

Vous pouvez vous inscrire à cet évènement sur cette page.

15th
OCT

Formations Nhibernate, SOA ou encore DDD à prix réduit !

Posted by Julien under Actualités, Paris

A l’occasion de son implantation en France en partenariat avec Zenika, Skills Matter propose à la communauté Alt.net des réductions intéressantes pour ses prochaines formations en architecture et en open source.

Animées par des speakers de renom (comme Eric Evans ou Udi Dahan.), c’est une occasion unique de découvrir ou d’approfondir des sujets rarement abordés en France.

Ainsi il vous sera possible de vous former aux technologies suivantes avec 30% de réduction sur le tarif habituel :

Pour bénéficier de cette promotion, rien de plus simple ! Utilisez le code suivant lors de votre inscription : SM1780-622927-Z4N (par téléphone uniquement pour le moment).

1st
OCT

Alt.net Paris #18 : Mono Touch avec Jean-Baptiste Evain

Posted by Julien under Paris, Rencontres Paris

monotouchboxpersonal
La 18ème rencontre Alt.net aura lieu le lundi 12 octobre dans les locaux de la société Zenika.
A cette occasion, Jean-Baptiste Evain nous présentera la toute nouvelle solution de Novell pour développer en .Net sur Iphone et Ipod Touch : Mono Touch.

Aujourd’hui, dans l’informatique, tout le monde ou presque a entendu
parler de l’iPhone. Et à plus forte raison depuis que celui-ci
supporte le copier-coller. C’est aujourd’hui un acteur important dans
le monde de la mobilité, et sa démocratisation rapide en fait une
plateforme de choix pour développer des applications, aussi bien pour
l’entreprise que pour le particulier.

Si à l’origine développer pour cette platforme signifiait utiliser le
langage d’Apple, l’Objective-C, on assiste à la naissance de solutions
tierces destinées à fournir d’autres moyens de programmer pour
l’iPhone.

Cette session sera l’occasion de voir non seulement comment il est
possible de réutiliser son code et ses compétences .net sur l’iPhone
grâce à MonoTouch, mais aussi d’en expliquer le fonctionnement.


Vous êtes attendus à partir de 19h00 à l’adresse suivante :

Zenika
28 rue de Châteaudun
75009 PARIS
Téléphone : +33(0)1 45 26 19 15

Suite à l’affluence, nous déplaçons le lieu de rencontre à 1 minute de l’adresse d’origine :
Club Confair
54, rue Laffite
75009 Paris


View Larger Map


Merci d’indiquer votre présence sur cette page !

Edit : Il vous est désormais possible de vous inscrire directement sur le site de Zenika !

5th
AOûT

ALT.NET #16 : WindDBG, compte rendu par Romain Verdier

Posted by romain under Comptes Rendus Paris

La dernière rencontre ALT.NET avait lieu chez Winwise. Yann Schwartz nous présentait une session (pleine de joie, rappelons-le) au sujet d’un outil méconnu et surpuissant : Windbg. En fait, il s’agissait surtout de voir comment tirer partie de Windbg pour débugger des applications managées ; après tout, c’est ALT.NET. Il y avait une bonne dizaine de personnes (ndYann : c’est faux, on était au moins une bonne douzaine) — les meilleurs d’entre tous –, et ce fut diablement intéressant : instructif, utile, pointu et digeste.

Par contre, Yann ne sait pas coder :

for(int i=0; i< 100000000; i++)
{
   if(!list.Contains(Guid.NewGuid().ToString()))
      list.Add(Guid.NewGuid().ToString());
}

Il faut probablement avoir une maladie mentale pour écrire ça ! C’est en tout cas ce que j’ai pensé sur le coup, en pouffant sur ma chaise (j’étais au fond de la salle). Ensuite, je ne sais plus si je l’ai compris de moi même ou si Yann a dû le préciser d’un air atterré, mais il avait fait exprès d’écrire ça. Parce que d’autres ne font pas exprès, et que ça pose des problèmes.

Windbg est un outil permettant de débugger des applications Windows, ou carrément Windows. Et ouais ! On l’utilise généralement en s’attachant à un processus, ou en analysant un dump existant. Il devient alors possible d’obtenir tout un tas d’informations utiles (sans jeu de mot) : on peut se balader dans la pile d’exécution, inspecter les threads, la mémoire, etc. tout en restant très peu intrusif ; windbg est en effet un outil léger de très bas niveau. C’est particulièrement utile lorsqu’on cherche à savoir d’où provient un problème sur une application qui tourne dans un environnement où il est impossible d’utiliser de profilers, d’outils de développement, et autres moyens de petits joueurs. Si vous voulez débugger une application ASP.NET déployée sur IIS en production, par exemple, quelques droits, une clé usb et windbg suffisent. Amenez quand même votre cerveau, on ne sait jamais.

On peut donc voir ce qui se passe au coeur d’une application native, mais il existe une extension à Windbg, sos, qui offre nombre de fonctionnalités propres à l’inspection et au debug des programmes .NET. Cette extension est elle-même étendue par un autre outil non-officiel, sosex, toujours spécifique à .NET, qui fait gagner +2 en force, +3 en magie et rend accessibles de nouvelles commandes intéressantes.

On a bien senti que Yann voulait rester pratique pour cette présentation, et on l’en remercie. Il s’agissait d’une démo continue et argumentée, en quelque sorte, qui avait pour but de montrer comment trouver et résoudre certains types de bugs à l’aide des outils appropriés. Il ne s’agissait pas d’une présentation qui avait pour but de montrer comment utiliser certains outils à l’aide de bugs appropriés. En fait, il est apparu assez clairement que dans 90% des cas, quelques commandes de sos et/ou de sosex pouvaient suffire à sécher les larmes des sales programmeurs que nous sommes.

Exemples :

  • !DumpHeap -stat : Liste toutes les instances du tas, regroupées par type et triées par taille totale.
  • !Threads : Liste les threads de l’application.
  • !SyncBlk : Liste les blocs de synchronisation, pris ou attendus par les threads de l’application.
  • !GCRoot addr : Affiche qui référence l’instance spécifiée et empêche donc sa collecte par le GC.
  • !dlk : (commande Sosex) : Trouve automatiquement les deadlocks.
  • !refs addr : (commande Sosex) : Affiche le graphe des références d’une instance, i.e. qui la référence, et qui elle référence.
  • Etc.

Pour peu que l’on ait une petite idée de ce qu’on recherche, il devient généralement possible de remonter jusqu’à la source des problèmes en enchainant ces commandes. Les problèmes les plus classiques ainsi que les traitements préconisés ont été classés dans 12 catégories par le Dr Schwartz.

Le docteur Schwartz attend que son assistant l'aide à enfiler ses gants.
Le docteur Schwartz attend que son assistant l’aide à enfiler ses gants.

Les fuites mémoires

  • Symptôme : Votre application se comporte correctement, mais consomme (sans raison valable) de plus en plus de mémoire, sans faire mine de vouloir en rendre, ne serait-ce qu’un peu de temps en temps.
  • Cause courante du mal : Ressources non-managées que l’on oublie de disposer, références oubliées qui empêchent la collecte de certaines instances, etc.
  • Localiser la tumeur : (pseudo-méthode) On lance la commande !DumpHeap -stat pour trouver (en regardant la taille totale occupée par les instances d’un type) quels sont les celles qui sont susceptibles de consommer abusivement la mémoire : il s’agit souvent de tableaux de bytes (buffers, images) ou de strings. On exécute ensuite la commande !DumpHeap avec le paramètre -mt pour afficher la liste détaillée des adresses d’instances d’un type donné. A partir de là, il est souvent possible de retrouver quel(s) objet(s) les maintiennent en vie et qui est responsable des instanciations à l’aide de la commande !GCRoot [adresse].

Les deadlocks

  • Symptômes : L’application se bloque, ne répond plus, mais ne consomme pas de CPU.
  • Cause courante du mal : Plusieurs threads s’interbloquent, en s’attendant mutuellement. C’est pas bien. Il parait que ça s’appelle aussi une étreinte fatale. (?)
  • Localiser la tumeur : On utilise la commande !dlk de sosex ! Il est également possible de s’en sortir en utilisant !SyncBlk, !DumpObj [adresse] et !DumpStackObjects.

Les freezes gourmands

  • Symptômes : Là encore, il se peut que l’application continue à fonctionner, mais en se bloquant anormalement longtemps à certains moments, monopolisant complètement les ressources CPU à la disposition du processus.
  • Cause courante du mal : Boucles infinies, ou presque, recherches linéaires dans des boucles, sérialisation stakhanoviste, etc.
  • Localiser la tumeur : !runaway pour trouver le thread le plus gourmand, ~[nb]s pour passer au thread impétrant numéro [nb], puis !ClrStack pour avoir la pile d’appels pour ce thread.

Ah oui, au fait, il y avait un plan, dans cette présentation. Je viens de parler de la première partie, mais il en avait une seconde.

Avec Windbg & Co. On se rend bien compte qu’il faut souvent commencer comme si on voulait pécher la baleine, pour reserrer petit à petit les mailles du filet et trouver finalement la source du/des problème(s). Cette analyse suit certains patterns assez simples à identifier ; on aimerait donc pouvoir automatiser un peu cette inspection, notamment lorsqu’on travaille sur des dumps énormes ou que l’on cherche à identifier de façon systématique les risques potentiels d’un système, par exemple.

C’est donc sur cette problématique que s’est penché Yann pour la seconde partie de la présentation. La transition n’a pas été oubliée et nous avons eu droit en guise d’interlude à un petit worst-of des langages de programmation qui font saigner les yeux : APL, J, Brainfuck, et, évidemment, le langage de script de windbg. Car s’il existe effectivement quelques moyens d’utiliser windbg programmatiquement, c’est la misère. La première solution consiste à utiliser le langage de script de windbg (ORLY?). La seconde, à passer par Powerdbg, une extension de PowerShell qui communique avec Windbg via TCP (ce dernier peut en effet passer en mode « server »). C’est mieux, mais toujours pas très sexy. Et on aime ce qui est sexy, nous, pas vrai ?

Justement ! Le dernière solution, celle de Yann, est sexy. Ca s’appelle Linqdbg, et c’est comme son nom l’indique du Linq-to-Windbg. Utilisé dans une REPL — Yann utilisait LinqPad pour sa démo — ça permet enfin de chasser le deadlock sans se tordre de douleur. C’est un projet sympa, qui pourrait rapidement séduire ceux qui n’ont pas le courage de windébéger classiquement, ou qui veulent scripter leurs analyses sans apprendre la syntaxe du 3ème langage le plus compliqué du monde (le ROI n’est pas forcément évident). Au niveau technique, Yann vous en parlera probablement mieux que moi sur son blog, mais en deux mots, il s’agit d’un provider Linq qui interagit avec Windbg via TCP, à l’instar de Powerdbg, et qui encapsule les commandes les plus courantes.

Exemple de requêtes :


var instances = from i in Linqdbg.HeapStats()
                where i.Type.IsAssignableFrom(typeof(Toto))
                orderby i.TotalSize desc
                select i;


var leaked = from i in instances
             select i.GCRoot();

C’est malin, et c’est open source : bravo Yann. Si vous parlez C#, c’est un moyen élégant d’analyser finement un programme : on bénéficie de la puissance divine du framework .NET.

En conclusion, la session était vraiment plus intéressante que ce compte-rendu. Je dirais même plus : les pauvres blagues de ce compte rendu sont là pour vous faire oublier qu’il ne sert à rien. Je vous invite donc à jeter un coup d’oeil aux slides de la présentation et à cliquer sur ces quelques liens si vous avez envie d’en apprendre plus au sujet de ce sombre outil :

Merci à Yann pour sa relecture attentive, et son remplissage de trous.

20th
JUIL

Alt.net Paris #16 : Changement de date

Posted by Julien under Rencontres Paris

Yann nous informe que pour des raisons personnelles il ne sera en mesure d’assurer sa présentation de mercredi. Celle-ci est donc déplacée à jeudi soir (23 juillet), même lieu, même heure.

Merci de vous référer au billet précédent pour les détails de l’évènement !

16th
JUIL

Alt.net Paris #16 : Déboguer dans la joie avec Windbg, par Yann Schwartz

Posted by Julien under Rencontres Paris

La 16ème édition d’Alt.net Paris sera l’occasion de découvrir les joies du débogage avec Windbg. Yann, qui présentera cette session, nous propose le petit extrait suivant :

Parce qu’on finit toujours par avoir une application en production, et parce que les bugs deviennent vraiment amusants une fois l’application dans la nature, il est utile d’avoir à disposition un outil de débogage suffisamment léger pour tourner sur un poste client – ou un serveur.
C’est le rôle de windbg, un débogueur natif bas niveau, d’un abord rugueux mais qui recèle des trésors de bonté et d’utilité, surtout quand on lui adjoint les extensions évocatrices de détresse et de promesses que sont sos et sosex (prononcée sauzècs), extensions faisant de windbg un outil de débogage et d’introspection pour applications .Net, transformant windbg en Reflector du debugging.

Nous verrons comment windbg+sos nous permet d’explorer la mémoire et les piles d’exécution d’une application .Net, comment détecter les fuites de mémoire, les deadlocks, les threads mal élevés et les assemblages malotrus. Nous regarderons aussi comment des outils de scripts permettent d’automatiser windbg, en powershell avec powerdbg et même en Linq avec Linqdobogo. Le débogage post-mortem de dumps mémoire sera également évoqué.

Cette session, pleine de rires et de chansons, ne perdra pas une si belle occasion de se pencher sur la CLR et ses entrailles.

Vous êtes donc attendus le 22 23 juillet à partir de 19h30 à l’adresse suivante :

Winwise
16 rue Gaillon,
75002 Paris


Agrandir le plan

Merci d’indiquer votre présence sur cette page !

30th
JUIN

Alt.net Paris #15 : Venez boire un verre avec Sebastien Lambla

Posted by Julien under Paris, Rencontres Paris

Comme indiqué dans le billet précédent, Greg Young ayant annulé son voyage en France pour raison de santé, la rencontre prévue initialement sur le Domain Driven Design n’aura pas lieu.

Cependant, nous vous invitons tout de même à nous rejoindre ce mercredi pour prendre un verre dans le quartier des halles. Nous aurons l’occasion d’accueillir Sébastien lambla, alias Serial Seb, qui est de passage à paris. Sébastien s’occupe d’Alt.net Londres et fait régulièrement des présentations sur des sujets tels que l’agilité ou Nhibernate. C’est aussi le père d’Open Rasta :

OpenRasta is a resource-oriented framework enabling easy development of web sites and services. OpenRasta is designed to run on .net 2.0 and above, and can coexist peacefully with your existing asp.net and WCF deployments.

Rendez-vous au Jet-lag, Mercredi 1er Juillet à partir de 19h30 :

Jet Lag
4, Rue Montmartre,
75001 Paris.


View Larger Map

Comme d’habitude, merci d’indiquer votre venue sur Doodle.

24th
JUIN

Alt.net Paris #15 : Domain Driven Design avec Greg Young !

Posted by Julien under Paris, Rencontres Paris

Edit : Malheureusement Greg a du annuler son voyage en France pour raison de santé, nous annulons donc la rencontre à grand regret. Ce n’est que partie remise!

La 14ème édition d’Alt.net Paris accueillera un invité de marque en la personne de Greg Young, en marge de l’Université des SI. Greg, qui est un speaker internationalement reconnu et membre actif d’Alt.net aux USA et au Canada, nous parlera d’un sujet qui lui tient à coeur : le Domain Driven Design.

Vous êtes attendus le 1er juillet à partir de 20h30 à l’adresse suivante :

Octo Technology
50 avenue des champs Elysées
75008 Paris.


Agrandir le plan

Merci d’indiquer votre présence sur cette page. Nous serons probablement plusieurs à nous retrouver plus tôt pour diner, les détails seront discutés directement sur le groupe google.

En attendant, les curieux pourront toujours consulter les slides de la présentation de décembre dernier sur l’implémentation du DDD.

Edit : En bonus, InfoQ vient de publier une video d‘une présentation de Greg à Qcon San Francisco 2008. Je vous la conseille vivement, c’est très instructif !

Entrepreneur Press Wordpress Theme