Cliccando la voce “Affianca le finestre orizzontalmente” o “Affianca le finestre verticalmente”:
La finestra di Google Chrome non si affianca alle altre.
Non è grave, ma è curioso.
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
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
Ci vediamo ad agosto per buttare giù qualche linea di codice!
Mitch
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.
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
il mio primo post!
... to be continued ...
Ciao Grazie
Mitch