<?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"
	>

<channel>
	<title>sukria.net &#187; perl</title>
	<atom:link href="http://www.sukria.net/en/archives/category/perl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sukria.net/en</link>
	<description>Being a debian geek, that's a way of life!</description>
	<pubDate>Wed, 10 Dec 2008 10:01:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
			<item>
		<title>Coat 0.331 released</title>
		<link>http://www.sukria.net/en/archives/2008/07/04/coat-0331-released/</link>
		<comments>http://www.sukria.net/en/archives/2008/07/04/coat-0331-released/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 15:42:40 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[perl]]></category>

		<category><![CDATA[Coat]]></category>

		<category><![CDATA[Moose]]></category>

		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/?p=260</guid>
		<description><![CDATA[A new release of Coat is available on the CPAN: Coat 0.331
It fixes a bug that appeared recently, when I added the Moose-compatible type constraint mechanism, when an undefined value was set to an attribute, it was set to 1 instead of undef.
This bug has been found by Stéphane Pontier who was experimenting with Coat::Persistent, [...]]]></description>
			<content:encoded><![CDATA[<p>A new release of <a href="http://search.cpan.org/dist/Coat/">Coat</a> is available on the CPAN: Coat 0.331</p>
<p>It fixes a bug that appeared recently, when I added the Moose-compatible type constraint mechanism, when an undefined value was set to an attribute, it was set to 1 instead of undef.</p>
<p>This bug has been found by Stéphane Pontier who was experimenting with <a href="http://search.cpan.org/dist/Coat-Persistent/">Coat::Persistent</a>, thanks to him.</p>
<p>I&#8217;ve also cleaned the test-suite in order not to use Test::Exception and DateTime so the test suite can run smoothly on most systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2008/07/04/coat-0331-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>One week of holydays</title>
		<link>http://www.sukria.net/en/archives/2008/07/04/one-week-of-holydays/</link>
		<comments>http://www.sukria.net/en/archives/2008/07/04/one-week-of-holydays/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 09:28:05 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[Debian]]></category>

		<category><![CDATA[perl]]></category>

		<category><![CDATA[holydays]]></category>

		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/?p=259</guid>
		<description><![CDATA[It&#8217;s been a looong time since I blogged here. Perhaps I should write more frequently so you won&#8217;t start thinking I died silently ;).
I&#8217;m not dead. It&#8217;s just that I&#8217;ve started a company a couple of months ago and that does take a lot of my time. It&#8217;s pretty exciting, - as you can imagine [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a looong time since I blogged here. Perhaps I should write more frequently so you won&#8217;t start thinking I died silently ;).</p>
<p>I&#8217;m not dead. It&#8217;s just that I&#8217;ve started a company a couple of months ago and that does take a lot of my time. It&#8217;s pretty exciting, - as you can imagine - we&#8217;re using Debian everywhere and the team is great. I&#8217;ll write another blog-entry about that later.</p>
<p>In the meanwhile, I&#8217;m on holydays for a week, and I plan to squash my TODO list: </p>
<ul>
<li><a href="http://www.backup-manager.org">Backup Manager</a> (a couple of bugs have to be fixed)
</li>
<li><a href="http://www.electricsheep.org">Electricsheep</a> (a new upstream release is available)
</li>
<li>My Perl modules deserve a couple of maintenance too, like <a href="http://search.cpan.org/dist/Coat-Persistent/">Coat::Persistent</a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2008/07/04/one-week-of-holydays/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Moose&#8217;s type constraints in Coat 0.2</title>
		<link>http://www.sukria.net/en/archives/2008/05/11/mooses-type-constraints-in-coat/</link>
		<comments>http://www.sukria.net/en/archives/2008/05/11/mooses-type-constraints-in-coat/#comments</comments>
		<pubDate>Sun, 11 May 2008 21:21:11 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/?p=258</guid>
		<description><![CDATA[A new major release of Coat - the diet-Moose - is now available and provides support for type constraints. It&#8217;s now possible to define types, subtypes and enums as well as setting up coercions in Coat classes, in the exact same syntax as with Moose.
]]></description>
			<content:encoded><![CDATA[<p>A new major release of <a href="http://search.cpan.org/perldoc?Coat">Coat</a> - the diet-Moose - is now available and provides support for type constraints. It&#8217;s now possible to define <em>types</em>, <em>subtypes</em> and <em>enums</em> as well as setting up <em>coercions</em> in Coat classes, in the exact same syntax as with Moose.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2008/05/11/mooses-type-constraints-in-coat/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New release and plans for Coat::Persistent</title>
		<link>http://www.sukria.net/en/archives/2008/02/22/new-release-and-plans-for-coatpersistent/</link>
		<comments>http://www.sukria.net/en/archives/2008/02/22/new-release-and-plans-for-coatpersistent/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 22:19:39 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/archives/2008/02/22/new-release-and-plans-for-coatpersistent/</guid>
		<description><![CDATA[I&#8217;ve uploaded a new developer release of Coat::Persistent to the CPAN. In this version, the modules Cache::FastMmap and DBD::CSV are made optional (they were mandatory dependencies until then). Moreover, Coat::Persistent now uses DBIx::Sequence for primary keys generation.
After thinking a lot to the future of that tiny ORM (which is actually very small, unfinished and questionable) [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve uploaded <a href="http://search.cpan.org/dist/Coat-Persistent/">a new developer release of Coat::Persistent</a> to the CPAN. In this version, the modules Cache::FastMmap and DBD::CSV are made optional (they were mandatory dependencies until then). Moreover, Coat::Persistent now uses DBIx::Sequence for primary keys generation.</p>
<p>After thinking a lot to the future of that tiny ORM (which is actually very small, unfinished and questionable) I came to a conclusion: Class:DBIx is in the place and just rules. That&#8217;s an amazing ORM and is really a great module to use. -<em>I&#8217;m aware what follows in that blog entry may sound contradictory</em>- I work daily with Ruby on Rails, but I just love Perl and the goodness of CPAN, I love writing Perl code, I love writing Perl modules ; I also find Rails&#8217;ORM amaizingly well designed, easy-to-use and scalable. I like the choices made, well, I like how you can <em>feel</em> your database through that object-mapping abstraction layer that ActiveRecord provides.</p>
<p>My point here is not to discuss Class::DBIx, but rather to underline how Rails&#8217; ActiveRecord is something worth looking at, and something - I think - Perl lacks.</p>
<p>I may be wrong, but I feel like some Perl developers around could agree, I hope. I also hope I won&#8217;t trigger the anger of someone involved with Class::DBIx, which, let me say it again, is a great module.</p>
<p>My plan here is to take the <a href="http://api.rubyonrails.org/classes/ActiveRecord/Base.html">ActiveRecord API</a>, and try to upgrade Coat::Persistent, piece by piece, in order to get as close as possible to it. That&#8217;s an exciting challenge, and could give me enough intellectual food for the next months.</p>
<p>I may be targetting something too large for me, I may be taking the wrong path, but I feel like following the spirit of Perl taking that direction : There&#8217;s more than one way to do it, isn&#8217;t it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2008/02/22/new-release-and-plans-for-coatpersistent/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Write functional test-suites for webapps with Test::WWW::Mechanize::Runner</title>
		<link>http://www.sukria.net/en/archives/2007/12/19/write-functionnal-test-suites-for-webapps-with-testwwwmechanizerunner/</link>
		<comments>http://www.sukria.net/en/archives/2007/12/19/write-functionnal-test-suites-for-webapps-with-testwwwmechanizerunner/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 20:28:36 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[Test]]></category>

		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/archives/2007/12/19/write-functionnal-test-suites-for-webapps-with-testwwwmechanizerunner/</guid>
		<description><![CDATA[I&#8217;ve been playing with WWW::Mechanize in order to write some functional tests for a webapp. My goal is to simulate as closely as possible a human-made browsing: accessing pages, clicking here and there and submiting forms.
WWW::Mechanize is good. But if you want to be as close as possible to a real browsing, the best thing [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing with <a href="http://search.cpan.org/perldoc?WWW::Mechanize">WWW::Mechanize</a> in order to write some functional tests for a webapp. My goal is to simulate as closely as possible a human-made browsing: accessing pages, clicking here and there and submiting forms.</p>
<p>WWW::Mechanize is good. But if you want to be as close as possible to a real browsing, the best thing to do is to drive an instance of a real browser. There comes in play <a href="http://search.cpan.org/perldoc?Mozilla::Mechanize">Mozilla::Mechanize</a> and <a href="http://search.cpan.org/perldoc?Win32::IE::Mechanize">Win32::IE::Mechanize</a>. Both of them use the browser they implement to do the work, and that&#8217;s pretty great.</p>
<p>Even better : you want to support javascript and simulate real clicks done in the webpage? <a href="http://search.cpan.org/perldoc?Mozilla::Mechanize::GUITester">Mozilla::Mechanize::GUITester</a> does the job. The CPAN is really a gold-mine, you know.</p>
<p>I was happy, I could use several agents to run my tests, that was what I wanted. But when I started writing my tests suites, I realized I was about to write the same suites for each agent I wanted to test. That sucks. Do not repeat yourself, you know, the mantra. Hmm.</p>
<p>I got the idea of a small test-wrapper that could handle the suites and run them with the agent you like. After a couple of experiments I came to something I was happy with, and published the first version, it&#8217;s called <a href="http://search.cpan.org/perldoc?Test::WWW::Mechanize::Runner">Test::WWW::Mechanize::Runner</a>.</p>
<p>As you can read in the documentation, you write your test in a module that inherits from the runner; each of the test receives the agent in its argument list. Once the suites are defined in your module, just use it in your test script, set the agent you like and call the run() method.</p>
<p>For instance, say you want to run your &#8220;GoogleTest&#8221; suite with IE and Mozilla :</p>
<pre>
test-google.t:

use GoogleTest;
GoogleTest->init('msie');
GoogleTest->run();

GoogleTest->init('mozilla');
GoogleTest->run();
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2007/12/19/write-functionnal-test-suites-for-webapps-with-testwwwmechanizerunner/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Current playground&#8230;</title>
		<link>http://www.sukria.net/en/archives/2007/10/24/current-playground/</link>
		<comments>http://www.sukria.net/en/archives/2007/10/24/current-playground/#comments</comments>
		<pubDate>Wed, 24 Oct 2007 17:57:56 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/archives/2007/10/24/current-playground/</guid>
		<description><![CDATA[My work on using Coat (a Moose-compatible light module) and Coat::Persitent (the ORM) for writing a Rails-like framework for Perl is getting close to something interesting. 
I might release a documentation soon, in the meanwhile, you can check the teaser.
]]></description>
			<content:encoded><![CDATA[<p>My work on using <a href="http://search.cpan.org/author/SUKRIA/Coat-0.1_0.6/lib/Coat.pm">Coat</a> (a Moose-compatible light module) and <a href="http://search.cpan.org/~sukria/Coat-Persistent-0.0_0.1/lib/Coat/Persistent.pm">Coat::Persitent</a> (the ORM) for writing a Rails-like framework for Perl is getting close to something interesting. </p>
<p>I might release a documentation soon, in the meanwhile, <a href="http://www.sukria.net/perl/coat-mvc/">you can check the teaser</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2007/10/24/current-playground/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Coat 0.1_0.6</title>
		<link>http://www.sukria.net/en/archives/2007/10/11/coat-01_06/</link>
		<comments>http://www.sukria.net/en/archives/2007/10/11/coat-01_06/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 22:12:40 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/archives/2007/10/11/coat-01_06/</guid>
		<description><![CDATA[A new version of Coat  has just been uploaded to the CPAN, this one provides support for two new attribute options taken from Moose: 

required which tells the attribute must not be set to an undefined value
trigger which lets you define a code reference that will be called whenever the attribute is set

I&#8217;ve also [...]]]></description>
			<content:encoded><![CDATA[<p>A new version of Coat  has just been uploaded to the CPAN, this one provides support for two new attribute options taken from Moose: </p>
<ul>
<li><code>required</code> which tells the attribute must not be set to an undefined value</li>
<li><code>trigger</code> which lets you define a code reference that will be called whenever the attribute is set</li>
</ul>
<p>I&#8217;ve also rewrote the main documentation, taking bits from Moose&#8217;s and reorganizing the whole POD so it looks better. I&#8217;ve also removed the dependency to Scalar::Util::looks_like_number (which was used in 0.1_0.5 by Coat::Types) because it appears that function was not shipped with Perl 5.8.0. As my motto for Coat is <em>the more compatible, the better</em>, I decided not to use it anymore.</p>
<p>There are 129 tests now in the source tree and I think Coat is close to something stable. I welcome test reports and feedback, I hope I will be able to release a non-developer release soon.</p>
<p>While I&#8217;m at speaking about Coat, let&#8217;s say for the record that I&#8217;m also working on a persistence layer for Coat-built objects. The challenge here is to provide an ORM module that behaves quite the same as the one provided with Ruby on Rails : ActiveRecord. I&#8217;ve made a prototype that works pretty well, even if not complete. Maybe more about this later.</p>
<p>Stay tuned (and don&#8217;t forget: <em>use your coat when it&#8217;s rainy outside!</em>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2007/10/11/coat-01_06/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Coat 0.1_0.4</title>
		<link>http://www.sukria.net/en/archives/2007/09/24/coat-01_04/</link>
		<comments>http://www.sukria.net/en/archives/2007/09/24/coat-01_04/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 19:43:36 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/archives/2007/09/24/coat-01_04/</guid>
		<description><![CDATA[A new version of Coat went out of the SVN repo a minute ago, it will be available very soon in the CPAN.
The version provides all the important features I wanted to provide with Coat, namely:

a basic meta-class : Coat::Meta that provides class introspection
a default root object : Coat::Object that provides a default constructor
support for [...]]]></description>
			<content:encoded><![CDATA[<p>A new version of <a href="/perl/coat/">Coat</a> went out of the SVN repo a minute ago, it will be available very soon in the CPAN.</p>
<p>The version provides all the important features I wanted to provide with Coat, namely:</p>
<ul>
<li>a basic meta-class : Coat::Meta that provides class introspection</li>
<li>a default root object : Coat::Object that provides a default constructor</li>
<li>support for Moose&#8217;s attribute declaration with &#8220;has&#8221; with default values and type constraints validation</li>
<li>support for hooks : before, around and after modifiers</li>
</ul>
<p>Next target is to port test suites from Moose to ensure we actually are compatbile together&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2007/09/24/coat-01_04/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Coat entering Moose&#8217;s family</title>
		<link>http://www.sukria.net/en/archives/2007/09/20/coat-entering-mooses-family/</link>
		<comments>http://www.sukria.net/en/archives/2007/09/20/coat-entering-mooses-family/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 22:33:24 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/archives/2007/09/20/coat-entering-mooses-family/</guid>
		<description><![CDATA[I&#8217;m glad to announce that Coat&#8217;s source tree has just been imported into Moose&#8217;s SVN repository. After a couple of days of development and collaboration with Stevan and Mst (Class::MOP and Moose developers) the idea to put Coat and Moose together got stronger.
I was honoured to be asked to share the Moose repo, and I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m glad to announce that Coat&#8217;s source tree has just been imported into <a href="http://code2.0beta.co.uk/moose/svn/Coat/">Moose&#8217;s SVN repository</a>. After a couple of days of development and collaboration with <a href="http://search.cpan.org/~stevan/">Stevan</a> and <a href="http://search.cpan.org/~mstrout/">Mst</a> (Class::MOP and Moose developers) the idea to put Coat and Moose together got stronger.</p>
<p>I was honoured to be asked to share the Moose repo, and I thank you Moose people very much for hosting Coat like that, I hope this is the begining of long-and-happy collaboration. </p>
<p>Coat continues to get stronger, the last revision I commited <strike>today</strike>tonight was about the new Coat::Meta class, that takes care of everything regarding, well, the meta layer. The last big thing to address is the attribute types handling for which I plan to write Coat::Types. I&#8217;m not yet sure how I&#8217;ll implement it, I want to keep it simple although it has to be efficient and well designed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2007/09/20/coat-entering-mooses-family/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Coat: My answer to Moose dependencies</title>
		<link>http://www.sukria.net/en/archives/2007/09/14/coat-my-answer-to-moose-dependencies/</link>
		<comments>http://www.sukria.net/en/archives/2007/09/14/coat-my-answer-to-moose-dependencies/#comments</comments>
		<pubDate>Fri, 14 Sep 2007 16:45:02 +0000</pubDate>
		<dc:creator>sukria</dc:creator>
		
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.sukria.net/en/archives/2007/09/14/coat-my-answer-to-moose-dependencies/</guid>
		<description><![CDATA[Update : Thanks to Matt S. Trout who enlightened some issues with the first version of Coat, I&#8217;m currently rewriting it (most of the parts actually). The module has been removed from the CPAN until I have a version with a better code base. The work is going on nicely and Coat is getting better [...]]]></description>
			<content:encoded><![CDATA[<p>Update : Thanks to Matt S. Trout who enlightened some issues with the first version of Coat, I&#8217;m currently rewriting it (most of the parts actually). The module has been removed from the CPAN until I have a version with a better code base. The work is going on nicely and Coat is getting better and better every day, you can check <a href="http://svn.sukria.net/filedetails.php?repname=Alexis+Sukrieh%27s+SVN+Rpository&#038;path=%2FCoat%2Flib%2FCoat.pm&#038;rev=0&#038;sc=0">the SVN version</a> if you like to see where we are.</p>
<p>The history is simple: I had to write an API at work, I planed to write it with Moose. It was a good idea until I found out the company I work for was planning to release the code to their customers, meaning some of them under Windows systems.</p>
<p>Forcing Moose in the deployment was not possible according to my co-workers, they didn&#8217;t want to take a risk to complexify the deployment procedure with such a huge set of dependencies. </p>
<p>Then I started thinking about what I liked in Moose and realized the stuff I used didn&#8217;t justify such a huge set of deps. Basically I use the accessors automagic, the inheritance and the hooks. &#8220;Why not having a tiny module that provide that ?&#8221; I thought.</p>
<p>Then I got caught in a 3-days-evil-coding-whirl that has just unleashed me. <a href="http://www.sukria.net/perl/coat/">Coat is born</a>.</p>
<p>I know, I know, there is Moose::Tiny somewhere, bu it was too late when I found out. Coat was near to be released and nothing could stop it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sukria.net/en/archives/2007/09/14/coat-my-answer-to-moose-dependencies/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
