<?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>Pierre Carrier&#039;s blog</title>
	<atom:link href="http://gcarrier.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://gcarrier.fr</link>
	<description>Life, the Universe, and Everything. Nothing more.</description>
	<lastBuildDate>Sat, 17 Apr 2010 14:07:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Défi geek</title>
		<link>http://gcarrier.fr/2010/04/09/defi-geek/</link>
		<comments>http://gcarrier.fr/2010/04/09/defi-geek/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 21:12:49 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Universe]]></category>

		<guid isPermaLink="false">http://gcarrier.fr/?p=154</guid>
		<description><![CDATA[Ce d&#233;fi est une exp&#233;rience, il n&#39;y aucun prix pour le moment. Si la sauce prend, il est envisag&#233; d&#39;organiser des concours dans un cadre plus int&#233;ressant.
Ce probl&#232;me a &#233;t&#233; soulev&#233; par une grosse entreprise. La solution est d&#233;j&#224; connue, je ne le pose ici que pour le jeu. Bien entendu le probl&#232;me a &#233;t&#233; [...]]]></description>
			<content:encoded><![CDATA[<p>Ce d&eacute;fi est une exp&eacute;rience, il n&#39;y aucun prix pour le moment. Si la sauce prend, il est envisag&eacute; d&#39;organiser des concours dans un cadre plus int&eacute;ressant.</p>
<p>Ce probl&egrave;me a &eacute;t&eacute; soulev&eacute; par une grosse entreprise. La solution est d&eacute;j&agrave; connue, je ne le pose ici que pour le jeu. Bien entendu le probl&egrave;me a &eacute;t&eacute; ramen&eacute; &agrave; un cas d&#39;&eacute;cole pour faciliter la compr&eacute;hension et la r&eacute;flexion.</p>
<p>Il est inutile de tester votre solution et vous pouvez en proposer plusieurs via les commentaires. Ces derniers sont mod&eacute;r&eacute;s pour garder le secret quelques jours. Bien s&ucirc;r cela ne vous emp&ecirc;che pas de commenter que je suis une personne exc&eacute;crable ou que le multicast marche mieux sous NetBSD. Quiconque laisse un commentaire sera averti par E-mail de la mise en ligne de la solution.</p>
<p>Une version de ce probl&egrave;me correspondant &agrave; l&#39;environnement r&eacute;el de l&#39;entreprise arrivera peu apr&egrave;s la r&eacute;solution de ce premier probl&egrave;me. La complexit&eacute; et la difficult&eacute; seront sup&eacute;rieures.</p>
<p><strong>Objectif :</strong></p>
<p>Les clients envoient des requ&ecirc;tes en broadcast, un service d&eacute;j&agrave; configur&eacute; sur le serveur doit y r&eacute;pondre.</p>
<p><strong>Contexte :</strong></p>
<ul>
<li>Serveur Linux avec une carte Ethernet, configur&eacute; comme suit :
<ul>
<li>Distribution moderne g&eacute;n&eacute;rique (Debian, Ubuntu, Fedora, etc.) dont noyau Linux 2.6 ;</li>
<li>La carte Ethernet est configur&eacute;e avec <code>ifconfig eth0 10.0.0.1 netmask 255.255.255.0</code>, addresse de broadcast par d&eacute;faut soit 10.0.0.255 ;</li>
<li>L&#39;interface de loopback (lo) est disponible ;</li>
<li>Cha&icirc;nes netfilter vides, politique par d&eacute;faut ACCEPT, le reste de la configuration est celle de l&#39;installation par d&eacute;faut de la distribution ;</li>
</ul>
</li>
<li>Les clients sont sur le m&ecirc;me segment Ethernet (i.e. aucun routeur), sur 10.0.0.0/16, addresse broadcast par d&eacute;faut soit 10.0.255.255 ;</li>
<li>Les ports utilis&eacute;s ne sont pas connus (par exemple rpc.bootparamd).</li>
</ul>
<p><strong>Contraintes :</strong></p>
<ul>
<li>Le serveur ne peut &eacute;couter que sur 10.0.0.0/24 et 10.0.255.255, ne peut &eacute;mettre que sur 10.0.0.0/24 (les raisons pour ce type de contraintes seront plus claires dans la version complexe) ;</li>
<li>La configuration r&eacute;seau du serveur est librement modifiable tant que la r&egrave;gle pr&eacute;c&eacute;dente est respect&eacute;e et assur&eacute;e dans l&#39;espace noyau ;</li>
<li>La configuration r&eacute;seau des clients ne peut pas &ecirc;tre chang&eacute;e ;</li>
<li>Pas de patchs ou de paquets &eacute;sot&eacute;riques ;</li>
<li>La solution tient sur 3 commandes ex&eacute;cut&eacute;es en root. Elles ne peuvent reposer que sur des outils disponibles sur toute distribution moderne g&eacute;n&eacute;rique. Inutile de faire en sorte que les changements persistent apr&egrave;s un red&eacute;marrage, de toute fa&ccedil;on un serveur ne crashe pas et n&#39;a pas besoin de red&eacute;marrer.</li>
</ul>
<p>Si vous autorisez le serveur &agrave; &eacute;mettre sur 10.0.255.255 et acceptez d&#39;&ecirc;tres crades (mais compatibles avec au moins Solaris et Linux), une commande suffit.</p>
<h3>Edit du 17 avril 2010, aka &laquo; La soluce &raquo;</h3>
<p>Xav l&#39;emporte avec sauf erreur de ma part 2 fautes d&#39;&eacute;tourderie sur iptables (il faudrait utiliser -A au lieu de -l et &#8211;to-destination au lieu de -to) !</p>
<p>Je pr&eacute;f&egrave;re ne pas cr&eacute;er de VLAN et reposer sur du SNAT pour que les logiciels &laquo; voient &raquo; l&#39;adresse de destination des requ&ecirc;tes, c&#39;est plus transparent et &ccedil;a pourrait jouer un r&ocirc;le avec une impl&eacute;mentation de bootparamd par exemple (puisque le client demande entre autres quel routeur utiliser).</p>
<p>On peut attacher des <acronym title="Internet Protocol">IP</acronym> individuelles &agrave; une interface existante sans cr&eacute;er d&#39;interface virtuelle (eg eth0:1) et avec un masque implicite de /32 avec ip addr add.</p>
<p>Ma solution favorite est donc (avec :0-1023 pour d&eacute;sactiver le m&eacute;canisme de changement de ports) :</p>
<p><code># ip addr add 10.0.255.255 dev eth0<br />
	# iptables -t nat -A POSTROUTING -s 10.0.255.255 -j SNAT &ndash;-to-source 10.0.0.1:0-1023</code></p>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2010/04/09/defi-geek/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Synchronize desktop launchers’ position in RHEL5</title>
		<link>http://gcarrier.fr/2010/03/27/synchronize-desktop-launchers%e2%80%99-position-in-rhel5/</link>
		<comments>http://gcarrier.fr/2010/03/27/synchronize-desktop-launchers%e2%80%99-position-in-rhel5/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 18:07:50 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Universe]]></category>

		<guid isPermaLink="false">http://gcarrier.fr/?p=149</guid>
		<description><![CDATA[This is a simple snippet written for a customer.
#!/usr/bin/env ruby

=begin
=======================================
Synchronize desktop launchers&#39; position
    Ruby prototype for Gnome, RHEL5
******* Not endorsed by Red Hat *******
=======================================

WARNING
-------

This script will NOT work with a recent nautilus.
It should work nautilus 2.16.
Icons positions are stored in gconf in last releases.

LICENSE
-------

Copyright (c) 2010, Pierre Carrier &#60;pcarrier@redhat.com&#62;

Permission to use, copy, [...]]]></description>
			<content:encoded><![CDATA[<p>This is a simple snippet written for a customer.</p>
<pre class="brush:ruby">#!/usr/bin/env ruby

=begin
=======================================
Synchronize desktop launchers&#39; position
    Ruby prototype for Gnome, RHEL5
******* Not endorsed by Red Hat *******
=======================================

WARNING
-------

This script will NOT work with a recent nautilus.
It should work nautilus 2.16.
Icons positions are stored in gconf in last releases.

LICENSE
-------

Copyright (c) 2010, Pierre Carrier &lt;pcarrier@redhat.com&gt;

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

EXAMPLE
-------

To synchronize from $SRCUSER to $DSTUSER, use:

script.rb /home/${SRCUSER}/.nautilus/metafiles/file:%2F%2F%2Fhome%2F${SRCUSER}%2FDesktop.xml \
          /home/${DSTUSER}/.nautilus/metafiles/file:%2F%2F%2Fhome%2F${DSTUSER}%2FDesktop.xml

=end

require &quot;rexml/document&quot;
include REXML

srcfile = File.new(ARGV[0])
srcdoc = REXML::Document.new srcfile
srcfile.close

dstfile = File.new(ARGV[1])
dstdoc = REXML::Document.new dstfile
dstfile.close

XPath.each srcdoc, &quot;//directory/file&quot;  do |s|
  d = XPath.first dstdoc, &quot;//directory/file[@name=&#39;#{s.attributes[&#39;name&#39;]}&#39;]&quot;
  if d != nil then
    unless d.attributes[&#39;icon_position&#39;] == s.attributes[&#39;icon_position&#39;] then
      d.attributes[&#39;icon_position&#39;] = s.attributes[&#39;icon_position&#39;]
      print &quot;updated position for #{s.attributes[&#39;name&#39;]}\n&quot;
    end
  else
    dstdoc.root.add_element &#39;file&#39;, s.attributes
    print &quot;added info for #{s.attributes[&#39;name&#39;]}\n&quot;
  end
end

dstdoc.write File.new(ARGV[1],&#39;w&#39;)</pre>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2010/03/27/synchronize-desktop-launchers%e2%80%99-position-in-rhel5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Incoming&#8230;</title>
		<link>http://gcarrier.fr/2010/03/01/incoming/</link>
		<comments>http://gcarrier.fr/2010/03/01/incoming/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 22:23:18 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Universe]]></category>

		<guid isPermaLink="false">http://gcarrier.fr/?p=143</guid>
		<description><![CDATA[I am currently working on a new architecture for my server based on OpenVZ. After all, I need a reason for my new piece of hardware which features 24GB of RAM and a few terabytes of storage&#8230;
It will rely on LDAP and NFS for pretty much everything.
I&#39;ve also been playing with redis a lot lately. [...]]]></description>
			<content:encoded><![CDATA[<p>I am currently working on a new architecture for my server based on <a href="http://wiki.openvz.org/" onclick="pageTracker._trackPageview('/outgoing/wiki.openvz.org/?referer=');">OpenVZ</a>. After all, I need a reason for my new piece of hardware which features 24GB of RAM and a few terabytes of storage&#8230;</p>
<p>It will rely on LDAP and NFS for pretty much everything.</p>
<p>I&#39;ve also been playing with <a href="http://code.google.com/p/redis/" onclick="pageTracker._trackPageview('/outgoing/code.google.com/p/redis/?referer=');">redis</a> a lot lately. I absolutely <strong>love</strong> it.</p>
<p>I want most service, <acronym title="Pre-Hypertext Processing">PHP</acronym> or Ruby app to have its own container (most of them based on Arch Linux, with nice hacks I might document later). The base container is currently 120MB.</p>
<p>For all those reasons and because life can be fun, I am writing my own mail sending &amp; receiving, Twitter posting, logging and <acronym title="Internet Relay Chat">IRC</acronym> communication framework. The concept is to expose a clean <acronym title="Application Programming Interface">API</acronym> through redis and implement the corresponding &quot;gateways&quot; in their own virtual machines. I also intend to provide alternatives to standard tools; for example, I wrote a&nbsp;<code>sendmail</code>-compliant client. All this code will be open-sourced soon. I&#39;ll keep you updated!</p>
<p>On an unrelated note, I am currently following the RH300 &quot;RHCE Rapid Track Course&quot; and might be a Red Hat Certified Technician and&nbsp;Red Hat Certified Engineer by the end of the week&#8230; I will also be in Munich from Sunday to Tuesday. If a friendly face wants to see me there, <a href="mailto:friends@gcarrier.fr">here&#39;s my E-mail</a>!</p>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2010/03/01/incoming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO autofs via OpenLDAP on RHEL5, Fedora Core 12</title>
		<link>http://gcarrier.fr/2010/02/23/autofs-through-openldap-on-rhelfedora/</link>
		<comments>http://gcarrier.fr/2010/02/23/autofs-through-openldap-on-rhelfedora/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 00:41:32 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Universe]]></category>

		<guid isPermaLink="false">http://gcarrier.fr/?p=124</guid>
		<description><![CDATA[Please provide feedback in the comments, specially about other versions/distributions.
Server (hostname server.example.com)


# yum install openldap-servers openldap-clients

NFS:
# mkdir -p /export/foo; touch /export/foo/demofile
# echo &#34;/export/foo *(ro)&#34; &#62;&#62; /etc/exports
# chkconfig nfs on; service nfs start

LDAP:

Modify /etc/openldap/slapd.conf:

Add line 8:
include /etc/openldap/schema/redhat/autofs.schema

Modify suffix and rootdn by replacing dc=my-domain,dc=com by dc=example,dc=com
Define a rootpw by uncommenting:
rootpw secret

Give read-only access to everyone by adding:
access [...]]]></description>
			<content:encoded><![CDATA[<p>Please provide feedback in the comments, specially about other versions/distributions.</p>
<h3>Server (hostname server.example.com)</h3>
<ul>
<li>
<pre># yum install openldap-servers openldap-clients</pre>
</li>
<li>NFS:
<pre># mkdir -p /export/foo; touch /export/foo/demofile
# echo &quot;/export/foo *(ro)&quot; &gt;&gt; /etc/exports
# chkconfig nfs on; service nfs start</pre>
</li>
<li>LDAP:
<ul>
<li>Modify /etc/openldap/slapd.conf:
<ul>
<li>Add line 8:
<pre>include /etc/openldap/schema/redhat/autofs.schema</pre>
</li>
<li>Modify <tt>suffix</tt> and <tt>rootdn</tt> by replacing <code>dc=my-domain,dc=com</code> by <code>dc=example,dc=com</code></li>
<li>Define a <tt>rootpw</tt> by uncommenting:
<pre>rootpw secret</pre>
</li>
<li>Give read-only access to everyone by adding:
<pre>access to * by * read</pre>
</li>
</ul>
</li>
<li><code># chkconfig ldap on; service ldap start</code></li>
<li>Populate the directory:
<pre># ldapadd -c -x -D cn=Manager,dc=example,dc=com -w secret &lt;&lt; <acronym title="End of file">EOF</acronym>
dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain
objectClass: domainRelatedObject
associatedDomain: example.com

dn: ou=auto.master, dc=example, dc=com
objectClass: top
objectClass: automountMap
ou: auto.master

dn: cn=/home, ou=auto.master, dc=example, dc=com
objectClass: automount
cn: /home
automountInformation: ldap server.example.com:ou=auto.home,dc=example,dc=com

dn: ou=auto.home, dc=example, dc=com
objectClass: top
objectClass: automountMap
ou: auto.home

dn: cn=foo, ou=auto.home, dc=example, dc=com
objectClass: automount
cn: foo
automountInformation: -fstype=nfs,hard,intr,nodev,nosuid server.example.com:/export/foo
<acronym title="End of file">EOF</acronym></pre>
</li>
</ul>
</li>
</ul>
<h3>Client</h3>
<ul>
<li>Check connectivity &amp; name resolution:
<pre># ping server.example.com</pre>
</li>
<li>
<pre># yum install autofs</pre>
</li>
<li>Add <tt>ldap</tt> to the <tt>automount</tt> line in /etc/nsswitch.conf:
<pre>automount: files ldap</pre>
</li>
<li>In /etc/sysconfig/autofs:
<ul>
<li>Uncomment:
<pre>MAP_OBJECT_CLASS=&quot;automountMap&quot;
ENTRY_OBJECT_CLASS=&quot;automount&quot;
MAP_ATTRIBUTE=&quot;automountMapName&quot;
ENTRY_ATTRIBUTE=&quot;automountKey&quot;
VALUE_ATTRIBUTE=&quot;automountInformation&quot;</pre>
</li>
<li>Set those variables:
<pre>BROWSE_MODE=&quot;yes&quot;
LDAP_URI=&quot;ldap://server.example.com&quot;
SEARCH_BASE=&quot;dc=example,dc=com&quot;</pre>
</li>
</ul>
</li>
<li>
<pre># service autofs start</pre>
</li>
<li>Final check:
<pre># ls -l /home/foo/demofile</pre>
</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2010/02/23/autofs-through-openldap-on-rhelfedora/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looking for a job in UK</title>
		<link>http://gcarrier.fr/2010/01/14/looking-for-a-job/</link>
		<comments>http://gcarrier.fr/2010/01/14/looking-for-a-job/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 21:01:42 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://gcarrier.koon.fr/?p=100</guid>
		<description><![CDATA[Hello Community!
Sorry to invade planets with a classified&#8230;
After numerous random events, I moved to UK. I am now looking for a job. If you think you can help with my search, please have a look at my CV. Please contact me if anything comes to your mind!
By the way, I love UK websites. They&#8217;re cleaner, lighter &#38; [...]]]></description>
			<content:encoded><![CDATA[<p>Hello Community!</p>
<p>Sorry to invade planets with a classified&#8230;</p>
<p>After numerous random events, I moved to UK. I am now looking for a job. If you think you can help with my search, please have a look at <a href="http://gcarrier.fr/~gcarrier/CV.pdf">my CV</a>. Please <a href="mailto:work@gcarrier.fr">contact me</a> if anything comes to your mind!</p>
<p>By the way, I love UK websites. They&#8217;re cleaner, lighter &amp; more intuitive than most of the French ones.</p>
<p><strong>Quick update:</strong> Thanks everyone! Opportunities you helped me find were all very interesting. Decision was harsh. I finally went with Red Hat and will start there on Monday as a Technical Support Engineer.</p>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2010/01/14/looking-for-a-job/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cleanup your Google Chrome/Chromium history</title>
		<link>http://gcarrier.fr/2010/01/07/cleanup-your-google-chromechromium-history/</link>
		<comments>http://gcarrier.fr/2010/01/07/cleanup-your-google-chromechromium-history/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 06:43:51 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Planet Archlinux]]></category>

		<guid isPermaLink="false">http://gcarrier.koon.fr/?p=90</guid>
		<description><![CDATA[Just wanted to share this with you.
#!/bin/zsh
if [ a$(uname) = aDarwin ]
  then dbfile="$HOME/Library/Application Support/Google/Chrome/Default/History"
  else dbfile="$HOME/.chromium/???"; fi
blacklistfile=$HOME/.config/history-blacklist

if [ ! -f $dbfile ]
  then echo "oops! history db '$dbfile' not found!";
  exit -1; fi
if [ ! -f $blacklistfile ]
  then echo "oops! blacklist not found! please create '$blacklistfile' (see doc).";
  exit -2; fi
filter=""
while [...]]]></description>
			<content:encoded><![CDATA[<p>Just wanted to share this with you.</p>
<pre>#!/bin/zsh
if [ a$(uname) = aDarwin ]
  then dbfile="$HOME/Library/Application Support/Google/Chrome/Default/History"
  else dbfile="$HOME/.chromium/???"; fi
blacklistfile=$HOME/.config/history-blacklist

if [ ! -f $dbfile ]
  then echo "oops! history db '$dbfile' not found!";
  exit -1; fi
if [ ! -f $blacklistfile ]
  then echo "oops! blacklist not found! please create '$blacklistfile' (see doc).";
  exit -2; fi
filter=""
while read i; do filter="\n  url like '$i' or ${filter}"; done &lt; $blacklistfile
request="delete from urls where ${filter% or };"

echo -n "Do you want to execute:\n'${request}'\nin your chrome history db? [y/N] "
read answer; case $answer in
  y|Y) echo $request | sqlite3 $dbfile; return $?;;
  *) echo "mission abort, pu\$\$y!";; esac</pre>
<p>And in <tt>$HOME/.config/history-blacklist</tt>, use something like:</p>
<pre>%4chan.org%
%4chanarchive.org%
%piratebay.org%
%youtube.com%</pre>
<p>You need to close Chromium/Chrome before running this script (else you&#8217;ll hit a permanent db lock).</p>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2010/01/07/cleanup-your-google-chromechromium-history/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distributing packages</title>
		<link>http://gcarrier.fr/2009/03/02/distributing-packages/</link>
		<comments>http://gcarrier.fr/2009/03/02/distributing-packages/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 15:01:05 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[Planet Archlinux]]></category>

		<guid isPermaLink="false">http://gcarrier.koon.fr/?p=75</guid>
		<description><![CDATA[Distributing data can be an issue in FLOSS projects. One day, some IPv6-P2P-multicast-awesome-featured technology will solve all our problems. Internet will be made of undistinguished nodes, and the concept of client and server will disappear. Oops, that&#8217;s not my point (for French readers)!
ftp.archlinux.org, the default mirror for Arch, uses too much bandwidth. Even if the [...]]]></description>
			<content:encoded><![CDATA[<p>Distributing data can be an issue in FLOSS projects. One day, some IPv6-<acronym title="Peer to Peer">P2P</acronym>-multicast-awesome-featured technology will solve all our problems. Internet will be made of undistinguished nodes, and the concept of client and server will disappear. Oops, that&#8217;s <a href="http://www.fdn.fr/Internet-libre-ou-Minitel-2.html" onclick="pageTracker._trackPageview('/outgoing/www.fdn.fr/Internet-libre-ou-Minitel-2.html?referer=');">not <strong>my</strong> point (for French readers)</a>!</p>
<p><tt>ftp.archlinux.org</tt>, the default mirror for Arch, uses too much bandwidth. Even if the installer proposes to change this, it seems that a awful lot of persons don&#8217;t use it. That&#8217;s why devs chose to limit each connection to 50kbytes/s on it.</p>
<p>I wrote <a href="http://github.com/gcarrier/automirror" onclick="pageTracker._trackPageview('/outgoing/github.com/gcarrier/automirror?referer=');">two small <acronym title="Pre-Hypertext Processing">PHP</acronym> scripts</a> to allow geographic, cached distribution of clients to other mirrors.</p>
<p>On the first connection of an <acronym title="Internet Protocol">IP</acronym>, it uses <tt>GeoIP</tt> to choose its “nearest” mirror (random choice in the country mirrors list), and stores it in a <tt>memcached</tt> (for up to 1 month). Caching is necessary to avoid switching too often from a mirror to another, which might be serving different versions.</p>
<p>It gets the per-country mirrors lists through <a href="http://github.com/gcarrier/automirror/blob/master/mirrorlist" onclick="pageTracker._trackPageview('/outgoing/github.com/gcarrier/automirror/blob/master/mirrorlist?referer=');">an annotated /etc/pacman.d/mirrorlist</a>. For now we have to maintain, if I understood correctly, <tt>rsync</tt>, website and pacman databases, but are moving to a centralized database (maintained through django), so this should change later.</p>
<p>I didn&#8217;t get many opinions for now; feel free to react in comments! I&#8217;d also love to hear about other distros policy, and/or get contributions.</p>
<p>P.S.: That&#8217;s my first post since I got promoted as a dev in Arch Linux. Thanks to the whole team for letting me in. I don&#8217;t have much time these weeks, but should get a lot done next week.</p>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2009/03/02/distributing-packages/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Internet mobile « illimité » en 3G, pas cher, sans engagement !</title>
		<link>http://gcarrier.fr/2008/10/31/internet-mobile-illimite-en-3g-pas-cher/</link>
		<comments>http://gcarrier.fr/2008/10/31/internet-mobile-illimite-en-3g-pas-cher/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 01:29:13 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://gcarrier.koon.fr/?p=55</guid>
		<description><![CDATA[Vous aussi, bénéficiez d&#8217;un accès à Internet partout en France pour pas cher ! Bien sûr, l&#8217;« illimité » de mon titre est à prendre au sens opérateur : pas d&#8217;interruption stricte du service en cas de dépassement d&#8217;un quota. Par contre, Orange vous interdit la voix sur IP, le partage de documents de pair [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Orange" src="http://gcarrier.fr/wp-content/uploads/2008/10/logo_orange.png" alt="Orange" width="100" height="100" style="float: right;" />Vous aussi, bénéficiez d&#8217;un accès à Internet partout en France pour pas cher ! Bien sûr, l&#8217;« illimité » de mon titre est à prendre au sens opérateur : pas d&#8217;interruption stricte du service en cas de dépassement d&#8217;un quota. Par contre, Orange vous interdit la voix sur <acronym title="Internet Protocol">IP</acronym>, le partage de documents de pair à pair, se réserve le droit de brider (encore plus) la connexion si vous l&#8217;utilisez trop, <em>y tutti quanti</em>. Il faudra que je vérifie personnellement pour ce contrat précis, mais le contraire m&#8217;étonnerait.</p>
<p>Vous êtes prêts à braver le géant de la télécommunication en utilisant la connexion sur un écran autre que celui d&#8217;un téléphone ? Bravo. Après tout, que l&#8217;écran fasse 2,5 ou 10 pouces ne les regarde absolument pas.</p>
<p>Rendez-vous donc en agence, achetez une <a href="http://www.orange.fr/bin/frame.cgi?u=http://mobile.orange.fr/content/ge/high/v2_offre_boutique/offre/internet_everywhere/fie_sans_engagement.html" onclick="pageTracker._trackPageview('/outgoing/www.orange.fr/bin/frame.cgi?u=http_//mobile.orange.fr/content/ge/high/v2_offre_boutique/offre/internet_everywhere/fie_sans_engagement.html&amp;referer=');">clef <acronym title="Universal Serial Bus">USB</acronym> 3G</a> (maintenant gérée facilement sous Arch Linux, j&#8217;y reviendrai très prochainement), une <a href="http://www.orange.fr/bin/frame.cgi?u=http%3A//mobile.orange.fr/content/ge/high/v2_offre_boutique/offre/offres/mobicarte.html" onclick="pageTracker._trackPageview('/outgoing/www.orange.fr/bin/frame.cgi?u=http_3A//mobile.orange.fr/content/ge/high/v2_offre_boutique/offre/offres/mobicarte.html&amp;referer=');">Mobicarte</a>, puis souscrivez à l&#8217;option <a href="http://mobile.orange.fr/content/ge/high/v2_offre_boutique/offre/popup_tarifs/popup_tarifs_orange_world.html" onclick="pageTracker._trackPageview('/outgoing/mobile.orange.fr/content/ge/high/v2_offre_boutique/offre/popup_tarifs/popup_tarifs_orange_world.html?referer=');">internet max</a> à 9 euros par mois et ça glisse (hors CGV) !</p>
<p>Le coût initial est alors de 69 euros pour la clef, sur lesquels 30 euros sont remboursés jusqu&#8217;au 12 novembre, auxquels s&#8217;ajoutent 30 euros pour la mobicarte (ou 35 euros avec un mobile des moins chers). Les frais mensuels s&#8217;élèvent dès lors à 10 euros par mois (prix des recharges valables 15 jours à acheter peu avant chaque échéance). La reconduction est tacite, mais aucun engagement.</p>
<p>Apparemment, le débit est actuellement bridé à 50 ko/s (observé chez <tt>yam</tt>). Décevant pour une 3G au débit maximal théorique de 3,6mbit/s (avec ce dongle), beaucoup moins en EDGE ou pire, GPRS… Je vous en dirais plus quand j&#8217;aurais moi-même investi.</p>
<p>Pour un étudiant à fort besoin de mobilité (programme d&#8217;échange international, stage, etc.), ce peut être une solution intéressante pour relever son courrier, se documenter, etc.</p>
<p>Je ne vais pas vous énumérer davantage les utilisations possibles d&#8217;Internet, d&#8217;autant qu&#8217;il serait préférable de s&#8217;en tenir à ce genre de « classiques » peu consommateurs de bande passante et proches de ce qui se fait sur un quelconque mobile. Reste à déterminer la tolérance d&#8217;Orange vis-à-vis de ce détournement, pour éventuellement pouvoir se faire plus plaisir…</p>
<p>Je ne suis bien entendu pas responsable des conséquences que pourrait avoir la lecture de ce billet, désobéissance civique, vandalisme et mensonges relatif au gateau compris.</p>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2008/10/31/internet-mobile-illimite-en-3g-pas-cher/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>100 packages!</title>
		<link>http://gcarrier.fr/2008/10/26/100-packages/</link>
		<comments>http://gcarrier.fr/2008/10/26/100-packages/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 04:42:56 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[Distributions]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenOffice.org]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[Zemanta]]></category>

		<guid isPermaLink="false">http://gcarrier.koon.fr/?p=37</guid>
		<description><![CDATA[






As I don&#8217;t write a lot on this blog, I thought a good excuse for a new post could be this new step: by counting both unsupported and [community] packages, I have now 100 packages in Arch Linux! It&#8217;s not simply a symbolic number: I won&#8217;t be able to see more packages in one page on [...]]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img zemanta-action-click">
<div class="mceTemp">
<dl class="wp-caption alignright" style="width: 110px;">
<dt class="wp-caption-dt"><a href="http://www.crunchbase.com/person/botjan-peti" onclick="pageTracker._trackPageview('/outgoing/www.crunchbase.com/person/botjan-peti?referer=');"><img title="Image representing Boštjan Špetič as depicted ..." src="http://www.crunchbase.com/assets/images/resized/0001/6436/16436v1-max-250x250.jpg" alt="Image representing Boštjan Špetič as depicted ..." width="100" height="100" /></a></dt>
</dl>
</div>
</div>
<p>As I don&#8217;t write a lot on this blog, I thought a good excuse for a new post could be this new step: by counting both unsupported and [community] packages, I have now <a href="http://aur.archlinux.org/packages.php?O=0&amp;L=0&amp;C=0&amp;K=gcarrier&amp;SeB=m&amp;SB=n&amp;SO=a&amp;PP=100&amp;do_Search=Go" onclick="pageTracker._trackPageview('/outgoing/aur.archlinux.org/packages.php?O=0_amp_L=0_amp_C=0_amp_K=gcarrier_amp_SeB=m_amp_SB=n_amp_SO=a_amp_PP=100_amp_do_Search=Go&amp;referer=');">100 packages</a> in <a class="zem_slink" title="Arch Linux" rel="wikipedia" href="http://en.wikipedia.org/wiki/Arch_Linux" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Arch_Linux?referer=');">Arch Linux</a>! It&#8217;s not simply a symbolic number: I won&#8217;t be able to see more packages in one page on <acronym title="ArchLinux User-Community Repository">AUR</acronym>! It is a real pleasure to contribute to this great distribution, even if I started working on <a class="zem_slink" title="Fedora Project" rel="wikipedia" href="http://en.wikipedia.org/wiki/Fedora_Project" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Fedora_Project?referer=');">Fedora</a> for some of my extravagant expectations. Something else: I started using <a class="zem_slink" title="Zemanta" rel="homepage" href="http://www.zemanta.com" onclick="pageTracker._trackPageview('/outgoing/www.zemanta.com?referer=');">Zemanta</a>. I&#8217;m pretty proud to know one of the founders of Zemanta Ltd., Boštjan Špetič: I worked with the kiberpipa crew on the <a class="zem_slink" title="OpenOffice.org" rel="homepage" href="http://www.openoffice.org/" onclick="pageTracker._trackPageview('/outgoing/www.openoffice.org/?referer=');">OpenOffice.org</a> conferences video streaming and he seemed a very competent and available person. I might write on Zemanta another time, but for now, I can see both huge benefits and a few disapointments.</p>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2008/10/26/100-packages/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Soirée BDE Arsh</title>
		<link>http://gcarrier.fr/2008/09/28/soiree-bde-arsh/</link>
		<comments>http://gcarrier.fr/2008/09/28/soiree-bde-arsh/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 00:34:03 +0000</pubDate>
		<dc:creator>gcarrier</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://gcarrier.koon.fr/?p=34</guid>
		<description><![CDATA[Après quelques tentatives avec les diaporamas Flash de flickr, je reviens à quelque chose de plus propre.
Voici donc les photos d&#8217;une soirée ma foi fort sympathique.]]></description>
			<content:encoded><![CDATA[<p><a class="tt-flickr tt-flickr-Thumbnail" title="_IGP3928" href="http://gcarrier.koon.fr/photos/photo/2889949507/_igp3928.html" onclick="pageTracker._trackPageview('/outgoing/gcarrier.koon.fr/photos/photo/2889949507/_igp3928.html?referer=');"><img class="alignright" src="http://farm4.static.flickr.com/3043/2889949507_44e578873e_t.jpg" alt="_IGP3928" width="100" height="100" /></a>Après quelques tentatives avec les diaporamas Flash de flickr, je reviens à quelque chose de plus propre.</p>
<p>Voici donc <a href="http://gcarrier.koon.fr/photos/album/72157607524303513/le-cafe-des-beaux-arts-2008-09-25.html" onclick="pageTracker._trackPageview('/outgoing/gcarrier.koon.fr/photos/album/72157607524303513/le-cafe-des-beaux-arts-2008-09-25.html?referer=');">les photos d&#8217;une soirée ma foi fort sympathique</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://gcarrier.fr/2008/09/28/soiree-bde-arsh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
