Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Avant tout : bonne année à tous !

Quoi de neuf ?

Pas un post depuis nov. 2007 : Après plus de deux ans d’inactivité, qui correspondaient à mes deux années de classes préparatoires (plus ou moins), j’ai finalement intégré l’Ecole Centrale de Nantes.

Bon, évidemment, c’est une école généraliste, donc l’industrie c’est la vie, l’informatique s’y réduit à l’usage d’un client mail, et Microsoft, c’est le diable :-) mais c’est comme tout, on s’y fait…

Bref, tout ça me laisse à nouveau plein de temps à consacrer à tout un tas d’autres choses…

A venir sur ce blog

Au programme : du développement d’applications multitouch pour Windows 7, et en particulier avec WPF4 !

En effet je me suis auto-offert pour Noël un écran multitouch 23” (caprice de geek sans doute…) ! J’ai donc aussi la joie de tester l’usage d’un écran multitouch au jour le jour. Ce n’est pas toujours une joie d’ailleurs, mais je garde ça pour la suite…

A bientôt sur ce blog !

Antoine Gourlay (aka Nurgle)

WPF Bootcamp qu'est ce que c'est ?

Les webcasts complets d'une session de trois jours dédiés à WPF (en anglais) dans le cadre du MIX University, disponibles en ligne gratuitement à travers un player Silverlight ou en téléchargement, c'est ce que nous annonce Tim Sneath sur son blog !

Avec entre autres au programme, WPF lui-même bien sûr, mais aussi Expression Blend, des Labs, des exemples concrets d'utilisation de WPF ; on y aborde la 3D, les questions de performances, d'interopérabilité avec les WinForms, de Databinding, de Layout, Controles, Styles, Templates… la liste est longue ! Le tout avec d'excellents intervenants qui connaissent parfaitement leur sujet, je vous laisse juger J.

Bref des heures et des heures de véritables cours détaillés sur WPF ! On a plus d'excuse pour ne rien y comprendre :D

Seul chose nécessaire : comprendre la langue de Shakespeare !

WPF Bootcamp

 

Bon visionnage !

Nurgle

ASP.NET 2.0 permet nativement l'exécution asynchrone de certains traitements dans les pages, mais cette fonctionnalité est rarement connu, ou alors considérée comme « peu utile » alors qu'elle est dans certains cas très utile et permet parfois d'éviter des problèmes de performances.

Déjà, pourquoi vouloir de l'asynchrone dans une page web ?

En effet ASP.NET se sert de tous les threads disponibles de son pool de thread pour traiter les requêtes entrantes. Chaque requête est déjà traitée par un thread différent, il y donc déjà une forme d'"asynchrone" (heureusement !). Pour bien voir l'intérêt considérons un exemple : Une page faisant une "grosse" requête vers... une ressource quelconque (SGBD, webservice, accès au réseau, ou un simple "tracert"). Cette page va mettre quelques milisecondes à s'exécuter en elle-même, et par exemple 2 secondes à attendre la réponse de son traitement. Cette page monopolise ainsi un thread pendant un peu plus de 2s alors que le thread est "inactif" pendant la majorité du temps !

D'où l'intérêt de libérer le thread en attendant la réponse du traitement et de laisser ainsi ASP.NET "donner" ce thread à d'autres pages plus légères (=plus rapides).

Comment exécuter une page de manière asynchrone ?

  1. Ajouter une directive Async="true" dans mapage.aspx :

<% @ Page Language="C#" ... Async="true" ... %>

Cette directive indique simplement au compilateur de faire implémenter par la page IHttpAsyncHandler au lieu de IHttpHandler. Cette interface permet à la page d'exposer des fonctionnalités de traitements asynchrones.

  1. Déclarer, par exemple dans le Page_Load (mais au plus tard dans le Pre_Render !), sa nouvelle « Tâche » :

protected void Page_Load(object sender, EventArgs e)

{

// création d'une nouvelle tâche

// en lui passant les 3 handlers possible

PageAsyncTask task = new PageAsyncTask(new BeginEventHandler(BeginAsyncTask),

new EndEventHandler(EndAsyncTask), new EndEventHandler(TimeoutAsyncTask), null);

// enregistrement de la tâche

Page.RegisterAsyncTask(task);

}

 

IAsyncResult BeginAsyncTask(object sender, EventArgs e,

AsyncCallback cb, object state)

