<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://planet-fr.debian.net/">
	<title>Planet Debian-FR</title>
	<link>http://planet-fr.debian.net/</link>
	<description>Planet Debian-FR - http://planet-fr.debian.net/</description>

	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="http://carlchenet.com/?p=1660" />
			<rdf:li rdf:resource="http://carlchenet.com/?p=1649" />
			<rdf:li rdf:resource="https://raphaelhertzog.fr/?p=1812" />
			<rdf:li rdf:resource="http://ascendances.wordpress.com/?p=1111" />
			<rdf:li rdf:resource="http://charles.plessy.org/Debian/debi%C3%A2neries/contrib/" />
			<rdf:li rdf:resource="http://fgallaire.flext.net/?p=2456" />
			<rdf:li rdf:resource="https://raphaelhertzog.fr/?p=1785" />
			<rdf:li rdf:resource="http://charles.plessy.org/Debian/debi%C3%A2neries/umegaya-branchable/" />
			<rdf:li rdf:resource="http://roland.entierement.nu/blog/2013/04/11/36.html" />
			<rdf:li rdf:resource="http://www.luffy.cx/fr/blog/2013-gnucash-eurl.html" />
			<rdf:li rdf:resource="http://tanguy.ortolo.eu/blog/article101/precompresser-apache" />
			<rdf:li rdf:resource="http://www-public.telecom-sudparis.eu/~berger_o/weblog/?p=1050" />
			<rdf:li rdf:resource="http://roland.entierement.nu/blog/2013/03/29/dernieres-nouvelles-avant-la-fin-du-mois.html" />
			<rdf:li rdf:resource="http://tanguy.ortolo.eu/blog/article100/nouveau-planet-auto-hebergement" />
			<rdf:li rdf:resource="http://www-public.telecom-sudparis.eu/~berger_o/weblog/?p=1046" />
			<rdf:li rdf:resource="http://france.debian.net/posts/2013/Annonce_SL_2013/" />
			<rdf:li rdf:resource="http://fgallaire.flext.net/?p=1903" />
			<rdf:li rdf:resource="http://www.luffy.cx/fr/blog/2013-lldpd-0.7.1.html" />
			<rdf:li rdf:resource="http://france.debian.net/posts/2012/Mini_DebConf_Paris_2012/" />
			<rdf:li rdf:resource="http://ascendances.wordpress.com/?p=930" />
			<rdf:li rdf:resource="http://gcolpart.evolix.net/blog21/?p=522" />
			<rdf:li rdf:resource="http://blog.aurel32.net/?p=133" />
			<rdf:li rdf:resource="http://blog.aurel32.net/?p=118" />
			<rdf:li rdf:resource="http://blog.developpez.com/xmlsrv/9357@http://blog.developpez.com" />
			<rdf:li rdf:resource="http://blog.developpez.com/xmlsrv/9348@http://blog.developpez.com" />
			<rdf:li rdf:resource="http://gcolpart.evolix.net/blog21/?p=356" />
			<rdf:li rdf:resource="urn:md5:d67ab299c9cdda49a8cd2b60f05dc2a5" />
			<rdf:li rdf:resource="urn:md5:574ad1b3c73cd722dc7397a40f9a4cf9" />
			<rdf:li rdf:resource="http://machard.org/blog/index.php/archives/2006/04/19/et-si-les-ecologistes-setaient-trompe-au-sujet-du-nucleaire/" />
			<rdf:li rdf:resource="http://machard.org/blog/index.php/archives/2006/03/15/une-belle-explication-des-drm/" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="http://carlchenet.com/?p=1660">
	<title>Carl Chenet: Publication de Debian GNU/Hurd 2013</title>
	<link>http://carlchenet.com/2013/05/24/publication-de-debian-gnuhurd-2013/</link>
	<content:encoded>&lt;p&gt;Suivez-moi &lt;a href=&quot;http://identi.ca/carlchenet&quot; target=&quot;_blank&quot; title=&quot;Carl Chenet sur Identi.ca&quot;&gt;aussi sur Identi.ca&lt;/a&gt; ou &lt;a href=&quot;http://twitter.com/carl_chenet&quot; target=&quot;_blank&quot; title=&quot;Carl Chenet sur Twitter&quot;&gt;sur Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Une nouvelle à peu près passée inaperçue et qui m’apparaît pourtant fort intéressante à plusieurs points de vue : &lt;a href=&quot;http://www.debian.org/ports/hurd/index&quot; target=&quot;_blank&quot; title=&quot;Debian GNU/Hurd&quot;&gt;Debian GNU/Hurd 2013&lt;/a&gt;, le système d’exploitation offrant conjointement &lt;strong&gt;&lt;a href=&quot;http://www.gnu.org/software/hurd/hurd.html&quot; target=&quot;_blank&quot; title=&quot;GNU/Hurd&quot;&gt;Hurd&lt;/a&gt; et la suite des outils et paquets de Debian&lt;/strong&gt; est disponible depuis deux jours.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://carlchenet.files.wordpress.com/2010/09/debian-gnu.jpg&quot;&gt;&lt;img src=&quot;http://carlchenet.files.wordpress.com/2010/09/debian-gnu.jpg?w=300&amp;amp;h=225&quot; alt=&quot;debian-gnu&quot; width=&quot;300&quot; class=&quot;alignnone size-medium wp-image-614&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le Hurd est le noyau du système d’exploitation GNU/Hurd que promeut &lt;a href=&quot;http://www.gnu.org/&quot; target=&quot;_blank&quot; title=&quot;Le projet GNU&quot;&gt;le projet GNU&lt;/a&gt; fondé par &lt;a href=&quot;http://stallman.org/&quot; target=&quot;_blank&quot; title=&quot;Page personnelle de Richard Stallman&quot;&gt;Richard Stallman&lt;/a&gt;. Le Hurd est une suite de programmes et de bibliothèques autour d’&lt;a href=&quot;http://fr.wikipedia.org/wiki/Noyau_de_syst%C3%A8me_d'exploitation#Syst.C3.A8mes_.C3.A0_micro-noyaux&quot; target=&quot;_blank&quot; title=&quot;Micro-noyau sur Wikipedia&quot;&gt;un micro-noyau&lt;/a&gt; nommé &lt;a href=&quot;http://www.gnu.org/software/hurd/microkernel/mach/gnumach.html&quot; target=&quot;_blank&quot; title=&quot;GNU Mach&quot;&gt;Mach&lt;/a&gt; qui s’oppose par son fonctionnement &lt;a href=&quot;http://fr.wikipedia.org/wiki/Noyau_de_syst%C3%A8me_d'exploitation#Noyaux_monolithiques_modulaires&quot; target=&quot;_blank&quot; title=&quot;Noyau monolithique modulaire&quot;&gt;au noyau monolithique modulaire&lt;/a&gt; comme &lt;a href=&quot;http://www.linux.org/&quot; target=&quot;_blank&quot; title=&quot;Le projet Linux&quot;&gt;Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;À la différence du port &lt;a href=&quot;http://carlchenet.com/2010/10/18/debian-avec-le-noyau-de-freebsd-debian-gnukfreebsd/&quot; target=&quot;_blank&quot; title=&quot;Debian GNU/kFreeBSD sur le blog de Carl Chenet&quot;&gt;Debian GNU/kFreeBSD&lt;/a&gt; – qui offre conjointement le noyau du système d’exploitation &lt;a href=&quot;http://www.freebsd.org/&quot; target=&quot;_blank&quot; title=&quot;Site du projet FreeBSD&quot;&gt;FreeBSD&lt;/a&gt; avec la suite des outils et paquets Debian – ce nouveau croisement &lt;strong&gt;n’est pas une mouture officielle de Debian Wheezy 7.0&lt;/strong&gt; car il repose sur les paquets présents pour &lt;a href=&quot;http://www.debian.org/releases/sid/&quot; target=&quot;_blank&quot; title=&quot;Distribution Debian Sid&quot;&gt;Sid&lt;/a&gt;. Il reste donc pour l’instant &lt;a href=&quot;http://www.debian.org/ports/index#portlist-unreleased&quot; target=&quot;_blank&quot; title=&quot;Liste des ports non-offciels de Debian&quot;&gt;un port non-officiel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;De plus, ce port n’est pour l’instant disponible &lt;strong&gt;que pour l’architecture i386&lt;/strong&gt; mais propose près &lt;strong&gt;de 75% des paquets disponibles&lt;/strong&gt; dans l’archive officielle du projet Debian.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quels sont les apports de ce nouveau port ?&lt;/strong&gt; Bien qu’il reste encore assez &lt;strong&gt;expérimental&lt;/strong&gt;, les buts possibles sont à terme de rejoindre le fonctionnement du port Debian GNU/kFreeBSD, à savoir offrir la plus grande diversité possible de choix à l’utilisateur du système Debian. Certains utilisateurs préfèrent le noyau kFreeBSD au noyau Linux, pour sa plus grande robustesse (supposée) ou certaines options offertes par ce noyau. Pour Debian GNU/Hurd, l’objectif sera le même, donner accès aux avantages et points forts offerts par le noyau Hurd (à priori une plus grande stabilité offerte théoriquement par les micro-noyaux) tout en restant dans la suite d’outils et de paquets Debian. Debian s’inscrit ainsi dans sa ligne d’être&lt;strong&gt; le système d’exploitation universel&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Les &lt;a href=&quot;http://www.debian.org/ports/hurd/hurd-install&quot; target=&quot;_blank&quot; title=&quot;Informations de configuration de Debian GNU/Hurd 2013&quot;&gt;informations de configuration&lt;/a&gt; ainsi que &lt;a href=&quot;http://www.gnu.org/software/hurd/faq.html&quot; target=&quot;_blank&quot; title=&quot;Foire aux questions de GNU/Hurd&quot;&gt;la foire aux questions&lt;/a&gt; seront à lire pour &lt;strong&gt;ceux qui tenteront l’aventure&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Et vous&lt;/strong&gt;, que pensez-vous de ce port Debian GNU/Hurd et plus généralement du développement &lt;strong&gt;des ports non-officiels et officiels&lt;/strong&gt; de Debian ?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://carlchenet.files.wordpress.com/2010/09/gnu-debian-banner.png&quot;&gt;&lt;img src=&quot;http://carlchenet.files.wordpress.com/2010/09/gnu-debian-banner.png?w=113&amp;amp;h=150&quot; alt=&quot;gnu-debian-banner&quot; width=&quot;113&quot; class=&quot;alignnone size-thumbnail wp-image-647&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Encore &lt;strong&gt;quelques ressources intéresantes&lt;/strong&gt; sur le sujet :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.gnu.org/software/hurd/news/2013-05-debian_gnu_hurd_2013.html&quot; target=&quot;_blank&quot; title=&quot;Communiqué officiel sur le site gnu.org&quot;&gt;Communiqué officiel de la publication de Debian GNU/Hurd 2013&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.debian.org/Debian_GNU/Hurd&quot; target=&quot;_blank&quot; title=&quot;Debian GNU/Hurd sur le wiki de Debian&quot;&gt;Debian GNU/Hurd sur le wiki de Debian&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/carlchenet.wordpress.com/1660/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/carlchenet.wordpress.com/1660/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;http://stats.wordpress.com/b.gif?host=carlchenet.com&amp;amp;blog=7722010&amp;amp;post=1660&amp;amp;subd=carlchenet&amp;amp;ref=&amp;amp;feed=1&quot; border=&quot;0&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-24T17:57:45+00:00</dc:date>
	<dc:creator>Carl Chenet</dc:creator>
</item>
<item rdf:about="http://carlchenet.com/?p=1649">
	<title>Carl Chenet: Vrac de mini-messages n°2</title>
	<link>http://carlchenet.com/2013/05/21/vrac-de-mini-messages-n2/</link>
	<content:encoded>&lt;p&gt;Suivez-moi &lt;a href=&quot;http://identi.ca/carlchenet&quot; target=&quot;_blank&quot; title=&quot;Carl Chenet sur Identi.ca&quot;&gt;aussi sur Identi.ca&lt;/a&gt; ou &lt;a href=&quot;http://twitter.com/carl_chenet&quot; target=&quot;_blank&quot; title=&quot;Carl Chenet sur Twitter&quot;&gt;sur Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour cette catégorie d’article, je passe à &lt;strong&gt;une publication hebdomadaire &lt;img src=&quot;http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/strong&gt; Les liens d’origine sont enrichis &lt;strong&gt;des approfondissements&lt;/strong&gt; que j’ai pu effectuer entre la publication du dent/tweet et la publication de cet article.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://twitter.com/search?q=%23debian&amp;amp;src=hash&quot;&gt;&lt;s&gt;#&lt;/s&gt;debian&lt;/a&gt; &lt;a href=&quot;https://twitter.com/search?q=%23wheezy&amp;amp;src=hash&quot;&gt;&lt;s&gt;#&lt;/s&gt;wheezy&lt;/a&gt; 7.1 devrait être publiée samedi 15 juin &lt;/strong&gt;&lt;a href=&quot;http://t.co/vnr4fnIljf&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; title=&quot;http://ur1.ca/dvraj&quot;&gt;&lt;strong&gt;http://ur1.ca/dvraj&lt;/strong&gt; &lt;/a&gt; =&amp;gt; Information très intéressante qui n’a pas été beaucoup relayée. La première point release est à mon avis une bonne occasion pour les administrateurs système qui prévoient &lt;strong&gt;de mettre à jour leur parc de le faire&lt;/strong&gt;, car on a essuyé les plâtres de la sortie et on est maintenant prêt à migrer plus facilement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Application de blog pour &lt;a href=&quot;https://twitter.com/search?q=%23django&amp;amp;src=hash&quot;&gt;&lt;s&gt;#&lt;/s&gt;django&lt;/a&gt; très sympa : &lt;a href=&quot;https://twitter.com/search?q=%23zinnia&amp;amp;src=hash&quot;&gt;&lt;s&gt;#&lt;/s&gt;zinnia&lt;/a&gt; &lt;/strong&gt;&lt;a href=&quot;http://t.co/uv16GPWwbn&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; title=&quot;http://ur1.ca/dv6ja&quot;&gt;&lt;strong&gt;http://ur1.ca/dv6ja&lt;/strong&gt; &lt;/a&gt;=&amp;gt; tellement sympa que je la mets en place sur un site que je gère. Très content du résultat jusqu’ici, très conforme à mes attentes d’une application entièrement intégrée à Django. Je trouve le résult et le modèle de développement très professionnels.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sortie de &lt;a href=&quot;https://twitter.com/search?q=%23PostgreSQL&amp;amp;src=hash&quot;&gt;&lt;s&gt;#&lt;/s&gt;PostgreSQL&lt;/a&gt; 9.3 beta 1 &lt;/strong&gt;&lt;a href=&quot;http://t.co/uPkFlJt02R&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; title=&quot;http://b1t.it/dgb4&quot;&gt;&lt;strong&gt;http://b1t.it/dgb4&lt;/strong&gt; &lt;/a&gt;=&amp;gt; je suis séduit par une fonctionnalité qui m’intéresse directement, à savoir
&lt;pre&gt;Bascules d'urgence rapides (Failover) vers un serveur secondaire pour
garantir la haute disponibilité de vos données&lt;span style=&quot;font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;créer un dico avec &lt;a href=&quot;https://twitter.com/search?q=%23CPython2&amp;amp;src=hash&quot;&gt;&lt;s&gt;#&lt;/s&gt;CPython2&lt;/a&gt;.7 avec dict() ou {} ? {} à privilégier d’après cet article &lt;a href=&quot;http://t.co/GI7LqqaKRu&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; title=&quot;http://ur1.ca/dulhv&quot;&gt;http://ur1.ca/dulhv&lt;/a&gt;&lt;/strong&gt; =&amp;gt; c’est le genre d’article que j’apprécie beaucoup, qui va chercher la petite bête et pousse à utiliser &lt;strong&gt;les bons idiomes&lt;/strong&gt; par rapport au langage et à l’interpréteur utilisés.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installer &lt;a href=&quot;https://twitter.com/search?q=%23Debian&amp;amp;src=hash&quot;&gt;&lt;s&gt;#&lt;/s&gt;Debian&lt;/a&gt; &lt;a href=&quot;https://twitter.com/search?q=%23Wheezy&amp;amp;src=hash&quot;&gt;&lt;s&gt;#&lt;/s&gt;Wheezy&lt;/a&gt; sur un &lt;a href=&quot;https://twitter.com/search?q=%23Qnap&amp;amp;src=hash&quot;&gt;&lt;s&gt;#&lt;/s&gt;Qnap&lt;/a&gt; TS-219 PII &lt;/strong&gt;&lt;a href=&quot;http://t.co/qN43c4nITR&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; title=&quot;http://ur1.ca/dtzo3&quot;&gt;&lt;strong&gt;http://ur1.ca/dtzo3&lt;/strong&gt; &lt;/a&gt;=&amp;gt; grosse affluence sur l’article, &lt;strong&gt;de très bons retours&lt;/strong&gt; &lt;a href=&quot;http://carlchenet.com/2013/05/13/installer-debian-wheezy-sur-un-qnap-ts-219-pii/#comments&quot; target=&quot;_blank&quot; title=&quot;Commentaires de l'article Installer debian wheezy sur un qnap 219 PII sur le blog de Carl Chenet&quot;&gt;dans les commentaires&lt;/a&gt; (merci à mes lecteurs).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Et vous ? Que pensez-vous des technologies et articles abordés ci-dessus ? N’hésitez pas à réagir dans les commentaires.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/carlchenet.wordpress.com/1649/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/carlchenet.wordpress.com/1649/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;http://stats.wordpress.com/b.gif?host=carlchenet.com&amp;amp;blog=7722010&amp;amp;post=1649&amp;amp;subd=carlchenet&amp;amp;ref=&amp;amp;feed=1&quot; border=&quot;0&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-21T11:01:35+00:00</dc:date>
	<dc:creator>Carl Chenet</dc:creator>
</item>
<item rdf:about="https://raphaelhertzog.fr/?p=1812">
	<title>Rapha&amp;#235;l Hertzog: Mes activités libres en avril 2013</title>
	<link>http://raphaelhertzog.fr/2013/05/13/mes-activites-libres-en-avril-2013/</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;http://raphaelhertzog.com/files/2012/07/activity-report-300x300.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; class=&quot;alignleft size-medium wp-image-2728&quot; height=&quot;300&quot; /&gt;Voici le récapitulatif mensuel de toutes mes activités gravitant autour du logiciel libre. Si vous faites partie des personnes ayant fait &lt;a href=&quot;http://raphaelhertzog.fr/go/donate/&quot;&gt;un don pour soutenir mon travail&lt;/a&gt; (102,70 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.&lt;/p&gt;
