<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>developper &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/developper/</link>
	<description>Feed of posts on WordPress.com tagged "developper"</description>
	<pubDate>Wed, 10 Feb 2010 11:50:48 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Sentenza]]></title>
<link>http://djeradsofiane.wordpress.com/2009/11/28/sentenza/</link>
<pubDate>Sat, 28 Nov 2009 13:04:53 +0000</pubDate>
<dc:creator>Sou</dc:creator>
<guid>http://djeradsofiane.wordpress.com/2009/11/28/sentenza/</guid>
<description><![CDATA[﻿ Je vous ai parlé dans un précédent billet sur le Développement pour iPhone sous Windows, figurez v]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;">﻿<img class="alignnone" title="iPhone SDK" src="http://djeradsofiane.files.wordpress.com/2009/08/iphone_sdk.jpg?w=223&#038;h=315#38;h=315" alt="" width="223" height="315" /></p>
<p style="text-align:left;">Je vous ai parlé <a href="http://djeradsofiane.wordpress.com/2009/08/31/developper-pour-liphone-sous-windows/">dans un précédent billet</a> sur le Développement pour iPhone sous Windows, figurez vous qu&#8217;un logiciel plus simple a vu le jour et qui se nomme Sentenza <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align:left;">En effet, Sentenza est un nouvel outil, très simple, permettant de compiler des pages html/css (webapp) en fichier .ipa exécutable directement sur iTunes.</p>
<p style="text-align:left;"><!--more--></p>
<p><strong>Quel type d’applications vais-je pouvoir compileravec Sentenza ?</strong><br />
Avec Sentenza vous pouvez compiler ce qu’on appelle des webApp, ou “web applications”. Il s’agit d’applications utilisant le format HTML comme contenu.<br />
Les kits comme <strong>iWebKit</strong> sont entièrement compatibles.</p>
<p><strong>Sur quelles plate-formes est compatible Sentenza ?</strong><br />
Sentenza est compatible PC Microsoft Windows (XP, Vista, 7).</p>
<p><strong>Le language HTML “modern” est-il supporté ?</strong><br />
Le language HTML supporté par Sentenza est très récent.<br />
Vous pouvez donc utiliser les fichiers CSS, les images (PNG, JPG, GIF, …), des médias Quicktime, le JavaScript, …</p>
<p><strong>Puis-je coupler Sentenza à mon projet XCode actuel ?</strong><br />
Non, pour plusieurs raisons. La première étant que Sentenza est un programme indépendant de tout autre, et ne peut donc pas être lier à un autre logiciel de développement.<br />
La seconde raison est l’incompatibilité de Sentenza sur une plateforme Mac OS X.</p>
<p><strong>Puis-je distribuer mes applications compilées avec Sentenza ?</strong><br />
Oui, Sentenza compile votre projet en un fichier IPA indépendant, qu’il suffit ensuite de glisser dans iTunes et de synchroniser avec votre iPhone ou votre iPod Touch.<strong>Quand est-il des certificats ?</strong><br />
Sentenza compile votre projet sans vous demander de certificat. Ainsi, vos applications sont considérées comme gratuites et ne peuvent être soumisent sur l’AppStore.</p>
<p><strong>Les applications compilées avec Sentenza contiennent-elles de la publicité ?</strong><br />
Non, les applications sont totalement transparentes.<br />
C’est à dire qu’une fois compilées en fichier IPA et installées sur votre appareil, il est impossible de les distinguer d’une application développée sous XCode.</p>
<p><strong>Tous les appareils sont-ils compatibles ?</strong><br />
D’après nos test, oui. Cependant il est arrivé que sur certains appareils non jaibreakés ayant le firmware 2.2.1, l’application n’apparaissait pas sur l’écran.</p>
<p>Le programme est disponible ici <a href="http://www.sentenzaforiphone.com">http://www.sentenzaforiphone.com</a> pour 15€ en version complète, et il existee en version d&#8217;essai (limité au nom et  au copyright de l&#8217;application compilée).</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Developper un plan de croissance: Bernard Emkeyes]]></title>
<link>http://bliever.wordpress.com/2009/11/11/developper-un-plan-de-croissance-bernard-emkeyes/</link>
<pubDate>Wed, 11 Nov 2009 12:27:11 +0000</pubDate>
<dc:creator>bliever</dc:creator>
<guid>http://bliever.wordpress.com/2009/11/11/developper-un-plan-de-croissance-bernard-emkeyes/</guid>
<description><![CDATA[Au reste, frères, puisque vous avez appris de nous comment vous devez vous conduire et plaire à Dieu]]></description>
<content:encoded><![CDATA[Au reste, frères, puisque vous avez appris de nous comment vous devez vous conduire et plaire à Dieu]]></content:encoded>
</item>
<item>
<title><![CDATA[Un ebook gratuit sur le copywriting ]]></title>
<link>http://copywriting2010.wordpress.com/2009/10/04/ebook-gratuit-sur-le-copywriting/</link>
<pubDate>Sun, 04 Oct 2009 19:54:12 +0000</pubDate>
<dc:creator>david</dc:creator>
<guid>http://copywriting2010.wordpress.com/2009/10/04/ebook-gratuit-sur-le-copywriting/</guid>
<description><![CDATA[Cliquez sur l&#8217;image pour télécharger Les secrets du Copywriting. Ecrit par Christian Godefroy.]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://free.us1.list-manage.com/subscribe?u=740d6e5e2bc20672eb64d4a5c&#38;id=b70554f6a4"><img class="size-full wp-image-6 alignleft" title="secrets copywriting ebook" src="http://copywriting2010.wordpress.com/files/2009/10/secrets-copywriting1.jpg" alt="secrets-copywriting[1]" width="171" height="262" /></a></p>
<p>Cliquez sur l&#8217;image<br />
pour télécharger<br />
Les secrets du Copywriting.<br />
Ecrit par Christian Godefroy.</p>
<p>Oui, cet ebook est un formidable outil qui vous mènera vers la réussite.</p>
<p>Pour développer une affaire ou un business plus rapidement.</p>
<p>Augmenter réellement son chiffre d&#8217;affaires et obtenir un revenu conséquent.</p>
<p>Ne ratez pas cette occasion.</p>
<p>David Ramery</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[L'Algérie va consacrer plus de 40 millions d'euros par an pour développer les énergies renouvelables]]></title>
<link>http://adelife.wordpress.com/2009/09/27/lalgerie-va-consacrer-plus-de-40-millions-deuros-par-an-pour-developper-les-energies-renouvelables/</link>
<pubDate>Sun, 27 Sep 2009 16:38:05 +0000</pubDate>
<dc:creator>adelife</dc:creator>
<guid>http://adelife.wordpress.com/2009/09/27/lalgerie-va-consacrer-plus-de-40-millions-deuros-par-an-pour-developper-les-energies-renouvelables/</guid>
<description><![CDATA[Pour préparer l&#8217;après pétrole, le gouvernement a décidé de créer un Fonds national des énergie]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignnone size-full wp-image-3576" title="1370032-1810354" src="http://adelife.wordpress.com/files/2009/09/1370032-1810354.jpg" alt="1370032-1810354" width="468" height="312" /></p>
<p><span style="color:#003366;"><strong>Pour préparer l&#8217;après pétrole, le gouvernement a décidé de créer un Fonds national des énergies renouvelables. Contenu dans le projet préliminaire de la loi de finances pour 2010, le projet a été déjà annoncé début septembre à l&#8217;issue de l&#8217;audition du ministre de l&#8217;Energie et des mines Chakib Khelil par le président Abdelaziz Bouteflika. Le Fonds sera alimenté par 0,5% de la fiscalité pétrolière, soit 4 milliards de dinars par an (40 millions d&#8217;euros) et les subventions de l&#8217;Etat.</strong></span></p>
<p>L&#8217;Algérie ambitionne de développer les énergies renouvelables notamment le solaire pour préparer la fin des énergies fossiles prévues à l&#8217;horizon 2050, selon plusieurs estimations d&#8217;experts. Des projets de production d&#8217;électricité à partir du solaire sont projetés alors qu&#8217;une centrale hybride (gaz-solaire) d&#8217;une capacité de 150 mégawatts est en construction à Hassi Rmel dans le Sahara. A moyen terme, l&#8217;Algérie compte produire 300 mégawatts d&#8217;électricité en utilisant des énergies renouvelables, selon les prévisions officielles. Le Fonds servira aussi à développer une véritable industrie liée aux énergies renouvelables.</p>
<p><a href="http://www.tsa-algerie.com/L-Algerie-va-consacrer-plus-de-40-millions-d-euros-par-an-po_7916.html" target="_blank">Par  ali idir / TSA</a></p>
<p><a href="http://www.facebook.com/share.php?u=http://adelife.wordpress.com/2009/09/27/lalgerie-va-consacrer-plus-de-40-millions-deuros-par-an-pour-developper-les-energies-renouvelables/" target="_blank"><img class="alignnone size-full wp-image-2944" title="Facebook" src="http://adelife.wordpress.com/files/2009/08/facebook.png" alt="Facebook" width="49" height="52" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Developper pour l'iPhone sous Windows. ]]></title>
<link>http://djeradsofiane.wordpress.com/2009/08/31/developper-pour-liphone-sous-windows/</link>
<pubDate>Mon, 31 Aug 2009 02:55:42 +0000</pubDate>
<dc:creator>Sou</dc:creator>
<guid>http://djeradsofiane.wordpress.com/2009/08/31/developper-pour-liphone-sous-windows/</guid>
<description><![CDATA[Envie de vous essayer au développent d&#8217;applications pour iPhone ? mais vous ne disposez pas d]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><img class="size-full wp-image-91  aligncenter" title="iPhone SDK" src="http://djeradsofiane.wordpress.com/files/2009/08/iphone_sdk.jpg" alt="iPhone SDK" width="223" height="315" /></p>
<p style="text-align:left;">Envie de vous essayer au développent d&#8217;applications pour iPhone ? mais vous ne disposez pas d&#8217;un Mac ni d&#8217;un compte Dev ($99/an) ?</p>
<p style="text-align:left;">en attendant la version officielle du SDK iPhone OS pour Windows,  il existe une alternative non officielle, winChain ! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><!--more--></p>
<p>Pour ce faire, vous devrez télécharger ces deux fichiers, <a href="http://winchain.googlecode.com/files/winChain%201.0.1.zip">winChain 1.0.1</a> et <a href="http://winchain.googlecode.com/files/preBuiltToolchain_v1.torrent">preBuiltToolchain</a> (lien .torrent), puis lancer winchain.exe une fois unzippé, et séléctionner le dossier preBuiltToolchain une fois ce dernier décompréssé avec Winrar <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>En résumé :</p>
<ol>
<li>Télécharger les 2 fichiers.</li>
<li>Extraire preBuiltToolchain.rar avec Winrar.</li>
<li>Exécuter winChain.exe et séléctionner le dossier preBuiltToolchain.</li>
<li>Attendre un moment pendant que winChain copie les fichiers .</li>
<li>winChain lancera l&#8217;installer Cygwin. Vous n&#8217;aurez qu&#8217;à cliquer sur &#8221;Next&#8221;  <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' /> </li>
<li>winChain vous avertira que l&#8217;installation s&#8217;est bien términée, et vous demandera d&#8217;ajouter le raccourcis Cygwin.</li>
<li>Redémarrez votre Ordinateur !!! Vous pouvez maintenant utiliser Cygwin pour programmer vos applications.</li>
<li>winChain inclut également un générateur de templates pour applications (&#8220;winChain Template Builder.exe&#8221;), et une option pour installer Notepad++</li>
</ol>
<p>Pour finir, sachez que vos applications ne peuvent être signées par Apple, et donc ne peuvent être publiées dans l&#8217;AppStore (vu qu&#8217;il nécéssite un compte Dev), mais il vous restera toujours l&#8217;underground iPhone <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  (Cydia/Icy <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</p>
<p>Pour plus d&#8217;infos faites un saut ici <a href="http://code.google.com/p/winchain/">http://code.google.com/p/winchain/</a> .</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Le Kit de fan Cities XL est disponible! ]]></title>
<link>http://disputonsnous.wordpress.com/2009/07/28/le-kit-de-fan-cities-xl-est-disponible/</link>
<pubDate>Tue, 28 Jul 2009 20:50:00 +0000</pubDate>
<dc:creator>CAE</dc:creator>
<guid>http://disputonsnous.wordpress.com/2009/07/28/le-kit-de-fan-cities-xl-est-disponible/</guid>
<description><![CDATA[CITIES XL™ est un MMO city builder qui permet aux joueurs de développer leurs villes sur des cartes ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>CITIES XL</strong>™ est un<strong> MMO city builder</strong> qui permet aux joueurs de  développer leurs villes sur des cartes 3d utilisant pléthore de bâtiments . Les Maires sont confrontés à la  création de la bonne combinaison entre services sociaux, activités de loisirs,  événements spéciaux et l&#8217;emploi dans leurs villes &#8230;</p>
<p><img class="size-full wp-image-1615 alignleft" title="728x90-2" src="http://disputonsnous.wordpress.com/files/2009/07/728x90-2.jpg" alt="728x90-2" width="700" height="100" /></p>
<p><!--more-->Ce kit contient différents éléments prédéfinis de styles variés pour vous aider à créer des sites Web, des signatures de forum et avatars, des fonds d&#8217;écrans</p>
<p><strong>Contenu:</strong></p>
<ul>
<li><strong>Bannières</strong>: 13 bannières de tailles et styles variés pour  présenter Cities XL</li>
<li><strong>Logos</strong>: des logos Cities XL haute résolution</li>
<li><strong>Avatars</strong>: des icônes carrées pouvant être utilisées sur des  forums ou dans les logiciels de messagerie instantanée. (msn messenger etc)</li>
<li>&#8216;<strong>Barres graphiques</strong>&#8216;: Idéales, entre autres, pour les  signatures.</li>
<li><strong>Fonds d&#8217;écrans</strong>: 4 fonds d&#8217;écran dans différentes  résolutions pour toutes les tailles d&#8217;écran.</li>
<li><strong>Site</strong>: un modèle complet de page Cities XL (HTML, images,  CSS et même la source en PSD</li>
</ul>
<p><a href="/media/Fankit.zip" target="_blank"><span style="text-decoration:underline;"><strong>Télécharger</strong></span></a> (<em>fichier Zip,  19mo</em>)</p>
<p>Sources: <a href="http://www.citiesxl.com/" target="_blank">http://www.citiesxl.com/</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Qu’est qu’un feedback?]]></title>
<link>http://damiencolmant.wordpress.com/2009/06/23/qu%e2%80%99est-qu%e2%80%99un-feedback/</link>
<pubDate>Tue, 23 Jun 2009 06:24:23 +0000</pubDate>
<dc:creator>damiencolmant</dc:creator>
<guid>http://damiencolmant.wordpress.com/2009/06/23/qu%e2%80%99est-qu%e2%80%99un-feedback/</guid>
<description><![CDATA[Nous recevons quotidiennement des feedbacks. Chaque action que nous prenons suscite une réaction che]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Nous recevons quotidiennement des feedbacks. Chaque action que nous prenons suscite une réaction chez les autres. Un feedback nous aide à comprendre comment mieux nous comporter dans ce que nous tentons d’accomplir.</p>
<p>Si vous voulez vous améliorer en tant que manager, vous devez apprendre à en donner et à en recevoir.</p>
<p>Mais qu’est qu’un feedback exactement ?</p>
<p>Regardons d’abord ce que <em>n’est pas</em> un feedback :<br />
- Un feedback <em>n’est pas</em> nécessairement négatif.<br />
- Un feedback <em>n’est pas</em> un monologue.<br />
- Un feedback <em>ne doit pas</em> être une compétition avec un gagnant et un perdant.<br />
- Un feedback <em>n’est pas</em> une opportunité pour attaquer l’autre personnellement.<br />
- Un feedback <em>ne représente pas</em> la seule façon de voir les choses</p>
<p>Ce qu’<em>est</em> par contre un feedback :<br />
- Un feedback <em>induit</em> le changement et la découverte de soi.<br />
- Un feedback <em>est</em> positif s’il tend à renforcer certains comportements ou une façon de faire.<br />
- Un feedback <em>est</em> correctif s’il tend à améliorer, voir changer, un comportement ou une façon de faire.<br />
- Vous pouvez <em>donner et recevoir</em> un feedback dans toutes les directions : vers le haut (votre manager), vers le bas (vos collaborateurs), horizontalement (vos collègues), vers l’extérieur (vos clients, fournisseurs et partenaires). </p>
<p><strong>Point coaching : Qu’est ce que ceci vous apprend sur votre façon de donner un feedback? Et sur votre façon de recevoir un feedback ?</strong> </p>
<p>A bientôt,<br />
Damien </p>
<p>Damien Colmant, Eveilleur de potentiel et fondateur d’<a href="http://www.extend-coaching.com/" target="_blank"><span style="color:#0000ff;">Extend Coaching</span></a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[le magicien d'oz…]]></title>
<link>http://saladetomatesoignons.wordpress.com/2009/06/16/le-magicien-doz%e2%80%a6/</link>
<pubDate>Tue, 16 Jun 2009 12:08:45 +0000</pubDate>
<dc:creator>prparim</dc:creator>
<guid>http://saladetomatesoignons.wordpress.com/2009/06/16/le-magicien-doz%e2%80%a6/</guid>
<description><![CDATA[Gozar Club great works and artworks from Brussels ! + art painting [gozar-club.com]]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img src="http://saladetomatesoignons.wordpress.com/files/2009/06/gozar.jpg" alt="gozar" title="gozar" width="500" height="250" class="alignnone size-full wp-image-965" /></p>
<p><strong>Gozar Club</strong><br />
<em>great works and artworks from Brussels !</em></p>
<p><strong>+</strong> art <span class="articles"><a href="http://www.dailymotion.com/user/oz-design/video/x8cyw0_gozartoile1_creation" target="_blank">painting</a></span></p>
<p>[gozar-club<span class="articles"><a href="http://www.gozar-club.com" target="_blank">.com</a></span>]</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Appeler un Web Service REST/JSON en .NET]]></title>
<link>http://iguane39.wordpress.com/2009/06/15/appeler-un-web-service-restjson-en-net/</link>
<pubDate>Mon, 15 Jun 2009 16:24:23 +0000</pubDate>
<dc:creator>iguane39</dc:creator>
<guid>http://iguane39.wordpress.com/2009/06/15/appeler-un-web-service-restjson-en-net/</guid>
<description><![CDATA[Les Web Services REST avec le format JSON sont devenus en peu de temps un nouveau moyen d&#8217;impl]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Les Web Services REST avec le format JSON sont devenus en peu de temps un nouveau moyen d&#8217;implémenter des Web Services de manière simple (sans formatage XML et parsing) et orientés données.</p>
<p>Si la procédure de création de Web Services RPC ou REST et SOAP ou JSON en .Net est simplifiée grâce à WCF, et que l&#8217;appel d&#8217;un Web Service RPC/SOAP est quasi transparent pour le développeur, il n&#8217;en est pas de même pour la création du client en REST/JSON.</p>
<p>Ce petit post va vous permettre de mettre en place rapidement un client Web Service .NET avec REST/JSON. Je fais l&#8217;impasse sur l&#8217;implémentation serveur, je vous laisse vous référer aux différents liens placés en fin de billet.</p>
<ul>
<li>Ajoutez une référence a votre Web Service dans votre projet VS et pointez sur votre URL de type : <a class="linkification-ext" title="Linkification: http://www.monsite.com/monservice.svc" href="http://www.monsite.com/monservice.svc">www.monsite.com/monservice.svc</a>
<ul>
<li>Cet étape va générer votre client Web Service, mais surtout ce qui nous intéresse, les objets en transit,</li>
</ul>
</li>
<li>Ajoutez JSON.NET dans votre projet afin de déserialiser vos données automatiquement,</li>
<li>Implémentez le code suivant :</li>
</ul>
<pre style="padding-left:60px;">Uri requestUri = new Uri("<a class="linkification-ext" title="Linkification: http://www.monsite.com/monservice.svc/users/5474" href="http://www.monsite.com/monservice.svc/users/5474">www.monsite.com/monservice.svc/users/5474</a>");
WebRequest webRequest = WebRequest.Create(requestUri);
WebResponse webResponse = webRequest.GetResponse();
Stream response = webResponse.GetResponseStream();
StreamReader reader = new StreamReader(response);
Newtonsoft.Json.JsonSerializer jsonSer = new Newtonsoft.Json.JsonSerializer();
MyUser user = (MyUser) jsonSer.Deserialize(reader, typeof(MyUser));</pre>
<ul>
<li>Vous obtenez ainsi votre objet côté client, il ne vous reste plus qu&#8217;à en faire bon usage,</li>
<li>Vous pouvez également récuperer une liste ou un tableau d&#8217;objets avec le code suivant :</li>
</ul>
<pre style="padding-left:60px;">List&#60;MyUser&#62; usersList = (List&#60;MyUser&#62;)jsonSer.Deserialize(reader, typeof(List&#60;MyUser&#62;));</pre>
<p>Je vous conseille fortement de créer une méthode générique avec 3 parametres (URL, type de résultat et résultat) afin de pouvoir réutiliser ce code a loisirs.</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST sur Wikipedia</a>,</li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd203052.aspx">Introduction à REST avec WCF sur MSDN</a>,</li>
<li><a href="http://en.wikipedia.org/wiki/JSON">Introduction à JSON sur Wikipedia</a>,</li>
<li><a href="http://www.gtrifonov.com/blog/2009/02/04/Building_JSON,XML_REST_API_using_WCF_services.aspx">Construire un Web Service REST/JSON avec WCF</a>,</li>
<li><a href="http://json.codeplex.com/">Projet JSON.NET sur CodePlex</a>.</li>
</ul>
<p>Update : Vous avez également la possibilité de ne pas utiliser JSON.NET avec le Serializer intégré dans .Net 3.5</p>
<pre style="padding-left:60px;">DataContractJsonSerializer jsonSer = new DataContractJsonSerializer(typeof(List&#60;MyUser&#62;));
List&#60;MyUser&#62; usersList = (List&#60;MyUser&#62;)jsonSer.ReadObject(response);</pre>
<p>Après quelques tests, il semblerait que le parser de MS soit le plus rapide. Cependant cette page semble donner plus d&#8217;informations concrètes :</p>
<ul>
<li><a href="http://james.newtonking.com/archive/2008/10/27/json-net-3-5-beta-1-big-performance-improvements-compact-framework-support-and-more.aspx">Performance entre DataContractJsonSerializer et JSON.NET</a> (en)</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Les Epsilons endoctrinés génèrent pour se libérer]]></title>
<link>http://stephaneerard.wordpress.com/2009/06/04/les-epsilons-endoctrines-generent-pour-se-liberer/</link>
<pubDate>Thu, 04 Jun 2009 12:27:54 +0000</pubDate>
<dc:creator>stephaneerard</dc:creator>
<guid>http://stephaneerard.wordpress.com/2009/06/04/les-epsilons-endoctrines-generent-pour-se-liberer/</guid>
<description><![CDATA[Salut à toutes et à tous, Ce petit billet pour vous présenter la transformation d&#8217;un modèle en]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Salut à toutes et à tous,</p>
<p>Ce petit billet pour vous présenter la transformation d&#8217;un modèle en code, ou plus simplement, la génération de code au travers d&#8217;un modèle.</p>
<p>Dans l&#8217;état de l&#8217;art du développement logiciel, on fait abstraction du code en créant des &#8220;templates&#8221;, ou en bon vieux français, des &#8220;patrons&#8221; ou encore des &#8220;modèles&#8221; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Cela nécessite donc qu&#8217;un template se réfère, dans sa terminologie, à un modèle pour injecter les données.</p>
<p>Je vais ici utiliser le méta-modèle défini dans mon <a title=" Les Epsilons endoctrinés" href="http://stephaneerard.wordpress.com/2009/06/03/les-epsilons-endoctrines/" target="_blank">précédent billet</a> ainsi que le modèle et l&#8217;outillage réalisé à titre d&#8217;exemple.</p>
<p>L&#8217;objectif est d&#8217;utiliser ce modèle</p>
<p><img class="alignnone size-full wp-image-563" title="Simple modèle d'exemple" src="http://stephaneerard.wordpress.com/files/2009/06/modele-eds-final.png" alt="Simple modèle d'exemple" width="510" height="318" /></p>
<p>Pour générer un fichier YAML correspondant à ceci (dans sa forme et non ses données):</p>
<p>Produit:<br />
..columns:<br />
&#8230;.name: { type: string(255), notnull: true, unique: true }<br />
..relations:<br />
&#8230;.Categories: { class: Categorie, foreignAlias: Produits, refClass: ProduitCategorie, local: produit_id, foreign: categorie_id }</p>
<p>Categorie:<br />
..columns:<br />
&#8230;.name: { type: string(255), notnull: true, unique: true }<br />
..relations:<br />
&#8230;. Produit: { class:Produit, foreignAlias: Categories, refClass: ProduitCategorie, local: categorie_id, foreign: produit_id }</p>
<p>ProduitCategorie:<br />
..columns:<br />
&#8230;.produit_id: { type: integer(20), primary: true }<br />
&#8230;.categorie_id: { type: integer(20), primary: true }<br />
..relations:<br />
&#8230;.Produit: { local: produit_id, foreign: id, foreignAlias: Produits }<br />
&#8230;.Categorie: { local: categorie_id, foreign: id, foreignAlias: Categories }</p>
<p>. représente ici un espace, tant les espaces sont importants dans les fichiers yaml.</p>
<p>Voici le code du programme de génération :</p>
<p>[%<br />
var m : Model := Model.allInstances().at(0);</p>
<p>for( class in m.defines )<br />
{<br />
%]<br />
[%=class.name%]:<br />
[%<br />
if( class.column.size() &#62; 0 ) { %]<br />
..columns:<br />
[% for( column in class.column ) { %]<br />
&#8230;.[%=column.name%]: { [%=column.generateProperties()%] }<br />
[% }<br />
}<br />
if( class.relation.size() &#62; 0 ) { %]<br />
..relations:<br />
[% for( relation in class.relation ) { %]<br />
&#8230;.[%=relation.name%]: { [%=relation.generateProperties()%] }<br />
[% }<br />
}<br />
%]</p>
<p>[%<br />
}</p>
<p>operation OneToOne generateProperties() : String {<br />
return 'local: ' + self.relates.name.toLowerCase()+'_id' + ', foreign: id, foreignAlias: ' + self.relates.generateSingularName();<br />
}</p>
<p>operation OneToMany generateProperties() : String {<br />
return 'otm'; --je vous laisse vous amuser<br />
}</p>
<p>operation ManyToMany generateProperties() : String {<br />
return 'class : ' + self.relates.name + ', foreignAlias: ' + self.owner.generateSingularName() + ', refClass: ' + self.refClass.name + ', local: ' + self.owner.name.toLowerCase+'_id' + ', foreign: ' + self.relates.name.toLowerCase+'_id';<br />
}</p>
<p>operation Column generateProperties() : String {<br />
return 'type: '+ self.type.generateTypeName()+'('+self.type.max+')' + ', primary: ' + self.primary + ', notnull: ' + self.generateIsNull() + ', unique: ' + self.generateIsUnique();<br />
}</p>
<p>operation Column generateIsUnique() : String {<br />
return self.unique;<br />
}</p>
<p>operation Column generateIsNull() : String {<br />
return self.notnull;<br />
}</p>
<p>operation Type generateTypeName() : String {<br />
if(self.isTypeOf(sfDoctrine!Integer)){ return 'integer'; }<br />
}</p>
<p>operation Class generateSingularName () : String {<br />
return self.name;<br />
}<br />
%]</p>
<p>Et voici le résultat généré dans un fichier gen_schema.yml (il faut configurer un lanceur pour exécuter la génération, le site d&#8217;Epsilon explique ça très bien, voir les newsgroup aussi) :</p>
<p>Produit:<br />
..columns:<br />
&#8230;.id: { type: integer(20), primary: true, notnull: true, unique: true }<br />
..relations:<br />
&#8230;.Categories: { class : Categorie, foreignAlias: Produit, refClass: ProduitCategorie, local: produit_id, foreign: categorie_id }</p>
<p>Categorie:<br />
..columns:<br />
&#8230;.id: { type: integer(20), primary: true, notnull: true, unique: true }<br />
..relations:<br />
&#8230;.Produits: { class : Produit, foreignAlias: Categorie, refClass: ProduitCategorie, local: categorie_id, foreign: produit_id }</p>
<p>ProduitCategorie:<br />
..columns:<br />
..categorie_id: { type: integer(20), primary: true, notnull: true, unique: false }<br />
&#8230;.produit_id: { type: integer(20), primary: true, notnull: true, unique: false }<br />
..relations:<br />
&#8230;.Categorie: { local: categorie_id, foreign: id, foreignAlias: Categorie }<br />
&#8230;.Produit: { local: produit_id, foreign: id, foreignAlias: Produit }</p>
<p>N.B.: il y a quelques différences du fait de modifications entre temps (pluriel/singulier, etc), mais on fait ce qu&#8217;on veut en tout point, ne vous concentrez donc pas sur les incohérences entre mes deux billets, ce n&#8217;est qu&#8217;un exemple réalisé en deux temps <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Les Epsilons endoctrinés]]></title>
<link>http://stephaneerard.wordpress.com/2009/06/03/les-epsilons-endoctrines/</link>
<pubDate>Tue, 02 Jun 2009 23:43:22 +0000</pubDate>
<dc:creator>stephaneerard</dc:creator>
<guid>http://stephaneerard.wordpress.com/2009/06/03/les-epsilons-endoctrines/</guid>
<description><![CDATA[Salut à toutes et à tous, Epsilon est une lettre grec qui signifie en mathématique un élément très p]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Salut à toutes et à tous,</p>
<p>Epsilon est une lettre grec qui signifie en mathématique un élément très petit. Dans 1984, il signifie la plus basse caste de la hiérarchie des Hommes. <strong>Entre autres significations pleines de sens</strong></p>
<p>Ce petit billet donc pour vous présenter l&#8217;avancée actuelle du projet d&#8217;aide à la modélisation de schémas pour <strong>sfDoctrine</strong>, plug-in de <strong>Symfony</strong> (cadre applicatif Php5) qui le ponte à <strong>Doctrine </strong>(Objet-Relational Mapper en Php5).</p>
<p>Cet outil repose, vous l&#8217;aurez deviné, fervants lecteurs de mon blog, exclusivement sur des outils open-source que sont <strong>Eclipse </strong>et ses plug-ins <strong>EMF </strong>et <strong>Epsilon</strong>.</p>
<p>Petites explications avant tout : Doctrine est un ORM qui permet de relater un objet en une table relationnel, et vice-versa. Ceci permet d&#8217;écrire des logiciels à l&#8217;aide du paradigme &#8220;objet&#8221; tout en utilisant les meilleurs techniques de persistances que sont les Relational DataBase Management Systems (RDBMS ou SGDBR, type MySQL ou PostgreSQL dans l&#8217;univers open-source).</p>
<p>Il y a donc des classes, comme on parle de type de choses, puis ces choses à proprement parlé.</p>
<p>Dans le monde de sfDoctrine, on parle donc de Classes et d&#8217;Objets, qui sont les instances de classes, de la même manière qu&#8217;on parle de &#8220;voitures&#8221; et de &#8220;ma voiture&#8221;, ou de types de choses et des choses en rapport à ces types. &#8220;Typiquement&#8221;, une &#8220;voiture&#8221; (la mienne par exemple) est une instance de la classe &#8220;Voiture&#8221;.<br />
Dans les modèles suivants, les boites jaunes représentes donc des types (ou des classes, techniquement) et les liens représentes ces &#8220;relations&#8221;.<br />
On pourra par la suite &#8220;instancier&#8221; ces types de choses (comme on le verra avec la classe Class qui permettra de définir, en l&#8217;instanciant par deux fois, les &#8220;Classes&#8221; Produit et Categorie-). Il est hyper important de comprendre qu&#8217;on parle à différents moments dans différents niveaux d&#8217;abstraction. Voyez le contexte du vocable pour pouvoir vous repérer. Si ambiguïté, dites le moi en commentaire, j&#8217;expliciterai ou corrigerai au besoin.</p>
<p>sfDoctrine relate ces deux univers (objet et relationnel) en les mixant au sein d&#8217;un même type d&#8217;objet, appelé Class (qui est différent de celui du paradigme objet, par &#8220;extension&#8221; abstraite : on saute de niveau d&#8217;abstraction, l&#8217;un permettant à l&#8217;autre d&#8217;&#8221;exister&#8221; -ou plutôt d&#8217;être défini comme on l&#8217;entend-).</p>
<p>Trêve de bla-bla, voici une capture d&#8217;écran d&#8217;un simple méta-modèle de sfDoctrine réalisé à titre d&#8217;exemple :</p>
<p><img class="alignnone size-full wp-image-560" title="Méta-modèle de sfDoctrine, diagramme d'entré" src="http://stephaneerard.wordpress.com/files/2009/06/meta-model-sfdoctrine.png" alt="Méta-modèle de sfDoctrine, diagrame d'entré" width="672" height="417" /></p>
<p>On voit ici qu&#8217;un modèle permet de définir des classes, et que les deux sont des choses nommés, elles ont obligatoirement un nom.</p>
<p>Voici maintenant le diagramme du méta-modèle des &#8220;columns&#8221; qui est partie intégrante du méta-modèle ci-dessus (qu&#8217;on peut voir en tant que &#8220;package&#8221; ou &#8220;dossier&#8221; nommé &#8220;Columns&#8221;) :</p>
<div id="attachment_561" class="wp-caption alignnone" style="width: 520px"><img class="size-full wp-image-561" title="Méta-modèle des Columns d'une Class sfDoctrine" src="http://stephaneerard.wordpress.com/files/2009/06/meta-model-sfdoctrine-columns.png" alt="Description de la EClass Column d'une EClass Class" width="510" height="440" /><p class="wp-caption-text">Description de la EClass Column d&#39;une EClass Class</p></div>
<p>On voit ici qu&#8217;une classe possèdes 0 à plusieurs colonnes, et qu&#8217;une colonne est elle aussi une chose obligatoirement nommée, en plus de posséder obligatoirement un type qui doit avoir un max de défini.</p>
<p>Et enfin le diagramme des &#8220;Relations&#8221; :</p>
<p><img class="alignnone size-full wp-image-562" title="Méta-modèle des Relations d'une Class" src="http://stephaneerard.wordpress.com/files/2009/06/meta-model-sfdoctrine-relations.png" alt="Méta-modèle des Relations d'une Class" width="510" height="391" /></p>
<p>On voit ici qu&#8217;une classe peut posséder 0 ou plusieurs relations, relation (en italique, soulignant que c&#8217;est &#8220;abstrait&#8221; -mais à ce niveau-ci d&#8217;abstraction-) qui peut être de trois sortes:<br />
une relation de type mono-valuée OneToOne ou un à un, qui permet de dire, par exemple, qu&#8217;une voiture n&#8217;a qu&#8217;un moteur,<br />
une relation de type multi-valué ou un à plusieurs, qui permet de dire, par exemple, qu&#8217;une voiture peut avoir plusieurs roues,<br />
une relation de type multi-valué bi-partie ou plusieurs à plusieurs, qui permet de dire, par exemple, qu&#8217;un produit peut être lié à plusieurs catégories et qu&#8217;une catégorie peut être liée à plusieurs produits.</p>
<p>La big-picture du point de vue du phénomène &#8220;Class&#8221; :</p>
<p><img class="alignnone size-full wp-image-590" title="Big-picture d'un point de vue de Class" src="http://stephaneerard.wordpress.com/files/2009/06/16.png" alt="Big-picture d'un point de vue de Class" width="510" height="434" /></p>
<p>Pour finir, et faire comprendre au lecteur ce que permet l&#8217;excellentissime plug-in Epsilon, voici une capture &#8220;finale&#8221; d&#8217;un modèle que l&#8217;on va créer ensemble ici, pas-à-pas, en usant d&#8217;assistance pour créer les colonnes ids, la classe ProduitCategorie ainsi qu&#8217;une relation m:m sur deux. Ce sera plus clair par la suite, vous verrez.</p>
<p><img class="alignnone size-full wp-image-563" title="Simple modèle d'exemple" src="http://stephaneerard.wordpress.com/files/2009/06/modele-eds-final.png" alt="Simple modèle d'exemple" width="510" height="318" /></p>
<p>Ici, nous avons définis deux types d&#8217;objets que sont &#8220;Produit&#8221; et &#8220;Catégorie&#8221;, nous avons dit que les deux possèdent une colonne nommée &#8220;id&#8221; (qui s&#8217;inscrit dans une perspective SGBDR donc) et qu&#8217;ils sont tous deux liés par une relation &#8220;ManyToMany&#8221;, ou &#8220;plusieurs-à-plusieurs&#8221; comme dit plus haut (perspective &#8220;objet&#8221;).</p>
<p>Maintenant, pour aider dans la conception de (méta-)modèle, Epsilon fournit tout un ensemble de langages permettant d&#8217;écrire des outils de transformation, validation, d&#8217;assistance, de mélange, entre autres, qui sont utilisables ensuite par la personne créant un modèle.</p>
<p>Ici, et pour l&#8217;instant, j&#8217;ai créé trois outils d&#8217;assistance :</p>
<p>addIdentifierAsPrimaryKeyToClass pour les EClass Class, qui permet d&#8217;ajouter une colonne &#8220;id&#8221; à une classe en particulier ou à toutes les classes du modèle, si ces colonnes n&#8217;existent pas bien sûr (pas de doublon, vérification d&#8217;existence par condition),</p>
<p>createManyToManyReferenceClass pour les EClass ManyToMany (spécialisation de la EClass abstraite Relation), qui permet d&#8217;aider à créer une classe de cross-référence entre deux classes (sans doublon aussi, évidement) en ayant seulement précisé l&#8217;élément relaté par la relation m:m,</p>
<p>setClassPluralAndSingularProperties pour les EClass Class, qui permet de spécifier automatiquement les propriétés &#8220;plural&#8221; et &#8220;singular&#8221; qui sont de type EString et qui permettent de préciser les formes plurielle et singulier d&#8217;une EClass Class.</p>
<p>Allons dans le détail, et commençons simplement par le dernier qui est le plus simple :</p>
<p>Je créé un fichier modèle de mon méta-modèle (j&#8217;ouvre mon méta-modèle puis clique-droit sur l&#8217;EClass &#8220;Model&#8221; et &#8220;Create Dynamic Instance&#8221;, je séléctionne le fichier qui supportera l&#8217;instance du modèle)</p>
<p><img title="Première étape : créer une instance du modèle" src="../files/2009/06/first-step1.png" alt="Première étape : créer une instance du modèle" width="451" height="638" /></p>
<p>puis je l&#8217;enregistre (n&#8217;importe où, peu importe).</p>
<p><img class="alignnone size-full wp-image-567" title="Seconde étape : créer une classe d'objet" src="http://stephaneerard.wordpress.com/files/2009/06/second-step1.png" alt="Seconde étape : créer une classe d'objet" width="510" height="510" /></p>
<p>Vous remarquez que j&#8217;ai nommé mon &#8220;Model&#8221; avec la chaîne de caractère &#8220;EspaceDuSommeil&#8221;.</p>
<p>Une fois que j&#8217;ai cliqué, je me retrouve avec un &#8220;Model&#8221; ayant un &#8220;enfant&#8221; (child) de type Class qui ne porte pas de nom.<br />
En cliquant dessus la fenêtre du bas nommée &#8220;Properties&#8221; (que l&#8217;on voit dans l&#8217;image ci-dessus en bas qui permet de voir &#8220;EspaceDuSommeil&#8221;) affiche les propriétés relatives à cet élément, ainsi il me permet de cliquer sur la propriété &#8220;Name&#8221; et d&#8217;y définir le &#8220;nom&#8221; de mon objet &#8220;Class&#8221; (si vous remontez jusqu&#8217;à la première image, vous remarquerez la relation d&#8217;héritage entre Named et Class, qui fait que Class &#8220;is_a&#8221; (est un) Named, Named voulant dire qu&#8217;il est nommé -j&#8217;aurai pu mettre Nameable pour dire qu&#8217;il peut être nommé, mais cela dépend des besoins, ici il me faut absolument un nom-). J&#8217;y saisi donc le mot &#8220;Produit&#8221;, et voici :</p>
<p><img class="alignnone size-full wp-image-568" title="Troisième étape : saisir le nom du type d'objet" src="http://stephaneerard.wordpress.com/files/2009/06/third-step.png" alt="Troisième étape : saisir le nom du type d'objet" width="510" height="187" /></p>
<p>On fait de même pour créer un type d&#8217;objet nommé &#8220;Catégorie&#8221;, puis on va s&#8217;occuper de spécifier les propriétés &#8220;plural&#8221; et &#8220;singular&#8221; en cliquant seulement sur un petit bouton, grâce à mon script écrit en EWL, langage définit par le plug-in Epsilon :</p>
<p><img class="alignnone size-full wp-image-569" title="Quatrième étape : cliquer sur l'assistant pour automatiquement définir les propriétés &#34;plural&#34; et &#34;singular&#34;" src="http://stephaneerard.wordpress.com/files/2009/06/fourth-step.png" alt="Quatrième étape : cliquer sur l'assistant pour automatiquement définir les propriétés &#34;plural&#34; et &#34;singular&#34;" width="510" height="291" /></p>
<p>Remarquez que les champs &#8220;Plural&#8221; et &#8220;Singular&#8221; de la fenêtre de propriété sont vides. Pour l&#8217;instant.</p>
<p><img class="alignnone size-full wp-image-570" title="Cinquième étape : se fouler le doigt en cliquant" src="http://stephaneerard.wordpress.com/files/2009/06/fifth-step.png" alt="Cinquième étape : se fouler le doigt en cliquant" width="510" height="206" /></p>
<p>Et tadam ! Voilà le résultat ! Notez qu&#8217;il n&#8217;y a qu&#8217;ajout d&#8217;un &#8220;s&#8221; final pour créer la forme plurielle. La forme singulière est une copie du nom de la classe, simplement. Après, c&#8217;est open-source, donc qui veut modifier le comportement n&#8217;a qu&#8217;à apprendre et modifier selon ses nécessitées.</p>
<p>Pour comprendre, pour qui voudra, voici le script qui permet de réaliser cela :</p>
<blockquote><p>wizard setClassPluralAndSingularProperties {</p>
<p>guard : self.isTypeOf(Class) and self.name.size() &#62; 0</p>
<p>title : &#8216;Set plural and singular properties of &#8216; + self.name</p>
<p>do {<br />
self.plural := self.generatePluralProperty();<br />
self.singular := self.generateSingularProperty();<br />
}<br />
}</p>
<p>wizard setModelClassesPluralAndSingularProperties {</p>
<p>guard : self.isTypeOf(Class)</p>
<p>title : &#8216;Set plural and singular properties of classes (Model-wide)&#8217;</p>
<p>do {<br />
for( class in Class.allInstances() )<br />
{<br />
class.plural := class.generatePluralProperty();<br />
class.singular := class.generateSingularProperty();<br />
}<br />
}<br />
}</p>
<p>operation Class generatePluralProperty () : String {<br />
return self.name + &#8217;s&#8217;;<br />
}</p>
<p>operation Class generateSingularProperty () : String {<br />
return self.name;<br />
}</p></blockquote>
<p>Comme vous l&#8217;aurez sûrement remarqué, j&#8217;ai codé deux &#8220;wizards&#8221; (assistants) différents, l&#8217;un ne se rapproche qu&#8217;à la classe séléctionnée lors du clique droit, l&#8217;autre s&#8217;occupe de définir ce qu&#8217;il y a à définir poru toutes les classes (à l&#8217;aide de la boucle for(&#8230; in &#8230;){}).</p>
<p>Simple, non -je parle aux développeurs ici ;-D- ?</p>
<p>Voyons un peu plus complexe comme script, celui permettant d&#8217;ajouter une colonne &#8220;id&#8221; aux classes et qui s&#8217;utilise exactement de la même manière -séléction de la classe en question puis clique-droit-&#62;wizards-&#62;&#8221;add Id&#8230; for XXX&#8221; ou [..]model-wide&#8221;:</p>
<blockquote><p>wizard addIdentifierAsPrimaryKeyToClass {</p>
<p>guard : self.isTypeOf(Class) and not self.column.exists(c&#124;c.name.matches(&#8216;id&#8217;))</p>
<p>title : &#8216;Add an Id column as primary key to &#8216; + self.name</p>
<p>do {</p>
<p>self.column.add( self.generateIdPKUnikColumn() );<br />
}<br />
}</p>
<p>wizard addIdentifiersAsPrimaryKeyToClasses {</p>
<p>guard : self.isTypeOf(Class)</p>
<p>title : &#8216;Add an Id column as primary key to classes (Model-wide)&#8217;</p>
<p>do {<br />
for( class in Class.allInstances() )<br />
{<br />
if( not class.column.exists(c&#124;c.name.matches(&#8216;id&#8217;) ) )<br />
{<br />
class.column.add( class.generateIdPKUnikColumn() );<br />
}<br />
}<br />
}<br />
}</p>
<p>operation Class generateIdPKUnikColumn () : Column {<br />
var idcolumn : Column;<br />
idcolumn := Column.createInstance();<br />
idcolumn.name := &#8216;id&#8217;;<br />
idcolumn.primary := true;<br />
idcolumn.unique := true;<br />
var idtype : Model!Integer;<br />
idtype := Model!Integer.createInstance();<br />
idtype.max = 20;<br />
idcolumn.type = idtype;<br />
return idcolumn;<br />
}</p></blockquote>
<p>Et voilà !</p>
<p><img class="alignnone size-full wp-image-571" title="Sixième étape : lâcher de clique pour ajout de la colonne 'id' à toutes les classes" src="http://stephaneerard.wordpress.com/files/2009/06/sixth-step.png" alt="Sixième étape : lâcher de clique pour ajout de la colonne 'id' à toutes les classes" width="510" height="334" /></p>
<p>Tadam :</p>
<p><img class="alignnone size-full wp-image-572" title="Septième étape : apprécier le résultat :-D" src="http://stephaneerard.wordpress.com/files/2009/06/seventh-step.png" alt="Septième étape : apprécier le résultat :-D" width="496" height="264" /></p>
<p>Maintenant, pensez au nombre de manipulations gagnés lorsqu&#8217;il y a 10,50,100 classes ? <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Les affictionados de Doctrine me diront : imbécile, Doctrine n&#8217;a pas besoin qu&#8217;on spécifie la colonne id ! Oui, certes, mais ce n&#8217;est qu&#8217;un exemple d&#8217;utilisation ;-P</p>
<p>Voyons autrement plus complexe, la création en un clique d&#8217;une classe de référence pour une association m:m :</p>
<p>Code:</p>
<blockquote><p>wizard createManyToManyReferenceClass<br />
{<br />
guard : self.isTypeOf(ManyToMany) and self.relates.isDefined()</p>
<p>title: &#8216;Create ManyToMany\&#8217;s Reference Class between &#8216; + self.owner.name + &#8216; and &#8216; + self.relates.name</p>
<p>do<br />
{<br />
self.owner.definedIn.defines.add( self.createReferenceClass() );<br />
}<br />
}</p>
<p>operation ManyToMany createReferenceClass() : Class {<br />
self.name := self.relates.name;</p>
<p>&#8211;define variable container for reference Class of ManyToMany.refClass assigned to both ManyToMany sides<br />
var refClass : Class;<br />
refClass := self.owner.definedIn.defines.selectOne(c&#124;c.name.matches(<br />
self.owner.name.firstToUpperCase() + self.relates.name.firstToUpperCase()<br />
)<br />
);<br />
if( not refClass.isDefined() )<br />
{<br />
refClass := Class.createInstance();<br />
refClass.name := self.owner.name.firstToUpperCase() + self.relates.name.firstToUpperCase();<br />
}</p>
<p>&#8211;defines self.owner refClass reference<br />
self.refClass := refClass;</p>
<p>&#8211;define variable containers for columns pks<br />
var a : Column;<br />
var b : Column;<br />
a := Column.createInstance();<br />
b := Column.createInstance();<br />
a.name := self.relates.getIdColumnName();<br />
b.name := self.owner.getIdColumnName();<br />
a.primary := true;<br />
b.primary := true;</p>
<p>&#8211;define variable containers for OneToMany holders in refClass<br />
var aR : OneToMany;<br />
var bR : OneToMany;<br />
aR := OneToMany.createInstance();<br />
bR := OneToMany.createInstance();<br />
aR.relates := self.relates;<br />
bR.relates := self.owner;<br />
aR.name := self.relates.name;<br />
bR.name := self.owner.name;</p>
<p>&#8211;add columns and relations to refClass<br />
refClass.column.add(a); refClass.column.add(b); refClass.relation.add(aR); refClass.relation.add(bR);</p>
<p>&#8211;add ManyToMany relation to related class<br />
var rC : ManyToMany;<br />
rC := ManyToMany.createInstance();<br />
rC.owner := self.relates;<br />
rC.name := self.owner.name;<br />
rC.refClass := refClass;<br />
rC.relates := self.owner;<br />
self.relates.relation.add(rC);</p>
<p>return refClass;<br />
}</p>
<p>operation Class getIdColumnName() : String {<br />
return self.name.toLowerCase() + &#8216;_id&#8217;;<br />
}</p>
<p>operation Class getPluralName() : String {<br />
return self.name + &#8217;s&#8217;;<br />
}</p></blockquote>
<p><img class="alignnone size-full wp-image-573" title="Création d'une relation m:m entre Produit et Catégorie" src="http://stephaneerard.wordpress.com/files/2009/06/eigth-step.png" alt="Création d'une relation m:m entre Produit et Catégorie" width="510" height="362" /></p>
<p>Je définie comme nécessaire la propriété &#8220;relates&#8221; qui me permet d&#8217;appeler par la suite le script d&#8217;automation :</p>
<p><img class="alignnone size-full wp-image-574" title="Définition de la classe relaté par la propriété m:m de la classe Produit comme étant Catégorie" src="http://stephaneerard.wordpress.com/files/2009/06/nine-step.png" alt="Définition de la classe relaté par la propriété m:m de la classe Produit comme étant Catégorie" width="510" height="424" /></p>
<p>Puis j&#8217;appel le script qui s&#8217;occupe de tout définir pour moi, pour autant que cela me convienne :</p>
<p><img class="alignnone size-full wp-image-575" title="Dernière étape : cliqueeerrrrr" src="http://stephaneerard.wordpress.com/files/2009/06/10-step.png" alt="Dernière étape : cliqueeerrrrr" width="510" height="305" /></p>
<p>Appréciez VOTRE travail :</p>
<p><img class="alignnone size-full wp-image-577" title="La classe de cross-référence est créée automatiquement, la classe cross-référencée Categorie est automatiquement modifiée en conséquence ainsi que la classe Produit et leurs relations m:m en regard" src="http://stephaneerard.wordpress.com/files/2009/06/12.png" alt="La classe de cross-référence est créée automatiquement, la classe cross-référencée Categorie est automatiquement modifiée en conséquence ainsi que la classe Produit et leurs relations m:m en regard" width="510" height="314" /></p>
<p><img class="alignnone size-full wp-image-578" title="La m:m de Categorie/Produit automatiquement créée" src="http://stephaneerard.wordpress.com/files/2009/06/13.png" alt="La m:m de Categorie/Produit automatiquement créée" width="510" height="321" /></p>
<p><img class="alignnone size-full wp-image-579" title="La classe de cross-référence entre Produit et Categorie automatiquement créée et ses propriétés" src="http://stephaneerard.wordpress.com/files/2009/06/14.png" alt="La classe de cross-référence entre Produit et Categorie automatiquement créée et ses propriétés" width="509" height="306" /></p>
<p>Tiens, j&#8217;ai oublié de coder l&#8217;ajout des formes plurielles et singulières, qu&#8217;à cela ne tienne, on modifie le code et c&#8217;est repartie !<br />
En modifiant le script, je me rend compte que j&#8217;ai oublié de faire pas mal de checks sur l&#8217;existence d&#8217;élements, ce qui implique que si on exécute deux fois cet assistant, il crééra d&#8217;autant de classes de référence, c&#8217;est un comportement non désiré : hop on modifie en conséquence :</p>
<blockquote><p>wizard createManyToManyReferenceClass<br />
{<br />
guard : self.isTypeOf(ManyToMany) and self.relates.isDefined()</p>
<p>title: &#8216;Create ManyToMany\&#8217;s Reference Class between &#8216; + self.owner.name + &#8216; and &#8216; + self.relates.name</p>
<p>do<br />
{<br />
self.owner.definedIn.defines.add( self.createReferenceClass() );<br />
}<br />
}</p>
<p>operation ManyToMany createReferenceClass() : Class {<br />
self.name := self.relates.name;</p>
<p>&#8211;define variable container for reference Class of ManyToMany.refClass assigned to both ManyToMany sides<br />
var refClass : Class;<br />
<strong>refClass := self.owner.definedIn.defines.selectOne(c&#124;c.name.matches(<br />
self.owner.name.firstToUpperCase() + self.relates.name.firstToUpperCase()<br />
)<br />
);<br />
if( not refClass.isDefined() )<br />
{<br />
refClass := Class.createInstance();<br />
refClass.name := self.owner.name.firstToUpperCase() + self.relates.name.firstToUpperCase();<br />
}</strong><br />
<strong>&#8211;set plural and singular forms for refClass<br />
refClass.plural := self.owner.getPluralName() + self.relates.getPluralName();<br />
refClass.singular := self.owner.name + self.relates.name();</strong><br />
&#8211;defines self.owner refClass reference<br />
self.refClass := refClass;</p>
<p>&#8211;define variable containers for columns pks<br />
var a : Column;<br />
var b : Column;<br />
<strong>var aToAdd: Boolean;<br />
var bToAdd: Boolean;</strong><br />
<strong>aToAdd = false; bToAdd = false;</strong><br />
&#8211;try to get existing columns<br />
<strong>a := refClass.column.selectOne(c&#124;c.name.matches(self.relates.getIdColumnName()));<br />
b := refClass.column.selectOne(c&#124;c.name.matches(self.owner.getIdColumnName()));</strong><br />
&#8211;if none exist, create them and mark watchdogs for further add<br />
<strong>if( not a.isDefined())</strong><br />
{<br />
a := Column.createInstance();<br />
a.name := self.relates.getIdColumnName();<br />
<strong>aToAdd := true;</strong><br />
}<br />
<strong>if( not b.isDefined())</strong><br />
{<br />
b := Column.createInstance();<br />
b.name := self.owner.getIdColumnName();<br />
<strong>bToAdd  := true;</strong><br />
}<br />
a.primary := true;<br />
b.primary := true;</p>
<p>&#8211;define variable containers for OneToMany holders in refClass<br />
var aR : OneToOne;<br />
var bR : OneToOne;<br />
<strong>var aRtoAdd: Boolean;<br />
var bRtoAdd: Boolean;<br />
aRtoAdd := false; aRtoAdd := false;<br />
&#8211;try to get existing relations<br />
aR := refClass.relation.selectOne(r&#124;r.name.matches(self.relates.name));<br />
bR := refClass.relation.selectOne(r&#124;r.name.matches(self.owner.name));</strong><br />
&#8211;if none exists, create them and mark watchdogs for further add<br />
<strong>if( not aR.isDefined()){</strong><br />
aR := OneToOne.createInstance();<br />
aR.name := self.relates.name;<br />
<strong>aRtoAdd := true;</strong><br />
}<br />
<strong>if( not bR.isDefined()){</strong><br />
bR := OneToOne.createInstance();<br />
bR.name := self.owner.name;<br />
<strong>bRtoAdd := true;</strong><br />
}<br />
aR.relates := self.relates;<br />
bR.relates := self.owner;</p>
<p>&#8211;add columns and relations to refClass only if watchdog says to do so<br />
<strong>if(aToAdd)</strong>{ refClass.column.add(a); }<br />
<strong>if(bToAdd){</strong> refClass.column.add(b); }<br />
&#8211;relations<br />
<strong>if(aRtoAdd)</strong>{ refClass.relation.add(aR); }<br />
<strong>if(bRtoAdd)</strong>{ refClass.relation.add(bR); }</p>
<p>&#8211;add ManyToMany relation to related class<br />
var rC : ManyToMany;<br />
<strong>var rCtoAdd: Boolean;</strong><br />
<strong>rCtoAdd := false;<br />
rC := self.relates.relation.selectOne(r&#124;r.name.matches(self.owner.name));<br />
if(not rC.isDefined())</strong>{<br />
rC := ManyToMany.createInstance();<br />
rC.name := self.owner.name;<br />
<strong>rCtoAdd := true;</strong><br />
}<br />
rC.owner := self.relates;<br />
rC.refClass := refClass;<br />
rC.relates := self.owner;</p>
<p>&#8211;add relation to refClass only if needed<br />
<strong>if(rCtoAdd)</strong>{ self.relates.relation.add(rC); }</p>
<p>return refClass;<br />
}</p>
<p>operation Class getIdColumnName() : String {<br />
return self.name.toLowerCase() + &#8216;_id&#8217;;<br />
}</p>
<p>operation Class getPluralName() : String {<br />
return self.name + &#8217;s&#8217;;<br />
}</p>
<p>j&#8217;ai mis en gras autant que j&#8217;ai pu les différences.</p></blockquote>
<p>Et voilà, on aura beau lancer plusieurs fois de suite l&#8217;assistant, il ne crééra pas plusieurs classes de références poluantes <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>On finira avec une capture d&#8217;écran de la classe de cross-référence :</p>
<p><img class="alignnone size-full wp-image-581" title="OneToOne relation de la classe de référence entre celle-ci et Categorie" src="http://stephaneerard.wordpress.com/files/2009/06/15.png" alt="OneToOne relation de la classe de référence entre celle-ci et Produit" width="510" height="266" /></p>
<p>&#8220;Et voilà !&#8221;, il ne reste plus qu&#8217;à écrire un transformateur de modèle à modèle (EGL, Epsilon Generative Language)!</p>
<p>Mais avant ça, il sera bien utile d&#8217;écrire un validateur de modèle (EVL, Epsilon Validation Language) !</p>
<p>Comme vous l&#8217;aurez compris, le tout pourra être écrit à l&#8217;aide du plug-in Epsilon !</p>
<p>Alors, le développement dirigé par les modèles, C&#8217;EST PAS DE LA BALLE ? <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>Le prochain billet (&#8220;Les Epsilons endoctrinés génèrent pour se libérer&#8221;) portera sur la génération de code : transformer le modèle dans sa syntaxe abstraite en un fichier concret (&#8220;./config/doctrine/schema.yml&#8221;), qui, on le verra, sera utilisé par sfDoctrine/Symfony pour générer des classes Php5 de liaison Objet-Table Relationnel, mais aussi, dans la même perspective, qui permettra de générer des outils de gestion type CRUD en quelques lignes de commandes (voir symfony-project.org et son tutoriel Jobeet pour Doctrine).</p>
<p><strong>Enfin je tiens à remercier particulièrement d&#8217;abord les &#8220;teams&#8221; Eclipse, EMF et GMF, entre autres et surtout Dimitris Kolovos qui est l&#8217;initiateur de l&#8217;outil Epsilon. Sans quoi tout ça ne serai possible !</strong></p>
<p>N.B.: la réalisation du méta-modèle, du modèle d&#8217;exemple, des scripts et de ce billet ont nécessités un peu plus de 4h.<br />
Pensez à relativiser le temps pris lorsqu&#8217;on connait l&#8217;outil, que le transformateur modèle-&#62;code (schema.yml), le validateur de modèle et autres assistants seront réalisés quant à la réalisation d&#8217;un schéma complexe pour sfDoctrine&#8230;<br />
Relativiser tout ça quant à l&#8217;écriture d&#8217;applications web via l&#8217;ingénierie par les modèles (perte de temps dans la résolution de bugs, d&#8217;écriture du code en suivant les règles de coding, etc). C&#8217;est tout simplement monstrueux comme capitalisation (je parle bien d&#8217;un capital HUMAIN, pas spéculatif).</p>
<p>A bon entendeur <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>(copyleft until credits) Texte et images Stéphane Erard.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[El diseño teniendo en cuenta la experiencia del usuario ]]></title>
<link>http://juditgarcia.wordpress.com/2009/03/16/el-diseno-teniendo-en-cuenta-la-experiencia-del-usuario/</link>
<pubDate>Mon, 16 Mar 2009 11:45:07 +0000</pubDate>
<dc:creator>juditgarcia</dc:creator>
<guid>http://juditgarcia.wordpress.com/2009/03/16/el-diseno-teniendo-en-cuenta-la-experiencia-del-usuario/</guid>
<description><![CDATA[Los medios que voy a tener en cuenta a la hora de realizar este análisis son La vanguardia, RNE y TV]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Los medios que voy a tener en cuenta a la hora de realizar este análisis son La vanguardia, RNE y TVE; para analizar estos dos ultimos medios al tener la misma página web son analizados en conjunto como RTVE.</p>
<p>http://www.lavanguardia.es/</p>
<p>http://www.rtve.es</p>
<p><strong>Análisis global de la experiencia del usuario.</strong></p>
<p>Como intruducción al análisis cabe destacar que ambos medios no están muy preparados para dar a los usuarios una buena experiencia, es decir carecen de medios para poder facilitar el acceso de todos los internautas, lo cual nos hace ver que no todos ponemos acceder de la misma forma a la información en internet. Para ello me he servido de la herramienta <!--[if gte mso 9]&#62;     &#60;![endif]--><!--[if gte mso 9]&#62;  Normal 0 21   false false false         &#60;![endif]--><!--[if gte mso 9]&#62;   &#60;![endif]--><em><span style="font-size:10pt;font-family:Arial;">Web developper Toolbar </span></em><span style="font-size:10pt;font-family:Arial;">la cual podeis conseguir en el enlace de delicious.</span></p>
<p><strong><span style="font-size:10pt;font-family:Arial;">Análisis de usabilidad.</span></strong></p>
<p><span style="font-size:10pt;font-family:Arial;">En cuanto en la usabilidad he enfocado el análisis a en que formatos de pantalla nos es posible obtener la información y de que forma nos queda representada. En el caso de la vanguardia no se puede ver en formatos de pantalla reducidas, el resultado del análisis era el siguiente: se necesitan plugins adicionales para ver el contenido de la página. sin embargo en RTVE si es posible mostrando como quedaria esta con una distribucion lineal vertical. Con lo que se extrae en conclusión que está más preparada la página de RTVE a la hora de ser usada.</span></p>
<p><span style="font-size:10pt;font-family:Arial;"><strong>Análisis de accesibilidad.</strong></span></p>
<p><span style="font-size:10pt;font-family:Arial;">A través de la opción de </span><span style="font-size:10pt;font-family:Arial;">developper Toolbar llamada </span><span style="font-size:10pt;font-family:Arial;">Validate WAI y del análisis realizado por esta son que ambas páginas no están preparadas para que todos podamos acceder a la información no están preparadas por ejemplo para incapacitados o simplemente el hecho de no tener referentes de textos en las imágenes.</span></p>
<p>En conclusión y tras mi propia experiencia como usuario del mundo de la red, es que la información que debería ser mundialmente abierta y para todos sigue teniendo ciertos aspectos que hagan que sea un medio totalmente abierto, poco a poco las web aportan nuevas condiciones para todos , pero es un camino por el cual se camina poco a poco.</p>
<p><span style="font-size:10pt;font-family:Arial;"><br />
</span></p>
<p><span style="font-size:10pt;font-family:Arial;"><br />
</span></p>
<p><span style="font-size:10pt;font-family:Arial;"><br />
</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mozilla offre 100 000 $ à Wikimedia pour développer Ogg Theora]]></title>
<link>http://adelife.wordpress.com/2009/01/27/mozilla-offre-100-000-a-wikimedia-pour-developper-ogg-theora/</link>
<pubDate>Tue, 27 Jan 2009 12:18:48 +0000</pubDate>
<dc:creator>adelife</dc:creator>
<guid>http://adelife.wordpress.com/2009/01/27/mozilla-offre-100-000-a-wikimedia-pour-developper-ogg-theora/</guid>
<description><![CDATA[Mozilla et Wikimedia, probablement les fondations les plus connues du Web, sont rarement citées conj]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignnone size-full wp-image-2014" title="1510349992-mozilla-offre-100-000-wikimedia-pour-developper-ogg-theora" src="http://adelife.wordpress.com/files/2009/01/1510349992-mozilla-offre-100-000-wikimedia-pour-developper-ogg-theora.jpg" alt="1510349992-mozilla-offre-100-000-wikimedia-pour-developper-ogg-theora" width="449" height="299" /></p>
<p><img src="http://adelife.files.wordpress.com/2007/03/technorati.gif?w=11&#038;h=10" alt="technorati.gif" width="11" height="10" /><span style="color:#ff0000;"><strong>Mozilla et Wikimedia, probablement les fondations les plus connues du Web, sont rarement citées conjointement. Hormis peut-être pour parler statistiques, leurs deux fers de lance (Firefox et Wikipédia) rassemblant des centaines de millions d&#8217;Internautes.</strong></span></p>
<p><span style="color:#333333;">Le premier nommé, fort des revenus générés par Firefox (principalement grâce à Google), vient cependant de subventionner à hauteur de 100 000 dollars la fondation Wikimedia, afin que cette dernière puisse améliorer des technologies vidéo ouvertes, et plus précisément l&#8217;Ogg Theora, déclinaison vidéo du fameux Ogg Vorbis de Xiph.org.</span></p>
<p><span style="color:#333333;">Format de compression vidéo libre, Theora est vivement supporté par la fondation Wikimedia, qui depuis près de trois ans milite pour que Firefox gère ce format par défaut (ce qui est le cas depuis peu avec Firefox 3.1 bêta).</span></p>
<p><span style="color:#333333;">Mozilla souhaite cependant améliorer Theora, d&#8217;autant qu&#8217;il est (à l&#8217;instar de Vorbis) utilisé systématiquement par Wikipédia. Or quand on sait que ce dernier souhaite développer les fichiers audio et vidéo sur sa plateforme, on se dit que les formats de Xiph ont de beaux jours devant eux.</span></p>
<p><span style="color:#333333;">« Les standards ouverts pour l&#8217;audio et la vidéo sont importants, car ils peuvent être utilisés par tout le monde et pour n&#8217;importe quelle raison, sans payer de redevances (royalties), et peuvent être vérifiés et améliorés par une communauté open source » note Erik Möller, directeur adjoint de la fondation Wikimedia.</span></p>
<p><span style="color:#333333;">« Aujourd&#8217;hui, la vidéo et l&#8217;audio sur le Web sont dominés par les technologies propriétaires, la plupart du temps des codecs propriétaires sont intégrés dans des lecteurs au code source fermé. Wikimedia et Mozilla veulent aider à la construction d&#8217;un Web où la vidéo et l&#8217;audio seront des citoyens de première classe : faciles à utiliser et à manipuler par quiconque, sans les régimes obligatoires des redevances ni d&#8217;obstacles à la contribution. »</span></p>
<p><span style="color:#333333;">Erik Möller précise que les améliorations opérées grâce à ces 100 000 dollars seront publiées d&#8217;ici les six prochains mois.</span></p>
<p><span style="color:#333333;"><a href="http://www.pcinpact.com/" target="_blank"><img class="alignnone size-full wp-image-2013" title="pcinp" src="http://adelife.wordpress.com/files/2009/01/pcinp.jpg" alt="pcinp" width="140" height="54" /></a><br />
</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[- C'est mieux avec un révolver...]]></title>
<link>http://osezdevenir.wordpress.com/2009/01/02/cest-mieux-avec-un-revolver/</link>
<pubDate>Fri, 02 Jan 2009 19:12:21 +0000</pubDate>
<dc:creator>Isabelle Voidey</dc:creator>
<guid>http://osezdevenir.wordpress.com/2009/01/02/cest-mieux-avec-un-revolver/</guid>
<description><![CDATA[Un chanteur célèbre a dit : &#8221; J&#8217;ai grandi dans la rue, et on obtient plus de résultat av]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Un chanteur célèbre a dit :</p>
<p>&#8221; J&#8217;ai grandi dans la rue, et on obtient plus de résultat avec un mot gentil et un révolver, qu&#8217;avec le mot gentil tout seul.&#8221;</p>
<p>Serait-ce la raison pour laquelle je me suis retrouvée, enceinte de 5 mois, avec un Beretta  (équivalent 357 magnum) sur la tempe et un oeil au beurre noir ? 2 semaines d&#8217; hosto, affaire étouffée, aucune sanction. C&#8217;est permis alors ?</p>
<p>Je suis logique : après tout monsieur est gendarme, donc il est exemplaire, et la justice confirme la justesse et l&#8217;à-propos de l&#8217;acte, je vais donc essayer aussi &#8230;</p>
<p><strong>Petite annonce :</strong></p>
<p><em>&#8220;Ch flingue pour demander gentiment justice, et notamment revoir sans me faire démolir l&#8217;enfant que je portais et ses frères et soeur. Faire offre. Annonce sérieuse. Discrétion assurée. Merci.&#8221;</em></p>
<p>Les autres violences subies pendant le mariage, biographie, photos, documents, articles de presse sur mon site :</p>
<p><a title="témoignage" href="http://www.violence-conjugale-aider-victimes-et-violents.com/">http://www.violence-conjugale-aider-victimes-et-violents.com/</a></p>
<p>Voici la dernière photo que j&#8217;ai de mes petits, elle est ancienne.</p>
<p>J&#8217;ai posé mes enfants à l&#8217;école un matin de février, et ils ont disparu. Sur ordre d&#8217;un juge qui ne me connaissait pas, sans audience. Pour les remettre au père.  Le choc a failli me tuer. Je n&#8217;ai plus jamais eu de nouvelles. 3 ans. Je deviens folle de douleur et je n&#8217;ai plus rien à perdre.</p>
<p><img class="alignnone size-medium wp-image-266" title="les-4-as" src="http://osezdevenir.wordpress.com/files/2009/01/les-4-as.jpg?w=300" alt="les-4-as" width="300" height="207" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[24 décembre]]></title>
<link>http://jepensedoncjesuis.wordpress.com/2008/12/31/24-decembre-2/</link>
<pubDate>Wed, 31 Dec 2008 19:19:19 +0000</pubDate>
<dc:creator>junior1975</dc:creator>
<guid>http://jepensedoncjesuis.wordpress.com/2008/12/31/24-decembre-2/</guid>
<description><![CDATA[Compassion Il nous faut développer une compassion qui soit assez puissante pour que le fait d&#8217;]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Compassion</p>
<p>Il nous faut développer une compassion qui soit assez puissante pour que le fait d&#8217;apporter du bien-être aux autres nous devienne indispensable.</p>
<p>C&#8217;est pourquoi il faut nous attacher dès maintenant à assumer la responsabilité que cela puisse s&#8217;accomplir. Dans le bouddhisme, une telle compassion est appelée &#8220;grande compassion&#8221;.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[André Manseau nommé au poste de doyen de la recherche]]></title>
<link>http://robergeb.wordpress.com/2008/10/23/andre-manseau-nomme-au-poste-de-doyen-de-la-recherche/</link>
<pubDate>Thu, 23 Oct 2008 00:07:40 +0000</pubDate>
<dc:creator>robergeb</dc:creator>
<guid>http://robergeb.wordpress.com/2008/10/23/andre-manseau-nomme-au-poste-de-doyen-de-la-recherche/</guid>
<description><![CDATA[Le conseil d’administration de l’Université du Québec en Outaouais (UQO) est heureux d’annoncer la n]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://robergeb.files.wordpress.com/2008/10/resized.jpg"><img class="alignright size-medium wp-image-54" title="resized" src="http://robergeb.wordpress.com/files/2008/10/resized.jpg?w=214" alt="" width="214" height="300" /></a>Le conseil d’administration de l’Université du Québec en Outaouais (UQO) est heureux d’annoncer la nomination de monsieur André Manseau au poste de doyen de la recherche. Monsieur Manseau aura comme défi de poursuivre le développement de la recherche à l’UQO en soutenant l’ensemble des professeurs dans leurs démarches en vue d’obtenir les financements externes requis pour mener à bien leurs travaux de recherche et en créant des conditions favorables à la conduite de travaux de recherche dans l’ensemble de l’Université. Il entrera en fonction le 1er novembre.</p>
<p>Le vice-recteur à l’enseignement et à la recherche, Denis Dubé, s’est dit enthousiaste face à l’arrivée d’André Manseau dans ce poste : « dans un contexte contemporain où la recherche de haut niveau fait appel à des partenariats de nature diversifiée, l’expérience de monsieur Manseau sera certes un atout précieux pour l’ensemble des professeurs de l’UQO ».</p>
<p>André Manseau est directeur du Bureau de liaison université-milieu de l’Université (BLUM) du Québec en Outaouais depuis décembre 2003. Auparavant, il a œuvré près de neuf ans au sein du Conseil national de recherches du Canada (CNRC), où il a été notamment Directeur du portefeuille du Vice président au soutien technologique et industriel. De 1990 à 1996, il a été conseiller et gestionnaire dans différentes organisations de recherche des secteurs privé et public. Monsieur Manseau a commencé sa carrière comme professeur de physique puis Directeur des services d’éducation permanente au campus d’Edmundston de l’Université de Moncton de 1981 à 1989.</p>
<p>Comme directeur du BLUM, André Manseau est actuellement responsable du développement des partenariats avec les organismes du milieu, des ententes de coopération internationale, des activités de formation continue, des stages des étudiants inscrits à des programmes COOP, de la gestion des contrats de recherche, d’enjeux liés à la gestion de la propriété intellectuelle et de la valorisation de la recherche.</p>
<p>André Manseau est détenteur d’un doctorat en management de l’Université du Québec à Montréal, d’une maîtrise en administration publique de l’École nationale d’administration publique et d’une maîtrise en sciences physiques de l’Université de Sherbrooke.</p>
<p><strong>La recherche à l’UQO</strong></p>
<p>La recherche à l’UQO connaît un essor très important depuis une décennie. L’UQO a su développer, au fil des années, un patrimoine scientifique dans certains domaines qu’elle voudrait bien consolider à court ou à moyen terme. Mentionnons, entre autres, l’économie sociale et les collectivités locales, la santé psychosociale : enfance-jeunesse, la photonique, l’informatique des télécommunications, la cyberpsychologie, la réussite scolaire et les transformations du travail.</p>
<p>L’expertise des professeurs de l’UQO est de plus en plus reconnue, ce qui se traduit par un financement externe de la recherche et un volume de productions de travaux scientifiques qui affichent une progression significative. L’expertise de l’UQO est notamment reconnue par le Programme des chaires de recherche du Canada (CRC) dans quatre domaines de recherche : la photonique, la cyberpsychologie clinique, le développement des collectivités et l’organisation communautaire.</p>
<p>De plus, l’UQO est un acteur important en recherche en technologies langagières grâce au Centre de recherche en technologies langagières (CRTL) qui mise sur l’expertise des professeurs de l’UQO ainsi que de chercheurs du Conseil national de recherches du Canada et du Bureau de la traduction. L’UQO est aussi un partenaire privilégié de l’Institut québécois d’aménagement de la forêt feuillue (IQAFF) avec lequel elle établit les bases des interventions futures de l’Université dans le vaste secteur des sciences naturelles. Dans le domaine de la santé, l’UQO a aussi établi des ententes formelles de collaboration avec des partenaires institutionnels qui jouent un rôle important pour la recherche à l’UQO, à savoir : le Centre hospitalier Pierre-Janet, le Pavillon du Parc et les Centres jeunesse de l’Outaouais.</p>
<p>Ces développements accélérés permettent désormais à l’UQO d’offrir des conditions particulièrement favorables à la formation de personnels hautement qualifiés, en outre, en encadrant des étudiants dans cinq programmes de doctorat.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Revue de presse : Lancement de Zoho Creator 3.0]]></title>
<link>http://nsisolution.wordpress.com/2008/09/30/revue-de-presse-lancement-de-zoho-creator-30/</link>
<pubDate>Tue, 30 Sep 2008 14:19:45 +0000</pubDate>
<dc:creator>Pascal Veilleux</dc:creator>
<guid>http://nsisolution.wordpress.com/2008/09/30/revue-de-presse-lancement-de-zoho-creator-30/</guid>
<description><![CDATA[Je vous en avait déjà parlé samedi mais c&#8217;est aujourd&#8217;hui que les sites majeurs parlent ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Je vous en avait déjà parlé <a href="http://nsisolution.wordpress.com/2008/09/28/lancement-de-zoho-creator-3-enfin/" target="_blank">samedi</a> mais c&#8217;est aujourd&#8217;hui que les sites majeurs parlent du lancement de <a href="http://creator.zoho.com" target="_blank">Zoho Creator 3.0</a> et du marché d&#8217;applications (marketplace).</p>
<ul>
<li>TechCrunch : <a href="http://www.techcrunch.com/2008/09/30/zoho-launches-its-application-marketplace/" target="_blank">Zoho Launches Its Application Marketplace</a></li>
<li>Mashable : <a href="http://mashable.com/2008/09/30/zoho-marketplace-creator/" target="_blank">Zoho Launches Marketplace, Updates Creator</a></li>
<li>ZDNet : <a href="http://blogs.zdnet.com/BTL/?p=10233" target="_blank">Zoho launches app marketplace; Aims to rally developers</a></li>
<li>Chris Brogan : <a href="http://www.chrisbrogan.com/zoho-launches-marketplace/" target="_blank">Zoho Launches Marketplace</a></li>
<li>&#8230; la liste pourrait être longue</li>
</ul>
<p>Ça a également créé un buzz sur <a href="http://search.twitter.com/search?q=zoho" target="_blank">Twitter</a>.</p>
<p>N&#8217;oubliez pas que <a href="http://nsisolution.wordpress.com/2008/09/28/nsi-solution-choisi-comme-featured-partner-pour-le-lancement-de-zoho-creator-3/" target="_blank">NSI Solution a été choisi comme &#8220;featured partner&#8221; pour le lancement de Zoho Creator 3</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Les Meilleurs Guides Du Moments !]]></title>
<link>http://fortuneinternet.wordpress.com/2008/08/04/les-meilleurs-guides-du-moments/</link>
<pubDate>Mon, 04 Aug 2008 11:44:31 +0000</pubDate>
<dc:creator>twohkz</dc:creator>
<guid>http://fortuneinternet.wordpress.com/2008/08/04/les-meilleurs-guides-du-moments/</guid>
<description><![CDATA[Les Meilleurs Guides Du Moments ! 1 &#8211; Riche En Un Click Profitez des Secrets d&#8217;un Cyber-]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://go.twohkz.fortune101.1.1tpe.net" target="_blank"><img src="http://www.fortuneinternet101.com/Bannieres/468-60.gif" border="0" alt="" /></a><br />
<img src="http://www.socialwebmarketingtips.com/img1.jpg" border="0" alt="" /></p>
<h3 class="post-title entry-title">Les Meilleurs Guides Du Moments !</h3>
<p><span style="font-weight:bold;">1 &#8211; <span style="font-weight:bold;"><a href="http://go.twohkz.tpweb.2.1tpe.net/">Riche En Un Click</a></span><br />
Profitez des Secrets d&#8217;un Cyber-Pro!<br />
</span><br />
<span style="font-weight:bold;">2 &#8211; <span style="font-weight:bold;"><a href="http://go.twohkz.jeremie.1.1tpe.net/">Créez une affaire puissante à domicile !</a><br />
Découvrez comment s&#8217;enrichir sur Internet, gagnez de 1500 à 4500 euros par mois. Notre rapport vous dévoile tout !<br />
</span></span></p>
<p>3 &#8211; <span style="font-weight:bold;"><a href="http://go.twohkz.fortune101.1.1tpe.net/">Fortune Internet 101</a><br />
Découvrez Comment un Gamin de 23 ans Gagne Plus de 29 496€+ Par MOIS Sur Internet. La Seule Véritable Méthode Pour Générer Des Revenus sur le Net!</span></p>
<p><span style="font-weight:bold;">4 &#8211; <a href="http://go.twohkz.contactebook.15.1tpe.net/">LAST- CALL MULITIPLICATEUR DE VENTES</a><br />
Ne laissez plus vos visiteurs partir sans acheter. Last-Call regroupe tous les outils de professionnels necessaires pour retenir les visiteurs sur vos sites par conséquent multipliez vos ventes!</span></p>
<p><span style="font-weight:bold;">5 &#8211; <a href="http://go.twohkz.elecinfo.35.1tpe.net/">30 Templates Professionnels avec PLR</a><br />
30 Superbes Graphiques + 100 Images inédites + 15 Certificats de Garantie</span></p>
<p><span style="font-weight:bold;">6 &#8211; <a href="http://go.twohkz.kevinpincher.1.1tpe.net/">Explosez Vos Revenus + DROIT DE REVENTE PRIVE</a><br />
Qui veut découvrir une ingénieuse technique d&#8217;email marketing qui récemment a généré 4260 € en moins de 24 heures sur une liste de moins de 500 abonnés !</span></p>
<p><span style="font-weight:bold;">7 &#8211; <a href="http://go.twohkz.tahiti.10.1tpe.net/">Comment s&#8217;Enrichir sur Internet sans Avoir de Site</a><br />
Découvrez comment s&#8217;enrichir Sur Internet Sans avoir de Site. Toutes les méthodes secrètes pour gagner de l&#8217;argent grâce à internet.</span></p>
<p><span style="font-weight:bold;"><span style="font-weight:bold;">8 &#8211; <a href="http://go.twohkz.pgrobety.20.1tpe.net/">Bannières de Haute Qualité pour votre Site</a></span><br />
Pack complet de bannières d&#8217;en-tête pour rendre votre site attractif.</span></p>
<p><span style="font-weight:bold;">9 &#8211; <a href="http://go.twohkz.evendre.1.1tpe.net/">etude</a><br />
Etude de marche en ligne &#8211; ma formule ecommerce</span></p>
<p><span style="font-weight:bold;">10 &#8211; <a href="http://go.twohkz.ltpronet.1.1tpe.net/">La solution globale de gestion trafic et publicité</a><br />
Un ensemble complet de puissants outils de promotion et de gestion de trafic qui permettent aux utilisateurs de répondre efficacement à l&#8217;attente des futurs visiteurs et clients potentiels</span></p>
<p><span style="font-weight:bold;">11 &#8211; <a href="http://go.twohkz.contactebook.10.1tpe.net/">Les Secrets du leader de caractère</a><br />
Comment être un leader de caractère pour développer son équipe et faire monter en puissance votre activité&#8230;</span></p>
<p><span style="font-weight:bold;">12 &#8211; <a href="http://go.twohkz.mixannu.1.1tpe.net/">Comment S&#8217;Enrichir Sur Internet Sans avoir de Site</a><br />
Découvrez sur cet ebook des techniques pour gagner de l&#8217;argent dans les 24 heures qui suivent. L&#8217;auteur Christian Godefroy est une personne qui a reussit sa vie sur Internet &#8230;</span></p>
<p><span style="font-weight:bold;">13 &#8211; <a href="http://go.twohkz.contactebook.8.1tpe.net/">Les Secrets Des eBooks</a><br />
Comment créer votre propre eBook sur Internet et gagner de l&#8217;argent.L&#8217;auteur Ken Silver vous dit tout sur les secrets et stratégies qui lui ont permis de gagner plus de 21.000 dollars en un mois!</span></p>
<p><span style="font-weight:bold;">14 &#8211; <a href="http://go.twohkz.contactebook.7.1tpe.net/">Démarrez Votre entreprise sur Internet:INFOPRENEUR</a><br />
L&#8217;outil incontournable en 2008 pour devenir INFOPRENEUR! Si vous avez choisi de démarrer une activité sur Internet, commencer TOUT d&#8217;abord par lire ce livre électronique avec Droit de Revente !</span></p>
<p><span style="font-weight:bold;">15 &#8211; <a href="http://go.twohkz.ebooks.1.1tpe.net/">Comment surmonter l&#8217;échec et atteindre le Succès !</a><br />
Comment surmonter l&#8217;échec et atteindre le Succès (Napoleon Hill) avec droit de revente inclus. Gardez 100% des profits</span></p>
<p><span style="font-weight:bold;">16 &#8211; <a href="http://go.twohkz.rapidocards.1.1tpe.net/">Interdiction Bancaire : sortez de la fatalité</a><br />
Cet ouvrage va vous aider à faire face à une situation difficile qu&#8217;est l&#8217;Interdiction Bancaire en vous donnant des astuces 100% légales et même la possibilté d&#8217;obtenir une carte VISA gratuitement.</span></p>
<p><span style="font-weight:bold;">17 &#8211; <a href="http://go.twohkz.sublmisoft.3.1tpe.net/">Super Pack Joint-Venture</a><br />
Generez des milliers de visiteurs vers vos sites web,lien d&#8217;affiliés sans invesrtir un Euro en publicité !!Formation complete +Nombreux bonus!!<br />
</span></p>
<p><span style="font-weight:bold;">18 &#8211; <a href="http://go.twohkz.jomarco.1.1tpe.net/">Gagner de l&#8217;argent avec l&#8217;Internet et la Victoire</a><br />
Un ebook viral que vous pouvez revendre en conservant tous les profits pour VOUS.<br />
</span></p>
<p><span style="font-weight:bold;">19 &#8211; <a href="http://go.twohkz.contactebook.1.1tpe.net/">Comment Bâtir Votre Fortune</a><br />
Ce livre électronique vous dit vraiment Tout sur Comment Bâtir Votre Fortune! Ne passez pas à côté de cet e-book écrit par des spécialistes!N&#8217;aillez pas ailleur. Voiçi ce qu&#8217;il Vous Faut !</span></p>
<p><span style="font-weight:bold;">20 &#8211; <a href="http://go.twohkz.pgrobety.17.1tpe.net/">La Méthode Marketing Gagnante</a><br />
Comment créer et développer un business rentable sur Internet en moins d&#8217;un mois !</span></p>
<p><a href="http://go.twohkz.fortune101.1.1tpe.net" target="_blank"><img src="http://www.fortuneinternet101.com/Bannieres/468-60.gif" border="0" alt="" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tutorial - Assombrir un ciel]]></title>
<link>http://coinduphotographe.wordpress.com/2008/07/26/tutorial-assombrir-un-ciel/</link>
<pubDate>Sat, 26 Jul 2008 12:47:11 +0000</pubDate>
<dc:creator>coinduphotographe</dc:creator>
<guid>http://coinduphotographe.wordpress.com/2008/07/26/tutorial-assombrir-un-ciel/</guid>
<description><![CDATA[Dans ce tutorial, je vais vous montrer comment assombrir le ciel afin de faire ressortir les nuages ]]></description>
<content:encoded><![CDATA[Dans ce tutorial, je vais vous montrer comment assombrir le ciel afin de faire ressortir les nuages ]]></content:encoded>
</item>
<item>
<title><![CDATA[Prises de vues en fichiers RAW ou JPG ?]]></title>
<link>http://coinduphotographe.wordpress.com/2008/07/05/prises-de-vues-en-fichiers-raw-ou-jpg/</link>
<pubDate>Sat, 05 Jul 2008 15:55:35 +0000</pubDate>
<dc:creator>coinduphotographe</dc:creator>
<guid>http://coinduphotographe.wordpress.com/2008/07/05/prises-de-vues-en-fichiers-raw-ou-jpg/</guid>
<description><![CDATA[Je supose que vous avez déjà entendu ce mot : RAW. Pour faire simple c&#8217;est un terme qui indiqu]]></description>
<content:encoded><![CDATA[Je supose que vous avez déjà entendu ce mot : RAW. Pour faire simple c&#8217;est un terme qui indiqu]]></content:encoded>
</item>

</channel>
</rss>
