<?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>Dhar's Web</title>
	<atom:link href="http://www.dhar.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dhar.fr</link>
	<description>Le Blog inutile de Dhar ou il parle de tout et de rien, plutôt de rien d'ailleurs, et en plus il poste pas...</description>
	<lastBuildDate>Tue, 26 Jul 2011 19:12:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>jQuery plugin for ping-URL process</title>
		<link>http://www.dhar.fr/2011/07/jquery-plugin-for-ping-url-process/</link>
		<comments>http://www.dhar.fr/2011/07/jquery-plugin-for-ping-url-process/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 19:12:00 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=659</guid>
		<description><![CDATA[If your page runs into an iframe hosted by another domain, you may want to keep the session open. The following jQuery plugin automates the &#171;&#160;ping URL&#160;&#187; process and provides some options. The pinger will ask the given URL every &#8216;interval&#8217; minutes if it detects some activity by listening to the events listed in &#8216;listen&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>If your page runs into an iframe hosted by another domain, you may want to keep the session open. The following jQuery plugin automates the &laquo;&nbsp;ping URL&nbsp;&raquo; process and provides some options.<br />
<span id="more-659"></span></p>
<p>The pinger will ask the given URL every &#8216;interval&#8217; minutes if it detects<br />
some activity by listening to the events listed in &#8216;listen&#8217; parameter.</p>
<p>Have a look to the &#8216;defaults&#8217; variable below for further details about available parameters and default values.<br />
<script type="text/javascript" src="https://gist.github.com/1107059.js?file=jquery.pinger-0.2.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2011/07/jquery-plugin-for-ping-url-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery plugin pattern written in Coffeescript</title>
		<link>http://www.dhar.fr/2011/07/jquery-plugin-pattern-written-in-coffeescript/</link>
		<comments>http://www.dhar.fr/2011/07/jquery-plugin-pattern-written-in-coffeescript/#comments</comments>
		<pubDate>Sun, 24 Jul 2011 21:28:09 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[CoffeeScript]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=649</guid>
		<description><![CDATA[Once your CoffeeScript environment is up and running, you may want to write some awesome new jQuery plugin with CoffeeScript. The code bellow is a starting point, it&#8217;s clearly inspired from the jQuery Doc . Just search/replace pluginName with your plugin name and go ahead with your own code. Links Summary: jquery.plugin_name.coffee source code CoffeeScript [...]]]></description>
			<content:encoded><![CDATA[<p>Once your <a title="CoffeeScript" href="http://jashkenas.github.com/coffee-script/" target="_blank">CoffeeScript</a> environment is up and running, you may want to write some awesome new jQuery plugin with CoffeeScript.</p>
<p>The code bellow is a starting point, it&#8217;s clearly inspired from the <a title="Plugins/Authoring - jQuery JavaScript Library" href="http://docs.jquery.com/Plugins/Authoring" target="_blank">jQuery Doc</a> . Just search/replace <code>pluginName</code> with your plugin name and go ahead with your own code.<br />
<script type="text/javascript" src="https://gist.github.com/1101485.js?file=jquery.pluginName.coffee"></script><br />
Links Summary:</p>
<ul>
<li><a title="jquery.plugin_name.coffee source code" href="https://gist.github.com/1101485#file_jquery.plugin_name.coffee" target="_blank">jquery.plugin_name.coffee</a> source code</li>
<li><a title="CoffeeScript" href="http://jashkenas.github.com/coffee-script/" target="_blank">CoffeeScript</a></li>
<li><a title="Plugins/Authoring - jQuery JavaScript Library" href="http://docs.jquery.com/Plugins/Authoring" target="_blank">jQuery Doc: Plugins/Authoring</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2011/07/jquery-plugin-pattern-written-in-coffeescript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plugin jQuery &#8211; Aide contextuelle Javascript</title>
		<link>http://www.dhar.fr/2010/09/plugin-jquery-aide-contextuelle-javascript/</link>
		<comments>http://www.dhar.fr/2010/09/plugin-jquery-aide-contextuelle-javascript/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 17:59:52 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=620</guid>
		<description><![CDATA[Voilà déjà pas mal de temps que je n&#8217;ai rien publié ici&#8230; Ce qui ne veux pas dire que j&#8217;ai rien dans les cartons. C&#8217;est plutôt le temps qui manque un peu quand il s&#8217;agit de présenter tout ça de façon correcte. Pour changer un peu des précédent articles dédiés au développement iPhone, je vais [...]]]></description>
			<content:encoded><![CDATA[<p>Voilà déjà pas mal de temps que je n&#8217;ai rien publié ici&#8230; Ce qui ne veux pas dire que j&#8217;ai rien dans les cartons. C&#8217;est plutôt le temps qui manque un peu quand il s&#8217;agit de présenter tout ça de façon correcte.</p>
<p>Pour changer un peu des précédent articles dédiés au développement iPhone, je vais aujourd&#8217;hui présenter un petit outil Javascript, utilisant le Framework jQuery. Rien de révolutionnaire, c&#8217;est simplement un plugin jQuery permettant de dérouler un bandeau HTML au dessous d&#8217;un autre. J&#8217;ai appelé ce plugin &#8216;helpBox&#8217; car ce widget est particulièrement adapté pour afficher une aide contextuelle.</p>
<p>Voici les liens vers le <strong><a href="https://gist.github.com/1101480">code source</a></strong> et la <strong><a title="dhar.fr - jQuery helpbox Demo" href="http://www.dhar.fr/wp-content/demos/helpbox-demo.html" target="_blank">démo</a></strong>.<br />
<span id="more-620"></span><br />
Rien de bien compliqué ici si l&#8217;on connais déjà la structure d&#8217;un plugin jQuery.<br />
On commence par définir quelques paramètres&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> defaults <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    helpContent<span style="color: #339933;">:</span><span style="color: #3366CC;">'&lt;p&gt;help content&lt;/p&gt;'</span><span style="color: #339933;">,</span>  <span style="color: #006600; font-style: italic;">// jQuery Selector or plain text HTML.</span>
    contentCls<span style="color: #339933;">:</span><span style="color: #3366CC;">'help-content'</span><span style="color: #339933;">,</span>          <span style="color: #006600; font-style: italic;">// CSS Class applied to the help box.</span>
    buttonCls<span style="color: #339933;">:</span><span style="color: #3366CC;">'help-button'</span><span style="color: #339933;">,</span>            <span style="color: #006600; font-style: italic;">// CSS Class applied to the help button.</span>
    buttonText<span style="color: #339933;">:</span><span style="color: #3366CC;">'Help'</span>                   <span style="color: #006600; font-style: italic;">// Help Button text</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ensuite, le plugin &#8216;helpBox&#8217; se contente de recherche le code HTML du contenu de l&#8217;aide pour l&#8217;ajouter au document avec le bouton associé.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> o <span style="color: #339933;">=</span> options
&nbsp;
    <span style="color: #006600; font-style: italic;">// Gets help content</span>
    <span style="color: #003366; font-weight: bold;">var</span> content <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span> $<span style="color: #009900;">&#40;</span>o.<span style="color: #660066;">helpContent</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #CC0000;">0</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> $<span style="color: #009900;">&#40;</span>o.<span style="color: #660066;">helpContent</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> o.<span style="color: #660066;">helpContent</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// Appends help box and help button</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&lt;div class='&quot;</span><span style="color: #339933;">+</span>o.<span style="color: #660066;">contentCls</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;'&gt;&quot;</span> <span style="color: #339933;">+</span> content <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;&lt;/div&gt;&quot;</span><span style="color: #009900;">&#41;</span>
        .<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&lt;div class='&quot;</span><span style="color: #339933;">+</span>o.<span style="color: #660066;">buttonCls</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;'&gt;&lt;a href='javascript:void(0)'&gt;&quot;</span><span style="color: #339933;">+</span>o.<span style="color: #660066;">buttonText</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&lt;/a&gt;&lt;/div&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.'</span><span style="color: #339933;">+</span>o.<span style="color: #660066;">contentCls</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// [...]</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>Ensuite, il ajoute deux gestionnaires d’événement au bouton: un &#8216;mouseover&#8217; pour ouvrir le dialogue d&#8217;aide et un &#8216;click&#8217; pour fermer ce dernier.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Open the box on button mouseover, close it on click</span>
$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.'</span><span style="color: #339933;">+</span>o.<span style="color: #660066;">buttonCls</span><span style="color: #339933;">+</span><span style="color: #3366CC;">' a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">mouseover</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">parent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">prev</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.'</span><span style="color: #339933;">+</span>o.<span style="color: #660066;">contentCls</span><span style="color: #339933;">+</span><span style="color: #3366CC;">':hidden'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideDown</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">parent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">prev</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.'</span><span style="color: #339933;">+</span>o.<span style="color: #660066;">contentCls</span><span style="color: #339933;">+</span><span style="color: #3366CC;">':visible'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideUp</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Voilà tout. Facile non?</p>
<ul>
<li>Le code complet est ici: <strong><a title="jQuery helpbox source code" href="https://gist.github.com/1101480" target="_blank">jquery.helpbox.js</a></strong></li>
<li>La démo est là: <strong><a title="jQuery helpbox source code" href="http://www.dhar.fr/wp-content/demos/helpbox-demo.html" target="_blank">jQuery helpbox demo</a></strong></li>
</ul>
<p>Quelques ressources utiles pour finir:</p>
<ul>
<li><a title="jQuery Plugin Authoring" href="http://docs.jquery.com/Plugins/Authoring" target="_blank">jQuery Plugin Authoring</a></li>
<li><a title="Les bases du développement de plugin jQuery sur Learningjquery.com" href="http://www.learningjquery.com/2007/10/a-plugin-development-pattern" target="_blank">Les bases du développement de plugin jQuery</a> sur learningjquery.com</li>
</ul>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2010/09/plugin-jquery-aide-contextuelle-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QR Codes: intégration dans votre application iPhone en 10 minutes chrono!</title>
		<link>http://www.dhar.fr/2010/04/qr-codes-integration-dans-votre-application-iphone-en-10-minutes-chrono/</link>
		<comments>http://www.dhar.fr/2010/04/qr-codes-integration-dans-votre-application-iphone-en-10-minutes-chrono/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 22:24:39 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Marrant, Inutile, Sans Intérêt, voir même les deux]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[QRCode]]></category>
		<category><![CDATA[tutoriels]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=590</guid>
		<description><![CDATA[Pour les plus pressés, ça se passe ici: ZBar: How to add a barcode reader to an iPhone app Pour les autres, voilà un peu plus de détails: Les QR Codes sont de plus en plus répandus dans les applications mobiles. Au détour d&#8217;un projet iPhone, vous pourriez être amenés, tout comme moi, à devoir [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_595" class="wp-caption alignright" style="width: 160px"><a href="http://www.dhar.fr/wp-content/uploads/qrcode.png" rel="lightbox[590]"><img class="size-thumbnail wp-image-595" title="QR Code" src="http://www.dhar.fr/wp-content/uploads/qrcode-150x150.png" alt="" width="150" height="150" /></a><p class="wp-caption-text">Decode me if you can</p></div>
<h3>Pour les plus pressés, ça se passe ici:</h3>
<p><a title="ZBar: HOWTO: Add a barcode reader to an iPhone app" href="http://sourceforge.net/apps/mediawiki/zbar/index.php?title=HOWTO:_Add_a_barcode_reader_to_an_iPhone_app" target="_blank">ZBar: How to add a barcode reader to an iPhone app</a></p>
<h3>Pour les autres, voilà un peu plus de détails:</h3>
<p>Les <a title="QR Cod e (lien Wikipédia)" href="http://en.wikipedia.org/wiki/QR_Code" target="_blank">QR Codes</a> sont de plus en plus répandus dans les applications mobiles. Au détour d&#8217;un projet iPhone, vous pourriez être amenés, tout comme moi, à devoir décoder ces carrés &laquo;&nbsp;magiques&nbsp;&raquo;.<span id="more-590"></span></p>
<p>Si tel est votre cas, sachez que la tâche sera des plus simples grâce à l&#8217;excellent projet <a title="ZBar bar code reader" href="http://zbar.sourceforge.net/" target="_blank">ZBar bar code reader</a>. L&#8217;intégration du wrapper Objective-C de cette librairie m&#8217;a pris en tout en pour tout 10 minutes. De plus, le scan des codes est effectué à la volée (comprenez sans que l&#8217;utilisateur ait besoin de presser le bouton de l&#8217;appareil photo, dès que le code est dans le cadre). La documentation limpide fournie sur le wiki du projet transformera votre application en un lecteur de codes à rendre jaloux le caissier de l&#8217;hyper en bas de chez vous.</p>
<p>La doc est là: <a title="ZBar: HOWTO: Add a barcode reader to an iPhone app" href="http://sourceforge.net/apps/mediawiki/zbar/index.php?title=HOWTO:_Add_a_barcode_reader_to_an_iPhone_app" target="_blank">ZBar: How to add a barcode reader to an iPhone app</a>. Dépêchez-vous, plus que 9&#8217;30&#8230;</p>
<h4>Décoder des codes QR:</h4>
<ul>
<li><a title="ZBar App" href="http://itunes.apple.com/us/app/zbar-barcode-reader/id344957305?mt=8" target="_blank">L&#8217;application ZBar sur l&#8217;AppStore</a></li>
<li><a title="ZXing project" href="http://code.google.com/p/zxing/" target="_blank">ZXing</a> (prononcer &laquo;&nbsp;<a name="ZXing_(&quot;Zebra_Crossing&quot;)"></a></li>
</ul>
<h4>Générer des QR Codes en ligne:</h4>
<ul>
<li><a href="http://qrcode.kaywa.com/">Générateur de QR Code</a></li>
<li><a href="http://zxing.appspot.com/generator/">QR Code Generator</a></li>
</ul>
<p><a href="http://qrcode.kaywa.com/"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2010/04/qr-codes-integration-dans-votre-application-iphone-en-10-minutes-chrono/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>UIScrollView: Extention du protocole associé au delegate</title>
		<link>http://www.dhar.fr/2010/04/uiscrollview-extention-du-protocole-associe-au-delegate/</link>
		<comments>http://www.dhar.fr/2010/04/uiscrollview-extention-du-protocole-associe-au-delegate/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 22:31:17 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Développement iPhone]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=547</guid>
		<description><![CDATA[Après le grand ménage sur le blog, plein d&#8217;enthousiasme, j&#8217;ai entrepris de rédiger un tutoriel détaillé à propos du développement d&#8217;un ImageViewer pour iPhone, avec une interface la plus proche possible de l&#8217;application Photos. Au cours de l&#8217;écriture de ce billet, j&#8217;ai constaté 2 choses: Tout d&#8217;abord, ça fait un billet sacrément long, à l&#8217;écriture [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_592" class="wp-caption alignright" style="width: 171px"><a href="http://www.dhar.fr/wp-content/uploads/ImageViewer1.png" rel="lightbox[547]"><img class="size-medium wp-image-592 " title="ImageViewer" src="http://www.dhar.fr/wp-content/uploads/ImageViewer1-161x300.png" alt="" width="161" height="300" /></a><p class="wp-caption-text">UIScrollView dans un ImageViewer</p></div>
<p style="text-align: justify;">Après le grand ménage sur le blog, plein d&#8217;enthousiasme, j&#8217;ai entrepris de rédiger un tutoriel  détaillé  à propos du développement d&#8217;un ImageViewer pour iPhone, avec une interface la plus proche possible de l&#8217;application <em>Photos</em>. Au cours de l&#8217;écriture de ce billet, j&#8217;ai constaté 2 choses:</p>
<ul style="text-align: justify;">
<li>Tout d&#8217;abord, ça fait un billet sacrément long, à l&#8217;écriture comme à la lecture.</li>
<li>Ensuite et surtout, j&#8217;ai constaté que l&#8217;intérêt était assez limité car l&#8217;exercice s&#8217;est révélé relativement simple.</li>
</ul>
<p style="text-align: justify;">En revanche, lors du développement de mon ImageViewer, il y a un aspect qui a attiré mon attention: l&#8217;extension d&#8217;un protocole. Ce point précis peut présenter une certaine difficulté pour peu qu&#8217;on n&#8217;y ai jamais été confronté et il m&#8217;a été assez difficile de trouver des exemples clair sur le web.</p>
<p style="text-align: justify;">J&#8217;ai donc décidé de rédiger un billet plus court, qui détaille la façon de dériver la classe <em>UIScrollView</em> tout en étendant le protocole <em>UIScrollViewDelegate</em> associé.</p>
<p style="text-align: justify;"><span id="more-547"></span>Si vous souhaitez, comme moi, reproduire l&#8217;interface de l&#8217;application <em>Photos</em> de votre iPhone, vous allez sans doute créer un <em>UIScrollView</em> afin de permettre à l&#8217;utilisateur de naviguer d&#8217;une image à l&#8217;autre. Pour ce faire, le projet &quot;<a href="http://developer.apple.com/iphone/library/samplecode/Scrolling/Listings/MyViewController_m.html#//apple_ref/doc/uid/DTS40008023-MyViewController_m-DontLinkElementID_6" target="_blank">Scrolling</a>&quot; fourni en exemple dans la documentation d’Apple constitue un bon point de départ. La logique du scroll est contenue dans  les méthodes <em>viewDidLoad</em> et <em>layoutScrollImages</em> du fichier <em>MyViewController.m</em> mais il vous faudra l’adapter un peu à votre cas d’utilisation.</p>
<p style="text-align: justify;">En revanche, j&#8217;ai constaté que les événements de <em>Touch</em> n&#8217;étaient pas transmis par la <em>UIScrollView</em>. Gênant lorsque l&#8217;on veut ajouter des interactions en plus du scroll.</p>
<p style="text-align: justify;">Pour capturer ces événements, qui ne sont pas transmis par la <em>UIScrollView</em>, la logique voudrait que l&#8217;on créé une classe qui étends la scrollView.<br />
En surchargeant la méthode qui transmet les événements, on obtient ce qui suit:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// TapScrollView.h</span>
<span style="color: #a61390;">@interface</span> TapScrollView <span style="color: #002200;">:</span> UIScrollView <span style="color: #002200;">&#123;</span>
<span style="color: #002200;">&#125;</span>
<span style="color: #a61390;">@end</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">// TapScrollView.m</span>
<span style="color: #6e371a;">#import &quot;TapScrollView.h&quot;</span>
&nbsp;
<span style="color: #a61390;">@implementation</span> TapScrollView
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>touchesBegan<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSSet</span> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touches withEvent<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #002200;">&#91;</span>self.delegate tap<span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span>super touchesBegan<span style="color: #002200;">:</span>touches withEvent<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span>
<span style="color: #a61390;">@end</span></pre></div></div>

<p style="text-align: justify;">À ce stade, il faut ajouter la méthode <em>tap</em> au protocole qui défini le <em>delegate</em> de notre <em>TapScrollView</em>. On procède en ajoutant la définition d&#8217;un nouveau protocole dans le fichier <em>TapScrollView.h</em>. </p>
<p style="text-align: justify;">
Ce protocole va étendre <em>UIScrollViewDelegate</em> afin que l&#8217;on puisse encore recevoir les événements de touch, comme suit:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// TapScrollView.h</span>
<span style="color: #a61390;">@protocol</span> TapScrollViewDelegate &lt;UIScrollViewDelegate&gt;
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> tap;
&nbsp;
<span style="color: #a61390;">@end</span>
&nbsp;
<span style="color: #a61390;">@interface</span> TapScrollView <span style="color: #002200;">:</span> UIScrollView <span style="color: #002200;">&#123;</span>
<span style="color: #002200;">&#125;</span>
<span style="color: #a61390;">@end</span></pre></div></div>

<p style="text-align: justify;">Si on en reste là, la propriété <em>delegate</em> reste celle défini par <em>UIScrollView</em> car nous ne l&#8217;avons pas surchargée. </p>
<p style="text-align: justify;">On peut donc supposer que celle-ci répond au protocole <em>UIScrollViewDelegate</em>, et non pas <em>TapScrollViewDelegate</em> comme on l&#8217;aurai souhaité. Dans ce cas, il suffit de surcharger la propriété <em>delegate</em> dans <em>TapScrollView</em>.<br />
Voilà le code obtenu:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// TapScrollView.h</span>
<span style="color: #a61390;">@protocol</span> TapScrollViewDelegate &lt;UIScrollViewDelegate&gt;
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> tap;
&nbsp;
<span style="color: #a61390;">@end</span>
&nbsp;
<span style="color: #a61390;">@interface</span> TapScrollView <span style="color: #002200;">:</span> UIScrollView <span style="color: #002200;">&#123;</span>
	id&lt;TapScrollViewDelegate&gt; delegate;
<span style="color: #002200;">&#125;</span>
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>nonatomic, assign<span style="color: #002200;">&#41;</span> id&lt;TapScrollViewDelegate&gt; delegate;
<span style="color: #a61390;">@end</span></pre></div></div>

<p style="text-align: justify;">Ok, on approche du but. <em>TapScrollView</em> réponds bien au protocole et la méthode <em>tap</em> sera correctement appelée elle-aussi. En revanche, les méthodes du protocole <em>UIScrollViewDelegate</em> ne sont plus appelés&#8230;<br />
On tourne en rond.</p>
<p style="text-align: justify;">J&#8217;ai mis pas mal de temps à trouver la solution. L&#8217;astuce consiste à surcharger aussi les accès à la propriété <em>delegate</em>, de façon à transmettre les appels dans les deux sens (<em>UIScrollView</em> vers <em>TapScrollView</em> et vice-versa).<br />
Voilà le code final:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// TapScrollView.m</span>
<span style="color: #6e371a;">#import &quot;TapScrollView.h&quot;</span>
&nbsp;
<span style="color: #a61390;">@implementation</span> TapScrollView
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>touchesBegan<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSSet</span> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>touches withEvent<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIEvent <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>event <span style="color: #002200;">&#123;</span>
	<span style="color: #002200;">&#91;</span>self.delegate tap<span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span>super touchesBegan<span style="color: #002200;">:</span>touches withEvent<span style="color: #002200;">:</span>event<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>id&lt;TapScrollViewDelegate&gt;<span style="color: #002200;">&#41;</span> delegate <span style="color: #002200;">&#123;</span>
	<span style="color: #a61390;">return</span> <span style="color: #002200;">&#40;</span>id&lt;TapScrollViewDelegate&gt;<span style="color: #002200;">&#41;</span>super.delegate;
<span style="color: #002200;">&#125;</span> 
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> setDelegate <span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>id&lt;TapScrollViewDelegate&gt;<span style="color: #002200;">&#41;</span> aDelegate <span style="color: #002200;">&#123;</span>
	super.delegate <span style="color: #002200;">=</span> aDelegate;
<span style="color: #002200;">&#125;</span>
<span style="color: #a61390;">@end</span></pre></div></div>

<p style="text-align: justify;">Vous voilà donc avec une <em>ScrollView</em> qui, en plus de capturer les événements relatifs au scroll, va transmettre les actions de votre choix. Ici, un simple <em>tap</em>, mais le principe reste valable pour des actions plus complexes.</p>
<p style="text-align:justify;">
Quelques liens utilies pour finir:</p>
<ul>
<li><a href="http://developer.apple.com/iphone/library/samplecode/Scrolling/Listings/MyViewController_m.html#//apple_ref/doc/uid/DTS40008023-MyViewController_m-DontLinkElementID_6" target="_blank">Scrolling</a>: un sample project de la documentation Apple</li>
<li><a href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html" target="_blank">UIScrollViewDelegate Protocol Reference </a>: tout ce que fait le protocole associé aux UIScrollView (et ce qu&#8217;il ne fait pas)</li>
<li><a href="http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProtocols.html#//apple_ref/doc/uid/TP30001163-CH15" target="_blank"> Protocols </a>: la documentation iPhone sur les protocoles</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2010/04/uiscrollview-extention-du-protocole-associe-au-delegate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Spotify your Friends!</title>
		<link>http://www.dhar.fr/2009/10/spotify-your-friends/</link>
		<comments>http://www.dhar.fr/2009/10/spotify-your-friends/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 06:33:28 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Lectures, Bande-déssinée & Musique]]></category>
		<category><![CDATA[Sur le Web]]></category>
		<category><![CDATA[Musique]]></category>
		<category><![CDATA[spotify]]></category>
		<category><![CDATA[streaming audio]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=307</guid>
		<description><![CDATA[Après une assez longue absence, me voilà de retour pour pour présenter l&#8217;une des fonctionnalités les plus sympa de Spotify, le partage de la musique. Si le sujet vous interpelle, que vous ne connaissez pas Spotify, vous pouvez aussi lire mes 3 précédents articles sur le sujet: Spotify your Life ! &#8211; Présentation générale Spotify [...]]]></description>
			<content:encoded><![CDATA[<p>Après une assez longue absence, me voilà de retour pour pour présenter l&#8217;une des fonctionnalités les plus sympa de <a title="Spotify Official Website" href="http://www.spotify.com/" target="_blank">Spotify</a>, le partage de la musique.<br />
Si le sujet vous interpelle, que vous ne connaissez pas Spotify, vous pouvez aussi lire mes 3 précédents articles sur le sujet:</p>
<ol>
<li><a title="Spotify your life! | Dhar’s Web" href="../2009/05/spotify-your-life/" target="_self">Spotify your Life !</a> &#8211; Présentation générale<a title="Spotify your life! | Dhar’s Web" href="http://www.dhar.fr/2009/05/spotify-your-life/" target="_self"></a></li>
<li><a title="Spotify your Radio! | Dhar’s Web" href="http://www.dhar.fr/2009/05/spotify-your-life-la-radio/" target="_self">Spotify your Radio !</a> &#8211; La radio dans Spotify</li>
<li><a title="Spotify your Search! | Dhar’s Web" href="http://www.dhar.fr/2009/05/spotify-your-search/" target="_self">Spotify your Search!</a> &#8211; Recherches &laquo;&nbsp;avancées&nbsp;&raquo;</li>
</ol>
<h3>Les liens dans Spotify</h3>
<p>J&#8217;ai déjà abordé le sujet dans les articles précédent, mais un petit rappel semble nécessaire: dans Spotify tout est lien. Je m&#8217;explique. Sur la majorité des écrans, la plupart des textes affichés sont des liens qui vous permettent de naviguer dans l&#8217;application; comme vous le feriez sur un site Web. C&#8217;est valable pour les titres des morceaux, les titres des albums, mais aussi les artistes, les genres musicaux, etc. Pratique&#8230; D&#8217;autant plus que deux boutons (&laquo;&nbsp;Précédent&nbsp;&raquo; et &laquo;&nbsp;Suivant&nbsp;&raquo;) en haut à gauche de la fenêtre permettent de parcourir l&#8217;historique de navigation à la manière d&#8217;un navigateur Web.</p>
<p style="text-align: center;"><a href="http://www.dhar.fr/wp-content/uploads/spotify-link.png" rel="lightbox[307]"><img class="aligncenter size-medium wp-image-485" title="Liens Spotify" src="http://www.dhar.fr/wp-content/uploads/spotify-link-300x123.png" alt="" width="480" /></a></p>
<p>Mais ces liens ne sont pas simplement là pour faciliter la navigation au sein de l&#8217;application, ils permettent aussi, et c&#8217;est là toute l&#8217;ingéniosité du système, d&#8217;envoyer de la musique a d&#8217;autres utilisateurs de Spotify. Ainsi, lorsque vous souhaitez partager l&#8217;une de vos découvertes (morceau, album, artiste ou encore une playlist ou une recherche), il suffit de copier le lien pour aller le coller ou vous le souhaitez: votre blog, un client MSN/GTalk, etc; ou encore de &#8216;envoyer directement vers l&#8217;un des réseaux sociaux supportés (Twitter, Delicious ou Facebook). Le principe est même valable pour vos playlists, et comme toutes ces données sont stockées sur les serveurs de Spotify, chaque modification dans l&#8217;une de vos playlists sera reçue immédiatement par ceux à qui sont en train d&#8217;écouter vos morceaux.<span id="more-307"></span></p>
<h3>Les playlists collaboratives</h3>
<p>Résumons un peu. Parmi tous les morceaux que vous écoutez, vous en sélectionnez quelques-uns et les réunissez dans une playlists. Vous pouvez envoyer cette playlist à vos amis pour qu&#8217;ils découvrent vos goûts musicaux et profitent de votre sélection, et cela aussi simplement que si vous leur envoyiez un lien vers une page web. C&#8217;est déjà bien plus que ce vous auriez pu faire avec votre collection de mp3 et votre ancien player&#8230;</p>
<p>Mais Spotify va encore plus loin en ajoutant la notion de playlist collaborative. Le principe est simple: après avoir créé une liste de lecture, vous pouvez décider de la rendre &laquo;&nbsp;collaborative&nbsp;&raquo;. Ainsi, lorsque vous enverrez cette playlist a vos amis, ceux-ci pourront y ajouter ou supprimer des morceaux, de la même façon que pour leurs propres listes. En pratique, lorsque vous écoutez un morceau que vous souhaiteriez faire écouter à un ami, il suffit de l&#8217;ajouter à l&#8217;une des playlists collaboratives de ce dernier.</p>
<p>À l&#8217;utilisation, cet aspect collaboratif est vraiment un sacré plus qui m&#8217;a fait redécouvrir le partage de musique entre amis. Avoir régulièrement de nouveaux morceaux dans ses listes, et découvrir de nouveaux artistes de cette façon est un réel plaisir.</p>
<p>Pour finir, et afin de mettre cet article en pratique, voilà deux de mes playlists, dont une &laquo;&nbsp;collaborative&nbsp;&raquo;. N&#8217;hésitez pas à y ajouter des morceaux ou à m&#8217;envoyer vos propres listes de lecture.</p>
<ul>
<li><a href="http://open.spotify.com/user/dhar/playlist/5S54zdOp7wIXCb4ZRotP2c">On The Go</a></li>
<li><a href="http://open.spotify.com/user/dhar/playlist/1uO90n8LeYJLx09ZXIv1Nx">Dhar Collaborative Bookmarks (Public)</a></li>
</ul>
<p>Enjoy !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2009/10/spotify-your-friends/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Spotify your Search!</title>
		<link>http://www.dhar.fr/2009/05/spotify-your-search/</link>
		<comments>http://www.dhar.fr/2009/05/spotify-your-search/#comments</comments>
		<pubDate>Thu, 21 May 2009 10:51:18 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Lectures, Bande-déssinée & Musique]]></category>
		<category><![CDATA[Sur le Web]]></category>
		<category><![CDATA[Musique]]></category>
		<category><![CDATA[spotify]]></category>
		<category><![CDATA[streaming audio]]></category>
		<category><![CDATA[tutoriels]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=197</guid>
		<description><![CDATA[Voici mon troisième article à propos de Spotify. Au programme d'aujourd'hui, une petite explication concernant l'outil de recherche de Spotify: un outil assez complet, très utile mais qui restera réservé aux utilisateurs avancés et autres geeks tant qu'il restera privé d'une vraie interface graphique.]]></description>
			<content:encoded><![CDATA[<p>Voici mon troisième article à propos de Spotify. Au cours des articles précédents, j&#8217;ai présenté l&#8217;application dans les grandes lignes, puis j&#8217;ai mis l&#8217;accent sur la radio personnalisable. Ces deux billets sont disponibles ici:</p>
<ol>
<li>Présentation générale: <a title="Spotify your life! | Dhar’s Web" href="http://www.dhar.fr/2009/05/spotify-your-life/" target="_self">Spotify your Life !</a></li>
<li>La radio dans Spotify: <a title="Spotify your Radio! | Dhar’s Web" href="http://www.dhar.fr/2009/05/spotify-your-life-la-radio/" target="_self">Spotify your Radio !</a></li>
</ol>
<p><a href="http://www.dhar.fr/wp-content/uploads/spotify2.png" rel="lightbox[197]"><img class="aligncenter size-full wp-image-487" title="Illustration Spotify" src="http://www.dhar.fr/wp-content/uploads/spotify2.png" alt="" width="450" height="100" /></a></p>
<p>Au programme d&#8217;aujourd&#8217;hui, une petite explication concernant l&#8217;outil de recherche de Spotify: un outil assez complet, très utile mais qui restera réservé aux utilisateurs avancés et autres geeks tant qu&#8217;il restera privé d&#8217;une vraie interface graphique.<span id="more-197"></span></p>
<h3>Les recherches avancés</h3>
<p>Comme je l&#8217;ai dis plus haut, Spotify permet à ses utilisateurs d&#8217;effectuer de nombreuses recherches dans la multitude de titres disponibles.  En effet, vu la quantité impressionnante de morceaux disponibles à l&#8217;écoute, un outil de recherche efficace semble le pré-requis  indispensable au succès de l&#8217;application.</p>
<p>Et sur ce point, on sent tout de suite que l&#8217;idée est là, qu&#8217;il y a du potentiel, mais qu&#8217;il reste encore pas mal de boulot. En effet, alors que certains auraient pu se contenter d&#8217;une simple recherche par mot-clés (Je recherche <em>Coldplay</em>, je trouve tout ce qui s&#8217;y rapporte&#8230;) l&#8217;outil de recherche propose un tas d&#8217;options permettant d&#8217;effectuer des recherches très précises, mais il faut saisir sa recherche &laquo;&nbsp;à la main&nbsp;&raquo;, dans le champ de recherche de l&#8217;application.</p>
<p>Voilà comment cela se présente. Plusieurs mots-clefs sont à votre disposition pour affiner votre recherche:</p>
<ul>
<li><tt>genre:</tt> pour une recherche par style musical,</li>
<li><tt>year:</tt> Recherche par année,</li>
<li> <tt>artist:</tt> Rechercher un artiste,</li>
<li><tt>album:</tt>pour chercher un album en particulier,</li>
<li> <tt>track</tt><tt>:</tt> Si vous ne connaissez que le titre du morceau,</li>
<li> <tt>label:</tt>.Depuis la dernière mise à jour, il est possible de chercher d&#8217;après le label éditeur d&#8217;un artiste/album</li>
</ul>
<p>Et il est évidement possible de les combiner entre eux pour trouver le morceau des ses rêves.</p>
<p>Par exemple,en tapant la recherche suivante&#8230;</p>
<p><a title="Spotify, recherche avancée" href="http://open.spotify.com/search/genre%3a%22Heavy+Metal%22+label%3a%22Atlantic%22+year%3a2004-2009+-artist%3a%22P.O.D.%22" target="_blank"><tt>genre:"Heavy Metal" label:"Atlantic" year:2004-2009 -artist:"P.O.D."</tt></a></p>
<p>&#8230;vous allez trouver tous les titres correspondants au genre &laquo;&nbsp;<em>Heavy Metal</em>&laquo;&nbsp;, édités par le label &laquo;&nbsp;<em>Atlantic</em>&nbsp;&raquo; (pour ne pas dire &laquo;&nbsp;<em>Altantic Records</em>&laquo;&nbsp;) au cours des 5 dernières années, mais dont l&#8217;artiste n&#8217;est pas &laquo;&nbsp;<em>P.O.D.</em>&laquo;&nbsp;.</p>
<p>Puissant n&#8217;est-ce pas? Sans doute, mais ça demande quand même un peu de pratique pour trouver ce que l&#8217;on cherche&#8230; D&#8217;autant plus que le champ de recherche est assez petit et qu&#8217;on ne voit pas tout ce que l&#8217;on tape, de plus il est vraiment facile d&#8217;oublier un gillemet, de mal taper le nom d&#8217;un label ou encore de cherche un genre qui ne correspond à rien dans Spotify. Il est évident que ce genre de fonctionnalité est réservée aux plus &laquo;&nbsp;informaticiens&nbsp;&raquo; d&#8217;entre-nous et autres fans de la ligne de commande&#8230; Dommage aussi qu&#8217;il manque certains mots-clefs qui auraient pu être bien utiles, comme une recherche par pays, ou par type d&#8217;ablum (singles, compilations, etc. ).</p>
<p>Voilà, c&#8217;est à peu près tout pour les recherches. Mon prochain (et dernier) article sur Spotify présentera le système de liens ainsi que les playlists collaboratives.</p>
<p>Quelques liens utiles:</p>
<ul>
<li>La <a title="Spotify: liste des genres" href="http://spreadsheets.google.com/pub?key=psnjFY3R2itsqjinSs9hkZw" target="_blank">liste des &laquo;&nbsp;genres&nbsp;&raquo;</a> fournie par Spotify</li>
<li>Un outil en ligne pour faciliter les recherches: <a title="Spotify Super Search" href="http://apps.theilluminatedengineer.com/sss/" target="_blank">Spotify Super Search</a></li>
</ul>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2009/05/spotify-your-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing for Change</title>
		<link>http://www.dhar.fr/2009/05/playing-for-change/</link>
		<comments>http://www.dhar.fr/2009/05/playing-for-change/#comments</comments>
		<pubDate>Fri, 15 May 2009 09:26:12 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Lectures, Bande-déssinée & Musique]]></category>
		<category><![CDATA[Sur le Web]]></category>
		<category><![CDATA[Causes]]></category>
		<category><![CDATA[Musique]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=205</guid>
		<description><![CDATA[Réunir des chanteurs et musiciens du monde entier et reprendre quelques uns des plus grands classiques de la chanson, dans la but de montrer que la musique est un langage universel, voilà la mission que se sont donnés les membres du mouvement Playing for Change. Transmettre la paix grâce à la musique, voilà une idée bien utopique, mais quoi qu'il en soit, cette vidéo aura au moins le pouvoir de vous donner le sourire pour une bonne partie de la journée...]]></description>
			<content:encoded><![CDATA[<p><object width="460" height="360"><param name="movie" value="http://www.youtube.com/v/Us-TVg40ExM&#038;hl=fr_FR&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Us-TVg40ExM&#038;hl=fr_FR&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="460" height="360"></embed></object></p>
<p>Réunir des chanteurs et musiciens du monde entier et reprendre quelques uns des plus grands classiques de la chanson, dans la but de montrer que la musique est un langage universel, voilà la mission que se sont donnés les membres du mouvement  <a title="Playing for Change" href="http://www.playingforchange.com/" target="_blank">Playing for Change</a>. Transmettre la paix grâce à la musique, voilà une idée bien utopique, mais quoi qu&#8217;il en soit, cette vidéo aura au moins le pouvoir de vous donner le sourire pour une bonne partie de la journée&#8230;</p>
<p>Quelques liens vers le site:</p>
<ul>
<li><a title="Playing for Change - The Journey" href="http://www.playingforchange.com/episodes/1/The_Journey" target="_blank">The Journey</a>: Comment tout a débuté</li>
<li><a title="Playing for Change - One Love" href="http://www.playingforchange.com/episodes/3/One_Love" target="_blank">One love</a>: un classique de Bob Marley</li>
<li><a title="Playing for Change - Blog" href="http://www.playingforchange.com/blog">Le blog Playing For Change</a></li>
</ul>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2009/05/playing-for-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spotify your Radio!</title>
		<link>http://www.dhar.fr/2009/05/spotify-your-life-la-radio/</link>
		<comments>http://www.dhar.fr/2009/05/spotify-your-life-la-radio/#comments</comments>
		<pubDate>Sun, 10 May 2009 21:34:58 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Lectures, Bande-déssinée & Musique]]></category>
		<category><![CDATA[Sur le Web]]></category>
		<category><![CDATA[Musique]]></category>
		<category><![CDATA[spotify]]></category>
		<category><![CDATA[streaming audio]]></category>
		<category><![CDATA[téléchargemments]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=149</guid>
		<description><![CDATA[Il y a quelques jours, je présentais Spotify, une application de streaming audio  qui, selon moi, réponds le mieux aux attentes des internautes qui cherchent une alternative légale, efficace et agréable au téléchargement"sauvage".

En terminant cet article, j'ai promis de détailler un peu mieux quelques-unes des fonctionnalités de l'application qui apportent un réel confort d'utilisation. En effet, que l'on parle de Spotify ou de ces concurrents,  l'intérêt principal du streaming audio est sans aucun doute la quantité des morceaux (mais à quoi ça sert si on ne trouve que ce qu'on connais déjà...)]]></description>
			<content:encoded><![CDATA[<p>Il y a quelques jours, je présentais <a title="Spotify Official Website" href="http://www.spotify.com/" target="_blank">Spotify</a> dans l&#8217;article intitulé <a title="Spotify your life! | Dhar’s Web" href="http://www.dhar.fr/2009/05/spotify-your-life/" target="_blank">Spotify your Life!</a>, une application de streaming audio  qui, selon moi, réponds le mieux aux attentes des internautes qui cherchent une alternative légale, efficace et agréable au téléchargement<em>&laquo;&nbsp;sauvage&nbsp;&raquo;</em>.</p>
<p>En terminant cet article, j&#8217;ai promis de détailler un peu mieux quelques-unes des fonctionnalités de l&#8217;application qui apportent un réel confort d&#8217;utilisation. En effet, que l&#8217;on parle de Spotify ou de ces concurrents,  l&#8217;intérêt principal du streaming audio est sans aucun doute la quantité des morceaux (mais à quoi ça sert si on ne trouve que ce qu&#8217;on connais déjà&#8230;)</p>
<h3>La Radio dans Spotify</h3>
<p>C&#8217;est par la radio que j&#8217;ai commencé à utiliser Spotify, et c&#8217;est donc cette fonctionnalité qui m&#8217;a d&#8217;abord convaincu d&#8217;utiliser l&#8217;application pour quelques temps. <span id="more-149"></span>Voilà comment ça se présente:</p>
<p style="text-align: center;"><a href="http://www.dhar.fr/wp-content/uploads/spotify-radio.png" rel="lightbox[149]"><img class="size-medium wp-image-486 aligncenter" title="Spotify: Radio" src="http://www.dhar.fr/wp-content/uploads/spotify-radio-300x192.png" alt="Spotify: Radio" width="450" /></a></p>
<p>L&#8217;intérêt principal, ce petit détail qui a fait que j&#8217;ai tout de suite accroché, c&#8217;est la possibilité d&#8217;écouter, en quelques clics, un flux musical personnalisé, adapté à ses propres goûts ou envies du moment. En effet, dans la partie haute, au centre, l&#8217;utilisateur à la possibilité de choisir à la fois les genres musicaux mais aussi les époques des morceaux qu&#8217;il souhaite écouter. Ainsi, on peut très facilement se construire une radio très sélective (Reggae des années 80 par exemple) ou bien opter pour des genres variés (Blues, Funk, Hard Rock, Hip-hop, Jazz, Punk, Rock des années 70 à nos jours).</p>
<p>Les résultats sont dans l&#8217;ensemble assez pertinents, même si l&#8217;on tombe de temps à autre sur un morceau inattendu. Par ailleurs, s&#8217;il arrive que le morceau en cours vous plaise particulièrement, il suffit d&#8217;un instant pour le sauvegarder dans ses favoris  grâce au menu contextuel, ou encore pour naviguer vers une section dédié à l&#8217;artiste concerné, présentant l&#8217;ensemble des albums disponibles, une biographie, etc.</p>
<p>Voilà pour la radio. Je pensais expliquer d&#8217;autres fonctionnalités dans cet article, mais comme je commence à traîner en longueur, je vais garder tout ça pour plus tard. Prochains articles: <a title="Dhar's Web - Spotify your Search!" href="http://www.dhar.fr/2009/05/spotify-your-search/" target="_self">les recherches avancées</a>, la navigation par liens et les playlists collaboratives.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2009/05/spotify-your-life-la-radio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amateurs de café?</title>
		<link>http://www.dhar.fr/2009/05/amateurs-de-cafe/</link>
		<comments>http://www.dhar.fr/2009/05/amateurs-de-cafe/#comments</comments>
		<pubDate>Sat, 09 May 2009 10:13:00 +0000</pubDate>
		<dc:creator>Olivier Audard</dc:creator>
				<category><![CDATA[Lectures, Bande-déssinée & Musique]]></category>
		<category><![CDATA[Marrant, Inutile, Sans Intérêt, voir même les deux]]></category>
		<category><![CDATA[Musique]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.dhar.fr/?p=162</guid>
		<description><![CDATA[Voilà une petite vidéo bien sympa qu'une amie m'a fait découvrir récemment . Comme je suis à la fois amateur de bon café, d'animation et de musique, j'ai assez vite accroché à ce clip d'animation qui illustre magnifiquement bien la musique et les textes de Oldelaf et Monsieur D. Pour tous les mordus de chanson française qui aiment les textes un peu décalés, un groupe à suivre de près. ]]></description>
			<content:encoded><![CDATA[<p>Voilà une petite vidéo bien sympa qu&#8217;une amie m&#8217;a fait découvrir récemment . Comme je suis à la fois amateur de bon café, d&#8217;animation et de musique, j&#8217;ai assez vite accroché à ce clip d&#8217;animation qui illustre magnifiquement bien la musique et les textes de <a title="Oldelaf &amp; Monsieur D - Site officiel" href="http://www.legrosours.com/" target="_blank">Oldelaf et Monsieur D</a>. Pour tous les mordus de chanson française qui aiment les textes un peu décalés, un groupe à suivre de près.</p>
<p>Enjoy!</p>
<div><object width="528" height="318" data="http://www.dailymotion.com/swf/x2wfqp_le-cafe_creation&amp;colors=background:000000;foreground:FFFFFF;special:FFEEB5;&amp;related=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.dailymotion.com/swf/x2wfqp_le-cafe_creation&amp;colors=background:000000;foreground:FFFFFF;special:FFEEB5;&amp;related=1" /><param name="allowfullscreen" value="true" /></object><br />
<strong><a href="http://www.dailymotion.com/video/x2wfqp_le-cafe_creation">Le Cafe</a></strong></div>
]]></content:encoded>
			<wfw:commentRss>http://www.dhar.fr/2009/05/amateurs-de-cafe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

