<?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>Le coin du dev Web de Spacefrog &#187; Astuce</title>
	<atom:link href="https://blog.developpez.com/spacefrog/pcategory/astuce/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/spacefrog</link>
	<description>Dans l&#039;espaaaaaaaaaaaaaaaaaaaaaaaaaace !</description>
	<lastBuildDate>Thu, 18 Jul 2019 08:46:26 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Ne vous jetez pas par la fenêtre !</title>
		<link>https://blog.developpez.com/spacefrog/p11332/astuce/jeter-pas-la-fenetre</link>
		<comments>https://blog.developpez.com/spacefrog/p11332/astuce/jeter-pas-la-fenetre#comments</comments>
		<pubDate>Fri, 21 Sep 2012 06:52:39 +0000</pubDate>
		<dc:creator><![CDATA[SpaceFrog]]></dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Logiciel]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/spacefrog/?p=86</guid>
		<description><![CDATA[Vous êtes fatigués de vous battre avec vos fenêtres de l&#8217;explorateur windows ? Je vous propose un petit addon windows qui pallie au manque cruel d&#8217;onglets dans l&#8217;explorateur windows. Une fois installé, cet addon ajoute un sytème d&#8217;onglets (façon chrome) &#8230; <a href="https://blog.developpez.com/spacefrog/p11332/astuce/jeter-pas-la-fenetre">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Vous êtes fatigués de vous battre avec vos fenêtres de l&rsquo;explorateur windows ?<br />
Je vous propose un petit addon windows qui pallie au manque cruel d&rsquo;onglets dans l&rsquo;explorateur windows.<br />
<span id="more-86"></span><br />
Une fois installé, cet addon ajoute un sytème d&rsquo;onglets (façon chrome) dans votre explorateur window, tout en conservant intégralement toutes les fonctionnalités de base ou ajoutées de votre explorateur windows.<br />
Vous pourrez ainsi visualiser vos dossiers dans les onglets d&rsquo;une fenêtre unique, copier ou déplacer vos fichiers entre vos onglets.<br />
Bref rien que du bonheur&#8230;</p>
<p>L&rsquo;addon se nomme Clover et vous pourrez le télécharger <a href="http://www.softpedia.com/progDownload/Clover-EJIE-Download-220301.html" title="softpedia clover download">ici</a></p>
<p>Taille : 2.4 MB<br />
Compatible :  Windows XP / Vista / Vista64 / 7 / 7 x64</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Astuce pour visualiser ses variables PHP sans debugeur</title>
		<link>https://blog.developpez.com/spacefrog/p11278/astuce/astuce-pour-visulaiser-ses-variables-php-sans-debuger</link>
		<comments>https://blog.developpez.com/spacefrog/p11278/astuce/astuce-pour-visulaiser-ses-variables-php-sans-debuger#comments</comments>
		<pubDate>Mon, 17 Sep 2012 05:00:00 +0000</pubDate>
		<dc:creator><![CDATA[SpaceFrog]]></dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/spacefrog/?p=16</guid>
		<description><![CDATA[Posons le contexte: Je code avec komodo Edit qui ne possède pas de debugger PHP (version gratuite). Visualisation avec firefox du contenu des variables, dans la console de firebug. La problématique: Comment visualiser le contenu des variables PHP en runtime. &#8230; <a href="https://blog.developpez.com/spacefrog/p11278/astuce/astuce-pour-visulaiser-ses-variables-php-sans-debuger">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Posons le contexte:<br />
Je code avec komodo Edit qui ne possède pas de debugger PHP (version gratuite).<br />
Visualisation avec firefox du contenu des variables, dans la console de firebug.</p>
<p>La problématique:<br />
Comment visualiser le contenu des variables PHP en runtime.</p>
<p>Combien de fois ais-je perdu des heures à chercher le pourquoi d&rsquo;un bug à cause de variables php non visibles.<br />
Combien de fois ai-je collé des echo par ci et par là dans mes codes pour tenter de voir le contenu de mes variables php.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">echo &quot;&lt;!-- &quot;.$mavar.&quot;--&gt;&quot;;</div></td></tr></tbody></table></div>
<p>Obligeant d&rsquo;aller ensuite visualiser le code source de la page html dans le navigateur.<br />
<span id="more-16"></span><br />
Je ne rencontrais pas ce souci avec javascript. L&rsquo;excellent outil Firebug permettant de visualiser directement les variables et leur contenu en runtime (quitte à ajouter un point d&rsquo;arrêt ou utiliser le mode pas à pas), et même de logguer des messages en console avec console.log().<br />
Du coup il m&rsquo;en venu l&rsquo;idée de passer des informations de PHP à la console de firebug !<br />
Au départ une simple insertion de script php qui rédigeait un script js de console.log, j&rsquo;ai soumis cette idée à Cahnory sur le chat qui s&rsquo;est empressé d&rsquo;en faire une petite classe que j&rsquo;ai a mon tour lègèrement modifiée.<br />
Je vous en soumet le premier jet:</p>
<pre style="border: inset 2px silver;height: 250px">
class FfxConsoleDebug
  {
    private $dumps = array();
    
    static private function getEmptyDump($type = 'log', $back = 1) {
      $d    = debug_backtrace();
      return array(
        'type'  =&#062; $type,
        'file'  =&gt; $d[$back]['file'],
        'line'  =&gt; $d[$back]['line']
      );
    }
    
    public function dump($var) {
      $vars = func_get_args();
      $dump = self::getEmptyDump();
      $dump['vars'] = array();
      foreach($vars as $key =&gt; $value) {
        if(is_object($value) &amp;&amp; !is_a($value, 'stdClass')) {
          $value = array(
            'class' =&gt; get_class($value),
            'id'    =&gt; spl_object_hash($value),
            'attr'  =&gt; get_object_vars($value)
          );
        }
        $dump['vars'][]   = $value;
      }
      $this-&gt;dumps[] = $dump;
    }
    
    public function warn($warning) {
      $dump = self::getEmptyDump('warn');
      $dump['msg'] = $warning;
      $this-&gt;dumps[]   = $dump;
    }
    
    public function alert($alert) {
      $dump = self::getEmptyDump('alert');
      $dump['msg'] = $alert;
      $this-&gt;dumps[]   = $dump;
    }
    
    public function toJs($json=true) {
      $js = '';
      foreach($this-&gt;dumps as $dump) {
        
        switch($dump['type']){
          case 'log' :  $msg=($json)?"',".json_encode((object)$dump['vars']):(preg_replace('~\r?\n~',"\\r\\n",addslashes(var_export($dump['vars'],true))))."'";
                        //$js .='console.info(\'PHP debug line ==============='.$msg.',\''.addslashes($dump['file']).':'.$dump['line'].'\');';
                        $js .='console.info(\'================= PHP debug info ==============='."\\nFile :\t".addslashes($dump['file'])."\\nLine :\t".$dump['line']."\\n".$msg.',\''.':'.'\');';
                        
                        break;
          case 'warn' : $js .= 'console.warn(\'PHP:'.stripslashes($dump['msg'])."\\nFile :\t".addslashes($dump['file'])."\\nLine :\t".$dump['line']."\\n".'\');';
                          break;
          case 'alert': $js .= 'alert(\'PHP ALERT : \n'.stripslashes($dump['msg']).'\');';
                          break;              
                        
        }              
      }
      
      return $js;
    }
    
    public function toHeader() {
      $hash = spl_object_hash($this);
      foreach($this-&gt;dumps as $k =&gt; $dump) {
        $id = $hash.'-'.$k;
        if($dump['type'] === 'log') {
          header('PHPrint-'.$id.'-source: ' . $dump['file'].' on line '.$dump['line']);
          foreach($dump['vars'] as $i =&gt; $v) {
            header('PHPrint-'.$id.'-'.$i.'-value: '. json_encode($v));
          }
        } else {
          header('PHPrint-'.$id.'-warning: ' . $dump['msg']);
        }
      }
    }
  }
  $debug = new FfxConsoleDebug;
  
  
  //USAGE
  /*
  $d-&gt;dump('test','ok');
  $d-&gt;dump(array('test'));
  $d-&gt;dump($d);
  $d-&gt;warn('Ne pas oublier de supprimer les dumps');
   echo '' . $d-&gt;toJs( [true/false]) . '';  */

</pre>
<p>J&rsquo;ai mis cette classe dans un fichier que j&rsquo;inclus dans tous mes projets au moyen d&rsquo;un require()</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">require('debuglib.php');</div></td></tr></tbody></table></div>
<p>Il suffit de placer les lignes souhaitées dans le code php à l&rsquo;endroit ou l&rsquo;on souhaite visualiser ses variables<br />
Lors de l&rsquo;affichage dans le navigateur, les lignes de debug apparaissent dans la console firebug avec le numéro de ligne et le nom du fichier.</p>
<p>le paramètre boolean true / false permet:<br />
 en mode true (par defaut) d&rsquo;obtenir un objet dans la console<br />
 en mode false  d&rsquo;obtenir un string mis en forme comme un var_export de php</p>
<p>Personnellement cette petit classe m&rsquo;a fait gagner un temps précieux en me permettant d&rsquo;avoir un aperçu direct des ce qui se passe au niveau de mes variables php.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>css sprite &#8211; Ou comment regrouper vos images</title>
		<link>https://blog.developpez.com/spacefrog/p11297/astuce/css-sprite-ou-comment-regrouper-vos-images</link>
		<comments>https://blog.developpez.com/spacefrog/p11297/astuce/css-sprite-ou-comment-regrouper-vos-images#comments</comments>
		<pubDate>Tue, 11 Sep 2012 14:17:52 +0000</pubDate>
		<dc:creator><![CDATA[SpaceFrog]]></dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Logiciel]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/spacefrog/?p=64</guid>
		<description><![CDATA[Lorsque l&#8217;on code un site web, on est souvent obligé d&#8217;utiliser beaucoup de petites images, des coins, des puces, des icônes, des symboles, des flèches et autres. Lors du chargement la page fait autant d&#8217;appels réseau qu&#8217;il y a d&#8217;images &#8230; <a href="https://blog.developpez.com/spacefrog/p11297/astuce/css-sprite-ou-comment-regrouper-vos-images">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Lorsque l&rsquo;on code un site web, on est souvent obligé d&rsquo;utiliser beaucoup de petites images, des coins, des puces, des icônes, des symboles, des flèches et autres.<br />
Lors du chargement la page fait autant d&rsquo;appels réseau qu&rsquo;il y a d&rsquo;images différentes sur la page. Ce qui peut allonger le temps de chargement.<br />
Il existe une technique qui permet de limiter ces accès multiples en n&rsquo;ayant qu&rsquo;une seule image.<br />
Il suffit d&rsquo;un peu de css pour positionner correctement l&rsquo;image afin que n’apparaisse que la partie voulue: Cette technique s&rsquo;appelle le sprite.<br />
<span id="more-64"></span><br />
Cependant il n&rsquo;est pas aisé de regrouper les images en une seule et surtout de récupérer les coordonnées permettant l&rsquo;affichage de l&rsquo;extrait d&rsquo;image souhaité.<br />
Heureusement votre grenouille préférée vous a trouvé deux petits software qui vous aideront dans cette difficile tache.<br />
 <a href="http://codebrewery.blogspot.fr/p/cssspriter.html" title="cssSpriter" target="_blank">cssSpriter </a><br />
<a href="https://spritesheetpacker.codeplex.com/" title="Sprite Sheet Packer" target="_blank">Sprite Sheet Packer</a><br />
Ces deux outils non seulement génèrent une image unique à partir de vos différentes images, mais génèrent également les codes html et css vous permettant de les intégrer dans vos sites webs.</p>
<p>Cette technique est également utilisée dans les jeux afin d&rsquo;animer des personnages en faisant défiler les différentes postures d&rsquo;un personnage par modification dynamique de la position de l&rsquo;image.<br />
j&rsquo;avais déja abordé les animations avec sprite <a href="http://www.developpez.net/forums/d905614/webmasters-developpement-web/contribuez/jquery-dessin-anime/" target="_blank">ici</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestion de droits minimaliste en PHP</title>
		<link>https://blog.developpez.com/spacefrog/p11281/astuce/gestion-de-droits-minimaliste-en-php</link>
		<comments>https://blog.developpez.com/spacefrog/p11281/astuce/gestion-de-droits-minimaliste-en-php#comments</comments>
		<pubDate>Thu, 06 Sep 2012 11:29:17 +0000</pubDate>
		<dc:creator><![CDATA[SpaceFrog]]></dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/spacefrog/?p=44</guid>
		<description><![CDATA[J&#8217;ai été amené à développer un mini CMS avec niveaux d&#8217;accès différentiés. Le but: n&#8217;autoriser l&#8217;accès à certains modules qu&#8217;à certaines personnes. J&#8217;ai opté par un système assez simple basé sur les sommes de puissances de 2. On attribue à &#8230; <a href="https://blog.developpez.com/spacefrog/p11281/astuce/gestion-de-droits-minimaliste-en-php">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>J&rsquo;ai été amené à développer un mini CMS avec niveaux d&rsquo;accès différentiés.<br />
Le but: n&rsquo;autoriser l&rsquo;accès à certains modules qu&rsquo;à certaines personnes.</p>
<p>J&rsquo;ai opté par un système assez simple basé sur les sommes de puissances de 2.<br />
<span id="more-44"></span><br />
On attribue à chaque module une puissance de 2<br />
On additionne pour chaque utilisateur les sommes des puissances de deux pour les modules autorisés.<br />
Une conversion de la somme en binaire suivi d&rsquo;un reverse de la chaine obtenue donne une série de 0 et 1 qui dans l&rsquo;ordre donnent les accès aux modules sous forme de boolean  (0= accès refusé  , 1 accès autorisé).</p>
<p>Un petit exemple :</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #000088;">$valdroits</span><span style="color: #339933;">=</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;compta&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;fournitures&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;documents&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;admin&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$droits</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//$valdroits[&quot;fournitures&quot;]+$valdroits[&quot;admin&quot;];</span><br />
<span style="color: #000088;">$booldroits</span><span style="color: #339933;">=</span> <a href="http://www.php.net/strrev"><span style="color: #990000;">strrev</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>string<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/decbin"><span style="color: #990000;">decbin</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$droits</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$menu</span><span style="color: #339933;">=</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$i</span><span style="color: #339933;">=-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$valdroits</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$rub</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$i</span><span style="color: #339933;">++;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$menu</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$rub</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$booldroits</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>?<span style="color: #000088;">$booldroits</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<br />
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/nl2br"><span style="color: #990000;">nl2br</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$menu</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br/&gt;&quot;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$menu</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$rub</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp;<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'vous avez accès au menu '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rub</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;br/&gt;&quot;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&lt;/body&gt;<br />
&lt;/html&gt;</div></td></tr></tbody></table></div>
<p>Explications:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$valdroits</span><span style="color: #339933;">=</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;compta&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;fournitures&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;documents&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;admin&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>ici chacun des modules se voit attribuer une puissance de 2 (attention pas de doublon !)</p>
<p>Pour un utilisateur on somme les puissances de deux des modules autorisés</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$droits</span><span style="color: #339933;">=</span><span style="color: #000088;">$valdroits</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;fournitures&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span><span style="color: #000088;">$valdroits</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;admin&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 1+4</span></div></td></tr></tbody></table></div>
<p>ici les modules compta et documents </p>
<p>Et voici le conversion magique :</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$booldroits</span><span style="color: #339933;">=</span> <a href="http://www.php.net/strrev"><span style="color: #990000;">strrev</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>string<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/decbin"><span style="color: #990000;">decbin</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$droits</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>qui nous retourne la chaine &laquo;&nbsp;1010&nbsp;&raquo;<br />
que l&rsquo;on peut décomposer comme suit:<br />
compta        1     => true<br />
fournitures   0     => false<br />
documents     1     => true<br />
admin         0     => false</p>
<p>Par commodité on peut associer à chaque module les boolean d&rsquo;accès pour l&rsquo;utilisateur:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$menu</span><span style="color: #339933;">=</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$i</span><span style="color: #339933;">=-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$valdroits</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$rub</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$i</span><span style="color: #339933;">++;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$menu</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$rub</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$booldroits</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>?<span style="color: #000088;">$booldroits</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>ce qui nous donne</p>
<blockquote><p>
$menu[&laquo;&nbsp;compta&nbsp;&raquo;]=>1<br />
$menu[&laquo;&nbsp;fournitures&nbsp;&raquo;]=>0<br />
$menu[&laquo;&nbsp;documents&nbsp;&raquo;]=>1<br />
$menu[&laquo;&nbsp;admin&nbsp;&raquo;]=>0;
</p></blockquote>
<p>il suffit ensuite de tester pour avoir si le module est autorisé on non</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$menu</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$rub</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp;<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'vous avez accès au menu '</span><span style="color: #339933;">.</span><span style="color: #000088;">$rub</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;br/&gt;&quot;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Avantages :<br />
Pas besoin de table, gestion simple des groupes : un groupe = un integer, la même somme donnant les mêmes accès.<br />
Ajout aisé de module : il suffit d&rsquo;ajouter une puissance de 2</p>
<p>Désavantage :<br />
Devient vite fouillis lorsque l&rsquo;on a beaucoup de modules</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Les égouts et les couleurs &#8230;</title>
		<link>https://blog.developpez.com/spacefrog/p11279/astuce/les-egouts-et-les-couleurs</link>
		<comments>https://blog.developpez.com/spacefrog/p11279/astuce/les-egouts-et-les-couleurs#comments</comments>
		<pubDate>Wed, 05 Sep 2012 11:19:51 +0000</pubDate>
		<dc:creator><![CDATA[SpaceFrog]]></dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Logiciel]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/spacefrog/?p=21</guid>
		<description><![CDATA[Je suis développeur web, plutôt codeur ou intégrateur, pas graphiste. La plupart du temps je récupère des chartes graphiques, mon coté artiste est donc très peu sollicité, ce qui n&#8217;est pas plus mal &#8230; Dans les rares cas ou je &#8230; <a href="https://blog.developpez.com/spacefrog/p11279/astuce/les-egouts-et-les-couleurs">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Je suis développeur web, plutôt codeur ou intégrateur, pas graphiste.<br />
La plupart du temps je récupère des chartes graphiques, mon coté artiste est donc très peu sollicité, ce qui n&rsquo;est pas plus mal &#8230;<br />
Dans les rares cas  ou je me suis lancé dans la création du design de sites, je me suis souvent heurté au casse tête des associations de couleurs.<br />
<span id="more-21"></span></p>
<p>Pour éviter les fautes de goût je vous conseille d&rsquo;utiliser des outils qui, à partir d&rsquo;une couleur maitresse, vous indiqueront une palette de couleurs que vous pourrez y associer.</p>
<p>Il existe des sites en ligne que vous trouverez facilement en tapant &laquo;&nbsp;color scheme&nbsp;&raquo; sur votre moteur de recherche de prédilection.</p>
<p>Mon choix s&rsquo;est porté sur un petit freeware nommé CSDesigner<br />
Doté d&rsquo;une pipette qui vous permet de repiquer la couleur maitresse, il vous propose les dégradés et couleurs complémentaires que vous pourrez lui associer sans risques pour les rétines.<br />
Vous trouvez cette petite application <a href="http://www.snapfiles.com/get/csdesigner.html" title="ici" target="_blank">ici</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
