Novantanni

by beren 30. agosto 2010 23.23

Quest'oggi devo proprio fare un uso pubblico del mezzo privato (anche se in effetti il privato sarei io e dunque...) perchè devo celebrare con tutti gli onori i 90 dico NOVANTA anni della mia nonnina. Stasera rientrando dopo il lavoro ho voluto fare una capatina a casa sua per tirargli le orecchie, no tranquilli solo una simbolica tirata: avevo impegni stasera... Così arrivo, le suono il campanello e mi apre tutta trafelata per la sorpresa facendo cadere in terra un migliaio di santini ed immagini sacre che erano racchiuse nel breviario che come ogni sera da decenni legge fedelmente dopo cena.

Nona va che t'en burla giò i Madon
Eh ti ghe rason: Madon in da tuti i canton

Madon in da tuti i canton! Splendido, da solo vale il prezzo del biglietto. E così dopo la una decina di baci, la solita finta caragnata nonchè le temutissime premonizioni sul suo futuro, non restava che un bel sorriso a cingerle il volto ormai ultranovantenne. Un sorriso, semplice e spontaneo che mi ha dato davvero una forza immensa, in questo periodo non certo positivissimo. Grazie nonna, ancora una volta, da quando mi accudivi in fasce riesci sempre a darmi più di quanto non faccia io. Auguri! E 100... no vabbè dai un cinquantina possono bastare, di questi giorni.

Tags: ,

General

King of Pain

by beren 25. agosto 2010 22.29

There's a little black spot on the sun today
It's the same old thing as yesterday
There's a black cat caught in a high tree top
There's a flag-pole rag and the wind won't stop

I have stood here before inside the pouring rain
With the world turning circles running 'round my brain
I guess I'm always hoping that you'll end this reign
But it's my destiny to be the king of pain

There's a little black spot on the sun today
(That`s my soul up there)
It's the same old thing as yesterday
(it`s my soul up there)
There's a black cat caught in a high tree top
(it`s my soul up there)
There's a flag-pole rag and the wind won't stop
(it`s my soul up there)

I have stood here before inside the pouring rain
With the world turning circles running 'round my brain
I guess I'm always hoping that you'll end this reign
But it's my destiny to be the king of pain

There's a fossil that's trapped in a high cliff wall
(it`s my soul up there)
There's a dead salmon frozen in a waterfall
(it`s my soul up there)
There's a blue whale beached by a spring tide's ebb
(it`s my soul up there)
There's a butterfly trapped in a spider's web
(it`s my soul up there)

I have stood here before inside the pouring rain
With the world turning circles running 'round my brain
I guess I'm always hoping that you'll end this reign
But it's my destiny to be the king of pain

There's a king on a throne with his eyes torn out
There's a blind man looking for a shadow of doubt
There's a rich man sleeping on a golden bed
There's a skeleton choking on a crust of bread

King of pain

There's a red fox torn by a huntsman's pack
There's a black-winged gull with a broken back
There's a little black spot on the sun today
It's the same old thing as yesterday

I have stood here before inside the pouring rain
With the world turning circles running 'round my brain
I guess I'm always hoping that you'll end this reign
But it's my destiny to be the king of pain

King of pain
I'll always be king of pain
I'll always be king of pain

Tags: , ,

Musica

Somewhere only we know...

by beren 23. agosto 2010 23.16

E' troppo facile domandarsi questa sera che significato abbia. Forse questa domanda me la sarei dovuta porre ieri. Oggi, non ha più senso, o quasi... Nel tuo vuoto c'è tutta la mia assenza anzitutto, tutto il mio essere poca cosa, tutto il niente! Non so da dove cominciare, in questi giorni spesso mi sono venute in mente mille cose, i nostri giochi da bambini in oratorio, le nostre partite insieme da grandi. Tutta la nostra vita come un gioco. E' brutto risvegliarsi e scoprire che i giochi finiscono e, non sempre nel modo che preferiremmo. Io non ho cose intelligenti da dire stasera, ho solo qualche lacrima che rompe gli argini della "vita da grandi" che spesso ci fa vivere per finta come vorremmo, ma che inevitabilmente non siamo. E' ipocrita, accorgersi di chi non c'è quando se ne và... ma cazzo adesso sono sicuro che non ti vedrò proprio più! La tua caduta in battaglia, al termine di una lotta che pareva senzafine, drammatica, epica, dolorosa, disperata, non addolcisce proprio nulla. Il grido disperato della nostra innocenza infranta, si fa ancora più drammatico questa sera che ci scopriamo fottutamente nudi ed impreparati alla realtà. Non posso dire che mi mancherai perchè agli effetti mi manchi già, anche se magari non te l'ho dimostrato o l'ho fatto solo quando me ne ricordavo. Arrivederci Fabietto, sto mondo fa troppo schifo perchè non ci sia un posto migliore in cui si possa incontrare e stare insieme ancora.

