Technology Experience
My personal life

Commodore ed Amiga con me non c’entran nulla, ma…

Quando ero in terza media inferiore, a mio padre venne l’idea di regalarmi un home-computer nuovo. Per me era un avvenimento epocale. I due contendenti furono l’Amiga 500 o l’Olivetti Prodest PC1. Vinse quest’ultimo la sfida. Sebbene fosse notevolmente meno potente dell’Amiga – non c’è neanche bisogno di dirlo – questo PC mi aprì le porte al DOS ed alla programmazione ANSI-C.

Comunque sia, da quel periodo sul muretto di casa mia, vicino al citofono, capeggia un bell’adesivo – raccolto in chissà quale negozio di informatica – risalente all’anno 1989 circa che mi ricorda quello scontro titanico.

Storia d’altri tempi. 🙂

Send to Kindle
My personal life

Museo dell’Aviazione a Rimini

Il Museo dell’Aviazione di Rimini è il più grande parco italiano dedicato al tema al volo, ed uno dei maggiori in Europa. Una zona vastissima è all’aperto, dove è possibile vedere da vicinissimo aerei russi del dopoguerra, aerei americani, vecchi aerei italiani, impianti di contraerea, elicotteri, carri armati, etc. etc.). Un’altra zona è al chiuso, ed è un museo dedicato agli eroi dell’aviazione militare italiana: è possibile vedere le divise dell’epoca (inizio del ‘900), documenti originali con rapporti di volo, medaglie, riconoscimenti, fotografie vecchissime, lettere su carta ingiallita dal tempo, etc. etc.

Il museo è davvero molto ben curato, e merita sicuramente una visita, indipendentemente dal fatto che siate appassionati del volo oppure no. La cosa più emozionante da vedere, secondo il punto di vista di mio fratello, è stato…ehm…tutto! No, dai, a parte scherzi: quando ha visto il Douglas DC-3 Dakota esposto, e sul quale si poteva anche salire, non è stato più nella pelle! Se per considerate che quello è davvero un pezzo unico, perchè era appartenuto a Clark Gable: su quell’aereo hanno volati persone come JFK, Marylin Monroe e parecchi attori hollywoodiani dell’epoca. Senza parole: che ci fa proprio QUEL DC-3 a Rimini???

Mio fratello mi ha raccontato che questo aereo è stato determinante per gli USA nella vittoria nella II° Guerra Mondiale, insieme al bombardiere B17 e al caccia P51. E’ stato utilizzato anche durante lo sbarco in Normandia. Insomma, il DC-3 è un aereo ricco di storia, e sono felice di averlo visto.

A questo indirizzo potete vedere il mio album fotografico, con tutte le 54 fotografie scattate quel piovoso sabato pomeriggio a Rimini. Buona visione!

Send to Kindle
Software

Download del Service Pack 3 di Windows XP in formato ISO

A questo url è possibile scaricare il file ISO contenente il setup completo del Service Pack 3 di Windows XP. Di solito aspetto sempre un po’ prima di aggiornare l’OS con un pacchetto così pesante, per capire se ci possono essere sostanziali problemi segnalati dagli utenti all’interno della blogosfera. Per certe cose sono ancora superstizioso

Il file ISO pesa 371,4Mb. Buon download!

Send to Kindle
My personal life

E’ troppo facile dire che certe persone fanno schifo

Chi mi conosce per i miei vecchi blog su UGIdotNET, o magari si è ritrovato a parlare con me di persona, sa che mi piace molto di più discutere di argomenti spinosi, e magari partire da una situazione in cui è chiaro che ho torto, facendo comunque di tutto per difendere la mia posizione e far valere le mie ragioni. Credo che se c’è un gruppo di persone che stanno parlando fra loro, e sono tutte d’accordo, nessuno impara nulla e c’è calma piatta. Non c’è crescita senza conflitto. Se invece in quel gruppo ce n’è almeno uno che dice: “Per me non è così!“, allora ecco che le cose si fanno interessanti, nasce una discussione che, se costruttiva e non ostile, può far imparare qualcosa a qualcuno. Con questo non voglio dire che tutte le volte che ho discusso ho fatto apposta a mettermi nella parte dell’avvocato del diavolo: mi viene naturale.

Questo ragionamento è scaturito da questo post, che sta facendo il giro dei blog italiani. E se non l’ha ancora fatto, voglio contribuire nel mio piccolo. E’ una triste storia di maleducazione, indifferenza ed ignoranza, che coinvolge persone caratterizzate dalla sensibilità pari a quella di un rinoceronte. Con tutto il rispetto per questi animali, che secondo me – se lasciati in pace – sono anche simpatici e ciccetti (cit.).

