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

<channel>
	<title>Kodono &#187; Niveau expert</title>
	<atom:link href="http://blog.kodono.info/wordpress/tag/niveau-expert/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kodono.info/wordpress</link>
	<description>Pour tous les technophiles</description>
	<lastBuildDate>Fri, 03 Feb 2012 08:15:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Alternatives à IMNRC() et ProcessImn() pour déterminer la présence d&#8217;une personne [Sharepoint]</title>
		<link>http://blog.kodono.info/wordpress/2012/01/23/alternatives-a-imnrc-et-processimn-pour-determiner-la-presence-dune-personne-sharepoint/</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>
]]></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>
		</item>
		<item>
		<title>IE9 en mode standard et Sharepoint&#8230; bug du bouton OK [Sharepoint]</title>
		<link>http://blog.kodono.info/wordpress/2012/01/18/ie9-en-mode-standard-et-sharepoint-2003-bug-du-bouton-ok-sharepoint/</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>
]]></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>
		</item>
		<item>
		<title>Mettre à jour Debian Lenny vers Squeeze [retour d&#039;expérience]</title>
		<link>http://blog.kodono.info/wordpress/2011/12/29/mettre-a-jour-debian-lenny-vers-squeeze-retour-dexperience/</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>
]]></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>
		</item>
		<item>
		<title>Filtrer une liste Sharepoint sur un champ de plusieurs lignes [Sharepoint Astuce]</title>
		<link>http://blog.kodono.info/wordpress/2011/05/16/filtrer-une-liste-sharepoint-sur-un-champ-de-plusieurs-lignes-sharepoint-astuce/</link>
		<comments>http://blog.kodono.info/wordpress/2011/05/16/filtrer-une-liste-sharepoint-sur-un-champ-de-plusieurs-lignes-sharepoint-astuce/#comments</comments>
		<pubDate>Mon, 16 May 2011 15:21:11 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=587</guid>
		<description><![CDATA[[niveau expert] Lorsqu&#8217;on veut filtrer une liste Sharepoint sur un champ qui contient plusieurs lignes, Sharepoint va vous forcer à utiliser &#171;&#160;contains&#160;&#187; ou &#171;&#160;begins with&#160;&#187; comme critère : Cependant, quoi faire lorsqu&#8217;on souhaite filtrer sur ce champ qui ne contient aucune valeur ? Si on utilise &#171;&#160;contains&#160;&#187; avec un critère vide, alors cela ne fonctionne [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau expert]</p>
<p>Lorsqu&#8217;on veut filtrer une liste Sharepoint sur un champ qui contient plusieurs lignes, Sharepoint va vous forcer à utiliser &laquo;&nbsp;contains&nbsp;&raquo; ou &laquo;&nbsp;begins with&nbsp;&raquo; comme critère :<br />
<a href="http://blog.kodono.info/wordpress/wp-content/uploads/2011/05/20110516_Sharepoint_List_Filter_Error.png"><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/05/20110516_Sharepoint_List_Filter_Error-300x118.png" alt="That filter type you selected cannot be used with this field. To filter fields that contain multiple lines of text, use the &#039;contains&#039; or &#039;begins with&#039; operators. You cannot use the &#039;begins with&#039; operator if rich HTML is allowed for the field." title="That filter type you selected cannot be used with this field. To filter fields that contain multiple lines of text, use the &#039;contains&#039; or &#039;begins with&#039; operators. You cannot use the &#039;begins with&#039; operator if rich HTML is allowed for the field." width="300" height="118" class="aligncenter size-medium wp-image-592" /></a></p>
<p>Cependant, quoi faire lorsqu&#8217;on souhaite filtrer sur ce champ qui ne contient aucune valeur ? Si on utilise &laquo;&nbsp;contains&nbsp;&raquo; avec un critère vide, alors cela ne fonctionne pas.<br />
Pour contrer cette mesure et avoir un filtre qui fonctionne, il faut sélectionner :<br />
<a href="http://blog.kodono.info/wordpress/wp-content/uploads/2011/05/20110516_Sharepoint_List_Filter_2.png"><img src="http://blog.kodono.info/wordpress/wp-content/uploads/2011/05/20110516_Sharepoint_List_Filter_2-300x137.png" alt="Field is equal to nothing" title="Field is equal to nothing" width="300" height="137" class="aligncenter size-medium wp-image-590" /></a></p>
<p>Ensuite regarder le code source de la page et trouvez la valeur du champ. Cela devrait commencer par &laquo;&nbsp;tp_&nbsp;&raquo; suivi par le nom XSL du champ (par exemple &laquo;&nbsp;Mon Titre&nbsp;&raquo; donnera &laquo;&nbsp;Mon_x0020_Titre&nbsp;&raquo;). Avec l&#8217;exemple donné dans l&#8217;image précédente la valeur est &laquo;&nbsp;tp_Material_x0020_Web_x0020_link_x0&#8243;.<br />
Maintenant dans la barre d&#8217;adresse de votre explorateur internet (sur la page de l&#8217;EditView), tapez la ligne suivante :</p>
<div class="code">
<pre class="JavaScript script">javascript:function byPass() { g_FieldType["tp_Material_x0020_Web_x0020_link_x0"] = ""; }; byPass();</pre>
</div>
<p>Maintenant vous pouvez cliquer sur OK, et le filtre sera correctement appliqué.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/05/16/filtrer-une-liste-sharepoint-sur-un-champ-de-plusieurs-lignes-sharepoint-astuce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carte SD endommagée sur un téléphone Android [stockage]</title>
		<link>http://blog.kodono.info/wordpress/2011/02/06/carte-sd-endommagee-sur-un-telephone-android-stockage/</link>
		<comments>http://blog.kodono.info/wordpress/2011/02/06/carte-sd-endommagee-sur-un-telephone-android-stockage/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 12:27:49 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[formatage]]></category>
		<category><![CDATA[stockage]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=516</guid>
		<description><![CDATA[[niveau expert] Avec mon téléphone HTC Hero sous Android j&#8217;ai eu la mauvaise surprise de voir un jour un message m&#8217;indiquant &#171;&#160;Carte SD Endommagée&#160;&#187;, m&#8217;empêchant d&#8217;utiliser cette petite carte qui stocke pas mal d&#8217;informations (dans mon cas une carte SanDisk de 2Go). Un formatage habituel n&#8217;avait pas d&#8217;effet, j&#8217;ai dû donc passer par un formatage [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau expert]</p>
<p>Avec mon téléphone HTC Hero sous Android j&#8217;ai eu la mauvaise surprise de voir un jour un message m&#8217;indiquant &laquo;&nbsp;Carte SD Endommagée&nbsp;&raquo;, m&#8217;empêchant d&#8217;utiliser cette petite carte qui stocke pas mal d&#8217;informations (dans mon cas une carte SanDisk de 2Go).</p>
<p>Un formatage habituel n&#8217;avait pas d&#8217;effet, j&#8217;ai dû donc passer par un formatage de bas niveau (<strong>attention, cela supprime toutes les données de la carte de façon définitive!</strong>) afin d&#8217;effacer complètement et durablement toutes les données de la carte. Pour cela, mon téléphone utilisant une rom alternative (CyanogemMod), j&#8217;ai pu le redémarrer en mode &laquo;&nbsp;recovery&nbsp;&raquo;.<br />
Commencez par relier votre téléphone au PC Windows, puis dans les options au redémarrage il suffit de choisir &laquo;&nbsp;partitions menu&nbsp;&raquo;. Ensuite sélectionnez &laquo;&nbsp;mount /sdcard&nbsp;&raquo;, puis &laquo;&nbsp;mount USB storage&nbsp;&raquo;. Normalement Windows devrait détecter votre carte SD. A partir de là vous pouvez tenter de récupérer les données les plus importantes mais vous risquez plusieurs erreurs.</p>
<p>Maintenant nous allons passer à un formatage de bas niveau de la carte qui va absolument tout faire disparaitre. Pour se faire vous devez télécharger le logiciel <a href="http://www.commentcamarche.net/download/telecharger-34056732-hdd-low-level-format-tool" target="_blank">HDD Low Level Format Tool</a>. Une fois installée, choisissez votre SD Card dans la liste des disques et procédez au formatage. Cela pourrait indiquer un tas d&#8217;erreurs, mais ignorez les. Une fois terminé, fermer le programme.</p>
<p>Maintenant, dans Windows, faites un clic droit sur la SD Card et choisissez l&#8217;option &laquo;&nbsp;Formater&nbsp;&raquo;. Prenez &laquo;&nbsp;FAT32&#8243;, et laissez les autres options par défaut. Décochez la case &laquo;&nbsp;formatage rapide&nbsp;&raquo;, puis commencez l&#8217;opération. Une fois terminé, vous pouvez redémarrer le téléphone !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2011/02/06/carte-sd-endommagee-sur-un-telephone-android-stockage/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Retrouver une clé wifi sur Android [wifi key recovery]</title>
		<link>http://blog.kodono.info/wordpress/2010/09/09/retrouver-une-cle-wifi-sur-android-wifi-key-recovery/</link>
		<comments>http://blog.kodono.info/wordpress/2010/09/09/retrouver-une-cle-wifi-sur-android-wifi-key-recovery/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 11:39:26 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[clé]]></category>
		<category><![CDATA[téléphone]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=480</guid>
		<description><![CDATA[[niveau expert] Il est facile de retrouver les clés wifi (WEP, WPA, &#8230;) qui sont déjà stockées sur son téléphone Android. Pour cela vous devez relier le téléphone à votre PC et ouvrir une console en direction du téléphone. Une fois que vous avez obtenu un shell sur le téléphone, les informations wifi sont stockées [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau expert]</p>
<p>Il est facile de retrouver les clés wifi (WEP, WPA, &#8230;) qui sont déjà stockées sur son téléphone Android. Pour cela vous devez relier le téléphone à votre PC et <a href="http://www.ostechno.fr/documentation/tutoriels/android/22-cest-quoi-adb-shell-pour-les-nuls">ouvrir une console en direction du téléphone</a>.</p>
<p>Une fois que vous avez obtenu un shell sur le téléphone, les informations wifi sont stockées dans le fichier :<br />
<b>/data/misc/wifi/wpa_supplicant.conf</b></p>
<p><strong>Attention</strong> : vous devez avoir rooté votre téléphone pour accéder à ce fichier.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2010/09/09/retrouver-une-cle-wifi-sur-android-wifi-key-recovery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mount un disque USB NTFS en read/write [Linux]</title>
		<link>http://blog.kodono.info/wordpress/2010/07/21/mount-un-disque-usb-ntfs-en-readwrite-linux/</link>
		<comments>http://blog.kodono.info/wordpress/2010/07/21/mount-un-disque-usb-ntfs-en-readwrite-linux/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 22:29:17 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[mount]]></category>
		<category><![CDATA[ntfs]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=449</guid>
		<description><![CDATA[[niveau expert] Il peut arriver qu&#8217;on ait un problème avec Windows et qu&#8217;il ne soit plus possible de démarrer sur ce dernier. Du coup, comment manipuler le disque dur ? Ou comment tout sauvegarder vers un disque dur USB externe ? On peut utiliser un LiveCD : un Linux qui se grave sur un CD [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau expert]</p>
<p>Il peut arriver qu&#8217;on ait un problème avec Windows et qu&#8217;il ne soit plus possible de démarrer sur ce dernier. Du coup, comment manipuler le disque dur ? Ou comment tout sauvegarder vers un disque dur USB externe ?</p>
<p>On peut utiliser un <a href="http://linux-live-cd.org/">LiveCD</a> : un Linux qui se grave sur un CD et sur lequel on va booter, sans devoir l&#8217;installer. Il existe des tas de LiveCD, mais, après en avoir testé plusieurs, j&#8217;en ai finalement trouvé un qui supporte le type <strong>ntfs-3g</strong> nécessaire pour monter un disque NTFS en écriture. Il s&#8217;agit de <a href="http://mcnlive.org/mcnlive.htm">MCNLive</a> (à noter que d&#8217;après certains forums, Ubuntu le permet aussi). Je vous conseille la version Delft à télécharger ici : <a href="ftp://ftp.nluug.nl/pub/os/Linux/distr/mandrakeclubnl/mcnlive/Delft/">ftp://ftp.nluug.nl/pub/os/Linux/distr/mandrakeclubnl/mcnlive/Delft/</a></p>
<p>Une fois l&#8217;image gravée, et le système amorcé à partir du CD, lancez une console puis assurez vous que tous les systèmes sont &laquo;&nbsp;unmountés&nbsp;&raquo;:</p>
<div class="code script">
<pre class="js">umount -a</pre>
</div>
<p>Puis monter votre disque USB en write:</p>
<div class="code script">
<pre class="js">mount -w -t ntfs-3g /dev/sda1 /mnt/win_c</pre>
</div>
<p>Dans le cas où vous avez un message indiquant &laquo;&nbsp;Mount is denied because NTFS logfile is unclean&nbsp;&raquo;, vous devez essayer de brancher votre disque sur un Windows allumé, puis éteignez Windows. Cela va arrêter correctement le disque dur. Puis il suffit de le reconnecter à votre linux et de relancer la commande.</p>
<p>Ensuite vous devriez avoir accès en écriture à votre disque.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2010/07/21/mount-un-disque-usb-ntfs-en-readwrite-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agrandir la taille d&#8217;un disque dur de VirtualBox [Machine Virtuelle]</title>
		<link>http://blog.kodono.info/wordpress/2010/01/26/agrandir-la-taille-dun-disque-dur-de-virtualbox-machine-virtuelle/</link>
		<comments>http://blog.kodono.info/wordpress/2010/01/26/agrandir-la-taille-dun-disque-dur-de-virtualbox-machine-virtuelle/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 06:00:58 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[disque dur]]></category>
		<category><![CDATA[machine virtuelle]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=407</guid>
		<description><![CDATA[[niveau expert] Si vous utilisez VirtualBox pour lancer une machine virtuelle sous Linux, et que vous souhaitez agrandir la taille de votre disque original, alors voici la solution (via VirtualDebian): 1) Téléchargez CloneZilla (au format .iso) 2) Arrêtez votre machine virtuelle (VM), puis dans VirtualBox créez un nouveau disque dur de plus grande capacité 3) [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau expert]</p>
<p>Si vous utilisez VirtualBox pour lancer une machine virtuelle sous Linux, et que vous souhaitez agrandir la taille de votre disque original, alors voici la solution (via <a href="http://virtualdebian.blogspot.com/2008/03/how-to-resize-virtualbox-virtual-disk.html">VirtualDebian</a>):<br />
1) Téléchargez <a href="http://www.clonezilla.org/">CloneZilla</a> (au format .iso)<br />
2) Arrêtez votre machine virtuelle (VM), puis dans VirtualBox créez un nouveau disque dur de plus grande capacité<br />
3) Dans les préférences de votre VM ajoutez le nouveau disque dur comme esclave primaire, puis indiquez que vous souhaitez monter l&#8217;image iso de CloneZilla<br />
4) Démarrez la VM en bootant sur CloneZilla (faites F12 au démarrage de la VM puis choisissez le lancement depuis le disque)<br />
5) Répondez aux diverses questions de CloneZilla, et enfin choisissez la copie &laquo;&nbsp;Disque à Disque&nbsp;&raquo;<br />
6) Sélectionnez le disque d&#8217;origine comme source, et le nouveau disque comme cible; vous pouvez indiquer que vous souhaitez copier le &laquo;&nbsp;boot&nbsp;&raquo; également afin de pouvoir démarrer sur le nouveau disque<br />
7) Une fois la copie terminée, vous stoppez la VM puis modifiez les préférences en indiquant que notre nouveau disque est le maître primaire<br />
 <img src='http://blog.kodono.info/wordpress/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Téléchargez <a href="http://sourceforge.net/projects/gparted/">GParted</a> et indiquez le comme disque optique de votre VM<br />
9) Démarrez la VM sur GParted, puis répondez aux questions, et entre autres sélectionnez &laquo;&nbsp;Start X to use GParted&nbsp;&raquo;<br />
10) Si la zone Swap est activée, vous devez la désactiver (plus d&#8217;info sur <a href="http://virtualdebian.blogspot.com/2008/03/how-to-resize-virtualbox-virtual-disk.html">VirtualDebian</a>)<br />
11) Faites les modifications nécessaires sur vos partitions (en l&#8217;occurrence il faut agrandir hda1)<br />
12) Une fois terminée, vous pouvez démarrer sur votre nouveau disque dur qui devrait être une copie parfaite de l&#8217;ancien système mais avec plus de place !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2010/01/26/agrandir-la-taille-dun-disque-dur-de-virtualbox-machine-virtuelle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrer un forum vers du phpbb3 [Astuces]</title>
		<link>http://blog.kodono.info/wordpress/2009/07/29/migrer-un-forum-vers-du-phpbb3-astuces/</link>
		<comments>http://blog.kodono.info/wordpress/2009/07/29/migrer-un-forum-vers-du-phpbb3-astuces/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 10:16:57 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Astuce]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[phpbb3]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=276</guid>
		<description><![CDATA[[niveau: expert] J&#8217;ai récemment dû migrer différents forums vers du phpbb3. Sans rentrer dans le détail du moyen de le faire, je vais dire ici les tables qu&#8217;il faut mettre à jour dans votre base MySQL de phpbb3. On va supposer que tous les utilisateurs seront déclarés en anonyme ; ainsi on pourra définir les [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>J&#8217;ai récemment dû migrer différents forums vers du phpbb3. Sans rentrer dans le détail du moyen de le faire, je vais dire ici les tables qu&#8217;il faut mettre à jour dans votre base MySQL de phpbb3.</p>
<p>On va supposer que tous les utilisateurs seront déclarés en anonyme ; ainsi on pourra définir les pseudonymes que l&#8217;on souhaite pour chaque message, sans s&#8217;assurer que l&#8217;utilisateur existe déjà dans la base.</p>
<p>Deux tables sont importantes : <strong>phpbb_topics</strong> et <strong>phpbb_posts</strong>. Comme on le devine, la première contient les topics, et la seconde est pour les messages postés.</p>
<p>Vous pouvez commencer par créer tous vos topics dans <em>phpbb_topics</em>. Les champs suivants doivent être utilisés :</p>
<div class="code">topic_id => l&#8217;id du topic que vous pouvez définir vous-même<br />
forum_id => l&#8217;id du forum où les topics doivent être postés (cf phpbb_forums)<br />
topic_title => titre du topic<br />
topic_views => le nombre de fois que le topic a été lu<br />
topic_poster => l&#8217;ID du poster &#8212; ici nous mettrons &#8217;1&#8242; pour indiquer que le poster est anonyme<br />
topic_time => temps UNIX qui représente le moment où le topic a été créé<br />
topic_first_post_id => l&#8217;ID du premier post du topic (post_id de la table phpbb_posts)<br />
topic_first_poster_name => le nom de celui qui a créé le topic<br />
topic_last_post_id => l&#8217;ID du dernier post du topic (post_id de la table phpbb_posts)<br />
topic_last_poster_id => l&#8217;ID du dernir poster &#8212; ici nous mettrons 1 pour indiquer sur le poster est anonyme<br />
topic_last_poster_name => nom du dernier poster<br />
topic_last_post_subject => le sujet du dernier post du topic (typiquement: &laquo;&nbsp;Re: topic_title&nbsp;&raquo;)<br />
topic_last_post_time => temps UNIX du dernier message du topic<br />
topic_replies => le nombre de messages postés dans ce topic<br />
topic_replies_real => idem</div>
<p>Pour la table <em>phpbb_posts</em>:</p>
<div class="code">post_id => ID du post que vous pouvez définir vous-même<br />
topic_id => l&#8217;ID du topic (pris dans phpbb_topics) auquel ce post appartient<br />
forum_id => l&#8217;ID du forum (cf phpbb_forums)<br />
poster_id => l&#8217;ID du poster &#8212; ici nous mettrons 1 pour indiquer qu&#8217;il est anonyme<br />
poster_ip => l&#8217;IP du poster (si vous l&#8217;avez)<br />
post_time => temps UNIX où le post a été fait<br />
post_username => le nom du poster<br />
post_subject => le sujet du post (si c&#8217;est le premier ce sera le titre tu topic, sinon on peut mettre &laquo;&nbsp;Re: topic_title&nbsp;&raquo;)<br />
post_text => le contenu du post<br />
post_checksum => le MD5 de post_text</div>
<p>Je vous conseille de faire un petit script PHP qui va vous permettre de bien lier correctement les topics aux posts pour ensuite tout insérer dans la base de données.</p>
<p>Il reste encore une table à mettre à jour : <strong>phpbb_forums</strong>. Voici les champs à updater :</p>
<div class="code">forum_topics => nombre de topics présents dans le forum<br />
forum_topics_real => même chose<br />
forum_last_post_id => l&#8217;ID du dernier post<br />
forum_last_poster_id => l&#8217;ID du dernier poster &#8212; nous utiliserons &#8217;1&#8242;<br />
forum_last_post_subject => le titre du dernier post<br />
forum_last_post_time => le temps UNIX du dernier&#8217; post<br />
forum_last_poster_name => le nom du dernier poster</div>
<p>Si jamais vous voulez avoir un exemple des scripts que j&#8217;ai fait (en PHP), contactez moi.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/07/29/migrer-un-forum-vers-du-phpbb3-astuces/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Stopper la propagation d&#8217;une action [Programmation]</title>
		<link>http://blog.kodono.info/wordpress/2009/07/28/stopper-la-propagation-dune-action/</link>
		<comments>http://blog.kodono.info/wordpress/2009/07/28/stopper-la-propagation-dune-action/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 16:37:34 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=265</guid>
		<description><![CDATA[[niveau: expert] Lorsque vous avez un bouton &#60;button&#62; quelque part dans un formulaire HTML, alors que vous cliquez dessus avec Firefox, ce dernier va vouloir envoyer le formulaire, alors même que le bouton n&#8217;a pas cet objectif. En effet, supposons que vous vouliez que l&#8217;action onclick actionne une quelconque fonction javascript de votre cru. Pour [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>Lorsque vous avez un bouton <em>&lt;button&gt;</em> quelque part dans un formulaire HTML, alors que vous cliquez dessus avec Firefox, ce dernier va vouloir envoyer le formulaire, alors même que le bouton n&#8217;a pas cet objectif. En effet, supposons que vous vouliez que l&#8217;action <em>onclick</em> actionne une quelconque fonction javascript de votre cru.</p>
<p>Pour éviter ce comportement avec Firefox, on peut essayer d&#8217;insérer un <em>return false</em> qui aura plus ou moins de succès:</p>
<div class="code">
<pre class="xml html">&lt;button id="myButton" onclick="myFunction(); return false;"&gt;do it!&lt;/button&gt;</pre>
</div>
<p>Le <em>return false</em> donnera un résultat très aléatoire, et c&#8217;est pourquoi je conseille plutôt d&#8217;utiliser une fonction qui va stopper la propagation de l&#8217;évènement :</p>
<div class="code">
<pre class="xml html">&lt;button id="myButton" onclick="stopAction(event); myFunction();"&gt;do it!&lt;/button&gt;</pre>
</div>
<div class="code script">
<pre class="js">function stopAction(e) {
  if (!e) e = window.event;
  if (e.cancelBubble != undefined)
    e.cancelBubble = true;
  if (typeof e.stopPropagation != "undefined") {
    e.stopPropagation();
    e.preventDefault();
  }
  return false;
}</pre>
</div>
<p>Avec ça, lorsque vous cliquez sur le bouton, la page ne devrait pas être rechargée.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/07/28/stopper-la-propagation-dune-action/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Se connecter à Internet par infrarouge via le N95 [Nokia N95]</title>
		<link>http://blog.kodono.info/wordpress/2009/07/17/se-connecter-a-internet-par-infrarouge-via-le-n95-nokia-n95/</link>
		<comments>http://blog.kodono.info/wordpress/2009/07/17/se-connecter-a-internet-par-infrarouge-via-le-n95-nokia-n95/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 12:51:59 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Téléphonie]]></category>
		<category><![CDATA[infrarouge]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[N95]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[téléphone]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=258</guid>
		<description><![CDATA[[niveau: expert] (Il est possible d&#8217;utiliser la connexion par câble, mais ici je suppose que vous n&#8217;avez pas de câble USB) Pour se faire, vous aurez besoin d&#8217;abord d&#8217;un ordinateur qui possède la fonction infrarouge. Assurez-vous d&#8217;avoir l&#8217;IR d&#8217;activé (pour cela aller dans la panneau de configuration et regardez si un menu en rapport avec [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>(Il est possible d&#8217;utiliser la connexion par câble, mais ici je suppose que vous n&#8217;avez pas de câble USB)</p>
<p>Pour se faire, vous aurez besoin d&#8217;abord d&#8217;un ordinateur qui possède la fonction infrarouge. Assurez-vous d&#8217;avoir l&#8217;IR d&#8217;activé (pour cela aller dans la panneau de configuration et regardez si un menu en rapport avec l&#8217;IR est présent). Dans le cas contraire vous devez activer l&#8217;infrarouge via le BIOS de votre machine.</p>
<p>L&#8217;étape suivante consiste à installer Nokia PC Suite. Pour cela <a href="http://www.nokia.fr/logiciels-et-support/logiciels/nokia-pc-suite/telechargement">rendez-vous sur le site de Nokia</a>. <strong>Attention</strong> de ne pas télécharger la version NSeries de Nokia PC Suite : bien moins complet et puissant !<br />
Installez le.</p>
<p>Il vous faut maintenant <a href="http://www.getfirefox.com">Firefox</a> ainsi que de l&#8217;addon <a href="https://addons.mozilla.org/en-US/firefox/addon/59">User Agent Switcher</a>.</p>
<p>Ensuite, allez sur votre N95 dans:<br />
<code>Outils &gt; Paramètres &gt; Connexion &gt; Points d'accès &gt; <em>choississez votre point d'accès</em> (ex: Vodafone Live!)</code><br />
Notez le <strong>nom du point d&#8217;accès</strong> (ex: wapsfr), puis allez dans Options &gt; Paramètres Avancés, et notez l&#8217;<strong>adresse proxy</strong> (ex: 195.115.25.129) et le <strong>port</strong> (ex: 8080).</p>
<p>Ouvrez Firefox, puis allez dans :<br />
<code>Outils &gt; Options... &gt; Avancé &gt; Réseau &gt; Paramètres... &gt; Configuration manuelle du proxy</code><br />
Vous allez entrer les informations que vous avez trouvé précédemment dans le téléphone (dans mon exemple 195.115.25.129:8080).<br />
Nous allons maintenant changer l&#8217;User Agent de Firefox. Pour cela allez dans :<br />
<code>Outils &gt; Default User Agent &gt; iPhone 3</code><br />
J&#8217;ai testé avec iPhone 3 et ça fonctionne, mais vous pourriez tenter l&#8217;User Agent d&#8217;un browser d&#8217;un autre téléphone pour être sûr.</p>
<p>Allez sur votre N95:<br />
<code>Outils &gt; Connectivité &gt; Infrarouge</code><br />
Activez l&#8217;infrarouge puis placez l&#8217;émetteur IR du téléphone en face de celui de votre ordinateur. Normalement l&#8217;ordinateur devrait réagir et établir une liaison avec votre téléphone. Nokia PC Suite devrait s&#8217;activer et indiquer la connexion.<br />
Maintenant nous allons passer le N95 en modem:<br />
<code>Outils &gt; Connectivité &gt; Modem</code><br />
Choississez &quot;Connexion par infrarouge&quot;.</p>
<p>Enfin, dans Nokia PC Suite, ouvrez <strong>&quot;Connexion à Internet&quot;</strong> (appelé aussi &quot;One Touch Access&quot;).<br />
Cliquez sur la clé pour configurer le modem. Dans la liste proposée choississez &quot;Standard Modem over IR Link&quot; puis &quot;Configuration manuelle de la connexion&quot;. Dans point d&#8217;accès, entrez celui que vous avez relevé plus tôt (dans mon exemple c&#8217;est wapsfr). Puis validez.<br />
Tentez de nouveau de vous connecter. Une fois la connexion établie vous pouvez utiliser Firefox.</p>
<p>Pour Firefox vous pouvez utiliser une extension comme <a href="https://addons.mozilla.org/en-US/firefox/addon/7330">&quot;MultiProxy Switch&quot;</a> pour passer facilement d&#8217;un proxy à un autre.<br />
A noter que vous aurez un débit faible en IR, et que votre opérateur téléphonique pourrait vous surfacturer &#8212; donc à utiliser de façon adéquate et ponctuelle !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/07/17/se-connecter-a-internet-par-infrarouge-via-le-n95-nokia-n95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transférer plusieurs fichiers par FTP sous Linux [Linux]</title>
		<link>http://blog.kodono.info/wordpress/2009/06/06/transferer-plusieurs-fichiers-par-ftp-sous-linux-linux/</link>
		<comments>http://blog.kodono.info/wordpress/2009/06/06/transferer-plusieurs-fichiers-par-ftp-sous-linux-linux/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 09:47:35 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[ftp]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=241</guid>
		<description><![CDATA[[niveau: expert] Si vous êtes un utilisateur assidu de Linux, vous devez forcément vous retrouver à piloter une machine distante avec un accès en console seulement. Et il arrivera un jour où vous aurez besoin de transférer par FTP des dizaines de fichiers/sous-répertoires en une fois. On se dit d&#8217;abord qu&#8217;on va utiliser la commande [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>Si vous êtes un utilisateur assidu de Linux, vous devez forcément vous retrouver à piloter une machine distante avec un accès en console seulement.  Et il arrivera un jour où vous aurez besoin de transférer par FTP des dizaines de fichiers/sous-répertoires en une fois. On se dit d&#8217;abord qu&#8217;on va utiliser la commande <em>ftp</em>, mais dès qu&#8217;on s&#8217;attaque à toute une arborescence ça commence à devenir compliqué et long&#8230; Il existe des solutions, comme <a href="http://www.ncftp.com/ncftp/">NcFTP</a> en mode récursive (avec <a href="http://www.ncftp.com/ncftp/doc/ncftpget.html">NcFTPGet</a> et <a href="http://www.ncftp.com/ncftp/doc/ncftpput.html">NcFTPPut</a> qui sont bien pratiques pour des scripts automatiques), mais je vais vous parler de <em>Midnight Commander</em> !</p>
<p><em><a href="http://fr.wikipedia.org/wiki/Midnight_Commander">Midnight Commander</a></em> (appelé <em>mc</em>) est un gestionnaire de fichiers pour Unix-like qui propose une vértiable interface utilisateur en mode console, avec un écran partagé en deux (<a href="http://fr.wikipedia.org/wiki/Fichier:Midnight_Commander_4.6.1_menu.png">source image</a>) :<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2009/06/20090606_midnight_commander-300x248.png" alt="20090606_midnight_commander" title="20090606_midnight_commander" width="300" height="248" class="alignnone size-medium wp-image-242" /><br />
Et comme vous le voyez sur l&#8217;image, vous avez accès (grâce aux flèches du clavier et autres touches raccourcis) à des menus, et vous pouvez vous déplacer dans l&#8217;arborescence de gauche indépendamment de celle de droite.</p>
<p>Et cette petite merveille de <em>mc</em> permet également la <strong>gestion de fichiers distants en mode FTP</strong>. Pour cela, une fois <em>mc</em> lancé, il suffit de taper :<br />
<code>cd ftp://login:password@votre.site.ftp:port/dir/</code><br />
Et le panneau actif va ouvrir le répertoire FTP distant. Vous n&#8217;aurez ensuite plus qu&#8217;à sélectionner le répertoire local que vous souhaitez transférer, puis appuyer sur F5 et <em>mc</em> se chargera de recopier l&#8217;arborescence et tout son contenu sur votre serveur. Simple, rapide et efficace.</p>
<p><em>mc</em> apparaît donc ici comme un excellent client FTP avec (G)UI, et le tout dans une console (et donc via SSH par exemple).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/06/06/transferer-plusieurs-fichiers-par-ftp-sous-linux-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Algorithmes de tri [Programmation]</title>
		<link>http://blog.kodono.info/wordpress/2009/05/15/algorithmes-de-tri-programmation/</link>
		<comments>http://blog.kodono.info/wordpress/2009/05/15/algorithmes-de-tri-programmation/#comments</comments>
		<pubDate>Fri, 15 May 2009 10:17:25 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[À bookmarker]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Programmation]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=146</guid>
		<description><![CDATA[[niveau: expert] Lorsqu&#8217;on programme il arrive très souvent de devoir mettre en place un script de tri personnalisé. Si on se souvient de ses années d&#8217;études, on peut réussir à extraire de sa mémoire les brides d&#8217;un algorithme, mais est-ce vraiment performant ? David Martin s&#8217;est amusé à regrouper tous les algorithmes de tri sur [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>Lorsqu&#8217;on programme il arrive très souvent de devoir mettre en place un script de tri personnalisé. Si on se souvient de ses années d&#8217;études, on peut réussir à extraire de sa mémoire les brides d&#8217;un algorithme, mais est-ce vraiment performant ?</p>
<p>David Martin s&#8217;est amusé à regrouper tous <a href="http://www.sorting-algorithms.com/">les algorithmes de tri</a> sur son site et à fournir une petite animation pour chacun afin d&#8217;illustrer leur mode de fonctionnement. Vous pourrez donc facilement trouver la formule qui convient le mieux à votre application.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/05/15/algorithmes-de-tri-programmation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tester des expressions régulières (RegExp) en ligne [Programmation]</title>
		<link>http://blog.kodono.info/wordpress/2009/05/06/tester-des-expressions-regulieres-regexp-en-ligne-programmation/</link>
		<comments>http://blog.kodono.info/wordpress/2009/05/06/tester-des-expressions-regulieres-regexp-en-ligne-programmation/#comments</comments>
		<pubDate>Wed, 06 May 2009 11:40:35 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regexp]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=123</guid>
		<description><![CDATA[[niveau: expert] Vous connaissez certainement les RegExp. Lumadis.be propose de tester nos expressions régulières en utilisant les fonctions PHP preg_match, preg_match_all et ereg. Un outil en ligne bien pratique pour ces expressions parfois difficiles à formater ! EDIT: on notera aussi l&#8217;existence de cet autre outils en ligne très complet : http://gskinner.com/RegExr/]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>Vous connaissez certainement les <a href="http://www.expreg.com/">RegExp</a>. Lumadis.be propose de <a href="http://lumadis.be/regex/test_regex.php?lang=fr">tester nos expressions régulières</a> en utilisant les fonctions PHP <em>preg_match</em>, <em>preg_match_all</em> et <em>ereg</em>.</p>
<p>Un outil en ligne bien pratique pour ces expressions parfois difficiles à formater !</p>
<p><b>EDIT</b>: on notera aussi l&#8217;existence de cet autre outils en ligne très complet : <a href="http://gskinner.com/RegExr/">http://gskinner.com/RegExr/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/05/06/tester-des-expressions-regulieres-regexp-en-ligne-programmation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tester votre site dans Opera Mini [Web Design]</title>
		<link>http://blog.kodono.info/wordpress/2009/05/05/tester-votre-site-dans-opera-mini-web-design/</link>
		<comments>http://blog.kodono.info/wordpress/2009/05/05/tester-votre-site-dans-opera-mini-web-design/#comments</comments>
		<pubDate>Tue, 05 May 2009 11:25:00 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[opera mini]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=120</guid>
		<description><![CDATA[[niveau: expert] Je vous ai déjà expliqué comment tester votre site sur IE6, IE7 et IE8, et maintenant je vous propose un émulateur pour voir le rendu de votre site sur Opera Mini. Pour cela il suffit d&#8217;aller sur http://www.opera.com/mini/demo/ qui offre une applet Java pour tester la version mobile du navigateur. A noter que [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>Je vous ai déjà expliqué comment <a href="http://blog.kodono.info/wordpress/2009/04/20/tester-un-site-sous-ie6-ie7-et-ie8-web-design/">tester votre site sur IE6, IE7 et IE8</a>, et maintenant je vous propose un émulateur pour voir le rendu de votre site sur Opera Mini. Pour cela il suffit d&#8217;aller sur <a href="http://www.opera.com/mini/demo/">http://www.opera.com/mini/demo/</a> qui offre une applet Java pour tester la version mobile du navigateur.</p>
<p>A noter que je n&#8217;ai réussi à voir l&#8217;émulateur qu&#8217;avec <a href="http://www.opera.com/">le navigateur Opera</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/05/05/tester-votre-site-dans-opera-mini-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adapter la taille des polices de caractères selon les navigateurs [Web Design]</title>
		<link>http://blog.kodono.info/wordpress/2009/05/03/adapter-la-taille-des-polices-de-caracteres-selon-les-navigateurs-web-design/</link>
		<comments>http://blog.kodono.info/wordpress/2009/05/03/adapter-la-taille-des-polices-de-caracteres-selon-les-navigateurs-web-design/#comments</comments>
		<pubDate>Sun, 03 May 2009 10:43:01 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=103</guid>
		<description><![CDATA[[niveau: expert] OpenWeb propose un excellent article nommé « Compatibilité multi-navigateurs des polices de caractères » où ils y expliquent les unités et les valeurs à utiliser pour dimensionner la taille des caractères de façon homogène sur le plus grand nombre possible de navigateurs Web. Pour résumer, il est conseillé de ne pas utiliser une [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>OpenWeb propose un excellent article nommé <a href="http://openweb.eu.org/articles/compatibilite_taille_polices/">« Compatibilité multi-navigateurs des polices de caractères »</a> où ils y expliquent les unités et les valeurs à utiliser pour dimensionner la taille des caractères de façon homogène sur le plus grand nombre possible de navigateurs Web.</p>
<p>Pour résumer, il est conseillé de ne pas utiliser une unité absolue (comme le &#8216;px&#8217;, le &#8216;pt&#8217;, le &#8216;cm&#8217;, etc). <strong>Evitez</strong> donc de noter dans votre style CSS quelque chose comme:</p>
<div class="code">
<pre class="css">body { font-size: 15px; } /* défini la taille par défaut de tout le texte */</code></div>
<p>A cela, <strong>préférez</strong> des unités relatives, et en l'occurrence l'utilisation de 'em' et de '%'.<br />
Il suffit de définir la taille du texte par défaut en '%' au niveau du body, et d'utiliser 'em' au niveau du reste de vos conteneurs.</p>
<p>Mais comment savoir l'équivalent entre le % et le 'px' ? Pour cela <a href="http://openweb.eu.org/articles/compatibilite_taille_polices/">OpenWeb</a> nous propose un tableau d'équivalence :</p>
<table id="valeurs">
<thead>
<tr>
<th>Valeurs en %</th>
<th>Valeurs équivalentes en 'px'</th>
</tr>
</thead>
<tbody>
<tr>
<td>57</td>
<td>9</td>
</tr>
<tr>
<td>65</td>
<td>10</td>
</tr>
<tr>
<td>71</td>
<td>11</td>
</tr>
<tr>
<td>77</td>
<td>12</td>
</tr>
<tr>
<td>82</td>
<td>13</td>
</tr>
<tr>
<td>88</td>
<td>14</td>
</tr>
<tr>
<td>96</td>
<td>15</td>
</tr>
<tr>
<td>103</td>
<td>16</td>
</tr>
<tr>
<td>109</td>
<td>17</td>
</tr>
<tr>
<td>115</td>
<td>18</td>
</tr>
<tr>
<td>121</td>
<td>19</td>
</tr>
</tbody>
</table>
<style type="text/css">
#valeurs, #valeurs td, #valeurs th { border: 1px solid black; border-collapse:collapse; text-align: center; }
#valeurs th { background-color:lightgray; padding:5px; }
</style>
<p>Ainsi, notre CSS donnera :</p>
<div class="code">
<pre class="css">body { font-size: 96%; } /* équivaut à 15px */</code></div>
<p>Grâce à cette méthode, votre texte s'adaptera très bien quelque soit le navigateur et la taille de l'écran de vos lecteurs.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/05/03/adapter-la-taille-des-polices-de-caracteres-selon-les-navigateurs-web-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comment réaliser un bon formulaire HTML [à bookmarker]</title>
		<link>http://blog.kodono.info/wordpress/2009/04/27/comment-realiser-un-bon-formulaire-html-a-bookmarker/</link>
		<comments>http://blog.kodono.info/wordpress/2009/04/27/comment-realiser-un-bon-formulaire-html-a-bookmarker/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 12:38:45 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[À bookmarker]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=91</guid>
		<description><![CDATA[[niveau: expert] Je vous invite à lire ce billet consacré à &#171;&#160;comment réaliser un bon formulaire HTML&#160;&#187; qui donne de vrais bons conseils sur cet exercice plus compliqué qu&#8217;il n&#8217;y parait. (via Alsacréations)]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>Je vous invite à lire <a href="http://bbxdesign.com/2009/04/21/comment-realiser-un-bon-formulaire-html/">ce billet consacré à &laquo;&nbsp;comment réaliser un bon formulaire HTML&nbsp;&raquo;</a> qui donne de vrais bons conseils sur cet exercice plus compliqué qu&#8217;il n&#8217;y parait.</p>
<p>(via <a href="http://www.alsacreations.com/actu/lire/705-realiser-bons-formulaires-html.html">Alsacréations</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/04/27/comment-realiser-un-bon-formulaire-html-a-bookmarker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tester un site sous IE6, IE7 et IE8 [Web Design]</title>
		<link>http://blog.kodono.info/wordpress/2009/04/20/tester-un-site-sous-ie6-ie7-et-ie8-web-design/</link>
		<comments>http://blog.kodono.info/wordpress/2009/04/20/tester-un-site-sous-ie6-ie7-et-ie8-web-design/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 05:30:55 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Application]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[Niveau intermédiaire]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=67</guid>
		<description><![CDATA[[niveau: intermédiaire-expert] Quand on crée un site Internet, il faut toujours s&#8217;assurer que le rendu est correct. L&#8217;exercice devient complexe lorsque l&#8217;on souhaite que tout fonctionne pour les différentes versions d&#8217;Internet Explorer. Vous n&#8217;êtes pas sans censés savoir que, en particulier IE6, les Internet Explorer sont une catastrophe et qu&#8217;il faut utiliser des astuces pour [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: intermédiaire-expert]</p>
<p>Quand on crée un site Internet, il faut toujours s&#8217;assurer que le rendu est correct. L&#8217;exercice devient complexe lorsque l&#8217;on souhaite que tout fonctionne pour les différentes versions d&#8217;Internet Explorer. Vous n&#8217;êtes pas sans censés savoir que, en particulier IE6, les Internet Explorer sont une catastrophe et qu&#8217;il faut utiliser des astuces pour rendre ses sites web d&#8217;aussi bonne facture sur les autres navigateurs que sur les IE!</p>
<p>Comme il n&#8217;est pas possible d&#8217;installer plusieurs IE sur une même machine (ou alors en faisant <a href="http://tredosoft.com/Multiple_IE">preuves d&#8217;astuces plus ou moins réussies</a>), il existe une solution beaucoup plus simple : installer des machines virtuelles faites exprès par Microsoft et qui embarquent différentes versions d&#8217;IE !</p>
<p>Pour cela, il suffit d&#8217;installer <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=fr&#038;FamilyID=b07c9ef0-265a-4237-ae3b-25bc8937d40f">Virtual PC</a> (gratuit). Ensuite, il faut se rendre sur <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&#038;displaylang=en">cette page dédiée</a> où on vous propose :<br />
- Windows XP SP3 avec IE6<br />
- Windows XP SP3 avec IE7<br />
- Windows XP SP3 avec IE8<br />
- Windows Vista avec IE7</p>
<p>Vous remarquez que ces images de Windows ont une durée de vie. Une fois la date expirée, vous devrez retourner sur le site pour télécharger une nouvelle image.</p>
<p>Pour installer une machine virtuelle, c&#8217;est rapide et simple. Lancez le .exe de l&#8217;image Windows téléchargée, et choisissez où vous désirez extraire votre disque dur virtuel. Puis lancez Virtual PC. Une console apparait alors dans laquelle vous cliquez sur &laquo;&nbsp;Nouveau&nbsp;&raquo;.<br />
Un assistant s&#8217;ouvre. Sélectionnez la première option (&laquo;&nbsp;Créer un ordinateur virtuel&nbsp;&raquo;). Donnez un nom à l&#8217;ordinateur (par exemple &laquo;&nbsp;IE6 XPSP3&#8243;). Ensuite choisissez une configuration par défaut (ici &laquo;&nbsp;Windows XP&nbsp;&raquo;). A l&#8217;étape suivante vous pouvez modifier la quantité de mémoire (pour XP je mets 256Mo au lieu des 128Mo proposés).<br />
Enfin, à l&#8217;étape suivante, utilisez un disque existant, et en l&#8217;occurrence celui que vous avez extrait du fichier téléchargé précédemment (dans mon exemple &laquo;&nbsp;XP SP3 with IE6 2008-Dec.vhd&nbsp;&raquo;).<br />
Et voilà !</p>
<p>La console de Virtual PC vous offre alors Windows XP avec IE6. Cliquez sur Démarrer, et Windows va se lancer dans une nouvelle fenêtre. Vous n&#8217;aurez plus qu&#8217;à ouvrir IE6 et à vous balader sur votre site web pour considérer votre rendu.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/04/20/tester-un-site-sous-ie6-ie7-et-ie8-web-design/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Débogage Javascript et PHP dans Firebug [Programmation]</title>
		<link>http://blog.kodono.info/wordpress/2009/04/16/debogage-javascript-et-php-dans-firebug-programmation/</link>
		<comments>http://blog.kodono.info/wordpress/2009/04/16/debogage-javascript-et-php-dans-firebug-programmation/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 06:28:47 +0000</pubDate>
		<dc:creator>Aymeric</dc:creator>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Niveau expert]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.kodono.info/wordpress/?p=55</guid>
		<description><![CDATA[[niveau: expert] Sur l&#8217;excellent blog Ajaxian je viens de découvrir qu&#8217;il existe un plugin au module Firebug (dont je parlais justement hier) qui permet de déboguer du PHP en console ! Cette petite merveille se nomme FirePHP et m&#8217;a l&#8217;air prometteur au vue des images: Je ne code actuellement pas en PHP, mais je dois [...]]]></description>
			<content:encoded><![CDATA[<p>[niveau: expert]</p>
<p>Sur l&#8217;excellent blog <a href="http://ajaxian.com/archives/firephp-tying-together-firebug-and-php">Ajaxian</a> je viens de découvrir qu&#8217;il existe un plugin au module Firebug (<a href="http://blog.kodono.info/wordpress/2009/04/15/les-extensions-a-avoir-firefox/">dont je parlais justement hier</a>) qui permet de déboguer du PHP en console ! Cette petite merveille se nomme <a href="http://www.christophdorn.com/Blog/2009/04/03/how-to-integrate-firephp-for-ajax-development/">FirePHP</a> et m&#8217;a l&#8217;air prometteur au vue des images:<br />
<img src="http://blog.kodono.info/wordpress/wp-content/uploads/2009/04/20090416_firephp.png" alt="firephp" title="firephp" width="422" height="457" class="aligncenter size-full wp-image-56" /></p>
<p>Je ne code actuellement pas en PHP, mais je dois bientôt retravailler sur un projet avec ce langage, je pourrai alors vous en dire un peu plus !</p>
<p>A noter qu&#8217;il existe d&#8217;autres moyens de débugguer, comme <a href="http://particletree.com/features/php-quick-profiler/">PHP Quick Profiler (en)</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kodono.info/wordpress/2009/04/16/debogage-javascript-et-php-dans-firebug-programmation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

