<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de David Côme</title>
	<atom:link href="https://blog.developpez.com/davidbrcz/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/davidbrcz</link>
	<description></description>
	<lastBuildDate>Sat, 11 Apr 2009 10:58:56 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>De l&#8217;utilisation des formats propriétaires.</title>
		<link>https://blog.developpez.com/davidbrcz/p7471/divers/de_l_utilisation_des_formats_proprietair</link>
		<comments>https://blog.developpez.com/davidbrcz/p7471/divers/de_l_utilisation_des_formats_proprietair#comments</comments>
		<pubDate>Fri, 10 Apr 2009 22:28:51 +0000</pubDate>
		<dc:creator><![CDATA[davidbrcz]]></dc:creator>
				<category><![CDATA[Divers]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Aujourd&#8217;hui, il est m&#8217;est arrivé une petite anecdote. J&#8217;étais au CDI tranquillement en train de chercher du vocabulaire sur le site wordreference.com (au passage, très bon site) quand une personne m&#8217;interpelle et me demande si je peux échanger mon poste avec elle. N&#8217;ayant besoin que de firefox, je le fais sans problème. Quelques minutes après, je regarde le logiciel dont elle avait besoin: Office 2007 pour gérer le format docx. Je me permis de faire [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui, il est m&rsquo;est arrivé une petite anecdote. J&rsquo;étais au CDI tranquillement en train de chercher du vocabulaire sur le site wordreference.com (au passage, très bon site) quand une personne m&rsquo;interpelle et me demande si je peux échanger mon poste avec elle. N&rsquo;ayant besoin que de firefox, je le fais sans problème. Quelques minutes après, je regarde le logiciel dont elle avait besoin: Office 2007 pour gérer le format docx.</p>
<p>Je me permis de faire remarquer à cette personne qu&rsquo;être dépendant d&rsquo;un format spécial, c&rsquo;est du suicide informatique. Regardons pourquoi.<br />
<span id="more-5"></span><br />
Il faut avant toute chose remarquer que les données sont en informatique notre bien le plus précieux, ce sont elles qui sont importantes. Perdre des données peut signifier que perdre des quantités phénoménales d&rsquo;argent. Une fois ceci compris, ce qui importe c&rsquo;est comment pouvons nous exploiter nos données, c&rsquo;est à dire, avec quels logiciels pouvons nous les lire et là se pose la question du format des données.</p>
<p>Si celles si sont dans un format dit ouvert ou libre, tout le monde a accès aux spécifications du format et peut créer un logiciel pour travailler avec ces données. Prenons Open Office (qui offre aussi un pare-feu, comme tout le monde le sais). Le principal format utilisé par Open Office est le format odf (pour Open Document Format). Le format est disponible librement en <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office">téléchargement</a> et est implémentable gratuitement par tous, comme le précisent les termes de la licence: on le retrouve par exemple dans StarOffice, KWord ou encore Abiword. On peut donc dire que la pérennité des données est assurée, on est sûr de pouvoir les lire un jour.</p>
<p>En revanche, si ces données sont dans un format dit fermé ou propriétaire, seul le fournisseur du logiciel a accès aux spécifications du format. Seul lui est en mesure de fournir un logiciel pour exploiter les données. Il est libre de faire ce qu&rsquo;il veut avec. Par exemple, il peut arrêter de produire le logiciel du jour au lendemain, modifier le logiciel pour ne plus lire les documents et faire payer 150&#8364; par licence pour que le logiciel puisse à nouveau lire les données. En somme, c&rsquo;est <strong>LUI</strong> qui est le vrai propriétaire de <strong>VOS</strong> données, pas vous. En utilisant des formats propriétaires, vous enfermez vos données dans une cage dont la clé ne vous est que prêtée sans aucun contrat. D&rsquo;ailleurs, si vous voulez lire vos données sur un autre PC, il vous faut le logiciel de l&rsquo;éditeur, ce qui implique de repayer une licence pour lire VOS données alors que vous en avez déjà une sur votre poste.</p>
<p>En conclusion, j&rsquo;espère que ce petit billet vous aura permis de prendre conscience du danger économique que représentent les formats propriétaires et je ne pourrai que vous inciter à utiliser des formats libres.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Installation d&#8217;une webcam Logitech E2500 sous Debian.</title>
		<link>https://blog.developpez.com/davidbrcz/p7470/linux/installation_d_une_wabcam_logitech_e2500</link>
		<comments>https://blog.developpez.com/davidbrcz/p7470/linux/installation_d_une_wabcam_logitech_e2500#comments</comments>
		<pubDate>Fri, 10 Apr 2009 18:51:21 +0000</pubDate>
		<dc:creator><![CDATA[davidbrcz]]></dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[J&#8217;ai récemment fait l&#8217;acquisition d&#8217;une webcam Logitech E2500 et à ma grande honte, je n&#8217;ai pas vérifié si elle était compatible UVC avant. Donc une fois sortie de sa boite, aucune réaction. Mais il y a une petite manipulation pour la faire marcher: 1) Récupérez les sources du module gspca que votre distribution fournit. 2) Récupérez ce patch 3) Appliquez le patch au fichier gspca_core.c via la commande patch. 4) Construisez le module en lancant [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>J&rsquo;ai récemment fait l&rsquo;acquisition d&rsquo;une webcam Logitech E2500 et à ma grande honte, je n&rsquo;ai pas vérifié si elle était compatible UVC avant. Donc une fois sortie de sa boite, aucune réaction. Mais il y a une petite manipulation pour la faire marcher:</p>
<p>1) Récupérez les sources du module gspca que votre distribution fournit.<br />
2) Récupérez <a href="http://come-david.developpez.com/autre/quickcamE2500andalllogitech.diff.tar.gz">ce patch</a><br />
3) Appliquez le patch au fichier gspca_core.c via la commande patch.<br />
4) Construisez le module en lancant en root le script gspca_build<br />
5) Branchez votre webcam et vous devriez voir apparaitre video0 dans /dev</p>
<p>Si ca ne marche pas, vérifiez qu&rsquo;il n&rsquo;existe pas un autre module gspca.ko.<br />
Pour les différencier, il suffit d&rsquo;utiliser md5sum et remplacer l&rsquo;ancien via un coup de cp (ou mv si vous souhaitez conserver l&rsquo;ancien).</p>
<p>Enjoy it ! </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment éviter que les énumérations polluent ?</title>
		<link>https://blog.developpez.com/davidbrcz/p6157/c/title_101</link>
		<comments>https://blog.developpez.com/davidbrcz/p6157/c/title_101#comments</comments>
		<pubDate>Sun, 03 Aug 2008 21:20:34 +0000</pubDate>
		<dc:creator><![CDATA[davidbrcz]]></dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les énumérations peuvent être source de problèmes de pollution de portée, comment les résoudres ? Un rappel sur les énumérations Les énumérations sont un outil très puissant puisqu&#8217;elle permettent de définir des types n&#8217;acceptant que certaines valeurs bien précises. Exemple enum Carte {Pique,Coeur,Carreau, Trefle}; va définir un type Carte ne pouvant prendre que les valeurs Pique,Coeur,Carreau ou encore Trefle. Il est aussi possible de définir une énumération anonyme. Dans ce cas, les valeurs dans l&#8217;énumération [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Les énumérations peuvent être source de problèmes de pollution de portée, comment les résoudres ?<br />
