Revue du web du 15 mars

by matthieu 3/14/2010 11:00:00 PM

Les tweets de la semaine

 http://twitter.com/gpoune/statuses/10182612504 ah le monde déconnecté :) la consultation de ce document sur la gestion viewstate en ASP.NET est en soit un rappel des difficultés du monde web

 http://twitter.com/marcjohnson/statuses/10190244953 QCon a toujours eu une bonne réputation, on en reparle dans un instant

 http://twitter.com/TigerHasse/statuses/10361767261 les nouveaux jouets pour architectes dans Visual Studio 2010

La question Stackoverflow

 http://stackoverflow.com/questions/2432281/get-sum-of-two-columns-in-one-linq-query On est toujours étonné par la puissance de Linq pour ces petites requêtes de la vie de tous les jours, on en serait où si on avait pas l’opérateur FirstOrDefault() ? La réponse la plus adaptée utilise un opérateur peu utilisé : le groupby.

Actualités Microsoft 

Après avoir lancé son offre commerciale autour des technologies “cloud” sous le nom Azure au mois de janvier dernier, Microsoft la complète maintenant avec une offre “serveur d’application”: Azure App Fabric. Cette dernière vient rejoindre Windows Azure (offre “computing” simple avec des rôles web et/ou services et un stockage non relationnel) et SQL Azure (base de données relationelle).

AppFabric se décompose en deux grandes fonctionnalités :

Un Bus de services pour permettre à des applications d’entreprises (souvent derrière des pare-feux) de communiquer via Azure :

diagramme ServiceBus

et un composant de gestion d’identité ou fédération et y associer des règles d’accès :

AccessControl

On trouvera aussi les prix associés dans ce billet. Un SDK est publié.

Actualités “Alt.NET”

QCon est une conférence (une édition à Londres et l’autre en Novembre aux USA) sur le développement informatique organisée par InfoQ, un site d’ínformations sur le monde de l’informatique de l’entreprise (un theserverside.com des années 2000 pour les plus anciens d’entre nous). Ce qui distingue QCon des autres conférences ce sont  la qualité des présentateurs et les sujets sur des technologies, méthodes innovante et/ou sur des questions d’architectures peu discutées autre part. On y trouve des classiques Robert C. Martin mais aussi des sessions sur des architecture atypiques comme Skype ou Facebook,  ou des technologies en particulier (comme .NET). La liste des tracks en elle-même est assez alléchante.

De l’autre côté

http://highscalability.com/blog/2010/2/8/how-farmville-scales-to-harvest-75-million-players-a-month.html

Vous avez tous vu dans votre flux de nouvelles sur Facebook ces messages d’amis qui ont eu telle ou telle récompense dans le jeu FarmVille. Luke Rajlich réponds ici à quelques questions sur la façon dont on rend disponible une application web utilisée par 75 millions d’utilisateurs. Le jeu a un ratio de lecture/écriture très différents d’une application web classique où les utilisateurs passent plus de temps à lire (site de journal par exemple) qu’à écrire (laisser un commentaire). On y apprend que l’utilisation de cache est primordiale (classique dans ce genre d’architecture mais ici ils doivent aussi mettre en cache les données de Facebook), de considére chaque composant (Facebook, les SGBD, le serveur de cache) comme un point de latence et de pouvoir les isoler en cas d’incident.

Un projet

Les bases de données relationelles ont la vie dure en ce moment (voir le mouvement NoSQL) mais est-ce dire que c’est au bénéfice des bases de données orientées objets ? Un de systèmes OODBMS qui connaît un certain succès est db4o de Versant. La version .NET fournie un plugin d’administration pour Visual Studio 2005 et 2008 :

la manager db4o dans visual studio

Le moteur peut s’utiliser en local (fichier) ou pour une connection à un serveur :

IObjectContainer db = 
Db4oEmbedded.OpenFile(Db4oEmbedded.NewConfiguration(), YapFileName);

IObjectContainer sera notre UnitOfWork pour dialoguer avec la base de données (il fournit ainsi les méthodes pour le Commit ou le RollBback) pour  :

- Insérer des données :

Pilot pilot1 = new Pilot("Michael Schumacher", 100);
db.Store(pilot1);

- Retrouver des données :