La storia coinvolge una mamma di nome Barbara, suo figlio autistico di 4 anni e la catena di ipermercati Carrefour. Mi ha fatto davvero incazzare. Leggetela.

Mi sono chiesto cosa avrei fatto io in quel frangente. Sarei stato anche io pecora, come tutti i presenti quel giorno, e me ne sarei stato in silenzio, oppure avrei fatto qualcosa? Anche se è banale dirlo, probabilmente mi sarei infuriato come una biscia, e lo dico con una certa cognizione di causa. O almeno, così mi piace pensare. Diavolo, che paese di balordi che siamo. Evviva la generalizzazione. Amen.

Altri links da leggere sul’l’accaduto:
http://feeds.feedburner.com/~r/maurolupi/~3/395657399/le-persone-sono.html

http://pr-blues.blogspot.com/2008/09/carrefour-considerazioni-freddo-crisis.html

http://www.bimbi-superstar.it/forum/thread/discussioni-generali/qualche-chiacchiera-fuori-tema/bambino-autistico-discriminato-al-carrefour-di-assago.html

Send to Kindle
Community

Aiutare le community: perchè non farlo?

C’è un valido motivo per cui non vale la pena aiutare le community .NET in Italia? Secondo me no. Se non esistessero le community, dalla più piccola alla più grande, io non sarei qui, come tantissimi dei miei lettori. Molti non avrebbero un lavoro, io non conoscerei un sacco di persone, sarei molto ignorante più di quanto già non sia. Insomma, la mia esperienza nella partecipazione nelle attività delle community è straordinariamente positiva. Quindi, ripeto, la domanda: c’è un valido motivo per cui non vale la pena aiutare le community .NET in Italia? E la risposta non è cambiata: secondo me no.

E quindi?

Detto, fatto. Fatelo per una community alla volta, così alla fine dell’anno sono tutte più felici.
Questa volta per me è toccato a XeDotNet.

Technorati Tags:  

Send to Kindle
.NET World

Ok, son migrato ufficialmente a Subtext 2.0!

Introduzione 
Sono circa due settimane che il mio blog gira con Subtext 2.0, la nuova ed ultima release del noto blog engine, che annovera fra i suoi creatori anche il buon Simone Chiaretta.

Decido di dare oggi l’ufficialità di questa cosa, perchè la migrazione è stata sì indolore, ma un po’ preoccupante per alcuni sintomi.

  1. Parecchi di voi mi hanno detto via mail e via messenger che ogni tanto il mio blog si apriva senza skin. Urgh!
  2. Nella parte Admin del blog ogni tanto avevo una strana exception, che veniva tracciato correttamente nell’ErrorLog. Questo errore mi impediva di salvare dalla pagina Options –> Configure. In pratica, dove ci sono le impostazioni generali del blog: titolo del blog, skin da utilizzare, timezone e via dicendo. Urgh!

Primi passi per la risoluzione
Ho deciso di indagare, perchè il mio blog engine deve girare al meglio.
Dopo essermi consultato con Simone, ho operato nel modo seguente:

  1. Ho scaricato i sorgenti di Subtext 2.0 da SourceForge.net
  2. Ho fatto un backup del database SQL Server dal mio hosting
  3. Ho ripristinato il backup del punto (2) sul mio database SQL Server locale
  4. Ho aperto i sorgenti di Subtext 2.0 con Visual Studio 2008 con il file .sln dedicato
  5. Ho configurato la stringa di connessione nel file web.config, così da far usare il mio database locale

La comodità di tutto questo è che non c’è bisogno di avere un web-server installato: è sufficiente quello integrato di Visual Studio. Basta impostare il progetto Subtext.Web come StartUp Project ed il gioco è fatto.

Debug
Non sto qui a raccontarvi tutti i giri di debug che mi sono fatto: non sono nemmeno da lontano la persona più adatta a parlarvene, giusto? Partiamo solo dallo StackTrace che mi veniva segnalato dall’ErrorLog di Subtext 2.0. Lo StrackTrace diceva quanto segue:

System.ArgumentException: An item with the same key has already been added. at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at Subtext.Framework.UI.Skinning.SkinTemplateCollection.GetTemplate(String skinKey) at Subtext.Framework.UI.Skinning.StyleSheetElementCollectionRenderer.GetStylesToBeMerged(String skinName, String media, String title, String conditional) at Subtext.Framework.Web.Handlers.CssHandler.HandleRequest(HttpContext context) at Subtext.Extensibility.Web.BaseHttpHandler.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

