Wednesday 31 August 2011

Jour-0 : Déblocage de mon windows phone 7 - French version

J-0 ou le monde ne tient que sur un fil
5 Heures après l'espoir de toute délivrance, je réalise maintenant que le monde ne tient qu'à un fil. Ce fil  aussi maléable qu'un fil d'or pouvant être divisé en le millième de son diamètre, aussi conductrice qu'un super conducteur utilisé dans des centraux nucléaires, aussi débiteur que le compte d'un grand cheick du moyen orient ou d'un oligark russe d'antan, mais aussi imprévu selon son humeur, ne nous prévient guère quand il décide d'imiter la tortue de La Fontaine. Je l'attendais aussi pro-actif que les personnages Michaellangelo, Leonardo, Donatello, Raphaello des tortues Ninja, mais malheuresement ce ne fut pas le cas. Et me voici entrainé dans une congruence d'attente quaternaire dont seul le fil décidera du mutliplicateur. Par analogie, toujours une analogie qui permet de sous entendre l'idée de coincidence, ne pourrait-on pas assimiler la fin du Monde par la rupture de ce Fil du Monde sans même que le Fils de l'Homme ne soit revenu dans le Monde ?

Le fil, vous l'avez deviné, c'est Internet...et sans lui, vous n'aurez jamais pu lire cette ligne


Tuesday 30 August 2011

Jour-1 : Déblocage de mon windows phone 7 - French version

J-1, l'impatience est au zenith. A ce moment précis, ai-je le droit de me comparer à ces dirigeants qui, au nom de la Liberté et de la Démocratie, cherchent par tous les moyens la reconnaissance internationale ? Ben oui, nous sommes par analogie au même pied d'estale. D'abord, il y a cette notion de Liberté qui procure implicitement et naturellement à son possesseur un état de droit, qui relativise à son tour la notion de Loi. Si j'ai payé un smartphone, la possession me revient. Mais malheuresement pour moi, heureusement pour eux (qui ont tout prévu ), la propriété intellectuelle n'est pas incluse dans ce package. Je me pose alors la question suivante : sur un windows phone 7, ma liberté s'arrête t-elle là ou commence la leur ? Existe t-il une sorte de 'no mans land' entre ces deux surfaces ? Je ne pense pas. Car ma liberté revient sur l'utilisation la plus simple et normale que possible de leur produit, sans aucune tentative d'affranchissement de la zone reservée à cet effet. Ensuite vient la notion de Démocratie... je ne me comparerais pas aux geeks qui d'un seul coup d'oeil sur la coque, arrivent à déchiffrer le secret des CMS et des sensors,accelerometers et exposeront par la suite un moyen de jailbreaker le 'produit', balancerons sur le net des articles au nom des quidam que sont razG0vor ou ben093x. Car nous le savons tous, la vérité n'est pas toujours bonne à dire, monsieur Assange en a payé les frais. Je me limiterais simplement à l'exploitation des API fournis par Microsoft comme si j'étais cet élève studieux, paisible, docile, serein lors du jour d'exam.

Enfin, au nom de la Liberté, de la Démocratie et du Dollar, je t'achète


Monday 29 August 2011

Jour-2 : Déblocage de mon windows phone 7

