mitch

Il blog di Mirko Gatti
posts - 7, comments - 78, trackbacks - 8

Thursday, September 25, 2008

Google Chrome non si dispone sul desktop

 

Cliccando la voce “Affianca le finestre orizzontalmente” o “Affianca le finestre verticalmente”:

Screenshot02

La finestra di Google Chrome non si affianca alle altre.

Non è grave, ma è curioso.

posted @ Thursday, September 25, 2008 4:59 PM | Feedback (37) |

Monday, January 8, 2007

E tag anche mi!

In risposta a Roby, che mi ha taggato e che mi troverà disponibile a fare da ammiraglia per un coast-to-coast in bici. Basta che me lo dica due ore prima, che carico la macchina di salame.

1) Ho iniziato a programmare nel 1993 in Qbasic del DOS, poi, quando disegnavo schemi elettrici, ho scritto migliaia di parentesi tonde in AutoLisp di Autocad. Ho comprato una licenza di VB3 per Win3.1 e sono arrivato al VB6. Nel campo dell’automazione industriale ho masticato i linguaggi assembler-oriented dei controllori programmabili. Nel 2002 i miei nuovi colleghi mi hanno aiutato a passare al C++, ed ora C#.

2) Il nome del mio blog corrisponde al mio soprannome. Durante il Servizio Civile il mio amico Paulo mi ha battezzato Mitch, perchè eravamo in piscina con i ragazzi dell’estate ragazzi ed io assomigliavo a Mitch di Baywatch... Ora quasi tutti in paese mi chiamano Mitch, ma in ufficio c’è chi mi chiama Er Pagnotta, dopo che Er Fatica, della Fatica Labs , mi ha taggato così. Perchè Er Pagnotta? Mah, io non ci ho mai trovato nulla di strano a fare la pausa del mattino con i colleghi mordendo pane e cotoletta.

3) Sono appassionatissimo di Astronomia. Da ragazzino andavo al mare dai miei zii a Genova, che avevano tonnellate di libri di Astronomia appunto. Di recente ho acquistato un telescopio assieme a tre miei amici e quando decidiamo di osservare è praticamente sicuro che si annuvola. E' troppo bello vedere i pianeti in modo diretto. Ah, ho dato la mano ad un astronauta che è stato sullo Shuttle e sulla Stazione Spaziale! Da grande ovviamente voglio fare l'astronauta.

4) Una volta giocavo a calcio con gli amici del paese, poi sono ingrassato troppo ed mi sono messo ad andare in bici, poi la bici è invecchiata ed ho iniziato a nuotare. Comunque sono sempre grasso.

5) Nel 1993 sono andato a vedere il Gran Premio di Formula 1 a Monza ed ho acquistato un cappellino della Ferrari. Poi mio fratello mi ha portato un cappellino da Porto Rico. Poi gli amici e colleghi, CHE RINGRAZIO, hanno continuato a portarmi cappellini dai loro viaggi di lavoro e svago. Qualche cappellino l’ho comprato anche io, ed ora la collezione, che ammonta a circa 70 elementi, copre tutti e 5 i Continenti.
AAA Sto cercando qualcuno che mi porti un cappellino dai Poli. Nessuno si offre?

I miei tag:
Lele che quando va a scalare in montagna si porta le racchette da neve e quelle da tennis, perchè non si sa mai.
Wasp che ringrazio per il Toblerone.
Pierangelo che deve ancora farsi il blog, ma prima mi deve insegnare a guidare l'aereo.
Andrea e Dino, che ho conosciuto nel 2005/11 al primo corso ASP.NET 2.0 a Milano. E' stata una bella settimana!

powered by IMHO 1.3

posted @ Monday, January 8, 2007 5:02 PM | Feedback (6) |

Friday, September 22, 2006

Problemi con l'evento Created di FileSystemWatcher

Di recente ho dovuto utilizzare System.IO.FileSystemWatcher per osservare una cartella ed accorgermi della creazione di nuovi files al suo interno.
In quell'occasione ho fatto esperienza di comportamenti anomali legati agli eventi di notifica dei cambiamenti nei files o cartelle.
Il caso fastidioso si verifica quando un file di grosse dimensioni arriva nella cartella: l'evento Created viene sparato quando inizia la scrittura fisica su disco, e non alla fine. Se all'interno del metodo legato all'evento si cerca di aprire il file si ottiene una bella eccezione di tipo System.IOException.