{

// operation longue à réaliser (on va dire qu'il y a 10 000 000 d'utilisateurs en base :p)

_maConnection = new SqlConnection(

@"Data Source=.\SQLExpress;Integrated Security=true;Async=true;AttachDbFilename=C:\mydb.mdf;User Instance=true");

_maConnection.Open();

_maCommand = new SqlCommand(

"SELECT * FROM Users", _connection);

return _command.BeginExecuteReader(cb, state);

 

}

 

void EndAsyncTask(IAsyncResult ar)

{

// affichage des résultats :

_monRepeater.DataSource = _maCommand.EndExecuteReader(ar);

_monRepeater.DataBind();

}

 

void TimeoutAsyncTask(IAsyncResult ar)

{

// timeout !

_monLabel.Text = "Erreur !!";

}

Attention à bien ajouter « Async=true » à la ConnectionString. Ce nouveau paramètre propre à ADO.NET 2 permet de spécifier qu'il s'agit d'un appel asynchrone et permet dans l'exemple d'utiliser les méthodes asynchrones BeginExecuteReader et EndExecuteReader.

On remarquera aussi la présence d'une fonction se déclenchant lors du TimeOut de la tâche. Ce TimeOut (en secondes) peut être spécifié par le code ou dans la directive Page :

<% @ Page Language="C#" Async="true" AsyncTimeout="20" ... %>

Ou dans le web.config :

< system.web >

< pages asyncTimeout ="20" />

</ system.web >

A noter cependant qu'on ne peut pas le spécifier pour une tâche précise, mais seulement pour toutes les tâches d'une page et/ou de tout un site, et que sa valeur par défaut est de… 45 secondes !

Un rapide résumé de ce qu'il se passe exactement lors de l'exécution de la requête :

  1. Un premier thread est donné à la requête. La page est traitée en entier jusqu'au Page_PreRenderComplete (juste avant).
  2. La page liste tous les tâches et les laisse les une après les autres envoyer leur requête asynchrone, puis elle rend le thread au pool ASP.NET.
  3. La/les requête(s) sont en train d'être traités. Ici aucun thread du pool d'ASP.NET n'est consommé !
  4. Quand ces requêtes « reviennent », ASP.NET redonne un thread à la page, qui exécute les fonctions de retour ou de timeout, puis fini l'exécution normale de la page (le Page_PreRenderComplete et la suite).

Enfin, on peut forcer ASP.NET à effectuer toute cette mécanique avant le Page_PreRenderComplete en appelant explicitement la méthode Page.ExecuteRegisteredAsyncTasks.

Outre le simple plaisir de complexifier le code :p, ça peut aussi éviter certains phénomènes d' « encrassement » du pool de thread (certains threads sont trop long à terminer et empêches des requêtes pourtant très rapides à s'exécuter d'obtenir un thread ; ce qui fini en un magnifique « Server Unavailable »pour certaines requêtes !). C'est aussi une possible voie à laquelle il faut s'intéresser lors de problèmes de montée en charge, qui s'attaque peut être plus au vrai problème que de « tout simplement » augmenter la taille du pool de thread ou de passer carrément à un serveur plus puissant !

Comment ça marche ?

 

Le gestionnaire de PageAsyncTask de la Page s'appuie sur la méthode Page.AddOnPreRenderCompleteAsync (que l'on peut d'ailleurs utiliser directement sans passer par le RegisterAsyncTasks, mais on perd certains fonctionnalités utiles, cf. liens plus bas).

