<?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-19206893</id><updated>2011-12-21T06:21:02.429+01:00</updated><category term='Coding'/><category term='iTextSharp'/><category term='SysAdmin'/><category term='Pdf'/><category term='Asp.Net'/><category term='NET'/><title type='text'>fhtino</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default?start-index=101&amp;max-results=100'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>108</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19206893.post-7320389194594038938</id><published>2011-12-20T21:00:00.000+01:00</published><updated>2011-12-21T06:21:02.433+01:00</updated><title type='text'>How to mix entity framework and tsql commands</title><content type='html'>Entity Framewok is a powerful library. But sometimes you need to mix Entity Framework activities and standard TSQL command on the same connection and under the same transaction. The easiest way to do that is using a TransactionScope area:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;using(TransactionScope ts = new TransactionScope())&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; ... write your EF code and your TSQL code (sqlconenction + sqlcommand + ...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; ts.complete();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;TransactionScope works fine but in many cases the transaction is escalated to a distributed transaction so you need to setup the MSDTC and you lose in performance.&lt;br /&gt;&lt;br /&gt;Using NET 4.0 there is a simple and very powerful solution: ObjectContext.ExecuteStoreCommand(string)&lt;br /&gt;The method sends the command directly to the underlying database. It uses the same connection of the ObjectContext. But... it's not transactional with SaveChanges. :(&lt;br /&gt;Solution: a couple of command to explicitely open connection and manage a global transaction.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;var mydb = new MyEFDB();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;mydb.Connection.Open();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;var tran = mydb.Connection.BeginTransaction();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;// (now you can mix you EF code with your TSQL code)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;mydb.ExecuteStoreCommand("DELETE FROM MyTable WHERE ...");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;foreach(var c in mydb.Customers)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; c.Name=....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;mydb.SaveChanges();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;tran.Commit();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;mydb.Connection.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Steps:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;open the db connection&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;begina the transaction&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;do your TSQL and EF&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;save EF changes&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;commit transaction&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit;"&gt;close connection&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7320389194594038938?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7320389194594038938/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7320389194594038938' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7320389194594038938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7320389194594038938'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2011/12/how-to-mix-enity-framework-and-tsql.html' title='How to mix entity framework and tsql commands'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4368602722813342922</id><published>2011-11-01T21:50:00.001+01:00</published><updated>2011-11-01T21:50:29.278+01:00</updated><title type='text'>Scuotere un LG Optimus One per installare il firmware</title><content type='html'>Domandona: come si fa a ripristinare il firmware originale su un LG Optimus One? Semplice, basta scuoterlo.&lt;br /&gt;Beh, ok, non basta solo scuoterlo, ma fra le altre cose bisogna anche "shakerarlo" un po'. All'inizio non ci credevo ma visto che KDZ non riusciva a caricarmi il firmware, ci ho prova. E ha funzionato!!!&lt;br /&gt;Qui c'è la procedura in italiano per ripristinare il firmware con il link ai vari firmware:&lt;br /&gt;&lt;a href="http://www.androidworld.it/forum/modding-e-firmware-lg-optimus-one-114/%5Bguida%5D-ripristino-firmware-ufficiale-tramite-kdz-10080/"&gt;http://www.androidworld.it/forum/modding-e-firmware-lg-optimus-one-114/%5Bguida%5D-ripristino-firmware-ufficiale-tramite-kdz-10080/&lt;/a&gt;&lt;br /&gt;Maggiori dettagli su Xda-Developers: &amp;nbsp;&lt;a href="http://forum.xda-developers.com/showthread.php?t=883314"&gt;http://forum.xda-developers.com/showthread.php?t=883314&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Per la cronaca: stavo facendo l'aggiornamento ufficale di LG e si è pianto tutto. Il telefono è rimasto in Emergency Mode e non c'è stato verso di farlo ripartire. Ovviamente non era neanche possibile ripartire con l'aggiornamento &amp;nbsp;:(&lt;br /&gt;Prima di portarlo in assistenza ho provato la procedura con KDZ e ha funzionato (modalità EMERGENCY). Alla fine ho dovuto fare anche un hard reset (tasto home+volume_giù+power). Quindi telefono completamente "nuovo": rimesso il mio account gmail e in 5 minuti avevo nuovamente tutti i miei contatti, email e calendario. :)&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4368602722813342922?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4368602722813342922/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4368602722813342922' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4368602722813342922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4368602722813342922'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2011/11/scuotere-un-lg-optimus-one-per.html' title='Scuotere un LG Optimus One per installare il firmware'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2961193520616332340</id><published>2011-09-18T10:00:00.002+02:00</published><updated>2011-09-19T16:34:58.845+02:00</updated><title type='text'>How to get users list from Google Apps using OAuth and C#</title><content type='html'>Recently I've added support for Google Apps to &lt;a href="http://gs.fhtino.it/gdocbackup"&gt;GDocBackup&lt;/a&gt;. Using a domain administrator username+password it retrieves users list and then backups all documents for each user. The backup is executed using the OAuth domanin keys. So GDocBackup uses two different authentication method: username+password and OAuth. &amp;nbsp;I don't like that. I'd like to use OAuth for both tasks. After some tests, internet search and the help of Claudio Cherubino, I've done a working application.&lt;br /&gt;This is a very quick step-by-step guide on how I used OAuth.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1&lt;/b&gt; : activate OAuth for your domain. Go to domain control panel -&amp;gt; Advanced tools -&amp;gt; Manage OAuth domain key and activate the key.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-qD8gWfxG4vI/TnWiLv5lhNI/AAAAAAAAD1g/FQ5apq2Fpss/s1600/oauth1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://4.bp.blogspot.com/-qD8gWfxG4vI/TnWiLv5lhNI/AAAAAAAAD1g/FQ5apq2Fpss/s640/oauth1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Step 2&lt;/b&gt; : enable readonly Provisioning API. &amp;nbsp;Go to domain control panel -&amp;gt; Advanced tools -&amp;gt;&amp;nbsp;Manage third party OAuth Client access. &amp;nbsp;Under [Client Name] add your full domain name. Under [One or more api scopes] add https://apps-apis.google.com/a/feeds/user/#readonly. Then press [Authorize].&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-jqe2PiAC2VM/TnWimn0n47I/AAAAAAAAD1k/L4QokJF_IlQ/s1600/oauth2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" src="http://3.bp.blogspot.com/-jqe2PiAC2VM/TnWimn0n47I/AAAAAAAAD1k/L4QokJF_IlQ/s640/oauth2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Step 3&lt;/b&gt; : download the official Google GData library for .NET:&amp;nbsp;&lt;a href="http://code.google.com/p/google-gdata/"&gt;http://code.google.com/p/google-gdata/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 4&lt;/b&gt; : create a C# application with Visual Studio, add the required DLL from Google GData library and write a piece of code like the following. It will retrieve all user login.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;string mydomain = "___mydomain___";&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;string myOAuthConsumerSecret = "___mysecretkey___";&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;GOAuthRequestFactory reqF = new GOAuthRequestFactory("apps", "mytestapp");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;reqF.ConsumerKey = mydomain;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;reqF.ConsumerSecret = myOAuthConsumerSecret;&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;UserService userService = new UserService("mytestapp");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;userService.RequestFactory = reqF;&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;UserQuery query = new UserQuery(mydomain, true);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;UserFeed usersFeed = userService.Query(query);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;foreach (UserEntry entry in usersFeed.Entries)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; Console.WriteLine(entry.Login.UserName);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[Update]&lt;br /&gt;Details about API authorization:&amp;nbsp;&lt;a href="http://www.google.com/support/a/bin/answer.py?answer=162106"&gt;http://www.google.com/support/a/bin/answer.py?answer=162106&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2961193520616332340?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2961193520616332340/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2961193520616332340' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2961193520616332340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2961193520616332340'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2011/09/how-to-get-users-list-from-google-apps.html' title='How to get users list from Google Apps using OAuth and C#'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-qD8gWfxG4vI/TnWiLv5lhNI/AAAAAAAAD1g/FQ5apq2Fpss/s72-c/oauth1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3726873925078863619</id><published>2011-08-28T22:04:00.003+02:00</published><updated>2011-08-28T22:05:38.220+02:00</updated><title type='text'>GDocBackup for Google Apps</title><content type='html'>Today I've published the first release of GDocBackup with support for Google Apps. It's a very preliminary release with some issues. It's very easy to use: in the config section, insert the administrator username and password, the domain name and the "OAuth consumer secret" key. Then activate "Google Apps mode" checkbox. &amp;nbsp;GDocBackup will extract all the documents for each user of your domain.&lt;br /&gt;&lt;br /&gt;GDocBackup 0.4.40.153 &amp;nbsp;&amp;nbsp;&lt;a href="http://code.google.com/p/gdocbackup/downloads/list"&gt;http://code.google.com/p/gdocbackup/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1y41a6zb-g4/Tlqeom8FdPI/AAAAAAAAD1Q/SsRlyI5IvgU/s1600/gdocbackup_for_apps_config.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-1y41a6zb-g4/Tlqeom8FdPI/AAAAAAAAD1Q/SsRlyI5IvgU/s1600/gdocbackup_for_apps_config.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3726873925078863619?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3726873925078863619/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3726873925078863619' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3726873925078863619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3726873925078863619'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2011/08/gdocbackup-for-google-apps.html' title='GDocBackup for Google Apps'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-1y41a6zb-g4/Tlqeom8FdPI/AAAAAAAAD1Q/SsRlyI5IvgU/s72-c/gdocbackup_for_apps_config.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-6776827701894837019</id><published>2011-05-19T07:00:00.000+02:00</published><updated>2011-10-25T13:06:32.967+02:00</updated><title type='text'>How to intercept the sql query generated by an EntityDataSource</title><content type='html'>The asp.net EntityDataSource (= Entity Framework data source) hides SQL details. But sometimes you could need to see the auto generated SQL command.&lt;br /&gt;&lt;br /&gt;Simple: intercept the QueryCreated event of the EntityDataSource&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;        protected void EntityDataSource1_QueryCreated(object sender, QueryCreatedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;&amp;nbsp; &amp;nbsp;LabelX.Text = (e.Query as System.Data.Objects.ObjectQuery).ToTraceString();&lt;br /&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;div&gt;&lt;br /&gt;&lt;/div&gt;If are using an ObjectContext, you can extract the SQL casting the query to ObjectQuery.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;var db = .... ObjectContext...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;var query = (from x in TableName select x);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;string sqlquery = (query as System.Data.Objects.ObjectQuery).ToTraceString();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-6776827701894837019?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/6776827701894837019/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=6776827701894837019' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6776827701894837019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6776827701894837019'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2011/05/how-to-intercept-sql-query-generated-by.html' title='How to intercept the sql query generated by an EntityDataSource'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8718203770891408460</id><published>2011-02-25T07:50:00.001+01:00</published><updated>2011-02-25T08:26:53.331+01:00</updated><title type='text'>ILSpy</title><content type='html'>Dalla fine di Febbraio 2011 &lt;a href="http://www.red-gate.com/products/dotnet-development/reflector/"&gt;Reflector non sarà più un prodotto gratuito&lt;/a&gt;.&amp;nbsp;Due alternative: 35$ per la versione a pagamento oppure &lt;a href="http://www.ilspy.net/"&gt;ILSpy&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.ilspy.net/"&gt;ILSpy&lt;/a&gt; è disassemblatore come Reflector, è open-source ed è gratuito. Sviluppato dalle stesse persone di SharpDevelop. &amp;nbsp;L'ho provato e sembra funzionare molto bene. :)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.ilspy.net/"&gt;http://www.ilspy.net/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-rWGXLTZQNck/TWdQ_bx0XdI/AAAAAAAADoo/SHMoexKA4YM/s1600/ilspy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-rWGXLTZQNck/TWdQ_bx0XdI/AAAAAAAADoo/SHMoexKA4YM/s1600/ilspy.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;[Update: &amp;nbsp;al momento non supporta LINQ. Forse in futuro...&amp;nbsp;&lt;a href="http://wiki.sharpdevelop.net/SharpZipLib_Roadmap.ashx"&gt;http://wiki.sharpdevelop.net/SharpZipLib_Roadmap.ashx&lt;/a&gt;]&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8718203770891408460?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8718203770891408460/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8718203770891408460' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8718203770891408460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8718203770891408460'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2011/02/ilspy.html' title='ILSpy'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-rWGXLTZQNck/TWdQ_bx0XdI/AAAAAAAADoo/SHMoexKA4YM/s72-c/ilspy.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4894343483416980112</id><published>2011-02-09T16:52:00.000+01:00</published><updated>2011-02-09T16:52:31.635+01:00</updated><title type='text'>Piccolo contributo ad un libreria di Google</title><content type='html'>Vabbè, lo so è proprio una cosa da poco, sono solo 10 righe di codice o poco più, ma comunque la cosa mi fa proprio piacere. &amp;nbsp;Un&amp;nbsp;grazie a&amp;nbsp;&lt;a href="http://www.claudiocherubino.it/"&gt;Claudio&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://code.google.com/p/google-gdata/issues/detail?id=477"&gt;http://code.google.com/p/google-gdata/issues/detail?id=477&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4894343483416980112?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4894343483416980112/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4894343483416980112' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4894343483416980112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4894343483416980112'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2011/02/piccolo-contributo-ad-un-libreria-di.html' title='Piccolo contributo ad un libreria di Google'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2259284469021806702</id><published>2011-02-06T21:16:00.001+01:00</published><updated>2011-09-19T09:16:05.851+02:00</updated><title type='text'>How to transform a pure Class Library project into a WCF Service Library</title><content type='html'>WCF Service Library projects are classic Class Library projects plus some very useful features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;they auto-host themselves using the utility&amp;nbsp;WCF Service Host&lt;/li&gt;&lt;li&gt;they can be called and tested using the utility WCF Test Client&lt;/li&gt;&lt;li&gt;they can be discovered and added in other projects of the same solution using "Add Service Reference..."&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;(WCF Service Host and&amp;nbsp;WCF Test Client&amp;nbsp;are part of Visual Studio 2010).&lt;br /&gt;&lt;br /&gt;The differences between the two type of project are in the .csprojct file. So, you can transform a classis Class Library project inot a&amp;nbsp;WCF Service Library project modifying the .csproj file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;* close VS2010&lt;br /&gt;* do a complete backup of the whole solution &amp;nbsp; :)&lt;br /&gt;* edit the "Class Library" .csproj using notepad (or other text editor)&lt;br /&gt;* under&amp;nbsp;&amp;lt;PropertyGroup&amp;gt; add:&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;ProjectTypeGuids&amp;gt;{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&amp;lt;/ProjectTypeGuids&amp;gt;&lt;br /&gt;&amp;lt;StartArguments&amp;gt;/client:"WcfTestClient.exe"&amp;lt;/StartArguments&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* after &amp;lt;Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /&amp;gt; add:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;ProjectExtensions&amp;gt;&lt;br /&gt;&amp;lt;VisualStudio&amp;gt;&lt;br /&gt;&amp;lt;FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}"&amp;gt;&lt;br /&gt;&amp;lt;WcfProjectProperties&amp;gt;&lt;br /&gt;&amp;lt;AutoStart&amp;gt;True&amp;lt;/AutoStart&amp;gt;&lt;br /&gt;&amp;lt;/WcfProjectProperties&amp;gt;&lt;br /&gt;&amp;lt;/FlavorProperties&amp;gt;&lt;br /&gt;&amp;lt;/VisualStudio&amp;gt;&lt;br /&gt;&amp;lt;/ProjectExtensions&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The resulting file should looks like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&amp;gt;&lt;br /&gt;&amp;lt;PropertyGroup&amp;gt;&lt;br /&gt;&amp;lt;Configuration Condition=" '$(Configuration)' == '' "&amp;gt;Debug&amp;lt;/Configuration&amp;gt;&lt;br /&gt;&amp;lt;Platform Condition=" '$(Platform)' == '' "&amp;gt;AnyCPU&amp;lt;/Platform&amp;gt;&lt;br /&gt;&amp;lt;ProductVersion&amp;gt;8.0.30703&amp;lt;/ProductVersion&amp;gt;&lt;br /&gt;&amp;lt;SchemaVersion&amp;gt;2.0&amp;lt;/SchemaVersion&amp;gt;&lt;br /&gt;&amp;lt;ProjectGuid&amp;gt;{08536F3E-152A-46C0-8C63-C0821FE5DE7C}&amp;lt;/ProjectGuid&amp;gt;&lt;br /&gt;&amp;lt;OutputType&amp;gt;Library&amp;lt;/OutputType&amp;gt;&lt;br /&gt;&amp;lt;AppDesignerFolder&amp;gt;Properties&amp;lt;/AppDesignerFolder&amp;gt;&lt;br /&gt;&amp;lt;RootNamespace&amp;gt;PureClassLib&amp;lt;/RootNamespace&amp;gt;&lt;br /&gt;&amp;lt;AssemblyName&amp;gt;PureClassLib&amp;lt;/AssemblyName&amp;gt;&lt;br /&gt;&amp;lt;TargetFrameworkVersion&amp;gt;v4.0&amp;lt;/TargetFrameworkVersion&amp;gt;&lt;br /&gt;&amp;lt;FileAlignment&amp;gt;512&amp;lt;/FileAlignment&amp;gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;ProjectTypeGuids&amp;gt;{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&amp;lt;/ProjectTypeGuids&amp;gt;&lt;br /&gt;&amp;lt;StartArguments&amp;gt;/client:"WcfTestClient.exe"&amp;lt;/StartArguments&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;&amp;lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "&amp;gt;&lt;br /&gt;&amp;lt;DebugSymbols&amp;gt;true&amp;lt;/DebugSymbols&amp;gt;&lt;br /&gt;&amp;lt;DebugType&amp;gt;full&amp;lt;/DebugType&amp;gt;&lt;br /&gt;&amp;lt;Optimize&amp;gt;false&amp;lt;/Optimize&amp;gt;&lt;br /&gt;&amp;lt;OutputPath&amp;gt;bin\Debug\&amp;lt;/OutputPath&amp;gt;&lt;br /&gt;&amp;lt;DefineConstants&amp;gt;DEBUG;TRACE&amp;lt;/DefineConstants&amp;gt;&lt;br /&gt;&amp;lt;ErrorReport&amp;gt;prompt&amp;lt;/ErrorReport&amp;gt;&lt;br /&gt;&amp;lt;WarningLevel&amp;gt;4&amp;lt;/WarningLevel&amp;gt;&lt;br /&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;&amp;lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "&amp;gt;&lt;br /&gt;&amp;lt;DebugType&amp;gt;pdbonly&amp;lt;/DebugType&amp;gt;&lt;br /&gt;&amp;lt;Optimize&amp;gt;true&amp;lt;/Optimize&amp;gt;&lt;br /&gt;&amp;lt;OutputPath&amp;gt;bin\Release\&amp;lt;/OutputPath&amp;gt;&lt;br /&gt;&amp;lt;DefineConstants&amp;gt;TRACE&amp;lt;/DefineConstants&amp;gt;&lt;br /&gt;&amp;lt;ErrorReport&amp;gt;prompt&amp;lt;/ErrorReport&amp;gt;&lt;br /&gt;&amp;lt;WarningLevel&amp;gt;4&amp;lt;/WarningLevel&amp;gt;&lt;br /&gt;&amp;lt;/PropertyGroup&amp;gt;&lt;br /&gt;&amp;lt;ItemGroup&amp;gt;&lt;br /&gt;&amp;lt;Reference Include="System" /&amp;gt;&lt;br /&gt;&amp;lt;Reference Include="System.Core" /&amp;gt;&lt;br /&gt;&amp;lt;Reference Include="System.Runtime.Serialization" /&amp;gt;&lt;br /&gt;&amp;lt;Reference Include="System.ServiceModel" /&amp;gt;&lt;br /&gt;&amp;lt;Reference Include="System.Xml.Linq" /&amp;gt;&lt;br /&gt;&amp;lt;Reference Include="System.Data.DataSetExtensions" /&amp;gt;&lt;br /&gt;&amp;lt;Reference Include="Microsoft.CSharp" /&amp;gt;&lt;br /&gt;&amp;lt;Reference Include="System.Data" /&amp;gt;&lt;br /&gt;&amp;lt;Reference Include="System.Xml" /&amp;gt;&lt;br /&gt;&amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;&amp;lt;ItemGroup&amp;gt;&lt;br /&gt;&amp;lt;Compile Include="AcmeService.cs" /&amp;gt;&lt;br /&gt;&amp;lt;Compile Include="Class1.cs" /&amp;gt;&lt;br /&gt;&amp;lt;Compile Include="IAcmeService.cs" /&amp;gt;&lt;br /&gt;&amp;lt;Compile Include="Properties\AssemblyInfo.cs" /&amp;gt;&lt;br /&gt;&amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;&amp;lt;ItemGroup&amp;gt;&lt;br /&gt;&amp;lt;None Include="app.config" /&amp;gt;&lt;br /&gt;&amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;&amp;lt;Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /&amp;gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;ProjectExtensions&amp;gt;&lt;br /&gt;&amp;lt;VisualStudio&amp;gt;&lt;br /&gt;&amp;lt;FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}"&amp;gt;&lt;br /&gt;&amp;lt;WcfProjectProperties&amp;gt;&lt;br /&gt;&amp;lt;AutoStart&amp;gt;True&amp;lt;/AutoStart&amp;gt;&lt;br /&gt;&amp;lt;/WcfProjectProperties&amp;gt;&lt;br /&gt;&amp;lt;/FlavorProperties&amp;gt;&lt;br /&gt;&amp;lt;/VisualStudio&amp;gt;&lt;br /&gt;&amp;lt;/ProjectExtensions&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it.&lt;br /&gt;Other similar extension points exist, see Microsoft.Common.targets.&lt;br /&gt;&amp;lt;Target Name="BeforeBuild"&amp;gt;&lt;br /&gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;&amp;lt;Target Name="AfterBuild"&amp;gt;&lt;br /&gt;&amp;lt;/Target&amp;gt;&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;/Project&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A useful link to understand Project Types: &amp;nbsp;&lt;a href="http://www.mztools.com/Articles/2008/MZ2008017.aspx"&gt;http://www.mztools.com/Articles/2008/MZ2008017.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.mztools.com/Articles/2008/MZ2008017.aspx"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2259284469021806702?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2259284469021806702/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2259284469021806702' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2259284469021806702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2259284469021806702'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2011/02/how-to-transform-pure-class-library.html' title='How to transform a pure Class Library project into a WCF Service Library'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7740822927632145730</id><published>2011-02-06T21:14:00.002+01:00</published><updated>2011-04-25T15:23:04.043+02:00</updated><title type='text'>Connet an Android app to Google App Engine - Authenticated !</title><content type='html'>Sometime ago I read a very interesting post on Nick'blog: "Authenticating against App Engine from an Android app" &amp;nbsp;&lt;a href="http://blog.notdot.net/2010/05/Authenticating-against-App-Engine-from-an-Android-app"&gt;http://blog.notdot.net/2010/05/Authenticating-against-App-Engine-from-an-Android-app&lt;/a&gt;&lt;br /&gt;The code was very intersting but I need to refactor a bit and I'd like to add some "utility" method.&lt;br /&gt;Also I added a way to automatically invalidate old Auth token and get a new one.&lt;br /&gt;&lt;br /&gt;My code (very alpha... I'm still working on it...) is here:&lt;br /&gt;&lt;a href="http://code.google.com/p/fhpublicstuff/source/browse/test/GAEConnector/GAEConnector.java"&gt;http://code.google.com/p/fhpublicstuff/source/browse/test/GAEConnector/GAEConnector.java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[Update: it manages http and https connections to GAE]&lt;br /&gt;&lt;br /&gt;Usage:&lt;br /&gt;&lt;br /&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;span class="Apple-style-span" style="color: #cc0000;"&gt;&lt;b&gt;_gaeConnector&lt;/b&gt;&lt;/span&gt; = new GAEConnector(null, "http://AAAAAAAA.appspot.com");&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;if (!_gaeConnector.Authenticate(MyTest.this)) {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;message = "***AUTHENTICATION ERROR***";&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;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;if (_gaeConnector.isAuthenticated()) {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;int httpStatusCode = _gaeConnector.GETContent("/myurl", true, true);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;if (httpStatusCode == 200) {&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;String content = _gaeConnector.getLastContent();&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;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7740822927632145730?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7740822927632145730/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7740822927632145730' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7740822927632145730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7740822927632145730'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2011/02/connet-android-app-to-google-app-engine.html' title='Connet an Android app to Google App Engine - Authenticated !'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3631482951014023289</id><published>2010-11-25T08:32:00.000+01:00</published><updated>2010-11-25T08:32:30.168+01:00</updated><title type='text'>Cloud</title><content type='html'>[Per Andrea B.]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Ma vaffan cloud!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;:)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3631482951014023289?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3631482951014023289/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3631482951014023289' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3631482951014023289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3631482951014023289'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/11/cloud.html' title='Cloud'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3830774110259475842</id><published>2010-11-20T14:56:00.000+01:00</published><updated>2010-11-20T14:56:40.456+01:00</updated><title type='text'>HttpClient - disable follow http redirect</title><content type='html'>I was playing with Apache &lt;a href="http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html"&gt;DefaultHttpClient&lt;/a&gt;&amp;nbsp;on Android. HttpClient follows http redirect by default. But I need to disable it. &amp;nbsp;I expected a simple set property on HttpClient or HttpGet. I was wrong. &amp;nbsp;:(&lt;br /&gt;Found two solution after a long googling.&lt;br /&gt;&lt;br /&gt;My code:&lt;br /&gt;DefaultHttpClient httpClient = new DefaultHttpClient();&lt;br /&gt;HttpGet httpget = new HttpGet("http://....");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solution 1: set parameter&lt;br /&gt;&lt;br /&gt;DefaultHttpClient httpClient = new DefaultHttpClient();&lt;br /&gt;&lt;b&gt;BasicHttpParams params = new BasicHttpParams();&lt;/b&gt;&lt;br /&gt;&lt;b&gt;HttpClientParams.setRedirecting(params, false);&lt;/b&gt;&lt;br /&gt;&lt;b&gt;httpClient.setParams(params);&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;HttpGet httpget = new HttpGet("http://....");&lt;br /&gt;&lt;br /&gt;Solution 2 - define my own redirecthandler&lt;br /&gt;&lt;br /&gt;DefaultHttpClient httpClient = new DefaultHttpClient();&lt;br /&gt;&lt;b&gt;httpClient.setRedirectHandler(new DefaultRedirectHandler() {&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;b&gt;@Override&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;b&gt;public boolean isRedirectRequested(HttpResponse response,&amp;nbsp;HttpContext context) {&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;b&gt;return false;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;b&gt;}&lt;/b&gt;&lt;br /&gt;&lt;b&gt;});&lt;/b&gt;&lt;br /&gt;HttpGet httpget = new HttpGet("http://....");&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3830774110259475842?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3830774110259475842/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3830774110259475842' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3830774110259475842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3830774110259475842'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/11/httpclient-disable-follow-http-redirect.html' title='HttpClient - disable follow http redirect'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-6073878552279835501</id><published>2010-11-10T21:24:00.000+01:00</published><updated>2010-11-10T21:24:03.070+01:00</updated><title type='text'>My first Android test app</title><content type='html'>My first test on Android. A Memory game for my kids. &amp;nbsp;:)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_8eehAYx2jfE/TNr-1UnZubI/AAAAAAAADjc/EyxkAmMiAds/s1600/memory1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_8eehAYx2jfE/TNr-1UnZubI/AAAAAAAADjc/EyxkAmMiAds/s320/memory1.png" width="217" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;But it has some bugs. First of all I need to fix the layout when rotated. &amp;nbsp;:(&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_8eehAYx2jfE/TNr_K2MbviI/AAAAAAAADjg/kMOi0XTe8ww/s1600/memory2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://4.bp.blogspot.com/_8eehAYx2jfE/TNr_K2MbviI/AAAAAAAADjg/kMOi0XTe8ww/s320/memory2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-6073878552279835501?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/6073878552279835501/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=6073878552279835501' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6073878552279835501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6073878552279835501'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/11/my-first-android-test-app.html' title='My first Android test app'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8eehAYx2jfE/TNr-1UnZubI/AAAAAAAADjc/EyxkAmMiAds/s72-c/memory1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2453254999759054947</id><published>2010-09-06T18:39:00.000+02:00</published><updated>2010-09-06T18:39:25.679+02:00</updated><title type='text'>GDocBackup 0.4.21.107 released</title><content type='html'>Updates:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;workarounds for some (still open) Google issues &amp;nbsp;:)&lt;/li&gt;&lt;li&gt;many bug fixes&lt;/li&gt;&lt;li&gt;updated google-gdata library&lt;/li&gt;&lt;li&gt;beta release notification (optional)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://gs.fhtino.it/gdocbackup"&gt;http://gs.fhtino.it/gdocbackup&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2453254999759054947?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2453254999759054947/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2453254999759054947' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2453254999759054947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2453254999759054947'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/09/gdocbackup-0421107-released.html' title='GDocBackup 0.4.21.107 released'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-1230045459917631818</id><published>2010-09-04T16:43:00.001+02:00</published><updated>2010-12-27T15:31:48.114+01:00</updated><title type='text'>Torino GTUG ?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_8eehAYx2jfE/TIJauRUBqrI/AAAAAAAADhI/aS2dd46D-7M/s1600/TorinoGTUG.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="124" src="http://2.bp.blogspot.com/_8eehAYx2jfE/TIJauRUBqrI/AAAAAAAADhI/aS2dd46D-7M/s320/TorinoGTUG.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Questo Giovedì (9 settembre 2010) proviamo a vedere se riusciamo a formare un GTUG su Torino.&amp;nbsp;(GTUG = Google Technology User Groups). &amp;nbsp;Se qualcuno è interessato, sarà il benvenuto.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;a href="http://torino.gtugs.org/"&gt;http://torino.gtugs.org/&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;[Update - Dic. 2010]: community partita e attiva. :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-1230045459917631818?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/1230045459917631818/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=1230045459917631818' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1230045459917631818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1230045459917631818'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/09/torino-gtug.html' title='Torino GTUG ?'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8eehAYx2jfE/TIJauRUBqrI/AAAAAAAADhI/aS2dd46D-7M/s72-c/TorinoGTUG.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5862487249892072294</id><published>2010-06-30T22:38:00.000+02:00</published><updated>2010-06-30T22:38:33.981+02:00</updated><title type='text'>Invio automatico dei bollettini di Allerta MeteoIdrologica di ARPA Piemonte grazie a Google App Engine</title><content type='html'>&lt;a href="http://www.arpa.piemonte.it/"&gt;ARPA Piemonte&lt;/a&gt; pubblica regolarmente vari bollettini meteo e affini. Tra questi trovo molto utile quello di Allerta MeteoIdrologica. Viene pubblicato tutti i giorni attorno alle ore 13. Il bollettino evidenzia i fenomeni meteo rilevanti nelle 36 ore successive ed i previsti effetti al suolo (smottamenti, problemi alla viabilità, ecc.).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_8eehAYx2jfE/TCuqpId6-pI/AAAAAAAADfY/Kq9K2_pA4u8/s1600/bollettino_allerta_arpa.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_8eehAYx2jfE/TCuqpId6-pI/AAAAAAAADfY/Kq9K2_pA4u8/s400/bollettino_allerta_arpa.png" width="282" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Il territorio piemontese è diviso in 11 zone: i fenomeni sono evidenziati in dettaglio per ogni singola zona. &amp;nbsp;Per ogni zona è indicato anche un livello di criticità: ordinaria, moderata ed elevata.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_8eehAYx2jfE/TCuqdWSSZ0I/AAAAAAAADfU/hyNeMg9DKgE/s1600/zone_piemonte.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="147" src="http://2.bp.blogspot.com/_8eehAYx2jfE/TCuqdWSSZ0I/AAAAAAAADfU/hyNeMg9DKgE/s400/zone_piemonte.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Guardando il bollettino ho pensato: mi piacerebbe essere avvisato in caso di una previsione di eventi critici nella mia zona (forte nevicata, piogge intense, esondazioni). Consultando il sito non ho trovato nessun servizio per l'invio automatico, tanto meno un servizio per l'invio "per zone" e in solo in caso di allerta. Che fare? Soluzione: me lo faccio io il servizio! &amp;nbsp;:)&lt;br /&gt;&lt;br /&gt;E' un po' di tempo che stavo provando Google App Engine (la piattaforma di Cloud Computing di Google). Mi è quindi sembrato ovvio fare 1+1. &amp;nbsp;Ed ecco il risultato: &amp;nbsp; &lt;a href="http://fhtino.appspot.com/bollettino/"&gt;http://fhtino.appspot.com/bollettino/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8eehAYx2jfE/TCuqv7FHW8I/AAAAAAAADfc/Yx5nH4YuMYU/s1600/bollettino_applicazione.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_8eehAYx2jfE/TCuqv7FHW8I/AAAAAAAADfc/Yx5nH4YuMYU/s400/bollettino_applicazione.png" width="342" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;E' stata una buona occasione per fare molti esperimenti con i servizi offerti da Google App Engine e non solo.&lt;br /&gt;&lt;br /&gt;Un po' di dettagli tecnici:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;gli utenti si registrano inserendo la loro email e scegliendo le zone per cui ricevere i bollettini. Inoltre posso scegliere se ricevere il bollettino tutti i giorni oppure solo in caso di Allerta vera e proprio.&lt;/li&gt;&lt;li&gt;per evitare lo spam, ho integrato reCaptcha&lt;/li&gt;&lt;li&gt;via Scheduled Tasks l'applicazione controlla se viene pubblicato un nuovo bollettino (in pdf)&lt;/li&gt;&lt;li&gt;i dati testuali del bollettino sono estratti grazie ad una versione modificata di PdfBox che può girare su GAE (vedi http://fhtino.blogspot.com/2010/04/pdfbox-text-extration-gae.html). I dati sono quindi ri-organizzati in xml.&lt;/li&gt;&lt;li&gt;quando l'applicazione trova un nuovo bollettino, invia le email agli utenti (via TaskQueues)&lt;/li&gt;&lt;li&gt;le informazioni degli utenti e il bollettino attuale (in xml) sono memorizzati nello Storage di GAE&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Attenzione&lt;/b&gt;: si tratta di un esperimento. I dati potrebbero essere estratti in modo errato e quindi l'applicazione potrebbe inviare avvisi errati. Come ho indicato sul sito, &lt;b&gt;I DATI NON SONO VALIDI&lt;/b&gt;. &amp;nbsp; Comunque l'applicazione sta girando da alcuni mesi e si è sempre comprata bene. Spero che continui così.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5862487249892072294?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5862487249892072294/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5862487249892072294' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5862487249892072294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5862487249892072294'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/06/invio-automatico-dei-bollettini-di.html' title='Invio automatico dei bollettini di Allerta MeteoIdrologica di ARPA Piemonte grazie a Google App Engine'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8eehAYx2jfE/TCuqpId6-pI/AAAAAAAADfY/Kq9K2_pA4u8/s72-c/bollettino_allerta_arpa.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-853257521700421585</id><published>2010-06-17T07:00:00.003+02:00</published><updated>2010-07-11T21:17:23.338+02:00</updated><title type='text'>Tombino anonimo</title><content type='html'>Stando ad un articolo su &lt;a href="http://www.wired.com/magazine/ff_internetplaces/"&gt;WIRED&lt;/a&gt;, questo è il punto di arrivo di uno dei principali cavi sottomarini che attraversano l'oceano Atlantico. L'anonimo tombino è nei pressi di Halifx, Canada.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8eehAYx2jfE/TBoQF65X3xI/AAAAAAAADew/YASMJdrgMCo/s1600/halifax_ff_internetplaces1_f.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="425" src="http://3.bp.blogspot.com/_8eehAYx2jfE/TBoQF65X3xI/AAAAAAAADew/YASMJdrgMCo/s640/halifax_ff_internetplaces1_f.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-853257521700421585?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/853257521700421585/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=853257521700421585' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/853257521700421585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/853257521700421585'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/06/stando-ad-un-articolo-su-wired-questo-e.html' title='Tombino anonimo'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8eehAYx2jfE/TBoQF65X3xI/AAAAAAAADew/YASMJdrgMCo/s72-c/halifax_ff_internetplaces1_f.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3713058558658100727</id><published>2010-05-14T22:50:00.001+02:00</published><updated>2010-05-14T22:54:05.939+02:00</updated><title type='text'>Guard Clauses &amp; Fail Fast</title><content type='html'>Recentemente mi è capitato di discutere con un amico di come organizzare il codice all'interno di un metodo. La questione è tutto sommato semplice: unico punto di uscita come indicano i sacri testi oppure un approccio più pragmatico? Io sostengo fortemente il secondo.&lt;br /&gt;Spesso il codice che scriviamo ha tantissime condizioni da controllare. Molte di queste sono in realtà condizioni di esecuzione, cioè condizioni che devono essere soddisfatte per poter poi eseguire il lavoro vero e proprio. Ad esempio, controllare che la connessione a DB sia attiva, che un valore numerico sia compreso in un certo intervallo e così via. Questo tipo di condizioni sono quindi più dei "check" o per dirla con Martin Fowler dei "Guard Clause", clausole di salvaguardia. Riporto &lt;a href="http://www.refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html"&gt;l'esempio di Fowler&lt;/a&gt;. Partiamo da questo pezzo di codice:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;double getPayAmount() {&lt;br /&gt; double result;&lt;br /&gt; if (_isDead) result = deadAmount();&lt;br /&gt; else {&lt;br /&gt;  if (_isSeparated) result = separatedAmount();&lt;br /&gt;  else {&lt;br /&gt;   if (_isRetired) result = retiredAmount();&lt;br /&gt;   else result = normalPayAmount();&lt;br /&gt;  };&lt;br /&gt; }&lt;br /&gt;return result;&lt;br /&gt;};&lt;/pre&gt;&lt;br /&gt;Ecco come possiamo riscriverlo in modo molto più chiaro con "guard clauses": &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;double getPayAmount() { &lt;br /&gt;  if (_isDead) return deadAmount();&lt;br /&gt;  if (_isSeparated) return separatedAmount();&lt;br /&gt;  if (_isRetired) return retiredAmount();&lt;br /&gt;  return normalPayAmount();&lt;br /&gt;};&lt;/pre&gt;&lt;br /&gt;Questo modo di scrivere codice ha secondo me anche altri vantaggi oltre alla chiarezza. In primo luogo concentra nella parte iniziale tutti i controlli di accesso rendendo più facile il test ed il debug e semplifica l'aggiunta/modifica dei check stessi. Altro vantaggio è che si trova la strada facilitata per implementare un approccio "Fail Fast" (&lt;a href="http://www.martinfowler.com/ieeeSoftware/failFast.pdf"&gt;vedere qui l'articolo di Jim Shore&lt;/a&gt;).&lt;br /&gt;Fail Fast è un approccio che condivido moltissimo. Il ragionamento di base è molto semplice: &lt;b&gt;meglio un'applicazione che si pianta inaspettatamente che una che va avanti in condizioni precarie nascondendo gli errori.&lt;/b&gt; Mi conforta che questo è anche l'approccio scelto per la gestione delle eccezioni di background in .NET 2.0, che cambia radicalmente l'approccio rispetto a NET 1.0 / 1.1 che invece ignorava e nascondeva.&lt;br /&gt;&lt;br /&gt;Torniamo a "Clause Guard": metto in testa tutti i controlli; per ogni controllo posso decidere se gestire la condizione e uscire in modo controllato dal metodo oppure se considerare la condizione come anomala e quindi sollevare un Exception.&lt;br /&gt;Certamente Fail Fast è un approccio più ampio che non si limita a sollevare eccezioni nei controlli del codice. Ma indubbiamente i due metodi si sposano molto bene.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3713058558658100727?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3713058558658100727/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3713058558658100727' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3713058558658100727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3713058558658100727'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/05/guard-clauses-fail-fast.html' title='Guard Clauses &amp; Fail Fast'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5133505808558092054</id><published>2010-04-20T06:50:00.017+02:00</published><updated>2010-04-20T22:00:23.449+02:00</updated><title type='text'>PdfBox text extraction &amp; GAE</title><content type='html'>&lt;b&gt;&lt;i&gt;How to do text extraction from pdf files using PdfBox on Google App Engine&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;(Warning: I used an old version of PdfBox: 0.7.3.)&lt;br /&gt;&lt;br /&gt;PdfBox is a very popular Java library for creating and managing pdf files. It's also able to extract text from existing pdf files. Pdfbox is published as a jar file.&lt;br /&gt;I'd like to use it on Google App Engine (java version) for text extraction from particular area of the page of pdf files. PdfBox allows that. The class to use is PDFTextStripperByArea. I tried it but GAE blocked me: PDFTextStripperByArea uses not allowed JRE classes. In particular jawa.awt.Rectangle and Rectangle2D. GAE applies a "white list" approach: only a subset of the standard JRE classes is allowed to run on GAE. 99% of Java.awt.* is blocked. &lt;a href="http://code.google.com/appengine/docs/java/jrewhitelist.html"&gt;http://code.google.com/appengine/docs/java/jrewhitelist.html&lt;/a&gt;&lt;br /&gt;There is also another problem. During text extraction PdfBox uses a temp file. By default it's created on the file-system. GAE also blocks the access to the file-system.&lt;br /&gt;&lt;br /&gt;My solution was:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;use my own Rectangle instead of java.awt.Rectangle&lt;/li&gt;&lt;li&gt;use a "in memory" temp file&lt;/li&gt;&lt;/ul&gt;The first required modification and recompilation&amp;nbsp;of PdfBox.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;My own Rectangle&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I created my own Rectangle and Rectangle2D classes. My rectangle implementation is not complete compared to the awt one. I only created fields and methods required.&lt;br /&gt;Than I created a new PDFTextStripperByArea: PDFTextStripperByAreaGAE. I not modified the original PDFTextStripperByArea because I didn't want to break the PdfBox library compatibility.&lt;br /&gt;The new class only use my Rectangle. No more references to java.awt. So now GAE allows it to run.&lt;br /&gt;The new PDFTextStripperByAreaGAE is equal to the old PDFTextStripperByArea . The only difference is the use of my Rectangle instead of java.awt.Rectangle. I copied and pasted 99% of the original code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Temp file in memory&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;PdfBox uses File System by default. But you can force it to use a "in memory" buffer. PdfBox ships with org.pdfbox.io.RandomAccessBuffer. I use it.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;byte[] pdfBytes; // contains the bytes of the Pdf file&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;RandomAccessBuffer tempMemBuffer = new RandomAccessBuffer();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PDDocument doc = PDDocument.load(new ByteArrayInputStream(pdfBytes), tempMemBuffer);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PDFTextStripperByAreaGAE sa = new PDFTextStripperByAreaGAE();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;sa.addRegion("Area1", new Rectangle(26, 86, 62, 10));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;sa.addRegion("Area2", new Rectangle(99, 86, 94, 14));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PDPage p = (PDPage) doc.getDocumentCatalog().getAllPages().get(0); // page 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;sa.extractRegions(p);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;String area1 = sa.getTextForRegion("Area1")&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;String area2 = sa.getTextForRegion("Area2")&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;doc.close();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Live demo&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fhtino.appspot.com/PdfBoxGAE/demo.jsp"&gt;http://fhtino.appspot.com/PdfBoxGAE/demo.jsp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(please, use small pdf files)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5133505808558092054?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5133505808558092054/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5133505808558092054' title='11 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5133505808558092054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5133505808558092054'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/04/pdfbox-text-extration-gae.html' title='PdfBox text extraction &amp; GAE'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3550037883210250507</id><published>2010-04-02T23:07:00.000+02:00</published><updated>2010-04-02T23:07:12.854+02:00</updated><title type='text'>Spunti interessanti dalle slide di Jeff Dean</title><content type='html'>Stavo guardando le slide che Jeff Dean (Google) ha presentato alla Cornell University:&lt;br /&gt;&lt;a href="http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf"&gt;http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Moltissimi spunti interessanti conditi con mie considerazioni:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;le cose (server, dischi, schede e apparati di rete, ecc.) si rompono: bisogna imparare a gestire la cosa. Non fare finta che non possa accadere.&lt;/li&gt;&lt;li&gt;sviluppare servizi "interni", con poche dipendenze, chiare e documentate&lt;/li&gt;&lt;li&gt;usare "protocolli" &amp;nbsp;(strutture dati) che possono evolvere in modo trasparente per i "sistemi intermedi" (ogni applicazione capisce i propri "tag")&lt;/li&gt;&lt;li&gt;conoscere i &amp;nbsp;"numeri base" del performance di trasferimento dati in condizioni diverse (memoria, disco, lan, rete geografica, ecc.)&lt;/li&gt;&lt;li&gt;fare fronte alle richieste degli utenti senza far esplodere il sistema in termini di complessità. Oltre un certo punto, per far fronte a tutte le richieste, il sistema diventa troppo complesso e costoso.&lt;/li&gt;&lt;li&gt;sviluppare infrastrutture (e software) in base ad esigenze reali e non speculare su possibili esigenze future che, ad oggi, non esistono. &amp;nbsp;Considerare invece come le esigenze attuale potrebbero evolvere.&lt;/li&gt;&lt;li&gt;la velocità di risposta delle applicazioni è molto importante. Attenzione alla latenza.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3550037883210250507?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3550037883210250507/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3550037883210250507' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3550037883210250507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3550037883210250507'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/04/spunti-interessanti-dalle-slide-di-jeff.html' title='Spunti interessanti dalle slide di Jeff Dean'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4350038361428160586</id><published>2010-03-29T17:24:00.001+02:00</published><updated>2010-03-29T17:24:34.722+02:00</updated><title type='text'>GDocBackup 0.4.13.87 released</title><content type='html'>Added support for pdf export and other minor fixes/enhancements.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gs.fhtino.it/gdocbackup"&gt;http://gs.fhtino.it/gdocbackup&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4350038361428160586?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4350038361428160586/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4350038361428160586' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4350038361428160586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4350038361428160586'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/03/gdocbackup-041387-released.html' title='GDocBackup 0.4.13.87 released'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7277829938736608884</id><published>2010-03-18T18:30:00.014+01:00</published><updated>2010-05-27T08:11:30.910+02:00</updated><title type='text'>C'è sempre da imparare dagli altri, soprattutto se questi raccontano</title><content type='html'>&lt;div&gt;Il 24 febbraio scorso è "caduto" &lt;a href="http://code.google.com/appengine/"&gt;GAE - Google App Engine&lt;/a&gt;. Per chi non lo conoscesse (chi?) è la piattaforma per lo sviluppo di applicazioni di Cloud Compunting di Google. Da non confondere con Google Apps, che è sempre Cloud, è sempre di Google ma è un più un servizio che una piattaforma di sviluppo. Detto in 2 parole: in Google App Engine scrivi applicazioni web in Java o Phyton. In Google Apps usi versioni parzialmente custom di GMail, Calendar, ecc.&lt;/div&gt;&lt;div&gt;Dicevo... il 24 febbrario Google App Engine è "morto": non funzionava più niente. Dopo un paio di ore di completo blackout sono ripartite le applicazioni, prima in read-only, poi in modo normale. Il disservizio è stato molto grave, ha praticamente coinvolto tutte le applicazioni e ha scatenato molte reazioni negative fra gli utenti visto che GAE è un servizio a pagamento (...ovviamente c'è anche una versione gratuita... a differenza di qualcun'altro...).&amp;nbsp;&lt;/div&gt;&lt;div&gt;Un po' di giorni dopo il fattaccio Google ha pubbicato &lt;a href="http://groups.google.com/group/google-appengine/browse_thread/thread/a7640a2743922dcf"&gt;un'analisi "post-mortem"&lt;/a&gt;. Il post è molto dettagliato ed è possibile capire molte cose su come vengono gestiti ed erogati i servizi in Google. Ma l'aspetto che mi ha colpito di più è&amp;nbsp;la trasparenza: non so quante aziende di fronte ad un problema serio sui propri servizi avrebbero fatto la stessa cosa. Un "mea culpa" pubblico e dettagliato. Certo, ci sono ragioni di politica commerciale, ma è la prima volta che vedo una cosa del genere.&lt;/div&gt;&lt;div&gt;Il post di Google è anche un'occasione per imparare qualcosa sulle problematiche dell'erogazione dei servizi da applicare poi anche in realtà più piccole.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;power failure: la causa è stato un problema dell'alimentazione dell'energia elettrica. Ci facciamo tanti problemi con SAN, RAID e Cluster e poi ci dimentichiamo dei gruppi di continuità.&lt;/li&gt;&lt;li&gt;procedure per i casi di disastro: Google le aveva ma il team non aveva familiarità con esse. Noi facciamo delle simulazioni, proviamo ad applicarle?&lt;/li&gt;&lt;li&gt;le procedure non erano aggiornate. E le nostre?&lt;/li&gt;&lt;li&gt;le procedure non coprivano un caso così grave nell'alimentazione elettrica. Le nostre coprono tutti i casi?&lt;/li&gt;&lt;li&gt;mantenere le procedure aggiornate, soprattutto se il sistema cambia. Aggiorniamo le procedure?&lt;/li&gt;&lt;li&gt;definire delle politiche di gestione dei casi di emergenza. Fatto?&lt;/li&gt;&lt;/ul&gt;Ma la domanda principe è: noi abbiamo le procedure di emergenza oppure facciamo finta che certi disastri non succedano mai?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Memento:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;l'energia elettrica si può interrompere&lt;/li&gt;&lt;li&gt;l'energia elettrica può&amp;nbsp;avere sbalzi&lt;/li&gt;&lt;li&gt;i dischi si rompono&lt;/li&gt;&lt;li&gt;gli alimentari si rompono&lt;/li&gt;&lt;li&gt;i controller RAID si rompono&lt;/li&gt;&lt;li&gt;gli switch, i router e i firewall si rompono o si bloccano&lt;/li&gt;&lt;li&gt;i nastri (del backup) non sono più leggibili&lt;/li&gt;&lt;li&gt;il RAID o la SAN è configurato bene? Sì? Allora togli un disco a caldo su un server di produzione se hai il coraggio!&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;[UPDATE]&lt;/div&gt;&lt;div&gt;Nell'ottica dell'importanza della continuità del servizio &amp;nbsp;:)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://imgs.xkcd.com/comics/devotion_to_duty.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://imgs.xkcd.com/comics/devotion_to_duty.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://xkcd.org/705/"&gt;http://xkcd.org/705/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7277829938736608884?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7277829938736608884/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7277829938736608884' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7277829938736608884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7277829938736608884'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/03/ce-sempre-da-imparare-dagli-altri.html' title='C&apos;è sempre da imparare dagli altri, soprattutto se questi raccontano'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-6847188308752225842</id><published>2010-02-14T17:45:00.002+01:00</published><updated>2010-02-14T17:47:13.970+01:00</updated><title type='text'>UrlDiff Monitor</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://urldiff.appspot.com/"&gt;http://urldiff.appspot.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Un po' di esperimenti per imparare ad usare Google App Engine.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-6847188308752225842?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/6847188308752225842/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=6847188308752225842' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6847188308752225842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6847188308752225842'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/02/urldiff-monitor.html' title='UrlDiff Monitor'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3672898002905620695</id><published>2010-01-25T18:18:00.001+01:00</published><updated>2010-01-25T18:50:21.784+01:00</updated><title type='text'>Someone smarter than you</title><content type='html'>&lt;div&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Un bel &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/01/24/about-technical-debates-both-in-general-and-regarding-asp-net-web-forms-and-asp-net-mvc-in-particular.aspx"&gt;articolo &lt;/a&gt;di Scott Guthrie (Corporate Vice President - Microsoft Developer Division).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;Questa mi è proprio piaciuta:&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;blockquote&gt;&lt;i&gt;There will always be someone somewhere in the world who is smarter than you - don’t always assume that they aren’t in the room with you.&lt;/i&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:arial;font-size:small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;:)&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3672898002905620695?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3672898002905620695/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3672898002905620695' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3672898002905620695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3672898002905620695'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/01/someone-smarter-than-you.html' title='Someone smarter than you'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2264009369967512648</id><published>2010-01-13T08:04:00.003+01:00</published><updated>2010-02-01T13:58:46.458+01:00</updated><title type='text'>Google rimuoverà la censura su Google.cn</title><content type='html'>Questa è una notiziona: nella sostanza e nella forma.&lt;div&gt;Sostanza: Google toglierà i filtri/censura attualmente presenti su Google.cn.&lt;/div&gt;&lt;div&gt;Forma: un bel comunicato sul Blog ufficiale di Google Inc.&lt;/div&gt;&lt;div&gt;&lt;a href="http://googleblog.blogspot.com/2010/01/new-approach-to-china.html"&gt;http://googleblog.blogspot.com/2010/01/new-approach-to-china.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;Un frammento:&lt;br /&gt;&lt;blockquote&gt;These attacks and the surveillance they have uncovered--combined with the attempts over the past year to further limit free speech on the web--have led us to conclude that we should review the feasibility of our business operations in China. We have decided we are no longer willing to continue censoring our results on Google.cn, and so over the next few weeks we will be discussing with the Chinese government the basis on which we could operate an unfiltered search engine within the law, if at all. We recognize that this may well mean having to shut down Google.cn, and potentially our offices in China.&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Assolutamente da leggere!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2264009369967512648?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2264009369967512648/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2264009369967512648' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2264009369967512648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2264009369967512648'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2010/01/google-rimuovera-la-censura-su-googlecn.html' title='Google rimuoverà la censura su Google.cn'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5010544050805231564</id><published>2009-12-29T15:58:00.000+01:00</published><updated>2009-12-29T15:59:26.049+01:00</updated><title type='text'>GDocBackup 0.4.9.71 released</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; white-space: pre; "&gt;GDocBackup 0.4.9.71 released&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;a href="http://gs.fhtino.it/gdocbackup"&gt;http://gs.fhtino.it/gdocbackup&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Arial;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5010544050805231564?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5010544050805231564/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5010544050805231564' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5010544050805231564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5010544050805231564'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/12/gdocbackup-04971-released.html' title='GDocBackup 0.4.9.71 released'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5345681760661554230</id><published>2009-11-20T17:21:00.007+01:00</published><updated>2010-02-01T13:56:37.343+01:00</updated><title type='text'>Strange problem with certificates in mono (unsolved...)</title><content type='html'>I was testing GDocBackup on OpenSuse.  GDocbackup runs on Win but also on Linux + Mono.&lt;div&gt;As many other times I got an error about authentication. No problem. The problem is related to SSL Certificates. GDocBackup authenticates through an https connetion. But Mono is shipped without many root certificates. So the error.&lt;/div&gt;&lt;div&gt;No problem: the solution is easy. Using mozroot I download all the root certificate. This solution has always worked. But today on OpenSuse I continue to get the error.  :( &lt;/div&gt;&lt;div&gt;After a lot of tests and search it seems to be a problem with Mono. Some root certificates as not considered valid. One of them is the root certificate "on top" of www.google.com (the CA is Equifax certificate authority).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A fast solution: add an "accept all" CertificatePolicy in GDocBackup.&lt;/div&gt;&lt;div&gt;...&lt;/div&gt;&lt;div&gt;ServicePointManager.CertificatePolicy = new ByPassCheckCert();&lt;/div&gt;&lt;div&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        private class ByPassCheckCert : ICertificatePolicy&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;public bool CheckValidationResult(&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                ServicePoint srvPoint, &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                System.Security.Cryptography.X509Certificates.X509Certificate certificate, &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                WebRequest request, &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                int certificateProblem)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;            {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  return true;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;            }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using this policy all https certificates is considered valid. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A note:  ServicePointManager.CertificatePolicy is deprecated in NET 2.0. You should use ServicePointManager.ServerCertificateValidationCallback. But Mono does not suport it.  ("to be implemented" ) &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is not a good day....  :(&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some links:&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/google-gdata/issues/detail?id=238&amp;amp;can=1&amp;amp;q=certificate"&gt;&lt;/a&gt;&lt;/div&gt;&lt;span&gt;&lt;ul&gt;&lt;li&gt;http://code.google.com/p/google-gdata/issues/detail?id=238&amp;amp;can=1&amp;amp;q=certificate&lt;/li&gt;&lt;li&gt;https://bugzilla.novell.com/show_bug.cgi?id=495690&lt;/li&gt;&lt;li&gt;http://www.mail-archive.com/mono-list@lists.ximian.com/msg30929.html&lt;/li&gt;&lt;li&gt;https://bugzilla.novell.com/show_bug.cgi?id=495916&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=495916"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5345681760661554230?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5345681760661554230/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5345681760661554230' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5345681760661554230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5345681760661554230'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/11/strange-problem-with-certificates-in.html' title='Strange problem with certificates in mono (unsolved...)'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4077627457128720492</id><published>2009-10-31T12:06:00.005+01:00</published><updated>2009-10-31T12:41:36.988+01:00</updated><title type='text'>Microsoft Azure e Google App Engine</title><content type='html'>E' un po' di tempo che faccio test su Microsoft Azure e su Google App Engine. Devo dire che entrambe sono molto potenti ed hanno funzionalità molto interessanti.&lt;div&gt;A questo punto sorge una domanda: meglio la prima o la seconda?  Me lo sono chiesto più volte. Non ho ancora trovato una risposta definitivia. Probabilmente la risposta è la solita: "dipende" :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lavorando quasi esclusivamente su .NET, mi trovo molto bene su Azure dal punto di vista dello sviluppo. Tutto è  molto famigliare e l'ambiente di sviluppo locale che simula l'infrastruttura Azure, è molto ben integrato in Visual Studio.&lt;/div&gt;&lt;div&gt;Anche App Engine ha un ottimo ambiene di sviluppo locale: Eclipse + un plugin con tanto di simulatore locale dell'infrastruttura di Google App Engine.&lt;/div&gt;&lt;div&gt;Ovviamente la differenza è che su Azure posso usare Asp.net mentre su App Engine mi devo "accontentare" di Jsp e Servlet. Non escludo che si possano usare librerie più avanzate ma la produttività/consistenza/facilità d'uso di Asp.net rispstto a Jsp/Servlet è enorme.&lt;/div&gt;&lt;div&gt;Quindi, in definitiva, meglio Azure dal punto di vista dello sviluppo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ma non c'è solo sviluppo: dopo c'è il deploy e la gestione dell'applicazione "live".  E qui App Engine è molto più avanti. L'interfaccia di gestione via web è molto veloce e piena di informazioni di stato: richieste/secondo, log in tempo reale, visualizzatore di dati, ecc. &lt;/div&gt;&lt;div&gt;Anche nel deploy  App Engine è migliore: con pochi click e in pochi secondi l'applicazione viene pubblicata, direttamente da dentro Eclipse. Anche con Azure è possibile pubblicare direttamente da Visual Studio ma poi su Azure ci vogliono diversi minuti per attivare l'applicazione. Non so se sono stato sempre sfortunato ma alcune volte dovevo aspettare anche 15 minuti per vedere la mia applicazione attivarsi.  Su App Engine la cosa invece è immediata.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Altima cosa: i costi.  Entrambe le piattaforme sono a pagamento con schemi di pricing sostanzialmente "a consumo". Più l'applicazione lavora, più si paga. &lt;/div&gt;&lt;div&gt;Il vantaggio di App Engine rispetto a Azure, è che Google offre gratuitamente l'uso di App Engine se non si supera un certo carico giornaliero. Azure invece è a pagamento da subito, anche per applicazioni piccole e leggere. &lt;/div&gt;&lt;div&gt;Un paio di numeri sull'offerta free di Google: 1 milione di richieste al giorno, 1 GByte di banda http e 6 ore di Cpu.  Tutto questo al giorno!&lt;/div&gt;&lt;div&gt;Dettagli: &lt;a href="http://code.google.com/appengine/docs/quotas.html"&gt;http://code.google.com/appengine/docs/quotas.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Per una comparazione più dettagliata, leggere il &lt;a href="http://blogs.claritycon.com/blogs/kevin_marshall/archive/2009/09/09/building-cloud-applications-windows-azure-vs-google-app-engine.aspx"&gt;post di Kevin Marshall sul suo blog&lt;/a&gt;. Personalmente lo condivido... almeno al 80%  :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4077627457128720492?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4077627457128720492/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4077627457128720492' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4077627457128720492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4077627457128720492'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/10/microsoft-azure-e-google-app-engine.html' title='Microsoft Azure e Google App Engine'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2461771138368951346</id><published>2009-10-30T09:03:00.003+01:00</published><updated>2009-11-04T08:15:58.258+01:00</updated><title type='text'>Community Torino: è partita!</title><content type='html'>E' iniziata ufficialmente l'attività della community &lt;a href="http://www.torinotechnologiesgroup.it/"&gt;Torino Technologies Group&lt;/a&gt;  (il sito web sarà pronto a breve).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nel primo incontro pubblico abbiamo parlato di Controllo di Versione del codice sorgente e di Virtualizzazione (Vmware, HyperV, Citrix, ecc.). Sul primo argomento ho raccontato la mia esperienza con Subversion. Le slides saranno pubblicate sul sito appena sarà pronto. Nel frattempo sono disponibili qui:  &lt;a href="http://gs.fhtino.it/download"&gt;http://gs.fhtino.it/download&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2461771138368951346?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2461771138368951346/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2461771138368951346' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2461771138368951346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2461771138368951346'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/10/community-torino-e-partita.html' title='Community Torino: è partita!'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8011009382823483087</id><published>2009-10-28T08:32:00.004+01:00</published><updated>2009-11-04T08:16:47.057+01:00</updated><title type='text'>Segnalazione articolo di Joel Spolsky</title><content type='html'>Per gli studenti universitari del settore Computer Science &amp;amp; C.. Da leggere assolutamente. E poi meditare, meditare e meditare.&lt;div&gt;&lt;a href="http://www.joelonsoftware.com/items/2009/10/26.html"&gt;http://www.joelonsoftware.com/items/2009/10/26.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;Un paio di citazioni, ad inizio articolo:&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;i&gt;"It is amazing how easy it is to sail through a Computer Science degree from a top university without ever learning the basic tools of software developers, without ever working on a team..."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;i&gt;"Where are students supposed to learn about version control, bug tracking, working on teams, scheduling, estimating, debugging, usability testing, and documentation? Where do they learn to write a program longer than 20 lines?"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Se sei uno studente o un professionista e se vuoi farti un'idea del "version control/source control", queto giovedì ci sarà il primo incontro pubblico della community "Torino Technologies Group".&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;L'incontro sarà presso il MIC - Microsoft Innovation Center del Politecnico di Torino.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Si parlerà anche di Virtualizzazione: Vmware e HyperV.&lt;br /&gt;&lt;br /&gt;Maggiori dettagli qui:  &lt;a href="http://blogs.devleap.com/marco/archive/2009/10/22/nuova-community-a-torino-target-piemonte.aspx"&gt;http://blogs.devleap.com/marco/archive/2009/10/22/nuova-community-a-torino-target-piemonte.aspx&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" line-height: 20px; font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8011009382823483087?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8011009382823483087/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8011009382823483087' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8011009382823483087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8011009382823483087'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/10/segnalazione-articolo-di-joel-spolsky.html' title='Segnalazione articolo di Joel Spolsky'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4594695616046577679</id><published>2009-10-22T16:39:00.001+02:00</published><updated>2009-10-22T16:41:01.991+02:00</updated><title type='text'>Community a Torino: in partenza</title><content type='html'>&lt;div&gt;Community torinese, ops piemontese, dedicata alle tecnologie Microsoft e non solo. Previste ampie divagazioni.  :)&lt;/div&gt;Dettagli qui:  &lt;a href="http://blogs.devleap.com/marco/archive/2009/10/22/nuova-community-a-torino-target-piemonte.aspx"&gt;http://blogs.devleap.com/marco/archive/2009/10/22/nuova-community-a-torino-target-piemonte.aspx&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4594695616046577679?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4594695616046577679/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4594695616046577679' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4594695616046577679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4594695616046577679'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/10/community-torino-in-partenza.html' title='Community a Torino: in partenza'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-6684608536868397341</id><published>2009-10-05T07:00:00.000+02:00</published><updated>2009-10-05T17:04:30.046+02:00</updated><title type='text'>Container in datacenter</title><content type='html'>Prima Google e adesso Microsoft: sembra che i container vadano di moda nei datacenter  :)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://blogs.technet.com/msdatacenters/archive/2009/09/28/microsoft-celebrates-chicago-data-center-grand-opening.aspx"&gt;http://blogs.technet.com/msdatacenters/archive/2009/09/28/microsoft-celebrates-chicago-data-center-grand-opening.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-6684608536868397341?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/6684608536868397341/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=6684608536868397341' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6684608536868397341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6684608536868397341'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/10/container-in-datacenter.html' title='Container in datacenter'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-6304163133976878848</id><published>2009-09-18T10:56:00.002+02:00</published><updated>2009-09-18T11:04:45.725+02:00</updated><title type='text'>Notiziona: Mono gira anche su iPhone</title><content type='html'>Chi non conosce Mono, il framework .Net compatibile che permette di far girare applicazioni .Net su Linux e Mac?  Beh, oggi Mono ha fatto un nuovo passo avanti: una versione che gira su iPhone. MonoTouch  &lt;a href="http://monotouch.net/"&gt;http://monotouch.net/&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Leggendo le &lt;a href="http://monotouch.net/FAQ"&gt;FAQ &lt;/a&gt;sembrerebbe più un convertitore di applicazioni più che un porting di Mono su iPhone  ("MonoTouch is delivered as a static compiler that turns .NET executables and libraries into native applications. ")&lt;/div&gt;&lt;div&gt;Sempre dalle FAQ: è necessario un Mac e iPhone SDK.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ultimo dettaglio, non trascurabile: è a pagamento!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-6304163133976878848?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/6304163133976878848/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=6304163133976878848' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6304163133976878848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6304163133976878848'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/09/notiziona-mono-gira-anche-su-iphone.html' title='Notiziona: Mono gira anche su iPhone'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7909281544488617267</id><published>2009-09-16T11:25:00.003+02:00</published><updated>2009-09-17T15:34:57.182+02:00</updated><title type='text'>GDocBackup runs on Mac</title><content type='html'>It's official: &lt;a href="http://gs.fhtino.it/gdocbackup"&gt;GDocBackup&lt;/a&gt; runs quite well on Mac OS X + &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A mini HowTo is coming soon. In the meantime, read instructions for Linux on the &lt;a href="http://gs.fhtino.it/gdocbackup/faq"&gt;FAQ page&lt;/a&gt;. They also apply to Mac (more or less).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://4.bp.blogspot.com/_8eehAYx2jfE/SrI677WwVQI/AAAAAAAADPg/vJD5iQNS5S0/s400/Mac_ScreenShot1.png" style="cursor:pointer; cursor:hand;width: 400px; height: 237px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5382429305880990978" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7909281544488617267?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7909281544488617267/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7909281544488617267' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7909281544488617267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7909281544488617267'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/09/gdocbackup-runs-on-mac.html' title='GDocBackup runs on Mac'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8eehAYx2jfE/SrI677WwVQI/AAAAAAAADPg/vJD5iQNS5S0/s72-c/Mac_ScreenShot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8592935759282324951</id><published>2009-08-27T15:16:00.004+02:00</published><updated>2009-08-27T15:48:56.606+02:00</updated><title type='text'>GDocBackup 0.4.1</title><content type='html'>I've released a new version of GDocBackup: 0.4.1.48 &lt;br /&gt;&lt;br /&gt;Download  &lt;a href="http://gs.fhtino.it/gdocbackup"&gt;http://gs.fhtino.it/gdocbackup&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The new version allows you to export the same document in more than one format. Sometimes there are temporary problems with some format on Google Docs servers. So, if one format is broken, perhaps the other one is good.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8eehAYx2jfE/SpaI14eYKYI/AAAAAAAADL4/vtWin1wuQiU/s1600-h/GDocBackup_MultiExport.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 307px;" src="http://4.bp.blogspot.com/_8eehAYx2jfE/SpaI14eYKYI/AAAAAAAADL4/vtWin1wuQiU/s400/GDocBackup_MultiExport.jpg" alt="" id="BLOGGER_PHOTO_ID_5374633664587508098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;There is also a pure command line version. At the moment it's very rudimental. I hope to improve it in the future (feedback appreciated).&lt;br /&gt;&lt;br /&gt;As the previous versions, GDocBackup runs on Windows (+Net) and Linux (+Mono).  Perhaps it runs also on Mac + Mono but I cannot test it. I haven't a Mac.  If you have a Mac, please, test it and send me feedback. Thanks.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8592935759282324951?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8592935759282324951/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8592935759282324951' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8592935759282324951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8592935759282324951'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/08/gdocbackup-041.html' title='GDocBackup 0.4.1'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8eehAYx2jfE/SpaI14eYKYI/AAAAAAAADL4/vtWin1wuQiU/s72-c/GDocBackup_MultiExport.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2944763672415722481</id><published>2009-07-23T07:00:00.011+02:00</published><updated>2009-07-23T08:55:26.540+02:00</updated><title type='text'>Segnalazione: intervista a David Parnas</title><content type='html'>Altra segnalazione, sempre sullo sviluppo software. &amp;nbsp;Una vecchia &lt;a href="http://www.sigsoft.org/SEN/parnas.html"&gt;intervista (1999) a &amp;nbsp;David Parnas&lt;/a&gt;. Da leggere. Un paio di passaggi illuminanti e attualissimi.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Q: What is the most often-overlooked risk in software engineering?&lt;br /&gt;R: Incompetent programmers. There are estimates that the number of programmers needed in the U.S. exceeds 200,000. This is entirely misleading. It is not a quantity problem; we have a quality problem. &lt;b&gt;One bad programmer can easily create two new jobs a year&lt;/b&gt;. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Q: What is the most-repeated mistake in software engineering?&lt;br /&gt;R: People tend to underestimate the difficulty of the task. Overconfidence explains most of the poor software that I see. Doing it right is hard work. &lt;b&gt;Shortcuts lead you in the wrong direction and they often lead to disaster.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2944763672415722481?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2944763672415722481/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2944763672415722481' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2944763672415722481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2944763672415722481'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/07/segnalazione-intervista-david-parnas.html' title='Segnalazione: intervista a David Parnas'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8775919382756292708</id><published>2009-07-21T07:00:00.021+02:00</published><updated>2009-07-22T16:06:06.698+02:00</updated><title type='text'>Segnalazione articolo di Tom DeMarco su IEEE Software</title><content type='html'>Per chi sviluppa software e per chi ha almeno un'idea di massima di cosa sia l'ingegneria del software, questo &lt;a href="http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf"&gt;articolo (pdf)&lt;/a&gt; &amp;nbsp;di Tom DeMarco su IEEE Software è assolutamente da leggere.&lt;br /&gt;&lt;br /&gt;Prima citazione:&lt;br /&gt;&lt;blockquote&gt;"I’m gradually coming to the conclusion that software engineering is an idea whose time has come and gone."&lt;/blockquote&gt;Conclusione:&lt;br /&gt;&lt;blockquote&gt;"Software development is and always will be somewhat experimental. &amp;nbsp;The actual software construction isn’t necessarily experimental, but its conception is. And this is where our focus ought&amp;nbsp;to be. It’s where our focus always ought to have been."&lt;/blockquote&gt;&lt;br /&gt;Si è anche sviluppata una bella discussione su &lt;a href="http://www.codinghorror.com/blog/archives/001288.html"&gt;CodingHorror&lt;/a&gt;. Alcuni commenti sono molto interessanti. Ovviamente non tutti sono d'accordo con DeMarco. &amp;nbsp;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8775919382756292708?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8775919382756292708/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8775919382756292708' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8775919382756292708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8775919382756292708'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/07/segnalazione-articolo-di-tom-demarco-su.html' title='Segnalazione articolo di Tom DeMarco su IEEE Software'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-1683093247441708824</id><published>2009-07-14T09:29:00.000+02:00</published><updated>2009-07-14T09:29:36.060+02:00</updated><title type='text'>OGGI SCIOPERO</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_8eehAYx2jfE/SlwzyDu6NkI/AAAAAAAADEg/IoTYTVZxoIE/s1600-h/sciopero_blog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_8eehAYx2jfE/SlwzyDu6NkI/AAAAAAAADEg/IoTYTVZxoIE/s400/sciopero_blog.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://dirittoallarete.ning.com/"&gt;http://dirittoallarete.ning.com/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-1683093247441708824?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/1683093247441708824/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=1683093247441708824' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1683093247441708824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1683093247441708824'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/07/oggi-sciopero.html' title='OGGI SCIOPERO'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8eehAYx2jfE/SlwzyDu6NkI/AAAAAAAADEg/IoTYTVZxoIE/s72-c/sciopero_blog.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-6089610489587903016</id><published>2009-06-30T18:17:00.005+02:00</published><updated>2009-06-30T18:20:54.780+02:00</updated><title type='text'>GDocBackup DOES run on Linux</title><content type='html'>&lt;div&gt;Many blogs report that GDocBackup is for windows only. It's WRONG!&lt;/div&gt;I don't understand... perhaps it's not so clear reading &lt;a href="http://gs.fhtino.it/gdocbackup"&gt;my web site&lt;/a&gt; but I confirm that GDocBackup RUNS on Linux + Mono (tested on Ubuntu and OpenSuse).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-6089610489587903016?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/6089610489587903016/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=6089610489587903016' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6089610489587903016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6089610489587903016'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/06/gdocbackup-does-run-on-linux.html' title='GDocBackup DOES run on Linux'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4686687565935706653</id><published>2009-06-23T18:47:00.006+02:00</published><updated>2009-07-06T08:11:43.542+02:00</updated><title type='text'>GDocBackup: raggiunti i 1000 download</title><content type='html'>In questi giorni sono apparse alcune recensioni di GDocBackup su alcuni siti web. Il traffico è aumentato di colpo e in 2 giorni ci sono stati quasi 1000 download. In questo momento il totale di download è pari a &lt;b&gt;1070 !&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Update (06/07/2009): download oltre &lt;b&gt;3000&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4686687565935706653?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4686687565935706653/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4686687565935706653' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4686687565935706653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4686687565935706653'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/06/gdocbackup-raggiunti-i-1000-download.html' title='GDocBackup: raggiunti i 1000 download'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2931701837172897830</id><published>2009-06-10T13:15:00.001+02:00</published><updated>2009-06-10T17:49:44.187+02:00</updated><title type='text'>GDocBackup showed during Google IO</title><content type='html'>&lt;div&gt;In the last days, Google has published the videos and slides of all the sessions of the last &lt;a href="http://code.google.com/events/io/"&gt;Google IO&lt;/a&gt; (May 27-28, 2009, San Francisco).  Google IO is the annual developer conference, organized by Google.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.google.com/profiles/118075919496626375791"&gt;Eric Bidelman&lt;/a&gt; (Google developer) showed GDocBackup during the session "&lt;a href="http://code.google.com/events/io/sessions/BuildingApplicationsCloud.html"&gt;Building Applications in the Cloud&lt;/a&gt;". Ok, ok, only 30 seconds during a long session (40 minutes) but, despite of that, I'm very happy and proud!&amp;nbsp;&lt;/div&gt;&lt;div&gt;Eric showed it as an example of application that uses the export functionality of Google Documents List Data APIs and does a local backup. &amp;nbsp;&amp;nbsp;Thank you Eric!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5345676450920740978" src="http://3.bp.blogspot.com/_8eehAYx2jfE/Si-oaNVNOHI/AAAAAAAAC2o/fLjdn6SzOEI/s400/G1.png" style="cursor: hand; cursor: pointer; height: 246px; width: 400px;" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;(Video time: &amp;nbsp;23:02)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;[ Full video:   &lt;a href="http://www.youtube.com/watch?v=zZa6bZmGPYA"&gt;http://www.youtube.com/watch?v=zZa6bZmGPYA&lt;/a&gt;&amp;nbsp;]&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2931701837172897830?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2931701837172897830/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2931701837172897830' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2931701837172897830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2931701837172897830'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/06/gdocbackup-showed-during-google-io.html' title='GDocBackup showed during Google IO'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8eehAYx2jfE/Si-oaNVNOHI/AAAAAAAAC2o/fLjdn6SzOEI/s72-c/G1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-1282540626709848353</id><published>2009-06-09T19:14:00.002+02:00</published><updated>2009-06-09T19:22:00.968+02:00</updated><title type='text'>NSIS + HM NIS Edit</title><content type='html'>Per semplificare l'installazione volevo creare una Setup per &lt;a href="http://gs.fhtino.it/gdocbackup"&gt;GDocBackup&lt;/a&gt;.  Ho fatto un po' di ricerche e molti consigliavano &lt;a href="http://nsis.sourceforge.net/"&gt;NSIS&lt;/a&gt;. Molto potente, gratuito ma.... un po' incasinato.  A me non sembra molto intuitivo come funziona il suo sistema di scripting... boh... sarò un po' tonto.&lt;div&gt;Facendo altre ricerche ho scoperto che esistono alcuni editor per gli script di NSIS. Il più interessante è &lt;a href="http://hmne.sourceforge.net/"&gt;HM NIS Edit&lt;/a&gt;, pure lui gratuito. Per rendere le cose ancora più semplici ha un bel wizard che in pochi passi permette di impostare le caratteristiche principali del pacchetto di setup (nome, versione, ecc.) e i file che lo compongono. In pochi click ecco pronto lo script di setup. Un click sul pulsante di compilazione e l'exe per il setup è pronto.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Adesso, finalmente, c'è un Installer per &lt;a href="http://gs.fhtino.it/gdocbackup"&gt;GDocBackup&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-1282540626709848353?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/1282540626709848353/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=1282540626709848353' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1282540626709848353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1282540626709848353'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/06/nsis-hm-nis-edit.html' title='NSIS + HM NIS Edit'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-1402128653364204483</id><published>2009-05-04T08:05:00.001+02:00</published><updated>2009-05-04T08:07:27.222+02:00</updated><title type='text'>GDocBackup 0.3.0 released</title><content type='html'>GDocBackup is simple utility to backup (export) all your documents from Google Documents to local disk. It's &lt;span style="font-weight: bold;"&gt;open source&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;freeware&lt;/span&gt;.  Requires NET or Mono. Runs on Win or Linux.&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://gs.fhtino.it/gdocbackup"&gt;http://gs.fhtino.it/gdocbackup&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Feedback is welcome   &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-1402128653364204483?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/1402128653364204483/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=1402128653364204483' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1402128653364204483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1402128653364204483'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/05/gdocbackup-030-released.html' title='GDocBackup 0.3.0 released'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-735959898102704412</id><published>2009-04-23T08:33:00.006+02:00</published><updated>2009-04-28T08:30:05.680+02:00</updated><title type='text'>Malware e affini: Vista è più sicuro di XP</title><content type='html'>&lt;div style="text-align: left;"&gt;Recentemente Microsoft ha pubblicato il Security Intelligence Report volume 6.&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.microsoft.com/sir"&gt;http://www.microsoft.com/sir&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;C'è un grafico molto interessante che indica la percentuale di infezioni, o meglio, la percentuale di rimozioni di infezioni eseguite dal Malicious Software Removal Tool di Microsoft divise per sistema operativo (Xp, Vista, Win server).&lt;br /&gt;Il dato più evidente è che le macchine Vista vengono infettate molto meno delle macchine XP. E all'interno dello stesso segmento, versioni più recenti di service pack proteggono maggiormente.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8eehAYx2jfE/SfaiTBe3hkI/AAAAAAAACq0/ZX916Vo-LeQ/s1600-h/SIR1.png"&gt;&lt;img src="http://4.bp.blogspot.com/_8eehAYx2jfE/SfaiTBe3hkI/AAAAAAAACq0/ZX916Vo-LeQ/s400/SIR1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5329625656738678338" style="cursor: pointer; width: 400px; height: 283px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;Importante: il report NON è influenzato dal maggior numero di macchine XP rispetto a quelle Vista.  Vedere il report per i dettagli su come sono stati raccolti ed elaborati i dati.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-735959898102704412?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/735959898102704412/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=735959898102704412' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/735959898102704412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/735959898102704412'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/04/malware-e-affini-vista-e-piu-sicuro-di.html' title='Malware e affini: Vista è più sicuro di XP'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8eehAYx2jfE/SfaiTBe3hkI/AAAAAAAACq0/ZX916Vo-LeQ/s72-c/SIR1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8410995661212350751</id><published>2009-04-15T07:59:00.002+02:00</published><updated>2009-04-15T07:59:48.283+02:00</updated><title type='text'>GDocBackup 0.2.0</title><content type='html'>I've released GDocBackup 0.2.0. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://gs.fhtino.it/gdocbackup"&gt;http://gs.fhtino.it/gdocbackup&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;GDocBackup exports documents from Google Documents to local hard disk. It runs on Windows + NET Frameword and Linux + Mono.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8eehAYx2jfE/SeV3ugJlEEI/AAAAAAAACnk/yTQSSknH4vA/s1600-h/GDocBackup_screenshot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_8eehAYx2jfE/SeV3ugJlEEI/AAAAAAAACnk/yTQSSknH4vA/s400/GDocBackup_screenshot1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8410995661212350751?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8410995661212350751/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8410995661212350751' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8410995661212350751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8410995661212350751'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/04/gdocbackup-020.html' title='GDocBackup 0.2.0'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8eehAYx2jfE/SeV3ugJlEEI/AAAAAAAACnk/yTQSSknH4vA/s72-c/GDocBackup_screenshot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-1122521643279615758</id><published>2009-03-17T15:28:00.013+01:00</published><updated>2009-05-19T21:32:39.012+02:00</updated><title type='text'>Simple Google Documents Backup utility</title><content type='html'>Recently Google Documents List APIs Team &lt;a href="http://googledataapis.blogspot.com/2009/02/start-downloads.html"&gt;released a new version of the API&lt;/a&gt;. Now you can download documents.&lt;br /&gt;Using the new APIs I wrote in .NET a very very simple utility for downloading all my documents. It does a simple backup: for each document in Google Docs, it downloads the document if the document is not present on the local disk or if it was modified.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8eehAYx2jfE/Sb-1ElcXkrI/AAAAAAAACjQ/v0pbQe2IEk4/s1600-h/gdocbackup1.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 271px;" src="http://3.bp.blogspot.com/_8eehAYx2jfE/Sb-1ElcXkrI/AAAAAAAACjQ/v0pbQe2IEk4/s400/gdocbackup1.png" alt="" id="BLOGGER_PHOTO_ID_5314165175695676082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;More info, compiled exe and source code: &lt;a href="http://gs.fhtino.it/gdocbackup"&gt;http://gs.fhtino.it/gdocbackup&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-1122521643279615758?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/1122521643279615758/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=1122521643279615758' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1122521643279615758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1122521643279615758'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/03/simple-google-documents-backup-utility.html' title='Simple Google Documents Backup utility'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8eehAYx2jfE/Sb-1ElcXkrI/AAAAAAAACjQ/v0pbQe2IEk4/s72-c/gdocbackup1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3939128593258079092</id><published>2009-03-09T18:17:00.012+01:00</published><updated>2009-03-13T17:30:17.413+01:00</updated><title type='text'>MySql e Typed Dataset: non ci siamo!</title><content type='html'>Stavo facendo un po' di esperimenti con MySql e Net 2.0 / VS2005 e ho scoperto che i problemi sono ancora tanti. Il Net Connector (MySql.Data.dll) è un buon prodotto se usato a basso livello ma ha ancora problemi se utilizzato con i vari wizard / utility di aiuto di visul studio. Andiamo con ordine.&lt;br /&gt;&lt;br /&gt;La libreria funziona bene se si accetta di scrivere a mano il solito codice tedioso per l'accesso ai dati: creo una connessione, creo un command, gli imposto quello che serve, definisco e carico i parametri, apro la connessione, eseguo, leggo, ecc. ecc. ecc.  Cose del tipo (esempio banale):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;string dbConnString = Properties.Settings.Default.db1;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;using (MySqlConnection dbConn = new MySqlConnection(dbConnString))&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;dbConn.Open();&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;using (MySqlCommand cmd = new MySqlCommand("select * from persone order by Cognome", dbConn))&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;MySqlDataReader reader = cmd.ExecuteReader();&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;while (reader.Read())&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Console.WriteLine("&amp;gt; " + reader["IDpersona"] + "\t " + reader["Cognome"] );&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;reader.Close();&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;dbConn.Close();&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Ma quando uno si rompe le scatole di scrivere queste cose, prova ad usare ad esempio i Typed DataSet. In passato &lt;a href="http://fhtino.blogspot.com/2008/01/typed-dataset-consigli-e-tips.html"&gt;ne avevo già parlato&lt;/a&gt;: con sql 2005 funzionano bene anche se bisogna fare un po' di attenzione.&lt;br /&gt;Oggi ho scoperto, con mio massimo dispiacere, che ci sono dei grossi problemi con MySql. Per ora la conclusione è: non funzionano! Troppi problemi e lacune. Provo a farne una lista:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;non ho trovato un modo per far aggiornare i dati di una datatable dopo l'insert. Caso tipico: un campo ID autoincremento. Dopo l'insert vorrei che l'ID riflettesse il valore assegnato dal motore di database. Con Sql funziona, con MySql no! Boh... spero di trovare una soluzione...&lt;/li&gt;&lt;li&gt;le query autogenerate contengono sempre / spesso (?) il nome del database. Ad esempio invece di avere SELECT ID, Cognome, Nome FROM Persone c'è SELECT ID, Cognome, Nome FROM MyTestDB.Persone.  Quel MyTestDB impedisce di "attaccare" un altro db con la stessa struttura ma nome diverso. Tipico: DBTest, DBProd, ecc.  Bello vero? grrrr...  Mi consola il fatto che sono bug noti &lt;a href="http://bugs.mysql.com/bug.php?id=38922"&gt;(bug1)&lt;/a&gt; &lt;a href="http://bugs.mysql.com/bug.php?id=33870"&gt;(bug2)&lt;/a&gt; . Speriamo...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;i campi autoincremento... non vengono riconosciuti come tali!  Vengono visti come normali interi.  Peggio di così....  Soluzione: impostarli a mano come autoincremento.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;UPDATE 10/03/2009&lt;/b&gt;:  per il problema dell'update dei campi AutoInc dopo l'inserimento bisogna intervenire a mano sul TableAdapter autocreato da VisualStudio. E' necessario inserire la query di select per l'aggiornamento dei dati. Esempio:&lt;br /&gt;&lt;br /&gt;INSERT INTO persone (Cognome, Nome, Eta, IDCitta) VALUES (@Cognome, @Nome, @Eta, @IDCitta); &lt;br /&gt;SELECT IDPersona,Cognome,Nome,Eta,IDCitta FROM persone WHERE (IDPersona = LAST_INSERT_ID());&lt;br /&gt;&lt;br /&gt;Stesso discorso per il nome del database: bisogna toglierlo a mano.&lt;br /&gt;Attenzione: non modificare il TableAdapter con il suo wizard (tasto destro "Configure..."). Le query di Insert, Update e Delete verrebbero rigenerate con la conseguente perdita di tutte le modifiche fatte a mano.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;b&gt;UPDATE 13/03/2009&lt;/b&gt;:&amp;nbsp; soluzione al problema dei campi autoincremento non riconosciuti. Non è un problema del Net Connector ma di una caratteristica di documentata su &lt;a href="http://msdn.microsoft.com/en-us/library/229sz0y5.aspx"&gt;MSDN del metodo DataAdapter.FillSchema()&lt;/a&gt;. In pratica il campo per essere mappato correttamente come autoincremento deve essere di tipo Signed Int. Nei test che ho fatto io, il campo sul database MySql era INT UNSIGNED. In queste condizioni il designer di Visual Studio non era in grado di impostare in modo corretto la proprietà di autoincremento. E' bastato modificare il database mysql togliendo unsigned al campo.&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3939128593258079092?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3939128593258079092/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3939128593258079092' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3939128593258079092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3939128593258079092'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/03/mysql-e-typed-dataset-non-ci-siamo.html' title='MySql e Typed Dataset: non ci siamo!'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-1946154708763951073</id><published>2009-03-09T11:50:00.001+01:00</published><updated>2009-03-09T11:52:08.732+01:00</updated><title type='text'>VmWare player rete lenta</title><content type='html'>[Post... a futura memoria]&lt;br /&gt;&lt;br /&gt;Rete lenta fra sistema operativo host e guest? Decine di minuti per copiare qualche file via SMB/Samba?  Il sistema host è un Windows?  Soluzione: disabilitare il TCP Task Offloading. Per me ha funzionato.&lt;br /&gt;&lt;br /&gt;Sembra che il problema sia presente anche in altri ambienti di virtualizzazione, come Virtual Server 2005. O meglio, non è un problema di VmWare o Virtual Server ma di Windows che non si comporta bene con i sistemi "ospiti".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Con Regedit aggiungere, se non presente, la entry DisableTaskOffload valorizzandola a 1 (dword).&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;   1. Click Start, click Run, type regedit, and then click OK.&lt;br /&gt;   2. Locate and then click the following registry subkey:&lt;br /&gt;      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters&lt;br /&gt;   3. Click Edit, point to New, and then click DWORD Value.&lt;br /&gt;   4. Type DisableTaskOffload as the entry name, and then press ENTER.&lt;br /&gt;   5. Right-click DisableTaskOffload, and then click Modify.&lt;br /&gt;   6. In the Value data box, type a value of 1, and then click OK.&lt;br /&gt;   7. Quit Registry Editor.&lt;br /&gt;   8. Restart your computer.&lt;/blockquote&gt;&lt;br /&gt;From:  &lt;a href="http://support.microsoft.com/kb/888750"&gt;http://support.microsoft.com/kb/888750&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-1946154708763951073?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/1946154708763951073/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=1946154708763951073' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1946154708763951073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1946154708763951073'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/03/vmware-player-rete-lenta.html' title='VmWare player rete lenta'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2215463861866441451</id><published>2009-03-06T18:30:00.001+01:00</published><updated>2009-03-06T18:30:00.413+01:00</updated><title type='text'>Google Documents List Data api e proxy</title><content type='html'>Stavo facendo un po' di prove con la nuova versione delle &lt;a href="http://code.google.com/apis/documents/"&gt;Google Documents List Data Api&lt;/a&gt; per .Net. Nella nuova versione è possibile anche scaricare i documenti da Google Docs in vari formati (Pdf, html, ecc.). Un bel&amp;nbsp; &lt;a href="http://googledataapis.blogspot.com/2009/02/start-downloads.html"&gt;post sul blog ufficiale&lt;/a&gt; di Google fornisce anche i link al codice sorgente di esempio.&lt;br /&gt;&lt;br /&gt;Ho scaricato il tutto e funziona perfettamente. Potrebbero però esserci dei problemi se c'è di mezzo un proxy. La libreria .NET di Google utilizza WebRequest e WebResponse del framework NET. Le 2 classi tendono ad utilizzare il proxy impostato in Internet Explorer.&amp;nbsp; Non ho però trovato il modo per accedere alle istanze di queste classi. Ma c'è un altro modo: passare attraverso la proprietà Proxy di GDataRequestFactory.&lt;br /&gt;&lt;br /&gt;Ad esempio, se si vuole usare una connessione diretta, senza usare il proxy impostato in Internet Explorer basta aggiungere un paio di righe:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;... SNIP ...&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;this.request = new DocumentsRequest(settings);&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;this.Text = "Successfully logged in";&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; color: #cc0000; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;GDataRequestFactory reqFact = this.request.Service.RequestFactory as GDataRequestFactory;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; color: #cc0000; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;reqFact.Proxy = new WebProxy();&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Feed&amp;lt;Document&amp;gt; feed = this.request.GetEverything();&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;// this takes care of paging the results in&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;foreach (Document entry in feed.Entries)&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; all.Add(entry);&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="background-color: #cfe2f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;... SNIP ...&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;La classe Webproxy è quella del framework NET. Vedere MSDN per i dettagli su come usarla.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2215463861866441451?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2215463861866441451/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2215463861866441451' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2215463861866441451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2215463861866441451'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/03/google-documents-list-data-api-e-proxy.html' title='Google Documents List Data api e proxy'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3576679901316180163</id><published>2009-03-05T22:00:00.023+01:00</published><updated>2009-03-06T16:37:26.913+01:00</updated><title type='text'>SuseStudio prime impressioni</title><content type='html'>Qualche settimana fa ho scroperto per caso &lt;a href="http://susestudio.com/"&gt;SuseStudio&lt;/a&gt;. Si tratta di un servizio di OpenSuse (by Novell) che permette di creare macchine virtuali Linux completamente online. Dopo averla configurata è possibile scaricarla come immagine raw per disco (anche usb) oppure immagine iso per cd live oppure come macchina virtuale VmWare.&lt;br /&gt;&lt;br /&gt;Provato... funziona!&amp;nbsp;&amp;nbsp; Ho messo quello che mi interessava, fatto build, scaricato uno zip di 500 MB con dentro una machine virtuale da 1 GB e run in VmWare Player. Tutto OK. Vabbè... per ora sono le prima prove... prima o poi salterà fuori qualcosa che non funziona.&amp;nbsp; Alla fine dei conti SuseStudio è un servizio ancora in Alpha.&lt;br /&gt;&lt;br /&gt;Ultima nota: l'accesso non è immediato. Bisogna farne richiesta e dopo un po' di giorni dovrebbe arrivare il codice di invito. Buona fortuna.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Home&amp;nbsp;page:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_8eehAYx2jfE/SbDbH2fUtVI/AAAAAAAACec/Q3FAIxh4lNg/s1600-h/susestudio1.png"&gt;&lt;img src="http://2.bp.blogspot.com/_8eehAYx2jfE/SbDbH2fUtVI/AAAAAAAACec/Q3FAIxh4lNg/s400/susestudio1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Scelta dei pacchetti da installare:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8eehAYx2jfE/SbDbNGQYVrI/AAAAAAAACek/vEt32uC_o-8/s1600-h/susestudio2.png"&gt;&lt;img src="http://3.bp.blogspot.com/_8eehAYx2jfE/SbDbNGQYVrI/AAAAAAAACek/vEt32uC_o-8/s400/susestudio2.png" style="cursor: move;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Creazione immagine (disco, cd live, vmware):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8eehAYx2jfE/SbDbQHWY0II/AAAAAAAACes/nXcHFcrlT6A/s1600-h/susestudio3.png"&gt;&lt;img src="http://3.bp.blogspot.com/_8eehAYx2jfE/SbDbQHWY0II/AAAAAAAACes/nXcHFcrlT6A/s400/susestudio3.png" style="cursor: move;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Wiki:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8eehAYx2jfE/SbDbT8218iI/AAAAAAAACe0/olPruhZVA20/s1600-h/susestudio4.png"&gt;&lt;img src="http://3.bp.blogspot.com/_8eehAYx2jfE/SbDbT8218iI/AAAAAAAACe0/olPruhZVA20/s400/susestudio4.png" style="cursor: move;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3576679901316180163?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3576679901316180163/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3576679901316180163' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3576679901316180163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3576679901316180163'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/03/susestudio-prime-impressioni.html' title='SuseStudio prime impressioni'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8eehAYx2jfE/SbDbH2fUtVI/AAAAAAAACec/Q3FAIxh4lNg/s72-c/susestudio1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3552577163621249119</id><published>2009-03-03T07:02:00.003+01:00</published><updated>2009-06-30T07:46:30.065+02:00</updated><title type='text'>LAMA: Linux, Apache, MySql, Asp.Net</title><content type='html'>Questa sigla mi mancava: lo stack LAMA = Linux, Apache, MySql, Asp.Net.  Conoscevo LAMP ma LAMA mi mancava.&lt;br /&gt;Comunque confermo che funziona. Proprio in questi giorni sto facendo un po' di test con Mono ed effettivamente funziona molto bene. Per prova ho preso un'applicazione asp.net compilata e l'ho messa su Ubuntu con tutto il necessario (a parte Sql Express) e ha funzionato.&lt;br /&gt;A questo punto mi rimane solo MySql.&lt;br /&gt;&lt;br /&gt;Un paio di link interessanti:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dotheweb.net/lama/"&gt;http://www.dotheweb.net/lama/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.aspnetpro.com/features/2009/02/asp200902op_f/asp200902op_f.htm"&gt;http://www.aspnetpro.com/features/2009/02/asp200902op_f/asp200902op_f.htm&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3552577163621249119?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3552577163621249119/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3552577163621249119' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3552577163621249119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3552577163621249119'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/03/lama-linux-apache-mysql-aspnet.html' title='LAMA: Linux, Apache, MySql, Asp.Net'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2601470757072266741</id><published>2009-02-26T20:55:00.001+01:00</published><updated>2009-02-26T20:59:17.936+01:00</updated><title type='text'>Asp.net, Mono, Apache e Ubuntu</title><content type='html'>Primi test per far girare Asp.net su Ubuntu con Mono e Apache.&lt;br /&gt;&lt;br /&gt;Pagina foo.aspx.&amp;nbsp;&amp;nbsp; Risultato: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_8eehAYx2jfE/Sab0dMIBILI/AAAAAAAACZ8/wWuVwZuNbto/s1600-h/MonoUbuntu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_8eehAYx2jfE/Sab0dMIBILI/AAAAAAAACZ8/wWuVwZuNbto/s400/MonoUbuntu.png" style="cursor: move;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Html pagina:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;CIAO&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;DateTime: &amp;lt;%=DateTime.Now.ToString()%&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;Environment.Version: &amp;lt;%=Environment.Version.ToString()%&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;Environment.OSVersion: &amp;lt;%=System.Environment.OSVersion.ToString()%&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;%=Server.MapPath("~/")%&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2601470757072266741?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2601470757072266741/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2601470757072266741' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2601470757072266741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2601470757072266741'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/02/aspnet-mono-apache-e-ubuntu.html' title='Asp.net, Mono, Apache e Ubuntu'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8eehAYx2jfE/Sab0dMIBILI/AAAAAAAACZ8/wWuVwZuNbto/s72-c/MonoUbuntu.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7483384843605385007</id><published>2009-01-29T22:09:00.011+01:00</published><updated>2009-02-20T11:51:27.792+01:00</updated><title type='text'>Asp.Net  - Login failed for user 'NT AUTHORITY\NETWORK SERVICE'</title><content type='html'>NT AUTHORITY\NETWORK SERVICE è l'utente di default usato da IIS6 per l'esecuzione degli Application Pool. Le pagine asp.net girano nel contesto di tale utente.&lt;br /&gt;Quindi le connessioni verso sql server, se viene usata Integrated Secutiry, avvengono con le credenziali di NETWORK SERVICE.&lt;br /&gt;Affinchè l'autenticazione vada a buon fine, l'utente NETWORK SERVICE deve essere riconosciuto da sql server e deve avere accesso al db in questione.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Paginetta di test abc.aspx:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&amp;lt;%@ Page Language="C#"&amp;nbsp; %&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;Connection Test: &amp;lt;%=DateTime.Now.ToString()%&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&amp;lt;%&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("data source=localhost;integrated security=sspi;database=northwind");&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;conn.Open();&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;conn.Close();&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;L'errore che normalmente si incontra è: &lt;br /&gt;&lt;div style="color: #cc0000;"&gt;Login failed for user 'NT AUTHORITY\NETWORK SERVICE'&lt;/div&gt;&lt;br /&gt;Significato: l'utente non è in grado di autenticarsi sul sql server (utente sconosciuto, password errata, ecc.).&lt;br /&gt;&lt;br /&gt;E' necessario aggiungere l'utente a sql server in modo che possa essere riconosciuto.&lt;br /&gt;&lt;br /&gt;SqlServer Management Studio&lt;br /&gt;&amp;nbsp;- Security&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Logins&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - New Login&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Login Name --&amp;gt; Search - cercare 'NT AUTHORITY\NETWORK SERVICE' fra gli utenti locali&lt;br /&gt;&lt;br /&gt;A questo punto l'utente è presenta nella lista dei login di Sql Server. Riprovando a connettersi dovrebbe apparire un messaggio di errore un po' diverso:&lt;br /&gt;&lt;div style="color: #cc0000;"&gt;Cannot open database "northwind" requested by the login. The login failed.&lt;/div&gt;&lt;span style="color: #cc0000;"&gt;Login failed for user 'NT AUTHORITY\NETWORK SERVICE'&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;E' necessario abilitare l'utente NetworkService alla lettura e scrittura dei dati sul DB (nel nostro esempio northwind).&lt;br /&gt;&lt;br /&gt;&amp;nbsp;- tasto destro su 'NT AUTHORITY\NETWORK SERVICE'&lt;br /&gt;&amp;nbsp;- selezionare UserMapping&lt;br /&gt;&amp;nbsp;- selezionare il DB (ad esempio NorthWind) nella tabella superiore&lt;br /&gt;&amp;nbsp;- attivare db_datareader e db_datawriter nella tabella inferiore&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A questo punto la connessione dovrebbe andare a buon fine e dovrebbe essere possibile eseguire le operazioni classiche su db (select,&amp;nbsp; update, delete, insert).&amp;nbsp; Se fosse necessario eseguire operazioni più di alto livello, tipo drop table e similari, sarà necessario assegnare all'utente privilegi più elevati.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nota:&amp;nbsp; &lt;br /&gt;Integrated Security=True oppure Integrated Security=SSPI ?&lt;br /&gt;(AFAIK) Sembra che l'opzione true possa essere usata solo con NETSQLClient mentre non sia valida con OleDB. Boh... da quello che si legge in giro sembra che sia consigliato SSPI&amp;nbsp; (personalmente uso sempre SSPI).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7483384843605385007?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7483384843605385007/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7483384843605385007' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7483384843605385007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7483384843605385007'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/01/aspnet-login-failed-for-user-nt.html' title='Asp.Net  - Login failed for user &apos;NT AUTHORITY\NETWORK SERVICE&apos;'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4650973830315001285</id><published>2009-01-23T07:30:00.000+01:00</published><updated>2009-01-23T10:37:12.726+01:00</updated><title type='text'>Microsoft e Sun tagliano posti di lavoro</title><content type='html'>Ieri la notizia: Microsoft taglia 5000 posti di lavoro. Vari TG nazionali riportano la notizia.&lt;br /&gt;E' invece passata più in sordina la notizia che anche &lt;a href="http://www.theregister.co.uk/2009/01/23/sun_first_cuts/"&gt;Sun è sulla stessa strada: 1300 licenziamenti&lt;/a&gt;.&lt;br /&gt;Se guardiamo ai numeri assoluti il taglio in&amp;nbsp; Microsoft è più consistente: 5000 contro 1300. Ma se guardiamo alle percentuali sul totale dei dipendenti, è messa peggio Sun: 20% contro il 5% di Microsoft.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.theregister.co.uk/2009/01/23/sun_first_cuts/"&gt;TheRegister&lt;/a&gt; sostiene che il taglio in Sun è soprattutto nel settore open source.Vedremo che cosa vorrà dire per Java OpenJdk e soprattutto per OpenSolaris.&lt;br /&gt;Sul fronte Microsoft sempre &lt;a href="http://www.theregister.co.uk/2009/01/23/microsoft_job_cuts_analysis/"&gt;TheRegister&lt;/a&gt; sostiene che la versione ufficiale parla di tagli in aree di staff (marketing, sales, finance, legal, ecc.) ma sembra ci saranno taglia anche nell'area "online": Live, MSN, ecc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4650973830315001285?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4650973830315001285/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4650973830315001285' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4650973830315001285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4650973830315001285'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/01/microsoft-e-sun-tagliano-posti-di.html' title='Microsoft e Sun tagliano posti di lavoro'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7133131060393213471</id><published>2009-01-07T19:18:00.002+01:00</published><updated>2009-01-07T19:42:22.768+01:00</updated><title type='text'>Segnalazione:  MS Database Publishing Wizard</title><content type='html'>Piccola segnalazione, per chi non conoscesse questo tool: Microsoft Database Publishing Wizard&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.codeplex.com/sqlhost/"&gt;http://www.codeplex.com/sqlhost/&lt;/a&gt;&lt;br /&gt;Con pochissimi click di mouse è possibile creare uno script Sql con tutti o parte degli oggetti di un DB (tabelle, relazioni, indici, ecc.). Volendo si possono inserire in script anche i dati.&lt;br /&gt;Con lo script sarò quindi possibile ricreare il DB, volendo anche con i dati. Molto utile.&lt;br /&gt;&lt;br /&gt;Il tool è eseguibile anche alla riga di comando. Ad esempio:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SqlPubWiz.exe script -f -C "Data Source=.\sqlexpress;Initial Catalog=Tests;Integrated Security=True" -schemaonly  c:\temp\out.sql&lt;/li&gt;&lt;/ul&gt;crea lo script con solo lo schema. Togliere -schemaonly per avere anche i dati.&lt;br /&gt;&lt;br /&gt;Un'altra cosa molto utile: lo script contiene all'inizio anche le Drop Table per rimuovere le tabelle nel caso esistessero già sul DB target (ovviamente si può disabilitare la creazione delle Drop).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7133131060393213471?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7133131060393213471/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7133131060393213471' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7133131060393213471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7133131060393213471'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2009/01/segnalazione-ms-database-publishing.html' title='Segnalazione:  MS Database Publishing Wizard'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4924320115366080576</id><published>2008-12-30T09:54:00.000+01:00</published><updated>2008-12-30T09:59:06.388+01:00</updated><title type='text'>Easy Vmx</title><content type='html'>Ecco un bel servizio per creare macchine virtuali &lt;b&gt;vuote &lt;/b&gt;per Vmware:&amp;nbsp; &lt;a href="http://www.easyvmx.com/"&gt;http://www.easyvmx.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se hai vmware player e vuoi installare una nuova macchina virtuale, ti serve la coppia Vmx (macchine virtuale) + Vmdk (disco virtuale). Ma con vmware player non è possibile creare nuove macchine virtuali. Con il servizio EasyVmx puoi crearti la macchina virtuale che ti serve. Ovviamente &lt;b&gt;vuota&lt;/b&gt;! Il sistema operativo te lo devi installare tu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4924320115366080576?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4924320115366080576/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4924320115366080576' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4924320115366080576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4924320115366080576'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/12/easy-vmx.html' title='Easy Vmx'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7122793656530215214</id><published>2008-12-22T20:10:00.001+01:00</published><updated>2008-12-23T16:22:05.727+01:00</updated><title type='text'>Link:  SQL Server 2005 Backups</title><content type='html'>Ecco un bell'articolo sulle varie possibilità di backup in sql 2005:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.simple-talk.com/content/article.aspx?article=322"&gt; http://www.simple-talk.com/content/article.aspx?article=322&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tra le altre cose è descritta molto bene l'opzione COPY_ONLY. Da leggere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7122793656530215214?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7122793656530215214/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7122793656530215214' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7122793656530215214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7122793656530215214'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/12/link-sql-server-2005-backups.html' title='Link:  SQL Server 2005 Backups'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5510484425058538145</id><published>2008-11-21T21:44:00.003+01:00</published><updated>2008-11-21T22:01:13.505+01:00</updated><title type='text'>System.Web.UI.WebControls.Parameter ..... DbType !</title><content type='html'>SFOGO!&lt;br /&gt;&lt;br /&gt;Ma porca la put...a! E' mai possibile sapere le cose in modo semplice senza diventare matti con Reflector, pezzi di blog e ammenicoli vari?!?!?&lt;br /&gt;&lt;br /&gt;Iniziamo: ambiente di sviluppo VS2005 su Vista. Un bel SqlDataSource su pagina asp.net e un po' di parametri di update ed insert. Niente di strano. Incomiciano le cose strane. Una proprità nuova... non la ricordavo... DbType sui parametri. Qualche problema con le date e poi funziona tutto. Ho un po' di fretta e non indago troppo (mannaggia a me!).&lt;br /&gt;&lt;br /&gt;Dopo un po' di giorni, faccio un deploy su Win2003 server. E mi becco subito un bel errore:&lt;br /&gt;   &lt;span style="color: rgb(153, 0, 0);"&gt;Type 'System.Web.UI.WebControls.Parameter' does not have a public property named 'DbType'.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ma come è possibile? Net 2.0 su Vista, Net 2.0 in Win2003... boh! Dopo un po' di prove mia affido a Reflector e sorpresa: la classe System.Web.UI.WebControls.Parameter su Vista è diversa dalla classe System.Web.UI.WebControls.Parameter su Win2003. C'è una proprietà in più: DbType. Ovviamente ci sono anche i vari costruttori per poterla gestire.&lt;br /&gt;Cerca, cerca, cerca e su MSDN, alla pagina  &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.parameter.dbtype.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.parameter.dbtype.aspx&lt;/a&gt; al fondo mi casca l'occhio su una cosa strana:&lt;br /&gt;    &lt;i&gt;&lt;b&gt;Supported in: 3.5 SP1, 3.0 SP2, 2.0 SP2&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Ma da quando c'è Net 2.0 Sp2?  Mi sono perso qualcosa? Sembrerebbe di si... ma... cercando ancora su Google viene fuori che Net 2.0 Sp2 non esiste come pacchetto a se stante ma viene installato da... Net 3.5 SP1!  Ma porca la put....!&lt;br /&gt;&lt;br /&gt;Fine dello sfogo!&lt;br /&gt;&lt;br /&gt;PS: ok, è anche colpa mia... nella fretta non ho indagato sul quel parametro DbType... avrei dovuto farlo. Mea culpa!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5510484425058538145?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5510484425058538145/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5510484425058538145' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5510484425058538145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5510484425058538145'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/11/systemwebuiwebcontrolsparameter-dbtype.html' title='System.Web.UI.WebControls.Parameter ..... DbType !'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-6050202722066887966</id><published>2008-10-24T20:19:00.002+02:00</published><updated>2008-10-24T20:36:55.598+02:00</updated><title type='text'>Pdf2AfpLib - alpha release</title><content type='html'>I've released on SourceForge the alpha version of Pdf2AfpLib.&amp;nbsp; &lt;a href="http://sourceforge.net/projects/pdf2afplib/"&gt;http://sourceforge.net/projects/pdf2afplib/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pdf2AfpLib is a library for converting Pdf files to Afp files. It's written in C# and uses &lt;a href="http://www.ghostscript.com/"&gt;Ghostscript&lt;/a&gt; for a part of the conversion process. At the moment it generates &lt;b&gt;only black and white Afp files&lt;/b&gt;. No gray scale, no color.&lt;br /&gt;Important: all the content is rasterized. In the resulting afp file, every page contains only one big image that completely covers the page.&lt;br /&gt;&lt;br /&gt;The conversion runs through 2 steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pdf is converted to tiff G3 files using Ghostscript. One tiff for each page.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tiff are parsed and the image content is imported as an IOCA image in the output afp.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8eehAYx2jfE/SQIVA_tDsmI/AAAAAAAABsM/DhtyGsykrFI/s1600-h/Pdf2AfpLib_Schema.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_8eehAYx2jfE/SQIVA_tDsmI/AAAAAAAABsM/ip9rAnXkuzA/s400-R/Pdf2AfpLib_Schema.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At the moment you can download the source code only from the Subversion repository on SourceForge.&lt;br /&gt;Repository URL:&amp;nbsp; &lt;a href="https://pdf2afplib.svn.sourceforge.net/svnroot/pdf2afplib/"&gt;https://pdf2afplib.svn.sourceforge.net/svnroot/pdf2afplib/&lt;/a&gt;&lt;br /&gt;If you want to browse it:&amp;nbsp; &lt;a href="http://pdf2afplib.svn.sourceforge.net/viewvc/pdf2afplib/trunk/"&gt;http://pdf2afplib.svn.sourceforge.net/viewvc/pdf2afplib/trunk/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-6050202722066887966?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/6050202722066887966/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=6050202722066887966' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6050202722066887966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6050202722066887966'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/10/pdf2afplib-alpha-release.html' title='Pdf2AfpLib - alpha release'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8eehAYx2jfE/SQIVA_tDsmI/AAAAAAAABsM/ip9rAnXkuzA/s72-Rc/Pdf2AfpLib_Schema.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3143306843280403624</id><published>2008-10-12T14:06:00.000+02:00</published><updated>2008-10-12T14:08:41.609+02:00</updated><title type='text'>IEC16022Sharp 0.3.6.0</title><content type='html'>Iec16022Sharp 0.3.6.0 released.&lt;br /&gt;&lt;br /&gt;Added HexPbm output support&amp;nbsp; (by Andrew Francis) &lt;br /&gt;&lt;br /&gt;https://sourceforge.net/projects/iec16022sharp/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3143306843280403624?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3143306843280403624/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3143306843280403624' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3143306843280403624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3143306843280403624'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/10/iec16022sharp-0360.html' title='IEC16022Sharp 0.3.6.0'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2196723677975164591</id><published>2008-08-21T12:26:00.000+02:00</published><updated>2008-08-21T12:29:43.862+02:00</updated><title type='text'>Post di Rick Strahl su Asp.Net</title><content type='html'>Un bel post di Rick Strahl su Asp.Net e sulla politica di Microsoft. Molto lungo ma molto interessante. Da leggere.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://west-wind.com/weblog/posts/453551.aspx"&gt;http://west-wind.com/weblog/posts/453551.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2196723677975164591?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2196723677975164591/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2196723677975164591' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2196723677975164591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2196723677975164591'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/08/post-di-rick-strahl-su-aspnet.html' title='Post di Rick Strahl su Asp.Net'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-810579643649064500</id><published>2008-07-15T07:45:00.000+02:00</published><updated>2008-07-15T14:47:11.623+02:00</updated><title type='text'>Normalizzazione di database</title><content type='html'>&lt;i&gt;Questo post è dedicato a Guerrino.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Non voglio scrivere l'ennesimo post sulla denormalizzazione dei database. L'argomento è ampiamente trattato da esperti e guru. Un giro con Google e si trovano centinaia di voci. Voglio comunque segnalare il recente articolo di Jeff Atwood &lt;a href="http://www.codinghorror.com/blog/archives/001152.html"&gt;Maybe Normalizing Isn't Normal&lt;/a&gt;. Merita una lettura attenta. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ci tenevo invece a riportare un paio di frasi ad effetto di &lt;a href="http://blogs.msdn.com/pathelland/archive/2007/07/23/normalization-is-for-sissies.aspx"&gt;Pat Helland&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;div style="text-align: center;"&gt;"Normalization is for Sissies"&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;"People normalize because their professor said to"&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp; &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;La prima è una provocazione. La seconda invece ci dovrebbe far pensare..... quante volte si fanno le cose in un certo modo perchè qualcuno di "autorevole" (o autoritario?) ci ha detto che così si deve fare?&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;PS: non sono un fan sfegatato della denormalizzazione. Anzi ritengo che i casi in cui la si possa o debba applicare in modo massiccio sono realmente pochi. D'altra parte non sono neanche un sostenitore della normalizzazione a tutti i costi. In un futuro post (tempo permettendo) cercherò di fare la mia list di tips sull'argomento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-810579643649064500?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/810579643649064500/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=810579643649064500' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/810579643649064500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/810579643649064500'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/07/normalizzazione-di-database.html' title='Normalizzazione di database'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-829644734279503219</id><published>2008-07-10T08:41:00.003+02:00</published><updated>2008-07-10T10:32:00.239+02:00</updated><title type='text'>Bug generalizzato - DNS cache poisoning</title><content type='html'>In questi giorni sono state rilasciate varie patch da molti grossi nomi: Microsoft, Cisco, Sun, ecc.&lt;br /&gt;Le patch correggono un bug nell'implementazione e, se ho capito bene, nell'uso dei server DNS. Lo scopritore del problema è Dan Kaminsky che sul suo blog ha pubblicato un interessante articolo in cui racconta lo sforzo congiunto di vari produttori per far fronte al problema:&amp;nbsp; &amp;nbsp;&lt;a href="http://www.doxpara.com/?p=1162"&gt;http://www.doxpara.com/?p=1162&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Per i dettagli tecnici, vedere l'articolo su CERT:&amp;nbsp; &lt;a href="http://www.kb.cert.org/vuls/id/800113"&gt;http://www.kb.cert.org/vuls/id/800113&lt;/a&gt;&lt;br /&gt;Sempre nell'articolo del CERT è presente la lista dei sistemi coinvolti. Praticamente tutti, in varie forme:Microsoft, Cisco, Sun, Debian, RedHat, ecc. Altri sono ancora Unknown. Vedremo che cosa succederà nei prossimi giorni.&lt;br /&gt;&lt;br /&gt;Molti dettagli tecnici sono presenti anche sul Advisory di Cisco:&amp;nbsp; &lt;a href="http://www.cisco.com/en/US/products/products_security_advisory09186a00809c2168.shtml"&gt;http://www.cisco.com/en/US/products/products_security_advisory09186a00809c2168.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;C'è però una cosa che non mi è ancora chiara: lo stato di Debian. Leggendo i vari avvisi presenti sul loro sito sembra che il problema su BIND sia stato risolto ma non quello "lato client". Vedi&amp;nbsp; &lt;a href="http://www.debian.org/security/2008/dsa-1605"&gt;http://www.debian.org/security/2008/dsa-1605&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ad oggi, l'unico sistema ad ampia diffusione che sembra immune dal problema è Vista (almeno stando al &lt;a href="http://www.microsoft.com/technet/security/bulletin/ms08-037.mspx"&gt;bollettino di Microsoft&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UPDATE1: la cosa simpatica (si fa per dire) è che sembra che il problema fosse già stato evidenziato ben 3 anni addietro.&amp;nbsp; Ecco il documento su SANS: &lt;a href="http://www.sans.org/reading_room/whitepapers/dns/1567.php"&gt;http://www.sans.org/reading_room/whitepapers/dns/1567.php&lt;/a&gt;&lt;br /&gt;Il documento è molto interessante perchè spiega nel dettaglio come avviene l'attaco. Si tratta di un classico attacco "Man in the middle". Come client viene usato Windows XP ma, come abbiamo visto in questi giorni, il problema è generalizzato.&lt;br /&gt;&lt;br /&gt;UPDATE2: altro post molto interessante:&lt;br /&gt;&lt;a href="http://blog.netherlabs.nl/articles/2008/07/09/some-thoughts-on-the-recent-dns-vulnerability"&gt;http://blog.netherlabs.nl/articles/2008/07/09/some-thoughts-on-the-recent-dns-vulnerability&lt;/a&gt;&lt;br /&gt;Bert Hubert, l'autore, oltre a sostenere che il problema fosse noto dal 1999, fa anche alcune interessanti riflessioni sul DNS in se e su come certi enti non siano stati in gradi di reagire per tempo. Molto interessante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-829644734279503219?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/829644734279503219/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=829644734279503219' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/829644734279503219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/829644734279503219'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/07/bug-generalizzato-dns-cache-poisoning.html' title='Bug generalizzato - DNS cache poisoning'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5606630186383710967</id><published>2008-07-03T07:10:00.000+02:00</published><updated>2008-07-03T15:00:39.023+02:00</updated><title type='text'>Sicurezza Home Banking</title><content type='html'>Mi stavo chiedendo perchè più di una banca online non "copra" tutto il sito, pagina del form di login compresa, con https. Cercando con Google sono capitato su un &lt;a href="http://blogs.ugidotnet.org/raffaele/archive/2006/04/27/39537.aspx"&gt;post del 2006 di Raffaele Rialdi&lt;/a&gt;.&amp;nbsp; Sono passati gli anni e nulla è cambiato.&lt;br /&gt;Ma le strutture tecniche che si occupano di web in queste banche, fanno finta di&amp;nbsp; niente oppure non capiscono neanche quale sia il problema?&lt;br /&gt;&lt;br /&gt;La cosa è ancora più buffa (per non dire altro) se confrontata con il &lt;a href="http://www.abi.it/doc/home/prodottiServizi/tecnologie/doc/tmp1120233228212_2Phishing.pdf"&gt;decalogo dell'ABI&lt;/a&gt; (Associazione Bancaria Italiana). A pagina 6, al fondo, si legge:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;6. Quando inserite dati riservati in una pagina web, assicuratevi che si tratti di una pagina protetta: queste pagine sono riconoscibili in quanto l’indirizzo che compare nella barra degli indirizzi del browser comincia con “https://” e non con “http://” e nella parte in basso a destra della pagina è presente un lucchetto. &lt;/i&gt;&lt;/blockquote&gt;Stesso concetto è ribadito sempre dall'ABI in un &lt;a href="http://www.abi.it/doc/home/attivitaOpinioniABI/comunicatiNoteStampa/doc/tmp1188205391431_7AbiLab_consigliSicurezza_6_8_2007.pdf"&gt;comunicato stampa del 6 agosto 2007&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;Verifica l’autenticità della connessione con la tua banca, controllando con attenzione il nome del sito nella barra di navigazione. Se è presente, “clicca” due volte sull’icona del lucchetto (o della chiave) in basso a destra nella finestra di navigazione e verifica la correttezza dei dati che vengono visualizzati.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;Che dire? Speriamo che prima o poi certe banche decidano di leggere i decaloghi e i comunicati stampa della loro associazione, l'ABI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5606630186383710967?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5606630186383710967/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5606630186383710967' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5606630186383710967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5606630186383710967'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/07/sicurezza-home-banking.html' title='Sicurezza Home Banking'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-377364024087096570</id><published>2008-07-03T07:00:00.000+02:00</published><updated>2008-07-03T10:41:16.691+02:00</updated><title type='text'>Firefox lento con Asp.net Development Server</title><content type='html'>A futura memoria!&lt;br /&gt;&lt;br /&gt;Firefox è particolarmente lento quando lo si usa per navigare un sito in sviluppo sotto Visual Studio 2005.&lt;br /&gt;Quest'ultimo utilizza un piccolo web server interno per mostrare il sito: Asp.net Development Server (webdev.webserver.exe). Personalmente ho riscontrato il problema con Vista Business.&lt;br /&gt;&lt;br /&gt;Soluzione: modificae un parametro di configurazione di Firefox.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;about:config&lt;/li&gt;&lt;li&gt;impostare network.dns.disableIPv6 a true&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-377364024087096570?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/377364024087096570/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=377364024087096570' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/377364024087096570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/377364024087096570'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/07/firefox-lento-con-aspnet-development.html' title='Firefox lento con Asp.net Development Server'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5864748295624795583</id><published>2008-07-02T07:30:00.005+02:00</published><updated>2008-07-02T08:57:45.862+02:00</updated><title type='text'>Generics in C#: considerazioni dopo tre  anni</title><content type='html'>Secondo me i Generics sono una delle feature più interessanti introdotte in NET 2.0.&amp;nbsp; Ormai sono quasi tre anni che li uso e mi rendo conto che semplificano enormemente la vita. Poter controllore già a compile-time la correttezza dei tipi fa risparmiare molto tempo e mal di testa.&lt;br /&gt;Il primo uso è sicuramente nelle "liste" &amp;amp; affini:&amp;nbsp; poter lavorare con List&amp;lt;MiaClasse&amp;gt;  invece che con ArrayList è tutta un'altra vita. Discorso analogo con Dictionary&amp;lt;A, B&amp;gt;, ecc. &lt;br /&gt;Ci sono poi i delegate e metodi generics. Ad esempio: Comparison&amp;lt;T&amp;gt; , EventHandler&amp;lt;T&amp;gt; , ecc.&amp;nbsp; E Comparer&amp;lt;T&amp;gt;&amp;nbsp;  nei metodi. &lt;br /&gt;&lt;br /&gt;Per chi vuole approfondire il discorso sui generics facendo una comparazione anche con Java e C++ consiglio di leggere:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.artima.com/intv/generics.html"&gt;&lt;span class="ts"&gt;Generics in C#, Java, and C++&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jprl.com/Blog/archive/development/2007/Aug-31.html"&gt;Comparing Java and C# Generics&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5864748295624795583?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5864748295624795583/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5864748295624795583' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5864748295624795583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5864748295624795583'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/07/generics-in-c.html' title='Generics in C#: considerazioni dopo tre  anni'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4399926447382816724</id><published>2008-06-20T09:39:00.005+02:00</published><updated>2008-06-20T09:49:05.858+02:00</updated><title type='text'>Firebug e Firecookie</title><content type='html'>Un paio di tool molto utili per lo sviluppo web: &lt;a href="http://getfirebug.com/"&gt;FireBug&lt;/a&gt; e &lt;a href="http://www.softwareishard.com/blog/firecookie/"&gt;FireCookie&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Il primo è un plugin per Firefox che permette di vedere il codice javascript e scovare bug ed errori (oltre ad altre cose interessanti). Il secondo, FireCookie, è un plugin per FireBug che permette di vedere e modificare i cookie impostati durante la navigazione di un sito.&lt;br /&gt;Entrambo molto utili.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://getfirebug.com/"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_8eehAYx2jfE/SFtfix_6w3I/AAAAAAAAA9E/SmRcn5q9XR8/s400/FireBug_header.png" alt="" id="BLOGGER_PHOTO_ID_5213866044753101682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.softwareishard.com/blog/firecookie/"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_8eehAYx2jfE/SFtgIQjelmI/AAAAAAAAA9U/lH_OiIQsGpQ/s400/firecookie-download.png" alt="" id="BLOGGER_PHOTO_ID_5213866688610473570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4399926447382816724?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4399926447382816724/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4399926447382816724' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4399926447382816724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4399926447382816724'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/06/firebug-e-firecookie.html' title='Firebug e Firecookie'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8eehAYx2jfE/SFtfix_6w3I/AAAAAAAAA9E/SmRcn5q9XR8/s72-c/FireBug_header.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-1275740433274031792</id><published>2008-06-13T11:07:00.002+02:00</published><updated>2008-06-13T11:18:26.720+02:00</updated><title type='text'>Use an internal class from another assembly</title><content type='html'>In big projects many classes has marked as internal. Tipically they are classes for internal activities and nobody needs to reference them from outside the assemply.&lt;br /&gt;&lt;br /&gt;But, when you're developing you need to call them directly for testing/debugging. But... you cannot do that. The classes are internal.&lt;br /&gt;&lt;br /&gt;There is a solution: mark the assembly as "&lt;span style="font-weight: bold;"&gt;friend&lt;/span&gt;" of another.  An example: 2 assembly.  MyLib with namy internal classes. DevTestApp, the test/development application with reference to MyLib. In the MyLib source code add:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("DevTestApp")]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, from DevTestApp you can use public and internal classes from MyLib.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More details:   &lt;a href="http://msdn.microsoft.com/en-us/library/0tke9fxk%28VS.80%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/0tke9fxk(VS.80).aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-1275740433274031792?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/1275740433274031792/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=1275740433274031792' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1275740433274031792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1275740433274031792'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/06/use-internal-class-from-another.html' title='Use an internal class from another assembly'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5613805255828449183</id><published>2008-05-29T11:44:00.009+02:00</published><updated>2008-06-24T16:31:45.737+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>Asp.net "full" compile from Visual Studio</title><content type='html'>Asp.net automatically compiles aspx pages. The code-behind is compiled in different ways dependingif you choose to work with "Asp.Net web application" project or with a "Asp.net web site".&lt;br /&gt;When you work on an aspx in visual studio and you build the project/solution, VS compile the code-behind of the aspx page. But not the code in the aspx itself. The aspnet engine will compile the aspx page the first time it will be requested.&lt;br /&gt;&lt;br /&gt;OK. Fantastic... but.... if you did an error, also a simple syntax error, you'll get evidence of it when you page will run. Not good.  I'd like to do "full compile" to check all the code.&lt;br /&gt;&lt;br /&gt;An example: this code does not work. But Vs2005 does not show any errors.&lt;br /&gt;&lt;br /&gt;&lt;div    style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:10pt;color:black;"&gt;&amp;lt;script runat=&lt;span style="color: rgb(163, 21, 21);"&gt;"server"&lt;/span&gt;&amp;gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;int&lt;/span&gt; Test()&lt;br /&gt;{&lt;br /&gt;&lt;p style="margin: 0px;"&gt;        &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"text"&lt;/span&gt;;&lt;/p&gt;}&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Another example: this code has a syntax error. Met2 is wrong. Met1 is the righe name.  But again vs2005 does not show any errors.&lt;br /&gt;&lt;br /&gt;&lt;div    style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:10pt;color:black;"&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;&amp;lt;%=WebApplication1.&lt;span style="color: rgb(43, 145, 175);"&gt;Class1&lt;/span&gt;.Met2()%&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The only solution I have found is to do a full compile using aspnet_compiler.exe after the build process of Visual Studio. Add the following command in the Post-build event of the project:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$(MSBuildBinPath)\aspnet_compiler.exe  -p $(ProjectDir)   -v /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8eehAYx2jfE/SD6Azmp063I/AAAAAAAAA7U/jJneJ6d-XOQ/s1600-h/Post-build-events.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_8eehAYx2jfE/SD6Azmp063I/AAAAAAAAA7U/jJneJ6d-XOQ/s400/Post-build-events.png" alt="" id="BLOGGER_PHOTO_ID_5205739843324537714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, you are notified if there are errors in you aspx pages.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8eehAYx2jfE/SD6EuWp064I/AAAAAAAAA7c/mNzzUjkYa_k/s1600-h/compile_errors.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_8eehAYx2jfE/SD6EuWp064I/AAAAAAAAA7c/mNzzUjkYa_k/s400/compile_errors.png" alt="" id="BLOGGER_PHOTO_ID_5205744151176735618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Obviously compilation requires more time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5613805255828449183?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5613805255828449183/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5613805255828449183' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5613805255828449183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5613805255828449183'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/05/aspnet-full-compile-from-visual-studio.html' title='Asp.net &quot;full&quot; compile from Visual Studio'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8eehAYx2jfE/SD6Azmp063I/AAAAAAAAA7U/jJneJ6d-XOQ/s72-c/Post-build-events.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-976257700538593295</id><published>2008-05-19T15:02:00.002+02:00</published><updated>2008-05-29T12:28:55.451+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SysAdmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>Bug di sicurezza su Debian: la questione vera è un'altra</title><content type='html'>Sembra che nel lontano 2006, per la precisione il 2 maggio, gli sviluppatori di Debian abbiano messo una specie di "patch" ad OpenSSL distribuito con la loro versione di Linux. Il problema è che la "patch" in realtà non è una patch ma peggio ha introdotto un BUG:&lt;br /&gt;&lt;a href="http://www.debian.org/security/2008/dsa-1571"&gt;http://www.debian.org/security/2008/dsa-1571&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.debian.org/security/2008/dsa-1576"&gt;http://www.debian.org/security/2008/dsa-1576&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Il bug è venuto fuori in questi giorni. Poco male si dirà. Certo, dopo poche ore c'era già la patch. Perfetto. Ma.... la patch risolve il bug e il funzionamento di openssl su Debian dal giorno in cui la si installa. Quindi tutti i certificati &amp;amp; affini creati con OpenSSL prima dell'applicazione della patch sono vulnerabili. Cioè quelli degli ultimi 2 anni. Vedi &lt;a href="https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&amp;amp;id=SO9095"&gt;comunicato di Verisign&lt;/a&gt;: revocare i certificati e rigenerarli. Buon divertimento.&lt;br /&gt;&lt;br /&gt;Ma la questione vera è un'altra. Non mi riferisco al fatto che tutti i sistemi operativi hanno dei bug. Questo è ovvio e sostenere il contrario è stupido. Non faccio paragoni fra Win e Linux e Mac e SunSolaris e chi volete voi: la scelta di un sistema operativo è o dovrebbe essere dettata da una serie di valutazone che comprendono ma che non si limitano al numero di bug e patch.  Non voglio neanche entrare nella polemica del TCO (Total Cost of Ownership) fra Win e Linux.&lt;br /&gt;&lt;br /&gt;Il punto vero su cui riflettere è che &lt;span style="font-weight: bold;"&gt;2 righe di codice errato possono creare un casino enorme&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Quindi meglio pensarci 1000 volte prima di modificare codice funzionante soprattutto se scritto da altri.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-976257700538593295?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/976257700538593295/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=976257700538593295' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/976257700538593295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/976257700538593295'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/05/bug-di-sicurezza-su-debian-la-questione.html' title='Bug di sicurezza su Debian: la questione vera è un&apos;altra'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2218095459888809043</id><published>2008-05-02T16:15:00.002+02:00</published><updated>2008-05-29T12:27:47.556+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SysAdmin'/><title type='text'>Sql HeartBeat</title><content type='html'>A very useful (and free!) product: &lt;a href="http://www.sqlsolutions.com/products/Heartbeat/index.html"&gt;Sql HeartBeat&lt;/a&gt; from &lt;a href="http://www.sqlsolutions.com/"&gt;SqlSolutions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Very simple to use: select a sql server, connect to them and it shows info about:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Waits&lt;/li&gt;&lt;li&gt;Seek time&lt;/li&gt;&lt;li&gt;Physical R/W&lt;/li&gt;&lt;li&gt;Cache hits&lt;/li&gt;&lt;li&gt;Process/Connection activity&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;A screenshot:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8eehAYx2jfE/SBsjNhTUq0I/AAAAAAAAA3I/GiTTS2IZHpA/s1600-h/SqlHeartBeat.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_8eehAYx2jfE/SBsjNhTUq0I/AAAAAAAAA3I/GiTTS2IZHpA/s400/SqlHeartBeat.png" alt="" id="BLOGGER_PHOTO_ID_5195785310286687042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2218095459888809043?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2218095459888809043/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2218095459888809043' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2218095459888809043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2218095459888809043'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/05/sql-heartbeat.html' title='Sql HeartBeat'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8eehAYx2jfE/SBsjNhTUq0I/AAAAAAAAA3I/GiTTS2IZHpA/s72-c/SqlHeartBeat.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5909847159438205217</id><published>2008-04-17T17:13:00.006+02:00</published><updated>2008-10-30T09:47:37.809+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>Scaricare una GridView ed aprirla con Excel</title><content type='html'>Vabbè.... per chi non ha voglia di cercare con Google (come Andrea), ecco come salvare ed aprire con Excel una GridView da una pagina Asp.Net&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nella codice della pagina asp.net:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: white none repeat scroll 0% 50%; color: black; font-family: Courier New; font-size: 10pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;ImageClickEventArgs&lt;/span&gt; e)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;this&lt;/span&gt;.RenderToHtml(GVDetails, &lt;span style="color: #a31515;"&gt;"foo.xls"&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: white none repeat scroll 0% 50%; color: black; font-family: Courier New; font-size: 10pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; RenderToHtml(&lt;span style="color: #2b91af;"&gt;GridView&lt;/span&gt; gv, &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;{&lt;/div&gt;_bypassNormalVRISF = &lt;span style="color: blue;"&gt;true&lt;/span&gt;;  &lt;br /&gt;&lt;div style="margin: 0px;"&gt;Response.Clear();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Response.ContentType = &lt;span style="color: #a31515;"&gt;"application/vnd.ms-excel"&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Response.AppendHeader(&lt;span style="color: #a31515;"&gt;"Content-Disposition"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"attachment;filename="&lt;/span&gt; + fileName);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;StringWriter&lt;/span&gt; sw = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;StringWriter&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;HtmlTextWriter&lt;/span&gt; htw = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;HtmlTextWriter&lt;/span&gt;(sw);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;gv.RenderControl(htw);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Response.Write(sw.ToString());&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Response.End();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: white none repeat scroll 0% 50%; color: black; font-family: Courier New; font-size: 10pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; _bypassNormalVRISF = &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; VerifyRenderingInServerForm(&lt;span style="color: #2b91af;"&gt;Control&lt;/span&gt; control)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (_bypassNormalVRISF)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;base&lt;/span&gt;.VerifyRenderingInServerForm(control);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Per i dettagli su VerifyRenderingInServerForm vedere il sito &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.page.verifyrenderinginserverform.aspx"&gt;MSDN&lt;/a&gt;. Comunque in 2 parole: molti (tutti?) dei controlli Asp.net devono essere creati al di sotto di &amp;lt;form runat=&lt;span style="color: #a31515;"&gt;"server"&lt;/span&gt;&amp;gt;&lt;br /&gt;Il metodo viene chiamato da questi controlli, tra cui GridView. L'implementazione standard di Page prevede che venga sollevata un eccezione se in quel momento la costruzione della pagina non è "al di sotto" di  &amp;lt;form runat=&lt;span style="color: #a31515;"&gt;"server"&lt;/span&gt;&amp;gt; .  Basta andare in override sul metodo e fargli fare una porcheria: saltare il controllo! Ovviamente è bene farlo solo quando serve: per questo c'è _bypassNormalVRISF.&lt;br /&gt;&lt;form runat="server"&gt;&lt;br /&gt;&lt;br /&gt;[UPDATE: 29/10/2008]&lt;br /&gt;&lt;br /&gt;Il pezzo di codice precedente funziona solo se nella GridView non sono presenti Control. Se è tutto testo OK ma se c'è anche un solo Control (ad esempio un Button), vengono sollevate eccezioni.&lt;br /&gt;Soluzione: prima di eseguire il render in html, bisogna eliminare tutti i Control. Per fare questo il metodo riceve la lista delle colonne da eliminare. Inoltre, per non avere con il metodo VerifyRenderingInServerForm&amp;nbsp; basta copiare le righe della GridView in un oggetto Table creato al volo.&lt;br /&gt;&lt;br /&gt;Codice:&lt;br /&gt;&lt;br /&gt;public static void Export(string fileName, GridView gv, int[] skipColumns)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;int&gt; skipColumnsList = new List&lt;int&gt;(skipColumns);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (StringWriter sw = new StringWriter())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (HtmlTextWriter htw = new HtmlTextWriter(sw))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Table table = new Table();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table.GridLines = GridLines.Both;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (gv.HeaderRow != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table.Rows.Add(gv.HeaderRow);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (GridViewRow row in gv.Rows)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table.Rows.Add(row);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (gv.FooterRow != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table.Rows.Add(gv.FooterRow);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (TableRow row in table.Rows)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RemoveCells(row, skipColumnsList);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext.Current.Response.Clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table.RenderControl(htw);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext.Current.Response.Write(sw.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext.Current.Response.End();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static void RemoveCells(TableRow row, List&lt;int&gt; skipColumnsList)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = row.Cells.Count - 1; i &amp;gt;= 0; i--)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (skipColumnsList.Contains(i))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.Cells.RemoveAt(i);&lt;br /&gt;}&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;br /&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5909847159438205217?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5909847159438205217/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5909847159438205217' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5909847159438205217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5909847159438205217'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/04/scaricare-una-gridview-ed-aprirla-con.html' title='Scaricare una GridView ed aprirla con Excel'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3718931446463337577</id><published>2008-04-11T16:14:00.002+02:00</published><updated>2008-04-11T16:23:09.420+02:00</updated><title type='text'>Italiani... non sono poi così male!</title><content type='html'>Ecco una notizia che mi fa veramente piacere: &lt;a href="http://www.codinghorror.com/blog/archives/001098.html"&gt;Jeff Atwood ha donato 5000 dollari&lt;/a&gt; al progetto &lt;a href="http://www.screwturn.eu"&gt;ScrewTurn&lt;/a&gt;.&lt;br /&gt;Jeff si era impegnato a donare 5000 dollari ad un progetto open source in tecnologia NET. La scelta è caduta su ScrewTurn, un motore wiki basato su asp.net.&lt;br /&gt;Cosa c'entrano gli italiani? Semplice: ScrenTurn è coordinato da &lt;a href="http://www.dariosolera.it"&gt;Dario Solera&lt;/a&gt; di Milano.&lt;br /&gt;&lt;br /&gt;Complimenti Dario!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3718931446463337577?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3718931446463337577/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3718931446463337577' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3718931446463337577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3718931446463337577'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/04/italiani-non-sono-poi-cos-male.html' title='Italiani... non sono poi così male!'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8458748871397428937</id><published>2008-04-11T07:30:00.001+02:00</published><updated>2008-05-29T12:28:27.385+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>Esempi di sviluppo insicuro</title><content type='html'>Ecco alcuni link dal blog di Raffaele Rialdi che illustrano come NON sviluppare applicazioni web:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.ugidotnet.org/raffaele/archive/2007/10/04/88715.aspx"&gt;il sito di Veltroni&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.ugidotnet.org/raffaele/archive/2008/02/22/91314.aspx"&gt;Agenzia delle Dogane&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Il primo è pazzesco: web.config leggibile, db pubblico, sa come utente del db, administrator per la web application. Una summa delle peggiori cose che si possono fare in una web application. E sono riusciti pure a bypassare la sicurezza di NET rendendo leggibile il web.config.&lt;br /&gt;&lt;br /&gt;Il secondo, invece, è un po' più subdolo ed ha a che fare più con aspetti di "politica della sicurezza" che con questioni strettamente tecniche.&lt;br /&gt;&lt;br /&gt;Entrambbi da leggere assolutamente, commenti compresi!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8458748871397428937?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8458748871397428937/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8458748871397428937' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8458748871397428937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8458748871397428937'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/04/esempi-di-sviluppo-insicuro.html' title='Esempi di sviluppo insicuro'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7939760805561795836</id><published>2008-04-08T22:45:00.003+02:00</published><updated>2009-01-22T07:54:40.693+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>IIS6 StackOverFlow</title><content type='html'>Sometimes you need to run code with extensive use of stack due to recursive algorithms. But recursion (if very deep) can be very harmful for stack. I encountered such situation, in a particular use of &lt;a href="http://itextsharp.sourceforge.net/"&gt;iTextSharp&lt;/a&gt;. In my case, IIS 6 (w3wp.exe) crashed with an unknow exception that seemed to be thrown from kernel32.&lt;br /&gt;&lt;br /&gt;I spent many hours trying to understand where the problem was. Using WinDbg and AdPlus I understood that the problem came from Net managed code, and after dumping the stack, it was clear which was the method(s).&lt;br /&gt;&lt;br /&gt;First: it's not a library bug. If I reduce the work-load (number of input pdf files) it works perfectly. Second: the same piece of code, with the same input pdf files, runs perfectly from a command-line application.  So, the problem is related to the IIS "environment".&lt;br /&gt;&lt;br /&gt;Solution: increase the stack! Ok, but how ?   Simple: running the code inside a thread with a bigger stack!&lt;br /&gt;On IIS6 the "default" threads are created with 256 KB of stack. I haven't found a way to change it. But, from your asp.net code you can create and run a new thread with a bigger stack.&lt;br /&gt;&lt;br /&gt;Example code (direct run):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;protected void Button1_Click(object sender, EventArgs e)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    this.Run();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;private void Run()&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;//...  code with or calling library with high use of stack&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Passing trought a "working" thread (with 1 MB of stack):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;protected void Button1_Click(object sender, EventArgs e)&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;this.RunAsSeparatedThread();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;private void RunAsSeparatedThread()&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;       Thread t = new Thread(Run, 1 * 1024 * 1024);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;       t.IsBackground = true;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;       t.Start();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;       t.Join();&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;private void Run()&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;//...  code with or calling library with high use of stack&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7939760805561795836?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7939760805561795836/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7939760805561795836' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7939760805561795836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7939760805561795836'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/04/iis6-stackoverflow.html' title='IIS6 StackOverFlow'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-1140809238721281494</id><published>2008-04-06T18:00:00.000+02:00</published><updated>2008-04-08T17:11:13.425+02:00</updated><title type='text'>Inkscape</title><content type='html'>Some days ago I was looking for a free drawing tool. But not a raster (bitmap) editor. I need a vector editor (like Illustrator or Freehand).&lt;br /&gt;After googling for a while, I found Inkscape &lt;a href="http://www.blogger.com/www.inkscape.org"&gt;www.inkscape.org&lt;/a&gt; . It's an opensource &lt;span style="font-weight: bold;"&gt;vector &lt;/span&gt;graphics editor. It's based on SVG standard (W3C standard). Simple but very powerful.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.inkscape.org/"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_8eehAYx2jfE/R_uKq7AKMkI/AAAAAAAAAxE/kjyFmJrsxI4/s400/inkscape_header-logo.png" alt="" id="BLOGGER_PHOTO_ID_5186891865844757058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-1140809238721281494?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/1140809238721281494/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=1140809238721281494' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1140809238721281494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/1140809238721281494'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/04/inkscape.html' title='Inkscape'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8eehAYx2jfE/R_uKq7AKMkI/AAAAAAAAAxE/kjyFmJrsxI4/s72-c/inkscape_header-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5641501149737706767</id><published>2008-04-06T16:15:00.005+02:00</published><updated>2008-04-17T16:41:33.884+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>Subversion: primi test con Visual Studio 2005</title><content type='html'>Primi test con &lt;a href="http://subversion.tigris.org/"&gt;SubVersion&lt;/a&gt; e Visual Studio 2005.  Risultato: funziona... ma che bel casino!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8eehAYx2jfE/R-k-ErAKMhI/AAAAAAAAAws/jtNuRoIDlm4/s1600-h/SVN_TOR_ANKH.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_8eehAYx2jfE/R-k-ErAKMhI/AAAAAAAAAws/jtNuRoIDlm4/s400/SVN_TOR_ANKH.png" alt="" id="BLOGGER_PHOTO_ID_5181741096250257938" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Al momento sto valutando 2 approcci diversi per l'integrazione frs SVN e VS2005:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a livello di file system con &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN&lt;/a&gt;&lt;/li&gt;&lt;li&gt;direttamente in VS2005 con &lt;a href="http://ankhsvn.open.collab.net/"&gt;AnkhSVN&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;TortoiseSVN sembra decisamente più stabile e robusto ma AnkhSVN è molto più comodo da usare: tutte le attività possono essere fatte all'interno di Visual Studio.&lt;br /&gt;Inoltre TortoiseSVN ha strumenti molto più sofisticati per la gestione dei conflitti. Ovviamente si possono usare entrambi: Ankhsvn per le attività "normali", TortoiseSvn per quelle speciali e sofisticate.&lt;br /&gt;&lt;br /&gt;Dopo vari casini sono riuscito a mettere su anche Apache con il ModSvn e ad attivare l'Https. A dire la verità i grossi casini sono più nel creare un certificato di prova https per Apache che impostare subversion.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[Update 16/04/2008]&lt;br /&gt;&lt;br /&gt;Primi test seri di sviluppo multi-utente: qui cominciano i veri problemi!&lt;br /&gt;Il grosso problema è la fase di merge: è abbastanza comune che 2 sviluppatori abbiano bisogno di mettere mano agli stessi file di codice sorgente. Ad esempio il primo modifica un metodo e il secondo ne aggiunge uno nuovo. Fin qui non ci sono grossi problemi: il più delle volte Ankhsvn è in grado di fare il merge in automatico.  In altri casi invece, non riesce a risolvere i conflitti è l'unica è risolverli "a mano" con TortoiseMerge: per ogni riga e/o blocco in conflitto bisogna decidere chi vince oppure se farli vincere entrambi. Se i 2 sviluppatori di prima aggiungono entrambi un nuovo metodo nella stessa  zona di codice, si crea un conflitto.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8eehAYx2jfE/SAdZhrfF42I/AAAAAAAAAyA/k-Q1Aj1Kdb0/s1600-h/merge1.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_8eehAYx2jfE/SAdZhrfF42I/AAAAAAAAAyA/k-Q1Aj1Kdb0/s400/merge1.png" alt="" id="BLOGGER_PHOTO_ID_5190215530711475042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;In questo caso è probabile che la soluzione sia di farli convivere entrambi nella file finale.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8eehAYx2jfE/SAdaILfF45I/AAAAAAAAAyY/hRqIYUPz-uU/s1600-h/merge2.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_8eehAYx2jfE/SAdaILfF45I/AAAAAAAAAyY/hRqIYUPz-uU/s400/merge2.png" alt="" id="BLOGGER_PHOTO_ID_5190216192136438674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ma i veri casini arrivano quando si iniziano ad usare elementi gestiti in modo più o meno automatico da VS2005. Un esempio per tutti: i Typed DataSet.  Personalmente li uso molto e come purtroppo immaginavo creano grossi problemi a Subversion. O meglio: subversion crea grossi problemi ai typed dataset. Il problema come al solito è il merge. C'è un dataset che ha già una datatable, 2 utenti lo modificano, ad esempio aggiungendo una datatable a testa. Ovviamente c'è un problema di merge. Ma il typed dataset è più complesso di un semplice file .cs. In gioco ci sono 4 file:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MyDS.xsd : dataset vero e proprio (xml)&lt;/li&gt;&lt;li&gt;MyDS.Deseigner.cs : file di codice autogenerato da VS2005&lt;/li&gt;&lt;li&gt;MyDS.xsc : autogenerato da vs2005&lt;/li&gt;&lt;li&gt;MyDS.xss : autogenerato da vs2005. Contiente le informazioni per la rappresentazione a video degli elementi (coordinate xy, larghezza, ecc.)&lt;/li&gt;&lt;/ul&gt;Il conflitto si può presentare su tutti e 4 i file ma il più importante è il file XSD. Nel mio caso con il tool di Merge ho risolto il conflitto anche se lavorare e muoversi all'interno del xml di un XSD non è la cosa più agevole di questo mondo. Il risultato, dopo vari click e calci in quel posto ai tool coinvolti è stato:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8eehAYx2jfE/SAdbMbfF46I/AAAAAAAAAyg/WHgzEsbdWZI/s1600-h/dataset.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_8eehAYx2jfE/SAdbMbfF46I/AAAAAAAAAyg/WHgzEsbdWZI/s400/dataset.png" alt="" id="BLOGGER_PHOTO_ID_5190217364662510498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ma... non è finita. Provo a muovere una tabella e mi becco un bel errore da VS2005.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8eehAYx2jfE/SAdbQrfF47I/AAAAAAAAAyo/3HbUlKjQra0/s1600-h/error1.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_8eehAYx2jfE/SAdbQrfF47I/AAAAAAAAAyo/3HbUlKjQra0/s400/error1.png" alt="" id="BLOGGER_PHOTO_ID_5190217437676954546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Dopo vari tentativi, ho cancellato il file .xss e Designer.cs. A questo punto VS li crea nuovamente e tutto sembra tornare a funzionare.&lt;br /&gt;&lt;br /&gt;Conclusione (per ora):  continuo a fare prove ma non porto nulla in produzione. Subversion e compagni mi convincono ogni giorno sempre di meno.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5641501149737706767?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5641501149737706767/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5641501149737706767' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5641501149737706767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5641501149737706767'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/04/subversion-primi-test-con-visual-studio.html' title='Subversion: primi test con Visual Studio 2005'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8eehAYx2jfE/R-k-ErAKMhI/AAAAAAAAAws/jtNuRoIDlm4/s72-c/SVN_TOR_ANKH.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-717503617023418473</id><published>2008-04-01T10:37:00.002+02:00</published><updated>2008-04-01T10:38:32.247+02:00</updated><title type='text'>Must read list</title><content type='html'>Un po' di letture interessanti:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Unicode"&gt;Unicode (wikipedia)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/User_Account_Control"&gt;User account control di Vista (Wikipedia)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-717503617023418473?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/717503617023418473/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=717503617023418473' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/717503617023418473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/717503617023418473'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/04/must-read-list_01.html' title='Must read list'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5971389506368935735</id><published>2008-03-03T18:12:00.005+01:00</published><updated>2009-02-17T17:00:36.553+01:00</updated><title type='text'>Ghostscript without dependencies</title><content type='html'>&lt;a href="http://www.ghostscript.com/"&gt;Ghostscript&lt;/a&gt; is one of the most powerful Postscript/Pdf engine I have ever used. It can convert Ps to Pdf, Pdf to Ps, rasterize Pdf and Ps to Jpeg, Tiff, Bmp and so on.&lt;br /&gt;But Ghostscript requires many files to run. When you install it, they are placed in the lib and resource folders (plus some fonts placed in the font folder). During the installation process, some entries are also placed in the registry (on Windows systems).&lt;br /&gt;So, if you need to run Ghostscript on a machine, you need to install it.&lt;br /&gt;&lt;br /&gt;There is a way to include all the needed file into the ghostscript dll: compile it using the option COMPILE_INITS=1. The resulting dll is bigger than the normal: 8.7 MB instead of 3.5 MB. It contains all the needed files. To run ghostsfcript you need only gswin32c.exe and gsdll32.dll.&lt;br /&gt;&lt;br /&gt;I have compiled ghostscript 8.62 using Visual Studio 2005.&lt;br /&gt;&lt;br /&gt;Donwload the source code from &lt;a href="http://sourceforge.net/projects/ghostscript/"&gt;SourceForge&lt;/a&gt; and from the VS2005 command line, run:&lt;br /&gt;&lt;br /&gt;nmake   -f   src\msvc32.mak DEVSTUDIO=   COMPILE_INITS=1    MSVC_VERSION=8   GS_LIB_DEFAULT = "./lib/;./font;$(GSROOTDIR)/lib;$(AROOTDIR)/fonts"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #cc0000;"&gt;UPDATE&lt;/b&gt;: AFAIK Ghostscript is compiled with COMPILE_INITS=1  starting from version 8.63. So, you don't need to compile it by yourself.&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5971389506368935735?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5971389506368935735/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5971389506368935735' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5971389506368935735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5971389506368935735'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/03/ghostscript-without-dependencies.html' title='Ghostscript without dependencies'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5784120386043764914</id><published>2008-02-08T19:00:00.000+01:00</published><updated>2008-02-11T09:54:56.391+01:00</updated><title type='text'>Il mito degli "anni di esperienza"</title><content type='html'>Ieri è uscito un bel articolo sul blog di Jeff Atwood: &lt;a href="http://www.codinghorror.com/blog/archives/001054.html"&gt;The Years of Experience Myth&lt;/a&gt; (in inglese).&lt;br /&gt;In sostanza Jeff mette in discussione uno degli elementi base usati da molte società di informatica o di recruitment durante la selezione del personale: gli "anni di esperienza".&lt;br /&gt;&lt;br /&gt;Non posso che essere d'accordo con lui. Sostiene le stesse cose che mi è capitato più volte di dire: gli anni di esperienza non hanno alcun valore in quanto tali.  Quello che conta realmente è la capacità di imparare, di aggiornarsi, di affrontare e di risolvere i problemi.&lt;br /&gt;Ma, attenzione, tutto questo non vale solo nel campo dell'ICT. Anche quando facevo i corsi in Croce Rossa il messaggio che davo era sempre lo stesso: non basta essere "vecchi", cioè con molti anni di esperienza sulla strada, per essere dei buoni soccorritori. Ho conosciuto ottimi soccorritori usciti da pochi  mesi dai corsi e pessimi soccorritori con molti anni di attività sulle spalle.&lt;br /&gt;&lt;br /&gt;Tornando al settore ICT,  sapere ad esempio che tizio ha lavorato 5 anni su Java non vuol dire niente. Bisogna invece capire che cosa ha fatto, come lo ha fatto, da dove è partito e dove è arrivato. 5 anni passati a fare manutenzione ad un'applicazione java che fa query su DB e che crea semplici tabelle html è quanto meno poco interessante. Meglio una persona che lavora da 1 solo anno su java ma che ha affrontato problemi ben più complessi.&lt;br /&gt;&lt;br /&gt;Non voglio dire che l'esperienza non conti nulla, anzi. Sono il primo a sostenere che affrontare problemi reali in ambito lavorativo sia importantissimo. Ma la qualità del lavoro e dell'esperienza non si basa sul tempo "passato" ma dal come si è lavorato: curiosità, volontà di migliorarsi e di imparare cose nuove.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5784120386043764914?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5784120386043764914/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5784120386043764914' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5784120386043764914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5784120386043764914'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/02/il-mito-degli-anni-di-esperienza.html' title='Il mito degli &quot;anni di esperienza&quot;'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-202044668605836622</id><published>2008-01-29T16:43:00.000+01:00</published><updated>2008-04-11T11:50:50.618+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>Convert int[] to string[]</title><content type='html'>It's very common to need to convert an array of type T1 to an array of type T2.&lt;br /&gt;Net 2.0 offers an interesting static member of the Array class: ConvertAll&lt;t1,&gt;.&lt;br /&gt;Using &lt;a href="http://msdn2.microsoft.com/en-us/library/0yw3tz5k%28VS.80%29.aspx"&gt;anonymous methods&lt;/a&gt; (MSDN) in conjunction with ConvertAll, you can convert an array of "simple" type to an array of another "simple" type in only ONE line of code.&lt;br /&gt;&lt;br /&gt;An example: int[] to string[]&lt;br /&gt;&lt;/t1,&gt; &lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div    style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:10pt;color:black;"&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[] inInt = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:blue;"&gt;int&lt;/span&gt;[] { 47, 46, 45, 101 };&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] outStr = &lt;span style="color: rgb(43, 145, 175);"&gt;Array&lt;/span&gt;.ConvertAll&lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;, &lt;span style="color:blue;"&gt;string&lt;/span&gt;&gt;(inInt, &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Converter&lt;/span&gt;&lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;, &lt;span style="color:blue;"&gt;string&lt;/span&gt;&gt;(&lt;span style="color:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="color:blue;"&gt;int&lt;/span&gt; x) { &lt;span style="color:blue;"&gt;return&lt;/span&gt; x.ToString(); }));&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;or (smaller):&lt;br /&gt;&lt;br /&gt;&lt;div    style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:10pt;color:black;"&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] outStr = &lt;span style="color: rgb(43, 145, 175);"&gt;Array&lt;/span&gt;.ConvertAll&lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;, &lt;span style="color:blue;"&gt;string&lt;/span&gt;&gt;(inInt, &lt;span style="color:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="color:blue;"&gt;int&lt;/span&gt; x) { &lt;span style="color:blue;"&gt;return&lt;/span&gt; x.ToString(); });&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;You can also convert string[] to int[]:&lt;br /&gt;&lt;br /&gt;&lt;div    style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:10pt;color:black;"&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;[] outInt2 = &lt;span style="color: rgb(43, 145, 175);"&gt;Array&lt;/span&gt;.ConvertAll&lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;, &lt;span style="color:blue;"&gt;int&lt;/span&gt;&gt;(outStr,  &lt;span style="color:blue;"&gt;delegate&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt; s) { &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;int&lt;/span&gt;.Parse(s); });&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If you need to convert between more complex type, probably you need more code in the delegate body. But the idea is the same: use a delegate as a converter between 2 types.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-202044668605836622?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/202044668605836622/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=202044668605836622' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/202044668605836622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/202044668605836622'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/01/convert-int-to-string.html' title='Convert int[] to string[]'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8664406781227170655</id><published>2008-01-27T15:50:00.000+01:00</published><updated>2008-01-29T17:05:25.622+01:00</updated><title type='text'>Sviluppo "parallelo"</title><content type='html'>Ormai sono anni che i processori sono a tutti gli effetti dei "multi"processori. Si era iniziato con l'HyperThreding, poi i Dual Core, poi i QuadCore ed avanti così. Ma per gli sviluppatori la domanda è: ma ve ne fate realmente qualcosa di questi oggetti che sono in grado di eseguire più istruzioni in parallelo? Per molti la risposta è: NO!  Ed il motivo è molto semplice: le applicazioni Console e Windows Form che sviluppano sono intrinsecamente mono-processo, o meglio mono-thread. Discorso a parte ovviamente per le applicazioni web tipo asp.net: questo effettivamente è un mondo effettivamente multi-thread.&lt;br /&gt;Lo sviluppo parallelo non  sempre è applicabile. Anzi sovente la logica è instrinsecamente lineare e non ci sono spazi per parallelizzarla. In altri casi invece questo è possibile. Ma qui iniziano i dolori.  Senza un adeguato supporto fornito dal linguaggio/framework è molto oneroso (e tedioso) gestire i vari thread paralleli. Ed è forse per questo che, a meno di situazioni particolari in cui le performance sono fondamentali, si rinuncia allo sviluppo "parallelo" e si rimane sul tranquillo "seriale".&lt;br /&gt;Come ho detto in precedenza, l'hardware è ormai molto avanti. Il software (sviluppo e framework) è ancora un po' indietro. Ma le cose stanno cambiando: un segno è l'uscita come Community Tecnology Preview di  &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&amp;amp;displaylang=en"&gt;Parallel Extensions to .NET&lt;/a&gt;. Questa libreria fornisce una serie di estensioni a NET 3.5 per supportare in modo nativo una serie di costutti paralleli. Vedi &lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/10/Futures/default.aspx?loc=en"&gt;articolo su MSDN Magazine&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8664406781227170655?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8664406781227170655/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8664406781227170655' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8664406781227170655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8664406781227170655'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/01/sviluppo-parallelo.html' title='Sviluppo &quot;parallelo&quot;'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-3170805806205178978</id><published>2008-01-08T20:45:00.000+01:00</published><updated>2008-01-09T14:22:34.753+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>Typed dataset: consigli e tips</title><content type='html'>L'utilizzo dei typed dataset in Visual Studio 2005 semplifica e velocizza molto la scrittura di codice per l'accesso ai dati, quello che comunemente viene chiamato DAL (Data Access Layer). Ma i problemi sono dietro l'angolo....&lt;br /&gt;&lt;br /&gt;Vedi:  &lt;a href="http://docs.google.com/Doc?id=dchmct9k_152cj9qfgdm"&gt;http://docs.google.com/Doc?id=dchmct9k_152cj9qfgdm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Come al solito, i commenti sono i benvenuti.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-3170805806205178978?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/3170805806205178978/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=3170805806205178978' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3170805806205178978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/3170805806205178978'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/01/typed-dataset-consigli-e-tips.html' title='Typed dataset: consigli e tips'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5104791681282749185</id><published>2008-01-06T19:20:00.000+01:00</published><updated>2008-01-09T14:22:34.753+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>compilation debug="true"</title><content type='html'>In web.config, tra le altre cose, c'è la modalità di compilazione. Durante lo sviluppo dovrebbe essere impostata a true:  &lt;span style="color:blue;"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;compilation&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;debug&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;true&lt;/span&gt;"&lt;span style="color:blue;"&gt; /&gt;&lt;/span&gt;&lt;div face="Courier New" size="10pt" color="black" style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/div&gt; Ma quando si porta l'applicazione in produzione, è importante ricordarsi di impostarla a false.&lt;br /&gt;Questo per una lunga serie di motivi:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;timeout: con true le pagine asp.net non vanno mai in timeout. Ottimo per il debug, disastroso in produzione.&lt;/li&gt;&lt;li&gt;compilazione batch: compilazioni più lenta con true.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ottimizzazione del codice: se true, non c'è ottimizzazione del codice. Performance peggiori.&lt;/li&gt;&lt;li&gt;utilizzo memoria: maggiore utilizzo di memoria con true&lt;/li&gt;&lt;li&gt;... altri motivi&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Attenzione: l'opzione di debug di compilation all'interno di web.config, non è la stessa cosa dell'opzione debug/release di Visual Studio. La prima ha effetto sulla compilazione "al volo" di asp.net e su come l'applicazione asp.net è eseguita da IIS (vedi timeout). La seconda invece ha effetto sulle dll compilate da Visual Studio.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Per maggiori info (in inglese):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/tess/archive/2006/04/13/575364.aspx"&gt;http://blogs.msdn.com/tess/archive/2006/04/13/575364.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5104791681282749185?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5104791681282749185/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5104791681282749185' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5104791681282749185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5104791681282749185'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/01/compilation-debugtrue.html' title='compilation debug=&quot;true&quot;'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8152965649670851104</id><published>2008-01-06T19:15:00.000+01:00</published><updated>2008-01-09T14:22:40.912+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>Fiddler and Visual Studio 2005</title><content type='html'>There are some problem using &lt;a href="http://www.fiddlertool.com/"&gt;Fiddler&lt;/a&gt; with Visual Studio 2005 Development Server (Cassini). In particular if you're using IE7 and Vista.&lt;br /&gt;On many blogs there are many workarounds and tips. The only that works with me is to add a new entry in the HOSTS file (C:\Windows\System32\drivers\etc). In my case, I added:&lt;br /&gt;   127.0.0.1    myself&lt;br /&gt;Now, the url in Ie7 will be http://myself:51784/page.aspx. It works both with and without Fiddler runnig.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8152965649670851104?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8152965649670851104/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8152965649670851104' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8152965649670851104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8152965649670851104'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/01/fiddler-and-visual-studio-2005.html' title='Fiddler and Visual Studio 2005'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7497373572374335462</id><published>2008-01-02T18:49:00.000+01:00</published><updated>2008-01-09T14:22:56.739+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>GridView, UpdatePanel e doppi click</title><content type='html'>Su vari post ho letto di persone che hanno problemi con GridView contenute in UpdatePanel Ajax.&lt;br /&gt;Anche io ho trovato vari problemi. Il più strano è la necessità di premere 2 volte i linkbutton perchè questi facciano il loro lavoro. In realtà il postback avviene 2 volte ma la prima volta sembra andare perduto. La seconda volta funziona.&lt;br /&gt;Facendo un po' di ricerche e di debug sembra che il primo post venga gestito come un"postback ajax" (passatemi questo termine) mentre il secondo è un trattato come un vero postback.&lt;br /&gt;La soluzione che ho trovato è quello di registrare la GridView nella collezione dei Trigger del UpdatePanel che la contiene. Il trigger deve essere un PostBack e non un AsyncPostBack. In questo modo LinkButton tornano a funzionare al primo colpo.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;asp:updatepanel id=&amp;quot;updtPnl&amp;quot; runat=&amp;quot;server&amp;quot; updatemode=&amp;quot;Conditional&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;contenttemplate&amp;gt;&lt;br /&gt; &amp;lt;asp:gridview id=&amp;quot;GV1&amp;quot;&amp;gt;&lt;br /&gt;  .....&lt;br /&gt; &amp;lt;asp:gridview&amp;gt;&lt;br /&gt;&amp;lt;/contenttemplate&amp;gt;&lt;br /&gt;&amp;lt;triggers&amp;gt;&lt;br /&gt; &amp;lt;asp:PostBackTrigger ControlID="GV1" /&amp;gt;&lt;br /&gt;&amp;lt;triggers&amp;gt;&lt;br /&gt;&amp;lt;asp:updatepanel&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Anche la &lt;a href="http://www.asp.net/AJAX/Documentation/Live/mref/T_System_Web_UI_PostBackTrigger.aspx"&gt;documentazione ufficiale&lt;/a&gt; relativa a PostBackTrigger sembra confermare questo uso. Non capisco però perchè funzioni con  click in sequenza. Boh...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Probabilemente i problemi sono dovuti anche alla struttura abbastanza annidata dei componenti della mia pagina asp.net. In successione i "contenitori" sono:&lt;br /&gt;- master page&lt;br /&gt;- content page&lt;br /&gt;- multiview&lt;br /&gt;- view&lt;br /&gt;- updatepanel&lt;br /&gt;- gridview&lt;br /&gt;- linkbutton (o imagebutton)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sinceramente non ho fatto prove con una struttura più semplice.  Appena trovo 10 minuti...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7497373572374335462?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7497373572374335462/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7497373572374335462' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7497373572374335462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7497373572374335462'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2008/01/gridview-updatepanel-e-doppi-click.html' title='GridView, UpdatePanel e doppi click'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8517737172136688105</id><published>2007-12-11T14:04:00.000+01:00</published><updated>2007-12-11T14:29:17.154+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>Send smime message from  NET</title><content type='html'>Using the NET Framowork classes is not possible to send correct smime pkcs7 messages. In particular, SmtpClient class adds own headers before sending message. The result is a not valid smime message. See &lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=267544"&gt;bug on connect.microsoft.com&lt;/a&gt;  and some posts on newsgroup:  &lt;a href="http://groups.google.com/group/microsoft.public.dotnet.general/browse_thread/thread/e7fc3045bc87b101/1e57930e6fe40da2"&gt;this&lt;/a&gt; and &lt;a href="http://groups.google.com/group/microsoft.public.dotnet.framework.aspnet.security/browse_thread/thread/d76a83bb1901a5d/dad419b412d7cf6f"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you are curious you can check how SmtpClient works, using &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/a&gt;. You will found that SmtpClient adds those headers.  Grrrr!!!&lt;br /&gt;&lt;br /&gt;Waiting for a solution from MS, at the moment the only solution is to use a thirdparty component or some free open source Smtp class. Using Google you can found them. I choosed &lt;a href="http://community.axosoft.com/blogs/hamids/articles/152.aspx"&gt;Axosoft  classes&lt;/a&gt;.&lt;br /&gt;Well, they are very simple and some minor bugs, but they are very usefull to do some tests.&lt;br /&gt;&lt;br /&gt;The very first think to do is to add a new message type in the MessageType enum and the Smtp.SendEmail method:&lt;br /&gt;&lt;br /&gt;case MessageType.PKCS7:&lt;br /&gt;WriteBuffer(ns, "Content-Type: application/pkcs7-mime; smime-type=signed-data; name=\"smime.p7m\"" + "\r\n");&lt;br /&gt;WriteBuffer(ns, "Content-Disposition: attachment; filename=\"smime.p7m\"" + "\r\n");&lt;br /&gt;WriteBuffer(ns, "Content-Transfer-Encoding: base64" + "\r\n");&lt;br /&gt;WriteBuffer(ns, "\r\n" + msg.EmailMessage + "\r\n.\r\n");&lt;br /&gt;break;&lt;br /&gt;&lt;br /&gt;The new MessageType.PKCS7 inform the Smtp.SendEmail method to insert the required header for smime message.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can create a smime message in few simple steps:&lt;br /&gt;- get the bytes of the message&lt;br /&gt;- encode them as pkcs7 message using a certificate&lt;br /&gt;- send the message using the new MessageType&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;string inFile = "data.txt";&lt;br /&gt;byte[] origData = File.ReadAllBytes(inFile);&lt;br /&gt;ContentInfo ci = new ContentInfo(origData);&lt;br /&gt;&lt;br /&gt;X509Certificate2 cert = CertUtility.GetCertFromStore("Fabrizio", StoreName.My);&lt;br /&gt;&lt;br /&gt;SignedCms signedCms = new SignedCms(contentInfo);&lt;br /&gt;CmsSigner cmsSigner = new CmsSigner(cert);&lt;br /&gt;signedCms.ComputeSignature(cmsSigner);&lt;br /&gt;byte[] encodedData = signedCms.Encode();&lt;br /&gt;&lt;br /&gt;Axosoft.Common.Utilities.Smtp smtpAx = new Axosoft.Common.Utilities.Smtp();&lt;br /&gt;smtpAx.SmtpServer = "smtpserver";&lt;br /&gt;Axosoft.Common.Utilities.MailMessage msgAx = new Axosoft.Common.Utilities.MailMessage();&lt;br /&gt;msgAx.EmailFrom = "foo@foo";&lt;br /&gt;msgAx.AddEmailTo("dest@dest");&lt;br /&gt;msgAx.EmailSubject = "TEST " + DateTime.Now.ToString();&lt;br /&gt;msgAx.EmailMessageType = Axosoft.Common.Utilities.MessageType.PKCS7;&lt;br /&gt;msgAx.EmailMessage = Convert.ToBase64String(encodedData);&lt;br /&gt;smtpAx.SendEmail(msgAx);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8517737172136688105?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8517737172136688105/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8517737172136688105' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8517737172136688105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8517737172136688105'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/12/send-smime-message-from-net.html' title='Send smime message from  NET'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-5069333416877094881</id><published>2007-11-27T17:15:00.001+01:00</published><updated>2007-11-27T17:31:09.038+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>Service install error</title><content type='html'>Using VS2005 you can create NTServices. Every service runs under the permission of an account, tipically Network Service or Local Service. But there are situations where you need to run the service with another account.&lt;br /&gt;When you create an instance of a ServiceProcessInstaller you can specifiy the Account property: LocalService, NetworkService, LocalSystem or User. User is not a real account. It's a "placeholder" and you will set the real account during installation.&lt;br /&gt;&lt;br /&gt;To install a service, you must use InstallUtil.exe from the NET Framework:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;InstallUtil.exe&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;  &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;foo.exe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After pressing enter, install starts and after some seconds you are prompted with a windows asking username and password for the account:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8eehAYx2jfE/R0xESkT4J_I/AAAAAAAAAko/PwrR_Snvhks/s1600-h/register_service.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_8eehAYx2jfE/R0xESkT4J_I/AAAAAAAAAko/PwrR_Snvhks/s400/register_service.png" alt="" id="BLOGGER_PHOTO_ID_5137556360698275826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Important: you must add ".\" before the username.  If you do not that, you get an error and your service will not be installed:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;An exception occurred during the Install phase.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;System.ComponentModel.Win32Exception: The account name is invalid or does not exist, or the password is invalid for the account name specified&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-5069333416877094881?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/5069333416877094881/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=5069333416877094881' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5069333416877094881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/5069333416877094881'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/11/service-install-error.html' title='Service install error'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8eehAYx2jfE/R0xESkT4J_I/AAAAAAAAAko/PwrR_Snvhks/s72-c/register_service.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8830296292424930117</id><published>2007-11-19T10:29:00.000+01:00</published><updated>2007-11-19T10:51:05.581+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SysAdmin'/><title type='text'>NLB does not check IIS status</title><content type='html'>Rember: Network Load Balancing (NLB) does not check services status. It works directly on TCP/IP and it is not aware of upper services status (IIS, etc.).&lt;br /&gt;&lt;br /&gt;If you have a NLB system running and you shutdown a machine, the "cluster" converges in some seconds. The http connections are than served by the remaining machines. But if you stops the IIS instance of one server, NLB continues to send http traffic to that machine.&lt;br /&gt;&lt;br /&gt;Reference: &lt;a href="http://support.microsoft.com/?id=234151"&gt;http://support.microsoft.com/?id=234151&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS:  I do not agree with calling NLB a "cluster" solution. Windows 2003 offers a real cluster solution. NLB is only a "light cluster".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8830296292424930117?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8830296292424930117/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8830296292424930117' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8830296292424930117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8830296292424930117'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/11/nlb-does-not-check-iis-status.html' title='NLB does not check IIS status'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7840145574934758288</id><published>2007-11-04T22:10:00.000+01:00</published><updated>2007-11-19T11:06:04.709+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SysAdmin'/><title type='text'>FTPS su IIS7</title><content type='html'>La nuova versione server di Windows (Windows 2008) avrà un supporto nativo per FTPS (da non confondersi con SFTP).&lt;br /&gt;Attualmente Win2008 è scaricabile dal sito di Microsoft in versione RC0 - &lt;a href="http://www.microsoft.com/windowsserver2008/"&gt;Release Candidate 0&lt;/a&gt; (la data prevista per il rilascio definitivo è il 27 Febbraio 2008).&lt;br /&gt;Win2008 contiene il nuovo IIS,  &lt;a href="http://www.iis.net/default.aspx?tabid=7"&gt;versione 7&lt;/a&gt;. IIS7 supporta siti FTPS (FTP over TLS). Ma attenzione, IIS7 presente nella RC0 è ancora del vecchio tipo, per intenderci quello di IIS6.&lt;br /&gt;Il nuovo servizio FTP/FTPS deve essere scaricato a parte ed installato dopo aver installato IIS7.&lt;br /&gt;&lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1526"&gt;[download FTP/FTPS service per IIS7]&lt;/a&gt;&lt;br /&gt;Sempre sul sito IIS.NET è presente un interessante articolo "&lt;a href="http://www.iis.net/articles/view.aspx/IIS7/Managing-IIS7/Using-FTP-Server-in-IIS7/Using-FTP-over-SSL"&gt;Using FTP over SSL&lt;/a&gt;" che spiega come installare e configurare il servizio FTP. Spiega anche come autocostruirsi un certificato di test per provare FTPS.&lt;br /&gt;&lt;br /&gt;Uno degli aspetti più importanti di FTPS è la possibilità di impostare quali connessioni debbano essere cifrate: solo quelle del canale di controllo (username/password/comandi), solo per il cancale dati o entrambi.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8eehAYx2jfE/RyhL9wnE0CI/AAAAAAAAAi0/-Q9xFpBBTzY/s1600-h/iis7security.png"&gt;&lt;img src="http://2.bp.blogspot.com/_8eehAYx2jfE/RyhL9wnE0CI/AAAAAAAAAi0/-Q9xFpBBTzY/s400/iis7security.png" alt="" id="BLOGGER_PHOTO_ID_5127431700154208290" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Dopo l'installazione molto probabilmente non sarà possibile eseguire connessioni da altri host. E' "solo" colpa di Windows Firewall presente su Windows 2008. Se l'obiettivo è fare solo un paio di test sarà sufficiente disabilitarlo. Se invece lo si vuole mantenere attivo, è necessario attivare le regole del caso.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Per sviluppatori: al momento non ho ancora trovato la documentazione, ma sembra sia possibile scivere propri moduli di autenticazione per FTP su IIS. Vedi:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/danielvl/archive/2007/09/27/how-to-write-a-simple-custom-authentication-provider-for-ftp-7.aspx"&gt;How to write a simple Custom Authentication Provider for FTP 7&lt;/a&gt;&lt;br /&gt;Effettivamente nelle finestre di management di IIS ci sono alcune voci e finestre interessanti:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8eehAYx2jfE/R0Ff4kT4J-I/AAAAAAAAAkE/yV91qqpndVc/s1600-h/ftp2008.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_8eehAYx2jfE/R0Ff4kT4J-I/AAAAAAAAAkE/yV91qqpndVc/s400/ftp2008.png" alt="" id="BLOGGER_PHOTO_ID_5134490475603437538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7840145574934758288?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7840145574934758288/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7840145574934758288' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7840145574934758288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7840145574934758288'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/11/ftps-su-iis7.html' title='FTPS su IIS7'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8eehAYx2jfE/RyhL9wnE0CI/AAAAAAAAAi0/-Q9xFpBBTzY/s72-c/iis7security.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-2926896971664773269</id><published>2007-11-04T14:00:00.000+01:00</published><updated>2007-11-04T22:12:20.574+01:00</updated><title type='text'>SQL Server - DBCC DROPCLEANBUFFERS</title><content type='html'>Per essere sicuri di eseguire dei test di performane realmente indicativi, ricordarsi di svuotare i buffer di SQL Server con il comando  &lt;span style="font-weight: bold;"&gt;DBCC DROPCLEANBUFFERS&lt;/span&gt;&lt;br /&gt;In questo modo i tempo i tempi di esecuzione non saranno influenzati dalle esecuzioni precedenti delle stesse query.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-2926896971664773269?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/2926896971664773269/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=2926896971664773269' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2926896971664773269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/2926896971664773269'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/11/sql-server-dbcc-dropcleanbuffers.html' title='SQL Server - DBCC DROPCLEANBUFFERS'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7490386159967944835</id><published>2007-11-01T12:00:00.000+01:00</published><updated>2007-11-02T14:17:47.158+01:00</updated><title type='text'>Redbook - TCP/IP Tutorial and Technical Overview</title><content type='html'>Da leggere o da tenere come riferimento. Un bel Redbook di IBM uscito un po' di anni addietro e aggiornato nel 2006:   &lt;a href="http://www.redbooks.ibm.com/abstracts/gg243376.html"&gt;TCP/IP Tutorial and Technical Overview&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;C'è un po' tutto quello che ha a che fare con TCP/IP: da IP stesso fino ai protocolli di più alto livello (http, ftp, smtp, ldap, h323, ecc.).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7490386159967944835?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7490386159967944835/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7490386159967944835' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7490386159967944835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7490386159967944835'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/11/redbook-tcpip-tutorial-and-technical.html' title='Redbook - TCP/IP Tutorial and Technical Overview'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8256530918912071916</id><published>2007-10-18T10:09:00.000+02:00</published><updated>2007-10-18T10:15:01.912+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='iTextSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>Level of nested Xobject in a pdf file</title><content type='html'>&lt;span style="font-style: italic;font-family:verdana;font-size:100%;"  &gt;How to get the level of nested Xobjects in a pdf file using iTextSharp.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" href="http://docs.google.com/Doc?id=dchmct9k_105f4vdnb"&gt;http://docs.google.com/Doc?id=dchmct9k_105f4vdnb&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8256530918912071916?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8256530918912071916/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8256530918912071916' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8256530918912071916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8256530918912071916'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/10/level-of-nested-xobject-in-pdf-file.html' title='Level of nested Xobject in a pdf file'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4844706480143924620</id><published>2007-09-03T14:56:00.000+02:00</published><updated>2007-10-26T14:58:50.627+02:00</updated><title type='text'>CMTrading</title><content type='html'>Dal 3 settembre 2007 lavoro in CMTrading&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.gruppocmtrading.it/"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_8eehAYx2jfE/RyHkOAnE0BI/AAAAAAAAAh8/SWerfgrMEGE/s320/logo_gruppo.gif" alt="" id="BLOGGER_PHOTO_ID_5125628780257529874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4844706480143924620?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4844706480143924620/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4844706480143924620' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4844706480143924620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4844706480143924620'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/09/cmtrading.html' title='CMTrading'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8eehAYx2jfE/RyHkOAnE0BI/AAAAAAAAAh8/SWerfgrMEGE/s72-c/logo_gruppo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-4346946095245497904</id><published>2007-08-02T16:39:00.000+02:00</published><updated>2007-10-18T10:17:55.219+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>Creazione di immagini con testo ruotato in Asp.Net</title><content type='html'>In alcuni casi sarebbe utile poter costruire in html tabelle con i nomi delle  colonne ruotate di 90°...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/View?docid=dchmct9k_134gcz96s"&gt;http://docs.google.com/View?docid=dchmct9k_134gcz96s&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-4346946095245497904?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/4346946095245497904/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=4346946095245497904' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4346946095245497904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/4346946095245497904'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/08/creazione-di-immagini-con-testo-ruotato.html' title='Creazione di immagini con testo ruotato in Asp.Net'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7416067454286103642</id><published>2007-06-07T12:07:00.000+02:00</published><updated>2007-06-07T12:40:31.879+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>How to insert a 2D DataMatrix in a pdf using IEC16022Sharp and PdfLib</title><content type='html'>&lt;span style=";font-family:verdana;font-size:100%;"  &gt;A very simple example:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;using System;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;using System.Collections.Generic;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;using System.Text;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;using PDFlib_dotnet;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;using IEC16022Sharp;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;namespace PdfLib7_tests&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;{&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;class Program&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt; {&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;       static void Main(string[] args)&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;       {&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;    Test_Iec16022Sharp_PdfLib();&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;       }&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;       private static void Test_Iec16022Sharp_PdfLib()&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;       {&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           PDFlib lib = new PDFlib();&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           lib.begin_document("out.pdf", "");&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           lib.begin_page_ext(595, 842, "");&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           DataMatrix dm = new DataMatrix("Test using IEC16022Sharp and PdfLib");&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           string virtualFileName = "/pvf/image/myTestImage.bmp";&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           lib.create_pvf(virtualFileName, dm.FastBmp.ToByteArray(), "");&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           int imgID = lib.load_image("auto", virtualFileName, "");&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           lib.place_image(imgID, 100, 600, 1);&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           lib.delete_pvf(virtualFileName);&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           lib.end_page_ext("");&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;           lib.end_document("");&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;       }&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;}&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;}&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;IEC16022Sharp:   &lt;a href="http://sourceforge.net/projects/iec16022sharp/"&gt;http://sourceforge.net/projects/iec16022sharp/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;PdfLib:  &lt;a href="http://www.pdflib.com/"&gt;http://www.pdflib.com&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7416067454286103642?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7416067454286103642/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7416067454286103642' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7416067454286103642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7416067454286103642'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/06/how-to-insert-2d-datamatrix-in-pdf.html' title='How to insert a 2D DataMatrix in a pdf using IEC16022Sharp and PdfLib'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-6265142743281841629</id><published>2007-04-04T08:46:00.000+02:00</published><updated>2007-04-04T08:49:21.648+02:00</updated><title type='text'>[Link]  Designing .NET Class Libraries</title><content type='html'>Un po' lungo (3 ore) ma molto interessante.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;" class="subhead1"&gt;&lt;span id="mediaGroupProgramTitle"&gt;Designing .NET Class Libraries&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.researchchannel.org/prog/displayevent.aspx?rID=11087&amp;fID=2740"&gt;http://www.researchchannel.org/prog/displayevent.aspx?rID=11087&amp;amp;fID=2740&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-6265142743281841629?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/6265142743281841629/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=6265142743281841629' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6265142743281841629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6265142743281841629'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/04/link-designing-net-class-libraries.html' title='[Link]  Designing .NET Class Libraries'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-7174102585620095055</id><published>2007-03-06T14:25:00.000+01:00</published><updated>2007-03-06T14:49:21.655+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>Visual Studio 2005: query builder</title><content type='html'>I added a new empty DataSet in my project. Than I added a new DataTable+TableAdapter.&lt;br /&gt;&lt;br /&gt;This is my query:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;SELECT Oggetti.IDOggetto, Oggetti.IDPersona, Oggetti.NomeOggetto&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;FROM   Oggetti INNER JOIN Person ON Oggetti.IDPersona = Person.ID&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;WHERE  (@Name IS NULL OR Person.Name=@Name) AND &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;       (@City IS NULL OR Person.City=@City) AND&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;       (@Num IS NULL OR Person.Num=@Num)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When I entered it in the query builder form, it was "rewritten" in this way:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;SELECT     Oggetti.IDOggetto, Oggetti.IDPersona, Oggetti.NomeOggetto&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;FROM         Oggetti INNER JOIN &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;Person ON Oggetti.IDPersona = Person.ID&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;WHERE     (@Name IS NULL) AND (@City IS NULL) AND (@Num IS NULL) OR&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;                      (@Name IS NULL) AND (@Num IS NULL) AND (Person.City = @City) OR&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;                      (@City IS NULL) AND (@Num IS NULL) AND (Person.Name = @Name) OR&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;                      (@Num IS NULL) AND (Person.City = @City) AND (Person.Name = @Name) OR&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;                      (@Name IS NULL) AND (@City IS NULL) AND (Person.Num = @Num) OR&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;                      (@Name IS NULL) AND (Person.City = @City) AND (Person.Num = @Num) OR&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;font-size:85%;"  &gt;                      (@City IS NULL) AND (Person.Name = @Name) AND (Person.Num = @Num) OR&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;                      (Person.City &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;= @City) AND (Person.Name = @Name) AND (Person.Num = @Num)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8eehAYx2jfE/Re1w2BE-fSI/AAAAAAAAADA/N3ORWdoAsbE/s1600-h/query1.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_8eehAYx2jfE/Re1w2BE-fSI/AAAAAAAAADA/N3ORWdoAsbE/s320/query1.png" alt="" id="BLOGGER_PHOTO_ID_5038807631402007842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The question is:   &lt;span style="font-weight: bold;"&gt;WHY???&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In the particular case I have found a solution but I don't know if it applies also to other cases.&lt;br /&gt;The solution is to write the WHERE condition a bit different. The new query is:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;SELECT Oggetti.IDOggetto, Oggetti.IDPersona, Oggetti.NomeOggetto&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FROM   Oggetti INNER JOIN Person ON Oggetti.IDPersona = Person.ID&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;WHERE  (@Name IS NULL OR @Name=Person.Name) AND &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       (@City IS NULL OR @City=Person.City) AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       (@Num IS NULL OR @Num=Person.Num)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8eehAYx2jfE/Re1xGhE-fTI/AAAAAAAAADI/RklVxpr6wGk/s1600-h/query2.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_8eehAYx2jfE/Re1xGhE-fTI/AAAAAAAAADI/RklVxpr6wGk/s320/query2.png" alt="" id="BLOGGER_PHOTO_ID_5038807914869849394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The diffence is "@Name=Person.Name" instead of "Person.Name=@Name" (and the same with City and Num).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;" &gt;(@Name IS NULL OR Person.Name=@Name) AND &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;" &gt;(@City IS NULL OR Person.City=@City) AND&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;" &gt;(@Num IS NULL OR Person.Num=@Num)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;" &gt;(@Name IS NULL OR  @Name = Person.Name) AND &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;" &gt;(@City IS NULL OR @City = Person.City) AND &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;" &gt;(@Num IS NULL OR @Num = Person.Num)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Why this behaviour ??? Any suggestions?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-7174102585620095055?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/7174102585620095055/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=7174102585620095055' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7174102585620095055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/7174102585620095055'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/03/visual-studio-2005-query-builder.html' title='Visual Studio 2005: query builder'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_8eehAYx2jfE/Re1w2BE-fSI/AAAAAAAAADA/N3ORWdoAsbE/s72-c/query1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8931057753871355822</id><published>2007-01-19T09:23:00.000+01:00</published><updated>2007-01-19T09:26:12.583+01:00</updated><title type='text'>IEC16022Sharp 0.3.5.0</title><content type='html'>New release of IEC16022sharp  0.3.5.0&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/iec16022sharp/"&gt;http://sourceforge.net/projects/iec16022sharp/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have added a new class for very fast creation of 1 bit/pixel Bmp file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8931057753871355822?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8931057753871355822/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8931057753871355822' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8931057753871355822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8931057753871355822'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/01/iec16022sharp-0350.html' title='IEC16022Sharp 0.3.5.0'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-6336930304638950884</id><published>2007-01-17T09:53:00.000+01:00</published><updated>2007-01-24T18:47:16.025+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='iTextSharp'/><title type='text'>How to insert a 2D DataMatrix in a pdf using IEC16022Sharp and iTextSharp</title><content type='html'>A very simple example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Document doc = new Document(new Rectangle(0, 0, 595, 842));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FileStream os = new FileStream("DataMatrixout.pdf", FileMode.Create, FileAccess.Write);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;PdfWriter writer = PdfWriter.GetInstance(doc, os);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;doc.Open(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;doc.NewPage();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;doc.Add(new Paragraph("IEC16022Sharp simple test"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DataMatrix dm = new DataMatrix("This is a test with iTextSharp and Iec16022Sharp");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Add image to document&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Image img1 = Image.GetInstance(dm.Image, ImageFormat.Bmp);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;doc.Add(img1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Add image to Pdf direct content&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Image img2 = Image.GetInstance(dm.Image, ImageFormat.Bmp);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;img2.SetAbsolutePosition(300, 700);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;writer.DirectContent.AddImage(img2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;doc.Close();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/iec16022sharp/"&gt;http://sourceforge.net/projects/iec16022sharp/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://itextsharp.sourceforge.net/"&gt;http://itextsharp.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-6336930304638950884?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/6336930304638950884/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=6336930304638950884' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6336930304638950884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/6336930304638950884'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/01/how-to-insert-2d-datamatrix-in-pdf.html' title='How to insert a 2D DataMatrix in a pdf using IEC16022Sharp and iTextSharp'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19206893.post-8382923998796605564</id><published>2007-01-16T08:42:00.000+01:00</published><updated>2007-01-16T08:46:54.523+01:00</updated><title type='text'>IEC16022Sharp</title><content type='html'>I have published the first public realease of Iec16022Sharp, a C# library for generating 2D Data Matrix barcode.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://sourceforge.net/projects/iec16022sharp/"&gt;http://sourceforge.net/projects/iec16022sharp/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The core of the library is a C# porting of an existing ansi C code currently maintained by Stefan Schmidt (http://www.datenfreihafen.org/projects/iec16022.html).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19206893-8382923998796605564?l=fhtino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fhtino.blogspot.com/feeds/8382923998796605564/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19206893&amp;postID=8382923998796605564' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8382923998796605564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19206893/posts/default/8382923998796605564'/><link rel='alternate' type='text/html' href='http://fhtino.blogspot.com/2007/01/iec16022sharp.html' title='IEC16022Sharp'/><author><name>Fabrizio Accatino</name><uri>https://profiles.google.com/106158172625094396784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-vGrMT7f_lSE/AAAAAAAAAAI/AAAAAAAAAAA/a7ZkDp8BbEM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
