<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7122096352259505083</id><updated>2012-01-13T03:04:28.661-08:00</updated><category term='transazioni'/><category term='C#'/><category term='sandbox'/><category term='protezione'/><category term='antivirus'/><category term='javascript'/><category term='sql'/><category term='PowerToy'/><category term='wireless'/><category term='XP'/><category term='web'/><category term='html'/><category term='Helper'/><category term='log'/><category term='AJAX'/><category term='programmazione'/><category term='controlli'/><category term='query'/><category term='networking'/><category term='sql server'/><category term='utility'/><category term='ASP.NET'/><category term='database'/><category term='.NET'/><title type='text'>appuntiamocelo</title><subtitle type='html'>Appunti e promemoria su... beh... tutto quello che mi serve e che forse un giorno servirà anche a te...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-6819300401537076924</id><published>2012-01-13T03:04:00.000-08:00</published><updated>2012-01-13T03:04:28.670-08:00</updated><title type='text'>Modificare il path default dei prompt di msdos</title><content type='html'>Modificare il path standard un tempo, molto tempo fa era una sciocchezza... basta semplicemente toccare un filettino chiamato autoexec.bat...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ora non c'è più, sostituito da una incredibile interfaccia utente, che fa le stesse cose, ma in modo più complicato, almeno per un vecchietto come me... :)&lt;br /&gt;&lt;br /&gt;Quindi qui è spiegata la corretta sequenza di click per arrivare alla variabile corretta...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://geekswithblogs.net/renso/archive/2009/10/21/how-to-set-the-windows-path-in-windows-7.aspx"&gt;http://geekswithblogs.net/renso/archive/2009/10/21/how-to-set-the-windows-path-in-windows-7.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-6819300401537076924?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/6819300401537076924/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=6819300401537076924' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6819300401537076924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6819300401537076924'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2012/01/modificare-il-path-default-dei-prompt.html' title='Modificare il path default dei prompt di msdos'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-5063085308385778118</id><published>2010-02-02T00:02:00.000-08:00</published><updated>2010-02-02T00:06:10.038-08:00</updated><title type='text'>Individuare problemi caricamento com-addin in outlook</title><content type='html'>Per lavoro mi è capitato diverse volte di sviluppare componenti COM.&lt;br /&gt;&lt;br /&gt;Quando è una mia applicazione ad eseguirli, individuare il problema anche durante il carcamento tutto sommato non è un problema.&lt;br /&gt;&lt;br /&gt;Purtroppo quando sviluppiamo addin per prodotti di terze parti non abbiamo il controllo del processo di loading, e quindi a volte vediamo semplicemente il risultato. Non si carica... Individuare il motivo è spesso estremamente arduo.&lt;br /&gt;&lt;br /&gt;Mi hanno girato una soluzione che abilita un log del caricamento, garantendo così l'accesso a informazioni altrimenti non visibili.&lt;br /&gt;&lt;br /&gt;Le istruzioni per attivarlo e trovate qui:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/vsod/archive/2008/04/22/Troubleshooting-com-add-in-load-failures.aspx"&gt;Troubleshooting com add in load failures&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-5063085308385778118?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/5063085308385778118/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=5063085308385778118' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/5063085308385778118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/5063085308385778118'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2010/02/individuare-problemi-caricamento-com.html' title='Individuare problemi caricamento com-addin in outlook'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-2702440613280618148</id><published>2010-01-15T01:41:00.000-08:00</published><updated>2010-01-15T01:42:40.402-08:00</updated><title type='text'>Visualizzazione statistiche database SQL</title><content type='html'>Tempo fa in un'altro post avevo mostrato come reindicizzare un intero database.&lt;br /&gt; Beh, prima di farlo si può studiare lo stato del database e mostrare le statistiche con il comando:&lt;br /&gt;&lt;br /&gt;exec sp_msforeachtable 'dbcc showcontig ("?")'&lt;br /&gt;&lt;br /&gt;Uno dei parametri importanti è la "Scan Density", più il valore è basso meno gli indici saranno performanti.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-2702440613280618148?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/2702440613280618148/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=2702440613280618148' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/2702440613280618148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/2702440613280618148'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2010/01/visualizzazione-statistiche-database.html' title='Visualizzazione statistiche database SQL'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-1801240182719760638</id><published>2009-07-03T02:34:00.000-07:00</published><updated>2009-07-03T02:38:46.258-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Dependency walker... Scoprire le dependencies di una dll....</title><content type='html'>Spesso un programma non parte con la segnalazione "impossibile caricare l'assmbly xxxx o una delle sue dipendenze..."&lt;br /&gt;&lt;br /&gt;Ok, l'assembly xxxx c'è, è li, lo vedo... cos'altro vuole? &lt;br /&gt;&lt;br /&gt;Il programmino free che si può scaricare da qui http://www.dependencywalker.com/ consente di scoprire quali DLL vengono referenziate da una DLL, ricorsivamente analizza le dependencies e quindi indica se c'è qualcosa che non va.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-1801240182719760638?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/1801240182719760638/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=1801240182719760638' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/1801240182719760638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/1801240182719760638'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2009/07/dependency-walker-scoprire-le.html' title='Dependency walker... Scoprire le dependencies di una dll....'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-6174716148335186056</id><published>2009-06-10T05:43:00.000-07:00</published><updated>2010-02-05T03:57:53.838-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmazione'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Performance, quanto pesa un try/catch? (.NET)</title><content type='html'>&lt;a name='more'&gt;&lt;/a&gt;In questi giorni sono entrato in una discussione dove si è cominciato a valutare il "peso" di un blocco try / catch.&lt;br /&gt;Se un puro blocco try/catch, non usato non costa nulla, utilizzarlo erroneamente ha un peso enorme.&lt;br /&gt;Per dimostrare questo codice ho utilizzato un profiler ed un piccolo codice .NET che conteneva queste due funzioni:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;public static int NoCatch(object data)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (data != null)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { return (int)data; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { return 1; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;}     &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;public static int WithCatch(object data)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (int)data;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Come si può vedere la funzione WithCatch(object data) utilizza il try per gestire una condizione di errore generica, mentre il primo blocco di codice utilizza un semplice if per evitare l'errore.&lt;br /&gt;Ebbene, quali sono i risultati? Eccoli:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TryCatchTest.Program.TestNoCatch(int64,object) : 0.17&lt;br /&gt;&lt;br /&gt;TryCatchTest.Program.TestWithCatch(int64,object) : 491.77&lt;br /&gt;&lt;br /&gt;Beh... su 10000 elaborazioni per metodo, quasi il % del tempo è stato utilizzato dalla seconda funzione.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-6174716148335186056?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/6174716148335186056/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=6174716148335186056' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6174716148335186056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6174716148335186056'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2009/06/performance-quanto-pesa-un-trycatch-net.html' title='Performance, quanto pesa un try/catch? (.NET)'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-6675935504940344464</id><published>2008-07-31T07:12:00.000-07:00</published><updated>2008-07-31T07:21:28.693-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='log'/><category scheme='http://www.blogger.com/atom/ns#' term='transazioni'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Troncare il file di log di un database Microsoft SQL</title><content type='html'>Con SQL 2000 sono sempre incappato nel problema dell'incremento automatico delle dimensioni del file di log del database, infatti per impostazione predefinita il file LDF cresce continuamente di dimensioni, fino a raggiungere le dimensioni massime impostate nel database, o peggio, fino a terminare lo spazio su disco.&lt;br /&gt;&lt;br /&gt;Questa situazione si crea semplicemente perchè il file LDF tiene traccia di tutte le transazioni effettuate, anche se correttamente committate.&lt;br /&gt;&lt;br /&gt;Per risolvere questo problema è sufficiente lanciare il comando:&lt;br /&gt;&lt;br /&gt;DBCC BACKUP LOG [database name] WITH TRUNCATE_ONLY&lt;br /&gt;&lt;br /&gt;semplice, immediato e soprattutto, risolutivo.&lt;br /&gt;&lt;br /&gt;via: &lt;a href="http://merlinox.tumblr.com/post/44209334/eseguire-questo-codice-se-si-desidera-troncare-il"&gt;merlinox.tumblr.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-6675935504940344464?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/6675935504940344464/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=6675935504940344464' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6675935504940344464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6675935504940344464'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2008/07/troncare-il-file-di-log-di-un-database.html' title='Troncare il file di log di un database Microsoft SQL'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-3846159776325836734</id><published>2008-07-17T06:14:00.000-07:00</published><updated>2008-07-17T06:24:05.498-07:00</updated><title type='text'>Riavvio rapido dei servizi</title><content type='html'>Sviluppando applicazioni che svolgono attività batch in ambiente microsoft, ci si trova immancabilmente  a lavorare con  i servizi di windows.&lt;br /&gt;&lt;br /&gt;Con questo tipo di programmi il modo di lavorare cambia leggermente, e così non potendo più avviare le applicazioni con l'ambiente di sviluppo, ci si scontra spesso e volentieri con la scomoda interfaccia di gestione dei servizi.&lt;br /&gt;&lt;br /&gt;Beh, così scomoda alla fine non è, ma lavorando e debuggando queste applicazioni ci si trova a fermarle e avviarle centinaia di volte al giorno.&lt;br /&gt;&lt;br /&gt;Per poter quindi fermare e avviare i servizi con un solo click, si può tranquillamente creare un file .bat con queste 3 righe di codice:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;net STOP "service name"&lt;br /&gt;pause&lt;br /&gt;net START "service name"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Il pause tra i due comandi è fondamentale, infatti operativamente si lancerà questo comando, appena il servizio è stoppato sarà possibile compilare l'eseguibile e, a compilazione completata con un solo invio nella schermata DOS aperta, sarà possibile riavviare il servizio.&lt;br /&gt;&lt;br /&gt;Comodo, pratico e rapido...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-3846159776325836734?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/3846159776325836734/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=3846159776325836734' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/3846159776325836734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/3846159776325836734'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2008/07/riavvio-rapido-dei-servizi.html' title='Riavvio rapido dei servizi'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-6463835157810988577</id><published>2008-07-15T00:51:00.000-07:00</published><updated>2008-07-15T01:04:41.382-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sandbox'/><category scheme='http://www.blogger.com/atom/ns#' term='protezione'/><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><title type='text'>SandBoxie, un ambiente protetto per eseguire software</title><content type='html'>Qualche tempo fa, scaricando un software dalla rete mentre avevo l'antivirus poco aggiornato ho infettato il mio pc con un poco gradevole troian.Da allora, oltre a risolvere il problema dell antivirus, ho cominciato ad eseguire i file sospetti in un ambiente protetto. Tengo sempre a portata di mouse una macchina virtuale da avviare all'occorrenza e, una volta testato e controllato il software lo utilizzo sulla macchina reale.&lt;br /&gt;Da pochi giorni ho scoperto una soluzione molto più pratica.&lt;br /&gt;&lt;br /&gt;Il software &lt;a href="http://www.sandboxie.com/"&gt;sandboxie&lt;/a&gt; infatti si occupa di eseguire un particolare software da voi scelto, in una "scatola chiusa" non consentendo al processo eseguito di accedere direttamente alla scrittura del disco.&lt;br /&gt;&lt;img style="WIDTH: 100%" src="http://www.sandboxie.com/img/FrontPageSystem2.png" /&gt;Immagine &lt;a href="http://www.sandboxie.com/"&gt;http://www.sandboxie.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Molto più pratico di una lenta macchina virtuale, e tutto sommato efficace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-6463835157810988577?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/6463835157810988577/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=6463835157810988577' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6463835157810988577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6463835157810988577'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2008/07/sandboxie-un-ambiente-protetto-per.html' title='SandBoxie, un ambiente protetto per eseguire software'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-815265205818087610</id><published>2008-07-10T05:45:00.000-07:00</published><updated>2008-07-10T06:13:41.753-07:00</updated><title type='text'>Il mio PC ha un buco nero!!!!</title><content type='html'>Ho guardato il mio PC e ho trovato i seguenti componenti...&lt;br /&gt;&lt;br /&gt;- Sfoglia tutta la rete&lt;br /&gt;- Risorse di rete bluetooth&lt;br /&gt;- Ricerca nuovo hardware&lt;br /&gt;- Svuota cestino&lt;br /&gt;- Cancella i Temporary internet files...&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;cos'hanno in comune queste cose? &lt;br /&gt;Beh... non importa quanto il vostro pc sia potente, quanti processori sono disponibili o quanta ram è installata, utilizzare questi componenti renderà il PC inutilizzabile per un breve periodo, spesso arbitrario...&lt;br /&gt;&lt;br /&gt;Insomma... sono accessi ad un un buco nero per le prestazioni...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-815265205818087610?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/815265205818087610/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=815265205818087610' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/815265205818087610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/815265205818087610'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2008/07/il-mio-pc-ha-un-buco-nero.html' title='Il mio PC ha un buco nero!!!!'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-7456664438629629523</id><published>2008-02-15T06:24:00.000-08:00</published><updated>2008-02-15T06:38:33.603-08:00</updated><title type='text'>Emettere un alert a seguito di un postback</title><content type='html'>Programmando applicazioni web ci si trova spesso nella condizione di voler comunicare qualcosa all'utilizzatore in maniera evidente, attirando l'attenzione su una condizione particolare, o su un errore.&lt;br /&gt;&lt;br /&gt;In windows form utilizzeremmo il classico messagebox, comodo, pieno di opzioni e molto pratico.&lt;br /&gt;&lt;br /&gt;Nelle pagine ASP.NET invece dobbiamo emettere il codice javascript per far visualizzare un alert js contenente il messaggio del caso.&lt;br /&gt;&lt;br /&gt;Ho scritto quindi una comodissima funzione nelle pagine web che assomiglia molto alla seguente:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void MessageBoxScriptInject(string messageToShow)&lt;br /&gt;{&lt;br /&gt;  // lo rendo comatibile con javascript...&lt;br /&gt;  string messageTranslated =&lt;br /&gt;       messageToShow.Replace("'", "\\'");&lt;br /&gt;  messareTranslated =&lt;br /&gt;       messareTranslated.Replace("\n", " ");&lt;br /&gt;  messareTranslated =&lt;br /&gt;       messareTranslated.Replace("\r", " ");&lt;br /&gt;&lt;br /&gt;  // creo il javascript&lt;br /&gt;  System.Text.StringBuilder js = &lt;br /&gt;       new System.Text.StringBuilder();&lt;br /&gt;  js.AppendLine(" &lt;br /&gt;       window.alert('" + &lt;br /&gt;            messareTranslated + "');");&lt;br /&gt;&lt;br /&gt;  // inietto il codice nella pagina (sintassi .NET 2.0)&lt;br /&gt;  this.ClientScript.RegisterStartupScript(&lt;br /&gt;      typeof(string), &lt;br /&gt;      Guid.NewGuid().ToString(), &lt;br /&gt;      js.ToString(), &lt;br /&gt;      true);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-7456664438629629523?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/7456664438629629523/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=7456664438629629523' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/7456664438629629523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/7456664438629629523'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2008/02/emettere-un-alert-seguito-di-un.html' title='Emettere un alert a seguito di un postback'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-7163589567371978090</id><published>2008-02-08T01:37:00.001-08:00</published><updated>2008-02-08T01:48:28.761-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Reindicizzare un intero database su SQL server</title><content type='html'>Chi lavora su applicazioni che lavorano su database SQL Server di dimensioni considerevoli individua abbastanza presto che uno dei fattori critici dell'applicazione è il tempo "speso" ad accedere al database e che il tempo di risposta delle singole query può cambiare in maniera sostanziale se gli indici vengono creati accuratamente.&lt;br /&gt;&lt;br /&gt;Dopo la creazione del DB e degli indici, questi tendono a deteriorarsi con il tempo, perdendo prestazioni durante l'accesso.&lt;br /&gt;&lt;br /&gt;Un modo pratico per ripristinare le prestazioni degli indici è lanciare su ogni database, magari schedulandolo come attività notturna, uno script simile a questo:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;use Database;&lt;br /&gt;GO&lt;br /&gt;exec sp_msforeachtable 'dbcc dbreindex ("?") with no_infomsgs';&lt;br /&gt;GO&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-7163589567371978090?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/7163589567371978090/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=7163589567371978090' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/7163589567371978090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/7163589567371978090'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2008/02/reindicizzare-un-intero-database-su-sql.html' title='Reindicizzare un intero database su SQL server'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-555426090045692680</id><published>2007-08-29T02:08:00.000-07:00</published><updated>2007-08-29T02:15:58.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Web developer helper</title><content type='html'>Chi sviluppa in ASP.NET e applicazioni web in generale sente costantemente l'esigenza di aver il più completo controllo di quello che accade durante l'esecuzione dell'applicazione. &lt;br /&gt;Lato server visual studio (in .net) offre ottimi strumenti di debug e quindi il lavoro è generalmente semplice.&lt;br /&gt;&lt;br /&gt;Lato client invece risulta ostico capire cosa realmente sta accadendo, quali dati vengono scambiati e quali file sono coinvolti nelle elaborazioni. Un ottimo tool che ci aiuta è possibile trovarlo al link  &lt;a href="http://projects.nikhilk.net/"&gt;http://projects.nikhilk.net/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Con questo tool è possibile monitorare l'intero traffico HTTP, vedere anche le chiamate "nascoste" nelle applicazioni AJAX e vedere chiaramente le strutture dati javascript scambiate tra il client e il server.&lt;br /&gt;&lt;br /&gt;Una ottima installazione e una guida completa completa inoltre il tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-555426090045692680?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/555426090045692680/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=555426090045692680' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/555426090045692680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/555426090045692680'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/08/web-developer-helper.html' title='Web developer helper'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-4711453248708649825</id><published>2007-07-26T06:08:00.000-07:00</published><updated>2007-07-26T06:28:44.078-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Manipolazione degli eventi javascript lato client</title><content type='html'>Normalmente il comportamento dinamico di una pagina web è predefinito e calcolato direttamente in fase di definizione della pagina stessa. Così il file in html che arriva al browser ha una serie di oggetti che rispondono ai vari eventi, eseguendo metodi e cambiando proprietà.&lt;br /&gt;Un esempio:&lt;br /&gt;&lt;code style="font: 8 courier;"&gt; &lt;br /&gt;&amp;lt;div style="height: 39px; border-style:solid;" onclick="javascript:prova();"&amp;gt;           &lt;br /&gt;  div con click definito nella pagina&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Può capitare però che il comportamento della pagina debba cambiare in funzione della pagina stessa. Quindi gli eventi javascript che dovranno essere generati durante la vita della pagina non sono definiti direttamente lato server ma vengono impostati "dinamicamente" nel browser.&lt;br /&gt;&lt;br /&gt;In pratica è possibile scrivere un oggetto HTML senza eventi associati&lt;br /&gt;ad esempio:&lt;br /&gt;&lt;code style="font: 8 courier;"&gt;&lt;br /&gt;&amp;lt;div id="divNoEvent" style="height: 39px;border-style:solid;"&amp;gt;&lt;br /&gt;      div senza click definito a runtime&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;e aggiungere un poco di codice. &lt;br /&gt;&lt;code  style="font: 8 courier;"&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;function prova()&lt;br /&gt;{&lt;br /&gt;   alert('hai fatto click');&lt;br /&gt;}      &lt;br /&gt;var o = document.getElementById('divNoEvent');&lt;br /&gt;o.onclick = new Function('prova()');&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;La chiamata o.onclick = new Function('prova()'); consentirà di agganciare la chiamata alla funzione prova() a runtime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-4711453248708649825?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/4711453248708649825/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=4711453248708649825' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/4711453248708649825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/4711453248708649825'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/07/manipolazione-degli-eventi-javascript.html' title='Manipolazione degli eventi javascript lato client'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-3313974297840470281</id><published>2007-06-25T00:28:00.000-07:00</published><updated>2007-06-25T00:38:27.737-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Configurare una rete wireless ragionevoltemente sicura a casa propria...</title><content type='html'>Da pochi giorni ho approntato un access point a casa mia e dietro (anzi, sotto) di lui c'è un router ADSL di alice...&lt;br /&gt;Tra un pochino la porterò in flat mode... e quindi rimanendo sempre acceso lo ho configurato affinchè offra un livello di sicurezza contro accessi indesiderati e non sia utilizzabile da sconosciuti, vista anche la nuova moda del &lt;a href="http://oknotizie.alice.it/go.php?us=21105ab8e6875cb0"&gt;war driving.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Vediamo se ho approntato tutto per benino per evitare che qualcuno oltre a me riesca ad usare la mia rete per i propri comodi...&lt;br /&gt;&lt;br /&gt;- Cambiato password dell'admin dell'access point. Sembra banale, ma in quasi tutte le periferische si entra con Admin Admin...cambiare questa password mi è sembrata la cosa più ovvia e semplice da fare.&lt;br /&gt;&lt;br /&gt;- Cambiato elenco dei mac address autorizzati ad accedere all'access point.&lt;br /&gt;&lt;br /&gt;- Ridotto la potenza del segnale dell'access point al minimo indispensabile per avere buona copertura nella zona di interesse ma non far vedere la rete a chi ne è fuori ... Non abito in una zona affollata, ma se abitassi in un condominio mi scoccerebbe non poco vedere un elenco di 12 reti wireless attive intorno a me...&lt;br /&gt;&lt;br /&gt;- Tra poco (non lo ho ancora fatto) abiliterò la crittografia WEP.&lt;br /&gt;&lt;br /&gt;- Configurati gateway e ip per funzionare con il router ADSL. (non serve per la sicurezza, ma senza è inutile avere un access point acceso).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-3313974297840470281?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/3313974297840470281/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=3313974297840470281' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/3313974297840470281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/3313974297840470281'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/configurare-una-rete-wireless.html' title='Configurare una rete wireless ragionevoltemente sicura a casa propria...'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-6293917181079272817</id><published>2007-06-19T02:22:00.000-07:00</published><updated>2007-06-19T02:27:27.620-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='controlli'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Custom controls con eventi personalizzati</title><content type='html'>Creare custom controls è una attività piuttosto comune per lo sviluppo di applicazioni web. Personalmente la tecnica in composition è quella che preferisco, in quanto mi consente di raggruppare funzionalità anche evolute in poco tempo e con un grandissimo tasso di riutilizzo.&lt;br /&gt;&lt;br /&gt;Ma un controllo per sua natura deve generare eventi server.&lt;br /&gt;&lt;br /&gt;Dopo parecchia fatica ho trovato &lt;a href="http://msdn2.microsoft.com/en-us/library/aa720417(VS.71).aspx"&gt;questa reference&lt;/a&gt; sul sito MSDN che spiega chiaramente come fare un controllo lato server che generi via javascript un evento lato server.&lt;br /&gt;&lt;br /&gt;Nell'esempio spiegano la costruzione di un semplice link button che chiami la funzione OnClick sul server, ma cambiando delegati e nomi agli eventi, tutto funziona con eventi personalizzati e tipizzazione particolareggiata degli eventi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-6293917181079272817?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/6293917181079272817/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=6293917181079272817' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6293917181079272817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/6293917181079272817'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/custom-controls-con-eventi.html' title='Custom controls con eventi personalizzati'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-7710105143052923787</id><published>2007-06-15T04:58:00.001-07:00</published><updated>2007-06-15T05:22:07.009-07:00</updated><title type='text'>10 cose da evitare... anzi... me ne bastano 6</title><content type='html'>Traggo spunto da un bel post di merlinox intitolato &lt;a href="http://blog.merlinox.com/MrX/blog/index.cfm?id_news=1016&amp;trackback=1&amp;amp;"&gt;10 cose da evitare sviluppando siti&lt;/a&gt; per "appuntare" anche io un elenco di cose da evitare (secondo me) sviluppando in .NET e con qualsiasi altro linguaggio di programmazione a oggetti...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;1) fare copia e incolla... Se si ha necessità di copiare e incollare del codice significa che non si è sfruttata a dovere la struttura di ereditarietà messa a disposizione dal linguaggio a oggetti.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;2) usare gli if e gli switch per modificare il comportamento. Ritorno al punto 1, esiste l'ereditarietà, quindi si può istanziare l'oggetto con il comportamento corretto e non mettere un if per variare il codice che verrà eseguito.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;3) Implementare le proprie interfacce. E' più semplice manutenere una applicazione, anche se piccola, se questa implementa interfacce.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;4) tipizzare il tipizzabile. Una applicazione che utilizza solo oggetti fortemente tipizzati è più facile da manutenere e da debuggare.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;5) usare gli enumeratori. Si lega al punto 4, un enumeratore elenca semplicemente opzioni disponibili, il codice risulterà più pulito e non si potranno verificare situazioni non note. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;6) ereditare tutto l'ereditabile... Controlli, engine e quant'altro. Non sappiamo dove la nostra applicazione finirà e quali comportamenti vorremo introdurre. Iniziando a scrivere l'applicazione utilizzando oggetti "nostri" che ereditano quelli di base, ci apriremo la porta per eventuali implementazioni future.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...se questi sei punti li avessi avuti ben chiari anni fa, beh, tutto sarebbe stato più semplice...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-7710105143052923787?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/7710105143052923787/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=7710105143052923787' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/7710105143052923787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/7710105143052923787'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/10-cose-da-evitare-anzi-me-ne-bastano-6.html' title='10 cose da evitare... anzi... me ne bastano 6'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-1185695288428713388</id><published>2007-06-08T07:25:00.000-07:00</published><updated>2007-06-08T07:39:24.675-07:00</updated><title type='text'>Con Hyperwords le pagine web diventano interattive</title><content type='html'>Rendere ogni parola di una pagina web interattiva! Non sono amante di firefox ma per questo plug in potrei cominciare ad utilizzarlo quotidianamente.&lt;br /&gt;&lt;br /&gt;L'idea è quella di consentire una interazione ogni parola e accedere velocemente da un semplice menu a wikipedia, google maps, il client di posta e molto altro...&lt;br /&gt;&lt;br /&gt;Che dire, guardate il video su you tube e ditemi se non fa gola anche a voi!!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ECehydgZ2kU"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/ECehydgZ2kU" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Letto su...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.downloadblog.it"&gt;http://www.downloadblog.it&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-1185695288428713388?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/1185695288428713388/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=1185695288428713388' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/1185695288428713388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/1185695288428713388'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/con-hyperwords-le-pagine-web-diventano.html' title='Con Hyperwords le pagine web diventano interattive'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-4663422668698466612</id><published>2007-06-08T00:24:00.000-07:00</published><updated>2007-06-08T01:53:59.859-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Helper'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Passaggio di parametri tra pagine in ASP.NET, POST e GET e CROSS PAGE POSTING</title><content type='html'>La programmazione web classica prevede il passaggio di parametri dal client al server attraverso la tecnica &lt;strong&gt;GET o POST&lt;/strong&gt; dei form HTML.&lt;br /&gt;&lt;br /&gt;Quando ci si avvicina al mondo di ASP.NET si perde parzialmente il controllo dell'HTML che verrà generato e soprattutto non si riesce, semplicemente, a controllare i form ASP.NET in quanto le pagine vengono generate con 1 form html con&lt;strong&gt; action&lt;/strong&gt; impostata automaticamente alla pagina stessa.&lt;br /&gt;&lt;br /&gt;Cercando nella MSDN ho individuato le guide lines Microsoft per effettuare il &lt;strong&gt;CROSS PAGE POSTING DATA, &lt;/strong&gt;e quindi risolvere il problema di passaggio dei parametri tra pagine ASP.NET.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms178139.aspx"&gt;Cross-Page Posting in ASP.NET Web Pages&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/540y83hx.aspx"&gt;How to: Redirect Users to Another Page&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms178140.aspx"&gt;How to: Post ASP.NET Web Pages to a Different Page&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms178141.aspx"&gt;How to: Determine How ASP.NET Web Pages Were Invoked&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/6c3yckfw.aspx"&gt;How to: Pass Values Between ASP.NET Web Pages&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-4663422668698466612?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/4663422668698466612/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=4663422668698466612' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/4663422668698466612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/4663422668698466612'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/passaggio-di-parametri-tra-pagine-in.html' title='Passaggio di parametri tra pagine in ASP.NET, POST e GET e CROSS PAGE POSTING'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-1778632988847856693</id><published>2007-06-07T00:11:00.000-07:00</published><updated>2007-06-07T00:38:26.192-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Helper'/><category scheme='http://www.blogger.com/atom/ns#' term='XP'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerToy'/><title type='text'>ALT - TAB evoluto</title><content type='html'>Chi utilizza intensamente il multi tasking di window spesso si trova con molte finestre aperte contemporaneamente, utilizzando il comando ALT + TAB è possibile spostarsi velocemente tra le varie applicazioni.&lt;br /&gt;&lt;br /&gt;Putroppo spesso l'icona o la descrizione indicata nella finestrella che appare non sono sufficienti per aprire la finestra corretta e così si va a "tentativi".&lt;br /&gt;&lt;br /&gt;Un piccolo aiuto a questo viene da un piccolo &lt;a href="http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx"&gt;PowerToy&lt;/a&gt; della Microsoft, che sostituisce la finestra di ALT + TAB standard con una piccola finestrella che fa anche una anteprima delle applicazioni.&lt;br /&gt;&lt;br /&gt;Carino e comodo, trovate il file da scaricare al link &lt;a href="http://download.microsoft.com/download/whistler/Install/2/WXP/EN-US/TaskswitchPowertoySetup.exe"&gt;Taskswitch.exe&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-1778632988847856693?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/1778632988847856693/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=1778632988847856693' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/1778632988847856693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/1778632988847856693'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/alt-tab-evoluto.html' title='ALT - TAB evoluto'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-4537012650976735933</id><published>2007-06-06T00:29:00.000-07:00</published><updated>2007-06-07T00:35:35.946-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XP'/><category scheme='http://www.blogger.com/atom/ns#' term='utility'/><title type='text'>Multi desktop su XP</title><content type='html'>Chi ha lavorato anche per poco tempo con un ambiente grafico Linux non può non aver notato la comodità del multi desktop disponibile su questa piattaforma.&lt;br /&gt;&lt;br /&gt;Su Microsoft XP non è disponibile nativamente ma attraverso un plug in (i &lt;a href="http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx"&gt;PowerToy&lt;/a&gt; della Microsoft stessa) si può abilitare una funzionalità molto simile.&lt;br /&gt;&lt;br /&gt;Dopo aver installato il plug in &lt;a href="http://download.microsoft.com/download/whistler/Install/2/WXP/EN-US/DeskmanPowertoySetup.exe"&gt;Deskman.exe&lt;/a&gt; si potrà abilitare dalla barra di avvio una nuova barra degli strumenti che consentirà di spostarsi tra i 4 desktop resi disponibili dalla applicazione.&lt;br /&gt;&lt;br /&gt;Una utility carina che rende più semplice convivere con monitor mai abbastanza grandi e risoluzioni mai abbastanza "spaziose"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-4537012650976735933?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/4537012650976735933/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=4537012650976735933' title='4 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/4537012650976735933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/4537012650976735933'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/multi-desktop-su-xp.html' title='Multi desktop su XP'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-8035115293513758541</id><published>2007-06-05T00:32:00.000-07:00</published><updated>2007-06-05T00:42:04.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Programmazione asincrona per le pagine web.</title><content type='html'>&lt;span style="font-size:85%;"&gt;La maggior parte delle pagine web che vengono prodotte svolgono spesso una quantità di funzioni anche numericamente elevata, ma dalla durata limitata nel tempo e quindi occupano risorse limitate.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Questa è una prassi piuttosto comune, soprattutto perchè, escludendo eventuali interazioni sfruttando la tecnologia AJAX, la user experience migliora tanto più i tempi di attesa sono brevi.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Nei casi in cui i tempi di attesa siano più lunghi e soprattutto ci siano colli di bottiglia non superabili come esempio interazioni con web service piuttosto che procedure di IO particolarmente impegnative, oltre che ridurre la qualità della user experience si può incappare in problemi di scalabilità dell'applicazione.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Ho trovato questi articoli sull'msdn che spiegano esaustivamente il problema e anche delle ottime tecniche per superare anche questi ostacoli.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="msdn.microsoft.com/msdnmag/issues/05/10/WickedCode/"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Asynchronous Pages in ASP.NET 2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="msdn.microsoft.com/msdnmag/issues/07/03/WickedCode/Default.aspx?loc=it"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Applicazioni scalabili con la programmazione asincrona in ASP.NET&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-8035115293513758541?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/8035115293513758541/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=8035115293513758541' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/8035115293513758541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/8035115293513758541'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/programmazione-asincrona-per-le-pagine.html' title='Programmazione asincrona per le pagine web.'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-5940334775583890064</id><published>2007-06-04T01:11:00.000-07:00</published><updated>2007-06-04T02:40:54.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>ordine degli eventi nelle pagine e controlli ASP.NET</title><content type='html'>Programmando pagine ASP.NET e controlli web è fondamentale tenere presente la funzione e l'ordine degli eventi che verranno generati durante la vita della pagina.&lt;br /&gt;&lt;br /&gt;Al link &lt;a href="http://aspalliance.com/articleViewer.aspx?aId=134&amp;pId"&gt;http://aspalliance.com/articleViewer.aspx?aId=134&amp;amp;pId&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;ho trovato un ottimo articolo che da una esaustiva spiegazione del problema.&lt;br /&gt;&lt;br /&gt;Nella seguente tabella riporto semplicemente il reference dell'ordine degli eventi.&lt;br /&gt;&lt;br /&gt;&lt;table align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="3"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;hr /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="300"&gt;&lt;b&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Method&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;td width="100"&gt;&lt;b&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;PostBack&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;td width="100"&gt;&lt;b&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Controls&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;hr /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Constructor&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;All&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;AddParsedSubObject&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;All&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;DeterminePostBackMode&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Page&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;OnInit&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;All&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;hr /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;LoadPageStateFromPersistenceMedium&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;PostBack&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Page&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;LoadViewState&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;PostBack&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;All&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;ProcessPostData1&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;PostBack&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Page&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;OnLoad&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;All&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;hr /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;ProcessPostData2&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;PostBack&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Page&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;RaiseChangedEvents&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;PostBack&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Page&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;RaisePostBackEvent&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;PostBack&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Page&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;OnPreRender&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;All&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;hr /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;SaveViewState&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;All&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;SavePageStateToPersistenceMedium&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Page&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Render&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;All&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;OnUnload&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Always&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;All&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;hr /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-5940334775583890064?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/5940334775583890064/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=5940334775583890064' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/5940334775583890064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/5940334775583890064'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/ordine-degli-eventi-nelle-pagine-e.html' title='ordine degli eventi nelle pagine e controlli ASP.NET'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-1934812029833235459</id><published>2007-06-01T02:16:00.000-07:00</published><updated>2007-06-01T03:38:02.799-07:00</updated><title type='text'>Debuggare applicazioni ASP.NET</title><content type='html'>&lt;p&gt;Visual studio offre un evoluto sistema di debug e controllo delle applicazioni in esecuzione. Normalmente questo si attiva quando si è in debug e si preme il tasto "F5" della tastiera piuttosto che il tasto "play" nella toolbar in alto.&lt;br /&gt;&lt;br /&gt;Questa tecnica comporta però la compilazione di tutti i progetti nella soluzione o almeno l'analisi di tutti i progetti per individuare quali sorgenti sono stati modificati e quindi necessitano di una ricompilazione.&lt;br /&gt;&lt;br /&gt;Se la soluzione contiene un numero elevato di progetti (anche solo una decina) il tempo da quando si preme F5 a quando si ottiene la pagina visualizzata può essere significativo e stressante.&lt;br /&gt;&lt;br /&gt;Una soluzione possibile è quella di agganciare il debugger di visual studio all'applicazione IIS - ASP.NET (ma anche windows form) mentre questa sta funzionando.&lt;br /&gt;&lt;br /&gt;Perchè questo sia possibile è necessario effettuare i seguenti passi: &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;- Aprire la console di IIS e creare il sito web [miosito] ASP.NET (versione XX) che punti alla directory dove sono contenuti i sorgenti del sito (aspx + cs). &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;- Aprire internet explorer (o altro browser) e digitare nella barra &lt;/span&gt;&lt;a href="http://localhost/miosito/miapagina.aspx"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;http://localhost/miosito/miapagina.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;- A questo punto andare dentro visual studio, menu DEBUG - Attach to Process&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;- Assicurarsi che il checkbox (show process from all users) sia selezionato &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;- Si aprirà una finestra con tutti i processi attualmente in esecuzione &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;- Selezionare aspnet_wp.exe Premere il tasto Attach&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;A questo punto visual studio sarà agganciato correttamente al processo di IIS e fermerà l'esecuzione nei debug point impostati.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-1934812029833235459?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/1934812029833235459/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=1934812029833235459' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/1934812029833235459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/1934812029833235459'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/06/debuggare-applicazioni-aspnet.html' title='Debuggare applicazioni ASP.NET'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-796792506673952963</id><published>2007-05-30T07:41:00.000-07:00</published><updated>2007-05-30T08:59:37.207-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>MOD rewriting e URL rewriting</title><content type='html'>Per mantenere la compatibilità con i motori di ricerca gli url dei "contenuti" devono essere statici e parlanti...&lt;br /&gt;&lt;br /&gt;beh, questo normalmente non è un problema, ma si eclude la possibilità di registrare gli interi contenuti su database, perdendo tutti i vantaggi garantiti da questa tecnica. (transazioni e backup...)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://urlrewriter.net/"&gt;http://urlrewriter.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;con questo si dovrebbe (non ho ancora avuto modo di provarlo) mantenere la compatibilità con i motori di ricerca e consentire di slegarsi completamente dal file system...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-796792506673952963?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/796792506673952963/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=796792506673952963' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/796792506673952963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/796792506673952963'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/05/mod-rewriting-e-url-rewriting.html' title='MOD rewriting e URL rewriting'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7122096352259505083.post-7649971992052214385</id><published>2007-05-30T05:26:00.000-07:00</published><updated>2007-05-30T05:47:02.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='query'/><title type='text'>estrazione dati nidificati da SQL</title><content type='html'>&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;Problema:&lt;br /&gt;Estrarre da una tabella le righe corrispondenti al massimo del valore di un campo della tabella del gruppo indentificato da un campo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eg.&lt;br /&gt;Tabella: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Id -- Gruppo -- Val&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;id1 G1 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;id2 G1 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;id3 G1 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;id4 G2 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;id5 G3 3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;id6 G3 2&lt;br /&gt;Desiderata:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Id -- Gruppo -- Val &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;id1 G1 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;id4 G2 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;id5 G3 3&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Soluzione con query nidificata:&lt;br /&gt;&lt;br /&gt;SELECT Id, Gruppo,Val &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;FROM tabella&lt;br /&gt;WHERE tabella.Val IN&lt;br /&gt;(SELECT MAX(Val) AS Expr1&lt;br /&gt;FROM tabella AS aliasTabella&lt;br /&gt;WHERE (tabella.Id= aliasTabella.Id)&lt;br /&gt;GROUP BY Gruppo)) ; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7122096352259505083-7649971992052214385?l=appuntiamocelo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appuntiamocelo.blogspot.com/feeds/7649971992052214385/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7122096352259505083&amp;postID=7649971992052214385' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/7649971992052214385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7122096352259505083/posts/default/7649971992052214385'/><link rel='alternate' type='text/html' href='http://appuntiamocelo.blogspot.com/2007/05/estrazione-dati-nidificati-da-sql.html' title='estrazione dati nidificati da SQL'/><author><name>Othello</name><uri>http://www.blogger.com/profile/04332342854871140728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
