<?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/"
	>

<channel>
	<title>Tangane - Solutions for Business Value</title>
	<atom:link href="http://blog.tangane.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tangane.com</link>
	<description>Blog de la société Tangane</description>
	<pubDate>Mon, 06 Jul 2009 09:48:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>jQuery et l&#8217;Amélioration Progressive</title>
		<link>http://blog.tangane.com/open-source/jquery-et-lamelioration-progressive-233/</link>
		<comments>http://blog.tangane.com/open-source/jquery-et-lamelioration-progressive-233/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 09:48:34 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
		
		<category><![CDATA[Open source]]></category>

		<category><![CDATA[accessibilité]]></category>

		<category><![CDATA[amélioration progressive]]></category>

		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=233</guid>
		<description><![CDATA[Allumez votre télé mais ne la regardez pas : contentez-vous de l&#8217;écouter sans en voir les images. Arrivez-vous à saisir le contenu d&#8217;un film ? D&#8217;un jeu télévisé ? Du journal de vingt heures ? De la météo ? C&#8217;est un secret que personne ne tient à garder mais que peu de gens connaissent : [...]]]></description>
			<content:encoded><![CDATA[<p>Allumez votre télé mais ne la regardez pas : contentez-vous de l&#8217;écouter sans en voir les images. Arrivez-vous à saisir le contenu d&#8217;un film ? D&#8217;un jeu télévisé ? Du journal de vingt heures ? De la météo ? C&#8217;est un secret que personne ne tient à garder mais que peu de gens connaissent : l&#8217;image n&#8217;est pas indispensable à un bon journal télévisé, la voix suffit à transmettre l&#8217;essentiel de l&#8217;information.</p>
<p>Et ce n&#8217;est pas facile. D&#8217;ailleurs, il suffit d&#8217;écouter un film sans le regarder pour se rendre compte à quel point l&#8217;expérience peut devenir dépendante de l&#8217;image si on ne fait pas attention à répéter, de vive voix, les points importants que cette image montre.</p>
<p>Même à la télévision, moyen de communication inaliénablement visuel, c&#8217;est le son qui transmet l&#8217;information et relègue l&#8217;image à un statut accessoire : illustrer les paroles, mettre en confiance le spectateur, présenter l&#8217;information avec plus de clarté et d&#8217;élégance. Tout cela pour que les gens qui ne font qu&#8217;écouter leur téléviseur (parce qu&#8217;ils sont occupés à autre chose, ou tout simplement parce qu&#8217;ils ne peuvent pas voir) puissent profiter du journal télévisé.</p>
<p>Il existe sur internet deux types de visiteurs. D&#8217;une part, il y a la majorité, ceux qui visitent les sites avec un équipement raisonnablement moderne, capable de gérer Java, Flash, Javascript, les cookies et le CSS. Et puis, il y a les autres, qui n&#8217;acceptent pas les cookies, n&#8217;exécutent pas le Javascript, ignorent la mise en page des CSS et ne voient même pas Flash et Java. Un tout petit pourcentage que bon nombre de sites ignorent à l&#8217;heure actuelle, et pas toujours des moindres (essayez donc Facebook sans Javascript et YouTube sans Flash).</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td style="text-align:center"><img class="size-full wp-image-234" title="facebook" src="http://blog.tangane.com/wp-content/uploads/2009/07/facebook.png" alt="Logo Facebook" width="266" height="100" /></td>
<td style="text-align:center"><img class="size-full wp-image-235" title="youtube_logo" src="http://blog.tangane.com/wp-content/uploads/2009/07/youtube_logo.png" alt="Logo Youtube" width="197" height="100" /></td>
</tr>
</tbody>
</table>
<p>Pourtant, il y a des situations où l&#8217;on ne peut pas ignorer ce pourcentage, aussi faible soit-il, pour deux raisons élémentaires:</p>
<ul>
<li>Tous les moteurs de recherche sont dans cette catégorie. Lorsque Google visite un site, il ne voit pas tout le texte que l&#8217;auteur a mis dans un Flash ou les pages que son Javascript remplit dynamiquement après leur chargement. Ignorez cette catégorie, et votre <strong>référencement </strong>en prendra un sacré coup.</li>
<li>Les lecteurs braille ou la synthèse vocale interagissent très mal avec le contenu enrichi. Si l&#8217;auteur du site a une politique d&#8217;<strong>accessibilité</strong> (que ce soit par stratégie, ou par contrainte administrative) il n&#8217;aura d&#8217;autre choix de que de pourvoir aux besoins de ces visiteurs.</li>
</ul>
<p>Une solution peu coûteuse à ce problème est l&#8217;<strong>amélioration progressive</strong>. Elle consiste à partir d&#8217;une page telle qu&#8217;elle sera vue par la minorité sans Java, Flash, Javascript ou même CSS. Cette étape permet de détecter en amont des problèmes d&#8217;accessibilité : un synthétiseur vocal devra lire le texte dans l&#8217;ordre, donc si le contenu intéressant est loin en-dessous du début de la page cela pourra poser des problèmes. Elle met également en valeur les problèmes de référencement : les éléments importants ont-il bien été mis en valeur par des balises appropriées (strong, em, h1, h2, &#8230;) au lieu d&#8217;être juste mis en avant visuellement par le CSS ? Enfin, il est possible de tester les fonctionnalités de la page directement : les liens sont-ils valides, les pages importantes sont-elles accessibles ?</p>
<p>Une fois la page conçue pour une compatibilité maximale, on commence à l&#8217;améliorer. Cela repose sur le remplacement conditionnel : si un explorateur gère une extension (le CSS, le Javascript) alors il remplace une fonctionnalité existante par une fonctionnalité améliorée. Cela ne change donc pas les fonctionnalités disponibles si les extensions ne sont pas présentes.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-239" style="background-color: black; padding : 5px;" title="logo_jquery_215x53" src="http://blog.tangane.com/wp-content/uploads/2009/07/logo_jquery_215x53.gif" alt="logo_jquery_215x53" width="215" height="53" /></p>
<p><strong>jQuery </strong>est une bibliothèque de fonctions Javascript qui permet de faciliter ce travail. Au lieu d&#8217;introduire le comportement dynamique directement dans la page à l&#8217;aide des attributs <em>onclick</em>, <em>onmouseover</em>, <em>onload </em>et autres, un script qui utilise jQuery les introduit depuis l&#8217;extérieur de la page, souvent depuis un fichier qui ne sera même pas téléchargé par les explorateurs qui n&#8217;exécutent pas les scripts.</p>
<p>Un script à base de <strong>jQuery </strong>fonctionne un peu comme un fichier CSS : on sélectionne des éléments de la page à l&#8217;aide d&#8217;une syntaxe proche, puis on leur applique des propriétés pour modifier le comportement de façon plus ou moins complexe. Les <a href="http://docs.jquery.com/Main_Page">possibilités sont vastes</a> pour rendre une page plus dynamique, plus belle, plus réactive ou tout simplement mieux présentée, sans pour autant sacrifier d&#8217;accessibilité ou de référencement.</p>
<p>Qui plus est, <strong>jQuery </strong>fonctionne sur une architecture de <a href="http://www.jqueryplugins.com/" target="_blank">plugins</a>: il y en a des centaines pour faire à peu près tout ce qu&#8217;on peut imaginer, proposés par des développeurs partout dans le monde de façon totalement gratuite, et suivant le même principe d&#8217;amélioration progressive que le coeur de jQuery. Et tout ceci pour une taille réduite, puisque la bibliothèque principale ne pèse que 19 kilo-octets et peut être mise en cache sur l&#8217;ordinateur du visiteur.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/open-source/jquery-et-lamelioration-progressive-233/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jamin-Puech</title>
		<link>http://blog.tangane.com/retour-d-experience/jamin-puech-224/</link>
		<comments>http://blog.tangane.com/retour-d-experience/jamin-puech-224/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 16:28:20 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
		
		<category><![CDATA[Retour d'expérience]]></category>

		<category><![CDATA[eCommerce]]></category>

		<category><![CDATA[Magento]]></category>

		<category><![CDATA[Tangane]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=224</guid>
		<description><![CDATA[Jamin-Puech fabrique et vend des sacs à mains, bijoux et accessoires partout dans le monde, de Tokyo à New York en passant, bien sûr, par Paris. Mais jusqu&#8217;à il y a peu, impossible d&#8217;acheter leurs sacs directement sur Internet.
C&#8217;est désormais possible grâce au nouveau site e-commerce réalisé par Tangane sur la base d&#8217;une plateforme Magento. [...]]]></description>
			<content:encoded><![CDATA[<p>Jamin-Puech fabrique et vend des sacs à mains, bijoux et accessoires partout dans le monde, de Tokyo à New York en passant, bien sûr, par Paris. Mais jusqu&#8217;à il y a peu, impossible d&#8217;acheter leurs sacs directement sur Internet.</p>
<p><a href="http://www.jamin-puech.com/eboutique/day-bags/falala-bag-2.html"><img class="aligncenter size-full wp-image-225" title="small_2897_2236" src="http://blog.tangane.com/wp-content/uploads/2009/06/small_2897_2236.jpg" alt="small_2897_2236" width="200" height="200" /></a>C&#8217;est désormais possible grâce au <a href="http://www.jamin-puech.com/eboutique/" target="_blank">nouveau site e-commerce réalisé par Tangane</a> sur la base d&#8217;une plateforme Magento. Vous pouvez également lire <a href="http://www.tangane.com/actualite/mise-en-ligne-jamin-puech" target="_blank">notre annonce officielle</a> à ce sujet.</p>
<p>En soi, le site Jamin-Puech suit sans aucune surprise le schéma classique de l&#8217;adaptation de Magento aux besoins d&#8217;une entreprise bien établie :</p>
<ul>
<li>Une phase d&#8217;accompagnement et de conseil de notre client, afin de le faire bénéficier de notre expérience dans le domaine de l&#8217;e-commerce acquise entre autres chez Carrefour et Ooshop, et de lui permettre de s&#8217;organiser et de prendre des décisions informées sur sa stratégie.</li>
<li>La conception et l&#8217;intégration d&#8217;une charte graphique représentative de l&#8217;univers et de la marque, ainsi que la traduction.</li>
<li>L&#8217;amélioration du comportement de Magento pour s&#8217;adapter aux spécificités des clients, pour permettre par exemple aux partenaires de passer par le site pour leurs achats en gros.</li>
<li>Une liaison de données automatique entre le site et le système logistique existant, afin de simplifier au maximum la tâche des administrateurs et de l&#8217;équipe commerciale.</li>
<li>La configuration d&#8217;un système de paiement choisi parmi les nombreux systèmes que Magento (ou Magento Connect) propose.</li>
<li>Un nouveau zoom, développé en Flex, pour remplacer celui proposé par défaut par Magento.</li>
<li>Bien entendu, une formation complète des administrateurs et un support technique présent après la livraison du site.</li>
</ul>
<p>Au cours du développement, nous nous sommes heurtés à certaines limites de la solution Magento, problèmes qu&#8217;il nous a fallu contourner ou résoudre, par exemple:</p>
<ul>
<li>Magento ne permet de gérer, à l&#8217;échelle du système, qu&#8217;un seul stock par produit. Dans le cadre d&#8217;une gestion logistique différenciée (par exemple, qui sépare stock de détail et stock de gros) cette restriction peut s&#8217;avérer gênante.</li>
<li>Le système de filtrage de l&#8217;administration Magento est très puissant mais il ne permet de filtrer que suivant des colonnes prédéterminées, ce qui réduit grandement son efficacité. Nous avons étendu le filtre pour inclure des colonnes supplémentaires suivant les besoins.</li>
</ul>
<p>Cette expérience nous a permis de développer ce qui revient au final à une <em>stratégie Magento</em>, comprenant à la fois des best practices que nous appliquons pour gagner du temps et éviter les erreurs, et un framework de code réutilisable sur un certain nombre de problématiques.</p>
<p>En particulier, nous disposons maintenant d&#8217;un framework d&#8217;import/export extensible qui fonctionne comme une couche intermédiaire automatisée entre Magento (dont l&#8217;API interne complète est ainsi directement accessible pour une flexibilité maximale) et le système logistique du client. L&#8217;adaptation d&#8217;un nouveau système logistique se fait par l&#8217;intégration de briques d&#8217;import spécifiques à ce système, mais qui peuvent bien entendu étendre les briques existantes pour recycler un maximum de fonctionnalités. À partir du moment où le système logistique respecte quelques règles simples en matière d&#8217;export, notre framework peut s&#8217;y adapter très rapidement.</p>
<p>Bon nombre de ces problèmes ont été résolus soit par des développements internes, soit en adaptant des solutions disponibles gratuitement sur Magento Connect.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/retour-d-experience/jamin-puech-224/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Optimisation d&#8217;une application Flex sur un plan interactif 2D</title>
		<link>http://blog.tangane.com/ria/optimisation-d-une-application-flex-sur-un-plan-interactif-2d-209/</link>
		<comments>http://blog.tangane.com/ria/optimisation-d-une-application-flex-sur-un-plan-interactif-2d-209/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 16:16:38 +0000</pubDate>
		<dc:creator>Fabien Deshayes</dc:creator>
		
		<category><![CDATA[RIA]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=209</guid>
		<description><![CDATA[Voici quelques astuces permettant d&#8217;optimiser et d&#8217;améliorer le rendu d&#8217;un plan 2D en Flex contenant de nombreux éléments (jusqu&#8217;à plusieurs milliers). Dans le cas présent, il s&#8217;agit d&#8217;un plan dynamique : les éléments sont chargées à la volée, le plan peut être agrandi, déplacé, etc. On se trouve donc dans un cas typique de cartographie.
Fluidité [...]]]></description>
			<content:encoded><![CDATA[<p>Voici quelques astuces permettant d&#8217;<strong>optimiser et d&#8217;améliorer le rendu d&#8217;un plan 2D en Flex</strong> contenant de nombreux éléments (jusqu&#8217;à plusieurs milliers). Dans le cas présent, il s&#8217;agit d&#8217;un plan dynamique : les éléments sont chargées à la volée, le plan peut être agrandi, déplacé, etc. On se trouve donc dans un cas typique de cartographie.</p>
<h3>Fluidité des déplacements</h3>
<p>Lorsque l&#8217;on déplace ce plan (ou que l&#8217;on zoome dessus) en utilisant un effet <em>Move </em>ou <em>Zoom</em>, le Flash Player doit redessiner l&#8217;ensemble du plan à chaque itération de l&#8217;effet. Ce traitement peut devenir très lourd : plus il y a d&#8217;éléments et moins le mouvement sera fluide. Une méthode répandue dans beaucoup d&#8217;applications de cartographie réalisées en Flex est de diminuer la qualité de rendu lors de l&#8217;exécution de l&#8217;effet. Une fois l&#8217;exécution terminée, on peut remettre une qualité de rendu supérieure.<br />
Une certaine perte de netteté sera visible lors de l&#8217;effet, mais celle-ci est minime comparée au gain de vitesse (et donc de fluidité du mouvement).<br />
Voici le code a exécuter au début de l&#8217;effet pour diminuer la qualité de rendu de l&#8217;animation Flash :</p>
<pre style="padding-left: 30px;"><span style="font-family: Courier New;">Application.application.stage.quality = StageQuality.LOW;</span></pre>
<p>Voici le code a exécuter à la fin de l&#8217;effet pour remettre la qualité de rendu élevée de l&#8217;animation Flash :</p>
<pre style="padding-left: 30px;"><span style="font-family: Courier New;">Application.application.stage.quality = StageQuality.HIGH;</span></pre>
<h3>Lissage des polices</h3>
<p>Si sur ce plan il y a des éléments de types Label ou Text, on peut constater qu&#8217;en zoomant sur ces éléments, les polices ne sont pas lisses. Pour y remédier, il faut embarquer la police avec le fichier .swf, ce qui permettra d&#8217;avoir un texte lisse peu importe le niveau de zoom. Pour embarquer une police, il faut tout d&#8217;abord récupérer un fichier .swf contenant ces polices. Il est possible d&#8217;en faire soi-même avec le logiciel Flash, mais ceci n&#8217;est pas l&#8217;objet de cet article. L&#8217;intégration de ce fichier se fait via la déclaration CSS suivante :</p>
<pre style="padding-left: 30px;"><span style="font-family: Courier New;">@font-face
</span><span style="font-family: Courier New;">{</span><span style="font-family: Courier New;">
    src:                url('/assets/fonts/myriad.swf');
</span><span style="font-family: Courier New;">    font-family:        'Myriad Pro';</span><span style="font-family: Courier New;">
    font-weight:        bold;
}</span></pre>
<p>Cette méthode n&#8217;est pas l&#8217;unique pour embarquer des polices dans une animation Flash, mais elle offre le meilleur compromis taille du fichier .swf / qualité de rendu.</p>
<h3>Redimensionnement de textes</h3>
<p>Une fois le code précédent inclus, les textes seront propres et lisses. Toutefois, il reste un souci à régler. Vous remarquerez peut-être que lorsque l&#8217;on zoome, les libellés &#8220;vibrent&#8221;, ou tout du moins se déplacent très rapidement de gauche à droite. Pour éviter ce désagrément, il existe un style de la classe Label assez méconnue : fontGridFitType. Ce style accepte trois valeurs : NONE, SUBPIXEL, PIXEL. Elle permet de spécifier la correspondance d&#8217;un TextField sur une grille.<br />
Voici un exemple vous permettant de voir (et ainsi de mieux comprendre) le <a id="om1q" title="fonctionnement de cette propriété fontGridFitType" href="http://rojored.com/gotchas/TextScale.swf" target="_blank">fonctionnement de cette propriété fontGridFitType</a>.<br />
On constate donc que pour éviter cette impression de &#8220;vibration&#8221;, il faut setter la propriété comme ceci (en MXML) :</p>
<pre style="padding-left: 30px;"><span style="font-family: Courier New;">&lt;mx:Label text="Flex" fontGridFitType="none" /&gt;</span></pre>
<p>Il existe bien évidemment d&#8217;autres types d&#8217;optimisations possibles dans ce contexte, comme par exemple l&#8217;utilisation d&#8217;un BitmapData généré à la volée pour afficher une miniature de la carte ou utiliser la solution <a href="http://labs.adobe.com/technologies/alchemy/" target="_blank">Alchemy d&#8217;Adobe</a> pour utiliser des algorithmes codés C ou C++ avec la machine virtuelle du Flash Player.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/ria/optimisation-d-une-application-flex-sur-un-plan-interactif-2d-209/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Seul avec l&#8217;Open Source</title>
		<link>http://blog.tangane.com/open-source/seul-180/</link>
		<comments>http://blog.tangane.com/open-source/seul-180/#comments</comments>
		<pubDate>Tue, 12 May 2009 17:05:05 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
		
		<category><![CDATA[Open source]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=180</guid>
		<description><![CDATA[Il est difficile de faire publier un livre : pour des raisons évidentes de rentabilité, les éditeurs sont très sélectifs sur les livres qu&#8217;ils acceptent de corriger, mettre en page, imprimer, relier, et envoyer aux librairies. Certains imprimeurs ont sauté sur l&#8217;occasion : les auteurs peuvent payer pour faire imprimer et relier leurs livres. L&#8217;un des premiers [...]]]></description>
			<content:encoded><![CDATA[<p>Il est difficile de faire publier un livre : pour des raisons évidentes de rentabilité, les éditeurs sont très sélectifs sur les livres qu&#8217;ils acceptent de corriger, mettre en page, imprimer, relier, et envoyer aux librairies. Certains imprimeurs ont sauté sur l&#8217;occasion : les auteurs peuvent payer pour faire imprimer et relier leurs livres. L&#8217;un des premiers conseils que les cercles d&#8217;écriture donnent aux jeunes auteurs est de ne surtout pas tomber dans ce piège en cédant à la facilité! Une fois le livre imprimé, il faut encore le vendre, et ce qui coûte si cher dans la mise sur le marché d&#8217;un livre n&#8217;est certainement pas son impression, mais au contraire le riche réseau de contacts qui permet à un grand éditeur de faire apparaître ses ouvrages sur les étagères des grandes librairies. Réseau que le jeune auteur qui fait imprimer ses livres n&#8217;a pas.</p>
<p>Quel est le rapport avec le mouvement Open Source ? Patience.</p>
<p>Depuis quelques années maintenant, des solutions Open Source envahissent le marché des logiciels, proposant des alternatives gratuites dans de nombreuses situations où seuls les logiciels payants constituaient des solutions sérieuses. Souhaite-t-on gérer ses relations clients ? On peut gratuitement télécharger et installer <a href="http://www.sugarcrm.com/crm/" target="_blank">SugarCRM</a>. Faut-il vendre ses produits en ligne ? La solution <a href="http://www.magentocommerce.com/" target="_blank">Magento</a> est d&#8217;une popularité croissante. Doit-on s&#8217;échanger intelligemment des documents sur une plate-forme interne ? <a href="http://www.alfresco.com/" target="_blank">Alfresco</a> propose une édition libre accessible à tous. Ouvrir un blog ou un site public au contenu régulièrement mis à jour ? <a href="http://wordpress.org/" target="_blank">Wordpress</a> est là pour vous servir. Et la liste est encore longue&#8230;</p>
<p>Les solutions Open Source sont mûres : on est loin de l&#8217;interface utilisateur incompréhensible et sans traduction française, on est loin du logiciel à moitié incomplet dans lequel un informaticien expérimenté devra plonger jusqu&#8217;aux coudes pour accomplir les choses les plus élémentaires. Bon nombre de solutions sont maintenant fournies par des entreprises sérieuses, et peuvent se vanter de références prestigieuses et diverses.</p>
<p>Être Open Source, cela veut souvent dire être gratuit - l&#8217;éditeur propose alors pour se financer des services supplémentaires payants, comme l&#8217;hébergement, le support technique ou une version commerciale du logiciel proposant des fonctionnalités inédites. Pour une somme modique voir nulle, n&#8217;importe qui peut se procurer un logiciel de bonne qualité capable de satisfaire une grande partie de leurs besoins. Et c&#8217;est là tout le danger : à trop se concentrer sur le coût monétaire du produit, on perd de vue des coûts plus subtils qui n&#8217;en sont pas moins importants.</p>
<p><img class="size-full wp-image-192 alignleft" style="margin: 10px; float:left" title="magento_logo" src="http://blog.tangane.com/wp-content/uploads/2009/05/magento_logo.gif" alt="magento_logo" width="140" height="140" />Prenons <strong>Magento</strong>, une référence Open Source de la vente en ligne. On peut faire installer un site eCommerce en parfait état de marche pour moins de 120€. On peut même se procurer le système et l&#8217;installer soi-même gratuitement. Tout ceci rend le coût <em>monétaire</em> de Magento négligeable.</p>
<p>C&#8217;est lorsqu&#8217;on ouvre pour la première fois le panneau d&#8217;administration de Magento que l&#8217;on commence à saisir le coût non-monétaire associé. Le temps d&#8217;apprentissage pour pouvoir maîtriser les centaines d&#8217;options disponibles n&#8217;est pas négligeable.</p>
<p>Pourquoi l&#8217;interface d&#8217;administration est-elle si compliquée ? Parce que Magento permet de faire de la vente en ligne, et que faire de la vente en ligne est une activité compliquée : il ne suffit pas de <em>permettre</em> au client d&#8217;acheter, il faut l&#8217;<em>inciter</em> à acheter. Tout logiciel de vente en ligne abordera les mêmes problématiques et aura donc une interface aussi complexe que celle de Magento, car le vendeur doit :</p>
<ul class="unIndentedList">
<li>Pouvoir renseigner et configurer ses produits, du nom au prix en passant par le stock et la photo, et les répartir dans les catégories du site, éventuellement même dans le cross-selling et l&#8217;up-selling.</li>
<li>Pouvoir gérer des sites multiples ou dans plusieurs langues, avec des règles distinctes sur les prix et les utilisateurs, ne serait-ce que pour avoir un site de test où visualiser ses modifications avant de les rendre publiques.</li>
<li>Pouvoir appliquer des promotions et des prix barrés suivant des règles plus ou moins complexes (suivant la quantité, suivant des points de fidélité, suivant les produits, suivant des codes promotionnels, suivant la période de l&#8217;année).</li>
<li>Gérer les modes de paiement en ligne, le traitement des commandes, l&#8217;expédition et les tarifs de livraison, le remboursement des produits épuisés.</li>
<li>Recevoir des rapports d&#8217;activité permettant d&#8217;évaluer le succès du site et de prendre des décisions tactiques et stratégiques.</li>
<li>Augmenter la visibilité de son site web dans les moteurs de recherche, guider la clientèle à travers le site vers les produits les plus rentables, et garantir de bonnes performances, pour que le passage des visiteurs sur le site soit fluide et agréable.</li>
</ul>
<p>Si l&#8217;Open Source peut réduire à zéro le coût monétaire d&#8217;un produit, il ne peut pas réduire le coût d&#8217;apprentissage au-delà de la complexité intrinsèque du domaine, tout comme il ne peut pas réduire le coût d&#8217;apprentissage du domaine lui-même.</p>
<p>De ce point de vue, l&#8217;Open Source est cette même solution de facilité où les jeunes auteurs du haut de leur pile de livres invendus se rendent compte que la vraie difficulté n&#8217;était pas de les imprimer. Faire installer Magento pour 120€, c&#8217;est se retrouver avec un site qui fonctionne mais qu&#8217;on ne sait pas utiliser à son plein potentiel.</p>
<p>Faire de la vente en ligne, cela s&#8217;apprend. On peut lire des livres et des articles pour acquérir les bases et même avoir des bonnes idées et de l&#8217;intuition, mais bien des choses ne peuvent s&#8217;apprendre que par l&#8217;expérience et, souvent, par l&#8217;erreur. Et avec l&#8217;explosion de l&#8217;eCommerce ces derniers temps, le droit à l&#8217;erreur est un luxe que peu de vendeurs peuvent s&#8217;offrir&#8230;</p>
<p>Dans cette analogie, qui sont les vrais éditeurs, ceux qui poussent les livres jusque dans les étagères des librairies ? Ce sont les entreprises qui  ne se contentent pas de laisser leur client tout seul avec un logiciel complexe, mais qui au contraire partagent avec lui leur expérience du domaine, le forment, le conseillent, et lui proposent des stratégies adaptées à ses spécificités, qui laissent leur client avec la confiance et la capacité de pouvoir réussir son projet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/open-source/seul-180/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Identité et Sécurité : Mise en relation</title>
		<link>http://blog.tangane.com/identite-numerique/identite-et-securite-mise-en-relation-142/</link>
		<comments>http://blog.tangane.com/identite-numerique/identite-et-securite-mise-en-relation-142/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 09:16:06 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
		
		<category><![CDATA[Identité numérique]]></category>

		<category><![CDATA[identité]]></category>

		<category><![CDATA[sécurité]]></category>

		<category><![CDATA[vulgarisation]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/general/identite-et-securite-mise-en-relation-142/</guid>
		<description><![CDATA[Cet article est le dernier d&#8217;une série de trois sur le thème Identité et Sécurité. Vous pouvez consulter les autres article en suivant les liens suivants :

Identité et Sécurité : Qui es-tu ?
Identité et Sécurité : Signature Numérique

Mise en relation
Il manque dans tout ce système un détail. Comment le traiteur, qui n’a pour l’instant communiqué [...]]]></description>
			<content:encoded><![CDATA[<p>Cet article est le dernier d&#8217;une série de trois sur le thème Identité et Sécurité. Vous pouvez consulter les autres article en suivant les liens suivants :</p>
<ul>
<li><a href="http://blog.tangane.com/general/identite-et-securite-qui-es-tu-116/">Identité et Sécurité : Qui es-tu ?</a></li>
<li><a href="http://blog.tangane.com/general/identite-et-securite-signature-numerique-140/">Identité et Sécurité : Signature Numérique</a></li>
</ul>
<h3>Mise en relation</h3>
<p>Il manque dans tout ce système un détail. Comment le traiteur, qui n’a pour l’instant communiqué avec moi que par internet, peut-il savoir que je suis bien Victor Nicollet, habitant à l’adresse que je lui ai indiquée ? Il se pourrait tout à fait qu’un individu malveillant se fasse passer pour moi en associant mon nom à sa clé publique sur le site du traiteur. Ce dernier aurait donc en sa possession un contrat signé par une clé publique qui porte mon nom, alors que cette clé publique ne m’appartient pas !</p>
<p>Le plus simple (mais pas forcément le plus facile) est de fournir les identifiants de connexion en personne. Le traiteur peut me demander de passer à son siège pour que je lui donne ma clé publique. De la même façon, une banque peut envoyer par la poste un code d’accès au site à mon adresse, le Ministère de l’Economie, des Finances et de l’Industrie me demandera un identifiant qui se trouve uniquement sur mes avis d’imposition, et une école ou une entreprise me donnera les identifiants de mon compte informatique lors de ma première journée sur les lieux. Ces stratégies supposent donc que de se voir en personne (éventuellement, en regardant sa carte d’identité) permettent de s’assurer que celui qui reçoit les identifiants ou donne sa clé publique est bien celui qu’on veut voir.</p>
<p>On fait donc appel à un tiers de confiance qui a déjà identifié l’utilisateur et peut attester de son identité. C’est le principe même de la carte d’identité : celle-ci est juste la confirmation par un tiers de confiance (l’Etat) que l’identité de l’utilisateur correspond bien à son aspect physique (donné par la photo sur la carte) et à sa possession même de la carte. Comment transposer cela à l’informatique ?</p>
<p>Une manière de faire (qui existe depuis si longtemps qu’on la juge naturelle) est que le tiers de confiance donne un courrier électronique à l’utilisateur avec une adresse comportant son nom de domaine. Ainsi, pour l’adresse victor.nicollet@tangane.com, l’entreprise Tangane reconnaît que le propriétaire de cette adresse est l’individu Victor Nicollet qui travaille pour elle. Si vous faites confiance à Tangane, vous pouvez être certains que les courriers envoyés à cette adresse seront lus par moi, et pas par un individu qui se ferait passer pour moi. Par contraste, les mails envoyés à victor.nicollet@paradis-des-hackers.com seront probablement lus par la mauvaise personne.</p>
<p>Attention toutefois à ne pas en tirer de mauvaises conclusions : un courrier électronique qui vient de victor.nicollet@tangane.com n’a aucune raison d’avoir été écrit par moi ! Comme dans le monde réel, un individu peut indiquer sur l’enveloppe l’adresse d’expédition de son choix. Si un courrier électronique est d’une très grande importance, on peut vérifier son authenticité en demandant une confirmation (la demande de confirmation ne pouvant être lue que par le véritable propriétaire de l’adresse).</p>
<p>Ce type de vérification reste cependant peu pratique dans certaines situations. Par exemple :</p>
<p>Lorsque je visite pour la première fois le site de ma banque, en HTTPS, comment savoir que la clé publique qu’il me donne pour prouver son identité est bien la vraie, et non celle d’un individu malveillant qui se fait passer pour ma banque ?</p>
<p>Je télécharge en ligne un contrat d’assurance ou d’emprunt, je le signe, et je le renvoie par courrier électronique. Comment l’assurance ou la banque peut-elle vérifier que je suis bien celui que je prétends être, surtout si je n’ai pas de courrier électronique chez un fournisseur de confiance ?</p>
<p>La solution est d’utiliser ce qu’on appelle des réseaux de confiance. Pour prouver que ma clé publique est bien celle de Victor Nicollet, il me suffit de demander à une entité de confiance de signer un document numérique affirmant cela. Pour peu que l’entité de confiance soit reconnue (un pays, une institution internationale) mon interlocuteur, ainsi qu’un éventuel juge, acceptera cette signature comme la preuve que la clé publique m’appartient. Un contrat de la forme « je, soussigné Z, affirme que la clé publique X appartient à la personne Y » est appelé certificat, et les entités reconnues pour pouvoir signer un certificat sont appelées autorités de certification. Il suffit de se rendre auprès d’elles pour obtenir un certificat à son nom. Par exemple: http://www.verisign.fr/</p>
<p>Il existe une sorte particulière de certificat, appelé un certificat auto-signé : la personne Y affirme elle-même être la propriétaire de la clé publique X. Il n’interdit donc pas à un individu malveillant d’associer sa clé publique à un autre nom, mais il lui interdit en revanche d’associer son nom à ma clé publique. Certains logiciels, dont Adobe Reader, peuvent générer des certificats auto-signés.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/identite-numerique/identite-et-securite-mise-en-relation-142/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Identité et Sécurité : Signature Numérique</title>
		<link>http://blog.tangane.com/identite-numerique/identite-et-securite-signature-numerique-140/</link>
		<comments>http://blog.tangane.com/identite-numerique/identite-et-securite-signature-numerique-140/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 09:15:36 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
		
		<category><![CDATA[Identité numérique]]></category>

		<category><![CDATA[identité]]></category>

		<category><![CDATA[sécurité]]></category>

		<category><![CDATA[vulgarisation]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=140</guid>
		<description><![CDATA[Mui]]></description>
			<content:encoded><![CDATA[<p>Cet article est le second d&#8217;une série de trois sur le thème Identité et Sécurité. Vous pouvez consulter les autres article en suivant les liens suivants :</p>
<ul>
<li><a href="http://blog.tangane.com/general/identite-et-securite-qui-es-tu-116/">Identité et Sécurité : Qui es-tu ?</a></li>
<li><a href="http://blog.tangane.com/general/identite-et-securite-mise-en-relation-142/">Identité et Sécurité : Mise en relation</a></li>
</ul>
<h3>Signature Numérique</h3>
<p>Même avec un système à clé publique normal, il reste un problème : celui de la preuve. Prenons un exemple imaginaire.</p>
<p>Un jour, un grand traiteur sur le site duquel j’ai un compte sonne à ma porte pour me livrer dix mille euros de petits fours. Je réponds ne jamais avoir commandé cela. Les petits fours étant périssables, le manque à gagner pour le traiteur peut le motiver à aller devant un tribunal. Comment le juge pourra-t-il déterminer si je suis le menteur (j’ai commandé les petits fours, soit pour nuire au traiteur, soit pour une occasion qui n’a plus lieu et pour laquelle je ne veux donc pas payer) ou si le traiteur est en faute (une erreur informatique dans son logiciel de commande, une erreur de saisie, ou même une volonté de me nuire) ?</p>
<p>Ce que le traiteur peut prouver, c’est que je me suis à un moment donné connecté à son site à l’aide de ma clé privée (et encore, il faudrait pour cela que la vérification de mon identité indique le site auquel je me connecte, sans quoi le traiteur aurait pu espionner et recopier ma connexion à un autre site). Mais même si je me suis connecté au site, ai-je réellement passé la commande comme il le prétend ? Cela, le système d’identification le plus avancé au monde ne pourrait le faire.<br />
Dans le monde réel, lorsque deux personnes se mettent d’accord sur un contrat (surtout si c’est un contrat de dix mille euros) ils signent le document contractuel. On a donc développé en informatique un moyen de signer des contrats : la signature numérique.</p>
<p>Pour cela, il faut inverser le principe du système à clé publique. Lorsque je veux signer un contrat, je le crypte à l’aide de ma clé privée : n’importe qui peut alors le décrypter à l’aide de ma clé publique. Pour faciliter la lecture par un tiers, je joins le contrat crypté et ma clé publique au contrat original. Les autres signataires font de même, et l’on obtient à la fin un contrat original portant avec lui une clé publique et une signature pour chaque signataire.</p>
<p>Pour vérifier les signatures, il suffit d’utiliser les clés publiques pour décrypter les signatures et s’assurer qu’il s’agit bien du bon contrat. Cela prouve deux choses : d’abord, la signature appartient bien au propriétaire de la clé publique (car seul lui dispose de la clé privée permettant de crypter un contrat pour qu’il soit décryptable par la clé publique), et la signature s’applique bien au document auquel elle est associée (puisque décrypter la signature indique quel était le contrat qui a été signé).</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-119" title="blog1-img2" src="http://blog.tangane.com/wp-content/uploads/2009/02/blog1-img2.png" alt="blog1-img2" width="672" height="504" /></p>
<p>Il suffit donc au traiteur de m’envoyer, lorsque je veux passer une commande, le contrat au format PDF (contenant date de commande, date de livraison, prix et liste des petits fours). Je signe le contrat à l’aide de ma clé privée, par exemple à l’aide de ma version gratuite d’Adobe Reader, et je le lui renvoie. Le traiteur vérifie alors que la signature est correcte, ce qui lui permettra de faire valoir auprès d’un tribunal que j’ai effectivement signé ce contrat et que je dois donc mettre la main à la poche. En ce qui me concerne, je suis tranquille : ne disposant pas de ma clé privée, le traiteur ne pourra ni volontairement ni involontairement imiter ma signature et donc signer à ma place un contrat.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/identite-numerique/identite-et-securite-signature-numerique-140/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Identité et Sécurité - Qui es-tu ?</title>
		<link>http://blog.tangane.com/identite-numerique/identite-et-securite-qui-es-tu-116/</link>
		<comments>http://blog.tangane.com/identite-numerique/identite-et-securite-qui-es-tu-116/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 16:29:33 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
		
		<category><![CDATA[Identité numérique]]></category>

		<category><![CDATA[identité]]></category>

		<category><![CDATA[sécurité]]></category>

		<category><![CDATA[vulgarisation]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=116</guid>
		<description><![CDATA[Cet article est le premier d&#8217;une série de trois sur le thème Identité et Sécurité. Vous pouvez consulter les autres article en suivant les liens suivants :

Identité et Sécurité : Signature Numérique
Identité et Sécurité : Mise en Relation

Concepts fondamentaux en informatique, l’identité et la sécurité sont liées. Un pirate ne peut pas prendre le contrôle [...]]]></description>
			<content:encoded><![CDATA[<p>Cet article est le premier d&#8217;une série de trois sur le thème Identité et Sécurité. Vous pouvez consulter les autres article en suivant les liens suivants :</p>
<ul>
<li><a href="http://blog.tangane.com/general/identite-et-securite-signature-numerique-140/">Identité et Sécurité : Signature Numérique</a></li>
<li><a href="http://blog.tangane.com/general/identite-et-securite-mise-en-relation-142/">Identité et Sécurité : Mise en Relation</a></li>
</ul>
<p>Concepts fondamentaux en informatique, l’identité et la sécurité sont liées. Un pirate ne peut pas prendre le contrôle d’un ordinateur que personne ne peut contrôler, par définition. Mais s’il existe une personne capable de contrôler l’ordinateur, alors le pirate pourra se faire passer pour elle. Chaque fois que l’on entend parler d’une faille de sécurité, il y a une donc question d’identité sous-jacente : exploiter une faille de sécurité, c’est pour l’attaquant tromper le système afin d’assumer l’identité d’une cible disposant de droits supérieurs, et d’agir en tant que tel pour en bénéficier. L’auteur d’un virus se fait passer pour l’utilisateur de l’ordinateur afin d’installer des programmes nuisibles, le hacker se fait passer pour un administrateur pour accéder à des informations confidentielles ou prendre le contrôle d’un serveur, les phishers se font passer pour une autorité légitime pour obtenir des utilisateurs des informations critiques, les spammeurs se font passer pour des auteurs humains pour que leurs courriers arrivent dans les boîtes aux lettres.</p>
<p>Et tout le travail des experts en sécurité et des équipes de développement, c’est de s’assurer que l’interlocuteur d’un programme est bien la personne voulue.</p>
<h3>Qui es-tu ?</h3>
<p>La première question qu’on se pose, lorsqu’on doit mettre en place un système sûr, c’est comment reconnaître les personnes. Le premier principe de la reconnaissance, c’est de pouvoir déterminer si deux visiteurs (par exemple, à quelques jours d’intervalle) sont ou non la même personne.</p>
<p>Par exemple, un visiteur s’inscrit sur un site internet et effectue quelques opérations. Une semaine plus tard, il revient sur le même site et veut continuer son activité. Le site doit donc pouvoir déterminer que le visiteur d’il y a une semaine et le même que le visiteur d’aujourd’hui.</p>
<p>Le moyen le plus simple d’effectuer cela est le nom d’utilisateur. Le visiteur en a choisi (ou reçu) un lors de sa première visite, et il lui suffit de le taper à nouveau pour que le site le reconnaisse. Ce système est souvent utilisé sur internet, dans des formes plus ou moins déguisées :</p>
<ul>
<li>Certains sites où l’information stockée n’est pas essentielle. Par exemple, pour identifier ses visiteurs, le site BrowserShots utilise l’URL qu’ils ont demandé à examiner comme nom d’utilisateur. Deux utilisateurs qui demanderont la même URL seront donc considérés comme un seul et même individu.</li>
<li>De nombreux outils de blog, comme Wordpress, utilisent une adresse mail secrète pour permettre aux gens de poster par mail. Ainsi, un utilisateur qui connaît l’adresse mail utilisée par le blog peut poster sur le blog directement. Cette adresse sert donc de nom d’utilisateur, permettant d’identifier les auteurs qui ont le droit de poster.</li>
<li>La majorité des sites non sécurisés utilisent pour reconnaître les utilisateurs des cookies. Un cookie contient un numéro de session qui sert de nom d’utilisateur. Comme il est compliqué à retenir, c’est l’explorateur qui se charge de le retenir et de le renvoyer au site à chaque page visitée. Mais si un attaquant volait le cookie d’un autre utilisateur, il pourrait se faire passer pour celui-ci.</li>
<li>Un code de carte bancaire est un nom d’utilisateur, puisqu’il permet d’identifier avec précision le propriétaire de la carte bancaire en question.</li>
</ul>
<p>Il y a malheureusement plusieurs problèmes lorsqu’on se sert d’un nom d’utilisateur pour identifier les visiteurs.</p>
<ul>
<li>Les noms d’utilisateur sont stockés par le système. Une attaque sur le système qui parviendrait à obtenir cette liste de noms permettrait à l’attaquant de se faire passer pour n’importe quel utilisateur‒c’est la raison pour laquelle on évite de stocker les numéros de carte bleue sur les sites de vente en ligne, par exemple.</li>
<li>Un nom d’utilisateur doit être unique (deux utilisateurs doivent avoir des noms différents). Si l’utilisateur a le choix de son nom, il peut découvrir qu’une autre personne porte le même nom et se faire passer pour elle. S’il n’a pas le choix de son nom, alors le nom qui lui est donné sera probablement difficile à retenir et sera donc probablement noté quelque part (le vol de cookies est un exemple typique de ce phénomène).</li>
<li>Si la personne choisit son nom, ce sera souvent facile à deviner pour un attaquant à partir de ses informations publiques (nom, prénom, pseudonymes usuels, adresses électroniques). Si certaines cartes bancaires contiennent une partie de leur numéro au dos, c’est pour éviter qu’une photo de la face ne suffise à révéler l’identifiant complet.</li>
</ul>
<p>Pour pallier à ces problèmes, on utilise souvent des mots de passe. Ceux-ci viennent compléter le nom d’utilisateur pour le rendre plus difficile à deviner, et sont par définition secrets et aléatoires pour qu’on ne puisse pas les déduire d’un nom, prénom ou pseudonyme. L’immense majorité des systèmes que l’on trouve sur les bureaux et sur internet utilisent une méthode combinant un nom d’utilisateur (unique, plus ou moins public, sert à identifier l’utilisateur) avec un mot de passe (quelconque, secret, sert à vérifier l’identité).</p>
<p>Une amélioration notable, qui permet de ne pas stocker les mots de passe sur le système, est l’utilisation des fonctions de hachage : ce sont des algorithmes qui transforment un mot de passe en un texte aléatoire. Retrouver le mot de passe à partir du texte aléatoire est proche de l’impossible, mais un mot de passe donné est<br />
toujours transformé en un même texte aléatoire, et deux mots de passe différents donnent deux textes aléatoires différents, ce qui permet de s’assurer que le mot de passe fourni par l’utilisateur est le bon sans avoir à le stocker !</p>
<p>Pour autant, cette solution n’est pas parfaite :</p>
<ul>
<li>Certains systèmes persistent à enregistrer les mots de passe en clair. En effet, c’est la seule manière de pouvoir renvoyer le mot de passe à l’utilisateur si celui-ci le perd. Cependant, cela signifie que si le système est attaqué, les mots de passe des utilisateurs peuvent être découverts.</li>
<li>Les mots de passe créent l’illusion que, puisqu’ils sont secrets, ils ne peuvent pas être devinés. Or, un mot de passe qui existe dans le dictionnaire ou peut être facilement deviné à partir d’informations publiques n’apporte pas une vraie sécurité. Encore pire, la tendance à utiliser le même mot de passe sur tous les sites fait qu’une faille de sécurité sur un site permet d’obtenir un mot de passe pour tous les autres.</li>
<li>Il faut, pour s’identifier, envoyer le mot de passe au système. Un attaquant qui surveille le canal de communication peut donc en extraire le mot de passe et l’utiliser. De même, le phishing consistant à envoyer un courriel demandant le mot de passe d’un utilisateur permet de l’obtenir à faible coût.</li>
</ul>
<p>Résoudre ces problèmes se fait à l’aide d’un système cryptographique à clé publique. Dans un tel système, les informations critiques ne quittent jamais l’ordinateur de l’utilisateur, ce qui fait qu’elles ne peuvent être ni interceptées, ni données par erreur, ni volées sur le serveur.</p>
<p>Le principe de ce système est simple : chaque utilisateur dispose d’une clé publique, distribuée à tout le monde sans crainte, qui permet de crypter du texte, et d’une clé privée, conservée précieusement dans le secret de l’ordinateur, qui permet de décrypter ce texte. On peut voir la clé publique comme un cadenas (n’importe qui peut prendre une copie du cadenas et verrouiller une boîte contenant un message), et la clé privée comme la clé du cadenas (seul l’utilisateur peut ouvrir une boîte et lire le message).</p>
<p>Pour vérifier qu’un utilisateur est bien le propriétaire d’une clé publique, on crypte un message aléatoire avec cette clé publique et on envoie le message crypté à l’utilisateur. L’utilisateur, s’il possède la clé privée, décrypte le message aléatoire d’origine. S’il ne possède pas la clé privée, il ne peut que deviner le message aléatoire, ce qui est proche de l’impossible. Donc, si le système voit revenir le message aléatoire qu’il avait choisi, il peut être certain que l’utilisateur qu’il a en face de lui est bien le propriétaire de la clé publique.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-118" title="blog1-img1" src="http://blog.tangane.com/wp-content/uploads/2009/02/blog1-img1.png" alt="blog1-img1" width="672" height="363" /></p>
<p>Lors de son inscription, l’utilisateur fournit au système sa clé publique, qui lui sert alors de nom d’utilisateur. Lors de chacune de ses visites, il affirmera être le propriétaire de cette clé et le système le vérifiera suivant le principe ci-dessus.</p>
<p>Malheureusement, ce système n’est pas facile à utiliser. Bien sûr, les explorateurs web sont déjà capables de travailler avec ce type de cryptographie pour s’assurer de l’identité d’un site‒pour toute adresse qui commence par HTTPS, l’explorateur vérifie que le serveur possède bien la clé privée correspondant à l’adresse. Ainsi, aucun attaquant ne pourra se faire passer pour le site HTTPS de votre banque sans que votre explorateur ne vous avertisse (il peut toutefois utiliser une adresse HTTP, donc non sécurisée, et espérer que vous ne vous en rendez pas compte).</p>
<p>Mais l’identification en sens inverse, donc s’identifier auprès d’un système avec sa paire de clés publique/privée, reste du domaine des geeks (qui l’utilisent par exemple pour faire du SSH) et apparaît très peu dans la vie courante. Utiliser des mots de passe, malgré un relatif manque de sécurité, restent rois. Toutefois, des initiatives comme celle du Ministère des Finances et de l’Economie en France, ou de la carte d’identité électronique en Belgique, commencent à rendre ce principe plus accessible.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/identite-numerique/identite-et-securite-qui-es-tu-116/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fiche technologie - Flex</title>
		<link>http://blog.tangane.com/ria/fiche-technologie-flex-65/</link>
		<comments>http://blog.tangane.com/ria/fiche-technologie-flex-65/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 10:44:42 +0000</pubDate>
		<dc:creator>Fabien Deshayes</dc:creator>
		
		<category><![CDATA[RIA]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=65</guid>
		<description><![CDATA[Présentation
La technologie Flex a été créée par Macromedia en 2004 puis reprise par Adobe en 2006. La version actuelle est la 3.2, et une version 4.0 (nom de code Gumbo) est en préparation pour la seconde moitié 2009. Au sens strict, Flex est un framework de développement s&#8217;appuyant sur le Flash Player et offrant des [...]]]></description>
			<content:encoded><![CDATA[<h3>Présentation</h3>
<p>La technologie Flex a été créée par Macromedia en 2004 puis reprise par Adobe en 2006. La version actuelle est la 3.2, et une version 4.0 (nom de code Gumbo) est en préparation pour la seconde moitié 2009. Au sens strict, Flex est un framework de développement s&#8217;appuyant sur le Flash Player et offrant des éléments facilitant la création d&#8217;applications riches. Depuis la version 3, Flex est devenu un projet open source.</p>
<div style="text-align: center;"><em><img class="aligncenter size-full wp-image-87" title="logo_flex" src="http://blog.tangane.com/wp-content/uploads/2009/01/logo_flex.png" alt="logo_flex" width="150" height="150" /></em></div>
<h3>Principes et caractéristiques</h3>
<p>La technologie Flex peut être expliquée en trois couches :</p>
<ul>
<li>L&#8217;interface est décrite à l&#8217;aide d&#8217;une syntaxe MXML (Macromedia XML). On peut y placer et organiser les conteneurs, composants et contrôles selon une hiérarchie. Les fichiers .mxml sont ensuite transcrits en ActionScript (fichiers .as) au moment de la compilation.</li>
<li>La logique applicative sera généralement contenue dans des fichiers ActionScript. L&#8217;ActionScript 3 est le langage utilisé pour créer des exécutables Flash (.swf). C&#8217;est un langage objet basé sur ECMAScript (norme ECMA), ce qui lui donne une forte ressemblance avec le Javascript au niveau grammatical, bien qu&#8217;il soit également assez proche du Java.</li>
<li>Les applications Flex, tout comme ce que l&#8217;on peut créer avec le logiciel Flash CS4, sont de simples exécutables Flash de type .swf. Flex fournit tout de même une page HTML permettant simplement d&#8217;intégrer l&#8217;application sur une page web.</li>
<li>Flex permettant de réaliser des RIA, on peut effectuer un certain nombre de traitements coté client. Néanmoins, son architecture reste la plupart du temps de type client-serveur. Flex (et les diverses communautés open source) offre diverses possibilités de communication avec un serveur, qu&#8217;il s&#8217;agisse du PHP (AMFPHP), du .NET (FluorineFx), du Java (BlazeDS, LCDS) ou toute technologie pouvant exposer des web services.</li>
</ul>
<p>La version actuelle de Flex offre les possibilités suivantes :</p>
<ul>
<li>un ensemble de contrôles &#8220;riches&#8221; pour facilement créer des applications : check box, calendrier, grille de données, combo box, etc.</li>
<li>le &#8220;data binding&#8221;, permettant de lier un champ graphique à une valeur : si cette dernière change, la vue est automatiquement rafraîchie avec la nouvelle valeur</li>
<li>la lecture de médias (vidéo, audio) dans les formats H264, H263, On2VP6, MP3 et des images de types GIF, JPG et PNG</li>
<li>l&#8217;intégration de l&#8217;e4x, permettant de manipuler simplement du XML</li>
<li>la possibilité de personnaliser l&#8217;application avec des feuilles de styles CSS et de les skinner en utilisant des images ou des animations de type .swf</li>
</ul>
<h3>Outils</h3>
<p>La technologie Flex s&#8217;appuie sur l&#8217;éditeur Flex Builder, lui même basé sur Eclipse : il profite donc des possibilités de cet environnement. Précision : Flex Builder existe en version &#8220;stand-alone&#8221; ou en tant que plugin Eclipse. Cet éditeur offre de nombreuses possibilités, se rapprochant de celles disponibles en Java sur Eclipse : complétion, coloration syntaxique, refactoring mais aussi une version WYSIWYG (What You See Is What You Get) des fichiers MXML et CSS, un mode débug et un profiler (pour monitorer la mémoire utilisée).</p>
<div style="text-align: center;"><em><img class="aligncenter size-full wp-image-91" title="flex_builder" src="http://blog.tangane.com/wp-content/uploads/2009/01/flexbuilder.gif" alt="flex_builder" width="490" height="369" /></em></div>
<p>L&#8217;une des forces de Flex est aussi de s&#8217;interfacer correctement avec les autres produits d&#8217;Adobe : il est en effet tout à fait possible d&#8217;utiliser les logiciels Flash, Fireworks ou Illustrator pour créer des skins et des composants Flex. Le lien entre designers et développeurs est très important pour Adobe : c&#8217;est également pour cela qu&#8217;un nouveau logiciel, nommé Flash Catalyst, arrive bientôt. Il permet très simplement de créer une interface Flex (aspect graphique, comportement)  sans avoir à écrire une ligne de code ! L&#8217;ensemble de éléments mis bout à bout forme un workflow designer / développeur, thème récurrent autour de la technologie Flex.</p>
<div style="text-align: center;"><em><img class="aligncenter size-full wp-image-90" title="Flex_designer_developer_workflow" src="http://blog.tangane.com/wp-content/uploads/2009/01/designer_developer_workflow.jpg" alt="Flex_designer_developer_workflow" width="480" height="220" /></em></div>
<p>Adobe propose également des solutions serveur Java pour faciliter la communication et les échanges avec une interface Flex. Il s&#8217;agit de <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS" target="_blank">BlazeDS</a>, projet open source et de Live Cycle Data Services, solution payante. La première est un sous-ensemble de la seconde, mais elles offrent toutes les deux les meilleurs outils de communication Flex - Java. Il existe également d&#8217;autres outils de communication mais ceux-ci ne sont pas gérés par Adobe.</p>
<h3>Points forts</h3>
<p>La technologie Flex s&#8217;appuyant sur le Flash Player, elle profite de ce fait des avantages de ce dernier. Cela lui fait donc profiter de l&#8217;expérience des 10 versions du Player mais également d&#8217;une communauté importante de développeur &#8220;Flash&#8221;.  On peut ainsi citer quelques points forts de Flex :</p>
<ul>
<li>sa capacité de déploiement : le Flash Player est installé sur près de 98% des ordinateurs (source : <a href="http://www.adobe.com/products/player_census/flashplayer/version_penetration.html" target="_blank">chiffres Adobe</a>) en version 9 ou plus. Un site indépendant, <a href="http://www.riastats.com" target="_blank">RIAStats</a>, montre un taux de 97% d&#8217;installation.</li>
<li>son ubiquité : il existe un Flash Player sur Windows, Mac OS et Linux (encore en version 9 sur ce dernier).</li>
<li>son environnement de développement, basé sur Eclipse.</li>
<li>sa capacité à pouvoir dialoguer avec différents languages serveur, en utilisant les différents moyens de communication : les appels http classiques, les web services, les RemoteObject, l&#8217;AMF, etc.</li>
<li>sa gestion des médias : le format Flash est en effet le plus répandu sur Internet pour la diffusion de contenu vidéo (cf. des sites comme Youtube ou dailymotion).</li>
<li>sa large communauté, s&#8217;appuyant en partie sur les nombreux développeurs Flash déjà existants. On trouve de nombreux documents et exemples sur Internet.</li>
</ul>
<h3>Points faibles</h3>
<p>De la même manière que Flex profite des points forts de Flash, elle souffre également des mêmes problèmes. De nombreux développeurs web n&#8217;apprécient pas Flash en mettant en cause son incapacité à créer des applications accessibles, à être correctement référencées ou encore à fonctionner correctement avec les barres de navigation des navigateurs.</p>
<p>Ces affirmations ne sont pas tout à fait vraies. En effet, il existe un ensemble de propriétés permettant de rendre accessible les applications. Les moteurs de recherche commencent à référencer le contenu de fichier .swf et la version 3 de Flex permet d&#8217;interagir correctement avec la barre de navigation des navigateurs. Des efforts sont donc fait mais ces points restent vrais et demanderont forcément un supplément de travail comparé par exemple à un développement d&#8217;une application web en HTML.</p>
<p>De plus, si l&#8217;on constate que la communauté Flash est importante, elle est en grande partie constitué de designers ayant des connaissances en développement, et pas toujours de développeurs confirmés ou d&#8217;architectes. Bien que ce type de profil est en train de se répandre, elle reste encore une minorité dans le monde de l&#8217;ActionScript.</p>
<h3>Le futur</h3>
<p>Une version 4 du framework Flex ainsi que du Flex Builder est en préparation, elles devraient être disponibles durant la seconde moitié de 2009 et apporter leur lots de nouveautés :</p>
<ul>
<li>une amélioration de la collaboration entre design et développement, notamment en simplifiant le processus de skinning de composants pour qu&#8217;il soit très poussé sans avoir à coder en ActionScript, juste avec une description mxml.</li>
<li>l&#8217;ajout de nouveaux éléments pour profiter des capacités du Flash Player 10, notamment un composant vidéo refait et peut-être de la 3D</li>
<li>une amélioration de la productivité en optimisant le compilateur, avec pour objectif des temps divisé par 5 !</li>
<li>une plus grande interaction avec la technologie AIR d&#8217;Adobe</li>
</ul>
<div style="text-align: center;"><em><a href="http://alternativaplatform.com/en/demos/temple/"><img class="aligncenter size-full wp-image-92" title="flex_3d" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_3d.png" alt="flex_3d" width="500" height="227" /></a></em></div>
<p>Une présentation plus complète est disponible sur le site du Flex SDK : <a href="http://opensource.adobe.com/wiki/display/flexsdk/Gumbo+Themes">Gumbo Themes</a> (Gumbo étant le nom désignant Flex 4)</p>
<p>Flex étant devenu récemment un projet open source, il n&#8217;est pas simple à l&#8217;heure actuelle de voir une stratégie à long terme. On peut toutefois penser que cette technologie va continuer à s&#8217;ouvrir pour agrandir encore sa communauté et renforcer sa position. De la même manière, le portage d&#8217;applications Flex sur des téléphones mobiles dépendra de la future version du Flash Player, dont on dit que c&#8217;est son objectif principal.</p>
<h3>Références</h3>
<p>Voici quelques applications réalisées avec Flex :</p>
<ul>
<li>Le <a href="http://flex.org/tour" target="_blank">Tour de Flex</a>, application AIR compilant des possibilités de Flex</li>
<li><a href="https://www.acrobat.com/#/connectnow/ConnectNowBegin" target="_blank">Acrobat.com</a>, un ensemble de services d&#8217;Adobe dont notamment les impressionants Buzzword (traitement de texte avancé) et ConnectNow (pour le travail collaboratif)</li>
<li><a href="http://aviary.com/home" target="_blank">Aviary</a>, un suite d&#8217;outil d&#8217;édition graphique</li>
<li>Le <a href="http://www.sherwin.com/visualizer/" target="_blank">décorateur de Sherwin-Williams</a>, permettant de colorer des pièces d&#8217;intérieur ou des extérieurs avec plus d&#8217;un millier de couleur. Le rendu est bluffant, et l&#8217;on se rend bien compte des possibilités utilisés au niveau du rendu des ombres et des couleurs.</li>
</ul>
<div style="text-align: center;"><em><a href="http://blog.tangane.com/wp-content/uploads/2009/01/aviary.png" target="_blank"><img class="aligncenter size-medium wp-image-88" title="aviary" src="http://blog.tangane.com/wp-content/uploads/2009/01/aviary-300x172.png" alt="aviary" width="300" height="172" /></a></em></div>
<h3>Liens</h3>
<p>Voici quelques liens complémentaires, des sources d&#8217;informations à surveiller pour ceux qui s&#8217;intéressent à la technologie Flex :</p>
<ul>
<li>Le site <a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK" target="_blank">open source du Flex SDK</a></li>
<li>Le site <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS" target="_blank">open source de BlazeDS</a></li>
<li>Le <a href="http://www.adobe.com/devnet/flex/" target="_blank">Flex Developer Center</a>, point d&#8217;entrée vers de nombreuses ressources</li>
<li><a href="http://flex.org/" target="_blank">Flex.org</a>, portail communautaire autour de Flex où l&#8217;on trouve de nombreux composants, un showcase, des offres d&#8217;emploi, etc.</li>
<li>Le <a href="http://blogs.adobe.com/flex/" target="_blank">blog officiel de l&#8217;équipe Adobe Flex</a></li>
</ul>
<h3>Bilan</h3>
<p>En se basant sur le Flash Player, la technologie Flex a su s&#8217;imposer pour devenir très utilisée dès lors que l&#8217;on parle d&#8217;applications RIA. En effet, en s&#8217;appuyant sur l&#8217;écosystème Flash déjà existant, elle a su se développer rapidement et communiquer efficacement. Flash étant par définition une technologie graphique, il est normal que les rendus proposés soient de qualité supérieure aux interfaces &#8220;classiques&#8221;. Le virage open source pris par Flex va certainement changer l&#8217;évolution de cette technologie qui semble atteindre une certaine maturité.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/ria/fiche-technologie-flex-65/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fiche technologie - Silverlight</title>
		<link>http://blog.tangane.com/ria/fiche-technologie-silverlight-45/</link>
		<comments>http://blog.tangane.com/ria/fiche-technologie-silverlight-45/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 13:38:40 +0000</pubDate>
		<dc:creator>Fabien Deshayes</dc:creator>
		
		<category><![CDATA[RIA]]></category>

		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=45</guid>
		<description><![CDATA[
Présentation
Silverlight est la technologie riche de Microsoft. Autrefois appelée WPF/E (Windows Presentation Foundation / Everywhere), cette technologie a été renommée Silverlight puis présentée lors de l&#8217;événement MIX 07 de Microsoft. La première version disponible fut la 1.0 bêta, lancée en même temps que Silverlight 1.1 alpha. A l&#8217;heure actuelle, la version 2 est sortie en [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;"><em><a href="http://www.silverlight.net"><img class="aligncenter size-medium wp-image-104" title="silverlight_logo" src="http://blog.tangane.com/wp-content/uploads/2009/02/silverlight_logo-268x300.jpg" alt="silverlight_logo" width="268" height="300" /></a></em></div>
<h3>Présentation</h3>
<p>Silverlight est la technologie riche de Microsoft. Autrefois appelée WPF/E (Windows Presentation Foundation / Everywhere), cette technologie a été renommée Silverlight puis présentée lors de l&#8217;événement MIX 07 de Microsoft. La première version disponible fut la 1.0 bêta, lancée en même temps que Silverlight 1.1 alpha. A l&#8217;heure actuelle, la version 2 est sortie en octobre 2008 et la version 3 est en préparation (prévue pour courant 2009).<br />
Silverlight est une machine virtuelle ou plugin permettant d&#8217;exécuter des applications Silverlight sur différents systèmes d&#8217;exploitations (Windows, Mac OS, Linux via le projet Moonlight) à l&#8217;intérieur de différents navigateurs (Internet Explorer, Firefox, Safari). Grâce à son moteur de rendu vectoriel, Silverlight souhaite offrir de nouvelles expériences beaucoup plus riches aux utilisateurs. Un raccourci rapide serait de dire que Silverlight est le FlashPlayer de Microsoft. Elle fut en effet proclamée comme telle lors de sa sortie, beaucoup de personnes parlant alors de &#8220;Flash-killer&#8221;.</p>
<h3>Principes et caractéristiques</h3>
<p>Comme la plupart des technologies permettant de réaliser des applications riches, Silverlight se découpe en couches.</p>
<ul>
<li>La première concerne la description de l&#8217;interface, faite à l&#8217;aide d&#8217;une syntaxe XML propre à Microsoft, le XAML. L&#8217;avantage de cette syntaxe est qu&#8217;elle permet de visualiser plus simplement l&#8217;agencement des éléments qu&#8217;avec un langage impératif. De plus, Microsoft fournit un outil (ExpressionBlend) permettant de visualiser le rendu du XAML à la volée (on parle alors de WYSIWYG (What You See Is What You Get)).</li>
<li>La seconde décrit la logique de l&#8217;application, son comportement à avoir en fonction des interactions de l&#8217;utilisateur. Cette partie est réalisée en utilisant l&#8217;un des langages compatibles avec Silverlight, soit du C#, duVisual Basic, du JavaScript, du Python ou du Ruby. Ainsi, n&#8217;importe quel développeur connaissant l&#8217;un de ces langages pourra aisément développer une application Silverlight.</li>
<li>Enfin, la dernière couche concerne la diffusion et le déploiement. Une application Silverlight s&#8217;exécute dans un navigateur, via leplugin du même nom. Il faut donc déposer certains fichiers sur un serveur web : un &#8220;conteneur&#8221; html qui inclura l&#8217;application et un fichier .xap qui est une archive compressée contenant les ressources et le contenu de l&#8217;application.</li>
</ul>
<p>Bien que la version 1 de Silverlight ait apporté quelques fonctionnalités intéressantes (lecture de vidéo haute qualité, DeepZoom), la communauté a vite pointé quelques manques qui ont pour la plupart été comblés avec la version 2. Silverlight propose entre autres les fonctionnalités suivantes :</p>
<ul>
<li>un ensemble de contrôles &#8220;riches&#8221; pour facilement créer des applications : check box, calendrier, grille de données, combo box, etc.</li>
<li>le &#8220;data binding&#8221;, permettant de lier un champ graphique à une valeur : si cette dernière change, la vue est automatiquement rafraîchie avec la nouvelle valeur</li>
<li>la possibilité d&#8217;accéder au DOM (Document Object Model) de la page html servant de &#8220;conteneur&#8221; et ainsi d&#8217;interagir avec</li>
<li>la lecture de médias (vidéo, audio) dans les formats VC1, WMV, WMA, MP3 et des images de types GIF, JPG et PNG</li>
<li>la lecture / écriture de fichiers XML</li>
<li>la lecture d&#8217;un flux ATOM et RSS</li>
<li>l&#8217;intégration du composant LINQ permettant de requêter des données grâce à une syntaxe proche du SQL et de le transcrire en XML</li>
<li>la communication externe avec des appels http, webservice ou la gestion de sockets</li>
</ul>
<p>Bien évidemment, d&#8217;autres fonctionnalités sont disponibles. Pour avoir une vue d&#8217;ensemble, vous pouvez consulter le Silverlight 2.0Developer Reference.</p>
<div style="text-align: center;"><em><a href="http://blog.tangane.com/wp-content/uploads/2009/01/silverlight_2_poster.jpg"><img class="alignnone size-medium wp-image-51" title="silverlight_2_poster" src="http://blog.tangane.com/wp-content/uploads/2009/01/silverlight_2_poster-300x186.jpg" alt="silverlight_2_poster" width="300" height="186" /></a><br />
</em></div>
<h3>Outils</h3>
<p>Le développement d&#8217;une application Silverlight se réalise notamment autour de plusieurs outils. Bien qu&#8217;il existe de nombreux environnements pour développer en .NET, la solutionVisual Studio est la plus à même de convenir aux développeurs Silverlight. Il suffit pour ce faire d&#8217;installer une extension gratuite, les <a id="c910" title="Microsoft Silverlight Tools" href="http://www.microsoft.com/downloads/details.aspx?displaylang=fr&amp;FamilyID=c22d6a7b-546f-4407-8ef6-d60c8ee221ed" target="_blank">Microsoft Silverlight Tools</a>. La suite Visual Studio est un IDE très répandu parmi les développeurs de très bonne qualité, ce qui ne dépayse pas le développeur .NET.<br />
Il faut toutefois savoir que Visual Studio permet de développer le code de &#8220;logique applicative&#8221; ainsi que d&#8217;écrire du XAML, mais il existe un outil bien plus spécifique pour ce dernier : Expression Blend.<br />
Expression est une suite logicielle de création graphique et numérique. Le logiciel Expression Blend va permettre de créer des interfaces riches (donc du XAML) très facilement avec son système WYSIWYG. Les éléments graphiques sont directement positionnés sur l&#8217;application et le XAML est généré, bien qu&#8217;il soit possible de l&#8217;éditer. Attention toutefois, Expression Blend ne permet pas d&#8217;éditer le code de &#8220;logique applicative&#8221;.<br />
Pour pouvoir développer entièrement une application Silverlight, on va alors avoir besoin de deux outils : Visual Studio et Expression Blend.</p>
<h3>Points forts</h3>
<p>Bien qu&#8217;étant une technologie récente, Silverlight a tout de même de nombreux points forts. Microsoft a su produire un plugin de qualité qui, sans pour autant rattraper le retard sur le Flash Player, a su se faire remarquer dans le domaine des RIA, et ce pour plusieurs raisons :</p>
<ul>
<li>tout d&#8217;abord en axant sa communication en partie autour de la qualité vidéo, offrant son propre service de streaming et une très belle qualité d&#8217;image. A l&#8217;heure où la vidéo sur Internet occupe une place prépondérante, Microsoft a donc pu s&#8217;en servir comme fer de lance de sa technologie.</li>
<li>des composants intéressants et novateurs, comme le DeepZoom qui permet de visualiser des images et des documents de grande taille en offrant un agrandissement très fluide.</li>
<li>le support de différents langages de programmation, permettant ainsi de toucher plus de développeurs ainsi qu&#8217;une plus grande communauté.</li>
<li>un environnement de développement éprouvé et apprécié : en effet, Visual Studio est un outil bien connu et très utilisé.</li>
</ul>
<h3>Points faibles</h3>
<p>Toutefois, Silverlight reste une technologie encore jeune. Pour afficher les applications Silverlight, un plugin est nécessaire et son déploiement sur les navigateurs prendra forcément de nombreuses années. Il existe toutefois un site qui donne des chiffres en se basant sur les statistiques de visites de sitesweb par des utilisateurs lambda. On s&#8217;aperçoit que Silverlight est installé sur plus de 16% des ordinateurs, ce qui représente un chiffre relativement faible comparé au taux d&#8217;installation du FlashPlayer, mais impressionnant en sachant que celui-ci n&#8217;est présent que depuis un an et demi.  <a id="tuqh" title="Microsoft annoncait" href="http://www.microsoft.com/presspass/press/2008/oct08/10-13Silverlight2PR.mspx" target="_blank">Microsoft annonçait</a> en octobre 2008 30% de pénétration aux USA et jusqu&#8217;à 50% dans certains pays.<br />
Bien que l&#8217;utilisation de Visual Studio soit un plus dans le développement d&#8217;une application Silverlight, le fait d&#8217;avoir besoin de deux logiciels pour travailler est relativement gênant : il n&#8217;existe pas de réel outil complet pour créer des applications Silverlight. Peut-être dans un futur proche ?<br />
Enfin, les sources et les exemples sur le net reste assez peu nombreux. La technologie reste jeune et ne bénéficie pas, si on la compare à la technologieFlex, d&#8217;un passé de 10 ans (issu de Flash). Les documentations et autres exemples sont donc plus rares, tout comme les compétences.</p>
<h3>Le futur</h3>
<p>Silverlight prépare sa version 3 qui sortira courant 2009, et l&#8217;on sait d&#8217;ores et déjà qu&#8217;elle se dirige vers des fonctionnalités déjà présente dans le Flash Player, notamment :</p>
<ul>
<li>la prise en charge de la norme h264 pour des vidéos de haute qualité</li>
<li>le support de la 3D en utilisant les ressources de la carte graphique</li>
</ul>
<ul>
<li>une vue graphique (WYSIWYG) entièrement intégrée dans l&#8217;outil de développement (Visual Studio)</li>
</ul>
<p>Mais également une amélioration du data-binding et de nouveaux contrôles.</p>
<p>Le futur de Silverlight se dirige également vers les mobiles ! Ce marché très en vue actuellement se verra doté d&#8217;une version spécifique (appelée Silverlight Mobile), basée sur Silverlight 2 et qui sera disponible surWindows Mobile vers la fin 2009.</p>
<h3>Références</h3>
<p>Voici quelques applications réalisées avec Silverlight :</p>
<ul>
<li><a id="u-jr" title="Site d'information de France Télévisions" href="http://info.francetelevisions.fr/" target="_blank">Site d&#8217;information de France Télévisions</a> centré sur de la diffusion vidéo. Utilisé également pour diffuser les JO de Pékin 2008.</li>
<li><a id="wqjw" title="Une mosaïque" href="http://xaml.me/zoommosaic/" target="_blank">Une mosaïque</a> présentant au mieux la fonctionnalité DeepZoom.</li>
<li>Le <a id="z3_n" title="client mail d'AOL" href="http://beta.aol.com/projects.php?project=webmailria&amp;loc=0" target="_blank">client mail d&#8217;AOL</a>, en bêta (accessible avec un compte mail AOL)</li>
<li>Le <a id="h_ow" title="Microsoft Health Demonstrator" href="http://www.mscui.net/PatientJourneyDemonstrator/" target="_blank">Microsoft Health Demonstrator</a>, simulateur d&#8217;une application de gestion d&#8217;un hôpital particulièrement réussie.</li>
</ul>
<p style="text-align: center;"><a href="http://blog.tangane.com/wp-content/uploads/2009/01/silverlight_france_televisions.jpg" target="_blank"><img class="alignnone size-full wp-image-52" title="silverlight_france_televisions" src="http://blog.tangane.com/wp-content/uploads/2009/01/silverlight_france_televisions.jpg" alt="silverlight_france_televisions" width="600" height="387" /></a></p>
<p><em><br />
</em>On peut retrouver de nombreuses démonstrations sur le <a id="sca6" title="showcase du site Silverlight" href="http://silverlight.net/Showcase/" target="_blank">showcase du site Silverlight</a> <em></em></p>
<h3>Liens</h3>
<p>Voici quelques liens complémentaires, des sources d&#8217;informations à surveiller pour ceux qui s&#8217;intéressent à la technologie Silverlight :</p>
<ul>
<li><a href="http://www.microsoft.com/silverlight" target="_blank">Le site de Silverlight sur microsoft.com</a></li>
<li><a href="http://silverlight.net/" target="_blank">silverlight.net : Silverlight community site</a></li>
<li>Le blog <a href="http://cornucopia30.blogspot.com/" target="_blank">.NET 3.0 Cornucopia</a>, plus technique</li>
<li><a href="http://msdn2.microsoft.com/en-us/library/bb190636.aspx" target="_blank">Silverlight sur le MSDN</a></li>
<li>Le <a id="xjy1" title="blog de Scott Guthrie" href="http://weblogs.asp.net/scottgu/default.aspx" target="_blank">blog de Scott Guthrie</a>, où l&#8217;on y retrouve toujours les dernières infos</li>
<li>Le site de <a id="o8vr" title="Silverlight Mobile" href="http://silverlight.net/learn/mobile.aspx" target="_blank">Silverlight Mobile</a></li>
</ul>
<h3>Bilan</h3>
<p>En un peu plus de 2 ans d&#8217;existence, Silverlight a su devenir l&#8217;une des technologies riches principales du marché, porté par les efforts de Microsoft et de ses nombreux partenaires pour la mettre en avant et la valoriser. Malgré que sa jeunesse la desserve sur certains points comme parfois le manque d&#8217;informations ou le taux de pénétration encore &#8220;faible&#8221;, la technologie Silverlight offre de belle capacités techniques en se positionnant entre autres sur le domaine de la vidéo. En utilisant au mieux ses outils existants (Visual Studio) et en misant sur la pluralité des langages, elle est a même de toucher le plus grand nombre de développeurs possibles, et donc d&#8217;utilisateurs.<br />
On suivra donc bien évidemment la troisième version ainsi que le portage sur mobile prévus en 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/ria/fiche-technologie-silverlight-45/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Skinning de composants Flex avec la Creative Suite 4</title>
		<link>http://blog.tangane.com/ria/skinning-de-composants-flex-avec-la-creative-suite-4-4/</link>
		<comments>http://blog.tangane.com/ria/skinning-de-composants-flex-avec-la-creative-suite-4-4/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 09:05:02 +0000</pubDate>
		<dc:creator>Fabien Deshayes</dc:creator>
		
		<category><![CDATA[RIA]]></category>

		<category><![CDATA[Adobe]]></category>

		<category><![CDATA[Creative Suite]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.tangane.com/?p=4</guid>
		<description><![CDATA[Introduction
Il existe différentes manières de personnaliser l&#8217;aspect d&#8217;une application réalisée avec la technologie Flex. On peut par exemple changer simplement les couleurs de certains composants en utilisant les feuilles de styles CSS. Si l&#8217;on souhaite aller plus loin, il est possible de changer l&#8217;apparence des composants en leur appliquant un skin : c&#8217;est ce qu&#8217;on [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p>Il existe différentes manières de personnaliser l&#8217;aspect d&#8217;une application réalisée avec la technologie Flex. On peut par exemple changer simplement les couleurs de certains composants en utilisant les feuilles de styles CSS. Si l&#8217;on souhaite aller plus loin, il est possible de changer l&#8217;apparence des composants en leur appliquant un skin : c&#8217;est ce qu&#8217;on appelle le <strong>skinning</strong>. On peut &#8220;skinner&#8221; un composant à partir d&#8217;une simple image de type .jpg ou .png, mais également à partir de fichiers Flash .swf ou .swc.</p>
<p>Le processus de skinning peut parfois se montrer délicat car il se situe à la frontière entre deux mondes : les designers qui produisent l&#8217;aspect des composants et les développeurs qui doivent lintégrer. Cette phase peut devenir lourde si le développeur ne sait pas ce qu&#8217;il souhaite avoir en entrée ou si le designer n&#8217;a pas une bonne vue d&#8217;ensemble sur la façon de produire des skins Flex. Il faut dire que l&#8217;offre d&#8217;Adobe est assez vaste, notamment au sein de la Creative Suite.</p>
<p>Nous allons donc vous présenter l&#8217;une des manières possibles (il y en a bien évidemment d&#8217;autres) pour skinner des composants Flex avec quatre outils de la Creative Suite, en l&#8217;occurrence Flash, Illustrator, Photoshop et Fireworks. Nous illustrerons chaque cas d&#8217;un exemple sous forme de mini tutoriel, et nous terminerons par un récapitulatif.</p>
<p>Il faut savoir que les skinnings ci-dessous ont été réalisés avec la version 4 de la Creative Suite (sauf pour Flash en version CS3 Professional) mais qu&#8217;il est tout à fait possible de faire les mêmes manipulations sur la version 3. Flex Builder est utilisé en version 3.0, en tant que plug-in d&#8217;Eclipse (version 3.3.2).</p>
<h3>Flash</h3>
<p>Le skinning depuis Adobe Flash semble à première vue le plus simple du fait des points communs entre ce logiciel et Flex, notamment le format (fichiers .swf) et le langage (l&#8217;ActionScript). Voyons dans la pratique un cas de skinning.<br />
Adobe propose quelques éléments permettant d&#8217;automatiser et de simplifier ce processus : nous allons donc les utiliser, sachant qu&#8217;il existe d&#8217;autres manières de faire mais qui peuvent se révéler plus couteuses.</p>
<p>Avant tout, il faut télécharger deux plug-ins :</p>
<ul>
<li><a id="s-uo" title="Flex Skin Design Extensions for Flash" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">Flex Skin Design Extensions for Flash</a></li>
<li><a id="llne" title="Flex Component Skin for Flash CS3 Professional" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">Flex Component Skin for Flash CS3 Professional</a> (compatible CS4)</li>
</ul>
<p>L&#8217;installation de ses éléments se fait très simplement, en ouvrant les fichiers .mxp qui sont en fait du format utilisé par l&#8217;Adobe Extension Manager.</p>
<p>Nous allons maintenant skinner un simple bouton Flex. Pour cela, lançons Flash et choisissons <em>File &gt; New</em>. Dans l&#8217;onglet <em>Templates </em>apparaît alors la catégorie Flex Skins (grâce aux plug-ins installés). Dans notre cas, nous allons choisir <em>Button</em>, mais nous pourrions décider de skinner tous les éléments en choisissant <em>flex_skins</em>.</p>
<div id="spfv" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-23" title="file_new_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/file_new_flash.jpg" alt="file_new_flash" width="656" height="449" /></div>
<p>Un template est alors créé, avec un bouton. Cela diffère des templates sur les autres logiciels de la suite, qui présentent les quatre états du bouton directement.</p>
<div style="text-align: center;"><img class="alignnone size-full wp-image-24" title="button_skin_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/button_skin_flash.jpg" alt="button_skin_flash" width="677" height="342" /></div>
<p>Un simple double clic sur ce bouton nous emmènera en mode édition où l&#8217;on verra apparaître les quatre états (up, over, down, disabled) au niveau de la timeline. Il sera alors possible de modifier ces quatre états séparément.</p>
<div id="t1ba" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-25" title="button_timeline_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/button_timeline_flash.jpg" alt="button_timeline_flash" width="704" height="244" /></div>
<p>Une fois les éléments modifiés, il faut les exporter sous forme de fichier .swc (bibliothèque ActionScript) en faisant <em>File &gt; Export &gt; Export Animation</em>. Après avoir choisi le nom du fichier (attention, ici Flash propose d&#8217;enregistrer en .swf : c&#8217;est après que nous spécifions que nous voulons également un .swc), nous remplissons les propriétés d&#8217;export : il faut bien spécifier la version d&#8217;ActionScript (3.0) pour que cela soit compatible avec Flex 3 (cette remarque est également valable pour la version 2) et cocher la case <em>Export SWC</em>.</p>
<div id="hlf4" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-26" title="export_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/export_flash.jpg" alt="export_flash" width="387" height="581" /></div>
<p>Le reste se déroulera dans le Flex Builder ! Nous allons devoir importer le skin du bouton. Pour cela, assurez vous tout d&#8217;abord que le fichier .swc se trouve dans l&#8217;arborescence de votre projet (dans assets/swc par exemple). Ensuite, choisissons <em>File &gt; Import&#8230;</em> puis <em>Artwork</em> dans le dossier <em>Flex Builder</em> puis <em>Next</em>. Cochons la case <em>SWC or SWF file</em> et cliquons sur <em>Browse </em>pour choisir le fichier fraîchement généré. Il est ensuite possible de choisir l&#8217;endroit où sera générée la feuille de style CSS, son nom ainsi que l&#8217;application dans laquelle elle sera incluse.</p>
<div id="ublg" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-27" title="import_flex_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/import_flex_flash.jpg" alt="import_flex_flash" width="632" height="571" /></div>
<p>Ensuite, cliquons sur <em>Next</em>. Flex proposera automatiquement les éléments du fichier .swc à importer dans le projet. Dans notre cas, il n&#8217;y a qu&#8217;un bouton. Cochons donc celui-ci et cliquons sur <em>Finish</em>. Que se passe-t-il alors ? Flex génère une feuille de style contenant les éléments suivants :</p>
<div id="u:jo" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-28" title="flex_css_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_css_flash.jpg" alt="flex_css_flash" width="401" height="144" /></div>
<p>Cela montre que nous importons une classe de skin complète, et non uniquement des éléments graphiques formant un skin. La feuille de style est également importée dans l&#8217;application :</p>
<div id="ecel" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-29" title="flex_app_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_app_flash.jpg" alt="flex_app_flash" width="681" height="171" /></div>
<p>Il ne nous reste plus qu&#8217;à lancer notre application pour constater le résultat. Nous voilà avec notre bouton skinné mais déformé. On constate qu&#8217;il ne perd pas pour autant sa qualité, ceci étant du au fait que c&#8217;est un élément vectoriel.</p>
<div id="wkro" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-30" title="flex_skin_final_flash" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_skin_final_flash.jpg" alt="flex_skin_final_flash" width="487" height="484" /></div>
<p>Pour résumer, nous avons donc pu créer un skin en utilisant le logiciel Adobe Flash de la Creative Suite via les étapes suivantes :</p>
<ul>
<li>Installation des plug-ins</li>
<li>Génération d&#8217;un fichier .swc à partir d&#8217;un template</li>
<li>Import de ce fichier dans Flex</li>
<li>Génération et inclusion automatique de la feuille de style CSS associée</li>
</ul>
<h3>Illustrator</h3>
<p>Le skinning depuis Adobe Illustrator ressemble à celui de Flash, du fait de sa ressemblance (génération de .swf, vectoriel, etc.). Nous allons donc parfois aller plus vite sur quelques étapes en commun.</p>
<p>De la même manière pour débuter, il faut télécharger un plug-in qui nous permettra de simplifier le processus de skinning : <a id="s-uo" title="Flex Skin Design Extensions for Flash" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">Flex Skin Design Extensions for Illustrator</a>.</p>
<p>Le fichier .zip est à décompresser dans le dossier d&#8217;installation d&#8217;Illustrator (CS3 ou CS4) (exemple : C:Program FilesAdobeAdobe Illustrator CS4). Il ajoutera de nouveaux templates ainsi que de nouveaux scripts. Lançons à présent Illustrator, puis choisissons <em>File &gt; Scripts &gt; Flex Skins &gt; Create Flex 3 Skin</em>. Nous pouvons alors choisir le composant à skinner, ou tous les composants ensemble. Dans notre exemple, nous skinnerons cette fois une CheckBox.</p>
<div id="gvtk" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-31" title="file_new_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/file_new_illustrator.jpg" alt="file_new_illustrator" width="316" height="379" /></div>
<p>Ici, pas de timeline : nous voyons l&#8217;ensemble des différents états, chacun sous forme d&#8217;un symbole. Nous pouvons donc les modifier séparément.</p>
<div id="oc1:" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-32" title="checkbox_skin_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/checkbox_skin_illustrator.jpg" alt="checkbox_skin_illustrator" width="525" height="336" /></div>
<p>Une fois votre skin créé, il faut l&#8217;exporter. Attention à ne pas choisir <em>File &gt; Export</em>, qui est l&#8217;export &#8220;normal&#8221;. Il faut bien penser à passer par <em>File &gt; Scripts &gt; Flex Skins &gt; Export Flex 3 Skin</em>. Il ne reste plus qu&#8217;à choisir le nom du fichier. Ici, ce sera un .swf qui sera généré. On peut par exemple l&#8217;enregistrer dans notre projet Flex, dans le dossier assets/swf. Il n&#8217;y a pas plus de paramètres à remplir avec Illustrator. Nous pouvons donc ouvrir notre projet Flex et, de la même manière que dans l&#8217;exemple sur Flash, importer notre skin en faisant <em>File &gt; Import&#8230;</em> puis <em>Artwork </em>dans le dossier <em>Flex Builder</em>. Cochons la case <em>SWC or SWF File</em> et sélectionnons le skin, exactement comme sous Flash. En faisant <em>Next</em>, nous voyons cependant une différence : il n&#8217;y a plus une seule ligne pour un composant (indiqué par la clé <em>skin</em> dans la colonne <em>Skin Part</em>) mais une ligne par état. Cela vient du fait qu&#8217;en Flash nous exportions une classe typée, alors qu&#8217;ici nous n&#8217;avons que des éléments graphiques.</p>
<div id="kmkd" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-33" title="import_flex_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/import_flex_illustrator.jpg" alt="import_flex_illustrator" width="549" height="478" /></div>
<p>Cliquons sur <em>Finish</em>. Nous avons donc généré un fichier CSS et son import dans notre application. Ce dernier est fait de la même manière que lors d&#8217;un import de skin Flash, mais le fichier CSS présente lui quelques différences :</p>
<div id="d164" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-34" title="flex_css_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_css_illustrator.jpg" alt="flex_css_illustrator" width="694" height="185" /></div>
<p>La classe de skin n&#8217;est plus spécifié mais seulement les éléments graphiques skinnables (ici upIcon, downIcon, etc.). Ces différences sont importantes, nous reviendrons dessus par la suite. Au final, nous avons donc notre CheckBox skinnée telle que sous Illustrator :</p>
<div id="lwc7" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-35" title="flex_skin_final_illustrator" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_skin_final_illustrator.jpg" alt="flex_skin_final_illustrator" width="315" height="248" /></div>
<p>Pour résumer, nous avons donc pu créer un skin en utilisant le logiciel Adobe Illustrator de la Creative Suite via les étapes suivantes :</p>
<ul>
<li>Installation du plug-in</li>
<li>Génération d&#8217;un fichier .swf à partir d&#8217;un template</li>
<li>Import de ce fichier dans Flex</li>
<li>Génération et inclusion automatique de la feuille de style CSS associée</li>
</ul>
<h3>Photoshop</h3>
<p>Le skinning depuis Adobe Photoshop comporte quelques différences comparé à ceux précédemment présentés, notamment de part son format de sortie (des fichiers .png).</p>
<p>Pour débuter, nous allons également devoir télécharger un plug-in :<a id="s-uo" title="Flex Skin Design Extensions for Flash" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank"> Flex Skin Design Extensions for Photoshop</a>.</p>
<p>Le fichier .zip est à décompresser dans le dossier d&#8217;installation de Photoshop (CS3 ou CS4) (par exemple : C:Program FilesAdobeAdobe Photoshop CS4). Il ajoutera de nouveaux templates ainsi que de nouveaux scripts. Lançons à présent Photoshop, puis choisissons <em>File &gt; Scripts &gt; New Flex Skin</em>. Nous pouvons alors choisir le composant à skinner de la même manière que dans Illustrator. Pour cet exemple, nous allons skinner un Panel. Tous les éléments sont affichés, et disposés dans différents layers.</p>
<div id="t5gq" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-36" title="panel_skin_photoshop" src="http://blog.tangane.com/wp-content/uploads/2009/01/panel_skin_photoshop.jpg" alt="panel_skin_photoshop" width="640" height="482" /></div>
<p>Une fois le composant skinné, nous allons l&#8217;exporter par <em>File &gt; Scripts &gt; Export Flex Skins&#8230;</em> mais attention ! Avant cela, il faut cacher le dossier <em>_HIDE BEFORE EXPORTING</em> pour ne pas générer des éléments en trop. Lors de l&#8217;export, il est demandé de choisir le dossier d&#8217;export. Typiquement, nous pouvons choisir le dossier assets/png de notre projet Flex. Photoshop générera alors un dossier assets (ce qui n&#8217;est pas forcément pratique) contenant tous les .png des éléments du template, selon sa convention de nommage. Allons maintenant dans notre projet Flex et comme précédemment, nous allons passer par <em>File &gt; Import</em> puis nous choisirons <em>Artwork</em>. Ici, nous sélectionnerons <em>Folder of images</em> et pointerons sur le dossier contenant les .png générés.</p>
<div id="s9zh" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-37" title="import_flex_photoshop" src="http://blog.tangane.com/wp-content/uploads/2009/01/import_flex_photoshop.jpg" alt="import_flex_photoshop" width="653" height="560" /></div>
<p>L&#8217;écran suivant propose les mêmes choix que pour Illustrator : il liste en fait l&#8217;ensemble des images ainsi que leurs états associés. C&#8217;est là que leurs noms sont importants : sans cela les éléments ne seraient pas reconnus. Après avoir tout coché, nous avons donc une feuille de style CSS générée ainsi que l&#8217;import dans le fichier de l&#8217;application. Le fichier CSS se présente de la même manière que dans Illustrator, c&#8217;est à dire en séparant les composants graphiques. A la différence près que les éléments sont des images de type .png et non un nom de symboles dans un fichier .swf. Le résultat final sera donc un Panel ressemblant à cela :</p>
<div id="tqm0" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-39" title="flex_skin_final_photoshop" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_skin_final_photoshop.jpg" alt="flex_skin_final_photoshop" width="483" height="481" /></div>
<p>Il faut noter que l&#8217;on peut percevoir une perte de qualité, du fait que le skin est une image qui pourra se retrouver déformée. Le rendu final est donc moins propre qu&#8217;avec des éléments vectoriels.</p>
<p>Nous avons créé un skin en utilisant le logiciel Adobe Photoshop de la Creative Suite via les étapes suivantes :</p>
<ul>
<li>Installation du plug-in</li>
<li>Génération de fichiers .png à partir d&#8217;un template</li>
<li>Import de ces fichiers dans Flex</li>
<li>Génération et inclusion automatique de la feuille de style CSS associée</li>
</ul>
<h3>Fireworks</h3>
<p>Le skinning depuis Adobe Fireworks générera également en sortie des images de type .png. Pour cela, il nous faudra également un plug-in : <a id="s-uo" title="Flex Skin Design Extensions for Flash" href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins" target="_blank">Flex Skin Design Extensions for Fireworks</a>.</p>
<p>L&#8217;installation de ce plug-in s&#8217;effectue en ouvrant le fichier .mxp qui sera utilisé par l&#8217;Adobe Extension Manager. Lançons à présent Fireworks, puis choisissons <em>Commands &gt; Flex Skinning &gt; New Flex Skin</em>. Nous pouvons alors choisir le composant à skinner de la même manière que dans Illustrator et Photoshop. Pour cet exemple, nous allons skinner un TextInput. Tous les éléments sont affichés, et disposés dans différents layers.</p>
<div id="r06a" style="padding: 1em 0pt; text-align: center;"><img style="width: 569px; height: 347px;" src="http://docs.google.com/File?id=dgrvhczh_81dph6kjg7_b" alt="" /></div>
<p>Une fois le composant skinné, nous allons l&#8217;exporter par <em>Commands &gt; Flex Skinning &gt; Export Flex Skin </em>et choisir le dossier d&#8217;export comme par exemple assets/png dans notre projet Flex. Fireworks générera dans ce dossier les images .png se rapportant aux états du composant skinné. L&#8217;import de ces ressources s&#8217;effectuera dans le projet Flex de la même manière qu&#8217;auparavant, en choisissant <em>File &gt; Import&#8230;</em> puis <em>Artwork</em> dans <em>Flex Builder</em>. Ensuite, il faut choisir <em>Folder of images</em> et sélectionner le dossier contenant les images générées.</p>
<div id="p:3b" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-40" title="import_flex_fireworks" src="http://blog.tangane.com/wp-content/uploads/2009/01/import_flex_fireworks.jpg" alt="import_flex_fireworks" width="565" height="600" /></div>
<p>De nouveau, Flex Builder génère une feuille de style CSS ainsi que l&#8217;import de ce fichier dans l&#8217;application. La feuille de style pointe sur les fichiers .png. Ainsi, on obtiendra notre TextInput skinné :</p>
<div id="r56q" style="padding: 1em 0pt; text-align: center;"><img class="alignnone size-full wp-image-41" title="flex_skin_final_fireworks" src="http://blog.tangane.com/wp-content/uploads/2009/01/flex_skin_final_fireworks.jpg" alt="flex_skin_final_fireworks" width="340" height="345" /></div>
<p>Le skin étant une image, on pourra constater une perte de qualité dans le cas d&#8217;un agrandissement de la zone de texte. Cela vient du format d&#8217;image .png.</p>
<p>Nous avons donc pu créer un skin en utilisant le logiciel Adobe Illustrator de la Creative Suite via les étapes suivantes :</p>
<ul>
<li>Installation du plug-in</li>
<li>Génération de fichiers .png à partir d&#8217;un template</li>
<li>Import de ces fichiers dans Flex</li>
<li>Génération et inclusion automatique de la feuille de style CSS associée</li>
</ul>
<h3>Conclusion</h3>
<p>Voici un tableau récapitulatif des différences de skinning entre les 4 outils de la Creative Suite :</p>
<div>
<table id="felc" class="zeroBorder" border="0" cellspacing="0" cellpadding="3" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Outil<br />
</strong></td>
<td width="25%"><strong>Fichier(s) généré(s)<br />
</strong></td>
<td width="25%"><strong>Import<br />
</strong></td>
<td width="25%"><strong>Type de skin<br />
</strong></td>
</tr>
<tr>
<td width="25%"><em><strong>Flash<br />
</strong></em></td>
<td width="25%">une bibliothèque .swc</td>
<td width="25%">CSS généré par Flex Builder</td>
<td width="25%">Classe skinnée</td>
</tr>
<tr>
<td width="25%"><em><strong>Illustrator<br />
</strong></em></td>
<td width="25%">un fichier .swf</td>
<td width="25%">CSS généré par Flex Builder</td>
<td width="25%">Eléments graphiques vectoriels</td>
</tr>
<tr>
<td width="25%"><em><strong>Photoshop<br />
</strong></em></td>
<td width="25%">un dossier avec des images .png</td>
<td width="25%">CSS généré par Flex Builder</td>
<td width="25%">Images</td>
</tr>
<tr>
<td width="25%"><em><strong>Fireworks<br />
</strong></em></td>
<td width="25%">un dossier avec des images .png</td>
<td width="25%">CSS généré par Flex Builder</td>
<td width="25%">Images</td>
</tr>
</tbody>
</table>
</div>
<p>De ce tableau ressort deux différences importantes. Tout d&#8217;abord au niveau du fichier généré : alors que Flash et Illustrator ne génèrent qu&#8217;un fichier pouvant contenir un ou plusieurs skins, Photoshop et Fireworks génèrent autant de fichiers que d&#8217;états par skin, ce qui peut vite devenir lourd dans le cas d&#8217;une application de taille importante où l&#8217;on aurait une dizaine de composants à skinner.</p>
<p>L&#8217;autre différence majeure se situe au niveau du type de skin : en effet, alors que Photoshop et Fireworks ne produisent que des bitmaps, Illustrator et Flash génèrent des images vectorielles, ce qui offrira une plus grande souplesse si l&#8217;on souhaite modifier les dimensions de certains composants. <strong>On comprend donc facilement que l&#8217;on préférera utiliser Illustrator ou Flash (si cela est possible) pour skinner nos applications Flex</strong>.</p>
<p>Il existe toutefois une différence intéressante entre les éléments générés par Flash et Illustrator. Ce dernier créé un fichier .swf contenant des symboles qui ne sont que des éléments graphiques qui serviront à surcharger l&#8217;apparence de composants sur l&#8217;un de ses états (par exemple : états up, down, over, disabled). Flash génère lui une bibliothèque contenant une classe de type &#8220;Skin&#8221;. Elle permet de définir plus de comportements sur un composant, comme par exemple les transitions entre ses différents états. On parle alors de <strong>programmatic skinning</strong>.</p>
<p>Au final, les outils de la Creative Suite permettent de créer de manière relativement automatisé des skins pour une application Flex. Mais ce qui reste le plus important pour garder une certaine flexibilité et une simplicité dans le processus est la communication entre les designers et les développeurs. L&#8217;idéal est de mettre en place un ensemble de bonnes pratiques pour le skinning, comme par exemple :</p>
<ul>
<li>Définir une règle de nommage (exemple : btn_red_up, btn_blue_down, txtarea_light, etc.).</li>
<li>N&#8217;utiliser qu&#8217;un seul logiciel pour produire des skins</li>
<li>Conserver une trace des différentes évolutions des skins</li>
</ul>
<p>En mettant ce genre de pratiques en places, il vous sera alors possible d&#8217;avoir un processus fiable de skinning de vos applications Flex en utilisant la Creative Suite d&#8217;Adobe.</p>
<p>Cet article a été écrit en se basant notamment sur l&#8217;<a href="http://www.adobe.com/devnet/flex/articles/skins_styles.html" target="_blank">article de référence d&#8217;Adobe : http://www.adobe.com/devnet/flex/articles/skins_styles.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tangane.com/ria/skinning-de-composants-flex-avec-la-creative-suite-4-4/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
