Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

TechEd 2007 Barcelone : Levons un coin du voile sur les conférences...

Les techEd débutent la semaine prochaine, l'enregistrement des participants ouvrira dimanche pour fluidifier cette opération fastidieuse.

Voici en avant première ma petite sélection égoïste des conférences, celles que je vais tenter de suivre sous-réserve qu'il n'y a pas de chevauchement. Il s'agit là d'une sélection dans la sélection, j'ai 10 pages recto-verso remplies rien que des conférences qui m'intéressent et cela ne représente qu'une petite partie des sujets proposés ! Les techEd sont d'une rare richesse.

Les données 

  • DAT41-Hol - Introduction to Linq
  • DAT201 - Entity Framework Introduction

Linq est une telle avancée qu'il est préférable de vérifier que je n'ai rien loupé en jouant avec les bêta.. Quand à la nouvelle couche d'abstraction de données de ADO.NET il semble essentiel de la comprendre en profondeur.

Le design

  • DES202 - Design Rich Client Experiences with Expression Blend and WPF
  • DES302 - Design to Blend : How to express your creative self with WPF and Silverlight.

Le mariage entre design et programmation ouvre de nouvelles portes, savoir bien utiliser Blend avec WPF, comment bien séparer le travail du graphiste et du développeur, un thème qui m'apparaît être "le" thème des années à venir. Silverlight s'inscrit parfaitement dans cette vision d'applications riches, belles et portables.

SOA et Business Process

  • SBP09-HOL - Buiding Microsoft WPF Applications
  • SBP11-HOL - Creating Rich 2D and 3D content with WPF

"Comme le nombre de conférences sur WPF est grand dans ta liste Olivier ! " ... "Mais c'est pour mieux te former à mon retour mon enfant.." (à dire sur le ton du loup dans le petit chaperon rouge).

Web Development

  • WEB03-HOL - ASP.NET 2.0 Membership, Login Controls and Role
  • WEB83-HOL - Building Web application with VS 2008
  • WEB302 - Building great Web experiences with Silverlight 1.1
  • WEB92 - Silverlight Monster Factory : using XAML template

Du développement Web on ne dit plus "c'est l'avenir", on y est déjà dans cet avenir dont je parlais il y a plusieurs années... Le Web est essentiel aujourd'hui à la vie des entreprises, qu'il s'agisse de leur publicité, de leur présence institutionnelle, de montrer leurs produits et de les vendre, de gérer le support à la clientèle, etc... Avec ASP.NET, Ajax, Silverlight, WPF, les outils multiplient le champ du possible et ouvrent la voie à de vraies applications Web, luttant à jeu égal avec les applications desktop. Se former à ces techniques, pour mieux vous y former par la suite coule de source...

Windows et Framework

  • WIN305 - WPF data binding in depth
  • WIN403 - Asynchronous and Multithreaded WPF programming
  • WIN308 - Deploying Internationalized applications using ClickOnce
  • WIN306 - Developing application with WCF and XOML prowered Windows Workflow (WF)
  • WIN302WIN303 - .NET Framework 3.5 end-to-end part 1 / part 2 (2 conferences) 

Il y a bien d'autres thèmes, comme Office ou SQL Server, toutes les conférences proposées donnent envie de les suivre, mais même sur 5 jours, du soir au matin, chacun devra faire une sélection difficile autant que draconienne, il n'est humainement pas possible de tout suivre. Surtout qu'il faut garder du temps pour profiter des espaces Internet, visiter les stands des partenaires, discuter avec ses pairs, etc... Sans ajouter la soirée de bienvenue le lundi soir, le Mix français dans un bar à tapas le mercredi, et tout le reste ! Comme je plains ceux qui ne viendront pas Tongue out

En tout cas, "stay tuned!" car durant la semaine je vais mettre à jour le journal des TechEd ici-même ! J'espère que la connexion Wifi de l'appartement que j'ai loué fonctionne.. sinon il faudra attendre mon retour pour lire les papiers qu'inévitablement j'écrirai sur tous les sujets qui m'auront vraiment intéressés ! D'ailleurs dans les milieux autorisés on s'autorise à penser qu'un 4ème livre serait en préparation, et qu'il traiterait de C#, WPF, Silverlight et bien d'autres choses... Allez savoir, parfois la rumeur est fondée...

A bientôt !

TechEd Microsoft 2007 à Barcelone

Les TechEd sont un événement exceptionnel, annuel et européen.

Comme leur nom l'indique, ces conférences sont très orientées technique.

