Des centaines de cours pour se former à WPF, Linq, Visual Studio et bien plus

Le Site de référence WindowsClient.net pour les développement "client lourd" (comprendre Winforms et WPF) vient de mettre à disposition de tous plusieurs vidéos pour se former :

- 77 vidéos pour se former à WPF
- 8 vidéos pour se former à aux nouveautés WPF avec l'arrivée du 3.5 Service Pack 1
- 97 vidéos pour se former à Winforms
- 19 vidéos pour se former à Linq

- 20 vidéos pour se former à Visual Studio 2008


De quoi s'occuper pendant les longues nuits .. de printemps ! (Qui pour féter son arrivée nous offre une semaine ensolleillée)

Apparition de contrôles "Chart" gratuits pour WPF et Silverlight

L'équipe de Samantha Durante a profité de la realease de Mars des WPF Toolkit pour présenter les nouveaux contrôles de type "graphes" bientôt disponibles et compatibles Silverlight. Ainsi, Microsoft continue à proposer une offre de contrôles de plus en plus grande par rapport aux premières versions sorties. Pour rappel, WPF Toolkit est une DLL disponible grautitement sur CodePlex rajoutant déjà par exemple le Datagrid que je présentais ici l'an dernier.

Il y aurais encore quelques problèmes de transition, mais ce que l'on retiendra : le même XAML fonctionne sans modification sur les 2 plateforme sans travail supplémentaire, chapeau !

Les Graphes disponibles sont :

  • Column
  • Bar
  • Pie
  • Line
  • Area
  • Scatter
  • Bubbles

Plus d'informations disponibles ici : http://blogs.msdn.com/delay/archive/2009/03/20/silverlight-charting-remains-just-a-click-away-and-runs-on-wpf-too-chartbuilder-sample-and-source-code-updated-for-charting-s-march-09-release.aspx

 

 

Une application de référence sur Silverlight

http://www.nikhilk.net/SilverlightFX.aspx :

Une application, le Silverlight Store, vient de sortir. Basée sur les concepts suivants :

  • View Model pattern appliqué à Silverlight
  • Simple/minimal IoC container
  • Declarative Effects and Transitions
  • Behaviors, actions and triggers as well as commanding
  • ListView and DetailsView controls
  • Animated Layouts (TilePanel)
  • TemplatePanel (like asp.net master pages)
  • Dialogs

Le but est d'essayer d'en faire un modèle de référence pour les développements autour de Silverlight. Reprise du concept FlexStore, mais à la sauce Silverlight !

Un webcast autour du pattern M V VM appliqué à WPF et Silverlight (et autres patterns à la sauce MVC/MVP)

J'en parlais l'an dernier, le pattern M V VM semble le moyen le plus propre, le plus réutilisable, et le plus testable de faire des applications WPF à la cause MVC/MVP.

Une série de Webcasts sur le sujet est sortie ce mois-ci :

Pour les fans d'architecture, Enjoy !

 

PS : Puisqu'on parle de patterns, vous n'avez sûrement pas loupé la sortie du EBook gratuit de Scott Guthrie sur ASP.NET MVC.

[WPF] Datagrid : enregistrer les données à la fin de saisie d'une ligne

Pour le moment, tous les exemples sur le nouveau Datagrid disponibles sur le net, se limite à montrer le databinding simple et classique Two Way. Mais, qu'en est-il si l'on veut pouvoir par exemple, enregistrer les données dans une base de données ? Dans ce cas, il faut faire appel à l'évènement RowChanged de la DataTable. Et voilà ! Vous avez capturé l'évènement qui est lancé quand on a fini de saisir la ligne, et dans cet évènement, vous récuperez (dans mon exemple simplissime) un DataRow.


Voici un petit exemple :


public Window1()
{

   InitializeComponent();
   DataTable _productsDateTable = DBProduct.GetList().Tables[0];
   _productsDateTable.RowChanged += new DataRowChangeEventHandler(product_RowChanged);

   dgPics.ItemsSource = _productsDateTable.DefaultView;

}

private static void product_RowChanged(object sender, DataRowChangeEventArgs e)
{

   DBProduct.Update(e.Row);

}



[Divers] Spam par SMS : suite

Des nouvelles de ma démarche... Apparement cette société (conf mon post préçécent) avait, je ne sais pas comment, aussi enregistré mon email et l'avait vendu.


J'ai reçu ce matin ce mail :
fromabonnement@xpedite.fr
toelise

dateFri, Sep 12, 2008 at 10:56 AM
subjectConfirmation de suppression
mailed-byxmr3.com

hide details 10:56 AM (57 minutes ago) Reply


Avant la fin de la journée, l'adresse :
      elisemachintruc àbidule.chouette
