2006-04-29T12:12:00+01:00
Ho letto, ma solo fino ad un certo punto la polemica che si sta
trascinando nel mainfeed di ugidotnet. Non potevo mancare di dire la mia dato
che ormai un anno e mezzo fa sono stato io l'oggetto di un simile flame. Davvero
credetemi se vi dico che oggi più di allora credo che l'errore fondamentale sia
proprio quello di voler espungere qualcosa da questo feed. Post sulle
certificazioni, post off-topic, post troppo lunghi, post politici, post
letterari, post "diversi", di volta in volta sono di disturbo per qualcuno e si
dovrebbe operare su di essi una sorta di autocensura. Il fatto è che così
facendo si arriva a cancellare qualunque voce che sia almeno un po' fuori da
coro. La mia opinione è che in un feed non si sia in diritto di cancellare
alcunchè e tantomeno di marcarlo con un ot-scarlatto.
Non vi dirò cosa mi piace leggere e cosa non mi piace leggere.
Vi dirò che mi piace poter scegliere e quindi selezionare i miei post preferiti
tra tutti quelli che i blogger di ugidotnet vorranno scrivere e che non mi piace
l'idea che sia qualcun'altro ad operare questa scelta per me. E se non bastasse
sono convinto che la maggioranza dei lettori di ugidotnet la pensa come me,
altrimenti non si spiegherebbe perchè i post che hanno più commenti nel mio
weblog sono proprio quelli che vengono considerati ot.
powered by IMHO 1.3
2006-04-29T06:33:00+01:00
Sto lavorando alle slide per Venerdì. Ecco un foto
scattata da mia moglie che dimostra bene come sono ridotto...