IList<Pilot> result = 
        db.Query<Pilot>(p => p.Name == "Michael Schumacher");

- Mettre à jour :

IObjectSet result = db.QueryByExample(new Pilot("Michael Schumacher", 0));
var found = (Pilot)result.Next();
found.AddPoints(11);
db.Store(found);

Les classes sont des POCOS.

Un founisseur Linq existe (bien qu’il souffre de certaines limitations du fait qu’il traduit les requêtes en un langage interne, SODA) :

IEnumerable<Pilot> result = from Pilot p in db
                            where p.Name.StartsWith("Michael")
                            select p;

Pour gérer la profondeur en mise à jour et en lecture (opérations en cascade et lazy-loading) on doit modifier la configuration par défaut qui ne cascade pas les mises à jour sur les types référence :

IEmbeddedConfiguration config = Db4oEmbedded.NewConfiguration();
config.Common.ObjectClass(typeof(Car)).CascadeOnUpdate(true);

En plus des propriétés de types primitifs (string, int etc.), les références sur Car seront mises à jours (Pilot par exemple). Pour la lecture la profondeur par défaut est de 5 niveau, on peut modifier ce paramétrage : c’est le concept d’Activation dans db4o. Pour rendre systématique ce processus vos classes doivent implémenter une interface (IActivatable) ou vous devez activer faire cette décoration au moment de la compilation via une tâche MSBuild ou en utilisant l’outil fourni par db4o.

Les concepts objet comme l’héritage sont bien sûr supportés. Il existe un langage bas niveau pour requêter (SODA) mais il est assez verbeux et repose beaucoup sur les chaînes de caractères. On utilisera plutôt Linq ou le langage natif de requête (en plus du requêtage par exemple déjà vu ) :

var result = db.Query<Pilot>(pilot => pilot.Points > 99
		                  && pilot.Points < 199
		                  || pilot.Name == "Rubens Barrichello");

 

Une version silverlight existe en beta. On pourra consulter le compte github de James Hicks pour avoir des exemples d’applications utilisant db40 : une abstraction de db4o à travers le concept de Session, une application avec une implémentation du pattern CQRS-Event Sourcing et l’utilisation de db4o avec NServiceBus.

Categories : coding Tags: | Permalink | commentsComments (0) | Post RSSRSS comment feed

Revue du web du 8 Mars

by matthieu 3/7/2010 7:00:00 PM

Les tweets de la semaine

 http://twitter.com/rcravens/status/9824210272 Hudson est un serveur d’intégration continu (et populaire), si vos poches ne sont pas assez profondes pour TFS, Hudson peut être une bonne alternative.

http://twitter.com/craighead/statuses/9837013687 Java vs C#, maintenant en version Robots

http://twitter.com/UdiDahan/status/9858485324 on en parlait dans notre première revue du web : NServiceBus passe en version 2

http://twitter.com/gruuf/statuses/10073663444 un sondage autour des frameworks d’inversion de contôle / injection de dépendances dans le monde .NET

La question Stackoverflow

 http://serverfault.com/questions/45516/recommended-logparser-queries-for-iis-monitoring Nous allons faire un petit tour sur serverfault.com cette semaine. Ce dernier est la première spin-off de SO (il existe une version en marque blanche même). On y trouve des questions sur la gestion des systèmes informatiques en général : installation serveur, les systèmes d’exploitation, les bases de données etc. La question de la semaine énumère des requêtes possibles contre les fichiers de log de IIS : fichier le plus demandé, user-agent le plus présent etc. Nécessaire quand on a fini sa belle application et qu’on la rend disponible sur le grand Interweb.

Actualités Microsoft 

Les MVP se réunissent chaque année sur le campus de Microsoft, dans cet article Dzone fait un résumé. Ce qui est toujours surprenant c’est que cet évènement réuni des centaines de participants mais qui sont tous rendu nuets par un accord de non divulgation (les fameux “NDA”). En attendant MIX approche et Microsoft confirme du bout des lèvres que la migration vers Windows Phone 7 ne sera pas possible pour les téléphones actuels. On pourra consulter la liste des sessions consacrées au nouveau système d’exploitation.

Actualités “Alt.NET”