Si on peut donc y apprendre comment tirer le meilleur des outils Microsoft, on peut aussi tester de nouveaux produits, rencontrer ceux qui crééent les outils de dévelopment, ainsi que des experts de tout bord.

 

C'est aussi l'occasion de retrouver ou de rencontrer pour la première fois des pairs, développeurs, chefs de projets, direction des entreprises à la pointe en europe.

Cette année ce sera aussi un bon moyen de déguster des tapas puisque cette manifestation se déroulera du 5 au 9 novembre 2007 à Barcelone !

Je vais tenter durant toute la durée de cette manifestation à laquelle je participe d'envoyer une page par jour sur ce blog, un journal des TechEd au jour le jour.

Evénement Description Lien
Les confs ma petite présélection égoïste de conférences clic
L'arrivée Arrivée sur site ! clic
Jour 1 1ère journée clic
Jour 2 2de journée clic
Jour 3 3eme journée clic
Jour 4 4ème journée clic
Jour 5 5ème journée-Fin des TechEd clic

 

Photos, video (si j'ai le temps de les traiter sur place), et comptes-rendus et dès mon retour un grand papier qui permettra à tous ceux qui n'auront pas pu y aller de se faire une idée de ce qu'ils auront loupé (c'est vache je sais..) et pourquoi il faudra s'y inscrire l'année prochaine !

CCIB - Centre de Convencions Intl. de Barcelona

Lire les XMP depuis les fichiers images

Lire les XMP cachés dans une photo est très important. C'est sous ce format qui se standardise que sont désormais entrées les informations comme le créateur, les copyrights, les mots clés et la description du cliché.

La plupart des logiciels de manipulation d'image savent lire et écrire ces données. Vista le permet aussi via des codecs. Et il est possible d'accéder à ces informations depuis une application C#.

Plusieurs méthodes sont envisageables, mais j'aime bien celle que nous propose un certain Omar. Elle est un peut "sauvage" puisqu'elle consiste à chercher directement les balises XML dans le fichier pour extraire les données plutôt que de suivre la logique d'interprétation complète. Toutefois, pour un accès en lecture, cela peut suffire et ne risque rien d'endommager.

Si le sujet vous intéresse suivez ce lien...

Un tutor simple sur Silverlight 1.1

Benjamin Roux a publié dernièrement un tutor très simple sur Silverlight 1.1 pour VS 2008 bêta.

Bien que dépouillé ce papier permet à ceux qui ne connaissent pas de voir à l'oeuvre cette nouvelle techno MS explosive qui concurrence non pas flash comme on l'entend (trop) souvent, mais plutôt Flex mais en mieux..

Je conseille à ceux qui ne savent pas à quoi ressemble du code Silverlight de lire ce tutor ici.

Les sources du framework .NET publiées avec VS 2008 !

Voilà une bonne nouvelle : Microsoft va intégrer les sources du framework 3.5 dans Visual Studio 2008, notamment pour faciliter le debug.

Pas d'erreur toutefois: le framework ne devient pas "open source" pour autant, on a tout juste le droit de regarder les sources et de s'en servir pour debugger une application.

Nul doute aussi que la lecture du code source du framework permettra de mieux le comprendre, de s'inspirer des solutions et patterns utilisées pour sa conception et ainsi d'écrire un code encore plus en harmonie avec cette plateforme.

L'annonce de cette bonne nouvelle a été faite sur le blog de Scott Guthrie qui est General Manager chez MS et qui s'occupe notamment des équipes en charge du développement du CLR, de ASP.NET, de Silverlight, WPF, IIS 7.0, etc, etc. Un Monsieur sérieux et influent dont l'annonce vaut bien engagement et qui permet de prendre cette nouvelle très au sérieux. Les anglophones peuvent bien entendu lire la totalité de l'annonce sur le blog de Scott.

kick it on DotNetKicks.com

Une instruction méconnue de C#

Quelques mots sur un opérateur méconnu de C# qui pourtant s'avère très efficace..

Vous connaissez la syntaxe: x = (test) ? (sivrai) : (sifaux);
Cela permet en une instruction d'attribuer la valeur "sivrai" ou "sifaux" à x selon le résultat du test. Cela est très pratique et clarifie la lecture du source comparativement à l'utilisation d'un if/else.

Mais connaissez-vous la version courte de cet opérateur conditionnel ?

