<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.2" -->
<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/"
>

<channel>
	<title>Christophe Nowicki</title>
	<link>http://www.csquad.org</link>
	<description>Just for fun</description>
	<pubDate>Wed, 22 Oct 2008 20:13:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.2</generator>
	<language>en</language>

		<item>
		<title>L&#8217;autre Internet &#8230; celui des vrais gens avec une adresse email hotmail&#166;gmail etc..!</title>
		<link>http://www.csquad.org/2008/10/22/lautre-internet-celui-des-vrais-gens-avec-une-adresse-email-hotmailgmail-etc/</link>
		<comments>http://www.csquad.org/2008/10/22/lautre-internet-celui-des-vrais-gens-avec-une-adresse-email-hotmailgmail-etc/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 20:12:35 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://www.csquad.org/2008/10/22/lautre-internet-celui-des-vrais-gens-avec-une-adresse-email-hotmailgmail-etc/</guid>
		<description><![CDATA[	En général, je reçois des e-mail de demande d&#8217;aide sur les articles ou différents post issue de mon blog.
Parfois ses demandes proviennent de gens qui dispossent d&#8217;une adresse email hotmail ou gmail.
	Malheureusement je ne peux pas répondre à ces email car hotmail ou gmail refuse les email de mon domaine (csquad dot org) et celui [...]]]></description>
			<content:encoded><![CDATA[	<p>En général, je reçois des e-mail de demande d&#8217;aide sur les articles ou différents post issue de mon blog.<br />
Parfois ses demandes proviennent de gens qui dispossent d&#8217;une adresse email hotmail ou gmail.</p>
	<p>Malheureusement je ne peux pas répondre à ces email car hotmail ou gmail <strong>refuse</strong> les email de mon domaine (csquad dot org) et celui de mon travail (easter-eggs dot com),<br />
je ne peux donc pas répondre à ces questions.</p>
	<p>Nous sommes de plus en plus dans une <strong>ségrégation</strong> de l&#8217;Internet:</p>
	<ul>
	<li>celui des vrais gens ;</li>
	<li>celui des autres. </li>
	</ul>
	<p>Cette séparation a très bien été analysée par Benjamin Bayart : <a href="http://www.csquad.org/go.php?http://www.fdn.fr/internet-libre-ou-minitel-2.html" title="(59 hits)">http://www.fdn.fr/internet-libre-ou-minitel-2.html</a></p>
	<p>J&#8217;ai pour ma part décidé de participer à cette ségrégation en bloquant les e-mails issus de ces domaines :<br />
<code><br />
# echo "hotmail.com REJECT<br />
hotmail.fr REJECT<br />
gmail.com REJECT" > /etc/postfix/access<br />
# postmap hash:/etc/postfix/access<br />
# echo "smtpd_sender_restrictions = hash:/etc/postfix/access" >> main.cf<br />
# /etc/init.d/postfix reload<br />
</code></p>
	<p>Oui, je sais c&#8217;est stupide, mais je ne vais pas perdre mon temps à discuter avec les équipes de google ou microsoft. </p>
	<p>C&#8217;est à leurs utilisateurs de choisir un fournisseur de messagerie de qualité.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/10/22/lautre-internet-celui-des-vrais-gens-avec-une-adresse-email-hotmailgmail-etc/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Pékin 2008 : Plus vite, plus haut, plus fort!</title>
		<link>http://www.csquad.org/2008/08/08/pekin-2008-plus-vite-plus-haut-plus-fort/</link>
		<comments>http://www.csquad.org/2008/08/08/pekin-2008-plus-vite-plus-haut-plus-fort/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 07:08:30 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://www.csquad.org/2008/08/08/pekin-2008-plus-vite-plus-haut-plus-fort/</guid>
		<description><![CDATA[	
	Il faut vraiment beau dehors, vous êtez sur de vouloir regarder la télévision?
]]></description>
			<content:encoded><![CDATA[	<p><img src='/wp-content/pekin2008.jpg' alt='pekin 2008' /></p>
	<p>Il faut vraiment beau dehors, vous êtez sur de vouloir regarder la télévision?</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/08/08/pekin-2008-plus-vite-plus-haut-plus-fort/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Zoneminder plugin for Freevo, first release</title>
		<link>http://www.csquad.org/2008/08/04/zoneminder-plugin-for-freevo-first-release/</link>
		<comments>http://www.csquad.org/2008/08/04/zoneminder-plugin-for-freevo-first-release/#comments</comments>
		<pubDate>Sun, 03 Aug 2008 23:29:29 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>ZoneMinder</category>
		<guid>http://www.csquad.org/2008/08/04/zoneminder-plugin-for-freevo-first-release/</guid>
		<description><![CDATA[	I&#8217;ve wrote an Zoneminder plugin for Freevo. 
	Features
	The first release of the plugin support the fallowing features :
	
	Monitor Live Streaming ;
	Montage ;
	Browse events by monitor ;
	Browse events by time
	
	I&#8217;ve planned to add :
	
	Secure HTTP ;
	Playback Navigation (rewind and fast forward) ;
	Live event notification.
	
	Please feel free to ask any other feature. Patches and bug reports are [...]]]></description>
			<content:encoded><![CDATA[	<p>I&#8217;ve wrote an <a href="http://www.csquad.org/go.php?http://www.zoneminder.com/" title="(233 hits)">Zoneminder</a> plugin for <a href="http://www.csquad.org/go.php?http://freevo.sourceforge.net/" title="(589 hits)">Freevo</a>. </p>
	<h3>Features</h3>
	<p>The first release of the plugin support the fallowing features :</p>
	<ul>
	<li>Monitor Live Streaming ;</li>
	<li>Montage ;</li>
	<li>Browse events by monitor ;</li>
	<li>Browse events by time</li>
	</ul>
	<p>I&#8217;ve planned to add :</p>
	<ul>
	<li>Secure HTTP ;</li>
	<li>Playback Navigation (rewind and fast forward) ;</li>
	<li>Live event notification.</li>
	</ul>
	<p>Please feel free to ask any other feature. Patches and bug reports are welcome <img src='http://www.csquad.org/wp-images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
	<h3>Screenshots</h3>
	<table>
	<tr>
	<td>
<a href='/wp-content/zoneminder_freevo_montage.jpg' alt='Zoneminder Freevo Live Streaming' /><img src='/wp-content/thumb-zoneminder_freevo_montage.jpg' alt='zoneminder freevo montage' />
</td>
	<td>
<a href='/wp-content/zoneminder_freevo_first_live_stream.jpg' alt='Zoneminder Freevo Live Streaming' /><img src='/wp-content/thumb-zoneminder_freevo_first_live_stream.jpg' alt='zoneminder freevo streaming' />
</td>
	<td>
<a href='/wp-content/zoneminder_freevo_view_event.jpg' alt='Zoneminder Freevo View Event' /><img src='/wp-content/thumb-zoneminder_freevo_view_event.jpg' alt='zoneminder freevo view event' />
</td>
	</tr>
	</table>
	<h3>Download</h3>
	<p>You can download the freevo plugin  from the subversion <a href="http://www.csquad.org/go.php?http://svn.csquad.org/zoneminder_freevo/" title="(241 hits)">repository</a> :</p>
	<blockquote><p>
svn co http://svn.csquad.org/zoneminder_freevo/
</p></blockquote>
	<h3>Install</h3>
	<p>Just copy the <em> zoneminder.py</em> file into <em>/usr/lib/python2.5/site-packages/freevo/plugins</em> (2.5 should be your current version of python) as <strong>root</strong>.<br />
And install the <strong>MySQLdb</strong> python package on your system. (apt-get install python-mysqldb on Debian GNU/Linux).</p>
	<h2>Setup</h2>
	<p>Put the fallowing line in the <em>local_conf.py</em> file :</p>
	<blockquote><p>
plugin.activate(&#8217;zoneminder&#8217;, level=45)<br />
ZONEMINDER_CONFIG = &#8216;/etc/zm.conf&#8217;<br />
ZONEMINDER_EVENTS_DIR = &#8216;/var/www/events&#8217;<br />
ZONEMINDER_CLIENT_IPV4_ADDRESS = &#8216;&#8217;<br />
ZONEMINDER_SERVER_AUTH_TYPE = &#8216;builtin&#8217;<br />
ZONEMINDER_SERVER_USERNAME = &#8216;admin&#8217;<br />
ZONEMINDER_SERVER_PASSWORD = &#8216;admin&#8217;<br />
ZONEMINDER_SERVER_AUTH_RELAY = &#8216;hashed&#8217;<br />
ZONEMINDER_SERVER_AUTH_HASH_SECRET = &#8216;&#8217;<br />
ZONEMINDER_SERVER_HOST = &#8216;localhost&#8217;<br />
ZONEMINDER_SERVER_PORT = &#8216;80&#8242;<br />
ZONEMINDER_SERVER_USE_SSL = False
</p></blockquote>
	<p>The file <em>/etc/zm.conf</em> must be readable by the <em>freevo</em> user.<br />
<code># id freevo<br />
uid=1003(freevo) gid=100(users) groups=100(users),24(cdrom),29(audio),44(video),46(plugdev)<br />
 ls -l /etc/zm.conf<br />
-rw-rw---- 1 root users 1324 2008-08-04 01:21 /etc/zm.conf<br />
</code></p>
	<p>Now you can restart freevo and use the plugin.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/08/04/zoneminder-plugin-for-freevo-first-release/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>MicroClient Jr. de NorhTec, un petit serveur / routeur basse consommation</title>
		<link>http://www.csquad.org/2008/07/19/microclient-jr-de-norhtec-un-petit-serveur-routeur-basse-consommation/</link>
		<comments>http://www.csquad.org/2008/07/19/microclient-jr-de-norhtec-un-petit-serveur-routeur-basse-consommation/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 12:42:43 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>Hardware</category>
		<guid>http://www.csquad.org/2008/07/19/microclient-jr-de-norhtec-un-petit-serveur-routeur-basse-consommation/</guid>
		<description><![CDATA[	
	
	
	
Le MicroClient Junior de NorhTec est une mini machine qui tient dans la paume de la main.
Cette machine est parfaite pour un petit serveur GNU/Linux à faible consommation.
Il dispose des spécifications suivantes :
	
	Processeur x86 à 200 Mhz (400 bogomips)
	128 Mo de RAM
	Sortie VESA
	Fanless (sans ventilateur)
	Port IDE pour disque dur de portable 2,5&#8242;&#8217;
	Port pour carte mémoire [...]]]></description>
			<content:encoded><![CDATA[	<table>
	<tr>
	<td valign='top'><a href="/wp-content/mcjr.jpg"><img src='/wp-content/thumb-mcjr.jpg' alt='NorhTec MicroClient Jr.' /></a></td>
	<td valign='top'>
Le <a href="http://www.csquad.org/go.php?http://www.norhtec.com/products/mcjr/index.html" title="(456 hits)">MicroClient Junior</a> de <a href="http://www.csquad.org/go.php?http://www.norhtec.com/" title="(228 hits)">NorhTec</a> est une mini machine qui tient dans la paume de la main.<br />
Cette machine est parfaite pour un petit serveur GNU/Linux à faible consommation.<br />
Il dispose des spécifications suivantes :</p>
	<ul>
	<li>Processeur <strong>x86</strong> à 200 Mhz (400 bogomips)</li>
	<li>128 Mo de RAM</li>
	<li>Sortie VESA</li>
	<li><strong>Fanless</strong> (sans ventilateur)</li>
	<li>Port IDE pour disque dur de portable 2,5&#8242;&#8217;</li>
	<li>Port pour carte mémoire compact Flash</li>
	<li>Trois ports USB 1.0 (deux en facade et un à l&#8217;arrier)</li>
	<li>Carte réseau Ethernet 10/100</li>
	</ul>
	<p>Le tout pour la modique somme de 120$ soit au taux de change en vigeur aujourd&#8217;hui 75 euros.
</td>
	</tr>
	</table>
	<h3>Spécifications Matérielles</h3>
	<p>
Le constructeur propose des modèles plus evolués equipés des options suivantes :</p>
	<ul>
	<li>Avec deux port serie</li>
	<li>Avec une carte wifi</li>
	<li>
        </li>
Avec un port serie et une carte wifi
</ul>
	<p>Pour ma part, j&#8217;ai commandé ma machine avec un collègue pour partager les frais de transport (85$ pour importer la bête depuis la Thailand).
</p>
	<h3>Benchmark</h3>
	<p>Voici quelques benchmark réalisés avec les commande des commandes courrantes :</p>
	<ul>
	<li><em>openssh speed</em> est disponible <a href="/wp-content/mcjr_openssl_speed">ici</a> ;</li>
	<li><em>hdparm -tT</em>  est disponible <a href="/wp-content/mcjr_hdparm">ici</a>.</li>
	</ul>
	<h3>Installation d&#8217;un disque dur</h3>
	<table>
	<tr>
	<td valign='top'>
<a href="/wp-content/mcjr_ouvert.jpg"><img src='/wp-content/thumb-mcjr_ouvert.jpg' alt='NorhTec MicroClient Jr.' /></a></td>
	<td valign='top'>
<a href="/wp-content/mcjr_open_with_hard_drive.jpg"><img src='/wp-content/thumb-mcjr_open_with_hard_drive.jpg' alt='NorhTec MicroClient Jr.' /></a></td>
	<td>
	<p valign='top'>
La machine est très petite et le démontage n&#8217;est pas évident. J&#8217;ai un peu cassé mon boîtier avant de comprendre comment l&#8217;ouvrir.<br />
Le disque dur se loge dans  la partie basse du boitier et rentre tout juste.
</p>
	<p>
Le constructeur fournit un système pour <a href="http://www.csquad.org/go.php?http://www.norhtec.com/products/mcjr/mcjr05.jpg" title="(198 hits)">monter le boîtier derrière un écran LCD.</a>
</p>
</td>
</tr>
	</table>
	<h3>Consommation électrique</h3>
	<table>
	<tr>
	<td valign='top'><a href="/wp-content/mcjr_watt.jpg"><img src='/wp-content/thumb-mcjr_watt.jpg' alt='NorhTec MicroClient Jr.' /></a></td>
	<td valign='top'>
	<p>Comme vous pouvez le voir sur le wattmètre la machine consomme seulement 8.5W, auxquels il faut enlever 1.6W pour l&#8217;appareil de mesure et 2W pour le disque dur, ce qui fait une consommation de <strong>5W pour le serveur</strong>. C&#8217;est un très bon ratio consommation / puissance disponible. Il serait même possible d&#8217;alimenter la machine via des panneaux solaires.
</p>
	</td>
	</tr>
	</table>
	<h3>Installation du système d&#8217;exploitation</h3>
	<p>La machine ne dispose pas d&#8217;un lecteur de CD-ROM, pour la méthode d&#8217;installation vous avez le choix entre :</p>
	<ul>
	<li>l&#8217;installation via le réseau ;</li>
	<li>avec un bon vieux debootstrap.</li>
	</ul>
	<p>Pour ma part, j&#8217;ai utilisé deboostrap sur le disque dur avant de le brancher sur la machine et la faire booter avec grub. Il n&#8217;y a aucune difficulté lors de l&#8217;installation.<br />
La machine boot sur un noyeau i586 récent sans aucun souci :<br />
<code><br />
Linux tof 2.6.18-6-486 #1 Fri Jun 6 21:47:01 UTC 2008 i586 GNU/Linux<br />
</code><br />
Le fichier <em>dmesg</em> de la machine est disponible <a href="/wp-content/mcjr_dmesg">ici</a>.<br />
Le contenu du fichier <em>/proc/cpuinfo</em> est disponible <a href="/wp-content/mcjr_cpuinfo">la</a>.<br />
La sortie de la commande <em>lspci</em> est disponible <a href="/wp-content/mcjr_lspci">la</a>.
</p>
	<h3>Utilisation</h3>
	<p>
Cette machine répondre à plusieurs besoins :</p>
	<ul>
	<li>routeur wifi ;</li>
	<li>client léger ;</li>
	<li>firewall avec des cartes réseaux en USB, il est possible d&#8217;avoir 4 interfaces réseau ; </li>
	<li>hébergement de sites web, la machine est suffisament puissante pour héberger un blog ou un site perso ;</li>
	<li>serveur de domotique, le modèle avec les deux ports serie est très interessant.</li>
	</ul>
	<p>
Mon collégue, utilise la machine comme un firewall après avoir ajouté une carte réseau sur le port USB.<br />
Pour ma part, je l&#8217;utilise comme :</p>
	<ul>
	<li>serveur de log avec <a href="http://www.csquad.org/go.php?http://www.balabit.com/network-security/syslog-ng/" title="(153 hits)">syslog-ng</a> ;</li>
	<li>serveur de traces <a href="http://www.csquad.org/go.php?http://la-samhna.de/samhain/" title="(196 hits)">samhain</a> ;</li>
	<li>interface pour la PKI <a href="http://www.csquad.org/go.php?https://www.openca.org/" title="(169 hits)">OpenCA</a> ;</li>
	</ul>
	<p>La machine tient parfaitement la route, mais il faut faire attention à l&#8217;utilisation mémoire.</p>
	<h3>Conclusion</h3>
	<p>J&#8217;avoue ne pas avoir été embalé sur le coup par la machine, mais je me suis dit qu&#8217;elle pourrait remplacer mon <a href="http://www.csquad.org/go.php?http://en.wikipedia.org/wiki/NSLU2" title="(262 hits)">NSLU2</a>, qui <em>pédale dans la choucroute</em>, même pour une tâche aussi simple que serveur de logs &#8230;
</p>
	<p>Donc bingo, cette machine tient la route, c&#8217;est du Linux embarqué, mais avec toutes les caractèristiques d&#8217;un PC Standard. (pas de CPU exotique).</p>
	<p>Donc si vous chercher une petite machine et que vous ne voulez pas vous prendre la tête avec des solutions à base d&#8217;ARM. Cette machine est vraiment bien pour cela.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/07/19/microclient-jr-de-norhtec-un-petit-serveur-routeur-basse-consommation/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Zoneminder plugins for Munin</title>
		<link>http://www.csquad.org/2008/07/06/zondminder-plugins-for-munin/</link>
		<comments>http://www.csquad.org/2008/07/06/zondminder-plugins-for-munin/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 07:30:25 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>Perl</category>
	<category>ZoneMinder</category>
		<guid>http://www.csquad.org/2008/07/06/zondminder-plugins-for-munin/</guid>
		<description><![CDATA[	
	
	
	
I use ZoneMinder for my CCTV system and Munin for network monitoring.
But there is no ZoneMinder plugins for Munin, so I&#8217;ve decided to wrote theses plugins :
	
	zm_events : get the number of events catched by monitors ;
	zm_fps : get the  number of frames per seconds ;
	zm_hourly_events  : get the number of events per [...]]]></description>
			<content:encoded><![CDATA[	<table>
	<tr valign='top'>
	<td><img src='/wp-content/cleo.csquad.lan-zm_events-day.png' alt='' /></td>
	<td valign="top">
I use <a href="http://www.csquad.org/go.php?http://www.zoneminder.com/" title="(233 hits)">ZoneMinder</a> for my CCTV system and <a href="http://www.csquad.org/go.php?http://munin.projects.linpro.no/" title="(1275 hits)">Munin</a> for network monitoring.<br />
But there is no ZoneMinder plugins for Munin, so I&#8217;ve decided to wrote theses plugins :</p>
	<ul>
	<li><strong>zm_events</strong> : get the number of events catched by monitors ;</li>
	<li><strong>zm_fps</strong> : get the  number of frames per seconds ;</li>
	<li><strong>zm_hourly_events</strong>  : get the number of events per hours.</li>
	</ul>
	<p>You can download theses plugins from <a href="http://www.csquad.org/go.php?http://svn.csquad.org/zoneminder_munin/" title="(318 hits)">the subversion repository</a> :<br />
<code><br />
svn co http://svn.csquad.org/zoneminder_munin/<br />
</code></p>
	<p>Enjoy and  feel free to report bugs and suggest new graphs.
</td>
	</tr>
	</table>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/07/06/zondminder-plugins-for-munin/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>La carte mère Intel DG33FB et la carte graphique ATI Sapphire Radeon HD 3850 sont incompatibles!</title>
		<link>http://www.csquad.org/2008/06/29/la-carte-mere-intel-dg33fb-et-la-carte-graphique-ati-sapphire-radeon-hd-3850-sont-incompatibles/</link>
		<comments>http://www.csquad.org/2008/06/29/la-carte-mere-intel-dg33fb-et-la-carte-graphique-ati-sapphire-radeon-hd-3850-sont-incompatibles/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 09:48:37 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>Hardware</category>
		<guid>http://www.csquad.org/2008/06/29/la-carte-mere-intel-dg33fb-et-la-carte-graphique-ati-sapphire-radeon-hd-3850-sont-incompatibles/</guid>
		<description><![CDATA[	
	
	
	
Je viens de faire l&#8217;acquisition d&#8217;une nouvelle machine pour le Home-cinéma Freevo.
J&#8217;ai choisi les composants suivants :
	
	Carte mère Intel DG33FB ;
	Carte graphique Sapphire Radeon™ HD 3850 512 Mo Ultimate.
	
	Et la c&#8217;est le drame &#8230;
Le chipset de la carte mère dispose d&#8217;un dissipateur, d&#8217;une hauteur impressionnante.
La carte graphique est munie d&#8217;un dissipateur passif dans le mauvais [...]]]></description>
			<content:encoded><![CDATA[	<table>
	<tr valign='top'>
	<td><a href="/wp-content/Intel_DG33FB_and_ATI_Sapphire_Radeon_HD_3850_512Mo_Ultimate.jpg"><img src='/wp-content/thumb-Intel_DG33FB_and_ATI_Sapphire_Radeon_HD_3850_512Mo_Ultimate.jpg' alt='' /></a></td>
	<td valign="top">
Je viens de faire l&#8217;acquisition d&#8217;une nouvelle machine pour le Home-cinéma <a href="http://www.csquad.org/go.php?http://freevo.sourceforge.net/" title="(589 hits)">Freevo</a>.<br />
J&#8217;ai choisi les composants suivants :</p>
	<ul>
	<li>Carte mère <a href="http://www.csquad.org/go.php?http://www.intel.com/products/motherboard/DG33FB/" title="(319 hits)">Intel DG33FB</a> ;</li>
	<li>Carte graphique <a href="http://www.csquad.org/go.php?http://www.sapphiretech.com/us/products/products_overview.php?gpid=225&#038;grp=3" title="(22 hits)">Sapphire Radeon™ HD 3850 512 Mo Ultimate</a>.</li>
	</ul>
	<p>Et la c&#8217;est le drame &#8230;<br />
Le chipset de la carte mère dispose d&#8217;un dissipateur, d&#8217;une hauteur impressionnante.<br />
La carte graphique est munie d&#8217;un dissipateur passif dans le <strong>mauvais sens !</strong>.</p>
	<p>Et oui, les ingénieurs de chez Sapphire on eu la bonne idée de mettre le dissipateur dans le sens de la carte mère et non dans le sens de l&#8217;alimentation.<br />
Normalement avec ce genre de carte vous perdez un port PCI-E ou bien PCI mais, je n&#8217;ai jamais vu un dissipateur dans se sens.</p>
	<p>Résultat des courses, les deux composants sont incompatibles, vous avez donc les choix suivants :</p>
	<ul>
	<li>Enlever le dissipateur de la carte mère, dans ce cas la machine fonctionne, mais à temperature ambiante le chipset monte à 120&deg;C, très dangereux&#8230;</li>
	<li>Renvoyer la carte graphique directement chez le revendeur et vous faire rembourser.</li>
	<li>Utiliser un water block, pour refroidir la carte graphique du bon sens ;</li>
	</ul>
	<p>Pour ma part, c&#8217;est cette dernière solution que j&#8217;ai choisi (impossible de renvoyer la carte chez le revendeur US), j&#8217;ai donc ajouté un water block <a href="http://www.csquad.org/go.php?http://www.zalman.co.kr/ENG/product/Product_Read.asp?idx=286" title="(191 hits)">ZM-GWB3850/3870</a> de chez Zalman à mon montage.</p>
	<p>Pour ma part, je suis un peu dégouté de devoir investir dans un sytème de water cooling à cause d&#8217;un mauvais choix des ingénieurs de chez Sapphire.</p>
	<p>J&#8217;espère donc qu&#8217;en lisant ce message vous ne ferrez pas la même bêtise que moi en achetant cette carte graphique.</p>
	</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/06/29/la-carte-mere-intel-dg33fb-et-la-carte-graphique-ati-sapphire-radeon-hd-3850-sont-incompatibles/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Build NXC programs under Debian GNU/Linux</title>
		<link>http://www.csquad.org/2008/06/12/build-nxc-programs-under-debian-gnulinux/</link>
		<comments>http://www.csquad.org/2008/06/12/build-nxc-programs-under-debian-gnulinux/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 22:50:05 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>Debian</category>
	<category>NXT</category>
	<category>NXC</category>
		<guid>http://www.csquad.org/2008/06/12/build-nxc-programs-under-debian-gnulinux/</guid>
		<description><![CDATA[	This document explain how to build and load an Not eXactly C program for the Lego Mindstoms NXT Robot under Debian GNU/Linux.
	Introduction
	Lego does not provide tools for building programs for the NXT under Linux.
I don&#8217;t like Bricxcc, because :
	
	It looks like Visual Studio ;
	runs only on Microsoft Windows ;
	I&#8217;m more familiar with VIM, make and [...]]]></description>
			<content:encoded><![CDATA[	<p>This document explain how to build and load an <i>Not eXactly C</i> program for the <a href="http://www.csquad.org/go.php?http://mindstorms.lego.com/eng/Overview/default.aspx" title="(252 hits)">Lego Mindstoms NXT</a> Robot under Debian GNU/Linux.</p>
	<h3>Introduction</h3>
	<p>Lego does not provide tools for building programs for the NXT under Linux.<br />
I don&#8217;t like <a href="http://www.csquad.org/go.php?http://bricxcc.sourceforge.net/" title="(239 hits)">Bricxcc</a>, because :</p>
	<ul>
	<li>It looks like Visual Studio ;</li>
	<li>runs only on Microsoft Windows ;</li>
	<li>I&#8217;m more familiar with VIM, make and GCC ;0)</li>
	</ul>
	<h3>Install the compiler</h3>
	<p>Ths NXC compiler can be downloaded on the <a href="http://www.csquad.org/go.php?http://bricxcc.sourceforge.net/nbc/beta/index.html" title="(262 hits)">Bricxcc</a> web site. The compiler is writen in Pascal.</p>
	<p>You need to install the <a href="http://www.csquad.org/go.php?http://www.freepascal.org/" title="(233 hits)">FreePascal Compiler</a> and build the compiler :</p>
	<p><code><br />
$ wget http://downloads.sourceforge.net/bricxcc/nbc-1.0.1.b34.src.tgz<br />
# apt-get install fp-compiler fp-units-fcl fp-units-base<br />
$ mkdir nbc<br />
$ tar xzf nbc-1.0.1.b34.src.tgz -C nbc<br />
$ cd nbc/nxt<br />
$ make -f nbclinux.mak<br />
$ ./nbc<br />
Next Byte Codes Compiler version 1.0.1.b34 (1.0.1.34, built Thu Jun 12 21:21:22 CEST 2008)<br />
     Copyright (c) 2006, John Hansen<br />
Use "nbc -help" for more information.<br />
# mv nbc /usr/local/bin/<br />
</code></p>
	<h3>Hello world</h3>
	<p>Let&#8217;s try to build and send a simple hello world program to the robot :</p>
	<p><code><br />
$ cat > hello.nxc < <EOF<br />
task main() {<br />
        TextOut(0, 0, "Hello world!");<br />
        Wait(1000);<br />
}<br />
EOF<br />
$ nbc hello.nxc -O=hello.rxe<br />
</code></p>
	<h3>USB Transfert</h3>
	<p>In order to send the program to the robot, you need the Talk 2 NXT program : <a href="http://www.csquad.org/go.php?http://www-verimag.imag.fr/~raymond/edu/lego/t2n/" title="(244 hits)"> T2N</a>.</p>
	<p><strong>Warning</strong>: on amd64, you need to patch the source code.</p>
	<p></code><code><br />
# apt-get install g++ libusb-dev<br />
$ wget http://www-verimag.imag.fr/~raymond/edu/lego/t2n/t2n-0.2.src.tgz<br />
$ wget http://www.csquad.org/wp-content/t2n_amd64.diff<br />
$ cd t2n-0.2.src<br />
$ patch -p1 < ../t2n_amd64.diff<br />
patching file src/usbmisc.cc<br />
patching file src/usbmisc.h<br />
$ make<br />
# mv obj/t2n /usr/local/bin/<br />
</code></p>
	<p>Now you can plug, turn on your NXT and send the program via the USB port.</p>
	<p></code><code><br />
$t2n -i<br />
#### NXT INFOS ###############<br />
protocol version=1.124 firmware version=1.1<br />
NXT Name: NXT<br />
Blutooth address: 16:53:06:37:ffffffbc:00<br />
Blutooth signal: 0<br />
Free user flash: 44416<br />
$t2n -v -put  hello.rxe<br />
nxt brick found, usb initialized<br />
testing for existing file "hello.rxe"<br />
deleting for existing file "hello.rxe"<br />
upload hello.rxe (376 bytes) from /goinfre<br />
that's all folks...<br />
</code></p>
	<p>That&#8217;s all folks&#8230;
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/06/12/build-nxc-programs-under-debian-gnulinux/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>chsh /usr/bin/goosh</title>
		<link>http://www.csquad.org/2008/06/06/chsh-usrbingoosh/</link>
		<comments>http://www.csquad.org/2008/06/06/chsh-usrbingoosh/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 08:36:01 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://www.csquad.org/2008/06/06/chsh-usrbingoosh/</guid>
		<description><![CDATA[	It&#8217;s soo geekly :0) http://goosh.org

]]></description>
			<content:encoded><![CDATA[	<p>It&#8217;s soo geekly :0) <a href="http://www.csquad.org/go.php?http://goosh.org" title="(252 hits)">http://goosh.org</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/06/06/chsh-usrbingoosh/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Validation d&#8217;un fichier CSV à l&#8217;aide d&#8217;un Schéma XML</title>
		<link>http://www.csquad.org/2008/06/03/validation-dun-fichier-csv-a-laide-dun-schema-xml/</link>
		<comments>http://www.csquad.org/2008/06/03/validation-dun-fichier-csv-a-laide-dun-schema-xml/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 06:10:49 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>Work</category>
	<category>PHP</category>
		<guid>http://www.csquad.org/2008/06/03/validation-dun-fichier-csv-a-laide-dun-schema-xml/</guid>
		<description><![CDATA[	Malgré tout le mal qu’il est possible de penser ou de dire sur le format de fichier CSV, celui-ci présente beaucoup d’avantages :
	
	il est facilement manipulable pour les utilisateurs à l’aide d’un tableur comme Calc, Gnumeric ou bien Excel ;
	il permet d’écrire rapidement et facilement des routines d’import / export ;
	il permet d’échanger les données [...]]]></description>
			<content:encoded><![CDATA[	<p>Malgré tout le mal qu’il est possible de penser ou de dire sur le format de fichier CSV, celui-ci présente beaucoup d’avantages :</p>
	<ul>
	<li>il est facilement manipulable pour les utilisateurs à l’aide d’un tableur comme Calc, Gnumeric ou bien Excel ;</li>
	<li>il permet d’écrire rapidement et facilement des routines d’import / export ;</li>
	<li>il permet d’échanger les données entre des bases et des systèmes hétérogène.</li>
	</ul>
	<p>Mais ce format de fichier ne dispose pas d’un système de validation. Dans la plupart des cas ce sont les routines d’import / export qui prennent en charge la validation des données et de leur mise en forme.</p>
	<p>Ce travail est pénible, répetitif et ennuyeux mais nécessaire si vous ne voulez pas qu’un fichier mal formaté ne corrompe les données de votre base.</p>
	<p>L’objectif de cette article est de proposer une solution simple permettant la validation d’un fichier CSV en utilisant les fonctionnalités offertes par les schémas XML.</p>
	<p>Les exemples fournis sont écrit à l’aide du language de programmation PHP5.</p>
	<h3>Transformation CSV vers XML</h3>
	<p>Votre fichier doit contenir sur la 1ère ligne, le nom de chaque cologne :</p>
	<p>
<strong>&#8220;CHANNEL&#8221;;&#8221;COMPANY&#8221;;&#8221;BVD_ID_Groupe_1&#8243;;&#8221;BVD_ID_Groupe_2&#8243;;&#8221;GENRE&#8221;;&#8221;URL&#8221;;&#8221;OTHER_URL&#8221;;&#8221;COMPETENT_AUTHORITY&#8221;</strong><br />
&#8220;Canal+ Film 1&#8243;;&#8221;C MORE ENTERTAINMENT AB&#8221;;&#8221;NL33268595&#8243;;&#8221;DE8330261794&#8243;;&#8221;CIN&#8221;;&#8221;http://www.canalplus.se&#8221;;&#8221;http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/&#8221;;&#8221;RTVV&#8221;<br />
&#8220;Canal+ Film 2&#8243;;&#8221;C MORE ENTERTAINMENT AB&#8221;;&#8221;NL33268595&#8243;;&#8221;DE8330261794&#8243;;&#8221;CIN&#8221;;&#8221;http://www.canalplus.se&#8221;;&#8221;http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/&#8221;;&#8221;RTVV&#8221;<br />
&#8220;Canal+ Film 2 Sport Weekend&#8221;;&#8221;C MORE ENTERTAINMENT AB&#8221;;&#8221;NL33268595&#8243;;&#8221;DE8330261794&#8243;;&#8221;CIN&#8221;;&#8221;http://www.canalplus.se&#8221;;&#8221;http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/&#8221;;&#8221;RTVV&#8221;<br />
&#8220;Canal+ Film 3&#8243;;&#8221;C MORE ENTERTAINMENT AB&#8221;;&#8221;NL33268595&#8243;;&#8221;DE8330261794&#8243;;&#8221;CIN&#8221;;&#8221;http://www.canalplus.se&#8221;;&#8221;http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/&#8221;;&#8221;RTVV&#8221;<br />
&#8220;Canal+ Film HD&#8221;;&#8221;C MORE ENTERTAINMENT AB&#8221;;&#8221;NL33268595&#8243;;&#8221;DE8330261794&#8243;;&#8221;CIN&#8221;;&#8221;http://www.canalplus.se&#8221;;&#8221;http://www.sbsbroadcasting.com/, http://www.prosiebensat1.de/&#8221;;&#8221;RTVV&#8221;
</p>
	<p>Pour transformer le fichier CSV en XML, il suffit de lire le fichier CSV avec la fonction fgetcsv et mettre les données dans des balisent XML : <a href="http://www.csquad.org/go.php?http://svn.csquad.org/misc/csv_xsd/csv_to_xml.php" title="(400 hits)">csv_to_xml.php</a></p>
	<p>Une fichier CSV converti en XML ressemble à cela  : <a href="http://www.csquad.org/go.php?http://svn.csquad.org/misc/csv_xsd/channel.xml" title="(408 hits)">channel.xml</a></p>
	<h3>Validation du fichier XML</h3>
	<p>Il ne reste plus qu’à écrire le schéma permettant de valider le fichier XML : <a href="http://www.csquad.org/go.php?http://svn.csquad.org/misc/csv_xsd/channel.xsd" title="(376 hits)">channel.xsd</a></p>
	<p>Vous pouvez tester vos schéma en ligne de commande en utilisant la commande <em>xmllint</em> issue du paquet Debian <em>libxml2-utils</em>   :</p>
	<blockquote><p><code><br />
$ xmllint --noout --schema channel.xsd channel.xml<br />
channel.xml validates<br />
</code></p></blockquote>
	<h3>Validation en PHP</h3>
	<p>Une fois que votre schéma est correct et permet de valider le contenu du fichier XML, il faut l’intégrer directement dans votre application : <a href="http://www.csquad.org/go.php?http://svn.csquad.org/misc/csv_xsd/validate.php" title="(381 hits)">validate.php</a></p>
	<h3>Conculsion</h3>
	<p>Cette méthode apporte les avantages suivants :</p>
	<ul>
	<li>Les règles de validation sont décrites directement via le schéma, et celui-ci dispose de nombreuses fonctionnalités tels les types de bases, les expression rationnelle, les séquences, etc…</li>
	<li>Les messages d’erreur sont compréhensibles pour l’utilisateur même, s’il faut parfois les traduire (en convertissant les numéros de lignes et certaines notions) ;</li>
	<li>La simplicité ;0)</li>
	</ul>
	<p>Cette technique a été mise en oeuvre dans le cadre du projet <a href="http://www.csquad.org/go.php?http://mavise.obs.coe.int/" title="(231 hits)">MAVISE</a> pour valider plus d’une vingtaine de formats de fichiers différents.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/06/03/validation-dun-fichier-csv-a-laide-dun-schema-xml/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Système de synchronisation conditionnel  pour PostgreSQL</title>
		<link>http://www.csquad.org/2008/05/30/systeme-de-synchronisation-conditionnel-pour-postgresql/</link>
		<comments>http://www.csquad.org/2008/05/30/systeme-de-synchronisation-conditionnel-pour-postgresql/#comments</comments>
		<pubDate>Fri, 30 May 2008 13:30:33 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
		
	<category>Perl</category>
	<category>PHP</category>
	<category>PostgreSQL</category>
		<guid>http://www.csquad.org/2008/05/30/systeme-de-synchronisation-conditionnel-pour-postgresql/</guid>
		<description><![CDATA[	Il existe des outils tel que SQLSync permettant de synchroniser les données d&#8217;une base PostgreSQL.  Mais cette outil, ne permet pas de faire une copie partiel des données.
Dans la plus part des cas, il faut programmer la synchronisation soit même, l&#8217;objectif de mon article est de vous proposer une solution simple et  élégante.
	La [...]]]></description>
			<content:encoded><![CDATA[	<p>Il existe des outils tel que <a href="http://www.csquad.org/go.php?http://silvercoders.com/index.php?page=sqlsync" title="(227 hits)">SQLSync</a> permettant de synchroniser les données d&#8217;une base PostgreSQL.  Mais cette outil, ne permet pas de faire une copie partiel des données.<br />
Dans la plus part des cas, il faut programmer la synchronisation soit même, l&#8217;objectif de mon article est de vous proposer une solution simple et  élégante.</p>
	<h3>La problèmatique</h3>
	<table>
<tr>
<td><img src='/wp-content/sync.png' alt='' /></td>
	<td valign='top'>Des données sensibles se trouvent dans la base principale et il ne faut synchoniser qu&#8217;une partie de ces données vers les autres bases. </p>
	<p>L&#8217;architecture dispose des caractèristiques suivantes :</p>
	<ul>
	<li>Le schèma est identique sur chaque base ;</li>
	<li>Les opèrations d&#8217;écriture se font seulement sur la base principale ;</li>
	<li>Les bases sont accessibles en réseau.</li>
	</ul>
	</td>
</tr>
	</table>
	<h3>La solution</h3>
	<p>
Pour résoudre le problème, j&#8217;ai testé plusieurs approches avant de retenir l&#8217;utilisation d&#8217;un fonction de hachage dont voici le principe :</p>
	<ul>
	<li>chaque table doit disposer d&#8217;un identifiant unique. (champ id de type SERIAL) ;</li>
	<li>un programme récupère le couple <em> id</em> et la sum de <em>hachage</em> pour chaque table de chaque base qui doit être synchroniseés ; </li>
	<li>il compare le couple et si celui-ci est diffèrent alors les données sont mise à jour.</li>
	</ul>
	<h3>Implementation au niveau de la base de données</h3>
	</p>
	<p>
 Le calcul de la somme de hachage se fait un niveau de la base de données à l&#8217;aide d&#8217;un fonction :</p>
	<blockquote>
	<pre>
SELECT id,md5 FROM get_table_md5('nom_de_la_table');
 id |               md5
----+----------------------------------
  4 | 9f3bcd2fae528244669613ae0466cc3c
  5 | 1f3bcd2fa24528244669613ae66cc3czd
...
(42 row)
</pre>
	</blockquote>
	<p>Voici le code de la function PL/Perl:</p>
	<blockquote>
	<pre>
CREATE LANGUAGE plperl;
CREATE TYPE table_md5 AS (id INTEGER, md5 TEXT);
CREATE OR REPLACE FUNCTION get_table_md5(varchar) RETURNS SETOF table_md5 AS $$
    my ($rv, $status, $nrows, $row);
    # Get Table OID
    $rv = spi_exec_query(\"SELECT c.oid AS oid FROM pg_catalog.pg_class c
        LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
        WHERE c.relname LIKE '$_[0]';\");
    $status = $rv->{status};
    $nrows = $rv->{processed};
    return undef if ($nrows != 1);
    my $oid = $rv->{rows}[0]->{oid};
    # Get Table attributs
    $rv = spi_exec_query(\"SELECT attname,atttypid FROM pg_catalog.pg_attribute a
        WHERE a.attrelid = $oid AND a.attnum > 0 AND NOT a.attisdropped\");
    $status = $rv->{status};
    $nrows = $rv->{processed};
    return undef if ($nrows < 1);
    my $atts;
    my $atts_not_null;
    foreach my $rn (0 .. $nrows - 1) {
        if ($rv->{rows}[$rn]->{atttypid} == 16) {
            $atts .= &#8221; (CASE WHEN $rv->{rows}[$rn]->{attname} THEN &#8216;t&#8217; ELSE &#8216;f&#8217; END) AS $rv->{rows}[$rn]->{attname}&#8221;;
        } else {
            $atts .= &#8221; $rv->{rows}[$rn]->{attname}::text&#8221;;
        }
        $atts_not_null .= &#8221; (CASE WHEN $rv->{rows}[$rn]->{attname} IS NULL THEN &#8216;&#8217; ELSE $rv->{rows}[$rn]->{attname} END)&#8221;;
        $atts .= &#8216;,&#8217; if ($rn != $nrows - 1);
        $atts_not_null .= &#8216; || &#8216; if ($rn != $nrows - 1);
    }
    # Calc MD5
    my $sql = &#8220;SELECT id, MD5($atts_not_null) AS md5 FROM (SELECT $atts FROM $_[0]) AS $_[0];&#8221;;
    $rv = spi_exec_query($sql);
    $nrows = $rv->{processed};
    foreach my $rn (0 .. $nrows - 1) {
        return_next({
            id  => $rv->{rows}[$rn]->{id},
            md5 => $rv->{rows}[$rn]->{md5}
        });
    }
    return undef;
$$ LANGUAGE plperl;
</pre>
	</blockquote>
	<p>Pour utiliser cette fonction vous avez besoin du support du language de programmation PL/Perl dans Postgres, celui-ci se trouve dans le paquet Debian :  <em>postgresql-plperl-<version></version></em>
</p>
	<h3>La gestion des conditions</h3>
	<p>
Le choix des données à synchroniser se fait individuellement pour chaque table à l&#8217;aide de la clause <em>WHERE</em> de la manère suivante :</p>
	<blockquote>
	<pre>
SELECT id,md5 FROM get_table_md5('nom_de_la_table') WHERE id IN(SELECT id FROM nom_de_la_table WHERE nom_de_la_table.champ LIKE 'sync');
 id |               md5
----+----------------------------------
  1 | fdd56eabd4bb997e453e33f0022d46c1
(1 row)
</pre>
	</blockquote>
	<h3>Implementation du script de synchronisation</h3>
	<p>
La synchronisation des données peut être réalisée à l&#8217;aide de n&#8217;importe quel language de programmation,<br />
il suffit juste de disposer d&#8217;un accèss à la base de données.
</p>
	<p>
Voici un <a href="http://www.csquad.org/go.php?http://svn.csquad.org/misc/synchro_data/synchro_data.php" title="(426 hits)">exemple de script</a> écrit par  <em>Emmanuel Saracco</em> en PHP5 qui se repose sur les modules <a href="http://www.csquad.org/go.php?http://pear.php.net" title="(200 hits)">PEAR</a> suivants :</p>
	<ul>
	<li><a href="http://www.csquad.org/go.php?http://pear.php.net/package/DB" title="(220 hits)">DB</a> : pour l&#8217;accès à la base de donnée.</li>
	<li><a href="http://www.csquad.org/go.php?http://pear.php.net/package/Console_Getopt" title="(240 hits)">Console_Getopt</a> : pour la gestion de la ligne de commande.</li>
	</ul>
	<p>Ce script nécessite un fichier de configuration, en voici un <a href="http://www.csquad.org/go.php?http://svn.csquad.org/misc/synchro_data/synchro_data.ini" title="(417 hits)">exemple</a>.<br />
Ce fichier contiens la configuration des diffèrentes base de données et les conditions sous-forme de clauses where.
</p>
	<h3>Conclusion</h3>
	<p>Cette méthode de synchronisation fonctionne, elle est en production chez un client pour une base de données de plus de 100 tables, elle permet de synchronisé le contenu d&#8217;une base vers deux autres.<br />
Les avantages de cette méthode sont les suivants :</p>
	<ul>
	<li>le fait de pouvoir choisir le contenu de la clause <em>where</em> permet de réalisé des <em>régles de synchronisation très complexes</em> ;</li>
	<li>les performances sont très bonnes car les transfert réseau sont <em>limités</em> ;</li>
	<li>il est possible d&#8217;écrire le script de synchronisation avec n&#8217;importe quel language de programmation.</li>
	</ul>
]]></content:encoded>
			<wfw:commentRSS>http://www.csquad.org/2008/05/30/systeme-de-synchronisation-conditionnel-pour-postgresql/feed/</wfw:commentRSS>
	</item>
	</channel>
</rss>