Comme cette fonctionnalité est fournie par une interface qui hérite elle-même de IHttpHandler, on peut appliquer ce traitement asynchrone à bien autre chose qu'une page, à n'importe quel Handler (et sur un principe semblable également à n'importe quel Module, cf. liens plus bas). Dans le cas du Handler, il « suffit » de rajouter Begin et End devant le ProcessRequest :

public class MonHttpAnsyncHandler : IHttpAsyncHandler

{

public void ProcessRequest(HttpContext context)

{

// n'est jamais appelé ! (mais necessaire...)

}

 

public bool IsReusable { get { return false; } }

 

public IAsyncResult BeginProcessRequest(HttpContext context,

AsyncCallback callBack, object state)

{

// début du traitement

}

 

 

public void EndProcessRequest(IAsyncResult result)

{

// fin du traitement

}

}

Pour aller plus loin

 

Un bon exemple d'implémentation de handler asynchrone est évidemment la classe System.Web.UI.Page elle-même, bien qu'il ne soit pas « tout simple », cf. les méthodes Page.AsyncPageBeginProcessRequest et Page.RegisterAsyncTasks (pour ceux qui aiment faire mumuse avec Reflector… moi je peux plus m'en empêcher c'est devenu une manie :D)

Sinon, pour ceux qui voudraient aller plus loin dans les PageAsyncTasks ou se plonger dans les Handlers/Modules asynchrones, un peu de lecture J :

MSN vient de lancer Podium '08, une application Silverlight 1.0 permettant de comparer les différentes positions des candidats à la présidentielle de 2008 aux Etats-Unis.

En plus de proposer une liste complète des différents candidats, le tout avec une interface utilisateur riche, intéractive et ergonomique, les informations et les opinions des candidats sur les problèmes politiques américains sont récupérées à la volée via Windows Live Search !

On peut également comparer ce que disent deux candidats sur un sujet, par exemple l'environnement, ou l'immigration...

C'est ici que ça se passe :

Podium '08

C'est là, je trouve, qu'on commence à voir que Silverlight se répend (je veux dire, en dehors des communautés de geeks Microsoftiens... :p) : même MSN, qui vise pourtant une audience grand public très très large (et qui donc utilise Flash dans tous ses autres Specials) s'y est mis... Il manquerait plus que le player de MSN SoapBox se mette à Silverlight :D

C'est la deuxième application Silverlight exploitant Live Search qui sort des labos de Microsoft (après Tafiti, il y a peu de temps...). Que nous préparent-ils encore ? :)

Nurgle

Cette vidéo assez marrante (et en anglais) présente les quelques petite trucs qui peuvent faire rater une présentation PowerPoint :

Et ça arrive assez souvent... :)

Posté le samedi 23 juin 2007 11:34 par Nurgle | 1 commentaire(s)
Classé sous : ,

Depuis quelques jours je vois partout écrit, Windows Live Writer qu'il est beau, qu'il est bien, que ceci et que cela...

Et comme pas mal de gens apparement, j'ai eu droit à ce magnifique message d'erreur ultra-explicite :

"Windows Live Setup Service has stopped working."

Et à partir de ce premier essai, encore pire : plus aucun message d'erreur, l'installation s'arrêtait tout simplement...

Après avoir chercher sur le web et essayé tout un tas de choses (je vous passe les trucs qui ne marchent pas...), j'ai trouvé une solution :

Il "suffit" de changer l'utilisateur sous lequel démarre ce fameux service, et de mettre à la main un compte Administrateur de la machine :

