<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blog Technique de Marcoplaut</title>
	
	<link>http://blogtech.marco-plaut.fr</link>
	<description>Des pommes, des pingouins, des fenêtres et parfois même des écrans noirs et verts</description>
	<lastBuildDate>Sun, 05 Feb 2012 16:30:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MarcoplautTech" /><feedburner:info uri="marcoplauttech" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>SQL Server &amp; C# : comment faire de multiples insertions rapidement en une seule transaction ?</title>
		<link>http://feedproxy.google.com/~r/MarcoplautTech/~3/CShcUUc-xFI/</link>
		<comments>http://blogtech.marco-plaut.fr/2012/02/sql-server-c-comment-faire-de-multiples-insertions-rapidement-en-une-seule-transaction/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 16:30:22 +0000</pubDate>
		<dc:creator>marcoplaut</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blogtech.marco-plaut.fr/?p=30</guid>
		<description><![CDATA[J&#8217;ai été confronté à une problématique intéressante récemment : comment faire plusieurs insertions en base de données (SQL Server) en une seule transaction et rapidement ? Le problème est relativement simple : un web service doit insérer plusieurs lignes dans la même table. La solution de base consisterait à faire quelque chose qui ressemble à [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai été confronté à une problématique intéressante récemment : comment faire plusieurs insertions en base de données (SQL Server) en une seule transaction et rapidement ?</p>
<p>Le problème est relativement simple : un web service doit insérer plusieurs lignes dans la même table.<br />
La solution de base consisterait à faire quelque chose qui ressemble à ça :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>SqlConnection con <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SqlConnection<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;connectionString&quot;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    con<span style="color: #008000;">.</span><span style="color: #0000FF;">Open</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">foreach</span><span style="color: #008000;">&#40;</span>var produit <span style="color: #0600FF; font-weight: bold;">in</span> produitList<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
       <span style="color: #0600FF; font-weight: bold;">try</span>
	<span style="color: #008000;">&#123;</span>
	    <span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>SqlCommand command <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SqlCommand<span style="color: #008000;">&#40;</span>
		<span style="color: #666666;">&quot;INSERT INTO Product (Id, Model, CreationDate) VALUES(@Id, @Model, @CreationDate)&quot;</span>, con<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
	    <span style="color: #008000;">&#123;</span>
		command<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> SqlParameter<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@Id&quot;</span>, produit<span style="color: #008000;">.</span><span style="color: #0000FF;">Id</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		command<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> SqlParameter<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@Model&quot;</span>, produit<span style="color: #008000;">.</span><span style="color: #0000FF;">Model</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		command<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> SqlParameter<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@CreationDate&quot;</span>, produit<span style="color: #008000;">.</span><span style="color: #0000FF;">CreationDate</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
		command<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteNonQuery</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
	    <span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span> 
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Avantage :<br />
- Rapide et simple.</p>
<p>Problèmes :<br />
- on subit toutes les latences réseau entre le serveur d&#8217;application et la base de données à chaque insertion. Dans le cadre d&#8217;une base de donnée avec un failover, il faut en plus le délais de réplication sur les serveurs miroirs à chaque insertion&#8230;<br />
- Pas transactionné : si le service a un problème en milieu de traitement, il est difficile de le reprendre.</p>
<p>Tout ça fait que cette solution sera peu performante avec une volumétrie importante à insérer. Cette méthode sera donc à réserver pour un nombre limité d&#8217;insertions. </p>
<p>Pour réduire le temps de traitement, il faut supprimer les latences réseaux et tout insérer en un appel.<br />
L&#8217;idée d&#8217;un <em>insert</em> de 5km construit par concaténation de chaines de caractères ne me plaisant pas, j&#8217;ai essayé de chercher un peu sur le net, et j&#8217;ai découvert une méthode bien plus élégante : utiliser une procédure stockée avec un paramètre au format xml.<br />
Les procédures stockées ne pouvant pas prendre de listes ou tableaux en paramètre d&#8217;entrée, l&#8217;utilisation du XML permet de contourner ce problème. Avec relativement peu de lignes de codes, on peut sérialiser et désérialiser les données en XML coté C# et SQL :<br />
C# :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span>SqlConnection con <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SqlConnection<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;connectionString&quot;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    con<span style="color: #008000;">.</span><span style="color: #0000FF;">Open</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    var sqlCmd <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SqlCommand<span style="color: #008000;">&#40;</span><span style="color: #666666;">@&quot;[ProcStock_Insertion_produits]&quot;</span>, connection<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    sqlCmd<span style="color: #008000;">.</span><span style="color: #0000FF;">sqlCmd</span><span style="color: #008000;">.</span><span style="color: #0000FF;">CommandType</span> <span style="color: #008000;">=</span> CommandType<span style="color: #008000;">.</span><span style="color: #0000FF;">StoredProcedure</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">//Serialisation en XML de mes produits</span>
    XElement xmlProductsArg <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> XElement<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Products&quot;</span>,
                   <span style="color: #0600FF; font-weight: bold;">from</span> p <span style="color: #0600FF; font-weight: bold;">in</span> produitList
                   <span style="color: #0600FF; font-weight: bold;">select</span> <span style="color: #008000;">new</span> XElement<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Product&quot;</span>,
                       <span style="color: #008000;">new</span> XAttribute<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Id&quot;</span>, p<span style="color: #008000;">.</span><span style="color: #0000FF;">Id</span><span style="color: #008000;">&#41;</span>,
                       <span style="color: #008000;">new</span> XAttribute<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Model&quot;</span>, p<span style="color: #008000;">.</span><span style="color: #0000FF;">Model</span> <span style="color: #008000;">&#41;</span>, 
                       <span style="color: #008000;">new</span> XAttribute<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;CD&quot;</span>, p<span style="color: #008000;">.</span><span style="color: #0000FF;">CreationDate</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;YYYY-MM-dd&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                   <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
     <span style="color: #008080; font-style: italic;">//Creation du paramètre</span>
     SqlParameter ProduitsParam <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SqlParameter<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;@Produits&quot;</span>, <span style="color: #000000;">System.<span style="color: #0000FF;">Data</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">SqlDbType</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Xml</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
     ProduitsParam<span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SqlXml<span style="color: #008000;">&#40;</span>xmlProductsArg<span style="color: #008000;">.</span><span style="color: #0000FF;">CreateReader</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
     sqlCmd<span style="color: #008000;">.</span><span style="color: #0000FF;">Parameters</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span>ProduitsParam<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
     <span style="color: #008080; font-style: italic;">//Execution</span>
     command<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteNonQuery</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Et la procédure stockée :</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">PROCEDURE</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>ProcStock_Insertion_produits<span style="color: #808080;">&#93;</span>
<span style="color: #808080;">&#40;</span>
@Produits xml
<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">AS</span>
<span style="color: #0000FF;">BEGIN</span>	
	<span style="color: #008080;">--Creation d'une table temporaire où copier les données issues du XML</span>
	<span style="color: #0000FF;">DECLARE</span> @Products <span style="color: #0000FF;">TABLE</span> <span style="color: #808080;">&#40;</span>ProduitId <span style="color: #0000FF;">int</span>, Modele <span style="color: #0000FF;">Varchar</span><span style="color: #808080;">&#40;</span><span style="color: #000;">200</span><span style="color: #808080;">&#41;</span>, DateCreation <span style="color: #0000FF;">date</span>  <span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @Products <span style="color: #808080;">&#40;</span>ID<span style="color: #808080;">&#41;</span> 
        <span style="color: #0000FF;">SELECT</span> 
          Tbl.<span style="color: #202020;">Col</span>.<span style="color: #0000FF;">value</span><span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Id'</span>, <span style="color: #FF0000;">'decimal'</span><span style="color: #808080;">&#41;</span>,
          Tbl.<span style="color: #202020;">Col</span>.<span style="color: #0000FF;">value</span><span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Model'</span>, <span style="color: #FF0000;">'VARCHAR(120)'</span><span style="color: #808080;">&#41;</span>,
          Tbl.<span style="color: #202020;">Col</span>.<span style="color: #0000FF;">value</span><span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@CreationDate'</span>, <span style="color: #FF0000;">'NVARCHAR(50)'</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">FROM</span>   @Produits.<span style="color: #202020;">nodes</span><span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'/Products/Product'</span><span style="color: #808080;">&#41;</span> Tbl<span style="color: #808080;">&#40;</span>Col<span style="color: #808080;">&#41;</span>
&nbsp;
&nbsp;
        <span style="color: #008080;">--éventuel traitement avant import pour assurer la cohérence des données : </span>
        <span style="color: #008080;">--suppression des produits existants déjà avant import</span>
        <span style="color: #0000FF;">DELETE</span> <span style="color: #0000FF;">FROM</span> @Products <span style="color: #0000FF;">WHERE</span> ProduitId not in <span style="color: #808080;">&#40;</span><span style="color: #0000FF;">Select</span> Id <span style="color: #0000FF;">From</span> Product<span style="color: #808080;">&#41;</span>
&nbsp;
	<span style="color: #008080;">--insertion des données</span>
	<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> Product <span style="color: #808080;">&#40;</span>Id, Model, CreationDate<span style="color: #808080;">&#41;</span>  
        <span style="color: #0000FF;">SELECT</span> ProduitId, Modele , CreationDate 
        <span style="color: #0000FF;">FROM</span> @Products
<span style="color: #0000FF;">END</span>
GO</pre></div></div>

<p>Cela demande donc un peu plus de travail qu&#8217;un insert basique mais les perfs sont extras : 30 000 insertion en moins d&#8217;une seconde, pas de long lock sur la table, c&#8217;est plaisant <img src='http://blogtech.marco-plaut.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/MarcoplautTech/~4/CShcUUc-xFI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogtech.marco-plaut.fr/2012/02/sql-server-c-comment-faire-de-multiples-insertions-rapidement-en-une-seule-transaction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogtech.marco-plaut.fr/2012/02/sql-server-c-comment-faire-de-multiples-insertions-rapidement-en-une-seule-transaction/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sql-server-c-comment-faire-de-multiples-insertions-rapidement-en-une-seule-transaction</feedburner:origLink></item>
		<item>
		<title>Ajouter du swap à chaud sans changer les partitions</title>
		<link>http://feedproxy.google.com/~r/MarcoplautTech/~3/EK5VyjEUtEE/</link>
		<comments>http://blogtech.marco-plaut.fr/2011/08/ajouter-du-swap-a-chaud-sans-changer-les-partitions/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 22:58:43 +0000</pubDate>
		<dc:creator>marcoplaut</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blogtech.marco-plaut.fr/?p=20</guid>
		<description><![CDATA[Si vous avez un serveur Linux tout bien configuré, mais que vous manquez de SWAP et ne voulez pas tout reformater : sudo dd if=/dev/zero of=/tmp/swap bs=1M count=4096 sudo mkswap /tmp/swap sudo swapon /tmp/swap Et hop ! vous avez 4go de swap en plus. Attention, après un redémarrage, ce swap ne fonctionnera plus. Merci à [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous avez un serveur Linux tout bien configuré, mais que vous manquez de SWAP et ne voulez pas tout reformater :</p>
<p><code>sudo dd if=/dev/zero of=/tmp/swap bs=1M count=4096<br />
sudo mkswap /tmp/swap<br />
sudo swapon /tmp/swap</code></p>
<p>Et hop ! vous avez 4go de swap en plus. Attention, après un redémarrage, ce swap ne fonctionnera plus.</p>
<p>Merci à <a href="http://www.blognote-info.com/fr/n491/augmenter-le-swap-a-posteriori" title="blognote-info" target="_blank">http://www.blognote-info.com/fr/n491/augmenter-le-swap-a-posteriori</a> pour la commande</p>
<img src="http://feeds.feedburner.com/~r/MarcoplautTech/~4/EK5VyjEUtEE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogtech.marco-plaut.fr/2011/08/ajouter-du-swap-a-chaud-sans-changer-les-partitions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogtech.marco-plaut.fr/2011/08/ajouter-du-swap-a-chaud-sans-changer-les-partitions/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ajouter-du-swap-a-chaud-sans-changer-les-partitions</feedburner:origLink></item>
		<item>
		<title>Crash linux sans raison apparente …</title>
		<link>http://feedproxy.google.com/~r/MarcoplautTech/~3/zBLdDo5LK54/</link>
		<comments>http://blogtech.marco-plaut.fr/2011/08/crash-linux-sans-raison-apparente/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 22:50:38 +0000</pubDate>
		<dc:creator>marcoplaut</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blogtech.marco-plaut.fr/?p=17</guid>
		<description><![CDATA[Je me suis fais avoir plusieurs fois ces derniers temps, je pensais avoir des machines instables mais n&#8217;en comprenais pas la cause&#8230; J&#8217;ai enfin pris le temps de regarder les logs : Aug 9 16:23:28 host kernel: java invoked oom-killer: gfp_mask=0x200da, order=0, oom_adj=0, oom_score_adj=0 Aug 9 16:23:38 host kernel: java cpuset=/ mems_allowed=0 Aug 9 16:23:38 [...]]]></description>
			<content:encoded><![CDATA[<p>Je me suis fais avoir plusieurs fois ces derniers temps, je pensais avoir des machines instables mais n&#8217;en comprenais pas la cause&#8230;<br />
J&#8217;ai enfin pris le temps de regarder les logs :<br />
<code>Aug  9 16:23:28 host kernel: java invoked oom-killer: gfp_mask=0x200da, order=0, oom_adj=0, oom_score_adj=0<br />
Aug  9 16:23:38 host kernel: java cpuset=/ mems_allowed=0<br />
Aug  9 16:23:38 host kernel: lowmem_reserve[]: 0 1967 1967 1967<br />
Aug  9 16:23:38 host kernel: 3142 total pagecache pages<br />
Aug  9 16:23:38 host kernel: 2653 pages in swap cache<br />
Aug  9 16:23:38 host kernel: Swap cache stats: add 135438, delete 132785, find 4883/5333<br />
Aug  9 16:23:38 host kernel: Free swap  = 0kB<br />
Aug  9 16:23:38 host kernel: Total swap = 525532kB<br />
Aug  9 16:23:38 host kernel: 515824 pages RAM<br />
Aug  9 16:23:38 host kernel: 12751 pages reserved<br />
Aug  9 16:23:38 host kernel: 29557 pages shared<br />
Aug  9 16:23:38 host kernel: 488792 pages non-shared</code></p>
<p>Je viens de découvrir que si un Linux n&#8217;a plus de RAM ou swap disponible : il plante ! Ca m&#8217;apprendra à faire tourner des applis Java <img src='http://blogtech.marco-plaut.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Note à moi même : ne plus faire le radin sur le swap à l&#8217;avenir !</p>
<img src="http://feeds.feedburner.com/~r/MarcoplautTech/~4/zBLdDo5LK54" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogtech.marco-plaut.fr/2011/08/crash-linux-sans-raison-apparente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogtech.marco-plaut.fr/2011/08/crash-linux-sans-raison-apparente/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=crash-linux-sans-raison-apparente</feedburner:origLink></item>
		<item>
		<title>Hello World !</title>
		<link>http://feedproxy.google.com/~r/MarcoplautTech/~3/O7dnzZjXzbU/</link>
		<comments>http://blogtech.marco-plaut.fr/2009/07/bonjour-tout-le-monde/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 22:14:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blogtech.marco-plaut.fr/?p=1</guid>
		<description><![CDATA[Hello World. Si ce titre ne vous parle pas, vous ne devez pas être au bon endroit ! Ouvrez n&#8217;importe quel ouvrage de programmation du C au Ruby, le premier programme que vous aurez à écrire se limite traditionnellement à afficher &#171;&#160;Hello World&#160;&#187; sur l&#8217;écran. Difficile donc de trouver meilleur titre pour le premier post [...]]]></description>
			<content:encoded><![CDATA[<p>Hello World. Si ce titre ne vous parle pas, vous ne devez pas être au bon endroit ! Ouvrez n&#8217;importe quel ouvrage de programmation du <em>C</em> au <em>Ruby, </em>le premier programme que vous aurez à écrire se limite traditionnellement à afficher &laquo;&nbsp;Hello World&nbsp;&raquo; sur l&#8217;écran. Difficile donc de trouver meilleur titre pour le premier <span style="text-decoration: line-through;">post</span> billet (je vais essayer d&#8217;utiliser des mots français quand ils existent&#8230;) de ce blog qui se veut technique.</p>
<h2><strong>Pourquoi ce blog ?</strong></h2>
<ul>
<li>La raison principale est le partage d&#8217;expériences : quand on passe des heures à chercher comment faire quelque chose, on se dit que d&#8217;autres seront contents de trouver la solution expliquée clairement.</li>
<li>Parceque je hais les forums : devoir lire des centaines de pages de digression pour obtenir la réponse à la question initiale puis lire le contraire 2 pages après, je perds vite patience. Je pense pas être le seul, allons donc directement à l&#8217;essentiel.</li>
<li>Car des ressources francophones manquent souvent sur des sujets pointus.</li>
<li>Car ca permet de suivre facilement les publications via RSS</li>
<li>Car j&#8217;en ai envie !</li>
</ul>
<p>J&#8217;espère avoir le temps de publier régulièrement mais, me connaissant trop bien, je publierai quand je pourrai !</p>
<h2>Quelles technos ?</h2>
<p>Tout ce qui me passera entre les mains ! Je suis pour un monde informatique multipolaire ! J&#8217;aime les interfaces Mac OS, mon iPhone et la puissance Unix qui se cache derrière MacOS X, mais j&#8217;aime aussi Linux avec sa console simple, puissante et qui permet d&#8217;avoir tous les services/serveurs possibles et imaginables sur mon petit ordinateur de bureau. Enfin, même si ouvrir des dizaines de fenêtres, faire d&#8217;innombrables clics sur suivant ne sont pas ma tasse de thé, force est de constater que Microsoft a souvent les meilleures solutions en entreprise et permet de créer des systèmes complexes en un temps record.<br />
(Ma haine des forums provient sûrement, en plus des bêtises qu&#8217;on y trouve, des débats stériles qu&#8217;ils abritent du type &laquo;&nbsp;quel est le meilleur OS&nbsp;&raquo; sans en préciser l&#8217;usage&#8230; Je tenterai d&#8217;éviter ces préjugés sur ce blog&#8230;)</p>
<p>A très vite pour les premiers vrais billets.</p>
<img src="http://feeds.feedburner.com/~r/MarcoplautTech/~4/O7dnzZjXzbU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogtech.marco-plaut.fr/2009/07/bonjour-tout-le-monde/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogtech.marco-plaut.fr/2009/07/bonjour-tout-le-monde/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=bonjour-tout-le-monde</feedburner:origLink></item>
	</channel>
</rss>

