<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://leboulanger.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Pomme | Mac powered!</title>
  <link>http://leboulanger.org/</link>
  <atom:link href="http://leboulanger.org/feed/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Thu, 04 Feb 2010 10:32:14 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>L'indispensable pour débugger</title>
    <link>http://leboulanger.org/post/2009/07/13/L-indispensable-pour-d%C3%A9bugger</link>
    <guid isPermaLink="false">urn:md5:29cd798a120d8b2159deaa9dfc986e51</guid>
    <pubDate>Mon, 13 Jul 2009 04:52:00 +0200</pubDate>
    <dc:creator>Harold</dc:creator>
        <category>Programmation</category>
            
    <description>    Petit guide de survie sous Xcode. Si vous êtes à la recherche de bugs sans
arriver à déterminer le moment précis de l'exécution du programme lors duquel le problème
apparaît vous avez besoin de ceci.
&lt;ul&gt;
&lt;li&gt;NSZombieEnabled&lt;/li&gt;
&lt;li&gt;malloc_error_break&lt;/li&gt;
&lt;li&gt;objc_exception_throw&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;NSZombieEnabled&lt;/h3&gt;
NSZombieEnabled est un paramètre d'environnement détecté à l'exécution du
logiciel. Une fois celui-ci lancé, si un objet est désalloué car son compteur de
référence a atteint zéro, il n'est pas réellement détruit mais mis à l'état
de zombie. A partir de ce moment là, si un autre objet envoie un message à
l'objet désalloué, le programme ne plante pas car il existe toujours
Mise en place :
&lt;ul&gt; 	&lt;li&gt;&lt;code&gt;Project -&amp;gt; Edit Active Executable &quot;xxx&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Sélectionner le deuxième onglet contenant le nom du projet&lt;/li&gt;
&lt;li&gt;Utiliser le bouton + du tableau Variable to be set in the environnemnt&lt;/li&gt;
&lt;li&gt;Ajouter &lt;code&gt;NSZombieEnabled&lt;/code&gt; et mettre cette valeur à &lt;code&gt;YES&lt;/code&gt; comme sur la capture suivante.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align:center;&quot;&gt;&lt;img src=&quot;http://leboulanger.org/public/zombie.png&quot; alt=&quot;zombie.png&quot; border=&quot;0&quot; width=&quot;470&quot; height=&quot;673&quot; /&gt;&lt;/div&gt;
Il faut évidemment penser à le désactiver lorsqu'il est inutile, c'est à dire en production bien sur, mais aussi si il n'y pas de problème de mémoire à débugger.
&lt;h3&gt;malloc_error_break &amp;amp; objc_exception_throw&lt;/h3&gt;
Ce sont deux points d'arrêt du déboggeur qui permettent respectivement de s'arrêter lors d'une erreur d'allocation mémoire, et lorsqu'une exception qui n'a pas été rattrapée est levée.
Pour les mettre en place, il faut passer par le menu &lt;code&gt;Run -&amp;gt; Show -&amp;gt; Breakpoints&lt;/code&gt;
Une fois la fenêtre ouverte, en double-cliquant sur &lt;code&gt;Double-Click for Symbol&lt;/code&gt; on peut ajouter
&lt;ul&gt;
&lt;li&gt;malloc_error_break&lt;/li&gt;
&lt;li&gt;objc_exception_throw&lt;/li&gt;
&lt;/ul&gt;
comme ceci :
&lt;div style=&quot;text-align:center;&quot;&gt;&lt;img src=&quot;http://leboulanger.org/public/breakpoints_good.png&quot; alt=&quot;breakpoints_good.png&quot; border=&quot;0&quot; width=&quot;824&quot; height=&quot;545&quot; /&gt;&lt;/div&gt;</description>
    
    
    
          <comments>http://leboulanger.org/post/2009/07/13/L-indispensable-pour-d%C3%A9bugger#comment-form</comments>
      <wfw:comment>http://leboulanger.org/post/2009/07/13/L-indispensable-pour-d%C3%A9bugger#comment-form</wfw:comment>
      <wfw:commentRss>http://leboulanger.org/feed/atom/comments/11</wfw:commentRss>
      </item>
    
  <item>
    <title>Changement de moteur</title>
    <link>http://leboulanger.org/post/2009/06/19/Changement-de-moteur</link>
    <guid isPermaLink="false">urn:md5:ec8cbdeaa9b251df9e6c4dbe4c735ce7</guid>
    <pubDate>Fri, 19 Jun 2009 14:04:00 +0200</pubDate>
    <dc:creator>Harold</dc:creator>
        <category>Non classé</category>
            
    <description>    &lt;p&gt;De retour sous Dotclear. Le temps d'exécution de Wordpress sur un serveur Gandi Hébergement d'une part est vraiment trop important. Jusqu'à 6 secondes parfois pour générer une malheureuse page.&lt;/p&gt;