using System;
using System.IO;

namespace FSWTest
{
    
class Program
    {
        
static void Main(string[] args)
        {
            FileSystemWatcher fsw =
                
new FileSystemWatcher(@"C:\Temp\FSWTest");

            fsw.Created += 
new FileSystemEventHandler(fsw_Created);
            fsw.EnableRaisingEvents = 
true;

            Console.Read();
        }

        
static void fsw_Created(object sender, FileSystemEventArgs e)
        {
            Console.WriteLine("{0} {1}", e.ChangeType, e.Name);
        }
    }
}

I miei colleghi ed io ipotizzavamo che questo comportamento fosse dovuto ad un baco del FileSystemWatcher del Framework 1.1, ma nel 2.0 le cose non cambiano.

Durante la ricerca di informazioni all'interno di gruppi di discussione ho avuto l'impressione che il baco sia localizzato a livello delle API di Windows:
- le API FileSystemWatcher di Windows non sparano l'evento Created nel modo giusto
- il FileSystemWatcher palleggia semplicemente gli eventi
- l'applicativo .NET deve fare attenzione a non aprire subito i nuovi files notificati

Una possibilità, anche se poco elegante, di gestire il comportamento anomalo dell'evento Created di FileSystemWatcher è quella di provare ad aprire il file fino a quando non si ottengono più eccezioni.

    //Questa è la mia classe wrapper di System.IO.FileSystemWatcher
    
internal class FileSystemWatcherWrapper
    {
        FileSystemWatcher fileSystemWatcher = 
null;

        
public FileSystemWatcherWrapper()
        {
            
this.fileSystemWatcher = new FileSystemWatcher();
            
this.fileSystemWatcher.Created +=
                
new FileSystemEventHandler(fileSystemWatcher_Created);
        }

        
public string Path
        {
            
get return this.fileSystemWatcher.Path; }
            
set this.fileSystemWatcher.Path = value; }
        }

        
public string Filter
        {
            
get return this.fileSystemWatcher.Filter; }
            
set this.fileSystemWatcher.Filter = value; }
        }

        
public bool EnableRaisingEvents
        {
            
get return this.fileSystemWatcher.EnableRaisingEvents; }
            
set this.fileSystemWatcher.EnableRaisingEvents = value; }
        }

        
//Mio evento Created
        
public event FileSystemEventHandler Created;

        
private void fileSystemWatcher_Created(object sender, FileSystemEventArgs e)
        {
            
//Se nessuno si è agganciato da fuori non faccio nulla.
            
if (null == this.Created)
                
return;
            
            
if (TryOpenFile(e.FullPath))
                
this.Created(sender, e);
        }

        
private bool TryOpenFile(string fullPath)
        {
            
bool opened = false;

            
//Se con 10 tentativi non riesco ad aprire il file me ne vado a casa.
            
int milliseconds = 0;
            
for (byte attempt = 0; attempt < 10; attempt++)
            {
                
try
                
{
                    milliseconds += 1000;

                    System.Threading.Thread.Sleep(milliseconds);
                    
//Provo ad aprire il file
                    
StreamReader sr = new StreamReader(fullPath);
                    
//Se sono qui significa che non sono nel catch e l'apertura
                    //è andata bene -> quindi rilascio il file
                    
sr.Dispose();

                    opened = 
true;
                    
break;
                }
                
catch (Exception ex)
                {
                    
//...
                
}
            }

            
return opened;
        }
    }

Mitch

powered by IMHO 1.3

posted @ Friday, September 22, 2006 5:38 PM | Feedback (9) |

Friday, July 21, 2006

Buone ferie a me!

Ci vediamo ad agosto per buttare giù qualche linea di codice! Mitch

posted @ Friday, July 21, 2006 5:38 PM | Feedback (12) |

Monday, February 6, 2006

Test di Log4Net con Visual Studio 2005: ricordarsi dell’hosting process

