<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Julien Hatzig</title>
	<atom:link href="http://jhatzig.falena.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://jhatzig.falena.fr</link>
	<description>Technologies .Net</description>
	<lastBuildDate>Wed, 14 Mar 2012 19:42:49 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>[WP7] Coding4Fun &#8211; MessagePrompt</title>
		<link>http://jhatzig.falena.fr/2012/03/14/wp7-coding4fun-messageprompt/</link>
		<comments>http://jhatzig.falena.fr/2012/03/14/wp7-coding4fun-messageprompt/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 19:39:34 +0000</pubDate>
		<dc:creator>Julien Hatzig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[CODE4FUN]]></category>
		<category><![CDATA[MANGO]]></category>
		<category><![CDATA[MESSAGEPROMPT]]></category>
		<category><![CDATA[USERCONTROL]]></category>
		<category><![CDATA[VISUAL STUDIO]]></category>
		<category><![CDATA[windows phone 7]]></category>

		<guid isPermaLink="false">http://jhatzig.falena.fr/?p=272</guid>
		<description><![CDATA[Le contrôle MessagePrompt présent dans le coding4fun toolkit permet à l&#8217;origine d&#8217;afficher un message utilisateur, pouvant remplacer la traditionnelle Messagebox. Création d&#8217;un MessagePrompt &#171;&#160;classique&#160;&#187; N&#8217;oubliez pas de télécharger et d&#8217;ajouter la référence à la librairie Coding4Fun (disponible via Nugget Manager ou sur le site codeplex. On créé une méthode qui permettra d&#8217;afficher un MessagePrompt private void OuvrirMessagePrompt() { [...]]]></description>
			<content:encoded><![CDATA[<p>Le contrôle MessagePrompt présent dans le <a title="Coding4Fun Toolkit" href="http://coding4fun.codeplex.com/" target="_blank">coding4fun toolkit</a> permet à l&rsquo;origine d&rsquo;afficher un message utilisateur, pouvant remplacer la traditionnelle Messagebox.</p>
<p><span id="more-272"></span></p>
<h2>Création d&rsquo;un MessagePrompt &laquo;&nbsp;classique&nbsp;&raquo;</h2>
<p>N&rsquo;oubliez pas de télécharger et d&rsquo;ajouter la référence à la librairie Coding4Fun (disponible via Nugget Manager ou sur le site codeplex.</p>
<p><span style="text-decoration: underline;">On créé une méthode qui permettra d&rsquo;afficher un MessagePrompt</span></p>
<pre class="brush: csharp; gutter: true"> private void OuvrirMessagePrompt()
 {
      MessagePrompt messageInformation = new MessagePrompt();
      messageInformation.Title = &quot;Information&quot;;
      messageInformation.Body = &quot;Votre texte&quot;;
      messageInformation.IsCancelVisible = true;
      messageInformation.Show();
}</pre>
<ul>
<li><span style="text-decoration: underline;">Voici le résultat obtenu :</span></li>
</ul>
<p><a href="http://jhatzig.falena.fr/wp-content/uploads/2012/03/Capture.png"><img class="size-medium wp-image-276 alignleft" title="MessagePrompt_Default" src="http://jhatzig.falena.fr/wp-content/uploads/2012/03/Capture-300x151.png" alt="Message Prompt Basique" width="300" height="151" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Le resultat est plutôt simple, on peut jouer avec les propriétés pour modifier la taille et/ou la couleur de la police, afficher ou non le bouton cancel.</p>
<h2>Création d&rsquo;un MessagePrompt avec un UserControl</h2>
<p>Si on souhaite faire une authentification, avec un identifiant et un mot de passe, à la place de le faire via une page dédiée, pourquoi ne pas intégrer directement un UserControl au MessagePrompt.</p>
<p>Voici ma solution :</p>
<ul>
<li><span style="text-decoration: underline;">On créé tout d&rsquo;abord notre UserControl</span></li>
</ul>
<pre class="brush: csharp; gutter: true">&lt;UserControl x:Class=&quot;Zagaz.Controls.UserControls.ConnexionZagaz&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    mc:Ignorable=&quot;d&quot;
    FontFamily=&quot;{StaticResource PhoneFontFamilyNormal}&quot;
    FontSize=&quot;{StaticResource PhoneFontSizeNormal}&quot;
    Foreground=&quot;{StaticResource PhoneForegroundBrush}&quot;
    d:DesignHeight=&quot;250&quot; d:DesignWidth=&quot;480&quot;&gt;

    &lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;Transparent&quot;&gt;
        &lt;StackPanel  Margin=&quot;0,0,0,10&quot;&gt;
            &lt;TextBlock  Text=&quot;Identifiant :&quot; Margin=&quot;10,0,0,0&quot; /&gt;
            &lt;TextBox  x:Name=&quot;Txtidentifiant&quot; Margin=&quot;0,0,0,0&quot; /&gt;
            &lt;TextBlock Text=&quot;Mot de passe :&quot; Margin=&quot;10,0,0,0&quot; /&gt;
            &lt;PasswordBox x:Name=&quot;Txtmotdepasse&quot; Margin=&quot;0,0,0,0&quot; /&gt;
            &lt;CheckBox  Margin=&quot;0,-10,0,0&quot; x:Name=&quot;resterconnecter&quot;&gt;
                &lt;TextBlock Text=&quot;Rester connecté&quot;&gt;&lt;/TextBlock&gt;
            &lt;/CheckBox&gt;
        &lt;/StackPanel&gt;
    &lt;/Grid&gt;
&lt;/UserControl&gt;</pre>
<pre class="brush: csharp; gutter: true"></pre>
<ul>
<li><span style="text-decoration: underline;">Notre UserControl :</span></li>
</ul>
<p><a href="http://jhatzig.falena.fr/wp-content/uploads/2012/03/UserControl.png"><img class="alignleft size-medium wp-image-281" title="UserControl" src="http://jhatzig.falena.fr/wp-content/uploads/2012/03/UserControl-300x161.png" alt="" width="300" height="161" /></a>            </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<ul>
<li><span style="text-decoration: underline;">On créer un MessagePrompt et on passe à la propriété &laquo;&nbsp;Body&nbsp;&raquo; notre UserControl :</span></li>
</ul>
<pre class="brush: csharp; gutter: true">private void CreerMessagePrompt()
{
   MessagePrompt connexionUC = new MessagePrompt();
   connexionUC.Title = &quot;Connexion Zagaz&quot;;
   connexionUC.Body = new connexionUserControl();
   connexionUC.IsCancelVisible = true;
   connexionUC.Completed += (me, margs) =&gt; {
            };
   connexionUC.Show();
}</pre>
<p><span style="text-decoration: underline;">Un petit coup de F5 sur votre solution et voila le résultat attendu :</span></p>
<p><a href="http://jhatzig.falena.fr/wp-content/uploads/2012/03/MessagePromptUserControl.png"><img class="alignnone size-medium wp-image-282" title="MessagePromptUserControl" src="http://jhatzig.falena.fr/wp-content/uploads/2012/03/MessagePromptUserControl-300x272.png" alt="" width="300" height="272" /></a></p>
<p>Notre UserControl est bien intégré cependant comment faire pour récupérer l&rsquo;identifiant, le mot de passe, et le choix de l&rsquo;utilisateur :</p>
<ul>
<li>On retourne dans le code behind de notre UserControl, on rajoute trois propriétés publiques dans le UserControl :</li>
</ul>
<pre class="brush: csharp; gutter: true">public partial class connexionUserControl : UserControl
    {
        public string Identifiant { get { return Txtidentifiant.Text; } }
        public string MotdePasse { get { return Txtmotdepasse.Password; } }
        public bool? ResterConnecte { get { return resterconnecter.IsChecked;}}

        public connexionUserControl()
        {
            InitializeComponent();
        }
    }</pre>
<ul>
<li>Dans notre méthode nous avions laissez l&rsquo;évenement Completed vide.<br />
On peut le modifier pour y ajouter :</li>
</ul>
<pre class="brush: csharp; gutter: true">connexionUC.Completed += (me, margs) =&gt; {
if (margs.PopUpResult != PopUpResult.Cancelled)
{
      connexionUserControl cnx = connexion.Body as connexionUserControl;
      if (cnx != null)
      {
           string identifiant = cnx.Identifiant;
           string motdepasse = cnx.MotdePasse;
           bool? choixutilisateur = cnx.ResterConnecte;
      }
}};</pre>
<p>Et voila le tour est joué <img src='http://jhatzig.falena.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  !</p>
]]></content:encoded>
			<wfw:commentRss>http://jhatzig.falena.fr/2012/03/14/wp7-coding4fun-messageprompt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[WP7] AlloGarage &#8211; Ma première application Windows Phone 7</title>
		<link>http://jhatzig.falena.fr/2011/12/17/wp7-allogarage-ma-premiere-application-windows-phone-7/</link>
		<comments>http://jhatzig.falena.fr/2011/12/17/wp7-allogarage-ma-premiere-application-windows-phone-7/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 11:57:47 +0000</pubDate>
		<dc:creator>Julien Hatzig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[allogarage]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[avis]]></category>
		<category><![CDATA[garage]]></category>
		<category><![CDATA[localisation]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[windows phone 7]]></category>

		<guid isPermaLink="false">http://jhatzig.falena.fr/?p=228</guid>
		<description><![CDATA[Aujourd&#8217;hui je vais vous présenter ma première application sous Windows Phone 7. Il s&#8217;agit de AlloGarage. Application : AlloGarage , c&#8217;est tout d&#8217;abord un site internet créer par Nicolas Chevallier, permettant de trouver un bon garage auto pour la réparation, le dépannage ou l&#8217;entretien de votre voiture. Les garages sont classés grâce aux avis d&#8217;autres internautes et [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: -webkit-auto;"><img class=" wp-image-229 alignright" style="border-style: initial; border-color: initial;" title="AlloGarage" src="http://jhatzig.falena.fr/wp-content/uploads/2011/12/logonoir-300x118.png" alt="" width="240" height="94" /></p>
<h2 style="text-align: -webkit-auto;"></h2>
<p style="text-align: left;">Aujourd&rsquo;hui je vais vous présenter ma première application sous Windows Phone 7.<br />
Il s&rsquo;agit de AlloGarage.</p>
<h2 style="text-align: left;"><span style="text-decoration: underline;"><span id="more-228"></span> </span>Application :</h2>
<p style="text-align: left;">AlloGarage , c&rsquo;est tout d&rsquo;abord un site internet créer par Nicolas Chevallier, permettant de trouver un bon garage auto pour la réparation, le dépannage ou l&rsquo;entretien de votre voiture. Les garages sont classés grâce aux avis d&rsquo;autres internautes et vous permet d&rsquo;éviter ainsi les arnaques. <a style="font-size: 13px; font-weight: normal;" title="AlloGarage.fr" href="http://allogarage.fr" target="_blank">AlloGarage.fr</a></p>
<h2 style="text-align: left;">Présentation :</h2>
<p style="text-align: left;">AlloGarage, vous permet en fonction de votre position géographique, de localiser les garages les plus proches en affichant la distance vous séparant du garage, la possibilité d&rsquo;afficher son numéro de téléphone, son site internet, son adresse mail. Vous pouvez en un clic calculer l’itinéraire pour vous y rendre. AlloGarage permet également la consultation des avis déposés par les autres utilisateurs, vous pouvez également déposer votre avis sur un garage récemment visité.</p>
<h2 style="text-align: left;">Lien pour la télécharger :</h2>
<p style="text-align: left;"><a title="Présentation d'AlloGarage sur WindowsPhone.com" href="http://www.windowsphone.com/fr-FR/apps/9a2b40bf-41b4-4857-bd1e-889603881283" target="_blank">http://www.windowsphone.com/fr-FR/apps/9a2b40bf-41b4-4857-bd1e-889603881283</a></p>
<table>
<tbody>
<tr>
<td>
<p><div id="attachment_246" class="wp-caption alignnone" style="width: 190px"><a href="http://jhatzig.falena.fr/wp-content/uploads/2011/12/accueil.png"><img class="size-medium wp-image-246" title="AlloGarage_PageAccueill" src="http://jhatzig.falena.fr/wp-content/uploads/2011/12/accueil-180x300.png" alt="" width="180" height="300" /></a><p class="wp-caption-text">Garages à proximité de votre position</p></div></td>
<td>
<p><div id="attachment_248" class="wp-caption alignnone" style="width: 190px"><a href="http://jhatzig.falena.fr/wp-content/uploads/2011/12/7526856c-a37b-4026-a723-e4b79e65b507.png"><img class="size-medium wp-image-248" title="7526856c-a37b-4026-a723-e4b79e65b507" src="http://jhatzig.falena.fr/wp-content/uploads/2011/12/7526856c-a37b-4026-a723-e4b79e65b507-180x300.png" alt="" width="180" height="300" /></a><p class="wp-caption-text">Consultation de la fiche d&#39;un Garage</p></div></td>
<td>
<p><div id="attachment_252" class="wp-caption alignnone" style="width: 190px"><a href="http://jhatzig.falena.fr/wp-content/uploads/2011/12/7704a519-be83-4a01-8672-95bfebfd3bb7.png"><img class="size-medium wp-image-252" title="7704a519-be83-4a01-8672-95bfebfd3bb7" src="http://jhatzig.falena.fr/wp-content/uploads/2011/12/7704a519-be83-4a01-8672-95bfebfd3bb7-180x300.png" alt="" width="180" height="300" /></a><p class="wp-caption-text">Evaluation d&#39;un garage</p></div></td>
</tr>
<tr>
<td>
<p><div id="attachment_255" class="wp-caption alignnone" style="width: 190px"><a href="http://jhatzig.falena.fr/wp-content/uploads/2011/12/parametres.png"><img class="size-medium wp-image-255" title="parametres" src="http://jhatzig.falena.fr/wp-content/uploads/2011/12/parametres-180x300.png" alt="" width="180" height="300" /></a><p class="wp-caption-text">Une gestion des paramètres</p></div></td>
<td>
<p><div id="attachment_254" class="wp-caption alignnone" style="width: 190px"><a href="http://jhatzig.falena.fr/wp-content/uploads/2011/12/7e207c2d-b9a0-4e78-9fc0-989c9deb3042.png"><img class="size-medium wp-image-254" title="7e207c2d-b9a0-4e78-9fc0-989c9deb3042" src="http://jhatzig.falena.fr/wp-content/uploads/2011/12/7e207c2d-b9a0-4e78-9fc0-989c9deb3042-180x300.png" alt="" width="180" height="300" /></a><p class="wp-caption-text">Un thème qui s&#39;adapte en fonction de l&#39;accentuation de votre WP7</p></div></td>
<td>
<p><div id="attachment_257" class="wp-caption alignnone" style="width: 190px"><a href="http://jhatzig.falena.fr/wp-content/uploads/2011/12/ceeb35df-2380-4f45-a24a-8eb0becb865f.png"><img class="size-medium wp-image-257" title="ceeb35df-2380-4f45-a24a-8eb0becb865f" src="http://jhatzig.falena.fr/wp-content/uploads/2011/12/ceeb35df-2380-4f45-a24a-8eb0becb865f-180x300.png" alt="" width="180" height="300" /></a><p class="wp-caption-text">Consultation des avis</p></div></td>
</tr>
</tbody>
</table>
<h2>La suite :</h2>
<p>La prochaine de version d&rsquo;AlloGarage est déjà sur les rails, elle permettra :</p>
<p>- L&rsquo;ajout d&rsquo;un garage<br />
- La gestion des favoris<br />
- L&rsquo;historique des recherches<br />
- Amélioration des transitions lors de la navigation<br />
- &#8230;</p>
<h2>Des idées ? Des remarques ? Aidez moi !</h2>
<div>Vous avez des idées pour améliorer l&rsquo;application ? Trouver un bug dans l&rsquo;application ? Des remarques a faire ? Je suis à votre écoute, n&rsquo;hésitez pas a publier un commentaire pour m&rsquo;aider !</div>
<div></div>
<div><em>A très bientôt <img src='http://jhatzig.falena.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  !</em></div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://jhatzig.falena.fr/2011/12/17/wp7-allogarage-ma-premiere-application-windows-phone-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[.NET] Requêtes compilées avec Entity Framework</title>
		<link>http://jhatzig.falena.fr/2011/09/18/ef-net-requetes-compilees-avec-entity-framework/</link>
		<comments>http://jhatzig.falena.fr/2011/09/18/ef-net-requetes-compilees-avec-entity-framework/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 14:40:29 +0000</pubDate>
		<dc:creator>Julien Hatzig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[Compiled]]></category>
		<category><![CDATA[EF]]></category>
		<category><![CDATA[Entities]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Linq]]></category>
		<category><![CDATA[Queries]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://jhatzig.falena.fr/?p=185</guid>
		<description><![CDATA[Lorsque vous développez un projet qui effectuera beaucoup d&#8217;appels en base de données, il est important d&#8217;optimiser au maximum vos requêtes. Lors de l’exécution de requêtes de type &#171;&#160;LINQ TO Entities&#160;&#187;, les requêtes subissent 2 traductions, elles sont d&#8217;abord traduites sous la forme &#171;&#160;Expression Tree&#160;&#187; et ensuite en &#171;&#160;SQL&#160;&#187; pour être interprétées par SQL Server. [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsque vous développez un projet qui effectuera beaucoup d&rsquo;appels en base de données, il est important d&rsquo;optimiser au maximum vos requêtes.</p>
<p><span id="more-185"></span></p>
<p>Lors de l’exécution de requêtes de type &laquo;&nbsp;LINQ TO Entities&nbsp;&raquo;, les requêtes subissent 2 traductions, elles sont d&rsquo;abord traduites sous la forme &laquo;&nbsp;Expression Tree&nbsp;&raquo; et ensuite en &laquo;&nbsp;SQL&nbsp;&raquo; pour être interprétées par SQL Server.</p>
<p>Avec les requêtes compilées, lors du premier traitement votre requête est également traduite sous la forme <a href="http://msdn.microsoft.com/en-us/library/bb397951.aspx">&laquo;&nbsp;Expression Tree&nbsp;&raquo;</a>, puis en &laquo;&nbsp;SQL&nbsp;&raquo; mais elle conservera la traduction &laquo;&nbsp;Expression Tree&nbsp;&raquo;, ce qui permet une exécution plus rapide lors des traitements futurs. Les gains sont d&rsquo;environ 80%.</p>
<ul>
<li><span style="text-decoration: underline;">Exemple de requête compilée (C#) : </span></li>
</ul>
<pre class="brush: csharp; gutter: true">static readonly Func&lt;ModeleEntities, Decimal, IQueryable&lt;Commandes&gt;&gt; getCommandeCQ =
                    CompiledQuery.Compile&lt;ModeleEntities, Decimal, IQueryable&lt;Commandes&gt;&gt;
                    ((ctx, montant) =&gt; from cmd in ctx.Commandes
                                       where cmd.Montant &gt;= montant
                                       select cmd);</pre>
<ul>
<li><span style="text-decoration: underline;">Appel d&rsquo;une requête compilée (C#) :</span></li>
</ul>
<pre class="brush: csharp; gutter: true">Decimal montantMin = 200.50;
IQueryable mesCommandes = getCommandeCQ.Invoke(ModeleEntities, montantMin);</pre>
<p>Attention cependant, car la méthode <a href="http://msdn.microsoft.com/fr-fr/library/bb534303.aspx">Func&lt;&gt;</a> n&rsquo;accepte que 4 arguements en entrée, et 1 en sortie.</p>
<pre class="brush: csharp; gutter: true">Func&lt;Arg1,Arg2,Arg3,Arg4,Out1&gt;
Func&lt;Context,int,int,int,IQueryable&lt;Commande&gt;)</pre>
<p>Bon développement a tous!</p>
]]></content:encoded>
			<wfw:commentRss>http://jhatzig.falena.fr/2011/09/18/ef-net-requetes-compilees-avec-entity-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C#-ASP.NET] Prise en main de l&#8217;API Twitter</title>
		<link>http://jhatzig.falena.fr/2011/04/04/prise-en-main-de-lapi-twitter/</link>
		<comments>http://jhatzig.falena.fr/2011/04/04/prise-en-main-de-lapi-twitter/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 21:55:39 +0000</pubDate>
		<dc:creator>Julien Hatzig</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[SUPINFO]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[linqtotwitter]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[projet]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.leblog-it.fr/?p=108</guid>
		<description><![CDATA[Aujourd&#8217;hui nous allons vous montrer comment mettre en place dans une application de type ASP/C# une connexion à Twitter grâce à l&#8217;API Twitter et Linq2Twitter. &#160; Etape n° 1 : Enregistrer votre application sur Twitter La première étape est d&#8217;enregistrer votre application web sur twitter sur dev.twitter.com Votre application doit être de type Broswer avec un accès [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left;">
<div>Aujourd&rsquo;hui nous allons vous montrer comment mettre en place dans une application de type ASP/C# une connexion à Twitter grâce à <span style="text-decoration: underline;">l&rsquo;API Twitter et Linq2Twitter.</span></div>
</div>
<p><span id="more-108"></span></p>
<div style="text-align: center;"><span style="text-decoration: underline;"><img class="size-full wp-image-114" title="linq2twitter" src="http://jhatzig.falena.fr/wp-content/uploads/2011/04/linq2twitter.png" alt="" width="144" height="41" /></span></div>
<p>&nbsp;</p>
<ul>
<li><strong><span style="text-decoration: underline;">Etape n° 1 : Enregistrer votre application sur Twitter</span></strong>
<div class="mceTemp">La première étape est d&rsquo;enregistrer votre application web sur twitter sur dev.twitter.com</div>
</li>
</ul>
<div>Votre application doit être de type <strong>Broswer </strong>avec un accès <strong>Read &amp; Write</strong>.</div>
<div>Le champ callback url permet &#8211; une fois l&rsquo;application autorisée sur le profil de l&rsquo;utilisateur - de revenir sur votre application automatiquement. Attention pour vos applications locales, le champ ne permet pas de saisir localhost, pour cela vous pouvez saisir <a href="http://127.0.0.1/">http://127.0.0.1/</a></div>
<p>&nbsp;</p>
<ul>
<li>
<div class="mceTemp"><strong><span style="text-decoration: underline;">Etape n° 2 : Telecharger Linq2Twitter</span></strong></div>
</li>
</ul>
<div class="mceTemp">C&rsquo;est l&rsquo;une des étapes les plus simples !</div>
<div class="mceTemp">Linq2Twitter (LINQ to Twitter) est une bibliothèque C# Open-Source qui est un fournisseur LINQ pour l&rsquo;API Twitter. Cela rend vraiment facile et intuitif à intégrer des appels Twitter dans votre ASP.NET, ASP.NET MVC, Winform, et d&rsquo;autres applications. NET.</div>
<div class="mceTemp">Vous pouvez la télécharger sur la page CodePlex : <a title="Linq2Twitter" href="http://linqtotwitter.codeplex.com/">ici</a></div>
<div class="mceTemp">Ensuite, ajouter la DLL LinqToTwitter a votre projet (Clic droit // Ajouter une référence // Parcourir)</div>
<p>&nbsp;</p>
<ul>
<li>
<div class="mceTemp"><strong><span style="text-decoration: underline;">Etape n° 3 : L&rsquo;authentification</span> </strong></div>
</li>
</ul>
<div>
<div>OAuth est une façon de permettre à des applications tierces d&rsquo;utiliser votre compte sans pour autant avoir accès a vos identifiants.</div>
<div>Pour faire simple, une application tierce qui souhaite accéder à votre compte Twitter utilise l&rsquo;authentification OAuth, cela va effectuer une redirection vers une page d&rsquo;autorisation sur Twitter, où vous avez la possibilité ou non de donner la permission à l&rsquo;application tierce d&rsquo;utiliser votre compte, sans qu&rsquo;une communication de vos identifiants et mot de passe ne soit echangés.</div>
</div>
<p>&nbsp;</p>
<ul>
<li><strong><span style="text-decoration: underline;">Etape n° 4 : Un peu de code </span></strong></li>
</ul>
<div>
<div><span style="text-decoration: underline;"><em>Web.Config :</em></span></div>
<div>Une fois votre application tierce enregistrée sur twitter, vous obtenez une clé et un code secret</div>
<div>Je vous conseille vivement de l&rsquo;enregistrer dans votre web.config pour pouvoir l&rsquo;utiliser dans l&rsquo;ensemble de votre projet.</div>
<pre><code>
  <appSettings>
      <add key="twitterConsumerKey" value="twitterConsumerKey" />
      <add key="twitterConsumerSecret" value="twitterConsumerSecret" />
  </appSettings>
</code></pre>
<div><em><span style="text-decoration: underline;"> </span></em></div>
<div>
<div><em><span style="text-decoration: underline;"><em><span style="text-decoration: underline;"> </span></em></span></em></div>
<div><em><span style="text-decoration: underline;">Votre page de login a l&rsquo;application twitter :</span></em></div>
<pre><code>
private WebAuthorizer auth;

    protected void Page_Load(object sender, EventArgs e)
    {
        IOAuthCredentials credentials = new SessionStateCredentials();

        if (credentials.ConsumerKey == null || credentials.ConsumerSecret == null)
        {
            //Récupere les ConsumerKey et ConsumerSecret
            credentials.ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"];
            credentials.ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"];
        }

        auth = new WebAuthorizer
        {
            Credentials = credentials,
            PerformRedirect = authUrl => Response.Redirect(authUrl)
        };

        if (!Page.IsPostBack)
        {
            auth.CompleteAuthorization(Request.Url);
        }

        if (string.IsNullOrWhiteSpace(credentials.ConsumerKey) ||
            string.IsNullOrWhiteSpace(credentials.ConsumerSecret))
        {
            lblInfo.Text = "Configurer la ConsumerKey &amp; ConsumerSecret dans votre web.config";
        }
        else if (auth.IsAuthorized)
        {
            screenNameLabel.Text = "Connecter en tant que  " + auth.ScreenName;
            lblInfo.Text = "";            
        }
        else {     
            lblInfo.Text = "Vous n’avez pas d’authorisation de Twitter.";
        }

    }

protected void BTNAutoriseCnx_Click(object sender, EventArgs e)
    {
        auth.BeginAuthorization(Request.Url);
    }
</code></pre>
</div>
<p>&nbsp;</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Etape n ° 5 : Requetes simples sur l&rsquo;API Twitter avec Linq2Twitter </strong></span></li>
</ul>
<div><span style="text-decoration: underline;">Liste des status et retweet du compte : </span></div>
<pre><code>
twitterCtx = new TwitterContext(auth);
var tweets =   from tweet in twitterCtx.Status where tweet.Type == StatusType.Friends select tweet;
</code></pre>
<div><span style="text-decoration: underline;">Mettre a jour le statut : </span></div>
<pre><code>
twitterCtx.UpdateStatus(“Votre status mis à jour”);
</code></pre>
<div><span style="text-decoration: underline;">Retweeter une personne : </span></div>
<pre><code>
twitterCtx = new TwitterContext(auth);
var retweet = twitterCtx.Retweet(txtStatusId.Text);
</code></pre>
<p>&nbsp;</p>
<ul>
<li><strong><span style="text-decoration: underline;">Etape n° 6 : Erreurs 401, 403 </span></strong></li>
</ul>
<div><span style="text-decoration: underline;">Les erreurs 401 :</span> En local vous risquez de trouver des erreurs 401 ou 403 assez souvent, car l&rsquo;API est plus lente a répondre que le local, vous pouvez le gérer grace a Thread.Sleep(10000), ou une boucle while a vous de choisir !<br />
<span style="text-decoration: underline;">Les erreurs 403 :</span> Si vous rafraichissez trop de fois (Exemple toutes les 10secondes) a partir de 20 min, le serveur vous renvoie une erreur 403. Pensez donc a augmenter l&rsquo;intervalle entre les rafraichissements.</div>
<p>&nbsp;</p>
<ul>
<li><strong><span style="text-decoration: underline;">Etape n° 7 : Récupérer 30, 100 , 200 tweets </span></strong></li>
</ul>
<div>Par défaut, l&rsquo;API twitter ne vous retourne qu&rsquo;une vingtaine de tweets, probablement pour ne pas surcharger le serveur. A l&rsquo;aide de cette méthode vous pouvez donc récupérer le nombre de tweets voulus</div>
</div>
<pre><code>Pour récuperer 100 tweets :
                var tweets = (from tweet in twitterCtx.Status
                              where tweet.Type == StatusType.Home
                              &amp;&amp; tweet.Count == 100
                              select tweet).ToList();
</code></pre>
<p></p>
<div>L&rsquo;article est mis à jour régulièrement.<br />Pour plus d&rsquo;infos, suivez moi sur Twitter : @Full62fr</div>
]]></content:encoded>
			<wfw:commentRss>http://jhatzig.falena.fr/2011/04/04/prise-en-main-de-lapi-twitter/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>De iOS à Windows Phone 7</title>
		<link>http://jhatzig.falena.fr/2011/02/17/de-ios-a-windows-phone-7/</link>
		<comments>http://jhatzig.falena.fr/2011/02/17/de-ios-a-windows-phone-7/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 21:22:04 +0000</pubDate>
		<dc:creator>Julien Hatzig</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Informatique]]></category>
		<category><![CDATA[7]]></category>
		<category><![CDATA[comparaison]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[samsung]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://jhatzig.falena.fr/?p=54</guid>
		<description><![CDATA[Après 3 ans du coté de la Pomme et de son iPhone, j’ai récemment fait l’acquisition du Samsung Omnia 7 sous WP7.]]></description>
			<content:encoded><![CDATA[<p>Après 3 ans du coté de la Pomme et de son iPhone, j’ai récemment fait l’acquisition du Samsung Omnia 7 sous Windows Phone 7.</p>
<p>Mais pourquoi un tel changement?! &#8230;</p>
<p><span id="more-54"></span></p>
<div id="attachment_57" class="wp-caption alignright" style="width: 234px"><a href="http://jhatzig.falena.fr/wp-content/uploads/2011/02/IMG_0833.jpg"><img class="size-medium wp-image-57" title="WindowsPhone7" src="http://jhatzig.falena.fr/wp-content/uploads/2011/02/IMG_0833-224x300.jpg" alt="" width="224" height="300" /></a><p class="wp-caption-text">Samsung Omnia 7</p></div>
<p>Apple a beau avoir créé un excellent système/téléphone et qui n&rsquo;a plus à  faire ses preuves sur le marché des smartphones, je me suis lassé  d&rsquo;avoir depuis l&rsquo;iPhone 3G toujours la même interface, la même  ergonomie. Je n&rsquo;avais plus la sensation de nouveauté.</p>
<p>Après plusieurs mois d’hésitations, de comparaisons entre iOS /  Windows Phone mais aussi Android, mon choix s’est porté sur Windows  Phone 7, le nouveau système pour téléphones portables de Microsoft, et  je dois dire que je ne suis pas déçu. Le changement est radical autant  dans l’utilisation que dans l’interface.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p>En ce qui concerne les caractéristiques du Samsung Omnia 7, elles sont  très proches de l’iPhone hormis l’écran qui passe de 3.5″ à 4″ et  l’aspect esthétique du téléphone. J’ai d’ailleurs beaucoup de mal a  trouvé une housse pour l’Omnia mais aussi à le ranger dans la poche de  mon jeans.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Les avantages du Windows Phone 7 :<br />
</strong></p>
<ul>
<li><strong> La fluidité : </strong><br />
La première impression que j’ai eu lors de l’utilisation de l’appareil  est la fluidité du système assez impressionnante, par exemple on lance  le client mail, les emails apparaissent en instantanées</li>
<li><strong>Le Style Metro/HUB :
<div id="attachment_61" class="wp-caption alignright" style="width: 234px"><a href="http://jhatzig.falena.fr/wp-content/uploads/2011/02/IMG_0837.jpg"><img class="size-medium wp-image-61" title="IMG_0837" src="http://jhatzig.falena.fr/wp-content/uploads/2011/02/IMG_0837-224x300.jpg" alt="" width="224" height="300" /></a><p class="wp-caption-text">Deezer et Le style Metro </p></div>
<p></strong><strong> </strong><strong> </strong><strong> </strong>Comme Apple, Microsoft a choisi d’intégrer un système unique pour son  système. Après on aime ou pas !  La plupart des applications respectent  le style métro. L’application qui gère les mails est l’une des plus  révélatrices de ce style. Composé à 95% de texte, elle est pourtant très  agréable a utilisé et à lire.</li>
<li><strong>Le mode Essai : </strong><br />
C&rsquo;est bête mais pouvoir essayer une application avant de l&rsquo;acheter sans devoir télécharger la version &laquo;&nbsp;Lite&nbsp;&raquo; c&rsquo;est vraiment bien pensé ! On peut essayer des jeux, des lecteurs de flux ou des applications.</li>
</ul>
<p><strong>Les points à améliorer :</strong></p>
<ul>
<li><strong>Notifications :<br />
</strong>J’ai remarqué que les pastilles qui nous indiquent que nous  avons un mail, un appel, ou un sms non lu disparaissent après lancement  de l’application même si l’élèment n’est pas lu ! Assez embêtant si on  veut lire un peu plus tard.</li>
<li><strong>Application</strong> :<br />
Derrière l’interface du HUB se cache la liste des applications, pour  l’instant avec une 40e d’applications c’est plutôt &laquo;&nbsp;gérable&nbsp;&raquo; mais j’ai de  sérieux doutes au fil du temps. Une gestion par Lettre comme dans  Contact serait la bienvenue !</li>
</ul>
<p>Le Copier/Coller, le multi-tache vont arrivés début Mars avec la première mise à jour.<br />
Plus tard dans le courant de l’année 2011, l’intégration de Twitter au  HUB et IE9 avec son amélioration matérielle… que du bon pour rattraper  très vite le retard par rapport à Android ou iOS.</p>
<div id="attachment_61">
<div id="attachment_60" class="wp-caption aligncenter" style="width: 310px"><a href="http://jhatzig.falena.fr/wp-content/uploads/2011/02/DSCN4209.jpg"><img class="size-medium wp-image-60" title="DSCN4209" src="http://jhatzig.falena.fr/wp-content/uploads/2011/02/DSCN4209-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">iPhone 4 vs Samsumg Omnia 7</p></div>
</div>
<p>Pour conclure : En passant d’iOS à Windows Phone 7, j’avais assez  peur du résultat, mais il s’avère être une très bonne alternative à iOS  ou Android malgré ses petites erreurs de jeunesse, et pour rappel il  n’est pas si différent iOS a son démarrage (pas de copier/coller ni  multi tache au lancement d’iOS) et quand on voit ce qu’est devenu iOS  j’ai vraiment hâte d’avoir un système aussi performant ! . Quand au  MarketPlace, il a encore tout a prouvé, a l’heure ou j’écris cet article  nous sommes à environ 8000 applications présentes.</p>
]]></content:encoded>
			<wfw:commentRss>http://jhatzig.falena.fr/2011/02/17/de-ios-a-windows-phone-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
