<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Borsalino Moreno</title>
        <link>http://blogs.ugidotnet.org/BorsalinoMoreno/Default.aspx</link>
        <description>Riflessioni, opinioni, problemi e si spera soluzioni.</description>
        <language>it-IT</language>
        <copyright>Moreno Borsalino</copyright>
        <managingEditor>mborsalino@web.de</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <image>
            <title>Borsalino Moreno</title>
            <url>http://blogs.ugidotnet.org/images/RSS2Image.gif</url>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Lunghezza massima di una stringa</title>
            <category>Coding</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/08/22/93783.aspx</link>
            <description>&lt;p&gt;L'estate fa venire strani pensieri ... perche' le formiche hanno 6 zampe, perche' Dio ha creato l'universo solo in una settimana e Microsoft non riesce a fare un buon sistema operativo in 5 anni ... e tante altre. In una delle altre mi chiedo perche' in C# la lunghezza di una stringa e' una proprieta' di tipo Int32. La lunghezza e' un valore che puo' essere solo &amp;gt;= di zero. Il ragionamento mi avrebbe portato a definirla come UInt32.&lt;/p&gt;  &lt;p&gt;Inoltre averlo definito come Int32 mi limita la dimensione massima delle stringhe a 2,147,483,647 mentre con uint potrei avere stringhe di 4,294,967,295 caratteri. Ovviamente si puo' obiettare che 4GB di stringa mandano in OutOfMemory l'heap ma da un punto di vista di purezza del modello mi incuriosisce il motivo che ha portato gli ingegneri della Microsoft a considerare solo un int.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/93783.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/08/22/93783.aspx</guid>
            <pubDate>Fri, 22 Aug 2008 12:54:16 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/93783.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/08/22/93783.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/93783.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/93783.aspx</trackback:ping>
        </item>
        <item>
            <title>Dopo una Close uno FileStream non necessita di Finalize</title>
            <category>Coding</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/08/22/93782.aspx</link>
            <description>&lt;p&gt;La Finalize e' un metodo chiamato dal Garbage Collector sugli oggetti che devono essere distrutti per rilasciare in modo pulito le risorse tenute dall'oggetto stesso. Tuttavia se un oggetto candidato alla distruzione richiede la finalizzazione allora non viene distrutto immediatamente ma soltanto alla prossima esecuzione del GC.&lt;/p&gt;  &lt;p&gt;Studiando la classe FileStream si nota che esiste il metodo Finalize che chiude lo stream e svuota i buffer. Tuttavia quando uso la classe di solito mi ritrovo a chiamare il metodo Close quando finisco di usare l'oggetto FileStream e guarda caso la Close fa le stesse cose della Finalize. Questo significa che nonostante la chiamata alla Close il Garbage Collector chiamera' la Finalize sull'oggetto che non dovra' fare nulla poiche' ho gia' fatto io Close ma avra' l'effetto di ritardare la distruzione effettiva dell'oggetto al prossimo giro del GC.&lt;/p&gt;  &lt;p&gt;Per rendere immediata la distruzione dell'oggetto allora dopo la Close dovrei aggiungere una GC.SuppressFinalize come nel codice seguente.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;path = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.Combine(&lt;span style="color: #2b91af"&gt;Environment&lt;/span&gt;.GetFolderPath(&lt;span style="color: #2b91af"&gt;Environment&lt;/span&gt;.&lt;span style="color: #2b91af"&gt;SpecialFolder&lt;/span&gt;.MyDocuments), &lt;span style="color: #a31515"&gt;"test.dat"&lt;/span&gt;);