<span id="more-1"></span><br />
<strong>Un rappel sur les énumérations</strong><br />
Les énumérations sont un outil très puissant puisqu&rsquo;elle permettent de définir des types n&rsquo;acceptant que certaines valeurs bien précises. </p>
<p>Exemple</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">enum Carte {Pique,Coeur,Carreau, Trefle};</div></div>
<p>va définir un type Carte ne pouvant prendre que les valeurs Pique,Coeur,Carreau ou encore Trefle.</p>
<p>Il est aussi possible de définir une énumération anonyme. Dans ce cas, les valeurs dans l&rsquo;énumération sont tout simplement des constantes.<br />
Exemple:<br />
<code class="codecolorer text default"><span class="text">enum {alpha,beta,release};</span></code> va définir 3 constantes : alpha, beta et release.</p>
<p>Mais dans tous les cas, les valeurs définies seront dans le namespace global. Autrement dit,si on souhaite avoir une constante de même nom dans deux énumérations différentes, ce n&rsquo;est pas possible.</p>
<p>Exemple:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">enum Fruit {Pomme, Orange}; <br />
enum Couleur {Couleur, Orange}; //ne compilera pas, Orange est deja  defini.</div></div>
<p>Ce n&rsquo;est pas très pratique, avouons le. Comment peut-on remédier à cela ?</p>
<p><strong>Limiter la portée des énumérations globales</strong><br />
Comme nous l&rsquo;avons vu, une énumération définie le namespace globale va le polluer entiérement. Ce que propose le C++ pour éviter les conflits de nom est de pouvoir créer son propre namespace. le namespace (ou est espace de nom en français), est un mécanisme permettant de regrouper dans une même portée un ensemble de classes, fonctions ou encore d&rsquo;objets ayant des relations en communs. Le namespace le plus connu est std: il représente le namespace de la bibliothèque standard.</p>
<p>Donc pour résoudre notre problème de conflit de nom, il suffit de définir notre énumération dans un namespace personnel. On appel souvent ce namespace de la même façon que l&rsquo;énumération de façon à pouvoir écrire des choses comme:</p>
<p><code class="codecolorer text default"><span class="text">Carte::Type c= Carte::Pique;</span></code><br />
avec la définition de l&rsquo;énumération sous la forme:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">namespace Carte <br />
{ <br />
&nbsp; enum Type {Pique,Trefle,Coeur,Carreau}; <br />
}</div></div>
<p><strong>Limiter la portée des énumérations locales à une classe</strong><br />
Cette solution est adaptée aux énumérations globales, mais que se passe t&rsquo;il pour les énumérations locales à une classe ?</p>
<p>En effet, en C++ on peut définir une énumération dans une classe.<br />
Exemple:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">//classe represantant un fruit avec un colorant alimentaire <br />
class FruitColore <br />
{ <br />
&nbsp; enum Fruit {Pomme, Orange}; <br />
&nbsp; enum Couleur {Vert,Orange}; <br />
};</div></div>
<p>Mais cette classe ne compilera pas, à cause de la redéfinition d&rsquo;orange. et on ne peut pas passer par un namespace, puisque un namespace dans une classe n&rsquo;aurait pas beaucoup de sens.</p>
<p>La solution est de passer par les structures. En definissant l&rsquo;énumération dans une structure, on limite sa portée à la dite structure.</p>
<p>Exemple:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">class FruitColore <br />
{ <br />
&nbsp; &nbsp; struct Fruit {enum &nbsp;{Pomme, Orange};}; <br />
&nbsp; &nbsp; struct Couleur {enum {Vert,Orange};}; <br />
};</div></div>
<p>Pour créer des types et non juste définir des constantes, il suffit de rajouter un nom à l&rsquo;énumération.<br />
Exemple:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">class FruitColore <br />
{ <br />
&nbsp; &nbsp; struct Fruit {enum type {Pomme, Orange};}; <br />
&nbsp; &nbsp; struct Couleur {enum type {Vert,Orange};}; <br />
}; <br />
void foo(FruitColore::Fruit::type t) <br />
{ <br />
&nbsp; &nbsp; std::cout&lt;&lt;&quot;t= &quot;&lt;&lt;t&lt;&lt;std::endl; <br />
}</div></div>
<p><strong>Conclusion</strong><br />
L&rsquo;utilisation des namespace et de structure pour limiter la portée des énumérations est quelque chose de bien pratique sur plusieurs points, mais amené à disparaitre à cause des <em>class enum</em> de C++0x, qui feront ce que nous avons fait (et même plus) de façon bien plus rapide.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sortie de Ultimate C++ 2008.1</title>
		<link>https://blog.developpez.com/davidbrcz/p6168/c/sortie_de_ultimate_c_2008_1</link>
		<comments>https://blog.developpez.com/davidbrcz/p6168/c/sortie_de_ultimate_c_2008_1#comments</comments>
		<pubDate>Thu, 07 Aug 2008 08:43:35 +0000</pubDate>
		<dc:creator><![CDATA[davidbrcz]]></dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Aujourd&#8217;hui, un petit billet pour présenter Ultimate C++, qui vient de sortir sa nouvelle version. Ultimate C++ est un RAD comprenant en autre un IDE, une bibliothèque touche à tout (GUI, SQl,&#8230;), un designer; le tout étant disponible sur de multiples plateformes sous une licence libre (BSD). L&#8217;IDE se veut polyvalent et puissant en intégrant un système d&#8217;aide pour la bibliothèque, des technologies pour accélérer la recompilation d&#8217;un projet, en étant capable de travailler avec [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui, un petit billet pour présenter Ultimate C++, qui vient de sortir sa nouvelle version.<br />
