<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">

	<title>Xavier Robin – Tag – My website</title>
	<id>tag:xavier.robin.name,2010-05-28:/en/feed/tag/my_site</id>
	<link rel="self" href="https://xavier.robin.name/en/feed/tag/my_site" />
	<link rel="alternate" href="https://xavier.robin.name/en/tag/my_site"/>
	<updated>2025-09-24T14:35:24.241673000+02:00</updated>
	<sy:updatePeriod>weekly</sy:updatePeriod>
	<sy:updateFrequency>2</sy:updateFrequency>
	<link rel="license" type="application/rdf+xml" href="http://creativecommons.org/licenses/by-sa/3.0/rdf" />

	<icon>https://xavier.robin.name/en/img/favicon.ico</icon>

	<author>
		<name>Xavier Robin</name>
		<uri>https://xavier.robin.name/en/contact</uri>
	</author>
	

	<entry xml:lang="en" xml:base="https://xavier.robin.name/en/">
		<title type="html">Switching to Catalyst</title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
		<link href="https://xavier.robin.name/en/blog/2012/01/07/switching-to-catalyst"/>
		<id>tag:xavier.robin.name,2012-01-07:/blog/2012/01/07/switching-to-catalyst</id>
		<published>2012-01-07T16:42:10+01:00</published>
		<updated>2012-01-07T16:42:10+01:00</updated>
		<content type="html">&lt;p&gt;It should be rather transparent, but I just switched my website from &lt;a href=&quot;http://xavier.robin.name/blog/2010/06/13/eperl&quot;&gt;ePerl&lt;/a&gt; to &lt;a href=&quot;http://www.catalystframework.org/&quot;&gt;Catalyst&lt;/a&gt;, &lt;a href=&quot;http://xavier.robin.name/blog/2011/01/08/switch-to-catalyst&quot;&gt;as announced before&lt;/a&gt;. The application should be a bit more reliable (less error 500 pages, that is after the initial debugging period).&lt;/p&gt;</content>
		</entry>

	<entry xml:lang="fr" xml:base="https://xavier.robin.name/en/">
		<title type="html"></title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
		<link href="https://xavier.robin.name/en/blog/2011/02/14/réinitialisation-des-certificats-postfix"/>
		<id>tag:xavier.robin.name,2011-02-14:/blog/2011/02/14/r%C3%A9initialisation-des-certificats-postfix</id>
		<published>2011-02-14T09:04:02+01:00</published>
		<updated>2011-02-14T09:04:02+01:00</updated>
		<content type="html"></content>
		</entry>

	<entry xml:lang="en" xml:base="https://xavier.robin.name/en/">
		<title type="html">Installing a recent mod_fastcgi in Ubuntu 10.04.1</title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
		<link href="https://xavier.robin.name/en/blog/2011/01/09/installing-a-recent-mod_fastcgi-in-ubuntu-10.04.1"/>
		<id>tag:xavier.robin.name,2011-01-09:/blog/2011/01/09/installing-a-recent-mod_fastcgi-in-ubuntu-10.04.1</id>
		<published>2011-01-09T15:07:45+01:00</published>
		<updated>2011-01-09T15:07:45+01:00</updated>
		<content type="html">&lt;p&gt;Yesterday I found I had a &lt;a href=&quot;/blog/2011/01/08/switch-to-catalyst&quot;&gt;conflict between mod_deflate and mod_fastcgi&lt;/a&gt;. The bug is &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/libapache-mod-fastcgi/+bug/381384&quot;&gt;known to Ubuntu&lt;/a&gt;, but the proposed fix has never been committed. So I tried to install it manually. Here are the steps:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Go to &lt;a href=&quot;http://www.fastcgi.com/dist/&quot;&gt;http://www.fastcgi.com/dist/&lt;/a&gt; and get the latest snapshot (for me it was the &lt;a href=&quot;http://www.fastcgi.com/dist/mod_fastcgi-SNAP-0910052141.tar.gz&quot;&gt;05-Oct-2009 snapshot&lt;/a&gt;)
	&lt;pre&gt;wget http://www.fastcgi.com/dist/mod_fastcgi-SNAP-0910052141.tar.gz&lt;/pre&gt;&lt;/li&gt;
	&lt;li&gt;Extract and change directory: &lt;pre&gt;tar -xf mod_fastcgi-SNAP-0910052141.tar.gz 
