<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Kodono</title>
	
	<link>http://blog.kodono.info/wordpress</link>
	<description>Pour tous les technophiles</description>
	<lastBuildDate>Thu, 09 Feb 2012 10:52:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Kodono" /><feedburner:info uri="kodono" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>CSS3 PIE pour créer un border-radius sur IE [webdesign]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/8_1k317R5dM/</link>
		<comments>http://blog.kodono.info/wordpress/2012/02/09/css3-pie-pour-creer-un-border-radius-sur-ie-webdesign/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 10:52:47 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=932</guid>
		<description><![CDATA[Si vous cherchez à faire un border-radius sur un vieux IE vous avez dû vous rendre compte que cela ne fonctionne pas&#8230; mais heureusement il existe CSS3 PIE qui est un &#171;&#160;petit&#160;&#187; fichier qui va permettre de créer l&#8217;effet désiré ! A noter cependant que je rencontre un problème : lorsque j&#8217;applique le fichier htc [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous cherchez à faire un <code>border-radius</code> sur un vieux IE vous avez dû vous rendre compte que cela ne fonctionne pas&#8230; mais heureusement il existe <a href="http://css3pie.com" title="Lien vers CSS3PIE">CSS3 PIE</a> qui est un &laquo;&nbsp;petit&nbsp;&raquo; fichier qui va permettre de créer l&#8217;effet désiré !</p>
<p>A noter cependant que je rencontre un problème : lorsque j&#8217;applique le fichier <em>htc</em> avec <code>behavior</code> alors j&#8217;ai ma couleur de fond (<code>background-color</code>) qui devient invisible / disparait. Ce problème peut-être résolu en appliquant la règle CSS suivante (<a href="http://css3pie.com/forum/viewtopic.php?f=3&#038;t=1474" title="Lien vers le forum CSS3 PIE">solution trouvée sur leur forum</a>):</p>
<pre class="brush:css">* { position:relative }</pre>
<p>Grâce à ça tout fonctionne sous IE <img src='http://blog.kodono.info/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=8_1k317R5dM:idKM6351W-U:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=8_1k317R5dM:idKM6351W-U:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=8_1k317R5dM:idKM6351W-U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/8_1k317R5dM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/02/09/css3-pie-pour-creer-un-border-radius-sur-ie-webdesign/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/02/09/css3-pie-pour-creer-un-border-radius-sur-ie-webdesign/</feedburner:origLink></item>
		<item>
		<title>Transformer/convertir une vidéo vers le format mp4 et ogg (ogv) gratuitement [vidéo]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/kB9BrHqIXTM/</link>
		<comments>http://blog.kodono.info/wordpress/2012/02/03/transformer-convertir-une-video-vers-format-mp4-et-ogg-ogv-gratuitement-video/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 08:14:22 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Vidéo]]></category>
		<category><![CDATA[vidéo]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=929</guid>
		<description><![CDATA[Il existe une extension pour Firefox qui permet de convertir tout type de vidéo (avi, wmv, mp4, etc) dans le format HTML5 Ogg ou WebM. Il s&#8217;agit de http://firefogg.org/. Vous aurez besoin de Firefox 4 au moins. Cliquez sur le bouton rouge &#171;&#160;Install Firefogg&#160;&#187;. Vous devrez redémarrer votre Firefox, puis retournez sur http://firefogg.org/. Cette fois [...]]]></description>
			<content:encoded><![CDATA[<p>Il existe une extension pour Firefox qui permet de convertir tout type de vidéo (avi, wmv, mp4, etc) dans le format HTML5 Ogg ou WebM. Il s&#8217;agit de <a href="http://firefogg.org/" title="lien vers FireFogg">http://firefogg.org/</a>.<br />
Vous aurez besoin de Firefox 4 au moins. Cliquez sur le bouton rouge &laquo;&nbsp;Install Firefogg&nbsp;&raquo;. Vous devrez redémarrer votre Firefox, puis retournez sur <a href="http://firefogg.org/" title="lien vers FireFogg">http://firefogg.org/</a>. Cette fois cliquez sur &laquo;&nbsp;Make web video&nbsp;&raquo; et suivez les instructions !</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=kB9BrHqIXTM:VWeJzlAlNpk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=kB9BrHqIXTM:VWeJzlAlNpk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=kB9BrHqIXTM:VWeJzlAlNpk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/kB9BrHqIXTM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/02/03/transformer-convertir-une-video-vers-format-mp4-et-ogg-ogv-gratuitement-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/02/03/transformer-convertir-une-video-vers-format-mp4-et-ogg-ogv-gratuitement-video/</feedburner:origLink></item>
		<item>
		<title>Trouver les paramètres dans l’url [Javascript]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/oQ7B8n5wQaU/</link>
		<comments>http://blog.kodono.info/wordpress/2012/02/02/trouver-les-parametres-dans-lurl-javascript/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 14:53:27 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=926</guid>
		<description><![CDATA[[niveau débutant] Voici une fonction courte pour récupérer l&#8217;ensemble des paramètres passés dans l&#8217;URL : function getUrlVars(a,b,c,d){b=[];if(a=location.search.split('#')[0].match(/\?(.*)(#.*)?/)){d=a[1].split('&#038;');for(i=d.length;i--;){c=d[i].split('=');b[i]=c[0];b[c[0]]=c[1]}}return b} var params=getUrlVars(); // si on a http://blog.kodono.info/?foo=bar&#038;gniii=ok#something alors : params[0]; // -> 'foo' params[1]; // -> 'gniii' params["foo"]; // -> 'bar' params["gniii"]; // -> 'ok']]></description>
			<content:encoded><![CDATA[<p>[niveau débutant]</p>
<p>Voici une fonction courte pour récupérer l&#8217;ensemble des paramètres passés dans l&#8217;URL :</p>
<pre class="brush:javascript">function getUrlVars(a,b,c,d){b=[];if(a=location.search.split('#')[0].match(/\?(.*)(#.*)?/)){d=a[1].split('&#038;');for(i=d.length;i--;){c=d[i].split('=');b[i]=c[0];b[c[0]]=c[1]}}return b}

var params=getUrlVars();
// si on a http://blog.kodono.info/?foo=bar&#038;gniii=ok#something alors :
params[0]; // -> 'foo'
params[1]; // -> 'gniii'
params["foo"]; // -> 'bar'
params["gniii"]; // -> 'ok'
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=oQ7B8n5wQaU:WoP2P05R_OE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=oQ7B8n5wQaU:WoP2P05R_OE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=oQ7B8n5wQaU:WoP2P05R_OE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/oQ7B8n5wQaU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/02/02/trouver-les-parametres-dans-lurl-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/02/02/trouver-les-parametres-dans-lurl-javascript/</feedburner:origLink></item>
		<item>
		<title>Comment cropper / rogner / recadrer un film [Vidéo]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/wU13QSUuEks/</link>
		<comments>http://blog.kodono.info/wordpress/2012/01/27/comment-cropper-rogner-recadrer-un-film-video-3/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 15:24:48 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Vidéo]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[vidéo]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=882</guid>
		<description><![CDATA[[niveau débutant] J&#8217;ai découvert qu&#8217;il était très simple d&#8217;enlever des bouts du cadrage d&#8217;un film grâce à AviDemux ! Il vous suffit d&#8217;ouvrir votre film avec AviDemux puis dans la colonne de gauche choisissez un format vidéo de sortie. On prendra par exemple xvid et ensuite cliquez sur &#171;&#160;Filtres&#160;&#187; : Parmi les filtres disponibles double [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau débutant]</p>
<p>J&#8217;ai découvert qu&#8217;il était très simple d&#8217;enlever des bouts du cadrage d&#8217;un film grâce à <a href="http://avidemux.berlios.de/" title="Lien vers le site d'avidemux">AviDemux</a> !</p>
<p>Il vous suffit d&#8217;ouvrir votre film avec AviDemux puis dans la colonne de gauche choisissez un format vidéo de sortie. On prendra par exemple xvid et ensuite cliquez sur &laquo;&nbsp;Filtres&nbsp;&raquo; :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120127_avidemux.png" alt="Copie d&#039;écran des boutons" title="Copie d&#039;écran des boutons" width="172" height="107" class="aligncenter size-full wp-image-918" /></p>
<p>Parmi les filtres disponibles double cliquez sur &laquo;&nbsp;Crop&nbsp;&raquo;. A partir de là vous pouvez définir la marge gauche, droite, haute et basse que vous voulez rogner :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120127_avidemux_2.png" alt="Fenêtre de crop" title="Fenêtre de crop" width="513" height="486" class="aligncenter size-full wp-image-919" /></p>
<p>Une fois terminé, cliquez sur &laquo;&nbsp;Fermer&nbsp;&raquo;, puis dans la fenêtre principale du logiciel, dans la colonne de gauche, sélectionner le format audio voulu (par exemple mp3), et ainsi que le format de sortie (avi).<br />
Si jamais, au moment où vous cliquez sur &laquo;&nbsp;Fermer&nbsp;&raquo; vous obtenez le message « Width is not a multiple of 8 » :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120127_avidemux_3.png" alt="Message d&#039;erreur" title="Message d&#039;erreur" width="264" height="156" class="aligncenter size-full wp-image-920" /><br />
Pour régler ce problème il faut revenir à votre filtre &laquo;&nbsp;Crop&nbsp;&raquo;. Vous devez regarder la largeur de la vidéo que vous allez produire :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120127_avidemux_4.png" alt="Exemple de largeur de vidéo" title="Exemple de largeur de vidéo" width="351" height="87" class="aligncenter size-full wp-image-922" /><br />
Dans cet exemple on a 478, or ce n&#8217;est pas un multiple de 8 (car 478/8=59.75). Il suffit donc de modifier légèrement la bordure droite ou gauche afin d&#8217;obtenir une taille multiple de huit. Si j&#8217;ai 480 alors ça sera bon (480/8=60).</p>
<p>Il ne vous reste plus qu&#8217;à enregistrer votre film et le tour est joué.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=wU13QSUuEks:w_hbX0LvxhA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=wU13QSUuEks:w_hbX0LvxhA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=wU13QSUuEks:w_hbX0LvxhA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/wU13QSUuEks" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/01/27/comment-cropper-rogner-recadrer-un-film-video-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/01/27/comment-cropper-rogner-recadrer-un-film-video-3/</feedburner:origLink></item>
		<item>
		<title>Un algorithme court et rapide pour Array.unique() [Javascript]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/u90KI1ZLQ9o/</link>
		<comments>http://blog.kodono.info/wordpress/2012/01/26/un-algorithme-court-et-rapide-pour-array-unique-javascript/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 15:03:09 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=908</guid>
		<description><![CDATA[Voici un simple algorithme, et apparemment rapide, trouvé sur http://www.shamasis.net/2009/09/fast-algorithm-to-find-unique-items-in-javascript-array/ et que j&#8217;ai raccourci légèrement : Array.prototype.unique=[].unique&#124;&#124;function(){var o={},i,l=this.length,r=[];for(i=0;i&#60;l;i++)o[this[i]]=this[i];for(i in o)r.push(o[i]);return r} // exemple var tab=[1, 5, 2, 4, 1, 5, 4, 1, 5, 6, 8 ]; tab.unique(); // [1, 5, 2, 4, 6, 8]]]></description>
			<content:encoded><![CDATA[<p>Voici un simple algorithme, et apparemment rapide, trouvé sur <a href="http://www.shamasis.net/2009/09/fast-algorithm-to-find-unique-items-in-javascript-array/" title="http://www.shamasis.net/2009/09/fast-algorithm-to-find-unique-items-in-javascript-array/">http://www.shamasis.net/2009/09/fast-algorithm-to-find-unique-items-in-javascript-array/</a> et que j&#8217;ai raccourci légèrement :</p>
<pre class="brush: javascript">Array.prototype.unique=[].unique||function(){var o={},i,l=this.length,r=[];for(i=0;i&lt;l;i++)o[this[i]]=this[i];for(i in o)r.push(o[i]);return r}

// exemple
var tab=[1, 5, 2, 4, 1, 5, 4, 1, 5, 6, 8 ];
tab.unique(); // [1, 5, 2, 4, 6, 8]
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=u90KI1ZLQ9o:NCWoh68-1k8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=u90KI1ZLQ9o:NCWoh68-1k8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=u90KI1ZLQ9o:NCWoh68-1k8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/u90KI1ZLQ9o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/01/26/un-algorithme-court-et-rapide-pour-array-unique-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/01/26/un-algorithme-court-et-rapide-pour-array-unique-javascript/</feedburner:origLink></item>
		<item>
		<title>Alternatives à IMNRC() et ProcessImn() pour déterminer la présence d’une personne [Sharepoint]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/whUHbQZU9xg/</link>
		<comments>http://blog.kodono.info/wordpress/2012/01/23/alternatives-a-imnrc-et-processimn-pour-determiner-la-presence-dune-personne-sharepoint/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 15:59:23 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=904</guid>
		<description><![CDATA[Avec Sharepoint (2003 &#038; 2007) on peut voir la présence (sur IM/MSN/Microsoft Messenger/Office Messenger/Microsoft Lynk) des utilisateurs directement dans une page Web grâce à des petites bulles de couleur. Quand on place le curseur au-dessus on aperçoit un popup avec diverses informations et possibilités. Cela n&#8217;est disponible que pour Internet Explorer puisqu&#8217;on utilise ici de [...]]]></description>
			<content:encoded><![CDATA[<p>Avec Sharepoint (2003 &#038; 2007) on peut voir la présence (sur IM/MSN/Microsoft Messenger/Office Messenger/Microsoft Lynk) des utilisateurs directement dans une page Web grâce à des petites bulles de couleur. Quand on place le curseur au-dessus on aperçoit un popup avec diverses informations et possibilités. Cela n&#8217;est disponible que pour Internet Explorer puisqu&#8217;on utilise ici de l&#8217;ActiveX (et en particulier <a href="http://msdn.microsoft.com/en-us/library/ms455335.aspx" title="Lien vers la documentation Microsoft pour NameCtrl">NameCtrl</a>).</p>
<p>Je force le mode standard d&#8217;IE dans mon Sharepoint, et j&#8217;ai remarqué que les fonctions <code>ProcessImn()</code> et <code>IMNRC()</code> (l&#8217;une appelant l&#8217;autre) causaient un plantage d&#8217;IE avec un CPU qui montait en charge, et cela pour les pages qui contiennent un grand nombre de personnes et donc de bulles de présence (typiquement une liste AllItems avec des colonnes qui montrent cette information).<br />
J&#8217;ai donc décidé de créer une alternative à l&#8217;affichage de la présence dans Sharepoint en utilisant mes propres fonctions.</p>
<p>Le résultat est le suivant :</p>
<pre class="brush: javascript">
/* on commence par supprimer les deux fonctions qui posent problèmes */
function IMNRC() {}
function ProcessImn() {}
var nameCtrl; // on s'assure de définir nameCtrl
var presence={}; // on crée un objet presence qui va nous servir à mettre en cache l'état de chaque individu
// Cette fonction fait apparaitre un menu/popup avec les informations de présence de l'utilisateur
function showIMMenu() {
  var el=window.event.srcElement;
  var pos=el.getBoundingClientRect();
  // on place le menu en question à la position pos.left et pos.top
  nameCtrl.ShowOOUI(el.getAttribute("sip"), 0, pos.left, pos.top);
}

// Cette fonction va cacher le menu
function hideIMMenu() { nameCtrl.HideOOUI() }

// Cette fonction va permettre de modifier la bulle avec celle qui correspond à l'état de présence de l'utilisateur
function ChangeIMPresence(sip, state, imgID) {
  if (presence[imgID] == state) return;
  presence[imgID]=state;
  var imgIM=document.getElementsByName(imgID);
  for (var i=0; i&lt;imgIM.length; i++) {
    var alt="",src="imnhdr.gif"; // default image (grey)
    switch(state) {
      case 0: alt="Online"; src="imnon.png"; break;
      case 1: alt="Offline"; src="imnoff.png"; break;
      case 2: alt="Away"; src="imnaway.png"; break;
      case 4: alt="Be Right Back"; src="imnaway.png"; break;
      case 3: alt="Busy"; src="imnbusy.png"; break;
      case 5: alt="On the Phone"; src="imnbusy.png"; break;
      case 6: alt="Out to Lunch"; src="imnaway.png"; break;
      default: alt="Unknown"; src="imnhdr.gif";
    }
    imgIM[i].src="http://your_sharepoint/_layouts/images/"+src;
    imgIM[i].alt=alt;
  }
}

// Maintenant on initialise l'objet ActiveX
function initIMPresence() {
  if (typeof ActiveXObject == "function") { // seulement pour IE
    if (typeof nameCtrl=="undefined") nameCtrl=new ActiveXObject('Name.NameCtrl.1');
    var imgIM=document.getElementsByName("imnmark"); // toutes les bulles de présence ont le nom "imnmark"
    for (var i=0; i&lt;imgIM.length; i++) {
      var sip=imgIM[i].getAttribute("sip"); // l'attribut "sip" retourne l'information que l'on souhaite
      if (sip!=null) {
        sip=sip.slice(4);
        var state=nameCtrl.GetStatus(sip, "imnmark_"+sip); // retourne la présence basée sur le SIP (adresse email)
        nameCtrl.OnStatusChange=ChangeIMPresence;
        imgIM[i].src="http://your_sharepoint/_layouts/images/imnhdr.gif";
        imgIM[i].alt="Unknown";
        imgIM[i].name+="_"+sip;
        imgIM[i].onclick=showIMMenu;
        imgIM[i].onmouseover=showIMMenu; // quand on passe la souris au-dessus d'une bulle on verra le menu
        imgIM[i].onmouseout=hideIMMenu;
      }
    }
  }
}

// et on lance tout ça !
initIMPresence();
</pre>
<p>En ajoutant ce bout de code à ma masterpage j&#8217;ai pu conserver les bulles de présence tout en évitant un plantage d&#8217;IE <img src='http://blog.kodono.info/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=whUHbQZU9xg:ZPHJ1L4zZoc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=whUHbQZU9xg:ZPHJ1L4zZoc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=whUHbQZU9xg:ZPHJ1L4zZoc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/whUHbQZU9xg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/01/23/alternatives-a-imnrc-et-processimn-pour-determiner-la-presence-dune-personne-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/01/23/alternatives-a-imnrc-et-processimn-pour-determiner-la-presence-dune-personne-sharepoint/</feedburner:origLink></item>
		<item>
		<title>DOMContentLoaded pour cross browser (multi-navigateurs) [Javascript]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/aCbdM_xvcNE/</link>
		<comments>http://blog.kodono.info/wordpress/2012/01/23/domcontentloaded-pour-cross-browser-multi-navigateurs-javascript/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 14:57:18 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=899</guid>
		<description><![CDATA[Après avoir parcouru le Net pour un évènement DOMContentLoaded (qui s&#8217;enclenche avant window.onload) qui puisse fonctionner sur tous les navigateurs (et en particulier IE7), j&#8217;ai pu trouver un article qui explique bien les différentes étapes et la solution adaptée : http://javascript.info/tutorial/onload-ondomcontentloaded Pour résumer la fonction à utiliser est : function bindReady(handler){ var called = false [...]]]></description>
			<content:encoded><![CDATA[<p>Après avoir parcouru le Net pour un évènement <code>DOMContentLoaded</code> (qui s&#8217;enclenche avant <code>window.onload</code>) qui puisse fonctionner sur tous les navigateurs (et en particulier IE7), j&#8217;ai pu trouver un article qui explique bien les différentes étapes et la solution adaptée : <a href="http://javascript.info/tutorial/onload-ondomcontentloaded" title="DOMContentLoaded cross browser article">http://javascript.info/tutorial/onload-ondomcontentloaded</a></p>
<p>Pour résumer la fonction à utiliser est :</p>
<pre class="brush: javascript">function bindReady(handler){
  var called = false
  function ready() {
    if (called) return
    called = true
    handler()
  }
  if ( document.addEventListener ) { // native event
    document.addEventListener( "DOMContentLoaded", ready, false )
  } else if ( document.attachEvent ) {  // IE
    try { var isFrame = window.frameElement != null } catch(e) {}

    // IE, the document is not inside a frame
    if ( document.documentElement.doScroll &#038;&#038; !isFrame ) {
      function tryScroll(){
        if (called) return
        try {
          document.documentElement.doScroll("left")
          ready()
        } catch(e) {
          setTimeout(tryScroll, 10)
        }
      }
      tryScroll()
    }

    // IE, the document is inside a frame
    document.attachEvent("onreadystatechange", function(){
      if ( document.readyState === "complete" ) {
        ready()
      }
    })
  }

  // Old browsers
  if (window.addEventListener)
    window.addEventListener('load', ready, false)
  else if (window.attachEvent)
    window.attachEvent('onload', ready)
  else {
    var fn = window.onload // very old browser, copy old onload
    window.onload = function() { // replace by new onload and call the old one
      fn &#038;&#038; fn()
      ready()
    }
  }
}</pre>
<p>A partir de là vous pouvez appeler votre fonction avec :</p>
<pre class="brush: javascript">bindReady(function() {
  /* quelque chose qui doit se lancer après le chargement du DOM */
});</pre>
<p>Dans le cas où vous voudriez appeler plusieurs fonctions, alors vous pouvez simplement faire quelque chose comme :</p>
<pre class="brush: javascript">
var fonctionsACharger=[];
bindReady(function() {
  for (var i=0; i&lt;functionsACharger.length;i++) functionsACharger[i]();
});

/* on ajoute les fonctions à charger dans notre tableau */
fonctionsACharger.push(function() {
  /* première chose à faire */
});
fonctionsACharger.push(function() {
  alert("Toutes les fonctions sont maintenant chargées !");
});
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=aCbdM_xvcNE:4PUUjlzDPRU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=aCbdM_xvcNE:4PUUjlzDPRU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=aCbdM_xvcNE:4PUUjlzDPRU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/aCbdM_xvcNE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/01/23/domcontentloaded-pour-cross-browser-multi-navigateurs-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/01/23/domcontentloaded-pour-cross-browser-multi-navigateurs-javascript/</feedburner:origLink></item>
		<item>
		<title>IE9 en mode standard et Sharepoint… bug du bouton OK [Sharepoint]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/zx_sUxdLwf4/</link>
		<comments>http://blog.kodono.info/wordpress/2012/01/18/ie9-en-mode-standard-et-sharepoint-2003-bug-du-bouton-ok-sharepoint/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 17:59:16 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IE9]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=892</guid>
		<description><![CDATA[[niveau expert] Si vous passez IE9 en mode standard avec Sharepoint vous risquez d&#8217;avoir le bouton OK des formulaires qui ne fonctionne plus&#8230; Après avoir debuggué le bazar j&#8217;ai découvert qu&#8217;un des fichiers (&#171;&#160;/_layouts/1033/form.js&#160;&#187;) Javascript utilise document.frames() au lieu de document.frames[]. Si cela fonctionne sur les anciens navigateurs, ce n&#8217;est plus le cas pour IE9 [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau expert]</p>
<p>Si vous passez IE9 en mode standard avec Sharepoint vous risquez d&#8217;avoir le bouton OK des formulaires qui ne fonctionne plus&#8230; Après avoir debuggué le bazar j&#8217;ai découvert qu&#8217;un des fichiers (&laquo;&nbsp;/_layouts/1033/form.js&nbsp;&raquo;) Javascript utilise <code>document.frames()</code> au lieu de <code>document.frames[]</code>. Si cela fonctionne sur les anciens navigateurs, ce n&#8217;est plus le cas pour IE9 en mode standard, du coup il retourne un &laquo;&nbsp;Function expected&nbsp;&raquo;.</p>
<p>Il y a deux fonctions incriminées <code>RTE_GetEditorIFrame()</code> et <code>RTE_DD_GetMenuFrame()</code>. Il suffit d&#8217;utiliser les commentaires conditionnels pour indiquer que lorsqu&#8217;on utilise IE9 alors on remplace ces deux fonctions par :</p>
<pre class="brush: javascript">function RTE_GetEditorIFrame(strBaseElementID)
{
	var ifmEditor=null;
	var doc=document;
	if ((null !=doc.frames) &#038;&#038; (doc.frames.length==0) &#038;&#038; (doc.parentWindow.parent !=null))
	{
		doc=doc.parentWindow.parent.document;
	}
	if ((null !=doc.frames) &#038;&#038; (doc.frames.length > 0))
	{
		var ifmContainer=doc.getElementById(RTE_GetEditorIFrameID(strBaseElementID));
		if (ifmContainer !=null)
		{
			ifmEditor=doc.frames[RTE_GetEditorIFrameID(strBaseElementID)];
		}
	}
	return ifmEditor;
}
function RTE_DD_GetMenuFrame()
{
	var ifmMenu=null;
	var elemMenu=RTE_DD_GetMenuElement();
	if (null !=elemMenu)
	{
		if (document.frames.length > 0)
		{
			ifmMenu=document.frames[g_strRTETextEditorPullDownMenuID];
		}
		else
		{
			if ((document.parentWindow !=null) &#038;&#038; (document.parentWindow.frames !=null))
			{
				ifmMenu=document.parentWindow.parent.document.frames[g_strRTETextEditorPullDownMenuID];
			}
		}
	}
	if (null==ifmMenu)
	{
		if (g_fRTEFirstCallToGetMenu)
		{
			g_fRTEFirstCallToGetMenu=false;
			return null;
		}
	}
	return ifmMenu;
}
</pre>
<p>Ainsi <code>document.frames</code> est bien appelé comme un objet et non comme une fonction !</p>
<p><strong>A noter cependant qu&#8217;il existe des tonnes de bugs avec IE9 et Sharepoint 2003/2007. Il est donc conseillé d&#8217;utiliser le mode de compatibilité en IE8</strong> si vous ne voulez pas passer des heures à trouver l&#8217;origine des problèmes et à les corriger :</p>
<pre class="brush: html">&lt;meta http-equiv="X-UA-Compatible" content="IE=8"/></pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=zx_sUxdLwf4:M3TwE8t2Ofw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=zx_sUxdLwf4:M3TwE8t2Ofw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=zx_sUxdLwf4:M3TwE8t2Ofw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/zx_sUxdLwf4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/01/18/ie9-en-mode-standard-et-sharepoint-2003-bug-du-bouton-ok-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/01/18/ie9-en-mode-standard-et-sharepoint-2003-bug-du-bouton-ok-sharepoint/</feedburner:origLink></item>
		<item>
		<title>Appeler un lien relatif dans une masterpage [Sharepoint]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/lBB4LazDidQ/</link>
		<comments>http://blog.kodono.info/wordpress/2012/01/18/appeler-un-lien-relatif-dans-une-masterpage-sharepoint/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 09:51:31 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=888</guid>
		<description><![CDATA[J&#8217;ai eu le cas où j&#8217;avais besoin d&#8217;appeler un fichier Javascript à la racine de tous mes sites Sharepoint (et donc avec un lien relatif au site consulté). Pour cela j&#8217;ai modifié la masterpage en y ajoutant la ligne suivante : &#60;script type="text/javascript" src='&#60;asp:Literal runat="server" Text="&#60;% $SPUrl:~Site/customized.js %>">&#60;/asp:Literal>'> C&#8217;est donc &#60;asp:Literal runat="server" Text="&#60;% $SPUrl:~Site/customized.js %>">&#60;/asp:Literal> [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai eu le cas où j&#8217;avais besoin d&#8217;appeler un fichier Javascript à la racine de tous mes sites Sharepoint (et donc avec un lien relatif au site consulté). Pour cela j&#8217;ai modifié la masterpage en y ajoutant la ligne suivante :</p>
<pre class="brush: html">&lt;script type="text/javascript" src='&lt;asp:Literal runat="server" Text="&lt;% $SPUrl:~Site/customized.js %>">&lt;/asp:Literal>'></script></pre>
<p>C&#8217;est donc <code>&lt;asp:Literal runat="server" Text="&lt;% $SPUrl:~Site/customized.js %>">&lt;/asp:Literal></code> qui fait tout le boulot. Et bien sûr vous pouvez utiliser <code>asp:Literal</code> pour d&#8217;autres appels de fichiers !</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=lBB4LazDidQ:kY_k_NBCAGk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=lBB4LazDidQ:kY_k_NBCAGk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=lBB4LazDidQ:kY_k_NBCAGk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/lBB4LazDidQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/01/18/appeler-un-lien-relatif-dans-une-masterpage-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/01/18/appeler-un-lien-relatif-dans-une-masterpage-sharepoint/</feedburner:origLink></item>
		<item>
		<title>Define the preview image for your masterpage [Sharepoint]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/LZEIVX8CUuM/</link>
		<comments>http://blog.kodono.info/wordpress/2012/01/17/define-the-preview-image-for-your-masterpage-sharepoint/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 17:26:57 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=883</guid>
		<description><![CDATA[You can easily define the preview image for your masterpage : just go to the Master Page Gallery (e.g. : http://your.server.com/your/root/dir/_catalogs/masterpage/) and find your masterpage in the collection. Then move your mouse hover to have the downward arrow that appears to open its context menu. Choose &#171;&#160;Edit Properties&#160;&#187;, and you&#8217;ll see a Preview Image section [...]]]></description>
			<content:encoded><![CDATA[<p>You can easily define the preview image for your masterpage : just go to the Master Page Gallery (e.g. : <a href="http://your.server.com/your/root/dir/_catalogs/masterpage/" title="Example link">http://your.server.com/your/root/dir/_catalogs/masterpage/</a>) and find your masterpage in the collection. Then move your mouse hover to have the downward arrow that appears to open its context menu. Choose &laquo;&nbsp;Edit Properties&nbsp;&raquo;, and you&#8217;ll see a Preview Image section <img src='http://blog.kodono.info/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>For your information, the image should <strong>216px × 160px</strong> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=LZEIVX8CUuM:fxVZs9De-fM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=LZEIVX8CUuM:fxVZs9De-fM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=LZEIVX8CUuM:fxVZs9De-fM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/LZEIVX8CUuM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/01/17/define-the-preview-image-for-your-masterpage-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/01/17/define-the-preview-image-for-your-masterpage-sharepoint/</feedburner:origLink></item>
		<item>
		<title>Convertir un MKV en AVI [vidéo]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/6Sfs3oRSw04/</link>
		<comments>http://blog.kodono.info/wordpress/2012/01/10/convertir-un-mkv-en-avi-video/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 09:26:30 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Application]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Vidéo]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[convertisseur]]></category>
		<category><![CDATA[traitement vidéo]]></category>
		<category><![CDATA[vidéo]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=864</guid>
		<description><![CDATA[[niveau débutant] Après avoir essayé un tas de logiciels différents, je viens enfin de découvrir celui qui fonctionne et qui est simple : AviDemux Pour se faire, ouvrez simplement votre fichier mkv dans AviDemux. Vous aurez certainement un message qui indique « H.264 détecté : Si le fichier utilise des images-B comme référence, cela peut [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau débutant]</p>
<p>Après avoir essayé un tas de logiciels différents, je viens enfin de découvrir celui qui fonctionne et qui est simple : <a href="http://avidemux.berlios.de/" title="AviDemux" target="_blank">AviDemux</a></p>
<p>Pour se faire, ouvrez simplement votre fichier mkv dans AviDemux. Vous aurez certainement un message qui indique « H.264 détecté : Si le fichier utilise des images-B comme référence, cela peut conduire à un plantage ou à des saccades. Avidemux peut utiliser un autre mode qui est plus stable mais vous perdrez la précision de l&#8217;image. Voulez-vous utiliser ce mode ? » :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120110_avidemux_2.png" alt="Message d&#039;alerte" title="Message d&#039;alerte" width="514" height="211" class="aligncenter size-full wp-image-866" /></p>
<p>Je réponds &laquo;&nbsp;<strong>Non</strong>&nbsp;&raquo; sans voir aucun soucis par la suite.<br />
Maintenant il va sûrement vous demander de <strong>reconstruire l&#8217;index</strong> : <strong>acceptez</strong>.<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120110_avidemux_3.png" alt="" title="Reconstruire l&#039;index ?" width="478" height="155" class="aligncenter size-full wp-image-867" /></p>
<p>Ensuite, dans la colonne de gauche, pour vidéo choisissez le format souhaité (ici on prendra <strong>Xvid</strong>), puis pour l&#8217;audio l&#8217;encodage voulu (ici on prendra <strong>MP3</strong>) :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120110_avidemux.png" alt="Les boites de dialogue pour les encodages" title="Les encodages" width="174" height="333" class="aligncenter size-full wp-image-865" /></p>
<p>Il faut alors cliquer sur &laquo;&nbsp;Filtres&nbsp;&raquo; dans la section audio pour choisir le mixer &laquo;&nbsp;Stéréo&nbsp;&raquo; :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120110_avidemux_4.png" alt="" title="Choisir le mixer Stéréo" width="530" height="375" class="aligncenter size-full wp-image-868" /></p>
<p>Sans ça vous aurez l&#8217;erreur « Codec Error : The number of channels is greater than what the selected audio codec can do. Either change codec or use the mixer filter to have less channels. » :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120110_avidemux_5.png" alt="" title="Message d&#039;erreur lorsque le mixer stéréo n&#039;est pas choisi" width="490" height="166" class="aligncenter size-full wp-image-869" /></p>
<p>Et il ne vous reste plus qu&#8217;à faire &laquo;&nbsp;Fichier -&gt; Enregistrer une vidéo&nbsp;&raquo; et <strong>le tour est joué</strong> !</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=6Sfs3oRSw04:vmse-lDWxrg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=6Sfs3oRSw04:vmse-lDWxrg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=6Sfs3oRSw04:vmse-lDWxrg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/6Sfs3oRSw04" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/01/10/convertir-un-mkv-en-avi-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/01/10/convertir-un-mkv-en-avi-video/</feedburner:origLink></item>
		<item>
		<title>Réduire la taille d’une photo JPG sans perdre en qualité [HOWTO]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/OreNnnmgaHg/</link>
		<comments>http://blog.kodono.info/wordpress/2012/01/02/reduire-la-taille-dune-photo-sans-perdre-en-qualite-howto/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 10:56:53 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=839</guid>
		<description><![CDATA[[niveau débutant] Il existe un moyen de compresser encore plus les photos JPG (et PNG, et GIF) grâce à une technique avancée de compression. Il va d&#8217;abord falloir installer quelques programmes, après quoi vous verrez que c&#8217;est extrêmement simple et utile au quotidien ! Pour faire cela nous allons utiliser le logiciel IrfanView (cliquez sur [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau débutant]</p>
<p>Il existe un moyen de compresser encore plus les photos JPG (et PNG, et GIF) grâce à une technique avancée de compression. Il va d&#8217;abord falloir installer quelques programmes, après quoi vous verrez que c&#8217;est extrêmement simple et utile au quotidien !</p>
<p>Pour faire cela nous allons utiliser le logiciel <a href="http://www.irfanview.com/" title="Lien vers le site IrfanView" target="_blank">IrfanView</a> (cliquez sur &laquo;&nbsp;<a href="http://www.irfanview.com/main_download_engl.htm" title="Download">Download</a>&nbsp;&raquo; dans la colonne de gauche puis sur le bouton &laquo;&nbsp;Download Now &#8211; Get it from CNET Download.com!&nbsp;&raquo;).<br />
Une fois téléchargé vous pouvez lancer l&#8217;installation : vous pouvez laisser les options par défaut, attention cependant parce qu&#8217;Irfan View va vous proposer d&#8217;installer la toolbar de Google, et je vous déconseille de le faire :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_1.png" alt="Fenêtre qui apparait durant l&#039;installation et qui propose l&#039;ajout de Google Toolbar, et il est surveillé en jaune le fait de décocher la case" title="Ne pas choisir l&#039;installation de Google Toolbar" width="477" height="466" class="aligncenter size-full wp-image-842" /></p>
<p>Maintenant il va s&#8217;agir d&#8217;ajouter le plugin RIOT (RIOT signifie <a href="http://luci.criosweb.ro/riot/" title="site de RIOT">Radical Image Optimization Tool</a>). Pour cela télécharger l&#8217;ensemble des plugins disponibles sur cette page : <a target="_blank" href="http://www.irfanview.com/plugins.htm" title="pluings pour IrfanView">http://www.irfanview.com/plugins.htm</a> (cliquez sur &laquo;&nbsp;Brothersoft.com &#8211; download IrfanView plugins&nbsp;&raquo; puis sur le bouton &laquo;&nbsp;Download now&nbsp;&raquo;).</p>
<p>Une fois le fichier téléchargé, double cliquez dessus pour lancer l&#8217;installation.</p>
<p>Il apparait qu&#8217;IrfanView ne fournit pas la dernière version du plugin RIOT, on va donc devoir la télécharger via <a href="http://download.criosweb.ro/download.php?sid=R-dll&#038;type=installer" title="Lien pour télécharger la dernière version de RIOT">http://download.criosweb.ro/download.php?sid=R-dll&#038;type=installer</a> (attention de bien cliquer sur le bouton gris qui est tout en haut et qui se nomme &laquo;&nbsp;Download RIOT DLL version&nbsp;&raquo;) :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_4.png" alt="Illustration du bouton de téléchargement" title="Bouton pour télécharger RIOT DLL version" width="254" height="23" class="aligncenter size-full wp-image-851" /></p>
<p>Cela a pour effet de télécharger un fichier .zip : faites un clic droit sur ce fichier nouvellement téléchargé puis choisissez &laquo;&nbsp;Extraire ici&nbsp;&raquo;, ou &laquo;&nbsp;Extraire tout&nbsp;&raquo;, ou &laquo;&nbsp;Dézipper ici&nbsp;&raquo; (cela peut varier selon la configuration de votre ordinateur).<br />
Une fois décompressé, vous allez trouver un fichier qui se nomme &laquo;&nbsp;Riot-plugin.exe&nbsp;&raquo;. Double cliquez dessus. Durant l&#8217;installation il devrait vous proposer d&#8217;installer le plugin pour IrfanView :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_5.png" alt="Fenêtre qui apparait durant l&#039;installation" title="Message durant l&#039;installation" width="502" height="391" class="aligncenter size-full wp-image-852" /><br />
Il va vous demander si vous souhaitez installer « DriveScanner 2011 »; choisissez <strong>Ne pas installer DriveScanner 2011</strong></p>
<p>C&#8217;est bon ! Toute l&#8217;installation est effectuée, on peut passer à la suite&#8230;</p>
<p>Il va falloir ouvrir IrfanView qui se trouve dans votre menu Démarrer :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_2.png" alt="Visualisation de IrfanView dans le menu Démarrer" title="Lancer Irfan View depuis le menu Démarrer" width="164" height="210" class="aligncenter size-full wp-image-846" /></p>
<p>Deux possibilités&#8230;.</p>
<h2>1. Si vous souhaitez modifier un ensemble de photos d&#8217;un coup</h2>
<p>Ouvrez une image au hasard (ça n&#8217;a pas d&#8217;importance ici) dans IrfanView, puis faites <code>File &gt; Save for web... (plugin)</code>. Si vous avez une alerte avec le message suivant, alors cliquez sur &laquo;&nbsp;No&nbsp;&raquo; :<br />
<a href="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_3.png"><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_3.png" alt="This file contains a high resolution image. RIOT can handle such images, but processing can be quite slow in this situation. Do you want to resize it first ? (recommanded) The original image won&#039;t be modified" title="Message d&#039;alerte pouvant apparaitre" width="580" class="aligncenter size-full wp-image-847" /></a></p>
<p>Cliquez sur &laquo;&nbsp;Batch&nbsp;&raquo; dans la barre :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_6.png" alt="Barre d&#039;outil du plugin où il faut cliquer sur Batch" title="Cliquez sur Batch" width="580" class="aligncenter size-full wp-image-853" /></p>
<p>Répondez &laquo;&nbsp;Yes&nbsp;&raquo; au message d&#8217;alerte qui apparait et dit &laquo;&nbsp;To use the Batch Optimizer I need to unload the current image. Proceed ?&nbsp;&raquo;.<br />
Cliquez sur le bouton &laquo;&nbsp;Add images&nbsp;&raquo; puis sélectionnez toutes les photos dont vous voulez réduire la taille.<br />
Ensuite choisissez où les photos compressés seront enregistrées en cliquant en bas à droite sur le bouton avec trois petits points :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_7.png" alt="Fenêtre du Batch avec les boutons à cliquer" title="Fenêtre du Batch" width="580" class="aligncenter size-full wp-image-854" /><br />
Vous pouvez éventuellement cliquer sur le bouton &laquo;&nbsp;Settings&nbsp;&raquo; et cocher les cases qui vous intéressent (dans mon cas, toutes !)<br />
Il ne reste plus qu&#8217;à cliquer sur &laquo;&nbsp;Start&nbsp;&raquo; et la magie opère&#8230;</p>
<p>Les nouvelles photos auront une taille entre 30% et 90% plus petite que les photos d&#8217;origine, sans perdre en qualité et en résolution <img src='http://blog.kodono.info/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>2. Si vous souhaitez modifier une seule image</h2>
<p>Ouvrez l&#8217;image que vous souhaitez optimiser dans IrfanView. Puis faites <code>File &gt; Save for web... (plugin)</code>. Si vous avez une alerte qui dit « This file contains a high resolution image. RIOT can handle such images, but processing can be quite slow in this situation. Do you want to resize it first ? (recommanded) The original image won&#039;t be modified », alors cliquez sur &laquo;&nbsp;No&nbsp;&raquo;.</p>
<p>Vous verrez ensuite un comparatif de votre image, avec en haut à droite la taille de la version optimisée : assurez vous que vous avez toujours un chiffre inférieur à la version d&#8217;origine !<br />
Selon le format de votre image (JPEG, GIF, PNG), vous avez plusieurs options en bas de la fenêtre.<br />
Prenons l&#8217;exemple d&#8217;une image PNG : pour la couleur je choisis &laquo;&nbsp;Optimal 256 colors&nbsp;&raquo;, puis dans &laquo;&nbsp;External optimizer&nbsp;&raquo; je choisis « OptiPNG o3 » (et je clique sur le check vert pour que OptiPNG soit utilisé), et enfin je coche &laquo;&nbsp;Best compression&nbsp;&raquo;.<br />
<a href="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_8.png" target="_blank"><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2012/01/20120102_irfanview_8-1024x580.png" alt="Les différentes options choisies dans la Fenêtre d&#039;optimisation" title="Fenêtre d&#039;optimisation" width="580" class="aligncenter size-large wp-image-855" /></a><br />
(cliquez sur l&#8217;image ci-dessus pour l&#8217;agrandir)</p>
<p><strong>Jouez sur les options pour faire varier la taille.</strong></p>
<p>Il ne reste plus qu&#8217;à sauver votre travail, et voilà !</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=OreNnnmgaHg:huKTjh4ZB6s:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=OreNnnmgaHg:huKTjh4ZB6s:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=OreNnnmgaHg:huKTjh4ZB6s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/OreNnnmgaHg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2012/01/02/reduire-la-taille-dune-photo-sans-perdre-en-qualite-howto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2012/01/02/reduire-la-taille-dune-photo-sans-perdre-en-qualite-howto/</feedburner:origLink></item>
		<item>
		<title>Mettre à jour Debian Lenny vers Squeeze [retour d'expérience]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/Qufyhv4ctI4/</link>
		<comments>http://blog.kodono.info/wordpress/2011/12/29/mettre-a-jour-debian-lenny-vers-squeeze-retour-dexperience/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 00:24:33 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=827</guid>
		<description><![CDATA[J&#8217;ai un serveur dédié chez OVH (un &#171;&#160;Kimsufi&#160;&#187;) et j&#8217;ai voulu faire la mise à jour de Debian Lenny vers Squeeze. Vous trouverez toutes les informations nécessaires sur cette page : http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.fr.html. Je vous conseille de suivre chaque étape très attentivement. Attention car chez OVH on peut se retrouver avec une modification, que j&#8217;explique un [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai un serveur dédié chez OVH (un &laquo;&nbsp;Kimsufi&nbsp;&raquo;) et j&#8217;ai voulu faire la mise à jour de Debian Lenny vers Squeeze.</p>
<p>Vous trouverez toutes les informations nécessaires sur cette page : <a href="http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.fr.html">http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.fr.html</a>. Je vous conseille de suivre chaque étape très attentivement.</p>
<p>Attention car chez OVH on peut se retrouver avec une modification, que j&#8217;explique un peu plus bas, à faire dans /etc/init.d/fixudev sur les headers manquants (<a href="http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html">détails sur les headers des fichiers de init.d</a>)&#8230;. vous devrez aussi vérifier les autres scripts que vous avez pu mettre vous-même dans /etc/init.d pour vous assurer qu&#8217;ils possèdent tous un en-tête sinon vous aurez un message d&#8217;erreur durant la mise à jour.</p>
<p>Voici un bref résumé des étapes à suivre (tout ce qui commence par # est une commande à taper) :</p>
<pre class="brush: vb"># apt-get update &#038;&#038; apt-get upgrade
' une fois que votre système est à jour, vérifier que vous avez bien la dernière version du noyau mise à disposition par OVH
' pour cela visitez http://guide.ovh.com/KernelInstall qui explique ce qu'il faut faire (deux fichiers à télécharger puis un update-grub et un reboot!)
' je vous conseille les versions avec grsec pour plus de sécurité (elles sont notées "-grs-")
' si vous n'êtes pas sûr du noyau que vous avez actuellement, vous pouvez le savoir en tapant:
# uname -a
' maintenant il va falloir faire une sauvegarde de votre machine, et en particulier :
' le répertoire /etc/
' le répertoire /home/
' le répertoire qui contient vos sites web
' vos bases SQL
' ensuite, comme indiqué dans le tutoriel, vous devez sauvegarder certains éléments qui pourraient nous servir en cas de problème :
# mkdir svg_special; cp -R /var/lib/dpkg svg_special/; cp /var/lib/apt/extended_states svg_special/; dpkg --get-selections "*" > svg_special/dpkg_get_selection
' avant de continuer, il va falloir bidouiller le fichier /etc/init.d/fixudev puisqu'il n'est pas conforme et va vous créer une erreur dans la suite
' voici par quoi vous devez le remplacer :</pre>
<pre class="brush: bash">#! /bin/sh
### BEGIN INIT INFO
# Provides:          fixudev
# Required-Start:
# Required-Stop:
# Default-Start:     S
# Default-Stop:
# Short-Description: remove fixed relation between MAC address and name of network device (00:15:f2:90:3e:a0 -> eth0)
# Description:       remove fixed relation between MAC address and name of network device (00:15:f2:90:3e:a0 -> eth0)
### END INIT INFO

case "$1" in
  start)
    # example:
    # # PCI device 0x1106:0x3065 (via-rhine)
    # SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:15:f2:90:3e:a0", NAME="eth0"

    for interface in `ifconfig -a | grep -e "^eth"|cut -d' ' -f1`; do
            MAC=`ifconfig $interface | grep -e "^$interface"|cut -d' ' -f11 | sed s/\:/\\\\\\\\:/g`
    # removes actual mac
    #       for file in `grep -i "$MAC" /etc/udev/rules.d/*|sort|uniq|cut -d':' -f1`; do
    #               perl -ni -e "print unless /$MAC/" ${file} &#038;&#038; \
    #                       echo "removed HW address ${MAC} from ${file} (${interface})"
    #       done

    # removes *ANY* mac
            for file in `grep -re "^SUBSYSTEM==\"net\".*NAME=\"${interface}\"$" /etc/udev/|sort|uniq|cut -d':' -f1`; do
                    sed -i -e "/^SUBSYSTEM==\"net\".*NAME=\"${interface}\"$/d" ${file} &#038;&#038; \
                            echo "removed HW address from ${file} (${interface})"
            done
    done
    ;;
  stop)
    ;;

  status)
    echo "Nothing here";
    ;;

  restart|reload)
    $0 start
    ;;
  *)
    echo "Usage: fixudev start"
    exit 1
esac
exit 1</pre>
<pre class="brush: vb">
' maintenant il est conseillé d'utiliser screen pour pouvoir se reconnecter (avec screen -r) à en cas de déconnexion
# screen
' il existe un bug avec splashy c'est pourquoi il est dit de le purger
# apt-get purge splashy
' si la commande ci-dessous ne retourne rien, alors c'est bon, mais dans tous les cas consultez http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.fr.html#package-status
# dpkg --audit
' maintenant il faut remplacer tous les "lenny" de /etc/apt/sources.list par des "squeeze"
' voici ce que ça donne chez moi :
' deb http://ftp.fr.debian.org/debian squeeze main non-free
' deb ftp://mir1.ovh.net/debian/ squeeze main contrib non-free
' deb-src ftp://mir1.ovh.net/debian/ squeeze main contrib non-free
' deb http://security.debian.org/ squeeze/updates main contrib non-free
' deb-src http://security.debian.org/ squeeze/updates main contrib non-free

' il est recommandé d'utiliser script qui permettra de sauvegarder ce qu'on va faire maintenant (qui pourra être utile en cas de problème)
# script -t 2>/root/upgrade-squeeze1.time -a /root/upgrade-squeeze1.script
' on commence par mettre à jour les listes des paquets
# apt-get update
' on va vérifier qu'on a la place suffisante (un message explicite apparait sinon)
# apt-get -o APT::Get::Trivial-Only=true dist-upgrade
' on va maintenant d'abord faire une mise à jour minimale
# apt-get upgrade
' là il va vous questionner... en général choisissez l'option par défaut si vous ne savez pas quoi répondre
' à noter qu'un nouveau php.ini va être créer, et il est conseillé d'y jeter un oeil pour voir les nouvelles options

' une fois cette étape un peu longue terminée, il faut installer udev :
# apt-get install udev
' maintenant on teste pour voir si tout s'est bien passé
# reboot

' [...]

' normalement le serveur redémarre sans problème
' on recommence à lancer screen et on sauvegarde les étapes suivantes avec script
# screen
# script -t 2>/root/upgrade-squeeze2.time -a /root/upgrade-squeeze2.script
' maintenant on peut faire une mise à jour complète !
# apt-get dist-upgrade

' chez moi il a supprimé mysql et j'ai été obligé de le réinstaller :
# apt-get install mysql-server mysql-client php5-mysql
' un dernier reboot pour s'assurer que tout fonctionne normalement
# reboot
' et enfin on va nettoyer tous les paquets
# apt-get autoremove</pre>
<p>Si vous tombez sur ce genre de message :</p>
<blockquote><p>Impossible de migrer vers le nouveau système de démarrage<br />
Des tests ont montré que des problèmes existent dans le système de démarrage qui empêchent la migration vers la nouvelle séquence de démarrage :<br />
insserv: warning: script &#8216;XXXX&#8217; missing LSB tags and overrides, insserv: warning: script &#8216;YYYY&#8217; missing LSB tags and overrides,<br />
Si le problème indiqué concerne une modification locale, vous devrez le réparer vous-même. Si c&#8217;est un bogue dans un paquet, il devrait être signalé dans le système de suivi des bogues (BTS) et corrigé dans le paquet. Veuillez lire<br />
« http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot » pour plus d&#8217;informations sur les méthodes de résolution des problèmes empêchant la transition.<br />
Une fois que les problèmes ont été corrigés, vous pouvez réessayer la migration avec la commande « dpkg-reconfigure sysv-rc ».</p></blockquote>
<p>C&#8217;est que vous devez aller modifier manuellement les fichiers correspondant à XXXX et YYYY qui se trouvent dans <code>/etc/init.d/</code>. L&#8217;origine est que l&#8217;en-tête spécial est manquante, ainsi que les fonctions start/stop.<br />
Le squelette de votre fichier devrait être :</p>
<pre class="brush: bash">
#! /bin/sh
### BEGIN INIT INFO
# Provides:          nom de votre script
# Required-Start:
# Required-Stop:
# Default-Start:     S
# Default-Stop:
# Short-Description: Une description du script
# Description:       Une description du script
### END INIT INFO

case "$1" in
  start)
    # votre code
    echo "XXXX started!"
    ;;
  stop)
    echo "XXXX stopped..."
    ;;

  status)
    echo "Nothing here";
    ;;

  restart|reload)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: XXXX {start|stop|restart|status}"
    exit 1
esac
exit 1</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=Qufyhv4ctI4:n5BEUEg8jls:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=Qufyhv4ctI4:n5BEUEg8jls:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=Qufyhv4ctI4:n5BEUEg8jls:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/Qufyhv4ctI4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/12/29/mettre-a-jour-debian-lenny-vers-squeeze-retour-dexperience/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/12/29/mettre-a-jour-debian-lenny-vers-squeeze-retour-dexperience/</feedburner:origLink></item>
		<item>
		<title>Si vous avez l’erreur « The security validation for this page is invalid » [Sharepoint]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/VDxYUlDaFfM/</link>
		<comments>http://blog.kodono.info/wordpress/2011/12/23/si-vous-avez-lerreur-the-security-validation-for-this-page-is-invalid-sharepoint/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 11:14:34 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[error message]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=818</guid>
		<description><![CDATA[&#171;&#160;The security validation for this page is invalid. Click Back in your Web browser, refresh the page, and try your operation again.&#160;&#187; Si Sharepoint vous donne ce joli message d&#8217;erreur lorsque vous communiquez avec un de ses web services, alors il est possible que vous ayez oublié d&#8217;ajouter un header &#171;&#160;SOAPAction&#160;&#187; avec le nom du [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&laquo;&nbsp;The security validation for this page is invalid. Click Back in your Web browser, refresh the page, and try your operation again.&nbsp;&raquo;</p></blockquote>
<p>Si Sharepoint vous donne ce joli message d&#8217;erreur lorsque vous communiquez avec un de ses web services, alors il est possible que vous ayez oublié d&#8217;ajouter un <em>header</em> &laquo;&nbsp;SOAPAction&nbsp;&raquo; avec le nom du service associé.</p>
<p>Prenons l&#8217;exemple du web service <em>lists.asmx</em> et de l&#8217;action &laquo;&nbsp;UpdateListItems&nbsp;&raquo;. Si vous allez sur l&#8217;URL suivante <a href="http://votre_sharepoint/_vti_bin/lists.asmx?op=UpdateListItem">http://votre_sharepoint/_vti_bin/lists.asmx?op=UpdateListItem</a>s vous verrez la SOAPAction qu&#8217;il faut définir (cliquez pour agrandir) :<br />
<a href="http://blog.kodono.info/wordpress/wp-content/uploads/2011/12/20111223_Sharepoint_Web_Service.png"><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/12/20111223_Sharepoint_Web_Service-300x166.png" alt="Copie d&#039;écran du web service lists.asmx" title="20111223_Sharepoint_Web_Service" width="300" height="166" class="aligncenter size-medium wp-image-819" /></a></p>
<p>Dans l&#8217;exemple ci-dessus il faut donc définir l&#8217;header &laquo;&nbsp;SOAPAction&nbsp;&raquo; avec la valeur &laquo;&nbsp;http://schemas.microsoft.com/sharepoint/soap/UpdateListItems&nbsp;&raquo;.<br />
Si vous utilisez l&#8217;AJAX de jQuery cela donnera quelque chose comme ça :</p>
<pre class="brush: javascript">
jQuery.ajax({
        url: "http://your_sharepoint/_vti_bin/lists.asmx",
        type: "POST",
        dataType: "xml",
        data: soapEnv,
        beforeSend: function(xhr) { xhr.setRequestHeader('SOAPAction', 'http://schemas.microsoft.com/sharepoint/soap/UpdateListItems'); },
        contentType: "text/xml; charset=\"utf-8\""
    });
</pre>
<p>Si vous utilisez l&#8217;add-on Firefox <a href="https://addons.mozilla.org/fr/firefox/addon/poster/">Poster</a>, alors utilisez l&#8217;onglet &laquo;&nbsp;Headers&nbsp;&raquo;.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=VDxYUlDaFfM:7Cd3532SxhM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=VDxYUlDaFfM:7Cd3532SxhM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=VDxYUlDaFfM:7Cd3532SxhM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/VDxYUlDaFfM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/12/23/si-vous-avez-lerreur-the-security-validation-for-this-page-is-invalid-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/12/23/si-vous-avez-lerreur-the-security-validation-for-this-page-is-invalid-sharepoint/</feedburner:origLink></item>
		<item>
		<title>Retrouver les styles CSS appliqués à un élément du DOM [Javascript]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/b85QodX7y0w/</link>
		<comments>http://blog.kodono.info/wordpress/2011/12/22/retrouver-les-styles-css-appliques-a-un-element-du-dom-javascript/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 13:55:31 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=814</guid>
		<description><![CDATA[[niveau intermédiaire] Voici une fonction (qui mériterait quelques optimisations) qui va vous permettre de trouver tous les styles appliqués à un élément : function getStyle(e) { var arr=(typeof window.getComputedStyle == "function" ? window.getComputedStyle(e) : e.currentStyle ); // IE will use the "currentStyle" var res=[]; $.each(arr, function(k,v) { // ici j'utilise le "each" de jQuery simplement [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau intermédiaire]</p>
<p>Voici une fonction (qui mériterait quelques optimisations) qui va vous permettre de trouver tous les styles appliqués à un élément :</p>
<pre class="brush: javascript">
function getStyle(e) {
    var arr=(typeof window.getComputedStyle == "function" ? window.getComputedStyle(e) : e.currentStyle ); // IE will use the "currentStyle"
    var res=[];
    $.each(arr, function(k,v) { // ici j'utilise le "each" de jQuery simplement parce que c'est plus pratique/simple que le for-in
      if (typeof window.getComputedStyle == "undefined") {
        var kNoCamel=k.replace(/([A-Z])/g, "-$1").toLowerCase(); // sous IE on a des noms de propriétés au format camelCase
        k=v;
        v=kNoCamel;
      }
      if (v.charAt(0) != "-") {
        var vSlice = v.slice(0,7);
        // ici on va chercher à conserver que quelques propriétés CSS bien particulières
        var ok = (vSlice=="border-"||vSlice=="margin-"||vSlice=="padding");
        switch(v) {
          case "background-color":
          case "color":
          case "font-style":
          case "font-weight":
          case "font-size":
          case "font-family":
          case "width":
          case "height":
          case "vertical-align":
          case "text-align":
          case "text-decoration": ok=true;
        }
        if (ok) {
          if (typeof window.getComputedStyle == "function") {
            var vCamel=(v.search("-") != -1 ? v.replace(/(-)(.)/g,function(c) { return c[1].toUpperCase();}) : v); // pour trouver les valeurs associés aux propriétés on se change en camelCase
            res.push(v+":"+arr[vCamel]);
          } else {
            res.push(v+":"+k);
          }
      }
    }
  });
  return res.join(";");
};

alert(getStyle(document.getElementById('test')));
/* qui retournera par exemple:
background-color:transparent;border-bottom-color:rgb(128, 128, 128);
border-bottom-left-radius:0px;border-bottom-right-radius:0px;
border-bottom-style:none;border-bottom-width:0px;border-collapse:collapse;
border-left-color:rgb(128, 128, 128);border-left-style:none;
border-left-width:1px;border-right-color:rgb(128, 128, 128);
border-right-style:none;border-right-width:0px;border-spacing:2px 2px;
border-top-color:rgb(128, 128, 128);border-top-left-radius:0px;
border-top-right-radius:0px;border-top-style:none;border-top-width:1px;
color:rgb(0, 0, 0);font-family:verdana;font-size:16px;font-style:normal;
font-weight:400;height:3738px;margin-bottom:0px;margin-left:0px;margin-right:0px;
margin-top:0px;padding-bottom:0px;padding-left:0px;padding-right:0px;
padding-top:0px;text-align:start;text-decoration:none;vertical-align:baseline;width:1756px
*/
</pre>
<p><strong>Edit:</strong> J&#8217;ai découvert qu&#8217;il existe un plugin pour jQuery qui fait un peu près la même chose (sauf qu&#8217;il retourne TOUTES les propriétés et qu&#8217;il est bien <a href="http://jsperf.com/copycss-vs-mine" title="Test comparatif fait sur jsperf.com">plus lent à l&#8217;exécution</a>) : <a href="http://upshots.org/javascript/jquery-copy-style-copycss" title="jQuery CopyCSS plugin">http://upshots.org/javascript/jquery-copy-style-copycss</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=b85QodX7y0w:uVNEDKP00qU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=b85QodX7y0w:uVNEDKP00qU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=b85QodX7y0w:uVNEDKP00qU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/b85QodX7y0w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/12/22/retrouver-les-styles-css-appliques-a-un-element-du-dom-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/12/22/retrouver-les-styles-css-appliques-a-un-element-du-dom-javascript/</feedburner:origLink></item>
		<item>
		<title>Create a file into Sharepoint document librairies with the Copy.asmx web service [Javascript]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/a5BNVe896Uk/</link>
		<comments>http://blog.kodono.info/wordpress/2011/12/21/create-a-file-into-sharepoint-document-librairies-with-the-copy-asmx-web-service-javascript/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 16:33:19 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=808</guid>
		<description><![CDATA[This is the English version of my previous article Did you know it&#8217;s possible to create a file from scratch and to add it into a shared documents library of Sharepoint, and only with Javascript ? To do it we&#8217;ll use the &#171;&#160;copy.asmx&#160;&#187; web service with the &#171;&#160;CopyIntoItems&#160;&#187; function. If you check http://your_sharepoint/_vti_bin/copy.asmx?op=CopyIntoItems you&#8217;ll see [...]]]></description>
			<content:encoded><![CDATA[<div lang="en"><strong><em>This is the English version of my previous article</em></strong></p>
<p>Did you know it&#8217;s possible to create a file from scratch and to add it into a shared documents library of Sharepoint, and only with Javascript ?</p>
<p>To do it we&#8217;ll use the &laquo;&nbsp;copy.asmx&nbsp;&raquo; web service with the &laquo;&nbsp;CopyIntoItems&nbsp;&raquo; function.<br />
If you check <strong>http://your_sharepoint/_vti_bin/copy.asmx?op=CopyIntoItems</strong> you&#8217;ll see that we have several details about the &laquo;&nbsp;CopyIntoItems&nbsp;&raquo; function. Unfortunately it&#8217;s very difficult to find any information regarding this on the Web, and specially for Javascript&#8230;</p>
<p>So, here is the solution to create a file, e.g. an Excel file (.xls) with a regular HTML table, and we&#8217;re going to save it to this library: &laquo;&nbsp;http://your_sharepoint/Shared Documents/&nbsp;&raquo; (Note: I&#8217;m using jQuery for the AJAX requests).</p>
<pre class="brush: javascript">
// The file content must be encoded into Base64. To do it I use the function available on my blog (http://blog.kodono.info/wordpress/2011/07/27/midi-code-encoder-decoder-en-base64-pour-javascript-programmation/)
function encode_b64(a,b,c,d,e,f){b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";c='=';for(d=f='';e&#038;=3,a.charAt(d++)||(b=';=',e);f+=b.charAt(63&#038;c>>++e*2))c=c&lt;&lt;8|a.charCodeAt(d-=!e);return f}

// "Upload" is the name of our function to do the job
// txtContent is a plain text, the content of our file
// destinationUrl is the full path URL to the document library (with the filename included)
function Upload(txtContent, destinationUrl) {
    var jsStream = encode_b64(txtContent);
    var soapEnv  = &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;utf-8\&quot;?>&quot;
                  +&quot;&lt;soap:Envelope xmlns:xsi=\&quot;http://www.w3.org/2001/XMLSchema-instance\&quot; xmlns:xsd=\&quot;http://www.w3.org/2001/XMLSchema\&quot; xmlns:soap=\&quot;http://schemas.xmlsoap.org/soap/envelope/\&quot;>&quot;
                  +&quot;&lt;soap:Body>&quot;
                  +&quot;&lt;CopyIntoItems xmlns=\&quot;http://schemas.microsoft.com/sharepoint/soap/\&quot;>&quot;
                  +&quot;&lt;SourceUrl>http://null&lt;/SourceUrl>&quot;
                  +&quot;&lt;DestinationUrls>&lt;string>&quot;+destinationUrl+&quot;&lt;/string>&lt;/DestinationUrls>&quot;
                  +&quot;&lt;Fields>&lt;FieldInformation Type=&apos;File&apos; />&lt;/Fields>&quot;
                  +&quot;&lt;Stream>&quot;+jsStream+&quot;&lt;/Stream>&quot;
                  +&quot;&lt;/CopyIntoItems>&quot;
                  +&quot;&lt;/soap:Body>&quot;
                  +&quot;&lt;/soap:Envelope>&quot;;
    jQuery.ajax({
        url: &quot;http://your_sharepoint/_vti_bin/copy.asmx&quot;,
        type: &quot;POST&quot;,
        dataType: &quot;xml&quot;,
        data: soapEnv,
        beforeSend: function(xhr) { xhr.setRequestHeader(&apos;SOAPAction&apos;, &apos;http://schemas.microsoft.com/sharepoint/soap/CopyIntoItems&apos;); },
        contentType: &quot;text/xml; charset=\&quot;utf-8\&quot;&quot;
    });
}

Upload("&lt;html>&lt;table>&lt;tr>&lt;th>Colonne 1&lt;/th>&lt;th>Colonne B&lt;/th>&lt;/tr>&lt;tr>&lt;td>Total:&lt;/td>&lt;td>1500&lt;/td>&lt;/tr>&lt;/table>&lt;/html>","http://your_sharepoint/Shared Documents/test.xls");
</pre>
<p>Then, when you&#8217;ll click on the new &laquo;&nbsp;test.xls&nbsp;&raquo; file, your web browser will want to open it with Excel. MS Excel should show you a warning message, but just click YES and you&#8217;ll see your table inside the sheet !</p>
<p>Of course you can create any type of files (.txt, .jpg, .doc, &#8230;) and with any content.</p>
<p>Related links:</p>
<ul>
<li><a href="http://blog.stuartwhiteford.com/?p=86">http://blog.stuartwhiteford.com/?p=86</a></li>
<li><a href="http://stackoverflow.com/questions/7976329/sharepoint-copyintoitems-soap-message-in-objective-c">http://stackoverflow.com/questions/7976329/sharepoint-copyintoitems-soap-message-in-objective-c</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/copy.copy.copyintoitems%28v=office.12%29.aspx">http://msdn.microsoft.com/en-us/library/copy.copy.copyintoitems%28v=office.12%29.aspx</a></li>
</ul>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=a5BNVe896Uk:ZIypim7Svag:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=a5BNVe896Uk:ZIypim7Svag:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=a5BNVe896Uk:ZIypim7Svag:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/a5BNVe896Uk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/12/21/create-a-file-into-sharepoint-document-librairies-with-the-copy-asmx-web-service-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/12/21/create-a-file-into-sharepoint-document-librairies-with-the-copy-asmx-web-service-javascript/</feedburner:origLink></item>
		<item>
		<title>Créer un fichier dans une librairie Sharepoint grâce au web service Copy.asmx [Javascript]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/uUgWBNPiFB8/</link>
		<comments>http://blog.kodono.info/wordpress/2011/12/21/creer-un-fichier-dans-une-librairie-sharepoint-grace-au-web-service-en-javascript/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 16:12:45 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=792</guid>
		<description><![CDATA[Saviez-vous qu&#8217;il est possible de créer un document de toute pièce et de l&#8217;ajouter dans une librairie (&#171;&#160;Shared Document&#160;&#187;) de Sharepoint seulement avec Javascript ? Pour cela nous utiliserons le web service &#171;&#160;copy.asmx&#160;&#187; avec la fonction &#171;&#160;CopyIntoItems&#160;&#187;. Si vous pointez vers l&#8217;adresse http://votre_sharepoint/_vti_bin/copy.asmx?op=CopyIntoItems vous remarquerez qu&#8217;on vous fournit un certain nombre de détails quant aux [...]]]></description>
			<content:encoded><![CDATA[<p>Saviez-vous qu&#8217;il est possible de créer un document de toute pièce et de l&#8217;ajouter dans une librairie (&laquo;&nbsp;Shared Document&nbsp;&raquo;) de Sharepoint seulement avec Javascript ?</p>
<p>Pour cela nous utiliserons le web service &laquo;&nbsp;copy.asmx&nbsp;&raquo; avec la fonction &laquo;&nbsp;CopyIntoItems&nbsp;&raquo;.<br />
Si vous pointez vers l&#8217;adresse <strong>http://votre_sharepoint/_vti_bin/copy.asmx?op=CopyIntoItems</strong> vous remarquerez qu&#8217;on vous fournit un certain nombre de détails quant aux informations qu&#8217;il faut envoyer. Malheureusement c&#8217;est plutôt très mal documenté, surtout pour Javascript&#8230;</p>
<p>Voici donc la solution pour créer un fichier, par exemple un fichier Excel (en .xls) dans lequel on va mettre un tableau HTML banal et qui sera enregistré (dans notre exemple) dans la librairie &laquo;&nbsp;http://votre_sharepoint/Shared Documents/&nbsp;&raquo; (à noter que j&#8217;utilise jQuery pour la requête ajax).</p>
<pre class="brush: javascript">
// le contenu de notre fichier doit être encodé en Base64. Pour cela j'utilise la fonction disponible sur mon blog (http://blog.kodono.info/wordpress/2011/07/27/midi-code-encoder-decoder-en-base64-pour-javascript-programmation/)
function encode_b64(a,b,c,d,e,f){b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";c='=';for(d=f='';e&#038;=3,a.charAt(d++)||(b=';=',e);f+=b.charAt(63&#038;c>>++e*2))c=c&lt;&lt;8|a.charCodeAt(d-=!e);return f}

// Notre fonction qu'on va appeler &quot;Upload&quot;
// txtContent est du plain text qui est donc le contenu de notre fichier
// destinationUrl est l&apos;URL complète vers la librairie où le fichier va être stocké (avec le nom du fichier à créer)
function Upload(txtContent, destinationUrl) {
    var jsStream = encode_b64(txtContent);
    var soapEnv  = &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;utf-8\&quot;?>&quot;
                  +&quot;&lt;soap:Envelope xmlns:xsi=\&quot;http://www.w3.org/2001/XMLSchema-instance\&quot; xmlns:xsd=\&quot;http://www.w3.org/2001/XMLSchema\&quot; xmlns:soap=\&quot;http://schemas.xmlsoap.org/soap/envelope/\&quot;>&quot;
                  +&quot;&lt;soap:Body>&quot;
                  +&quot;&lt;CopyIntoItems xmlns=\&quot;http://schemas.microsoft.com/sharepoint/soap/\&quot;>&quot;
                  +&quot;&lt;SourceUrl>http://null&lt;/SourceUrl>&quot;
                  +&quot;&lt;DestinationUrls>&lt;string>&quot;+destinationUrl+&quot;&lt;/string>&lt;/DestinationUrls>&quot;
                  +&quot;&lt;Fields>&lt;FieldInformation Type=&apos;File&apos; />&lt;/Fields>&quot;
                  +&quot;&lt;Stream>&quot;+jsStream+&quot;&lt;/Stream>&quot;
                  +&quot;&lt;/CopyIntoItems>&quot;
                  +&quot;&lt;/soap:Body>&quot;
                  +&quot;&lt;/soap:Envelope>&quot;;
    jQuery.ajax({
        url: &quot;http://votre_sharepoint/_vti_bin/copy.asmx&quot;,
        type: &quot;POST&quot;,
        dataType: &quot;xml&quot;,
        data: soapEnv,
        beforeSend: function(xhr) { xhr.setRequestHeader(&apos;SOAPAction&apos;, &apos;http://schemas.microsoft.com/sharepoint/soap/CopyIntoItems&apos;); },
        contentType: &quot;text/xml; charset=\&quot;utf-8\&quot;&quot;
    });
}

Upload("&lt;html>&lt;table>&lt;tr>&lt;th>Colonne 1&lt;/th>&lt;th>Colonne B&lt;/th>&lt;/tr>&lt;tr>&lt;td>Total:&lt;/td>&lt;td>1500&lt;/td>&lt;/tr>&lt;/table>&lt;/html>","http://votre_sharepoint/Shared Documents/test.xls");
</pre>
<p>Ensuite si vous cliquez sur le fichier &laquo;&nbsp;test.xls&nbsp;&raquo; nouvellement créé, votre navigateur va vouloir l&#8217;ouvrir avec Excel. Celui-ci va vous donner un warning, mais il suffit d&#8217;accepter et votre tableau va apparaitre dans votre Excel !<br />
Bien sur on peut créer tout type de fichier (.txt, .jpg, .doc, etc) et avec le contenu que l&#8217;on souhaite.</p>
<p>Liens additionnels:</p>
<ul>
<li><a href="http://blog.stuartwhiteford.com/?p=86">http://blog.stuartwhiteford.com/?p=86</a></li>
<li><a href="http://stackoverflow.com/questions/7976329/sharepoint-copyintoitems-soap-message-in-objective-c">http://stackoverflow.com/questions/7976329/sharepoint-copyintoitems-soap-message-in-objective-c</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/copy.copy.copyintoitems%28v=office.12%29.aspx">http://msdn.microsoft.com/en-us/library/copy.copy.copyintoitems%28v=office.12%29.aspx</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=uUgWBNPiFB8:hUodC6hrDWM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=uUgWBNPiFB8:hUodC6hrDWM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=uUgWBNPiFB8:hUodC6hrDWM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/uUgWBNPiFB8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/12/21/creer-un-fichier-dans-une-librairie-sharepoint-grace-au-web-service-en-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/12/21/creer-un-fichier-dans-une-librairie-sharepoint-grace-au-web-service-en-javascript/</feedburner:origLink></item>
		<item>
		<title>Transférer un compte Google vers un autre compte Google</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/yNcX8HLDtec/</link>
		<comments>http://blog.kodono.info/wordpress/2011/12/04/transferer-un-compte-google-vers-un-autre-compte-google/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 18:46:18 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=780</guid>
		<description><![CDATA[Je vais vous expliquer comment j&#8217;ai procédé pour basculer toutes mes informations Google (GMail, GDoc, GTalk, GCalendar, &#8230;.) vers un autre compte Google. Pour information, à partir d&#8217;Android 2.3.7 (en tout cas je l&#8217;ai constaté sur cette version), il est possible d&#8217;utiliser plusieurs comptes Google sur un même téléphone, et donc de choisir ce qu&#8217;on [...]]]></description>
			<content:encoded><![CDATA[<p>Je vais vous expliquer comment j&#8217;ai procédé pour basculer toutes mes informations Google (GMail, GDoc, GTalk, GCalendar, &#8230;.) vers un autre compte Google.</p>
<p><em>Pour information, à partir d&#8217;Android 2.3.7 (en tout cas je l&#8217;ai constaté sur cette version), il est possible d&#8217;utiliser plusieurs comptes Google sur un même téléphone, et donc de choisir ce qu&#8217;on souhaite synchroniser. De même pour chaque application Android de Google, on peut facilement choisir quel compte utiliser. Cela peut-être pratique si vous avez acheté des articles sur le Market avec votre ancien compte et donc que vous souhaitez les conserver sans repayer.</em></p>
<h2>Transférer ses emails GMail vers un autre compte GMail</h2>
<p>Pour cela j&#8217;ai utilisé <a href="http://www.gmail-backup.com/" title="GMail Backup">GMail Backup</a> : commencez par sauvegarder tous vos emails sur votre ordinateur avec votre ancienne adresse GMail Une fois l&#8217;opération terminée, utilisez de nouveau l&#8217;application mais avec la nouvelle adresse GMail. Ensuite il suffit de cliquer sur &laquo;&nbsp;Restore&nbsp;&raquo;.<br />
Les dates et les divers informations du courrier seront sauvegardées ! Et le logiciel vous remettra aussi vos labels !</p>
<h2>Transférer ses contacts GMail vers un autre compte GMail</h2>
<p>Cette fois Google vous facilite la vie. Allez dans <a href="https://mail.google.com/mail/u/0/#contacts" title="Contacts dans GMail">Google Contact</a>, cliquez sur &laquo;&nbsp;Plus&nbsp;&raquo; et sur &laquo;&nbsp;Exporter&#8230;&nbsp;&raquo;<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/12/GContact_export.png" alt="" title="GContact_export" width="304" height="318" class="aligncenter size-full wp-image-781" /></p>
<p>Et dans votre nouveau GMail, faites pareil en choisissant cette fois &laquo;&nbsp;Importer&#8230;&nbsp;&raquo;. Et le tour est joué !</p>
<h2>Transférer ses calendriers GCalendar vers un autre compte GCalendar</h2>
<p>Là encore Google a tout prévu : allez dans les paramètres de votre calendrier (en cliquant sur la roue en haut à droite de la page), puis cliquez sur l&#8217;onglet &laquo;&nbsp;Agendas&nbsp;&raquo;. Vous verrez le lien &laquo;&nbsp;Exporter mes agendas&nbsp;&raquo;.<br />
Et sur le nouveau GCalendar, vous n&#8217;avez plus qu&#8217;à utiliser le lien à coté : &laquo;&nbsp;Importer l&#8217;agenda&nbsp;&raquo;.</p>
<h2>Transférer ses documents GDocs vers un autre compte GDocs</h2>
<p>Cette fois vous aurez besoin du logiciel <a href="http://gs.fhtino.it/gdocbackup" title="GDoc Backup">GDocBackup</a>, et comme pour les emails, vous allez tout sauvegarder votre ancien compte sur votre ordinateur, puis dans votre nouveau compte il vous suffit de choisir &laquo;&nbsp;Importer fichiers&#8230;&nbsp;&raquo; :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/12/GDoc_Import.png" alt="" title="GDoc_Import" width="416" height="352" class="aligncenter size-full wp-image-782" /></p>
<h2>Transférer vos flux RSS de Google Reader vers un autre compte Google Reader</h2>
<p>Rendez-vous dans les paramètres de l&#8217;ancien compte Google Reader puis choisissez l&#8217;onglet Importer/Exporter. De là vous trouverez de quoi récupérer vos données.<br />
Le problème : c&#8217;est que vous perdez là où vous en étiez dans votre lecture&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=yNcX8HLDtec:YJeHxZg5nMU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=yNcX8HLDtec:YJeHxZg5nMU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=yNcX8HLDtec:YJeHxZg5nMU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/yNcX8HLDtec" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/12/04/transferer-un-compte-google-vers-un-autre-compte-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/12/04/transferer-un-compte-google-vers-un-autre-compte-google/</feedburner:origLink></item>
		<item>
		<title>Réduire la taille d’une web font et bien plus encore…. [bookmark]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/nMHxWTtjdaU/</link>
		<comments>http://blog.kodono.info/wordpress/2011/12/01/reduire-la-taille-dune-web-font-et-bien-plus-encore-bookmark/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 21:00:42 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[À bookmarker]]></category>
		<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[font]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=778</guid>
		<description><![CDATA[Le site FontSquirrel propose un outil très puissant qui va vous transformer votre font en tous les formats (woff, eot, ttf, svg, &#8230;), mais il vous propose aussi de réduire la taille de votre font pour une utilisation Web (ce qu&#8217;on nomme le &#171;&#160;subsetting&#160;&#187;). Par exemple si vous n&#8217;allez avoir besoin que des chiffres, il [...]]]></description>
			<content:encoded><![CDATA[<p>Le site <a href="http://www.fontsquirrel.com/fontface/generator">FontSquirrel</a> propose un outil très puissant qui va vous transformer votre font en tous les formats (woff, eot, ttf, svg, &#8230;), mais il vous propose aussi de réduire la taille de votre font pour une utilisation Web (ce qu&#8217;on nomme le &laquo;&nbsp;subsetting&nbsp;&raquo;). Par exemple si vous n&#8217;allez avoir besoin que des chiffres, il est dommage de télécharger une font de 500ko qui contient tous les caractères de tous les alphabets, alors qu&#8217;en ne conservant que les chiffres on pourrait tomber à 10ko.</p>
<p>Un outil à utiliser de toute urgence si vous devez traiter avec des web fonts !</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=nMHxWTtjdaU:fEc-gnUsaW8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=nMHxWTtjdaU:fEc-gnUsaW8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=nMHxWTtjdaU:fEc-gnUsaW8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/nMHxWTtjdaU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/12/01/reduire-la-taille-dune-web-font-et-bien-plus-encore-bookmark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/12/01/reduire-la-taille-dune-web-font-et-bien-plus-encore-bookmark/</feedburner:origLink></item>
		<item>
		<title>Trouver l’heure et la date en Javascript d’un autre timezone [programmation]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/S9LZC5a79DY/</link>
		<comments>http://blog.kodono.info/wordpress/2011/11/02/trouver-lheure-et-la-date-en-javascript-dun-autre-timezone-programmation/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 15:49:41 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=766</guid>
		<description><![CDATA[Pour récupérer l&#8217;heure courante d&#8217;un autre timezone voici comment faire (ici je prends l&#8217;exemple de CST qui est UTC-5, c&#8217;est-à-dire -300 minutes) : new Date(new Date(new Date().toUTCString()).setMinutes(-300)); Ensuite il faudra utiliser les fonctions getUTC* pour avoir les informations relatives à la nouvelle heure : var dLocal = new Date(); // -> Thu Nov 03 2011 [...]]]></description>
			<content:encoded><![CDATA[<p>Pour récupérer l&#8217;heure courante d&#8217;un autre timezone voici comment faire (ici je prends l&#8217;exemple de CST qui est UTC-5, c&#8217;est-à-dire -300 minutes) :</p>
<pre class="brush: javascript">new Date(new Date(new Date().toUTCString()).setMinutes(-300));</pre>
<p>Ensuite il faudra utiliser les fonctions <em>getUTC*</em> pour avoir les informations relatives à la nouvelle heure :</p>
<pre class="brush: javascript">var dLocal = new Date(); // -> Thu Nov 03 2011 09:50:19 GMT+0100
var dOffset = new Date(new Date(new Date().toUTCString()).setMinutes(-300));
var offsetHours = dOffset.getUTCHours(); // -> 3</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=S9LZC5a79DY:Ghis83nOmhI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=S9LZC5a79DY:Ghis83nOmhI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=S9LZC5a79DY:Ghis83nOmhI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/S9LZC5a79DY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/11/02/trouver-lheure-et-la-date-en-javascript-dun-autre-timezone-programmation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/11/02/trouver-lheure-et-la-date-en-javascript-dun-autre-timezone-programmation/</feedburner:origLink></item>
		<item>
		<title>Envoyer un email à plusieurs personnes via un Workflow [Sharepoint]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/R-jhM-kyGec/</link>
		<comments>http://blog.kodono.info/wordpress/2011/10/28/envoyer-un-email-a-plusieurs-personnes-via-un-workflow-sharepoint/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 13:34:31 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=764</guid>
		<description><![CDATA[Avec Sharepoint et les Workflow il est possible d&#8217;envoyer des emails à une personne (ou un groupe) en se basant sur un champs &#171;&#160;Personne&#160;&#187; de la Liste. Il est également possible d&#8217;envoyer un email à plusieurs personnes d&#8217;un coup grâce à ce même champs, mais en choisissant l&#8217;option &#171;&#160;Sélection Multiple&#160;&#187;. Attention cependant: lorsque vous créez [...]]]></description>
			<content:encoded><![CDATA[<p>Avec Sharepoint et les Workflow il est possible d&#8217;envoyer des emails à une personne (ou un groupe) en se basant sur un champs &laquo;&nbsp;Personne&nbsp;&raquo; de la Liste. Il est également possible d&#8217;envoyer un email à plusieurs personnes d&#8217;un coup grâce à ce même champs, mais en choisissant l&#8217;option &laquo;&nbsp;Sélection Multiple&nbsp;&raquo;.<br />
Attention cependant: lorsque vous créez le Workflow qui va envoyer l&#8217;email, il ne va pas vous proposer le champs en question tant qu&#8217;il est en &laquo;&nbsp;Sélection Multiple&nbsp;&raquo; ! Pour que cela fonctionne, il faut désactiver la sélection multiple le temps de configurer le workflow, puis l&#8217;autoriser de nouveau.</p>
<p>C&#8217;est donc simplement l&#8217;interface utilisateur de Sharepoint Designer qui bloque, alors que c&#8217;est techniquement possible.</p>
<p>Plus d&#8217;informations : <a href="http://social.msdn.microsoft.com/forums/en-US/sharepointworkflow/thread/ebcb81ec-ba36-4a4c-bd01-26dc2c4d0913/">http://social.msdn.microsoft.com/forums/en-US/sharepointworkflow/thread/ebcb81ec-ba36-4a4c-bd01-26dc2c4d0913/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=R-jhM-kyGec:G8FUFxg0_kc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=R-jhM-kyGec:G8FUFxg0_kc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=R-jhM-kyGec:G8FUFxg0_kc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/R-jhM-kyGec" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/10/28/envoyer-un-email-a-plusieurs-personnes-via-un-workflow-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/10/28/envoyer-un-email-a-plusieurs-personnes-via-un-workflow-sharepoint/</feedburner:origLink></item>
		<item>
		<title>Supprimer les tags &lt;script&gt; d’une chaine de caractères [javascript]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/L_-OL-qRYzc/</link>
		<comments>http://blog.kodono.info/wordpress/2011/10/18/supprimer-les-tags-script-dune-chaine-de-caracteres-javascript/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 12:05:11 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[regexp]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=749</guid>
		<description><![CDATA[Il suffit d&#8217;utiliser la chaine RegEx suivante : var myText = 'blah blah &#60;script type="text/javascript">foo=bar;&#60;/script>blah blah'; var myStripText = myText.replace(/&#60;script.*?>[\s\S]*?&#60;\/.*?script>/gi,""); console.log(myStripText); // -> 'blah blah blah blah' On peut également utiliser une expression régulière pour supprimer les liens javascripts : var myText = 'blah blah &#60;a href="javascript:alert(gniii)">foo&#60;/a>blah blah'; var myStripText = myText.replace(/javascript.*:[^"]*/gi,""); console.log(myStripText); // -> [...]]]></description>
			<content:encoded><![CDATA[<p>Il suffit d&#8217;utiliser la chaine RegEx suivante :</p>
<pre class="brush:javascript">var myText = 'blah blah &lt;script type="text/javascript">foo=bar;&lt;/script>blah blah';
var myStripText = myText.replace(/&lt;script.*?>[\s\S]*?&lt;\/.*?script>/gi,"");
console.log(myStripText); // -> 'blah blah blah blah'</pre>
<p>On peut également utiliser une expression régulière pour supprimer les liens javascripts :</p>
<pre class="brush:javascript">var myText = 'blah blah &lt;a href="javascript:alert(gniii)">foo&lt;/a>blah blah';
var myStripText = myText.replace(/javascript.*:[^"]*/gi,"");
console.log(myStripText); // -> 'blah blah &lt;a href="">foo</a>blah blah'</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=L_-OL-qRYzc:EHTMPbMGHIk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=L_-OL-qRYzc:EHTMPbMGHIk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=L_-OL-qRYzc:EHTMPbMGHIk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/L_-OL-qRYzc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/10/18/supprimer-les-tags-script-dune-chaine-de-caracteres-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/10/18/supprimer-les-tags-script-dune-chaine-de-caracteres-javascript/</feedburner:origLink></item>
		<item>
		<title>Revenir à l’actualité récente de Facebook suite à la mise à jour [Astuce]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/_4w1Tih12Xk/</link>
		<comments>http://blog.kodono.info/wordpress/2011/09/27/revenir-a-lactualite-recente-de-facebook-suite-a-la-mise-a-jour-astuce/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 08:29:08 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=723</guid>
		<description><![CDATA[Ces derniers jours Facebook a mis en place une nouvelle page d&#8217;accueil qui montre seulement les 20 dernières minutes des actualités récentes, et le reste dans un Top Story, assez moisi il faut bien le reconnaître&#8230; Pour revenir à un système avec toutes les actualités récentes de ses amis, il suffit d&#8217;une petite astuce : [...]]]></description>
			<content:encoded><![CDATA[<p>Ces derniers jours Facebook a mis en place une nouvelle page d&#8217;accueil qui montre seulement les 20 dernières minutes des actualités récentes, et le reste dans un Top Story, assez moisi il faut bien le reconnaître&#8230;</p>
<p>Pour revenir à un système avec toutes les actualités récentes de ses amis, il suffit d&#8217;une petite astuce :</p>
<ol>
<li>Allez sur <a href="https://www.facebook.com/bookmarks/lists">https://www.facebook.com/bookmarks/lists</a> puis cliquez sur &laquo;&nbsp;Créer une liste&nbsp;&raquo; que vous pouvez nommer &laquo;&nbsp;Tout le monde&nbsp;&raquo; (ou &laquo;&nbsp;tous mes amis&nbsp;&raquo; ou &laquo;&nbsp;actualités récentes&nbsp;&raquo;) par exemple<br/><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/09/créer_une_liste.png" alt="" title="Facebook: créer une liste" width="130" height="48" class="aligncenter size-full wp-image-724" /><br/><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/09/créer_une_liste_2.png" alt="" title="Facebook: créer une liste" width="466" height="214" class="aligncenter size-full wp-image-728" />
</li>
<li>Maintenant cliquez sur « &quot;Ajouter des ami(e)s&quot; à cette liste pour voir leurs actualités », et choisissez tous vos amis (un par un&#8230;.); pensez aussi à ajouter les Pages dont vous êtes fans pour continuer à suivre leurs actualités (en haut à gauche choisissez &quot;Pages&quot; au lieu d&#8217; &quot;Amis&quot;)<br/><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/09/ajouter_des_amis.png" alt="" title="Facebook: ajouter des amis" width="525" height="213" class="aligncenter size-full wp-image-729" /></li>
<li>Une fois terminé, vous aller voir &laquo;&nbsp;Tout le monde&nbsp;&raquo; (ou le nom que vous avez donné à la liste) dans la colonne de gauche au niveau de &laquo;&nbsp;Listes&nbsp;&raquo;<br/><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/09/colonne_gauche2.png" alt="" title="Facebook: colonne gauche" width="185" height="227" class="aligncenter size-full wp-image-733" /></li>
<li>Et voilà c&#8217;est prêt. Maintenant, lorsque vous voudrez voir l&#8217;actualité récente de vos amis, <strong>vous n&#8217;aurez qu&#8217;à cliquer sur ce &laquo;&nbsp;Tout le monde&nbsp;&raquo; dans la colonne de gauche</strong>.<br/><br />
Vous pouvez aussi survoler ce &laquo;&nbsp;Tout le monde&nbsp;&raquo; avec la souris puis cliquer sur le petit crayon qui apparait à gauche et choisir &laquo;&nbsp;Ajouter aux favoris&nbsp;&raquo; pour être sûr de l&#8217;avoir de disponible facilement.<br/><br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/09/colonne_gauche.png" alt="" title="Facebook: ajouter une liste en favori" width="205" height="199" class="aligncenter size-full wp-image-731" /><br/><br />
Et le voilà de disponible dans vos favoris :<br />
<a href="http://blog.kodono.info/wordpress/wp-content/uploads/2011/09/favoris.png"><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/09/favoris.png" alt="" title="Facebook: favoris" width="185" height="117" class="aligncenter size-full wp-image-735" /></a></li>
</ol>
<p>Aussi, <strong>n&#8217;oubliez pas d&#8217;ajouter vos nouveaux amis dans la liste &laquo;&nbsp;Tout le monde&nbsp;&raquo;</strong> à chaque fois pour être sûr de continuer à voir leurs actualités récentes.</p>
<p><strong>Attention !</strong> Si vous entrez un nouveau statut à partir de cette page, prenez en compte que ce statut pourra être vu par toutes les personnes de cette liste (c&#8217;est-à-dire tous vos amis). Cet avertissement vaut seulement pour ceux qui limitent leurs statuts à certains groupes.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=_4w1Tih12Xk:YfgZVC4vE3Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=_4w1Tih12Xk:YfgZVC4vE3Y:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=_4w1Tih12Xk:YfgZVC4vE3Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/_4w1Tih12Xk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/09/27/revenir-a-lactualite-recente-de-facebook-suite-a-la-mise-a-jour-astuce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/09/27/revenir-a-lactualite-recente-de-facebook-suite-a-la-mise-a-jour-astuce/</feedburner:origLink></item>
		<item>
		<title>Comment déboguer son code Javascript ? [programmation]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/MPFJ5fJ7TNs/</link>
		<comments>http://blog.kodono.info/wordpress/2011/08/19/comment-deboguer-son-code-javascript-programmation/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 14:04:19 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=716</guid>
		<description><![CDATA[Évidemment vous pouvez utiliser Firebug (add-on Firefox) pour trouver les problèmes dans votre code, que ce soit des erreurs de syntax (syntax error) ou autre. Même s&#8217;il semble qu&#8217;avec la version de Firebug 1.8.x l&#8217;information fournie ne soit plus autant utile (mais espérons que ce ne soit que temporaire). Il existe des sites web qui [...]]]></description>
			<content:encoded><![CDATA[<p>Évidemment vous pouvez utiliser <a href="http://getfirebug.com/">Firebug</a> (add-on Firefox) pour trouver les problèmes dans votre code, que ce soit des erreurs de syntax (<i>syntax error</i>) ou autre. Même s&#8217;il semble qu&#8217;avec la version de Firebug 1.8.x l&#8217;information fournie ne soit plus autant utile (mais espérons que ce ne soit que temporaire).</p>
<p>Il existe des sites web qui fournissent un débogage du Javascript, et mon préféré est <a href="http://www.javascriptlint.com/online_lint.php">http://www.javascriptlint.com/</a>. Il vous montrera rapidement ce qu&#8217;il ne va pas dans ce que vous avez entré : oubli de parenthèse, de point-virgule, mauvaise déclaration, &#8230;</p>
<p>De plus si vous utilisez <a href="http://notepad-plus-plus.org/fr/">Notepad++</a> ou un autre éditeur, il est facile d&#8217;adjoindre la puissance de <a href="http://www.javascriptlint.com/download.htm">JSLint à votre programme préféré</a>. Dans ce <a href="http://stackoverflow.com/questions/1046810/using-jslint-in-notepad">thread</a> on vous explique tout.<br />
En l&#8217;occurrence voici comment faire pour Notepad++ :</p>
<ol>
<li>Télécharger <a href="http://www.javascriptlint.com/download.htm">la version pour Windows</a>, puis dézippez le fichier;</li>
<li>Maintenant ouvrez Notepad++, puis dans le menu <em>Plugins</em> vous trouvez <em>NppExec</em>, et après <em>Execute&#8230;</em> (ou touche F6);</li>
<li>Dans la zone qui apparait entrez la commande suivante (en supposant que vous ayez mis le fichier dézipppé dans &laquo;&nbsp;C:\Program Files\JavascriptLint\&nbsp;&raquo;) :<br />
<code>"C:\Program Files\JavascriptLint\jsl.exe" -conf "C:\Program Files\JavascriptLint\jsl.default.conf" -process "$(FULL_CURRENT_PATH)"</code></li>
<li>Cliquez sur &laquo;&nbsp;Save&#8230;&nbsp;&raquo; et donnez un nom à cette commande;</li>
<li>Vous pouvez désormais utilisez JSLint directement dans Notepad++</li>
<li>Dans le fichier <em>jsl.default.conf</em> vous trouverez les options et les warnings à supprimer</li>
</ol>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=MPFJ5fJ7TNs:j2AqDxqJqgQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=MPFJ5fJ7TNs:j2AqDxqJqgQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=MPFJ5fJ7TNs:j2AqDxqJqgQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/MPFJ5fJ7TNs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/08/19/comment-deboguer-son-code-javascript-programmation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/08/19/comment-deboguer-son-code-javascript-programmation/</feedburner:origLink></item>
		<item>
		<title>Tester les performances d’un code Javascript via un benchmark [performance]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/B0lF4ZDNiME/</link>
		<comments>http://blog.kodono.info/wordpress/2011/08/19/tester-les-performances-dun-code-javascript-via-un-benchmark-performance/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 13:50:10 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=709</guid>
		<description><![CDATA[Je vous conseille de tester régulièrement votre code Javascript pour voir les performances par rapport à d&#8217;autres commandes. Il arrive qu&#8217;on hésite entre deux (ou plus!) façons de faire. Il existe le populaire http://jsperf.com/ qui offre la possibilité de tester autant de bouts de code que l&#8217;on souhaite, en appelant même quelques framework bien connus [...]]]></description>
			<content:encoded><![CDATA[<p>Je vous conseille de tester régulièrement votre code Javascript pour voir les performances par rapport à d&#8217;autres commandes. Il arrive qu&#8217;on hésite entre deux (ou plus!) façons de faire.</p>
<p>Il existe le populaire <a href="http://jsperf.com/">http://jsperf.com/</a> qui offre la possibilité de tester autant de bouts de code que l&#8217;on souhaite, en appelant même quelques framework bien connus (comme jQuery).</p>
<p>Mais si vous avez des besoins un peu plus particulier, ou vous devez travailler sur un environnement restreint, alors il est possible d&#8217;utiliser <a href="http://www.broofa.com/Tools/JSLitmus/">JSLitmus</a>. La façon de l&#8217;utiliser est <strong>incroyablement simple</strong> :</p>
<pre class="brush:javascript">&lt;script src="JSLitmus.js">&lt;/script>
&lt;script>
JSLitmus.test('Mon premier test', function() { /* do something */ });
JSLitmus.test('Mon second test', function() { /* do something else */ });
&lt;/script></pre>
<p>Cela fait apparaître un bouton &laquo;&nbsp;Run tests&nbsp;&raquo; avec un petit tableau. Une fois le test fini le tableau et un graphique vous donnent les informations nécessaires, et en l&#8217;occurrence plus le chiffre (nombre d&#8217;opérations/sec) est grand et mieux c&#8217;est.</p>
<p>Voici un exemple qui montre que l&#8217;utilisation de <code>search</code> est bien plus rapide que de déclarer une <code>RegExp</code> puis appeler <code>match</code> :</p>
<pre class="brush:javascript">&lt;html>
&lt;head>
&lt;script src="http://www.broofa.com/Tools/JSLitmus/JSLitmus.js">&lt;/script>
&lt;/head>
&lt;body>
&lt;script>
JSLitmus.test('Mon premier test', function() { var regExp = new RegExp("pouet$"); var ok = ("pouet".match(regExp) != null); });
JSLitmus.test('Mon deuxième test', function() { var ok = ("pouet".search("pouet") != -1); });
&lt;/script>
&lt;/body>&lt;/html></pre>
<p>Résultat :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/08/JSLitmus-238x300.png" alt="" title="JSLitmus" width="238" height="300" class="aligncenter size-medium wp-image-710" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=B0lF4ZDNiME:_DQAI07LQ1k:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=B0lF4ZDNiME:_DQAI07LQ1k:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=B0lF4ZDNiME:_DQAI07LQ1k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/B0lF4ZDNiME" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/08/19/tester-les-performances-dun-code-javascript-via-un-benchmark-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/08/19/tester-les-performances-dun-code-javascript-via-un-benchmark-performance/</feedburner:origLink></item>
		<item>
		<title>IE8 Developer Toolbar qui ne s’affiche plus [astuce]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/54RiRTDwK0E/</link>
		<comments>http://blog.kodono.info/wordpress/2011/08/17/ie8-developer-toolbar-qui-ne-saffiche-plus-astuce/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 09:20:29 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=704</guid>
		<description><![CDATA[Avec Internet Explorer il est possible d&#8217;utiliser un débogueur qu&#8217;ils nomment &#171;&#160;IE Developer Toolbar&#160;&#187;. C&#8217;est très peu puissant, mais quand on doit travailler sur ce navigateur ça peut être utile&#8230; Pour l&#8217;activer il faut appuyer sur la touche F12, seulement, dans mon cas, même si elle apparaissait bien dans la liste des fenêtres ouvertes, quand [...]]]></description>
			<content:encoded><![CDATA[<p>Avec Internet Explorer il est possible d&#8217;utiliser un débogueur qu&#8217;ils nomment &laquo;&nbsp;IE Developer Toolbar&nbsp;&raquo;. C&#8217;est très peu puissant, mais quand on doit travailler sur ce navigateur ça peut être utile&#8230;</p>
<p>Pour l&#8217;activer il faut appuyer sur la touche F12, seulement, dans mon cas, même si elle apparaissait bien dans la liste des fenêtres ouvertes, quand je cliquais dessus rien ne se passait : elle ne s&#8217;ouvrait pas ! La solution consiste à faire un <strong>SHIFT + Clic Droit</strong> sur la fenêtre puis choisir <strong>&laquo;&nbsp;Maximize&nbsp;&raquo;</strong> (ou &laquo;&nbsp;Agrandir&nbsp;&raquo; en français), et là votre Developer Toolbar va s&#8217;ouvrir en grand. Les pré-réglages étant mauvais, la fenêtre s&#8217;ouvre dans un étrange mode.</p>
<p>Simple, mais il fallait y penser&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=54RiRTDwK0E:2aWOnZ3swzk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=54RiRTDwK0E:2aWOnZ3swzk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=54RiRTDwK0E:2aWOnZ3swzk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/54RiRTDwK0E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/08/17/ie8-developer-toolbar-qui-ne-saffiche-plus-astuce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/08/17/ie8-developer-toolbar-qui-ne-saffiche-plus-astuce/</feedburner:origLink></item>
		<item>
		<title>L’option « Déplacer vers le groupe » a disparu des onglets de Firefox ? [astuce]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/Qx2waICZs2k/</link>
		<comments>http://blog.kodono.info/wordpress/2011/08/15/loption-deplacer-vers-le-groupe-a-disparu-des-onglet-de-firefox-astuce/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 12:35:46 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=700</guid>
		<description><![CDATA[Je me suis retrouvé dans une drôle de situation : après avoir ré-installé Firefox 5.0.1, je ne trouvais plus l&#8217;option &#171;&#160;Déplacer vers le groupe&#160;&#187; qui est présent lorsque vous faites un clic droit sur un onglet comme ceci : Pour la faire réapparaître, c&#8217;est tout simple : il suffit de créer un nouveau groupe d&#8217;onglets [...]]]></description>
			<content:encoded><![CDATA[<p>Je me suis retrouvé dans une drôle de situation : après avoir ré-installé Firefox 5.0.1, je ne trouvais plus l&#8217;option &laquo;&nbsp;Déplacer vers le groupe&nbsp;&raquo; qui est présent lorsque vous faites un clic droit sur un onglet comme ceci :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/08/déplacer_vers.png" alt="Démonstration du menu d&#039;options" title="déplacer_vers" width="245" height="244" class="aligncenter size-full wp-image-701" /></p>
<p>Pour la faire réapparaître, c&#8217;est tout simple : il suffit de créer un nouveau groupe d&#8217;onglets !</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=Qx2waICZs2k:2Hc0JJp9kdE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=Qx2waICZs2k:2Hc0JJp9kdE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=Qx2waICZs2k:2Hc0JJp9kdE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/Qx2waICZs2k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/08/15/loption-deplacer-vers-le-groupe-a-disparu-des-onglet-de-firefox-astuce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/08/15/loption-deplacer-vers-le-groupe-a-disparu-des-onglet-de-firefox-astuce/</feedburner:origLink></item>
		<item>
		<title>L’opérateur typeof en Javascript [programmation]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/RQSqaXN0Uc8/</link>
		<comments>http://blog.kodono.info/wordpress/2011/08/14/loperateur-typeof-en-javascript-programmation/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 18:49:56 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau débutant]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=687</guid>
		<description><![CDATA[Si vous avez déjà essayé d&#8217;utiliser typeof en Javascript pour trouver le type d&#8217;un objet, vous avez dû vous rendre compte que cet opérateur n&#8217;aide pas beaucoup&#8230;. Le typeof par défaut de Javascript Déjà, comme typeof est un opérateur, vous n&#8217;avez pas besoin d&#8217;utiliser des parenthèses ou une quelconque autre décoration. Ainsi on aura : [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous avez déjà essayé d&#8217;utiliser <code>typeof</code> en Javascript pour trouver le type d&#8217;un objet, vous avez dû vous rendre compte que cet opérateur n&#8217;aide pas beaucoup&#8230;.</p>
<h1>Le typeof par défaut de Javascript</h1>
<p>Déjà, comme <code>typeof</code> est un opérateur, vous n&#8217;avez pas besoin d&#8217;utiliser des parenthèses ou une quelconque autre décoration.<br />
Ainsi on aura :</p>
<pre class="brush:javascript">typeof 2; // -> "number"
typeof "Kodono"; // -> "string"</pre>
<p>On peut remarquer qu&#8217;ici <code>typeof</code> nous a bien donné ce qu&#8217;on attendait&#8230; mais voilà ce qu&#8217;il se passe avec d&#8217;autres exemples :</p>
<pre class="brush:javascript">typeof []; // -> "object"
typeof new Boolean(true); // -> "object"
typeof /a/; // -> "object"
typeof new Date(); // -> "object"
typeof null; // -> "object"</pre>
<p>Comme on peut le voir, l&#8217;opérateur va fournir un &laquo;&nbsp;object&nbsp;&raquo; dans de nombreuses situations, ce qui n&#8217;aide pas du tout.</p>
<h1>Créer un meilleur typeof</h1>
<p>Pour faire court, on peut appliquer <code>Object.prototype.toString.call</code> à un objet qui va retourner une chaine au format &laquo;&nbsp;[object <i>Class</i>]&laquo;&nbsp;. Quelques exemples :</p>
<pre class="brush:javascript">Object.prototype.toString.call(new Number(2)); // -> [object Number]
Object.prototype.toString.call(new Date()); // -> [object Date]
Object.prototype.toString.call(/a/); // -> [object RegExp]</pre>
<p>Maintenant que l&#8217;on sait ça on peut créer notre propose fonction <code>typeOf</code> (en sachant que <code>Object.prototype</code> peut se raccourcir par <code>({})/</code>).<br />
On trouve sur Internet différentes façons de faire que je vais vous proposer.</p>
<h2 style="float:none; padding-top:10px">La plus lente</h2>
<p>Elle n&#8217;est pas très rapide (dûe à l&#8217;utilisation des expressions régulières), mais elle est très courte :</p>
<pre class="brush:javascript">function typeOf(obj){return({}).toString.call(obj).match(/\s(\w+)/)[1]}

console.log(typeOf(new Number(2))); // -> Number
console.log(typeOf(new Date())); // -> Date
console.log(typeOf("test")); // -> String
console.log(typeOf(null)); // -> Null
console.log(typeOf(/a/)); // -> RegExp
console.log(typeOf([])); // -> Array
console.log(typeOf(function(){})); // -> Function</pre>
<h2 style="float:none; padding-top:10px">jQuery.type</h2>
<p>Si vous utilisez déjà <em>jQuery</em>, vous pouvez utiliser la fonction <a href="http://api.jquery.com/jQuery.type/">jQuery.type</a> qui propose une fonction assez rapide et efficace.<br />
Ils utilisent la méthode suivante :</p>
<pre class="brush:javascript">
function typeOf(obj){
  var c2t={"[object Boolean]":"Boolean","[object Number]":"Number","[object String]":"String","[object Function]":"Function","[object Array]":"Array","[object Date]":"Date","[object RegExp]":"RegExp","[object Object]":"Object"};
  return obj==null?String(obj):c2t[({}).toString.call(obj)]||"object";
}

console.log(typeOf(new Number(2))); // -> Number
console.log(typeOf(new Date())); // -> Date
console.log(typeOf("test")); // -> String
console.log(typeOf(null)); // -> Null
console.log(typeOf(/a/)); // -> RegExp
console.log(typeOf([])); // -> Array
console.log(typeOf(function(){})); // -> Function</pre>
<h2 style="float:none; padding-top:10px">La plus courte et rapide</h2>
<p>Celle-ci ne prend que quelques caractères, et se veut <a href="http://jsperf.com/typeof-test-case">rapide en plus</a> !</p>
<pre class="brush:javascript">function typeOf(obj) {return({}).toString.call(obj).slice(8,-1)}

console.log(typeOf(new Number(2))); // -> Number
console.log(typeOf(new Date())); // -> Date
console.log(typeOf("test")); // -> String
console.log(typeOf(null)); // -> Null
console.log(typeOf(/a/)); // -> RegExp
console.log(typeOf([])); // -> Array
console.log(typeOf(function(){})); // -> Function</pre>
<h1>Conclusion</h2>
<p>Si vous utilisez déjà jQuery dans votre code, alors vous pouvez faire confiance à <code>jQuery.type</code>, sinon je vous conseille la dernière fonction proposée :</p>
<pre class="brush:javascript">function typeOf(obj) {return({}).toString.call(obj).slice(8,-1)}</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=RQSqaXN0Uc8:JFOa_nybvF4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=RQSqaXN0Uc8:JFOa_nybvF4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=RQSqaXN0Uc8:JFOa_nybvF4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/RQSqaXN0Uc8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/08/14/loperateur-typeof-en-javascript-programmation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/08/14/loperateur-typeof-en-javascript-programmation/</feedburner:origLink></item>
		<item>
		<title>Retrouver l’url d’une page JSP [programmation]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/rbN0rjv4V8U/</link>
		<comments>http://blog.kodono.info/wordpress/2011/08/14/retrouver-url-page-jsp/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 16:50:18 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsp]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=682</guid>
		<description><![CDATA[Dans une page (scriptlet) JSP vous pouvez exécuter du Java grâce aux balises &#60;% %&#62;. C&#8217;est avec cela qu&#8217;on peut retrouver l&#8217;url de la page en cours : &#60;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&#62; &#60;%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %&#62; &#60;!DOCTYPE html&#62; &#60;html&#62; &#60;head&#62;&#60;title&#62;Exemple JSP&#60;/title&#62;&#60;/head&#62; &#60;body&#62; L'url de la page est : &#60;%= HttpUtils.getRequestURL(request).toString() %&#62;?&#60;%= request.getQueryString() %&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Dans une page (<em>scriptlet</em>) JSP vous pouvez exécuter du Java grâce aux balises <code>&lt;% %&gt;</code>. C&#8217;est avec cela qu&#8217;on peut retrouver l&#8217;url de la page en cours :</p>
<pre class="brush:html">&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;&lt;title&gt;Exemple JSP&lt;/title&gt;&lt;/head&gt;
&lt;body&gt;
L'url de la page est : &lt;%= HttpUtils.getRequestURL(request).toString() %&gt;?&lt;%= request.getQueryString() %&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=rbN0rjv4V8U:92vpqOnp6lo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=rbN0rjv4V8U:92vpqOnp6lo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=rbN0rjv4V8U:92vpqOnp6lo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/rbN0rjv4V8U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/08/14/retrouver-url-page-jsp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/08/14/retrouver-url-page-jsp/</feedburner:origLink></item>
		<item>
		<title>Stocker un mot de passe en PHP grâce à bcrypt [sécurité]</title>
		<link>http://feedproxy.google.com/~r/Kodono/~3/mKzMGBmkb2M/</link>
		<comments>http://blog.kodono.info/wordpress/2011/08/08/stocker-un-mot-de-passe-en-php-grace-a-bcrypt-securite/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 17:53:00 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=657</guid>
		<description><![CDATA[[niveau: intermédiaire] Il a été démontré que le stockage de mot de passe n&#8217;est pas chose aisée, et que l&#8217;utilisation d&#8217;une méthode de hashage (MD5, SHA-1, etc) n&#8217;est pas parfaite, même avec l&#8217;utilisation d&#8217;un salt. D&#8217;après cette constatation plusieurs articles indiquent que la meilleure méthode reste l&#8217;utilisation de bcrypt, comme on peut le lire dans [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: intermédiaire]</p>
<p>Il a été démontré que le stockage de mot de passe n&#8217;est pas chose aisée, et que l&#8217;utilisation d&#8217;une méthode de hashage (MD5, SHA-1, etc) n&#8217;est pas parfaite, même avec l&#8217;utilisation d&#8217;un <em>salt</em>. D&#8217;après cette constatation plusieurs articles indiquent que la meilleure méthode reste l&#8217;utilisation de <code>bcrypt</code>, comme on peut le lire dans <a href="http://codahale.com/how-to-safely-store-a-password/">How to safely store a password</a>.</p>
<p>L&#8217;utilisation de <code>bcrypt</code> est assez simple :<br />
1) Télécharger <a href="http://www.openwall.com/phpass/">phpass</a> (fichier .tgz qui contient un fichier <strong>PasswordHash.php</strong>);<br />
2) Appeler <em>PasswordHash.php</em> dans votre page :</p>
<pre class="brush:php">&lt;?php require('includes/PasswordHash.php'); ?></pre>
<p>3) Maintenant vous pouvez utiliser l&#8217;objet PasswordHash comme cela :</p>
<pre class="brush:php">&lt;?php
$password = $_POST["password"];
$hasher = new PasswordHash(8, FALSE);
$hash = $hasher->HashPassword($password);
?></pre>
<p>Et pour vérifier un mot de passe, vous devez utiliser ce petit bout de code :</p>
<pre class="brush:php">&lt;?php // vérification du mot de passe
$password = $_POST["password"];
$password_correct = "password qui vient de la base de données"; /* Le hash stocké précédemment */
$hasher = new PasswordHash(8, FALSE);
$check = $hasher->CheckPassword($password, $password_correct);

if ($check) {
 echo "Password correct!";
}
else {
 echo "Password incorrect...";
}
?></pre>
<p>A noter que si vous souhaitez le rendre compatible avec d&#8217;autres systèmes équivalents (comme <a href="http://www.mindrot.org/projects/jBCrypt/">BCrypt pour Java</a> par exemple), alors il faudra vous assurer que votre machine a bien CRYPT_BLOWFISH d&#8217;installé (on peut le voir avec <code>&lt;?php echo CRYPT_BLOWFISH; ?&gt;</code>) afin d&#8217;avoir une bonne compatibilité des deux systèmes.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Kodono?a=mKzMGBmkb2M:h23pq9lPkEk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Kodono?i=mKzMGBmkb2M:h23pq9lPkEk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Kodono?a=mKzMGBmkb2M:h23pq9lPkEk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Kodono?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Kodono/~4/mKzMGBmkb2M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/08/08/stocker-un-mot-de-passe-en-php-grace-a-bcrypt-securite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.kodono.info/wordpress/2011/08/08/stocker-un-mot-de-passe-en-php-grace-a-bcrypt-securite/</feedburner:origLink></item>
	</channel>
</rss>