ne recevra plus d'e-mails envoyés par :
      BOLLINI PARTNERS

 

J'ai fait une recherche, sur xpedite et sur bollini partners.

Xpedite :

Ville

Paris (75001)

URL

http://www.xpedite.fr

Description de la société

Diffusion de messages électroniques. Offre une gamme complète de services dans la diffusion de messages fax, e-mails, SMS et vocaux.

 

Bollini : BOLLINI PARTNERS est spécialisée dans le développement commercial auprès des entreprises en France et à l’étranger.


Beaucoup d’entreprises ont déjà passé des accords commerciaux grâce au service de mise en relation directe avec des agents commerciaux disponible sur le site http://www.exploragent.fr/, proposé par la société BOLLINI PARTNERS.


Fort du succès rencontré lors des envois de campagnes e-mailing, BOLLINI PARTNERS offre également le service de routage de votre message en mettant à votre disposition son fichier de 2650000 adresses mail en BtoB avec un retour de ventes instantanées.

 

Donc, tout ce système est tentaculaire. La société serait sous le colimateur de la gendarmerie, et plusieurs plaintes ont été déposées. J'envisage donc d'envoyer cet email "type" à tous les spammeurs emails, histoire d'étendre la "guerre" à tous ces pourris.

Je vous tiendrais au courant ;)

[WPF] Etude de cas : retour d'expérience sur la migration d'une application .Net vers 3.5

En regardant mes flux RSS comme tous les matins, je suis tombée sur ce livre blanc : Evolving to a .Net 3.5 Application, qui explique le processus de migration d'une application .NET 1.X ou 2.X vers du 3.5.

Je n'ai pas encore fini de le lire, mais déjà, je trouve le contenu très pertinent. Je ne sais pas si je suis encore d'accord avec tous les choix qui ont été faits, mais il pose les même questions que tout le monde en terme de choix d'architecture, et fournit un exemple de solution.


Ce document de 60 pages couvre tous les aspects du projet : la formation des équipes, les choix d'architecture, les options retenues pour la validation de données, le modèle ViewPresenter qui a été retenu, comment gérer les états des données en cours d'édition via la couche contrôleur, et au passage, liste tous les liens techniques qui les ont aidé à établir leurs choix, tout en montrant quelques exemples de code pour illustrer les propos.





Un livre que je conseille vivement !
http://www.ythos.net/casestudy.aspx?CaseStudyId=12

In this paper, I’m going to outline some of the thought processes, decisions and issues we had to face when evolving a Microsoft .NET application from 1.x/2.x to 3.x. I’ll look at how we helped our client to adopt the new technology, and yet still maintained a release schedule acceptable to the business.

I will avoid details of the proprietary aspects of the system, and I’m not providing any source code for the components we’ve built. On the other hand, I will cover in some depth the general architecture and design of the system, particularly as it relates to .NET3.x. As a bonus, there are quite a few code snippets and tips we picked up along the way.


[Divers] Spam par SMS en provenance du 36888, CNIL et moyens d'agir

Depuis quelques semaines, mon portable reçoit de nombreux sms non voulus, provenant d'un numéro 36888, ou 36036 m'annoncant que j'ai gagné un cadeau, que j'ai un chèque en attente de retrait, que j'ai des photos non lues, ou que j'ai un ami perdu de vue qui n'arrive pas à me joindre (evidemment, moyennant 3€ plus le coût du SMS, sauf si j'envoie STOP au xxxxx auquel cas ils prometent d'arréter). Je sais pas vous, mais moi, j'estime que c'est une arnaque illégale.

Je me suis donc renseignée sur le sujet (merci google). Au départ j'hésitais à renvoyer "STOP" par SMS :

  • çelà peut signaler que ce numéro est actif, un peu comme pour les spams par email
  • pourquoi devrais-je alimenter le système de pompe à fric en payant un SMS pour arréter un acte que je n'ai jamais cautionné ?

Résultat, j'ai trouvé quelques informations interessantes. D'une part, je suis tombée sur un générateur de courriers types, pour faire valoir ses droits, fournit par la CNIL.  CNIL : Exercer ses droits

A coté de ça, j'ai appris que la société qui gère en france ce genre de pratiques honteuses s'apelle indexmultimedia. J'ai appris aussi que pour savoir qui est derrière ces SMS non désirés, en général il suffit d'envoyer "CONTACT" au numéro en question, et on reçoit les coordonnées.

En ce qui me concerne, j'ai opté pour le mail d'intimidation, voici le message que je leur ai envoyé (sales@indexmultimedia.com et info@indexmultimedia.com) :

Je reçois depuis plusieurs semaines des spams en provenance de votre société par sms sur mon numéro de téléphone : xxxxxxxxxx.

Je souhaite rappeler trois choses :