cd mod_fastcgi-SNAP-0910052141/&lt;/pre&gt;&lt;/li&gt;
	&lt;li&gt;For Apache2, the installation instructions are in INSTALL.AP2. You just need to &lt;code&gt;cp Makefile.AP2 Makefile&lt;/code&gt; and then &lt;code&gt;make&lt;/code&gt; and &lt;code&gt;make install&lt;/code&gt;. But make doesn't run and complains about a missing file instead &lt;pre&gt;Makefile:12: /usr/local/apache2/build/special.mk: No such file or directory
make: *** No rule to make target `/usr/local/apache2/build/special.mk'.  Stop.&lt;/pre&gt; Hopefully the fix is trivial: in fact apache2 is in &lt;code class=&quot;folder&quot;&gt;/usr/share/&lt;/code&gt; instead of &lt;code class=&quot;folder&quot;&gt;/usr/local/&lt;/code&gt;, so the following command will fix it:  &lt;pre&gt;sed 's/\/usr\/local\/apache2/\/usr\/share\/apache2/' Makefile&lt;/pre&gt;&lt;/li&gt;
	&lt;li&gt;Now we can &lt;code&gt;make&lt;/code&gt; and &lt;code&gt;sudo make install&lt;/code&gt;. Don't forget to &lt;code&gt;sudo apt-get remove libapache2-mod-fastcgi&lt;/code&gt; before. In my case I used &lt;a href=&quot;http://en.wikipedia.org/wiki/CheckInstall&quot;&gt;checkinstall&lt;/a&gt; instead of &lt;code&gt;make install&lt;/code&gt; to avoid messing the system.&lt;/li&gt;
	&lt;li&gt;Re-enable mod_fastcgi with &lt;code&gt;a2enmod fastcgi&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That's it! Enjoy your browser not throbbing more than needed!&lt;/p&gt;</content>
		</entry>

	<entry xml:lang="en" xml:base="https://xavier.robin.name/en/">
		<title type="html">Switch to Catalyst</title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
		<link href="https://xavier.robin.name/en/blog/2011/01/08/switch-to-catalyst"/>
		<id>tag:xavier.robin.name,2011-01-08:/blog/2011/01/08/switch-to-catalyst</id>
		<published>2011-01-08T19:30:02+01:00</published>
		<updated>2011-01-08T19:30:02+01:00</updated>
		<content type="html">&lt;p&gt;There hasn't been much visible activity here recently. But it doesn't mean nothing is moving: I'm currently trying to switch from &lt;a href=&quot;/fr/blog/2010/06/13/eperl&quot;&gt;ePerl&lt;/a&gt; to a &lt;a href=&quot;http://www.catalystframework.org/&quot;&gt;Catalyst&lt;/a&gt; application.&lt;/p&gt;

&lt;p&gt;Using &lt;a href=&quot;http://www.dbix-class.org/&quot;&gt;DBIx::Class&lt;/a&gt; to handle database queries is very slow in CGI mode, as everything must be reloaded each time a page is displayed (and DBIx::Class is huge at that). Basically, each page require at least 1 second to build, half of it is loading the perl libraries. The server load is very low, so it's not a problem here; but it is one for you who need to wait each time you want to see a page! After considering switching to &lt;a href=&quot;http://perl.apache.org/&quot;&gt;mod_perl&lt;/a&gt;, I decided to prefer &lt;a href=&quot;http://www.fastcgi.com/&quot;&gt;FastCGI&lt;/a&gt; that will be more memory friendly (there is only 256 MB here, so I'd better not load the application in every apache process serving static content!) I could probably have done it with ePerl, but I already built &lt;a href=&quot;http://miapegeldb.expasy.org/&quot;&gt;a Catalyst app&lt;/a&gt; in the past, and that was fun and efficient.&lt;/p&gt;

&lt;p&gt;The application is nearly ready. I still need to fix &lt;a href=&quot;http://www.gossamer-threads.com/lists/catalyst/users/26229&quot;&gt;a known bug with mod_deflate that keeps Firefox throbbing after the page is loaded&lt;/a&gt; (it took me days to figure out what was happening!) The admin part is not done yet, but it can wait a bit. Normally you won't see any difference in the beginning… except that pages will load faster! Stay tuned…&lt;/p&gt;</content>
		</entry>

	<entry xml:lang="fr" xml:base="https://xavier.robin.name/en/">
		<title type="html"></title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
		<link href="https://xavier.robin.name/en/blog/2010/06/27/nouveautés"/>
		<id>tag:xavier.robin.name,2010-06-27:/blog/2010/06/27/nouveaut%C3%A9s</id>
		<published>2010-06-27T16:35:29+02:00</published>
		<updated>2010-06-27T16:35:29+02:00</updated>
		<content type="html"></content>
		</entry>

	<entry xml:lang="en" xml:base="https://xavier.robin.name/en/">
		<title type="html">Tags cloud</title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
			<category term="programming" label="Programming" scheme="https://xavier.robin.name/en/tag/programming" />
		
		<link href="https://xavier.robin.name/en/blog/2010/06/13/tags-cloud"/>
		<id>tag:xavier.robin.name,2010-06-13:/blog/2010/06/13/tags-cloud</id>
		<published>2010-06-13T19:34:58+02:00</published>
		<updated>2010-06-13T19:34:58+02:00</updated>
		<content type="html">&lt;p&gt;There are several &lt;a href=&quot;http://www.cpan.org/&quot;&gt;&lt;abbr title=&quot;Comprehensive Perl Archive Network&quot;&gt;CPAN&lt;/abbr&gt;&lt;/a&gt; modules to generate tag clouds. To cite only 3 of them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://search.cpan.org/perldoc?HTML::TagCloud&quot;&gt;HTML::TagCloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://search.cpan.org/perldoc?HTML::TagClouder&quot;&gt;HTML::TagClouder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://search.cpan.org/perldoc?Data::CloudWeights&quot;&gt;Data::CloudWeights&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I just added tags cloud on this site (&lt;a href=&quot;/&quot;&gt;look the new home page!&lt;/a&gt;) with &lt;code&gt;Data::CloudWeights&lt;/code&gt;. &lt;code&gt;HTML::TagCloud&lt;/code&gt; generate ugly HTML and CSS that cannot be modified. &lt;code&gt;HTML::TagClouder&lt;/code&gt; is marked as &lt;q&gt;*WARNING* Alpha software! I mean it!&lt;/q&gt; Not for me, thanks!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Data::CloudWeights&lt;/code&gt; is far the most flexible. It generates an arrayref of hashes from which you can pick size, occurences, colors and so on. I use the following subroutine to generate the cloud with a very simple and standard code:&lt;/p&gt;

&lt;pre&gt;use Data::CloudWeights;
sub tag_cloud {
	my @tags = @_;
	my $cloud = Data::CloudWeights-&gt;new;
	for my $tag (@tags) {
		# The followin line is a bit more complicated than shown here
		# $tag is a &lt;a href=&quot;http://search.cpan.org/perldoc?DBIx::Class&quot;&gt;DBIx::Class&lt;/a&gt; entry with more columns than displayed here
		$cloud-&gt;add($tag-&gt;tag, scalar  $tag-&gt;links, &quot;/tag/&quot; . $tag-&gt;tag);
	}
	my $cloud_html = &quot;&quot;;
	foreach my $tag (@{$cloud-&gt;formation}) {
		$cloud_html .= '&amp;lt;a href=&quot;' . $tag-&gt;{'value'} .
			'&quot; style=&quot;font-size: ' . $tag-&gt;{'size'} . 'em&quot;&amp;gt;';
		$cloud_html .= $tag-&gt;{'tag'};
		$cloud_html .= '&amp;lt;/a&amp;gt;';
	}
	return $cloud_html;
}&lt;/pre&gt;</content>
		</entry>

	<entry xml:lang="en" xml:base="https://xavier.robin.name/en/">
		<title type="html">ePerl</title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
			<category term="programming" label="Programming" scheme="https://xavier.robin.name/en/tag/programming" />
		
		<link href="https://xavier.robin.name/en/blog/2010/06/13/eperl"/>
		<id>tag:xavier.robin.name,2010-06-13:/blog/2010/06/13/eperl</id>
		<published>2010-06-13T18:32:35+02:00</published>
		<updated>2010-06-13T18:32:35+02:00</updated>
		<content type="html">&lt;p&gt;There are two versions of ePerl:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ossp.org/pkg/tool/eperl/&quot; hreflang=&quot;en&quot;&gt;The original version of Ralf S. Engelschall&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://marginalhacks.com/Hacks/ePerl/&quot; hreflang=&quot;en&quot;&gt;A forked version by David Ljung Madison&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;The former is a &lt;a href=&quot;http://en.wikipedia.org/wiki/C_%28programming_language%29&quot; title=&quot;C programming language on Wikipedia&quot;&gt;C&lt;/a&gt; wrapper around a perl module. The latter is written entirely in perl.&lt;/p&gt;
&lt;p&gt;I was using Ralf S. Engelschall's version until now, because it is in Debian repositories. However, I wanted to return an &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_Error&quot; title=&quot;List of HTTP status codes on Wikipedia&quot;&gt;HTTP 500 code&lt;/a&gt; upon error, so that Google would't index errors (as it currently does). It is hard-coded in the C code. Rather than recompiling, I tried the newer version from MarginalHacks. The error code is hard-coded as well, but it is in Perl, so easier to rewrite and to link with my standard error code.&lt;/p&gt;

&lt;p&gt;I had to modify my shebangs (&lt;code&gt;#!/usr/bin/eperl.pl --mode=CGI&lt;/code&gt; is fine), and also to correct an error in &lt;code class=&quot;file&quot;&gt;eperl.pl&lt;/code&gt; by adding &lt;/p&gt;
&lt;pre&gt;@files = $ENV{&quot;SCRIPT_FILENAME&quot;};&lt;/pre&gt;
&lt;p&gt;inside the&lt;/p&gt;&lt;pre&gt;if ($opt{'mode'} ne &quot;f&quot;) {&lt;/pre&gt;
&lt;p&gt;block (that is, between lines 220 and 224), because we don't want to use the HTTP path passed as argument in CGI mode, but rather the script file name.&lt;/p&gt;

&lt;p&gt;Unfortunately, I quickly noted that this new ePerl looses &lt;a href=&quot;http://en.wikipedia.org/wiki/Standard_streams#Standard_input_.28stdin.29&quot; title=&quot;Standard streams on Wikipedia&quot;&gt;STDIN&lt;/a&gt; data. That means, no &lt;a href=&quot;http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods&quot; title=&quot;Hypertext Transfer Protocol on Wikipedia&quot;&gt;POST&lt;/a&gt; data available in the script: and I use that for comments and contact. There is a &lt;code&gt;-t&lt;/code&gt; argument, but it had no effect for me. I'll stick to the old ePerl for the moment, and try to make sure my code runs fine, but I'll need to have a closer look into what happens exactly with input sooner or later.&lt;/p&gt;</content>
		</entry>

	<entry xml:lang="fr" xml:base="https://xavier.robin.name/en/">
		<title type="html">Frayeur avec iptables</title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
			<category term="software" label="Software" scheme="https://xavier.robin.name/en/tag/software" />
		
		<link href="https://xavier.robin.name/en/blog/2010/06/08/frayeur-avec-iptables"/>
		<id>tag:xavier.robin.name,2010-06-08:/blog/2010/06/08/frayeur-avec-iptables</id>
		<published>2010-06-08T17:51:42+02:00</published>
		<updated>2010-06-08T17:51:42+02:00</updated>
		<content type="html">&lt;p&gt;La frayeur du jour&amp;nbsp;: serveur bloqué par iptables&amp;nbsp;! J'avais pourtant fait attention de bien ouvrir les ports nécessaires&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;iptables -P INPUT ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j ACCEPT # ntp
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -P INPUT DROP&lt;/pre&gt;

&lt;p&gt;Heureusement, la &lt;a href=&quot;http://wiki.gandi.net/fr/hosting/using-linux/how_to_use_console&quot;&gt;console Gandi&lt;/a&gt; permet d'accéder à son serveur même bloqué pour en rétablir l'accès. Ouf&amp;nbsp;! Après quelques recherches, et la lecture d'&lt;a href=&quot;http://www.selbytech.com/2010/04/how-to-setup-iptables-for-asterisk-1-6-2-on-centos-5-4/&quot;&gt;un billet de SelbyTech sur iptables&lt;/a&gt;, je suspecte que l'interface &lt;a href=&quot;http://en.wikipedia.org/wiki/Loopback&quot;&gt;loopback&lt;/a&gt; doit être nécessaire pour &lt;abbr title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt;, Apache et &lt;abbr title=&quot;compagnie&quot;&gt;cie&lt;/abbr&gt;. Voici donc finalement les règles que j'ai utilisé&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j ACCEPT # ntp
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP&lt;/pre&gt;

&lt;p&gt;J'en profite pour ajouter une règle de &lt;a href=&quot;http://spamcleaner.org/fr/misc/w00tw00t.html&quot;&gt;SpamCleaner&lt;/a&gt;, et de l'adapter à une série de requêtes tentant (sans succès) d'accéder à un site distant détectée dans les logs d'Apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;iptables -I INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /w00tw00t.at.ISC.SANS.' -j DROP
iptables -I INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET http://' -j DROP&lt;/pre&gt;

&lt;p&gt;Tout à l'air de bien fonctionner. Au final, le serveur n'aura été inaccessible que quelques minutes.&lt;/p&gt;</content>
		</entry>

	<entry xml:lang="fr" xml:base="https://xavier.robin.name/en/">
		<title type="html">Commentaires ouverts</title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
		<link href="https://xavier.robin.name/en/blog/2010/06/05/commentaire-ouverts"/>
		<id>tag:xavier.robin.name,2010-06-05:/blog/2010/06/05/commentaire-ouverts</id>
		<published>2010-06-05T21:01:07+02:00</published>
		<updated>2010-06-05T21:01:07+02:00</updated>
		<content type="html">&lt;p&gt;Voilà, les commentaires sont ouverts&amp;nbsp;! Le site commence à prendre de la forme. Il reste encore à récupérer mes anciens billets postés ailleurs, et pas mal de détails à ajouter, mais globalement toutes les fonctionnalités importantes sont là.&lt;/p&gt;

&lt;p&gt;Si vous rencontrez un problème, n'hésitez pas à le rapporter. Si le problème est avec les commentaires, au moins un des moyens indiqués sur la page &lt;a href=&quot;/contact&quot;&gt;contact&lt;/a&gt; devrait fonctionner.&lt;/p&gt;</content>
		</entry>

	<entry xml:lang="fr" xml:base="https://xavier.robin.name/en/">
		<title type="html">Nouveau blog</title>
		
			<category term="my_site" label="My website" scheme="https://xavier.robin.name/en/tag/my_site" />
		
		<link href="https://xavier.robin.name/en/blog/2010/05/16/nouveau-blog"/>
		<id>tag:xavier.robin.name,2010-05-16:/blog/2010/05/16/nouveau-blog</id>
		<published>2010-05-16T15:29:37.137915000+02:00</published>
		<updated>2010-05-24T09:25:40+02:00</updated>
		<content type="html">&lt;p&gt;Encore un nouveau blog. Après avoir essayé &lt;a href=&quot;http://drupal.org/&quot;&gt;Drupal&lt;/a&gt; (trop compliqué), &lt;a href=&quot;http://dotclear.org/&quot;&gt;Dotclear&lt;/a&gt;, &lt;a href=&quot;http://www.s9y.org/&quot;&gt;Serendipity&lt;/a&gt;, &lt;a href=&quot;http://www.blosxom.com/&quot;&gt;Bloxsom&lt;/a&gt;, j'ai décidé de me coder un petit blog personnalisé en &lt;a href=&quot;http://www.ossp.org/pkg/tool/eperl/&quot;&gt;ePerl&lt;/a&gt;, avec une base de données &lt;a href=&quot;http://www.postgresql.org/&quot;&gt;PostgreSQL&lt;/a&gt;. Il y a encore pas mal de boulot avant d'avoir quelque chose de vraiment utilisable, mais je suis définitivement sur le bon chemin.&lt;/p&gt;</content>
		</entry>


</feed>