L’Exception veniva sollevata dal metodo GetTemplate() della classe SkinTemplateCollection. Li ho marcati in rosso qui sopra per evidenziarli meglio. Pare che in questo metodo ci sia un .Add() su un Dictionary, e che tale .Add() tenti di inserire per due volte la stessa key. Perchè? Perchè? Perchè?

Sono andato a beccarmi il codice incriminato. La classe SkinTemplateCollection è implementata nel namespace Subtext.Framework.UI.Skinning, nell’assembly Subtext.Framework. Ecco il metodo:

1 public SkinTemplate GetTemplate(string skinKey) 2 { 3 if (_ht == null) 4 { 5 _ht = new Dictionary<string, SkinTemplate>(); 6 for (int i = 0; i < this.Count; i++) 7 { 8 _ht.Add(this[i].SkinKey, this[i]); 9 } 10 } 11 12 if (_ht.ContainsKey(skinKey.ToUpper(System.Globalization.CultureInfo.InvariantCulture))) 13 { 14 return _ht[skinKey.ToUpper(System.Globalization.CultureInfo.InvariantCulture)]; 15 } 16 return null; 17 }

Riga 8 : all’interno del ciclo for c’è la chiamata .Add() incriminata, che cerca di aggiungere al Dictionary _ht, definito come privato di classe, una chiave doppia. Non sono stato lì a farmi troppe paturnie mentali. So solo che se quel ciclo for viene interrotto per qualche motivo, la return di riga (14) non verrà mai eseguita – semmai verrà restituito al chiamante un bell null. Quindi…Mi sono chiesto semplicemente: non è che all’interno dei files .config ho referenziato due volte lo stesso skin?

Dove devono essere referenziati gli skin di Subtext 2.0 ?

Io non lo sapevo: me lo sono fatto spiegare da Simone – e chi da chi altri sennò?

Gli skins vengono installati dentro la directory Skins di una normale installazione Subtext. Ogni skin viene installato in un folder separato: AnotherEnd001, DayDreaming, Gradient, KeyWest, Lightz e così via. Ma non basta, perchè bisogna gestire due files .config: uno è /Admin/Skins.config, l’altro è /Admin/Skins.user.config. Li ho scaricati in locale e li esaminati a mano, se non altro perchè hanno strutture differenti.

Mi sono quindi accorto che effettivamente lo skin GlossyBlue era referenziato due volte, puntando alla stessa directory ma scritta in modo diverso (“GlossyBlue” e “glossyblue”). Che sia questo il problema? Ho semplicemente cancellato il file /Admin/Skins.user.config, ho cancellato l’ErrorLog di Subtext e…stiamo a vedere. Adesso tutto sembra girare bene.

Intanto i problemi segnalati prima non li ho più: lo skin appare sempre, e posso salvare le impostazioni.

Forse, sì, dai…fra qualche lustro potrò anche fare lo sviluppare Web (cit.).

Technorati Tags:      

Send to Kindle
My personal life

Evviva Miss Italia 2008

Di solito seguo sempre in diretta l’elezione della nuova Miss Italia, per mettere qua sul mio blog un piccolo articolo. Quest’anno – causa weekend romagnolo – non ho potuto. Solo oggi pomeriggio ho saputo che la nuova Miss Italia è siciliana, ha i capelli rossi e si chiama Miriam Leone.

Complimenti a lei. Le more son quelle che preferisco di più, ma mi innamoro realmente solo delle bionde. Le rosse sono quelle che mi intrippano di più: evito di scendere nei dettagli qua sul mio blog. 🙂

Send to Kindle
My daily work

Certe cose succedono solo a me

