Varie ed eventuali http://blogs.ugidotnet.org/PietroLibroBlog/category/Varie ed eventuali.aspx Varie ed eventuali it-IT Pietro Libro pietro.libro@libero.it Subtext Version 2.6.0.0 Screen Resolution Debian (guest) su Hyper-V http://blogs.ugidotnet.org/PietroLibroBlog/archive/2017/03/12/screen-resolution-debian-guest-su-hyper-v.aspx <p>Se si ha una macchina virtuale Debian come guest su Hyper-V e si ha la necessità di cambiare la risoluzione dello schermo, dopo averle provate tutte, provare anche questa <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/1e3e389fa7c1_98F9/wlEmoticon-smile_2.png" />. </p> <p>Come riportato su<a title="http://uglygizmo.blogspot.ch/2014/06/debian-screen-resolution-when-hyper-v.html" href="http://uglygizmo.blogspot.ch/2014/06/debian-screen-resolution-when-hyper-v.html" target="_blank"> uglygizmo.blogspot.ch</a> i passi da seguire sono veramente pochi, per convenienza li riporto qui:</p> <ol> <li>Edit the grub configuration file, for example:  <font face="Courier New">sudo vi /etc/default/grub</font></li> <li>Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT, and add "video=hyperv_fb:1680x1050" (or your custom resolution) in between the quotes. For example: <font face="Courier New">GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1680x1050"</font></li> <li>Save and exit  </li> <li>Run <font face="Courier New">sudo update-grub</font></li> <li>Restart your computer </li> </ol> <p>Nel mio caso finalmente sono riuscito ad impostare la risoluzione desiderata.</p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/102380.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2017/03/12/screen-resolution-debian-guest-su-hyper-v.aspx Sun, 12 Mar 2017 12:02:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2017/03/12/screen-resolution-debian-guest-su-hyper-v.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/102380.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/102380.aspx JSON.Merge http://blogs.ugidotnet.org/PietroLibroBlog/archive/2014/08/29/json.merge.aspx <p>Un’interessante novità introdotta con la versione 6.0 release 4 di Json.NET è la possibilità di eseguire il <em>Merge</em> (utilizzando 4 possibili “variazioni”) di oggetti <em>JObject</em> e <em>Jarray</em>. Un rapido esempio, tramite Web Api:</p> <pre class="brush: csharp;">[HttpPost] public void JsonStringPost([FromBody]string value) { JObject jCar = JObject.Parse(value); JObject jOptional = JObject.Parse(@"{Optionals :['Air Conditioned','Smoker'] }"); jCar.Merge(jOptional, new JsonMergeSettings() { MergeArrayHandling = MergeArrayHandling.Union }); string jsonFormat = jCar.ToString(); Car mergedCar = jCar.ToObject&lt;Car&gt;(); }</pre> <p>Dove <em>l’Action</em> “JsonStringPost” accetta una stringa tipo:</p> <p>"{ 'Brand': 'Ferrari','Model': 'f450 Modena','Optionals': [] }"</p> <p>Utilizzando, ad esempio il <em>Composer</em> di strumenti come <a href="http://www.telerik.com/fiddler" target="_blank">Fiddler2</a> possiamo invocare il servizio:</p> <a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/JSON.Merge_A854/image_5.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/JSON.Merge_A854/image_thumb_1.png" width="244" height="238" /></a> <p>Per ottenere una nuova istanza di <em>Car</em> con tutti gli <em>Optionals</em>:</p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/JSON.Merge_A854/image_7.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/JSON.Merge_A854/image_thumb_2.png" width="244" height="74" /></a></p> <p>Se il nostro servizio accetta direttamente un’istanza di oggetto invece di una stringa in formato JSON, il nostro codice cambia leggermente, come di seguito:</p> <pre class="brush: csharp;">[HttpPost] public void JsonObjectPost([FromBody] Car carByPost) { JObject jCar = JObject.FromObject(carByPost); JObject jOptional = JObject.Parse(@"{Optionals :['Air Conditioned','Smoker'] }"); jCar.Merge(jOptional, new JsonMergeSettings() { MergeArrayHandling = MergeArrayHandling.Union }); string jsonFormat = jCar.ToString(); Car mergedCar = jCar.ToObject<car>(); }</car></pre> <p>Dove utilizziamo il metodo <em>FromObject</em> della classe <em>JObject</em> invece di <em>Parse. </em>Utilizzando Fiddler, passando come <em>Body</em> del messaggio la stringa (senza i doppi apici ad inizio e fine stringa)</p> <p>{ 'Brand': 'Ferrari','Model': 'f450 Modena','Optionals': [] }</p> <p>Otteniamo (ovviamente) lo stesso risultato dell’invocazione precedente. E’ possibile modificare il comportamento di “Merge” utilizzando l’enumerazione <em>MergeArrayHandling. </em>La classe <em>Car </em>(C#) è descritta nell’esempio, è la seguente:</p> <pre class="brush: csharp;">public class Car { public string Brand { get; set; } public string Model { get; set; } public string[] Optionals { get; set; } }</pre> <p>La lista completa delle <em>features</em> aggiunte nel rilascio della versione 6.0 release 4 è disponibile <a href="http://james.newtonking.com/archive/2014/08/04/json-net-6-0-release-4-json-merge-dependency-injection" target="_blank">qui</a>.</p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/101880.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2014/08/29/json.merge.aspx Fri, 29 Aug 2014 13:30:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2014/08/29/json.merge.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/101880.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/101880.aspx Enterprise Library 6 http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/04/26/enterprise-library-6.aspx <p>Nuova release per Microsoft Enterprise Library. Tutti i dettagli del caso <a href="http://msdn.microsoft.com/en-us/library/dn169621.aspx#sec8" target="_blank">qui.</a></p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/101525.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/04/26/enterprise-library-6.aspx Fri, 26 Apr 2013 14:09:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/04/26/enterprise-library-6.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/101525.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/101525.aspx Le (mie) prime Windows 8 App Store http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/04/24/le-mie-prime-windows-8-app-store.aspx <p>Alla fine, sono riuscito a pubblicare le mie  prime 4 applicazioni nello Store di Windows 8. L’obiettivo è raddopiare il numero entro la fine di maggio. Se avete voglia di provarle (sono tutte free) e indicarmi qualche suggerimento per le versioni future ed attuali, di seguito  link e nomi :</p> <p><img title="Lazio: Cultura e Turismo" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="132780[2]" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/LeprimeAppdiWindows8Store_7C3E/132780%5B2%5D_thumb_1.png" width="54" height="54" /> <a href="http://apps.microsoft.com/windows/app/lazio-cultura-e-turismo/22017e70-f81f-4fd4-89c9-e6ab0cc45f6c" target="_blank">Lazio: Cultura e Turismo</a></p> <p><em>L'applicazione "Lazio: Cultura e Turismo", è un elenco dei Punti d'Interesse (POI) Culturali del Lazio: Musei, Statue, Monasteri, Dipinti, Abbazie, Castelli, Torri ecc....Per ogni POI è presente una descrizione in Italiano (eventualmente in Inglese), foto e geolocalizzazione. Il catalogo dati è mantenuto e fornito da "Lazio futouring", sito internet: <a href="http://www.futouring.eu" target="_blank">http://www.futouring.eu.</a></em></p> <p><img title="Farmacie Italiane" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="128786[1]" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/LeprimeAppdiWindows8Store_7C3E/128786%5B1%5D_6d53c596-3c82-4b54-a4bd-66f9f16a9511.png" width="54" height="54" /> <a href="http://apps.microsoft.com/windows/app/farmacie-italiane/493f771f-fb97-49c3-b970-7413e9daa6a0" target="_blank">Farmacie Italiane</a></p> <p><em>Elenco completo delle farmacie italiane aperte al pubblico, comprensivo di dati di localizzazione e geoloclalizzazione. I dati sono mantenuti e forniti tramite piattaforma"cloud" del "Ministero della Salute".</em> </p> <p><img title="Istituti Scolastici Provincia di Roma" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="123924[1]" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/LeprimeAppdiWindows8Store_7C3E/123924%5B1%5D_a20b31c4-a9ef-4023-a59a-303041b9ab06.png" width="54" height="54" /><a href="http://apps.microsoft.com/windows/app/istituti-scolastici-provincia-di/c08b0a24-0f93-4e05-8c2a-6a86b9b1af20" target="_blank"></a><a href="http://apps.microsoft.com/windows/app/istituti-scolastici-provincia-di/c08b0a24-0f93-4e05-8c2a-6a86b9b1af20" target="_blank">Istituti Scolastici Provincia di Roma</a></p> <p><em>"Istituti Scolastici Provincia di Roma" Catalogo con geolocalizzazione degli istituti scolastici (superiori) della provincia di Roma. I dati base sono forniti dalla piattaforma "Open Data".</em> </p> <p><img title="Roma ProvinciaWiFi" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="123362[1]" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/LeprimeAppdiWindows8Store_7C3E/123362%5B1%5D_thumb_1.png" width="54" height="54" /><a href="http://apps.microsoft.com/windows/app/roma-provinciawifi/ed103394-e36d-4041-b8c0-0c80af20906d" target="_blank">Roma ProvinciaWiFi</a></p> <p><em>Individua facilmente apparati WiFi della provincia di Roma per l'accesso gratuito ad Internet. I dati di geolocalizzazione sono ottenuti tramite il "Portale Opendata della Provincia di Roma".</em></p> <p>Buon divertimento :-D.</p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/101520.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/04/24/le-mie-prime-windows-8-app-store.aspx Wed, 24 Apr 2013 09:58:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/04/24/le-mie-prime-windows-8-app-store.aspx#feedback 1 http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/101520.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/101520.aspx ASP.NET Web Api a Codemotion Roma 2013 http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/03/22/asp.net-web-api-a-codemotion-roma-2013.aspx <p>Se domani non avete proprio nulla da fare :-) possiamo vederci a Codemotion 2013 Roma.</p> <p> <a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/ASP.NETWebApiaCodemotionRoma2013_106C0/image_2.png"><img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/ASP.NETWebApiaCodemotionRoma2013_106C0/image_thumb.png" width="437" height="228" /></a></p> <p>Una sessione introduttiva all’utilizzo del Framework ASP.NET Web Api per lo sviluppo di applicazioni RESTful.</p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/101485.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/03/22/asp.net-web-api-a-codemotion-roma-2013.aspx Fri, 22 Mar 2013 19:39:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/03/22/asp.net-web-api-a-codemotion-roma-2013.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/101485.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/101485.aspx Modi diversi di recuperare il numero di messaggi in una coda MSMQ http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/01/28/modi-diversi-di-recuperare-il-numero-di-messaggi-in-una.aspx <p>Ultimamente mi trovo a lavorare su di un progetto che utilizza WCF e <a href="http://en.wikipedia.org/wiki/Microsoft_Message_Queuing" target="_blank">MSMQ</a>. Una delle classiche operazioni quando si lavora con queste tecnologie è sicuramente recuperare il numero di messaggi presenti in una coda. Tra documentazione e ricerche su internet, alla fine si “scopre” che ci sono diversi metodi per risolvere lo stesso problema:</p> <ol> <li>Cursori di MSMQ </li> <li>Utilizzo di GetAllMessages </li> <li>Utilizzo di GetEnumerator2 </li> <li>PowerShell </li> <li>Performance Counter </li> </ol> <p>Traducendo il tutto in righe di codice, per il punto 1) abbiamo:</p> <pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">int</span> CountByCursor() { <span class="kwrd">int</span> count = 0; Cursor cursor = _messageQueue.CreateCursor(); Message m = CursorPeekWithoutTimeout(cursor, PeekAction.Current); <span class="kwrd">if</span> (m != <span class="kwrd">null</span>) { count = 1; <span class="kwrd">while</span> ((m = CursorPeekWithoutTimeout(cursor, PeekAction.Next)) != <span class="kwrd">null</span>) { count++; } <span class="kwrd">if</span> (m != <span class="kwrd">null</span>) m.Dispose(); } cursor.Dispose(); <span class="kwrd">return</span> count; } <span class="kwrd">private</span> Message CursorPeekWithoutTimeout(Cursor cursor, PeekAction action) { Message ret = <span class="kwrd">null</span>; <span class="kwrd">try</span> { ret = _messageQueue.Peek(<span class="kwrd">new</span> TimeSpan(1), cursor, action); } <span class="kwrd">catch</span> (MessageQueueException mqe) { <span class="kwrd">if</span> (mqe.MessageQueueErrorCode != MessageQueueErrorCode.IOTimeout) { <span class="kwrd">throw</span>; } } <span class="kwrd">return</span> ret; }</pre> <style type="text/css"><![CDATA[ .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }]]></style> <p>Sinceramente questo è il metodo che più non mi piace, sarà per la parola “Cursore”, sarà per la gestione dell’eccezione, sarà perchè la vedo poco pulita. </p> <p>Passiamo al punto 2):</p> <pre class="csharpcode"> <span class="kwrd">public</span> <span class="kwrd">int</span> CountByGetAllMessages() { <span class="kwrd">return</span> _messageQueue.GetAllMessages().Length; }</pre> <style type="text/css"><![CDATA[ .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }]]></style> <p>Semplice e pulita, ma come vedremo a breve, le prestazioni scendono con l’aumentare dei messaggi in coda.</p> <p>Punto 3), “GetMessageEnumerator2”:</p> <pre class="csharpcode">var x = _messageQueue.GetMessageEnumerator2(); <span class="kwrd">int</span> counter = 0; <span class="kwrd">while</span> (x.MoveNext()) { counter++; } <span class="kwrd">return</span> counter;</pre> <p>Sfruttiamo il <em>MessageEnumerator</em> ritornato dal metodo <em>GetEnumerator2</em> ed iteriamo per spostare il cursore fino alla fine della coda.</p> <p>Punto 4), “PowerShell” (in questo caso mi sono limitato a copiare del codice trovato in rete):</p> <pre class="csharpcode">var path = <span class="kwrd">string</span>.Format(<span class="str">@"\\{0}\root\CIMv2"</span>, machine); ManagementScope scope; <span class="kwrd">if</span> (<span class="kwrd">string</span>.IsNullOrEmpty(username)) { scope = <span class="kwrd">new</span> ManagementScope(path); } <span class="kwrd">else</span> { var options = <span class="kwrd">new</span> ConnectionOptions { Username = username, Password = password }; scope = <span class="kwrd">new</span> ManagementScope(path, options); } scope.Connect(); <span class="kwrd">if</span> (queuePath.StartsWith(<span class="str">".\\")) queuePath = queuePath.Replace("</span>.\\<span class="str">", string.Format("</span>{0}\\<span class="str">", machine)); string queryString = String.Format("</span>SELECT * FROM Win32_PerfFormattedData_msmq_MSMQQueue<span class="str">"); var query = new ObjectQuery(queryString); var searcher = new ManagementObjectSearcher(scope, query); IEnumerable&lt;int&gt; messageCountEnumerable = from ManagementObject queue in searcher.Get() select (int)(UInt64)queue.GetPropertyValue("</span>MessagesInQueue"); var x = messageCountEnumerable.First(); <span class="kwrd">return</span> x;</pre> <style type="text/css"><![CDATA[ .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }]]></style> <p>ed infine il punto 5) “Performance Counter”:</p> <pre class="csharpcode">System.Diagnostics.PerformanceCounter backupQueueCounter = <span class="kwrd">new</span> System.Diagnostics.PerformanceCounter( <span class="str">"MSMQ Queue"</span>, <span class="str">"Messages in Queue"</span>, <span class="str">"queue_path"</span>); <span class="kwrd">return</span> backupQueueCounter.NextValue();</pre> <style type="text/css"><![CDATA[ .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }]]></style> <p>Bene, ora quale usare ? Proviamo con un piccolo test: ad una coda privata aggiungiamo 10.000 messaggi per volta (all’interno di un ciclo) e proviamo ad utilizzare i metodi su descritti per recuperare il numero di messaggi presenti in coda (si suppone che tra un conteggio e l’altro nella coda non vengano aggiunti altri messaggi). Iteriamo il procedimento per tre volte. </p> <p>Di seguito i risultati ottenuti (espressi in millisecondi, per le misure del tempo di esecuzione è stata utilizzata la classe <em>System.Diagnostics.Stopwatcher</em>):</p> <p><strong>Prima Iterazione</strong></p> <table cellspacing="0" cellpadding="0" border="0"><tbody> <tr> <td width="80">#Msgs</td> <td width="80">MSMQ Cursor</td> <td width="35">GetAllMessages</td> <td width="65">GetEnumerator2</td> <td width="118">PowerShell</td> <td width="97">Performance C.</td> </tr> <tr> <td width="80">10.000</td> <td width="80">449,816</td> <td width="35">580,703</td> <td>36,37</td> <td>78,543</td> <td>351,86</td> </tr> <tr> <td width="80">20.000</td> <td width="80">928,18</td> <td width="35">1.297,72</td> <td>78,16</td> <td>9,888</td> <td>0,462</td> </tr> <tr> <td width="80">30.000</td> <td width="80">1.340,44</td> <td width="35">1.854,52</td> <td>137,82</td> <td>10,563</td> <td>1,121</td> </tr> <tr> <td width="80">40.000</td> <td width="80">1.769,73</td> <td width="35">2.656,28</td> <td>194,652</td> <td>12,061</td> <td>3,187</td> </tr> <tr> <td width="80">50.000</td> <td width="80">2.188,74</td> <td width="35">3.427,84</td> <td>190,672</td> <td>10,739</td> <td>0,452</td> </tr> <tr> <td width="80">60.000</td> <td width="80">2.631,29</td> <td width="35">3.909,71</td> <td>231,995</td> <td>10,219</td> <td>0,364</td> </tr> <tr> <td width="80">70.000</td> <td width="80">3.006,52</td> <td width="35">4.771,09</td> <td>264,112</td> <td>5.802,42</td> <td>0,462</td> </tr> <tr> <td width="80">80.000</td> <td width="80">3.469,49</td> <td width="35">6.116,47</td> <td>309,691</td> <td>10,075</td> <td>0,545</td> </tr> <tr> <td width="80">90.000</td> <td width="80">4.000,00</td> <td width="35">6.134,66</td> <td>372,885</td> <td>9,876</td> <td>0,435</td> </tr> <tr> <td width="80">100.000</td> <td width="80">4.544,33</td> <td width="35">6.932,08</td> <td>424,196</td> <td>9,024</td> <td>0,41</td> </tr> </tbody></table> <a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/Modidiversidirecuperareilnumerodimessagg_ABED/image_10.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/Modidiversidirecuperareilnumerodimessagg_ABED/image_thumb.png" width="244" height="148" /></a> <p><strong>Seconda Iterazione</strong></p> <table cellspacing="0" cellpadding="0" border="0"><tbody> <tr> <td width="77">#Msgs</td> <td width="78">MSMQ Cursor</td> <td width="40">GetAllMessages</td> <td width="65">GetEnumerator2</td> <td width="118">PowerShell</td> <td width="97">Performance C.</td> </tr> <tr> <td width="77">10.000</td> <td width="78">475,357</td> <td width="40">609,866</td> <td>38,022</td> <td>285,978</td> <td>351,955</td> </tr> <tr> <td width="77">20.000</td> <td width="78">912,591</td> <td width="40">1.315,49</td> <td>76,912</td> <td>10,453</td> <td>0,502</td> </tr> <tr> <td width="77">30.000</td> <td width="78">1.417,26</td> <td width="40">2.066,92</td> <td>122,745</td> <td>11,156</td> <td>0,366</td> </tr> <tr> <td width="77">40.000</td> <td width="78">1.901,66</td> <td width="40">2.718,64</td> <td>153,373</td> <td>9,947</td> <td>0,349</td> </tr> <tr> <td width="77">50.000</td> <td width="78">2.393,97</td> <td width="40">3.386,43</td> <td>203,553</td> <td>10,962</td> <td>0,358</td> </tr> <tr> <td width="77">60.000</td> <td width="78">2.659,28</td> <td width="40">4.546,84</td> <td>280,257</td> <td>9,832</td> <td>0,413</td> </tr> <tr> <td width="77">70.000</td> <td width="78">3.246,77</td> <td width="40">4.938,01</td> <td>278,404</td> <td>11,664</td> <td>0,517</td> </tr> <tr> <td width="77">80.000</td> <td width="78">3.718,89</td> <td width="40">5.881,67</td> <td>330,857</td> <td>13,688</td> <td>0,506</td> </tr> <tr> <td width="77">90.000</td> <td width="78">4.230,99</td> <td width="40">6.677,00</td> <td>362,374</td> <td>10,155</td> <td>0,508</td> </tr> <tr> <td width="77">100.000</td> <td width="78">4.832,89</td> <td width="40">7.585,19</td> <td>464,216</td> <td>16,495</td> <td>0,681</td> </tr> </tbody></table> <a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/Modidiversidirecuperareilnumerodimessagg_ABED/image_12.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/Modidiversidirecuperareilnumerodimessagg_ABED/image_thumb_4.png" width="244" height="148" /></a> <p><strong>Terza Iterazione</strong></p> <table cellspacing="0" cellpadding="0" width="541" border="0"><tbody> <tr> <td width="86">#Msgs</td> <td width="103">MSMQ Cursor</td> <td width="10">GetAllMessages</td> <td width="65">GetEnumerator2</td> <td width="118">PowerShell</td> <td width="161">Performance C.</td> </tr> <tr> <td width="86">10.000</td> <td width="103">533,294</td> <td width="10">621,392</td> <td>41,496</td> <td>79,286</td> <td width="161">376,431</td> </tr> <tr> <td width="86">20.000</td> <td width="103">911,513</td> <td width="10">1.338,41</td> <td>79,827</td> <td>9,354</td> <td width="161">0,38</td> </tr> <tr> <td width="86">30.000</td> <td width="103">1.339,34</td> <td width="10">2.123,46</td> <td>120,693</td> <td>12,969</td> <td width="161">0,414</td> </tr> <tr> <td width="86">40.000</td> <td width="103">1.799,28</td> <td width="10">2.658,01</td> <td>158,606</td> <td>9,423</td> <td width="161">0,374</td> </tr> <tr> <td width="86">50.000</td> <td width="103">2.196,96</td> <td width="10">3.221,87</td> <td>199,273</td> <td>10,413</td> <td width="161">0,426</td> </tr> <tr> <td width="86">60.000</td> <td width="103">2.562,49</td> <td width="10">4.140,15</td> <td>257,22</td> <td>8,81</td> <td width="161">0,411</td> </tr> <tr> <td width="86">70.000</td> <td width="103">3.358,83</td> <td width="10">4.715,56</td> <td>327,474</td> <td>14,808</td> <td width="161">0,53</td> </tr> <tr> <td width="86">80.000</td> <td width="103">4.417,58</td> <td width="10">6.690,44</td> <td>316,044</td> <td>17,334</td> <td width="161">0,825</td> </tr> <tr> <td width="86">90.000</td> <td width="103">4.185,52</td> <td width="10">6.229,67</td> <td>340,457</td> <td>11,773</td> <td width="161">0,396</td> </tr> <tr> <td width="86">100.000</td> <td width="103">4.407,13</td> <td width="10">6.658,46</td> <td>390,498</td> <td>12,944</td> <td width="161">0,589</td> </tr> </tbody></table> <a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/Modidiversidirecuperareilnumerodimessagg_ABED/image_14.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/WindowsLiveWriter/Modidiversidirecuperareilnumerodimessagg_ABED/image_thumb_5.png" width="244" height="148" /></a> <p>Dai risultati ottenuti si ottiene che l’utilizzo del “Performance Counter”, in caso di letture successive, sembrerebbe essere quello più efficiente. </p> <p>In attesa di altri giudizi ed approfondimenti :-).</p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/101412.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/01/28/modi-diversi-di-recuperare-il-numero-di-messaggi-in-una.aspx Mon, 28 Jan 2013 13:13:32 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2013/01/28/modi-diversi-di-recuperare-il-numero-di-messaggi-in-una.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/101412.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/101412.aspx Elenco di Micro-Framework&hellip; http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/09/21/elenco-di-micro-frameworkhellip.aspx <p>Post promemoria: interessante ed abbondante elenco di Micro-Framework (completo di “motore di ricerca”) <a href="http://microjs.com" target="_blank">microjs.com</a></p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/101225.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/09/21/elenco-di-micro-frameworkhellip.aspx Fri, 21 Sep 2012 10:01:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/09/21/elenco-di-micro-frameworkhellip.aspx#feedback 2 http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/101225.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/101225.aspx DomusDotNet: ALM@Work http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/08/21/domusdotnet-almwork.aspx <p>Pubblicata l'agenda dell'evento ALM@Work organizzato da DomusDotNet per il 28 settembre 2012 presso la sede Microsoft di Roma, insieme a Matteo Emili e Gian Maria Ricci, MVP italiani di Visual Studio ALM.</p> <p>Tutti i dettagli dell'agenda ed il link per l'iscrizione <a href="http://www.domusdotnet.org/eventi/almatwork.aspx">qui</a> . </p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/101167.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/08/21/domusdotnet-almwork.aspx Tue, 21 Aug 2012 20:57:45 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/08/21/domusdotnet-almwork.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/101167.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/101167.aspx ASP.NET MVC, Web API, Razor and Open Source http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/03/28/asp.net-mvc-web-api-razor-and-open-source.aspx <p>Dal post di <a href="http://weblogs.asp.net/scottgu/archive/2012/03/27/asp-net-mvc-web-api-razor-and-open-source.aspx" target="_blank">ScottGu</a>: </p> <p><em>You can now browse, sync and build the source tree of ASP.NET MVC, Web API, and Razor on the </em><a href="http://aspnetwebstack.codeplex.com"><em>http://aspnetwebstack.codeplex.com</em></a><em> web-site.</em></p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/100898.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/03/28/asp.net-mvc-web-api-razor-and-open-source.aspx Wed, 28 Mar 2012 13:00:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/03/28/asp.net-mvc-web-api-razor-and-open-source.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/100898.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/100898.aspx DomusDotNet : We Want Web, grazie a tutti :-) http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/03/10/domusdotnet-wewantweb-grazie-a-tutti.aspx <p>Ieri 9/3/12 si è svolto l’evento WeWantWeb organizzato da DomusDotNet presso la sede Microsoft di Roma. Le sessioni sono state registrare e quanto prima pubblicheremo Slide, codice sorgente degli esempi e Video, sul sito di <a href="http://www.domusdotnet.org/" target="_blank">DomusDotNet</a>. Grazie a tutti i partecipanti!!! Attendiamo i vostri feedback! Al prossimo evento <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sorriso" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/wlEmoticon-smile_2.png" />.</p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000309_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Alessandro Mostarda e Massibo Bonanni" border="0" alt="Alessandro Mostarda e Massibo Bonanni" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000309_thumb.jpg" width="184" height="244" /></a><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000311_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Giorgio Di Nardo" border="0" alt="Giorgio Di Nardo" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000311_thumb.jpg" width="184" height="244" /></a><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000317_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Nicolò Carandini" border="0" alt="Nicolò Carandini" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000317_thumb.jpg" width="184" height="244" /></a><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000333_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Pietro Libro" border="0" alt="Pietro Libro" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000333_thumb.jpg" width="184" height="244" /></a><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000307_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="WP_000307" border="0" alt="WP_000307" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/WP_000307_thumb.jpg" width="184" height="244" /></a></p> <p>Da sinistra verso destra: <a href="http://www.alessandromostarda.com/" target="_blank">Alessandro Mostarda</a> e <a href="http://codetailor.blogspot.com/" target="_blank">Massimo Bonanni</a>, Giorgio Di Nardo, <a href="http://blogs.ugidotnet.org/Nick60/Default.aspx" target="_blank">Nick</a>, io <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sorriso" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/wlEmoticon-smile_2.png" />, parte di coloro che hanno avuto la pazienza di ascoltarci <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sorriso" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/PietroLibroBlog/Windows-Live-Writer/7226c6221ecf_11545/wlEmoticon-smile_2.png" />.</p><img src="http://blogs.ugidotnet.org/PietroLibroBlog/aggbug/100854.aspx" width="1" height="1" /> Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/03/10/domusdotnet-wewantweb-grazie-a-tutti.aspx Sat, 10 Mar 2012 20:52:00 GMT http://blogs.ugidotnet.org/PietroLibroBlog/archive/2012/03/10/domusdotnet-wewantweb-grazie-a-tutti.aspx#feedback http://blogs.ugidotnet.org/PietroLibroBlog/comments/commentRss/100854.aspx http://blogs.ugidotnet.org/PietroLibroBlog/services/trackbacks/100854.aspx