La transformation de Microsoft

Parmi toutes les surprises de cette année 2014, le changement de cap adopté par Microsoft doit être l’une des plus belles.
En effet, vous n’avez pas pu le rater, le nouveau PDG de Microsoft a confirmé le passage en open source du framework .NET.

Certes, la montée de Satya Nadella en tant que PDG de Microsoft a été une bouffée d’air frais pour l’entreprise, qui souffrait encore trop d’une mauvaise réputation auprès de la communauté des développeurs et avait pris du retard sur certains aspects, en particulier si l’on considère les périphériques mobiles.

Dans ce nouveau chapitre,  Microsoft semble résolu à effacer tous ses péchés.

Lire la suite

Une pincée de CQRS avec RavenDB

Dans de précédents articles, nous avons abordé ce qu’est CQRS et quels avantages nous pouvions tirer de la séparation entre l’écriture et la lecture dans une application.
Il n’est cependant pas nécessaire d’avoir une architecture complexe pour en bénéficier : on peut parfaitement commencer par baser ses interfaces de consultation sur des facilités offertes par son système de persistance. Par exemple, on utilisera les vues proposées par les SGBD relationnels pour simplifier au maximum le mapping entre la base de données et les objets à afficher.
Certaines bases de données NoSql proposent des fonctionnalités très poussées (notamment du Map/Reduce) qui peuvent être très pratique. Dans cet article, nous allons nous intéresser de plus près à une base documentaire, RavenDB, et voir comment l’utiliser pour aborder certains préceptes de CQRS à moindre coût en environnement .NET

RavenDB

Introduction à la reconnaissance faciale

La reconnaissance faciale est un des problèmes les plus étudiés de l’apprentissage automatique. Grâce à sa popularité ce problème a été bien exploré pendant les 50 dernières années.

Récemment la reconnaissance faciale attire de plus en plus d’attention.

La sécurité reste le domaine d’application principal. Dans ce domaine la reconnaissance de visage est responsable de l’identification et de l’authentification. Un bon exemple de cet usage est l’aéroport du Francfort qui utilise la reconnaissance pour automatiser le contrôle des passagers.

Un autre exemple peut être l’analyse des vidéos capturées par les systèmes de caméras externes gérés par les grandes villes. Les suspects peuvent être identifiés après l’analyse de la vidéo acquise.

La reconnaissance faciale peut aussi être utilisée juste pour accélérer le processus d’identification. On peut imaginer un système qui va identifier un client quand il entre dans l’agence de la banque. Le conseiller peut ensuite le recevoir en ayant préparé son dossier et le saluer par son nom.

Les agences de publicité sont en train de développer des panneaux d’affichage intelligents, qui grâce à la reconnaissance du visage de la personne qui passe adaptent le contenu affiché.

Google et Facebook ont implémenté des algorithmes pour identifier les personnes dans leurs bases de données de photos. D’autres applications, telles que Face.com proposent la recherche dans la base de données de Facebook. On peut facilement chercher toutes les photos où figurent ensemble nos deux meilleurs amies.

La nouveauté dans la reconnaissance faciale arrive grâce au développement des nouvelles caméras de type 3D. Ces caméras obtiennent de meilleurs résultats que les caméras classiques, parce qu’elles acquièrent une image tridimensionnelle de chaque visage. Elles sont ensuite capables de résoudre des problèmes spécifiques à ce domaine (l’illumination et la séparation du visage et du fond). Vous pouvez regarder l’exemple de Kinect, qui reconnaît la bonne personne dès qu’elle passe devant la caméra.

Si vous êtes intéressé, vous pouvez consulter la suite de cet article rédigée en anglais.

Développement parallèle pour des machines multi-coeur en .NET 4.0

Avec l’arrivée massive des processeurs multi-cœur, le parallélisme peut devenir une nécessité pour une application afin exploiter toute la puissance disponible d’une machine proposant ce type d’architecture. En effet, la loi de Moore, vérifiée depuis 1973, se heurte à une autre loi, celle des rendements décroissants.  Le nombre de transistors à ajouter pour obtenir un gain de performance donné devient de plus en plus important, empêchant les fondeurs de continuer à augmenter la fréquence d’horloge des processeurs. Pour contourner ce problème, ils favorisent les architectures multi-cœurs. Le parallélisme peut être très impactant dans le développement d’une application, celle-ci devant être écrite et adaptée pour tirer parti du hardware.