- ce type de démarchage nécessite le consentement clairmement exprimé, et préalable, du destinataire du message ;
- chaque sms envoyé sans ce consentement expose l'expediteur à 750 € d'amende par sms ;
- enfin en fonction des cas de figure, c'est 300.000 € d'amende et 5 ans de prison...

C'est pourquoi je vous demande de me rayer de votre liste de démarche IMMEDIATEMENT avant que je n'engage des poursuites.


Je vous dirais si ça a marché. Mais j'ai rajouté au passage le texte qui a été généré par la CNIL sur le lien que j'ai donné plus haut :

 

Évidemment, cela va sans dire que :
- Conformément aux dispositions de l'article 38 alinéa 1 de la loi du 6 janvier 1978
modifiée, je vous prie de bien vouloir radier de vos fichiers toutes informations me
concernant, et m'en tenir informé.
- Conformément aux dispositions de l'article 38 alinéa 2 de la loi du
6 janvier 1978 modifiée, je vous demande de noter que je m'oppose à ce que mes
coordonnées, figurant dans vos fichiers, soient mises à disposition d'organismes
extérieurs à des fins de prospection commerciale.
- Conformément aux dispositions de l'article 38 alinéa 2 de la loi du 6 janvier 1978
modifiée, je vous demande de supprimer mes coordonnées de vos fichiers d'envoi de
publicités.

Je ne trouve pas non plus que les opérateurs soient aidant dans la démarche : ils font tout pour que ces numéros ne soient pas traçables. Forcément... Ca alimente leur platerforme SMS, pas folle la guèpe...


Edit : je viens de reçevoir la réponse par  email :

Bonjour,


Votre numéro a été supprimé de nos bases de données. Vous ne recevrez plus de messages à partir de minuit ce soir.


Cordialement,

Service clients

Index Multimedia.


Youpi !! Quelques minutes plus tard, j'ai même reçu un SMS de plusieurs numéros courts que j'avais du zapper au passage, disant que mon numéro avait été retiré de leur liste et que je ne reçevrais plus rien.

[WPF] Webcast pour garantir une interface réactive

WPF comment garantir une interface réactive
Je viens de tomber sur une vidéo d'Eric Vernié, qui montre comment obtenir une interface WPF réactive, grâce à l'utilisation de threads pour synchroniser les tâches en arrière plan, notamment avec Dispatcher.Invoke() et SynchronisationContext.
Une petite vidéo très utile : http://www.microsoft.com/france/vision/WebcastMsdn.aspx?EID=20bf8918-ea06-4082-bf40-ae7450baba0b

[.Net] Présentation du Client Profile

Avec la sortie du framework 3.5 SP1 Beta, Microsoft avait annoncé le ".Net Client Profile". Il s'agit d'une version plus légère du framework redistribuable. Au lieu des 230 Mo du package complet, cette version fait environ 27 Mo*.

Elle permet donc d'installer le framework 3.5 SP1 plus rapidement sur un poste client. Pourtant, elle contient beaucoup de choses :

  • BCL, "Core FX," and LINQ
  • Visual Basic and Visual C++ Language Support
  • XML
  • Windows Forms
  • WPF (PresentationFramework, PresentationCore etc...)
  • ClickOnce (System.Deployment)
  • WCF, Web Services, Remoting, and Serialization (System.Runtime.Serialization, System.ServiceModel, System.Web.Services etc...)
  • Data Access (System.Data  etc...)
  • Peer to Peer (System.Net)
  • Active Directory and Enterprise Services

Cette installation vise principalement Windows XP. Le Client profile ne s'installera pas sur Windows Server 2003, "as this platform is not intended for use as a client application platform". De même, le Client Profile n'est pas supporté sur les plateformes x64 ou ia64, dans ce cas il faut continuer avec le package complet.