Le groupe Alt.net virtual européen organise un session spéciale  le 6 avril 2010 sur le mouvement “Software Craftsmanship”avec du beau monde. On pourra aussi écouter la série de podcast “Ignite your coding” organisée par le groupe d’évangélistes de Microsoft Canada dont le premier invité est Andy Hunt, co-auteur du livre The Pragmatic Programmer.

De l’autre côté

Flash, la descente aux enfers continue. L’enfant chéri des années 2000 n’en finit plus d’être traité comme le nouveau vilain. Après avoir révolutionné l’accès aux contenus vidéos puis connu une percée significative dans le monde des applications d’entreprise avec Flex, la technologie est maintenant vue comme un handicap. Tout cela provient du succès de l’íPhone qui a accentué les défauts du runtime propriétaire. Il est  ironique de voir Apple qui a dû founir un SDK natif car les applications web n’étaient pas suffisantes faire “cause commune”avec les défenseurs du standard HTML contre Flash. The Register rapporte que Virgin America abondonne Flash pour HTML dans ses sites internet (70 % du revenu). Il est intéressant toutefois de remarquer que Flash restera utilisé dans les systèmes comme les kiosques “Touch Screen ”dans les aéroports. Finalement on revient aux basiques : un internet standard pour du contenu à destination d’appareils multiples (navigateurs différents avec des plateforme différentes) et des frameworks plus puissants pour des applications en environment plus contrôlé.

Un projet

Shazzam est un outil pour générer des Pixels Shaders. Le code source est disponible sur codeplex. Il existe des bibliothèques d’effets 3D existants mais cet outil vous permet de générer le code pour vos propres créations. Basé sur HLSL (High Level Shading Language) Microsoft vous permet d’ajouter des directives de transformations de pixels et un compilateur DirectX permet de générer le code machine nécessaire. Il suffit d’un wrapper C# pour les utiliser ensuite dans vos applications. Après avoir installé l’utilitaire et le SDK DirectX vous pouvez modfiier le code des effets via le langage HSLSL :

HLSL

Ici l’effet bloom est appliqué sur une image de test :

image

Le code C# généré expose les Dependecy Properties qui vont bien pour paramétrer les effets :

ShaderGenerated

Categories : coding Tags: | Permalink | commentsComments (0) | Post RSSRSS comment feed

Starbucked: A Double Tall Tale of Caffeine, Commerce, and Culture - Taylor Clark

by matthieu 3/6/2010 9:40:57 PM

couverture du livre

Avant de partir de France il y a 10 mois maintenant, Starbucks n’était pas encore arrivé à Toulouse (4ème ville et wannabe 3ème d’après certaines projections) mais était déjà bien présent à Paris. De nos nombreux voyages et lectures sur l’Amérique du nord je savais que Starbucks était un phénomène de société et presque une institution. On pourrait même dire que la marque était un des symboles des années 90 et 2000 et de ses excès cette période durant laquelle on pouvait se payer un café à 4 dollars.

Le journaliste Taylor Clark a écrit un livre très précis sur les origines de l’entreprise. Les 3 fondateurs ne sont plus présents car ils ne croyaient pas en la stratégie Howard Schultz leur directeur marketing : vendre du café aux américains. En effet les États-Unis avaient perdu lors du 20ème siècle la culture du café qui s’était développée en réaction, en partie, au maîtres anglais. La seconde guerre mondiale et l’apparition du café instantané chez les GI a fini de casser l’image et le goût. Il y avait aussi une question marketing : le café des fameux dinners où l’on vous sert du café à volonté ne pouvait voir son prix augmenté : 99 cents est un prix trop symbolique. Les torréfacteurs ont alors baissé la qualité de façon incrémentale et de cette façon la café est devenu inbuvable.

Il y a toujours eu une résistance comme Peet fondée par Alfred Peet en Californie, mais elle restait confinée à la vente de café aux particuliers qui le préparait alors à la maison. Starbucks a été créée dans cette même optique dans la région  Seattle dans le nord-ouest des USA. Howard Schultz a rejoint la compagnie après avoir travaillé comme directeur marketing dans une compagnie de vente d’accessoires de cuisine et a remarqué les commandes particulières de Starbucks. Mais après un voyage en Italie et avoir connu ses bars à expresso il est convaincu que le succès réside dans la vente du produit final aux particulier en procurant une expérience particulière.