&lt;h3&gt;Debian France&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Travaux sur Galette&lt;/strong&gt;. J’ai passé pas mal de temps sur l’installation de Galette pour Debian France (l’application Web de gestion des membres), premièrement pour convertir sa base de données Postgres à l’UTF-8, ensuite pour la mettre à jour vers la version 0.7.4 tout en contournant plusieurs problèmes connus.&lt;/p&gt;
&lt;p&gt;J’ai également créé des paquets Debian pour trois plugins que nous utilisons : (&lt;a href=&quot;http://git.debian.org/?p=collab-maint/galette-plugin-paypal.git&quot;&gt;galette-plugin-paypal&lt;/a&gt;, &lt;a href=&quot;http://git.debian.org/?p=collab-maint/galette-plugin-admintools.git&quot;&gt;galette-plugin-admintools&lt;/a&gt; et &lt;a href=&quot;http://git.debian.org/?p=collab-maint/galette-plugin-fullcard.git&quot;&gt;galette-plugin-fullcard&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Ceci étant, chaque fois que j’utilise Galette, j’ai tendance à trouver quelque chose qui mérite d’être remonté. J’ai créé 5 tickets ce mois-ci :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://redmine.ulysses.fr/issues/588&quot;&gt;n°588&lt;/a&gt;: Galette devrait permettre l’envoi d’un mail de test lorsque les notifications mails sont paramétrées&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://redmine.ulysses.fr/issues/589&quot;&gt;n°589&lt;/a&gt;: la page d’export CSV contient un lien de téléchargement invalide&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://redmine.ulysses.fr/issues/590&quot;&gt;n°590&lt;/a&gt;: la page de confirmation d’un paiement PayPal réussi contient des champs vides&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://redmine.ulysses.fr/issues/591&quot;&gt;n°591&lt;/a&gt;: problème de sélection des destinataires d’un publipostage&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://redmine.ulysses.fr/issues/595&quot;&gt;n°595&lt;/a&gt;: Galette devrait ajouter un destinataire correct dans le champ « A : » des mails générés automatiquement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J’ai testé plusieurs corrections préparées par l’auteur amont (trois des bogues ci-dessus sont déjà corrigés), ce qui a conduit à la version corrective 0.7.4.1.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Travaux préliminaires quant aux nouveaux statuts et règlement intérieur&lt;/strong&gt;. J’ai mis en place un &lt;a href=&quot;https://github.com/rhertzog/debian-france-textes-officiels&quot;&gt;dépôt Git&lt;/a&gt; afin de rendre plus facile la collaboration autour de nos nouveaux statuts et règlement intérieur. Le but étant de faire de Debian France une organisation reconnue par Debian (« trusted organization »), ainsi que de rendre l’ensemble compatible avec la loi 1901 relative aux associations (l’association a actuellement un statut spécial réservé aux associations d’Alsace/Lorraine).&lt;/p&gt;
&lt;h3&gt;Kali Linux&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Amélioration du support de l’accessibilité dans Debian Wheezy&lt;/strong&gt;. Offensive Security souhaitait que Kali Linux soit parfaitement accessible aux handicapés. Dans la mesure où &lt;em&gt;Wheezy&lt;/em&gt; souffrait de régressions importantes dans ce domaine, nous avons embauché Emilio Pozuelo Monfort afin de corriger les bogues &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=680636&quot;&gt;n°680636&lt;/a&gt; et &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689559&quot;&gt;n°689559&lt;/a&gt; dans gdm3.&lt;/p&gt;
&lt;p&gt;De mon côté, j’ai mis à jour le paquet finish-install de debian-installer afin qu’il pré-configure correctement le système lorsque vous réalisez une installation avec la synthèse vocale (patch soumis dans le bogue &lt;a href=&quot;http://bugs.debian.org/705599&quot;&gt;n°705599&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Grâce à des responsables de la publication accomodants, ce travail a déjà été intégré dans Wheezy et ne devra pas attendre la première mise à jour majeure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Corrections de bogues dans l’installeur graphique de Debian’s live&lt;/strong&gt;. Nous avons également voulu activer l’installeur graphique dans le &lt;em&gt;live DVD&lt;/em&gt; de Kali. Tandis que nos premières tentatives d’il y a quelque mois avaient échoué, cela a marché ce coup-ci quasiment instantanément (ceci grâce à Ben Armstrong qui a réalisé les corrections nécessaires). J’ai quand même identifié quelques problèmes que j’ai corrigés dans &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=d-i/debian-installer-launcher.git;a=shortlog;h=36af7dd63a3811f877d48f32b527243f80f77946&quot;&gt;le dépôt Git de debian-installer-launcher&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Empaquetage et travaux Debian divers&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;J’ai revu le travail de Charles Plessy qui a réalisé la première version d’une importante mise à jour de la charte Debian, afin de documenter les &lt;em&gt;triggers&lt;/em&gt; dpkg (&lt;em&gt;cf.&lt;/em&gt; &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=582109#57&quot;&gt;n°582109&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;J’ai revu le paquet libwebsockets préparé par Peter Pentchev (ITP &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=697671&quot;&gt;n°697671&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;J’ai découvert &lt;a href=&quot;http://tanglu.org/&quot;&gt;Tanglu&lt;/a&gt; et me suis inscrit à leur liste de diffusion afin de suivre son évolution (et peut-être l’utiliser comme banc de test pour de futurs développements d’infrastructure).&lt;/li&gt;
&lt;li&gt;J’ai revu et poussé un patch de Robert Spencer concernant debian-cd (voir &lt;a href=&quot;http://bugs.debian.org/703431&quot;&gt; n°703431&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;J’ai empaqueté la version 3.3 de cpputest (dans &lt;em&gt;experimental&lt;/em&gt;). J’ai testé un nouvel instantané amont converti à autotools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J’ai également passé un nombre d’heures certain à répondre aux questions des étudiants souhaitant participer au &lt;em&gt;Google’s summer of code&lt;/em&gt; et qui sont intéressés par la &lt;a href=&quot;http://wiki.debian.org/SummerOfCode2013/Projects#PTS_rewrite_in_Django&quot;&gt;réécriture du Système de Suivi des Paquets à l’aide de Python et Django&lt;/a&gt;. Certaines de ces discussions ont eu lieu sur la liste de diffusion &lt;a href=&quot;http://lists.debian.org/debian-qa/2013/04/threads.html&quot;&gt;debian-qa@lists.debian.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Merci&lt;/h3&gt;
&lt;p&gt;Rendez-vous au mois prochain pour un nouveau résumé de mes activités !&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Ceci est une traduction de mon article &lt;a href=&quot;http://raphaelhertzog.com/2013/05/01/my-free-software-activities-in-april-2013/&quot;&gt;My Free Software Activities in April 2013&lt;/a&gt; contribuée par Weierstrass01.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p style=&quot;font-size: smaller;&quot;&gt;&lt;a href=&quot;http://raphaelhertzog.fr/2013/05/13/mes-activites-libres-en-avril-2013/#comments&quot;&gt;Aucun commentaire pour le moment&lt;/a&gt; | Vous avez aimé ? &lt;a href=&quot;http://raphaelhertzog.fr/soutenir/&quot;&gt;Cliquez ici&lt;/a&gt;. | Ce blog utilise &lt;a href=&quot;http://flattr.com/thing/26572/Destination-Debian&quot; target=&quot;_blank&quot;&gt;Flattr&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-13T07:31:27+00:00</dc:date>
	<dc:creator>Raphaël Hertzog</dc:creator>
</item>
<item rdf:about="http://ascendances.wordpress.com/?p=1111">
	<title>St&amp;eacute;phane Blondon: Évolution du nombre de messages sur debian-l10n-fr et debian-users-fr avec pychart</title>
	<link>http://ascendances.wordpress.com/2013/05/02/evolution-du-nombre-de-messages-sur-debian-l10n-fr-et-debian-users-fr-avec-pychart/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://home.gna.org/pychart/&quot; title=&quot;Site web de pychart&quot;&gt;Pychart&lt;/a&gt; est une bibliothèque Python permettant des graphiques directement en python. Un paquet Debian est disponible (nommé python-pychart) avec la dernière version 1.39 (qui date de 2006).&lt;/p&gt;
&lt;p&gt;Debian utilise massivement des listes de diffusion pour la collaboration de ses membres. Parmi les nombreuses listes existantes, trois sont francophones :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;debian-users-fr, dédiée aux questions des utilisateurs ;&lt;/li&gt;
&lt;li&gt;debian-l10n-fr, dédiée aux traductions en français ;&lt;/li&gt;
&lt;li&gt;debian-news-french, dédiée aux communiqués officiels. Elle est exclue du graphique car elle ne représente pas vraiment l’activité des listes de diffusion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pychart est utilisé pour créer un graphique montrant l’évolution du volume de messages postés sur ces deux listes pendant une année glissante (soit d’avril 2012 à avril 2013).&lt;/p&gt;
&lt;h3&gt;Le graphique&lt;/h3&gt;
&lt;p&gt;Le graphique représente le nombre de messages électroniques envoyés sur les deux listes par jour.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ascendances.files.wordpress.com/2013/05/volume1.png&quot;&gt;&lt;img src=&quot;http://ascendances.files.wordpress.com/2013/05/volume1.png?w=300&amp;amp;h=159&quot; alt=&quot;Volume des messages sur les listes de diffusion Debian francophones&quot; width=&quot;300&quot; class=&quot;aligncenter size-medium wp-image-1147&quot; height=&quot;159&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On constate que les pics et les creux se font sur les mêmes mois. Par contre, les tendances générales sont inversées : en hausse pour la liste utilisateur, en baisse pour la liste dédiée aux traductions.&lt;/p&gt;
&lt;h3&gt;Réalisation&lt;/h3&gt;
&lt;p&gt;Le code Python est fourni à la fin de l’article. Pychart s’appuie sur de nombreuses inventions anciennes mais solidement éprouvées :&lt;/p&gt;
&lt;h4&gt;Invention de la poubelle (1884)&lt;/h4&gt;
&lt;p&gt;Toute la &lt;a href=&quot;http://home.gna.org/pychart/doc/index.html&quot; title=&quot;documentation de Pychart&quot;&gt;documentation&lt;/a&gt; fait des imports globaux (&lt;code&gt;from pychart import *&lt;/code&gt;), comme beaucoup d’exemples disponibles sur le web. Pour éviter de polluer l’espace de nom, il suffit d’importer les différents sous-modules de manière classique (&lt;code&gt;import pychart.sousmodule&lt;/code&gt;). Je n’ai pas eu besoin d’importer certains sous-modules bien qu’ils soient utilisés dans le script.&lt;/p&gt;
&lt;h4&gt;Création de postscript (1982)&lt;/h4&gt;
&lt;p&gt;Plusieurs formats de sortie sont disponibles (ps, pdf, png et svg). Par défaut, le fichier sera en PostScript.&lt;br /&gt;
Pour le changer vers le format png :&lt;/p&gt;
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;pychart.theme.output_format = &quot;png&quot;
&lt;/pre&gt;
&lt;p&gt;Pour avoir une sortie en png, ghostscript doit être installé sur le système. PIL n’est pas nécessaire.&lt;/p&gt;
&lt;h4&gt;Invention de la télévision couleur (1938)&lt;/h4&gt;
&lt;p&gt;Par défaut, les graphiques seront uniquement en nuances de gris. Si on souhaite avoir plein de couleurs, il faut le déclarer de la manière suivante :&lt;/p&gt;
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;pychart.theme.use_color = True
&lt;/pre&gt;
&lt;h4&gt;Invention de l’écriture de travers (-3400)&lt;/h4&gt;
&lt;p&gt;Il est possible d’orienter le texte affiché (que ce soit pour les axes ou des boîtes de texte ad-hoc). Pour cela, il faut définir l’angle d’orientation (« /a » pour définir que l’on modifie l’angle, « -20 » pour baisser de 20 degrés par rapport à l’horizontale dans l’exemple ci-dessous) :&lt;/p&gt;
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;pychart.axis.X(label=&quot;Date&quot;, format=&quot;/a-20/hL%s&quot;)
&lt;/pre&gt;
&lt;p&gt;La définition du formatage de la chaîne à afficher utilise le caractère « / » pour introduire un contrôle. Il est nécessaire de le doubler lorsque l’on souhaite l’afficher (pour une date par exemple).&lt;/p&gt;
&lt;h4&gt;Invention du dessin (Paléolithique)&lt;/h4&gt;
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;pychart.line_plot.T(label=u&quot;debian-user-french&quot;, #sert pour la légende
                    data=stats, #la structure des données à afficher
                    ycol=2, #la troisième colonne dans les données
                    line_style=_blue_line #le rendu des données
                    )
&lt;/pre&gt;
&lt;h4&gt;Invention du papier (IIième siècle avant JC)&lt;/h4&gt;
&lt;p&gt;La méthode draw() permet d’afficher les données sur la sortie standard. Il suffit simplement de la rediriger vers un fichier grâce au shell :&lt;/p&gt;
&lt;pre class=&quot;brush: bash; title: ; notranslate&quot;&gt;$ python volume.py  &amp;gt; volume.png
&lt;/pre&gt;
&lt;h3&gt;Code source et références&lt;/h3&gt;
&lt;p&gt;Le code qui a permis de créer le graphique :&lt;/p&gt;
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;# -*- coding: utf-8 -*-

import pychart.area
import pychart.line_plot
import pychart.theme


pychart.theme.output_format = &quot;png&quot;
pychart.theme.use_color = True
pychart.theme.default_font_size = 14
pychart.theme.title = &quot;14&quot;


stats = ((&quot;04//2012&quot;, 12.27, 14.43),
        (&quot;05//2012&quot;, 10.71, 14.42),
        (&quot;06//2012&quot;, 11.77, 13.10),
        (&quot;07//2012&quot;, 10.19, 8.55),
        (&quot;08//2012&quot;, 11.65, 14.68),
        (&quot;09//2012&quot;, 13.00, 18.33),
        (&quot;10//2012&quot;, 10.32, 15.06),
        (&quot;11//2012&quot;, 6.87, 14.90),
        (&quot;12//2012&quot;, 5.48, 10.48),
        (&quot;01//2013&quot;, 5.29, 20.58),
        (&quot;02//2013&quot;, 10.25, 22.39),
        (&quot;03//2013&quot;, 9.74, 24.00),
        (&quot;04//2013&quot;, 8.3, 19.80))


_area = pychart.area.T(size = (700, 450),
            y_grid_interval=5,
            x_coord=pychart.category_coord.T(stats, 0),
            x_axis=pychart.axis.X(label=&quot;Date&quot;, format=&quot;/a-20/hL%s&quot;),
            y_axis=pychart.axis.Y(label=&quot;Nombre de messages par jour&quot;),
            legend=pychart.legend.T(),
            y_range=(0, None))

_red_line = pychart.line_style.T()
_red_line.width = 2
_red_line.dash = (5, 5)
_red_line.cap_style = 2
_red_line.join_style = 2
_red_line.color = pychart.color.red
_blue_line = pychart.line_style.T()
_blue_line.width = 2
_blue_line.color = pychart.color.royalblue
_l10n_plot = pychart.line_plot.T(label=u&quot;debian-l10n-french&quot;, data=stats, line_style=_red_line)
_user_plot = pychart.line_plot.T(label=u&quot;debian-user-french&quot;, data=stats, ycol=2, line_style=_blue_line)
_area.add_plot(_l10n_plot, _user_plot)

_area.draw()
&lt;/pre&gt;
&lt;p&gt;Les moyennes journalières ont été calculées préalablement. Elles sont exclues du code source pour ne pas l’alourdir inutilement. Voici les données brutes qui ont servi aux calculs des moyennes :&lt;br /&gt;
&lt;code&gt;date	debian-l10n-french	debian-user-french	nbre_jours&lt;br /&gt;
2012/04	368	433	30&lt;br /&gt;
2012/05	332	447	31&lt;br /&gt;
2012/06	353	393	30&lt;br /&gt;
2012/07	316	265	31&lt;br /&gt;
2012/08	361	455	31&lt;br /&gt;
2012/09	390	550	30&lt;br /&gt;
2012/10	320	467	31&lt;br /&gt;
2012/11	206	447	30&lt;br /&gt;
2012/12	170	325	31&lt;br /&gt;
2013/01	164	638	31&lt;br /&gt;
2013/02	287	627	28&lt;br /&gt;
2013/03	302	744	31&lt;br /&gt;
2013/04	190	594	30&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Les données ont été récupérées à partir des versions publiques des archives des listes de traductions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://lists.debian.org/debian-l10n-french/&quot; rel=&quot;nofollow&quot;&gt;http://lists.debian.org/debian-l10n-french/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lists.debian.org/debian-user-french/&quot; rel=&quot;nofollow&quot;&gt;http://lists.debian.org/debian-user-french/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La documentation de pychart est disponible à &lt;a href=&quot;http://home.gna.org/pychart/doc/pychart.html&quot; title=&quot;documentation de Pychart&quot;&gt;http://home.gna.org/pychart/doc/pychart.html&lt;/a&gt; ou dans le paquet python-pychart-doc.&lt;/p&gt;
&lt;p&gt;Enfin, &lt;a href=&quot;http://matplotlib.org/&quot; title=&quot;Site web de matplotlib&quot;&gt;Matplotlib&lt;/a&gt; répond au même besoin et semble être un projet plus vivant.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/ascendances.wordpress.com/1111/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/ascendances.wordpress.com/1111/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ascendances.wordpress.com&amp;amp;blog=24442983&amp;amp;post=1111&amp;amp;subd=ascendances&amp;amp;ref=&amp;amp;feed=1&quot; border=&quot;0&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-02T08:34:34+00:00</dc:date>
	<dc:creator>ascendances</dc:creator>
</item>
<item rdf:about="http://charles.plessy.org/Debian/debi%C3%A2neries/contrib/">
	<title>Charles Plessy: A-t-on vraiment besoin de « contrib » ?</title>
	<link>http://charles.plessy.org/Debian/debi%C3%A2neries/contrib/</link>
	<content:encoded>&lt;p&gt;Le projet Debian distribue des paquets de logiciels via son archive, propagée à
travers un réseau de miroirs.  Cette archive est organisée en trois zones,
&lt;em&gt;main&lt;/em&gt;, qui contient le système Debian, et &lt;em&gt;contrib&lt;/em&gt; et &lt;em&gt;non-free&lt;/em&gt; qui
contiennent des paquets accessoires qui ne sont pas libres.  Les paquets dans
&lt;em&gt;non-free&lt;/em&gt; contiennent des fichiers dont la licence est privatrice.  Les
paquets source dans &lt;em&gt;contrib&lt;/em&gt; ne contiennent que des fichiers libres, mais les
paquets binaires produits sont soit inutilisables sans service extérieur, soit
contiennent des fichiers non libres ou demandent l'installation de paquets non
libres.&lt;/p&gt;

&lt;p&gt;La zone &lt;em&gt;contrib&lt;/em&gt; est l'objet de sempiternelles questions car il n'est pas
toujours facile de tracer une ligne entre utilisable et inutilisable.  Je me
demande s'il ne vaudrait pas mieux remplacer la zone &lt;em&gt;contrib&lt;/em&gt; par un nouveau
niveau de priorité, « remote », plus bas qu'&lt;em&gt;extra&lt;/em&gt;.  Les paquets entièrement
libres (source et binaire) et ne causant pas l'installation de logiciels
privateurs y auraient leur place.  Pour les paquets qui ne peuvent pas
fonctionner sans code privateur, étant donné que l'effort sera le même pour les
libérer que ce code privateur soit inclut dans le même paquet source (cas de
&lt;em&gt;non-free&lt;/em&gt;) ou non (cas de &lt;em&gt;contrib&lt;/em&gt;), je pense qu'on devrait les placer dans
&lt;em&gt;non-free&lt;/em&gt; dans tous les cas : ils ne sont pas libres en pratique.&lt;/p&gt;

&lt;p&gt;Cela permettrait de trancher avec un critère simple : la sélection d'un paquet
binaire entraînera-t-elle l'installation de logiciels privateurs ?  Si oui, le
paquet et sa source appartiennent à &lt;em&gt;non-free&lt;/em&gt;.  Si non, ils appartiennent à
&lt;em&gt;main&lt;/em&gt;.  Ensuite, s'ils demandent l'accès à un service extérieur impossible à
mettre en place sur un réseau où seule Debian serait disponible, leur priorité
sera &lt;em&gt;remote&lt;/em&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-04-21T05:18:47+00:00</dc:date>
</item>
<item rdf:about="http://fgallaire.flext.net/?p=2456">
	<title>Florent Gallaire: Lucas Nussbaum élu DPL pour 2013</title>
	<link>http://fgallaire.flext.net/lucas-nussbaum-dpl-2013/</link>
	<content:encoded>&lt;p&gt;C’est &lt;a href=&quot;http://www.loria.fr/~lnussbau/&quot; target=&quot;_blank&quot;&gt;Lucas Nussbaum&lt;/a&gt; qui &lt;a href=&quot;http://lists.debian.org/debian-devel-announce/2013/04/msg00004.html&quot; target=&quot;_blank&quot;&gt;vient d’être élu Debian Project Leader&lt;/a&gt; (&lt;a href=&quot;http://www.debian.org/devel/leader&quot; target=&quot;_blank&quot;&gt;DPL&lt;/a&gt;) pour l’année 2013, succédant ainsi au triple mandat de &lt;a href=&quot;http://upsilon.cc/~zack/&quot; target=&quot;_blank&quot;&gt;Stefano Zacchiroli&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://free-electrons.com/pub/video/2009/rmll/rmll2009-nussbaum-methodes-de-vote.jpg&quot; alt=&quot;&quot; width=&quot;410&quot; class=&quot;aligncenter&quot; height=&quot;317&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Lucas Nussbaum devance Allan Moray et Gergely Nagy (déjà candidat malheureux en &lt;a href=&quot;http://www.debian.org/vote/2004/vote_001&quot; target=&quot;_blank&quot;&gt;2004&lt;/a&gt; et &lt;a href=&quot;http://www.debian.org/vote/2012/vote_001&quot; target=&quot;_blank&quot;&gt;2012&lt;/a&gt;). Voici une représentation du résultat du scrutin qui utilise la &lt;a href=&quot;http://fr.wikipedia.org/wiki/M%C3%A9thode_Condorcet&quot; target=&quot;_blank&quot;&gt;méthode Condorcet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://vote.debian.org/~secretary/leader2013/results.png&quot; alt=&quot;&quot; width=&quot;293&quot; class=&quot;aligncenter&quot; height=&quot;395&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Bravo à toi Lucas, et bonne chance dans la mise en œuvre de ton &lt;a href=&quot;http://www.debian.org/vote/2013/platforms/lucas&quot; target=&quot;_blank&quot;&gt;programme&lt;/a&gt; à partir du 17 avril !&lt;/p&gt;
&lt;p class=&quot;wp-flattr-button&quot;&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://fgallaire.flext.net/?flattrss_redirect&amp;amp;id=2456&amp;amp;md5=fb9d2dd4c52a0d858956006e8bed787b&quot; target=&quot;_blank&quot; title=&quot;Flattr&quot;&gt;&lt;img src=&quot;http://fgallaire.flext.net/wp-content/plugins/flattr/img/flattr-badge-large.png&quot; alt=&quot;flattr this!&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-04-15T01:41:11+00:00</dc:date>
	<dc:creator>fgallaire</dc:creator>
</item>
<item rdf:about="https://raphaelhertzog.fr/?p=1785">
	<title>Rapha&amp;#235;l Hertzog: Mes activités libres en mars 2013</title>
	<link>http://raphaelhertzog.fr/2013/04/14/mes-activites-libres-en-mars-2013/</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;http://raphaelhertzog.com/files/2012/07/activity-report-300x300.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; class=&quot;alignleft size-medium wp-image-2728&quot; height=&quot;300&quot; /&gt;Voici le récapitulatif mensuel de toutes mes activités gravitant autour du logiciel libre. Si vous faites partie des personnes ayant fait &lt;a href=&quot;http://raphaelhertzog.fr/go/donate/&quot;&gt;un don pour soutenir mon travail&lt;/a&gt; (114,19 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.&lt;/p&gt;
&lt;h3&gt;Simple-CDD et debian-cd&lt;/h3&gt;
&lt;p&gt;J’ai essayé d’utiliser les versions présentes dans &lt;em&gt;Wheezy&lt;/em&gt; de debian-cd et simple-cdd pour générer un installeur automatique. J’ai à cette occasion soumis plusieurs rapports de bogue concernant simple-cdd (&lt;a href=&quot;http://bugs.debian.org/701693&quot;&gt;n°701963&lt;/a&gt; : le paquet type-handling a disparu et ne devrait pas être listé dans default.downloads, ainsi que le &lt;a href=&quot;http://bugs.debian.org/701998&quot;&gt;n°701998&lt;/a&gt; : le paramètre &lt;code&gt;--keyboard&lt;/code&gt; ne fonctionne pas avec la version debian-installer de &lt;em&gt;Wheezy&lt;/em&gt;) et poussé quelques correctifs pour debian-cd :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-cd?view=revision&amp;amp;revision=2518&quot;&gt;r2518&lt;/a&gt;: ajuster le Makefile en fonction des nouveaux prérequis de xorriso ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-cd?view=revision&amp;amp;revision=2520&quot;&gt;r2520&lt;/a&gt;: ajouter les dépendances manquantes à dosfstools ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-cd?view=revision&amp;amp;revision=2521&quot;&gt;r2521&lt;/a&gt;: utiliser &lt;code&gt;--no-check-gpg&lt;/code&gt; lors de l’interrogation de debootstrap ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://anonscm.debian.org/viewvc/debian-cd?view=revision&amp;amp;revision=2522&quot;&gt;r2522&lt;/a&gt;: rendre debian-cd capable de fonctionner avec un miroir dépourvu de sources.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Debian France&lt;/h3&gt;
&lt;p&gt;J’ai achevé le &lt;a href=&quot;http://france.debian.net&quot;&gt;nouveau site web de Debian France&lt;/a&gt; et l’ai mis en ligne. J’y ai intégré par la suite plusieurs améliorations réalisées par Tanguy Ortolo (et lui ai donné les droits de pousser des changements via git par la même occasion).&lt;/p&gt;
&lt;p&gt;J’ai essayé de mettre à jour notre installation de Galette vers la dernière version amont, mais suis revenu à l’ancienne après avoir rencontré deux problèmes (consignés &lt;a href=&quot;http://redmine.ulysses.fr/issues/577&quot;&gt;ici&lt;/a&gt; and &lt;a href=&quot;http://redmine.ulysses.fr/issues/578&quot;&gt;ici&lt;/a&gt;). J’ai créé à cette occasion un paquet Debian pour ce logiciel (vous pouvez le récupérer sur &lt;a href=&quot;http://git.debian.org/?p=collab-maint/galette.git&quot;&gt;git.debian.org&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;J’ai également soumis une &lt;a href=&quot;http://redmine.ulysses.fr/issues/576&quot;&gt;proposition d’amélioration&lt;/a&gt; concernant l’extension de paiement par Paypal, qui a été rapidement implémentée. J’ai par la suite mis à jour ce module déjà utilisé sur france.debian.net.&lt;/p&gt;
&lt;h3&gt;Travaux en lien avec Kali&lt;/h3&gt;
&lt;p&gt;J’ai aidé pendant plusieurs mois l’équipe de Kali à préparer &lt;a href=&quot;https://raphaelhertzog.fr/2013/03/16/kali-linux-1-0-une-nouvelle-distribution-derivee-de-debian/&quot;&gt;cette nouvelle distribution dérivée de Debian&lt;/a&gt;. Maintenant qu’elle a été officiellement lancée, je peux déclarer certains de mes travaux Debian comme découlant de ma collaboration avec l’équipe de Kali.&lt;/p&gt;
&lt;p&gt;Ce mois-ci, j’ai contribué plusieurs fonctionnalités et corrections pour debian-installer et live-build :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://bugs.debian.org/702257&quot;&gt;n°702257&lt;/a&gt;: nouvelle entrée de préconfiguration pour désactiver les entrées CDROM ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bugs.debian.org/703072&quot;&gt;n°703072&lt;/a&gt;: le module hid-generic manque au niveau de udeb input-modules (n’affecte que les noyaux d’&lt;em&gt;experimental&lt;/em&gt;) ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://live.debian.net/gitweb/?p=live-build.git;a=commitdiff;h=8bcbda8&quot;&gt; Correction du support de win32-loader dans live-build.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Après le lancement, nous avons signalé Kali dans le &lt;a href=&quot;http://wiki.debian.org/Derivatives/Census&quot;&gt;recensement des dérivés Debian&lt;/a&gt;. Paul Wise a rapidement remonté certains bogues mal renseignés par les premiers utilisateurs de Kali, et j’ai découvert que reportbug ne fonctionnait pas comme prévu même après avoir correctement mis à jour base-files (&lt;em&gt;cf.&lt;/em&gt; &lt;a href=&quot;http://bugs.debian.org/703678&quot;&gt;le n°703678&lt;/a&gt; pour reportbug et &lt;a href=&quot;http://bugs.debian.org/703677&quot;&gt;le n°703677&lt;/a&gt; pour lsb-release).&lt;/p&gt;
&lt;h3&gt;Travaux d’empaquetage divers&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;J’ai parrainé une &lt;a href=&quot;http://lists.debian.org/debian-devel-changes/2013/03/msg01455.html&quot;&gt;nouvelle version amont de dnsjava&lt;/a&gt;, car c’était requis par Jitsi ;&lt;/li&gt;
&lt;li&gt;J’ai préparé la version 0.4.1.1 de rebuild, et l’ai envoyée vers le dépôt &lt;em&gt;testing-proposed-updates&lt;/em&gt;, car elle corrige un bogue critique pour la publication ;&lt;/li&gt;
&lt;li&gt;J’ai envoyé Publican dans sa version 3.1.5 vers &lt;em&gt;experimental&lt;/em&gt;, et soumis le rapport de bogue &lt;a href=&quot;http://bugs.debian.org/703514&quot;&gt;n°703514&lt;/a&gt; demandant une nouvelle version amont de docbook-xsl requise par Publican ;&lt;/li&gt;
&lt;li&gt;J’ai créé le rapport de bogue &lt;a href=&quot;http://bugs.debian.org/703995&quot;&gt;n°703995&lt;/a&gt; pour corriger la gestion par apt-setup de l’option &lt;em&gt;preseed&lt;/em&gt; d’apt-setup/multiarch.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Election du DPL&lt;/h3&gt;
&lt;p&gt;J’ai également passé pas mal de temps à lire et participer &lt;a href=&quot;https://lists.debian.org/debian-vote/2013/03/author.html#00053&quot;&gt;aux discussions sur la liste debian-vote&lt;/a&gt;, étant donné que les &lt;a href=&quot;http://www.debian.org/vote/2013/vote_001&quot;&gt;candidats au poste de DPL&lt;/a&gt; étaient en pleine campagne électorale. (Bravo à Lucas Nussbaum qui vient d’être élu!)&lt;/p&gt;
&lt;h3&gt;Merci&lt;/h3&gt;
&lt;p&gt;Ce mois a été plutôt bien rempli si l’on prend en compte le fait que j’ai eu un second fils (Lucas) le 6 mars dernier…&lt;/p&gt;
&lt;p&gt;Rendez-vous au mois prochain pour un nouveau résumé de mes activités !&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Ceci est une traduction de mon article &lt;a href=&quot;http://raphaelhertzog.com/2013/04/07/my-free-software-activities-in-march-2013/&quot;&gt;My Free Software Activities in March 2013&lt;/a&gt; contribuée par Weierstrass01.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p style=&quot;font-size: smaller;&quot;&gt;&lt;a href=&quot;http://raphaelhertzog.fr/2013/04/14/mes-activites-libres-en-mars-2013/#comments&quot;&gt;Un commentaire&lt;/a&gt; | Vous avez aimé ? &lt;a href=&quot;http://raphaelhertzog.fr/soutenir/&quot;&gt;Cliquez ici&lt;/a&gt;. | Ce blog utilise &lt;a href=&quot;http://flattr.com/thing/26572/Destination-Debian&quot; target=&quot;_blank&quot;&gt;Flattr&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-04-14T19:51:23+00:00</dc:date>
	<dc:creator>Raphaël Hertzog</dc:creator>
</item>
<item rdf:about="http://charles.plessy.org/Debian/debi%C3%A2neries/umegaya-branchable/">
	<title>Charles Plessy: Umegaya hébergé chez Branchable</title>
	<link>http://charles.plessy.org/Debian/debi%C3%A2neries/umegaya-branchable/</link>
	<content:encoded>&lt;p&gt;Grâce au
&lt;a href=&quot;http://www.branchable.com/news/my_birthday_present_to_Branchable_users/&quot;&gt;cadeau&lt;/a&gt;
de Joey, &lt;a href=&quot;http://charles.plessy.org/Debian/plan%C3%A8te/../debiâneries/umegaya/&quot;&gt;umegaya&lt;/a&gt; est maintenant
&lt;a href=&quot;http://umegaya.branchable.com/&quot;&gt;hébergé&lt;/a&gt; chez
&lt;a href=&quot;http://www.branchable.com/&quot;&gt;Branchable&lt;/a&gt;.  Merci !&lt;/p&gt;</content:encoded>
	<dc:date>2013-04-13T10:50:59+00:00</dc:date>
</item>
<item rdf:about="http://roland.entierement.nu/blog/2013/04/11/36.html">
	<title>Roland Mas: 36</title>
	<link>http://roland.entierement.nu/blog/2013/04/11/36.html</link>
	<content:encoded>&lt;p&gt;Trente-six chandelles.  Trente-six vues du mont Fuji (ou de la Tour
Eiffel).  Y'a pas trente-six manières de faire.  Mais y'a trente-six
pouces dans un yard.  Numéro atomique du krypton (rien à voir
avec Superman).&lt;/p&gt;

&lt;p&gt;Trente-six ans !&lt;/p&gt;</content:encoded>
	<dc:date>2013-04-11T16:30:02+00:00</dc:date>
</item>
<item rdf:about="http://www.luffy.cx/fr/blog/2013-gnucash-eurl.html">
	<title>Vincent Bernat: Comptabilité d'une EURL avec GnuCash</title>
	<link>http://vincent.bernat.im/fr/blog/2013-gnucash-eurl.html</link>
	<content:encoded>&lt;p&gt;Afin de mener une activité de conseils, j’ai monté une &lt;abbr title=&quot;Entreprise Unipersonnelle à Responsabilité Limitée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;EURL&lt;/span&gt;&lt;/abbr&gt;. Une
comptabilité à jour est une des obligations majeures pour une entreprise.&lt;/p&gt;
&lt;p&gt;Dans le monde libre, il existe plusieurs solutions pour faire de la
comptabilité d’entreprise. Cela va de systèmes plutôt simples comme
&lt;a href=&quot;http://www.gnucash.org&quot; title=&quot;GnuCash&quot;&gt;GnuCash&lt;/a&gt; à des systèmes très compliqués comme &lt;a href=&quot;https://www.openerp.com/&quot; title=&quot;OpenERP&quot;&gt;OpenERP&lt;/a&gt;. Jonathan
Corbet, l’éditeur de &lt;a href=&quot;http://lwn.net&quot; title=&quot;Linux Weekly News&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LWN&lt;/span&gt;&lt;/a&gt; a écrit un article assez intéressant sur
l’état des
&lt;a href=&quot;http://lwn.net/Articles/496158/&quot; title=&quot;Accounting systems: a rant and a quest&quot;&gt;logiciels de comptabilité libres pour petites entreprises&lt;/a&gt;. Sa
conclusion était qu’il n’existait rien qui remplisse ses besoins. Il a
toutefois apprécié &lt;a href=&quot;http://ledger-cli.org/&quot; title=&quot;Ledger&quot;&gt;Ledger&lt;/a&gt;, un système qui se manipule en ligne de
commande et à travers un éditeur de texte classique. Il y a consacré
&lt;a href=&quot;http://lwn.net/Articles/501681/&quot; title=&quot;The accounting quest: Ledger&quot;&gt;un article&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;J’ai pour ma part opté pour &lt;a href=&quot;http://www.gnucash.org&quot; title=&quot;GnuCash&quot;&gt;GnuCash&lt;/a&gt;. Il existe un peu de
littérature sur le sujet, avec notamment le livre assez complet
&lt;a href=&quot;http://www.packtpub.com/gnucash-24-small-business-accounting-beginners-guide/book&quot; title=&quot;Gnucash 2.4 Small Business Accounting&quot;&gt;Gnucash 2.4 Small Business Accounting&lt;/a&gt;. Le très grande majorité des
ressources est orientée vers la comptabilité dans les pays
anglo-saxons. La comptabilité en France utilise des codes très différents.&lt;/p&gt;
&lt;p&gt;Je propose donc de livrer mon expérience sur &lt;em&gt;GnuCash&lt;/em&gt; dans le cadre suivant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestion d’une &lt;strong&gt;&lt;abbr title=&quot;Entreprise Unipersonnelle à Responsabilité Limitée&quot;&gt;&lt;abbr title=&quot;Entreprise Unipersonnelle à Responsabilité Limitée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;EURL&lt;/span&gt;&lt;/abbr&gt;&lt;/abbr&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pas de salariés&lt;/strong&gt;. Étant gérant majoritaire, je me verse une
   indemnité et non un salaire.&lt;/li&gt;
&lt;li&gt;Activité de &lt;strong&gt;conseil en informatique&lt;/strong&gt;. Ni stock, ni marchandise.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impôt sur les sociétés&lt;/strong&gt; au réel simplifié. &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; au réel simplifié également.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ce cadre, &lt;em&gt;GnuCash&lt;/em&gt; est une solution tout à fait valable pour les
opérations courantes. Il a quelques lacunes mais effectue globalement
bien son boulot. Il dispose de plus d’une gestion des clients et des
fournisseurs plutôt correcte. Il peut sortir tout un tas de rapports
plus laids les uns que les autres.&lt;/p&gt;
&lt;p&gt;Les opérations de fin d’année sont par contre une autre paire de
manches. Il y a non seulement la complexité comptable mais également
toutes les démarches administratives. Il me semble préférable de
confier celles-ci à comptable&lt;sup id=&quot;fnref:comptable&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn:comptable&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; et donc de vérifier que
celui-ci acceptera les données issues de &lt;em&gt;GnuCash&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;À noter que je ne suis pas comptable et donc certains conseils peuvent
être erronés.&lt;/p&gt;
&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#introduction-a-la-comptabilite&quot;&gt;Introduction à la comptabilité&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#comptabilite-en-partie-double&quot;&gt;Comptabilité en partie double&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#plan-comptable-general&quot;&gt;Plan comptable général&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#ecritures-comptables&quot;&gt;Écritures comptables&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#operations-de-creation&quot;&gt;Opérations de création&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#capital-initial&quot;&gt;Capital initial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#publication-de-lannonce-legale&quot;&gt;Publication de l’annonce légale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#depot-des-statuts-au-greffe&quot;&gt;Dépôt des statuts au greffe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#operations-courantes&quot;&gt;Opérations courantes&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#repas-du-midi&quot;&gt;Repas du midi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#indemnites-kilometriques&quot;&gt;Indemnités kilométriques&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#abonnements-telephoniques-adsl&quot;&gt;Abonnements téléphoniques &lt;span class=&quot;amp&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ADSL&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#autres-frais-deductibles&quot;&gt;Autres frais déductibles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#achats-divers&quot;&gt;Achats divers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#facturation-et-paiement-dun-client&quot;&gt;Facturation et paiement d’un client&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#facturation-avec-des-devises-etrangeres&quot;&gt;Facturation avec des devises étrangères&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#facturation-dun-fournisseur&quot;&gt;Facturation d’un fournisseur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#frais-bancaires&quot;&gt;Frais bancaires&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#paiement-de-la-tva&quot;&gt;Paiement de la &lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#remuneration-du-gerant&quot;&gt;Rémunération du gérant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#cotisations-urssaf-rsi&quot;&gt;Cotisations &lt;span class=&quot;caps&quot;&gt;URSSAF&lt;/span&gt; &lt;span class=&quot;amp&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;RSI&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#operations-de-fin-dexercice&quot;&gt;Opérations de fin d’exercice&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#provisions-pour-remuneration&quot;&gt;Provisions pour rémunération&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#provisions-pour-charges-sociales&quot;&gt;Provisions pour charges sociales&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#cloture-des-comptes&quot;&gt;Clôture des comptes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#calcul-de-limpot-sur-les-societes&quot;&gt;Calcul de l’impôt sur les sociétés&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#etablissement-du-compte-de-resultat-et-du-bilan&quot;&gt;Établissement du compte de résultat et du bilan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#affectation-du-resultat&quot;&gt;Affectation du résultat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#declaration-de-lis&quot;&gt;Déclaration de l’&lt;span class=&quot;caps&quot;&gt;IS&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1 id=&quot;introduction-a-la-comptabilite&quot;&gt;Introduction à la comptabilité&lt;/h1&gt;
&lt;p&gt;La comptabilité est un outil permettant de recenser et d’évaluer tous
les événements qui influent sur la valeur de l’entreprise. Un
événement, cela peut être l’émission d’une créance vers un client,
l’achat d’une agrafeuse, le recouvrement de la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; collectée ou le
don d’un tracteur agricole.&lt;/p&gt;
&lt;h2 id=&quot;comptabilite-en-partie-double&quot;&gt;Comptabilité en partie double&lt;/h2&gt;
&lt;p&gt;En entreprise, la comptabilité s’effectue en &lt;a href=&quot;http://fr.wikipedia.org/wiki/Comptabilit%C3%A9_en_partie_double&quot; title=&quot;Comptabilité en partie double sur Wikipedia&quot;&gt;partie double&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La comptabilité en partie double est la base du système comptable
utilisé par toutes les entreprises et organisations. Elle est fondée
sur l’idée selon laquelle les opérations et la situation financière
d’une organisation peuvent être représentées par des comptes. Chaque
compte contient l’historique des modifications de la valeur
monétaire d’un aspect particulier de l’organisation. On parle de
partie double quand l’enregistrement d’écriture est inscrit dans
deux comptes (au moins) : un compte débité, et un compte crédité.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour chaque événement, il faut &lt;strong&gt;créditer&lt;/strong&gt; un certain nombre de
comptes et en &lt;strong&gt;débiter&lt;/strong&gt; d’autres. De plus, le total des crédits doit
être égal au total des débits.&lt;/p&gt;
&lt;p&gt;La notion de &lt;em&gt;débit&lt;/em&gt; et de &lt;em&gt;crédit&lt;/em&gt; est assez compliquée à appréhender
et peu intuitive. Ainsi, pour acheter une agrafeuse, on va &lt;em&gt;créditer&lt;/em&gt;
le compte bancaire et &lt;em&gt;débiter&lt;/em&gt; le compte recensant les petits
achats. Un événement implique toujours une &lt;strong&gt;ressource&lt;/strong&gt; et un
&lt;strong&gt;emploi&lt;/strong&gt;. La ressource permet de financer l’emploi. Elle est
toujours marquée au crédit d’un compte alors que l’emploi est toujours
marqué au débit. Dans notre exemple d’agrafeuse, l’achat se fait avec
l’argent du compte en banque qui est une ressource et il faut donc
créditer le compte. Inversement, quand on vend une prestation à un
client, la ressource est la prestation et l’emploi est le client. Il
faut donc débiter le compte du client et créditer le compte des prestations.&lt;/p&gt;
&lt;p&gt;Si vous êtes déjà perdus ici, pas de panique. L’important est d’être
attentif aux exemples. De plus, &lt;em&gt;GnuCash&lt;/em&gt; utilise par défaut des
termes plus compréhensibles selon le type de compte (mais parfois mal
francisés), à moins de choisir dans les préférences d’utiliser la
terminologie comptable.&lt;/p&gt;
&lt;p&gt;Chaque opération donne lieu à une écriture comptable qui va concerner
un ou plusieurs comptes. Sur papier, il fallait écrire la même
opération dans chaque compte. Profitant des progrés en informatique de
ces dernières années, &lt;em&gt;GnuCash&lt;/em&gt; gère cela tout seul. Si, si. Voici à
quoi ressemble notre achat d’agrafeuse&lt;sup id=&quot;fnref:ecriture&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn:ecriture&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;Banque&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;35,88 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6063&lt;/td&gt;
&lt;td&gt;Petit matériel&lt;/td&gt;
&lt;td&gt;30,00 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4456&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;5,88 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Cette transaction a mis en jeu trois comptes. L’écriture va donc se
trouver sur les trois comptes à la fois.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le compte bancaire de l’entreprise qui a été &lt;em&gt;crédité&lt;/em&gt; de 35,88 €
   qui est le prix toutes taxes comprises de notre agrafeuse. Le
   crédit de ce compte provoque un retrait de l’argent qui s’y
   trouvait et donc un appauvrissement de l’entreprise.&lt;/li&gt;
&lt;li&gt;Le compte recensant les achats de petit matériel. Il a été &lt;em&gt;débité&lt;/em&gt;
   de 30,00 € qui correspond au prix hors taxes de l’agrafeuse. Il
   s’agit d’une charge pour l’entreprise. L’agrafeuse ne rentre pas
   dans le patrimoine de l’entreprise.&lt;/li&gt;
&lt;li&gt;Le compte recensant la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; que l’on peut déduire de notre prochaine
   déclaration. L’État devient alors débiteur de la somme de 5,88 €
   qu’il devra nous rembourser lors de la prochaine déclaration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On remarque que la somme des débits est égal à la somme des
crédits. C’est obligatoire. Pour toute écriture, la &lt;strong&gt;balance doit
être équilibrée&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;plan-comptable-general&quot;&gt;Plan comptable général&lt;/h2&gt;
&lt;p&gt;Maintenant que vous avez vaguement compris comment marchait une
écriture comptable, vous vous demandez peut-être quels sont les
comptes qu’il faut utiliser. Le système comptable français définit
très précisément les comptes à utiliser dans le &lt;strong&gt;plan comptable
général&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Il existe en fait trois plans comptables :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;le système de base,&lt;/li&gt;
&lt;li&gt;le système abrégé comprenant &lt;em&gt;moins&lt;/em&gt; de comptes,&lt;/li&gt;
&lt;li&gt;le système développé comprenant &lt;em&gt;plus&lt;/em&gt; de comptes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Le système à choisir dépend de la taille de l’entreprise. On choisit
généralement le système correspondant au bilan et au compte de
résultat demandé par les impôts en fin d’exercice. Pour une société au
réel simplifié, il est possible d’opter pour le système abrégé. Le
plan comptable général est disponible sur le site de
l’&lt;a href=&quot;http://www.anc.gouv.fr/sections/normes_privees/plans_comptables/plans_comptables/cpsdocument_view&quot; title=&quot;Plan comptable général français&quot;&gt;autorité des normes comptables&lt;/a&gt;. Il fait plus de 400
pages. L’&lt;a href=&quot;http://fr.wikipedia.org/wiki/Plan_comptable_g%C3%A9n%C3%A9ral_(France)&quot; title=&quot;Plan comptable général sur Wikipedia&quot;&gt;article correspondant de Wikipedia&lt;/a&gt; fournit la liste des comptes.&lt;/p&gt;
&lt;p&gt;Chaque compte est identifié par un nombre. Le premier chiffre indique
la classe du compte :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Les comptes de capitaux (capitaux propres, emprunts).&lt;/li&gt;
&lt;li&gt;Les comptes d’immobilisation (peu utilisés dans notre cas).&lt;/li&gt;
&lt;li&gt;Les comptes de stocks et d’en-cours (peu utilisés également).&lt;/li&gt;
&lt;li&gt;Les comptes de tiers (les fournisseurs, les clients, l’État, vous).&lt;/li&gt;
&lt;li&gt;Les comptes financiers (le compte en banque).&lt;/li&gt;
&lt;li&gt;Les comptes de charges (ce qui appauvrit votre entreprise).&lt;/li&gt;
&lt;li&gt;Les comptes de produits (ce qui enrichit votre entreprise).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Les cinq premières classes de comptes sont les comptes de bilan. Ils
permettent de savoir ce que votre entreprise possède (l’actif et le
passif) à tout moment. Les deux dernières classes sont les comptes de
résultat. Ils sont remis à zéro après chaque exercice. Ils permettent
notamment de connaître le résultat d’une entreprise sur un exercice.&lt;/p&gt;
&lt;p&gt;Parmi les comptes les plus importants, on notera :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;Le capital de la société.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;401&lt;/td&gt;
&lt;td&gt;Les comptes des fournisseurs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;411&lt;/td&gt;
&lt;td&gt;Les comptes des clients.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;445&lt;/td&gt;
&lt;td&gt;Les comptes pour la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;Le compte de l’associé (pour se faire rembourser les frais).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;Le compte bancaire de l’entreprise.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6063&lt;/td&gt;
&lt;td&gt;Le compte pour l’achat de fournitures dont la valeur ne dépasse pas 500 €.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;625&lt;/td&gt;
&lt;td&gt;Le compte pour les frais liés aux déplacements et aux missions. On y colle notamment les frais de restauration.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6410&lt;/td&gt;
&lt;td&gt;Le compte permettant de verser une indemnité au gérant.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;706&lt;/td&gt;
&lt;td&gt;Le compte où sont crédités les revenus liés à des prestations de service.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Il en existe bien d’autres. Si un compte dispose d’un sous-compte, il
faut utiliser uniquement l’un des sous-comptes.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;GnuCash&lt;/em&gt; n’a pas le plan comptable général parmi les plans comptables
proposés par défaut. Vous pouvez soit télécharger le
&lt;a href=&quot;http://gnucash.entreprise.free.fr/page6.html&quot; title=&quot;Plan comptable pour les TPE&quot;&gt;plan comptable mis à disposition par Vincent Laure&lt;/a&gt;, soit
télécharger le &lt;a href=&quot;http://media.luffy.cx/files/PlanComptable.gnucash&quot; title=&quot;Plan comptable abrégé pour GnuCash&quot;&gt;plan comptable que j’utilise&lt;/a&gt; qui correspond au
système abrégé avec quelques comptes supplémentaires et certains
comptes retirés. Il comprend également un compte fournisseur et deux
comptes clients dont l’un en devises américaines.&lt;/p&gt;
&lt;h1 id=&quot;ecritures-comptables&quot;&gt;Écritures comptables&lt;/h1&gt;
&lt;p&gt;Pour chaque écriture comptable, il faut connaître les comptes à
débiter et les comptes à créditer. Généralement, cela n’a pas grand
chose à voir avec &lt;em&gt;GnuCash&lt;/em&gt;. Il est donc possible de se référer à
l’abondante littérature sur le sujet ainsi qu’aux nombreux forums
spécialisés dans la comptabilité.&lt;/p&gt;
&lt;p&gt;Généralement, je fais une recherche préfixée par « écriture
comptable » pour trouver mon bonheur. Je regarde les deux ou trois
premières réponses pour me faire une idée. Les numéros de comptes
indiqués sont généralement à cinq chiffres. Il n’est pas nécessaire de
créer le compte exact : il suffit d’utiliser le compte du système
abrégé ayant le même préfixe.&lt;/p&gt;
&lt;p&gt;Il est crucial de ne pas s’emmêler avec les débits et les
crédits. Dans une représentation en colonnes, les débits sont toujours
dans la colonne de gauche. Les crédits sont dans la colonne de droite.&lt;/p&gt;
&lt;p&gt;Enfin, &lt;em&gt;GnuCash&lt;/em&gt; propose d’associer un numéro à chaque requête. Je
scanne chaque pièce justificative et indique son numéro et une
description dans le nom de fichier.&lt;/p&gt;
&lt;h2 id=&quot;operations-de-creation&quot;&gt;Opérations de création&lt;/h2&gt;
&lt;p&gt;La création de l’entreprise entraîne un certain nombre d’écritures. Il
est important de noter que les écritures ne peuvent pas être
antérieures à la création de l’entreprise.&lt;/p&gt;
&lt;h3 id=&quot;capital-initial&quot;&gt;Capital initial&lt;/h3&gt;
&lt;p&gt;L’apport du capital initial se fait en deux fois. Chaque associé fait
d’abord une promesse d’apport en capital. Il devient alors débiteur du
capital promis sur un compte dédié à cet effet. Ensuite, lorsque
l’argent arrive sur le compte de l’entreprise, l’associé est crédité
de cet apport.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;456&lt;/td&gt;
&lt;td&gt;Promesse d’apport&lt;/td&gt;
&lt;td&gt;5000 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;5000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;456&lt;/td&gt;
&lt;td&gt;Versement apport&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;5000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;5000 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;publication-de-lannonce-legale&quot;&gt;Publication de l’annonce légale&lt;/h3&gt;
&lt;p&gt;Une des étapes de la création d’entreprise est la publication d’une
annonce légale. Généralement, un associé avance l’argent et est
remboursé après la création.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;623&lt;/td&gt;
&lt;td&gt;Annonce légale&lt;/td&gt;
&lt;td&gt;97,71 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;445&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;19,16 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;116,87 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;depot-des-statuts-au-greffe&quot;&gt;Dépôt des statuts au greffe&lt;/h3&gt;
&lt;p&gt;Le dépôt des statuts au greffe suit la même logique.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;622&lt;/td&gt;
&lt;td&gt;Greffe du tribunal&lt;/td&gt;
&lt;td&gt;72,08 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;445&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;14,13 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;86,21 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;operations-courantes&quot;&gt;Opérations courantes&lt;/h2&gt;
&lt;p&gt;Les opérations courantes impliquant un flux financier créditent soit
le compte bancaire de l’entreprise (512) ou celui de l’associé
(455). Dans ce sens, c’est généralement interchangeable. L’associé
peut être crédité de l’argent que l’entreprise lui doit par une
écriture débitant le compte de l’entreprise :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;Remboursement frais&lt;/td&gt;
&lt;td&gt;100 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;100 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;repas-du-midi&quot;&gt;Repas du midi&lt;/h3&gt;
&lt;p&gt;Une écriture courante est le remboursement du repas du midi. Il y a
beaucoup de théories à ce sujet. Il peut y avoir un plafond (environ
17 €), une somme forfaitaire à déduire (environ 4 €) et la
déductibilité ou non de la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;. À noter que le paiement d’une somme
forfaitaire pour le repas de midi ne semble pas admise. Tout repas
doit venir avec un justificatif.&lt;/p&gt;
&lt;p&gt;Pour ma part, je n’applique aucun plafond, je ne déduis aucune somme
forfaitaire mais je ne déduis pas la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;, à moins qu’il s’agisse d’une
invitation. Je paie toujours avec ma carte de crédit personnelle.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;6256&lt;/td&gt;
&lt;td&gt;Repas du midi&lt;/td&gt;
&lt;td&gt;13,20 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;13,20 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;indemnites-kilometriques&quot;&gt;Indemnités kilométriques&lt;/h3&gt;
&lt;p&gt;Si vous vous déplacez avec votre véhicule personnel, vous pouvez vous
verser des indemnités kilométriques. Si le trajet est régulier, il
semble qu’il n’est pas nécessaire de tenir un journal des
déplacements. À noter que le barème évolue chaque année et dépend de
la distance parcourue dans l’année. Dans le cas de trajets réguliers,
je ne fais qu’une seule écriture par mois.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;6251&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Indemnités kilométriques&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IK&lt;/span&gt;&lt;/abbr&gt; pour trajet de X à Y, 20 jours&lt;/td&gt;
&lt;td&gt;141,50 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;141,50 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Le train, l’avion, le taxi, les voitures de location se notent de la
même façon. À noter dans ce cas qu’il n’est jamais possible de
récupérer la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; sur un transport de personnes.&lt;/p&gt;
&lt;h3 id=&quot;abonnements-telephoniques-adsl&quot;&gt;Abonnements téléphoniques &lt;span class=&quot;amp&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ADSL&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;S’il y a usage professionnel, il est possible de se faire rembourser
tout ou partie d’un abonnement téléphonique ou &lt;span class=&quot;caps&quot;&gt;ADSL&lt;/span&gt;. Il faudra pouvoir
justifier de l’usage professionnel. Certains indiquant que la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;
n’est normalement déductible que si la facture est au nom de
l’entreprise. Personnellement, je la déduis tout de même.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;626&lt;/td&gt;
&lt;td&gt;Abonnement &lt;span class=&quot;caps&quot;&gt;ADSL&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;10,89 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;445&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;2,14 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;13,03 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Je fais passer de la même façon les abonnements à des services Web
comme Amazon ou l’achat de noms de domaine.&lt;/p&gt;
&lt;h3 id=&quot;autres-frais-deductibles&quot;&gt;Autres frais déductibles&lt;/h3&gt;
&lt;p&gt;Si le siège de votre entreprise est votre domicile, il est également
possible de déduire au prorata de la surface utilisée :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;une partie du loyer (je ne fais pas),&lt;/li&gt;
&lt;li&gt;une partie des factures &lt;span class=&quot;caps&quot;&gt;EDF&lt;/span&gt;, d’eau, des charges locatives (compte 6061),&lt;/li&gt;
&lt;li&gt;une partie de l’assurance locative (compte 616)&lt;/li&gt;
&lt;li&gt;une partie de la taxe d’habitation (compte 635)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;achats-divers&quot;&gt;Achats divers&lt;/h3&gt;
&lt;p&gt;Pour l’achat d’un bouquin, il faut utiliser le compte 6181. Pour
l’achat d’une fourniture ou d’un matériel dont la valeur n’excède pas
500 €, il faut utiliser le compte 6063. Je vous renvoie à l’exemple de
l’agrafeuse en introduction.&lt;/p&gt;
&lt;p&gt;Voici un autre exemple avec des frais de ports :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;35,88 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6063&lt;/td&gt;
&lt;td&gt;Petit matériel&lt;/td&gt;
&lt;td&gt;27,00 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;624&lt;/td&gt;
&lt;td&gt;Frais de ports&lt;/td&gt;
&lt;td&gt;3,00 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4456&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;5,88 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Pour les montants supérieurs à 500 €, l’achat devient une
immobilisation et non une charge. Il faut de plus en gérer l’amortissement.&lt;/p&gt;
&lt;h3 id=&quot;facturation-et-paiement-dun-client&quot;&gt;Facturation et paiement d’un client&lt;/h3&gt;
&lt;p&gt;La principale source de revenus provient normalement des paiements des
clients. Il y a deux étapes :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Il faut d’abord adresser une facture au client. Celui-ci est alors
    débiteur du montant demandé.&lt;/li&gt;
&lt;li&gt;Quelques jours, mois, années plus tard, le client paie. On crédite
    alors son compte et s’il a payé exactement la somme facturée, son
    solde devient nul.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Les deux opérations n’ont généralement pas lieu à la même date. Chaque
client dispose de son propre compte sous le compte 411 : il ne faut
pas utiliser directement le compte 411.&lt;/p&gt;
&lt;p&gt;On effectue de plus la collecte de la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; pour l’État. Si le client
est un professionnel, il récupérera la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; de son côté. Si le client
se trouve dans l’Union Européenne et qu’il fournit un numéro de &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;
intracommunautaire, il n’est pas nécessaire de lui faire payer la
&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;. Sinon, la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; française s’applique. Il semble être d’usage
d’utiliser un compte spécial (7062 au lieu de 706) dans ce cas. S’il
est hors Union Européenne, les prestations de service sont exonérées
de &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;GnuCash&lt;/em&gt; dispose d’un module d’édition des factures qui fait assez
bien son boulot. Je n’utilise toutefois pas la possibilité d’imprimer
la facture. Le rendu est assez désolant et je préfère donc faire mes
factures manuellement avec LaTeX.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;GnuCash&lt;/em&gt; gère aussi la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;, mais de manière partielle. L’entreprise
n’est redevable de la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; qu’au moment du paiement. Au moment de la
facturation, la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; est placée dans un compte de régularisation
(4458). &lt;em&gt;GnuCash&lt;/em&gt; va calculer automatiquement la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; et placer
l’écriture suivante au moment de valider la facture :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;411×&lt;/td&gt;
&lt;td&gt;Client Durant&lt;/td&gt;
&lt;td&gt;1196 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4458&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; à régulariser&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;196 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;706&lt;/td&gt;
&lt;td&gt;Prestation conseil&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;1000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Par contre, au moment du paiement, il va simplement créditer le compte
du client et débiter le compte en banque. Il faut alors penser à
ajouter manuellement le transfert de la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; au crédit du compte de la
&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; collectée (4457). L’écriture du paiement ressemble à ceci :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;411×&lt;/td&gt;
&lt;td&gt;Client Durant&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;1196 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4457&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; collectée&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;196 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4458&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; à régulariser&lt;/td&gt;
&lt;td&gt;196 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;1196 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;facturation-avec-des-devises-etrangeres&quot;&gt;Facturation avec des devises étrangères&lt;/h3&gt;
&lt;p&gt;Si votre client vous paie en devises étrangères, les choses se
compliquent énormément. En effet, votre client va disposer dans votre
système d’un compte en dollars (par exemple). Mais tous vos autres
comptes sont en euros. &lt;em&gt;GnuCash&lt;/em&gt; gère cette situation en permettant
d’indiquer un taux de change. Voici l’écriture qui apparaîtra dans le
compte du client :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;411×&lt;/td&gt;
&lt;td&gt;Client Scott&lt;/td&gt;
&lt;td&gt;1000 $&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;706&lt;/td&gt;
&lt;td&gt;Prestation conseil&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;1000 $&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;GnuCash&lt;/em&gt; va vous demander le taux de change actuel. Du coup, dans le
compte 706, vous verrez :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;411×&lt;/td&gt;
&lt;td&gt;Client Scott&lt;/td&gt;
&lt;td&gt;767 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;706&lt;/td&gt;
&lt;td&gt;Prestation conseil&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;767 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Au moment du paiement, les choses se compliquent. Votre client vous
paie 1000 $. Toutefois, ce ne sont pas 767 € qui arrivent sur votre
compte, mais seulement 738 €. En effet, au moment du paiement, le
taux de change a évolué. Vous avez alors une perte de change. Cette
parte va s’inscrire au compte 666. S’il y avait eu gain, ce serait le
compte 766.&lt;/p&gt;
&lt;p&gt;Une façon simple de gérer le problème est de passer l’écriture en
euros de cette façon :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;738 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;666&lt;/td&gt;
&lt;td&gt;Perte de change&lt;/td&gt;
&lt;td&gt;29 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;411×&lt;/td&gt;
&lt;td&gt;Client Scott&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;767 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Il faut alors réutiliser le taux de change &lt;em&gt;initial&lt;/em&gt;. De cette façon,
on obtient dans le compte du client :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;960,00 $&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;666&lt;/td&gt;
&lt;td&gt;Perte de change&lt;/td&gt;
&lt;td&gt;40,00 $&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;411×&lt;/td&gt;
&lt;td&gt;Client Scott&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;1000 $&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Le problème de devises peut aussi se poser pour l’achat de
services. Toutefois, si la valeur est assez faible, il me semble plus
simple de passer ces services sous forme d’une charge en euros.&lt;/p&gt;
&lt;h3 id=&quot;facturation-dun-fournisseur&quot;&gt;Facturation d’un fournisseur&lt;/h3&gt;
&lt;p&gt;Si vous achetez des prestations à un fournisseur et que les montants
sont suffisamment élevés (sinon, vous pouvez les passer directement en
charges), vous pouvez créer un compte pour le fournisseur. Le schéma
est similaire à la facturation d’un client. Le fournisseur vous envoie
une facture, vous l’enregistrez et créditez le compte du fournisseur
et débitez le compte de charge correspondant. Au paiement, vous
débitez le fournisseur et créditez le compte en banque. Par exemple,
pour un serveur dédié en Allemagne (pas de &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;) :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;626&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;41 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;401x&lt;/td&gt;
&lt;td&gt;Fournisseur Albert&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;41 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Au paiement de la facture :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;401x&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;41 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;Paiement facture&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;41 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;frais-bancaires&quot;&gt;Frais bancaires&lt;/h3&gt;
&lt;p&gt;Tous les mois, la banque va vous adresser une facture pour ses
services. C’est généralement plus salé que lorsqu’on est un
particulier. Personne ne sait trop bien pourquoi.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;23,92 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;627&lt;/td&gt;
&lt;td&gt;Frais mensuels &lt;span class=&quot;caps&quot;&gt;XX&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;20,00 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4456&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;3,92 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;paiement-de-la-tva&quot;&gt;Paiement de la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;&lt;/h3&gt;
&lt;p&gt;Une fois par trimestre, il va falloir verser un accompte sur la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;
collectée pour l’État. On en profite aussi pour se faire rembourser la
&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; déductible. Il semble d’usage de passer par deux écritures
comptables qui ont généralement lieu en même temps :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;4457&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; collectée&lt;/td&gt;
&lt;td&gt;2500 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4456&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;100 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4455&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; à décaisser&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;2400 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;4455&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; à décaisser&lt;/td&gt;
&lt;td&gt;2400 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;Paiement &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;2400 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Le réglement se fait en ligne sur le site des impôts. Il y a deux cases à remplir :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la base hors taxe des opérations imposables pour la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; à 19,6 %
   (12 755 € dans notre cas pour arriver à une &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; de 2500 €),&lt;/li&gt;
&lt;li&gt;la &lt;abbr title=&quot;Taxe sur la Valeur Ajoutée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TVA&lt;/span&gt;&lt;/abbr&gt; déductible sur les factures de 100 €.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En fin d’année, il y a un formulaire supplémentaire pour régulariser
la situation. Il me semble plus simple de toujours payer exactement ce
qu’il faut sur les accomptes. Cela ne vous dispense pas de remplir le
formulaire adéquat.&lt;/p&gt;
&lt;h3 id=&quot;remuneration-du-gerant&quot;&gt;Rémunération du gérant&lt;/h3&gt;
&lt;p&gt;De temps en temps, il est possible de vous verser une rémunération. Le
versement est net. Il faudra payer des cotisations &lt;abbr title=&quot;Unions de Recouvrement des Cotisations de Sécurité Sociale et d'Allocations Familiales&quot;&gt;&lt;span class=&quot;caps&quot;&gt;URSSAF&lt;/span&gt;&lt;/abbr&gt; et &lt;abbr title=&quot;Régime social des indépendants&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RSI&lt;/span&gt;&lt;/abbr&gt; par
la suite. Il ne s’agit pas d’un salaire.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;6410&lt;/td&gt;
&lt;td&gt;Rémunération Juin&lt;/td&gt;
&lt;td&gt;3000 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;3000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;cotisations-urssaf-rsi&quot;&gt;Cotisations &lt;abbr title=&quot;Unions de Recouvrement des Cotisations de Sécurité Sociale et d'Allocations Familiales&quot;&gt;&lt;span class=&quot;caps&quot;&gt;URSSAF&lt;/span&gt;&lt;/abbr&gt; &lt;span class=&quot;amp&quot;&gt;&amp;amp;&lt;/span&gt; &lt;abbr title=&quot;Régime social des indépendants&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RSI&lt;/span&gt;&lt;/abbr&gt;&lt;/h3&gt;
&lt;p&gt;Lorsque vous payez vos cotisations &lt;abbr title=&quot;Unions de Recouvrement des Cotisations de Sécurité Sociale et d'Allocations Familiales&quot;&gt;&lt;span class=&quot;caps&quot;&gt;URSSAF&lt;/span&gt;&lt;/abbr&gt; et &lt;abbr title=&quot;Régime social des indépendants&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RSI&lt;/span&gt;&lt;/abbr&gt;, vous devez obtenir
un reçu indiquant la répartition des montants. Voici par exemple comme
régler la première cotisation forfaitaire de 448 € pour l’&lt;abbr title=&quot;Unions de Recouvrement des Cotisations de Sécurité Sociale et d'Allocations Familiales&quot;&gt;&lt;span class=&quot;caps&quot;&gt;URSSAF&lt;/span&gt;&lt;/abbr&gt; :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;645&lt;/td&gt;
&lt;td&gt;Allocations familiales&lt;/td&gt;
&lt;td&gt;144 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Contribution sociale généralisée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CSG&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;136 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Contribution sociale généralisée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CSG&lt;/span&gt;&lt;/abbr&gt; non déductible&lt;/td&gt;
&lt;td&gt;64 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Contribution pour le remboursement de la dette sociale&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CRDS&lt;/span&gt;&lt;/abbr&gt;&lt;/td&gt;
&lt;td&gt;13 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;Formation professionnelle&lt;/td&gt;
&lt;td&gt;91 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;448 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;On notera qu’une partie de la &lt;abbr title=&quot;Contribution sociale généralisée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CSG&lt;/span&gt;&lt;/abbr&gt; est imputée en charges pour
l’entreprise tandis qu’une partie est payée par l’associé.&lt;/p&gt;
&lt;h2 id=&quot;operations-de-fin-dexercice&quot;&gt;Opérations de fin d’exercice&lt;/h2&gt;
&lt;p&gt;Les opérations courantes sont relativement simples à appréhender après
les premiers mois. Les opérations de fin d’exercice sont par contre
beaucoup plus complexes. Je vous conseillerais plutôt de prendre un
comptable pour cette partie. Ce qui suit est à prendre avec des
pincettes : personne n’est venu vérifier la validité de ma comptabilité.&lt;/p&gt;
&lt;p&gt;Toutes les écritures sont à passer à la date du dernier jour de
l’exercice. Elles doivent normalement régulariser les écritures
concernant l’exercice passé. On y trouve :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;régularisation du compte bancaire avec le relevé bancaire,&lt;/li&gt;
&lt;li&gt;régularisation des charges et des produits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les charges (ou les produits) qui sont à cheval sur deux exercices
(comme le réglement d’une prime d’assurance, un abonnement de trois
mois, …) doivent faire l’objet d’une écriture pour charges
constatées d’avance. Dans le cas d’une petite entreprise, il semble
que l’exercice soit optionnel si les sommes mises en jeu sont faibles.&lt;/p&gt;
&lt;p&gt;Il existe d’autres écritures mais qui ne nous concernent pas s’il n’y
a pas eu d’écritures correspondantes dans l’année passée :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;régularisation des stocks&lt;/li&gt;
&lt;li&gt;régularisation des immobilisations&lt;/li&gt;
&lt;li&gt;régularisation des placements&lt;/li&gt;
&lt;li&gt;régularisation des amortissements&lt;/li&gt;
&lt;li&gt;régularisation des dépréciations&lt;/li&gt;
&lt;li&gt;régularisation des provisions&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;provisions-pour-remuneration&quot;&gt;Provisions pour rémunération&lt;/h3&gt;
&lt;p&gt;C’est aussi le bon moment pour décider de compléter votre
rémunération. En effet, le bénéfice de l’entreprise peut être
distribuée en rémunérations (soumises à l’&lt;span class=&quot;caps&quot;&gt;IR&lt;/span&gt;) ou en dividendes. Dans
le second cas, la somme destinée à cet effet sera d’abord soumise à
l’impôt sur les sociétés. Le calcul peut être effectué via un
&lt;a href=&quot;http://www.entrepriseindividuelle.info/Calc_CharSoc.php&quot; title=&quot;Simulateur de répartition dividendes/rémunération pour un gérant&quot;&gt;simulateur&lt;/a&gt;. Les dividendes étant taxés comme des revenus à
partir de 2013 pour la part dépassant les 10 % du capital de la
société, il n’est pas très intéressant de se verser des dividendes.&lt;/p&gt;
&lt;p&gt;Si vous voulez compléter votre rémunération de 10 000 €, il suffirait
de passer l’écriture suivante au dernier jour de l’exercice :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;6410&lt;/td&gt;
&lt;td&gt;Provision pour rémunération&lt;/td&gt;
&lt;td&gt;10 000 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;10 000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Il faudra alors ensuite provisionner les charges correspondantes.&lt;/p&gt;
&lt;h3 id=&quot;provisions-pour-charges-sociales&quot;&gt;Provisions pour charges sociales&lt;/h3&gt;
&lt;p&gt;Il est possible de provisionner les sommes qui seront demandées par
les différents organismes sociaux (&lt;abbr title=&quot;Unions de Recouvrement des Cotisations de Sécurité Sociale et d'Allocations Familiales&quot;&gt;&lt;span class=&quot;caps&quot;&gt;URSSAF&lt;/span&gt;&lt;/abbr&gt;, &lt;span class=&quot;caps&quot;&gt;CIPAV&lt;/span&gt;, &lt;abbr title=&quot;Régime social des indépendants&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RSI&lt;/span&gt;&lt;/abbr&gt;) et de les
déduire du résultat. Il faut donc déterminer une approximation des
cotisations qui seront réclamées à l’aide d’un des &lt;a href=&quot;http://www.entrepriseindividuelle.info/Calc_CharSoc.php&quot; title=&quot;Simulateur de calcul des charges sociales&quot;&gt;nombreux&lt;/a&gt;
&lt;a href=&quot;http://www.guide-tns.fr/chargesprofessionnelliberal2012.html&quot; title=&quot;Simulateur de calcul des charges sociales&quot;&gt;simulateurs&lt;/a&gt; que l’on trouve sur le web. Ensuite, l’écriture
semble être la suivante&lt;sup id=&quot;fnref:provision&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn:provision&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;645&lt;/td&gt;
&lt;td&gt;Maladie/Vieillesse/&lt;span class=&quot;caps&quot;&gt;AF&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;4000 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Contribution sociale généralisée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CSG&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;1000 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;Provisions pour charges&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;5000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Pour chaque paiement, il faudra débiter le compte 43 au lieu des
comptes 645 et 63. Par exemple, pour les cotisations &lt;abbr title=&quot;Unions de Recouvrement des Cotisations de Sécurité Sociale et d'Allocations Familiales&quot;&gt;&lt;span class=&quot;caps&quot;&gt;URSSAF&lt;/span&gt;&lt;/abbr&gt;, on ferait :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;Allocations familiales&lt;/td&gt;
&lt;td&gt;144 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Contribution sociale généralisée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CSG&lt;/span&gt;&lt;/abbr&gt; déductible&lt;/td&gt;
&lt;td&gt;136 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Contribution sociale généralisée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CSG&lt;/span&gt;&lt;/abbr&gt; non déductible&lt;/td&gt;
&lt;td&gt;64 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;abbr title=&quot;Contribution pour le remboursement de la dette sociale&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CRDS&lt;/span&gt;&lt;/abbr&gt;&lt;/td&gt;
&lt;td&gt;13 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;Formation professionnelle&lt;/td&gt;
&lt;td&gt;91 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;448 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Si la provision s’avère trop importante en fin d’année suivante, il
faudra affecter le surplus au compte 787.&lt;/p&gt;
&lt;h3 id=&quot;cloture-des-comptes&quot;&gt;Clôture des comptes&lt;/h3&gt;
&lt;p&gt;Une fois les régularisations effectuées, on passe aux travaux de
clôture et de réouverture des comptes. Il s’agit de &lt;strong&gt;solder&lt;/strong&gt; tous
les comptes de charges (dont le numéro commence par 6) et de produits
(dont le numéro commence par 7). Solder signifie mettre la balance du
compte à zéro.&lt;/p&gt;
&lt;p&gt;Si le compte 709 est débiteur, il faut le solder manuellement dans un
autre compte (le 706 par exemple). Si les comptes 609, 619 ou 629 sont
créditeurs, il faut les solder avec l’un des voisins (par exemple,
6063, 6181 et 6251). Ces comptes sont particuliers car ils
fonctionnent dans le sens inverse des comptes de la même catégorie.&lt;/p&gt;
&lt;p&gt;Vient ensuite la clôture proprement dite. &lt;em&gt;GnuCash&lt;/em&gt; dispose d’une
fonction pour vous aider à la réaliser. Dans le menu « Outils »,
choisir la fonction « Clôturer le livre ». Indiquer la date de clôture
(dernier jour de l’exercice) et les comptes à utiliser pour les
revenus et les dépenses. Dans le cadre du système abrégé, il s’agit du
compte 12. On obtient l’écriture suivante :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;706&lt;/td&gt;
&lt;td&gt;Prestations conseil&lt;/td&gt;
&lt;td&gt;50 000 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;627&lt;/td&gt;
&lt;td&gt;Services bancaires&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;100 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;Impôts et taxes&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;200 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6251&lt;/td&gt;
&lt;td&gt;Voyages et déplacements&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;1000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6256&lt;/td&gt;
&lt;td&gt;Frais de missions&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;1000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6410&lt;/td&gt;
&lt;td&gt;Rémunération du gérant&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;20 000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;645&lt;/td&gt;
&lt;td&gt;Charges sociales&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;8000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6063&lt;/td&gt;
&lt;td&gt;Petit matériel&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;1000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Transfert des charges&lt;/td&gt;
&lt;td&gt;31 300 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Transfert des produits&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;50000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;On se retrouve avec un &lt;strong&gt;résultat bénéficiaire&lt;/strong&gt; de 18 700 €.&lt;/p&gt;
&lt;p&gt;Pour la réouverture des comptes, il était d’usage d’utiliser des
livres papiers différents pour chaque exercice. Certains préconisent
de faire de même en repartant de zéro pour le nouvel exercice. J’ai
personnellement choisi de garder tous les exercices dans un seul
fichier &lt;em&gt;GnuCash&lt;/em&gt;. Cela dispense de fastidieuses écritures de bilan.&lt;/p&gt;
&lt;h3 id=&quot;calcul-de-limpot-sur-les-societes&quot;&gt;Calcul de l’impôt sur les sociétés&lt;/h3&gt;
&lt;p&gt;Le bénéfice permet de calculer l’impôt dû pour l’exercice
précédent. Sur le bénéfice calculé précédemment, l’impôt dû est de
15 % pour la partie inférieure à 38 120 € et de 33,3 % pour le
reste. Dans notre exemple, l’impôt dû est donc de 2 805 €.&lt;/p&gt;
&lt;p&gt;Avec cette information, vous pouvez revenir quelques étapes en arrière
en annulant la clôture des comptes (il suffit d’effacer les deux
écritures) et en ajustant la provision pour rémunération. Dans le cas
contraire, vous pourrez toujours récupérer le résultat en dividendes
mais l’imposition est plutôt prohibitive.&lt;/p&gt;
&lt;p&gt;Une fois que votre calcul est définitif, il faut passer l’écriture suivante :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;695&lt;/td&gt;
&lt;td&gt;Paiement de l’&lt;abbr title=&quot;Impôt sur les sociétés&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IS&lt;/span&gt;&lt;/abbr&gt;&lt;/td&gt;
&lt;td&gt;2 805 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;444&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;2 805 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Puis clôturer de nouveau le compte 695&lt;sup id=&quot;fnref:cloture&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn:cloture&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Transfert des charges&lt;/td&gt;
&lt;td&gt;2 805 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;695&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;2 805 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;etablissement-du-compte-de-resultat-et-du-bilan&quot;&gt;Établissement du compte de résultat et du bilan&lt;/h3&gt;
&lt;p&gt;Le compte de résultat s’intéresse à ce qui s’est passé durant
l’exercice au niveau des comptes de charges et de produits. Le bilan
donne une image des autres comptes au dernier jour de l’exercice.&lt;/p&gt;
&lt;p&gt;Le &lt;a href=&quot;http://www.anc.gouv.fr/sections/normes_privees/plans_comptables/plans_comptables/cpsdocument_view&quot; title=&quot;Plan comptable général français&quot;&gt;plan comptable général&lt;/a&gt; comprend
les modèles adéquats pour le compte de résultat et le bilan. Il existe
un notamment modèle adapté au système abrégé. On peut aussi le trouver
sous un &lt;a href=&quot;http://www.plancomptable.com/comptes_annuels/comptes_annuels.htm&quot; title=&quot;Bilan et compte de résultat au format Excel&quot;&gt;format exploitable par un tableur&lt;/a&gt;. Malheureusement, il n’y
a pas la correspondance entre les diverses cases à remplir et les
numéros de comptes.&lt;/p&gt;
&lt;p&gt;Le &lt;strong&gt;compte de résultat&lt;/strong&gt; est assez simple à remplir. Toutes les
informations nécessaires sont dans les écritures de clôture (celles
vers le compte 12). Il suffit donc de les inspecter et de les ventiler
dans les cases appropriées.&lt;/p&gt;
&lt;p&gt;J’ai reporté la ventilation que j’ai adoptée dans un
&lt;a href=&quot;http://media.luffy.cx/files/resultat-modele.pdf&quot; title=&quot;Modèle de compte de résultat et de bilan au format PDF&quot;&gt;modèle de compte de résultat&lt;/a&gt; (&lt;a href=&quot;http://media.luffy.cx/files/resultat-modele.tex&quot; title=&quot;Modèle de compte de résultat et de bilan au format TeX&quot;&gt;sources&lt;/a&gt;). Une fois le
total effectué, on en calcule la différence et on a le reporte soit
sur la ligne « solde créditeur » (en cas de bénéfices), soit sur la
ligne « solde débiteur » (en cas de pertes). Cette différence doit
être le solde du compte 12. Les totaux généraux sont alors équilibrés.&lt;/p&gt;
&lt;p&gt;Le &lt;strong&gt;bilan&lt;/strong&gt; est un peu plus délicat pour deux raisons :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les comptes de tiers (4xx) mélangent à la fois l’actif et le passif&lt;/li&gt;
&lt;li&gt;les amortissements et les provisions doivent être déduits de l’actif&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le second point est pour moi tout théorique car je n’ai ni
amortissement, ni provision. Le premier point est plus problématique
et il faudra donc faire attention à bien comptabiliser les créances
des tiers au niveau de l’actif et vos dettes au niveau du passif. J’ai
indiqué la difficulté dans mon &lt;a href=&quot;http://media.luffy.cx/files/resultat-modele.pdf&quot; title=&quot;Modèle de compte de résultat et de bilan au format PDF&quot;&gt;modèle de bilan&lt;/a&gt; par une étoile.&lt;/p&gt;
&lt;p&gt;Pour établir le bilan, &lt;em&gt;GnuCash&lt;/em&gt; peut nous aider en demandant dans le
menu « Rapports » l’établissement du bilan. Il convient ensuite de
ventiler attentivement. Si tout se passe bien, les totaux généraux s’équilibrent.&lt;/p&gt;
&lt;h3 id=&quot;affectation-du-resultat&quot;&gt;Affectation du résultat&lt;/h3&gt;
&lt;p&gt;Une fois le bénéfice correctement calculé, le bilan dressé et le
compte de résultat établi, il est possible d’affecter le résultat si
celui-ci est créditeur&lt;sup id=&quot;fnref:débiteur&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn%3Ad%C3%A9biteur&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le résultat est diminué du report à nouveau de l’exercice précédent
   s’il est débiteur,&lt;/li&gt;
&lt;li&gt;si la &lt;strong&gt;réserve légale&lt;/strong&gt; n’est pas égale à au moins 10 % du capital
   social total, 5 % du résultat restant sont affectés à celle-ci,&lt;/li&gt;
&lt;li&gt;le résultat est augmenté du report à nouveau de l’exercice
   précédent s’il est créditeur,&lt;/li&gt;
&lt;li&gt;le résultat peut alors être distribué sous forme de dividendes s’il
   reste créditeur,&lt;/li&gt;
&lt;li&gt;le reste du résultat est crédité au compte du &lt;strong&gt;report à nouveau&lt;/strong&gt; (11).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sachant qu’il est désormais prohibitif de se distribuer le résultat en
dividendes en France (au-delà de la limite de 10 % du capital social),
il est donc peu intéressant d’avoir un résultat important. Voici un
exemple de distribution dans le cas où la réserve légale n’existe pas encore :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compte&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Débit&lt;/th&gt;
&lt;th&gt;Crédit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;120&lt;/td&gt;
&lt;td&gt;Résultat 2012&lt;/td&gt;
&lt;td&gt;15 895 €&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1061&lt;/td&gt;
&lt;td&gt;Réserve légale&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;794 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;457&lt;/td&gt;
&lt;td&gt;Dividendes à payer&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;1000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Report à nouveau&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;14 101 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ces transactions sont datées au 31 décembre 2012. Lors du paiement
effectif des dividendes, il faudra penser à retirer les prélevements
sociaux (15,5 % pour 2013) et les créditer sur le compte 442 ou 447.&lt;/p&gt;
&lt;h3 id=&quot;declaration-de-lis&quot;&gt;Déclaration de l’&lt;abbr title=&quot;Impôt sur les sociétés&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IS&lt;/span&gt;&lt;/abbr&gt;&lt;/h3&gt;
&lt;p&gt;L’épreuve finale est désormais la déclaration de résultats auprès des
impôts. Dans l’optique de faire supporter les coûts de déclaration au
contribuable, l’administration impose désormais une télétransmission
au format &lt;span class=&quot;caps&quot;&gt;EDI&lt;/span&gt; via un partenaire tierce&lt;sup id=&quot;fnref:intermédiaire&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn%3Ainterm%C3%A9diaire&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; qu’il vous
faudra rétribuer. Comptez environ 200 €.&lt;/p&gt;
&lt;p&gt;L’intermédiaire peut demander les balances sous un certain
format. Dans mon cas, il est possible de fournir les balances au
format &lt;span class=&quot;caps&quot;&gt;CSV&lt;/span&gt;. Malheureusement, &lt;em&gt;GnuCash&lt;/em&gt; n’est pas particulièrement
brillant dans ce domaine. Il existe une &lt;a href=&quot;http://wiki.gnucash.org/wiki/FAQ#Q:_How_can_I_export_data.3F&quot; title=&quot;Export data from GnuCash&quot;&gt;entrée dans la &lt;span class=&quot;caps&quot;&gt;FAQ&lt;/span&gt;&lt;/a&gt; à
ce sujet, mais cela consiste généralement à effectuer des
manipulations complexes.&lt;/p&gt;
&lt;p&gt;J’ai simplement formaté manuellement la balance dans un fichier
&lt;span class=&quot;caps&quot;&gt;CSV&lt;/span&gt;. Il s’agit plus ou moins de refaire une nouvelle fois son
bilan car il faut donner les détails :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Recopier le détail du compte de résultat en s’aidant simplement
    des écritures des comptes de charges et de produits vers le
    compte 12.&lt;/li&gt;
&lt;li&gt;Recopier l’état des autres comptes tels qu’ils étaient avant
    l’écriture comptable de l’affectation du résultat. Ne pas recopier
    le compte 12 (sinon, il n’y a pas équilibre).&lt;/li&gt;
&lt;li&gt;Inclure l’écriture comptable du compte 695 vers le compte 444.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La balance est normalement équilibrée et le logiciel de saisie
retrouve le même résultat comptable.&lt;/p&gt;
&lt;p&gt;Il reste ensuite à compléter correctement les 11 formulaires de
déclaration. Chaque case peut faire l’objet d’une recherche
approfondie sur le sujet. Par exemple, sur le formulaire 2033—B,
faut-il reporter les charges sociales dans la case 380 ? Il semble que
dans le cas d’une &lt;abbr title=&quot;Entreprise Unipersonnelle à Responsabilité Limitée&quot;&gt;&lt;span class=&quot;caps&quot;&gt;EURL&lt;/span&gt;&lt;/abbr&gt; à l’&lt;abbr title=&quot;Impôt sur les sociétés&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IS&lt;/span&gt;&lt;/abbr&gt;, il n’y a pas d’exploitant et il faut
donc laisser cette case vide, malgré la remarque attachée à la
case 252.&lt;/p&gt;
&lt;p&gt;Bref, un comptable sera d’une grande aide.&lt;/p&gt;
&lt;div class=&quot;footnote&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&quot;fn:comptable&quot;&gt;
&lt;p&gt;Outre la vérification, le comptable pourra aussi prendre
          en charge la télétransmission qui est actuellement
          obligatoire pour l’&lt;abbr title=&quot;Impôt sur les sociétés&quot;&gt;&lt;abbr title=&quot;Impôt sur les sociétés&quot;&gt;&lt;abbr title=&quot;Impôt sur les sociétés&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IS&lt;/span&gt;&lt;/abbr&gt;&lt;/abbr&gt;&lt;/abbr&gt; et qui pourrait le devenir pour
          d’autres déclarations. Voir la section dédiée à cet
          effet. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref:comptable&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 1 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn:ecriture&quot;&gt;
&lt;p&gt;Une écriture comptable doit également comporter la date
         et une description. Je les omets ici pour ne pas
         surcharger la présentation. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref:ecriture&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 2 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn:provision&quot;&gt;
&lt;p&gt;À noter qu’il existe un compte de provisions pour les
          charges (681). Il peut sembler idéal pour ce type
          d’opération. Toutefois, ce compte ne doit être utilisé
          que pour une charge &lt;em&gt;probable&lt;/em&gt;. Si la charge est &lt;em&gt;certaine&lt;/em&gt;
          (comme c’est le cas ici), il n’y a pas lieu
          d’utiliser ce compte. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref:provision&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 3 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn:cloture&quot;&gt;
&lt;p&gt;Il semble que cette façon de faire soit
        contestable. Toutefois, je ne vois pas comment s’assurer
        que ce compte ne perturbe pas l’exercice suivant s’il
        n’est pas soldé. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref:cloture&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 4 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn:débiteur&quot;&gt;
&lt;p&gt;Si le résultat est débiteur, il est simplement enregistré
         au débit du report à nouveau. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref%3Ad%C3%A9biteur&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 5 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn:intermédiaire&quot;&gt;
&lt;p&gt;Il est possible de devenir soi-même partenaire
              &lt;span class=&quot;caps&quot;&gt;EDI&lt;/span&gt;. Il suffit de passer une convention avec la
              direction des impôts qui peut accepter ou
              refuser. Il faudra ensuite vous palucher les specs
              du protocole basé sur le standard &lt;a href=&quot;http://en.wikipedia.org/wiki/UN/EDIFACT&quot; title=&quot;United Nations/Electronic Data Interchange For Administration, Commerce and Transport&quot;&gt;&lt;span class=&quot;caps&quot;&gt;EDIFACT&lt;/span&gt;&lt;/a&gt;,
              respecter le cahier des charges annuel et obtenir le
              label nécessaire pour pouvoir télétransmettre. Nul
              doute que l’ensemble est fait dans la plus totale
              obscurité. Nous vous attendez pas à trouver un dépôt
              GitHub. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref%3Ainterm%C3%A9diaire&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 6 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-04-06T19:52:25+00:00</dc:date>
	<dc:creator>Vincent Bernat</dc:creator>
</item>
<item rdf:about="http://tanguy.ortolo.eu/blog/article101/precompresser-apache">
	<title>Tanguy Ortolo: Pré-compresser des fichiers statiques avec le Serveur HTTP Apache</title>
	<link>http://tanguy.ortolo.eu/blog/article101/precompresser-apache</link>
	<content:encoded>&lt;p&gt;Quand on publie un site Web constitué de fichiers statiques avec le
Serveur HTTP Apache, on peut réduire le débit utilisé pour servir ces
fichiers en activant la compression à la volée, avec le &lt;em class=&quot;software&quot;&gt;mod_deflate&lt;/em&gt;. Ainsi, si le client annonce qu'il
prend cela en charge, Apache compressera les fichiers avant de les lui
envoyer, et le client les décompressera à la réception.&lt;/p&gt;&lt;div style=&quot;text-align: center; margin: 1em;&quot;&gt;&lt;a href=&quot;http://httpd.apache.org/&quot; title=&quot;De la Fondation Apache, licence Apache&quot;&gt;&lt;img src=&quot;http://tanguy.ortolo.eu/blog/data/images/logos/apache.png&quot; alt=&quot;Plume&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;Pré-compression&lt;/h2&gt;

&lt;p&gt;L'inconvénient de cette approche, c'est que le serveur doit effectuer
la compression pour chaque requête ; il est plus efficace de
pré-compresser les fichiers une fois pour toute, en conservant le fichier
original pour les clients qui ne prennent pas en charge la
décompression :&lt;/p&gt;

&lt;pre class=&quot;cli&quot;&gt;$ ls
index.html
$ gzip &amp;lt; index.html &amp;gt; index.html.gz
$ ls
index.html index.html.gz&lt;/pre&gt;

&lt;p&gt;On peut ensuite servir ces fichiers directement en indiquant qu'ils
sont compressés. Cela se fait avec le &lt;em class=&quot;software&quot;&gt;mod_mime&lt;/em&gt;, en déclarant un nouvel « encodage » gzip
— terme désignant une encapsulation dans le langage de la &lt;a href=&quot;http://tools.ietf.org/html/rfc2616#section-3.5&quot;&gt;norme
HTTP&lt;/a&gt; :&lt;/p&gt;

&lt;pre class=&quot;config&quot;&gt;LoadModule mime_module /usr/lib/apache2/modules/mod_mime.so
AddEncoding x-gzip .gz .tgz&lt;/pre&gt;

&lt;h2&gt;Négociation de contenu&lt;/h2&gt;

&lt;p&gt;Cela suffit à servir des fichiers pré-compressés, mais &lt;em&gt;seulement
pour les clients qui les demandent explicitement,&lt;/em&gt; par exemple &lt;em class=&quot;url&quot;&gt;index.html.gz&lt;/em&gt;. Ce n'est pas très utile, on peut donc
utiliser le &lt;em class=&quot;software&quot;&gt;mod_negociation&lt;/em&gt; pour servir
automatiquement le fichier compressé en réponse à une requête normale,
&lt;em class=&quot;url&quot;&gt;index.html&lt;/em&gt; dans ce cas. Pour activer cette
fonctionnalité :&lt;/p&gt;

&lt;pre class=&quot;config&quot;&gt;LoadModule negotiation_module /usr/lib/apache2/modules/mod_negotiation.so
Options +MultiViews&lt;/pre&gt;

&lt;p&gt;Le problème, c'est que la « négociation de contenu », qui permet à
Apache de servir un fichier parmi plusieurs candidats selon la langue,
le codage et la compression pris en charge par le client, ne se
déclenche &lt;em&gt;que si aucun fichier ne correspond exactement à la
requête.&lt;/em&gt; Or, même si &lt;em class=&quot;filename&quot;&gt;index.html.gz&lt;/em&gt; serait
un bon candidat pour une requête sur &lt;em class=&quot;url&quot;&gt;index.html&lt;/em&gt;, il
y a justement un fichier &lt;em class=&quot;filename&quot;&gt;index.html&lt;/em&gt; qui
correspond à cette requête, et la négociation de contenu n'entre donc
pas en jeu. Il faut donc renommer le fichier original :&lt;/p&gt;

&lt;pre class=&quot;cli&quot;&gt;$ mv index.html index.html.raw
$ ls
index.html.gz index.html.raw&lt;/pre&gt;

&lt;p&gt;… et déclarer un nouveau type de (non-)compression :&lt;/p&gt;

&lt;pre class=&quot;config&quot;&gt;AddEncoding identity .raw&lt;/pre&gt;

&lt;p&gt;Avec cela, et en redémarrant le Serveur HTTP Apache, le fichier &lt;em class=&quot;filename&quot;&gt;index.html.raw&lt;/em&gt; sera servi aux clients qui ne
prennent pas en charge la compression, et le fichier &lt;em class=&quot;filename&quot;&gt;index.html.gz&lt;/em&gt; à ceux qui la prennent en
charge.&lt;/p&gt;</content:encoded>
	<dc:date>2013-03-29T11:21:00+00:00</dc:date>
	<dc:creator>Tanguy</dc:creator>
</item>
<item rdf:about="http://www-public.telecom-sudparis.eu/~berger_o/weblog/?p=1050">
	<title>Olivier Berger (pro): Managing Python code with UTF-8 (french chars) in org-mode + babel + minted for LaTeX export</title>
	<link>http://www-public.telecom-sudparis.eu/~berger_o/weblog/2013/03/29/managing-python-code-with-utf-8-french-chars-in-org-mode-babel-minted-for-latex-export/</link>
	<content:encoded>&lt;p&gt;
The goal of this article is to illustrate how to manage Python code which includes comments in UTF-8 characters inside a latin-1 source org-mode for LaTeX export.
&lt;/p&gt;
&lt;p&gt;Note that I’ve pasted in wordpress the HTML generated by org-mode, so I hope it isn’t broken too much.&lt;/p&gt;
&lt;p&gt;
My typical use case is a french lecture on Python where the text is written in french, as well as some of the code comments and examples
&lt;/p&gt;
&lt;p&gt;
We’ll use org-mode’s babel module to include and manage the Python&lt;br /&gt;
examples. The goal is to write the source of the Python programs&lt;br /&gt;
directly in the same org source as the class book’s text, and to extract them into a subdir (with the “tangle” feature), so that they can be shipped to the students to experiment with.
&lt;/p&gt;
&lt;p&gt;
The &lt;code&gt;minted&lt;/code&gt; LaTeX environment is used, for babel, to make the Python syntax highlighting.
&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1050&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;outline-3&quot; id=&quot;outline-container-1-1&quot;&gt;
&lt;h3 id=&quot;sec-1-1&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;1.1&lt;/span&gt; Issues&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-1-1&quot;&gt;
&lt;ul&gt;
&lt;li&gt;The source org-mode is in latin-1 so that it compiles with pdflatex
&lt;/li&gt;
&lt;li&gt;The examples source-code will be in UTF-8 so that Python 2.7 executes them well on a modern Linux desktop
&lt;/li&gt;
&lt;li&gt;Minted relies on pygmentize wich doesn’t seem to handle UTF-8 so well
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;outline-3&quot; id=&quot;outline-container-1-2&quot;&gt;
&lt;h3 id=&quot;sec-1-2&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;1.2&lt;/span&gt; Solution&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-1-2&quot;&gt;
&lt;p&gt;
We’ll show how to “patch” minted’s use of pygmentize to take advantage&lt;br /&gt;
of its conversion capacity to convert the Python sources from UTF-8 to&lt;br /&gt;
latin-1 at document rendering time (LaTeX compilation).
&lt;/p&gt;
&lt;p&gt;
It’s a hack, but works.
&lt;/p&gt;
&lt;p&gt;
The current document’s source shows how this works
&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;outline-4&quot; id=&quot;outline-container-1-2-1&quot;&gt;
&lt;h4 id=&quot;sec-1-2-1&quot;&gt;&lt;span class=&quot;section-number-4&quot;&gt;1.2.1&lt;/span&gt; Customization&lt;/h4&gt;
&lt;div class=&quot;outline-text-4&quot; id=&quot;text-1-2-1&quot;&gt;
&lt;p&gt;
The org document should contain the following headers :
&lt;/p&gt;
&lt;pre class=&quot;example&quot;&gt;#+LANGUAGE:  fr
#+LaTeX_HEADER: \usepackage[latin1]{inputenc}
#+LaTeX_HEADER: \usepackage[french]{babel}
#+LaTeX_HEADER: \usepackage{color}\usepackage{minted}
&lt;/pre&gt;
&lt;p&gt;
and the footers :
&lt;/p&gt;
&lt;pre class=&quot;example&quot;&gt;# Local Variables:
# coding: latin-1
# org-src-preserve-indentation: true
# tab-width: 4
# End:
&lt;/pre&gt;
&lt;p&gt;
Also note that pdflatex should use the &lt;code&gt;-shell-escape&lt;/code&gt; option necessary for minted
&lt;/p&gt;
&lt;p&gt;
Now, the document should also include the following “patch” for minted :
&lt;/p&gt;
&lt;pre class=&quot;example&quot;&gt;#+LATEX_HEADER: \makeatletter
#+LATEX_HEADER: \renewcommand\minted@pygmentize[2][\jobname.pyg]{
#+LATEX_HEADER:   \def\minted@cmd{pygmentize -l #2 -f latex -F tokenmerge
#+LATEX_HEADER:     \minted@opt{gobble} \minted@opt{texcl} \minted@opt{mathescape}
#+LATEX_HEADER:     \minted@opt{startinline} \minted@opt{funcnamehighlighting}
#+LATEX_HEADER:     \minted@opt{linenos} -P &quot;verboptions=\minted@opt{extra}&quot;
#+LATEX_HEADER:     -O encoding=UTF-8,outencoding=iso-8859-1 -o \jobname.out.pyg #1}
#+LATEX_HEADER:   \immediate\write18{\minted@cmd}
#+LATEX_HEADER:   % For debugging, uncomment:
#+LATEX_HEADER:   %\immediate\typeout{\minted@cmd}
#+LATEX_HEADER:   \ifthenelse{\equal{\minted@opt@bgcolor}{}}
#+LATEX_HEADER:    {}
#+LATEX_HEADER:    {\begin{minted@colorbg}{\minted@opt@bgcolor}}
#+LATEX_HEADER:   \input{\jobname.out.pyg}
#+LATEX_HEADER:   \ifthenelse{\equal{\minted@opt@bgcolor}{}}
#+LATEX_HEADER:    {}
#+LATEX_HEADER:    {\end{minted@colorbg}}
#+LATEX_HEADER:   \DeleteFile{\jobname.out.pyg}}
#+LATEX_HEADER: \makeatother
&lt;/pre&gt;
&lt;p&gt;
The important change is the addition of the &lt;code&gt;-O encoding=UTF-8,outencoding=iso-8859-1&lt;/code&gt; option of pygmentize, that will convert the UTF-8 source code to latin-1.
&lt;/p&gt;
&lt;p&gt;
Hopefully most of the characters will convert fine, for a document written in french.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;outline-2&quot; id=&quot;outline-container-2&quot;&gt;
&lt;h2 id=&quot;sec-2&quot;&gt;&lt;span class=&quot;section-number-2&quot;&gt;2&lt;/span&gt; Examples&lt;/h2&gt;
&lt;div class=&quot;outline-text-2&quot; id=&quot;text-2&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;outline-3&quot; id=&quot;outline-container-2-1&quot;&gt;
&lt;h3 id=&quot;sec-2-1&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;2.1&lt;/span&gt; Basic Python&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-1&quot;&gt;
&lt;p&gt;
This is a generic verbatim example, which doesn’t use babel / minted.
&lt;/p&gt;
&lt;pre class=&quot;example&quot;&gt;$ python
Python 2.7.3 (default, Jan  2 2013, 16:53:07) 
[GCC 4.7.2] on linux2
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.
&amp;gt;&amp;gt;&amp;gt; print &quot;Hello, world!&quot;
Hello, world!
&amp;gt;&amp;gt;&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;outline-3&quot; id=&quot;outline-container-2-2&quot;&gt;
&lt;h3 id=&quot;sec-2-2&quot;&gt;&lt;span class=&quot;section-number-3&quot;&gt;2.2&lt;/span&gt; Python source code for french speakers&lt;/h3&gt;
&lt;div class=&quot;outline-text-3&quot; id=&quot;text-2-2&quot;&gt;
&lt;p&gt;
Here, we first include the source code, so that it can be exported to&lt;br /&gt;
an &lt;code&gt;examples/&lt;/code&gt; subdir, with the following (note that the &lt;code&gt;#+ BEGIN_src&lt;/code&gt; / &lt;code&gt;#+ END_src&lt;/code&gt; should be changed to get rid of the space&lt;br /&gt;
character between &lt;code&gt;+&lt;/code&gt; and &lt;code&gt;BEGIN&lt;/code&gt; / &lt;code&gt;END&lt;/code&gt;, and that the &lt;code&gt;:shebang&lt;/code&gt; and following text should be on the &lt;code&gt;BEGIN_SRC&lt;/code&gt; line… I seem to have not quoted&lt;br /&gt;
these properly in this document):
&lt;/p&gt;
&lt;pre class=&quot;example&quot;&gt;#+name: helloworld
#+ BEGIN_src python :tangle examples/helloworld.py :noweb yes \\
:shebang #!/usr/bin/python :padline no :exports none
# -*- coding: utf-8 -*-

# Ceci est un exemple d'affichage d'une chaîne accentuée

name = raw_input(&quot;Quel est vôtre nom ? &quot;)

print &quot;J'espère que ça va bien aujourd'hui&quot;, name
#+ END_src
&lt;/pre&gt;
&lt;p&gt;
Editing it with “C-c ‘” will open an UTF-8 buffer, so hopefully, this will be consistent with the &lt;code&gt;utf-8&lt;/code&gt; coding system declared on the second line.
&lt;/p&gt;
&lt;p&gt;
The regeneration of the &lt;code&gt;examples/helloworld.py&lt;/code&gt; file is made with &lt;code&gt;C-c C-v t&lt;/code&gt; (babel “tangling”).
&lt;/p&gt;
&lt;p&gt;
Note that we don’t add the &lt;code&gt;#!/usr/bin/python&lt;/code&gt; first line in the source, as we want it to be added by the tangling process (which will also make the script executable).
&lt;/p&gt;
&lt;p&gt;
Once this is done, the script may be run :
&lt;/p&gt;
&lt;pre class=&quot;example&quot;&gt;$ python examples/helloworld.py 
Quel est vôtre nom ? François
J'espère que ça va bien aujourd'hui, cher François
&lt;/pre&gt;
&lt;p&gt;
Now, to add the colorized rendering in the lecture book, we do (here again, remove the spaces):
&lt;/p&gt;
&lt;pre class=&quot;src src-org&quot;&gt;&lt;span style=&quot;color: #b22222;&quot;&gt;# +BEGIN_latex&lt;/span&gt;
\inputminted{python}{examples/helloworld.py}
&lt;span style=&quot;color: #b22222;&quot;&gt;# +END_latex&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
And here it is, rendered by minted:
&lt;/p&gt;
&lt;pre class=&quot;src src-python&quot;&gt;&lt;span style=&quot;color: #b22222;&quot;&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span style=&quot;color: #b22222;&quot;&gt;# Ceci est un exemple d'affichage d'une chaîne accentuée&lt;/span&gt;

&lt;span style=&quot;color: #a0522d;&quot;&gt;name&lt;/span&gt; = &lt;span style=&quot;color: #7a378b;&quot;&gt;raw_input&lt;/span&gt;(&lt;span style=&quot;color: #8b2252;&quot;&gt;&quot;Quel est vôtre nom ? &quot;&lt;/span&gt;)

&lt;span style=&quot;color: #a020f0;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #8b2252;&quot;&gt;&quot;J'espère que ça va bien aujourd'hui, cher&quot;&lt;/span&gt;, name
&lt;/pre&gt;
&lt;p&gt;Here are links to : &lt;a href=&quot;http://www-public.telecom-sudparis.eu/~berger_o/org-examples/post-managint-org-babel-python-french-minted.org&quot;&gt;the source&lt;/a&gt;, &lt;a href=&quot;http://www-public.telecom-sudparis.eu/~berger_o/org-examples/post-managint-org-babel-python-french-minted.pdf&quot;&gt;the PDF result&lt;/a&gt;, and &lt;a href=&quot;http://www-public.telecom-sudparis.eu/~berger_o/org-examples/examples/helloworld.py&quot;&gt;the generated Python program&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-03-29T10:44:43+00:00</dc:date>
	<dc:creator>Olivier Berger</dc:creator>
</item>
<item rdf:about="http://roland.entierement.nu/blog/2013/03/29/dernieres-nouvelles-avant-la-fin-du-mois.html">
	<title>Roland Mas: Dernières nouvelles avant la fin du mois</title>
	<link>http://roland.entierement.nu/blog/2013/03/29/dernieres-nouvelles-avant-la-fin-du-mois.html</link>
	<content:encoded>&lt;p&gt;Bon alors bon.  Y'a bien longtemps que je n'ai rien écrit en français
ici, ça manque.  Mes geekeries sont à peu près bien documentées en
anglais, mais contrairement aux rumeurs je fais aussi autre chose à
côté.&lt;/p&gt;

&lt;p&gt;Je fais du monoski, par exemple.  Et cette année, j'ai bien
l'impression d'être le dernier… j'ai beau entendre parler de gens qui
en font, pour la première saison depuis que je fais du mono, je n'ai
pas croisé un seul collègue en une semaine sur un grand domaine
skiable, malgré la neige abondante et le soleil radieux (surtout en
début de semaine).&lt;/p&gt;

&lt;p&gt;En parlant de soleil radieux : la tradition veut que les saisons du
ski et du barbecue s'enchaînent avec un délai de carence de quelques
jours au plus, mais là après la redescente en plaine ça traîne, et ça
reste bien humide.  Donc je prends les devants, et je décide &amp;amp; décrète
que je vais pas me laisser faire.  Les saucisses et côtelettes seront
peut-être cuites à la vapeur, mais ce sera de la vapeur au feu de
bois.  Les invités seront les bienvenus.&lt;/p&gt;

&lt;p&gt;Sur le front de la musique : côté rock chez
&lt;a href=&quot;http://eleven.entierement.nu/&quot;&gt;Eleven&lt;/a&gt;, on continue à répéter,
ajouter des chansons à notre répertoire, et faire des petites
apparitions publiques à gauche et à droite.  On a temporairement égaré
un guitariste (mais il va revenir un jour), et on continue de chercher
mollement un chanteur (ou une chanteuse).  Si jamais vous êtes dans la
région de Montpellier/Nîmes et que vous voulez vous lancer…&lt;/p&gt;

&lt;p&gt;Deuxième front musical : je me suis laissé embarquer dans un autre
groupe, mais cette fois c'est pour faire du tambour japonais (on dit
&lt;em&gt;taiko&lt;/em&gt; pour faire bien).  On est encore en phase de mise en place,
mais c'est déjà marrant.&lt;/p&gt;

&lt;p&gt;Bref, on s'occupe, quoi.&lt;/p&gt;</content:encoded>
	<dc:date>2013-03-29T10:00:02+00:00</dc:date>
</item>
<item rdf:about="http://tanguy.ortolo.eu/blog/article100/nouveau-planet-auto-hebergement">
	<title>Tanguy Ortolo: Nouvelle planète auto-hébergement</title>
	<link>http://tanguy.ortolo.eu/blog/article100/nouveau-planet-auto-hebergement</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://tanguy.ortolo.eu/blog/article99/planet-auto-hebergement&quot; title=&quot;Annonce du remplacement de l'ancien Planet&quot;&gt;Comme prévu&lt;/a&gt;, je viens de remplacer l'ancien &lt;a href=&quot;https://fr.wikipedia.org/wiki/Planet&quot;&gt;Planet&lt;/a&gt; auto-hébergement par une &lt;a href=&quot;http://planet.auto-hebergement.fr/&quot; title=&quot;Planète auto-hébergement, des blogs francophones sur l'auto-hébergement&quot;&gt;nouvelle version&lt;/a&gt; basée sur &lt;a href=&quot;http://intertwingly.net/code/venus/&quot; title=&quot;Planet Vénus, un simple agrégateur publique de flux&quot;&gt;Planet Venus&lt;/a&gt; sur mon propre serveur.&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://tango.freedesktop.org/&quot; title=&quot;Du projet Tango Desktop, domaine public&quot;&gt;&lt;img src=&quot;http://tanguy.ortolo.eu/blog/data/images/icons/planet-128.png&quot; alt=&quot;La Terre entourée d'un petit maillage de fibres optiques&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Vous pouvez donc maintenant venir découvrir la nouvelle &lt;a href=&quot;http://planet.auto-hebergement.fr/&quot; title=&quot;Planète auto-hébergement, des blogs francophones sur l'auto-hébergement&quot;&gt;Planète auto-hébergement&lt;/a&gt;, qui propose :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://planet.auto-hebergement.fr/&quot; title=&quot;Planète auto-hébergement, des blogs francophones sur l'auto-hébergement&quot;&gt;une vue Web&lt;/a&gt; des articles récents des blogs affiliés ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://planet.auto-hebergement.fr/atom.xml&quot; title=&quot;Flux de syndication Atom de la Planète auto-hébergement&quot;&gt;des flux de syndication — Atom&lt;/a&gt; et &lt;a href=&quot;http://planet.auto-hebergement.fr/rss.xml&quot; title=&quot;Flux de syndication RSS de la Planète auto-hébergement&quot;&gt;RSS&lt;/a&gt; — pour suivre les nouveautés ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://planet.auto-hebergement.fr/opml.xml&quot; title=&quot;Liste des blogs affiliés à la Planète auto-hébergement&quot;&gt;une liste — OPML — des blogs affiliés&lt;/a&gt; pour les suivre individuellement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si vous tenez un blog ou vous parlez d'auto-hébergement, il n'est pas trop tard pour me l'indiquer !&lt;/p&gt;

&lt;p&gt;La configuration de &lt;a href=&quot;http://intertwingly.net/code/venus/&quot; title=&quot;Planet Vénus, un simple agrégateur publique de flux&quot;&gt;Planet Venus&lt;/a&gt; est intéressante, et il faudra sans doute que je rédige un article synthétisant mon expérience avec ce logiciel, mais j'attends d'abord que les débats actuels se calment un peu pour pouvoir finaliser un autre projet de Planète Catholique…&lt;/p&gt;</content:encoded>
	<dc:date>2013-03-28T12:17:00+00:00</dc:date>
	<dc:creator>Tanguy</dc:creator>
</item>
<item rdf:about="http://www-public.telecom-sudparis.eu/~berger_o/weblog/?p=1046">
	<title>Olivier Berger (pro): Conférence “L’économie du logiciel libre et la percée d’OpenStack dans le cloud” le 27/03 à Évry</title>
	<link>http://www-public.telecom-sudparis.eu/~berger_o/weblog/2013/03/18/conference-leconomie-du-logiciel-libre-et-la-percee-dopenstack-dans-le-cloud-le-2703-a-evry/</link>
	<content:encoded>&lt;p&gt;L’association Minet organise une conférence le 27/03 dans les locaux de Télécom SudParis et Télécom École de Management à Évry, qui promet d’être intéressante.&lt;/p&gt;
&lt;p&gt;Elle portera à la fois sur l’économie du logiciel libre et sur l’essort d’OpenStack dans le cloud.&lt;/p&gt;
&lt;p&gt;N’hésitez pas à venir nombreux sur le campus pour écouter les interventions de Jonathan Le Lous, Julien Brichard et Raphaël Ferreira, et rencontrer votre serviteur &lt;img src=&quot;http://www-public.telecom-sudparis.eu/~berger_o/weblog/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Plus de détails &lt;a href=&quot;http://conference.minet.net/2013&quot;&gt;sur le site de Minet&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-03-18T12:49:40+00:00</dc:date>
	<dc:creator>Olivier Berger</dc:creator>
</item>
<item rdf:about="http://france.debian.net/posts/2013/Annonce_SL_2013/">
	<title>Debian France: Debian France aux Solutions Linux/Open Source 2013</title>
	<link>http://france.debian.net/posts/2013/Annonce_SL_2013/</link>
	<content:encoded>&lt;h1&gt;Stand Debian France aux Solutions Linux/Open Source 2013&lt;/h1&gt;

&lt;p&gt;Le salon &lt;a href=&quot;http://www.solutionslinux.fr/&quot;&gt;Solutions Linux/Open Source&lt;/a&gt; aura lieu
les 28 et 29 mai 2013, au &lt;a href=&quot;http://www.openstreetmap.org/?mlat=48.8927&amp;amp;mlon=2.2395&amp;amp;zoom=15&quot;&gt;CNIT à La
Défense&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ce salon, essentiellement destiné aux professionnels, comporte comme chaque
année un « village associatif » qui regroupe différentes associations du monde
du logiciel libre. Debian France y tiendra un stand, où vous pourrez :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vous informer sur le système d'exploitation et la communauté Debian ;&lt;/li&gt;
&lt;li&gt;acheter des accessoires pour afficher votre attachement à Debian : polos,
autocollants…&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;img src=&quot;http://france.debian.net/blog/../posts/2013/Annonce_SL_2013/stand_2011.jpg&quot; alt=&quot;Stand Debian France aux SL 2011&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Si vous souhaitez aider, &lt;a href=&quot;http://wiki.debian.org/DebianEvents/fr/2013/SL&quot;&gt;nous cherchons quelques
volontaires&lt;/a&gt; pour tenir le
stand.&lt;/p&gt;

&lt;p&gt;Pour plus d'informations :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.solutionslinux.fr/&quot;&gt;Solutions Linux/Open Source&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.debian.org/DebianEvents/fr/2013/SL&quot;&gt;stand Debian France&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://france.debian.net/&quot;&gt;Debian France&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://france.debian.net/mailman/listinfo/asso&quot;&gt;liste de distribution&lt;/a&gt; ;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;irc://irc.oftc.net/#debian-france&quot;&gt;salon IRC&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
	<dc:date>2013-03-16T18:41:41+00:00</dc:date>
</item>
<item rdf:about="http://fgallaire.flext.net/?p=1903">
	<title>Florent Gallaire: La syntaxe des sets en Python</title>
	<link>http://fgallaire.flext.net/la-syntaxe-des-sets-en-python/</link>
	<content:encoded>&lt;p&gt;Pour comprendre la génèse de la syntaxe des sets, il faut étudier celle des types conteneurs historiques de Python qui sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les listes, délimitées par les crochets &lt;code&gt;[&lt;/code&gt; et &lt;code&gt;]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;les tuples, délimités par les parenthèses &lt;code&gt;(&lt;/code&gt; et &lt;code&gt;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;les dictionnaires, délimités par les accolades &lt;code&gt;{&lt;/code&gt; et &lt;code&gt;}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ces types conteneurs sont donc dotés d’une syntaxe légère et facilement utilisable :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; l = [1, 2, 3]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; l&lt;br /&gt;
[1, 2, 3]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; t = (1, 2, 3)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; t&lt;br /&gt;
(1, 2, 3)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; d = {1: '1', 2: '2', 3: '3'}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; d&lt;br /&gt;
{1: '1', 2: '2', 3: '3'}&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Les tuples, qui sont en fait des listes immutables et que l’on ne peut donc pas modifier, sont souvent oubliés car assez peu utilisés, en tout cas de manière consciente. En effet, une simple énumération sans syntaxe spécifique est en fait un tuple :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; e = 1, 2, 3&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; e&lt;br /&gt;
(1, 2, 3)&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Si l’on peut donc dire que globalement, les listes et les dictionnaires répondent à la grande majorité des besoins des programmeurs, un quatrième type conteneur s’est lentement mais sûrement fait une place au soleil des pythonistes : les sets.&lt;/p&gt;
&lt;p&gt;Un set est un ensemble, c’est-à-dire une collection non ordonnée d’éléments uniques, ce qui se révèle très pratique dans beaucoup d’usages courants. Ce nouveau type conteneur étant fourni en deux saveurs, l’une mutable (comme les listes), et l’autre immutable (comme les tuples).&lt;/p&gt;
&lt;p&gt;D’abord &lt;a href=&quot;http://www.python.org/getit/releases/2.3/highlights/&quot; target=&quot;_blank&quot;&gt;introduits dans Python 2.3&lt;/a&gt; sous la forme d’un nouveau module &lt;code&gt;sets&lt;/code&gt; ajouté à la bibliothèque standard. Il est ensuite devenu un type &lt;em&gt;built-in&lt;/em&gt; dans &lt;a href=&quot;http://docs.python.org/2/whatsnew/2.4.html#pep-218-built-in-set-objects&quot; target=&quot;_blank&quot;&gt;Python 2.4&lt;/a&gt;, ce qui représentait une amélioration syntaxique non négligeable. Plus besoin d’écrire :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import sets&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; s_mutable = sets.Set([1, 2, 3])&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; s_immutable = sets.ImmutableSet([1, 2, 3])&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;On pouvait dorénavant se contenter de :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; s_mutable = set([1,2,3])&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; s_immutable = frozenset([1,2,3])&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Et de bénéficier en plus d’une implémentation du type &lt;code&gt;set&lt;/code&gt; en C et non plus en Python, avec la belle augmentation de performance qui va avec.&lt;/p&gt;
&lt;p&gt;L’intégration des sets mutables (les plus utiles) dans le core du langage Python, au même niveau que les tuples, les listes et les dictionnaires, se heurtait encore à une limitation syntaxique : il fallait écrire &lt;code&gt;set([1, 2, 3])&lt;/code&gt;. En effet, il n’y a que trois signes de ponctuation &lt;a href=&quot;http://fr.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#Table_des_128_caract.C3.A8res_ASCII&quot; target=&quot;_blank&quot;&gt;ASCII 7 bits&lt;/a&gt; fonctionnant par paire et facilement accessibles sur un clavier, les parenthèse, les crochets et les accolades, qui comme on l’a vu sont déjà utilisés respectivement par les tuples, les listes et les dictionnaires.&lt;/p&gt;
&lt;p&gt;Mais que pouvait-on alors faire pour mieux intégrer syntaxiquement les sets à Python ? C’est dans &lt;a href=&quot;http://docs.python.org/3.0/whatsnew/3.0.html&quot; target=&quot;_blank&quot;&gt;Python 3.0&lt;/a&gt; que la solution a été trouvée : si les tuples et les listes sont des énumérations que l’on ne pourrait distinguer des sets, les dictionnaires sont eux bien différents, et l’on peut donc utiliser les accolades &lt;code&gt;{&lt;/code&gt; et &lt;code&gt;}&lt;/code&gt; pour une énumération sans risque de confusion :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; s = {1, 2, 3}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; s&lt;br /&gt;
{1, 2, 3}&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Il reste cependant une petite exception qui rend cette solution syntaxique imparfaite, et potentiellement génératrice d’erreurs ou d’incompréhensions, c’est le cas de l’ensemble vide. En effet, &lt;code&gt;{}&lt;/code&gt; ne peut pas représenter à la fois le dictionnaire vide &lt;strong&gt;et&lt;/strong&gt; le set vide :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; s = {}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; s&lt;br /&gt;
{}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; isinstance(s, set)&lt;br /&gt;
False&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; isinstance(s, dict)&lt;br /&gt;
True&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;De manière logique et rétrocompatible, &lt;code&gt;{}&lt;/code&gt; représente donc toujours le dictionnaire vide, et c’est &lt;code&gt;set()&lt;/code&gt; qui permet de créer un set vide :&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; s = set()&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; s&lt;br /&gt;
set()&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; s.add(1)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; s&lt;br /&gt;
{1}&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Enfin, ce sucre syntaxique de Python 3 a été backporté dans &lt;a href=&quot;http://docs.python.org/dev/whatsnew/2.7.html&quot; target=&quot;_blank&quot;&gt;Python 2.7&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p class=&quot;wp-flattr-button&quot;&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://fgallaire.flext.net/?flattrss_redirect&amp;amp;id=1903&amp;amp;md5=14783a5cb30000b59835ea8a9331a9ce&quot; target=&quot;_blank&quot; title=&quot;Flattr&quot;&gt;&lt;img src=&quot;http://fgallaire.flext.net/wp-content/plugins/flattr/img/flattr-badge-large.png&quot; alt=&quot;flattr this!&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-03-14T01:45:27+00:00</dc:date>
	<dc:creator>fgallaire</dc:creator>
</item>
<item rdf:about="http://www.luffy.cx/fr/blog/2013-lldpd-0.7.1.html">
	<title>Vincent Bernat: lldpd 0.7.1</title>
	<link>http://vincent.bernat.im/fr/blog/2013-lldpd-0.7.1.html</link>
	<content:encoded>&lt;p&gt;Il y a quelques semaines, une nouvelle version de &lt;a href=&quot;http://vincentbernat.github.com/lldpd&quot; title=&quot;lldpd, an implementation of 802.1AB&quot;&gt;lldpd&lt;/a&gt;, une
implémentation de 802.&lt;span class=&quot;caps&quot;&gt;1AB&lt;/span&gt; (norme aussi connue sous le nom &lt;abbr title=&quot;Link Layer Discovery Protocol&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LLDP&lt;/span&gt;&lt;/abbr&gt;), a été publiée.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Link_Layer_Discovery_Protocol&quot; title=&quot;Link Layer Discovery Protocol&quot;&gt;&lt;abbr title=&quot;Link Layer Discovery Protocol&quot;&gt;&lt;abbr title=&quot;Link Layer Discovery Protocol&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LLDP&lt;/span&gt;&lt;/abbr&gt;&lt;/abbr&gt;&lt;/a&gt; est un protocole destiné à remplacer d’autres protocoles de
niveau 2 tels que &lt;span class=&quot;caps&quot;&gt;EDP&lt;/span&gt; et &lt;span class=&quot;caps&quot;&gt;CDP&lt;/span&gt;. Son but est de fournir un mécanisme
standard pour envoyer des informations aux périphériques réseau voisins.&lt;/p&gt;
&lt;p&gt;De manière plus pragmatique, &lt;abbr title=&quot;Link Layer Discovery Protocol&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LLDP&lt;/span&gt;&lt;/abbr&gt; permet de savoir exactement sur quel
port est branché un serveur (et réciproquement). Pour illustrer son
usage, j’ai réalisé quelques images à la &lt;a href=&quot;http://xkcd.com&quot; title=&quot;xkcd&quot;&gt;xkcd&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://d1g3mdmxf8zbo9.cloudfront.net/images/why-lldp.png&quot; alt=&quot;Exemple d'utilisation de LLDP&quot; title=&quot;Pourquoi utiliser LLDP ?&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Pour plus d’informations sur &lt;em&gt;lldpd&lt;/em&gt;, rendez-vous sur le
&lt;a href=&quot;http://vincentbernat.github.com/lldpd&quot; title=&quot;lldpd, an implementation of 802.1AB&quot;&gt;nouveau site web qui lui est dédié&lt;/a&gt;. Ce journal est destiné à
présenter les grands &lt;strong&gt;changements techniques&lt;/strong&gt; qui ont affectés &lt;em&gt;lldpd&lt;/em&gt;
depuis la précédente version majeure sortie il y a un an.&lt;/p&gt;
&lt;div class=&quot;toc&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#version-journal-des-modifications&quot;&gt;Version &lt;span class=&quot;amp&quot;&gt;&amp;amp;&lt;/span&gt; journal des modifications&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#version-automatique&quot;&gt;Version automatique&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#construction-du-journal-des-modifications&quot;&gt;Construction du journal des modifications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#cur&quot;&gt;Cœur&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#c99&quot;&gt;C99&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#journaux&quot;&gt;Journaux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#libevent&quot;&gt;libevent&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#client&quot;&gt;Client&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#serialisation&quot;&gt;Sérialisation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#bibliotheque&quot;&gt;Bibliothèque&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#cli&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CLI&lt;/span&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#analyse-syntaxique-completion&quot;&gt;Analyse syntaxique &lt;span class=&quot;amp&quot;&gt;&amp;amp;&lt;/span&gt; complétion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#readline&quot;&gt;Readline&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#changements-specifiques-a-un-os&quot;&gt;Changements spécifiques à un &lt;span class=&quot;caps&quot;&gt;OS&lt;/span&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#netlink-sous-linux&quot;&gt;Netlink sous Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#support-des-bsd&quot;&gt;Support des &lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#support-dos-x&quot;&gt;Support d’&lt;span class=&quot;caps&quot;&gt;OS&lt;/span&gt; X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#support-de-upstart-et-systemd&quot;&gt;Support de upstart et systemd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fichiers-dentete-specifique-a-linux&quot;&gt;Fichiers d’entête spécifique à Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1 id=&quot;version-journal-des-modifications&quot;&gt;Version &lt;span class=&quot;amp&quot;&gt;&amp;amp;&lt;/span&gt; journal des modifications&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class=&quot;caps&quot;&gt;MISE&lt;/span&gt; À &lt;span class=&quot;caps&quot;&gt;JOUR&lt;/span&gt; :&lt;/strong&gt; &lt;a href=&quot;http://www.hadrons.org/~guillem/&quot; title=&quot;Guillem Jover's Home Page&quot;&gt;Guillem Jover&lt;/a&gt; m’a indiqué comment il avait fait
pour &lt;a href=&quot;http://libbsd.freedesktop.org/wiki/&quot; title=&quot;libbsd&quot;&gt;libbsd&lt;/a&gt; :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sauvegarder la version issue de &lt;em&gt;git&lt;/em&gt; dans &lt;code&gt;.dist-version&lt;/code&gt; et la
    réutiliser si elle existe. Cela permet de pouvoir reconstruire le
    &lt;code&gt;./configure&lt;/code&gt; à partir de l’archive publiée sans perdre la
    version, ce qui permet de répondre à la
    &lt;a href=&quot;https://www.mirbsd.org/permalinks/wlog-10_e20130220-tg.htm#e20130220-tg_wlog-10&quot; title=&quot;GNU autotools generated files&quot;&gt;critique de Thorsten Glaser&lt;/a&gt; sans perdre en souplesse.&lt;/li&gt;
&lt;li&gt;Inclure le fichier &lt;code&gt;CHANGELOG&lt;/code&gt; dans &lt;code&gt;DISTCLEANFILES&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;C’est une meilleure façon de faire que j’ai donc
&lt;a href=&quot;https://github.com/vincentbernat/lldpd/commit/a888bea6f08687177330c2d95569864009e769d6&quot; title=&quot;build: use the same way as libbsd for version and changelog&quot;&gt;adoptée&lt;/a&gt;. Les deux sections suivantes sont donc en partie
obsolètes dans leur réalisation technique.&lt;/p&gt;
&lt;h2 id=&quot;version-automatique&quot;&gt;Version automatique&lt;/h2&gt;
&lt;p&gt;Le numéro de version était précédemment en dur dans le fichier
&lt;code&gt;configure.ac&lt;/code&gt;. Il fallait donc penser à modifier la ligne
correspondante avant chaque publication :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;err&quot;&gt;AC_INIT([lldpd], [0.5.7], [bernat@luffy.cx])&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Cette information est déjà présente dans l’arbre &lt;em&gt;git&lt;/em&gt; et il est donc
possible de l’en extraire automatiquement de manière assez simple :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;err&quot;&gt;AC_INIT([lldpd],&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;        [m4_esyscmd_s([git describe --tags --always --match [0-9]* 2&amp;gt; /dev/null || date +%F])],&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt;        [bernat@luffy.cx])&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Si &lt;code&gt;HEAD&lt;/code&gt; est étiqueté &lt;code&gt;0.7.1&lt;/code&gt;, ce sera exactement ce numéro de
version qui sera utilisé. Sinon, l’étiquette la plus proche est
utilisée suivie du nombre de commits depuis celle-ci ainsi que du hash
courant. Par exemple : &lt;code&gt;0.7.1-29-g2909519&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pour que cela fonctionne, il est donc nécessaire de générer le
&lt;code&gt;./configure&lt;/code&gt; depuis l’arbre &lt;em&gt;git&lt;/em&gt; et non depuis l’archive finale qui
ne contient plus cette information.&lt;/p&gt;
&lt;h2 id=&quot;construction-du-journal-des-modifications&quot;&gt;Construction du journal des modifications&lt;/h2&gt;
&lt;p&gt;La construction automatique du journal des modifications à partir de
l’arbre &lt;em&gt;git&lt;/em&gt; est une pratique assez répandue. Il y a toutefois
quelques subtilités pour l’intégrer correctement dans le processus de
publication. Voici ma tentative avec l’aide de &lt;code&gt;automake&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nv&quot;&gt;dist_doc_DATA&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.md &lt;span class=&quot;caps&quot;&gt;NEWS&lt;/span&gt; ChangeLog

.&lt;span class=&quot;caps&quot;&gt;PHONY&lt;/span&gt;: &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;distdir&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;/ChangeLog
dist-hook: &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;distdir&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;/ChangeLog
&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;distdir&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;/ChangeLog:
        &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;AM_V_GEN&lt;span class=&quot;k&quot;&gt;)if &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt; -d &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;top_srcdir&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;/.git; &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
          &lt;span class=&quot;nv&quot;&gt;prev&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$$&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;git describe --tags --always --match &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;0-9&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;* 2&amp;gt; /dev/null&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; ; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
          &lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;tag in &lt;span class=&quot;nv&quot;&gt;$$&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;git tag | grep -E &lt;span class=&quot;s1&quot;&gt;'^[0-9]+(\.[0-9]+){1,}$$'&lt;/span&gt; | sort -rn&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; x&lt;span class=&quot;s2&quot;&gt;&quot;$$prev&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; x &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;; &lt;span class=&quot;k&quot;&gt;then &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;prev&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$$&lt;/span&gt;tag ; &lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt; ; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; x&lt;span class=&quot;s2&quot;&gt;&quot;$$prev&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; x&lt;span class=&quot;s2&quot;&gt;&quot;$$tag&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;; &lt;span class=&quot;k&quot;&gt;then continue&lt;/span&gt;; &lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt; ; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
            &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;$$prev [$$(git log $$prev -1 --pretty=format:'%ai')]:&quot;&lt;/span&gt; ; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
            &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt; ; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
            git log --pretty&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;' - [%h] %s (%an)'&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$$&lt;/span&gt;tag..&lt;span class=&quot;nv&quot;&gt;$$&lt;/span&gt;prev ; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
            &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt; ; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
            &lt;span class=&quot;nv&quot;&gt;prev&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$$&lt;/span&gt;tag ; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
          &lt;span class=&quot;k&quot;&gt;done&lt;/span&gt; &amp;gt; &lt;span class=&quot;nv&quot;&gt;$@&lt;/span&gt; ; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;        else \&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;          touch $@ ; \&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;        fi&lt;/span&gt;
ChangeLog:
        touch &lt;span class=&quot;nv&quot;&gt;$@&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Les entrées sont groupées par version. Je maintiens manuellement un
résumé des modifications les plus importantes dans un fichier &lt;code&gt;NEWS&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id=&quot;cur&quot;&gt;Cœur&lt;/h1&gt;
&lt;h2 id=&quot;c99&quot;&gt;C99&lt;/h2&gt;
&lt;p&gt;J’ai récemment lu le livre &lt;a href=&quot;http://oreilly.com/shop/product/0636920025108.html?bB=g&quot; title=&quot;21st Century C chez O'Reilly&quot;&gt;21st Century C&lt;/a&gt; qui est globalement très
positif. J’ai depuis adopté
l’&lt;a href=&quot;http://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html&quot; title=&quot;Initialiser les membres d'une structure dans la documentation de GCC&quot;&gt;initialisation des membres d’une structure lors de la déclaration&lt;/a&gt;. Étant
donné qu’il s’agit également d’une extension de &lt;span class=&quot;caps&quot;&gt;GCC&lt;/span&gt; depuis longtemps,
cela ne représente pas un problème de compatibilité majeur.&lt;/p&gt;
&lt;p&gt;Sans cette fonctionnalité :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;netlink_req&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iovec&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iov&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sockaddr_nl&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;peer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;msghdr&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rtnl_msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iov&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iov&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;peer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;peer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;memset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rtnl_msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rtnl_msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hdr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_len&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NLMSG_LENGTH&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rtgenmsg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hdr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_type&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RTM_GETLINK&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hdr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_flags&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NLM_F_REQUEST&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NLM_F_DUMP&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hdr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_seq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hdr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_pid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;getpid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gen&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rtgen_family&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AF_PACKET&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iov&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iov_base&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iov&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iov_len&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hdr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;peer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nl_family&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AF_NETLINK&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;rtnl_msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg_iov&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iov&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;rtnl_msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg_iovlen&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;rtnl_msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg_name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;peer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;rtnl_msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg_namelen&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sockaddr_nl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Et avec cette fonctionnalité :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;netlink_req&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;req&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hdr&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_len&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NLMSG_LENGTH&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rtgenmsg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)),&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_type&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RTM_GETLINK&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_flags&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NLM_F_REQUEST&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NLM_F_DUMP&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_seq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_pid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;getpid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gen&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rtgen_family&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AF_PACKET&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iovec&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iov&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iov_base&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iov_len&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;hdr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nlmsg_len&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sockaddr_nl&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;peer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;nl_family&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AF_NETLINK&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;msghdr&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rtnl_msg&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg_iov&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iov&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg_iovlen&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg_name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;peer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg_namelen&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sockaddr_nl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h2 id=&quot;journaux&quot;&gt;Journaux&lt;/h2&gt;
&lt;p&gt;La journalisation de &lt;em&gt;lldpd&lt;/em&gt; était assez pauvre. Généralement, pour
répondre à un rapport de bug, je demandais à l’ateur d’ajouter
quelques &lt;code&gt;printf()&lt;/code&gt; par-ci, par-là. J’ai ajouté des appels à
&lt;code&gt;log_debug()&lt;/code&gt; à de nombreux endroits ainsi qu’une possibilité de
filtre. Par exemple, pour obtenir des informations détaillés sur la
découverte des interfaces, il est possible de lancer &lt;code&gt;lldpd&lt;/code&gt; avec les
arguments &lt;code&gt;-ddd -D interface&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;De plus, la sortie sur un terminal est faite en couleurs. Cela peut
paraître futile, mais il est beaucoup plus aisé de repérer rapidement
les erreurs et les avertissements de cette façon.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://d1g3mdmxf8zbo9.cloudfront.net/images/lldpd-logging.png&quot; alt=&quot;Sortie en couleurs de lldpd&quot; title=&quot;Exemple de sortie en couleurs de lldpd&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;libevent&quot;&gt;libevent&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;lldpd&lt;/em&gt; 0.5.7 utilisait sa propre boucle d’événements à base de
&lt;code&gt;select()&lt;/code&gt;. Cela ne posait pas de problèmes particuliers mais je ne
voulais pas étendre cette boucle pour aboutir à une boucle
d’événements complète alors qu’il existe des bibliothèques solides
dédiées à cet usage. J’ai donc remplacé celle-ci par &lt;a href=&quot;http://libevent.org/&quot; title=&quot;libevent, une bibliothèque événementielle&quot;&gt;libevent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La version minimale de &lt;em&gt;libevent&lt;/em&gt; requise est la 2.0.5. Le site
&lt;a href=&quot;http://upstream-tracker.org/versions/libevent.html&quot; title=&quot;Rapport de compatibilité de l'API de libevent&quot;&gt;Upstream Tracker&lt;/a&gt; permet de consulter les changements d’&lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt; et
d’&lt;span class=&quot;caps&quot;&gt;ABI&lt;/span&gt; d’une bibliothèque et donc de vérifier la version
nécessaire. Cette version de &lt;em&gt;libevent&lt;/em&gt; n’est pas disponible dans de
nombreuses distributions. Par exemple, Debian Squeeze et Ubuntu Lucid
n’ont que la version 1.4.13. Je tente également de maintenir la
compatibilité avec des distributions beaucoup plus anciennes, telles
que &lt;span class=&quot;caps&quot;&gt;RHEL&lt;/span&gt; 2, qui peuvent ne pas avoir &lt;em&gt;libevent&lt;/em&gt; du tout.&lt;/p&gt;
&lt;p&gt;Pour certains utilisateurs, compiler une bibliothèque tierce
préalablement à la compilation d’un logiciel est pénible. Aussi, j’ai
inclus le code source de &lt;em&gt;libevent&lt;/em&gt; dans &lt;em&gt;lldpd&lt;/em&gt; (en tant que
sous-module &lt;em&gt;git&lt;/em&gt;). Il n’est utilisé que si la version présente sur le
système n’est pas suffisamment récente.&lt;/p&gt;
&lt;p&gt;Jetez un œil à &lt;a href=&quot;https://github.com/vincentbernat/lldpd/blob/4c1a8c6152215b9c1320e04f6c811404f27f53c8/m4/libevent.m4&quot;&gt;&lt;code&gt;m4/libevent.m4&lt;/code&gt;&lt;/a&gt; et
&lt;a href=&quot;https://github.com/vincentbernat/lldpd/blob/0.7.1/src/daemon/Makefile.am&quot;&gt;&lt;code&gt;src/daemon/Makefile.am&lt;/code&gt;&lt;/a&gt; pour comprendre
comment est réalisée cette inclusion conditionnelle.&lt;/p&gt;
&lt;h1 id=&quot;client&quot;&gt;Client&lt;/h1&gt;
&lt;h2 id=&quot;serialisation&quot;&gt;Sérialisation&lt;/h2&gt;
&lt;p&gt;Afin d’afficher les voisins découverts par &lt;code&gt;lldpd&lt;/code&gt;, &lt;code&gt;lldpctl&lt;/code&gt;
communique avec ce dernier via une socket Unix. Chaque structure
devant être sérialisée était décrite avec une chaîne de
caractères. Par exemple :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;cp&quot;&gt;#define STRUCT_LLDPD_DOT3_MACPHY &quot;(bbww)&quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpd_dot3_macphy&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;u_int8_t&lt;/span&gt;                 &lt;span class=&quot;n&quot;&gt;autoneg_support&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;u_int8_t&lt;/span&gt;                 &lt;span class=&quot;n&quot;&gt;autoneg_enabled&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;u_int16_t&lt;/span&gt;                &lt;span class=&quot;n&quot;&gt;autoneg_advertised&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;u_int16_t&lt;/span&gt;                &lt;span class=&quot;n&quot;&gt;mau_type&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Je ne voulais pas utiliser de bibliothèques telles que
&lt;a href=&quot;http://code.google.com/p/protobuf/&quot; title=&quot;Protocol Buffers - Google data interchange format&quot;&gt;Protocol Buffers&lt;/a&gt; car elles nécessitent l’utilisation d’une structure
intermédiaire dans laquelle il aurait fallu copier les données.&lt;/p&gt;
&lt;p&gt;Toutefois, le processus de sérialisation de &lt;em&gt;lldpd&lt;/em&gt; ne permettait pas
de gérer les pointeurs vers d’autres structures, les listes ou les
références circulaires. J’ai donc écrit une version plus avancée
utilisant des annotations à l’aide de macros :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpd_chassis&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;TAILQ_ENTRY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lldpd_chassis&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c_entries&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;u_int16_t&lt;/span&gt;        &lt;span class=&quot;n&quot;&gt;c_index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;u_int8_t&lt;/span&gt;         &lt;span class=&quot;n&quot;&gt;c_protocol&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;u_int8_t&lt;/span&gt;         &lt;span class=&quot;n&quot;&gt;c_id_subtype&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt;            &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt;              &lt;span class=&quot;n&quot;&gt;c_id_len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt;            &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt;            &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c_descr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;u_int16_t&lt;/span&gt;        &lt;span class=&quot;n&quot;&gt;c_cap_available&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;u_int16_t&lt;/span&gt;        &lt;span class=&quot;n&quot;&gt;c_cap_enabled&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;u_int16_t&lt;/span&gt;        &lt;span class=&quot;n&quot;&gt;c_ttl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;TAILQ_HEAD&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpd_mgmt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c_mgmt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MARSHAL_BEGIN&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lldpd_chassis&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MARSHAL_TQE&lt;/span&gt;  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lldpd_chassis&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c_entries&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MARSHAL_FSTR&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lldpd_chassis&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c_id_len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MARSHAL_STR&lt;/span&gt;  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lldpd_chassis&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MARSHAL_STR&lt;/span&gt;  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lldpd_chassis&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c_descr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MARSHAL_SUBTQ&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lldpd_chassis&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpd_mgmt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c_mgmt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MARSHAL_END&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Seuls les pointeurs doivent être annotés. Le reste de la structure est
simplement copiée avec &lt;code&gt;memcpy()&lt;/code&gt;&lt;sup id=&quot;fnref:uint16t&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn:uint16t&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. Je suis encore assez
partagé sur le résultat et il est sans doute possible d’améliorer les
choses. En vrac : mettre les annotations directement dans la
structure, utiliser un &lt;a href=&quot;https://bitbucket.org/eliben/pycparser&quot; title=&quot;pycparser, un analyseur syntaxique du C écrit en Python&quot;&gt;parseur de code C&lt;/a&gt; ou utiliser la
sortie &lt;span class=&quot;caps&quot;&gt;AST&lt;/span&gt; de &lt;span class=&quot;caps&quot;&gt;LLVM&lt;/span&gt;…&lt;/p&gt;
&lt;h2 id=&quot;bibliotheque&quot;&gt;Bibliothèque&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;lldpd&lt;/em&gt; 0.5.7 disposait de deux points d’entrée pour interagir avec
&lt;code&gt;lldpd&lt;/code&gt; :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;À travers le support &lt;span class=&quot;caps&quot;&gt;SNMP&lt;/span&gt;. Seules les informations contenues dans
    la &lt;a href=&quot;http://www.ieee802.org/1/files/public/MIBs/LLDP-MIB-200505060000Z.txt&quot; title=&quot;LLDP-MIB&quot;&gt;&lt;abbr title=&quot;Link Layer Discovery Protocol&quot;&gt;&lt;abbr title=&quot;Link Layer Discovery Protocol&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LLDP&lt;/span&gt;&lt;/abbr&gt;&lt;/abbr&gt;-&lt;span class=&quot;caps&quot;&gt;MIB&lt;/span&gt;&lt;/a&gt; sont alors exportées. Les aspects spécifiques à
    l’implémentation ne sont donc pas disponibles. De plus, le support
    est actuellement en lecture seulement.&lt;/li&gt;
&lt;li&gt;À travers &lt;code&gt;lldpctl&lt;/code&gt;. Grâce à une contribution de Andreas
    Hofmeister, la sortie peut être produite sous forme d’un document &lt;span class=&quot;caps&quot;&gt;XML&lt;/span&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;L’intégration de &lt;em&gt;lldpd&lt;/em&gt; dans une pile réseau était donc limitée à l’un
de ces deux canaux. À titre d’exemple, il est possible de regarder
&lt;a href=&quot;http://git.vyatta.com/git/?p=vyatta-lldp.git;a=summary&quot; title=&quot;Intégration de lldpd dans Vyatta&quot;&gt;comment Vyatta a effectué cette intégration&lt;/a&gt;
à l’aide de la seconde solution.&lt;/p&gt;
&lt;p&gt;Afin de fournir une solution plus robuste, une bibliothèque partagée,
&lt;code&gt;liblldpctl&lt;/code&gt;, existe désormais. J’ai suivi les grandes directions
suivantes dans sa conception&lt;sup id=&quot;fnref:library&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn:library&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une convention de nommage uniforme. Tous les symboles exportés sont
   préfixés par &lt;code&gt;lldpctl_&lt;/code&gt;. Pas de pollution de l’espace de nommage.&lt;/li&gt;
&lt;li&gt;Une convention des valeurs de retour uniforme. En cas d’erreurs, les
   fonctions retournant des pointeurs retournent &lt;code&gt;NULL&lt;/code&gt;, celles
   retournant des entiers retournent &lt;code&gt;-1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Pas de variables globales. Réentrant et possibilité d’utiliser des
   &lt;em&gt;threads&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Un &lt;a href=&quot;https://github.com/vincentbernat/lldpd/blob/0.7.1/src/lib/lldpctl.h&quot; title=&quot;lldpctl.h&quot;&gt;seul fichier d’entête&lt;/a&gt; bien documenté.&lt;/li&gt;
&lt;li&gt;Une &lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt; asynchrone pour les entrées/sorties. La bibliothèque
   délègue ces dernières à l’utilisateur en lui demandant de fournir
   les fonctions nécessaires. Ces dernières peuvent retarder leurs
   effets. Dans ce cas, l’utilisateur doit appeler des fonctions
   particulières de la bibliothèque quand les données deviennent
   disponibles. L’intégration dans une boucle d’évènement existente
   est alors triviale. Une fine couche synchrone est également fournie.&lt;/li&gt;
&lt;li&gt;Des types opaques avec des fonctions d’accès.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L’accès aux informations est fait à travers un « atome » qui est un
conteneur opaque de type &lt;code&gt;lldpctl_atom_t&lt;/code&gt;. D’un atome, il est possible
d’extraire des entiers, des chaînes de caractères, des tampons ou
d’autres atomes. La liste des ports est un atome, chaque port de cette
liste est également un atome, la liste des &lt;span class=&quot;caps&quot;&gt;VLAN&lt;/span&gt; présents sur ce port
est un atome ainsi que chaque &lt;span class=&quot;caps&quot;&gt;VLAN&lt;/span&gt; de cette liste. Le nom d’un &lt;span class=&quot;caps&quot;&gt;VLAN&lt;/span&gt;
est par contre une chaîne de caractères dont la validité est limitée
par la validité de l’atome englobant. Accéder à une propriété d’un
atome se fait via des fonctions génériques telles que
&lt;code&gt;lldpctl_atom_get_str()&lt;/code&gt; en spécifiant la clef correspondant à la
propriété voulue. Par exemple, voici comment afficher le nom et
l’identifiant de tous les &lt;span class=&quot;caps&quot;&gt;VLAN&lt;/span&gt; attachés à un port :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;vlans&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpctl_atom_get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpctl_k_port_vlans&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;lldpctl_atom_foreach&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vlans&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vlan&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;vid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpctl_atom_get_int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vlan&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                               &lt;span class=&quot;n&quot;&gt;lldpctl_k_vlan_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpctl_atom_get_str&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vlan&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                                &lt;span class=&quot;n&quot;&gt;lldpctl_k_vlan_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;span class=&quot;caps&quot;&gt;VLAN&lt;/span&gt; %d: %s&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;lldpctl_atom_dec_ref&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vlans&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;En interne, un atome est typé et maintient un compteur des
références. La taille de l’&lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt; est limitée grâce à ce
concept. Actuellement, il est possible d’extraire plus d’une centaine
de propriétés de &lt;code&gt;lldpd&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;À terme, la bibliothèque doit également permettre la configuration
complète de &lt;code&gt;lldpd&lt;/code&gt; plutôt que d’utiliser des paramètres en ligne de
commande. Cette bibliothèque ne remplace pas &lt;code&gt;lldpctl&lt;/code&gt; qui est
toujours le client à utiliser dans la majeure partie des cas.&lt;/p&gt;
&lt;h2 id=&quot;cli&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CLI&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;La possibilité de configurer &lt;code&gt;lldpd&lt;/code&gt; via un fichier de configuration
était demandé depuis bien longtemps. Je ne voulais toutefois pas
inclure un analyseur syntaxique pour limiter l’inflation du nombre de
lignes de code. De plus, il était déjà possible de configurer divers
aspects liés à &lt;abbr title=&quot;Link Layer Discovery Protocol&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LLDP&lt;/span&gt;&lt;/abbr&gt;-&lt;span class=&quot;caps&quot;&gt;MED&lt;/span&gt; via &lt;code&gt;lldpctl&lt;/code&gt;. Il m’a donc semblé naturel de
continuer dans cette voie : permettre à &lt;code&gt;lldpctl&lt;/code&gt; de lire un fichier
de configuration et d’en transmettre les effets à &lt;code&gt;lldpd&lt;/code&gt;. En bonus,
les instructions de configuration pourraient être entrées de manière
interactive à la façon d’un équipement réseau.&lt;/p&gt;
&lt;h3 id=&quot;analyse-syntaxique-completion&quot;&gt;Analyse syntaxique &lt;span class=&quot;amp&quot;&gt;&amp;amp;&lt;/span&gt; complétion&lt;/h3&gt;
&lt;p&gt;Un analyseur syntaxique généré par &lt;span class=&quot;caps&quot;&gt;YACC&lt;/span&gt; limite les possibilités telles
que la complétion. Aussi, les commandes sont définies par un arbre
dont chaque nœud accepte un mot. Un nœud est défini ainsi :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cmd_node&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;commands_new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cmd_node&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;validate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cmd_env&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;execute&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpctl_conn_t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;writer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cmd_env&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;On y trouve :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le nœud parent,&lt;/li&gt;
&lt;li&gt;optionnellement, le mot accepté,&lt;/li&gt;
&lt;li&gt;une description pour l’aide,&lt;/li&gt;
&lt;li&gt;optionnellement, une fonction de validation,&lt;/li&gt;
&lt;li&gt;optionnellement, une fonction qui sera exécutée si le mot est validé.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le parcours de l’arbre est effectué en maintenant un environnement
contenant à la fois des associations clef-valeur arbitraires ainsi
qu’une pile des positions rencontrées dans l’arbre. La fonction de
validation peut s’aider de l’environnement pour juger de la validité
d’un mot (le mot clef &lt;code&gt;foo&lt;/code&gt; ne sera accepté que s’il n’a pas déjà été
rencontré, par exemple). La fonction d’exécution peut enregistrer la
valeur courante dans une association mais également remonter dans
l’arbre avant de continuer l’exécution.&lt;/p&gt;
&lt;p&gt;À titre d’exemple, voici comment les nœuds permettant de configurer la
localisation par coordonnées géographiques sont définis :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;cm&quot;&gt;/* Le nœud principal */&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cmd_node&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;configure_medloc_coord&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;commands_new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;configure_medlocation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;&quot;coordinate&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&lt;span class=&quot;caps&quot;&gt;MED&lt;/span&gt; location coordinate configuration&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;cm&quot;&gt;/* Le nœud de sortie&lt;/span&gt;
&lt;span class=&quot;cm&quot;&gt;   La fonction de validation vérifie si l'utilisateur&lt;/span&gt;
&lt;span class=&quot;cm&quot;&gt;   a fourni latitude et longitude. */&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;commands_new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;configure_medloc_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NEWLINE&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Configure &lt;span class=&quot;caps&quot;&gt;MED&lt;/span&gt; location coordinates&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;cmd_check_env&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cmd_medlocation_coordinate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;&quot;latitude,longitude&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;cm&quot;&gt;/* Stockage de la valeur de la latitude. On remonte ensuite&lt;/span&gt;
&lt;span class=&quot;cm&quot;&gt;   de deux positions en arrière. La latitude ne peut être&lt;/span&gt;
&lt;span class=&quot;cm&quot;&gt;   entrée qu'une fois. */&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;commands_new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;commands_new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;configure_medloc_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;latitude&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Specify latitude&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;cmd_check_no_env&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;latitude&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Latitude as xx.yyyyN or xx.yyyyS&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cmd_store_env_value_and_pop2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;latitude&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;cm&quot;&gt;/* De même pour la longitude */&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;commands_new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;commands_new&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;configure_medloc_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;longitude&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Specify longitude&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;cmd_check_no_env&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;longitude&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Longitude as xx.yyyyE or xx.yyyyW&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cmd_store_env_value_and_pop2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;longitude&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Les définitions sont encore un peu verbeuses mais ce système semble
être un bon équilibre entre puissance et simplicité. Il couvre tous
les cas nécessaires.&lt;/p&gt;
&lt;h3 id=&quot;readline&quot;&gt;Readline&lt;/h3&gt;
&lt;p&gt;Face à une interface en ligne de commande, l’utilisateur s’attend
généralement à disposer d’un historique, d’une aide en ligne et de la
complétion. La bibliothèque la plus souvent utilisée pour cet usage
est la &lt;a href=&quot;http://www.gnu.org/software/readline/&quot; title=&quot;The GNU Readline Library&quot;&gt;bibliothèque &lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt; Readline&lt;/a&gt;. Toutefois,
en raison de sa licence (&lt;abbr title=&quot;GNU General Public License&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GPL&lt;/span&gt;&lt;/abbr&gt;), j’ai d’abord cherché une alternative.
Il en existe de nombreuses :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libedit/&quot; title=&quot;NetBSD libedit&quot;&gt;NetBSD Editline library&lt;/a&gt; (&lt;code&gt;libedit&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://thrysoee.dk/editline/&quot; title=&quot;Autotool port of libedit&quot;&gt;Autotool port of the NetBSD Editline library&lt;/a&gt; (encore &lt;code&gt;libedit&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://packages.qa.debian.org/e/editline.html&quot;&gt;Debian version of the Editline library&lt;/a&gt; (&lt;code&gt;libeditline&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/antirez/linenoise&quot; title=&quot;linenoise, a minimal readline replacement&quot;&gt;linenoise&lt;/a&gt;, une bibliothèque minimalistique.&lt;/li&gt;
&lt;li&gt;Beaucoup d’autres.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les trois premières bibliothèques supportent la même &lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt; que &lt;em&gt;&lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt;
Readline&lt;/em&gt;. Elles disposent en sus d’une &lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt; commune native. Cette
dernière gère également l’analyse lexicale. J’ai donc en premier lieu
adopté cette &lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt;&lt;sup id=&quot;fnref:libeditapi&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn:libeditapi&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Malheureusement, j’ai remarqué par la suite que ces bibliothèques ne
sont pas beaucoup répandues dans le monde Linux. En utilisant l’&lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt;
native, il n’est pas possible de se rabattre sur la &lt;em&gt;&lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt;
Readline&lt;/em&gt;. J’ai donc changé mon fusil d’épaule et opté pour l’&lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt; de
la &lt;em&gt;&lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt; Readline&lt;/em&gt;. Une
&lt;a href=&quot;http://www.gnu.org/software/autoconf-archive/ax_lib_readline.html&quot; title=&quot;ax_lib_readline in autoconf archive&quot;&gt;macro issue de l’archive Autoconf&lt;/a&gt; (légèrement
modifiée) règle les disparités en ce qui concerne la compilation et la liaison.&lt;/p&gt;
&lt;p&gt;L’absence d’analyseur lexical intégré m’a obligé à écrire le
mien. L’&lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt; est également assez mal documentée et il est difficile de
savoir quels symboles sont disponibles dans quelle version. Je me suis
limité aux symboles suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;readline()&lt;/code&gt;, &lt;code&gt;addhistory()&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rl_insert_text()&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rl_forced_update_display()&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rl_bind_key()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rl_line_buffer&lt;/code&gt; et &lt;code&gt;rl_point&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Malheureusement, les implémentations de &lt;code&gt;libedit&lt;/code&gt; ne gèrent pas
correctement &lt;code&gt;rl_bind_key()&lt;/code&gt;. Aussi, la complétion et l’aide en ligne
ne sont pas disponibles avec celle-ci. La plupart des &lt;abbr title=&quot;Berkeley Software Distribution&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;&lt;/abbr&gt; viennent
avec la &lt;em&gt;&lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt; Readline&lt;/em&gt; préinstallée (elle bénéficie alors de
l’exception liée aux bibliothèques systèmes). Pour le reste, il est
toujours possible de se lier avec &lt;code&gt;libedit&lt;/code&gt; et éviter ainsi les
problèmes de licence. Dans ce cas, l’aide peut être obtenue avec la
commande &lt;code&gt;help&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id=&quot;changements-specifiques-a-un-os&quot;&gt;Changements spécifiques à un &lt;span class=&quot;caps&quot;&gt;OS&lt;/span&gt;&lt;/h1&gt;
&lt;h2 id=&quot;netlink-sous-linux&quot;&gt;Netlink sous Linux&lt;/h2&gt;
&lt;p&gt;Précédemment, la liste des interfaces était récupérée via
&lt;code&gt;getifaddrs()&lt;/code&gt;. &lt;em&gt;lldpd&lt;/em&gt; utilise désormais directement &lt;a href=&quot;http://en.wikipedia.org/wiki/Netlink&quot; title=&quot;Netlink dans Wikipedia&quot;&gt;Netlink&lt;/a&gt; sur
Linux. Ce n’est pas un changement majeur car la bibliothèque C
utilisait déjà &lt;em&gt;Netlink&lt;/em&gt; à cet effet. Les informations supplémentaires
que l’on peut obtenir par ce biais ne sont pour le moment pas
exploitées : elles sont toujours récupérées via &lt;em&gt;sysfs&lt;/em&gt; ou
&lt;code&gt;ioctl()&lt;/code&gt;. Toutefois, &lt;em&gt;lldpd&lt;/em&gt; est notifié lors du moindre changement.&lt;/p&gt;
&lt;p&gt;Comme beacoup d’autres projets, j’ai réécrit ma propre implémentation
de &lt;em&gt;Netlink&lt;/em&gt; au lieu d’utiliser des bibliothèques telles que &lt;a href=&quot;http://www.infradead.org/~tgr/libnl/&quot; title=&quot;Netlink Protocol Library Suite&quot;&gt;libnl&lt;/a&gt;
qui incluent tout le nécessaire et bien plus encore. Pourquoi ?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;La dernière version de &lt;a href=&quot;http://www.infradead.org/~tgr/libnl/&quot; title=&quot;Netlink Protocol Library Suite&quot;&gt;libnl&lt;/a&gt; est très jeune et n’est pas
    disponible dans de nombreuses distributions, dont par exemple
    Debian Squeeze. Comme pour &lt;em&gt;libevent&lt;/em&gt;, il aurait été possible de
    contourner la difficulté en incluant cette bibliothèque dans
    &lt;em&gt;lldpd&lt;/em&gt; et en l’utilisant lorsqu’il n’y a pas d’alternative dans
    le système. Mais…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La licence de &lt;em&gt;libnl&lt;/em&gt; est la &lt;abbr title=&quot;GNU Lesser General Public License&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LGPL&lt;/span&gt;&lt;/abbr&gt; 2.1. La liaison statique est
    alors un exercice périlleux. Il n’est pas clair si le résultat est
    une œuvre dérivée ou non. L’interprétation la plus courante est
    que la liaison statique est autorisée suivant les mêmes termes que
    dans la &lt;abbr title=&quot;GNU Lesser General Public License&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LGPL&lt;/span&gt;&lt;/abbr&gt; 3. C’est un problème pour de nombreux projets. Par
    exemple, &lt;a href=&quot;http://vincent.bernat.im/fr/blog/&amp;quot;http://www.ogre3d.org/&amp;amp;quot&quot; title=&quot;OGRE: Open Source 3D Graphics Engine&quot;&gt;&lt;span class=&quot;caps&quot;&gt;OGRE&lt;/span&gt;&lt;/a&gt; a ajouté
    &lt;a href=&quot;http://www.ogre3d.org/2009/03/06/lgpl-exclusions-added-static-linking-now-simpler&quot; title=&quot;OGRE: static linking now simpler&quot;&gt;une exception pour autoriser la liaison statique&lt;/a&gt;
    dans sa version 1.6 puis s’est
    &lt;a href=&quot;http://www.ogre3d.org/2009/09/15/ogre-will-switch-to-the-mit-license-from-1-7&quot; title=&quot;OGRE will switch to the MIT license from 1.7&quot;&gt;tourné vers la licence &lt;span class=&quot;caps&quot;&gt;MIT&lt;/span&gt;&lt;/a&gt; dans sa
    version 1.7.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;J’ai eu une courte discussion avec Thomas Graf à propos de ce problème
et il semble disposé à ajouter une telle exception. Cela risque de
prendre un peu de temps mais une fois le changement réalisé,
j’utiliserai alors la &lt;em&gt;libnl&lt;/em&gt; et en profiterai pour mieux exploiter
&lt;em&gt;Netlink&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;support-des-bsd&quot;&gt;Support des &lt;abbr title=&quot;Berkeley Software Distribution&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;&lt;/abbr&gt;&lt;/h2&gt;
&lt;p&gt;La version 0.5.7 de &lt;em&gt;lldpd&lt;/em&gt; ne supportait que Linux. La réécriture
utilisant &lt;em&gt;Netlink&lt;/em&gt; a été l’occasion d’abstraire correctement le
traitement des interfaces et de porter le tout sous les différents
&lt;abbr title=&quot;Berkeley Software Distribution&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;&lt;/abbr&gt;. Le premier port a eu lieu pour &lt;a href=&quot;http://www.debian.org/ports/kfreebsd-gnu/&quot; title=&quot;Debian GNU/kFreeBSD&quot;&gt;Debian &lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt;/kFreeBSD&lt;/a&gt;, puis pour
&lt;a href=&quot;http://www.freebsd.org&quot; title=&quot;FreeBSD&quot;&gt;FreeBSD&lt;/a&gt;, &lt;a href=&quot;http://vincent.bernat.im/www.openbsd.org&quot; title=&quot;OpenBSD&quot;&gt;OpenBSD&lt;/a&gt; et &lt;a href=&quot;http://www.netbsd.org&quot; title=&quot;NetBSD&quot;&gt;NetBSD&lt;/a&gt;. La structure est la même pour
les trois &lt;abbr title=&quot;Berkeley Software Distribution&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;&lt;/abbr&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;getifaddrs()&lt;/code&gt; pour obtenir la liste des interfaces,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bpf(4)&lt;/code&gt; pour s’attacher à une interface et envoyer et recevoir des paquets,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PF_ROUTE&lt;/code&gt; pour être notifié lors d’un changement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chaque &lt;abbr title=&quot;Berkeley Software Distribution&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;&lt;/abbr&gt; utilise ses propres &lt;code&gt;ioctl()&lt;/code&gt; pour récupérer les
informations liées aux &lt;span class=&quot;caps&quot;&gt;VLAN&lt;/span&gt;, aux ponts et aux aggrégats mais ils sont
souvent assez similaires. Le code est généralement repris de
&lt;code&gt;ifconfig.c&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Les ports pour les &lt;abbr title=&quot;Berkeley Software Distribution&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;&lt;/abbr&gt; ont les mêmes fonctionnalités que le port pour
Linux, à l’exception de &lt;em&gt;NetBSD&lt;/em&gt; qui ne dispose pas du support pour
l’inventaire &lt;abbr title=&quot;Link Layer Discovery Protocol&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LLDP&lt;/span&gt;&lt;/abbr&gt;-&lt;span class=&quot;caps&quot;&gt;MED&lt;/span&gt; car je n’ai pas su comment récupérer ces informations.&lt;/p&gt;
&lt;p&gt;Le port d’OpenBSD offre de plus une plus grande sécurité en filtrant
les paquets envoyés et en interdisant le processus non privilégié de
retirer le filtre mis en place :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;cm&quot;&gt;/* Install write filter (optional) */&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ioctl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BIOCSETWF&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;caddr_t&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fprog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;rc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;errno&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;log_info&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;privsep&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;unable to setup write &lt;span class=&quot;caps&quot;&gt;BPF&lt;/span&gt; filter for %s&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;goto&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;cm&quot;&gt;/* Lock interface */&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ioctl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BIOCLOCK&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;caddr_t&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;enable&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;rc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;errno&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;log_info&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;privsep&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;unable to lock &lt;span class=&quot;caps&quot;&gt;BPF&lt;/span&gt; interface %s&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;goto&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;C’est une fonctionnalité très appréciable. &lt;code&gt;lldpd&lt;/code&gt; est découpé en deux
processus. Un processus privilégié s’attache au port et transmet
celui-ci à un processus non privilégié. Sans cette fonctionnalité, le
second processus peut simplement retirer le filtre &lt;span class=&quot;caps&quot;&gt;BPF&lt;/span&gt;. J’ai porté la
&lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/davem/net-next.git;a=commit;h=d59577b6ffd313d0ab3be39cb1ab47e29bdc9182&quot; title=&quot;Empêcher les retrait d'un filtre sur une socket&quot;&gt;possibilité d’interdire le retrait d’un filtre&lt;/a&gt;
sous Linux. Toutefois, il me reste toujours à écrire le nécessaire
pour le filtre des paquets sortants.&lt;/p&gt;
&lt;h2 id=&quot;support-dos-x&quot;&gt;Support d’&lt;span class=&quot;caps&quot;&gt;OS&lt;/span&gt; X&lt;/h2&gt;
&lt;p&gt;Une fois le support pour FreeBSD fonctionnel, celui d’&lt;span class=&quot;caps&quot;&gt;OS&lt;/span&gt; X fut assez
simple. J’ai obtenu de &lt;a href=&quot;http://xcloud.me/&quot; title=&quot;Xcloud - Mac cloud server&quot;&gt;xcloud.me&lt;/a&gt; une machine virtuelle sous &lt;span class=&quot;caps&quot;&gt;OS&lt;/span&gt; X
pour m’aider dans cette tâche. Le port n’a ensuite pris que deux jours
dont une partie du temps à chercher comment ne pas fournir un numéro
de carte de crédit à Apple pour pouvoir télécharger Xcode !&lt;/p&gt;
&lt;p&gt;Afin de faciliter l’installation de &lt;em&gt;lldpd&lt;/em&gt;, j’ai également écrit une
&lt;a href=&quot;https://github.com/mxcl/homebrew/pull/17052&quot; title=&quot;Formule pour installer lldpd via Homebrew&quot;&gt;formule&lt;/a&gt; pour &lt;a href=&quot;http://mxcl.github.com/homebrew/&quot; title=&quot;Homebrew: the missing package manager for OS X&quot;&gt;Homebrew&lt;/a&gt; qui semble le
gestionnaire de paquets le plus populaire actuellement pour &lt;span class=&quot;caps&quot;&gt;OS&lt;/span&gt; X.&lt;/p&gt;
&lt;h2 id=&quot;support-de-upstart-et-systemd&quot;&gt;Support de upstart et systemd&lt;/h2&gt;
&lt;p&gt;De nombreuses distributions proposent désormais &lt;a href=&quot;http://upstart.ubuntu.com/&quot; title=&quot;upstart, un init basé sur les événements&quot;&gt;upstart&lt;/a&gt; ou
&lt;a href=&quot;http://www.freedesktop.org/wiki/Software/systemd&quot; title=&quot;systemd, un autre init basé sur les événements&quot;&gt;systemd&lt;/a&gt; en remplacement ou en alternative au système d’init
historique. Comme de nombreux démons, &lt;code&gt;lldpd&lt;/code&gt; se détache du terminal
et tourne en tâche de fond en forkant deux fois lorsqu’il est prêt
(pour &lt;code&gt;lldpd&lt;/code&gt;, cela signifie simplement que la socket Unix a été mise
en place). Bien qu’il soit possible de garder ce comportement avec
&lt;em&gt;upstart&lt;/em&gt; et &lt;em&gt;systemd&lt;/em&gt;, il est préférable de ne plus forker. Comment
indiquer alors que le démon est prêt à remplir sa tâche ?&lt;/p&gt;
&lt;p&gt;Avec &lt;em&gt;upstart&lt;/em&gt;, &lt;code&gt;lldpd&lt;/code&gt; s’envoie le signal &lt;code&gt;SIGSTOP&lt;/code&gt;. &lt;em&gt;upstart&lt;/em&gt; va
détecter son état et lui envoyer le signal &lt;code&gt;SIGCONT&lt;/code&gt;. De plus, il va
considérer que le démon est prêt. Voici comment faire :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;upstartjob&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;getenv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;UPSTART_JOB&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;upstartjob&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;upstartjob&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;lldpd&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;log_debug&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;main&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;running with upstart, don't fork but stop&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;raise&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SIGSTOP&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;La configuration de &lt;em&gt;upstart&lt;/em&gt; ressemble à ceci :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;c&quot;&gt;# lldpd - &lt;span class=&quot;caps&quot;&gt;LLDP&lt;/span&gt; daemon&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;description&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&lt;span class=&quot;caps&quot;&gt;LLDP&lt;/span&gt; daemon&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;start&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;on&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;device&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IFACE&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;stop&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;on&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;runlevel&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;06&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;expect&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;stop&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;respawn&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;script&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;etc&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lldpd&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lldpd&lt;/span&gt; $&lt;span class=&quot;n&quot;&gt;DAEMON_ARGS&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;script&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;em&gt;systemd&lt;/em&gt; emploie une socket sur laquelle le démon envoie la chaîne
&lt;code&gt;READY=1&lt;/code&gt; quand il est prêt. En utilisant la bibliothèque destinée à
cet effet, il suffit d’appeler &lt;code&gt;sd_notify(&quot;READY=1\n&quot;)&lt;/code&gt;. La fonction
&lt;code&gt;sd_notify()&lt;/code&gt; pouvant être réécrite en moins de 30 lignes, il m’a
semblé plus simple de le faire plutôt que d’ajouter une dépendance
externe. Voici la configuration de &lt;em&gt;systemd&lt;/em&gt; :&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;[Unit]&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;Description&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LLDP&lt;/span&gt; daemon&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;Documentation&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;man:lldpd(8)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;[Service]&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;Type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;notify&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;NotifyAccess&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;main&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;EnvironmentFile&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;-/etc/default/lldpd&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;ExecStart&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/usr/sbin/lldpd $DAEMON_ARGS&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;Restart&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;on-failure&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;[Install]&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;WantedBy&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;multi-user.target&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h2 id=&quot;fichiers-dentete-specifique-a-linux&quot;&gt;Fichiers d’entête spécifique à Linux&lt;/h2&gt;
&lt;p&gt;Les fichiers d’entête issus du noyau ont toujours été très
problématiques. Ils peuvent contenir des erreurs les rendant difficile
à utiliser en espace utilisateur ou être simplement manquants. Il y a
longtemps, ils faisaient partie de la bibliothèque C et étaient
synchronisés très rarement. Ils ont ensuite été extraits du noyau sans
aucun changement et ne correspondaient pas forcément au noyau par
défaut de la distribution&lt;sup id=&quot;fnref:sarge&quot;&gt;&lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fn:sarge&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Il s’agit d’un problème qui tend à disparaître aujourd’hui. D’un côté,
les distributions empaquettent désormais les entêtes correspondant au
noyau par défaut. De l’autre, les développeurs noyau
&lt;a href=&quot;http://lwn.net/Articles/507794/&quot; title=&quot;The UAPI header file split&quot;&gt;séparent les entêtes propres au noyau des entêtes destinés à être utilisés par l’espace utilisateur&lt;/a&gt;. Toutefois,
il faut toujours gérer l’historique.&lt;/p&gt;
&lt;p&gt;Un bon exemple est &lt;code&gt;linux/ethtool.h&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Il peut simplement être absent alors que les fonctionnalités
   associées sont supportées depuis très longtemps.&lt;/li&gt;
&lt;li&gt;Il peut utiliser les types &lt;code&gt;u8&lt;/code&gt;, &lt;code&gt;u16&lt;/code&gt; qui sont spécifiques au
   noyau. Pour contourner ce problème, il faut
   &lt;a href=&quot;https://github.com/vincentbernat/lldpd/blob/0.5.7/m4/ethtool.m4&quot; title=&quot;'Type munging' dans linux/ethtool.h&quot;&gt;altérer les types&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Certaines définitions telles que &lt;code&gt;SPEED_10000&lt;/code&gt; peuvent
   manquer. Dans ce cas, on peut soit compléter les définitions dans
   un autre fichier et se retrouver avec une copie du fichier d’entête
   dans laquelle les définitions sont entralacées avec des &lt;code&gt;#ifdef&lt;/code&gt;,
   soit n’utiliser les symboles que s’ils sont présents. La dernière
   solution n’est pas plus pratique et elle interdit d’utiliser des
   fonctionnalités qui sont pourtant présentes dans le noyau.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une solution très simple pour résoudre ce problème est simplement
d’inclure les fichiers d’entête dans l’arbre de source du
projet. Grâce à Google qui a recopié maladroitement ceux-ci pour sa
bibliothèque C &lt;em&gt;Bionic&lt;/em&gt;, nous savons désormais que
&lt;a href=&quot;http://lwn.net/Articles/434318/&quot; title=&quot;Has Bionic stepped over the GPL line?&quot;&gt;la copie des entêtes du noyau dans un programme ne constitue pas une œuvre dérivée&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;footnote&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&quot;fn:uint16t&quot;&gt;
&lt;p&gt;L’utilisation des types &lt;code&gt;u_int16_t&lt;/code&gt; et &lt;code&gt;u_int8_t&lt;/code&gt; est un
        reste du système précédent où le sérialiseur devait
        connaître la taille de chaque membre. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref:uint16t&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 1 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn:library&quot;&gt;
&lt;p&gt;Pour des conseils plus élaborés, jetez un œil sur
        &lt;a href=&quot;http://davidz25.blogspot.fr/2011/07/writing-c-library-intro-conclusion-and.html&quot; title=&quot;Writing a C library&quot;&gt;Writing a C library&lt;/a&gt;. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref:library&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 2 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn:libeditapi&quot;&gt;
&lt;p&gt;L’analyse lexicale n’est pas le seul avantage de cette
           &lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;abbr title=&quot;Application Programming Interface&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/abbr&gt;&lt;/abbr&gt;&lt;/abbr&gt; native. Elle est également beaucoup mieux conçue,
           ne repose pas sur des variables globales et est bien
           documentée. Ses implémentations sont de plus sous
           licence &lt;abbr title=&quot;Berkeley Software Distribution&quot;&gt;&lt;abbr title=&quot;Berkeley Software Distribution&quot;&gt;&lt;abbr title=&quot;Berkeley Software Distribution&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;&lt;/abbr&gt;&lt;/abbr&gt;&lt;/abbr&gt;. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref:libeditapi&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 3 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn:sarge&quot;&gt;
&lt;p&gt;Par exemple, dans Debian Sarge, le noyau était un 2.6.8
      (2004) tandis que les entêtes du noyau provenaient d’un
      noyau antérieur au 2.6. &lt;a href=&quot;http://vincent.bernat.im/fr/blog/atom.xml#fnref:sarge&quot; rev=&quot;footnote&quot; title=&quot;Jump back to footnote 4 in the text&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-02-20T08:28:19+00:00</dc:date>
	<dc:creator>Vincent Bernat</dc:creator>
</item>
<item rdf:about="http://france.debian.net/posts/2012/Mini_DebConf_Paris_2012/">
	<title>Debian France: Bilan de la deuxième Mini-Debconf Paris</title>
	<link>http://france.debian.net/posts/2012/Mini_DebConf_Paris_2012/</link>
	<content:encoded>&lt;h1&gt;Bilan de la deuxième Mini-Debconf Paris&lt;/h1&gt;

&lt;p&gt;La deuxième édition de la Mini-Debconf Paris s'est tenue les 24 et 25
novembres 2012 dans les locaux de l'Epitech au Kremlin-Bicètre.&lt;/p&gt;

&lt;p&gt;Plus de 150 personnes se sont retrouvées pour &lt;a href=&quot;http://fr2012.mini.debconf.org/&quot;&gt;deux jours de
conférence&lt;/a&gt; assurées par des intervenants
venus de toute l'Europe. Plusieurs équipes Debian ont été présentées,
notamment &lt;a href=&quot;http://womble.decadent.org.uk/talks/mdcp2012-linux-kernel/&quot;&gt;l'équipe
noyau&lt;/a&gt; et
l'importante &lt;a href=&quot;http://fr2012.mini.debconf.org/slides/rt-minidebconf12.pdf&quot;&gt;release
team&lt;/a&gt;. L'installateur
Debian a été
&lt;a href=&quot;http://fr2012.mini.debconf.org/slides/re-discovering-d-i.pdf&quot;&gt;décortiqué&lt;/a&gt;.
GNOME a été à l'honneur avec une présentation des &lt;a href=&quot;http://fr2012.mini.debconf.org/slides/gnome-downstreams.pdf&quot;&gt;relations entre GNOME
et les
distributions&lt;/a&gt;
(dont Debian) mais aussi des explications sur &lt;a href=&quot;http://fr2012.mini.debconf.org/slides/LargeGnomeDeployment.pdf&quot;&gt;l'administration à grande
échelle&lt;/a&gt;
de postes bureautiques GNOME. Retrouvez les diapositives de toutes les
autres présentations sur le &lt;a href=&quot;http://fr2012.mini.debconf.org/&quot;&gt;site dédié&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://wiki.debconf.org/wiki/File:Mini-debconf-paris-2012-fdl-group-photo.jpg&quot; title=&quot;Photo de groupe&quot;&gt;&lt;img src=&quot;http://france.debian.net/blog/../posts/2012/Mini_DebConf_Paris_2012/photo-groupe.jpg&quot; alt=&quot;photo-groupe.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;L'association tenait un stand de merchandising où les visiteurs ont pu se
procurer polos, stickers, parapluie et autres t-shirts. Les futurs
contributeurs ont eu l'occasion de faire signer leurs clés GPG par les
développeurs Debian présents.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://wiki.debconf.org/wiki/File:Mini-debconf-paris-2012-fdl-key-signing-party-checking.jpg&quot; title=&quot;Key signing party dans la cour de l'Epitech&quot;&gt;&lt;img src=&quot;http://france.debian.net/blog/../posts/2012/Mini_DebConf_Paris_2012/ksp.jpg&quot; alt=&quot;ksp.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Merci aux nombreux sponsors qui ont soutenu l'événement:
&lt;a href=&quot;http://www.logilab.fr/&quot;&gt;Logilab&lt;/a&gt;,
&lt;a href=&quot;http://www.smartjog.com/en/?utm_source=debconf.org&amp;amp;utm_medium=link&amp;amp;utm_campaign=minidebconf2012&quot;&gt;SmartJog&lt;/a&gt;,
&lt;a href=&quot;http://bearstech.com/&quot;&gt;Bearstech&lt;/a&gt;, &lt;a href=&quot;http://www.irill.org/&quot;&gt;IRILL&lt;/a&gt;
et &lt;a href=&quot;http://www.evolix.fr/&quot;&gt;Evolix&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Quelques photos supplémentaires sont disponibes sur la &lt;a href=&quot;https://wiki.debconf.org/wiki/Miniconf-Paris/2012#Pictures_of_the_event&quot;&gt;page wiki de
cette mini-debconf&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-01-17T11:22:30+00:00</dc:date>
</item>
<item rdf:about="http://ascendances.wordpress.com/?p=930">
	<title>St&amp;eacute;phane Blondon: Déterminer quelle est la meilleure distribution grâce à Python et PIL</title>
	<link>http://ascendances.wordpress.com/2013/01/12/determiner-quelle-est-la-meilleure-distribution-grace-a-python-et-pil/</link>
	<content:encoded>&lt;p&gt;N’avez-vous jamais discuté des mérites de telle ou telle distribution Linux (ou BSD) avec d’autres personnes (chacun essayant de démontrer que celle qu’il utilise au quotidien est la meilleure) ? Grâce à cet article, vous n’aurez toujours pas La réponse mais vous aurez une réponse indiscutable : il s’agit de la jouer aux cartes. Les cartes sont créées avec &lt;code&gt;Python Imaging Library&lt;/code&gt;, une bibliothèque Python de manipulation d’image. L’article explique la façon de les réaliser.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ascendances.files.wordpress.com/2013/01/debian.png?w=497&quot; alt=&quot;Carte de jeu pour Debian&quot; class=&quot;aligncenter size-full wp-image-937&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Chaque carte possède un ensemble de caractéristiques, la plus forte remporte le pli. Ce principe de jeu existe depuis les années 70 (&lt;a href=&quot;http://en.wikipedia.org/wiki/Ace_Trumps&quot; title=&quot;Page wikipedia anglophone sur le jeu historique&quot;&gt;Ace_Trumps&lt;/a&gt;, Super Top Ass). L’ensemble des 26 cartes créées est visible &lt;a href=&quot;http://stephane.yaal.fr/cards/&quot; title=&quot;Voir les cartes&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;L’objectif de l’article est de montrer comment on peut concevoir la création de la carte, pas le détail des paramètres de chaque fonction. Pour cela, la documentation et de nombreuses explications foisonnent déjà sur le web. C’est pourquoi, par exemple, les calculs de dimensionnement ne seront pas expliqués.&lt;/p&gt;
&lt;h3&gt;Prérequis : installer PIL (ou Pillow)&lt;/h3&gt;
&lt;p&gt;Deux possibilités :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utiliser le système de paquet de votre distribution (python-imaging pour Debian) ;&lt;/li&gt;
&lt;li&gt;utiliser Pypi : PIL n’est pas disponible, il faut installer &lt;a href=&quot;http://pypi.python.org/pypi/Pillow&quot; title=&quot;documentation de Pillow sur PyPi&quot;&gt;Pillow&lt;/a&gt;. Cela ne change pas la façon d’utiliser la bibliothèque :
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;from PIL import Image, ImageDraw, ImageFont
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Image&lt;/code&gt; sert à instancier une image, &lt;code&gt;ImageDraw&lt;/code&gt; à la modifier, &lt;code&gt;ImageFont&lt;/code&gt; à choisir une police de caractère.&lt;/p&gt;
&lt;h3&gt;Créer une carte&lt;/h3&gt;
&lt;p&gt;La base consiste à instancier un objet image sur lequel les modifications vont être apportées. Une fois les modifications réalisées, on enregistre le résultat sur le disque :&lt;/p&gt;
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;def draw_card(distrib):
    img = Image.open(BACKGROUND_PATH)
    #ajout des textes, images, etc.
    img.save(distrib[&quot;img_name&quot;] + &quot;.png&quot;)
&lt;/pre&gt;
&lt;p&gt;La carte est une superposition de couches, qui sont toutes fusionnées en une seule image. On a donc un fond sur lequel les autres éléments sont superposés.&lt;br /&gt;
Parmi les éléments remarquables :&lt;/p&gt;
&lt;h4&gt;Textes dans un cartouche&lt;/h4&gt;
&lt;p&gt;Le titre et les caractéristiques des distributions sont faits de la même manière. Il n’existe pas d’effet avec PIL pour dessiner automatiquement une bordure. Elle est réalisée en plaçant deux rectangles l’un sur l’autre, celui de dessous étant plus large et haut. &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ascendances.files.wordpress.com/2013/01/carte_montage_titre.png?w=497&quot; alt=&quot;Montage du titre&quot; class=&quot;aligncenter size-full wp-image-953&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;def draw_title(img, title):
    &quot;&quot;&quot;
    pour dessiner le titre avec le fond et la bordure autour

    img est l'image PIL
    title est la chaine de caracteres a afficher (&quot;Distribution&quot;)
    &quot;&quot;&quot;
    draw = ImageDraw.Draw(img)
    draw_cartouche(draw, 25, 55)
    font = ImageFont.truetype(FONT_PATH, TITLE_FONT_SIZE)
    width, height = draw.textsize(title, font=font)
    x = center(width)
    draw.text((x, 29), title, font=font, fill=TEXT_COLOR)

def draw_cartouche(draw, upper_height, lower_height):
    &quot;&quot;&quot;pour dessiner les deux rectangles&quot;&quot;&quot;
    draw.rectangle(((MARGIN_LEFT, upper_height), (CARD_WIDTH - MARGIN_RIGHT, lower_height)),
                   fill=&quot;#8e6f32&quot;)
    BORDER = 5
    draw.rectangle(((MARGIN_LEFT + BORDER, upper_height + BORDER), (CARD_WIDTH - MARGIN_RIGHT - BORDER, lower_height - BORDER)),
                   fill=&quot;#e9b654&quot;)
&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;draw.textsize()&lt;/code&gt; permet de connaître les dimensions que prendrait la chaîne passée en paramètre. Cela permet de faire un calcul (dans la fonction &lt;code&gt;center()&lt;/code&gt;, omise dans l’extrait ci-dessus) pour centrer le texte.&lt;/p&gt;
&lt;h4&gt;Le logo de la distribution&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;http://ascendances.files.wordpress.com/2013/01/carte_montage_image.png?w=497&quot; alt=&quot;Montage du logo&quot; class=&quot;aligncenter size-full wp-image-954&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L’affichage du logo suit la même logique en intercalant une image (nommée supernova.png) entre le fond et le logo de la distribution. Pour avoir un joli rendu , on décale simplement en hauteur l’image (&lt;code&gt;y&lt;/code&gt;) car les deux images n’ont pas la même taille.&lt;/p&gt;
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;def draw_logo(img, filename):
    &quot;&quot;&quot;on colle supernova
       puis le fichier correspondant au parametre filename&quot;&quot;&quot;
    image_path = SRC_IMGS_DIR + &quot;supernova.png&quot;
    nova = Image.open(image_path)
    nova_width, nova_height = nova.size
    x = center(nova_width)
    y = 60
    img.paste(nova.convert(&quot;RGBA&quot;),
              (x, y, x + nova_width, y + nova_height),
              mask=nova.convert('RGBA'))
    image_path = SRC_IMGS_DIR + filename + &quot;.png&quot;
    distro = Image.open(image_path)
    distro_width, distro_height = distro.size
    x = center(distro_width)
    y = 90
    img.paste(distro.convert(&quot;RGBA&quot;),
              (x, y, x + distro_width, y + distro_height),
              mask=distro.convert('RGBA'))
&lt;/pre&gt;
&lt;p&gt;L’exercice de factorisation de cette fonction est laissé aux lecteurs qui s’ennuient et qui ne sont pas partis faire autre chose (ce que je ne comprend pas d’ailleurs).&lt;/p&gt;
&lt;h4&gt;Le numéro de la carte&lt;/h4&gt;
&lt;p&gt;Le numéro de la carte en bas à gauche est affiché de biais. Si les images peuvent subir une rotation, les textes ne sont affichés qu’horizontalement. La solution est donc de coller le texte dans une image intermédiaire. Cette image subira une rotation puis sera collée sur l’image finale de la même manière que précédemment :&lt;/p&gt;
&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;def draw_card_index(img, number):
    &quot;&quot;&quot;pour dessiner 'number' de biais&quot;&quot;&quot;
    HEIGHT = WIDTH = 19
    num_img = Image.new(&quot;RGBA&quot;,
                        (WIDTH, HEIGHT),
                        (0, 0, 0, 0))
    num_draw = ImageDraw.Draw(num_img)
    font = ImageFont.truetype(SANS_PATH, TEXT_FONT_SIZE)
    num_draw.text((0, 0), number, font=font, fill=&quot;brown&quot;)
    n = num_img.rotate(-45)
    X, Y = 7, 378
    img.paste(n, (X, Y, X + WIDTH, Y + HEIGHT), mask=n)
&lt;/pre&gt;
&lt;p&gt;À noter que la rotation faite ici prend peu de précaution et les nombres à deux chiffres sont légèrement tronqués. Le paramètre &lt;code&gt;expand&lt;/code&gt; peut être ajouté à &lt;code&gt;rotate()&lt;/code&gt; pour éviter la perte, mais l’image est automatiquement agrandie.&lt;/p&gt;
&lt;h3&gt;Code source et ressources&lt;/h3&gt;
&lt;p&gt;La &lt;a href=&quot;http://www.pythonware.com/library/pil/handbook/index.htm&quot; title=&quot;Documentation de PIL sur le site de son éditeur&quot;&gt;documentation de PIL&lt;/a&gt; est précieuse.&lt;br /&gt;
Un &lt;a href=&quot;http://nadiana.com/pil-tutorial-basic-advanced-drawing&quot; title=&quot;un des nombreux tutoriels PIL existant sur le web (en anglais)&quot;&gt;tutoriel&lt;/a&gt; dont certains effets ont été réutilisés pour les cartes.&lt;/p&gt;
&lt;p&gt;Les données sur les cartes proviennent principalement de &lt;a href=&quot;http://distrowatch.com/&quot; title=&quot;Put the fun back into computing. Use Linux, BSD.&quot;&gt;Distrowatch&lt;/a&gt;. Les logos des distributions sont aussi ceux affichés sur Distrowatch. « first stable » représente la première version stable avec le nom actuel de la distribution ou ce qui pourrait être considéré comme équivalent. « based on » indique le nom de la distribution parente. La valeur « Indep. » signifie qu’elle n’est basée sur aucune autre distribution. Si elle est suivie d’une étoile, cela signifie qu’elle est maintenant indépendante mais a été basée sur une autre distribution par le passé.&lt;/p&gt;
&lt;p&gt;Le fond de carte et l’effet supernova ont été réalisés avec The Gimp.&lt;/p&gt;
&lt;p&gt;L’archive contenant le code source du script au cas où quelqu’un voudrait le réutiliser, ainsi que les logos et les cartes générées est &lt;a href=&quot;http://stephane.yaal.fr/cards/cards.tar.xz&quot; title=&quot;Archive cards.tar.xz&quot;&gt;fournie&lt;/a&gt; au format .tar.xz. Le code a été écrit dans un but de démo. Il est bien perfectible…&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/ascendances.wordpress.com/930/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/ascendances.wordpress.com/930/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ascendances.wordpress.com&amp;amp;blog=24442983&amp;amp;post=930&amp;amp;subd=ascendances&amp;amp;ref=&amp;amp;feed=1&quot; border=&quot;0&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-01-12T09:39:02+00:00</dc:date>
	<dc:creator>ascendances</dc:creator>
</item>
<item rdf:about="http://gcolpart.evolix.net/blog21/?p=522">
	<title>Gr&amp;#233;gory Colpart: Astuces pour gérer un répertoire ext3 bien rempli</title>
	<link>http://gcolpart.evolix.net/blog21/astuces-pour-gerer-un-repertoire-ext3-bien-rempli/</link>
	<content:encoded>&lt;p&gt;Disclaimer : Valable pour de l’ext3 sous Linux (utilisable sur d’autres filesystems ou Unix à vos disques et péril)&lt;/p&gt;
&lt;p&gt;Vous avez un répertoire rempli à rabord de nombreux fichiers, et il est impossible de connaître sa taille, le lister ou l’effacer sans impact sur la production ?&lt;/p&gt;
&lt;p&gt;Voici quelques astuces :&lt;/p&gt;
&lt;p&gt;- Avec un “ls -ld” sur le répertoire, vous pouvez estimer grossièrement le nombre de fichiers présents dans un répertoire. En effet, un répertoire vide fait 4 Ko (je simplifie). Et plus il contient de fichiers, plus sa taille va augmenter. Par exemple, un répertoire contenant 2 millions de fichiers pourra faire une taille de 100 Mo (je parle bien de la taille du répertoire et non pas de la taille du contenu). Attention, c’est variable selon la longueur des noms des fichiers. Et prendre garde aussi que ce n’est pas dynamique : si vous videz complètement un répertoire bien rempli, il gardera sa taille volumineuse (d’où l’intérêt de recréer un répertoire qui s’est rempli “par erreur”).&lt;/p&gt;
&lt;p&gt;- Pour lister les fichiers du répertoire, utiliser la commande “ls” n’est pas une bonne idée car elle accède à toute la liste avant de l’afficher. Voici comment lister 10 fichiers sans attendre :&lt;/p&gt;
&lt;pre&gt;perl -le 'opendir DIR, &quot;.&quot; or die; $i=0; while ($i&amp;lt;10) { my $f = readdir DIR; print $f; $i++; }; closedir DIR'
&lt;/pre&gt;
&lt;p&gt;Grâce à leurs noms, vous pouvez désormais examiner (ouvrir, connaître sa taille) un échantillon de fichiers contenus dans votre fameux répertoire.&lt;/p&gt;
&lt;p&gt;Pour lister l’ensemble des fichiers sans attendre comme “ls” :&lt;/p&gt;
&lt;pre&gt;perl -le 'opendir DIR, &quot;.&quot; or die; print while $_ = readdir DIR; closedir DIR'
&lt;/pre&gt;
&lt;p&gt;- Pour effacer le contenu du répertoire en limitant l’impact sur la production, oubliez “rm -rf” qui va saturer vos I/O disque mais préférez le faire par blocs de N fichiers avec des pauses de quelques secondes ! Voici une commande “conviviale” qui va faire cela par blocs de 300 fichiers avec des pauses de 5 secondes :&lt;/p&gt;
&lt;pre&gt;perl -le 'use POSIX qw/strftime/; opendir DIR, &quot;.&quot; or die; $i=0; printf &quot;DELETING IN PROGRESS...&quot;;
 while (my $f = readdir DIR) {unlink $f;  $i++;
 if ($i % 300 == 0) {printf &quot;...$i files deleted\n&quot;.strftime(&quot;%Y-%m-%d %H:%M:%S&quot;,localtime).&quot; : PAUSE...&quot;;
 $| = 1; sleep 5 ; printf &quot;...DONE. &quot;; printf &quot;DELETING IN PROGRESS...&quot;}}; printf &quot;...DONE&quot;; closedir DIR'
&lt;/pre&gt;
&lt;p&gt;EDIT : en complément, on n’oubliera pas que l’on peut aussi gérer la priorité d’ordonnancement des I/O avec la commande ionice&lt;br /&gt;
(merci à Sylvain B. de l’avoir souligné) &lt;/p&gt;</content:encoded>
	<dc:date>2012-08-01T02:24:07+00:00</dc:date>
	<dc:creator>Gregory Colpart</dc:creator>
</item>
<item rdf:about="http://blog.aurel32.net/?p=133">
	<title>Aur&amp;#233;lien Jarno: How multiarch adds new RC bugs…</title>
	<link>http://blog.aurel32.net/133</link>
	<content:encoded>&lt;p&gt;&lt;code&gt;&lt;br /&gt;
# dpkg --add-architecture kfreebsd-amd64&lt;br /&gt;
# dpkg -i libc0.1-dev_2.13-32_kfreebsd-amd64.deb&lt;br /&gt;
Selecting previously unselected package libc0.1-dev.&lt;br /&gt;
(Reading database ... 446113 files and directories currently installed.)&lt;br /&gt;
Unpacking libc0.1-dev (from libc0.1-dev_2.13-32_kfreebsd-amd64.deb) ...&lt;br /&gt;
dpkg: error processing libc0.1-dev_2.13-32_kfreebsd-amd64.deb (--install):&lt;br /&gt;
 &lt;strong&gt;trying to overwrite '/usr/include/_G_config.h', which is also in package libc6-dev 2.13-32&lt;/strong&gt;&lt;br /&gt;
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)&lt;br /&gt;
Errors were encountered while processing:&lt;br /&gt;
 libc0.1-dev_2.13-32_kfreebsd-amd64.deb&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Before multiarch the bug was not existing, and of course none of libc6-dev and libc0.1-dev are marked as &lt;code&gt;Multi-Arch: something&lt;/code&gt;. People wanting to delay the release of Wheezy, I am sure you can find much more RC bugs like that.&lt;/p&gt;</content:encoded>
	<dc:date>2012-06-03T11:13:14+00:00</dc:date>
	<dc:creator>aurel32</dc:creator>
</item>
<item rdf:about="http://blog.aurel32.net/?p=118">
	<title>Aur&amp;#233;lien Jarno: 10 years ago…</title>
	<link>http://blog.aurel32.net/118</link>
	<content:encoded>&lt;p&gt;&lt;strong&gt;Date:&lt;/strong&gt; Mon, 18 Mar 2002 18:22:10 +0000&lt;br /&gt;
&lt;strong&gt;From:&lt;/strong&gt; James Troup &amp;lt;troup@samosa.debian.org&amp;gt;&lt;br /&gt;
&lt;strong&gt;To:&lt;/strong&gt; “Aurelien Jarno” &amp;lt;aurelien@aurel32.net&amp;gt;&lt;br /&gt;
&lt;strong&gt;Cc:&lt;/strong&gt; da-manager@debian.org&lt;br /&gt;
&lt;strong&gt;Subject:&lt;/strong&gt; New Debian maintainer Aurelien Jarno&lt;/p&gt;
&lt;p&gt;[ This is a long (automatically-generated) mail, but it contains&lt;br /&gt;
   important information, please read it all carefully. ]&lt;/p&gt;
&lt;p&gt;Dear Aurelien Jarno!&lt;/p&gt;
&lt;p&gt;An account has been created for you on developer-accessible machines with username ‘aurel32′.  The password for this account can be found encrypted with your PGP or GPG key and appended to this message. A list of machines available to Debian developers can be found at &amp;lt;URL:&lt;a href=&quot;http://db.debian.org/machines.cgi&quot;&gt;http://db.debian.org/machines.cgi&lt;/a&gt;&amp;gt;. Please take a minute now to familiarize yourself with the Debian Machine Usage Policy, available at &amp;lt;URL:&lt;a href=&quot;http://www.debian.org/devel/dmup&quot;&gt;http://www.debian.org/devel/dmup&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;You have been subscribed to the debian-private mailing list as &amp;lt;aurel32@debian.org&amp;gt;.  Please respect the privacy of that list and don’t forward mail from it elsewhere.  E-mail to &amp;lt;aurel32@debian.org&amp;gt; will be forwarded to &amp;lt;aurelien@aurel32.net&amp;gt;.  To change this, please see &amp;lt;URL:&lt;a href=&quot;http://db.debian.org/forward.html&quot;&gt;http://db.debian.org/forward.html&lt;/a&gt;&amp;gt; Also, please subscribe to debian-devel-announce, if you haven’t done so already.&lt;/p&gt;
&lt;p&gt;We strongly suggest that you use your aurel32@debian.org address for the maintainer field in your packages, because that one will be valid as long as you are a Debian developer, even if you change jobs, leave university or change Internet Service providers.  If you do so, please add that address to your PGP/GPG key(s) (using `gpg –edit-key “YOUR USER ID”‘) and send it to the keyring server at keyring.debian.org with `gpg –keyserver keyring.debian.org –send-keys “YOUR USER ID”‘.&lt;/p&gt;
&lt;p&gt;You can find more information useful to developers at &amp;lt;URL:&lt;a href=&quot;http://www.debian.org/devel/&quot;&gt;http://www.debian.org/devel/&lt;/a&gt;&amp;gt; (in particular, see the subsection titled “Debian Developer’s reference”). &lt;/p&gt;
&lt;p&gt;We suggest that you subscribe to debian-mentors@lists.debian.org. This list is for new maintainers who seek help with initial packaging and other developer-related issues.  Those who prefer one-on-one help can also post to the list, and an experienced developer may volunteer to help you.  You can get online help on IRC, too, if you join the channel #debian-devel on irc.debian.org.  Take a look at the support section on www.debian.org in order to find out more information.&lt;/p&gt;
&lt;p&gt;You should have read these documents before working on your packages.&lt;/p&gt;
&lt;p&gt;  o The Debian Social Contract&lt;br /&gt;
    &amp;lt;URL:&lt;a href=&quot;http://www.debian.org/social_contract.html&quot;&gt;http://www.debian.org/social_contract.html&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;  o The Debian Policy Manual&lt;br /&gt;
    &amp;lt;URL:&lt;a href=&quot;http://www.debian.org/doc/debian-policy/&quot;&gt;http://www.debian.org/doc/debian-policy/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;If you have some spare time and want to contribute it to Debian you may wish to take a look at the “Work-Needing and Prospective Packages for Debian GNU/Linux” also known as WNPP that can be found at &amp;lt;URL:&lt;a href=&quot;http://www.debian.org/devel/wnpp/&quot;&gt;http://www.debian.org/devel/wnpp/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;If you plan to make a Debian package from a not yet packaged piece of software you *must* announce your intention on the debian-devel mailing list to make sure nobody else is working on them.&lt;/p&gt;
&lt;p&gt;The machine ftp-master.debian.org is our main archive server.  Every uploaded package finds it’s way there (except for Packages covered by US crypto laws which go to non-us.debian.org) eventually. master.debian.org is the home of our bug tracking system. Project web pages and CVS archives are hosted on klecker.debian.org (aka cvs/www.debian.org), klecker is also our general shell server. Web pages should be placed in public_html on klecker and refered to by &lt;a href=&quot;http://people.debian.org/~aurel32&quot;&gt;http://people.debian.org/~aurel32&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You should use ssh to log into the machines instead of regular telnet or rlogin. Our LDAP directory is able to share ssh RSA keys among machines, please see &amp;lt;URL:&lt;a href=&quot;http://db.debian.org/doc-mail.html&quot;&gt;http://db.debian.org/doc-mail.html&lt;/a&gt;&amp;gt; Otherwise when you first login a ~/.ssh directory will be created with the appropriate permissions. Please be aware of the security implications of using RSA authentication and ssh agents.&lt;/p&gt;
&lt;p&gt;Finally, please take a minute to visit &amp;lt;URL:&lt;a href=&quot;http://db.debian.org/&quot;&gt;http://db.debian.org/&lt;/a&gt;&amp;gt;.&lt;br /&gt;
Login using the password information appended to this email, and update your personal information. The information is used to maintain your accounts on various Debian machines, and also to allow other developers and general users to find out more about you. Many of the fields are only visible to other registered Debian developers. This is also the only way to change your password. The passwd program does not yet work.&lt;/p&gt;
&lt;p&gt;Welcome to the project!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;–&lt;br /&gt;
The Debian New Maintainer Team&lt;/em&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2012-03-18T19:52:50+00:00</dc:date>
	<dc:creator>aurel32</dc:creator>
</item>
<item rdf:about="http://blog.developpez.com/xmlsrv/9357@http://blog.developpez.com">
	<title>Vincent Carmona: Adapter une bibliothèque C pour ruby (4)</title>
	<link>http://blog.developpez.com/zik/p9357/ruby/adapter-une-bibliotheque-c-pour-ruby-4/</link>
	<content:encoded>&lt;p&gt;Ce quatrième billet présente comment obtenir une documentation grâce à &lt;a href=&quot;http://rdoc.sourceforge.net/&quot;&gt;rdoc&lt;/a&gt; : il suffit de commenter les fichiers sources.&lt;/p&gt;

&lt;h2&gt;Documentation&lt;/h2&gt;
&lt;h3&gt;Commenter&lt;/h3&gt;
&lt;p&gt;Pour documenter les méthodes de la classe &lt;b&gt;TagLib::File&lt;/b&gt;, il suffit de commenter les différentes fonctions les implémentant.&lt;/p&gt;

&lt;p&gt;La méthode &lt;b&gt;title&lt;/b&gt; permet d'obtenir le titre d'une piste. On l'indique en commentaire juste avant la fonction &lt;b&gt;file_get_title&lt;/b&gt;.&lt;br /&gt;
&lt;code&gt; &lt;br /&gt;
/*Get track title*/ &lt;br /&gt;
VALUE &lt;br /&gt;
file_get_title(VALUE self) &lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Par défaut, les paramètres d'une méthode sont nommés &lt;b&gt;p1, p2, ...&lt;/b&gt;. Pour la méthode &lt;b&gt;title=&lt;/b&gt;, on utilise l'instruction &lt;b&gt;call-seq:&lt;/b&gt; pour afficher le texte &lt;b&gt;title=title&lt;/b&gt; (au lieu de &lt;b&gt;title=(p1)&lt;/b&gt;).&lt;br /&gt;
&lt;code&gt; &lt;br /&gt;
/* &lt;br /&gt;
call-seq: title=title &lt;br /&gt;
 &lt;br /&gt;
Set track title to title &lt;br /&gt;
 &lt;br /&gt;
title: a string &lt;br /&gt;
*/ &lt;br /&gt;
VALUE &lt;br /&gt;
file_set_title(VALUE self, VALUE title) &lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;La méthode &lt;b&gt;initialize&lt;/b&gt; ne devrait jamais être appelée directement depuis un code ruby. On utilise l'instruction &lt;b&gt;:nodoc:&lt;/b&gt; pour indiquer que la méthode ne doit pas apparaitre dans la documentation.&lt;br /&gt;
&lt;code&gt; &lt;br /&gt;
/*:nodoc:*/ &lt;br /&gt;
VALUE &lt;br /&gt;
file_init(VALUE self, VALUE path) &lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;J'indique que je ne désire pas commenter le module &lt;b&gt;TagLib&lt;/b&gt; en plaçant un commentaire vide afin d'éviter que rdoc utilise un commentaire non-désiré.&lt;br /&gt;
&lt;code&gt; &lt;br /&gt;
/* */ &lt;br /&gt;
  mTagLib=rb_define_module(&quot;TagLib&quot;); &lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Dans le fichier lib/raglib2.rb, j'ajoute la directive &lt;b&gt;:main:&lt;/b&gt; afin que la page initiale de la documentation pointe sur la classe &lt;b&gt;TagLib::File&lt;/b&gt;.&lt;br /&gt;
&lt;code&gt; &lt;br /&gt;
#:main: TagLib::File &lt;br /&gt;
module TagLib &lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Bizarrement, cette directive ne semble pas fonctionner si elle est placée dans le fichier taglib2.c.&lt;/p&gt;

&lt;h3&gt;Produire la documentation&lt;/h3&gt;
&lt;p&gt;&lt;code&gt; &lt;br /&gt;
rdoc --exclude extconf.rb &lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Le fichier doc/index.html est créé.&lt;br /&gt;
&lt;img src=&quot;http://zik.developpez.com/blog/c_ext/pix/rdoc.png&quot; alt=&quot;aperçu de la documentation&quot; title=&quot;Documentation&quot; /&gt;&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Rendez-vous pour le dernier billet où j'introduirai quelques concepts que je n'ai pas utilisé dans le module &lt;b&gt;TagLib&lt;/b&gt;.&lt;/p&gt;			&lt;div style=&quot;font-size: 0.8em;&quot;&gt;&lt;a href=&quot;http://blog.developpez.com/zik/p9357/ruby/adapter-une-bibliotheque-c-pour-ruby-4/&quot; title=&quot;&quot;&gt;Billet original&lt;/a&gt; publié sur les &lt;a href=&quot;http://blog.developpez.com&quot; title=&quot;Blogs des developpeurs&quot; hreflang=&quot;fr&quot;&gt;blogs de developpez.com&lt;/a&gt;...&lt;/div&gt;</content:encoded>
	<dc:date>2010-10-05T22:43:54+00:00</dc:date>
	<dc:creator>vinc-mai</dc:creator>
</item>
<item rdf:about="http://blog.developpez.com/xmlsrv/9348@http://blog.developpez.com">
	<title>Vincent Carmona: Adapter une bibliothèque C pour ruby (3)</title>
	<link>http://blog.developpez.com/zik/p9348/ruby/adapter-une-bibliotheque-c-pour-ruby-3/</link>
	<content:encoded>&lt;p&gt;Cet article fait suite au &lt;a href=&quot;http://blog.developpez.com/zik/p9266/ruby/adapter-une-bibliotheque-c-pour-ruby-1/&quot;&gt;premier&lt;/a&gt; et &lt;a href=&quot;http://blog.developpez.com/zik/p9343/ruby/adapter-une-bibliotheque-c-pour-ruby-2/&quot;&gt;deuxième&lt;/a&gt; billets dans lesquels nous avons vu comment créer un objet de la classe &lt;b&gt;TagLib::File&lt;/b&gt;. Cet objet utilise les fonctions de la bibliothèque taglib, écrite en C, afin d'accéder aux tags de fichiers audio. Dans ce billet, nous verrons comment obtenir les valeurs des tags et comment modifier un tag.&lt;/p&gt;

&lt;p class=&quot;bMore&quot;&gt;&lt;a href=&quot;http://blog.developpez.com/zik/p9348/ruby/adapter-une-bibliotheque-c-pour-ruby-3/#more9348&quot;&gt;» Lire la suite!&lt;/a&gt;&lt;/p&gt;			&lt;div style=&quot;font-size: 0.8em;&quot;&gt;&lt;a href=&quot;http://blog.developpez.com/zik/p9348/ruby/adapter-une-bibliotheque-c-pour-ruby-3/&quot; title=&quot;&quot;&gt;Billet original&lt;/a&gt; publié sur les &lt;a href=&quot;http://blog.developpez.com&quot; title=&quot;Blogs des developpeurs&quot; hreflang=&quot;fr&quot;&gt;blogs de developpez.com&lt;/a&gt;...&lt;/div&gt;</content:encoded>
	<dc:date>2010-10-04T14:47:34+00:00</dc:date>
	<dc:creator>vinc-mai</dc:creator>
</item>
<item rdf:about="http://gcolpart.evolix.net/blog21/?p=356">
	<title>Gr&amp;#233;gory Colpart: Mon compte-rendu de DebConf 10 à New York</title>
	<link>http://gcolpart.evolix.net/blog21/mon-compte-rendu-de-debconf-10-a-new-york/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://debconf10.debconf.org/&quot;&gt;DebConf&lt;/a&gt; est la conférence annuelle des développeurs du projet &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;. Cela permet aux développeurs et contributeurs de Debian d’assister à des présentations techniques, sociales et politiques, mais aussi de se rencontrer et travailler ensemble. Cette année, la &lt;a href=&quot;http://debconf10.debconf.org/&quot;&gt;11e DebConf&lt;/a&gt; s’est tenue à New York du 1er au 7 août. &lt;a href=&quot;http://www.evolix.fr/&quot;&gt;Evolix&lt;/a&gt; a sponsorisé cette conférence et j’étais donc sur place, voici mon résumé de cette semaine.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://gcolpart.evolix.net/pics/debconf_0.jpg&quot; alt=&quot;&quot; class=&quot;alignright&quot; title=&quot;DebConf&quot; /&gt; Premiers pas plutôt festifs le vendredi soir avec le SysAdmin Day dans un bar à Manhattan puis direction Brooklyn pour une Debian Party organisée par &lt;a href=&quot;http://www.nycresistor.com/&quot;&gt;NYC Resistor&lt;/a&gt;, un collectif local de hackers en électronique à l’origine de &lt;a href=&quot;http://makerbot.com/&quot;&gt;MakerBot&lt;/a&gt;, une imprimante 3D Open Source. Samedi c’est l’arrivée à Columbia University, l’université américaine qui accueille la DebConf 10. Une bonne partie des participants est hébergée sur le campus universitaire, dans des chambres avec accès haut-débit et une cafétéria à volonté.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://gcolpart.evolix.net/pics/debconf_1.jpg&quot; alt=&quot;&quot; class=&quot;alignright&quot; title=&quot;DebConf&quot; /&gt;C’est donc le dimanche 1er août que commence la DebConf avec des présentations orientées grand public pour cette première journée appelée le “Debian Day”. Un &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/673.en.html&quot;&gt;grand message de bienvenue&lt;/a&gt; pour un public plus large en ce premier jour, puis enchaînement des présentations. J’ai tout d’abord assisté à une &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/544.en.html&quot;&gt;présentation sur le sysadmin&lt;/a&gt; par François Marier qui a livré toutes ses astuces et une série de packages intéressants (&lt;a href=&quot;http://packages.debian.org/unattended-upgrades&quot;&gt;unattended-upgrades&lt;/a&gt;, &lt;a href=&quot;http://packages.debian.org/safe-rm&quot;&gt;safe-rm&lt;/a&gt;, &lt;a href=&quot;http://packages.debian.org/etckeeper&quot;&gt;etckeeper&lt;/a&gt;, &lt;a href=&quot;http://packages.debian.org/fcheck&quot;&gt;fcheck&lt;/a&gt;, &lt;a href=&quot;http://packages.debian.org/fwknop&quot;&gt;fwknop&lt;/a&gt;, etc.). J’ai d’ailleurs pu échanger par la suite avec lui d’autres informations, sachant qu’il travaille dans une boîte similaire à Evolix : &lt;a href=&quot;http://www.catalyst.net.nz/&quot;&gt;Catalyst&lt;/a&gt; située en Nouvelle-Zélande ! J’ai ensuite assisté à la &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/609.en.html&quot;&gt;présentation de Stefano Zacchiroli&lt;/a&gt;, l’actuel leader Debian, qui encourage fortement les développeurs à réaliser des NMU (Non Maintainer Upload), c’est-à-dire la publication d’un package par un autre développeur que celui responsable officiellement. J’ai ensuite poursuivi avec la &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/537.en.html&quot;&gt;présentation du Google Summer of Code 2010 de Debian&lt;/a&gt; : une présentation générale puis plusieurs “étudiants” expliquent leur projet en cours : Debian-Installer pour OpenMoko, GUI pour aptitude en QT, etc. D’autres présentations ont ensuite suivies, mais j’ai plutôt été découvrir le “hacklab” : une pièce pourvue de multiprises, switches et points d’accès afin de permettre à plusieurs dizaines de personnes de travailler/hacker. Le “Debian Day” a été un franc succès avec plusieurs centaines de participants. En soirée, c’est l’heure du &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/644.en.html&quot;&gt;coup d’envoi “officiel” de la DebConf&lt;/a&gt; par Gabriella Coleman, l’une des organisatrices de la DebConf 10, qui présente avec humour la semaine à venir, avec un petit retour en images sur les éditions précédentes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://gcolpart.evolix.net/pics/debconf_2.jpg&quot; alt=&quot;&quot; class=&quot;alignright&quot; title=&quot;DebConf&quot; /&gt; Deuxième jour, on a le droit à un &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/569.en.html&quot;&gt;Bits from DPL&lt;/a&gt; en direct de la part de Stefano Zacchiroli (au lieu du traditionnel mail). Ensuite, il y a de nombreuses présentations. Durant DebConf, il y en aura plus de 100 au total, réparties dans 3 salles : Davis (avec vidéo), 414 Schapiro et Interschool (avec vidéo). Le choix est parfois difficile ! Pour ma part, j’ai assisté en fin de matinée à la &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/568.en.html&quot;&gt;présentation de la structure américaine à but non lucractif SPI&lt;/a&gt; : c’est elle qui gère les droits de la marque Debian, mais pas seulement : OpenOffice.org, Drupal, PostgreSQL, Alfresco, etc. de nombreux projets de logiciels libres utilisent cette structure légale ! Dans l’après-midi, c’est Mark Shuttleworth, fondateur d’Ubuntu et CEO de Canonical, qui nous &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/531.en.html&quot;&gt;présente le travail réalisé pour améliorer l’interface graphique des netbooks&lt;/a&gt;, notamment par l’intermédiaire du projet &lt;a href=&quot;http://launchpad.net/ayatana&quot;&gt;Ayatana&lt;/a&gt;. Puis, Jorge Castro, responsable chez Canonical des relations avec les développeurs extérieurs, &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/636.en.html&quot;&gt;parle de la collaboration entre Ubuntu et Debian&lt;/a&gt;. On notera que toute une équipe de Canonical est venue à DebConf et que les relations avec Debian semblent devenir plus sereines. Le soir venu, c’est l’heure de &lt;a href=&quot;http://wiki.debconf.org/wiki/DebConf10/CheeseWineBoF&quot;&gt;Wine&amp;amp;Cheese&lt;/a&gt;, un évènement devenu incontournable pour une DebConf : imaginez des centaines de fromages et alcools venus du monde entier (Italie, Allemagne, France, Mexique, Brésil, USA, Taïwan, Pologne, Kazhastan, Espagne, Nouvelle-Zélande, Corse, Vénézuela, Hollande, Marseille, Irlande, Angleterre, Japon, etc. etc.) et plus d’une centaine de développeurs Debian lâchés dessus pendant des heures… le résultat est… indescriptible ! Pour ma part, j’avais apporté un rosé Bandol, des bières La Cagole, du Banon et de la Tapenade… qui n’ont pas fait long feu.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://gcolpart.evolix.net/pics/debconf_3.jpg&quot; alt=&quot;&quot; class=&quot;alignright&quot; title=&quot;DebConf&quot; /&gt; Troisième jour et l’on débute par un &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/641.en.html&quot;&gt;talk d’Eben Moglen&lt;/a&gt;, avocat de la FSF, qui rappelle les dangers du Cloud Computing comme la gestion des données privées. Sa réponse : “Chacun devrait avoir un serveur chez soi” et il évoque la FreedomBox, une boi-boîte que tout le monde aurait chez soi pour faire office de petit serveur avec les fonctionnalités classiques (web, messagerie, VoIP). Cette idée rencontre un certain enthousiasme et plusieurs réfléchissent déjà à la &lt;a href=&quot;http://wiki.debian.org/FreedomBox&quot;&gt;réalisation de cette idée&lt;/a&gt; ! J’ai ensuite suivi une succession de présentations sur le thème de l’entreprise. On a parlé du &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/587.en.html&quot;&gt;déploiement de machines avec le logiciel Puppet&lt;/a&gt;, de &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/556.en.html&quot;&gt;l’installation automatisée de Debian avec FAI et Gosa&lt;/a&gt;, notamment présentée par Mickaël Bank, un développeur allemand très actif dans Debian. On a également des témoignages très intéressants : Russ Allbery, administrateur système et réseau à l’université de Standford en Californie, &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/578.en.html&quot;&gt;explique quels sont les arguments en faveur de Debian en entreprise et en profite pour présenter la gestion de Debian à Standford&lt;/a&gt; ; Faidon Liambotis, sysadmin chez GRNET (un opérateur public grec), &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/647.en.html&quot;&gt;présente leur utilisation de Debian&lt;/a&gt; mais aussi leurs choix en terme de déploiement (Puppet/FAI) ou de virtualisation (KVM/Ganeti). Pour terminer la journée, Guido Trotter de chez Google, nous &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/529.en.html&quot;&gt;parle des fonctionnalités réseau intéressantes sous Linux&lt;/a&gt; (VLAN, tunnels, routing, etc.). Une journée riche en idées et en informations ! En soirée, nous avons visualisé le film Open Source &lt;a href=&quot;http://www.sitasingstheblues.com/watch.html&quot;&gt;Sita Sings the Blues&lt;/a&gt; et Nina Paley &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/545.en.html&quot;&gt;nous a expliqué son choix d’une licence libre pour son film&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://gcolpart.evolix.net/pics/debconf_4.jpg&quot; alt=&quot;&quot; class=&quot;alignright&quot; title=&quot;DebConf&quot; /&gt; Le quatrième jour, c’est le Day Trip. Il s’agit classiquement d’une journée consacrée à des activités touristiques extérieures. Nous avons été visiter l’église Trinity Church à Manhattan où le drame du 11 septembre 2001 a mis un superbe orgue hors d’usage, remplacé temporairement par un orgue électronique “Powered by Linux”… qui a finalement été conservé en raison de sa qualité. Keith Packard, l’un des gourous de X.org employé chez Intel, a joué quelques minutes sur cet orgue. Ensuite, direction la plage de Coney Island. Puis un match de baseball où Stefano Zacchiroli lancera la première balle du match.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://gcolpart.evolix.net/pics/debconf_5.jpg&quot; alt=&quot;&quot; class=&quot;alignright&quot; title=&quot;DebConf&quot; /&gt; Cinquième jour, on reprend avec un &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/543.en.html&quot;&gt;BoF (un BoF=Birds of a Feather est une discussion informelle de groupe) sur la virtualisation&lt;/a&gt; où plusieurs personnes témoignent de leurs expériences et connaissances sur le sujet. Pas mal d’informations intéressantes, notamment sur le couple Ganeti/KVM pas mal mis en avant par Iustin Pop, l’un des développeurs de Ganeti employé chez Google. J’y apprends notamment que KVM gère une notion de mémoire partagée et ainsi démarrer une 2e machine virtuelle avec un même OS ne consommerait pas de mémoire supplémentaire sur le système hôte ! Suite des présentations, notamment une &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/621.en.html&quot;&gt;portant sur DebConf 12&lt;/a&gt; qui pourrait peut-être se dérouler au Brésil. Et fin de la matinée avec &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/682.en.html&quot;&gt;François Marier qui présente&lt;/a&gt; le projet &lt;a href=&quot;http://launchpad.net/libravatar&quot;&gt;Libravatar&lt;/a&gt; permettant d’offrir une alternative à Gravatar, l’outil centralisé de gestion des avatars. Ses idées sont de se baser sur les DNS pour répartir les avatars pour chaque noms de domaine. Il a déjà commencé à développer une application en Django pour gérer cela. Suite de la journée avec un &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/573.en.html&quot;&gt;BoF sur Lintian&lt;/a&gt; (outil de vérification de la conformité des packages Debian) géré par Russ Allbery. Puis j’ai assisté à une présentation de Guido Günther qui &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/634.en.html&quot;&gt;a expliqué comment gérer son packaging avec Git&lt;/a&gt; et notamment git-buildpackage (très intéressant pour moi car je gère déjà mes packages Debian comme ça). Ensuite, petite pause sportive, car une dizaine de développeurs Debian a été participé à un cross de 5 kms dans le Bronx, avec des &lt;a href=&quot;http://vctconline.ning.com/page/xc-summer-series-results-2010#vctc_xc_6&quot;&gt;résultats honorables&lt;/a&gt; !&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://gcolpart.evolix.net/pics/debconf_6.jpg&quot; alt=&quot;&quot; class=&quot;alignright&quot; title=&quot;DebConf&quot; /&gt; Sixième jour, on débute par &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/662.en.html&quot;&gt;Bits from Release Team&lt;/a&gt; qui déclare en direct que Squeeze, la prochaine version stable, est désormais freezée ! Un scoop à DebConf ! C’est ensuite Stefano Zacchiroli qui nous &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/619.en.html&quot;&gt;présente son travail en cours sur une amélioration de la gestion des dépendances&lt;/a&gt;, non seulement pour Debian mais aussi pour les autres distributions : plus de détails sur le site du projet &lt;a href=&quot;http://www.mancoosi.org/&quot;&gt;Mancoosi&lt;/a&gt;. C’est ensuite la traditionnelle &lt;a href=&quot;http://wiki.debconf.org/wiki/DebConf10/GroupPhoto&quot;&gt;photo de groupe&lt;/a&gt;. En début d’après-midi, Margarita Manterola dresse un constat très lucide de l’état de Debian avec son talk &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/627.en.html&quot;&gt;Making Debian Rule, again.&lt;/a&gt; Puis en fin d’après-midi, c’est un &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/681.en.html&quot;&gt;BoF très apprécié mené par Joey Hess sur CUT (Constantly Usable Testing)&lt;/a&gt; qui explore les possibilités d’avoir une distribution Testing utilisable en permanence ! Le soir venu, c’est un &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/684.en.html&quot;&gt;BoF sur l’utilisation d’OpenPGP&lt;/a&gt; et la classique &lt;a href=&quot;http://people.debian.org/~anibal/ksp-dc10/ksp-dc10.html&quot;&gt;Keysigning Party&lt;/a&gt; qui a regroupé plusieurs dizaines de participants.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://gcolpart.evolix.net/pics/debconf_7.jpg&quot; alt=&quot;&quot; class=&quot;alignright&quot; title=&quot;DebConf&quot; /&gt; Septième et dernier jour, encore de nombreuses présentations. J’ai notamment assisté à celle de Philippe Kern, membre de la Release Team, qui &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/552.en.html&quot;&gt;a parlé du management de la version stable et de volatile&lt;/a&gt;. On notera par exemple qu’on peut désormais corriger des bugs en priorité “Important” dans les points de Release. La suite ce sont des fameux &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/646.en.html&quot;&gt;Lightnings Talks&lt;/a&gt;, une dizaine de présentations très courtes : une qui suggère d’arrêter complètement d’utiliser les mots de passe, une autre sur le logiciel &lt;a href=&quot;http://smarden.org/runit/&quot;&gt;runit&lt;/a&gt;, une autre sur les éclairs (lightnings !) ou encore l’historique en photos des Wine&amp;amp;Cheese Party ! Fun et instructif. Puis c’est l’heure de &lt;a href=&quot;http://penta.debconf.org/dc10_schedule/events/645.en.html&quot;&gt;la conférence de clôture&lt;/a&gt;, où l’on remet des prix à ceux qui ont corrigé le plus de bugs mais surtout tous les volontaires sont vivement remerciés et j’en profite pour adresser une nouvelle fois mes remerciements à :&lt;br /&gt;
- L’équipe qui a organisé cette DebConf 10 : un travail impressionnant pour un résultat professionnel et communautaire à la fois : on frôle la perfection !&lt;br /&gt;
- L’équipe vidéo qui a fait un travail génial et vous pouvez ainsi retrouver &lt;a href=&quot;http://meetings-archive.debian.net/pub/debian-meetings/2010/debconf10/high/&quot;&gt;l’ensemble des talks en vidéo&lt;/a&gt;,&lt;br /&gt;
- Les centaines de personnes sympas et passionnées qui contribuent à faire de Debian une distribution de grande qualité… et qui sait évoluer, la preuve avec les sujets abordés lors de cette DebConf ! &lt;/p&gt;
&lt;p&gt;Petite conclusion de cette semaine intensive, comme vous avez pu le lire : j’ai pu acquérir de nombreuses informations et faire le plein de nouvelles idées, mais aussi avoir des contacts réels avec d’autres développeurs et comprendre encore mieux le fonctionnement “social” de Debian. C’est donc très positif et cela va me permettre d’améliorer mon travail quotidien au sein d’&lt;a href=&quot;http://www.evolix.fr/&quot;&gt;Evolix&lt;/a&gt;, mais aussi réfléchir à d’autres projets et me motiver pour contribuer davantage à Debian. Debian rules !&lt;/p&gt;</content:encoded>
	<dc:date>2010-08-18T11:52:16+00:00</dc:date>
	<dc:creator>Gregory Colpart</dc:creator>
</item>
<item rdf:about="urn:md5:d67ab299c9cdda49a8cd2b60f05dc2a5">
	<title>Olivier Berger (perso): Déclaration d'impôts sous Debian testing : difficultés mais contournement trouvé</title>
	<link>http://www.olivierberger.com/weblog/index.php?post/2008/05/18/103-declaration-d-impots-sous-debian-testing-difficultes-mais-contournement-trouve</link>
	<content:encoded>&lt;p&gt;J'ai essayé de télédéclarer mes impôts sur le revenu depuis ma Debian (testing) avec iceweazel (plugin Java Sun du paquet &lt;code&gt;sun-java5-plugin&lt;/code&gt;).&lt;/p&gt;


&lt;p&gt;Tou allait bien jusqu'à la phase finale de signature, où j'obtenais des erreurs de ce genre (dans la console Java) :&lt;/p&gt;


&lt;pre&gt;java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: local/.TaoUSign/libjsec.so
        at java.lang.Runtime.load0(Runtime.java:767)
        at java.lang.System.load(System.java:1005)
        at com.dictao.plfm.a.b(Unknown Source)
        at signview.b(Unknown Source)
        at signview.start(Unknown Source)
        at sun.applet.AppletPanel.run(AppletPanel.java:465)
        at java.lang.Thread.run(Thread.java:619)&lt;/pre&gt;

&lt;p&gt;Le problème apparemment, c'est que :&lt;/p&gt;


&lt;pre&gt;$ ldd ~/local/.TaoUSign/libjsec.so 
	linux-gate.so.1 =&amp;gt;  (0xffffe000)
	libnspr4.so =&amp;gt; /usr/lib/libnspr4.so (0xb7f14000)
	libpthread.so.0 =&amp;gt; /lib/i686/cmov/libpthread.so.0 (0xb7efc000)
	libnss3.so =&amp;gt; not found
	libdl.so.2 =&amp;gt; /lib/i686/cmov/libdl.so.2 (0xb7ef7000)
	libm.so.6 =&amp;gt; /lib/i686/cmov/libm.so.6 (0xb7ed2000)
	libc.so.6 =&amp;gt; /lib/i686/cmov/libc.so.6 (0xb7d84000)
	/lib/ld-linux.so.2 (0x80000000)&lt;/pre&gt;


&lt;p&gt;Mais j'ai trouvé le contournement suivant pour que ça passe (après avoir complètement quitté iceweasel) : lancer iceweasel depuis le répertoire contenant libnss3.so, avec LD_LIBRARY_PATH positionnée à &quot;.&quot; :&lt;/p&gt;


&lt;pre&gt;$ cd /usr/lib/iceweasel/
$ LD_LIBRARY_PATH=. iceweasel&lt;/pre&gt;

&lt;p&gt;Et voilà, ça marche mieux.&lt;/p&gt;</content:encoded>
	<dc:date>2008-05-18T19:55:48+00:00</dc:date>
	<dc:creator>olberger</dc:creator>
</item>
<item rdf:about="urn:md5:574ad1b3c73cd722dc7397a40f9a4cf9">
	<title>Olivier Berger (perso): Encore un logo debian détourné ?</title>
	<link>http://www.olivierberger.com/weblog/index.php?post/2007/10/15/90-encore-un-logo-debian-detourne</link>
	<content:encoded>&lt;p&gt;Mais d'où vient ce logo&lt;/p&gt;


&lt;p&gt;&lt;del&gt;REMOVED&lt;/del&gt;&lt;/p&gt;


&lt;p&gt;Plus d'infos &lt;a href=&quot;http://www.cgt.fr/internet/&quot; hreflang=&quot;fr&quot;&gt;là&lt;/a&gt; ou &lt;a href=&quot;http://docsite.cgt.fr/1191588200.pdf&quot; hreflang=&quot;fr&quot;&gt;là&lt;/a&gt; (en noir et blanc).&lt;/p&gt;


&lt;p&gt;Update 20071016 : bon, ben, les camarades de la CGT ont réagi promptement et retiré le logo &quot;contrefait&quot;. Reste les camarades de &lt;a href=&quot;http://www.olivierberger.com/weblog/index.php/2007/06/15/83-debian-water-no-riverrock&quot; hreflang=&quot;en&quot;&gt;coca-cola&lt;/a&gt; &lt;img src=&quot;http://www.olivierberger.com/weblog/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2007-10-15T17:01:40+00:00</dc:date>
	<dc:creator>olberger</dc:creator>
</item>
<item rdf:about="http://machard.org/blog/index.php/archives/2006/04/19/et-si-les-ecologistes-setaient-trompe-au-sujet-du-nucleaire/">
	<title>Pierre Machard: Et si les écologistes s’étaient trompés au sujet du nucléaire?</title>
	<link>http://machard.org/blog/index.php/archives/2006/04/19/et-si-les-ecologistes-setaient-trompe-au-sujet-du-nucleaire/</link>
	<content:encoded>&lt;p&gt;Hier en lisant &lt;a href=&quot;http://hardware.slashdot.org/article.pl?sid=06/04/17/1939227&quot;&gt;slashdot&lt;/a&gt; je suis tombé sur un billet qui mentionnait que Patrick Moore (un des fondateurs de Greenpeace), dans &lt;a href=&quot;http://www.washingtonpost.com/wp-dyn/content/article/2006/04/14/AR2006041401209.html&quot;&gt;un éditorial du Washington Post&lt;/a&gt;, expliquait que l’énergie nucléaire était la seule source d’énergie qui pouvait couvrir nos besoins. &lt;/p&gt;
	&lt;p&gt;&lt;i&gt;« Thirty years on, my views have changed, and the rest of the environmental movement needs to update its views, too, because nuclear energy may just be the energy source that can save our planet from another possible disaster: catastrophic climate change. »&lt;/i&gt;&lt;/p&gt;
	&lt;p&gt;Ce qui dans la langue de Molière pourrait donner quelque chose comme :&lt;br /&gt;
« En 30 ans, mes idées ont évolué, et le mouvement écologiste doit également évoluer dans ses considérations, car l’énergie nucléraire est peut être la source d’énergie qui peut préserver notre planète d’un autre risque probable : un boulversement climatique. »&lt;/p&gt;
	&lt;p&gt;&lt;a href=&quot;http://fr.wikipedia.org/wiki/Catastrophe_de_Tchernobyl&quot;&gt;La catastrophe de Tchernobyl&lt;/a&gt; a eu lieue il y a 20 ans, néanmoins, il convient de réfléchir sur nos besoins en énergie, développer les énergies non-fossiles, mais aussi de se rendre compte que nous n’avons pas d’alternative au nucléaire, sans quoi nous serions obligé d’éteindre tous nos ordinateurs. &lt;/p&gt;</content:encoded>
	<dc:date>2006-04-19T09:01:15+00:00</dc:date>
	<dc:creator>migus</dc:creator>
</item>
<item rdf:about="http://machard.org/blog/index.php/archives/2006/03/15/une-belle-explication-des-drm/">
	<title>Pierre Machard: Une belle explication des DRM</title>
	<link>http://machard.org/blog/index.php/archives/2006/03/15/une-belle-explication-des-drm/</link>
	<content:encoded>&lt;p&gt;Hier soir dans l’hémicycle de l’Assemblée Nationale j’ai eu la chance d’entendre une magnifique définition de ce qu’est un DRM. M. Suguenot (UMP) a très didcatiquement détaillé comment fonctionne un DRM. Je vous copie/colle ici le verbatim du propos de M. Suguenot. La seule erreur à noter est l’utilisation du verbe crypter là où nous aurions dû trouver chiffrer :&lt;/p&gt;
	&lt;p&gt;&lt;i&gt;« Lorsque vous achetez de la musique sur internet, les DRM sont déjà systématiquement utilisés. Dans le système de Microsoft adopté par la Fnac et Virgin, le serveur de votre fournisseur crypte le morceau de musique à l’aide d’une clef secrète, que vous ne recevrez naturellement pas. Vous devez alors utiliser un lecteur compatible, Windows Media Player par exemple. Ce lecteur, détectant que le fichier est crypté, protégé par un DRM, prend contact avec le serveur pour lui demander la clé secrète nécessaire à la lecture. Avant de la lui envoyer, le serveur lui demande le numéro de série de votre ordinateur puis met à jour votre fiche client en y inscrivant le numéro de série du morceau concerné suivi de celui de l’ordinateur sur lequel vous désirez l’écouter, avant de fabriquer un fichier qu’on appelle licence. Cette licence contient la clé secrète de décryptage, mais aussi une liste de règles précisant ce que vous êtes autorisé à faire avec le morceau en question. Le serveur envoie cette licence à votre lecteur qui la « cache » sur votre disque dur. Disposant alors du morceau de musique et de sa licence, il vérifie dans celle-ci que vous avez bien le droit de lire celui-là. Si tout est en règle, vous pouvez, enfin, écouter votre musique !&lt;/i&gt;&lt;/p&gt;&lt;i&gt;
	&lt;/i&gt;&lt;p&gt;&lt;i&gt;Comprenant mieux le fonctionnement des DRM, on imagine les règles qu’ils permettent d’imposer. Si vous transférez le morceau sur une autre machine, le lecteur, ne trouvant plus de licence, va à nouveau contacter le serveur pour en obtenir une. Votre fiche client sera mise à jour et le serveur « saura » que vous avez installé ce morceau une deuxième fois. Si vous dépassez le nombre maximal d’ordinateurs autorisés, cinq avec iTunes par exemple, le serveur refusera de vous accorder une nouvelle licence, vous devrez lui demander d’en retirer une à un ordinateur pour la transférer à un autre. La licence peut également imposer une limitation dans le temps de l’utilisation d’un fichier, un délai au-delà duquel le lecteur le détruira.  »&lt;/i&gt;
&lt;/p&gt;</content:encoded>
	<dc:date>2006-03-15T10:36:52+00:00</dc:date>
	<dc:creator>migus</dc:creator>
</item>

</rdf:RDF>