Ce tableau explique ce qui est visé par le Client Profile, à savoir XP SP2 et + : Il ne target donc pas tant de plateformes que ça (mais ça s'explique, à voir dans les liens que je donne plus bas).

Tout ceci est intégré dans Visual Studio 2008 SP1 : il apparait une option à cocher, dans les propriétés de votre projet. Après installation du SP1, vous obtiendrez ceci :

 

 

Pour ceux qui veulent pousser le sujet voici quelques liens supplémentaires :

 

 

* : Je ne fais pas la comparaison avec la version "Système d'amorçage" évidemment, qui fait 2.5 Mo environ au départ mais ensuite télécharge quand meme les 230 Mo nécessaires via le net. Je parle donc du package complet, qu'on retrouve ici : http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&DisplayLang=fr#Instructions.

 

[WPF] Générer automatiquement un formulaire avec le XAML Power Toy

Karl Shiffer a sortit un outil, appelé XAML PowerToys. Entre autre, celà permet de générer de façon visuelle un formulaire business en WPF. En sélectionnant une classe métier par exemple, l'outil détectera automatiquement le nombre de champs à générer, et avec quelques clicks, le reste se mets en place rapidement. Une vidéo qui sert de démo est sortie.

Plus d'informations sur cet outil ici :

http://karlshifflett.wordpress.com/2008/08/31/xaml-power-toys/. Certes, ce n'est pas un outil ultra puissant plein de fonctionnalités dignes d'un outil payant. Cet outil se veut juste simple, afin d'essayer de vous faire gagner du temps.

[SQL] SQL Serveur Express 2008 est disponible

SQL Serveur Express 2008 est disponible en téléchargement. Gratuit comme pour la version 2005, il contient toujours Le SQL Serveur Management studio, et d'autres outils comme des services avancés comme le full text et les reporting services.


En tout, 3 versions disponibles :

[SQL Serveur Express], [SQL Serveur Express with tools], et [SQL Server 2008 Express with Advanced Services]

A préciser, voici les limitations de cette version, en comparaison avec la version payante : limité à 1 CPU, l'utilisation de la RAM limitée à 1 GB, et la taille d'une base de données ne peut pas dépasser 4 GB.

[WPF] Datagrid CTP : un petit exemple

Voici un petit exemple de datagrid sans prétention : il reprend en grande partie des bouts d'exemples qu'on peut trouver à gauche et à droite. Vous pouvez télécharger tout çà ici.

J'ai utilisé des photos que j'ai prises avec divers appareils photo, et j'ai voulu les afficher dans le nouveau datagrid fournit dans le WPFToolkit. Evidemment, merci de ne pas réutiliser mes photos pour autre usage que cette démo, elles m'appartiennent Wink (plus de photos ici : www.elisedupont.fr)

Il faut premièrement rajouter la DLL en question dans les références du projet. J'ai fait une classe "Picture" et j'ai fait une collection de type ObservableCollection, où j'ajoute quelques images. Cette collection est rajoutée dans le datacontext de ma fenètre.

En utilisant la syntaxe toute simple de base du datagrid AutoGenerateColumns="True" , avec l'option on obtient un résultat plûtot brut de décoffrage :

Cependant, le résultat n'est effectivement pas super beau. Du coup, on peut commencer à customiser un peu le rendu des colonnes.

Pour du texte simple, l'utilisation du DataGridTextColumn est suffisant :

<dg:DataGridTextColumn DataFieldBinding="{Binding Name}" Header="Nom" />

Pour les checkbox, il s'agit du DataGridCheckBoxColumn :

<dg:DataGridCheckBoxColumn DataFieldBinding="{Binding IsColor}" Header="Est en couleur" />

Pour l'affichage des images, on va passer par un DataGridTemplateColumn, que l'on va spécifier plus en détail :

<dg:DataGridTemplateColumn MaxWidth="250" Header="Image">

<dg:DataGridTemplateColumn.CellTemplate>

<DataTemplate>

<Image Source="{Binding Path=Imgpath}" MaxHeight="150" />

</DataTemplate>

</dg:DataGridTemplateColumn.CellTemplate>

Cependant, pour le moment dans le cas où l'on passera en mode édition, ce n'est pas suffisant, mais on verra ça un peu plus tard. En attendant, on va aussi afficher le rating des images :

<dg:DataGridTemplateColumn ClipboardContentBinding="{Binding Stars}" SortMemberPath="Rating" CellTemplateSelector="{StaticResource EtoileTemplateSelector}" Header="Rating" >

Ici, on doit rajouter l'infomation pour le tri (SortMemberPath="Rating"), car sinon le datagrid ne saura pas comment trier l'information. Par défaut, pour les autres données faciles telles que le texte, le datagrid tri très bien de façon ascendante et descendante tout seul (nb : pour ceux qui voudraient regarder une logique de tri plus personnelle avancée, un article est sortit sur le sujet).

Dans l'attribut CellTemplateSelector, on va définir la logique qui permet de lier le rating (qui est un chiffre) à une ressource XAML.

Enfin, pour la date, on va tirer partit du fameux StringFormat tout nouveau tout beau, qui evite d'écrire un converter pour afficher une date à un format précis :

<dg:DataGridTextColumn DataFieldBinding="{Binding CreationDate, StringFormat={}{0:d/M/yyyy}}" Header="Date de creation" /> 

Le résultat s'améliore un peu :

 

L'édition d'une ligne se gère toute seule : un click sur la cellule en question, et on passe en mode édition, on peut ainsi modifier le contenu. Seul problème : le cas des images et des étoiles.

Pour ce faire, on va définir un template pour l'affichage dans le mode édition :

Dans le cas des étoiles, on affichera une ComboBox avec des chiffres de 0 à 5 :

<dg:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Path=Rating, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemsSource>
<col:ArrayList>
<sys:Double>0</sys:Double>
<sys:Double>1</sys:Double>
<sys:Double>2</sys:Double>
<sys:Double>3</sys:Double>
<sys:Double>4</sys:Double>
<sys:Double>5</sys:Double>
</col:ArrayList>
</ComboBox.ItemsSource>
</ComboBox>
</DataTemplate>
</dg:DataGridTemplateColumn.CellEditingTemplate>

On va lier la donnée "Rating", afin qu'une fois la sélection finie, l'affichage se mette à jour.

De même, pour l'image :

<dg:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Path=Imgpath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemsSource>
<col:ArrayList>
<sys:String>Pics\IMG_0127.jpg</sys:String>
<sys:String>Pics\IMG_0257.jpg</sys:String>
<sys:String>Pics\IMG_3385.jpg</sys:String>
<sys:String>Pics\IMG_2429.jpg</sys:String>
<sys:String>Pics\IMG_Pola3.jpg</sys:String>
<sys:String>Pics\IMG_Pola7.jpg</sys:String>
<sys:String>Pics\IMG_Pola1.jpg</sys:String>
<sys:String>Pics\IMG_2653.jpg</sys:String>
<sys:String>Pics\IMG_Pola6.jpg</sys:String>
</col:ArrayList>
</ComboBox.ItemsSource>
</ComboBox>
</DataTemplate>
</dg:DataGridTemplateColumn.CellEditingTemplate>

Résultat, quand on sélectionne l'image pour la changer, en mode édition, on a une ComboBox qui s'affiche avec les liste des images disponibles. Une amélioration possible serait d'afficher le visuel de l'image plutôt que son nom...

 

[WPF] Validation des données, du nouveau avec le 3.5 SP1

Stéphane Goudeau m'a remonté un lien ce matin : Un nouveau billet vient de sortir, qui présente une nouvelle fonctionnalité du 3.5 SP1 : la validation des données en WPF à l'aide du concept "BindingGroups" : "WPF 3.5 SP1 Feature: BindingGroups with Item-level Validation".

Pour être honnête, je trouve le concept relativement complexe. D'après l'auteur, l'intérêt réside dans le cas par exemple de l'édition d'une ligne d'un datagrid : on peut gérer de façon très fine l'état de la validation d'un objet, grâce entre autre aux évènements BeginEdit, CancelEdit, EndEdit et CommitEdit.

L'auteur l'explique mieux que moi :

"With the WPF CTP DataGrid you are able to open a row for edit (F2) and commit that data (ENTER).  While you can add property level validation to all your bindings and set the ValidatesOnDataError property, when a validation rule fails on commit, you as the app author will have to handle all the rest of the values in the row that have already been committed.  Since the row has already been committed, IEditableObject.EndEdit will have already been called which may clear your cache of row data to revert back to.  With BindingGroups, the app author just needs to provide a item-level validation rule and when that validation rule fails on commit, the app author does not have to write more custom code to get the behavior to either revert back or keep the current state without committing. (Note: row validation is actually not implemented yet in the CTP even if it says it is)"

En parallèle, un autre blog poste le détail d'une solution de validation des données, toujours en utilisant le BindingGroup  et en proposant un pattern perso.

Ce qui me choque un peu, c'est qu'il semblerait qu'on s'éloigne de l'idée d'une validation des données contenue dans la couche métier, et qu'il y aie du coup un couplage avec la couche UI. Ce qui n'est pas vraiment propre...

En ce qui me concerne, je trouve quand même tout celà très peu intuitif. Je préférais franchement l'approche de Karl Shifflett. Quoi qu'il en soit, pour le moment il y a encore trop peu d'information sur les BindingGroups, ce qui j'espère changera bientôt (edit 11 septembre : un nouvel article est sortit sur ce blog. Manque de bol, je n'arrive pas à faire tourner les exemples).

Pour finir de rationaliser ce sujet, je vais faire un parallèle avec le Validation Application Block, des Enterprise Library. Ce framework de validation fournit par Microsoft (et qui est la base de l'exemple posté par Karl Shifflett) fonctionne pour Winform, ASP.Net, mais pas directement pour WPF, qui n'a pas été intégré. Qu'à celà ne tienne. Martin Bennedick a sortit une intégration pour WPF, via un adaptateur. WPF integration for VAB for Enterprise Library 4.0  permet d'avoir la logique coté métier aussi. Un petit exemple :

[StringLengthValidator(1, 50, Ruleset = "RuleSetA", MessageTemplate = "Last Name must be between 1 and 50 characters")]
public string LastName
{
get { return lastName; }
set { lastName = value; }
}

Celà laisse une autre alternative. Car, sinon, il n'y avait à ma connaissance que la solution de Paul Stovell, qui construit un framework perso au dessus de IDataErrorInfo. Validation in WPF

Cependant, c'est une approche procédurale et non pas déclarative.

Et vous, quel est votre avis sur toutes ces approches ?

Data Structures and Algorithms : un livre gratuit

Pour ceux qui sont curieux de savoir comment, d'une manière générale, fonctionnent les algorithmes pour les données, le site dotnetslackers a mis à la disposition de tous un livre sur le sujet, téléchargeable gratuitement.

Ce livre couvre entre autre les algorithmes des listes chainées, des arbres binaires, des jeux de données, des queues, des tris, des merge, des recherches de données, les algos itératifs, récursifs (fibonacci) etc...
Un livre qui intéressera clairement en priorité les étudiants en algorithmie, ou les fous d'algo Geeked

Ce livre de 97 pages est disponible ici.

[WPF] Un exemple d'application business en WPF

Je viens de tomber sur une vidéo, présentant un exemple d'application de type "business", qui mets vraiment en valeur l'avantage de WPF. En effet, il reste encore parfois difficile de prouver les avantages de WPF pour ce type d'applications de gestion, sans tromber dans des démos souvent trop "bling bling".

Voici donc par l'image un exemple de bonne interface de gestion en WPF. Sans trop en faire en terme d'animations ou de transformation, cette application, présentée par Billy Hollis démontre que l'on peut aussi faciliter ennormement la productivité des utilisateurs, dans une interface propre et efficace. Billy Hollis on Making a good UI with Windows Presentation Foundation

J'ai particulièrement apprécié le mode de navigation d'une fiche à une autre, tout en permettant de changer rapidement sans perdre son contexte préçédent.

PS : Apparement, dans le même genre il y a aussi cette vidéo "Lawson Smart Office", que je n'ai pas encore vue.

[WPF] Liens RSS

Voici la liste, mise à jour au fur et à mesure, des liens WPF pour se tenir informé : j'ajoute à cela un fichier XML exporté au format OPML, que vous pouvez importer à votre tour. N'hésitez pas à contribuer à la liste.


Erebuss m'a envoyé par email (à cause des filtres antispam) sa liste :  elise.dupont [chez] gémèYleu.com



Les liens Rss que j'ai pu trouver, pour rester up-to-date sur WPF, sont pour le moment limités... :

Je n'ai qu'un regret : CodeProject ne permet pas un filtre sur une catégorie d'articles, uniquement sur les derniers articles postés : http://www.codeproject.com/WebServices/ArticleRSS.aspx

Voici les liens proposés par Erebuss :

Romain a donné ce lien, que je ne connaissais pas du tout : http://www.dotnetkicks.com/tags/WPF

Il reste aussi DrWPF et son humour : http://www.drwpf.com/blog/Home/tabid/36/rssid/1/Default.aspx


Question bonus : pourquoi WPF n'a pas son logo à lui hein ? Après tout, Silverlight a un logo qui déchire, mais pas WPF...

Tout savoir sur la VAE (Partie 5 et fin) : Les dates butoires

Dans mon précédent post sur le sujet, j'évoquais les freins de la VAE. Je ne connaissais pas à l'époque un détail important : l'organisme de financement.
En effet, l'organisme de financement impose une date limite, en ce qui me concerne, le dossier VAE doit être finit pour novembre 2008 (ce que je n’ai appris qu’en juin).
Fini, c'est à dire ? C'est à dire que ce n’est pas clair du tout. On ne sait pas si c'est "dossier déposé à l'université" ou encore "dossier passé au jury".  Tout ce qu'on sait, c'est que c'est la condition pour être financé par l'organisme (du genre Opacif ou autre).

Bon on reprend tout : mon entreprise finance cette VAE (et a aussi remboursé les frais de déplacement à Montpellier etc..., merci à elle) mais une grande partie est en fait au final financée à l'aide d'un organisme qui s'appelle l’Opcalia. L’université charge à mort le prix, dans ce cas là.


Évidemment, comme l'université de mon choix a mis 6 mois pour répondre favorablement à ma demande (pour rappel, j'ai commencé mes démarches en Septembre 2007, youpiiii), me voilà inscrite pour le jury de Février 2009 !

Ah, entre temps, les professeurs ont donné le sujet du travail personnel supplémentaire à faire, c'est là qu'on rigole.

En mai, je reçois ceci : "il y a matière à validation sous réserve d'un travail à distance dont le contenu est en cours de définition".

En juin, je reçois ceci :
"A partir de ses expériences professionnelles, la candidate devra fournir un dossier d'’analyse et de conception dont les explications seront illustrées à l'’aide de diagrammes utilisant le formalisme UML. Ce dossier devra notamment comprendre les parties suivantes :
une description des besoins fonctionnels et non fonctionnels, une description de l'’architecture retenue et une description technique de la conception logicielle élaborée. Il devra rendre compte du contexte dans lequel le projet s'’est déroulé ainsi que du type de processus qui a été adopté (XP, UP, ...…).

Le dossier demandé sera présenté sous la forme d'un rapport écrit de 30 à 50 pages qui devra permettre au jury d'apprécier l'aptitude de la candidate à utiliser le langage de modélisation orienté objet UML pour spécifier les différentes étapes d'’un projet informatique".


Ouch... C'es vague, difficile d'anticiper leurs attentes. Parce que si je m'écoute moi, et que je couvre tous les sujets comme il faut, c'est pas 50 pages qu'il va faire le truc. Je rappelle au passage que je n’étais pas sensée faire ce travail et que le dossier de VAE est sensé suffire, d’après la loi.

Bref, un conseil pour votre VAE, ne vous faites pas enfumer au niveau des dates, et relancez les universités, plein de fois, pour ne pas vous mettre 6 mois dans la vue.
Car, comme Montpellier était mon choix numéro 1, quand j'ai reçu la réponse de Paris j'ai temporisé. Mais, 6 mois plus tard, Montpellier répond (avec la réponse qu'on a vu dans le post précédent), et donc, Paris, vexé (c'est normal) reporte mon dossier à 2009 car j'ai mis trop de temps à me décider.

Evidemment, en ce qui me concerne, c'est chaud, et je pense sincèrement, qu'après des heures de travail passées sur mes dossiers, je vais finir par laisser tomber, car, faire ces deux dossiers (dont un totalement flou) en 2 mois (l’université me donnant Septembre comme dead line), tout ça pour une année d'étude supplémentaires, cela n'en vaut plus trop la peine.

Pour finir, même le montage du dossier VAE devient une plaie :
En effet, l'effet pervers de mon accompagnement avec un cabinet spécialisé dans les VAE, je ne l'avais pas vu au départ : je suis constamment entre le marteau et l'enclume : l'université m'impose une méthodologie pour mon dossier (qui vaut ce qu'elle vaut hein, c'est pas du grand art en terme d'argumentation mais bon on me demande pas un mémoire il paraît) et le cabinet veut m'en faire faire une autre. Moi, au milieu, je suis paumée entre vouloir bien faire, et faire comme on me le demande (toujours le problème ca, avec les écoles : "merci de faire comme les autres un point c'est tout", au lieu de remettre en question leurs outils, et de se nourrir des propositions d'améliorations extérieures, non, il faut absolument faire comme caaaaaa!!!!) Mon accompagnateur perso insiste, et l'université refuse, et moi, je m'use.

Bref, c'est dur d'apporter une approche du monde professionnel, comme ils me le demandent, alors que ce sont des universitaires cloisonnés en face, et qui en plus refusent tout apport externe.

Voilà, ce sera le dernier article de la série sur mon retour d'expérience sur la VAE. Comme me l'avait suggéré quelqu'un ici, il reste toujours le cnam, les joies des cours du soir qui commencent à 17H et qui sont ultra compatibles avec une vie professionnelle, et les cours du samedi, qui eux, sont ultra compatibles avec une vie privée.

Franchement, je suis plus sure d'avoir à y gagner quelque chose, peut-être que mon BAC+2 suffira finalement. Et aux entreprises françaises qui me ferment des portes à cause de ça, tant pis pour elle, on n’est pas compatibles.

Attention, absolue hein, pas moins ! (et autres liens RSS WPF)

 

Je suis en train de me constituer grâce à Google Reader une liste d'abonnements RSS à surveiller (principalement sur WPF : message subliminal au passage, si vous connaissez de bons liens, je prends!)

Et en utilisant le moteur de recherche, je tombe sur les flux du "Laboratoire Microsoft" (SupInfo). J'étais ravie de lire et d'apprendre que c'était la référence absolue sur les technologies Microsoft, rien que ça. Heureusement que le site me le dit, sinon je l'ignorerais encore.

Le but n'est pas de raler gratuitement sur un site communautaire qui je suis sure, traite de sujets interessants.

Mais juste de dire "Bachi-Bouzouk, c'est tellement mieux quand les gens sont modestes, non ? Surtout dans l'informatique ! Je suis fatiguée de ces bandes de jeunes effrontés qui, surexités, n'ont pas compris que le meilleur moyen de progresser en informatique, c'est aussi de savoir dire quand on ne sait pas, de savoir oser poser une question au lieu de faire semblant de comprendre, et de savoir accepter qu'on est pas un dieu tout puissant et que non c'est pas honteux. Y a que comme ca qu'on bosse dans des BCT*, bougre d'extrait de cornichon !".

Bon, mamie elise a râlé, c'est bon, ca va mieux. Elle retourne se faire une tisane, elle l'a bien méritée.

 

* Bonnes Conditions de Travail : Environnement qui facilite l'échange, le partage, l'entraide, sans compétition/élitisme stressant et inutile, sans rétention d'information. Le pays des bisounours quoi.

 

Bon, pour revenir à nos moutons sur WPF, je vais faire un post à part que j'éditerais au fur et à mesure : Liens RSS sur WPF

[WPF] Patterns : le MVC, le MV-VM, et le DM-V-VM ... au secours !


Après avoir participé à quelques projets WPF depuis maintenant un peu plus d'un an, je suis dans une démarche de rationalisation, car je dois réaliser une présentation technique de retour d'expérience et bonne pratiques pour Microsoft (entre deux ligne de mon dossier VAE qui n'avance toujours pas snif Zip it!).

Du coup, en fouillant parmi les nombreuses ressources intéressantes autour de ce vaaaaste sujet, j'ai voulu allumer la lumière autour des différents patterns qui existent, pour faciliter entre autre les tests unitaires.

Entre le traditionnel pattern MVC (Model Vue Controlleur) (on peut trouver des tonnes d'articles sur le sujet, il date du début de l'ingénierie logicielle http://msdn.microsoft.com/en-us/magazine/cc188690.aspx), et les nouveaux modèles, dur de s'y retrouver.

Chez Microsoft,John Gossman (ici et ) et Dan Crevier (qui en fait une synthèse) ont initié une approche appelée M-V-VM que l'on pourrait résumer ainsi :

  • le Model : les objets métiers, le code, les données, la logique
  • la View :  l'interface utilisateur, la présentation des données. Elle doit etre séparée du modèle.
  • le ViewModel : permet aux deux parties ci-dessus de communiquer.
Bref, honnêtement, le ViewModel, ou Controleur, ou machin ou bidule, on n'en sait plus trop rien... Hmm

Plat de spaghetti

D'un point de vue pragmatique, un article très interessant sur CodeProject de Josh Smith essaie d'etre plus concret dans son explication, et surtout de l'appliquer aux tests unitaires (le sujet d'origine de ma recherche, sisi). Quand à la théorie, on en vient tous à se demander s'il ne faudrait pas mieux appeler ce pattern le M-V-Poo (je vous laisse deviner ce que poo signifie en anglais... ho et puis non tant pis, voilà).

A cela, vous pouvez rajouter l'ancien projet Prism, renommé CAG (non là c'était vraiment pas un jeu de mot volontaire...), à savoir le Composite Application Guidance for WPF disponible chez Patterns and Practices, qui est censé contenir des conseils, design-patterns, exemples et guides, bref le couteau suisse de survie du développeur WPF. Bon ça, c'est la partie secondaire du projet, puisqu'en fait le principal morceau consiste à faire un équivalent de CAB mais pour WPF.

CAG a été implémenté à ma connaissance dans un seul projet d'exemple : le fameux "stock trader", qui est une implémentation de référence disponible sur le site MSDN.

Cela dit, depuis peu un nouveau framework pour WPF est sortit : Caliburn (aucune idée de ce que ca vaut,  quelqu'un pour se prononcer ?)



Bref, vue la jeunesse de tout celà, autant dire que je suis mal barrée pour ma présentation sur les bonnes pratiques : tout est à définir Big Smile


Allez, dernier lien intéressant à lire quand même, en ce qui concerne toujours le sujet initial (les tests, la qualité, tout ça) : windowsclient.net a sortit tout un document axé sur les tests : WPF_Application_Quality_Guide_CTP2_Final guide expliqué ici.


Ouf, voilà, maintenant, on y voit encore moins clair, hein ? :)

Cela dit, pour les longues soirées d'hiver, vous voilà bien équipé au coin de la cheminée.
(Merci à Stéphane Goudeau pour m'avoir aidé à débroussailler les informations)

Edit : Un livre blanc avec un retour d'expérience vient de sortir : Evolving to .Net 3.5 Apps. Il est pas mal, je n'ai pas encore fini de le lire, mais il présente une étude de cas, et toutes les questions en terme d'architecture, que tout nouveau projet se pose.


Elise

NB : En passant, il faut quand même préciser l'importance et l'extrême clarté de l'article suivant : DM-V-VM part 3: A sample DataModel ; si vous voulez un modèle simple d'appel asynchrone aux données sans bloquer la partie UI de votre application WPF grâce au Dispatcher, voici le modèle qu'il vous faut !

Plus de Messages Page suivante »


Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 10 heures et 50 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 12 heures et 4 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18