&lt;p&gt;Todo&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;changer le thème&lt;/li&gt;
&lt;li&gt;ajouter des pages statiques&lt;/li&gt;
&lt;li&gt;écrire des articles&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://leboulanger.org/post/2009/06/19/Changement-de-moteur#comment-form</comments>
      <wfw:comment>http://leboulanger.org/post/2009/06/19/Changement-de-moteur#comment-form</wfw:comment>
      <wfw:commentRss>http://leboulanger.org/feed/atom/comments/10</wfw:commentRss>
      </item>
    
  <item>
    <title>Accélérer le démarrage de Leopard</title>
    <link>http://leboulanger.org/post/2009/03/19/accelerer-le-demarrage-de-leopard/</link>
    <guid isPermaLink="false">urn:md5:a76b687f8d2d80d9fa2b92b92284f0b3</guid>
    <pubDate>Thu, 19 Mar 2009 16:09:00 +0000</pubDate>
    <dc:creator>admin</dc:creator>
        <category>Trucs et astuces</category>
        <category>démarrage</category><category>leopard</category><category>mac</category><category>parallels desktop</category><category>startup</category><category>vmware</category><category>vmware fusion</category>    
    <description>    &lt;p&gt;Si comme moi, vous utilisez un logiciel de virtualisation type VMWare Fusion ou Parallels Desktop, vous avez intérêt à lire ce qui suit pour accélérer le temps de démarrage de votre Mac.&lt;/p&gt;


&lt;p&gt;En effet ces logiciels, pour assurer la communication entre la machine virtuelle et l'hôte, créent des cartes réseaux virtuelles lors du démarrage.
On perd ainsi 10 à 20 secondes pour un logiciel qu'on ne va pas forcément utiliser. La logique voudrait que ces processus d'initialisation soient uniquement lancés au démarrage du logiciel.&lt;/p&gt;