Luogo : Famagosta, fermata M2, Milano
Orario : 18,30 circa

  1. Arrivo a Famagosta trafelato, mi metto in un angolo ad aspettare il mio amico Fabio e mio fratello
  2. Attendo 5 minuti: arriva solo uno dei due, Fabio. Bene.
  3. Mi frugo in tasca alla ricerca delle chiavi della mia macchina per prepararmi…devono essere da qualche parte…
  4. Ma non le trovo!!!! Dove sono????
  5. …
  6. agitazione
  7. …
  8. panico
  9. …
  10. pressione alta
  11. …
  12. “Ehm…Fabio, abbiamo un problema. Non trovo le chiavi della macchina”. Porco mondo!!!
  13. …
  14. imprecazioni
  15. …
  16. esclamazioni volgari
  17. …
  18. Cerco nelle tasche dei jeans, nell’enorme marsupio, nello zaino. Non ci sono.
  19. Chiamo sul cellulare M.S, lui sarà ancora lì, gli chiedo di cercarmi le chiavi: magari le ho lasciate sulla scrivania. Non ci sono.
  20. Salgo al terzo piano per vedere se qualcuno magari mi ha addirittura ciulato la macchina. Non si sa mai. La macchina è ancora lì, bella come il sole, ma inesorabilmente chiusa.
  21. Scendo e parlo con qualcuno dell’ATM: magari qualcuno le ho trovate in giro e gentilmente le ha consegnate al posto di controllo. Niente.
  22. Chiamo mio padre per metterlo in stato di allerta: se non le trovo nei prossimi 5 minuti, deve partire lui per portarmi quella di riserva.
  23. Arrabbiato, molto arrabbiato, torno giù dal mio amico Fabio.
  24. Quando mi avvicino, Fabio mi sventola davanti una chiave di un’auto. Sembra essere la mia. Non è possibile – mi dico – io non le trovavo…sarà uno scherzo.
  25. Mi avvicino, prendo in mano la chiave: è la mia, la Z dell’Opel è riconoscibilissima. DOVE DIAVOLO ERANO FINITE??? PERCHE’ NON LE TROVAVO???
  26. …
  27. imprecazioni
  28. …
  29. escalamazioni volgari
  30. …
  31. Fabio mi dice che erano in una tasca assurda, semi-nascosta, incastrate dentro. Un accidente a quella tasca e a chi ha deciso di mettercela.
  32. …
  33. idiota, imbecille, stupido, fesso. In una parola: Igor.

Certe cose succedono solo a me.

Dedicato a Stefano V. e Marco F.: ogni promessa è debito!

Send to Kindle
.NET World

Certo che MSDN Magazine non lo capisco proprio!

Non parlo dei contenuti, anche se afferrare fino in fondo certi articoli richiede parecchia materia grigia, ma delle modalità che regolano il rinnovo dell’abbonamento annuale. Ne ho già parlato in passato, ma la situazione peggiora.

Dunque, lasciate che vi racconti brevemente questa mia vicenda.

Il mio abbonamento doveva scadere a Maggio 2008. Dopo aver protestato lievemente per aver perso alcuni numeri (mi pare intorno a gennaio-febbraio), hanno deciso di allungarmi la durata dell’abbonamento per altri due mesi, in modo tale da coprire i mesi persi. Ottima iniziativa, devo dire. Quindi, ho calcolato la data di scadenza a Luglio 2008.

Mentre ero in vacanza mi sono ricordato di questa cosa: sono andato sul sito MSDN e ho cominciato la procedura per il rinnovo.

Se uso l’account number, il mio abbonamento non viene trovato. Vi dirò di più: questo qui sotto è l’esempio di label che il sito MSDN Magazine mette on-line per aiutare il povero utente a capire qual è esattamente il suo account number.
La label è questa:

Le parti evidenziate in azzurrino compongono il famigerato account number che dovrei inserire.
Peccato che il layout della label qui sopra sia completamente diverso da quello che ricevo io.

Lo so, forse invece di bloggare dovrei scrivere o contattare qualcuno per risolvere il problema. L’ho già fatto: ho contattato la chat MSDN di assistenza, ho scritto e-mail a Microsoft e direttamente alla rivista. Niente: nessuno sa darmi l’account number che mi serve.

Finisco: non so bene per quale motivo, ma ieri ho ricevuto il numero di Settembre 2008 della rivista.
Ma…l’abbonamento non doveva concludersi a Luglio 2008??? Boh!…finchè dura, me la godo, poi si vedrà.

Technorati Tags:

Send to Kindle
.NET World

Disponibile XamlPad 4.0

A questo url è possibile scaricare la versione 4.0 di XamlPad, un tool freeware che permette di editare codice XAML e di vederne subito la preview. Non ho letto esattamente le novità: superficialmente ho notato solo un avvio estremamente più rapido e la toolbar graficamente rinnovata.

Usandolo per 5 minuti di più e dando un’occhiata alle funzioni disponibili sulla toolbar, si scopre che adesso è possibile esaminare il visual tree della classe Page o della classe Windows che si sta editando, ed è anche possibile dare un’occhiata agli stili predefiniti per ciascun controllo nativo di WPF (ricordo gli esempi di Charles Petzold sul suo libro che facevano praticamente la stessa cosa).

E’ vero, forse manca l’Intellisense, ma per me sinceramente è essenziale, perchè è leggero ed è diventato nel mio cuore il ‘notepad’ XAML-oriented, anche se è utilizzabile solo per files piccoli e facilmente gestibili.

Download : http://blogs.msdn.com/llobo/archive/2008/08/25/xamlpadx-4-0.aspx

Technorati Tags:    

Send to Kindle