<span id="more-2"></span></p>
<p>Ultimate C++ est un RAD comprenant en autre un IDE, une bibliothèque touche à tout (GUI, SQl,&#8230;), un designer; le tout étant disponible sur de multiples plateformes sous une licence libre (BSD). L&rsquo;IDE se veut polyvalent et puissant en intégrant un système d&rsquo;aide pour la bibliothèque, des technologies pour accélérer la recompilation d&rsquo;un projet, en étant capable de travailler avec les principaux compilateurs du marché (g++, visual,&#8230;)</p>
<p>Liste d&rsquo;un partie des nouveautés:<br />
L&rsquo;annonce de la release sur Usenet avance 200 nouveautés dont:</p>
<ul>
<li> Une nouvelle implémenation beaucoup plus performante des String/WString </li>
<li> Présence d&rsquo;un nouvel allocateur de tas de haute-performance (presque) sans lock </li>
<li> Un support amélioré du multi-thread </li>
<li> une classe CoWork pour aider à paralléliser le code. </li>
<li> Un support unifié du Drag &amp; Drop </li>
<li> Le support de PostgreSQL </li>
<li> Le support de Win64 support (sauf le debugger) </li>
<li> une classe QuickTabs  </li>
<li> HeaderCtrl  peut maintenant déplacer les onglets </li>
<li> ArrayCtrl trie automatiquement les collones </li>
<li> Le Look&amp;feel de Chameleon a été amélioré sous GTK et Vista </li>
<li> la documentation (Topic++) fait maintenant partie intégrante de l&rsquo;IDE. </li>
</ul>
<p>Pour installer, rien de plus simple: des paquets sont disponibles. Il suffit de télécharger celui qui correspond à votre distribution. Au pire, il reste les sources à compiler.</p>
<p>Du coté des principaux regrets, on peut noter la structure du code de la bibliothèque, qui ressemble à celle de wxwidget (moi pro-Qt ? Nan, du tout) et un IDE qui semble, après un test rapide, ne pas être des plus ergonomique.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La guerre des plateformes mobiles.</title>
		<link>https://blog.developpez.com/davidbrcz/p6162/linux/la_guerre_des_plateformes_mobiles</link>
		<comments>https://blog.developpez.com/davidbrcz/p6162/linux/la_guerre_des_plateformes_mobiles#comments</comments>
		<pubDate>Mon, 04 Aug 2008 17:44:38 +0000</pubDate>
		<dc:creator><![CDATA[davidbrcz]]></dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Il y a encore peu de temps, les plateformes mobiles disponibles étaient assez restreintes : d&#8217;un coté Microsoft avec Windows CE, d&#8217;un autre coté Symbian Mais ce temps est révolu &#8230; En effet, depuis novembre 2007, Google propose sa propre plateforme: Android. Android est une plateforme libre basée sur un noyau linux mettant à disposition des développeurs un SDK pour développer des applications. Pour augmenter l&#8217;attrait des développeurs pour sa plateforme, google a même organisé [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Il y a encore peu de temps, les plateformes mobiles disponibles étaient assez restreintes : d&rsquo;un coté Microsoft avec Windows CE, d&rsquo;un autre coté Symbian</p>
<p>Mais ce temps est révolu &#8230;<br />
<span id="more-3"></span><br />
En effet, depuis novembre 2007, Google propose sa propre plateforme: Android.<br />
Android est une plateforme libre basée sur un noyau linux mettant à disposition des développeurs un SDK pour développer des applications. Pour augmenter l&rsquo;attrait des développeurs pour sa plateforme, google a même organisé un concours de développement de logiciels sur Android, avec à la clé 10 millions de dollars pour chaque développeur d&rsquo;une application primée.</p>
<p>Mais depuis très peu de temps, un autre concurrent est arrivé. Il s&rsquo;agit du consortium Limo, qui vise à développer un système d&rsquo;exploitation basé sur Linux et adapté aux téléphones portables et autres PDAs. Bien que Limo ne soit pas opérationnel, il semble très prometteur. </p>
<p>On voit donc qu&rsquo;on dispose de 3 plateformes mobiles open-source (Nokia s&rsquo;est engagé à rendre Symbian open-source) , toutes les trois prometteuses (même si Symbian à déjà fait ses preuves) avec un certain nombre de membres en communs. </p>
<p>La guerre des plateformes ne fait que commencer.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
