<?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>Linux Attitude&#187; Curiosité</title>
	<atom:link href="http://linux-attitude.fr/tag/curiosite/feed" rel="self" type="application/rss+xml" />
	<link>http://linux-attitude.fr</link>
	<description>Le libre est un état d&#039;esprit</description>
	<lastBuildDate>Tue, 20 Jul 2010 19:54:56 +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>Un interpréteur fantôme</title>
		<link>http://linux-attitude.fr/post/un-interpreteur-fantome</link>
		<comments>http://linux-attitude.fr/post/un-interpreteur-fantome#comments</comments>
		<pubDate>Mon, 03 May 2010 16:32:31 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Curiosité]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=413</guid>
		<description><![CDATA[Niveau&#160;:     
Résumé&#160;:


Maintenant que nous savons nous servir d'un interpréteur postscript, nous allons pouvoir développer. Postscript est un langage complet au sens de Turing. C'est à dire qu'on peut tout faire avec, même faire décoller une fusée. Mais bon, avant d'en arriver là, on va essayer de faire quelque chose d'utile.


Pour vous [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <img src="/public/Pics/s.gif" alt="Star" /> <img src="/public/Pics/s.gif" alt="Star" /> <img src="/public/Pics/s.gif" alt="Star" /> <img src="/public/Pics/s.gif" alt="Star" /> <img src="/public/Pics/e.gif" alt="Empty" /><br />
<strong>Résumé</strong>&nbsp;:</p>


<p>Maintenant que nous savons nous servir d'un interpréteur postscript, nous allons pouvoir développer. Postscript est un langage complet au sens de Turing. C'est à dire qu'on peut tout faire avec, même faire décoller une fusée. Mais bon, avant d'en arriver là, on va essayer de faire quelque chose d'utile.</p>


<p>Pour vous présenter le langage, je vous propose un exemple basé sur la fourmi de Langton. C'est une fourmi qui a ceci de particulier qu'elle ne sait que tourner. Son univers ressemble beaucoup à celui du jeu de la vie, c'est-à-dire une grille infinie de cases noires ou blanches. Lorsque la fourmi est sur une case noire, elle tourne à droite, lorsqu'elle est sur une case blanche, elle tourne à gauche. De plus elle inverse la couleur de la case sur laquelle elle se trouve.</p>


<p>Le concept est assez simple, et lorsqu'on lance la fourmi sur une grille blanche, son comportement a l'air aléatoire. Et pourtant au bout d'un moment elle fabrique ce qui ressemble à une autoroute.</p>


<p>Tout ça pour dire que le postscript c'est bien. C'est un langage à pile, qui fonctionne en notation inversée. Les possesseurs de <a href="http://fr.wikipedia.org/wiki/HP-48" hreflang="fr">HP48</a> et amateurs de RPL y retrouveront leurs petits (ou de vieux souvenirs). Les développeurs  <a href="http://fr.wikipedia.org/wiki/Forth_(langage)" hreflang="fr">forth</a> (faite sous savoir si vous êtes dans la salle) apprécieront aussi probablement.</p>


<h3>La base</h3>

<h4>Les commentaires</h4>

<p>Toute ligne commençant par un % est un commentaire.
Exemple&nbsp;:</p>
<pre>
% Rien
</pre>


<h4>Les commandes</h4>

<p>Les commandes sont des mots simples. Étant donné la notation inversée, la commande se trouve après ses arguments. Par exemple une addition&nbsp;:</p>
<pre>
5 9 add
</pre>


<p>A cette notation est associée une pile. 5 pose 5 sur la pile, 9 pose 9 sur la pile, add retire les 2 derniers éléments (donc 9 et 5) puis additionne et repose le résultat sur la pile. D'où la représentation de la pile&nbsp;:</p>
<pre>
    %avant la ligne de commande
5   % 5 
5 9 % 9
    %pendant le add (invisible)
14  % après le add 
</pre>


<p>Les commandes peuvent être séparées par des espaces ou des retours à la ligne.
<span id="more-413"></span></p>


<h4>Les variables</h4>

<p>Les variables sont définie avec la commande def. Un nom de variable se pose sur la pile avec le préfixe /. Donc pour définir la variable pi</p>
<pre>
/pi 3.1415 def
</pre>


<p>Une variable se lance ou se pose sur la pile avec son nom dans préfixe. Donc pour poser pi sur la pile&nbsp;:</p>
<pre>
pi
</pre>


<h4>Les fonctions</h4>

<p>Une fonction est tout simplement un ensemble d'instruction placées entre { }. Une fonction toute seule n'a que peu d'intérêt, mais une fonction peut être mise dans une variable avec la commande def ce qui permet de la réutiliser autant de fois que voulu.</p>


<p>Exemple une fonction qui incrémente un élément de la pile de 1&nbsp;:</p>
<pre>
/incremente { 1 add } def
</pre>


<h4>Manipulation de la pile</h4>

<p>La pile étant un élément central, il existe des opérateurs pour la manipuler. Le principaux sont&nbsp;:</p>
<ul>
<li>pop&nbsp;: retire un élément de la pile</li>
<li>dup&nbsp;: duplique un élément de la pile</li>
<li>exch&nbsp;: échange les 2 derniers éléments de la pile</li>
<li>pstack&nbsp;: affiche le contenu de la pile (utile pour le debug)</li>
<li>clear&nbsp;: vide la pile</li>
</ul>


<h4>L'affichage</h4>

<p>L'affichage étant le but ultime de postscript, vous comprendrez qu'il y a beaucoup de primitives d'affichage, essentiellement vectoriel.</p>


<p>Regardez bien ça vous rappellera le <a href="http://fr.wikipedia.org/wiki/Logo_%28langage%29" hreflang="fr">logo</a>. Dessinons un carré&nbsp;:</p>
<pre>
newpath
0 0 moveto
10 0 rlineto
10 10 rlineto
0 10 rlineto
0 0 rlineto
stroke
</pre>


<p>Petite astuce si vous testez les commandes, chaque dessin doit se terminer par un showpage (ici par exemple, juste après le stroke), cela affiche le contenu du buffer sur une page et passe à la feuille suivante.</p>


<p>Quelques exemples de commande&nbsp;:</p>
<ul>
<li>setlinewidth (un paramètre&nbsp;: la largeur de trait)</li>
<li>closepath (ferme le dessin)</li>
<li>fill (remplit un chemin fermé)</li>
</ul>

<h4>Contrôle de flux</h4>

<p>Tous comme n'importe quel langage, le postscript permet des boucles et des if sous la forme "booléen méthode if". Par exemple&nbsp;:</p>
<pre>
% incrémente le dernier élément de la pile s'il est inférieur à 10
dup 10 lt { 1 add } if
</pre>


<p>Pour une boucle for, même topo. Exemple une somme de 1 à 10&nbsp;:</p>
<pre>
% valeur initiale
0 
% début incrément fin méthode for
1 1 10 { add } for
</pre>


<p>Voilà, je n'ai fait que survoler le langage, vous trouverez plus de détail dans ce livre <a href="http://www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF" hreflang="en">référence</a>.</p>


<h3>Un exemple</h3>

<p>Pour continuer, j'ai écrit un petit exemple commenté <a href="/public/Code/fourmi.ps">disponible en téléchargement</a>. Vous pouvez l'ouvrir avec un éditeur de texte ou utilise ps2pdf pour le rendre affichable. Cet exemple génère 75 pages visibles en PDF, chaque page correspond à 150 itérations du mouvement de la fourmi.</p>


<p>Lisez-le vous verrez que finalement le postscript c'est pas trop compliqué quand c'est pas écrit par une machine sur une seule ligne.</p>
	Tags:<a href="http://linux-attitude.fr/tag/code" title="Code" rel="tag">Code</a>, <a href="http://linux-attitude.fr/tag/curiosite" title="Curiosité" rel="tag">Curiosité</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/un-interpreteur-fantome/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ceux qu&#8217;il ne faut pas connaître</title>
		<link>http://linux-attitude.fr/post/ceux-qu-il-ne-faut-pas-connaitre</link>
		<comments>http://linux-attitude.fr/post/ceux-qu-il-ne-faut-pas-connaitre#comments</comments>
		<pubDate>Mon, 16 Mar 2009 19:14:00 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Curiosité]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/post/ceux-qu-il-ne-faut-pas-connaitre</guid>
		<description><![CDATA[Niveau&#160;:     
Résumé&#160;:


Après les "top of mind" qui prouvent qu'il existe toujours une solution pour vous dans le libre, voici des alternatives.
Ces nouveaux choix ne sont pas moins bons, il sont même meilleurs dans biens des cas. Il est juste moins fréquent de les indiquer à un nouveau venu, tout simplement parce [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <img src="/public/Pics/s.gif" alt="Star" /> <img src="/public/Pics/e.gif" alt="Empty" /> <img src="/public/Pics/e.gif" alt="Empty" /> <img src="/public/Pics/e.gif" alt="Empty" /> <img src="/public/Pics/e.gif" alt="Empty" /><br />
<strong>Résumé</strong>&nbsp;:</p>


<p>Après les <a href="/post/Ceux-qu-il-faut-connaitre">"top of mind"</a> qui prouvent qu'il existe toujours une solution pour vous dans le libre, voici des alternatives.
Ces nouveaux choix ne sont pas moins bons, il sont même meilleurs dans biens des cas. Il est juste moins fréquent de les indiquer à un nouveau venu, tout simplement parce qu'il faut bien faire le premier choix pour lui.
Mais il ne faut pas oublier que le monde du libre est le monde de la variété, l'utilisateur a toujours la possibilité de choisit une alternative.</p>


<p>Cette liste est là simplement pour donner des idées à tous ceux qui veulent choisir. Pour chaque section, une recherche sur google vous en ressortira bien d'autres.</p>


<h5>Serveurs&nbsp;:</h5>
<ul>
<li>Serveur web&nbsp;: <strong><a href="http://www.lighttpd.net/" hreflang="en">lighthttpd</a> <a href="http://www.cherokee-project.com/" hreflang="en">cherokee</a></strong></li>
<li>Serveur smtp&nbsp;: <strong><a href="http://www.exim.org/" hreflang="en">exim</a> <a href="http://mir2.ovh.net/www.qmail.org/top.html" hreflang="en">qmail</a></strong></li>
<li>Serveur pop et imap&nbsp;: <strong><a href="http://cyrusimap.web.cmu.edu/" hreflang="en">cyrus</a> <a href="http://www.courier-mta.org/imap/" hreflang="en">courier-imap</a></strong></li>
<li>Serveur dns&nbsp;: <strong><a href="http://cr.yp.to/djbdns.html" hreflang="en">djbdns</a> <a href="http://www.powerdns.com/[en">powerdns</a></strong></li>
<li>Serveur ftp&nbsp;: <strong><a href="http://www.proftpd.org/" hreflang="en">ProFTPD</a> <a href="http://www.pureftpd.org/project/pure-ftpd" hreflang="en">pure-ftpd</a></strong></li>
<li>Serveur d'annuaire&nbsp;: <strong><a href="http://www.opends.org/" hreflang="en">opends</a></strong></li>
<li>Serveur base de données&nbsp;: <strong><a href="http://www.postgresql.org/" hreflang="en">PostgreSQL</a> <a href="http://www.sqlite.org/" hreflang="en">SQLite</a></strong></li>
<li>Serveur telnet&nbsp;: aucun</li>
<li>Serveur ntp&nbsp;: <strong><a href="http://www.ntp.org/" hreflang="en">ntpd</a></strong></li>
<li>Serveur irc&nbsp;: <strong><a href="http://www.dal.net/?page=Bahamut" hreflang="en">bahamut</a> <a href="http://coder-com.undernet.org/" hreflang="en">ircu</a></strong></li>
<li>Proxy&nbsp;: <strong><a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html" hreflang="en">apache</a> <a href="http://varnish.projects.linpro.no/" hreflang="en">varnish</a> <a href="https://www.banu.com/tinyproxy/" hreflang="en">tinyproxy</a></strong></li>
<li>Mailing-list&nbsp;: <strong><a href="http://www.sympa.org/" hreflang="en">sympa</a></strong></li>
<li>Application&nbsp;: <strong><a href="http://www.jboss.org/" hreflang="en">jboss</a> <a href="http://tomcat.apache.org/index.html" hreflang="en">tomcat</a> <a href="https://glassfish.dev.java.net/" hreflang="en">glassfish</a></strong></li>
</ul>

<h5>Administration&nbsp;:</h5>
<ul>
<li>Shell&nbsp;: <strong><a href="http://www.zsh.org/" hreflang="en">zsh</a> <a href="http://www.cs.mun.ca/~michael/pdksh/" hreflang="en">ksh</a> <a href="http://www.tcsh.org/Welcome" hreflang="en">tcsh</a></strong></li>
<li>Boot&nbsp;: <strong><a href="http://syslinux.zytor.com/wiki/index.php/The_Syslinux_Project" hreflang="en">syslinux</a> <a href="ftp://metalab.unc.edu/pub/Linux/system/boot/lilo/!INDEX.html" hreflang="en">lilo</a></strong></li>
<li>Raid&nbsp;: <strong><a href="http://people.redhat.com/~heinzm/sw/dmraid/" hreflang="en">dmraid</a></strong></li>
<li>Suivi de log&nbsp;: <strong><a href="http://www.logwatch.org/" hreflang="en">logwatch</a></strong></li>
<li>Sauvegarde&nbsp;: <strong><a href="http://backuppc.sourceforge.net/" hreflang="en">BackupPC</a></strong></li>
<li>Graphage&nbsp;: <strong><a href="http://www.zabbix.com/" hreflang="en">zabbix</a> <a href="http://munin.projects.linpro.no/" hreflang="en">munin</a> <a href="http://www.centreon.com/" hreflang="en">centreon</a></strong></li>
<li>Supervision&nbsp;: <strong><a href="http://www.zabbix.com/" hreflang="en">zabbix</a> <a href="http://mmonit.com/monit/" hreflang="en">monit</a> <a href="http://www.centreon.com/" hreflang="en">centreon</a></strong></li>
<li>Scripting&nbsp;: <strong><a href="http://www.gnu.org/software/bash/" hreflang="en">bash</a> <a href="http://www.python.org/" hreflang="en">python</a> <a href="http://www.ruby-lang.org/fr/" hreflang="fr">ruby</a> <a href="http://www.php.net/" hreflang="en">php</a></strong></li>
<li>Somme de contrôle&nbsp;: <strong><a href="http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man1/md5sum.1.html" hreflang="fr">md5sums</a></strong></li>
<li>Problème réseau&nbsp;: <strong><a href="http://fr.wikipedia.org/wiki/Traceroute" hreflang="fr">traceroute</a> <a href="http://www.delafond.org/traducmanfr/man/man8/ping.8.html" hreflang="fr">ping</a> <a href="http://nmap.org/" hreflang="en">nmap</a> <a href="http://sourceforge.net/projects/iperf/" hreflang="en">iperf</a></strong></li>
</ul>

<h5>Clients&nbsp;:</h5>
<ul>
<li>Client mail&nbsp;: <strong><a href="http://projects.gnome.org/evolution/" hreflang="en">evolution</a> <a href="http://www.mutt.org/" hreflang="en">mutt</a> <a href="http://sylpheed.sraoss.jp/en/" hreflang="en">sylpheed</a> <a href="http://kontact.kde.org/kmail/" hreflang="en">kmail</a></strong></li>
<li>Client web&nbsp;: <strong><a href="http://www.konqueror.org/" hreflang="en">konqueror</a> <a href="http://lynx.isc.org/" hreflang="en">lynx</a> <a href="http://links.twibright.com/" hreflang="en">links</a></strong></li>
<li>Environnement de bureau&nbsp;: <strong><a href="http://www.kde.org/" hreflang="en">kde</a> <a href="http://www.xfce.org/" hreflang="en">xfce</a> <a href="http://www.enlightenment.org/" hreflang="en">enlightenment</a> <a href="http://www.fvwm.org/" hreflang="en">fvwm</a> <a href="http://awesome.naquadah.org/" hreflang="en">awsome</a></strong></li>
<li>Graphisme&nbsp;: <strong><a href="http://www.koffice.org/krita/" hreflang="en">krita</a> <a href="http://www.inkscape.org/" hreflang="en">inkscape</a></strong></li>
</ul>

<h5>Divers</h5>
<ul>
<li>Noyau&nbsp;: <strong><a href="http://www.netbsd.org/" hreflang="en">netbsd</a> <a href="http://www.openbsd.org/fr/" hreflang="fr">openbsd</a> <a href="http://www.freebsd.org/fr/" hreflang="fr">freebsd</a></strong></li>
<li>Serveur graphique&nbsp;: <strong><a href="http://www.directfb.org/" hreflang="en">directfb</a></strong></li>
<li>Gestion de version&nbsp;: <strong><a href="http://git-scm.com/" hreflang="en">git</a> <a href="http://www.darcs.net/" hreflang="en">darcs</a> <a href="http://www.gnu.org/software/gnu-arch/" hreflang="en">arch</a> <a href="http://www.selenic.com/mercurial/wiki/" hreflang="en">mercurial</a></strong></li>
<li>Antispam&nbsp;: <strong><a href="http://dspam.nuclearelephant.com/" hreflang="en">dspam</a></strong></li>
<li>Synchronisation&nbsp;: <strong><a href="http://rsync.samba.org/" hreflang="en">rsync</a> <a href="http://oss.linbit.com/csync2/" hreflang="en">csync2</a></strong></li>
<li>Machine virtuelle&nbsp;: <strong><a href="http://www.cl.cam.ac.uk/research/srg/netos/xen/" hreflang="en">xen</a> <a href="http://www.linux-kvm.org/page/Main_Page" hreflang="en">kvm</a> <a href="http://wiki.openvz.org/Main_Page" hreflang="en">openvz</a> <a href="http://linux-vserver.org/Welcome_to_Linux-VServer.org" hreflang="en">linux-vserver</a> <a href="http://user-mode-linux.sourceforge.net/" hreflang="en">UserModeLinux</a></strong></li>
<li>Voip&nbsp;: <strong><a href="http://www.gnugk.org/" hreflang="en">GNU Gatekeeper</a> <a href="http://www.sipfoundry.org/" hreflang="en">sipX</a></strong></li>
<li>Firewall&nbsp;: <strong><a href="http://www.netfilter.org/" hreflang="en">iptables</a> <a href="http://www.fwbuilder.org/" hreflang="en">fwbuilder</a> <a href="http://www.openbsd.org/faq/pf/fr/index.html" hreflang="fr">PacketFilter</a> <a href="http://www.shorewall.net/" hreflang="en">shorewall</a></strong></li>
<li>Distribution&nbsp;: <strong><a href="http://www.debian.org/index.fr.html" hreflang="fr">debian</a> <a href="http://www.fedora-fr.org/" hreflang="fr">fedora</a> <a href="http://www.mandriva.com/fr" hreflang="fr">mandriva</a> <a href="http://fr.opensuse.org/Bienvenue_sur_openSUSE.org" hreflang="fr">SuSE</a></strong></li>
<li>Lecture de fichier&nbsp;: <strong><a href="http://www.vim.org/" hreflang="en">vim</a> <a href="http://www.gnu.org/software/emacs/" hreflang="en">emacs</a></strong></li>
</ul>


<h5>Et les protocoles:</h5>

<ul>
<li>Transfert de fichier&nbsp;: <strong>ftp http</strong></li>
<li>Serveur de fichier&nbsp;: <strong>webdav ssh ocfs smb</strong></li>
<li>Réception de mails&nbsp;: <strong>pop imap uucp</strong></li>
<li>Gestion d'utilisateurs&nbsp;: <strong>passwd nis</strong></li>
</ul>

<p>... liste très loin d'être exhaustive ...</p>
	Tags:<a href="http://linux-attitude.fr/tag/curiosite" title="Curiosité" rel="tag">Curiosité</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/ceux-qu-il-ne-faut-pas-connaitre/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ceux qu&#8217;il faut connaître</title>
		<link>http://linux-attitude.fr/post/ceux-qu-il-faut-connaitre</link>
		<comments>http://linux-attitude.fr/post/ceux-qu-il-faut-connaitre#comments</comments>
		<pubDate>Sat, 14 Mar 2009 16:02:00 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Curiosité]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/post/ceux-qu-il-faut-connaitre</guid>
		<description><![CDATA[Niveau&#160;:     
Résumé&#160;:


Aujourd'hui une petite liste de logiciels à connaître et à conseiller. Attention, s'ils sont là, c'est parce qu'ils sont "top of mind", ils ont les fonctionnalités les plus larges et conviendront au plus grand nombre. C'est pourquoi il est bon de les conseiller à ceux qui ne savent pas quoi [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <img src="/public/Pics/s.gif" alt="Star" /> <img src="/public/Pics/e.gif" alt="Empty" /> <img src="/public/Pics/e.gif" alt="Empty" /> <img src="/public/Pics/e.gif" alt="Empty" /> <img src="/public/Pics/e.gif" alt="Empty" /><br />
<strong>Résumé</strong>&nbsp;:</p>


<p>Aujourd'hui une petite liste de logiciels à connaître et à conseiller. Attention, s'ils sont là, c'est parce qu'ils sont "top of mind", ils ont les fonctionnalités les plus larges et conviendront au plus grand nombre. C'est pourquoi il est bon de les conseiller à ceux qui ne savent pas quoi choisir. Cela ne veut pas dire qu'il n'existe pas pour autant d'alternatives fiables, voire meilleures.</p>


<p>Avant d'avoir le choix, il faut avoir une base à partir de laquelle choisir, donc on commence par un choix par défaut, puis on adapte en fonction des besoins. Apache est un bon serveur web, mais dans certains cas on préfèrera lighthttpd, ces cas étant plus rares on commence par apache.</p>


<h5>Serveurs&nbsp;:</h5>
<ul>
<li>Serveur web&nbsp;: <strong><a href="http://httpd.apache.org/" hreflang="en">apache 2.2</a></strong></li>
<li>Serveur smtp&nbsp;: <strong><a href="http://www.postfix.org/" hreflang="en">postfix</a></strong></li>
<li>Serveur pop et imap&nbsp;: <strong><a href="http://www.dovecot.org/" hreflang="en">dovecot</a></strong></li>
<li>Serveur dns&nbsp;: <strong><a href="https://www.isc.org/products/BIND" hreflang="en">bind</a></strong></li>
<li>Serveur ftp&nbsp;: <strong><a href="http://vsftpd.beasts.org/" hreflang="en">vsftpd</a></strong></li>
<li>Serveur d'annuaire&nbsp;: <strong><a href="http://www.openldap.org/" hreflang="en">openldap</a></strong></li>
<li>Serveur base de données&nbsp;: <strong><a href="http://dev.mysql.com/doc/" hreflang="en">mysql</a></strong></li>
<li>Serveur telnet&nbsp;: aucun</li>
<li>Serveur ntp&nbsp;: <strong><a href="http://www.openntpd.org/" hreflang="en">openntp</a></strong></li>
<li>Serveur irc&nbsp;: conseillez-moi</li>
<li>Proxy&nbsp;: <strong><a href="http://www.squid-cache.org/" hreflang="en">squid</a></strong></li>
<li>Mailing-list&nbsp;: <strong><a href="http://www.gnu.org/software/mailman/index.html" hreflang="en">mailman</a></strong></li>
<li>Application&nbsp;: ne se prononce pas</li>
</ul>

<h5>Administration&nbsp;:</h5>
<ul>
<li>Shell&nbsp;: <strong><a href="http://www.gnu.org/software/bash/" hreflang="en">bash</a></strong></li>
<li>Boot&nbsp;: <strong><a href="http://www.gnu.org/software/grub/" hreflang="en">grub</a></strong></li>
<li>Raid&nbsp;: <strong><a href="http://neil.brown.name/blog/mdadm" hreflang="en">mdadm</a></strong></li>
<li>Suivi de log&nbsp;: <strong><a href="http://logcheck.org/" hreflang="en">logcheck</a></strong></li>
<li>Sauvegarde&nbsp;: <strong><a href="http://www.amanda.org/" hreflang="en">amanda</a></strong></li>
<li>Graphage&nbsp;: <strong><a href="http://www.cacti.net/" hreflang="en">cacti</a></strong></li>
<li>Supervision&nbsp;: <strong><a href="http://www.nagios.org/" hreflang="en">nagios</a></strong></li>
<li>Scripting&nbsp;: <strong><a href="http://dev.perl.org/perl5/" hreflang="en">perl</a></strong></li>
<li>Somme de contrôle&nbsp;: <strong><a href="http://linux.die.net/man/1/sha256sum" hreflang="en">sha256sum</a></strong></li>
<li>Problème réseau&nbsp;: <strong><a href="http://www.bitwizard.nl/mtr/" hreflang="en">mtr</a></strong></li>
</ul>

<h5>Clients&nbsp;:</h5>
<ul>
<li>Client mail&nbsp;: <strong><a href="http://www.mozilla-europe.org/fr/products/thunderbird/" hreflang="fr">thunderbird</a></strong></li>
<li>Client web&nbsp;: <strong><a href="http://www.mozilla-europe.org/fr/firefox/" hreflang="fr">firefox</a></strong></li>
<li>Environnement de bureau&nbsp;: <strong><a href="http://www.gnomefr.org/" hreflang="fr">gnome</a></strong></li>
<li>Graphisme&nbsp;: <strong><a href="http://www.gimp.org/" hreflang="en">gimp</a></strong></li>
</ul>

<h5>Divers</h5>
<ul>
<li>Noyau&nbsp;: <strong><a href="http://www.kernel.org/" hreflang="en">linux</a></strong></li>
<li>Serveur graphique&nbsp;: <strong><a href="http://www.x.org/wiki/" hreflang="en">xorg</a></strong></li>
<li>Gestion de version&nbsp;: <strong><a href="http://svnbook.red-bean.com/" hreflang="en">subversion</a></strong></li>
<li>Antispam&nbsp;: <strong><a href="http://spamassassin.apache.org/" hreflang="en">spamassassin</a></strong></li>
<li>Synchronisation&nbsp;: <strong><a href="http://www.cis.upenn.edu/~bcpierce/unison/" hreflang="en">unisson</a></strong></li>
<li>Machine virtuelle&nbsp;: <strong><a href="http://www.virtualbox.org/" hreflang="en">virtualbox</a></strong></li>
<li>Voip&nbsp;: <strong><a href="http://www.asterisk.org/" hreflang="en">asterisk</a></strong></li>
<li>Firewall&nbsp;: <strong><a href="http://www.nufw.org/" hreflang="fr">nufw</a></strong></li>
<li>Distribution&nbsp;: <strong><a href="http://www.ubuntu-fr.org/" hreflang="fr">ubuntu</a></strong></li>
<li>Lecture de fichier&nbsp;: <strong><a href="http://www.greenwoodsoftware.com/less/" hreflang="en">less</a></strong></li>
</ul>


<h5>Et les protocoles:</h5>

<ul>
<li>Transfert de fichier&nbsp;: <strong>sftp</strong></li>
<li>Serveur de fichier&nbsp;: <strong>nfs</strong></li>
<li>Réception de mails&nbsp;: <strong>imaps</strong></li>
<li>Gestion d'utilisateurs&nbsp;: <strong>ldap</strong></li>
</ul>

<p>... liste non exhaustive ...</p>
	Tags:<a href="http://linux-attitude.fr/tag/curiosite" title="Curiosité" rel="tag">Curiosité</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/ceux-qu-il-faut-connaitre/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Le C est plus lisible que le perl</title>
		<link>http://linux-attitude.fr/post/le-c-est-plus-lisible-que-le-perl</link>
		<comments>http://linux-attitude.fr/post/le-c-est-plus-lisible-que-le-perl#comments</comments>
		<pubDate>Fri, 13 Jun 2008 20:00:00 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Paul et Mickey]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Curiosité]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/post/le-c-est-plus-lisible-que-le-perl</guid>
		<description><![CDATA[Niveau&#160;:     
Résumé&#160;: C


Le C est plus lisible que le perl, la preuve le code C (test.c) suivant est valide&#160;:


%:include &#60;stdio.h&#62;
??=define T 2

int main(void)
??&#60;
        int n&#60;:T:&#62;;

        n??(0??) = 1;
        if(n&#60;:0??) == [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <img src="/public/Pics/s.gif" alt="Star" /> <img src="/public/Pics/s.gif" alt="Star" /> <img src="/public/Pics/s.gif" alt="Star" /> <img src="/public/Pics/e.gif" alt="Empty" /> <img src="/public/Pics/e.gif" alt="Empty" /><br />
<strong>Résumé</strong>&nbsp;: C</p>


<p>Le C est plus lisible que le perl, la preuve le code C (test.c) suivant est valide&nbsp;:</p>

<pre>
%:include &lt;stdio.h&gt;
??=define T 2

int main(void)
??&lt;
        int n&lt;:T:&gt;;

        n??(0??) = 1;
        if(n&lt;:0??) == 1)
        &lt;%
                n??(1:&gt; = ??- n&lt;:0:&gt;;
        %&gt; else
        &lt;%
                n??(1??) = n&lt;:0:&gt; ??! 2;
        %&gt;
        n??(0??) ??'= 3;

        printf( &quot; n0 = %d ??/
                n1 = %d\n&quot;, n&lt;:0:&gt;, n&lt;:1:&gt; );

        return 0;
??&gt;
</pre>


<p>Je le dis et je le prouve&nbsp;:</p>
<pre>
$ gcc -trigraphs test.c
$ ./a.out
 n0 = 2 		n1 = -2
</pre>


<p>Hé oui, le C contient quelques spécifications plus ou moins oubliées qui vous permettent ces bizarreries. Il s'agit en fait des trigraphs et des digraphs. Les premiers (3 caractères dont les 2 premiers sont des <strong>?</strong>) ont été inventé pour palier un manque dans les tables de caractères pré ASCII (on me souffle qu'en fait c'est post ASCII), dont le petit nom est ISO 646. À l'époque de l'<a href="/post/Un-code-unique">unicode</a> ceci est toujours valable (par une option du compilateur il est vrai).</p>


<p>La deuxième série de caractère spéciaux (basée sur des <strong>&lt;</strong>, <strong>&gt;</strong>, <strong>%</strong> et <strong>:</strong>) a été introduite en 1999&nbsp;! Hé oui, la première écriture était trop peu lisible et devait être simplifiée ...</p>


<p>On peut ainsi créer un bug en C99 sans s'en rendre compte avant longtemps. Exemple&nbsp;:</p>
<pre>
int a;
a=1;
// Algo a la Kevin ?????????????????/
a++;
</pre>


<p><strong>Exercice</strong>&nbsp;: Pour ceux qui suivent, trouvez la signification de chacun des groupes de caractères. Vous avez le droit à un gcc mais pas au web.</p>
	Tags:<a href="http://linux-attitude.fr/tag/c" title="C" rel="tag">C</a>, <a href="http://linux-attitude.fr/tag/curiosite" title="Curiosité" rel="tag">Curiosité</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/le-c-est-plus-lisible-que-le-perl/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using apc (user agent is rejected)
Database Caching 4/24 queries in 0.020 seconds using apc

Served from: linux-attitude.fr @ 2010-07-31 04:25:57 -->