L’auteur nous décrit très bien l’expansion de l’entreprise de quelques dizaines de restaurants vers la chaîne de 10.000 maintenant (aux USA). Il y a bien sûr le fait que Starbucks veut le meilleur café : il est acheteur des meilleurs grains. C’est ici qu’on apprend beaucoup de choses sur les différents origines et méthodes de torréfactions, le chapitre sur la visite des usines Illy en Italie est fabuleux. Ensuite pour financer la construction des magasins il fait appel à un architecte qui arrive à trouver une vingtaine de design différents pour réduire les coûts de chaque nouvelle construction. Enfin le département chargé des acquisitions est un des plus secrets, n’est-ce pas Starbucks qui a ouvert le premier un magasin (à Vancouver) en face d’un autre sans phagocyter sa clientèle ?

L’entreprise n’est pas sans controverse bien sûr : après un tel succès, l’entreprise est devenue la cible de groupes anti-mondialisation, anticapitaliste. L’auteur dissèque chacune des affirmations et apporte un éclairage intéressant sur chacune d’elle. Par exemple le fait que Starbucks tue les petits cafés indépendants. En fait depuis que Starbucks est arrivé, le nombre et le chiffre d’affaires des cafés a explosé. Pourquoi ? ils n’existaient pas avant et Starbucks ayant (re)rendu populaire le café, les gens osent s’aventurer dans d’autres lieux quand ils ont goûté au café chez Starbucks. Starbucks a les défauts d’une grande entreprise mais ils sont loin d’être aussi graves, Starbucks n’est pas un groupe pétrolier ou Wal-Mart. Mais l’auteur dans sa conclusion met le doigt sur le défaut inhérent de ce genre de chaîne où le fondateur croit en son produit et veut offrir la même qualité partout où vous alliez : l’uniformité. Il prend en exemple sa petite ville d’Oregon où il existe aussi bien des Starbucks que des cafés “Pop and Mom” : les touristes vont vers le Starbucks car ils cherchent inconsciemment la familiarité. A être trop familier on perd de son attrait donc. Starbucks connaît des difficultés: la crise l’a obligé à vendre 10% de ses magasins et Howard Schultz a dû reprendre le poste de PDG. Son défi : que Starbucks ne deviennent pas McDonalds.

Categories : readings Tags: | Permalink | commentsComments (0) | Post RSSRSS comment feed

Revue du Web du 1er Mars

by matthieu 2/28/2010 8:00:00 PM

Les tweets de la semaine

 http://twitter.com/loiane/statuses/9694669388 Travailler pour la NASA en programmant du Silverlight.

http://twitter.com/veryfancy/statuses/9582184256 On utilise régulièrement System.Uri sans vraiment y faire attention, voici un petit rappel de son contenu

http://twitter.com/dataartist/statuses/9575476761 une requête Linq peut compliquer le code

La question Stackoverflow

 http://stackoverflow.com/questions/2346394/should-i-use-byte-or-int Pouquoi utilsier un type int plutôt qu’un byte (ou un short) ? Un dilemme entre performance (ou sur-optimisation) et sémantique.

Actualités Microsoft 

Avec la dernière version de Visual Studio (2010 RC) on peut dire que le développement WPF/Silverlight est devenu une expérience plaisante. Le mode prévisualisation fonctionne pour les deux technologies et l’intellisense autour des expressions de binding a été améliorée. Mais une des nouveautés intéressantes réside dans le support au design time des types d’objets bindés aux contrôles. Les propriétés du namespace d: permettent de spécifier des valeurs ignorées au moment de la compilation et donc du runtime. On les connaît déjà pour la hauteur et la largeur des UserControl. Karl Shifflett introduit d:DataContext et d:DesignInstance qui permet de spécifier son type pour ensuite voir les propriétés dans les boîtes de dialogue de databindig.

En parlant de Silverlight, la prochaine que vous en faites une démo et que tout le monde baille, montrer cette vidéo de Bing à la conférence TED par Blaise Aguera y Arcas (aux alentours de 4:45) :

image de la vidéo montrant un prototype de réalité augmentée avec Visual Studio

Oui c’est bien une “House View” à l’intérieur d’un bâtiment avec un flux direct de vidéo en sur-impression. Street View est tellement 1996.

