<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Communauté des Développeurs Windows 8</title>
	
	<link>http://win8dev.fr</link>
	<description>WinRT rules them all</description>
	<lastBuildDate>Tue, 30 Apr 2013 15:22:58 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/win8dev" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="win8dev" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Utilisez Google Analytics dans votre application WinJS</title>
		<link>http://win8dev.fr/utilisez-google-analytics-dans-votre-application-winjs/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=utilisez-google-analytics-dans-votre-application-winjs</link>
		<comments>http://win8dev.fr/utilisez-google-analytics-dans-votre-application-winjs/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 15:22:55 +0000</pubDate>
		<dc:creator>Pierre Segalen</dc:creator>
				<category><![CDATA[HTML5 / CSS3 / JS / WinJS]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[stats]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=732</guid>
		<description><![CDATA[Voyons aujourd&#8217;hui comment utiliser Google Analytics pour tracer l&#8217;activité de vos utilisateurs dans vos apps WinJS. Google Analytics vous permet de tracer de nombreux paramètres comme les pages vues, les évènements que vous souhaitez, les sessions &#8230; Vous aurez même droit à une répartition géographique de vos utilisateurs : Vous êtes prêts ? Bon &#8230; première étape,<a href="http://win8dev.fr/utilisez-google-analytics-dans-votre-application-winjs/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p>Voyons aujourd&rsquo;hui comment utiliser Google Analytics pour tracer l&rsquo;activité de vos utilisateurs dans vos apps WinJS.</p>
<p><a target="blank" href="https://www.google.com/analytics">Google Analytics</a> vous permet de tracer de nombreux paramètres comme les pages vues, les évènements que vous souhaitez, les sessions &#8230; Vous aurez même droit à une répartition géographique de vos utilisateurs :</p>
<p><a href="http://win8dev.fr/utilisez-google-analytics-dans-votre-application-winjs/ga_geographic_stats/" rel="attachment wp-att-733"><img class="aligncenter size-large wp-image-733" alt="ga_geographic_stats" src="http://win8dev.fr/wp-content/uploads/2013/04/ga_geographic_stats-1024x434.png" width="1024" height="434" /></a></p>
<p>Vous êtes prêts ? Bon &#8230; première étape, créez un compte, deuxième étape, créez un site (oui, c&rsquo;est une application mais Google Analytics considérant qu&rsquo;il n&rsquo;existe pas d&rsquo;applications en dehors d&rsquo;iOS et d&rsquo;Android, on est pour le moment obligés de gérer nos statistiques comme celles d&rsquo;un site web) et gardez précieusement l&rsquo;ID généré sous la forme &laquo;&nbsp;UA-XXXXXXX-X&nbsp;&raquo; !</p>
<p>Voici une classe Javascript qui vous permettra de gérer tous vos appels à l&rsquo;API (notez bien qu&rsquo;elle est portable dans n&rsquo;importe quel environnement Javascript en remplaçant les utilisations de Windows.Storage.ApplicationData.current.localSettings par du localStorage et de WinJS.xhr par des XmlHttpRequest) :</p>
<pre class="brush: jscript; title: ; notranslate">
function gaTracker() {
    this.appGoogleAnalyticsId = 'UA-XXXXXXX-X'; // Your GA ID
    this.webServerRoot = 'http://www.example.com'; // Your domain name
    this.setSetting = function (name, value) {
        Windows.Storage.ApplicationData.current.localSettings.values[name] = value;
    }
    this.getSetting = function (name) {
        return Windows.Storage.ApplicationData.current.localSettings.values[name];
    }
    this.hitUrl = function (urlToHit) {
        console.log(urlToHit);
        WinJS.xhr({ url: urlToHit }).done(null, function () { console.error('Hit Url failed'); });
    }
    this.initGaMetadata = function () {
        var now = Math.floor(new Date().getTime() / 1000);
        if (this.getSetting('appGAVisitorId')) {
            this.gaVisitorId = this.getSetting('appGAVisitorId');
            this.gaVisitsCount = parseInt(this.getSetting('appGAVisitsCount')) + 1;
            this.gaFirstVisitTime = this.getSetting('appGAFirstVisitTime');
            this.gaPreviousVisitTime = this.getSetting('appGAPreviousVisitTime');
        }
        else {
            this.gaVisitorId = Math.floor(Math.random() * 1000000000);
            this.setSetting('appGAVisitorId', this.gaVisitorId);
            this.gaVisitsCount = 1;
            this.gaFirstVisitTime = now;
            this.setSetting('appGAFirstVisitTime', this.gaFirstVisitTime);
            this.gaPreviousVisitTime = now;
        }
        this.gaCurrentVisitTime = now;
        this.setSetting('appGAPreviousVisitTime', now);
        this.setSetting('appGAVisitsCount', this.gaVisitsCount);
    }
    this.getGAMetaData = function () {
        return 'utmac=' + this.appGoogleAnalyticsId + '&amp;' +
                'utmcc=__utma%3D1.' + this.gaVisitorId +
                '.' + this.gaFirstVisitTime +
                '.' + this.gaPreviousVisitTime + '.' + this.gaCurrentVisitTime +
                '.' + this.gaVisitsCount +
                '%3B%2B__utmz%3D1.' + this.gaFirstVisitTime +
                '.' + this.gaVisitsCount;
    }
    this.getTrackURL = function (category, action, label) {
        var now = Math.floor(new Date().getTime() / 1000);
        return 'http://www.google-analytics.com/__utm.gif?' +
                'utmwv=4.6.5&amp;' +
                'utmn=' + Math.floor(Math.random() * 100000000) + '&amp;' +
                'utmt=event&amp;' +
                'utme=5(' + encodeURIComponent(category) +
                    '*' + encodeURIComponent(action) +
                    '*' + encodeURIComponent(label) + ')&amp;' +
                'utmcn=1&amp;' +
                'utmdt=' + encodeURIComponent(this.webServerRoot) + '&amp;' +
                'utmhid=' + Math.floor(Math.random() * 100000000) + '&amp;' +
                'utmr=0&amp;' +
                'utmp=%2Findex.html&amp;' +
                this.getGAMetaData() +
                '.1.utmcsr%3D(direct)|utmccn%3D(direct)|utmcmd%3D(none)%3B';
    }
    this.getTrackURLPageView = function (a_URLToTrack) {
        var now = Math.floor(new Date().getTime() / 1000);
        return 'http://www.google-analytics.com/__utm.gif?' +
                'utmwv=4.8.6&amp;' +
                'utmn=' + Math.floor(Math.random() * 100000000) + '&amp;' +
                'utmcs=UTF-8&amp;' +
                'utmdt=' + encodeURIComponent(this.webServerRoot) + '&amp;' +
                'utmhid=' + Math.floor(Math.random() * 100000000) + '&amp;' +
                'utmr=-&amp;' +
                'utmp=' + encodeURIComponent(a_URLToTrack) + '&amp;' +
                this.getGAMetaData() +
                '.1.utmcsr%3D(direct)|utmccn%3D(direct)|utmcmd%3D(none)%3B&amp;utmu=D';
    }
    this.trackPageView = function (pageName) {
        try {
            if (!this.gaVisitorId) this.initGaMetadata();
            this.hitUrl(this.getTrackURLPageView(pageName));
        }
        catch (ex) { console.error(ex); }
    }
    this.trackEvent = function (category, action, label) {
        try {
            if (!this.gaVisitorId) this.initGaMetadata();
            this.hitUrl(this.getTrackURL(category, action, label ? label : ''));
        }
        catch (ex) { console.error(ex); }
    }
}
</pre>
<p>Il vous suffit alors de créer une instance de la classe dans votre scope global :</p>
<pre class="brush: jscript; title: ; notranslate">
var monGATracker = new gaTracker();
</pre>
<p>et de l&rsquo;utiliser pour tracer les navigations de page en page, on peut imaginer par exemple d&rsquo;insérer un appel à la fonction trackPageView en début de chacune des fonctions du fichier &laquo;&nbsp;navigator.js&nbsp;&raquo; si vous en avez un :</p>
<pre class="brush: jscript; title: ; notranslate">
monGATracker.trackPageView('/html/home.html');
</pre>
<p>ou pour tracer des évènements particuliers comme par exemple le lancement de l&rsquo;application dans votre fichier default.js :</p>
<pre class="brush: jscript; title: ; notranslate">
    app.onactivated = function (args) {
        if (args.detail.kind === activation.ActivationKind.launch) {
            monGATracker.trackEvent('App', 'Activation', 'App launch');
        }
</pre>
<p>Quelques indications concernant Google Analytics :</p>
<ul>
<li>c&rsquo;est gratuit jusqu&rsquo;à 10 millions de hits par mois, après, vous entrez dans le <a target="blank" href="http://www.google.com/analytics/premium/features.html">mode Premium</a> et ça coûte environ un oeil, un bras et une jambe ! Après &#8230; 10 millions de hits c&rsquo;est beaucoup !</li>
<li>les données mettent du temps à remonter, Google offre un dashboard &laquo;&nbsp;en temps réel&nbsp;&raquo; en beta mais bon &#8230; il est en beta &#8230; <img src='http://win8dev.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>les catégories, actions et libellés des évènements ne doivent pas être créés, ils le seront à la volée par le serveur la première fois qu&rsquo;il les verra passer !</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=XfQ-bYAKxWA:8s_ut9Nim4E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=XfQ-bYAKxWA:8s_ut9Nim4E:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=XfQ-bYAKxWA:8s_ut9Nim4E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=XfQ-bYAKxWA:8s_ut9Nim4E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=XfQ-bYAKxWA:8s_ut9Nim4E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/utilisez-google-analytics-dans-votre-application-winjs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Faire un Sleep en C++</title>
		<link>http://win8dev.fr/faire-un-sleep-en-c/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=faire-un-sleep-en-c</link>
		<comments>http://win8dev.fr/faire-un-sleep-en-c/#comments</comments>
		<pubDate>Sat, 09 Feb 2013 16:46:22 +0000</pubDate>
		<dc:creator>John Thiriet</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[WinRT]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=726</guid>
		<description><![CDATA[Lorsque l&#8217;on programme des opérations asynchrones on veux souvent tester la réaction de l&#8217;interface graphique. Par exemple est-ce qu&#8217;un indicateur visuel de chargement s&#8217;affiche bien si l&#8217;opération est longue etc&#8230; En C# on a souvent eu la surprise de ne pas retrouver notre bon vieux Thread.Sleep(milliseconds) mais on a fini par s&#8217;habituer à son remplaçant<a href="http://win8dev.fr/faire-un-sleep-en-c/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p>Lorsque l&rsquo;on programme des opérations asynchrones on veux souvent tester la réaction de l&rsquo;interface graphique. Par exemple est-ce qu&rsquo;un indicateur visuel de chargement s&rsquo;affiche bien si l&rsquo;opération est longue etc&#8230; En C# on a souvent eu la surprise de ne pas retrouver notre bon vieux Thread.Sleep(milliseconds) mais on a fini par s&rsquo;habituer à son remplaçant await Task.Delay(milliseconds). Oui mais quand on développe un composant en C++ on fait comment pour faire un Sleep ?</p>
<p>La réponse se trouve ici :<br />
<a href="http://blog.john-thiriet.com/2013/02/winrt-faire-un-sleep-en-cplusplus/">http://blog.john-thiriet.com/2013/02/winrt-faire-un-sleep-en-cplusplus/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=YODexQvqFAM:gXVVjyyrjt4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=YODexQvqFAM:gXVVjyyrjt4:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=YODexQvqFAM:gXVVjyyrjt4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=YODexQvqFAM:gXVVjyyrjt4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=YODexQvqFAM:gXVVjyyrjt4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/faire-un-sleep-en-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Détection du mode Design sous WinRT</title>
		<link>http://win8dev.fr/detection-du-mode-design-sous-winrt/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=detection-du-mode-design-sous-winrt</link>
		<comments>http://win8dev.fr/detection-du-mode-design-sous-winrt/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 15:48:59 +0000</pubDate>
		<dc:creator>Olivier Matis</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[Windows 8]]></category>
		<category><![CDATA[Windows Phone 8]]></category>
		<category><![CDATA[Winrt]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=717</guid>
		<description><![CDATA[&#160; Windows Phone 8 partage beaucoup avec Windows 8. Ils utilisent tous deux le nouveau runtime WinRT. Mais, aussi bizarre que ça puisse paraitre, il y a parfois des différences ou on ne l&#8217;attends pas. Par exemple, pour détecter si on est en mode Design (sous Blend ou sous le designer de VS) en Windows<a href="http://win8dev.fr/detection-du-mode-design-sous-winrt/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Windows Phone 8 partage beaucoup avec Windows 8. Ils utilisent tous deux le nouveau runtime WinRT. Mais, aussi bizarre que ça puisse paraitre, il y a parfois des différences ou on ne l&rsquo;attends pas.</p>
<p>Par exemple, pour détecter si on est en mode Design (sous Blend ou sous le designer de VS) en Windows 8, if faut utiliser :</p>
<p>
<pre class="brush: plain; title: ; notranslate"> Windows.ApplicationModel.DesignMode.DesignModeEnabled </pre>
</p>
<p>Par contre en Windows Phone 8 il faut utiliser :</p>
<p>
<pre class="brush: plain; title: ; notranslate"> DesignerProperties.IsInDesignTool </pre>
</p>
<p>Ca ressemble à deux teams qui ne se sont pas parlés <img src='http://win8dev.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=mGa-TAL4pVs:QpcYml20vMI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=mGa-TAL4pVs:QpcYml20vMI:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=mGa-TAL4pVs:QpcYml20vMI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=mGa-TAL4pVs:QpcYml20vMI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=mGa-TAL4pVs:QpcYml20vMI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/detection-du-mode-design-sous-winrt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinJS – Large group data source</title>
		<link>http://win8dev.fr/winjs-large-group-data-source/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=winjs-large-group-data-source</link>
		<comments>http://win8dev.fr/winjs-large-group-data-source/#comments</comments>
		<pubDate>Tue, 11 Dec 2012 10:37:15 +0000</pubDate>
		<dc:creator>tcharlot</dc:creator>
				<category><![CDATA[HTML5 / CSS3 / JS / WinJS]]></category>
		<category><![CDATA[datasource]]></category>
		<category><![CDATA[windows8]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=710</guid>
		<description><![CDATA[Suite à l’article sur les customs datasource, nous allons voir maintenant comment implémenter une ListView avec un zoom sémantique, c’est à dire que nous allons l’alimenter avec deux sources de données virtualisées : une itemDataSource et une groupDataSource. Sur le MSDN, nous avons un exemple permettant d’ajouter un contrôle SemanticZoomavec deux ListViews. Si vous n’êtes pas familier avec<a href="http://win8dev.fr/winjs-large-group-data-source/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p>Suite à l’<a title="WinJS – Listview et large custom datasource" href="http://thomas-charlot.fr/winjs-listview-et-custom-datasource/">article sur les customs datasource</a>, nous allons voir maintenant comment implémenter une ListView avec un zoom sémantique, c’est à dire que nous allons l’alimenter avec deux sources de données virtualisées : une itemDataSource et une groupDataSource.</p>
<p>Sur le MSDN, nous avons un <a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/hh465492.aspx" target="_blank">exemple</a> permettant d’ajouter un contrôle <a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/br229690.aspx" target="_blank">SemanticZoom</a>avec deux ListViews. Si vous n’êtes pas familier avec ce contrôle je vous conseille au préalable de réaliser cet exemple.</p>
<h2>Problème : comment créer notre datasource de groupes ?</h2>
<p>Contrairement à l’exemple du MSDN, nous allons utiliser pour la ListView en vue normale, une source de données virtualisée comme pour notre <a title="WinJS – Listview et large custom datasource" href="http://thomas-charlot.fr/winjs-listview-et-custom-datasource/">précédent article</a>.</p>
<p>Or comme nous avons vu, notre source de donnée personnalisée implémente l’interface <a href="http://msdn.microsoft.com/fr-Fr/library/windows/apps/br211786.aspx" target="_blank">IListDataSource</a>. Elle n’est pas du type <a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/hh700774.aspx" target="_blank">WinJS.Binding.List</a>, et on ne peut donc pas utiliser la méthode <a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/hh700742.aspx" target="_blank">createGrouped</a> pour créer notre source de données de groupes.</p>
<p>En analysant le MSDN, je suis alors tombé sur la méthode<a href="http://msdn.microsoft.com/fr-FR/library/windows/apps/hh700578.aspx" target="_blank">computeDataSourceGroups</a> qui permet de créer une nouvelle datasource en ajoutant des informations de groupe à une datasource donnée. Cela me semblait être la méthode appropriée, mais, pour récupérer les informations de groupe, cette méthode doit parcourir<strong>tous</strong> les éléments de notre datasource pour connaître le groupe de chaque élément.</p>
<p>Lorsque l’on a 50 000 éléments en source, évidemment c’est loooooong et on perd tout l’intérêt de la virtualisation ! Pas le choix, il faut donc créer une source de données virtualisée pour nos groupes.</p>
<p>La suite sur <a href="http://thomas-charlot.fr/winjs-large-group-data-source">http://thomas-charlot.fr/winjs-large-group-data-source</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=mK9thWVavf8:9mbgN9foc4s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=mK9thWVavf8:9mbgN9foc4s:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=mK9thWVavf8:9mbgN9foc4s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=mK9thWVavf8:9mbgN9foc4s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=mK9thWVavf8:9mbgN9foc4s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/winjs-large-group-data-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinJS –  Listview et large custom datasource</title>
		<link>http://win8dev.fr/winjs-listview-et-large-custom-datasource/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=winjs-listview-et-large-custom-datasource</link>
		<comments>http://win8dev.fr/winjs-listview-et-large-custom-datasource/#comments</comments>
		<pubDate>Tue, 11 Dec 2012 10:34:22 +0000</pubDate>
		<dc:creator>tcharlot</dc:creator>
				<category><![CDATA[HTML5 / CSS3 / JS / WinJS]]></category>
		<category><![CDATA[datasource]]></category>
		<category><![CDATA[windows8]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=708</guid>
		<description><![CDATA[Aujourd&#8217;hui, nous allons nous intéresser à la récupération de nombreuses données (dans notre tutoriel 50 000) et à l&#8217;intégration dans une ListView. Nous allons voir comment créer deux sources de données personnalisées : une pour les items correspondant à la propriété itemDataSource de votre ListView et l&#8217;autre pour les groupes, propriété groupsDataSource (prochain article ). WinJS<a href="http://win8dev.fr/winjs-listview-et-large-custom-datasource/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui, nous allons nous intéresser à la récupération de nombreuses données (dans notre tutoriel 50 000) et à l&rsquo;intégration dans une <a href="http://msdn.microsoft.com/fr-Fr/library/windows/apps/br211837.aspx">ListView</a>. Nous allons voir comment créer deux sources de données personnalisées : une pour les items correspondant à la propriété itemDataSource de votre ListView et l&rsquo;autre pour les groupes, propriété groupsDataSource (prochain article <img src='http://win8dev.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>WinJS fournit plusieurs objets source de données vous permettant de remplir une <a href="http://msdn.microsoft.com/fr-Fr/library/windows/apps/br211837.aspx">ListView</a> ou une <a href="http://msdn.microsoft.com/fr-Fr/library/windows/apps/br211711.aspx">FlipView</a> : l&rsquo;objet <a href="http://msdn.microsoft.com/fr-Fr/library/windows/apps/hh700774.aspx">WinJS.Binding.List</a> qui permet d&rsquo;accéder aux tableaux et aux données JSON, et l&rsquo;objet <a href="http://msdn.microsoft.com/fr-Fr/library/windows/apps/br212650.aspx">StorageDataSource</a> qui est utilisé pour accéder aux informations relatives au système de fichier.</p>
<p>Vu qu&rsquo;il y a énormément de tutoriels sur le NET sur ce sujet et que nous ne pouvons les utiliser dans le cas de très nombreuses données, nous nous intéresserons pas à celles-ci. Nous allons donc voir comment intégrer une source de données personnalisée qui accède à un component (cela peut être également un service web).</p>
<p>La suite sur<a title="http://thomas-charlot.fr/winjs-listview-et-custom-datasource/" href="http://thomas-charlot.fr/winjs-listview-et-custom-datasource/"> http://thomas-charlot.fr/winjs-listview-et-custom-datasource/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=1LnQ7A5gtg8:6AcZv3xjm4o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=1LnQ7A5gtg8:6AcZv3xjm4o:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=1LnQ7A5gtg8:6AcZv3xjm4o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=1LnQ7A5gtg8:6AcZv3xjm4o:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=1LnQ7A5gtg8:6AcZv3xjm4o:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/winjs-listview-et-large-custom-datasource/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conserver des informations dans l’historique de navigation d’une application Windows 8</title>
		<link>http://win8dev.fr/conserver-des-informations-dans-lhistorique-de-navigation-dune-application-windows-8/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=conserver-des-informations-dans-lhistorique-de-navigation-dune-application-windows-8</link>
		<comments>http://win8dev.fr/conserver-des-informations-dans-lhistorique-de-navigation-dune-application-windows-8/#comments</comments>
		<pubDate>Wed, 21 Nov 2012 12:05:28 +0000</pubDate>
		<dc:creator>Philippe Didiergeorges</dc:creator>
				<category><![CDATA[HTML5 / CSS3 / JS / WinJS]]></category>
		<category><![CDATA[Navigation]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=702</guid>
		<description><![CDATA[Prenons le cas d’une page proposant une liste de produits qu’il est possible de filtrer, les filtres sélectionnés par l’utilisateur seront perdus au moment ou celui-ci va se rendre sur la page d’affichage du détail d’un produit. La conséquence est qu’au moment ou il cliquera sur le bouton back pour afficher à nouveau la liste<a href="http://win8dev.fr/conserver-des-informations-dans-lhistorique-de-navigation-dune-application-windows-8/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p>Prenons le cas d’une page proposant une liste de produits qu’il est possible de filtrer, les filtres sélectionnés par l’utilisateur seront perdus au moment ou celui-ci va se rendre sur la page d’affichage du détail d’un produit. La conséquence est qu’au moment ou il cliquera sur le bouton back pour afficher à nouveau la liste des produits il sera alors contraint de resélectionner les filtres pour retrouver ses produits.</p>
<p>Pour palier à ça l’approche que j’ai eu à été de me servir de la propriété<em><strong> state</strong></em> du namespace de navigation WinJS.Navigation qui stocke déjà l’état de la page courante et qui est défini lors de la navigation vers celle-ci. Il est possible en effet d’ajouter les propriétés que l’on souhaite à cet objet afin de les retrouver au retour sur la page.</p>
<p>Pour voir le code de cela rendez-vous <a href="http://blogs.developpeur.org/philess/archive/2012/11/20/winjs-conserver-des-informations-dans-l-historique-de-navigation-d-une-application-windows-8.aspx">sur mon blog pour l&rsquo;article complet</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=ILCChNCdNPE:sg8mVtCWLBE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=ILCChNCdNPE:sg8mVtCWLBE:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=ILCChNCdNPE:sg8mVtCWLBE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=ILCChNCdNPE:sg8mVtCWLBE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=ILCChNCdNPE:sg8mVtCWLBE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/conserver-des-informations-dans-lhistorique-de-navigation-dune-application-windows-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QuickTip WinJS: supporter le bouton « Back » de la souris</title>
		<link>http://win8dev.fr/quicktip-winjs-supporter-le-bouton-back-de-la-souris/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=quicktip-winjs-supporter-le-bouton-back-de-la-souris</link>
		<comments>http://win8dev.fr/quicktip-winjs-supporter-le-bouton-back-de-la-souris/#comments</comments>
		<pubDate>Wed, 21 Nov 2012 09:49:29 +0000</pubDate>
		<dc:creator>Pierre Segalen</dc:creator>
				<category><![CDATA[HTML5 / CSS3 / JS / WinJS]]></category>
		<category><![CDATA[back]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[souris]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=697</guid>
		<description><![CDATA[Si votre souris dispose d&#8217;un bouton &#171;&#160;Back&#160;&#187;, vous avez déjà dû, en testant votre application WinJS, vouloir revenir à la page précédente en utilisant ce bouton, ce qui, par défaut, ne déclenche absolument aucune réaction de la part de votre application. Et bien il est en fait assez simple de supporter ce bouton, il suffit<a href="http://win8dev.fr/quicktip-winjs-supporter-le-bouton-back-de-la-souris/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: center"><img class="aligncenter" src="http://www.geardiary.com/wp-content/uploads/2009/02/img-3692.jpg" alt="" width="640" height="480" /></p>
<p>Si votre souris dispose d&rsquo;un bouton &laquo;&nbsp;Back&nbsp;&raquo;, vous avez déjà dû, en testant votre application WinJS, vouloir revenir à la page précédente en utilisant ce bouton, ce qui, par défaut, ne déclenche absolument aucune réaction de la part de votre application.</p>
<p>Et bien il est en fait assez simple de supporter ce bouton, il suffit d&rsquo;ajouter dans votre WinJS.Application.onactivated les lignes suivantes :</p>
<pre class="brush: jscript; title: ; notranslate">
document.addEventListener('MSPointerDown', function (e) {
  if (e.pointerType == e.MSPOINTER_TYPE_MOUSE &amp;&amp; e.button == 3 &amp;&amp; WinJS.Navigation.canGoBack) {
    WinJS.Navigation.back();
  }
});
</pre>
<p>Cela devrait fonctionner (en partant du principe que le bouton &laquo;&nbsp;Back&nbsp;&raquo; de toutes les souris remontent bien e.button == 3, valeur que remontent les miennes) mais dans le cas contraire, n&rsquo;hésitez pas à commenter !</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=XmZdc-jzwIo:oZ5XhDqJE4E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=XmZdc-jzwIo:oZ5XhDqJE4E:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=XmZdc-jzwIo:oZ5XhDqJE4E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=XmZdc-jzwIo:oZ5XhDqJE4E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=XmZdc-jzwIo:oZ5XhDqJE4E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/quicktip-winjs-supporter-le-bouton-back-de-la-souris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQLite pour applis Metro/Windows Store</title>
		<link>http://win8dev.fr/sqlite-pour-applis-metrowindows-store/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sqlite-pour-applis-metrowindows-store</link>
		<comments>http://win8dev.fr/sqlite-pour-applis-metrowindows-store/#comments</comments>
		<pubDate>Wed, 17 Oct 2012 14:30:25 +0000</pubDate>
		<dc:creator>Olivier Matis</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[WinRT]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=687</guid>
		<description><![CDATA[&#160; Si vous créez un appli, il y a de grandes chances que vous ayez besoin d’une DB locale. Il n’y avait pas grand chose pour le moment pour WinRT, mais ce temps est (heureusement) révolu. &#160; Par SQL Server CE WinRT ? Mauvaise réponse ! SQLite est ton ami. Et il a l’avantage de<a href="http://win8dev.fr/sqlite-pour-applis-metrowindows-store/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Si vous créez un appli, il y a de grandes chances que vous ayez besoin d’une DB locale. Il n’y avait pas grand chose pour le moment pour WinRT, mais ce temps est (heureusement) révolu.</p>
<p>&nbsp;</p>
<p>Par SQL Server CE WinRT ? Mauvaise réponse ! SQLite est ton ami. Et il a l’avantage de tourner sur un peu tout les OS, mobiles ou pas.</p>
<p>&nbsp;</p>
<p>Pour tout savoir sur les bases de SQLite pour WinRT, c’est <a href="http://www.guruumeditation.net/blog/sqlite-pour-applis-metro-windows-store" target="_blank">ici</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=dVH3LKYQq9Y:EAHNtAjDp2o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=dVH3LKYQq9Y:EAHNtAjDp2o:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=dVH3LKYQq9Y:EAHNtAjDp2o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=dVH3LKYQq9Y:EAHNtAjDp2o:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=dVH3LKYQq9Y:EAHNtAjDp2o:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/sqlite-pour-applis-metrowindows-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Tutoriel] Utiliser SkyDrive dans vos applications Windows 8 C# / XAML</title>
		<link>http://win8dev.fr/tutoriel-utiliser-skydrive-dans-vos-applications-windows-8-c-xaml/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tutoriel-utiliser-skydrive-dans-vos-applications-windows-8-c-xaml</link>
		<comments>http://win8dev.fr/tutoriel-utiliser-skydrive-dans-vos-applications-windows-8-c-xaml/#comments</comments>
		<pubDate>Thu, 04 Oct 2012 13:29:39 +0000</pubDate>
		<dc:creator>Nathalie BELVAL</dc:creator>
				<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=682</guid>
		<description><![CDATA[Le Live SDK offre un ensemble de contrôles et d’API qui permettent aux applications d’intégrer l’authentification unique (SSO) aux comptes Windows et d’accéder à des informations provenant de SkyDrive, Hotmail et Windows Live Messenger sur Windows Phone et Windows 8. Les développeurs ont maintenant à leur disposition une nouvelle version du SDK, le Live SDK 5.0.  Cette nouvelle<a href="http://win8dev.fr/tutoriel-utiliser-skydrive-dans-vos-applications-windows-8-c-xaml/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://win8dev.fr/wp-content/uploads/2012/10/Icone_skydrive.png"><img class="alignleft size-full wp-image-683" src="http://win8dev.fr/wp-content/uploads/2012/10/Icone_skydrive.png" alt="" width="291" height="121" /></a>Le <strong>Live SDK </strong>offre un ensemble de contrôles et d’API qui permettent aux applications d’intégrer l’authentification unique (SSO) aux comptes Windows et d’accéder à des informations provenant de SkyDrive, Hotmail et Windows Live Messenger sur Windows Phone et Windows 8.</p>
<p>Les développeurs ont maintenant à leur disposition une nouvelle version du SDK, le Live SDK 5.0.  Cette nouvelle version comprend quelques changements facilitant son intégration et son utilisation dans vos applications <strong>Windows 8</strong>. Nous allons ainsi voir dans cet article comment le configurer et l’utiliser en prenant l’exemple d’une utilisation avec  <strong>SkyDrive</strong>.</p>
<p style="text-align: right"><a href="http://blog.soat.fr/2012/10/utiliser-skydrive-dans-vos-applications-windows-8-c-xaml/" target="_blank">Lire l&rsquo;article</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=z-qXmedvfY8:UnkA4DYx1_o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=z-qXmedvfY8:UnkA4DYx1_o:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=z-qXmedvfY8:UnkA4DYx1_o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=z-qXmedvfY8:UnkA4DYx1_o:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=z-qXmedvfY8:UnkA4DYx1_o:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/tutoriel-utiliser-skydrive-dans-vos-applications-windows-8-c-xaml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinJS – Amélioration de la localisation</title>
		<link>http://win8dev.fr/winjs-amelioration-de-la-localisation/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=winjs-amelioration-de-la-localisation</link>
		<comments>http://win8dev.fr/winjs-amelioration-de-la-localisation/#comments</comments>
		<pubDate>Fri, 28 Sep 2012 12:33:05 +0000</pubDate>
		<dc:creator>tcharlot</dc:creator>
				<category><![CDATA[HTML5 / CSS3 / JS / WinJS]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[windows8]]></category>

		<guid isPermaLink="false">http://win8dev.fr/?p=677</guid>
		<description><![CDATA[Pré-requis pour cet article : comment localiser une application WinJS via les ressources. Si ce n&#8217;est pas le cas, lisez l&#8217;article de Jonathan et/ou ma mise à jour de l&#8217;article. La localisation d&#8217;une application est une étape importante lorsqu&#8217;on veut pouvoir la distribuer dans le monde entier. Toutefois le framework WinJS possède, à mon sens,<a href="http://win8dev.fr/winjs-amelioration-de-la-localisation/"> <br /><br /> (More)…</a>]]></description>
				<content:encoded><![CDATA[<p><span style="text-decoration: underline">Pré-requis pour cet article</span> : comment localiser une application WinJS via les ressources.</p>
<p>Si ce n&rsquo;est pas le cas, lisez l&rsquo;article de <a title="WinJS – Comment utiliser les resources (et faire de la localization en bonus)" href="http://win8dev.fr/winjs-comment-utiliser-les-resources-et-faire-de-la-localization-en-bonus/">Jonathan</a> et/ou <a href="http://thomas-charlot.fr/winjs-aide-a-la-localisation/">ma mise à jour de l&rsquo;article</a>.</p>
<p>La localisation d&rsquo;une application est une étape importante lorsqu&rsquo;on veut pouvoir la distribuer dans le monde entier.</p>
<p>Toutefois le framework WinJS possède, à mon sens,  quelques manques pour la localisation :</p>
<ul>
<li>une syntaxe lourde <span style="color: #ff0000">data-win-res</span><span style="color: #3366ff">=&nbsp;&raquo;{textContent: &lsquo;key&rsquo;}&nbsp;&raquo;</span></li>
<li><span style="color: #000000">l&rsquo;impossibilité de faire de la concaténation de chaînes</span></li>
<li><span style="color: #000000">pas de formatage de chaîne (exemple première lettre en majuscule)</span></li>
</ul>
<div></div>
<div>Nous allons comment y remédier en proposant une amélioration de <span style="color: #3366ff">WinJS.Resources</span> : <span style="color: #3366ff">WinJS.Localization</span>.</div>
<div>Celui-ci permettra de palier à ces manques. Exemple de localisation finale <span style="color: #ff0000">data-win-loc</span><span style="color: #3366ff">=&nbsp;&raquo;hello {key1:ucfirst} ! {key2}&nbsp;&raquo;</span></div>
<p>La suite de l’article est disponible sur mon blog :<a href="http://thomas-charlot.fr/winjs-amelioration-de-la-localisation/"> http://thomas-charlot.fr/winjs-amelioration-de-la-localisation/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/win8dev?a=lbDgYHFJyVM:_aRCYN7LxgY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/win8dev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=lbDgYHFJyVM:_aRCYN7LxgY:AJN6rANEukQ"><img src="http://feeds.feedburner.com/~ff/win8dev?d=AJN6rANEukQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=lbDgYHFJyVM:_aRCYN7LxgY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/win8dev?i=lbDgYHFJyVM:_aRCYN7LxgY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/win8dev?a=lbDgYHFJyVM:_aRCYN7LxgY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/win8dev?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://win8dev.fr/winjs-amelioration-de-la-localisation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 1.744 seconds. --><!-- Cached page generated by WP-Super-Cache on 2013-05-30 11:57:32 --><!-- Compression = gzip -->