"Questa potrebbe essere la fine di tutto
Allora perchè non ce ne andiamo
in un posto che solo noi conosciamo?"

Tags:

General

La mia Africa... un anno dopo!

by beren 27. luglio 2010 22.23

Sabato scorso in preda alla necessità di rievocare la bella vacanza di un anno fà esatto in Africa, mi scervellavo sul cosa scrivere e come scrivere ciò che dal cuore mi giungeva forte, in emozioni e sensazioni. E così, presi tastiera e notepad, mi riversavo nello scrivere qualcosa che però aveva poco di spontaneo e alcunchè di emozionante. Al che dopo aver spostato sull'HD esterno queste mie parole, un pò vuote, mi accingevo ad altre mansioni, senonche in preda ad un attacco di demenza senile con il piede urtavo il cavo dell'HD e lo facevo cadere rovinosamente in terra. Vabbè poco male, direte voi, dopotutto non hai perso ne un Campiello ne un Pulizer o un o Strega. Vero. Non fosse che in quel ammasso di silicio putrefatto esalassero gli ultimi respiri tutte le mie foto, documenti, mp3, film, etc...

Bene, questa è la faccia giusta!. Sconforto, terrore e tragedia!!! Naturalmente il buon vecchio HD una volta alimentato nuovamente e riconnesso al PC non dava più nessun segnale di vita. A questo punto, altro sconforto, altra tragedia. Ma non mi perdo d'animo e con un programma per ritrovare i file cancellati riesco a ritrovare su un altro HD tutte le foto perse, che avevo cancellato nello spostarle proprio su quello defunto. Giubilo, vittoria, trionfo!!! Poi però guardando meglio notavo che paradossalmente proprio quelle del Kenya non le ritrovavo. Al che mi sovviene che effettivamente su quel disco non c'erano mai state perchè le avevo riversate dalla fotocamera direttamente nell'HD defunto.

Terrore, rabbia, sdegno, morte, disgrazia. Passo così altri due giorni a struggermi nel dolore di non poterle più avere... Poi, questa sera, il lampo: e se riuscissi a rimediarle dalla memoria cancellata della fotocamera? Si, in effetti fortunatamente, ho due memorie, che uso in maniera alternata e tenendo conto che la fotocamera non la uso mai, qualche debole speranza mi tiene ancora in vita. Però, subito la probabilità si dimezza: una memoria l'ho utilizzata una settimana fa al concerto di Mark Knopfler e sono quasi sicuro di averla praticamente sovrascritta completamente.

Corro in mansarda. Bestemmio: "Dove caz.. ho messo la fotocamera?". Attimi di nebbia assoluta poi... Si eccola, vado diretto sulla memoria di riserva che tengo nella tasca anteriore della custodia. Trovo la memoria la apro e la inserisco nel PC. Incrocio le dita aspettandomi di trovare la cartella vuota e già apro il software che in questi giorni mi ha salvato ripetutamente la vita.

Plim! si apre la finistra di dialogo per la visualizzazione dei file sui dispositivi esterni. "Mah si, ok sarà vuota, però diamoci un occhio... non si sà mai". Altro che vuota, la cartella è piena di foto... Già, ma quali? Le icone non mostrano l'anteprima, quindi a colpo d'occhio vado a cercare la colonna della data: Agosto 2009... il periodo è quello!
Ho il cuore in gola, mi faccio coraggio e clicco su di una: BINGO!!!! O forse dovrei dire JAMBO... Ad ogni modo le foto del Kenya, in tutto il loro splendore. Tutte. Non ne manca una! Non le avevo nemmeno cancellate!