Aujourd'hui c'est le grand jour, presque,... car dans 2 jours, plus exactement dans 1.5 jours, je vais enfin pouvoir déployer mes applications directement sur mon windows phone 7... adieu monsieur l'émulateur, vous m'avez bien aidé tout au long de ces 8 mois de travail intense mais le jour est maintenant venu pour que vous laissiez place à votre sosie... petit frère plutôt ou grand frère ??? ( qu'importe....je ne vais pas en faire l'histoire de l'oeuf et de la poule). Monsieur l'émulateur, l'heure est venue pour vous de quitter le pouvoir, l'ultimatum est déjà lancé... on m'a déjà gelé un avoir de 99$ dans cette affaire, encore faut'il que je vous dise : ils me taxeront encore 50$ au cas ou je ferai une réinitialisation de mon téléphone. 
Mais pour le moment, profitez bien de vos dernières nuits de pouvoir


A suivre...

Unlocking Windows Phone 7 Device - Day-2

Finally, after 8 months of hard training and practices on windows phone 7 programming, I've decided to make one real big step : deploy all my apps on my Samsung Omnia 7. Unlike Android (yes, I was also a developper on this platform from 2.1) where this process is free of charge and no need to do any subscription, it becomes  non-free and needs to pay some fees to unlock the device. Due to the region constraints, they demand me to subscribe on yallaps. It costs me 99$, including a free unlock device + 100 credits. The unlocking process seems to be tricky. They ( guys from yallaps as i may know), will unlock it remotely. They said me that I just need the SDK platform developer tools, the Zune software and plug my phone onto pc during the process.
I'm looking forward this D-0, the independence D-0,
to be continued.....
 

Sunday 28 August 2011

The current display adapter does not meet the emulator requirements to run XNA Framework applications.

Yesterday, I've bought an old DELL laptop running windows vista SP1 for my windows phone 7 development purpose.
Everything working well.... noooooo.... when I tried to deploy the project to Windows Phone 7 emulator, I've got an error at runtime saying me : 

The current display adapter does not meet the emulator requirements to run XNA Framework applications
.   
After googling, I've found that many user encountered this error. I've tried all of the fix solutions : installing KB,
upgrading system, drivers, directX, changing keys into regedit but not resolve my problem.

My config before any changes was :
Windows Vista SP1.
Graphics : Mobile Intel(R) 965 Express Chipset Family
Divers version : 7.14.0010.1504
Direct X : 11
WDDM : 1.0
DDI Version : 9Ex



This is my config after updates:
Windows Vista SP2.
Graphics : Mobile Intel(R) 965 Express Chipset Family
Divers version : 8.14.0010.1930
Direct X : 11
WDDM : 1.0
DDI Version : 10


You can see yours use the dxdiag command.

After reading the requirements for developing under XNA Framework 4.0 Games, I've found that problem is due to the WDDM version used by windows vista.
Windows 7 uses a WDDM 1.1 which provide a lot of major improvements, especially on the rendering process (GDI/++).
Windows vista uses WDDM 1.0 which is not compatible with XNA Frmwk. However, you can upgrade to 1.1 on Vista but it will have any effect because Windows Vista will always use its original behavior on the rendering process. You can find more information about it on the docs book of XNA Framework.

Conclusion :

If you are under Vista :
When having that error, don't spend your time to upgrade or trying tips on forum :
- use WINDOWS 7 version for your XNA Game development or ... stay on it and use only Silverlight App, they work well.
- or if your phone is dev-unlocked, try to deploy directly to your device.


If this article was helpful for you, please click on one advertisement link on the blog page ;)

Sunday 21 August 2011

Tutoriel sur Microsoft Dynamic CRM 4.0 SDK - Partie 1- French Version

Microsoft Dynamic CRM (MSDCRM) est un outil de gestion des relations clients, de ventes et de marketing, ce sont entre autre ses fonctionnalités primaires. Celles-ci pourront être étendues par la suite et paramètrées pour répondre au besoin de la société.
Dans cette article, je me concentrerais surtout dans l'aspect programmation à travers le SDK fourni par Microsoft qui va permettre de communiquer sur le serveur CRM via les APIs.
Cet aspect s'oriente surtout sur la communication vers la base de données SQL server de l'application car toutes les données qui sont sur le MSDCRM sont stockées dans des tables métiers ou système.

A la base, MSDCRM expose 3 web services, dans la version 4.0, ce sont des webservices de type asmx qui sont exposés par le système.

Ainsi nous avons, 2 webservices  exposés de manière explicite (  via la page de configuration ) :
- CrmService.asmx : expose des méthodes pour communiquer avec les entités métiers.
- MetadataService.asmx : expose des méthodes agissant sur les métadonnées.

En enfin, le 3ème, exposé de maniere implicite :
- DiscoveryService.asmx : qui va permettre d'interroger le serveur pour récuperer entre autre, les FQDN des 2 autres webservices précedents.


Comment fonctionne le DiscoveryService.asmx ?

Ce service est exposé via l'URL : http://SERVER/MSCrmServices/2007/ad/crmdiscoveryservice.asmx



Ce bout de code montre le fonctionnement de ce webservice :