1. Ouvrir les Services (Panneau de configuration --> Outils d'administration), repérer le service nommé "Windows Live Setup Service", puis Clique droit --> Propriétés, et là spécifier un compte Administrateur plutôt que de laisser le compte par défaut.

wlw1

2. Aller dans C:\ProgramData\ (sous XP : C:\Documents and Settings\All Users\Application Data) et supprimer les deux dossiers temporaires "WLInstaller" et "Windows Live Installer".

3. Démarrer maintenant le service puis lancez "normalement" l'installation.

Je ne sais pas le pourquoi du comment, mais ça a fonctionné chez moi, c'est déjà ça :) (la preuve, là je poste avec, justement !). En espérant que ça puisse servir à d'autres dans le même cas...

A+

Nurgle (Antoine)

La semaine dernière, du mardi 7 novembre au vendredi 9 novembre 2006 a eu lieu à Paris le SATIS (Salon des Technologies et des Solutions Audiovisuelles).

Pendant que certains s'amusaient au TechEd, j'y ai été invité (en "pseudo-VIP"... merci à Guillaume Ladhuie d'ailleurs :p). C’est sans doute un des seuls évènements français dédié aux solutions audiovisuelles pour professionnels.

On pouvait y voir des marques connues, comme Thomson, FujiFilm, Panasonic et évidemment Sony, présenter leurs dernières nouveautés, comme par exemple l’écran plat le plus grand du monde (trop grand pour que je puisse le prendre en photo :p), signé Sony.

 

…des vidéoprojecteurs monstrueux, pour cinéma par exemple (avec un prix monstrueux aussi) :

...les traditionnelles tables de mixages et autres accessoires de barbare pour monteurs son :

... ainsi que les graveurs automatiques de CD, capables de graver plusieurs centaines de CD de l'heure.

Rien de nouveau vous me direz. On pouvait cependant voir des écrans tactiles géants !

Imaginez : vous êtes chez vous, et au lieu d'avoir votre MediaCenter relié à votre télé, il y a en fait tout un mur de la pièce qui est un écran tactile géant. Vous pouvez visionner vos films en très grand, ouvrir une bibliothèque virtuelle (ressemblant à une vrai bibliothèque) contenant votre musique et faire glisser une pochette d'album de la bibliothèque directement vers une "chaine hifi" virtuelle, rien qu'en touchant le mur...

D'un côté plus logiciel, on pouvait y voir le stand Adobe, bondé de monde, où l'on nous présentait Adobe Première Pro 2.0 (rien à dire de ce côté là, j'y connais rien de toute façon :p) :

Et aussi Apple, présentant son outils SoundTrack Pro (là non plus, ait rien compris, à part que ça a l'air puissant comme outil...) :

Et même quelques petits trucs marrants :

Enfin bref, pendant qu'au TechEd certains geeks agglutinés autour d'une prise multiple bloggaient tous en coeur, ce petit salon là était bien sympatique :)

Nurgle

Encore une nouvelle Release Candidate de FireFox vient d'être mise en ligne par la fondation Mozilla.

On peut voir une liste relativement intéressante de changements : FireFox 2 RC3 Release Notes

 

Globalement ça donne vraiment envie d'être là pour la soirée de lancement de FireFox, jeudi 26 octobre :-)

Télécharger FireFox 2 RC3 !

 

Nurgle

 

Après que certains aient quitté le programme MSP (anciemment MVS) pour monter encore plus haut... un petit nouveau arrive.

Me voilà donc récompensé par le titre de MSP ! :D

 

Merci à tous ceux qui ont pû soutenir ma candidature et plus particulièrement à Nix pour ce sans quoi je ne saurais même pas ce que programmation veut dire : CodeS-SourceS smile_teeth.

 

D'ailleurs ça me fait penser que moi aussi il faudrait que je m'attaque à mon capital de frimr, qui pour l'instant stagne dans les profondeurs... ;)

Nurgle

J'avais toujours considéré jusque là l'utilisation de ClickOnce comme un petit gadget rarement utile, les .msi permettant beaucoup plus de chose, mais... j'avais tord ! smile_wink

 

J'ai trouvé recemment sur le site MSDN US un magnifique article sur les déploiements ClickOnce, du plus simple (trois click dans Visual Studio et c'est finit !) à un niveau qui devient bien plus intéressant (personnalisation de pleins de choses !) :

Administering ClickOnce Deployments (en)

Il y a même le zip avec l'ensemble du code d'exemple smile_teeth.

 

Pour ce qui est de son utilisation depuis Visual Studio, j'aime bien aussi l'article de morpheus sur developpez.com (beaucoup de captures) :

Tutoriel ClickOnce : Le déploiement facile d'applications .NET

 

Edit : Il y a même deux webcasts que j'avais pas vu tiens... (merci romagny13) :

Déployer avec l'API ClickOnce et Programmer l'API ClickOnce.

 

C'est plutôt utile en fait... Comme quoi, on en apprend tous les jours...

 

Nurgle

Je me baladai gentillement dans Word 2007, et à un moment je trouve dans le ruban un outils "Equation" :

Hop, ni une ni deux, j'insère une formule et là, je tombe sur un magnifique outil de création de formules, tout bonnement époustouflant !

L'outils permet d'utiliser à peu près toutes les fonctions mathématiques simples et plus complexes dont on puisse rêver... :

  • Limites
  • Fonctions de référence
  • Mise en forme de fractions, indices, exposants
  • Complexes, Racines, Intégrales
  • Tous les grands opérateurs dont on peut rêver
  • Et encore pleins d'autres trucs...

Un petit exemple (extrait de mes cours de Maths, que je fais maintenant avec Word smile_wink) :

C'est-y-pas magnifique ? Ce nouveau Office nous réserve pleins de bonnes surprises...smile_teeth

 

Non, plus sérieusement, ça peut être très utile. Mais maintenant je vais être obligé d'acheter Office 2007 quand il va sortir, sinon, adieu mes cours de Maths (ils sont malins chez MS quand même) !

Nurgle

Ça y est, IE 7 beta 3 (build 5450.4) est enfin disponible !

La page de téléchargement générale est ici

 

PS : Ne pas oublier de désinstaller les versions antérieures de IE7 ;)

Amusez vous bien :)