Actualités “Alt.NET”

On connaît tous NHibernate ce framwork de mapping objet-relationnel qui semble être là depuis toujours et même avant si on considère sa version Java. Il fait aussi parti des projets phares dans le monde .NET car il est un des premiers  projets open source ayant un grand succès. Son développement a été financé dans le passé par  la passion de certains développeurs, des entreprises ont aussi donné du temps de développent par exemple sur le founisseur Linq.

Voux pouvez faire un don directement en cliquant sur ce lien :

Click here to lend your support to: NHibernate and make a donation at www.pledgie.com !

De l’autre côté

Pour envoyer des messages entre systèmes on connaît MSMQ (Microsoft Message Queuing). Un des équivalents dans le monde Java est JMS (Java Message Service), un standard implémenté par différents produits dont les plus connus sont IBM MQ, TibCo. Dans ce billet Xebia nous introduit à AMQP (Advanced Message Queuing Protocol). Ce protocole initié par JP Morgan se concentre sur la performance et propose les différents cas d’utilisation d’un systèmes de messages (Store and Forward, Point to Point etc). Les deux implémentations connues sont RabbitMQ en Erlang et  OpenAMQ en C++. La spécification 1.0 est attendue pour cette année et on apprend aussi que Microsoft a collaboré avec QPid (projet Apache autour de AMQP).

Un projet 

Enterprise Library va bientôt connaître une nouvelle version, la beta de la version 5 est déjà disponible et une beta 2 doit sortir le 15 mars pour une version finale attendue juste après la sortie de Visual Studio 2010. Dans le framework on trouve Unity 2, le framework d’injection des dépendances de Microsoft. Comme pour la version précédente il existe deux modes : par fichier de configuration ou par code. Le premier offre maintenant un outil (en WPF BTW):

outil de configuration de UNity

ajout d'un mapping

Mais Unity offre aussi une API fluent :

var container = new UnityContainer();
container.RegisterType<IRepository<>, Repository<>()
.RegisterType<IContactRepository, ContactRepository>();
Avec de nouvelles méthodes comme IsRegistered pour vérifier l’existance d’un mapping,

Les deux nouveaux lifetime managers (les objets qui déclarent quand instancier ou réutiliser une instance au moment de la résolution du type) sont HierarchicalifetimeManager (les containes enfants ne partagent pas les instances des containers parents qui sont singleton) et PerResolveLifetimeManager (même instance dans un graphe donné : mon IRepository est utilisé comme propriété à deux endroits différents dans deux objets liés à une instance construite par Unity, j’aurai la même référence pour une résolution).

Categories : coding Tags: | Permalink | commentsComments (0) | Post RSSRSS comment feed

Maison

by matthieu 2/28/2010 7:26:00 AM

IMG_1468, originally uploaded by MatthieuGD.

 

Categories : photo Tags: | Permalink | commentsComments (0) | Post RSSRSS comment feed

Nuit Blanche - Montréal

by matthieu 2/27/2010 11:16:00 PM

Nuit Blanche

 

Nuit Blanche

Categories : photo Tags: | Permalink | commentsComments (0) | Post RSSRSS comment feed

gants 009

by matthieu 2/22/2010 9:03:00 AM

gants 009, première mise en ligne par MatthieuGD.

 

Categories : photo Tags: | Permalink | commentsComments (0) | Post RSSRSS comment feed

Metro

by matthieu 2/21/2010 6:53:00 AM

Metro, première mise en ligne par MatthieuGD.

 

Categories : photo Tags: | Permalink | commentsComments (0) | Post RSSRSS comment feed

La neige en a pas fini avec nous

by matthieu 2/19/2010 10:21:00 PM

Jusqu’au 16 février Montréal a reçu 109.4 cm de neige au lieu des 155 cm de la normale saisonnière. On était donc content de n’avoir connu qu’une tempête pour le moment, espérant secrétement que ce premier hiver serait presque terminé tout en sachant bien sûr qu’à tout moment la météo pouvait nous contredire. La semaine prochaine s’annonce en effet comme une grosse baffe de rappel :)

Neige_previsions

Et déjà ce matin le 1cm prévu semble déjà bien dépassé :

 