&lt;p&gt;Il y a sans doute eu un choix de VMWare de privilégier une vitesse de lancement du logiciel accrue en contrepartie d'un temps de boot plus long.
Pour corriger tout ça : en passant par le Finder ou par le Terminal, se rendre dans le dossier &lt;code&gt;/Library/LaunchDaemons&lt;/code&gt; et supprimer toute trace de fichier portant le nom de VMWare ou Parallels. Cela nécessite des droits administrateurs. (Une sauvegarde est conseillée si vous n'êtes pas sur de ce que vous faites.)&lt;/p&gt;


&lt;p&gt;D'autres dossiers peuvent contenir des fichiers analogues :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/Library/LaunchAgents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/Library/StartupItems&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/Library/LaunchAgents&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ne supprimez pas les fichiers liés à des programmes que vous ne connaissez pas, ils sont parfois nécessaires au système.
Il reste un problème à régler : lors du lancement d'une machine virtuelle sous VMWare Fusion, un message vous indique que&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;VMWare Fusion ne peut pas se connecter à la machine virtuelle&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;&lt;a href=&quot;http://leboulanger.org/public/screenshot/vmware-error-network.png&quot;&gt;&lt;img src=&quot;http://leboulanger.org/public/screenshot/.vmware-error-network_m.jpg&quot; alt=&quot;VMWare - Services désactivés&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;VMWare - Services désactivés, mai 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Il faut lancer les services désactivés pour pouvoir utiliser la machine virtuelle.&lt;/p&gt;


&lt;p&gt;Un petit alias dans &lt;code&gt;.bashrc&lt;/code&gt; et le tour est joué.&lt;/p&gt;
&lt;pre class=&quot;bash&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;alias&lt;/span&gt; &lt;span style=&quot;color: #007800;&quot;&gt;vm=&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;sudo /Library/Application&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\ &lt;/span&gt;Support/VMWare&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\ &lt;/span&gt;Fusion/boot.sh --start&amp;quot;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Il suffit de lancer un Terminal, d'y lancer la commande &lt;code&gt;vm&lt;/code&gt; de saisir son mot de passe et Fusion est de nouveau fonctionnel.&lt;/p&gt;</description>
    
    
    
          <comments>http://leboulanger.org/post/2009/03/19/accelerer-le-demarrage-de-leopard/#comment-form</comments>
      <wfw:comment>http://leboulanger.org/post/2009/03/19/accelerer-le-demarrage-de-leopard/#comment-form</wfw:comment>
      <wfw:commentRss>http://leboulanger.org/feed/atom/comments/9</wfw:commentRss>
      </item>
    
  <item>
    <title>Bash CGI</title>
    <link>http://leboulanger.org/post/2009/02/22/bash-cgi/</link>
    <guid isPermaLink="false">urn:md5:98ff9b21314857eb228587e5154c701c</guid>
    <pubDate>Sun, 22 Feb 2009 22:08:00 +0000</pubDate>
    <dc:creator>admin</dc:creator>
        <category>Programmation</category>
        <category>apache</category><category>bash</category><category>cgi</category><category>script</category><category>site web</category>    
    <description>    &lt;h2&gt;Introduction&lt;/h2&gt;


&lt;p&gt;Lorsqu'on veut dynamiser un peu un site web, ou faire un traitement complexe, on pense toujours à PHP ou aux JSP. Mais il suffit parfois de mettre en oeuvre ses compétences en scripting et utiliser les CGI pour atteindre son but.&lt;/p&gt;


&lt;p&gt;Les CGI ont mauvaise réputation en matière de sécurité, ce n'est pas toujours justifié. Il faut juste vérifier ce que le client transmet au serveur, comme on le ferait en PHP.&lt;/p&gt;


&lt;h2&gt;Serveur&lt;/h2&gt;


&lt;p&gt;Un serveur web est nécessaire pour exécuter le script CGI. Des configurations sont généralement à prévoir pour activer cette fonctionnalité.
La plupart des serveurs possèdent un dossier &lt;code&gt;cgi-bin&lt;/code&gt; à la racine. Il suffit de mettre son script dedans et d'y faire appel.&lt;/p&gt;


&lt;p&gt;Si on veut plus de personnalisation, il est possible de permettre l'exécution des scripts CGI dans un répertoire particulier. Voici un exemple de mon fichier de configuration personnel sous Mac OS X.&lt;/p&gt;

&lt;pre class=&quot;apache&quot;&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;Options&lt;/span&gt; +ExecCGI
&lt;span style=&quot;color: #00007f;&quot;&gt;AllowOverride&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;All&lt;/span&gt;
&lt;span style=&quot;color: #00007f;&quot;&gt;Order&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;allow&lt;/span&gt;,&lt;span style=&quot;color: #00007f;&quot;&gt;deny&lt;/span&gt;
&lt;span style=&quot;color: #00007f;&quot;&gt;Allow&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;from&lt;/span&gt; &lt;span style=&quot;color: #00007f;&quot;&gt;all&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Bon, c'est très permissif, ne surtout pas utiliser une configuration pareille en production, vous risquerez d'avoir des problèmes.&lt;/p&gt;


&lt;h2&gt;Script&lt;/h2&gt;


&lt;p&gt;Voici donc un script en Bash permettant de fournir une réponse à la demande du serveur.
Pour émettre des données, il est nécessaire de commencer par ces deux lignes.&lt;/p&gt;


&lt;p&gt;La seconde ligne vide est indispensable et symbolise le début de la communication. Ça fait partie de la &lt;a href=&quot;http://www.ietf.org/rfc/rfc1945.txt&quot; hreflang=&quot;en&quot;&gt;RFC1945&lt;/a&gt;.&lt;/p&gt;

&lt;pre class=&quot;bash&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Content-type: text/html&amp;quot;&lt;/span&gt;
&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Si on veut traiter des paramètres à la manière des variables &lt;code&gt;$_GET &lt;/code&gt;et &lt;code&gt;$_POST &lt;/code&gt;en PHP, il faut utiliser la variable &lt;code&gt;$QUERY_STRING&lt;/code&gt;.
Pour séparer les arguments de cette chaîne de caractères on utilise les outils classiques. Ici &lt;code&gt;sed&lt;/code&gt; nous permet de récupérer dans la variable &lt;code&gt;CMD&lt;/code&gt; tout le contenu de la variable &lt;code&gt;niv&lt;/code&gt;&lt;/p&gt;

&lt;pre class=&quot;bash&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span style=&quot;color: #007800;&quot;&gt;CMD=&lt;/span&gt;`&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;$QUERY_STRING&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sed&lt;/span&gt; -n &lt;span style=&quot;color: #ff0000;&quot;&gt;'s/^.*niv=&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\(&lt;/span&gt;[^&amp;amp;amp;amp;]*&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\)&lt;/span&gt;.*$/&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\1&lt;/span&gt;/p'&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sed&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;s/%20/ /g&amp;quot;&lt;/span&gt;`
&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Content-type: text/html&amp;quot;&lt;/span&gt;
&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #007800;&quot;&gt;$CMD&lt;/span&gt;&lt;/pre&gt;</description>
    
    
    
          <comments>http://leboulanger.org/post/2009/02/22/bash-cgi/#comment-form</comments>
      <wfw:comment>http://leboulanger.org/post/2009/02/22/bash-cgi/#comment-form</wfw:comment>
      <wfw:commentRss>http://leboulanger.org/feed/atom/comments/8</wfw:commentRss>
      </item>
    
  <item>
    <title>InsomniaX - Ne plus subir la mise en veille</title>
    <link>http://leboulanger.org/post/2009/02/12/insomniax-ne-plus-subir-la-mise-en-veille/</link>
    <guid isPermaLink="false">urn:md5:b653d4b610c022887b8706ce4179655f</guid>
    <pubDate>Thu, 12 Feb 2009 11:31:00 +0000</pubDate>
    <dc:creator>admin</dc:creator>
        <category>Trucs et astuces</category>
            
    <description>    &lt;p&gt;Qui n'a jamais révé de pouvoir fermer le capôt de son MacBook sans que celui-ci se mette en veille ?&lt;/p&gt;


&lt;p&gt;Que ce soit pour écouter de la musique portable fermé, ou brancher un écran externe et utiliser uniquement celui-ci, il y a un manque au niveau du réglage de la mise en veille des MacBooks.&lt;/p&gt;


&lt;p&gt;Il existe pourtant un logiciel, &lt;a href=&quot;http://semaja2.net/insomniaxinfo/&quot; hreflang=&quot;en&quot;&gt;InsomniaX&lt;/a&gt;, qui permet de configurer à souhait la façon dont réagi le Mac lorsque l'on ferme son capôt. Bien que le développement soit un peu ancien, il fonctionne sous Leopard sans problème.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://leboulanger.org/public/screenshot/insomniax-menu-300x182.jpg&quot;&gt;&lt;img src=&quot;http://leboulanger.org/public/screenshot/insomniax-menu-300x182.jpg&quot; alt=&quot;Menu InsomniaX&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Menu InsomniaX, mai 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Quant aux risques de surchauffe, sachez que dans la notice d'utilisation du MacBook, il écrit que celui-ci peut fonctionner capôt fermé sans problème.&lt;/p&gt;</description>
    
    
    
          <comments>http://leboulanger.org/post/2009/02/12/insomniax-ne-plus-subir-la-mise-en-veille/#comment-form</comments>
      <wfw:comment>http://leboulanger.org/post/2009/02/12/insomniax-ne-plus-subir-la-mise-en-veille/#comment-form</wfw:comment>
      <wfw:commentRss>http://leboulanger.org/feed/atom/comments/6</wfw:commentRss>
      </item>
    
  <item>
    <title>Réduire taille PDF sous Mac OS X</title>
    <link>http://leboulanger.org/post/2009/02/08/reduire-taille-pdf-sous-mac-os-x/</link>
    <guid isPermaLink="false">urn:md5:9c094278f718fe6a2c536fb2c2e7a496</guid>
    <pubDate>Sun, 08 Feb 2009 11:17:00 +0000</pubDate>
    <dc:creator>admin</dc:creator>
        <category>Trucs et astuces</category>
        <category>aperçu.app</category><category>filtre quartz</category><category>mac os x</category><category>pdf</category><category>poids</category><category>réduire</category><category>taille</category>    
    <description>    &lt;p&gt;Lorsque l'on regarde les stats d'un site web, on est toujours surpris par les recherches qui amènent les visiteurs sur un site donné.&lt;/p&gt;


&lt;p&gt;Ce blog n'échappe pas à la règle. J'ai un maximum de hits sur un vieux post expliquant comment réduire la taille d'un fichier PDF à l'aide d'Apercu.app de Mac OS.&lt;/p&gt;


&lt;p&gt;Ne voulant pas casser l'entrain de visiteurs pressés par la tâche ingrate de la compression de fichier, je vous livre dans une nouvelle version les 3 étapes simplissimes de cette action.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ouvrir son fichier avec Aperçu.app&lt;/li&gt;
&lt;li&gt;A l'aide du menu Fichier, sélectionner l'item Enregistrer-Sous&lt;/li&gt;
&lt;li&gt;Dans le dialogue d'enregistrement séléctionner comme filtre Quartz : &quot;Reduce File Size&quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://leboulanger.org/public/screenshot/apercuapp.jpg&quot;&gt;&lt;img src=&quot;http://leboulanger.org/public/screenshot/.apercuapp_s.jpg&quot; alt=&quot;Aperçu.app&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Aperçu.app, mai 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://leboulanger.org/public/screenshot/apercuapp-saveas.jpg&quot;&gt;&lt;img src=&quot;http://leboulanger.org/public/screenshot/.apercuapp-saveas_s.jpg&quot; alt=&quot;Aperçu.app Enregistrer-sous&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Aperçu.app Enregistrer-sous, mai 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://leboulanger.org/public/screenshot/apercuapp-reducefilesize.jpg&quot;&gt;&lt;img src=&quot;http://leboulanger.org/public/screenshot/.apercuapp-reducefilesize_s.jpg&quot; alt=&quot;Aperçu.app Filtre Quartz&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;Aperçu.app Filtre Quartz, mai 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://leboulanger.org/post/2009/02/08/reduire-taille-pdf-sous-mac-os-x/#comment-form</comments>
      <wfw:comment>http://leboulanger.org/post/2009/02/08/reduire-taille-pdf-sous-mac-os-x/#comment-form</wfw:comment>
      <wfw:commentRss>http://leboulanger.org/feed/atom/comments/1</wfw:commentRss>
      </item>
    
</channel>
</rss>