E così ora me le riguardo tutte, una dopo l'altra. Sono bellissime. Una lacrima di commozione mi fa urlare di gioia.

Morale della favola: Backuppate gente Backuppate!

Jambo, jambo bwana Habari gani, Nzuri sana. Wageni, wakaribishwa Kenya yetu, Hakuna Matata. Kenya nchi nzuri, Hakuna Matata Nchi ya maajabu, Hakuna Matata Nchi yenye amani, Hakuna Matata Hakuna Matata, Hakuna Matata Watu wote, Hakuna Matata Wakaribishwa, Hakuna Matata Hakuna Matata, Hakuna Matata

No, forse la morale è un pò diversa: le cose belle non se ne vanno mai, anche se passa il tempo rimangono e danno emozioni anche se riviste da lontano e... probabilmente anche senza bisogno di rivederle!

JAMBOOOOOOOOOOO

Tags: , , ,

General

Classi Obsolete in C#

by beren 22. luglio 2010 12.43

Durante il ciclo di vita di un software pò accadere, ed in effetti succede non di rado, che alcune classi vengano migliorate, ampliate o, in genere per motivi di compatibilità con il passato, affiancate da nuove versioni delle stesse. In questo caso, per dare evidenza allo sviluppatore di usare la nuova versione, è possibile in C# contrassegnare con l'attributo Obsolete la vecchia classe.

L'esempio di codice seguente illustra un semplice caso:

