<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Blog d&#039;Emmanuel Istace</title>
	<atom:link href="http://istacee.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://istacee.wordpress.com</link>
	<description>DotNet... What else ?</description>
	<lastBuildDate>Sat, 28 Jan 2012 16:54:16 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='istacee.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/695fdbeb153168f0c4bb691fb65526d0?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Blog d&#039;Emmanuel Istace</title>
		<link>http://istacee.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://istacee.wordpress.com/osd.xml" title="Blog d&#039;Emmanuel Istace" />
	<atom:link rel='hub' href='http://istacee.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Compilation et appel de code C# dans un System.String au runtime</title>
		<link>http://istacee.wordpress.com/2012/01/28/compilation-et-appel-de-code-c-dans-un-system-string-au-runtime/</link>
		<comments>http://istacee.wordpress.com/2012/01/28/compilation-et-appel-de-code-c-dans-un-system-string-au-runtime/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 16:54:11 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[compilation]]></category>
		<category><![CDATA[eval]]></category>
		<category><![CDATA[reflexion]]></category>
		<category><![CDATA[runtime]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1125</guid>
		<description><![CDATA[Voici un petit bout de code vous permettant de compiler du code sous forme de string et d&#8217;instancier des objets. Pour éviter d&#8217;écrire du code d&#8217;appel par réflexion, ma classe a générer implémente une interface que j&#8217;utiliserai ensuite manipuler le resultant de CreateObjectFromAssembly. Seul la construction de l&#8217;objet se fait par réflexion. Pastebin : http://pastebin.com/S6fpYcXD<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1125&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://istacee.files.wordpress.com/2010/07/net20logo.png"><img src="http://istacee.files.wordpress.com/2010/07/net20logo.png?w=150&#038;h=37" alt="" title="NET%20Logo" width="150" height="37" class="alignleft size-thumbnail wp-image-278" /></a>Voici un petit bout de code vous permettant de compiler du code sous forme de string et d&#8217;instancier des objets. Pour éviter d&#8217;écrire du code d&#8217;appel par réflexion, ma classe a générer implémente une interface que j&#8217;utiliserai ensuite manipuler le resultant de CreateObjectFromAssembly. Seul la construction de l&#8217;objet se fait par réflexion.</p>
<p><pre class="brush: plain;">
/// &lt;summary&gt;
/// Produces new assembly at runtime.
/// &lt;/summary&gt;
/// &lt;param name=&quot;references&quot;&gt;The assembly references.&lt;/param&gt;
/// &lt;param name=&quot;sourceCode&quot;&gt;The source code to compile.&lt;/param&gt;
/// &lt;param name=&quot;outputAssemblyName&quot;&gt;Output dll name.&lt;/param&gt;
/// &lt;returns&gt;Compilation result&lt;/returns&gt;
private CompilerResults ProduceAssembly(string[] references, 
                                        string sourceCode, 
                                        string outputAssemblyName)
{
    CSharpCodeProvider codeProvider = new CSharpCodeProvider();
    ICodeCompiler codeCompiler = codeProvider.CreateCompiler();

    CompilerParameters compilerParameters = 
                    new CompilerParameters(references, 
                                            outputAssemblyName);
    compilerParameters.GenerateExecutable = false;
    compilerParameters.GenerateInMemory = false;

    return codeCompiler.CompileAssemblyFromSource(compilerParameters, 
                                                  sourceCode);

}

/// &lt;summary&gt;
/// Creates new object from dynamicaly loaded assembly
/// &lt;/summary&gt;
/// &lt;param name=&quot;AssemblyName&quot;&gt;Name of the assembly to load.&lt;/param&gt;
/// &lt;param name=&quot;className&quot;&gt;Name of the class to instanciate.&lt;/param&gt;
/// &lt;param name=&quot;constructorParameters&quot;&gt;The constructor parameters.&lt;/param&gt;
private bool CreateObjectFromAssembly(string AssemblyName, 
                                        string className, 
                                        object[] constructorParameters, 
                                        out object createdObject)
{
    object tmp = createdObject = null;
    Assembly myAssembly = Assembly.LoadFrom(AssemblyName);
    Module[] myModules = myAssembly.GetModules();

    myModules.Where(module =&gt; module.Name == AssemblyName)
             .Select(module =&gt; module.GetTypes())
             .ToList()
             .ForEach
             (
             t =&gt; t.Where(types =&gt; types.Name == className)
                   .ToList()
                   .ForEach(
                          type =&gt; tmp = Activator.CreateInstance(type, 
                                               constructorParameters))
             );
    createdObject = tmp;
    return createdObject != null;
}
</pre></p>
<p><strong>Pastebin : </strong><a href="http://pastebin.com/S6fpYcXD" title="http://pastebin.com/S6fpYcXD">http://pastebin.com/S6fpYcXD</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1125&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2012/01/28/compilation-et-appel-de-code-c-dans-un-system-string-au-runtime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2010/07/net20logo.png?w=150" medium="image">
			<media:title type="html">NET%20Logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Crystal Report 2011 : CrystalDecisions.Shared.SharedUtils Exception</title>
		<link>http://istacee.wordpress.com/2012/01/04/crystal-report-2011-crystaldecisions-shared-sharedutils-exception/</link>
		<comments>http://istacee.wordpress.com/2012/01/04/crystal-report-2011-crystaldecisions-shared-sharedutils-exception/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 20:24:44 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[business objects]]></category>
		<category><![CDATA[crystal reports]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[SharedUtils]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1119</guid>
		<description><![CDATA[Cette exception arrive lors de l&#8217;initialisation d&#8217;un CrystalReportViewer, elle provient du fait que les composants d&#8217;SAP n&#8217;aiment pas les version x64 de dotnet. Pour résoudre le soucis : Project Properties -&#62; Build -&#62; Target -&#62; x86<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1119&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://istacee.files.wordpress.com/2012/01/crystal_reports.jpg"><img class="alignleft size-thumbnail wp-image-1121" title="crystal_reports" src="http://istacee.files.wordpress.com/2012/01/crystal_reports.jpg?w=150&#038;h=74" alt="" width="150" height="74" /></a>Cette exception arrive lors de l&#8217;initialisation d&#8217;un CrystalReportViewer, elle provient du fait que les composants d&#8217;SAP n&#8217;aiment pas les version x64 de dotnet.</p>
<p>Pour résoudre le soucis :</p>
<blockquote><p>Project Properties -&gt; Build -&gt; Target -&gt; x86</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1119/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1119&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2012/01/04/crystal-report-2011-crystaldecisions-shared-sharedutils-exception/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2012/01/crystal_reports.jpg?w=150" medium="image">
			<media:title type="html">crystal_reports</media:title>
		</media:content>
	</item>
		<item>
		<title>Always on top window</title>
		<link>http://istacee.wordpress.com/2012/01/04/always-on-top-window/</link>
		<comments>http://istacee.wordpress.com/2012/01/04/always-on-top-window/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 19:51:14 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[interop]]></category>
		<category><![CDATA[ontop]]></category>
		<category><![CDATA[SetWindowPos]]></category>
		<category><![CDATA[topmost]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1112</guid>
		<description><![CDATA[Un petit bout d&#8217;interop pour créer des TopMost window. Les flags permettent d’éviter a la fenêtre de se resizer et de bouger après l&#8217;appel de la fonction. (Sinon, avec les arguments {x,y,cx,cy} à 0, la fenêtre fera 0*0 à la coordonnée 0:0). Ensuite le placement de la fenêtre se fait avec le IntPtr HWND_x. Ref. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1112&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Un petit bout d&#8217;interop pour créer des TopMost window. Les flags permettent d’éviter a la fenêtre de se resizer et de bouger après l&#8217;appel de la fonction. (Sinon, avec les arguments {x,y,cx,cy} à 0, la fenêtre fera 0*0 à la coordonnée 0:0).<br />
Ensuite le placement de la fenêtre se fait avec le IntPtr HWND_x.<br />
<pre class="brush: plain;">
        private static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
        private static readonly IntPtr HWND_NOTOPMOST = new IntPtr(-2);
        private const UInt32 SWP_NOSIZE = 0x0001;
        private const UInt32 SWP_NOMOVE = 0x0002;
        private const UInt32 FLAGS = SWP_NOMOVE | SWP_NOSIZE;

        [DllImport(&quot;user32.dll&quot;)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);

        public void SetOnTop()
        {
            SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, FLAGS);
        }

        public void UnSetOnTop()
        {
            SetWindowPos(this.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS);
        }
</pre></p>
<p>Ref. : <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545%28v=vs.85%29.aspx">msdn</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1112&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2012/01/04/always-on-top-window/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>
	</item>
		<item>
		<title>Quick Setup de Log4Net en C#</title>
		<link>http://istacee.wordpress.com/2011/12/13/quick-setup-de-log4net-en-c/</link>
		<comments>http://istacee.wordpress.com/2011/12/13/quick-setup-de-log4net-en-c/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 20:18:55 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[log4net]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1102</guid>
		<description><![CDATA[Bonjour, un petit tuto&#8217; sur comment utiliser basiquement log4net dans vos applications suite à une demande par mail. Tout d’abord un petit exemple de Log4Net : La sortie : Le code parle de lui même. Téléchargez les bin&#8217;s a l&#8217;adresse : http://logging.apache.org/log4net/download.html Décompressé ça peut paraitre gros pour du log (30Mo) mais c’est parce qu’il y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1102&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bonjour, un petit tuto&#8217; sur comment utiliser basiquement log4net dans vos applications suite à une demande par mail.</p>
<p>Tout d’abord un petit exemple de Log4Net :<br />
<pre class="brush: plain;">
        static void Main(string[] args)
        {
            log4net.ILog log = LogManager.GetLogger(typeof(Program));
            log4net.Config.BasicConfigurator.Configure();
            log.Debug(&quot;I'm debuging this app&quot;);
            log.Info(&quot;Cause i need more information&quot;);
            log.Warn(&quot;About the compilation warning&quot;);
            log.Error(&quot;Due to a developper error&quot;);
            log.Fatal(&quot;And create fatal exceptions :)&quot;);
            Console.ReadLine(); 
        }
</pre><br />
La sortie :<br />
<pre class="brush: plain;">
DEBUG2011-12-13 09:12:09 – I'm debuging this app
INFO 2011-12-13 09:12:09 – Cause i need more information
WARN 2011-12-13 09:12:09 – About the compilation warning
ERROR2011-12-13 09:12:09 – Due to a developper error
FATAL2011-12-13 09:12:09 – And create fatal exceptions :)
</pre><br />
Le code parle de lui même.<br />
Téléchargez les bin&#8217;s a l&#8217;adresse : <a href="http://logging.apache.org/log4net/download.html">http://logging.apache.org/log4net/download.html</a><br />
Décompressé ça peut paraitre gros pour du log (30Mo) mais c’est parce qu’il y a les DLL pour tous les framework et subset de dotnet + la documentation XML. Pour une DLL de 300Ko, 1.5Mo de docs xml. La librairie finale ne fait que 250/300Ko.<br />
Une autre solution consiste aussi à utiliser NuGet pour les paquets. C’est à vous de voir.<br />
Ensuite, comme d’habitude, on rajoute une référence.<br />
Ceci fait on vas éditer (ou créer) un fichier .config (Web.config ou App.config, selon le scénario) et y rajouter les nodes suivants :<br />
<pre class="brush: plain;">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;configuration&gt;
  &lt;configSections&gt;
    &lt;section name=&quot;log4net&quot; type=&quot;log4net.Config.Log4NetConfigurationSectionHandler,Log4net&quot;/&gt;
  &lt;/configSections&gt;
  &lt;log4net&gt;
    &lt;root&gt;
      &lt;level value=&quot;DEBUG&quot;/&gt;
      &lt;appender-ref ref=&quot;LogFileAppender&quot;/&gt;
    &lt;/root&gt;
    &lt;appender name=&quot;LogFileAppender&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;
      &lt;param name=&quot;File&quot; value=&quot;C:\log.txt&quot;/&gt;
      &lt;param name=&quot;AppendToFile&quot; value=&quot;true&quot;/&gt;
      &lt;rollingStyle value=&quot;Size&quot;/&gt;
      &lt;maxSizeRollBackups value=&quot;10&quot;/&gt;
      &lt;maximumFileSize value=&quot;10MB&quot;/&gt;
      &lt;staticLogFileName value=&quot;true&quot;/&gt;
      &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
        &lt;param name=&quot;ConversionPattern&quot; value=&quot;%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n&quot;/&gt;
      &lt;/layout&gt;
    &lt;/appender&gt;
  &lt;/log4net&gt;
&lt;startup&gt;
&lt;/configuration&gt;
</pre></p>
<p>Pour le moment il log dans la console a cause du basic configurator. Pour lui dire d’aller jeter un œil dans les .config il suffit de rajouter :</p>
<p><pre class="brush: plain;">[assembly: log4net.Config.XmlConfigurator(Watch = true)]</pre></p>
<p>Ensuite, on supprime la ligne 4 de l&#8217;exemple (le basic configurator) et on obtiens une instance de ILog que nous utiliserons dans notre application.</p>
<p><strong>Quelques issues rencontrés</strong><br />
- Si il gueule pour System.Web, passez le target de dotnet 4 client profile à dotnet 4 dans la configuration du projet.<br />
- Si vous n&#8217;arrivez pas a écrire, vérifiez les permissions sur le filesystem.<br />
- Pour le reste, RTFM <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  <a href="http://logging.apache.org/log4net/release/manual/introduction.html">Apache Log4net manual</a></p>
<p>Et au passage&#8230;</p>
<p><a href="http://istacee.files.wordpress.com/2011/12/100th-post.jpg"><img src="http://istacee.files.wordpress.com/2011/12/100th-post.jpg?w=300&#038;h=300" alt="" title="100th post" width="300" height="300" class="aligncenter size-medium wp-image-1104" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1102&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2011/12/13/quick-setup-de-log4net-en-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2011/12/100th-post.jpg?w=300" medium="image">
			<media:title type="html">100th post</media:title>
		</media:content>
	</item>
		<item>
		<title>Convertir VHD en VMDK</title>
		<link>http://istacee.wordpress.com/2011/11/29/convertir-vhd-en-vmdk/</link>
		<comments>http://istacee.wordpress.com/2011/11/29/convertir-vhd-en-vmdk/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 18:49:32 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[Systèmes]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[convertir]]></category>
		<category><![CDATA[hyper-v]]></category>
		<category><![CDATA[vhd]]></category>
		<category><![CDATA[vmdk]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[winimage]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1088</guid>
		<description><![CDATA[Bonjour, en attendant la publications des gros articles dans le pipe (cfr. tweet) un petit &#8220;tips&#8221; pour convertir des virtual machine Hyper-V et plus globalement des fichiers VHD en VMDK pour les charger dans VmWare Workstation. Après des essais infructueux avec VmWare vCenter Converter, qui reste un très bon outil gratuit de conversion de VM [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1088&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1091" title="vmwarelogo-4" src="http://istacee.files.wordpress.com/2011/11/vmwarelogo-4.jpg?w=480" alt=""   />Bonjour, en attendant la publications des gros articles dans le pipe (cfr. tweet) un petit &#8220;tips&#8221; pour convertir des virtual machine Hyper-V et plus globalement des fichiers VHD en VMDK pour les charger dans VmWare Workstation. Après des essais infructueux avec VmWare vCenter Converter, qui reste un très bon outil gratuit de conversion de VM notamment pour pomper une machine physique vers une VM, j&#8217;ai testé l&#8217;outil WinImage qui a donné de très bon résultats, sauf en terme de compression de donnée (on ne peut pas tout avoir).</p>
<p>L&#8217;outil est en shareware 30 jours : <a href="http://www.winimage.com/download.htm">Cliquez ici pour l&#8217;obtenir</a></p>
<p>1. L&#8217;outil installé et lancé, allez dans Disk -&gt; Convert Virtual Hard Disk Image. Une fenêtre d&#8217;exploration s&#8217;ouvre, allez sélectionner le VHD à convertir.</p>
<p><img class="aligncenter size-full wp-image-1089" title="vhd1" src="http://istacee.files.wordpress.com/2011/11/vhd1.png?w=480&#038;h=509" alt="" width="480" height="509" /></p>
<p>2. Un fois le VHD sélectionner vous avez le choix entre un disque à taille fixe ou un disque dynamique. Pour rappel, si on a un disque de 100Go rempli a 50% (donc 50Go) :</p>
<ul>
<li><em><strong>Fixed</strong> : Fichier de 100Go sur le disque mais gain en performance, moins de fragmentation coté hôte, mais consomme plus de place.</em></li>
<li><strong>Dynamic</strong> : Fichier de 50Go mais perte de performance et augmente le taux de fragmentation du fichier, mais consomme moin de place.</li>
</ul>
<p>Pour ma part je m&#8217;oriente plus souvent vers du fixed <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img class="aligncenter size-full wp-image-1090" title="vhd2" src="http://istacee.files.wordpress.com/2011/11/vhd2.png?w=480" alt=""   /><br />
3. Ensuite, un nouvelle boite d&#8217;exploration, n&#8217;oubliez pas de préciser le type de fichier cible (vmdk) car le choix par defaut est vhd.</p>
<p>4. Enfin, il n&#8217;y a plus qu&#8217;a attendre que la conversion soit finie.<br />
J&#8217;ai converti un VHD de 150Go sur un 10 000k/rpm  en 1H +/-. (sur ce type d&#8217;actions c&#8217;est le HDD qui fait goulot d&#8217;étranglement)</p>
<p>A bientôt pour les articles sur FxCop et l&#8217;écriture de règles, Microsft Common Compiler Infrastructure, la création de custom template dans visual studio et pleins d&#8217;autres choses <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1088/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1088/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1088/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1088/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1088/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1088/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1088/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1088/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1088/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1088/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1088/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1088/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1088/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1088/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1088&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2011/11/29/convertir-vhd-en-vmdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2011/11/vmwarelogo-4.jpg" medium="image">
			<media:title type="html">vmwarelogo-4</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2011/11/vhd1.png" medium="image">
			<media:title type="html">vhd1</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2011/11/vhd2.png" medium="image">
			<media:title type="html">vhd2</media:title>
		</media:content>
	</item>
		<item>
		<title>Désactiver l&#8217;hebergement automatique des library de services WCF</title>
		<link>http://istacee.wordpress.com/2011/11/15/desactiver-lhebergement-automatique-des-library-de-services-wcf/</link>
		<comments>http://istacee.wordpress.com/2011/11/15/desactiver-lhebergement-automatique-des-library-de-services-wcf/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 12:40:23 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[service host]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[wcf]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1058</guid>
		<description><![CDATA[Cette feature serait apparament en backlog pour la prochaine release/update? de visual studio si on s&#8217;en tiens a : http://connectbeta.microsoft.com/VisualStudio/feedback/details/533316/cannot-disable-wcf-service-host Mais pour le supprimer le seul moyen est d&#8217;aller supprimer le ProjectTypeGUID et le ProjectExtensions dans le fichier .csproj de la lib. Le GUID est 3D9AD99F-2412-4246-B90B-4EAA41C64699. Il faut donc le supprimer de : Et supprimer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1058&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://istacee.files.wordpress.com/2010/07/net20logo.png?w=300&#038;h=74" alt="" title="NET%20Logo" width="300" height="74" class="alignleft size-medium wp-image-278" />Cette feature serait apparament en backlog pour la prochaine release/update? de visual studio si on s&#8217;en tiens a : http://connectbeta.microsoft.com/VisualStudio/feedback/details/533316/cannot-disable-wcf-service-host</p>
<p>Mais pour le supprimer le seul moyen est d&#8217;aller supprimer le ProjectTypeGUID et le ProjectExtensions dans le fichier .csproj de la lib. Le GUID est <strong>3D9AD99F-2412-4246-B90B-4EAA41C64699</strong>.</p>
<p>Il faut donc le supprimer de :<br />
<pre class="brush: plain;">
    &lt;ProjectTypeGuids&gt;{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&lt;/ProjectTypeGuids&gt;
</pre></p>
<p>Et supprimer la section suivante dans la fin du fichier :<br />
<pre class="brush: plain;">
  &lt;ProjectExtensions&gt;
    &lt;VisualStudio&gt;
      &lt;FlavorProperties GUID=&quot;{3D9AD99F-2412-4246-B90B-4EAA41C64699}&quot;&gt;
        &lt;WcfProjectProperties&gt;
          &lt;AutoStart&gt;True&lt;/AutoStart&gt;
        &lt;/WcfProjectProperties&gt;
      &lt;/FlavorProperties&gt;
    &lt;/VisualStudio&gt;
  &lt;/ProjectExtensions&gt;
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1058/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1058/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1058/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1058/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1058/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1058/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1058/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1058/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1058/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1058/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1058/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1058/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1058/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1058/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1058&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2011/11/15/desactiver-lhebergement-automatique-des-library-de-services-wcf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2010/07/net20logo.png?w=300" medium="image">
			<media:title type="html">NET%20Logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Twitter, OAuth &amp; LinqToTwitter for dummies</title>
		<link>http://istacee.wordpress.com/2011/10/19/twitter-oauth-linqtotwitter-for-dummies/</link>
		<comments>http://istacee.wordpress.com/2011/10/19/twitter-oauth-linqtotwitter-for-dummies/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 17:40:03 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[linqtotwitter]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[tweet]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1041</guid>
		<description><![CDATA[Un petit post qui explique basiquement comment fonctionne l’authentification d’une application twitter. Le souci très vite rencontré c’est OAuth. Tout comme OData et tous les Oxxx, la documentation est hyper fournie, voir trop fournie… ce qui fait que l’on perd vite pied dans des détails techniques. Ce que je propose ici ce n’est pas de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1041&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://istacee.files.wordpress.com/2011/10/nettweet.png"><img src="http://istacee.files.wordpress.com/2011/10/nettweet.png?w=300&#038;h=58" alt="" title="nettweet" width="300" height="58" class="alignleft size-medium wp-image-1046" /></a>Un petit post qui explique basiquement comment fonctionne l’authentification d’une application twitter.</p>
<p>Le souci très vite rencontré c’est OAuth. Tout comme OData et tous les Oxxx, la documentation est hyper fournie, voir trop fournie… ce qui fait que l’on perd vite pied dans des détails techniques. Ce que je propose ici ce n’est pas de savoir comment fonctionne OAuth et twitter mais de savoir pratiquement comment authentifier son appli.</p>
<p>Tout d’abord un tout petit peu de théorie sur ce que l’on va faire. On partira de l’application que je développe actuellement, TwittLook, intégrant Twitter à OutLook 2010.</p>
<p>On a deux scénarios, « first connection » et « daily connection ».</p>
<p><strong>First Connection</strong></p>
<p>- L’application TwittLook possède deux clefs sur le principe de clefs privé/publique. Ce qui est cool, c’est que à part le fait que l’on devra garder la seconde « secrète », la seul chose que l’on fera avec, c’est les renseigner dans deux propriétés, LinqToTwitter s’occupe du reste (sans jeux de mots ^^).</p>
<p>- Ensuite notre application renverra l’utilisateur vers twitter directement afin qu’il valide l’accès de notre application à son compte.</p>
<p><img src="http://istacee.files.wordpress.com/2011/10/twitt2.png?w=480" alt="" title="Twitt2"   class="aligncenter size-full wp-image-1039" /></p>
<p>- Si l’utilisateur accepte, il recevra un code PIN que l’on utilisera pour générer deux nouvelles clefs. Ces deux clefs seront stockées et nous permettrons les fois suivante de directement se connecter au compte de l’utilisateur.</p>
<p><img src="http://istacee.files.wordpress.com/2011/10/twitt3.png?w=480" alt="" title="Twitt3"   class="aligncenter size-full wp-image-1040" /></p>
<p><strong>Daily Connection</strong></p>
<p>- Idem que le point 1 de First Connection</p>
<p>- On renseigne les tokens obtenue au point 3 de First Connection</p>
<p>- Enjoy <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Et c’est tout… Sur ces deux scénarios sont résumé tout ce qu’il est nécessaire de connaitre pour developper une appli twitter ! Plus leger que les 120pages de RFC OAuth n’est-ce pas ?</p>
<p>Maintenant, comment fait-on concrètement ?</p>
<p>Premièrement, si ce n’est déjà fait, rendez-vous sur la partie développeur de twitter et enregistrez votre application. C’est gratuit et sans validation, le seul requirement c’est un compte valide. Cette authentification nous permettra d’obtenir les deux clefs. La première peut être public, la seconde doit rester privée (et donc protégée).</p>
<p><img src="http://istacee.files.wordpress.com/2011/10/twitt1.png?w=480" alt="" title="Twitt1"   class="aligncenter size-full wp-image-1038" /></p>
<p>Les deux clefs dans le notepad, direction l’onglet settings dans la section « Application Type ». Nous allons là définir les droits d’accès de notre application. Libre à vous de prendre l’option qui vous convient selon vos besoins, la suite ne changera pas, mais de base les applications sont en Read-Only.</p>
<p>Les keys obtenue, nous allons créer un objet de type PinAuthorizer. Dans cet objet nous allons définir notre ConsumerKey, ConsumerSecret, Action à utiliser lorsque l’on se rend sur la page d’autorisation et une fonction à exécuter pour récupérer le code PIN. Dans mon cas j’ai stocké les key dans un fichier settings. Voici donc le code pour initialiser notre objet :</p>
<p><pre class="brush: plain;">
var auth = new PinAuthorizer
{
    Credentials = new InMemoryCredentials
    {
        ConsumerKey = keys.Default.ConsumerKey,
        ConsumerSecret = keys.Default.ConsumerSecret
    },
    UseCompression = true,
    GoToTwitterAuthorization = pageLink =&gt; Process.Start(pageLink),
    GetPin = () =&gt;
    {
        Console.WriteLine(&quot;Enter the PIN Number : \n&quot;); 
        return Console.ReadLine();
    }
};
</pre></p>
<p>Ensuite, si les tokens n’existent pas, cela signifie que l’application n’est pas authentifiée, nous appelons la méthode Authorize(). Ceci exécutera la méthode GoToTwitterAuthorization suivi de GetPin(). Ensuite dans notre code il nous suffit de récupéré dans la propriété Credentials les deux tokens (OAuthToken et AccessToken) que nous stockerons. Ainsi les fois suivante l’appel d’Authorize ne sera plus nécessaire. Et c’est tout ^^</p>
<p>Voici le code complet :<br />
<pre class="brush: plain;">
var auth = new PinAuthorizer
{
    Credentials = new InMemoryCredentials
    {
        ConsumerKey = keys.Default.ConsumerKey,
        ConsumerSecret = keys.Default.ConsumerSecret
    },
    UseCompression = true,
    GoToTwitterAuthorization = pageLink =&gt; Process.Start(pageLink),
    GetPin = () =&gt;
    {
        Console.WriteLine(&quot;Enter the PIN Number : \n&quot;); 
        return Console.ReadLine();
    }
};

if (keys.Default.OAuthToken.Trim() != &quot;&quot; &amp;&amp; keys.Default.AccessToken.Trim() != &quot;&quot;)
{
    auth.Credentials = new InMemoryCredentials
    {
        ConsumerKey = keys.Default.ConsumerKey,
        ConsumerSecret = keys.Default.ConsumerSecret,
        OAuthToken =  keys.Default.OAuthToken,
        AccessToken = keys.Default.AccessToken
    };
}
else
{
    auth.Authorize();
    keys.Default.OAuthToken = auth.Credentials.OAuthToken;
    keys.Default.AccessToken = auth.Credentials.AccessToken;
    keys.Default.Save();
}

if (auth.IsAuthorized)
{
    using (var twitterCtx = new TwitterContext(auth, &quot;https://api.twitter.com/1/&quot;, &quot;https://search.twitter.com/&quot;))
    {
        //Log
        twitterCtx.Log = Console.Out;
        var message = twitterCtx.NewDirectMessage(&quot;TchoyTchoy&quot;, &quot;Direct Message Test - &quot; + DateTime.Now);
    }
}
</pre></p>
<p>L’API OAuth va beaucoup plus loin, notamment sur des scénarios très complexe, mais la plupart du temps, ceci devrais suffire ^^</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1041/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1041/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1041/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1041/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1041/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1041/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1041/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1041/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1041/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1041/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1041/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1041/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1041/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1041/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1041&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2011/10/19/twitter-oauth-linqtotwitter-for-dummies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2011/10/nettweet.png?w=300" medium="image">
			<media:title type="html">nettweet</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2011/10/twitt2.png" medium="image">
			<media:title type="html">Twitt2</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2011/10/twitt3.png" medium="image">
			<media:title type="html">Twitt3</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2011/10/twitt1.png" medium="image">
			<media:title type="html">Twitt1</media:title>
		</media:content>
	</item>
		<item>
		<title>Un petit wallpaper Visual Studio 2010 ?</title>
		<link>http://istacee.wordpress.com/2011/09/25/un-petit-wallpaper-visual-studio-2010/</link>
		<comments>http://istacee.wordpress.com/2011/09/25/un-petit-wallpaper-visual-studio-2010/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 20:34:25 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[goodies]]></category>
		<category><![CDATA[visual studio 2010]]></category>
		<category><![CDATA[vswallpaper]]></category>
		<category><![CDATA[wallpaper]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1033</guid>
		<description><![CDATA[Voici un petit wallpaper que j&#8217;ai réalisé pour le site http://vs2010wallpapers.com/ entre deux prises de têtes avec de l&#8217;interop Visio 2010.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1033&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Voici un petit wallpaper que j&#8217;ai réalisé pour le site <a href="http://vs2010wallpapers.com/" target="_blank">http://vs2010wallpapers.com/</a> entre deux prises de têtes avec de l&#8217;interop Visio 2010.</p>
<p><a href="http://istacee.files.wordpress.com/2011/09/tomsbuildyourworld.png"><br />
</a><a href="http://istacee.files.wordpress.com/2011/09/tomsbuildyourworld.png"><img class="aligncenter size-full wp-image-1034" title="toMSBuildYourWorld" src="http://istacee.files.wordpress.com/2011/09/tomsbuildyourworld.png?w=480" alt=""   /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1033/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1033&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2011/09/25/un-petit-wallpaper-visual-studio-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2011/09/tomsbuildyourworld.png" medium="image">
			<media:title type="html">toMSBuildYourWorld</media:title>
		</media:content>
	</item>
		<item>
		<title>Events fantôme et interop office</title>
		<link>http://istacee.wordpress.com/2011/09/24/events-fantome-et-interop-office/</link>
		<comments>http://istacee.wordpress.com/2011/09/24/events-fantome-et-interop-office/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 04:46:43 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[com]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[interop]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[visio]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1031</guid>
		<description><![CDATA[Je développe actuellement une application ou j’ai besoin d’intégrer l’éditeur de dessin Visio et, entre autre, m’abonner a certains événements. Seul soucis, l’évènement survient de manière aléatoire. Après quelques heures de recherche et l’écriture d’un wrapper de COM event qui a donné le même résultat, j’ai trouvé ceci sur un forum concernant un problème d’event [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1031&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://istacee.files.wordpress.com/2010/07/net20logo.png?w=300&#038;h=74" alt="" title="NET%20Logo" width="300" height="74" class="alignleft size-medium wp-image-278" /></br>Je développe actuellement une application ou j’ai besoin d’intégrer l’éditeur de dessin Visio et, entre autre, m’abonner a certains événements. Seul soucis, l’évènement survient de manière aléatoire. Après quelques heures de recherche et l’écriture d’un wrapper de COM event  qui a donné le même résultat, j’ai trouvé ceci sur un forum concernant un problème d’event dans outlook.</p>
<blockquote><p>The reason is: &#8220;GC collect the .NET object, whichc wrapps COM object from Outlook )&#8221;. The solution is hold reference to this .NET object.</p></blockquote>
<p>La solution, simplement garder une référence sur l’objet. Dans mon cas, ma page Visio dans un attribut privé <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1031/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1031/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1031/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1031&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2011/09/24/events-fantome-et-interop-office/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2010/07/net20logo.png?w=300" medium="image">
			<media:title type="html">NET%20Logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Enregistrer des fichiers dans SQL Server 2008 en C#</title>
		<link>http://istacee.wordpress.com/2011/09/23/enregistrer-des-fichiers-dans-sql-server-2008-en-c/</link>
		<comments>http://istacee.wordpress.com/2011/09/23/enregistrer-des-fichiers-dans-sql-server-2008-en-c/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 20:32:42 +0000</pubDate>
		<dc:creator>manu404</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[ado]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[fichiers]]></category>
		<category><![CDATA[sql server 2008]]></category>

		<guid isPermaLink="false">http://istacee.wordpress.com/?p=1022</guid>
		<description><![CDATA[Voici comment stocker sur un SQL server tous type de fichier. En fait, il suffit d’avoir un champ de type varbinary dans lequel on enregistrera un byte[] de notre fichier. Donc pas de choses spéciales sur ADO, juste deux méthodes. La première retournant un byte[] d’un fichier et la seconde écrivant dans un fichier un [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1022&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://istacee.files.wordpress.com/2010/07/net20logo.png?w=300&#038;h=74" alt="" title="NET%20Logo" width="300" height="74" class="alignleft size-medium wp-image-278" /></br>Voici comment stocker sur un SQL server tous type de fichier. En fait, il suffit d’avoir un champ de type varbinary dans lequel on enregistrera un byte[] de notre fichier. Donc pas de choses spéciales sur ADO, juste deux méthodes. La première retournant un byte[] d’un fichier et la seconde écrivant dans un fichier un byte[]</p>
<p><pre class="brush: plain;">
public void writeFile(byte[] data, String fileName)
{
    using (BinaryWriter binWriter = new BinaryWriter(File.Open(fileName, FileMode.Create)))
    {
        binWriter.Write(data);
    }
}

public byte[] ReadFile(string sPath)
{
    byte[] data = null;
    FileInfo fInfo = new FileInfo(sPath);
    long numBytes = fInfo.Length;
    FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fStream);
    data = br.ReadBytes((int)numBytes);
    return data;
}
</pre></p>
<p>Pour le principe, voici deux méthodes, upload et download qui les utilisent.</p>
<p><pre class="brush: plain;">
public void Download(string outputPath, string filename, string ConnectionString)
{
    // Connection
    SqlConnection CN = new SqlConnection(ConnectionString);

    // Creation de la requête
    string qry = &quot;Select * from Files WHERE filename=@filename&quot;;
    SqlCommand SqlCom = new SqlCommand(qry, CN);
    SqlCom.Parameters.Add(new SqlParameter(&quot;@filename&quot;, (object)filename));
    SqlDataAdapter ADAP = new SqlDataAdapter(SqlCom.CommandText, CN);

    // Récupération des données
    DataSet DS = new DataSet();
    ADAP.Fill(DS, &quot;Files&quot;);

    // Lecture des données
    foreach (DataRow dr in DS.Tables[&quot;Files&quot;].Rows)
    {
        // enregistrement du fichier
        writeFile((byte[])dr[&quot;data&quot;], outputPath + dr[&quot;filename&quot;]);
    }
    CN.Close();
}

public void UploadNewFile(string sourcePath, string description, string ConnectionString)
{
    // Lecture du fichier
    byte[] data = ReadFile(sourcePath);

    // Nouvelle connection
    SqlConnection CN = new SqlConnection(ConnectionString);

    // Création de la requête
    string qry = &quot;insert into Files(filename, data, description) values (@filename, @data, @description)&quot;;
    SqlCommand SqlCom = new SqlCommand(qry, CN);
    SqlCom.Parameters.Add(new SqlParameter(&quot;@filename&quot;, (object)sourcePath.Split('\\').Last()));
    SqlCom.Parameters.Add(new SqlParameter(&quot;@data&quot;, (object)data));
    SqlCom.Parameters.Add(new SqlParameter(&quot;@description&quot;, (object)description));

    // Ouverture, execution, fermeture
    CN.Open();
    SqlCom.ExecuteNonQuery();
    CN.Close();
}
</pre></p>
<p>Par extension, cette méthode devrait fonctionner sur n&#8217;importe quel SGBD capable d&#8217;enregistrer des données de type binaire. Si certains ont testé sous oracle, mysql, db2 et cie, je serais interessé de savoir ce qu&#8217;il en est ^^</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/istacee.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/istacee.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/istacee.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/istacee.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/istacee.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/istacee.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/istacee.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/istacee.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/istacee.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/istacee.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/istacee.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/istacee.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/istacee.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/istacee.wordpress.com/1022/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=istacee.wordpress.com&amp;blog=12405020&amp;post=1022&amp;subd=istacee&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://istacee.wordpress.com/2011/09/23/enregistrer-des-fichiers-dans-sql-server-2008-en-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7225b6e7262fb395ad62137d8d37bdaa?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">manu404</media:title>
		</media:content>

		<media:content url="http://istacee.files.wordpress.com/2010/07/net20logo.png?w=300" medium="image">
			<media:title type="html">NET%20Logo</media:title>
		</media:content>
	</item>
	</channel>
</rss>