Al momento non è ancora uscita ufficialmente la versione di log4net (http://logging.apache.org) per il Framework 2.0, ma ho voluto comunque fare qualche prova convertendo i sorgenti con Visual Studio 2005. Fuori nevica e sono praticamente bloccato in casa.

Ho creato una semplice console application ed ho configurato un logger su file all’interno dell’app.config.

Come negli esempi scaricabili dalla rete ho marcato l’assembly con l’attributo XmlConfigurator:

Il parametro Watch = true indica alla libreria di log4net di riconfigurare il logger dell’applicazione qualora il file .config su disco venisse modificato al volo. Tra le impostazioni di default che ho trovato all’interno del progetto di Visual Studio c’è quella che abilita l’hosting process:

Eseguendo il build dell’applicazione vedo comparire su disco le copie “.vshost” dell’eseguibile e del file di configurazione:

Se a questo punto avvio l’applicazione, che farà una serie di operazioni di log, ed edito il file di configurazione “originale”... non succede nulla: log4net non si accorge di nulla semplicemente perchè sta osservando quello dell’applicazione nell’hosting process. Se invece vado a giocare con il file di configurazione “.vshost.config” ottengo effettivamente una modifica del comportamento del logging a runtime. Nell’esempio seguente ho modificato al volo il livello di log, rendendolo sempre più restrittivo:

2006-01-28 15:19:07,390 INFO - Running from 1 seconds

2006-01-28 15:19:07,406 WARN - Running from 1 seconds

2006-01-28 15:19:07,406 ERROR - Running from 1 seconds

2006-01-28 15:19:08,406 INFO - Running from 2 seconds

2006-01-28 15:19:08,406 WARN - Running from 2 seconds

2006-01-28 15:19:08,406 ERROR - Running from 2 seconds

2006-01-28 15:19:09,406 INFO - Running from 3 seconds

2006-01-28 15:19:09,406 WARN - Running from 3 seconds

2006-01-28 15:19:09,406 ERROR - Running from 3 seconds

...

2006-01-28 15:19:21,843 WARN - Running from 15 seconds

2006-01-28 15:19:21,843 ERROR - Running from 15 seconds

2006-01-28 15:19:22,843 WARN - Running from 16 seconds

2006-01-28 15:19:22,843 ERROR - Running from 16 seconds

2006-01-28 15:19:23,843 WARN - Running from 17 seconds

2006-01-28 15:19:23,843 ERROR - Running from 17 seconds

...

2006-01-28 15:19:40,843 ERROR - Running from 34 seconds

2006-01-28 15:19:41,843 ERROR - Running from 35 seconds

2006-01-28 15:19:42,843 ERROR - Running from 36 seconds

Disabilitando il parametro “Enable the Visual Studio hosting process” dalle proprietà del progetto ottengo un comportamento vecchio stile, e cioè senza i files *.vshost.* e le modifiche al file di configurazione dell’applicazione si riflettono sul comportamento di log.

posted @ Monday, February 6, 2006 5:37 PM | Feedback (11) |

Thursday, October 13, 2005

La disavventura del volenteroso

A fine novembre andrò al corso "Programmare ASP.NET: Stato dell'arte", tenuto da Andrea Saltarello e Dino Esposito. Dato che sono nuovo alla programmazione ASP.NET (ho letto e sto leggendo molto, ma mi manca un po' di esperienza in trincea), ho deciso di allenarmi a casa.

Ieri pomeriggio ero in ufficio, quando ho finito di lavorare mi sono installato velocissimamente IIS, ho attivato ASP.NET, ho fatto la classica paginetta con il pulsante che cambia il contenuto alla label, ho gioito perchè >>FUNZIONAVA<<, ho spento il portatile, e sono andato a casa.

In serata ho acceso il portatile per continuare l'allenamento e... XP non partiva!!! qualcosa su disco si era rovinato! :-(

Nessun problema per i dati backuppati al sicuro, ma il PC è da ricostruire.

Riproveremo.

Mitch

posted @ Thursday, October 13, 2005 1:48 PM | Feedback (23) |

Tuesday, October 11, 2005

Ciao a tutti

il mio primo post! ... to be continued ... Ciao Grazie Mitch

posted @ Tuesday, October 11, 2005 6:01 PM | Feedback (10) |

Powered by:
Powered By Subtext Powered By ASP.NET