Qu’est-ce que le parallélisme sur une architecture multi-cœur? C’est l’emploi des capacités de calculs en simultané dans un cadre déterministe. Cela consiste à prendre une tâche, la diviser en un ensemble de sous-tâches indépendantes à exécuter simultanément, le travail étant réparti sur plusieurs cœurs (la notion de concurrence, quant à elle traite de l’allocation d’une même ressource CPU pour plusieurs processus, chacun disposant à son tour d’un quantum de temps de calcul).

Dans cet article, je vais examiner comment il peut être relativement facile d’implémenter la programmation parallèle dans une application, en utilisant le Framework  .NET 4.0 et sa librairie TPL (Task Programming Library).

Lire la suite

Déployer les applications .NET sur cloud

Un de nos derniers projet de recherche et développement a été le développement d’une application de banque en ligne, qui nous a permis d’expérimenter les dernières tendances de développement sur la plateforme .NET.

Quand est venu le moment de déployer l’application, nous n’avions pas de machine disponible. Mais attendez, de nos jours, lorsque l’on a besoin de déployer une application, on peux simplement la publier sur le cloud le plus proche !

Evidemment, nous avons choisi la plateforme Azure. La question était juste de savoir si un tel déploiement allait poser problème ? Va t-il falloir adapter notre application ? Combien de temps cela va t-il prendre ?

Finalement le processus de modification a été beaucoup moins lourd que nous l’avions imaginé : en 30 minute, nous avons été capable de préparer les changements nécessaires et publier l’application sur le cloud.

Mais Azure est beaucoup plus qu’une simple plateforme pour les applications web. Il offre aussi plusieurs types de stockage. l’un d’entre eux étant Azure Blob Storage. Après le déploiement, nous avons décidé d’utiliser Azure Blob Storage pour le développement d’une nouvelle fonctionnalité présente dans notre to-do list.

Cet article est un retour d’expérience sur la plateforme Azure. Il est divisé en deux parties.

La première partie décrit comment porter une application .NET sur la plateforme Azure.
La deuxième partie va montrer comment utiliser Azure Blob Storage pour développer un simple coffre fort électronique.

La suite de l’article a été rédigé en anglais, vous pouvez consulter la première partie ici et la deuxième ici.

Sonar, l’outil qui manquait à l’usine de développement .NET

Sonar (www.sonarsource.org) est un outil de reporting sur la qualité des projets informatique. Bien qu’à l’origine fait pour le Java, la communauté Open Source a permis l’intégration de Sonar avec d’autre langages : cobol, flex, php, c++ et maintenant .NET.

L’objet de cet article est de vous montrer ce que peut apporter Sonar pour un projet informatique et montrer quelle est sa place dans l’univers .NET. Lire la suite

Du TDD pour Silverlight aussi !

A moins de s’être limité à dessiner des ronds et des carrés avec Silverlight, vous avez sans doute déjà tenté d’utiliser un des templates de projets du Silverlight Toolkit permettant de faire des tests unitaires pour vos applications RIA! Plein de bonne volonté, vous vous êtes heurtés aux multiples inconvénients de cette solution :

  • Framework de tests spécifique à Silverlight
  • Obligation de lancer une application « conteneur » pour lancer vos tests
  • Usabilité plus que discutable de cette même application
  • Impossibilité d’utiliser une métrique comme la couverture de code
  • et j’en passe…

N’abandonnez pas encore ! Je vous proposer ici une solution pour venir à bout de ces limitations… plus d’ excuses, vous pourrez tout tester …

la suite par ici en anglais

 

Mes bonnes pratiques en PowerShell v2

Voici plus d’un an maintenant que je réalise régulièrement des scripts PowerShell en tout genre.
Dernièrement j’ai pu remarquer que j’utilisais et améliorais continuellement certaines pratiques qui me facilitaient aussi bien le développement de scripts PowerShell que leur correction ou évolution.

Dans cet article (en anglais), je vous présente ainsi ces « bonnes pratiques » que j’ai pu identifier avec le temps.
La suite ici.