EDIT : Il semblerait qu'il y ai un problème lors de l'installation qui empêche le fonctionnement et oblige le système à revenir sous IE6.

Après avoir parcouru longement les newsgroups sur IE7, il semblerait que personne n'ait réussi à faire fonctionner cette beta... ou en tout cas que personne n'a expliqué là bas comment résoudre le problème... :(

EDIT 2 : Apparement tout est rentré dans l'ordre (me demandez pas comment ;))

Donc, wait and see...

Nurgle

Et ça y est, les premier exploits du nouveau forum de CodeS-SourceS et de sa section commune aux différents sites arrivent !

En effet cette discussion : http://www.aspfr.com/infomsg_TOPIC-COMIQUE_762151.aspx#409 en est à son 409ème message en ce moment, ce qui est déjà gigantesque…

J’ai également compté qu’il y avait 15 personnes qui ont participés à cette discussion, et que sur ces 409 messages, il y en a eu pas moins de 238 postés aujourd’hui.

Ce qui fait donc un total d’environ 3570 mails envoyés aujourd’hui uniquement pour cette discussion (pour info j’ai reçu 313 mails de CodeS-SourceS aujourd’hui…)

On peut également remarquer que la taille de ces mails de confirmation est de 10 Ko chacun, ce qui fait que chaque membre de cette discussion a fait transiter par sa boite environ 2,324 Mo de mails de CodeS-SourceS aujourd’hui.

Cette discussion a aussi  fait consommer aujourd’hui environ 34,863 Mo de bande passante à CodeS-SourceS…

 

Nix, j’espère que tu as prévu assez large… ;)

Je n'ai pas pu m'empêcher de relayer depuis le blog de Nicolas Humann ce petit article (en anglais) où l'on a posé une question toute simple à quelque personnes :
 
Qu'est ce qui se passerait, si demain, Microsoft disparaissait ?
 
 
J'aime particulièrement la conclusion :
"If Microsoft didn’t exist, we’d have to invent it."
 
A++
 
Posté le jeudi 1 juin 2006 16:14 par Nurgle | 0 commentaire(s)
Classé sous :
A vos claviers !
La finale française d'Imagine Cup se déroulera à Paris le jeudi 18 mai de 18h à 23h.
 
Au programme :
 
  • Les finales évidemment (les matchs commençeront à 19h il semblerait)
  • Et pour nous faire patienter, des dégustations indiennes :D
  • Des animations, des cadeaux à gagner, des surprises...
 
Pour s'inscrire, c'est ici :
 
Nurgle

Ce weekend, un ami qui bosse comme développeur dans une petite société me montre en avant première leur nouveau site web.
L’occasion était trop grande : je voulais tester un peu...

 Première chose que je fais : je prends le champ « Rechercher » et j’essaye un tout petit peu d’injection SQL. Heureusement pour lui ça ne marche pas ! 

 Il me dit que ça y est, c’est bon, si ça, ça ne marche pas, alors personne ne pourra l’embêter !

J’ai oublié de préciser qu’il a réalisé son site en PHP (baahhhh… ) et avec en plus une bonne dose d’AJAX.
Maintenant que Cyril m’a montré ce fabuleux outil qu’est Fiddler, je le lance et je me balade un peu sur le site. Je vois un système de petites annonces, je poste donc une annonce, et là, qu’est ce que je vois ? La page se raffraichit partiellement et crée mon annonce. Je regarde donc les paramètres de la requête AJAX qui a été envoyée, et ça donne ça :

exec = "add"
text = "tout le contenu de l’annonce…"
user = monUserName
id = l’ID de l’annonce

 

 Et là ça y est, j’ai trouvé le filon : j’ai créé une simple application console en C#, avec une boucle et dedans un WebRequest qui envoie pleins, pleins de requêtes vers cette page, et comme aucune validation n’est ensuite effectuée, je fais exploser sa base MySQL en 45 min :)

 Et ça, c’était encore avant d’avoir découvert que le champ exec pouvait également avoir comme valeur "remove" et prendre un ID en paramètre (en deux temps trois mouvements j’avais modifié l’application précédente pour qu’elle supprime toutes les annonces de la base !)

 

 Donc moi je dis, l’AJAX c’est bien, mais bon, ça ne doit pas devenir indispensable au fonctionnement normal d’une page, et ça ne doit pas non plus servir à effectuer des actions critiques (ajout/suppression en base de données...) comme celles-ci, surtout quand ça nuit à la sécurité !

 Evidemment, je lui ai expliqué tout ça, et il a blêmi en voyant la base grossir énormément au début, et se faire vider totalement ensuite ! (je lui ai bien sûr dit qu’en .NET, ça ne serais pas arrivé, mais bon, ça tout le monde le sais )

 Finalement je me dis qu'avec AJAX on est en train de privilégier l'aspect esthétique à la sécurité et à l'accessibilité !

 Nurgle

