<?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>Sukria.net &#187; Release</title>
	<atom:link href="http://www.sukria.net/fr/archives/tag/release/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sukria.net/fr</link>
	<description>I will press many keys on my keyboard causing an implementation to occur.</description>
	<lastBuildDate>Wed, 18 Jan 2012 17:11:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Dancer 1.150 released</title>
		<link>http://www.sukria.net/fr/archives/2010/02/17/dancer-1-150-released/</link>
		<comments>http://www.sukria.net/fr/archives/2010/02/17/dancer-1-150-released/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 17:39:00 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Dancer]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1442</guid>
		<description><![CDATA[I&#8217;m happy to announce the release of Dancer 1.150. This release has been made possible by six people, so it&#8217;s quite the first community-driven release of Dancer, and nothing could make me more happy than that. I really like the fact that different people, from different places come and contribute ideas, documentation and patches. This &#8230; <a href="http://www.sukria.net/fr/archives/2010/02/17/dancer-1-150-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to announce the release of <a href="http://dancer.sukria.net">Dancer</a> <a href="http://search.cpan.org/~sukria/Dancer-1.150/">1.150</a>.</p>
<p>This release has been made possible by six people, so it&#8217;s quite the first community-driven release of Dancer, and nothing could make me more happy than that.</p>
<p>I really like the fact that different people, from different places come and contribute ideas, documentation and patches. This is how open source works, and this is how great tools are written. I&#8217;m glad to see Dancer taking that path. I can only hope that it will be like that for a long time.</p>
<p>This new version provides mostly bugfixes and documentation updates. See <a href="http://cpansearch.perl.org/src/SUKRIA/Dancer-1.150/CHANGES">the changelog</a> for full details. Oh, and thanks to <a href="http://blog.preshweb.co.uk/">David Precious</a>, we now have <a href="http://search.cpan.org/~sukria/Dancer/lib/Dancer/Cookbook.pod">a shiny Cookbook</a>!</p>
<p>Major new features will come with 1.160, but that&#8217;s for another blog entry ;)</p>
<p>Enjoy your dances.</p>
<div id='teoShare' ><div id='teo2Google'>
		<!-- Place this tag where you want the +1 button to render -->
		<g:plusone size='tall' annotation='none'></g:plusone>

		<!-- Place this render call where appropriate -->
		<script type='text/javascript'>
		  (function() {
			var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
			po.src = 'https://apis.google.com/js/plusone.js';
			var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
		  })();
		</script>
		</div><div id="teoTweet" >
		<a href="http://twitter.com/share" class="twitter-share-button" data-count="none" data-via="sukria">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> </div></div><div style="height:0px; width:0px; overflow:hidden;"><a href="http://www.zeitblog.com/?in=plugin">blog tools and plugins from www.zeitblog.com</a></div><p>Related posts:<ol>
<li><a href='http://www.sukria.net/fr/archives/2009/09/19/perl-dancer-0-9904-released/' rel='bookmark' title='Perl Dancer 0.9904 released'>Perl Dancer 0.9904 released</a> <small>I&#8217;ve just published a new version of Dancer. It&#8217;s basically...</small></li>
<li><a href='http://www.sukria.net/fr/archives/2010/01/06/dancer-1-100-released/' rel='bookmark' title='Dancer 1.100 released'>Dancer 1.100 released</a> <small>A new version of Dancer has just been published on...</small></li>
<li><a href='http://www.sukria.net/fr/archives/2010/05/18/dancer-1-18-released/' rel='bookmark' title='Dancer 1.18 released'>Dancer 1.18 released</a> <small>I&#8217;m glad to announce a new major release of Dancer,...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/fr/archives/2010/02/17/dancer-1-150-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dancer 1.100 released</title>
		<link>http://www.sukria.net/fr/archives/2010/01/06/dancer-1-100-released/</link>
		<comments>http://www.sukria.net/fr/archives/2010/01/06/dancer-1-100-released/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 17:35:08 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[CPAN]]></category>
		<category><![CDATA[Dancer]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1368</guid>
		<description><![CDATA[A new version of Dancer has just been published on CPAN. It was a good time to do it, according to the changelog, as you can see: * Support for multiple method routes at once with 'any' * Templates engines + Bug fixes in Dancer::Template::Simple (Jury Gorky) + Refactoring of the factory + option for &#8230; <a href="http://www.sukria.net/fr/archives/2010/01/06/dancer-1-100-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://search.cpan.org/~sukria/Dancer-1.100/">new version</a> of <a href="http://dancer.sukria.net">Dancer</a> has just been published on CPAN. It was a good time to do it, according to the changelog, as you can see:</p>
<pre>
    * Support for multiple method routes at once with 'any'
    * Templates engines
      + Bug fixes in Dancer::Template::Simple (Jury Gorky)
      + Refactoring of the factory
      + option for disabling the layout in the template helper.
    * New session engine based on encrypted cookies (Alex Kapranof)
    * More HTTP codes supported for a better REST compat (Nate Jones)
    * Documentation updates
    * script/dancer now requires an appname
    * New Makefile.PL with better metadata (CPAN Service)
</pre>
<p>I&#8217;m pretty glad to underline that this release is the first one where most of the changes are written by other developers than me, that&#8217;s really exciting to see more and more people involved with the project. </p>
<p>This release should also fix the test-suite which looks to be broken on most of the CPAN testers under version 1.000 (but sadly not on my workstation, so I wasn&#8217;t aware of it).</p>
<p><b>UPDATE Jan. 7th 2010</b> : <a href="http://static.cpantesters.org/distro/D/Dancer.html#1.100">The CPAN-testers reports</a> show that 1.100 passes 100% of the tests under Linux and FreeBSD, that&#8217;s a good start!<br />
<a href="http://twitter.com/sukria">Stay tuned for next dances</a>! </p>
<div id='teoShare' ><div id='teo2Google'>
		<!-- Place this tag where you want the +1 button to render -->
		<g:plusone size='tall' annotation='none'></g:plusone>

		<!-- Place this render call where appropriate -->
		<script type='text/javascript'>
		  (function() {
			var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
			po.src = 'https://apis.google.com/js/plusone.js';
			var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
		  })();
		</script>
		</div><div id="teoTweet" >
		<a href="http://twitter.com/share" class="twitter-share-button" data-count="none" data-via="sukria">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> </div></div><div style="height:0px; width:0px; overflow:hidden;"><a href="http://www.zeitblog.com/?in=plugin">blog tools and plugins from www.zeitblog.com</a></div><p>Related posts:<ol>
<li><a href='http://www.sukria.net/fr/archives/2010/02/17/dancer-1-150-released/' rel='bookmark' title='Dancer 1.150 released'>Dancer 1.150 released</a> <small>I&#8217;m happy to announce the release of Dancer 1.150. This...</small></li>
<li><a href='http://www.sukria.net/fr/archives/2009/09/19/perl-dancer-0-9904-released/' rel='bookmark' title='Perl Dancer 0.9904 released'>Perl Dancer 0.9904 released</a> <small>I&#8217;ve just published a new version of Dancer. It&#8217;s basically...</small></li>
<li><a href='http://www.sukria.net/fr/archives/2010/05/18/dancer-1-18-released/' rel='bookmark' title='Dancer 1.18 released'>Dancer 1.18 released</a> <small>I&#8217;m glad to announce a new major release of Dancer,...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/fr/archives/2010/01/06/dancer-1-100-released/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Dancer 1.000 is out!</title>
		<link>http://www.sukria.net/fr/archives/2009/11/20/dancer-1-000-is-out/</link>
		<comments>http://www.sukria.net/fr/archives/2009/11/20/dancer-1-000-is-out/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 11:32:06 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Dancer]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1327</guid>
		<description><![CDATA[Well, here it is, after five months of development, Dancer is stable and feature-rich enough to be released as a shiny, stable, 1.000 version. Major changes for this version are the following: Support for cookies Support for YAML-file-based sessions Support for Memcached-based sessions Support for Syslog logging Less dependencies than ever (only HTTP::Server::Simple and Exception::Class &#8230; <a href="http://www.sukria.net/fr/archives/2009/11/20/dancer-1-000-is-out/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Well, here it is, after five months of development, Dancer is stable and feature-rich enough to be <a href="http://dancer.sukria.net/download">released</a> as a shiny, stable, 1.000 version.</p>
<p>Major changes for this version are the following:</p>
<ul>
<li>Support for cookies</li>
<li>Support for YAML-file-based sessions</li>
<li>Support for Memcached-based sessions</li>
<li>Support for Syslog logging</li>
<li>Less dependencies than ever (only HTTP::Server::Simple and Exception::Class are mandatory to start writing a Dancer app)</li>
</ul>
<p>The test suite has also been heavily enhanced, covering now more than 80% of the source code.</p>
<p>I&#8217;ve just uploaded the tarball to the CPAN, so expect it to be cpan-able in the next couple of hours.</p>
<p>I welcome very much feedback on this release, please feel free to give it a try ;)</p>
<p>Bugs reports are also welcome <a href="http://github.com/sukria/Dancer/issues">here</a>.</p>
<p>Oh, and by the way, <a href="http://twitter.com/sukria/status/5678482190">today is a special day</a> ;-)</p>
<div id='teoShare' ><div id='teo2Google'>
		<!-- Place this tag where you want the +1 button to render -->
		<g:plusone size='tall' annotation='none'></g:plusone>

		<!-- Place this render call where appropriate -->
		<script type='text/javascript'>
		  (function() {
			var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
			po.src = 'https://apis.google.com/js/plusone.js';
			var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
		  })();
		</script>
		</div><div id="teoTweet" >
		<a href="http://twitter.com/share" class="twitter-share-button" data-count="none" data-via="sukria">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> </div></div><div style="height:0px; width:0px; overflow:hidden;"><a href="http://www.zeitblog.com/?in=plugin">blog tools and plugins from www.zeitblog.com</a></div><p>Related posts:<ol>
<li><a href='http://www.sukria.net/fr/archives/2010/01/06/dancer-1-100-released/' rel='bookmark' title='Dancer 1.100 released'>Dancer 1.100 released</a> <small>A new version of Dancer has just been published on...</small></li>
<li><a href='http://www.sukria.net/fr/archives/2009/09/19/perl-dancer-0-9904-released/' rel='bookmark' title='Perl Dancer 0.9904 released'>Perl Dancer 0.9904 released</a> <small>I&#8217;ve just published a new version of Dancer. It&#8217;s basically...</small></li>
<li><a href='http://www.sukria.net/fr/archives/2009/10/16/session-support-for-dancer-1-0-is-near/' rel='bookmark' title='Session support for Dancer, 1.0 is near'>Session support for Dancer, 1.0 is near</a> <small>I&#8217;m glad to write this blog entry: Dancer now supports...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/fr/archives/2009/11/20/dancer-1-000-is-out/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Release de Coat 0.334</title>
		<link>http://www.sukria.net/fr/archives/2008/11/25/release-de-coat-0334/</link>
		<comments>http://www.sukria.net/fr/archives/2008/11/25/release-de-coat-0334/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 23:33:44 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
				<category><![CDATA[Main]]></category>
		<category><![CDATA[Coat]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://www.sukria.net/fr/?p=837</guid>
		<description><![CDATA[Ça faisait quelques semaines que cette version trainait dans mes cartons, je suppose qu&#8217;inconsciemment j&#8217;attendai une vraie raison de publier une nouvelle version (comprendre : une belle ligne dans le Changelog). Rached me l&#8217;a fournie en fin de journée au boulot : il a mis le doigt sur une brêche dans les perfs de Coat &#8230; <a href="http://www.sukria.net/fr/archives/2008/11/25/release-de-coat-0334/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ça faisait quelques semaines que cette version trainait dans mes cartons, je suppose qu&#8217;inconsciemment j&#8217;attendai une vraie raison de publier une nouvelle version (comprendre : une belle ligne dans le Changelog).</p>
<p><a href="http://www.benmur.net">Rached</a> me l&#8217;a fournie en fin de journée au <a href="http://www.yoolink.fr">bou</a><a href="http://www.yoolinkpro.com">lot</a> : il a mis le doigt sur une brêche dans les perfs de Coat lorsque l&#8217;on utilise la coercition (coerce dans Coat). La chute de perfs était due à une utilisation de Carp::confess, catchée par un bloc eval, ce qui est très mal, car à chaque fois que Perl utilise confess, il va chercher toutes les infos de la pile d&#8217;appel, ce qui est couteux.</p>
<p>Le mécanisme de coercition de Coat utilise désormais une méthode silencieuse qui retourne un booléen au lieu de faire un confess, on évite ainsi de ruiner les performances.</p>
<p>Outre ce correctif important, la version 0.334 apporte le support de BUILDARGS qui vous permet de construire vos arguments lors de l&#8217;instanciation d&#8217;objets.</p>
<p>Je viens d&#8217;uploader le package sur CPAN, donc d&#8217;ici quelques heures ça devrait être dispo <a href="http://search.cpan.org/perldoc?Coat">ici</a>.</p>
<h2>EDIT : 25 Nov. 2008, 10:07</h2>
<p>
Après quelques retours sur ce billet je m&#8217;aperçois que je parle trop vite et que certains ont eu la curiosité éveillée, je m&#8217;empresse de préciser donc :
</p>
<h3>Qu&#8217;est-ce que la coercition</h3>
<p>La coercition est un mécanisme qui permet de transformer à la volée une valeur d&#8217;un champ dans un format particulier. La coercition est utilisée pour modifier une valeur qui ne valide pas le type d&#8217;un attribut mais qui valide un type défini dans une coercition.</p>
<p>Un exemple simple : j&#8217;ai une classe qui possède un attribut &#8220;mysql_date&#8221; qui est valdie le format : <code>YYYY-MM-DD</code>. Je peux définir une coercition sur cet attribut pour toute valeur qui validerait le type &#8216;Timestamp&#8217; par exemple.</p>
<p>Ainsi je pourrai faire </p>
<pre>
$mon_objet->mysql_date( time() );
</pre>
<p>La coercition entrera donc en jeu et convertira l&#8217;entier retourné par time() en une date formatée selon la règle définie par l&#8217;utilisateur.</p>
<h3>Quel était le problème avec confess/eval ? Est-ce mal d&#8217;utiliser confess ?</h3>
<p>La chute de performance n&#8217;était pas due directement à confess, mais plutôt à l&#8217;utilisation que le mécanisme de coercition en faisait. Lorsqu&#8217;une valeur ne validait pas le type premier d&#8217;un attribut et qu&#8217;une coercition était définie, Coat bouclait sur toutes les coercitions définies afin de voir si la valeur validait le type source de la coercition. Or cette validation était faite avec le mécanisme standard de Coat qui déclenche une exception avec confess si la valeur n&#8217;est pas valide. Coat utilisait donc un bloc de code dans eval pour savoir si oui ou non la valeur est acceptée.<br />
C&#8217;est ici que le problème réside : on ne veut pas d&#8217;exception, on veut une réponse booléene, inutile donc de faire appel à confess (et donc de lire la pile d&#8217;appel), il nous faut une méthode de validation silencieuse, qui retourne 1 ou 0 selon la validité du champ.</p>
<p>On peut donc résumer en disant que confess ne pose aucun problème tant qu&#8217;il est utilisé uniquement pour interrompre l&#8217;exécution du programme, et surtout pas pour être catché afin d&#8217;avoir une réponse à une question booléene.</p>
<p>Pour les gens intéressés, <a href="http://svn.sukria.net/diff.php?repname=repos+2&#038;path=%2FCoat%2Flib%2FCoat%2FMeta%2FTypeConstraint.pm&#038;rev=236&#038;sc=0">le diff est dispo ici</a>, on constate également que la construction du message en cas d&#8217;exception était également couteuse, puisqu&#8217;elle fait appel a un bloc de code (les messages d&#8217;erreur de coercition sont des blocs de code, afin de pouvoir expander $_).</p>
<h3>Qu&#8217;est-ce que BUILDARGS</h3>
<p>Cette fonctionnalité vous permet de définir une méthode BUILDARGS dans votre classe. Lorsqu&#8217;un objet de cette classe est instancié, la méthode est appelée avec les arguments donnés à l&#8217;instanciation. Elle peut à loisir modifier les arguments et la valeur qu&#8217;elle retourne sera la structure de données finale reçue par l&#8217;instanciation.</p>
<p>On peut dire qu&#8217;il s&#8217;agit un pre-processing des arguments d&#8217;instanciation. Combiné avec une méthode BUILD ça peut être très combo-magique :-)</p>
<p>Voilà, j&#8217;éspère que ces précisions sont claires (je n&#8217;en suis pas sûr: c&#8217;est le matin et je n&#8217;ai pas bu mon café). Les commentaires sont là si vous avez des questions.</p>
<div id='teoShare' ><div id='teo2Google'>
		<!-- Place this tag where you want the +1 button to render -->
		<g:plusone size='tall' annotation='none'></g:plusone>

		<!-- Place this render call where appropriate -->
		<script type='text/javascript'>
		  (function() {
			var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
			po.src = 'https://apis.google.com/js/plusone.js';
			var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
		  })();
		</script>
		</div><div id="teoTweet" >
		<a href="http://twitter.com/share" class="twitter-share-button" data-count="none" data-via="sukria">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> </div></div><div style="height:0px; width:0px; overflow:hidden;"><a href="http://www.zeitblog.com/?in=plugin">blog tools and plugins from www.zeitblog.com</a></div><p>Related posts:<ol>
<li><a href='http://www.sukria.net/fr/archives/2009/06/16/de-la-bonne-facon-de-manipuler-le-temps-avec-coatpersistent/' rel='bookmark' title='De la bonne façon de manipuler le temps avec Coat::Persistent'>De la bonne façon de manipuler le temps avec Coat::Persistent</a> <small>Soit la situation suivante : vous avez une classe qui...</small></li>
<li><a href='http://www.sukria.net/fr/archives/2009/06/19/publication-de-coatpersistent-0200/' rel='bookmark' title='Publication de Coat::Persistent 0.200'>Publication de Coat::Persistent 0.200</a> <small>Je viens d&#8217;uploader Coat::Persistent sur CPAN. Voila une bonne chose...</small></li>
<li><a href='http://www.sukria.net/fr/archives/2009/06/13/coatpersistent-aux-journees-perl-2009/' rel='bookmark' title='Coat::Persistent aux Journées Perl 2009'>Coat::Persistent aux Journées Perl 2009</a> <small>Je reviens à l&#8217;instant des Journées Perl 2009. La conférence...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/fr/archives/2008/11/25/release-de-coat-0334/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