Che sia grave?
powered by IMHO 1.3
2006-04-27T23:37:00+01:00
Mi è stato segnalato che il sito xedotnet ha avuto qualche
problema nelle ultime ore. Si è trattato di un problema sistemistico che ora è
stato risolto.
Rinnovo perciò l'invito ad iscriversi al seguente url:
http://www.xedotnet.org/subscriptions.aspx
powered by IMHO 1.3
2006-04-27T10:45:00+01:00
Stamane è stata una giornata interessante in ufficio. L'analisi
un po' meglio approfondita di una funzionalità mi ha portato a ideare una
collaborazione di un bel numero di design pattern che a mio parere darà una
bella flessibilità all'applicazione cui il mio team sta lavorando. Dico "darà"
perchè in effetti toccherà al buon Roberto implementare le modifiche necessarie,
con un po' di refactoring.
Ma tornando alla soluzione, posso dire che non capita spesso di
veder lavorare assieme una CHAIN OF RESPONSABILITY, un COMMAND, un COMPOSITE e
una FACTORY. Sarà che in vista della sessione che dovrò tenere il prossimo 5
maggio, ho accentuato la mia sensibilità nell'individuare queste soluzioni, ma
comunque sia la soddisfazione e molta. Sapete com'è, nonostante il codice che è
passato sotto le mie dita probabilmente si potrà oramai misurare in gigabytes,
non tutti purtroppo di cui andare orgoglioso, ho ancora la fortuna di
potermi emozionare quando riesco a scolpire un bel design, ad eliminare un po'
di code smells e sento - questa è la parola giusta - che tutte le le cose sono
al loro posto.
Ok, venendo al dunque dopo tutto questo grondare di
autocompiacimento, sappiate che in questo clima favorevole mi sono messo a
lavorare sulla sessione del 5 maggio. L'idea è quella di implementare un layer
di provider per l'accesso ai dati facendo uso di un bel po' di patterns. Si
parlerà di ABSTRACT FACTORY, di SINGLETON, di BRIDGE, di PROTOTYPE e di
DECORATOR. Il tutto per realizzare in 45 minuti uno strato di astrazione
del database che sia estensibile e flessibile a sufficienza da potersi
utilizzare in qualunque contesto.
Non dico altro. Se considerate che nella sessione che segue la
mia ci sarà nientepopoimeno che Luca Minudel, spero di aver stuzzicato a
sufficienza la vostra curiosità da spingervi ad iscrivervi e a venire a
trovarci. Il luogo è lo stesso dell'altra volta, l'ora anche... non vi resta che
accaparrarvi una seggiola.
http://www.xedotnet.org/subscriptions.aspx
Ah.. dimenticavo: a dispetto di quello che riporta la pagina di
iscrizione, visto che abbiamo quasi esaurito i posti l'iscrizione non è più
facoltativa. Perciò pensateci ora...
powered by IMHO 1.3
2006-04-22T11:47:00+01:00
Sì, mi
pare davvero scontato che quanto sto per dire sia una vera e propria ovvietà.
Personalmente, avendo dato il mio voto al centro sinistra, ora ritengo sia del
tutto naturale e spontaneo che Romano Prodi conferisca l'incarico di
Ministro degli Esteri ad Emma Bonino. Credo di essere nel
giusto affermando che in Italia probabilmente non vi è persona più adatta della
leader radicale per ricoprire questa carica e restituire al nostro paese la
considerazione internazionale che cinque anni di governo Berlusconi hanno
distrutto. Ecco perchè ho fatto un piccolo banner che ho già posto nella banda
laterale del blog. Invito chiunque la pensi come me a fare la stessa
cosa.
powered by IMHO 1.3
2006-04-21T16:05:00+01:00
Ormai sono abituato ad evitare a tutti i costi i popup nelle
applicazioni web. Tuttavia mi rendo conto che c'è ancora qualcuno che non riesce
a farne a meno, a torto o a ragione non mi interessa sapere. Durante la track
web dei CommunityDays sono stato molto incuriosito da una domanda che è venuta
dal pubblico e che recitava più o meno così: "è possibile effettuare il
cross-page postback in un popup impostando il PostBackUrl?". La risposta
naturale è no, ma quest'oggi, per puro diletto ho provato a capire se questo è
proprio vero. In effetti se ragioniamo bene sul problema è evidente che esiste
almeno un modo di effettuare il postback in una nuova finestra del browser, cioè
impostando l'attributo "target" della form. Però impostare questo attributo a
runtime mediante javascript è fattibile ma espone ad un fastidioso problema. Il
mio primo tentativo è stato quello "semplice" di usare l'evento "OnClientClick"
come segue:
btnPopup.OnClientClick = "document.forms[0].target = '_blank';";
Impostare l target in questo modo funziona perfettamente, ma
lascia la form in uno stato inconsistente che fa si che tutti i controlli
presenti effettuino il postback nella nuova finestra dopo che il pulsante è
stato azionato per la prima volta. In effetti la cosa migliore sarebbe quella di
ripristinare il target originale dopo il postback, ma in questo l'evento
OnClientClick non ci può essere di aiuto perchè il runtime quando fa il merge
degli script aggiunge il codice per il postback subito dopo quello immesso in
questo attributo. La soluzione perciò è solamente quella di estendere il
controllo Button per modificarne il rendering:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text.RegularExpressions;
namespace Elite.Web.UI.WebControls
{
/// <summary>
/// Summary description for ButtonEx
/// </summary>
public class ButtonEx : Button
{
private string postBackTarget;
public ButtonEx()
{ }
protected override void Render(HtmlTextWriter writer)
{
if (!string.IsNullOrEmpty(this.PostBackUrl) &&
!string.IsNullOrEmpty(this.PostBackTarget))
{
using (StringWriter tempWriter = new StringWriter())
{
using (HtmlTextWriter htmlWriter = new HtmlTextWriter(tempWriter))
{
base.Render(htmlWriter);
Regex rx = new Regex(
@"onclick=""javascript:(?<code>[^""]*)""",
RegexOptions.IgnoreCase);
writer.Write(
rx.Replace(
tempWriter.ToString(),
new MatchEvaluator(Evaluator)));
}
}
}
else
base.Render(writer);
}
private string Evaluator(Match match)
{
return string.Format(
@"onclick=""javascript:document.forms[0].target='{0}';{1};" +
"setTimeout("document.forms[0].target=''", 100);""",
this.PostBackTarget,
match.Groups["code"].Value);
}
public string PostBackTarget
{
get { return postBackTarget; }
set { postBackTarget = value; }
}
}
}
Il codice è in effetti un po' tirato, lo confesso, ma è davvero
l'unico modo che sono riuscito a trovare, dopo aver analizzato la classe Button
del framework, per iniettare il codice prima e dopo la generazione del postback.
in sostanza nel metodo render viene fatto generare il codice del pulsante in una
stringa, e tramite una regular expression si effettua la sostituzione
all'interno dell'evento onclick. Questo codice viene poi immesso nuovamente nel
flusso del rendering. In questo modo impostando la proprietò PostBackTarget del
ButtonEx si otterrà il sospirato postback in popup. L'unica curiosità che rimane
è il fatto che ho dovuto usare un timeout di 100 millisecondi per reimpostare il
target. Infatti semplicemente impostando la proprietà subito dopo
WebForm_DoPostBackWithOptions non si ottiene l'effetto desiderato.
powered by IMHO 1.3
2006-04-18T12:39:00+01:00
un articoletto interessante a proposito della ripartizione dei
voti nelle ultime elezioni. Si parla tra l'altro dei fantomatici 45000 voti che
Calderoli vorrebbe soffiare al centrosinistra e delle speranze dei Radicali di
entrare al senato. Ma la parte più "illuminante" è quella ceh si trova alla fine
del brano, dove si parla di come la CDL ha "organizzato" la legge elettorale a
proprio vantaggio, chiarendo almeno in parte i motivi del recente "quasi
pareggio".
Link: http://www.radicali.it/view.php?id=58461
powered by IMHO 1.3
2006-04-14T13:17:00+01:00
Per curiosità posto i dati sulle statistiche del mio
weblog nella giornata dello scrutino delle elezioni politiche
| Monday |
10th April
2006 |
1,755 |
1,345 |
Mi sa che gli italiani stanno iniziando a fidarsi di più dei weblog che di tv
e giornali.
powered by IMHO 1.3
2006-04-14T12:34:00+01:00
Finalmente ho trovato qualche minuto per scrivere le mie riflessioni a proposito della mia recente partecipazione ai CommunityDays del 12 aprile scorso. Il mio primo pensierino, deve giocoforza andare ad Andrea, che ha dimostrato appieno il significato del termine ospitalità, nel mio caso non solo con una sessione splendidamente snocciolata con la chiarezza che lo contraddistingue, ma anche avendo invitato i presenti del nord-est a venire a conoscere XE.NET. Un grazie anche perchè questo mi/ci ha fatto sentire un po' più parte di questi CommunityDays splendidamente riusciti.
Inutile disquisire sulla qualità delle sessioni. In effetti si trattava di argomenti con cui ho a che fare tutti i giorni e - lo dico senza iattanza - grazie al tipo di progetto su cui sto lavorando non posso dire che mi fossero completamente sconosciuti. Tuttavia il sentire disquisire su questi argomenti ha il potere di chiarire i motivi di quello che normalmente a causa della fretta con cui tipicamente si lavora si tende a trascurare. Un po' come se i "mattoncini" che alla rinfusa si sono raccolti giorno per giorno alla fine siano condotti magistralmente al loro posto consentendo una visione d'insieme che illumina la ragione.
Un po' dovrei lamentarmi con il buon Cristian Civera, che muovendosi agilmente nella complessità degli argomenti della sua interessantissima sessione ha fatto tabula rasa di una serie di potenziali post che mi ero riservato di bloggare un po' per volta. Ehm, non sperate di cavarvela comunque, i post non li butto via. Devo dire però che l'efficacia dei suoi esempi è stata davvero disarmante. Nemmeno in un intero anno sarei riuscito a trovarne di così azzeccati. Ah, oltrettutto vorrei dire una cosa che so dovrebbe fare molto piacere a qualcuno che fa il mio mestiere: avete fatto caso alla pulizia del codice di Cristian? E' davvero raro vedere un codice così ben scritto...
Non sto a dilungarmi. Un complimento davvero a tutti per cortesia e bravura e interesse e, e, e... Uno degli obbiettivi che mi ero posto in questa giornata era non solo di imparare qualcosa al punto di vista tecnico, ma anche e soprattutto di osservare e assorbire qualche idea su come si conduce una sessione. Sapete probabilmente tutti che a breve dovrò provarci anche io e vedere Daniele, Andrea e Cristian per me è stato doppiamente utile.
La giornata ha avuto un epilogo inatteso: le chiacchiere con Andrea, Lorenzo, Emanuele, Mr.kino, Riccardo, Daniele e altri della truppa di UgiDotNet (chiedo perdono a chi non ho nominato) - di gran lunga la parte più piacevoledi tutto il workshop - mi hanno portato ad andarmene dall'incontro con un notevole ritardo sulla tabella di marcia che mi ero imposto. Un grazie anche per questo, per avermi accolto così spontaneamente nonostante tutto sommato fossi un perfetto sconosciuto.
Chiudo ringraziando per la splendida organizzazione, ma anche per la pazienza dimostrata Sara, che ho "tampinato" per un bel po' di tempo quando mi sono improvvisamente calato nel mio ruolo di "inviato speciale di XE.NET". Sara è stata davvero gentile e professionale rispondendo instancabilmente alle mie innumerevoli domande.
A presto e... buona Pasqua a tutti! 
powered by IMHO 1.3
2006-04-14T08:31:00+01:00
No, non sono pazzo e non si tratta nemmeno di un refuso.
L'aggettivo che in questi giorni si accompagna più spesso al sostantivo Italia è
divisa, per la precisione in due parti uguali. Tutte le
polemiche vertono su questo punto. Tuttavia consentitemi di segnalare che a mio
parere l'Italia non è mai stata così unita. La divisione in uno cui mi
riferisco nel titolo è appunto il sentimento di noia/indecisione/inedia
che la politica di questo sfortunato Paese ha regalato a tutti i cittadini
indistintamente.
A parte forse (ma forse...) coloro che come me sono fortemente
polarizzati e hanno votato per le persone in cui credono, semplicemente perchè
le seguono e credono fortemente i esse, tutti gli altri - e converrete con me,
sono la stragrande maggioranza - hanno votato in preda ad una netta
sensazione di dubbio che si può esprimere con le seguenti parole:
"voto questo partito perchè lo ritengo il meno-peggio, ma tanto... non
cambia nulla".
A dirla tutta, io stesso pur votando per la Rosa nel
Pugno con tutta la convinzione che mi lega a tale forza politica sono
andato al seggio in compagnia di quella sensazione che mi ha fatto spesso
chiedere se a dare indirettamente il mio voto a Prodi non stessi facendo
qualcosa di sbagliato. Ma per inciso intendiamoci, la medesima sensazione
l'avrei avuta se fossi andato con la convinzione di dare un voto indiretto a
Berlusconi.
C'è poco da fare. La divisione più netta che si può rilevare
nel paese oggi, non è quella tra il 49,9 dei votanti di destra e il 50,1 di
quelli di sinistra, ma il canyon scavato
per lustri dall'Acheronte della sete di potere tra noi
cittadini-sudditi e i nostri governanti assetati-di-potere.
powered by IMHO 1.3
2006-04-11T13:20:00+01:00
Sono lieto di comunicarvi che domani sarò anche io ai community Days. E'
probabile che mi vediate in giro, ma dubito che molti di voi si ricordino di me.
Sarò alla track web, probabilmente tra le prime file, se non arrivo troppo in
ritardo. Eppoi come voi ronzerò un po' in giro, a mietere qualche buona
chiacchierata con gli amici che non vedo da tempo. Se mi cercate chiedete un po'
in giro, e di certo troverete qualcuno che vi indicherà la persona che state
cercando.
Ah, non ho una foto, ma se mi avete visto un po' di tempo fa tenete a mente
che nel frattempo ho perso 15kg... 
powered by IMHO 1.3
2006-04-10T15:31:00+01:00
Che Berlusconi non avesse i numeri per vincere queste elezioni
lo si sapeva da tempo, tant'è che in modo apparentemente inspiegabile
all'improvviso la maggioranza aveva deciso di cambiare la legge elettorale
riportandola da maggioritaria a proporzionale, contro l'opinione della
maggioranza dei cittadini.
Oggi finalmente siamo arrivati a capire il motivo reale di quel
colpo di mano che alcuni mesi fa aveva mobilitato anche la sinistra, che
probabilmente aveva subodorato il vero motivo, ma come sempre non era riuscita
minimamante a contrastarla. Il risultato di questa legge è stato ne più ne meno
che lo sfascio totale delle istituzioni. In un paese in cui i cittadini sono
decisamente disaffezionati alla democrazia e disgustati da politica e
istituzioni, un risultato di parità come quello cui stiamo assistendo non può
che suscitare i dubbi e le recriminazioni degli uni e degli altri.
Senza contare poi che tale risultato causerà sostanzialmente un
ingovernabilità disastrosa. In un paese la cui economia è di fatto distrutta
dalle politiche clientelari della ex maggioranza e dai 60 anni precedenti,
quello che ci sarebbe voluto è un governo forte che potesse guidare l'uscita da
questa situazione esplosiva. Invece, quello che avremo sarà un periodo di
estinzione del labile alito di democrazia residua e di continui litigi e
baruffe, che potranno avere l'unico effetto di portarci oltre l'orlo del baratro
della argentinizzazione.
E' triste dover constatare questa situazione. Quello che ci
aspetta non è per nulla roseo e privo di dolore e difficoltà. Temo che non
passerà molto tempo prima di sentirne le conseguenze.
powered by IMHO 1.3