CrmDiscoveryService discoveryService = new CrmDiscoveryService();
discoveryService.UseDefaultCredentials = true;
discoveryService.Url = "http://
SERVER/MSCrmServices/2007/ad/crmdiscoveryservice.asmx";
RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest();
RetrieveOrganizationsResponse orgResponse = (RetrieveOrganizationsResponse)discoveryService.Execute(orgRequest);
OrganizationDetail orgInfo = null;
foreach (var item in orgResponse.OrganizationDetails)
{
          if(item.OrganizationName == "DEVENVA")
                {   
                  orgInfo = item;
                  break;               
                }
}
Comme vous le voyez, le SDK a une forme de type messagecontract en WCF, un objet de type Request est passé en paramètre et un objet de type Response est retourné par la méthode Execute de l'objet discoveryService qui est une instance de la référence au webservice. Lors de l'appel à cette méthode, le serveur fait une recherche lookup, ce qui lui permet d'interroger toutes les organisations déclarées sur le serveur CRM.
Plus particulièrement, je ne désire que travailler sur l'organisation DEVENVA, ce qui justifie le filtrage item.OrganizationName == "DEVENVA", l'objet orgInfo contiendra alors des infos relatives à cette organisation.
En particulier, les champs CrmServiceUrl et CrmMetadataServiceUrl contiendront les URL des 2 webservices
CrmService.asmx et MetadataService.asmx respectivement.

CrmService.asmx

Comme évoqué précedemment, ce webservice expose des méthodes qui permettent de communiquer avec les entités métiers via les protocoles http, https. Nous verrons plus bas qu'il y a aussi un moyen de communiquer avec ces même entités via un objet de type "DataContext" qui permettra de manipuler des styles de programmation semblables à Linq to SQL.
TODO : Pour pouvoir utiliser le webservice, vous devez ajouter une réference web sur votre visual studio.
Attention : Sur visual studio 2008/2010, il faut faire un "Add Service Reference" puis  cliquer sur "Advanced" et enfin sur "Add Web Reference" dans la partie Compatibilité. Ceci parce que le service sous la version Dynamic CRM 4.0 est encore sous l'ancienne forme .NET 2.0.


Le code ci-dessous permet d'insérer un nouvel enregistrement dans l'entité Account. Après l'exécution, une nouvelle ligne devra s'ajouter sur la liste de Account.



//Il est necessaire de creer un token pour authentifier le client aupres du serveur, ici CrmServiceApp est le //nom de ma solution pour ce tutoriel et CrmServiceClient le nom que j'ai donné à mon web reference
CrmServiceApp.CrmServiceClient.CrmAuthenticationToken token = new CrmServiceApp.CrmServiceClient.CrmAuthenticationToken();
token.AuthenticationType = 0; //correspond a une auth type "Integrated Security"
token.OrganizationName = "DEVENVA";


//Ici, j'ai directement preciser l'URL du crmService, nous avons vu que nous avons pu
//utiliser le webservice discovery pour le recuperer. Dans mon cas, je connais directement l'URL
//Une bonne pratique consiste à mettre l'URL dans le fichier de config/
CrmServiceApp.CrmServiceClient.CrmService crmService = new CrmServiceApp.CrmServiceClient.CrmService();
crmService.Url = "http://SERVER/MSCrmServices/2007/CrmService.asmx";
crmService.CrmAuthenticationTokenValue = token;
crmService.Credentials = System.Net.CredentialCache.DefaultCredentials;


//Crée un objet de type account qui représente un Account , puis assigne quelques propriétés
CrmServiceApp.CrmServiceClient.
account nv = new CrmServiceApp.CrmServiceClient.account();
nv.name = "NOM_FICTIF";
Guid eoleId = crmService.Create(nv);



Après cette commande, un nouvel enregistrement sera créé dans la liste des Accounts

Comme vous le voyez, c'est l'objet crmService qui sert de proxy pour communiquer avec le service.
La méthode Create fait partie de la liste des méthodes disponibles. Son nom est intuitif sur la fonctionnalité proposée.


 La deuxième facon pour communiquer avec le serveur CRM est de passer par les classes de mappage pour traiter les entités comme dans un outil ORM.
Cette 2eme possibilité ressemble exactement à la connexion et manipulation en Linq to SQL :
a) déclaration d'une chaine de connexion dans le fichier de configuration
b) Creation d'un objet context
c) Invocation d'une entité cible
d) Application des méthodes de l'objet context pour persister les changements.

Nous verrons ce deuxième point dans la 2eme partie du tutoriel. 

Si cette article vous  a été bénéfique, merci de cliquer un lien de pub ( seulement un, deux c'est mieux). A bientot