[C#]

[Obsolete("This class is obsolete; use class B instead")]
class A
{
   public void F() {}
}

class B
{
   public void F() {}
}

class Test
{
   static void Main() {
      A a = new A();       // Warning
      a.F();
   }
}

La classe A è marcata come obsoleta, questo significa che quando verrà instanziata il compilatore genererà un warning con il testo specificato nel tag obsolete che la decora.

Il costruttore dell'attributo oltre alla stringa che verrà visualizzata con il Warning offre anche un parametro booleano aggiuntivo che impone al compilatore di non effettuare l'escape sui caratteri speciali. In generale questo parametro dovrà essere tenuto a false (che è il default) a meno che non siano necessari comportamenti particolari, che andranno in ognicaso gestiti con molta attenzione.

Tags: ,

Developer Cheat

Throw e Throw ex: le differenze

by beren 19. luglio 2010 22.20

Nell'ambito della gestione delle eccezioni con il framework .NET è opportuno spendere due parole per capire come, in linea di massima, un'eccezione debba venire gestita e le modalità per farlo. Tutti sanno che per gestire un'eccezione durante l'esecuzione di un frammento di codice occorre inserirlo all'interno di un blocco try-catch. In questo modo al verificarsi un eccezione potremmo eseguire del codice dedicato in base anche alla tipologia dell'eccezione stessa. Calandoci però in un caso particolare voglio parlare di una parte specifica della gestione delle eccezioni definita "exception bubbling".

"Exception bubbling" è un'espressione abbastanza intraducibile che si riferisce alla possibilità di risollevare l'eccezione dopo aver eseguito le operazioni custom nel catch, per consentire di lavorare con l'eccezione anche esternamente al metodo in cui l'eccezione è avvenuta. Ed è proprio a questo proposito che qualora non si tenga in considerazione di alcune accortezze si potrebbe incappare in problematiche non di poco conto in fase di debugging.

Si prenda ad esempio in considerazione il frammento di codice qua sotto:

[C#]

try
{
    // esecuzione di una qualche operazione che fallisce
}
catch (Exception ex)
{
    // effettuare un cleanup
    throw ex;
}

Questo è certamente uno dei casi più comuni nella gestione di un eccezione: c'è un parte dedicata alla gestione dell'eccezione (detta cleanup) e quindi, al termine l'eccezione viene rilanciata.

E' un pò meno comune invece vedere qualcosa di simile:

[C#]

try
{
    // esecuzione di una qualche operazione che fallisce
}
catch (Exception ex)
{
    // effettuare un cleanup
    throw;
}

All'apparenza queste due gestioni sembrano molto simili in realtà nascondono una notevole differenza per quanto riguarda le informazioni dello Stack Trace. In pratica analizzando in debug le due situazioni si scopre che nel primo caso lo stack trace verrà troncato al di sotto del metodo in cui è raccolto il catch con il risultato che sembrerà che l'eccezione sia stata generata proprio dal vostro codice. Infatti in questo modo è come se screaste una vostra propria eccezione.

Utilizzare invece il semplice "throw" vi consentirà di preservare tutte le info dello stack. Tutto ciò è ancora più chiaro se si guardasse il codice IL generato che a fronte di un "throw" del primo caso userà un "rethrow" nel secondo.

Questo però non significa affatto che in generale il "throw ex" non debba mai venire utilizzato. Anzi, qualora si vogliano aggiungere informazioni aggiuntive oppure generare un nuova eccezione personalizzata è opportuno utilizzare questo approcio con l'unica accortezza, onde evitare il problema del troncamento dello stack, di passare l'eccezione originale nel costruttore della nuova in modo da salvare i dati dello stack all'interno dell'inner exception:

[C#]

try
{
    // esecuzione di una qualche operazione che fallisce
}
catch (Exception ex)
{
    // effettuare un cleanup
    throw new ApplicationException("L'operazione è fallita!", ex);
}

A conclusione di questa breve analisi elenco tre punti che possono essere utili nella gestione delle eccezioni:

  1. Catturare solo le eccezioni per le quali si debba effettuare una sorta di cleanup e che abbiano una certa importanza
  2. Per alzare nuovamente l'eccezione usate il throw
  3. Se doveste generare una nuova eccezione personalizzata oppure aggiungere qualche informazione a quella originale ricordatevi sempre di passare anch'essa onde perdere le info dello stack.

 

Tags: ,

Developer Cheat

Aggiungere un collegamento al comando "Invia a"

by beren 11. luglio 2010 19.31

Tra le poche opzioni che fornisce il menu contestuale di Windows "Invia a" ("Send To" per chi mastica l'inglese) è senza dubbio di una certa comodità. Infatti tra i comandi forniti ci sono alcune tra le funzionalità più ricorrenti ed utilizzate che consentono di risparmiare diverso tempo:

  • Compressed (zipped) Folder
  • Desktop (create shortcut)
  • Mail Recipients
  • My Documents
  • CD Drive

Nei giorni scorsi mi è capitato però di pensare quanto potesse essere utile aggiungere delle altre funzionalità a questo menu: nel mio caso durante gli sviluppi di un software ad esempio mi capitava spesso di dover copiare file appena generati dal compilatore in una cartella specifica, e per quanto il buon vecchio "Copia e Incolla" faccia sempre il suo porco lavoro spesso la ricerca della cartella corretta nell'explorer o semplicemente tra le mille aperte comportava inutili e tediose perdite di tempo. "In effetti - mi sono detto - sarebbe davvero comodo fare click sull'oggetto ed inviarlo direttamente alla cartella che mi serve". Detto e fatto. Dopo una breve ricerca su internet scopro che la ocsa è semplicissima.

In effetti è sufficiente individuare il folder "Invia a" e quindi una volta cliccato con il tasto destro sull'icona della cartella che si vuole includere nell'elenco dei comandi accessibili, trascinarla all'interno della cartella "invia a" stessa. Una volta rilasciato il tasto destro verrà chiesto se si vuole creare un semplice collegamento. Cliccando SI il collegamento sarà da ora incluso nell'elenco delle opzioni di "Invia a".

Questa è la lista in sequenza delle operazioni da fare:

  1. Aprire in una finestra la cartella che contiene la cartella che vole includere nell'"Invia a"
  2. Localizzare la cartella "Invia a" nel pc:
    • Windows XP, Windows Server 2003 e precedenti: C:\Documents and Settings\<user name>\SendTo
    • Windows 7: C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\SendTo
  3. Cliccare con il tasto destro sulla cartella per la quale si vuole creare il collegamento e quindi trascinarla nella cartella del punto precedente (creando un semplice collegamento)

 

Tutto molto semplice. Tenete conto che funziona anche linkando semplici eseguibili, anche se non è ovviamente il modo più ortodosso, può essere comunque assai utile.

Tags:

Developer Cheat

SQL Cache Dependency con SQL Server, LINQ e ASP.NET 3.5

by beren 26. giugno 2010 23.19

Riporto qui sotto una libera traduzione di un post molto interessante sul quale mi sono imbattuto qualche giorno fa sul tema del caching in sistemi multiserver. 

ASP.NET fornisce diverse opzioni di caching. In questo caso prenderemo in esame una feature poco conosciuta di ASP.NET 3.5 chiamata SQL Cache Dependency. SQL Cache Dependency nasce in realtà con SQL Server 2000, ma la sua utilità era limitata per via del meccanismo di polling che imponeva un continuo check del DB per individuarne le modifiche, e a modifica individuata, notificava alla web application che la cache andava aggiornata.

Con SQL Server 2005 e 2008, ASP.NET ha adottato finalmente un sistema più performante per la SQL Cache Dependency. Lo sviluppatore può ora infatti delegare direttamente a SQL Server il compito di informarlo quando una modifica ha avuto luogo. In pratica ora la web application non deve continuamente monitorare il DB per accorgersi di eventuali modifiche.

Nell'esempio seguente useremo SQL Server 2005 e il database Pubs che potete scaricare qui. Anzitutto per consentire a SQL Server di inviare le notifiche occorre abilitare il Microsoft SQL Server 2005 Service Broker. Per verificare se questo servizio è già abilitato sul Catalog (Pubs n.d.r.) specificato basta lanciare il seguente script SQL:

[T-SQL]


SELECT name, is_broker_enabled FROM sys.databases

Se la riga con il nome del catalog interessato ha un 1 nella colonna is_broken_enabled, significa che il servizio è già attivo altrimenti bisogna attivarlo. Per farlo occorre lanciare il seguente script che sfrutta il comando ALTER DATABASE:

[T-SQL]


ALTER DATABASE Pubs SET ENABLE_BROKER
GO

Qualora però il database sia in uso il comando precedente sembra non terminare mai, e googlando ho scoperto qui il modo per farlo terminare istantaneamente.

[T-SQL]


ALTER DATABASE Pubs SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE
GO

A questo punto occorre informare SQL Server che l'account con cui gira Internet Information Services (IIS) ha i permessi per sottoscriversi alle notifiche. Lo script seguente spiega esattamente come effettuare questa operazione con l'account ASPNET sul server TESTSERVER:

[T-SQL]


GRANT SUBSCRIBE QUERY NOTIFICATIONS TO 'TESTSERVER\ASPNET'

Ora che il Database è stato correttamente configurato, procediamo con il creare il Website ASP.NET che utilizzi la SQL Cache Dependecy. Apriamo Visual Studio 2008 e clicchiamo su File > New > Web > ASP.NET Web Application.

t;p>Di default, Visual Studio 2008 crea una pagina Default.aspx alla creazione di una nuova Web Application. Useremo questa pagina per interrogare il Database, SQL Cache Dependency per "cachare" i dati ritornatici ed infine visualizzarli.

 

Apriamo la pagina e trasciniamoci dentro un DropDownBox control, infine rinominiamolo cboDiscount.

[ASPX/HTML]

<form id="form1" runat="server">
   <div>
      <asp:DropDownList id="cboDiscount" runat="server" >
      </asp:DropDownList>
   </div>
</form>

In questo caso useremo LINQ to SQL come access data layer. Aggiungiamo quindi un nuovo file di tipo LINQ to SQL Classes al progetto:

Apriamo il file appena creato e trasciniamo attraverso il designer la tabella Discounts al suo interno.

Trascinando la tabella il designer creerà una nuova chiave di tipo Connection String nel web.config simile a questa:

[XML]

<connectionStrings>
   <add name="pubsConnectionString" 
            connectionString="Data Source=dotnet-testbed;Initial Catalog=Pubs;Integrated Security=True"  
            providerName="System.Data.SqlClient" />
</connectionStrings>

Per abilitare la ricezione delle notifiche occorre creare un listener. Il punto migliore per collocarlo è nel file Global.asax che solitamente si trova nel root folder delle applicazioni ASP. Aggiungiamone uno al progetto e quindi andiamo ad inserire nel codice l'attivazione e la disattivazione del listener:

[C#]

protected void Application_Start(object sender,EventArgs  e)
{
   SQLDependency.Start(ConfigurationManager.ConnectionString["pubsConnectionString"].ConnectionString); 
}
protected void Application_End(object sender,EventArgs  e)
{
   SQLDependency.Stop(ConfigurationManager.ConnectionString["pubsConnectionString"].ConnectionString); 
}

Il prossimo passo è scrivere la parte di codice che setti la cache dependency. In questo caso il codice è inserito in un Extension Method introdotti da C# 3.0 and VB.NET 9.0, che consente allo sviluppatore di estendere una classe esistente creando dei metodi che possono essere aggiunti alla classe esistente. Per farlo aggiungiamo una nuovo file di tipo Class e lo nominiamo MyExtensions. Gli Extension Method sono statici e perciò vanno marcati con la keyword static.

[C#]

public static class MyExtensions
{
   public static List<T> LinqCache<T> (this Table<T> query) where T : class
   {
      string tableName = query.Context.Mapping.GetTable(typeof(T)).TableName;
      List<T> result = HttpContext.Current.Cache[tableName] as List<T>;

      if (result == null)
      {
         using(SqlConnection  cn = new SqlConnection(query.Context.Connection.ConnectionString))
         {
            cn.Open();
            SqlCommand  cmd = new SqlCommand(query.Context.GetCommand(query).CommandText, cn);
            cmd.Notification = null;
            cmd.NotificationAutoEnlist = null;
            SqlCacheDependencyAdmin.EnableNotifications(query.Context.Connection.ConnectionString);
            if (!SqlCacheDependencyAdmin.GetTablesEnabledForNotifications(query.Context.Connection.ConnectionString).Contains(tableName))
            {
               SqlCacheDependencyAdmin.EnableTableForNotifications(query.Context.Connection.ConnectionString, tableName);
            }
            SqlCacheDependency dependency = new SqlCacheDependency(cmd);
            cmd.ExecuteNonQuery();

            result = query.ToList();
            HttpContext.Current.Cache.Insert(tableName, result, dependency);
        }
     }
     return result;
   }
}

Questo è a tutti gli effetti un Extension Method per la classe System.Data.Linq.Table<> e può essere utilizza con qualsiasi LINQ query. Il cuore di questo metodo è SqlCacheDependencyAdmin.EnableNotifications che effettua il check per capire se il Service Broker è abilitato. Se così è verifica che la tabella sia già abilitata alla notifica tramite SqlCacheDependencyAdmin.GetTablesEnabledForNotifications. Se così non fosse SqlCacheDependencyAdmin.EnableTableForNotifications abilita le notifiche sulla tabella.

La prima volta che questo Extension Method verrà invocato verrà creata la tabella AspNet_SqlCacheTablesForChangeNotification nel database Pubs.

Aprendola si noterà che è stata aggiunta una riga a testimonianza che il Service Broker è funzionante.

A questo punto, come riprova, cambiando un valore nella tabella vi accorgerete che la cache ASP.NET verrà correttamente pulita.

Sebbene questo sistema non migliori sensibilmente le performance di una web application, certamente può essere di aiuto nel caso di sistemi distribuiti su più server. In particolare con tutte quelle tabelle che non varino in continuazione. Qui potete trovare il codice della solution, sempre riconducibile al post citato in partenza.

Tags: , , ,

Developer Cheat

Mondiale 2010... capolinea!

by beren 25. giugno 2010 14.26

Il nostro mondiale africano è finito, anzi come dice qualcuno in realtà non è mai cominciato. La nazionale di Lippi, non ha mai convinto ed anzi ha stupito e per la pochezza degli interpreti e per il gioco di squadra. Terminiamo la fase eliminatoria come ultimi del girone, non era mai successo, e senza riuscire a vincere una sola gara (come nell'82). Peggio, aggiungo, non riuscendo mai ad essere neppure temporaneamente sopra ai nostri avversari. Sempre perennemente in rimonta. Sempre con l'acqua alla gola, sempre con la sensazione che non ce la si faccia. Dopotutto la cabala non era dalla nostra parte: non abbiamo mai vinto un mondiale fuori dall'europa e siamo andati in finale solo due volte nelle americhe in Messico e USA, perdendo entrambe contro il Brasile. In genere poi dopo il mondiale vinto o perso in finale nell'edizione successiva abbiamo poi fatto figure barbine: nel 74 in Germania fuori ai gironi, in Messico nell'86 fuori agli ottavi, in Francia nel 98 fuori ai quarti...
Così ora oltre all'amarezza ed alla delusione per un risultato che certo non può fare piacere, come ogni anno ci tocca assistere alla gogna rituale su cui viene giustiziata, squadra, allenatore, dirigenza e quant'altro... Parliamoci chiaro, una debacle, di questo genere non può e non deve avere scusanti di nessun tipo e fortunatamente Lippi lo ha ammesso senza appelli «Mi prendo tutte le responsabilità per le scelte. Non ho preparato la squadra in maniera giusta». WOW è già una notizia, in un paese abituato a sentirsi dire che quando le cose vanno male le spiegazioni stanno sempre altrove ed adopera di terzi. Ma questo è un altro discorso.
Il fatto è che ancora una volta si cercano colpevoli un pò in tutto, pensate che ieri mattina ad una trasmissione sulla Rai ho sentito tirare in mezzo gli stadi vecchi, calciopoli... della serie "l'è tutto sbagliato l'è tutto da rifare" di Bartaliana memoria. Io sinceramente, penso che ci possano essere varie ragioni su questa che è senza dubbio una disfatta epocale per il calcio italiano. Un complessivo impoverimento del movimento calcistico, come anche quello sociale che negli ultimi anni di crisi ha contribuito ulteriormente ad impoverire uno spettacolo tutto, che ha portato la nazionale ad essere composta per di più da giocatori di squadre non di vertice. Già, qualcuno dice che anche una squadra di serie B avrebbe sconfitto la Nuova Zelanda, ma io non credo che una squadra di serie B con la pressione che aveva addosso questa nazionale avrebbe saputo far di meglio. Anche perchè meglio del 2006 era difficile e la commistione tra attese e presunzioni dopo quel trionfo hanno generato un mix deleterio per le gambe e la testa degli azzurri. CT in primis.
Poi c'è la parte persino più abbietta, se possibile, dei tifosi che fazionano tutto. Lippi è il CT dell'Italia quando vince, uno sporco juventino quando perde. Difficile trovare qualcosa di più abbietto ed idiota di questa definizione. questo perchè se il tifoso della nazionale perde ce ne deve essere uno che vince: quello della squadra di club. Quello degli esclusi Balotelli e Cassano ad esempio (si badi bene: gente che faticava a giocare anche nelle proprie squadre di appartenenza). Quello del qualunquistico "tanto meglio tanto peggio". Ne ho sentite tante in questi giorni da riempire un libro... di fesserie. Ognuno è libero di essere il CT della nazionale durante il mondiale e fare le considerazioni e le proprie scelte, resta il fatto che la coerenza è merce rara ancor di più ai mondiali. L'unica virtù che Lippi ha certamente mantenuto da sempre e che in questo paese di parassiti e opportunisti è spesso considerata più una debolezza.
Ma ora bisogna guardare al futuro con un allenatore di sicuro valore e di grandi capacità, che comunque non è certo un vincente visto che in carriera non ha mai raggiunto obbiettivi particolarmente elevati. Bisogna affidarci un pò a lui e magari per il 2014 sfruttare l'elemento inverso: "Peggio del 2010 è impossibile!"... forse, almeno fino a quando non saremo con il biglietto aereo per il Brasile.

Tags: , ,

Calcio

L'importanza di chiamarsi Ernesto!

by beren 10. aprile 2010 15.00

Questa sera si va in scena dopo mesi di prove e riprove e fatiche smisurate, chi più e chi meno, tra regia, scenografie, costumi, musiche... Come sempre accade in questi casi mi permetto come componente storico dei Fuori dalle Quinte di elogiare il lavoro svolto e fare i complimenti per tutto l'impegno profuso. 

Il SOLD OUT di questa sera, può voler raccontare di un'attesa davvero pressante per questo evento oppure della tanta gente che semplicemente ci vuole bene e che non ha voluto mancare a questo appuntamento e non ha voluto farci mancare il suo appoggio ed anche a loro va il mio profondo ringraziamento. 

Questa è la nostra quarta fatica, che ci ha fatto crescere ulteriormente e ci ha fatto muovere altri passi nella direzione che la nostra associazione sta percorrendo. 
A stasera!

Tags: ,

Teatro