&lt;span style="color: #2b91af"&gt;FileStream &lt;/span&gt;fs = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;FileStream&lt;/span&gt;(path, &lt;span style="color: #2b91af"&gt;FileMode&lt;/span&gt;.Create);
fs.WriteByte(1);
fs.Close();
&lt;span style="color: #2b91af"&gt;GC&lt;/span&gt;.SuppressFinalize(fs);&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/93782.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/08/22/93782.aspx</guid>
            <pubDate>Fri, 22 Aug 2008 12:47:35 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/93782.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/08/22/93782.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/93782.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/93782.aspx</trackback:ping>
        </item>
        <item>
            <title>Routing a livello applicativo in IIS7</title>
            <category>Computer e Internet</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/23/93513.aspx</link>
            <description>&lt;p&gt;Il 14 Luglio avevo scritto l'articolo &lt;a href="http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/14/93400.aspx"&gt;Accesso a TFS da Internet attraverso un reverse proxy&lt;/a&gt; in cui raccontavo come usare un Apache server in veste di reverse proxy per accedere da Internet ad un Team Foundation Server. In quell'articolo raccontavo che avevo scelto Apache per la facilita' con cui realizzare un proxy server rispetto ad utilizzare un ISA Server, il quale in questo caso sarebbe stato il classico cannone per uccidere al mosca.&lt;/p&gt;  &lt;p&gt;Oggi invece mi devo ravvedere soprattutto alla luce dell'uscita di un nuovo modulo per IIS 7 : Application Request Routing&lt;strong&gt; &lt;/strong&gt;attualmente in versione CTP1. Si tratta di un modulo proxy con capacita' anche di load balancing che pero' fa routing a livello 7 anziche livello 4. Basta specificare delle semplici regole per realizzare un routing a livello HTTP. Era quello che mancava ad IIS e che aggiunge quelle funzioni che erano tipiche dei moduli &lt;u&gt;modproxy&lt;/u&gt;, modloadbalance, modproxyhttp di Apache.&lt;/p&gt;  &lt;p&gt;Rimando ad un articolo di Scott Hanselman per approfondimenti : &lt;a href="http://feeds.feedburner.com/~r/ScottHanselman/~3/336552956/NewModulesForIIS7ApplicationRequestRoutingProxyAndLoadBalancingModule.aspx"&gt;New Modules for IIS7: Application Request Routing - Proxy and Load Balancing Module&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Mentre per il download diretto : &lt;a href="http://learn.iis.net/page.aspx/489/using-the-application-request-routing-module/"&gt;&lt;strong&gt;Application Request Routing CTP1&lt;/strong&gt;&lt;/a&gt; - &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1709"&gt;X86&lt;/a&gt; o &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712"&gt;X64&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/93513.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/23/93513.aspx</guid>
            <pubDate>Wed, 23 Jul 2008 14:23:01 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/93513.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/23/93513.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/93513.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/93513.aspx</trackback:ping>
        </item>
        <item>
            <title>Seagate difettosi</title>
            <category>Computer e Internet</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/17/93443.aspx</link>
            <description>&lt;p&gt;Oggi porto un hard disk rotto presso una ditta di recupero dati sperando che possano farlo resuscitare. L'addetto guarda il disco e mi dice: questa serie di dischi nei tagli da 200, 250 e 500 GB sono difettose e si disallinea facilmente la testina per cui il recupero è possibile solo in camera bianca, il che richiede una spesa molto elevata.&lt;/p&gt;  &lt;p&gt;Se avete dei Seagate Barracuda 7200 nei tagli sopra citati fate subito un backup.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/93443.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/17/93443.aspx</guid>
            <pubDate>Thu, 17 Jul 2008 15:05:18 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/93443.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/17/93443.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/93443.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/93443.aspx</trackback:ping>
        </item>
        <item>
            <title>Accesso a TFS da Internet attraverso un reverse proxy</title>
            <category>Team System</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/14/93400.aspx</link>
            <description>&lt;p&gt;Esperienze di configurazione di un reverse proxy per accedere da Internet ad un server TFS.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Problema&lt;/strong&gt;: Si vuole permettere l’accesso da Internet ad un server TFS situato in una rete locale in modo da consentire la continuità delle attività anche in un contesto extranet.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Vantaggi&lt;/strong&gt;: lo sviluppatore può lavorare in totale mobilità localizzandosi dove meglio preferisce purchè connesso ad Internet; accesso ai dati di progetti al di fuori della rete locale; non dover usare la modalità di lavoro offline di Visual Studio  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Svantaggi&lt;/strong&gt;: si lavora troppo (ma come? Dopo l'abolizione della scala mobile la nuova moda lanciata dai sindacati  è quella di aumentare la produttività per riportare i salari italiani allo stesso livello di quelli europei. Quindi muti e lavorate ! ... anche di notte)  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Analisi&lt;/strong&gt;: Il problema dell’accesso extranet a risorse aziendale è ben noto e risolto elegantemente ricorrendo a RAS e VPN. Ma volevo trovare una soluzione più semplice e mirata solo al server TFS + TSWA (TSWA e’ un’applicazione che espone i contenuti di TFS attraverso un portale web).  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Soluzione&lt;/strong&gt;: Ho pensato di utilizzare un meccanismo di reverse proxy. La prima soluzione tentata si basava su ISA server, ma ho desistito quasi subito: troppo complicato da configurare e troppo esagerata come soluzione; a me serve solo un reverse proxy mentre ISA è molto di più. Ripiego allora su Apache che mi risolve egregiamente il problema con poco sforzo e poche risorse impiegate. Infatti posso utilizzare un vecchio pc anche poco performante con solo Windows XP.&lt;br /&gt;Ecco la procedura per configurare un server Apache come reverse proxy per un server TFS.  &lt;/p&gt;&lt;p&gt;Un server TFS ha bisogno di 3 cose per essere utilizzato dal client explorer di Visual Studi o altri tool basati su esso (es: Sidekicks) :  &lt;/p&gt;&lt;p&gt;1) l’accesso ai web services,  &lt;/p&gt;&lt;p&gt;2) l’accesso al portale Sharepoint dei contenuti,  &lt;/p&gt;&lt;p&gt;3) l’accesso al portale di configurazione di Sharepoint. In più se c’è anche TSWA allora ci vuole anche un accesso a questo portale.  &lt;/p&gt;&lt;p&gt;Il reverse proxy deve permettere l’accesso a tutte queste risorse discriminando in base al numero di porta. I web services usano la porta 8080, il portale Sharepoint la porta 80 mentre quello di configurazione usa una porta che veniva scelta in fase di installazione del server TFS e che bisognava aversi salvato ed era un numero abbastanza strano tipo 31932.  &lt;/p&gt;&lt;p&gt;Procediamo. Per prima cosa bisogna installare Apache, io ho utilizzato la 2.2.6. Poi bisogna modificare il file httpd.conf nel seguente modo: &lt;br /&gt; &lt;/p&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# Listen: Allows you to bind Apache to specific IP addresses and/or ports&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;Listen &amp;lt;REVPROXY_SERVER_IP&amp;gt;:8080&lt;/pre&gt;&lt;pre class="alt"&gt;Listen &amp;lt;REVPROXY_SERVER_IP&amp;gt;:80&lt;/pre&gt;&lt;pre&gt;Listen &amp;lt;REVPROXY_SERVER_IP&amp;gt;:31932 &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# LoadModule: Allows you to use the functionalities of an external module&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule actions_module modules/mod_actions.so&lt;/pre&gt;&lt;pre&gt;LoadModule alias_module modules/mod_alias.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule asis_module modules/mod_asis.so&lt;/pre&gt;&lt;pre&gt;LoadModule auth_basic_module modules/mod_auth_basic.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule authn_default_module modules/mod_authn_default.so&lt;/pre&gt;&lt;pre&gt;LoadModule authn_file_module modules/mod_authn_file.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule authz_default_module modules/mod_authz_default.so&lt;/pre&gt;&lt;pre&gt;LoadModule authz_groupfile_module modules/mod_authz_groupfile.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule authz_host_module modules/mod_authz_host.so&lt;/pre&gt;&lt;pre&gt;LoadModule authz_user_module modules/mod_authz_user.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule autoindex_module modules/mod_autoindex.so&lt;/pre&gt;&lt;pre&gt;LoadModule cgi_module modules/mod_cgi.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule dir_module modules/mod_dir.so&lt;/pre&gt;&lt;pre&gt;LoadModule env_module modules/mod_env.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule imagemap_module modules/mod_imagemap.so&lt;/pre&gt;&lt;pre&gt;LoadModule include_module modules/mod_include.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule isapi_module modules/mod_isapi.so&lt;/pre&gt;&lt;pre&gt;LoadModule log_config_module modules/mod_log_config.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule mime_module modules/mod_mime.so&lt;/pre&gt;&lt;pre&gt;LoadModule proxy_module modules/mod_proxy.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule proxy_ajp_module modules/mod_proxy_ajp.so&lt;/pre&gt;&lt;pre&gt;LoadModule proxy_connect_module modules/mod_proxy_connect.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule proxy_http_module modules/mod_proxy_http.so&lt;/pre&gt;&lt;pre&gt;LoadModule negotiation_module modules/mod_negotiation.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule rewrite_module modules/mod_rewrite.so&lt;/pre&gt;&lt;pre&gt;LoadModule setenvif_module modules/mod_setenvif.so&lt;/pre&gt;&lt;pre class="alt"&gt;LoadModule userdir_module modules/mod_userdir.so &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# 'Main' server configuration&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;NameVirtualHost *:8080&lt;/pre&gt;&lt;pre class="alt"&gt;NameVirtualHost *:80&lt;/pre&gt;&lt;pre&gt;NameVirtualHost *:31932 &lt;/pre&gt;&lt;pre class="alt"&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;# VirtualHost&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;lt;VirtualHost *:8080&amp;gt;&lt;/pre&gt;&lt;pre&gt;ServerName &amp;lt;REVPROXY_SERVER_IP&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;RewriteEngine On&lt;/pre&gt;&lt;pre&gt;ProxyVia Block&lt;/pre&gt;&lt;pre class="alt"&gt;ProxyPreserveHost On&lt;/pre&gt;&lt;pre&gt;RewriteRule ^/(.*)$ http://&amp;lt;TFS_SERVER_IP&amp;gt;:8080/$1 [P,L]&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;lt;/VirtualHost&amp;gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;/pre&gt;&lt;pre&gt;ServerName &amp;lt;REVPROXY_SERVER_IP&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;RewriteEngine On&lt;/pre&gt;&lt;pre&gt;ProxyVia Block&lt;/pre&gt;&lt;pre class="alt"&gt;ProxyPreserveHost On&lt;/pre&gt;&lt;pre&gt;RewriteRule ^/(.*)$ http:// &amp;lt;TFS_SERVER_IP&amp;gt;/$1 [P,L]&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;lt;/VirtualHost&amp;gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;lt;VirtualHost *:31932&amp;gt;&lt;/pre&gt;&lt;pre&gt;ServerName &amp;lt;REVPROXY_SERVER_IP&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;RewriteEngine On&lt;/pre&gt;&lt;pre&gt;ProxyVia Block&lt;/pre&gt;&lt;pre class="alt"&gt;ProxyPreserveHost On&lt;/pre&gt;&lt;pre&gt;RewriteRule ^/(.*)$ http:// &amp;lt;TFS_SERVER_IP&amp;gt;:31932/$1 [P,L]&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;lt;/VirtualHost&amp;gt; &lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;# ServerName gives the name and port that the server uses to identify itself.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;ServerName &amp;lt;REVPROXY_SERVER_IP&amp;gt;:8080&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![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; }
]]&gt;&lt;/style&gt;