Le cas d'utilisation est très fréquent dans un code bien protégé : il s'agit en général d'affectuer une valeur à une variable si la valeur est non nulle, sinon d'affecter une valeur par défaut. Exemple :
string s = variable==null ? "chaîne nulle" : variable;
Ici on se protège contre le fait que la variable "variable" peut être nulle. Dans ce cas on affecte à "s" une chaîne par défaut, sinon on affecte "variable". L'utilisation de l'opérateur ?: se justifie pleinement ici (si on suppose par exemple que "variable" est un paramètre passé à la méthode en cours qui peut, même si cela n'est pas prévu, être passé à null). Cet opérateur rend l'écriture plus concise que l'utilisation de if/else qui serait:
string s; 
if (variable==null) s="chaîne nulle"; else s=variable;

Mais il y a encore plus court !

Le cas évoqué étant très fréquent, C# propose un autre opérateur conditionnel, le ??.
Ce dernier est spécialement étudié pour tester les nuls.
De fait, notre test exemple s'écrit désormais :
string s = variable ?? "chaîne vide";

En réalité l'opérateur ?? a surtout été ajouté pour gérer les types nullables. Lorsqu'on affecte une variable nullable à une autre qui ne l'est pas, il est en effet nécessaire de tester le null pour éviter une exception.
Exemple :

int? a = null; 
int y = a ?? -1;

ici, "a" est un integer nullable, que nous initialisons d'ailleurs à null, alors que "y" est un integer "standard" ne pouvant pas prendre la valeur nulle. L'utilisation de ?? est donc obligatoire ici pour éviter l'exception.
On comprend mieux la raison d'être de cet opérateur ajouté dans C# 2.0 puisque c'est dans cette version qu'on aussi été ajoutés les types nullables.

Néanmoins cette instruction très peu utilisée et méconnue rend aussi service en dehors du contexte des types nullables, notamment avec les types objets qui eux sont nullables depuis toujours. Notre exemple avec une variable string en est une illustration.

Bon développements ! (truffés désormais de "??" qui vous feront passer pour un guru de C# :-) )

L'informatique : l'avenir de la politique ?

Nos politiques devraient s'adjoindre les conseils d'informaticiens et de logiciens, ils feraient moins de bêtises...

En effet, seul un logicien possède le savoir et et les outils qui permettrait de mettre de l'ordre dans l'énorme base de règles que sont les lois. Notre pays compte 9000 lois et 120.000 décrets (recensement 2000) qui se contredisent et nous gouvernent, c'est un état de fait délirant. Un grand nettoyage comme le fit Napoléon avec son code éponyme est pourtant aujourd'hui à nouveau nécessaire. Peut-on faire confiance aux politiques en place pour un tel travail ? non, bien entendu.

Quant aux informaticiens ils apprendraient aux politiques que la course à la croissance est une erreur. Pendant des années les constructeurs de PC ont misé sur une vitesse de plus en plus grande des processeurs. Cette course folle s'arrête un jour, et on doit apprendre à faire toujours mieux (le progrès) mais sans forcément disposer d'éléments plus rapides. Meilleures architectures, parallèlisme (multi coeur) sont les réponses de l'informatique. Les politiques et les économistes libéraux devraient s'en inspirer et réviser leur copie.

Il faudrait alors faire comprendre aux politiques que "miser" sur des croissances de 2 à 3 % par an ne peut qu'aggraver la situation : il faudra bien un jour gérer le progrès et le bien être sans aucune croissance absolue, sauf à vouloir monopoliser toutes les ressources de la terre pour une poignée de nations, avec son lot de guerres à venir pour l'appropriation de ces ressources. Capitalisme forcené et libéralisme à l'américaine sont les cancers de nos civilisations, qui causeront notre chutte comme on s'étonne des siècles après qu'un empire comme celui de Rome ait pu un jour s'effondrer.

De même vouloir une natalité forte pour assurer le paiement des retraites est une hérésie. Ces nouveaux-nés, plus nombreux à chaque génération appellent donc encore plus de nouveaux nés dans la génération suivante pour payer leur retraite ! Comment peut-on avoir le cran de baser une politique sur ce qui est un cul-de-sac et un paradoxe logique ? Comment envoyer au mur notre pays avec des arguments aussi farfelus sans que personne ne réagisse ? Comment des gens peuvent-ils appuyer, voter, applaudir les discours d'un président qui fait le "pari" d'une croissance perpétuelle ?

Le bon sens n'est, hélas, pas la chose la mieux partagée, le philosophe se trompait lourdement.

Pister les modifications de schéma (SQL Server)

Maintenir une base de données est toujours délicat notamment en raison des modifications de schéma parfois nécessaires durant le développement d'une application ou sa maintenance.

De même il peut s'avérer utile de pister, chez un client/utilisateur, toute modification du schéma qui pourrait destabiliser l'application (tout en rendant celle-ci coupable des problèmes éventuels, donc engageant votre responsabilité...).

Reconstruire l'historique des modifications de schéma pour ensuite les centraliser dans un script de mise à jour de la base de données peut aussi être un plus très appréciable.

Mais comment pister et conserver ces modifications et où les stocker de façon sûres ?

Avec SQL Server la réponse tient en un simple trigger et en l'utilisation habile du type de donnée XML !

Vous l'avez compris le suivi des modifications sera stocké dans la base elle-même, pratique et fiable cela évite la présence de fichiers annexes risquant d'être perdus.

Etape 1 : Créer la table pour stocker les modifications

CREATE TABLE [Audit].[ModifSchema](

[EventID] [int] IDENTITY(1,1) NOT NULL,
[EventData] [xml] NULL,

PRIMARY KEY CLUSTERED
(
   [EventID]
ASC
) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

Etape 2 : Créer le trigger

CREATE TRIGGER [Trig_AuditModifSchema]
ON
DATABASE
FOR
DDL_DATABASE_LEVEL_EVENTS
AS
INSERT
INTO Audit.ModifSchema(EventData
)
SELECT EVENTDATA
()
GO
ENABLE TRIGGER [Trig_AuditModifSchema] ON DATABASE

Etape 3 : il n'y a pas d'étape 3 c'est FINI !

Désormais, lors de toute modification du schéma de la base de donnée un événement sera enregistré dans la table et il sera possible de consulter, sous la forme d'une entrée XML facilement lisible et analysable par tout outil ou portion de code, l'ensemble des modifications. Voici un exemple : 

<EVENT_INSTANCE>
    <
EventType>ALTER_TABLE</EventType
>
    <
PostTime>2007-06-03T20:12:05.813</PostTime
>
    <
SPID>55</SPID
>
    <
ServerName>CHI100906</ServerName
>
    <
LoginName>MYDOMAIN\myusername</LoginName
>
    <
UserName>dbo</UserName
>
    <
DatabaseName>Sales</DatabaseName
>
    <
SchemaName>dbo</SchemaName
>
    <
ObjectName>Products</ObjectName
>
    <
ObjectType>TABLE</ObjectType
>
    <
TSQLCommand
>
        <
SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON"      QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE"
/>
        <
CommandText>
ALTER TABLE dbo.Products
    DROP COLUMN testremove
       </CommandText
>
  </
TSQLCommand
>
</
EVENT_INSTANCE>

A noter, la fonction EVENTDATA() est fournie par SQL Server à l'intérieur d'un trigger DLL et renvoie toutes les données sous la forme d'un document XML.

Cette idée astucieuse a été publiée par plusieurs auteurs sous différentes formes, je ne m'en attribue pas la paternité. On la retrouve par exemple sur le Richard's C# blog, un blog riche que je conseille pour ceux qui lisent l'anglais, of course.

 

kick it on DotNetKicks.com

Nouvelle rentrée, nouveau blog !

Bienvenue à toutes et à tous !

"Vous mé réconnéssé ? " Laughing

Pour ceux qui ne savent pas qui je suis, en deux mots : dirigeant de e-naxos, auteur de plusieurs ouvrages sur Delphi et C# chez Eyrolles, partenaire Borland de longue date (même si depuis le tournant Codegear nos voies se sont séparées), partenaire Microsoft. Ceux qui fréquentent ces milieux m'ont reconnu.

Ce nouveau blog, installé sur mon propre serveur, va me permettre de m'exprimer avec le maximum de liberté.

Non pas que le blog que je possède de longue date sur Developpez soit spécialement censuré, mais vous savez ce que c'est, il ne faut pas froisser untel, ou tel autre qui prend la mouche parce qu'on ne dit pas que du bien de tel produit ou éditeur ... Censure réelle ou auto-censure, le résultat est le même.

J'avais donc besoin d'un espace autogéré, j'ai trouve BlogEngine, un très beau moteur de blog open source en C#, et voilà comment est né Dot.Blog ! Blog avant tout technique, mes humeurs n'y seront pas donc forcément absentes mais Dot.Blog ne sera pas un blog d'opinion. 

C#, le framework .NET, Visual Studio, SQL Serveur, Silverlight, Ajax, Linq, sont autant de sujets qui me viennent à l'esprit et qui feront bientôt l'objet de billets ici.

Alors marquez cette page et revenez souvent y lire et y commenter les billets !

A très bientôt,

Olivier