Posté le lundi 27 mars 2006 22:06 par Nurgle | 5 commentaire(s)
Classé sous : ,
Un bon article lu sur MSDN, sur l'utilisation des services web de Google :

 http://www.microsoft.com/france/msdn/vcsharp/googleIt.mspx
(et aussi la version originale [en])

"Si vous êtes comme moi, vous passez probablement plus de temps sur Google que sur n'importe quel autre site Internet. Google reste mon premier et principal outil de recherche. Mais saviez-vous que Google propose aussi un service Web ? Avec ce service Web, vous pouvez profiter de la puissance du moteur de recherche Google dans n'importe qu'elle application de type .NET Framework..."

On peut même télécharger le code de l'exemple sur la page de la version originale !

Mais bon, on attend toujours celui sur MSN Search : Google l'a doublé sur ce coup là ;)

EDIT : Cependant, l'utilisation de ce webservice (nommé "Google API beta") est limité à des utilisations non commerciales.
Pour s'inscrire et obtenir une clé d'utilisation, il faut aller voir sur le site officiel : Google API

bon coding,
Nurgle
Posté le lundi 6 mars 2006 21:35 par Nurgle | 4 commentaire(s)
Classé sous :
Et oui, encore un ! encore un fou atteint de bloggite aïgue arrive ici 

Je voudrais d'abord Remercier Nix (et tous les autres, Azra, Cyril, etc...) de m'avoir offert ce blog, et aussi pour le simple fait d'avoir fait exister CodeS-SourceS !

Une petite présentation s'impose :
Je m'appelle Antoine Gourlay, j'habite Paris, j'ai 16 ans, et vous pourrez me retrouver sur CodeS-SourceS sous le pseudo de  Nurgle :)
J'utilise la technologie ASP depuis 1999, et je suis passé à l'ASP.NET il y a deux ans, occasion pour moi d'apprendre C# et VB.NET...

Vous trouverez sur ce blog tout ce que peux m'intéresser, principalement du développement web ASP.NET2, avec une grande préférence pour le côté serveur, avec quand même un peu de JavaScript et CSS (cyril a presque réussi à me convertir, mais je résiste...) et aussi des winforms, le tout aussi bien avec C# qu'avec VB.NET, et encore beaucoup d'autres choses...


A bientôt sur ce blog :)
Nurgle


Les 10 derniers blogs postés

- Etes-vous yOS compatible ? (2/3) : la nouvelle plateforme Yammer–Office 365–SharePoint par Le blog de Patrick [MVP SharePoint] le 04-22-2014, 09:27

- [ #Yammer ] [ #Office365 ] Quelques précisions sur l’activation de Yammer Entreprise par Le blog de Patrick [MVP SharePoint] le 04-22-2014, 09:03

- Après Montréal, ce sera Barcelone, rendez-vous à la European SharePoint Conference 2014 ! par Le blog de Patrick [MVP SharePoint] le 04-19-2014, 09:21

- Emportez votre sélection de la MSDN dans la poche ? par Blog de Jérémy Jeanson le 04-17-2014, 22:24

- [ #Office365 ] Pb de connexion du flux Yammer ajouté à un site SharePoint par Le blog de Patrick [MVP SharePoint] le 04-17-2014, 17:03

- NFluent & Data Annotations : coder ses propres assertions par Fathi Bellahcene le 04-17-2014, 16:54

- Installer un site ASP.net 32bits sur un serveur exécutant SharePoint 2013 par Blog de Jérémy Jeanson le 04-17-2014, 06:34

- [ SharePoint Summit Montréal 2014 ] Tests de montée en charge SharePoint par Le blog de Patrick [MVP SharePoint] le 04-16-2014, 20:44

- [ SharePoint Summit Montréal 2014 ] Bâtir un site web public avec Office 365 par Le blog de Patrick [MVP SharePoint] le 04-16-2014, 18:30

- Kinect + Speech Recognition + Eedomus = Dommy par Aurélien GALTIER le 04-16-2014, 17:17