le bruit de fond c'est une cafetière :)

Categories : Tags: | Permalink | commentsComments (1) | Post RSSRSS comment feed

Revue du web du 15 février

by matthieu 2/14/2010 10:41:00 PM

Les tweets de la semaine

http://twitter.com/tormodfj/statuses/8900636543 une nouvelle version de l’éditeur de code est arrivée, non non, ce n’est pas ce que vous pensez

http://twitter.com/darthpanda/statuses/8905432346 une liste de méthodes d’extension pour toutes les situations de la vie

http://twitter.com/ManningBooks/statuses/8912372298 Un article d’introduction sur l’intégration continue en .NET par les auteurs d’un livre qui sort prochainement sur le sujet

La question Stackoverflow

http://stackoverflow.com/questions/2237275/what-does-default-keyword-mean-in-c Un peu d’humour aujourd’hui : cela part mal on dirait pour cet utilisateur de Visual Studio.

Actualités Microsoft 

Depuis la semaine dernière les rumeurs les plus folles courent sur la (très attendue) prochaine version de Windows Mobile : Windows Phone Series 7. Dans ce billet on trouve quelques hypothèses dont un SDK basé sur Silvelright version mobile (un mix de 3 et 4), une version de Visual Studio Express dédiée et la fin du multitasking. On en sera sans doute plus au cours de la semaine avec la conférence Mobile Wolrd Congress qui se tient à Barcelone.

Actualités “Alt.NET”

 GIT est en passe de supplanter Subversion le système de gestion de configuration alternatif au composant dédíé de TFS. Dans un webcast du groupe Europe Virtual Alt.NET James Gregory nous parle de l’utilisation de l’outil. On pourra consulter l’excellent add-in GIT Extensions pour les utilisateurs de Visual Studio.

De l’autre côté

La version 3.2 d’Open Office est sortie. Est-ce devenue une anomalie dans un monde de plus en plus tourné vers les applications web (Google Docs, la future version web d’Office, Zoho…). Certains regrettent aussi la communuaté de développeurs peu dynamique, le fait que C++ soit le langage principal n’a pas joué en sa faveur (bien qu’Apple soit arrivé à rendre sexy le développement avec pointeur, mais Open Office n’est pas un iPhone). Le récent rachat de Sun par Oracle a fait beaucoup coulé d’encre à cause de Mysql mais peu sur Open Office. Peut-on s’attendre à une mort lente ?

Un projet 

 MongoDB est un système de stockage orienté document. Ces documents sont stockés au format binaire et les requêtes utilisent un langage similaire au JSON pour dialoguer avec le système de base de données. Contrairement aux systèmes relationnels les SGBD document n’ont pas de structure fixe, deux documents peuvent partager un certain nombre de champs mais ce n’est pas obligatoire.

Dans ces deux billets Daniel Wertheim nous montre comment utiliser MongoDB dans un environnment C#. Après télécharger MongoDB la console nous permet d’ajouter des données :

db.Notes.save({ Title: "The first document", Body: "My first document stored in MongoDB.",

Tags: ["MongoDB", "Getting started"]})

le requêtage :

db.Notes.find({Tags : "Getting started"})

Il existe un pilote c# pour interagir avec la base de données à travers une interface JSON (avec des litérales ou en sérialisant des objets vers JSON) :

var firstNote = new Note {
	Title = "First note using Serialization",
	Tags = new string[] { "MongoDB", "Getting started" },
	Body = "Some nice text." };
//Convert Note to Document and insert it
var firstNoteDocument = json.DocumentFrom(firstNote);
notes.Insert(firstNoteDocument);

et le requêtage :

var noteDocument = notes.FindOne(new Document { { "Tags", MongoDBNull.Value } });
25
var note = json.ObjectFrom<Note>(noteDocument);
Daniel montre ensuite l’utilisation de classes proxy générées avec Castle pour simplifier la sérialisation. 

Auto-promotion

nVentive organise une série de bootcamps sur des sujets très variés comme WPF, TDD ou encore NHibernate.Tous ces ateliers sont orientés développement d’applications d’affaires et font une large place aux labs.

Voici une liste des formations et leur description plus complète.

Categories : coding Tags: | Permalink | commentsComments (0) | Post RSSRSS comment feed