&lt;p&gt;Il resto del file httpd.conf non deve essere modificato. 
&lt;/p&gt;&lt;p&gt;E TSWA ? Dipende come si installa. Io l’ho installato sulla stessa porta dei web services riutilizzando in tal modo la porta 8080 ma si potrebbe dedicarci una porta ad hoc nel qual caso bisogna aggiungere una voce in più a quelle presentate sopra. 
&lt;/p&gt;&lt;p&gt;Lato Team Foundation Server bisogna intervenire su tutte le virtual directory in IIS per aggiungere l’autenticazione Basic. Questa è una forte semplificazione che ho fatto che lascia aperta qualche problema di sicurezza, ma non lavoro per i militari quindi un certo rilassamento e’ tollerato. Per una soluzione piu’ sicura bisognerebbe pensare almeno a delle connessioni SSL.&lt;br /&gt;Dunque, dicevamo che in una installazione sigle server di TFS ci saranno 3 web sites: Share Point Central Administration, Default Web Site e Team Foundation Server. Il secondo contiene 2 virtual directories: Reports e ReportServer mentre il terzo contiene 5 virtual directories : Build, Services, VersionControl, Warehouse, WorkItemTracking. In piu’ come detto ho scelto di installare la virtual directory tswa.&lt;br /&gt;Nelle 7 virtual directories sopra citate piu’ nel Share Point Central Administration web sites bisogna aggiungere la Basic Authentication mentre in tswa bisogna abilitare solo l’anonymous access essendo un generico portale web. 
&lt;/p&gt;&lt;p&gt;A questo punto il reverse proxy si comporta come se fosse il server TFS vero, quindi tutti i riferimenti nei progetti devono puntare al server TFS. Tuttavia mi piacerebbe lasciarmi la possibilità di poter accedere a TFS anche senza proxy. La soluzione e’ quella di aggiungere, su tutti i client che vogliono usare il nostro proxy, un nome simbolico, per esempio TFSERVER, al file hosts associandolo all’indirizzo del reverse proxy server. Quando creo un nuovo progetto o ci faccio riferimento dovro’ sempre usare come nome del server TFSERVER. Il file hosts si trova di solito sotto c:\windows\system32\drivers\etc ma potete trovarlo velocemente con il Search di Windows. 
&lt;/p&gt;&lt;p&gt;Fonti: Per comprendere il reverse proxy mi è stata utile questa lettura : &lt;a href="https://www2.sans.org/reading_room/whitepapers/webservers/302.php"&gt;https://www2.sans.org/reading_room/whitepapers/webservers/302.php&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/93400.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/14/93400.aspx</guid>
            <pubDate>Mon, 14 Jul 2008 14:40:42 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/93400.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/07/14/93400.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/93400.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/93400.aspx</trackback:ping>
        </item>
        <item>
            <title>SideShow for Windows Mobile</title>
            <category>Mobile</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/06/16/93051.aspx</link>
            <description>&lt;p&gt;SideShow era una di quelle killer technologies apparse insieme a Vista che promettevano di far girare delle mini applicazioni (gadgets) su un pc o portatile spento per accedere ad esempio alla posta, alla musica, agli appuntamenti, ecc.&lt;/p&gt;  &lt;p&gt;Ci voleva ovviamente un nuovo tipo di PC o portatile con "appiccicato" un pezzo di HW nuovo con un piccolo display LCD da usare per leggere i dati estratti dal PC. Di questo genere di nuovi PC non se ne sono visti molti. Peccato perchè l'idea era buona. A mitigare un po' questa mancanza arriva questa applicazione per Windows Mobile 5 e 6 che trasforma il cellulare in un dispositivo SideShow che può comunicare in Bluetooth con il computer su cui sono installati i gadgets SideShow. Se avete installato Office 2007 su Vista e andate a guardare il programma "Windows SideShow" avrete una finestra tipo questa :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.cjcraft.com/blog/ct.ashx?id=d5167dea-f9af-4964-b7e5-3719548762ed&amp;amp;url=http%3a%2f%2fwww.cjcraft.com%2fblog%2fcontent%2fbinary%2fWindowsLiveWriter%2fWindowsSideShowforWindowsMobileBetaSeeth_10BE%2fVistaSideShow_8.png"&gt;&lt;img height="407" alt="VistaSideShow" src="http://www.cjcraft.com/blog/content/binary/WindowsLiveWriter/WindowsSideShowforWindowsMobileBetaSeeth_10BE/VistaSideShow_thumb_3.png" width="538" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;in cui trovate 3 programmi installati di default che permettono di accedere alla email, al calendario ed al Media Player mentre Countdown e PowerPoint Remote sono stati scaricati dalla SideShow Gadget Gallery. Il cellulare si comporta come un telecomando per comandare la musica da ascoltare sul PC o per cambiare la slide di una presentazione Powerpoint.&lt;/p&gt;  &lt;p&gt;Questo è un altro elemento di distinzione di Windows Mobile rispetto al resto dei cellulari più o meno ifonici. Personalmente spero che anche Zune diventi un dispositivo SideShow e magari anche compatibile con LiveMesh &lt;img alt="fingerscrossed" src="http://spaces.live.com/rte/emoticons/fingerscrossed.gif" /&gt;&lt;/p&gt;  &lt;p&gt;Ecco il link per scaricare &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=79f19684-f862-4e02-a2b0-0003b4565f34&amp;amp;DisplayLang=en"&gt;SideShow for Windows Mobile Developers Preview&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bff428cb-2567-453d-b872-19ac9fbd8b36" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows%20Mobile" rel="tag"&gt;Windows Mobile&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SideShow" rel="tag"&gt;SideShow&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/93051.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/06/16/93051.aspx</guid>
            <pubDate>Mon, 16 Jun 2008 14:48:07 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/93051.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/06/16/93051.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/93051.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/93051.aspx</trackback:ping>
        </item>
        <item>
            <title>penetrazione .NET</title>
            <category>Computer e Internet</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/28/92853.aspx</link>
            <description>&lt;p&gt;Mi sono deciso a scrivera questa considerazione dopo aver letto l'articolo di Simone Chiaretta &lt;a href="http://blogs.ugidotnet.org/piyo/archive/2008/05/27/cercasi-tuttologo.aspx"&gt;Cercasi tuttologo&lt;/a&gt; che riguarda però i giovani in cerca di prima occupazione. Stavo valutando dei curriculum per cercare uno stagista. Ho esaminato 64 candidature di ragazzi da tutta Italia (due dall'India) appena laureati o con pochissima esperienza. Le lauree spaziavano da informatica a vari tipi di ingegneria prese in varie università italiane. Premetto che i candidati avevano tutti ottime votazioni. Tuttavia mi sono meravigliato della totale assenza di conoscenza del Framework .NET. Solo 1 su 64 ha scritto di conoscerlo !&lt;/p&gt;  &lt;p&gt;Considerando le promozioni per gli studenti tipo MSDN AA (che offre gratis tutti i tool di sviluppo e sistemi operativi) e le strategie Microsoft in favore delle Università evidentemente c'è ancora qualcosa che non va.&lt;/p&gt;  &lt;p&gt;A riprova dei miei dubbi proprio oggi sono stato ad un workshop Microsoft al Politecnico di Torino sui sistemi embedded ed alla domanda quanti conoscono .NET si sono alzate una decina di mani su un centinaio di presenti, i quali erano per la quasi totalità studenti.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/92853.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/28/92853.aspx</guid>
            <pubDate>Wed, 28 May 2008 13:39:27 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/92853.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/28/92853.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/92853.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/92853.aspx</trackback:ping>
        </item>
        <item>
            <title>ReqSheet un tool per creare requisiti per TFS</title>
            <category>Team System</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/25/92802.aspx</link>
            <description>&lt;p&gt;La definizione dei requisiti è il primo passo di ogni progetto. Se si vuol seguire la metodologia MSF del Team Foundation Server si devono compilare alcuni documenti e creare diversi work item: Vision, Persona, Scenario, Work Item, QoS. Per aiutare la scritture di tali elementi sono nati nel tempo vari tools; il primo dovrebbere essere stato Borland Caliber poi ne sono venuti tanti altri. Uno che mi era piaciuto era stato &lt;strong&gt;Personify Design TeamSpec&lt;/strong&gt; che permette di creare dei documenti Word in cui i requisiti sono collegati e sincronizzati con il server TFS.&lt;/p&gt; &lt;p&gt;L'ultimo apparso, anzi che sta per apparire poichè è ancora in alpha è &lt;strong&gt;stpsoft ReqSheet for Visual Studio Team System.&lt;/strong&gt; Permette di creare tutti gli elementi dei requisiti lavorando su un documento off-line da condividire con gli altri membri del team per una revisione condivisa e poi da publicare sul server TFS per la creazione dei corrispondenti work Items. &lt;/p&gt; &lt;p&gt;Ecco un esempio di Vision del progetto:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/BorsalinoMoreno/WindowsLiveWriter/ReqSheetuntoolpercrearerequisitiperTFS_102C1/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="94" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/BorsalinoMoreno/WindowsLiveWriter/ReqSheetuntoolpercrearerequisitiperTFS_102C1/image_thumb.png" width="575" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Definizione delle Personas:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/BorsalinoMoreno/WindowsLiveWriter/ReqSheetuntoolpercrearerequisitiperTFS_102C1/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="174" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/BorsalinoMoreno/WindowsLiveWriter/ReqSheetuntoolpercrearerequisitiperTFS_102C1/image_thumb_1.png" width="580" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Definizione degli Scenari:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/BorsalinoMoreno/WindowsLiveWriter/ReqSheetuntoolpercrearerequisitiperTFS_102C1/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="251" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/BorsalinoMoreno/WindowsLiveWriter/ReqSheetuntoolpercrearerequisitiperTFS_102C1/image_thumb_2.png" width="584" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Esiste un altro tool della stpSoft chiamato &lt;strong&gt;Storyboarding for Visual Studio Team System&lt;/strong&gt; che presi gli scenari definiti sopra permette di visualizzarli graficamente in Visio tramite la creazione di diagrammi di screen flow. Vedi figura :&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/BorsalinoMoreno/WindowsLiveWriter/ReqSheetuntoolpercrearerequisitiperTFS_102C1/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="425" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/BorsalinoMoreno/WindowsLiveWriter/ReqSheetuntoolpercrearerequisitiperTFS_102C1/image_thumb_4.png" width="588" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Il software si trova qui &lt;a href="http://www.stpsoft.co.uk/vsts"&gt;http://www.stpsoft.co.uk/vsts&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/92802.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/25/92802.aspx</guid>
            <pubDate>Sun, 25 May 2008 14:23:52 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/92802.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/25/92802.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/92802.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/92802.aspx</trackback:ping>
        </item>
        <item>
            <title>Documentazione per Visual Studio 2008 SP1</title>
            <category>Team System</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/24/92795.aspx</link>
            <description>&lt;p&gt;Non è compresa nell'aggiornamento però si può trovare online qui :&lt;/p&gt; &lt;p&gt;&lt;a href="http://vs2008sp1docs.msdn.microsoft.com/en-us/default.aspx"&gt;http://vs2008sp1docs.msdn.microsoft.com/en-us/default.aspx&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a985cdca-a492-40c3-82b8-6bed2f6e3340" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Visual%20Studio%202008%20SP1" rel="tag"&gt;Visual Studio 2008 SP1&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/92795.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/24/92795.aspx</guid>
            <pubDate>Sat, 24 May 2008 18:00:34 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/92795.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/24/92795.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/92795.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/92795.aspx</trackback:ping>
        </item>
        <item>
            <title>Copiare schede SD con robocopy</title>
            <category>Computer e Internet</category>
            <category>Mobile</category>
            <link>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/24/92794.aspx</link>
            <description>&lt;p&gt;Mi sono ritrovato a dover cambiare sul cellulare la scheda SD per passare ad una di capacità superiore. Una semplice copia del contenuto da una all'altra non copia tutti i file. Si potrebbero cercare appositi tools per fare il backup di schede SD ma c'e' una via piu' semplice. Su Vista esiste il tool robocopy per fare copie automatiche anche molto complesse. Ecco allora i parametri da utilizzare per fare un mirror completo del contenuto della scheda su una directory di appoggio e salvare un report su un file. Quest'ultimo è utile poichè potrebbe capitare che qualche file è corrotto e non viene copiato.&lt;/p&gt; &lt;p&gt;robocopy &amp;lt;sorgente&amp;gt; &amp;lt;destinazione&amp;gt; /COPYALL /dcopy:t /E /R:2 /W:2 /LOG:&amp;lt;file_di_log&amp;gt; /TEE &lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/BorsalinoMoreno/aggbug/92794.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Moreno Borsalino</dc:creator>
            <guid>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/24/92794.aspx</guid>
            <pubDate>Sat, 24 May 2008 17:11:05 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/92794.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/BorsalinoMoreno/archive/2008/05/24/92794.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/BorsalinoMoreno/comments/commentRss/92794.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/BorsalinoMoreno/services/trackbacks/92794.aspx</trackback:ping>
        </item>
    </channel>
</rss>